//top nav flyout/options layer
$(document).ready(function()
{
flyoutLayer();
//newsletterThickBox();
if($("a#video") != null)
	$("a#video").parent().hide();
//FOR STOPPING CAROUSEL ON CLICK OF VIDEO LINK
  $("#video.thickbox").click(function() {
                                      runCarousel = false;
                                      // wait for the html to render for the thickbox
                                      setTimeout(waitForVideoClose, 500);
                                       });
});
function openNewWin() 
{
$("A.overlayPrintPage").click(function(ev)
{
ev.preventDefault();
var url = $("A.overlayPrintPage").attr("href");
var x = window.open(url, 'mynewwin','resizable=1,width=850,height=975,scrollbars=1');
});         
}

function printMe()
{
	self.print();
}

function overlayPrintDateTime()
{
var m_names = new Array("January", "February", "March", 
"April", "May", "June", "July", "August", "September", 
"October", "November", "December");

var d = new Date();
var curr_date = d.getDate();
var curr_month = d.getMonth();
var curr_year = d.getFullYear();
var hours = d.getHours();
var minutes = d.getMinutes();
if (minutes < 10)
{
minutes = "0" + minutes;
}

$("#dateTime").html(curr_date + " " + m_names[curr_month] + " " + curr_year+"  "+hours+":"+minutes+"hrs");
}

function flyoutLayer() {
	$("A#find-your-home").toggle(
	
		function() {
		    
			$("DIV#find-your-home-options").show();
			$("A#find-your-home").removeClass("off").addClass("on");
		},
		function() {
		
			$("DIV#find-your-home-options").hide();
			$("A#find-your-home").removeClass("on").addClass("off");
		}
	);
}

function newsletterThickBox()
{
$("DIV.rhs-ad:last A.thickbox").click(function()
{

$("#TB_window").hide();
$("DIV.TB_overlayBG").css("background-color", "");
//var x= $(this).offset().left;
var y= $(this).offset().top;
//var r=$("#right").width();
var wrapper_width=$("#wrapper").width();
var container_width=$("#container").width();
var left_strip=(wrapper_width-container_width)/2;
var leftcontainer=$("#left").width();
var total=left_strip+leftcontainer;



$("#TB_window").css("position", "absolute");
$("#TB_window").css("top", y+"px");
$("#TB_window").css("left", total+"px");
$("#TB_window").css("margin-left","0px");
$("#TB_window").css("margin-top","0px");
$("DIV.TB_overlayBG").css("background-color", "");
$("#TB_window").show();
});


$("DIV.rhs-ad-two A#newsletterSignUp").click(function()
{

$("#TB_window").hide();
$("DIV.TB_overlayBG").css("background-color", "");

var y= $(this).offset().top;

var wrapper_width=$("#wrapper").width();
var container_width=$("#container").width();
var left_strip=(wrapper_width-container_width)/2;
var leftcontainer=$("#left").width();
var total=left_strip+leftcontainer;

$("#TB_window").css("position", "absolute");
$("#TB_window").css("top", y+"px");
$("#TB_window").css("left", total+"px");
$("#TB_window").css("margin-left","0px");
$("#TB_window").css("margin-top","0px");
$("DIV.TB_overlayBG").css("background-color", "");
$("#TB_window").show();
});
}

function selectImageGallery()
{

var dropdown = document.getElementById('galleryList');
var text = dropdown.options[dropdown.selectedIndex].value;
changeImageGallery(text);

}
function selectVideo()
{

var dropdown = document.getElementById('videoList');
var text = dropdown.options[dropdown.selectedIndex].value;
changeVideo(text);

}
function changeVideo(v)
{
var videoPlayer = $("#video-player"+v).html();
$("#video-player").html(videoPlayer);
loadVideoOverlay(v);
}
function loadVideoOverlay(video)
{
//alert(video);
$("#overlay-video-loading"+video).hide();
$("#overlay-video"+video).hide();
$("#overlay-video-loading"+video).attr({"src": "/images/NonTridion/preloader.gif"});
$("#overlay-video-loading"+video).show();
$("#overlay-video-loading"+video).hide();
$("#overlay-video"+video).show();
flowPlayer("overlay-video"+video+"", "belong", "02A9BE", "81D4DF", "0059A2", "81D4DF");
//debugger;
ridTheScrollers();
}

/*added by offshore on 07-01-10 starts*/
function loadMap()
{
 $('div#park-map').load("/ParksMap/InsideParksMap.html", mapLoaded);
 }


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");
  } 

}	
/*added by offshore on 07-01-10 ends*/

/*added by offshore on 13-01-10 starts*/

function openNewsLetterMoreInfo()
{

 
   $("#newsletterSignUp").click(function()
   {
   
     
     $("DIV#newsletter DIV.fLeft").toggle();
     $("DIV#newsletter").show();
     $("#confirmation").css("display", "none");
	   return false;
   });

   

} 


/*added by offshore on 13-01-10 ends*/
function changeImageGallery(t)
{
var images = $("#gallery"+t+"-images").html();
var thumbs = $("#gallery"+t+"-thumb").html();
var imageDesc = $("#gallery"+t+"-desc").html();
$("#gallery-images").html(images);
$("#gallery-thumbs").html(thumbs);
$("#gallery-desc").html(imageDesc);
startGallery();
bannerGalleryNew();
}

//Booking Engine sliders
//usuage: any page with RHS search facility
//price slider
function priceSlider() {
	$("#slider-price").slider({
		range: true,
		values: [10000,70000],
		min: 0,
		max: 100000,
		step: 10000,
		slide: function(event, ui) {
			if(ui.values[0]=='100000')	
				$("#slider-price-from").val("\u00A3" + addComma(ui.values[0])+"\+");
			else
				$("#slider-price-from").val("\u00A3" + addComma(ui.values[0]));
			if(ui.values[1]=='100000')
				$("#slider-price-to").val("\u00A3" + addComma(ui.values[1])+"\+");
			else
				$("#slider-price-to").val("\u00A3" + addComma(ui.values[1]));
		}
	});
	$("#slider-price-from").val("\u00A3" + addComma($("#slider-price").slider("values", 0)));
	$("#slider-price-to").val("\u00A3" + addComma($("#slider-price").slider("values", 1)));
	$("#slider-price").css({"display" : "inline"});
//	$("#slider-budget-calc").css({"display" : "inline"});
	$("#price-slider P").css({"display" : "inline"});
	$("#slider-price-info").css({"display" : "inline"});
	$("#slider-price-markers").css({"display" : "inline"});
	$("#slider-price-select").css({"display" : "none"});
}

