var ispopUpBlocked = false;
var ispopUpBlockerCalled=false;
/**
 * The Away global namespace object
 * @class Away
 * @static
 */
 
 /**
 * This line is to include the combined yahoo javascripts into global.js
 */
 document.write("<script type='text/javascript' src='/js/dcl/combinedYahoo-min.js'></script>");
 
if (typeof Away == "undefined") {
    var Away = {};
}

/**
 * This function was stolen from Yahoo's lib since they haven't altered
 * their function.  (it is currently a CR for their lib, no delivery date)
 * For best practice, declare the required namespace at the beginning of 
 * every js "package". 
 *
 * Returns the namespace specified and creates it if it doesn't exist
 * <pre>
 * YAHOO.namespace("property.package");
 * YAHOO.namespace("YAHOO.property.package");
 * </pre>
 * Either of the above would create YAHOO.property, then
 * YAHOO.property.package
 *
 * Be careful when naming packages. Reserved words may work in some browsers
 * and not others. For instance, the following will fail in Safari:
 * <pre>
 * YAHOO.namespace("really.long.nested.namespace");
 * </pre>
 * This fails because "long" is a future reserved word in ECMAScript
 *
 * @method namespace
 * @static
 * @param  {String*} arguments 1-n namespaces to create 
 * @return {Object}  A reference to the last namespace object created
 */

Away.namespace = function() {
    var a=arguments, o=null, i, j, d;
    for (i=0; i<a.length; ++i) {
        d=a[i].split(".");
        o=Away;

        // Away is implied, so it is ignored if it is included
        for (j=(d[0] == "Away") ? 1 : 0; j<d.length; ++j) {
            o[d[j]]=o[d[j]] || {};
            o=o[d[j]];
        }
    }

    return o;
};

/**
ILazarte
This anonymous object executes on load, but will only affect IE.
It provides the caching solution for the background images.
*/
(function(){

	/*Use Object Detection to detect IE6*/
	var  m = document.uniqueID /*IE*/
	&& document.compatMode  /*>=IE6*/
	&& !window.XMLHttpRequest /*<=IE6*/
	&& document.execCommand ;
	
	try{
		if(!!m){
			m("BackgroundImageCache", false, true) /* = IE6 only */ 
		}
		
	}catch(oh){};
})();

function swapDisplay (id, state) {
	document.getElementById(id).style.display = state;
}

function showPage(){
	var divElement = document.getElementById('stellentarticlecontent');
	var msg = divElement.innerHTML;
	return msg;
}


function ShowListings() {
	try{
		if (zSr == null || typeof(zSr) == "undefined" || zSr.length == 6) {		
			return;
		}
	}catch(err){
		//variable zSr is not available if exteranl site doesn't support;		
		return;
	}
	var i=6;
	document.write ('<ul class="no-formatting">');
	while (i < zSr.length) {
		var descr = zSr[i++]; // listing description
		var unused1 = zSr[i++]; // (ignore)
		var clickURL = zSr[i++]; // listing link
		var title = zSr[i++]; // listing title
		var sitehost = zSr[i++]; // advertiser?s domain name
		var unused2 = zSr[i++]; // (ignore)
		document.write('<li>');
		document.write('<a target="_blank" href="' + clickURL + '">');
		document.write(title + '</a>');
		document.write('<p><a target="_blank" href="' + clickURL + '">' + descr + '</a></p>');
		document.write('<a target="_blank" href="' + clickURL + '" class="sitehost">' + sitehost + '</a></li>');
	}
	document.write ('</ul>');
}


function openNewWindow (url) {
	//simple function, mimmicks opening window using target = _blank, but places a sized window in upper left corner
	window.open (url, '', 'left=50,top=50,location=yes,scrollbars=yes,width=600,height=500,menubar=yes,status=yes,resizable=yes,toolbar=yes');
}

function openVirtualTour (url) {
	var win = window.open (url, 'virtual_tour_window', 'left=50,top=50,scrollbars=yes,width=800,height=650');
	win.focus();
}

function openSmallPopup (url, winName) {
	var w=window.open(url, winName, 'left=50,top=50,width=435,height=325,scrollbars=auto'); 
	w.focus();
}

function openQuickCheck (url) {
	var w = window.open (url, 'quickcheck', 'width=260,height=440,top=20,left=20,scrollbars=yes,resizable=0')
	w.focus();
}
function openPopUp (url) {
	var w = window.open (url, 'quickcheck', 'width=500,height=500,top=20,left=20,scrollbars=yes,resizable=yes')
	w.focus();
}

