      var isHighLightsOpen  = true;
      var initState = true;
      var takeATourInitHTML = "";
      var animCarouselFlag = false;

      
      $(document).ready(function() {

     loadTour();
      if($(".BreadCrumbLinks").find("a") == null  || $(".BreadCrumbLinks").find("a").length == 0)
      {      
             $('div.BreadCrumbLinks').css("display", "none");
             $('div.BreadCrumbLinks').css("visibility", "hidden");
             $('div.BreadCrumbLinks').css("width", "0px");
             $('div.BreadCrumbLinks').css("height", "0px");
             $('div.BreadCrumbLinks').css("float", "none");              
      }
      
    
      /*** Low graphics version ************/
      if((querySt("LowGraphics") != null) && (strTrim(querySt("LowGraphics")) == "Y"))
      {
      	SetCookie("LowGraphics","Y",1,"/")
      }
      
      if((querySt("LowGraphics") != null) && (strTrim(querySt("LowGraphics")) == "N"))
      {
      	deleteCookie("LowGraphics", "/")
      	
      }      
      
      //alert(getCookie("LowGraphics"));
      if(strTrim(getCookie("LowGraphics")) == "Y")
      {
      //Low grpahics option
      $("#headingContainer").css("margin-top", "0px");
      $("#imageContainerHolder").css("display", "none");
      $("#imageContainer").css("display", "none");
      $("#banner-parks").css("display", "none");
      
      };
      
      /*************************************/
      
/****************Setting initial positon of the news letter divs ************/
          $('#newsLetterHome3').hide();
          $('#newsLetterHome1').hide();
/***************Setting initial positon of the news letter divs**************/

/************* Setting take a Tour default image and init html ********************************/
                var takeATourDefaultImg = $("#TakeATourDefaultImage a").attr("href");
                if (takeATourDefaultImg != null && takeATourDefaultImg != "")
                {
                   var takeATourDefaulImgTitle = $("#TakeATourDefaultImage a").attr("alt");
                   $('div.takeATourMainImage img').attr("src" , takeATourDefaultImg);
                   $('div.takeATourMainImage img').attr("alt" , takeATourDefaulImgTitle);
                   $('div.takeATourMainImage img').attr("title" , takeATourDefaulImgTitle);
                }
          takeATourInitHTML = $('div.takeATourMainImage').html();
/****************************************************************************/          

/***************partially opening take a tour *******************************/
    $('div.takeAtourArea').css('left' , '532px');
    var imgHighLightLink1 = document.getElementById('imgHighlightsLink');
    if (imgHighLightLink1 != null)
     {
      imgHighLightLink1.src = "/images/Navigation/highlights_v.gif";
     }
/****************************************************************************/
      partiallyHideAtAGlance(); 
      /*
      try {
        tb_init('a.thickbox, area.thickbox, input.thickbox');//pass where to apply thickbox 
      }
      catch (e)
      {
      }
      */ 
/***************Load Our Park Map in Our Park Page*****************************************/
        /*  
               mapfileName = $("#ParksMapHTMLPath").html();
         if (mapfileName != null)
               {  
                 mapfileName = strTrim(mapfileName);  
           $('div.regionMapOurParks').load(mapfileName, mapLoaded);
               }
               */
               $('div.regionMapOurParks').load("/NonTridionPages/HavenGroups/InsideParksMap.html", mapLoaded);
               

/***************Load Our Park Map*****************************************/



/***************Overriding the variour href default behavoiur ***************/
            //For Experience, Accommodation, Region, Park Page Click for Open Highlights     
             $(".highlightsLinkImage a").bind("click", 
                function(ev) { 
                        ev.preventDefault();
                            OpenHighlights();
                }    
             );
             
            //For Experience, Accommodation, Region, Park Page Click for open take a tour     
             $(".takeAtourLinksArea a").bind("click", 
                function(ev) { 
                        ev.preventDefault();
                            OpenTakeATour();
                }    
             );
                            

            //For Park Page Click for Virual Tour Link
             $(".offMnuItemVTour").bind("click", 
                function(ev) { 
                        ev.preventDefault();
                            loadTakeATourVirtualTour();
                }    
             );

             bindNewsLetter();  
		
            //For Experience, Accommodation, Region, Park Page Click for Video Off     
             $("#divVideoOff a img").bind("click", 
                function(ev) { 
                        ev.preventDefault();
                            divChange('divVideoOff','divVideoOn');
                }    
             );
             
            //For Experience, Accommodation, Region, Park Page Click for Gallery Off     
             $("#divGalleryOff a img").bind("click", 
                function(ev) { 
                        ev.preventDefault();
                            divChange('divGalleryOff','divGalleryOn');
                }    
             );
 
             //For Experience, Accommodation, Region, Park Page Click for 360 degrees Off     
             $("#div360Off a img").bind("click", 
                function(ev) { 
                        ev.preventDefault();
                            divChange('div360Off','div360On');
                }    
             );
             
             $(".regionSubLHSItems a").bind("click",
                function(ev) { 
                        //ev.preventDefault();
                        //alert($(this).text());
                        ParkLinkRegionPg($(this).text());
                }              
             );
             
             
             //For Experience, Accommodation, Region, Park Page Click for Virtual tour Off     
             $("#divVirtualTourOff a img").bind("click", 
                function(ev) { 
                        ev.preventDefault();
                            divChange('divVirtualTourOff','divVirtualTourOn');
                }    
             );
             //Binding Holiday Finder Checkboxes
             $(".holidayFinderActivityDiv :checkbox").bind("click", activitySelectionChanged);
            
            //chenging map selection for page refresh
            activitySelectionChanged();
            
            
            //Holiday Finder results
             var parksToShow = querySt("ShowParks");
             if (parksToShow != null)
              { 
                //alert(parksToShow); 
                $(".textContainerHolidayAreas").addClass("hiddenDiv"); 
                showSelectedParks(parksToShow);
              }  
              
              
	   //var tempHTML = $("#footer ul").html();
	  // alert(tempHTML);
	   //if(strTrim(getCookie("LowGraphics")) == "Y")
	    //{
	      //Normal graphics Link
	      //$("#footer ul").html("<li><a href=\"?LowGraphics=N\" rel=\"nofollow\">Graphics Version</a>" + tempHTML);
	    //}
	   //else
	   //{
	     // $("#footer ul").html("<li><a href=\"?LowGraphics=Y\" rel=\"nofollow\">Low Graphics Version</a>" + tempHTML);	
	   //}  

	   //selecting current Region
           /* 
	   var rcode = strTrim($("#CurrentRegionCode").html());	
	   var regionDdlId = $("#rightLocationFirstDdl select").attr("id");
	   var ddlRegion = document.getElementById(regionDdlId);
	   ddlRegion.focus();
	   if (ddlRegion != null) 
           {
	   	for (i=0;i<ddlRegion.options.length;i++) {
	          if (ddlRegion.options[i].value == rcode) {
	           ddlRegion.options[i].selected = true;
	           break;
	          }
                }
           }    
           ddlRegion.blur();
	    */
	    
	  
	   //selecting current park
	   var pcode = strTrim($("#CurrentParkCode").html());
	   //alert($("#AvailAndBook1_ddlParks select").val());
	   $(".homepageSelectBoxPark").val(pcode);
	   
	   //selecting current region
	   var rcode = strTrim($("#CurrentRegionCode").html());
	   $(".homepageSelectBoxWide").val(rcode);	   
	   
         });
  
/**************************************************************************/
//Pushing map image to background ***************************************/
function mapLoaded()
{
  var defaultMapimage = $("#ukmapInside").attr("src");
  //alert(defaultaccommainimage);
  if ((defaultMapimage != null) && (defaultMapimage != ""))
  {
    $('#map_insideParks').css("background-image", "url('" + defaultMapimage + "')");
    $('#map_insideParks').css("background-repeat", "no-repeat");
  } 
  
}

