// return an object for a string or an object (just in case) 
var agent=navigator.userAgent.toLowerCase(); 
var isIE=(agent.indexOf('msie') != -1) ? true : false; 
var isDOM=(typeof(document.getElementById) != 'undefined' && !isIE) ? true : false; 
var isNav4=(agent.indexOf('mozilla') != -1 && !isDOM && !isIE) ? true : false; 
// return an object for a string or an object (just in case) 
function getObject(daName){ 
        var daObj; 
        if(typeof(daName) == "string"){ 
                if(isDOM){ 
                        daObj = document.getElementById(daName); 
                }else if(isIE){ 
                        daObj = eval("document.all." + daName); 
                }else{ 
                        daObj = eval("document." + daName); 
                } 
        }else{ 
                daObj = daName; 
        } 
        return daObj; 
} 

function toggleQQ(name){
	var layers = new Array(3);
	layers['RoundTrip'] = getObject('RoundTrip'); 
	layers['OneWay'] = getObject('OneWay'); 
	layers['OpenJaw'] = getObject('OpenJaw'); 
	
	var tabs = new Array(3);
	tabs['RoundTrip'] = getObject('RoundTripTab'); 
	tabs['OneWay'] = getObject('OneWayTab'); 
	tabs['OpenJaw'] = getObject('OpenJawTab');
	
	var lastItem = 'OpenJaw'; 
	
	for (var key in layers) {
		if(key == name) {
			layers[key].style.display = 'block';
			tabs[key].className = 'Tab On';
		} else {
			layers[key].style.display = 'none';
			tabs[key].className = 'Tab';
		}
		if(key == lastItem) {
			tabs[key].className = tabs[key].className+' Last';
		}
	}
}

function initQQ(tripType) {
	window.onload = function() {
		toggleQQ(tripType);
		initAdvanced();
		document.forms[tripType+'Form'].elements['outbound[from]'].focus();
		updateCity(document.forms['RoundTripForm'].elements['outbound[from]'].value, 'RTOutboundFromCity');
		updateCity(document.forms['RoundTripForm'].elements['outbound[to]'].value, 'RTOutboundToCity');
		updateCity(document.forms['OneWayForm'].elements['outbound[from]'].value, 'OWOutboundFromCity');
		updateCity(document.forms['OneWayForm'].elements['outbound[to]'].value, 'OWOutboundToCity');
		updateCity(document.forms['OpenJawForm'].elements['outbound[from]'].value, 'OJOutboundFromCity');
		updateCity(document.forms['OpenJawForm'].elements['outbound[to]'].value, 'OJOutboundToCity');
		updateCity(document.forms['OpenJawForm'].elements['inbound[from]'].value, 'OJInboundFromCity');
		updateCity(document.forms['OpenJawForm'].elements['inbound[to]'].value, 'OJInboundToCity');
	}
}

function toggleAdvanced(id) {
	adv = getObject(id+'Content');
	advImg = getObject(id+'Button');
	advFlag = getObject(id+'Flag');
	if(adv.style.display == 'none') {
		adv.style.display = 'block';
		advImg.src = '/images/min.gif';
		advFlag.value = 1;
	} else {
		adv.style.display = 'none';
		advImg.src = '/images/max.gif';
		advFlag.value = 0;
	}
}

function initAdvanced() {
	advFlag = getObject('RTAdvancedFlag');
	//I can use RT because OW and OJ will always have the same value.
	if(advFlag.value == 1) {
		toggleAdvanced('RTAdvanced');
		toggleAdvanced('OWAdvanced');
		toggleAdvanced('OJAdvanced');
	}
}