function openPopUp2 (msg) {
	var w = window.open (msg);
	w.focus();
}

function openCompareRatesAirportCodes () {
    window.open('/plan-a-trip/airportcodes.html', 'airportcodes', 'width=600,height=600,resizable=yes,scrollbars=yes,left=50,top=50');
}

function IsPopupBlocker() {
	var objWin = window.open("","testpopupblocker","width=100,height=50,top=5000,left=5000");
	if (objWin == null || typeof(objWin) == "undefined") {
		return true;
	} else {
		objWin.close();
		return false;
	}
}	
	
function IsPopupBlockerUserClick () {
	for (var i=0; i<2; i++ ) {
		var objWin = window.open("","testpopupblocker","width=100,height=50,top=5000,left=5000");
		if (objWin == null || typeof(objWin) == "undefined") {
			return true;
		} else {
			objWin.close();
		}
	}
	return false;
}	
	
//open travel photo galleries
function openTPG (url, type) {
		var windowName = "";
		switch (type) {
			case "screensaver":
				windowName = "screensaver_preview";
				break;
			case "gallery":
				windowName = "photo_gallery";
				break;
			case "slideshow":
				windowName = "slideshow";
				break;
			default:
				break;
		}
		window.open (url, windowName, 'width=792,height=700,scrollbars=yes,resizable=yes,left=50,top=50');
	}
	
function getPFUrl(requestUrl){
	requestUrl = requestUrl.replace("-do-","-pf-");
	requestUrl = requestUrl.replace("-ga-","-pf-");
	requestUrl = requestUrl.replace("-ta-","-pf-");
	return requestUrl;
}

function loadMap() {
	var latLongCount = '';
	if( document.getElementById('latLongCount') != null && 
		typeof(document.getElementById('latLongCount')) != 'undefined') {
		latLongCount = document.getElementById('latLongCount').value;
	} 
	
	var zoomLevel = document.getElementById("zoomLevel").value;
      if (GBrowserIsCompatible() && zoomLevel!=null && zoomLevel!='') {
        var map = new GMap2(document.getElementById("google-map"));
        map.addControl(new GLargeMapControl());
		map.addControl(new GMapTypeControl());
		gmarkers = new Array();
		// Create our "tiny" marker icon
		var icon = new GIcon();
		icon.image = "/images/google-maps/away-icon.png";
		icon.shadow = "/images/google-maps/away-icon-shadow.png";
		icon.iconSize = new GSize(19, 26);
		icon.shadowSize = new GSize(45, 26);
		icon.iconAnchor = new GPoint(6, 20);
		icon.infoWindowAnchor = new GPoint(5, 1);
		
		var i = 1;
		var temp=0;
		for (i=1;i<=latLongCount;i++){
			var latElement = "googleMapLat_" + i;
			var lonElement = "googleMapLon_" + i;
			var objectNameElement= "googleObjectName_" + i;
			var urlElement= "googleUrl_" + i;
			var locationElement= "resortLocation_"+i;
			var latVal = document.getElementById(latElement).value;
			var lonVal = document.getElementById(lonElement).value;
			var objectName=document.getElementById(objectNameElement).value;
			var latlong = new GLatLng(latVal, lonVal);
			if( i == 1 ) {
				map.setCenter(latlong , parseInt(zoomLevel));
			}		
			var marker = new GMarker(latlong, {icon:icon});
			if(document.getElementById(urlElement)!=null && document.getElementById(locationElement) != null){
				var url=document.getElementById(urlElement).value;
				var location=document.getElementById(locationElement).value;
				marker.bindInfoWindowHtml('<a href="'+url+'">'+objectName+'</a>'+'<br/>'+location);
			}	
			else
			marker.bindInfoWindowHtml(objectName);
			gmarkers[temp]= marker;
			temp ++;
         	map.addOverlay(marker);
			
		}
    } 
}
		
function highlightMarker(lat,long,objectName,url,location){
var latitude=lat/10000;
var longitude=long/10000;
  var targetPoint = new GLatLng(latitude,longitude);
  for (var i=0; i<gmarkers.length; i++) { 
  	if (gmarkers[i].getPoint().equals(targetPoint)) {
	  	gmarkers[i].bindInfoWindowHtml('<a href="'+url+'">'+objectName+'</a><br/>'+location);
		 GEvent.trigger(gmarkers[i],'click');
	 } 
   } 
}