function mapLoadedMulti()
{
  var defaultMapimage = $("#ukmapInside").attr("src");
  //alert(defaultaccommainimage);
  if ((defaultMapimage != null) && (defaultMapimage != ""))
  {
    $('#map_insideParks').css("background-image", "url('" + defaultMapimage + "')");
    $('#map_insideParks').css("background-repeat", "no-repeat");
  } 
  
  displaySelectedParks();
}
/***************Overriding the variour href default behavoiur ***************/
      
    // Start Animation
      function OpenTakeATour()
      {
    //alert("Opening Take a tour");
    isHighLightsOpen = false;
    initState = false;
    var leftPos = $('div.takeAtourArea').css("left");
    //alert(strTrim(leftPos.toUpperCase()));
    if (strTrim(leftPos.toUpperCase()) == "54PX")
    {
      restoreInitStatusTakeATour();
      $('div.takeAtourArea').animate({
         left: "532px"
      }, 1500, "linear", activateTakeATour);
      initState = true;
    }
    else
    {
      $('div.takeAtourArea').animate({
         left: "54px"
      }, 1500, "linear", activateHighlight);
    }
                HighlightsPanel_takeatour_open();
            }

    function activateTakeATour()
    {
      
      /*$('div.takeAtourArea').css("z-index","10"); 
      $('div.highlightsArea').css("z-index","1");*/
      var imgHighLightLink = document.getElementById('imgHighlightsLink');
      var imgTakeATourLink = document.getElementById('imgTakeAtourLink');
      if ((typeof(imgHighLightLink) !='undefined') && (typeof(imgHighLightLink) !='imgTakeATourLink') )
       {
        if (initState != true)
        {
          imgHighLightLink.src = "/images/Navigation/highlights_v_on.gif";
        }
        imgTakeATourLink.src = "/images/Navigation/take_a_tour_v.gif";
       }

       loadHighights();

    }

    function activateHighlight()
    {
       /*$('div.takeAtourArea').css("z-index","1"); 
             $('div.highlightsArea').css("z-index","10");*/
            /*  - Change button should still be clickable to open the take a tour*/
      var imgHighLightLink = document.getElementById('imgHighlightsLink');
      var imgTakeATourLink = document.getElementById('imgTakeAtourLink');
      if ((typeof(imgHighLightLink) !='undefined') && (typeof(imgHighLightLink) !='imgTakeATourLink') )
       {
        imgHighLightLink.src = "/images/Navigation/highlights_v.gif";
        //imgTakeATourLink.src = "/images/Navigation/take_a_tour_v_on.gif";
       }
       
       stopHighlightsAmin();
    }

      function OpenHighlights()     
      {
                
    if (isHighLightsOpen == false) //to stop multiple threads running highlihts carousel
    {
      //alert("Opening Highlights");
      //$('div.takeAtourArea').css("width","54px");
      restoreInitStatusTakeATour();
      isHighLightsOpen = true;
      $('div.takeAtourArea').animate({
         left: "667px"
      }, 1500, "linear", activateTakeATour);
    }
    if (initState == true)  // animation is already started 
    {
             initState = false;
             isHighLightsOpen = true;
                  restoreInitStatusTakeATour();
      $('div.takeAtourArea').animate({
         left: "667px"
      }, 1500, "linear");                        
          }
                HighlightsPanel_highlights_open();                  
                    
      }
      
/*****************  Cross Fade --  Highlights - Start    *********************/
$(document).ready(function() {
  // Start Animation
  //Loading background image
  //animCarouselFlag = true;
  var defaultimage = $(".defaultMainImage").attr("src");
  var defaultimageTitle = $(".defaultMainImage").attr("title");
  //alert(defaultimage);
  if ((defaultimage != null) && (defaultimage != ""))
  {
    $('div.highlightsMainImage').css("background-image", "url('" + defaultimage + "')");
    $('div.highlightsMainImage').attr("title",defaultimageTitle);

    $('#banner-tour').css("background-image", "url('" + defaultimage + "')");
    $('#banner-tour').attr("title",defaultimageTitle);
        $('#banner-life').css("background-image", "url('" + defaultimage + "')");
    $('#banner-life').attr("title",defaultimageTitle);
  } 
  loadLocationMap();
  
  animCarouselFlag = true;
        //alert(ReadCookie("LowGraphics"));
  if(strTrim(getCookie("LowGraphics")) != "Y")
  {
    loadHighights();
  } 
  specialOffersPeelOpenClose();
  
  var n = $("#findOutMoreBox").length;
  
  if(n <= 0)
  {
  $("A#findMoreBoxOpen").remove();
  }
});

var animationTime = 3000;
var stayTime = 1000;
var counter = 1;
var maxCount = 0;
var highlightsCarliArray;

function startCarousel()
{
  stopHighlightsAmin(); 
   maxCount = 0;
   counter = 1;
   animCarouselFlag = true;
   $("#carouselTempImg").remove();
   
   loadHighights();
   
}


var parkFolderName = "DevonCiffs";


function loadHighights()
{

  
  if (maxCount == 0)
  {
  
    $(".highlightsMainImageFrameTemp").html('');  
            
    var carouselHtml = $("#HighlightsCarousel #Carouselhtml").html();
	
//	alert(carouselHtml);

    if (carouselHtml != null)
    {
      carouselHtml = strTrim(carouselHtml);
      //replacing temp classes to real required classes
      carouselHtml = carouselHtml.replace(/highlightsMainImageFrameTemp/gi, "highlightsMainImageFrame");
      $('div.highlightsMainImage').html(carouselHtml);

      highlightsCarliArray = $("#HighlightsCarousel").find("li a");
      maxCount = highlightsCarliArray.length;
      if($("#carouselTempImg").html() == null)
      {
        var temphtml = $("#HighlightsCarousel #Carouselhtml").html();
        $("#HighlightsCarousel #Carouselhtml").html(temphtml + "<div id=\"carouselTempImg\">test</div>");
      }
      $('div.highlightsMainImageFrameTemp').css('opacity', 0);
      
    }
     
  }
  
  counter = counter + 1;
  if ((counter > maxCount) && (maxCount > 0))
   { 
   
     counter = 1;
   }

   if((animCarouselFlag == true) && maxCount > 0)
   {
      
    var fileName= highlightsCarliArray[counter-1].href;   //getting the carousel image path    
    $('div.highlightsMainImageFrame').css('opacity', 0);    
    $('div.highlightsMainImage .highlightsMainImageFrame').css("background-image", "url('" + fileName + "')");
    $("#carouselTempImg").html("<img src=\"" + fileName + "\"  onload=\"carouselImgLoaded();\">");
   

  }
    
}

function carouselImgLoaded()
{ 
    $('div.highlightsMainImage .highlightsMainImageFrame').css("display", "block");;
    highlightsLoaded();
}

function highlightsLoaded()
{
  //$('div.heavenExperienceMsg').css('display','none');
  
        $('div.highlightsMainImageFrame').animate({
    opacity : 1.0
  }, animationTime, "linear", highlightsframeLoaded);
  
  //alert($('div.havenExperienceImage').html());
}

function highlightsframeLoaded()
{
  //Putting the framebg image to outer div
  //alert($('div.highlightsMainImage').html());
  //alert( $('div.highlightsMainImageFrame').css("opacity"));
  
  //$('div.heavenExperienceMsg').css('display','block');
  var framebgImage = $('div.highlightsMainImageFrame').css('background-image');
  $('div.highlightsMainImage').css('background-image',framebgImage);
 
        $('div.highlightsMainImageFrame').animate({
      opacity : 0.0
  }, stayTime, "linear", loadHighights);
}

function stopHighlightsAmin()
{
  $('div.highlightsMainImageFrame').stop();
  $('div.highlightsMainImage').stop();
  animCarouselFlag = false;
}
/*****************  Cross Fade --  Highlights - End    *********************/

function checkTitleImage()
{

$("A.TitleLink").bind("click", function(ev){
var dWidth = 0;
var dHeight = 0;
if ($(this).attr('href').match(/width=[0-9]+/i) != null)
{
			var dWidth  = parseInt($(this).attr('href').match(/width=[0-9]+/i)[0].replace('width=',''));
}

			//alert(dWidth);
if ($(this).attr('href').match(/height=[0-9]+/i) != null)
{
	        var dHeight     =  parseInt($(this).attr('href').match(/height=[0-9]+/i)[0].replace('height=',''));
}

	        //alert(dHeight);
if (dWidth != 0 && dHeight != 0)
{
$(this).addClass("fancy");
$(this).fancybox({
	    'width':dWidth,
	    'height':dHeight,
	    'autoScale':false,
	    'transitionIn':'elastic',
	    'transitionOut':'elastic',
	    'type':'iframe'
	});
	$(this).removeAttr("target");
}
});




}

      
/************* Start Image gallery ******************************************/
        var selGallery = "";
        var galleryImgCount = 0;
        var liArray;
        var imgCounter = 0;
  

        function loadImageGallery() 
        {
        
        
            var fileName; 
            fileName = $("#imageGalleryPath").html();
            fileName = strTrim(fileName);
      $('div.takeATourMainImage').load(fileName + " #outerGalleryDiv", startImageGallery);
      
        }
  function startImageGallery() {
    selGallery = $(".bottomLeftGalleryDdn option:selected").val();

    liArray = $("#" + selGallery + " li a");
    galleryImgCount = liArray.length;
    
    if (liArray.length > 0)
    {
        $("#topImageGallery img").attr("src",liArray[0].href );
        $("#topImageGallery img").attr("title",liArray[0].title );
    }
    imgCounter = 1;
    // binding drop down change
     $(".bottomLeftGalleryDdn select").change(gallerySelected);

  };

  function gallerySelected()
  {
    selGallery = $(".bottomLeftGalleryDdn option:selected").val();
        liArray = $("#" + selGallery + " li a");
    galleryImgCount = liArray.length;
    if (liArray.length > 0)
    {
        $("#topImageGallery img").attr("src",liArray[0].href );
        $("#topImageGallery img").attr("title",liArray[0].title );
    }
    //alert(galleryImgCount);
    imgCounter = 1;
  }

  function getPreviousImageFromGallery()
  {
    imgCounter = imgCounter - 1;
    //alert(imgCounter);
    if (imgCounter < 1)
     {
      imgCounter = galleryImgCount;
     }
    $("#topImageGallery img").attr("src",liArray[imgCounter - 1].href );
    $("#topImageGallery img").attr("title",liArray[imgCounter - 1].title );

  }

  function getNextImageFromGallery()
  {
    imgCounter = imgCounter + 1;
    //alert(imgCounter);
    if (imgCounter > galleryImgCount)
     {
      imgCounter = imgCounter - galleryImgCount;
     }
     $("#topImageGallery img").attr("src",liArray[imgCounter - 1].href );
     $("#topImageGallery img").attr("title",liArray[imgCounter - 1].title );

  }
  