// This function formats numbers by adding commas
function addComma(nStr,prefix){
    var prefix = prefix || '';
    nStr += '';
    x = nStr.split('.');
    x1 = x[0];
    x2 = x.length > 1 ? '.' + x[1] : '';
    var rgx = /(\d+)(\d{3})/;
    while (rgx.test(x1))
        x1 = x1.replace(rgx, '$1' + ',' + '$2');
    return prefix + x1 + x2;
}

//sleep slider
function sleepSlider() {
	$("#slider-sleeps").slider({
		range: true,
		values: [2,4],
		min: 2,
		max: 8,
		step: 2,
		slide: function(event, ui) {
			$("#slider-sleeps-from").val(ui.values[0]);
			$("#slider-sleeps-to").val(ui.values[1]);
		}
	});
	$("#slider-sleeps-from").val($("#slider-sleeps").slider("values", 0));
	$("#slider-sleeps-to").val($("#slider-sleeps").slider("values", 1));
	$("#slider-sleeps").css({"display" : "inline"});
	$("#slider-sleeps-info").css({"display" : "inline"});
	$("#slider-sleeps-markers").css({"display" : "inline"});
	$("#slider-sleeps-select").css({"display" : "none"});
}

//Booking Engine Calendar
function interactiveCalendar(elementID, brand) {

	$("#" + elementID).datepicker({
		showOn: "both", 
		buttonImage: "/images/NonTridion/" + brand +"/calendar.gif",
		buttonImageOnly: true,
		altField: "#" + elementID,
		altFormat: "dd/mm/yy", 
		prevText: "&laquo;&laquo;", 
		nextText: "&raquo;&raquo;"
	});
}

//show banner buttons
//usage: any page with animated banner area
function showBannerButtons() {
	$(".banner-slide-up").css({"display" : "inline"}); 
	$(".banner-slide").css({"display" : "inline"}); 
}

//banner anim function
function bannerDetect() {
	//get querystring value
		var render;
		render = $.query.get("panel-to-show");
	$("#banner-slides").hide();
	$("#banner-slides-home").hide();
			$("#banner-photos").hide();
			$("#banner-video").hide();
			$("#banner-view").hide();
			$("#banner-plan").hide();
			$("#gallery-thumbs").hide();
			//hide banner elements
			$("#banner-slides IMG").show();
			$("#banner-slides-home IMG").show();
			$("#banner-video-movie").hide();
			$("#banner-video-options").hide();
			//hide link buttons
			$(".banner-slide-up").hide();
			//hide gallery elements
				$("#gallery-thumbs").hide();
		$("#gallery-desc P").hide();
		               if(render == "photos")
				{
				  
				  //loadImageGallery();
				  render = "gallery";
				  loadThumbImage();
				  		  		  
				  $("#gallery-desc P#desc-gallery1").show();
				  		  
				  $("#gallery-thumbs A").removeClass("active");
				  		  			
				  $("#gallery-thumbs A#gallery1").addClass("active");
				  		  			
				  $("#gallery-thumbs").show("slide", { direction: "up" }, 1500);
				  		  			
				  $("#banner-gallery IMG").hide();
				  $("#banner-gallery IMG#banner-gallery1").show();
		  			
				}
				
				if(render == "slides")
				{
				      
				      startCarousel();
				}
	
				if(render == "view")
				{ 
				   
				   loadPano();
				}
				
				if(render == "video")
				{
				    
				     loadVideo();
			        }
			        if(render == "plan")
			        {
								    
				     loadPlan();
			        }
		
		
			
			
		$("#banner-" + render).show("slide", { direction: "down" }, 1500);
		
		//additional gallery banner animations
		if (this.id == "video") {
					$("#banner-video-loading").attr({"src": "images/preloader.gif"});
					$("#banner-video-loading").show();
					setTimeout('$("#banner-video-loading").hide();', 1600);
					setTimeout('$("#banner-video-options").show();', 1600);
					setTimeout('$("A#banner-video-movie").show();', 1600);
			}
	setTimeout('$(".banner-slide-up").show();', 1500);
	$("#gallery-thumbs A").click(function(){
				
					$("#gallery-thumbs A").removeClass("active"); 		//remove all highlights
					$(this).addClass("active");							//highlight thumb - active css
					$("#gallery-desc P").hide();									//hide all descs
					$("#desc-" + this.id).show();						//show desc
					$("#banner-gallery IMG").hide();				//hide all banners
					$("div#banner-gallery img#banner-" + this.id).show();				//show banner
	});
}