var explainedPassengers = false;
function checkPassengers(formname, changed) {
	my_form = document.forms[formname];
	updated = false;
	
	if(changed == 'ADT' && my_form.elements['passengers[ADT]'].options.selectedIndex != 0) {
		if(my_form.elements['passengers[MIS]'] && my_form.elements['passengers[MIS]'].options.selectedIndex != 0) {
			my_form.elements['passengers[MIS]'].options.selectedIndex = 0;
			updated = true;
		}
	
		if(my_form.elements['passengers[STU]'] && my_form.elements['passengers[STU]'].options.selectedIndex != 0) {
			my_form.elements['passengers[STU]'].options.selectedIndex = 0;
			updated = true;
		}
	} else if(changed == 'CHD' && my_form.elements['passengers[CHD]'].options.selectedIndex != 0) {
		if(my_form.elements['passengers[STU]'] && my_form.elements['passengers[STU]'].options.selectedIndex != 0) {
			my_form.elements['passengers[STU]'].options.selectedIndex = 0;
			updated = true;
		}
	} else if(changed == 'STU' && my_form.elements['passengers[STU]'] && my_form.elements['passengers[STU]'].options.selectedIndex != 0) {
		if(my_form.elements['passengers[MIS]'] && my_form.elements['passengers[MIS]'].options.selectedIndex != 0) {
			my_form.elements['passengers[MIS]'].options.selectedIndex = 0;
			updated = true;
		}
		if(my_form.elements['passengers[ADT]'].options.selectedIndex != 0) {
			my_form.elements['passengers[ADT]'].options.selectedIndex = 0;
			updated = true;
		}
		if(my_form.elements['passengers[CHD]'].options.selectedIndex != 0) {
			my_form.elements['passengers[CHD]'].options.selectedIndex = 0;
			updated = true;
		}
	} else if(changed == 'MIS' && my_form.elements['passengers[MIS]'] && my_form.elements['passengers[MIS]'].options.selectedIndex != 0) {
		if(my_form.elements['passengers[STU]'] && my_form.elements['passengers[STU]'].options.selectedIndex != 0) {
			my_form.elements['passengers[STU]'].options.selectedIndex = 0;
			updated = true;
		}
		if(my_form.elements['passengers[ADT]'].options.selectedIndex != 0) {
			my_form.elements['passengers[ADT]'].options.selectedIndex = 0;
			updated = true;
		}
	}
	
	if(updated && !explainedPassengers) {
		alert('Your passenger values have been changed for you to match a valid passenger combination.\nValid passenger combinations are as follows:\n\n- only Adults\n- Adults & Children\n- only Students\n- only Humanitarian\n- Humanitarian and Children\n\nThis message will only be displayed once.');
		explainedPassengers = true;
	}
}

function updateCity(airport, id) {
	if(airport != '') {
		var http = getHTTPObject();
		http.open("GET", "/get_city.php?airport="+airport, false);
		http.send(null);
		getObject(id).innerHTML = http.responseText;
	}
 }
 
function getHTTPObject() {
	var xmlhttp = false;
	if (window.XMLHttpRequest) { //Mozilla XML request
		xmlhttp = new XMLHttpRequest();
	} else if (window.ActiveXObject) { //IE XML request
		xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
	}
	return xmlhttp;
}

function popup(name, url, width, height, scroll) {
	scrolling = (scroll==1)?'yes':'no';
	mywin = window.open(url, name,"menubar=no,resizable,scrollbars="+scrolling+",status=no,width="+width+",height="+height);
	mywin.focus();
	return false;
}

function disableButton(form_ident, button_ident) {
	bttn = getObject(button_ident);
	frm = getObject(form_ident);
	bttn.disabled = true;
	bttn.value = 'Please Wait...';
	frm.submit();
	return false;
}

function toggleReservations(checkbox, stat) {
	var allPageTags=document.getElementsByTagName("*"); 
	for (i=0; i<allPageTags.length; i++) { 
		if (allPageTags[i].className == stat+' Reservation') { 
			if(checkbox.checked) {
				allPageTags[i].style.display=''; 
			} else {
				allPageTags[i].style.display='none'; 
			}
		} 
	} 
}

function setTotal(box, amount) {
	if(box.checked){
		document.total = document.total + amount;
	} else {
		document.total = document.total - amount;
	}
	totaldObj = getObject('totalDisplay');
	totaldObj.innerHTML = formatCurrency(document.total);
	totalObj = getObject('total');
	totalObj.value = document.total;
}

function formatCurrency(num) {
	num = num.toString().replace(/\$|\,/g,'');
	if(isNaN(num))
	num = "0";
	sign = (num == (num = Math.abs(num)));
	num = Math.floor(num*100+0.50000000001);
	cents = num%100;
	num = Math.floor(num/100).toString();
	if(cents<10)
	cents = "0" + cents;
	for (var i = 0; i < Math.floor((num.length-(1+i))/3); i++)
	num = num.substring(0,num.length-(4*i+3))+','+
	num.substring(num.length-(4*i+3));
	return (((sign)?'':'-') + '$' + num + '.' + cents);
}