/****************** End Image Gallery *****************************/  


/********* Start 360 *************************/

        function loadTakeATour360() 
        {
        
            if (initState == true)  // first open the section
            {
    $('div.takeAtourArea').animate({
       left: "54px"
    }, 1500, "linear", activateHighlight);            
            }
           // var fileName= "../360Tours/DevonCliffs360.html #outerIndoorDiv";    
           //alert($('#360FileName').html() + " #outerIndoorDiv");
           //alert( $('div.takeATourMainImage'));
          
      $('div.takeATourMainImage').load(strTrim($('#360FileName').html()));
      $('div#banner-360view').load(strTrim($('#360FileName').html()));
        }
/********* End 360 ***************************/

/********* Start Map load *************************/

        function loadLocationMap() 
        {
         
         var locationMapPath = $("#locationMapPath").html();
	 locationMapPath = strTrim(locationMapPath);
	  if ((locationMapPath != null) && (locationMapPath != ""))
  	{
      $('div#banner-map').html("<iframe src=\""+locationMapPath+"\" width=\"586\" height=\"260\" scrollbar=\"no\" marginwidth=\"0\" marginheight=\"0\" hspace=\"0\" align=\"middle\" frameborder=\"0\"></iframe>"); 
      //$('div#banner-map').load(locationMapPath);
       }
        }
/********* End Map ***************************/
/*************** Special Offers Peel Off On starts here ********************/

function specialOffersPeelOpenClose()
{

$("a[name^='clickToOpen_']").each(function()
{
$(this).click(function() 
{
$("#" + this.name).animate({"left": "+=361px", "top": "-=340px"}, "slow");
return false;
});
});
$("a[id^='closePeel_']").each(function()
{
$(this).click(function() 
{
$("." + this.id).animate({"left": "-=361px", "top": "+=340px"}, "slow");
return false;
});
});
}

/*************** Special Offers Peel Off On ends here ********************/

/********************* Start Video *************************************/
        function loadTakeATourVideo() 
        {
            if (initState == true)  // first open the section
            {
    $('div.takeAtourArea').animate({
       left: "54px"
    }, 1500, "linear", activateHighlight);            
            }        
            // Currently just loadign the place holder video  
            //var videoImghtml = "<img src='../images/taketour_devoncliffs_video2.jpg' alt='Devon Cliffs Video' title='Devon Cliffs Video' />";
            //alert($('#videoFileName').html());
      $('div.takeATourMainImage').load($('#videoFileName').html());
      //alert("test1");
       var videoPath = $('#videoFileName').html();
       //alert(videoPath);
      $('div#banner-video').load($('#videoFileName').html());
        }
/********************* End Video  **************************************/


/********************* Start Virtual Tour *************************************/
        function loadTakeATourVirtualTour() 
        {
            // Currently just loadign the place holder video  
            var virtualTourImghtml = takeATourInitHTML;
      $('div.takeATourMainImage').html(virtualTourImghtml);
      var tourAddress = strTrim($("#virtualTourPath").html());
      if(tourAddress != null && tourAddress != "")
      {
         // window.open(tourAddress,"ParkVirtualTour","width=800,height=600,toolbar=yes,location=yes,status=yes,resizable=yes,scrollbars=yes");
         window.open(tourAddress,"ParkVirtualTour","fullscreen=yes,toolbar=yes,location=yes,status=yes,resizable=yes,scrollbars=yes"); 
      }   
      
        }
/********************* End Video  **************************************/
/******************* News Letter Signup Boxes Start ******************************/
function openNewsLetterMoreInfo()
{
   //alert("test");
   $("#newsLetterHome3").slideDown("slow");
   $("#newsLetterHome2 a.blueLinkInfo").css("display", "none");
   $("#newsLetterHome1 a.lnkMoreInfo").css("display", "none");
} 
function closeNewsLetterMoreInfo()
{
   //alert("test");
   $("#newsLetterHome3").slideUp("slow"); 
   $("#newsLetterHome2 a.blueLinkInfo").css("display", "block");
   $("#newsLetterHome1 a.lnkMoreInfo").css("display", "block");
} 
function openNewsLetterSignUpBox()
{
   $("#newsLetterHome1").slideDown("slow"); 
   $("#newsLetterHome2").slideUp("slow"); 
}
/******************* News Letter Signup Boxes End   *******************************/

/********* Start Tour load *************************/
 function loadTour()
        {

 var virtualTourPath = $("#virtualTourPath").html();
 
 virtualTourPath = strTrim(virtualTourPath);

  if ((virtualTourPath != null) && (virtualTourPath != ""))

{
        $("div#banner-tour #show-tour").load(virtualTourPath);
}

        }
/********* End Tour *****************************/

/************* Start Image gallery ******************************************/
        var selGallery = "";
        var galleryImgCount = 0;
        var liArray;
        var imgCounter = 0;
  

        function loadImageGallery() 
        {
            if (initState == true)  // first open the section
            {
    $('div.takeAtourArea').animate({
       left: "54px"
    }, 1500, "linear", activateHighlight); 
    
 
            }  
           
            
        
            var fileName; 
            fileName = $("#imageGalleryPath").html();
            fileName = strTrim(fileName);
      $('div.takeATourMainImage').load(fileName + " #outerGalleryDiv", startImageGallery);
      $('div#banner-gallery').load(fileName + " #outerGalleryDiv", startImageGallery);
        }
  function startImageGallery() {
    //selGallery = $(".bottomLeftGalleryDdn option:selected").val();

    //liArray = $("#" + selGallery + " li a");
    liArray = $("#outerGalleryDiv li li a");
    galleryImgCount = liArray.length;
    if (galleryImgCount > 0)
    { 
      OpenImage(1);
    }
    //alert(galleryImgCount);
  //  if (liArray.length > 0)
  //  {
  //      $("#topImageGallery img").attr("src",liArray[0].href );
  //      $("#topImageGallery img").attr("title",liArray[0].title );
  //  }
  //  imgCounter = 1;
    // binding drop down change
  //   $(".bottomLeftGalleryDdn select").change(gallerySelected);

  };

  function gallerySelected()
  {
    selGallery = $(".bottomLeftGalleryDdn option:selected").val();
        liArray = $("#" + selGallery + " li a");
    galleryImgCount = liArray.length;
    if (liArray.length > 0)
    {
        $("#topImageGallery img").attr("src",liArray[0].href );
        $("#topImageGallery img").attr("title",liArray[0].title );
    }
    //alert(galleryImgCount);
    imgCounter = 1;
  }

  function getPreviousImageFromGallery()
  {
    imgCounter = imgCounter - 1;
    //alert(imgCounter);
    if (imgCounter < 1)
     {
      imgCounter = galleryImgCount;
     }
    $("#topImageGallery img").attr("src",liArray[imgCounter - 1].href );
    $("#topImageGallery img").attr("title",liArray[imgCounter - 1].title );

  }

  function getNextImageFromGallery()
  {
    imgCounter = imgCounter + 1;
    //alert(imgCounter);
    if (imgCounter > galleryImgCount)
     {
      imgCounter = imgCounter - galleryImgCount;
     }
     $("#topImageGallery img").attr("src",liArray[imgCounter - 1].href );
     $("#topImageGallery img").attr("title",liArray[imgCounter - 1].title );

  }
  
  function OpenImage(imgNumber)
  {
      //alert(galleryImgCount);
      if((imgNumber <= galleryImgCount) && (imgNumber > 0))
      {
        // alert(imgNumber);  
        $("#topImageGallery img").attr("src",liArray[imgNumber - 1].href );
        $("#topImageGallery img").attr("title",liArray[imgNumber - 1].title );      
        changeTitleAndLinks(imgNumber); 
       }
  }
  
  function changeTitleAndLinks(imgNumber)
  {
    //alert($(".bottomLeftGallery .bottomLeftGalleryTxt p").html());
    var imgtitle = liArray[imgNumber - 1].title;
    //alert(imgtitle);
    $(".bottomLeftGallery .bottomLeftGalleryTxt p").html(imgtitle);
    var imgGalleryLinksTxt = buildLinks(imgNumber);
    $(".bottomRightGalleryLink p").html(imgGalleryLinksTxt);
  }
  
  
  function buildLinks(imgNumber)
  {
     var prevFlag = false;
     var nextFlag = false;
     var startCount = 1;
     var endCount = 5;
     var range = 2;
     if (imgNumber > 96)
     {
      range = 1;
     }
     var totalLinks = range*2 + 1;
     if (galleryImgCount <= totalLinks) 
     {
      startCount = 1;
      endCount = galleryImgCount;
     }
     else if((imgNumber -1) >=range  && (galleryImgCount - imgNumber)>=range) 
     {
      startCount = imgNumber - range;
      endCount = imgNumber + range;
      //prevFlag = true;
      //nextFlag = true;
     }
     else if((imgNumber -1) < range) 
     {
      startCount = 1;
      endCount = totalLinks;
      //prevFlag = false;
      //nextFlag = true;     
     }
     else if((galleryImgCount - imgNumber) < range) 
     {
      startCount = galleryImgCount - totalLinks + 1;
      endCount = galleryImgCount;
      //prevFlag = true;
      //nextFlag = false;    
     }     
     var linkStr = "";
     if ((imgNumber > 1) && (galleryImgCount > 1))
     {
      prevFlag = true;
     }
     if (imgNumber < galleryImgCount)
     {
      nextFlag = true;
     }     
     if (prevFlag == true)
     {
      var prevNumber = imgNumber -1;
      linkStr= linkStr + "&lt;<a href='JavaScript:OpenImage("+ prevNumber  + ");'>Previous</a>&nbsp;";
     }
          for (var imgCounter = startCount; imgCounter <= endCount; imgCounter++)
      {
        if(imgCounter == imgNumber)
        {
           linkStr = linkStr + "<strong>" + imgNumber + "</strong>&nbsp;";  
        }
        else
        {
           linkStr = linkStr + "<a href='JavaScript:OpenImage(" + imgCounter + ");'>" + imgCounter + "</a>&nbsp;";
        }
      }
     if (nextFlag == true)
     {
      var nextNumber = imgNumber + 1;
      linkStr= linkStr + "<a href='JavaScript:OpenImage("+ nextNumber  + ");'>Next</a>&gt;&nbsp;";
     }           
     linkStr = linkStr.replace(/&nbsp;$/, "")
     return linkStr;
  }
  