//video player
//usage: any banner section containing video
//function params:
//				layerID = id of element to use as video player (usually an anchor tag <a>)
//				brand = brand to be used (css/images etc) for player controls
//				progressColor = progress bar (of 'played' video) color 
//				bufferColor = progress bar background/buffer color
//				buttonColor = player button color
//				buttonOverColor = player button hover color
//examples:
//				flowPlayer("banner-video-movie", "belong", "02A9BE", "81D4DF", "0059A2", "81D4DF");
//				flowPlayer("banner-video-movie", "haven", "02A9BE", "81D4DF", "0059A2", "0059A2");
//				flowPlayer("banner-video-movie", "exclusive", "02A9BE", "81D4DF", "0059A2", "0059A2");
//				flowPlayer("banner-video-movie", "lodge", "02A9BE", "81D4DF", "0059A2", "0059A2");
function flowPlayer(layerID, brand, progressColor, bufferColor, buttonColor, buttonOverColor) {
	flowplayer(layerID, "/flowplayer/flowplayer-3.0.7.swf", { 
	    plugins: { 
		   controls: { 
		        // location of the plugin 
		        url: "flowplayer.controls-3.0.4.swf", 
		        // display properties such as size, location and opacity 
				width: 463,
				height: 32,
		        left: 0, 
		        top: 228,  
		        opacity: 0.7,  
		        // controlbar colors
		        backgroundGradient: 'none', 
				autoHide: "always",
		        timeColor: "#FFFFFF", 
				durationColor: "#ffffff",
				bufferGradient: "none",
				bufferlength: 15,
				sliderColor: "#000000",
				sliderGradient: "none",
				volumeSliderColor: "#000000",
				volumeSliderGradient: "none",
				progressGradient: "none",
				timeBgColor: "#555555",
				//branded content
				     
		        background: "url(/images/NonTridion/flowplayer-gradient.gif) top left repeat-x",
				progressColor: "#" + progressColor +"",
				bufferColor: "#" + bufferColor +"",
				buttonColor: "#" + buttonColor +"",
				buttonOverColor: "#" + buttonOverColor +"",
				//buttons
		        all: false, 
		        play: true, 
				stop: true,
				time: true,
		        scrubber: true, 
		        // tooltips
		        tooltips: { 
		            buttons: true
		        } 
		    } 
	    }  
	});
}

//animated banners for NON-lightbox pages

function pageBanners() { 

 var imageGalleryPath = $("#imageGalleryPath").html();
     		  if (imageGalleryPath != null)
     		  {
        		imageGalleryPath = strTrim(imageGalleryPath); 
			$("#photos").attr("href", imageGalleryPath + "?keepThis=true&TB_iframe=true&height=312&width=630");       
			
     		  }
                   
		   var videoFilePath = $("#videoFileName").html();
        	   if (videoFilePath != null)
        	   {
          		videoFilePath = strTrim(videoFilePath);
			$("#video").attr("href", videoFilePath + "?keepThis=true&TB_iframe=true&height=280&width=465");
          		
        	   }
	$(".banner-slide-up A").click(function(){
	
	
	                   
			   
		//hide all banners
		$("#banner-slides").hide();
		$("#banner-slides-home").hide();
		$("#banner-photos").hide();
		$("#banner-video").hide();
		$("#banner-view").hide();
		$("#banner-plan").hide();
		//hide banner elements
		$("#banner-slides IMG").show();
		$("#banner-slides-home IMG").show();
		$("#banner-video-movie").hide();
		$("#banner-video-options").hide();
		//hide link buttons
		$(".banner-slide-up").hide();
		//show selected banner
		if(this.id == "photos")
		{
		
		   $("#banner-slides").show();
		    
		}
		
		if(this.id == "slides")
		{
		   startCarousel();
		   $("#banner-" + this.id).show("slide", { direction: "down" }, 1500);
		}
		
		if(this.id == "view")
		{
		   loadPano();
		   $("#banner-" + this.id).show("slide", { direction: "down" }, 1500);
		}
		
		if(this.id == "video")
		{
		$("#banner-slides").show();
		    $("#banner-video-loading").attr({"src": "/images/preloader.gif"});
		   		  			$("#banner-video-loading").show();
		   		  			setTimeout('$("#banner-video-loading").hide();', 1600);
		   		  			setTimeout('$("#banner-video-options").show();', 1600);
		   		  			setTimeout('$("A#banner-video-movie").show();', 1600);
		   			
		   
		   
		   
		    
		   		    //loadImageGallery();
		    //$("#banner-" + this.id).show("slide", { direction: "down" }, 1500); 
		  
		}
		if(this.id == "plan")
		{
		     loadPlan();
		     $("#banner-" + this.id).show("slide", { direction: "down" }, 1500);
		}
		
		//$("#banner-" + this.id).show("slide", { direction: "down" }, 1500); 			//show gallery banner
		//additional video animations
		if (this.id == "video") {
			$("#banner-video-loading").attr({"src": "images/preloader.gif"});
			$("#banner-video-loading").show();
			setTimeout('$("#banner-video-loading").hide();', 1600);
			setTimeout('$("#banner-video-options").show();', 1600);
			setTimeout('$("A#banner-video-movie").show();', 1600);
		}
		setTimeout('$(".banner-slide-up").show();', 1500);
	});	
}


//banner slides animation
//usage: any banner with slides enabled
function bannerSlides(slideLayer, slideHeight) {
	$("#"+ slideLayer + "").innerfade({ 
		speed: 5000, 
		timeout: 8000, 
		type: "random_start", 
		containerheight: slideHeight 
	});
}

//animated banners for overlay/lightbox pages
function overlayBanners() {
	$(".banner-slide-up A").click(function(){
		//hide all banners
		$("#banner-gallery").hide();
		$("#banner-video").hide();
		$("#banner-view").hide();
		$("#banner-plan").hide();
		//hide banner elements
		$("#gallery-thumbs").hide();
		$("#gallery-desc").hide();
		$("#gallery-desc P").hide();
		$("#banner-video-movie").hide();
		$("#banner-video-options").hide();
		//hide link buttons
		$(".banner-slide-up").hide();
		//if gallery banner
		if (this.id == "gallery") {
			$("#gallery-desc").show();
			$("#gallery-desc P#desc-gallery1").show();
			$("#gallery-thumbs").show("slide", { direction: "up" }, 1500);
			$("#gallery-images IMG").hide();
			$("#gallery-images IMG#banner-gallery1").show();
			$("#banner-gallery").show("slide", { direction: "down" }, 1500);
			setTimeout('$("#desc-gallery1").show("slide", { direction: "down" }, 1000);', 500); 			
		} else if (this.id == "video") {
			$("#banner-video-loading").attr({"src": "images/preloader.gif"});
			$("#banner-video-loading").show();
			$("#banner-video").show("slide", { direction: "down" }, 1500);
			setTimeout('$("#banner-video-loading").hide();', 1600);
			setTimeout('$("#banner-video-options").show();', 1600);
			setTimeout('$("A#banner-video-movie").show();', 1600);
				} else {
			if(this.id == "photos")
			{
				//alert("TestP");
			}
			// else show banner based on link id selected
			$("#banner-" + this.id).show("slide", { direction: "down" }, 1500);
		}

		setTimeout('$(".banner-slide-up").show();', 1500);
	});
}

