/* added for main page report this popup */
function showReportThisPopup(URL){
 	window.open(URL,"reportPopup","toolbar=0,location=0,directories=0,menubar=0,scrollbars=1,resizable=0,height=500,width=580");	
}



/* Function to find the X-Position of a object in the page*/
function findPosX(obj)
{
	var curleft = 0;
	if (obj.offsetParent)
	{
		while (obj.offsetParent)
		{
			curleft += obj.offsetLeft;
			obj = obj.offsetParent;
		}
	}
	else if (obj.x)
		curleft += obj.x;
	return curleft;
}

/* Function to find the Y-Position of a object in the page*/
function findPosY(obj)
{
	var curtop = 0;
	if (obj.offsetParent)
	{
		while (obj.offsetParent)
		{
			curtop += obj.offsetTop;
			obj = obj.offsetParent;
		}
	}
	else if (obj.y)
		curtop += obj.y;
	return curtop;
}

/* Function to create cookie */
function createCookie(name,value,days)
{
	if (days)
	{
		var date = new Date();
		date.setTime(date.getTime()+(days*24*60*60*1000));
		var expires = "; expires="+date.toGMTString();
	}
	else var expires = "";
	var ck = name+"="+value+expires+"; path=/";
	document.cookie = ck;
}

/* Function to read the set cookie */
function readCookie(name)
{
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');

	for(var i=0;i<ca.length;i++)
	{
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
	}
	return null;
}

/* Function to erase cookie */
function eraseCookie(name)
{
	createCookie(name,"",-1);
}

/* Function to remove the spaces on both the sides(left & right) */
function trimValue(str){
   return str.replace(/^\s*|\s*$/g,"");
}

/* Function to show the Div element using display property */
function divOn(id)
{
		if(document.getElementById(id) != null)
		{
				document.getElementById(id).style.display = 'block';
		}
}

/* Function to hide the Div element using display property */
function divOff(id)
{
		if(document.getElementById(id) != null)
		{
				document.getElementById(id).style.display = 'none';
		}
}

/* Function to show the Div element using visiblity property */
function divShow(id){
	if(document.getElementById(id) != null) {
		document.getElementById(id).style.visibility = 'visible';
	}
}

/* Function to hide the Div element using visiblity property */
function divHide(id){
	if(document.getElementById(id) != null) {
		document.getElementById(id).style.visibility = 'hidden';
	}
}

/* Function to append HTML inside a block level element*/
function appendHtmlInside(container, htmlString)
{
	document.getElementById(container).innerHTML = document.getElementById(container).innerHTML  + htmlString;
}

/* Function to replace HTML inside a block level element*/
function replaceHtmlInside(container, htmlString)
{
	document.getElementById(container).innerHTML = htmlString;
}

/* Function to find whether the field is empty or not */
function isEmpty(inputFieldVal) 
{
		if (trimValue(inputFieldVal) == "")
		{
			return true;
		}
		else 
		{
			return false;
		}
}

/* Function to find whether the field contains only alpha numeric characters or not */
function isAlphaNumeric(inputFieldVal) {
	var isinputValOk = trimValue(inputFieldVal).match(/^[a-zA-Z0-9]+$/);
	if (isinputValOk) {
		return true;
	} else {
		return false;
	}
}

/* Function to show the error messages */
function showError(){
    if (errors.length > 0){ alert(errors.join('\n')); errors.length=0; return false; }
    else{ return true; }
}


/* Function to find the browser */
function Browser()
{
	var browserName;

	is_mozilla   = (navigator.userAgent.toLowerCase().indexOf("firefox")!=-1)?1:0;
	is_ie5       = (navigator.appVersion.indexOf('MSIE 5')!=-1)?1:0;
	is_ie6       = (navigator.appVersion.indexOf('MSIE 6')!=-1)?1:0;
	is_ie7       = (navigator.appVersion.indexOf('MSIE 7')!=-1)?1:0;
	is_safari    = (navigator.userAgent.toLowerCase().indexOf("safari") != -1)?1:0;
	is_aol       = (navigator.userAgent.toLowerCase().indexOf("aol") != -1)?1:0;
	is_netscape  = (navigator.userAgent.toLowerCase().indexOf("netscape")!=-1)?1:0;

	if(is_mozilla) {
		browserName = "Mozilla";
	} else if(is_ie5) {
		browserName = "IE5";
	} else if(is_ie6) {
		browserName = "IE6";
	} else if(is_ie7) {
		browserName = "IE7";
	} else if(is_safari) {
		browserName = "Safari";
	} else if(is_aol) {
		browserName = "AOLExplorer";
	} else if(is_netscape) {
		browserName = "Netscape";
	}

	return browserName;
}

/* Function to disable a element or control in the form*/
function disableControl(id)
{
	if(document.getElementById(id))
		document.getElementById(id).disabled = true;
}

/* Function to enable a element or control in the form*/
function enableControl(id)
{
	if(document.getElementById(id))
	document.getElementById(id).disabled = false;
}


/* Function to compare two given dates(say dateone and datetwo) and 

	returns 1  if dateone is greater than datetwo,
	returns -1 if dateone is lesser than datetwo,
	return 0 if it is equal.
	
*/
function compareDates(dateone, datetwo) {
    oneA = dateone.split('/');
    twoA = datetwo.split('/');
    date1 = oneA[2]*10000 + oneA[0]*100 + oneA[1];
    date2 = twoA[2]*10000 + twoA[0]*100 + twoA[1];
    if (date1 > date2) {
        return 1;
    }
    else if (date1 < date2) {
        return -1;
    }
    return 0;
}



/**
 * updateCookieVal
 *
 * Description:
 *   takes all form element values and updates in cookie 
 *   for future purpose
 *
 * Functional Overview:
 *   1) takes form and cookiename as param
 *   2) gets all elements for the specified form and its values
 *   3) updates the specified cookie 
 *
 * Parameters:
 *   theForm, cookieName
 *
 * Examples:
 *   updateCookieVal(document.AirSearchForm, 'mycookie');
 */