function userReviewFeedBack(reviewIdInput,userResponseInput){					
	var url = "/userReviewHelpful.ajax?"
				+"moduleId=UserReviewHelpful"
				+"&productType=hotels"
				+"&reviewId=" +escape(reviewIdInput)
				+"&isHelpful=" +escape(userResponseInput);
	if (window.XMLHttpRequest) {
    	xmlHttpRequest = new XMLHttpRequest();
    } else if (window.ActiveXObject) {
    	xmlHttpRequest = new ActiveXObject("Microsoft.XMLHTTP");
    }
    xmlHttpRequest.open("GET", url, true);
    xmlHttpRequest.onreadystatechange = userReviewHelpfulResponse;
    xmlHttpRequest.send(null);
}

function userReviewHelpfulResponse() {	
	if (xmlHttpRequest.readyState == 4) {
        if (xmlHttpRequest.status == 200) {						
	        updateUserReviewHelpfulResponse();
        }
    }
}

function updateUserReviewHelpfulResponse() {	
	var xmlMessage = xmlHttpRequest.responseXML;
    var reviewHelpful = xmlMessage.getElementsByTagName("com.away.product.user.dto.UserReviewHelpfulDTO")[0];
    if (null == reviewHelpful || "undefined" == typeof(reviewHelpful) ) {
		alert("We are facing technical problems\n Please try after sometime");
		return false;
	}
    var reviewId = reviewHelpful.getElementsByTagName("reviewId")[0].childNodes[0].nodeValue;
    var userResponse = reviewHelpful.getElementsByTagName("userResponse")[0].childNodes[0].nodeValue;
    var yesCount = reviewHelpful.getElementsByTagName("helpfulCount")[0].childNodes[0].nodeValue;
    var totalCount = reviewHelpful.getElementsByTagName("userVotedCount")[0].childNodes[0].nodeValue;
    
    var paraId = "p_hotel_user_review_" +escape(reviewId);
    var spanId = "sp_hotel_user_review_" +escape(reviewId);
    var paraBlock = document.getElementById(paraId);
	var spanBlock = document.getElementById(spanId);

	var messageUserResponseText;
	if(userResponse == 'yes') {
		messageUserResponseText = "You have found this review helpful.";
	} else {
		messageUserResponseText = "You have not found this review helpful.";
	}
	
	var messageResponseCount = "(" +escape(yesCount) + " out of " 
					+escape(totalCount) +" users found this review helpful.)";
		
    var updateSpanElement = document.createElement("span");
    var updateSpanId = "sp_hotel_user_reviewUpdate_" +escape(reviewId)
    updateSpanElement.setAttribute("id", updateSpanId);
    updateSpanElement.appendChild(document.createTextNode(messageUserResponseText));    
    
    var updateParaElement = document.createElement("p");
    var updateParaId = "p_hotel_user_reviewUpdate_" +escape(reviewId)
    var updateParaClass = "helpful";
    updateParaElement.setAttribute("id", updateParaId);
    updateParaElement.setAttribute("class", updateParaClass);
    updateParaElement.appendChild(document.createTextNode(messageResponseCount));   
    
    var divBlock = spanBlock.parentNode;
    divBlock.replaceChild(updateSpanElement,spanBlock);     
    var paraParentBlock = paraBlock.parentNode;
    paraParentBlock.replaceChild(updateParaElement,paraBlock);
}

function generateCSDB(){					
	var url = "/RefreshCSDB.ajax?"
				+"moduleId=GenerateCSDB";
	if (window.XMLHttpRequest) {
    	xmlHttpRequest = new XMLHttpRequest();
    } else if (window.ActiveXObject) {
    	xmlHttpRequest = new ActiveXObject("Microsoft.XMLHTTP");
    }
    xmlHttpRequest.open("GET", url, true);
    xmlHttpRequest.onreadystatechange = cSDBRefreshResponse;
    xmlHttpRequest.send(null);
}

function awayCSDBRefresh(){					
	var url = "/RefreshCSDB.ajax?"
				+"moduleId=RefreshCSDB";
	if (window.XMLHttpRequest) {
    	xmlHttpRequest = new XMLHttpRequest();
    } else if (window.ActiveXObject) {
    	xmlHttpRequest = new ActiveXObject("Microsoft.XMLHTTP");
    }
    xmlHttpRequest.open("GET", url, true);
    xmlHttpRequest.onreadystatechange = cSDBRefreshResponse;
    xmlHttpRequest.send(null);
}