//overlay thumbnail gallery
//usage: overlay/thickbox pages with thumbnail-driven image gallery
function bannerGallery() {
       
       $("#gallery-thumbs").click(function(){
	//alert("Inside");
		$("#gallery-thumbs A").removeClass("active"); 		//remove all highlights
		$(this).addClass("active");							//highlight thumb - active css
		$("#gallery-desc P").hide();									//hide all descs
		$("#desc-" + this.id).show();						//show desc
		$("#banner-gallery IMG").hide();				//hide all banners
		$("div#banner-gallery img#banner-" + this.id).show();				//show banner
	});
}
function bannerGalleryNew() { 
$("#gallery-thumbs A:first").addClass("active");
	$("#gallery-thumbs A").click(function(){
	
		$("#gallery-thumbs A").removeClass("active"); 		//remove all highlights
		$(this).addClass("active");							//highlight thumb - active css
		$("#gallery-desc P").hide();									//hide all descs
		$("#desc-" + this.id).show();
		//$("#desc-gallery1").show();  //show desc
		$("#gallery-images IMG").hide();				//hide all banners
		$("IMG#banner-" + this.id).show();				//show banner
	});
	if ($.browser.msie && $.browser.version < 7) {
		$("HTML").css({"overflow-x" : "hidden"});
	}
}

//overlay specification tabs
//usage: overlay specs details
function propertySpecs() { 
	$("#spec UL LI A").click(function(){
		$("#spec UL LI A").removeClass("active"); 		//remove all highlights
		$(this).addClass("active");								//highlight tab - active css
		$("#show-features").hide();								//hide all divs
		$("#show-finance").hide();								//hide all divs
		$("#show-key-points").hide();							//hide all divs
		$("#show-subletting").hide();								//hide all divs
		$("#show-payment").hide();							//hide all divs
		$("#show-costs").hide();
		$("#info DIV#show-" + this.id).show();				//show div
	});
}


function startGallery() {
	$("#gallery-desc").show();
	$("#gallery-desc P:first").show();
	$("#gallery-desc P#desc-gallery1").show();
	$("#gallery-images IMG").hide();
	$("#gallery-images IMG:first").show();
	$("#gallery-images IMG#banner-gallery1").show();
	ridTheScrollers();
}

function ridTheScrollers(axis) {
	$("HTML").css({"overflow-x" : "hidden", "overflow-y" : "hidden"});
	
}

//park map names overlay on hover on regional map 
//if clicked, show park info
//usage: parks regional map page
function mapCoords() {
	$("#mapcoords area").hover(function() {
		$(".map-overlay").hide();								//hide all map overlays
		$("#map-overlay-" + this.id).show();			//show hovered map overlay
		$("#mapcoords area").click(function() {
			$(".map-data-right").hide();						//hide right data overlays
			$(".map-data-left").hide();							//hide left data overlays
			$("#map-data-" + this.id).show();				//show selected data overlay
			$("#map-data-" + this.id + " .map-data-main div:odd").show();				//show selected data overlay
		});
	}, function() {
		$(".map-overlay").hide();								//hide map overlays on un-hover
	});
}

//park data overlay close
//usage: parks regional map page
function closeMapData() {
	$("A.map-data-close").click(function() {
		$(this).parent(".map-data-top").parent(".map-data-left").hide();		//close data overlay
		$(this).parent(".map-data-top").parent(".map-data-right").hide();		//close data overlay
	});
}

//map data overlay navigation
//usage: map data overlays with more than one park option
function mapDataNav() { 
	$(".map-data-nav UL LI A").click(function(){
		$(this).parent("LI").parent("UL").children("LI").children("A").removeClass("active"); 		//remove all highlights from selected list
		$(this).addClass("active");																							//highlight tab - active css
		$(".map-data-belong").hide();																						//hide branded content
		$(".map-data-haven").hide();																						//hide branded content
		$(".map-data-exclusive").hide();																						//hide branded content
		$(".map-data-lodges").hide();																						//hide branded content
		$("#map-data-" + this.id).show();																				//show correct branded content
	});
}


//overlay gallery
function overlayGallery() {
	setTimeout('$("#regional-image IMG#overlay-img-1").show();',250);	
	$("#regional-thumbs A").click(function() {
		$("#regional-image IMG").hide();
		$("#regional-image IMG#overlay-" + this.id).show();
		return false;
	});
}


// ################################ PARKFINDER START ######################
//park-finder interactions
function parkFinder() {
	
	$("#price-slider").hide();
	$("#park-region-legend UL LI:first").show();
	
	priceSlider();
	
	$("A.back-to-park-uk").click(function() {
		$("#park-region-sn").hide();
		$("#park-region-yl").hide();
		$("#park-region-ne").hide();
		$("#park-region-see").hide();
		$("#park-region-wbl").hide();
		$("#park-region-ssw").hide();
		$("#park-region-ddc").hide();
		
		$("#parkRegions :checkbox").attr('checked', false);
		//added by offshore on 09-Mar-2010 as per the requirement in ppt post_live_list_08.03.10.ppt		
		
		$("#park-uk").show();
		$("#park-region-legend UL LI:nth-child(2)").hide()
		$("#park-region-legend UL LI:first").show()
	});
	
	//change display based on region/drive time nav
	$("UL#park-tabs LI A").removeAttr("href");

	$("UL#park-tabs LI A").click(function() {
		if (this.id == "by-region") {
			$("#park-drive").hide();
			$("#park-region").show();
			$("#park-search-drive").hide();
			$("#park-search-region").show();
			$("#park-region-legend").show()
		} else {
			$("#park-region").hide();
			$("#park-drive").show();
			$("#park-search-drive").show();
			$("#park-search-region").hide();
			$("#park-region-legend").hide()
		}
		$("UL#park-tabs LI A").parent("LI").removeClass("active");
		$(this).parent("LI").addClass("active");
	});
	
	//expand price slider
	$("#show-price A").toggle(
		function() {
			$("#price-slider").show();
			$("#show-price A").addClass("expanded");
		},
		function() {
			$("#price-slider").hide();
			$("#show-price A").removeClass("expanded");
	});
		
	mapInteract();

}