function updateCookieVal(theForm, cookieName){
	els = theForm.elements;
	cookieVal = "";
	for(var ijk=0; ijk < els.length; ijk++){ 
			switch(els[ijk].type){
			case "select-one":
				cookieVal += els[ijk].id + '=' + els[ijk].selectedIndex + ":";
				break;
			case "text":
			case "hidden":
				cookieVal += els[ijk].id + '=' + els[ijk].value + ":";
				break;
			case "radio":
				if(els[ijk].checked == true)
					cookieVal += els[ijk].id + '=' + els[ijk].value + ":";
				break;
			case "checkbox":
				cookieVal += els[ijk].id + '=' + els[ijk].checked + ":";
				break;
			case "select-multiple":
				var MultiSelectedValues='';
				for(formMultiSelectIndex=0;formMultiSelectIndex<els[ijk].length;formMultiSelectIndex++)
				{
					if(els[ijk][formMultiSelectIndex].selected && els[ijk][formMultiSelectIndex].value != '')
					{
						MultiSelectedValues += els[ijk][formMultiSelectIndex].value + '|';
					}
				}
				cookieVal += els[ijk].id + '=' + MultiSelectedValues + ":";
			default:
				break;
		}	
	}
	createCookie(cookieName, cookieVal, 1); //Changed cookie expire days from 365 days to 1 day.
};


/**
 * updateFormDetails
 *
 * Description:
 *   reads values from specified cookie and updaes all form elements 
 *
 * Functional Overview:
 *   1) takes form and cookiename as param
 *   2) gets values from the specified cookie and updates form
 *
 * Parameters:
 *   formName, cookieName
 *
 * Examples:
 *   updateFormDetails('mainFrm', 'cookieName');
 */
 
function updateFormDetails(formName, cookieName,pg){
	var cookieVal = readCookie(cookieName);
	if(cookieVal != null & cookieVal != ''){ var valIndex = cookieVal.split(":"); }else{ return false;};
	for(var jkl=0; jkl < valIndex.length; jkl++){ 
		var elmNameValue = null;
		var elmId        = null;
		var elmValue     = null;
		var elmRef       = null;
		var elmType      = null;
		
		elmNameValue = valIndex[jkl].split('=');
		elmId        = elmNameValue[0];
		elmValue     = elmNameValue[1];
		elmRef       = (elmId != null) ? document.getElementById(elmId) : null;
		elmType      = (elmRef != null) ? elmRef.type : null;
		
		if(pg && (cookieName == 'flightLob' || cookieName == 'flightMain' || cookieName == 'vacationMain' || cookieName == 'vacationLob') && (elmId == 'flightType' || elmId == 'maxConnections' || elmId == 'children' || elmId == 'vachild1' || elmId == 'vanumOfRooms')){
			continue;
		}

		switch(elmType){
			case "select-one":
				elmValue = (elmValue != '' & elmValue != null & typeof elmValue != 'undefined') ? elmValue : 0;
				try{
					if(typeof elmRef[elmValue].selected != 'undefined')
						elmRef[elmValue].selected = true;
						elmRef.onchange();
				}catch(er){
					//alert(er)
					elmRef.onchange = function(){};
				}
				break;
			case "text":
			case "hidden":
				elmRef.value = (elmValue != '' & elmValue != null & typeof elmValue != 'undefined') ? elmValue : '';
				break;
			case "checkbox":
				elmRef.checked = (elmValue == 'true'  & elmValue != '' & elmValue != null & typeof elmValue != 'undefined') ? true : false;
				break;
			case "radio":
				elmRef.checked = true;
				break;
			case "select-multiple":
				elmValue     = (elmValue != '' & elmValue != null & typeof elmValue != 'undefined') ? elmValue : 0;
				if(elmValue) {
					elmValueArr  = elmValue.split("|");
					elmValLength = elmValueArr.length - 1;

					for(var j = 0; j < elmRef.length; j++) {
						elmRef[j].selected = false;

						for(var multiSelectIndex = 0; multiSelectIndex < elmValLength; multiSelectIndex++ ) {
							if( elmRef[j].value == elmValueArr[multiSelectIndex]) {
								elmRef[j].selected = true;
							}
						}

					}
				}
				try {
					elmRef.onblur();
				} catch (e) { 
					elmRef.onblur = function(){};
				}

				break;

			default:
				break;
		}
		
		if(cookieName == 'flightLob' && elmId == 'tripType' && elmValue == 'true' && document.getElementById('flthtl')){
			document.getElementById('flthtl').checked = true;
		}
		else if(cookieName == 'flightMain' && elmId == 'flthtl' && document.getElementById('flthtl')){
			document.getElementById('flthtl').checked = true;
		}
		if(cookieName == 'flightMainKayak' && elmId == 'ft' && elmValue == 'ow' && document.getElementById('ow')){
			document.getElementById('ow').checked = true;
		}
		
	}
}


function initBodyEvent(){
	if(typeof miniCalendar != 'undefined'){
		miniCalendar.handleDocumentClick(this);
	}
}
function lbtnClick(obj){
	window.location = obj.childNodes[0].href;
	}


/*

Function that will return the date which is number of days(numOfDays) advance from the given specific date(dtVal)

for ex, passing dtVal as - 10/26/2007 and numOfDays - 30, the function will return the date(11/26/2007) which is 30 days advance from the given specific date

*/

function getSpecificDate(dtVal, numOfDays) {

	var dtObj             = new Date(dtVal);
	var advDtTimeStampVal = dtObj.setDate(dtObj.getDate() + numOfDays);
	var advDtObj          = new Date(advDtTimeStampVal);
	var advanceDate       = prefixZero(parseInt(advDtObj.getMonth()+1))+"/"+prefixZero(advDtObj.getDate())+"/"+advDtObj.getFullYear();

	return advanceDate;
}