//used for splash
// center an object in the screen
function moveToCenter(daObject){
	daObject = getObject(daObject);
	daHeight = getObjHeight(daObject);
	daWidth = getObjWidth(daObject);
	winHeight = getWindowHeight(daObject);
	winWidth = getWindowWidth(daObject);
	midLeft = (winWidth - daWidth) / 2;
	midTop = (winHeight - daHeight) / 2;
	moveObjTo(daObject, midLeft, midTop);
}

// gets object height
function getObjHeight(daObj){
	var returnVal;
	if(isDOM){
		if(typeof(daObj.style.height) == 'undefined' || daObj.style.height==''){
			daObj.style.height = 
				document.defaultView.getComputedStyle(daObj, '').getPropertyValue('height');
		}
		returnVal = parseInt(daObj.style.height);
	}else if(isIE){ returnVal = daObj.clientHeight; // daObj.offsetHeight if undef
	}else{ returnVal = daObj.clip.height; } // daObj.clip.height if undef
	return returnVal;
}

// gets object width
function getObjWidth(daObj){
	var returnVal;
	if(isDOM){
		if(typeof(daObj.style.width) == 'undefined' || daObj.style.width==''){
			daObj.style.width = 
				document.defaultView.getComputedStyle(daObj, '').getPropertyValue('width');
		}
		returnVal = parseInt(daObj.style.width);
	}else if(isIE){ returnVal = daObj.clientWidth; // daObj.offsetWidth if undef
	}else{ returnVal = daObj.clip.width; } // daObj.clip.width if undef
	return returnVal;
}

// returns window's innner width
function getWindowWidth(){
	var returnVal = isIE ? document.body.clientWidth : window.innerWidth;
	return returnVal;
}

// returns window's innner height
function getWindowHeight(){
	var returnVal = isIE ? document.body.clientHeight : window.innerHeight;
	return returnVal;
}

// moxes an object to a new coordinate (left, top) AKA (x, y)
function moveObjTo(daObj, newLeft, newTop){
	daObject = getObject(daObj);
	setLeft(daObject, newLeft);
	setTop(daObject, newTop);
}

// sets left position
function setLeft(daObj, newLeft){
	if(isDOM){ daObj.style.left = newLeft + 'px'; }
	else if(isNav4){ daObj.left = newLeft; }
	else{ daObj.style.pixelLeft = newLeft; }
}

// sets top position
function setTop(daObj, newTop){
	if(isDOM){ daObj.style.top = newTop + 'px'; }
	else if(isNav4){ daObj.top = newTop; }
	else{ daObj.style.pixelTop = newTop; }
}

// hides an object
function hide(daObj){
	var Obj = getObject(daObj);
	Obj.style.display = 'none';
}

//cms tag functions
function insertTag(myField, openTag, closeTag) {
	if (!myField.value) {
		myField = document.getElementById(myField);
	}
	
	if (document.selection) { //IE support
		myField.focus();
		sel = document.selection.createRange();
		sel.text = openTag+sel.text+closeTag;
		myField.blur();
	}else if (myField.selectionStart || myField.selectionStart == 0) { 	//MOZILLA/NETSCAPE support
		var startPos = myField.selectionStart;
		var endPos = myField.selectionEnd;
		myField.value = myField.value.substring(0, startPos)
			+ openTag + myField.value.substring(myField.selectionStart, myField.selectionEnd)
			+ closeTag +myField.value.substring(endPos, myField.value.length);
		myField.selectionStart = startPos + openTag.length;
		myField.selectionEnd = endPos + openTag.length;
		myField.focus();
	} else {
		myField.value += openTag+closeTag;
	}
}

function insertLinkTag(field) {
	insertTag(field, '[link=""]', '[/link]')
}

function insertEmailTag(field) {
	insertTag(field, '[email=""]', '[/email]')
}

function insertTabTag(field) {
	insertTag(field, '[tab="2"]', '[/tab]')
}