function mapInteract() {

//	$("MAP#map-uk AREA").attr({"href" : "#"});

	//get id of map area clicked and show/hide relevant region
	
	$("MAP#map-uk AREA").hover(
		function() {
			$("#park-hovers IMG#uk-" + this.id).show();
		},
		function() {
			$("#park-hovers IMG#uk-" + this.id).hide();
		}
	);
	
	mapClick();
	
}

function mapClick() {
	$("MAP#map-uk AREA").click(function() {

		$("#park-uk").hide();
		$("DIV.regional-park").hide();
		$("#park-region-" + this.id).show();
		$("#park-region-legend UL LI:first").hide();
		$("#park-region-legend UL LI:nth-child(2)").show();
		var all_park_checkboxes = $("#parkRegions :checkbox");
		
					if(all_park_checkboxes.length>0)
					{
						jQuery.each(all_park_checkboxes, function() {
							this.checked = "";
						});
					}

		var selectedparkRegionID = "park-region-"+ this.id;
		var sel_parks_checkboxes = $("#" + selectedparkRegionID + " :checkbox");
		
					if(sel_parks_checkboxes.length>0)
					{
						jQuery.each(sel_parks_checkboxes, function() {
								
							this.checked = "checked";
						});
					}

	});
}
// ################################ PARKFINDER END ######################


//added by offshore on 04/12/2009
/****************************** Animation in Haven Portal Home Page ***************************************************/
//home lozenge links
function expandLinks() { 
	$(".home-main-lozenge A").click(function(){
		var tellMe = this.id;
		$("A#" + tellMe).parent("div").children("div.home-main-expand").show("slide", { direction: "up" }, 1500, function() {
			if (tellMe == "brochure") {
				pageToLink = "brochure.html";
				textToUse = "Order now";
			} else {
				pageToLink = "vip-visit.html";
				textToUse = "Arrange one now";
			}
			//alter link background
			$("#" + tellMe).removeClass("off").addClass("on");
			//alter span text
			$("A#" + tellMe + ".on SPAN.new-text").html(textToUse);
			//alter link location
			$(".home-main-lozenge A#" + tellMe).attr({"href": pageToLink, "title": textToUse});
		});
	});	
	$(".home-main-lozenge A").nb();
}

/******************Banner Thumbs for Park-Regions Page*******************/
function bannerThumbs() {
	
	$("#banner-thumbs UL LI A").click(function(){
		//alert(this.id);
		$("#region IMG").hide();
		$("#region IMG#banner-" + this.id).show();
	});
	
}
/******************Banner Thumbs for Park-Regions Page Ends*******************/

function homeCarousel() {
	//banner carousel automation
	$("#home-main").cycle({ 
		speed: 2500, 
		timeout: 7000, 
		type: "sequence", 
		containerheight: 632,
        next: "#next-cycle-item",
        pager: "#home-main-links",
		pagerAnchorBuilder: pagerFactory
	});
	}
	
function pagerFactory(idx, slide) {
	    var s = idx > 2 ? ' style="display:none"' : '';
	//	var lastLI = '<li class="last"><a id="next-cycle-item" title="Next">&nbsp;</a></li>';
	    return '<li'+s+'><a>&nbsp;</a></li>';
          };
		
//remove dotted-border round links for animations/expandings/toggles
$.fn.nb = function() {
    this.blur();
    return this.focus(function(){
           this.blur();
    });
}


/****************************** Animation in Haven Portal Home Page Ends ***************************************************/

/*********** Overlay Page Old Benners Animation Section Starts Here *********/
//animated banners forlightbox pages
function overlayPageBanners() { 
	$(".banner-slide-up A").click(function(){
		//hide all banners
		$("#banner-slides").hide();
		$("#banner-slides-home").hide();
		$("#banner-gallery").hide();
		$("#banner-photos").hide();
		$("#banner-video").hide();
		$("#banner-view").hide();
		$("#banner-plan").hide();
		$("#gallery-thumbs").hide();
		//hide banner elements
		$("#banner-slides IMG").show();
		$("#banner-slides-home IMG").show();
		$("#banner-video-movie").hide();
		$("#banner-video-options").hide();
		//hide link buttons
		$(".banner-slide-up").hide();
		//show selected banner
		if(this.id == "gallery")
		{
		  loadThumbImage();
		  		  
		  $("#gallery-desc P#desc-gallery1").show();
		  
		  			$("#gallery-thumbs A").removeClass("active");
		  			
		  			$("#gallery-thumbs A#gallery1").addClass("active");
		  			
		  			$("#gallery-thumbs").show("slide", { direction: "up" }, 1500);
		  			$("#gallery-thumbs IMG").show();
		  			
		  			$("#banner-gallery IMG").hide();
		  			$("#banner-gallery IMG#banner-gallery1").show();
		  			
		  
		  
		}
		
		if(this.id == "slides")
		{
		   startCarousel();
		}
		
		if(this.id == "view")
		{
		   loadPano();
		}
		
		if(this.id == "video")
		{
		   loadVideo();
		}
		if(this.id == "plan")
		{
		     loadPlan();
		}
		
		$("#banner-" + this.id).show("slide", { direction: "down" }, 1500); 			//show gallery banner
		//additional video animations
		if (this.id == "video") {
			$("#banner-video-loading").attr({"src": "images/preloader.gif"});
			$("#banner-video-loading").show();
			setTimeout('$("#banner-video-loading").hide();', 1600);
			setTimeout('$("#banner-video-options").show();', 1600);
			setTimeout('$("A#banner-video-movie").show();', 1600);
		}
		setTimeout('$(".banner-slide-up").show();', 1500);
		
		$("#gallery-thumbs A").click(function(){
			
				$("#gallery-thumbs A").removeClass("active"); 		//remove all highlights
				$(this).addClass("active");							//highlight thumb - active css
				$("#gallery-desc P").hide();									//hide all descs
				$("#desc-" + this.id).show();						//show desc
				$("#banner-gallery IMG").hide();				//hide all banners
				$("div#banner-gallery img#banner-" + this.id).show();				//show banner
	});
	});	
}