/****************** End Image Gallery *****************************/  

/**************** partially hiding At a glance *********************/
   var maxGlanceItems = 5;
   function partiallyHideAtAGlance()
   {
    glanceCounter = 0;
    var atAGlanceList = $("#atAGlance .glanceTextDiv li, #atAGlancePopUp #glanceTextPopUp li, #atAGlanceNew .glanceTextDivNew li").each(function() {
      glanceCounter = glanceCounter + 1;
      if (glanceCounter > maxGlanceItems)
      {
        $(this).addClass("hiddenDiv");
      }  
    });
    if (glanceCounter > maxGlanceItems)
    {
        if ($("#atAGlance #glanceMore, #atAGlancePopUp #glanceMore, #atAGlanceNew #glanceMore") == null || $("#atAGlance #glanceMore, #atAGlancePopUp #glanceMore, #atAGlanceNew #glanceMore").length == 0)
        {
          $("#atAGlance .glanceBoxDiv, #atAGlancePopUp #glanceBoxPopUp, #atAGlanceNew .glanceBoxDivNew").html($("#atAGlance .glanceBoxDiv, #atAGlancePopUp #glanceBoxPopUp, #atAGlanceNew .glanceBoxDivNew").html() +  "<div id=\"glanceMore\"><a href=\"Javascript:showAtAGlance();\" onmouseover=\"Javascript:showAtAGlance();\">Show All&gt;</a></div>");

        }
        else
        {
          $("#atAGlance  #glanceMore, #atAGlancePopUp  #glanceMore, #atAGlanceNew  #glanceMore").html("<a href=\"Javascript:showAtAGlance();\" onmouseover=\"Javascript:showAtAGlance();\">Show All&gt;</a>");
        }
    }
   }
   
   function showAtAGlance()
   {
    $("#atAGlance .glanceTextDiv li, #atAGlancePopUp #glanceTextPopUp li").removeClass("hiddenDiv");
    $("#atAGlanceNew .glanceBoxDivNew .glanceTextDivNew li").removeClass("hiddenDiv");
    $("#atAGlance #glanceMore, #atAGlancePopUp #glanceMore, #atAGlanceNew #glanceMore").html("<a href=\"Javascript:partiallyHideAtAGlance();\">Hide&gt;</a>");
    //$(".glanceBoxDiv #glanceMore, #glanceBoxPopUp #glanceMore").addClass("hiddenDiv");
   }
   
   
/*******************************************************************/


/************ Restore Init Status Take A Tour **********************/

function restoreInitStatusTakeATour()
{
     //alert(takeATourInitHTML);
     $("#divGalleryOff").css("display","block");
     $("#divGalleryOn").css("display","none");
     $("#divVideoOff").css("display","block");
     $("#divVideoOn").css("display","none");
     
     // $("#javaApplet").html("");
     $("#div360Off").css("display","block");
     $("#div360On").css("display","none");
     
     $("#divVirtualTourOff").css("display","block");
     $("#divVirtualTourOn").css("display","none");
     $('div.takeATourMainImage').html(takeATourInitHTML);
}


/********************** Holiday Finder ***********************************************************/
  var finderCondition = "OR";   //"OR"
  var selectParkCodeList;
  
  
  function updateParkSelection()
  {
  }
  
  function updateParkSelectionForFeature (featureCode) 
  {
    var thisFeatureList = $("div.Feature_" + featureCode).html();
    //alert("div.Feature_" + featureCode);
    //alert(thisFeatureList);
    thisFeatureList = strTrim(thisFeatureList);
    var colonRE = /[;]$/; 
    if (thisFeatureList != null && thisFeatureList != "")
    {
      if (thisFeatureList.match(colonRE))
      {
      }
      else
      {
        thisFeatureList = thisFeatureList + ";"   
      }
    }
    if (selectParkCodeList == null || selectParkCodeList == "")
    {
      selectParkCodeList = thisFeatureList;
    }
    else if (finderCondition == "AND")
    {
      addParkList(thisFeatureList); 
    }
    else if(finderCondition == "OR")
    {
      removeParkList(thisFeatureList);
    }
    //alert(selectParkCodeList);  
  }
  
  function addParkList(newList)
  {
    newListArray = newList.split(";");
    newListCount = newListArray.length;
    var i=0;
    var parkCode ="";
    for (i=0; i<newListCount ;i++)
    {
        parkCode = strTrim(newListArray[i]);
        if (parkCode != "")
        {
          if(selectParkCodeList.indexOf(parkCode + ";") < 0)
          {
            selectParkCodeList = selectParkCodeList + parkCode + ";";
          }
        }
      
    }
    
    
  }
  
  function removeParkList(newList)
  {
    oldListArray = selectParkCodeList.split(";");
    oldListCount = oldListArray.length;
    var i=0;
    var parkCode ="";
    for (i=0; i<oldListCount ;i++)
    {
        parkCode = strTrim(oldListArray[i]);
        if (parkCode != "")
        {
          if(newList.indexOf(parkCode + ";") < 0)
          {
            var colonRE = re = new RegExp(parkCode + "[\s]{0,};" ); 
            selectParkCodeList = selectParkCodeList.replace(colonRE , "");
          }
        }
      
    }   
    
  }
  
  
  function highlightParks() 
  { 
    
    if(selectParkCodeList != null && selectParkCodeList != "")
    {
      finalListArray = selectParkCodeList.split(";");
      finalListCount = finalListArray.length;
      var i=0;
      var parkCode ="";
      for (i=0; i<finalListCount ;i++)
      { 
          parkCode = strTrim(finalListArray[i]);
                           // alert(parkCode);
          if (parkCode != "")
          {
        highLightPark(parkCode);
          }

      } 
    }
  }
  
  
  function activitySelectionChanged()
  {
    selectParkCodeList = "";
    revertAllHighlight();
    $(".holidayFinderActivityDiv :checked").each(function()
      {
        //alert($(this).attr("name"));
        updateParkSelectionForFeature($(this).attr("name"));
      });
      
        
      highlightParks();
      var resultLink = $(".havenHolidayLink a").attr("href");
      if (resultLink != null && resultLink != "")
      {
        var selParksRE = new RegExp("ShowParks=(.*?)$" ); 
        if (selectParkCodeList == null || selectParkCodeList == "")
        {     
             resultLink = resultLink.replace(selParksRE , "ShowParks=NONE");
        }
        else
        {
        resultLink = resultLink.replace(selParksRE , "ShowParks=" + selectParkCodeList);
        }
        $(".havenHolidayLink a").attr("href", resultLink);
      }
  }
  
        function highLightPark(parkCode)
  {
       $("#PARK" + parkCode).css("display","block");
  }

  function revertAllHighlight()
  {
             $("#map_insideParks > div").css("display","none");
  } 
  
  function showSelectedParks(parksToShow)
  {
       showListArray = parksToShow.split(";");
       showListCount = showListArray.length;
       var i=0;
       var parkCode ="";
       for (i=0; i<showListCount ;i++)
       {  
     parkCode = strTrim(showListArray[i]);
            //alert(parkCode);
                 if (parkCode != "")
           {
         $(".IntroPark" + parkCode).removeClass("hiddenDiv");
         var parkPageLnk = $("a.PARK" + parkCode).attr("href");
         if (parkPageLnk != null && parkPageLnk != "")
         {
            $("a.LinkPark" + parkCode).attr("href" , parkPageLnk);
         }
           }
  
     }
  }
  
  /*** News Letter ****/
  function bindNewsLetter()
  {
            //For Experience, Accommodation,Region Page Click for News Letter Sign Up Box     
             $("#newsLetterHome2 a.blueLink, #newsLetterHome2 .loginImageBox a").bind("click", 
                function(ev) { 
                        ev.preventDefault();
                            openNewsLetterSignUpBox();
                }    
             );

            //For Experience, Accommodation,Region Page Click for News Letter More Information
             $("#newsLetterHome2 a.blueLinkInfo").bind("click", 
                function(ev) { 
                        ev.preventDefault();
                            openNewsLetterMoreInfo();
                }    
             );
             
            //For Experience, Accommodation,Region Page Click for More Information link     
             $("#newsLetterHome1 a.lnkMoreInfo").bind("click", 
                function(ev) { 
                        ev.preventDefault();
                            openNewsLetterMoreInfo();
                }    
             );
             
             $("#newsLetterHome3 a.blueLink").bind("click", 
                function(ev) { 
                        ev.preventDefault();
                            closeNewsLetterMoreInfo();
                }    
             );
                          
             
              //For Experience, Accommodation,Region Page Click for More Information link     
             $("#newsLetter1Exp a.lnkMoreInfo").bind("click", 
                function(ev) { 
                        ev.preventDefault();
                            openNewsLetterMoreInfo();
                }    
             );  
  }
  