//PREFIXES ZERO TO A SINGLE CHAR STRING
function prefixZero(num){
	if(num.toString().length<2)
		return '0'+num;
	else
		return num;
}


/* Function to switch the className for an object - used in validation functions */
function cssSwitch()
{
  var fnArguments = cssSwitch.arguments;
  for(var i=0;i < fnArguments.length;i++)
  {
    param = fnArguments[i].split("&");
    elemId = param[0];
    cssClass = param[1];
   	elemRef = document.getElementById(elemId);
    elemRef.className = cssClass;
  }
}


/*
 * booking widget trakcing code 
 * 
 */


function cityFocus(textbox, searchtype, idfield) {
	/*
	var browserIE = Browser();
	if(browserIE == 'IE6' || browserIE == 'IE7' || browserIE == 'IE5'){
		//no initSmartBox
		//bug 398317, 399308 	
		
	}else{
		initSmartBox(textbox, idfield, searchtype, 20, 175);
	}
	*/
	initSmartBox(textbox, idfield, searchtype, 20, 175);
}


/*
 * function: removeCityCode 
 * removes city code from smarty value
 * accepts multiple arguments
 * 
 * Usage: removeCityCode('elementId1','elementId2', n);
 * 
 */
function removeCityCode()
{	
	var fnArguments = removeCityCode.arguments;
	for(var i=0;i < fnArguments.length;i++)
	{
		var param = fnArguments[i];
		var elemId = param;
		var elemRef = document.getElementById(elemId);
	
	    //remove cityCode for ex: /12345
	    var cityCodePattern = new RegExp('\/.*','gi');
	    var elemValue = elemRef.value.replace(cityCodePattern,'');
		
		//remove if only city code is integer
		var cityIntCode = new RegExp('[0-9]','gi');
		var elemValueInt = elemValue.replace(cityIntCode, '');

	    elemRef.value = elemValueInt;
	}
}

/*
 * clear both airport code value 
 * if one of the airport code is null
 */
function checkValidCityCode(from, to){
	var fromElem = document.getElementById(from);
	var toElem = document.getElementById(to);
	
	if(fromElem.value == '' || toElem.value == ''){
		fromElem.value = '';
		toElem.value = '';
	}
}

 function done(sponsorData) {
 	//If there is at least one results then create some sponsored links
 	if(sponsorData.length!=0) {
 		//Build up a string of HTML to display the results
 		s="";
 		s+="<div><h5><a href='http://about-search.aol.com/index.html#sl' target='_blank' title='Sponsored Links'>Sponsored Links</a></h5></div>"
 		   +"<ul>";
 
 		//For each sponsored link in the results array, add a list item to the unordered list
 		for (i=0;i<sponsorData.length;i++) {
 			if(i < 4){
 				s+="<li>"
 				+"<h2><a target='_blank' href='"+sponsorData[i].redirect_url+"'>"+sponsorData[i].title
                +"</a></h2>"
 				+"<h4>"+sponsorData[i].d1+" "+sponsorData[i].d2+"</h4>"
 				+"<h3><a target='_blank' href='"+sponsorData[i].redirect_url+"'>"+sponsorData[i].url+"</a></h3>"
 				+"</li>";
 			}
 			
 		}
 		s+="</ul>";
 		
 	} else {
 		//we got no results so do some default behavior or even nothing at all.
 		s="";
 	}
 	if(s != ""){
 		document.getElementById('travelSponsoredLinks').innerHTML = s;
 		document.getElementById('travelSponsoredLinks').style.display = "block";
 	}else{
 		document.getElementById('travelSponsoredLinks').style.display = "none";
 	}
 	//Stuff the string of HTML into the DIV we created for it
 }



/* JS function for header search box */
    /********************************************************
                    Calendar Functions
    ********************************************************/

g_Calendar = new Object();
g_Calendar.showCal = function(){};
g_Calendar.hide = function(){};
var browserType = navigator.userAgent;
var justClicked = false;
var miniCalendar;
var m_Calendar;
if(typeof staticDomain == 'undefined')
	var staticDomain = '';

 