/*********** Overlay Page Old Banners Animation Section Ends Here *********/


/*********** Overlay Page New Benners Animation Section Starts Here *********/
//animated banners forlightbox pages
function overlayPageBannersNew() { 
	$(".banner-slide-up A").click(function(){
		//hide all banners
		$("#banner-slides").hide();
		$("#banner-slides-home").hide();
		$("#banner-gallery").hide();
		$("#banner-photos").hide();
		$("#banner-video").hide();
		$("#banner-view").hide();
		$("#banner-plan").hide();
		$("#gallery-thumbs").hide();
		$("#gallery-desc").hide();
		//hide banner elements
		$("#banner-slides IMG").show();
		$("#banner-slides-home IMG").show();
		$("#banner-video-movie").hide();
		$("#banner-video-options").hide();
		//hide link buttons
		$(".banner-slide-up").hide();
		//show selected banner
		if(this.id == "gallery")
		{
		
		  loadThumbImage();
		  		  
		  $("#gallery-desc P#desc-gallery1").show();
		  
		  			$("#gallery-thumbs A").removeClass("active");
		  			
		  			$("#gallery-thumbs A#gallery1").addClass("active");
		  			
		  			$("#gallery-thumbs").show("slide", { direction: "up" }, 1500);
		  			$("#gallery-thumbs ul li IMG").css("border","solid 2px white");
		  			$("#gallery-thumbs IMG").show();
		  			
		  			$("#gallery-desc").show();
		  			$("#banner-gallery IMG#banner-gallery1").show();
		  			
		  
		  
		}
		
		if(this.id == "slides")
		{
		   startCarousel();
		}
		
		if(this.id == "view")
		{
		   loadPano();
		}
		
		if(this.id == "video")
		{
		   loadVideo();
		}
		if(this.id == "plan")
		{
		     loadPlan();
		}
		
		$("#banner-" + this.id).show("slide", { direction: "down" }, 1500); 			//show gallery banner
		//additional video animations
				if (this.id == "video") {
					$("#banner-video-loading").attr({"src": "images/preloader.gif"});
					$("#banner-video-loading").show();
					setTimeout('$("#banner-video-loading").hide();', 1600);
					setTimeout('$("#banner-video-options").show();', 1600);
					setTimeout('$("A#banner-video-movie").show();', 1600);
		}
		setTimeout('$(".banner-slide-up").show();', 1500);
		bannerGalleryNew();
		
	});	
}

/*********** Overlay Page Banners New Animation Section Ends Here *********/

/*********** Page Banner Lifestyle with Lightbox starts here *********/

//animated banners for lightbox pages
function pageBannersLifestyle() { 
                  
 		  var imageGalleryPath = $("#imageGalleryPath").html();
     		  if (imageGalleryPath != null)
     		  {
        		imageGalleryPath = strTrim(imageGalleryPath); 
			$("#photos").attr("href", imageGalleryPath + "?keepThis=true&TB_iframe=true&height=312&width=630");       
			//$("#banner-photos").load(imageGalleryPath + " #banner-photos-inner" , startImageGallery);
			//startImageGallery();
			
     		  }
                   
		   var videoFilePath = $("#videoFileName").html();
        	   if (videoFilePath != null)
        	   {
          		videoFilePath = strTrim(videoFilePath);
			$("#video").attr("href", videoFilePath + "?keepThis=true&TB_iframe=true&height=280&width=465");
          		
        	   }
	
	$(".banner-slide-up A").click(function(){
		//hide all banners
		$("#banner-slides").hide();
		$("#banner-slides-home").hide();
		$("#banner-photos").hide();
		$("#banner-video").hide();
		$("#banner-view").hide();
		$("#banner-plan").hide();
		//hide banner elements
		$("#banner-slides IMG").show();
		$("#banner-slides-home IMG").show();
		$("#banner-video-movie").hide();
		$("#banner-video-options").hide();
		//hide link buttons
		$(".banner-slide-up").hide();
		//show selected banner
		
		
		if(this.id == "slides")
		{
		   startCarousel();
		  $("#banner-" + this.id).show("slide", { direction: "down" }, 1500); 
		}
		if(this.id == "slides-home")
		{
		   startCarousel();
		   $("#banner-" + this.id).show("slide", { direction: "down" }, 1500); 
		}
		if(this.id == "photos")
		{
		$("#banner-slides").show();
		$("#banner-slides-home").show();
		
				   //loadImageGallery();
				  //$("#banner-" + this.id).show("slide", { direction: "down" }, 1500); 
		}
		//$("#banner-" + this.id).show("slide", { direction: "down" }, 1500); 			//show gallery banner
		//additional video animations
		if (this.id == "video") {
		$("#banner-slides").show();
		$("#banner-slides-home").show();
			$("#banner-video-loading").attr({"src": "/images/preloader.gif"});
			$("#banner-video-loading").show();
			setTimeout('$("#banner-video-loading").hide();', 1600);
			setTimeout('$("#banner-video-options").show();', 1600);
			setTimeout('$("A#banner-video-movie").show();', 1600);
			
		}
		setTimeout('$(".banner-slide-up").show();', 1500);
	});	
}


/****************************** Image Gallery ***************************************************/
function loadImageGallery()
{
     unloadAllBanners();
     var imageGalleryPath = $("#imageGalleryPath").html();
     if (imageGalleryPath != null)
     {
        imageGalleryPath = strTrim(imageGalleryPath);
        
     }
     //alert(imageGalleryPath + " #banner-photos");
     $("#banner-photos").load(imageGalleryPath + " #banner-photos-inner" , startImageGallery);
}