function cSDBRefreshResponse() {	
	if (xmlHttpRequest.readyState == 4) {
        if (xmlHttpRequest.status == 200) {
			var moduleStatus = xmlHttpRequest.responseXML.getElementsByTagName("string")[0].childNodes[0].nodeValue;
	        if (null == moduleStatus || "undefined" == typeof(moduleStatus) ) {
				alert("We are facing technical problems\n Please try after sometime");
				return false;
			}
	        alert(moduleStatus);
        }
    }
}

function lodgingDetailResizeDiv () {

	var img = YD.get("indexImage");
	//var w = img.offsetWidth;
	var h = img.offsetHeight;
	//alert ("img height: " + h);
	if (h  < 328) {
			h = h + 20;
        	YD.setStyle('hotel-image', 'height', h);
        }
}       

//functions to validate search box
function validateSiteSearch()  {
	query = document.keyword_search_form.q.value;
	if (isBlank(query) || (query.indexOf('Your Destination') != -1) ) {	
		var n = prompt("Please your destination or travel interest:", "");
		if (n == null) {
		  document.keyword_search_form.q.value = "[ Your Destination ]";
		  return;
		} else {
		  document.keyword_search_form.q.value = n;
		} 
		validateSiteSearch(); 
	} else if (query =="null" ) {
	  	 document.keyword_search_form.q.value=" ";
	} else {
	   	document.keyword_search_form.submit();
	}
}

function clearSearchBox(box) {
	query = document.keyword_search_form.q.value;
	if (query.indexOf('Your Destination') != -1) {
		box.value = "";
	}
}

function isBlank(string) {
  	for(var i = 0; i < string.length; i++) {
  		var c = string.charAt(i);
		if ((c != ' ') && (c != '\n') && (c != '')) return false;	
	}	
	return true;
 }
 
function swapTabbedBox (verticalId, cobrand) {
	verticalArray = new Array (400173, 350262, 1606, 350266 , 400050, 350263, 1111, 350265, 350272);
	for (i = 0; i < verticalArray.length; i++) {
		if (verticalArray[i] == verticalId) {
			document.getElementById("expertreview-" + verticalId).style.display = "block";
			document.getElementById("expertreviewnavimg-" + verticalId).src = "/away/images/verticals/expertreview-" + verticalId + "-on.gif";
		} else {
			if (document.getElementById("expertreview-" + verticalArray[i]) != null) {
				document.getElementById("expertreview-" + verticalArray[i]).style.display = "none";
				document.getElementById("expertreviewnavimg-" + verticalArray[i]).src = "/away/images/verticals/expertreview-" + verticalArray[i] + ".gif";
			}
		}
	}
} 
function swapRelatedContentBox (id) {
	contentArray = new Array (1,2,3,4);
	for (i = 0; i < contentArray.length; i++) {
		if (contentArray[i] == id) {
			document.getElementById("relatedcontenttab-" + id).style.display = "block";
			document.getElementById("relatedcontentnavtab-" + id).className = "relatedcontentnavtab-on";
		} else {
			if (document.getElementById("relatedcontenttab-" + contentArray[i]) != null) {
				document.getElementById("relatedcontenttab-" + contentArray[i]).style.display = "none";
				document.getElementById("relatedcontentnavtab-" + contentArray[i]).className = "relatedcontentnavtab";
			}
		}
	}
} 
 
 //wrapper/convenience function for the Google Analytics call.
//add dcl links across site should call this function instead of directly invoking urchinTracker
function awayUrchinWrapper (str) {
	//alert ("about to track");
	//cheaptickets should use orbitz
	if (str.toLowerCase() == "cheaptickets") str = "Orbitz";
	str = formatWithUnderscores (str);
	str = "/outgoing/" + str;
	//alert (str);
	pageTracker._trackPageview(str);
	//alert ("tracked");
}

function formatWithUnderscores (str) {
	str = str.replace(/\./g,"_");
        str = str.replace(/ /g,"_");
        str = str.toLowerCase();
	return str;
}

function isNonNumberKey(evt){
     var charCode = (evt.which) ? evt.which : event.keyCode
     if (charCode < 48 || charCode > 57)
        return true;
     return false;
}

function toggleCheckBox(elementId) {
	if(document.getElementById(elementId).checked == true ) {
		document.getElementById(elementId).checked = false;
	} else {
		document.getElementById(elementId).checked = true;
	}
}

function toggleCrCheckBox(elementId) {
    if(elementId != null) {   
		if(elementId.checked == true ) {
			elementId.checked = false;
		} else {
			elementId.checked = true;
		}
	}
}