function MiniCalendar(){
                                  
        divOffCal                  = this.divOffCal                 
        divOnCal                   = this.divOnCal                  
        errorMessage            = this.errorMessage                   

        this.serverDate = serverDate;
        this.initCalendars = initCalendars;
        this.Calendar  = Calendar;
        this.handleDocumentClick = handleDocumentClick;




    var g_startDay = 0// 0=sunday, 1=monday
    
    var calHeight = 115;

    // sniffer
    function Browser(){
        this.moz = (!document.all)?1:0;
        this.ie5 = (document.all)?1:0;
        this.ie6strict = (document.documentElement && document.documentElement.clientHeight)?1:0;
        this.safari = (navigator.userAgent.toLowerCase().indexOf("safari") != -1)?1:0;
    }
    var browser = new Browser();


    var g_Calendar;
    var g_target;
	var g_cTarget;
	var g_box;

    function Calendar(){
        g_Calendar = this;
        var tmpLayer = document.getElementById('container');
        this.containerLayer = tmpLayer;
    }

    Calendar.prototype.showCal = function(event, target, cTarget, box){
        if (this.containerLayer!=null) {
        if (this.containerLayer.style.visibility=='visible'){
            document.getElementById('ifrm_cal').style.display = 'none'
            document.getElementById('bg_ifrm').style.display = 'none'
            this.containerLayer.style.visibility='hidden';
        }
          var obj = document.getElementById(target);
	if(browser.ie5){
		var event = window.event;
		var winBottom = (browser.ie6strict) ? (document.documentElement.clientHeight + document.documentElement.scrollTop) : (document.body.clientHeight + document.body.scrollTop);
		var obj = document.getElementById(target);
		x = 0;
		//WORKAROUND FOR GETTING THE RELATIVE X POSITION WRT BODY ELEMENT
	    while(obj.tagName != 'BODY'){
		x+=obj.offsetLeft;
		obj=obj.offsetParent;
	    }
		y = 0;
		var obj = document.getElementById(target);

		y = findPosY(obj) + obj.offsetHeight + 1;

		this.containerLayer.style.left = document.getElementById('bg_ifrm').style.left = x;

		var calBottom = y + calHeight;
		var overTop = y - calHeight - 15;

		this.containerLayer.style.top = document.getElementById('bg_ifrm').style.top = (calBottom < winBottom) ? y : overTop;
	}
	if(browser.moz){
		document.getElementById('bg_ifrm').style.left = (findPosX(obj))+'px';
     	   	this.containerLayer.style.left = (findPosX(obj))+'px';
        	document.getElementById('bg_ifrm').style.top = findPosY(obj)+20+'px';
        	this.containerLayer.style.top = findPosY(obj)+20+'px';
    	}	

        this.target = target;
        g_target = this.target;
		
		this.cTarget = cTarget;
		g_cTarget = this.cTarget;

		this.box = box;
		g_box = this.box;

        getCal();
        this.containerLayer.style.visibility='visible';
        document.getElementById('ifrm_cal').style.display = 'block'
        document.getElementById('bg_ifrm').style.display = 'block'
        justClicked = true;
        doTimeout('justClicked');
        }
    }

    function findPosX(obj){
        var curleft=0;
        while (obj.offsetParent){
            curleft+=obj.offsetLeft;
            obj=obj.offsetParent;
        }
        curleft+=obj.offsetLeft;
        return curleft;
    }

    function findPosY(obj){
        var curtop = 0;
        while(obj.offsetParent){
            curtop += obj.offsetTop;
            obj=obj.offsetParent;
        }
        curtop+=obj.offsetTop;
        return curtop;
    }

    function getTarget(){
        return g_Calendar.target;
    }

    Calendar.prototype.hide = function(){
        if (this.containerLayer!=null) {
            this.containerLayer.style.visibility='hidden';
            document.getElementById('ifrm_cal').style.display = 'none'
            document.getElementById('bg_ifrm').style.display = 'none'
     //       divOffCal('bb_bkeyword');
     //       divOnCal('bb_bkeyword');
        }
    }

    function initCalendars(calLists){
       for(c in calLists){
            for(var x=0;x<calLists[c].length;x++){
				if(document.getElementById(c))
					document.getElementById(c). setAttribute('autocomplete', 'off');
				if(calLists[c][x] == 'mdy' && document.getElementById(c))
						document.getElementById(c).value = 'mm/dd/yyyy';
				else
					buildDate(parseInt(calLists[c][x],10),c);
            }
        }
    }


    function buildDate(num,t){
        var adjDate = new Date(serverDate);
        adjDate.setDate(adjDate.getDate()+num);

        var d = ((adjDate.getMonth()+1)<10?'0'+(adjDate.getMonth()+1):(adjDate.getMonth()+1)) + '/' + (adjDate.getDate()<10?'0'+adjDate.getDate():adjDate.getDate()) + '/' + adjDate.getFullYear();
        if(document.getElementById(t))
            document.getElementById(t).value = d;
        
    }


            
            /****************************
                from calendat.html
             ****************************/

    var aDate=new Date();
    var aYear=aDate.getYear();
    if (aYear<1000) aYear+=1900;
    var aMonth=aDate.getMonth()+1;
    if (aMonth<10) aMonth="0"+aMonth;
    var aDay=aDate.getDate();
    if (aDay<10) aDay="0"+aDay;

    var serverDate = aMonth+"/"+aDay+"/"+aYear;
    var d = new Date(serverDate);

    if (navigator.userAgent.toLowerCase().indexOf("safari") != -1) { document.writeln("<style></style>"); }     


    function getCal(){
    this.showCal = showCal;
    this.pushDate = pushDate;
    //this.splitUserDate = splitUserDate;

            function getTarget() {
         //       query = '' + window.location;
          //      query = query.substring((query.indexOf('=')) + 1);
                return g_target;
            }

			function getcTarget(){
				return g_cTarget;
			}

			function getBox(){
				return g_box;
			}

            function Calendar(m) {
                this.date = new Date(serverDate);
                this.date.setDate(1);
                /* worx Safari fix */
                if(m<0) {
                    var subYears = m/12;
                    if(m%12==0)--subYears;
                    m = m%12+12;
                    this.date.setFullYear(this.date.getFullYear()+subYears);
                }
                else if(m>11) {
                    var addYears = m/12;
                    m = m%12;
                    this.date.setFullYear(this.date.getFullYear()+addYears);
                }
                /* worx Safari fix end */
                this.date.setMonth(m);
                if(arguments.length == 2) {
                    this.date.setYear(arguments[1])
                    inc = this.date.getMonth();
                }
                this.month = m%12;
                this.months = new Array("January","February","March","April","May","June","July","August","September","October","November","December");
                if(this.date.getYear()%400==0 || (this.date.getYear()%4==0 && this.date.getYear()%100!=0))
                    this.daysInMonth = new Array(31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
                else
                    this.daysInMonth = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
            }

            Calendar.prototype.getFirstDay = function() {
                this.date.setDate(1);
                return this.date.getDay();
            }


            Calendar.prototype.fillCalendar = function() {
                var extraWeek = 7;
				var selDate = null;
				var selcDate = null;
				var badSel = false;
				var styDate ="";

				var tg = document.getElementById(target).value;
				var ctg = document.getElementById(cTarget).value;

				if(tg != 'mm/dd/yyyy' && tg != "" && checkUserDate(splitUserDate(target)))
					selDate = new Date(tg);
				
				if(ctg != 'mm/dd/yyyy' && ctg != "" && checkUserDate(splitUserDate(cTarget)))
					selcDate = new Date(ctg);

				if(box == 2){
					var temp = selDate;
					selDate = selcDate;
					selcDate = temp;
				}
				if(selDate > selcDate){
					badSel = true;
					var temp = selDate;
					selDate = selcDate;
					selcDate = temp;
				}
				if(selDate == null){
					selDate = selcDate;
				}
				if(selcDate != null && selcDate.getMonth() != this.month){
					styDate = "";
				}
				if(selcDate != null && selDate.getMonth() != selcDate.getMonth() && selcDate.getMonth() == this.month){
					styDate = "style='background:#184A7B;color:#FFF'";
				}

                var code = '<div class="calendar"><div class="cal_top"><a href="javascript:;" onclick="showCal(100);event.cancelBubble = true;return false;"><img src="'+staticDomain+'/img/cal-larrow.gif" width="5" height="6" alt="Previous Month" title="Previous Month" /></a><a href="javascript:;" onclick="showCal(200);event.cancelBubble = true;return false;"><img src="'+staticDomain+'/img/cal-rarrow.gif" width="5" height="6" alt="Next Month" title="Next Month" /></a><p>'+this.months[this.date.getMonth()]+' '+this.date.getFullYear()+'</p></div>';
                code += '<div class="header"><p class="wend">Su</p><p>Mo</p><p>Tu</p><p>We</p><p>Th</p><p>Fr</p><p class="wend">Sa</p></div><div class="cal_body">';
                for(var i=0; i < (35+extraWeek); ++i) {
                    if(i < this.getFirstDay() || i >= this.daysInMonth[this.month]+this.getFirstDay()){
                        if(i==0 || i==7 || i==14 || i==21 || i==28 || i==35 || i==42 || i==6 || i==13 || i==20 || i==27 || i==34 || i==41){
                            code += '<p class="wend">&nbsp;</p>';
                        } else{
                            code += '<p>&nbsp;</p>';
                        }
                    }
                    else{
                        var d = ((this.date.getMonth()+1)<10?'0'+(this.date.getMonth()+1):(this.date.getMonth()+1))+'/'+((i-this.getFirstDay()+1)<10?'0'+(i-this.getFirstDay()+1):(i-this.getFirstDay()+1))+'/'+this.date.getFullYear();
                        var compare = new Date(serverDate);
                        compare.setMonth( d.split('/')[0]-1);
                        compare.setDate( d.split('/')[1]);
                        compare.setFullYear( d.split('/')[2]);
                        if(typeof pastDates == 'undefined'){
                            if(i==0 || i==7 || i==14 || i==21 || i==28 || i==35 || i==42 || i==6 || i==13 || i==20 || i==27 || i==34 || i==41){
                                if((compare < startDate) || (compare >= endDate)){
                                    code += '<p class="wend out">'+(i-this.getFirstDay()+1)+'</p>';
                                } else{

                                    if(selDate != null && selcDate != null && compare > selDate && compare < selcDate){
										styDate = "style='background:#4B84BD;color:#FFF'";
									}else if(selDate != null && selDate.toString() == compare.toString() || selcDate != null && selcDate.toString() == compare.toString()){
										styDate = "style='background:#184A7B;color:#FFF'";
									}else if(badSel){
										styDate = styDate.replace("#184A7B","#FF5D59");
									}else{
										styDate = styDate.replace("#184A7B","#4B84BD");
									}
                                    code += '<p><a href="#" onclick="pushDate(\''+d+'\');return false;" class="wend" '+styDate+'>'+(i-this.getFirstDay()+1)+'</a></p>';
									if(selcDate == null || selcDate.toString() == compare.toString()){
										styDate = "";
									}
								}
                            } else{
                                if((compare < startDate) || (compare >= endDate)){
                                    code += '<p class="out">'+(i-this.getFirstDay()+1)+'</p>';
                                } else{
                                    if(selDate != null && selcDate != null && compare > selDate && compare < selcDate){
										styDate = "style='background:#4B84BD;color:#FFF'";
									}else if(selDate != null && selDate.toString() == compare.toString() || selcDate != null && selcDate.toString() == compare.toString()){
										styDate = "style='background:#184A7B;color:#FFF'";
									}else if(badSel){
										styDate = styDate.replace("#184A7B","#FF5D59");
									}else{
										styDate = styDate.replace("#184A7B","#4B84BD");
									}
                                    code += '<p><a href="#" onclick="pushDate(\''+d+'\');return false;" '+styDate+'>'+(i-this.getFirstDay()+1)+'</a></p>';
									if(selcDate == null || selcDate.toString() == compare.toString()){
										styDate = "";
									}
                                }
                            }
                        } else{
                            if(i==0 || i==7 || i==14 || i==21 || i==28 || i==35 || i==42 || i==6 || i==13 || i==20 || i==27 || i==34 || i==41){
                                if((compare < startDate)){
                                    code += '<p><a href="#" onclick="pushDate(\''+d+'\');return false;" class="wend" style="color:blue">'+(i-this.getFirstDay()+1)+'</a></p>';
                                } else{
                                    code += '<p class="wend out">'+(i-this.getFirstDay()+1)+'</p>';
                                }
                            } else{
                                if((compare < startDate)){
                                    code += '<p><a href="#" onclick="pushDate(\''+d+'\');return false;">'+(i-this.getFirstDay()+1)+'</a></p>';                                
                                } else{
                                    code += '<p class="out">'+(i-this.getFirstDay()+1)+'</p>';
                                }
                            }
                        }
                    }
                }
                code += '</div></div>';
                return code;
            }
            

            Calendar.prototype.createCalendar = function() {
         //       var c_area = document.getElementById('containers');
         //       c_area.innerHTML = this.fillCalendar();
                  document.getElementById('container').innerHTML = ""
                  document.getElementById('container').innerHTML = this.fillCalendar();
            }

            function pushDate(dateStr){
                var topFrame = document;
                var form = topFrame.forms['frm'];
                target = getTarget();

                topFrame.getElementById(target).value=dateStr;
                //topFrame.getElementById(target).onclick();
                document.getElementById('ifrm_cal').style.display = 'none'
                document.getElementById('bg_ifrm').style.display = 'none'
                $j("#"+target).trigger('pushed');
            }

            function splitUserDate(incomingElement, rplc){
                var usersDate = document.getElementById(incomingElement);
				var userDateRtn = usersDate.value;
				if(typeof rplc != 'undefined' && !checkUserDate(splitUserDate(incomingElement))){
					var crDate = new Date(serverDate);
					userDateRtn = (crDate.getMonth()+1)+"/"+crDate.getDate()+"/"+crDate.getYear();
				}
                var dateArray = (userDateRtn).split("/");
		

                return dateArray;
            }

            function showCal(m){
				if(browserType.indexOf("Firefox/3") != -1){
					justClicked = true;
		
				}            
				
            	if(m == 100)
                    m = --inc;
                else if(m == 200)
                    m = ++inc;
				var byear = splitUserDate(g_target);
				if(!isNaN(byear[2]) && byear[2].length == 4){
					m = (byear[2]*1-new Date(serverDate).getFullYear())*12+m;
				}
                if(arguments.length == 2) {
                    var cal = new Calendar(arguments[0],arguments[1]);
               }else{
					var cal = new Calendar(m); 
				}
                cal.createCalendar();
            }
           
            function checkUserDate(incomingDate){
                var month = parseInt(incomingDate[0], 10);
                var day = parseInt(incomingDate[1], 10);
                var year = parseInt(incomingDate[2], 10);
				if(isNaN(month) || isNaN(day) || isNaN(year)){
					//alert('Please enter valid date');
					return 0;
				}
                var months = new Array("January","February","March","April","May","June","July","August","September","October","November","December");
                if(year%400==0 || (year%4==0 && year%100!=0))
                    var daysInMonth = new Array(31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
                else
                    var daysInMonth = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
                if(month < 1 || month > 12){
                    //alert('Please enter a valid month.');
					//Commented to stop alert looping
                   // showCal(inc, date.getFullYear());   //Defaults to serverDate
                    return 0;
                }
                if(day < 1 || day > daysInMonth[month-1]){
                    //alert('That is not a valid number of days.');
					//Commented to stop alert looping
                    //showCal(inc, date.getFullYear());   //Defaults to serverDate
                    return 0;
                }
                return 1;
            }
                
            function isLeap(y) {
                return ( (y.getYear()%400 == 0 || y.getYear()%4 == 0 && y.getYear()%100 != 0)?1:0);
            }
            function daysInMonth(mydate) {
                if (isLeap(mydate)) days = new Array(31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
                else days = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
                return days[mydate.getMonth()];	
            }

            var date = new Date(serverDate);
            var inc = date.getMonth();
            var target = getTarget();
			var cTarget = getcTarget();
			var box = getBox();
            var target2;

            //NOT ALWAYS SETTING CORRECTLY!!
            var startDate = new Date(serverDate);
            var endDate = new Date(serverDate);

            var i = 331 - (daysInMonth(startDate) - startDate.getDate());

            while ( i > daysInMonth(endDate) ) {
                i-=daysInMonth(endDate);
                if(endDate.getMonth() < 11) { endDate.setMonth(endDate.getMonth()+1); }
                else {
                    endDate.setMonth(1);
                    endDate.setFullYear(endDate.getFullYear()+1);
                }
            }

            endDate.setDate(i);

            //Code for autopagination of months for the calendar
            // Calendar will open based on user selected date.
			if(box == 2 && checkUserDate(splitUserDate(cTarget)) && !checkUserDate(splitUserDate(target)) || splitUserDate(cTarget)[0] == splitUserDate(target)[0]){
				var usersDateArray = splitUserDate(cTarget, true);
			}else {
				var usersDateArray = splitUserDate(target, true);
			}
            if ((usersDateArray.length > 1) && (usersDateArray[0].length<=2 && usersDateArray[1].length<=2 && usersDateArray[2].length==4) && !isNaN(usersDateArray[2])){
                if(checkUserDate(usersDateArray)){
                    showCal(usersDateArray[0]-1,usersDateArray[2]);	
                }
            }
            else{
                //alert('Please enter date in mm/dd/yyyy format.');
                showCal(inc, date.getFullYear());   //Defaults to serverDate
            }
    }

        /*
        ALL THE CLICKS INSIDE THE DIV WITH CLASS="bm_wraper" ARE HANDLED BY THIS FUNCTION
        WHEN "BLURPOPUP" IS SET THE ERROR MESSAGE PRESENT IN 'ERRORS' VARIABLE IS SHOWN
        WHEN USER CLICKS OUTSIDE THE CALENDAR THEN IT IS HIDDEN
        */

    function handleDocumentClick(e){
 /*       if (blurpopup){
            if (!e) {e = window.event;}
            if (e.target && e.target.type) {var t = e.target;}
            else {var t = e.srcElement;}
            if (t && !t.type)t = t.parentNode;
            if(!justClicked && (!t || t.type != 'submit'))errorMessage();
            blurpopup = 0;
            errors = new Array();
        }

 */     
 		doTimeout('justClicked');     
        if(justClicked == false){
            if (document.all) e = window.event;

            if(e != null && g_Calendar && g_Calendar.containerLayer){
                var bTest = (e.pageX > parseInt(g_Calendar.containerLayer.style.left,10) && e.pageX <  (parseInt(g_Calendar.containerLayer.style.left,10)+125) && e.pageY < (parseInt(g_Calendar.containerLayer.style.top,10)+125) && e.pageY > parseInt(g_Calendar.containerLayer.style.top,10));
                if(!bTest)
                    g_Calendar.hide();
            }

        }
    }

    function doTimeout(name){
        window.setTimeout(name + '= false',100);
        return;
    }
}
function divOffCal(id)
{
if(document.getElementById(id) != null)
{
document.getElementById(id).style.display = 'none';
}
}

function divOnCal(id)
{
if(document.getElementById(id) != null)
{
document.getElementById(id).style.display = 'inline';
}
}

var aDate=new Date();
var aYear=aDate.getYear();
if (aYear<1000) aYear+=1900;
var aMonth=aDate.getMonth()+1;
if (aMonth<10) aMonth="0"+aMonth;
var aDay=aDate.getDate();
if (aDay<10) aDay="0"+aDay;

var serverDate = aMonth+"/"+aDay+"/"+aYear;


function validateBooking(){
	if(!validDate(document.bookingForm.checkIn,'cin')){
		errorMsg();
        errors = new Array();
		return false;
	}
	var chkIn = document.bookingForm.checkIn.value;

	if(!validDate(document.bookingForm.checkOut,'cout')){
		errorMsg();
        errors = new Array();
		return false;
	}
	var chkOut = document.bookingForm.checkOut.value;

	if(convertDate(chkIn,'us','js') > convertDate(chkOut,'us','js')){ 
		errors = errors.concat('Check-out date can not be earlier than check-in date.');
		errorMsg();
        errors = new Array();
		return false;
	}else if(chkIn == chkOut){
        errors = errors.concat('Check-out date must be different from the Check-in date');
		errorMsg();
        errors = new Array();
		return false;
	}

	document.bookingForm.dateLeavingMonth.value = chkIn.split("/")[0];
	document.bookingForm.dateLeavingDay.value = chkIn.split("/")[1];
	document.bookingForm.dateReturningMonth.value = chkOut.split("/")[0];
	document.bookingForm.dateReturningDay.value = chkOut.split("/")[1];
	return true;
}


//ACTUAL DATE VALIDATION
function validDate(d,which)
{
	var val = d.value;
	var valid = 0;
	var wdate = '';
    if(which == "depart"){wdate='depart';}
	else if(which == "return"){wdate='return';}
	else if(which == "cin"){wdate='check-in';}
	else if(which == "cout"){wdate='check-out';}
	else if(which == "pickup"){wdate='pick-up';}
	else if(which == "dropoff"){wdate='drop-off';}	
	if(val == '')
	{
		if(wdate != '')
			errors = errors.concat('Please enter your '+wdate+' date.');
		else
			errors = errors.concat('Enter your date information.');		
		return false;
	}
	else
	{
		if(val.split('/').length == 3)
		{
	//THIS WILL MAKE DATES LIKE '5/6/06' VALID. AND IT WILL BE CHANGED TO '05/06/2006'
		var valsp = val.split('/');
		var month = valsp[0];

		if (month.length == 1)
		{
			month = "0" + month;
		}
		var day = valsp[1];
		if (day.length == 1)
		{
			day = "0" + day;
		}
		var year = valsp[2];
		if (year.length == 2)
		{
			year = "20" + year;
		}
		val =  month + '/' + day + '/' + year;
		d.value = val;
		}
		if(val.search(/^\d{2}\/\d{2}\/\d{4}$/) != -1)
		{
			var vFmt = null;
			vFmt = val.search(/^\d{2}\/\d{2}\/\d{4}$/);

			val = val.substr(vFmt,10);
			if( ((val.split('/')[0]<=12) && (val.split('/')[0]>=1)) && ((val.split('/')[1]<=31) && (val.split('/')[1]>=1)) )
			{
				if(!sensibleDate(val))
				{
					return false;
				}
				if(!validRange(val,which))
				{
					return false;
				}
			}
			else
			{
				if(wdate != '')
					errors = errors.concat('You have entered a non-existent date for '+wdate+'.\nPlease re-enter the date.');
				else
					errors = errors.concat('You have entered a non-existent date.\nPlease re-enter the date.');			
				return false;
			}
		}
		else
		{
			if(wdate != '')
				errors = errors.concat('Invalid Date Format\nPlease enter the '+wdate+' date in the format:\nmm/dd/yyyy');
			else
				errors = errors.concat('Invalid Date Format\nPlease enter the date in the format:\nmm/dd/yyyy');
			return false;
		}
	}
	return true;
}

//CHECKS IF THE INDATE AND OUTDATE ARE WITH IN THE VALID RANGE
var errors = new Array();

function validRange(d,which)
{
	// TODAY (00:00:00)
	var t = new Date(serverDate);
	today = zeroTime(t);

	// MAX: TODAY + 365 Days (00:00:00)
	var m = new Date(serverDate);
	m = zeroTime(m);

	if (navigator.userAgent.toLowerCase().indexOf("safari") == -1)
	{ //WORKAROUND FOR APPARENT SAFARI JS DATES BUG
		m.setDate(m.getDate()+365);
	}
	else
	{
		for(var i = 0; i<365; i+=5)
		{
			m.setDate(m.getDate()+5);
		}
	}

	// SUBMAX: MAX - 1 Day (00:00:00)
	var s = new Date(serverDate);
	s.setTime(m.getTime());
	s.setDate(s.getDate()-1);


	var cin = m;
	var cout = new Date(serverDate);
	cout.setTime(m.getTime());
	cout.setDate(cout.getDate()+1);

	d = convertDate(d,'us','js');

    switch(which){
        case 'cin':
            if(d > s){
                errors = errors.concat('Check-in date you entered is too far in advance to show availability.');
                return false;
            } else if (d < t){
                errors = errors.concat('Check-in date you entered has already passed.');
                return false;
            }
            break;
        case 'pickup':
            if(d > s){
        
                errors = errors.concat('Pick-up date you entered is too far in advance to show availability.');
                return false;
            } else if (d < t){
                errors = errors.concat('Pick-up date you entered has already passed.');
                return false;
            }
            break;
        case 'dropoff':
            if(d > m){
                errors = errors.concat('Drop-off date you entered is too far in advance to show availability.');
                return false;
            } else if (d < t){
                errors = errors.concat('Drop-off date you entered has already passed.');
                return false;
            }
            break;
        case 'depart':
            if(d > s){
            errors = errors.concat('Departure date you entered is too far in advance to show availability.');
                return false;
            } else if (d < t){
                errors = errors.concat('Departure date you entered has already passed.');
                return false;
            }
            break;
        case 'return':
            if(d > m){
                errors = errors.concat('Return date you entered is too far in advance to show availability.');
                return false;
            } else if (d < t){
                errors = errors.concat('Return date you entered has already passed.');
                return false;
            }
            break;
        default:
            if(d > m){
                errors = errors.concat('Check-out date you entered is too far in advance to show availability.');
                return false;
            } else if (d < t){
                errors = errors.concat('Check-out date you entered has already passed.');
                return false;
            }
            break;
    }
    	return true;
}

function sensibleDate(d)
{
	var newD = new Date(d);
	if(newD.getMonth()+1 != parseInt(d.split('/')[0],10))
	{
		errors = errors.concat('You have entered a non-existent date.\nPlease re-enter the date.');
		return false;
	}
	return true;
}

function errorMsg()
{
	if (errors.length > 0)
	{
		alert(errors.join('\n')); errors.length=0;
		return false;
	}
	else
	{
		return true;
	}
}

function zeroTime(d){
    d.setHours(0);
    d.setMinutes(0);
    d.setSeconds(0);
    d.setMilliseconds(0);
    return d;
}

function convertDate(d,from,to) {
    var date1 = null;
    var date2 = null;
    switch(from){
        case 'int':
            d = d.toString();
            date1 = new Date(serverDate);
            date1.setFullYear(parseInt(d.substr(0,4)));
            date1.setMonth(parseInt(d.substr(4,2),10)-1);
            date1.setDate(parseInt(d.substr(6,2),10));
            date1 = zeroTime(date1);
            break;
        case 'us':
            d = d.toString();
        date1 = new Date(d);
            break;
        case 'js':
            date1 = d;
            break;
        default:
            date1 = d;
            break;
    }
    switch(to){
        case 'js':
            return date1;
            break;
        case 'int':
            date2 = date1.getFullYear()+''+( (date1.getMonth()+1 < 10) ? '0'+(date1.getMonth()+1):(date1.getMonth()+1))+''+(date1.getDate()<10?'0'+date1.getDate():date1.getDate());
            return date2;
            break;
        case 'us':
            date2 = ( (date1.getMonth()+1 < 10) ? '0'+(date1.getMonth()+1):(date1.getMonth()+1))+'/'+(date1.getDate()<10?'0'+date1.getDate():date1.getDate())+'/'+date1.getFullYear();
            return date2;
            break;
        default:
            date2 = date1;
            return date2;
            break;
    }
}



/**************** Deals Pop Under ************************/
$j(document).ready(function(){
	/*$j('.ad300x250, #ad300x250').each(function(i){
		if($j(this).find('iframe').size() == 0)
			$j(this).css('display','none');
	});*/

	/* Vacations */
	$j("#VacationSearchForm").submit(function(){
		var isItValid = doSubmit();
		if(isItValid != false){
			popUnder('inc/shermansDealsPopunder.jsp?dealsCat=vacation&city='+escape($j('#vagoingTo').attr('value')));
		}
		else{
			return false;
		}
	});

	/* Cars */
	$j("#formCA").submit(function(){
		var isItValid = validate_setCookie_submit('carLob', 'validateCarLOB', this); 
		if(isItValid != false){
			popUnder('inc/shermansDealsPopunder.jsp?dealsCat=car&city='+escape($j('#pickupCity').attr('value')));
		}
		else{
			return false;
		}
	});
	
	/* Cruises */
	$j("#formCR").submit(function(){
		var isItValid = validate_setCookie_submit('cruiseLob', this);
		if(isItValid != false){
			popUnder('inc/shermansDealsPopunder.jsp?dealsCat=cruise');
		}
		else{
			return false;
		}
	});
});

function popUnder(url) {
	var browserName;
	is_aol = (navigator.userAgent.toLowerCase().indexOf("aol") != -1)?1:0;	
	if(is_aol) {
		browserName = "AOLExplorer";
	} 
	if (browserName != "AOLExplorer") {
		if(dealsPopUnder == "true"){
			if(typeof getCookieValue("rateFinderPopUnder")!="string"){
				if(getCookieValue("hot5")!="myString"){
					setCookie('hot5','myString')
					eval("page" + " = window.open(url, '" +  "', 'toolbar=0,scrollbars=0,location=0,statusbar=0,menubar=0,resizable=0,width=485,height=450').blur();");
					window.focus();
				}
			}
			return false;
		}
	}
}

function setCookie(cookieName,cookieValue) {
 	var today = new Date();
 	var expire = new Date();
	expire.setTime(today.getTime()+(24*60*60*1000));
	document.cookie = cookieName+"="+escape(cookieValue) + ";expires="+expire.toGMTString();
}
function returnCookieArray(){ 
	var c=document.cookie; 
	if(c) return c.split("; "); 
	return false; 
}
function getCookieValue(cookieName){ 
	var c=returnCookieArray(); 
	if (!c) return 0; 
	for(i=0;i<c.length;i++){ 
		tmp=c[i].split("="); 
		if(tmp[0]==cookieName){ 
			return tmp[1]; 
			break; 
		} 
	} 
	return 0; 
}
function clearForm() {
	$j('#destInterest').val('')
}