var selGallery = "";
var galleryImgCount = 0;
var imageArray;
var imageDescArray;
var imgCounter = 0;


  function startImageGallery() {
    imageArray = $("#banner-photos-inner .galleryItem");
    imageDescArray = $("#banner-photos-inner .galleryItem .galleryItemDescription");
    
    galleryImgCount = imageArray.length;
    //alert(galleryImgCount);
    if (galleryImgCount > 0)
    { 
      OpenImage(1);
    }
   // alert(galleryImgCount);
  };


  function OpenImage(imgNumber)
  {
      //alert(galleryImgCount);
      //alert(imageArray[imgNumber]);
      if((imgNumber <= galleryImgCount) && (imgNumber > 0))
      {
        //alert($(imageArray[imgNumber]).find("a").attr("href"));  
        $("#banner-photos-inner img").attr("src",$(imageArray[imgNumber-1]).find("a").attr("href"));
        $("#banner-photos-inner img").attr("title",$(imageArray[imgNumber-1]).find("a").attr("title")); 
        var test = $(imageDescArray[imgNumber-1]).html();
        //alert(test);
        $("#banner-photos-info #banner-photos-desc").html(test);  
        changeTitleAndLinks(imgNumber);
        //var test = $(imageArray[imgNumber-1]+" .galleryItemDescription").html();
	//alert(test);                 
       }
  }
  
  function changeTitleAndLinks(imgNumber)
  {

    var imgGalleryLinksTxt = buildLinks(imgNumber);
    //alert(imgGalleryLinksTxt);
    $("#banner-photos-controls").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;
  }
    
/******************* Carousel *******************************************************************************/

var runCarousel = false;
var animationTime = 3000;
var stayTime = 4000;
var counter = 1;
var maxCount = 0;
var highlightsCarliArray;

function startCarousel()
{
   unloadAllBanners();
   maxCount = 0;
   counter = 0;
   runCarousel =  true;
   // puch to bg
   var fileName = $("#banner-slides-inner img").attr("src"); 
   $("#banner-slides-inner").css("background-image", "url('" + fileName + "')"); //change
   //$("#banner-slides-home").css("background-image", "url('" + fileName + "')");
   loadCarousel();
   
}


var parkFolderName = "DevonCiffs";

function loadCarousel()
{

  if (maxCount == 0)
  {
     highlightsCarliArray = $("#HighlightsCarousel").find("li a");
     maxCount = highlightsCarliArray.length;
  }
  counter = counter + 1;
  if ((counter > maxCount) && (maxCount > 0))
  { 
     counter = 1;
  }
   if(maxCount > 0 && runCarousel== true)
   {
     
     $('#banner-slides-inner img').animate({
      opacity : 0.0
     }, stayTime, "linear", loadNextImage);
     
   }
    
}

var carouselFileName;
var carouselTitle; 
function loadNextImage()
{
    //alert($(highlightsCarliArray[counter-1]).attr("href"));
    carouselFileName= $(highlightsCarliArray[counter-1]).attr("href");   //getting the carousel image path  
    carouselTitle= $(highlightsCarliArray[counter-1]).attr("title"); 
   $("#carouselTempImg").html("<img src=\"" + carouselFileName + "\" onload=\"carouselImgLoaded();\"></img>");
}

function carouselImgLoaded()
{ 
		
    $("#banner-slides #banner-slides-inner img").attr("src", carouselFileName);	
    $("#banner-slides #banner-slides-inner img").attr("title", carouselTitle);
    $("#banner-slides-home #banner-slides-inner img").attr("src", carouselFileName);	
    $("#banner-slides-home #banner-slides-inner img").attr("title", carouselTitle);
     $('#banner-slides-inner img').animate({
      opacity : 1.0
     }, animationTime, "linear", carouselImageChanged);    

}

function carouselImageChanged()
{

	//$("#banner-slides").css("background-image", "url('" + carouselFileName + "')");
	$("#banner-slides-inner").css("background-image", "url('" + carouselFileName + "')");
	//$("#banner-slides-home").css("background-image", "url('" + carouselFileName + "')");
	loadCarousel();
}

/************************ 360 *********************/

function loadPano()
{
	
	unloadAllBanners();
        var panoFilePath = $("#360FileName").html();
        if (panoFilePath != null)
        {
          panoFilePath = strTrim(panoFilePath);
          //alert(panoFilePath);
        }
        //alert(panoFilePath);
       $("#banner-view").load(panoFilePath);	
}

/**************** Video ***************************/
function loadVideo()
{
	unloadAllBanners();
        var videoFilePath = $("#videoFileName").html();
        if (videoFilePath != null)
        {
          videoFilePath = strTrim(videoFilePath);
          //alert(videoFilePath);
        }
        //alert(videoFilePath);
       $("#banner-video").load(videoFilePath);
}

/**********************************/

/**************** Plan ***************************/
function loadPlan()
{
	unloadAllBanners();
        var planFilePath = $("#PlanFileName").html();
        //alert(planFilePath);
        if (planFilePath != null)
        {
          planFilePath = strTrim(planFilePath);
          //alert(planFilePath);
        }
        //alert(planFilePath);
       $("#banner-plan").load(planFilePath);
}

/**********************************/

/**************** ImageThumbGallery ***************************/
function loadThumbImage()
{
	unloadAllBanners();
	
        var images = $("#banner-gallery-inner").html();
        
        var thumbImages = $("#gallery-hidden-thumbs").html();
        
        var thumbDesc = $("#banner-desc-hidden").html();
        
        if (images != null)
        {        
       $("#gallery-images").html(images);
       }
        if (thumbImages != null)
        {
        
        $("#gallery-thumbs").html(thumbImages); 
              $("#banner-gallery-thumbs").html("<div id=\"gallery-thumbs\">"+thumbImages+"</div>");
              //$("#gallery-thumbs").html(thumbImages);
       }
       if (thumbDesc!= null)
               {        
              $("#gallery-desc").html(thumbDesc);
       }
       
}