function retainChecked(linkId) {
    if(document.getElementById(linkId) != null) { 
		if(document.getElementById(linkId).checked == true ) {
			return true;
		}else{
			return false;
		}
	}
	return true;
}	

function trim(inputString) {
	return inputString.replace(/^\s*(\b.*\b|)\s*$/, "$1");	   
}

/* This can be used to write a general tree for Away applications */
AwayTree = function() {
	
	var tree;
	
	function loadNodeData(node, fnLoadComplete) {
		var urlValue = node.data.urlRef;
		if(urlValue != '') {
			var urlObjs = new Array();
	   		var childNodes = new Array();
	   		var secLinks =AwayTreeHelper.secondaryLinks[urlValue];
	   		var secLinkTxt =AwayTreeHelper.secondarylinkText[urlValue];
	   		if(secLinks==null){
	   		}else{		   				
		   		for(var i=1;i<secLinks.length;i++){
					linkText = secLinkTxt[i];
					urlObjs[i] = { label: linkText, urlRef:'', href:secLinks[i]}; 
					childNodes[i] = new YAHOO.widget.TextNode(urlObjs[i], node, true);
				}
			}
			fnLoadComplete();
		} else {
			fnLoadComplete();
		}
	}
	
	function loadNodeData1(node, fnLoadComplete) {
		var urlValue = node.data.urlRef;
		if(urlValue != '') {
			var urlObjs = new Array();
	   		var childNodes = new Array();
	   		var secLinks =AwayTreeHelper.secondary1Links[urlValue];
	   		var secLinkTxt =AwayTreeHelper.secondary1linkText[urlValue];
	   		if(secLinks==null){
	   		}else{		   				
		   		for(var i=1;i<secLinks.length;i++){
					linkText = secLinkTxt[i];
					urlObjs[i] = { label: linkText, urlRef:'', href:secLinks[i]}; 
					childNodes[i] = new YAHOO.widget.TextNode(urlObjs[i], node, true);
				}
			}
			fnLoadComplete();
		} else {
			fnLoadComplete();
		}
	}
	

	function buildTree() {
		if(AwayTreeHelper.writeRootNodes != null) {
			//create a new tree:
			tree = new YAHOO.widget.TreeView("AwayTreeContainer");		   
			//turn dynamic loading on for entire tree:
			tree.setDynamicLoad(loadNodeData,1);		   
			//get root node for tree:
			var root = tree.getRoot();
			AwayTreeHelper.writeRootNodes(root);		
			tree.draw();
		}
		//create another tree
		if(AwayTreeHelper.writeSubTree1Nodes != null) {
			//create a new tree:
			subTree = new YAHOO.widget.TreeView("AwayTreeSubContainer1");		   
			//turn dynamic loading on for entire tree:
			subTree.setDynamicLoad(loadNodeData1,1);		   
			//get root node for tree:
			var subRoot = subTree.getRoot();
			AwayTreeHelper.writeSubTree1Nodes(subRoot);		
			subTree.draw();
		}
	}

	return {
		init: function() {	            
            buildTree();
        }
	}
} ();

var AwayTreeHelper = 
{	
	secondaryLinks:new Array(),
	secondarylinkText:new Array(),
	writeRootNodes:null,
	writeSubTree1Nodes:null,		
	secondary1Links:new Array(),
	secondary1linkText:new Array()
}

function ispopUpBlockerEnabled()
{
	var browsertype=navigator.appName;
	if(!ispopUpBlockerCalled && browsertype !="Netscape"){
		ispopUpBlocked=IsPopupBlockerUserClick();
		ispopUpBlockerCalled=true;
	}
	return ispopUpBlocked;
}

function properYearFormat(stringDate){
	var today=new Date();
	var temp= new Array();
	temp = stringDate.split('/');
	var months = temp[0];
	var days = temp[1];
	var years = temp[2];
	if(years.length == 2){
		var	decade='';	
		if(years < today.getFullYear()%100){
			decade = Math.round(today.getFullYear()/100)+1;
		}else{
			decade = Math.round(today.getFullYear()/100);
		}
		years=decade+years;
	}
    stringDate=months+'/'+days+'/'+years;
    return stringDate;
}

function selectProviders(flightProviders,curentProvider){
	for (i = 0; i < document.getElementsByName(flightProviders).length; i++){		
		document.getElementsByName(flightProviders)[i].checked = false ;		
	}
	document.getElementById(curentProvider).checked=true;	
}

function attrFilter(){
	window.open(document.getElementById('attrFilterMap').value,'_self');
}