/*************************************************************************************************/

/********************** Animation added for Haven 2010 ***********************/

//animated banners for NON-lightbox pages
function pageBanners() { 
$("#banner-highlights").show();
var aDayInLifePath = $("#ADayInLifePath").html();
var aDayInLifePathHeight = $("#ADayInLifePathHeight").html();
var aDayInLifePathWidth = $("#ADayInLifePathWidth").html();
var galleryPath = $("#imageGalleryPath").html();
var panoFileName = $("#360FileName").html();
//alert(panoFileName);
var videoFileName = $('#videoFileName').html();
var parkfinderPath = $('#ParkFinderPath').html();
var parkTourPath = $('#virtualTourPath').html();
//alert(aDayInLifePath);
if(aDayInLifePath != null || aDayInLifePath != "")
{

$("#life").attr("href", aDayInLifePath+"?KeepThis=true&amp;TB_iframe=true&amp;height="+aDayInLifePathHeight+"&amp;width="+aDayInLifePathWidth);
}
if(aDayInLifePath == null || aDayInLifePath == "")
{
$("#life").parent('li').remove();
//$("#life").css("display", "none");
}
if(galleryPath == null || galleryPath == "")
{
$("#gallery").parent('li').remove();
//$("#gallery").css("display", "none");
}
if(panoFileName == null || panoFileName == "")
{
$("#360view").parent('li').remove();
//$("#360view:parent").css("display", "none");
}
if(videoFileName == null || videoFileName == "")
{
$("#video").parent('li').remove();
//$("#video").css("display", "none");
}
if(parkfinderPath == null || parkfinderPath == "")
{
$("#finder").parent('li').remove();
//$("#finder").css("display", "none");
}
if(parkTourPath == null || parkTourPath == "")
{
$("#tour").parent('li').remove();
//$("#tour").css("display", "none");
}

	$(".bannerNav UL LI A").click(function(){
		//hide all banners
		$("#banner-highlights").hide();
		$("#banner-gallery").hide();
		$("#banner-video").hide();
		$("#banner-finder").hide();
		$("#banner-tour").hide();
		$("#banner-life").hide();
		$("#banner-360view").hide();
		$("#banner-map").hide();
		//hide banner elements
		//$("#banner-highlights IMG").show();
		$("#banner-video-movie").hide();
		$("#banner-video-options").hide();
		//hide link buttons
		$(".banner-slide-up").hide();
		//show selected banner
		//alert(this.id);
		if(this.id == "highlights")
		{
		  
		  //counter = 1;
		  startCarousel();
		  //HighlightsPanel_takeatour_Highlights();
		  
		  
		}
		
		if(this.id == "gallery")
		{		   
		   stopHighlightsAmin();
		   //HighlightsPanel_takeatour_imagegallery();
		   loadImageGallery();		   
		}
		
		if(this.id == "life")
		{
		stopHighlightsAmin();
		   //HighlightsPanel_takeatour_DayinLife();
		}		
		
		if(this.id == "video")
		{
		
		   stopHighlightsAmin();
		   //HighlightsPanel_takeatour_video();
		   loadTakeATourVideo();		  		   
		}
		if(this.id == "finder")
		{
//		     stopHighlightsAmin();		     
//		     window.open($('#ParkFinderPath').html());
		}
		if(this.id == "tour")
		{
		     stopHighlightsAmin();
		     //HighlightsPanel_takeatour_parkTour();
		     // window.open($('#virtualTourPath').html());
		     loadTour();
		}

		if(this.id == "map")
		{
		    stopHighlightsAmin();
		   // HighlightsPanel_takeatour_Map()
		    
		   // loadLocationMap();
		}
		if (this.id == "360view")
		{
		    stopHighlightsAmin();
		   // HighlightsPanel_takeatour_360();
		    loadTakeATour360();
		}
		
		$("#banner-" + this.id).show(); //show gallery banner
		
		//additional video animations
		// find active png
				$(".bannerNav UL").find("IMG.active-png").attr("src").replace("_on.png","_off.png");
				// change img src
				var releaseImg = $("IMG.active-png").attr("src");
				
				releaseImg = releaseImg.replace("_on.png","_off.png");
				
				$("IMG.active-png").attr("src", releaseImg);
		
				//lose active class imgs
				$(".bannerNav UL LI A IMG").removeClass("active-png").addClass("rollover-png");
		
				// perform activation of selected layer
				var activeImg = $("A#" + this.id + " > IMG.rollover-png").attr("src");
				
				$("A#" + this.id + " > IMG").attr("src", activeImg);  // alter image src
		$("A#" + this.id + " > IMG").removeClass("rollover-png").addClass("active-png");	//alter image class
		var changeImage = $("A#" + this.id + " > IMG").attr("src");
		
		changeImage = changeImage.replace("_off.png","_on.png");
		
		$("A#" + this.id + " > IMG").attr("src", changeImage);
		
		
	});	
}

/********************** Animation end Here for Haven 2010 *********************/


function strTrim(strToTrim)
{
    if (strToTrim != null && strToTrim != "")
    {
     strToTrim = strToTrim.replace(/^\s*/, "").replace(/\s*$/, "");  
    }
    return strToTrim;
}

//Handling Query String
    
function querySt(ji) {
hu = window.location.search.substring(1);
gy = hu.split("&");
for (i=0;i<gy.length;i++) {
ft = gy[i].split("=");
if (ft[0] == ji) {
return ft[1];
}
}
} 

//Handling Cookies
function getCookie( name ) {
	var start = document.cookie.indexOf( name + "=" );
	var len = start + name.length + 1;
	if ( ( !start ) && ( name != document.cookie.substring( 0, name.length ) ) ) {
		return null;
	}
	if ( start == -1 ) return null;
	var end = document.cookie.indexOf( ';', len );
	if ( end == -1 ) end = document.cookie.length;
	return unescape( document.cookie.substring( len, end ) );
}

function setCookie( name, value, expires, path, domain, secure ) {
	var today = new Date();
	today.setTime( today.getTime() );
	if ( expires ) {
		expires = expires * 1000 * 60 * 60 * 24;
	}
	var expires_date = new Date( today.getTime() + (expires) );
	document.cookie = name+'='+escape( value ) +
		( ( expires ) ? ';expires='+expires_date.toGMTString() : '' ) + //expires.toGMTString()
		( ( path ) ? ';path=' + path : '' ) +
		( ( domain ) ? ';domain=' + domain : '' ) +
		( ( secure ) ? ';secure' : '' );
}

function deleteCookie( name, path, domain ) {
	if ( getCookie( name ) ) document.cookie = name + '=' +
			( ( path ) ? ';path=' + path : '') +
			( ( domain ) ? ';domain=' + domain : '' ) +
			';expires=Thu, 01-Jan-1970 00:00:01 GMT';
}