/**********************************/

/****************** Portal Home Page Carousel starts here **********************/
var runCarouselHP = true;
var animationTime = 3000;
var stayTime = 4000;
var counter = 1;
var maxCount = 0;
var highlightsCarPortalArray;
var highlightsCarPortalImgArray;

var homeMainBottomDescArray;

function startCarouselPortal() {
    
   maxCount = 0;
   counter = 1
   runCarouselHP =  true;
   // puch to bg
  // var fileName = $("IMG#home-main-img").attr("src"); 
   //$("#home-main").css("background-image", "url('" + fileName + "')");
  
   loadCarouselPortal();
   
}


var parkFolderName = "DevonCiffs";

function loadCarouselPortal() {
    

  if (maxCount == 0)
  {
     
     highlightsCarPortalArray = $("#portalImagesCarousel").find("a");
     highlightsCarPortalImgArray = $("#portalImagesCarousel").find("img");
     homeMainBottomDescArray = $("#portalImagesCarousel").find("span");
     maxCount = highlightsCarPortalImgArray.length;
  }
  counter = counter + 1;
  if ((counter > maxCount) && (maxCount > 0))
  { 
     counter = 1;
  }
   if(maxCount > 0 && runCarouselHP== true)
   {
       $('IMG#home-main-img').animate({
           opacity: 0.0
       }, stayTime, "linear", loadNextImagePortal); 
       
       
   }
    
}

var carouselFileName;
var carouselAlt;
var carouselTitle;
var carouselLink;
var carouselLinkTitle;
var carouselLinkText;
var carouselClass;
var carouselBottomText;
function loadNextImagePortal() {
    

    carouselFileName = $(highlightsCarPortalImgArray[counter - 1]).attr("src");   //getting the carousel image path
    carouselClass = $(highlightsCarPortalImgArray[counter - 1]).attr("class");
    
    $("#home-main-links LI A").removeClass("on").addClass("off");
    //turn on selected link
    $("#home-main-links LI A#" + carouselClass).addClass("on");
    carouselAlt = $(highlightsCarPortalImgArray[counter-1]).attr("alt");
    carouselTitle = $(highlightsCarPortalImgArray[counter-1]).attr("title");
    carouselLink = $(highlightsCarPortalArray[counter-1]).attr("href");
    carouselLinkTitle = $(highlightsCarPortalArray[counter-1]).attr("title");
    if (highlightsCarPortalArray[counter-1] != undefined || highlightsCarPortalArray[counter-1] != null)
    {
    carouselLinkText = $(highlightsCarPortalArray[counter-1]).html();
    }
    if (homeMainBottomDescArray[counter-1] != undefined || homeMainBottomDescArray[counter-1] != null)
    {
    carouselBottomText = $(homeMainBottomDescArray[counter - 1]).html();
    }
   $("#carouselTempImg").html("<img src=\"" + carouselFileName + "\" onload=\"carouselImgLoadedPortal();\"></img>");
   //carouselImgLoadedPortal();
}

function carouselImgLoadedPortal()
{
   // debugger;
    $("IMG#home-main-img").attr("src", carouselFileName);	
    $("IMG#home-main-img").attr("title", carouselTitle);
    $("IMG#home-main-img").attr("alt", carouselAlt);
    $("#home-main-cta A").attr("href", carouselLink);
    $("#home-main-title").html(carouselLinkTitle);
    $("#home-main-desc").html(carouselLinkText);
    $("#carouselImageDesc").html(carouselBottomText);
    $('IMG#home-main-img').animate({
        opacity: 1.0
    }, animationTime, "linear", carouselImageChangedPortal);    
    //loadCarouselPortal();
 
}

function carouselImageChangedPortal() {
    //debugger;
 
	$("#home-main-inner").css("background-image", "url('" + carouselFileName + "')");
	
	loadCarouselPortal();
}

/************************ Portal Home Page Carousel Ends Here ************************/


function unloadAllBanners()
{ 

	runCarousel = false;
	$('#banner-slides, #banner-slides-inner').stop();
	$('#banner-slides-home, #banner-slides-inner').stop();
}
/************************************* Common Functions************************************************************/



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;
        }
      } 
    }
  };
}();


/*****added by offshore on 04/12/2009 ends here ******/

/*****added by offshore on 03/02/2010 for Park List Items starts here ******/

function colourTheParkList() {
	$("UL#havenParkList LI:nth-child(4n+4)").css({"background-color" : "#E5F1F7"});
	$("UL#havenParkList LI:nth-child(4n+3)").css({"background-color" : "#E5F1F7"});
}

/*****added by offshore on 03/02/2010 Park List Items ends here ******/


//FUNCTION FOR NEW SEARCH BUTTON
function backToSearch() {
$("DIV#park-region").hide();
$("A.backToSR").click(function() {
		 $("DIV#FilterSearchUC_divRegions").hide();
		 $("DIV#park-options").hide();
		 $("DIV#park-region").show();
		 $("DIV#parkRegions").show();
	         $("#FilterSearchUC_park_search_submit").val("Search");
		 /*set price slider to default values*/             	                 
		 document.getElementById('slider-price-from').value = unescape('%A3') + '10,000';
		 document.getElementById('slider-price-to').value = unescape('%A3') + '70,000';
		 document.getElementById('leftPointer').style.left = '10%';    
		 document.getElementById('rightPointer').style.left = '70%';
		 document.getElementById('divSliderWidth').style.left = '10%';
		 document.getElementById('divSliderWidth').style.width = '60%'; 
		 /*remove the expanded class */
		 $("#show-price a").removeClass('expanded');
	         /*hide the price-slider */
	         $("DIV#price-slider").hide();
	 	});
}


//FUNCTION FOR STOPPING CAROUSEL ON CLICK OF VIDEO LINK
                                  
    function waitForVideoClose() {
      $("#TB_closeWindowButton").click(function() {
        runCarousel = true;
        loadCarousel();
      });
      $("#TB_Image").click(function() {
      runCarousel = true;
      loadCarousel();
    });
      
    }