//book 'agree to terms and conditions' js
function checkTerms() {
	myInputs = document.getElementById('TermsCheckboxes').getElementsByTagName('input');
	notAllChecked = false;
	arrayLength = myInputs.length;
	for (i=0;i<arrayLength;i++) {
		if(!myInputs[i].checked) {
			notAllChecked = true;
		}
	}
	document.getElementById('book_button').disabled = notAllChecked;
}



/* ************************************************************
 * Populate input fields from one set of input fields to a
 *   matching set of input fields identified by the same id
 *   except for an integer difference.
 * 
 * var 'id' is an integer identifying the current number set
 *   of the input field that will recieve data from an input
 *   field one prior.
 *
 * Wish List:
 * var 'id' is currently the only passed in item. It would be
 *   nice to extend the function to accept elements to change
 *   default text to, rather than just setting the text to ""
 ************************************************************** */
function populatePassengerInputs(theId){
	///////////////////////////////////////////////////////////////
	// Get lists of the input elements to be copied and to copy to.
	inputListPrior = document.getElementById('passenger['+(theId-1)+']').getElementsByTagName('input');
	inputList = document.getElementById('passenger['+theId+']').getElementsByTagName('input');
        
	/////////////////////////////////////////////////////////////////
	// Copy text in input fields from inPutListPrior to inputList
	//   if the value of the input checkbox is 'Copy', otherwise
	//   remove the text from inputList.
	//
	// Change values on the input checkbox to allow toggling.
	/////////////////////////////////////////////////////////////////
	if(document.getElementById('passengerCopyInput['+theId+']').value == "Copy"){
		for(count=0;count<inputList.length;count++){
			inputList[count].value = inputListPrior[count].value;
		}
		document.getElementById('passengerCopyInput['+theId+']').value = "unCopy";
	} else {
		for(count=0;count<inputList.length;count++){
			////////////////////////////////////////////////////////
			// Change the values back to their defaults for country
			//   and date of birth input fields. If the input field
            //   is not country or date of birth reset input field
            //   to an empty string.
			if(  (inputList[count].id == "orgCountry["+theId+"]") ||
				 (inputList[count].id == "schoolCountry["+theId+"]") ) {
				inputList[count].value = "United States";
			} else if(inputList[count].id == "dob["+theId+"]") {
				inputList[count].value = "MM/DD/YYYY";
			} else {
				inputList[count].value = "";
			}
		}
		document.getElementById('passengerCopyInput['+theId+']').value = "Copy";
	}
}

//Population Copying for MIS and STU passengers.

function $(elementId) {
	return document.getElementById(elementId);
}

function togglePopulation(paxType, id){
	if($('passengerCopyInput'+id).checked) {
		if(paxType == 'MIS') {
			$('orgName'+id).value = ($('orgName'+(id-1))) ? $('orgName'+(id-1)).value : '';
			$('orgTaxId'+id).value = ($('orgTaxId'+(id-1))) ? $('orgTaxId'+(id-1)).value : '';
			$('orgWebsite'+id).value = ($('orgWebsite'+(id-1))) ? $('orgWebsite'+(id-1)).value : '';
			$('orgCity'+id).value = ($('orgCity'+(id-1))) ? $('orgCity'+(id-1)).value : '';
			$('orgState'+id).value = ($('orgState'+(id-1))) ? $('orgState'+(id-1)).value : '';
			$('orgCountry'+id).value = ($('orgCountry'+(id-1))) ? $('orgCountry'+(id-1)).value : '';
		} else if(paxType == 'STU') {
			$('schoolName'+id).value = ($('schoolName'+(id-1))) ? $('schoolName'+(id-1)).value : '';
			$('schoolPhone'+id).value = ($('schoolPhone'+(id-1))) ? $('schoolPhone'+(id-1)).value : '';
			$('schoolCity'+id).value = ($('schoolCity'+(id-1))) ? $('schoolCity'+(id-1)).value : '';
			$('schoolState'+id).value = ($('schoolState'+(id-1))) ? $('schoolState'+(id-1)).value : '';
			$('schoolCountry'+id).value = ($('schoolCountry'+(id-1))) ? $('schoolCountry'+(id-1)).value : '';
		}
	}
}