/** 360 code ************************************************************/
/*! SWFObject v2.1 <http://code.google.com/p/swfobject/>
  Copyright (c) 2007-2008 Geoff Stearns, Michael Williams, and Bobby van der Sluis
  This software is released under the MIT License <http://www.opensource.org/licenses/mit-license.php>
*/

var swfobject = function() {
  
  var UNDEF = "undefined",
    OBJECT = "object",
    SHOCKWAVE_FLASH = "Shockwave Flash",
    SHOCKWAVE_FLASH_AX = "ShockwaveFlash.ShockwaveFlash",
    FLASH_MIME_TYPE = "application/x-shockwave-flash",
    EXPRESS_INSTALL_ID = "SWFObjectExprInst",
    
    win = window,
    doc = document,
    nav = navigator,
    
    domLoadFnArr = [],
    regObjArr = [],
    objIdArr = [],
    listenersArr = [],
    script,
    timer = null,
    storedAltContent = null,
    storedAltContentId = null,
    isDomLoaded = false,
    isExpressInstallActive = false;
  
  /* Centralized function for browser feature detection
    - Proprietary feature detection (conditional compiling) is used to detect Internet Explorer's features
    - User agent string detection is only used when no alternative is possible
    - Is executed directly for optimal performance
  */  
  var ua = function() {
    var w3cdom = typeof doc.getElementById != UNDEF && typeof doc.getElementsByTagName != UNDEF && typeof doc.createElement != UNDEF,
      playerVersion = [0,0,0],
      d = null;
    if (typeof nav.plugins != UNDEF && typeof nav.plugins[SHOCKWAVE_FLASH] == OBJECT) {
      d = nav.plugins[SHOCKWAVE_FLASH].description;
      if (d && !(typeof nav.mimeTypes != UNDEF && nav.mimeTypes[FLASH_MIME_TYPE] && !nav.mimeTypes[FLASH_MIME_TYPE].enabledPlugin)) { // navigator.mimeTypes["application/x-shockwave-flash"].enabledPlugin indicates whether plug-ins are enabled or disabled in Safari 3+
        d = d.replace(/^.*\s+(\S+\s+\S+$)/, "$1");
        playerVersion[0] = parseInt(d.replace(/^(.*)\..*$/, "$1"), 10);
        playerVersion[1] = parseInt(d.replace(/^.*\.(.*)\s.*$/, "$1"), 10);
        playerVersion[2] = /r/.test(d) ? parseInt(d.replace(/^.*r(.*)$/, "$1"), 10) : 0;
      }
    }
    else if (typeof win.ActiveXObject != UNDEF) {
      var a = null, fp6Crash = false;
      try {
        a = new ActiveXObject(SHOCKWAVE_FLASH_AX + ".7");
      }
      catch(e) {
        try { 
          a = new ActiveXObject(SHOCKWAVE_FLASH_AX + ".6");
          playerVersion = [6,0,21];
          a.AllowScriptAccess = "always";  // Introduced in fp6.0.47
        }
        catch(e) {
          if (playerVersion[0] == 6) {
            fp6Crash = true;
          }
        }
        if (!fp6Crash) {
          try {
            a = new ActiveXObject(SHOCKWAVE_FLASH_AX);
          }
          catch(e) {}
        }
      }
      if (!fp6Crash && a) { // a will return null when ActiveX is disabled
        try {
          d = a.GetVariable("$version");  // Will crash fp6.0.21/23/29
          if (d) {
            d = d.split(" ")[1].split(",");
            playerVersion = [parseInt(d[0], 10), parseInt(d[1], 10), parseInt(d[2], 10)];
          }
        }
        catch(e) {}
      }
    }
    var u = nav.userAgent.toLowerCase(),
      p = nav.platform.toLowerCase(),
      webkit = /webkit/.test(u) ? parseFloat(u.replace(/^.*webkit\/(\d+(\.\d+)?).*$/, "$1")) : false, // returns either the webkit version or false if not webkit
      ie = false,
      windows = p ? /win/.test(p) : /win/.test(u),
      mac = p ? /mac/.test(p) : /mac/.test(u);
    /*@cc_on
      ie = true;
      @if (@_win32)
        windows = true;
      @elif (@_mac)
        mac = true;
      @end
    @*/
    return { w3cdom:w3cdom, pv:playerVersion, webkit:webkit, ie:ie, win:windows, mac:mac };
  }();

  /* Cross-browser onDomLoad
    - Based on Dean Edwards' solution: http://dean.edwards.name/weblog/2006/06/again/
    - Will fire an event as soon as the DOM of a page is loaded (supported by Gecko based browsers - like Firefox -, IE, Opera9+, Safari)
  */ 
  var onDomLoad = function() {
    if (!ua.w3cdom) {
      return;
    }
    addDomLoadEvent(main);
    if (ua.ie && ua.win) {
      try {  // Avoid a possible Operation Aborted error
        doc.write("<scr" + "ipt id=__ie_ondomload defer=true src=//:></scr" + "ipt>"); // String is split into pieces to avoid Norton AV to add code that can cause errors 
        script = getElementById("__ie_ondomload");
        if (script) {
          addListener(script, "onreadystatechange", checkReadyState);
        }
      }
      catch(e) {}
    }
    if (ua.webkit && typeof doc.readyState != UNDEF) {
      timer = setInterval(function() { if (/loaded|complete/.test(doc.readyState)) { callDomLoadFunctions(); }}, 10);
    }
    if (typeof doc.addEventListener != UNDEF) {
      doc.addEventListener("DOMContentLoaded", callDomLoadFunctions, null);
    }
    addLoadEvent(callDomLoadFunctions);
  }();
  
  function checkReadyState() {
    if (script.readyState == "complete") {
      script.parentNode.removeChild(script);
      callDomLoadFunctions();
    }
  }
  
  function callDomLoadFunctions() {
    if (isDomLoaded) {
      return;
    }
    if (ua.ie && ua.win) { // Test if we can really add elements to the DOM; we don't want to fire it too early
      var s = createElement("span");
      try { // Avoid a possible Operation Aborted error
        var t = doc.getElementsByTagName("body")[0].appendChild(s);
        t.parentNode.removeChild(t);
      }
      catch (e) {
        return;
      }
    }
    isDomLoaded = true;
    if (timer) {
      clearInterval(timer);
      timer = null;
    }
    var dl = domLoadFnArr.length;
    for (var i = 0; i < dl; i++) {
      domLoadFnArr[i]();
    }
  }
  
  function addDomLoadEvent(fn) {
    if (isDomLoaded) {
      fn();
    }
    else { 
      domLoadFnArr[domLoadFnArr.length] = fn; // Array.push() is only available in IE5.5+
    }
  }
  
  /* Cross-browser onload
    - Based on James Edwards' solution: http://brothercake.com/site/resources/scripts/onload/
    - Will fire an event as soon as a web page including all of its assets are loaded 
   */
  function addLoadEvent(fn) {
    if (typeof win.addEventListener != UNDEF) {
      win.addEventListener("load", fn, false);
    }
    else if (typeof doc.addEventListener != UNDEF) {
      doc.addEventListener("load", fn, false);
    }
    else if (typeof win.attachEvent != UNDEF) {
      addListener(win, "onload", fn);
    }
    else if (typeof win.onload == "function") {
      var fnOld = win.onload;
      win.onload = function() {
        fnOld();
        fn();
      };
    }
    else {
      win.onload = fn;
    }
  }
  
  /* Main function
    - Will preferably execute onDomLoad, otherwise onload (as a fallback)
  */
  function main() { // Static publishing only
    var rl = regObjArr.length;
    for (var i = 0; i < rl; i++) { // For each registered object element
      var id = regObjArr[i].id;
      if (ua.pv[0] > 0) {
        var obj = getElementById(id);
        if (obj) {
          regObjArr[i].width = obj.getAttribute("width") ? obj.getAttribute("width") : "0";
          regObjArr[i].height = obj.getAttribute("height") ? obj.getAttribute("height") : "0";
          if (hasPlayerVersion(regObjArr[i].swfVersion)) { // Flash plug-in version >= Flash content version: Houston, we have a match!
            if (ua.webkit && ua.webkit < 312) { // Older webkit engines ignore the object element's nested param elements
              fixParams(obj);
            }
            setVisibility(id, true);
          }
          else if (regObjArr[i].expressInstall && !isExpressInstallActive && hasPlayerVersion("6.0.65") && (ua.win || ua.mac)) { // Show the Adobe Express Install dialog if set by the web page author and if supported (fp6.0.65+ on Win/Mac OS only)
            showExpressInstall(regObjArr[i]);
          }
          else { // Flash plug-in and Flash content version mismatch: display alternative content instead of Flash content
            displayAltContent(obj);
          }
        }
      }
      else {  // If no fp is installed, we let the object element do its job (show alternative content)
        setVisibility(id, true);
      }
    }
  }
  
  /* Fix nested param elements, which are ignored by older webkit engines
    - This includes Safari up to and including version 1.2.2 on Mac OS 10.3
    - Fall back to the proprietary embed element
  */
  function fixParams(obj) {
    var nestedObj = obj.getElementsByTagName(OBJECT)[0];
    if (nestedObj) {
      var e = createElement("embed"), a = nestedObj.attributes;
      if (a) {
        var al = a.length;
        for (var i = 0; i < al; i++) {
          if (a[i].nodeName == "DATA") {
            e.setAttribute("src", a[i].nodeValue);
          }
          else {
            e.setAttribute(a[i].nodeName, a[i].nodeValue);
          }
        }
      }
      var c = nestedObj.childNodes;
      if (c) {
        var cl = c.length;
        for (var j = 0; j < cl; j++) {
          if (c[j].nodeType == 1 && c[j].nodeName == "PARAM") {
            e.setAttribute(c[j].getAttribute("name"), c[j].getAttribute("value"));
          }
        }
      }
      obj.parentNode.replaceChild(e, obj);
    }
  }
  
  /* Show the Adobe Express Install dialog
    - Reference: http://www.adobe.com/cfusion/knowledgebase/index.cfm?id=6a253b75
  */
  function showExpressInstall(regObj) {
    isExpressInstallActive = true;
    var obj = getElementById(regObj.id);
    if (obj) {
      if (regObj.altContentId) {
        var ac = getElementById(regObj.altContentId);
        if (ac) {
          storedAltContent = ac;
          storedAltContentId = regObj.altContentId;
        }
      }
      else {
        storedAltContent = abstractAltContent(obj);
      }
      if (!(/%$/.test(regObj.width)) && parseInt(regObj.width, 10) < 310) {
        regObj.width = "310";
      }
      if (!(/%$/.test(regObj.height)) && parseInt(regObj.height, 10) < 137) {
        regObj.height = "137";
      }
      doc.title = doc.title.slice(0, 47) + " - Flash Player Installation";
      var pt = ua.ie && ua.win ? "ActiveX" : "PlugIn",
        dt = doc.title,
        fv = "MMredirectURL=" + win.location + "&MMplayerType=" + pt + "&MMdoctitle=" + dt,
        replaceId = regObj.id;
      // For IE when a SWF is loading (AND: not available in cache) wait for the onload event to fire to remove the original object element
      // In IE you cannot properly cancel a loading SWF file without breaking browser load references, also obj.onreadystatechange doesn't work
      if (ua.ie && ua.win && obj.readyState != 4) {
        var newObj = createElement("div");
        replaceId += "SWFObjectNew";
        newObj.setAttribute("id", replaceId);
        obj.parentNode.insertBefore(newObj, obj); // Insert placeholder div that will be replaced by the object element that loads expressinstall.swf
        obj.style.display = "none";
        var fn = function() {
          obj.parentNode.removeChild(obj);
        };
        addListener(win, "onload", fn);
      }
      createSWF({ data:regObj.expressInstall, id:EXPRESS_INSTALL_ID, width:regObj.width, height:regObj.height }, { flashvars:fv }, replaceId);
    }
  }
  
  /* Functions to abstract and display alternative content
  */
  function displayAltContent(obj) {
    if (ua.ie && ua.win && obj.readyState != 4) {
      // For IE when a SWF is loading (AND: not available in cache) wait for the onload event to fire to remove the original object element
      // In IE you cannot properly cancel a loading SWF file without breaking browser load references, also obj.onreadystatechange doesn't work
      var el = createElement("div");
      obj.parentNode.insertBefore(el, obj); // Insert placeholder div that will be replaced by the alternative content
      el.parentNode.replaceChild(abstractAltContent(obj), el);
      obj.style.display = "none";
      var fn = function() {
        obj.parentNode.removeChild(obj);
      };
      addListener(win, "onload", fn);
    }
    else {
      obj.parentNode.replaceChild(abstractAltContent(obj), obj);
    }
  } 

  function abstractAltContent(obj) {
    var ac = createElement("div");
    if (ua.win && ua.ie) {
      ac.innerHTML = obj.innerHTML;
    }
    else {
      var nestedObj = obj.getElementsByTagName(OBJECT)[0];
      if (nestedObj) {
        var c = nestedObj.childNodes;
        if (c) {
          var cl = c.length;
          for (var i = 0; i < cl; i++) {
            if (!(c[i].nodeType == 1 && c[i].nodeName == "PARAM") && !(c[i].nodeType == 8)) {
              ac.appendChild(c[i].cloneNode(true));
            }
          }
        }
      }
    }
    return ac;
  }
  
  /* Cross-browser dynamic SWF creation
  */
  function createSWF(attObj, parObj, id) {
    var r, el = getElementById(id);
    if (el) {
      if (typeof attObj.id == UNDEF) { // if no 'id' is defined for the object element, it will inherit the 'id' from the alternative content
        attObj.id = id;
      }
      if (ua.ie && ua.win) { // IE, the object element and W3C DOM methods do not combine: fall back to outerHTML
        var att = "";
        for (var i in attObj) {
          if (attObj[i] != Object.prototype[i]) { // Filter out prototype additions from other potential libraries, like Object.prototype.toJSONString = function() {}
            if (i.toLowerCase() == "data") {
              parObj.movie = attObj[i];
            }
            else if (i.toLowerCase() == "styleclass") { // 'class' is an ECMA4 reserved keyword
              att += ' class="' + attObj[i] + '"';
            }
            else if (i.toLowerCase() != "classid") {
              att += ' ' + i + '="' + attObj[i] + '"';
            }
          }
        }
        var par = "";
        for (var j in parObj) {
          if (parObj[j] != Object.prototype[j]) { // Filter out prototype additions from other potential libraries
            par += '<param name="' + j + '" value="' + parObj[j] + '" />';
          }
        }
        el.outerHTML = '<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"' + att + '>' + par + '</object>';
        objIdArr[objIdArr.length] = attObj.id; // Stored to fix object 'leaks' on unload (dynamic publishing only)
        r = getElementById(attObj.id);  
      }
      else if (ua.webkit && ua.webkit < 312) { // Older webkit engines ignore the object element's nested param elements: fall back to the proprietary embed element
        var e = createElement("embed");
        e.setAttribute("type", FLASH_MIME_TYPE);
        for (var k in attObj) {
          if (attObj[k] != Object.prototype[k]) { // Filter out prototype additions from other potential libraries
            if (k.toLowerCase() == "data") {
              e.setAttribute("src", attObj[k]);
            }
            else if (k.toLowerCase() == "styleclass") { // 'class' is an ECMA4 reserved keyword
              e.setAttribute("class", attObj[k]);
            }
            else if (k.toLowerCase() != "classid") { // Filter out IE specific attribute
              e.setAttribute(k, attObj[k]);
            }
          }
        }
        for (var l in parObj) {
          if (parObj[l] != Object.prototype[l]) { // Filter out prototype additions from other potential libraries
            if (l.toLowerCase() != "movie") { // Filter out IE specific param element
              e.setAttribute(l, parObj[l]);
            }
          }
        }
        el.parentNode.replaceChild(e, el);
        r = e;
      }
      else { // Well-behaving browsers
        var o = createElement(OBJECT);
        o.setAttribute("type", FLASH_MIME_TYPE);
        for (var m in attObj) {
          if (attObj[m] != Object.prototype[m]) { // Filter out prototype additions from other potential libraries
            if (m.toLowerCase() == "styleclass") { // 'class' is an ECMA4 reserved keyword
              o.setAttribute("class", attObj[m]);
            }
            else if (m.toLowerCase() != "classid") { // Filter out IE specific attribute
              o.setAttribute(m, attObj[m]);
            }
          }
        }
        for (var n in parObj) {
          if (parObj[n] != Object.prototype[n] && n.toLowerCase() != "movie") { // Filter out prototype additions from other potential libraries and IE specific param element
            createObjParam(o, n, parObj[n]);
          }
        }
        el.parentNode.replaceChild(o, el);
        r = o;
      }
    }
    return r;
  }
  
  function createObjParam(el, pName, pValue) {
    var p = createElement("param");
    p.setAttribute("name", pName);  
    p.setAttribute("value", pValue);
    el.appendChild(p);
  }
  
  /* Cross-browser SWF removal
    - Especially needed to safely and completely remove a SWF in Internet Explorer
  */
  function removeSWF(id) {
    var obj = getElementById(id);
    if (obj && (obj.nodeName == "OBJECT" || obj.nodeName == "EMBED")) {
      if (ua.ie && ua.win) {
        if (obj.readyState == 4) {
          removeObjectInIE(id);
        }
        else {
          win.attachEvent("onload", function() {
            removeObjectInIE(id);
          });
        }
      }
      else {
        obj.parentNode.removeChild(obj);
      }
    }
  }
  
  function removeObjectInIE(id) {
    var obj = getElementById(id);
    if (obj) {
      for (var i in obj) {
        if (typeof obj[i] == "function") {
          obj[i] = null;
        }
      }
      obj.parentNode.removeChild(obj);
    }
  }
  
  /* Functions to optimize JavaScript compression
  */
  function getElementById(id) {
    var el = null;
    try {
      el = doc.getElementById(id);
    }
    catch (e) {}
    return el;
  }
  
  function createElement(el) {
    return doc.createElement(el);
  }
  
  /* Updated attachEvent function for Internet Explorer
    - Stores attachEvent information in an Array, so on unload the detachEvent functions can be called to avoid memory leaks
  */  
  function addListener(target, eventType, fn) {
    target.attachEvent(eventType, fn);
    listenersArr[listenersArr.length] = [target, eventType, fn];
  }
  
  /* Flash Player and SWF content version matching
  */
  function hasPlayerVersion(rv) {
    var pv = ua.pv, v = rv.split(".");
    v[0] = parseInt(v[0], 10);
    v[1] = parseInt(v[1], 10) || 0; // supports short notation, e.g. "9" instead of "9.0.0"
    v[2] = parseInt(v[2], 10) || 0;
    return (pv[0] > v[0] || (pv[0] == v[0] && pv[1] > v[1]) || (pv[0] == v[0] && pv[1] == v[1] && pv[2] >= v[2])) ? true : false;
  }
  
  /* Cross-browser dynamic CSS creation
    - Based on Bobby van der Sluis' solution: http://www.bobbyvandersluis.com/articles/dynamicCSS.php
  */  
  function createCSS(sel, decl) {
    if (ua.ie && ua.mac) {
      return;
    }
    var h = doc.getElementsByTagName("head")[0], s = createElement("style");
    s.setAttribute("type", "text/css");
    s.setAttribute("media", "screen");
    if (!(ua.ie && ua.win) && typeof doc.createTextNode != UNDEF) {
      s.appendChild(doc.createTextNode(sel + " {" + decl + "}"));
    }
    h.appendChild(s);
    if (ua.ie && ua.win && typeof doc.styleSheets != UNDEF && doc.styleSheets.length > 0) {
      var ls = doc.styleSheets[doc.styleSheets.length - 1];
      if (typeof ls.addRule == OBJECT) {
        ls.addRule(sel, decl);
      }
    }
  }
  
  function setVisibility(id, isVisible) {
    var v = isVisible ? "visible" : "hidden";
    if (isDomLoaded && getElementById(id)) {
      getElementById(id).style.visibility = v;
    }
    else {
      createCSS("#" + id, "visibility:" + v);
    }
  }

  /* Filter to avoid XSS attacks 
  */
  function urlEncodeIfNecessary(s) {
    var regex = /[\\\"<>\.;]/;
    var hasBadChars = regex.exec(s) != null;
    return hasBadChars ? encodeURIComponent(s) : s;
  }
  
  /* Release memory to avoid memory leaks caused by closures, fix hanging audio/video threads and force open sockets/NetConnections to disconnect (Internet Explorer only)
  */
  var cleanup = function() {
    if (ua.ie && ua.win) {
      window.attachEvent("onunload", function() {
        // remove listeners to avoid memory leaks
        var ll = listenersArr.length;
        for (var i = 0; i < ll; i++) {
          listenersArr[i][0].detachEvent(listenersArr[i][1], listenersArr[i][2]);
        }
        // cleanup dynamically embedded objects to fix audio/video threads and force open sockets and NetConnections to disconnect
        var il = objIdArr.length;
        for (var j = 0; j < il; j++) {
          removeSWF(objIdArr[j]);
        }
        // cleanup library's main closures to avoid memory leaks
        for (var k in ua) {
          ua[k] = null;
        }
        ua = null;
        for (var l in swfobject) {
          swfobject[l] = null;
        }
        swfobject = null;
      });
    }
  }();
  
  
  return {
    /* Public API
      - Reference: http://code.google.com/p/swfobject/wiki/SWFObject_2_0_documentation
    */ 
    registerObject: function(objectIdStr, swfVersionStr, xiSwfUrlStr) {
      if (!ua.w3cdom || !objectIdStr || !swfVersionStr) {
        return;
      }
      var regObj = {};
      regObj.id = objectIdStr;
      regObj.swfVersion = swfVersionStr;
      regObj.expressInstall = xiSwfUrlStr ? xiSwfUrlStr : false;
      regObjArr[regObjArr.length] = regObj;
      setVisibility(objectIdStr, false);
    },
    
    getObjectById: function(objectIdStr) {
      var r = null;
      if (ua.w3cdom) {
        var o = getElementById(objectIdStr);
        if (o) {
          var n = o.getElementsByTagName(OBJECT)[0];
          if (!n || (n && typeof o.SetVariable != UNDEF)) {
              r = o;
          }
          else if (typeof n.SetVariable != UNDEF) {
            r = n;
          }
        }
      }
      return r;
    },
    
    embedSWF: function(swfUrlStr, replaceElemIdStr, widthStr, heightStr, swfVersionStr, xiSwfUrlStr, flashvarsObj, parObj, attObj) {
      if (!ua.w3cdom || !swfUrlStr || !replaceElemIdStr || !widthStr || !heightStr || !swfVersionStr) {
        return;
      }
      widthStr += ""; // Auto-convert to string
      heightStr += "";
      if (hasPlayerVersion(swfVersionStr)) {
        setVisibility(replaceElemIdStr, false);
        var att = {};
        if (attObj && typeof attObj === OBJECT) {
          for (var i in attObj) {
            if (attObj[i] != Object.prototype[i]) { // Filter out prototype additions from other potential libraries
              att[i] = attObj[i];
            }
          }
        }
        att.data = swfUrlStr;
        att.width = widthStr;
        att.height = heightStr;
        var par = {}; 
        if (parObj && typeof parObj === OBJECT) {
          for (var j in parObj) {
            if (parObj[j] != Object.prototype[j]) { // Filter out prototype additions from other potential libraries
              par[j] = parObj[j];
            }
          }
        }
        if (flashvarsObj && typeof flashvarsObj === OBJECT) {
          for (var k in flashvarsObj) {
            if (flashvarsObj[k] != Object.prototype[k]) { // Filter out prototype additions from other potential libraries
              if (typeof par.flashvars != UNDEF) {
                par.flashvars += "&" + k + "=" + flashvarsObj[k];
              }
              else {
                par.flashvars = k + "=" + flashvarsObj[k];
              }
            }
          }
        }
        addDomLoadEvent(function() {
          createSWF(att, par, replaceElemIdStr);
          if (att.id == replaceElemIdStr) {
            setVisibility(replaceElemIdStr, true);
          }
        });
      }
      else if (xiSwfUrlStr && !isExpressInstallActive && hasPlayerVersion("6.0.65") && (ua.win || ua.mac)) {
        isExpressInstallActive = true; // deferred execution
        setVisibility(replaceElemIdStr, false);
        addDomLoadEvent(function() {
          var regObj = {};
          regObj.id = regObj.altContentId = replaceElemIdStr;
          regObj.width = widthStr;
          regObj.height = heightStr;
          regObj.expressInstall = xiSwfUrlStr;
          showExpressInstall(regObj);
        });
      }
    },
    
    getFlashPlayerVersion: function() {
      return { major:ua.pv[0], minor:ua.pv[1], release:ua.pv[2] };
    },
    
    hasFlashPlayerVersion: hasPlayerVersion,
    
    createSWF: function(attObj, parObj, replaceElemIdStr) {
      if (ua.w3cdom) {
        return createSWF(attObj, parObj, replaceElemIdStr);
      }
      else {
        return undefined;
      }
    },
    
    removeSWF: function(objElemIdStr) {
      if (ua.w3cdom) {
        removeSWF(objElemIdStr);
      }
    },
    
    createCSS: function(sel, decl) {
      if (ua.w3cdom) {
        createCSS(sel, decl);
      }
    },
    
    addDomLoadEvent: addDomLoadEvent,
    
    addLoadEvent: addLoadEvent,
    
    getQueryParamValue: function(param) {
      var q = doc.location.search || doc.location.hash;
      if (param == null) {
        return urlEncodeIfNecessary(q);
      }
      if (q) {
        var pairs = q.substring(1).split("&");
        for (var i = 0; i < pairs.length; i++) {
          if (pairs[i].substring(0, pairs[i].indexOf("=")) == param) {
            return urlEncodeIfNecessary(pairs[i].substring((pairs[i].indexOf("=") + 1)));
          }
        }
      }
      return "";
    },
    
    // For internal usage only
    expressInstallCallback: function() {
      if (isExpressInstallActive && storedAltContent) {
        var obj = getElementById(EXPRESS_INSTALL_ID);
        if (obj) {
          obj.parentNode.replaceChild(storedAltContent, obj);
          if (storedAltContentId) {
            setVisibility(storedAltContentId, true);
            if (ua.ie && ua.win) {
              storedAltContent.style.display = "block";
            }
          }
          storedAltContent = null;
          storedAltContentId = null;
          isExpressInstallActive = false;
        }
      } 
    }
  };
}();

window.onload=function(){

} 
