var highlightedDepartPos='0';			
var highlightedDepartID='0';		
var highlightedArrivalPos='0';			
var highlightedArrivalID='0';
var stopMouseAction='0';
var showList='0';  
var showArrivalList='0';
var firstDepart3Chars='';
var firstArrival3Chars='';
var chosenDestRestricted=false;
var chosenArivRestricted=false;		


	function setHighlighted(ID,type){	
		if(type=='Depart'){	
			if(highlightedDepartID!=0){
				if(document.getElementById(highlightedDepartID)){document.getElementById(highlightedDepartID).className="mouseOutClass";}
			}
			highlightedDepartPos=document.getElementById(ID).getAttribute("pos");
			highlightedDepartID=ID;		
			document.getElementById(ID).className="mouseOverClass";			
		}else if(type=='Arrival'){
			if(highlightedArrivalID!=0){
				if(document.getElementById(highlightedArrivalID)){document.getElementById(highlightedArrivalID).className="mouseOutClass";}
			}	
			highlightedArrivalPos=document.getElementById(ID).getAttribute("pos");
			highlightedArrivalID=ID;		
			document.getElementById(ID).className="mouseOverClass";	
		}	
	}
    
	function mouseFunction(ID,stance){
		if(stance=="mouseOverDepart"){if(stopMouseAction!='1'){setHighlighted(ID,"Depart");}}
		if(stance=="mouseOverArrival"){if(stopMouseAction!='1'){setHighlighted(ID,"Arrival");}}
	}  					
	
	function cityListOnFocus(object,e){
		if(object.id=='departSelector'){setActiveDiv('departSearchDesc'); document.getElementById('departSelector').select();}
		else if(object.id=='arrivalSelector'){document.getElementById('arrivalSelector').select(); setActiveDiv('arrivalSearchDesc');}
	}

	function updateAirportList(passedVar,objectsID,objectsValue,button,resType){


		var foundFlag='0';
		var newCellContent='';
		var setDepart='';
		var numResults='0'
		
		if(passedVar=='updateDepartList' || passedVar=='updateArrivalList'){	
			if(passedVar=='updateDepartList'){
				sourceID='departSelector';
				targetID='departAirList';
				oneLetter='D';
				fullWord='Depart';
				action='selectDepart';
				errorDiv='departSearchDescError';
			} else if(passedVar=='updateArrivalList'){		
				sourceID='arrivalSelector';
				targetID='arrivalAirList';
				oneLetter='A';
				fullWord='Arrival';
				action='selectArrival';
				errorDiv='arrivalSearchDescError';
			}
		
			var accentList="ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõöøùúûüýýþÿ";
			var cleanList ="aaaaaaaceeeeiiiidnoooooouuuuybsaaaaaaaceeeeiiiidnoooooouuuuyyby";
			cleanList=cleanList.toUpperCase();		
			function purgeCharacters(filterMe){
				i=0;
				while(i<filterMe.length){
				j=0;
					while(j<accentList.length){
						if(accentList.charAt(j)==filterMe.charAt(i))
							filterMe=filterMe.substr(0,i) + cleanList.charAt(j) + filterMe.substr(i+1);
					j++;
					}
				i++;
				}
			return filterMe;
			}
		
			var foundCount=0;
			var restrictedList = '';
			testString=document.getElementById(sourceID).value.toUpperCase();	
			testString=purgeCharacters(testString);
			testString = testString.replace(/ /g,'');	
		   testString = testString.replace('.', "");
			//alert("!"+testString+"!");
				var resCount=0;
			if(testString.length>=3 && testString.length<6){
	
				var usedAirports = new Array();
				document.getElementById(targetID).innerHTML='';
				for (key in selectArray){
					var lengthofkey=testString.length;		
					if(testString==key.substr(0,lengthofkey)){	
						var nameCount=1;						
						for (name in selectArray[key]){	
							if(!isNaN(name)){
								var nameMod=nameCount%2;
								if(nameMod){if(selectArray[key][name]==1){var resText='Unrestricted';}else{var resText='Restricted';}}
								else{		
									if(oneLetter=='A'){var opChosen=chosenDestRestricted;}else{var opChosen=chosenArivRestricted;}
									if(resText=='Unrestricted' || (opChosen==false)){
										var used=false;
										var code=selectArray[key][name].substr(selectArray[key][name].length-4,3);
									
										for (codeTest in usedAirports){if(usedAirports[codeTest]==code){used=true;}}								
											if(!used){
												usedAirports[numResults]=code;	
												numResults++;									
												var oldCellContent=document.getElementById(targetID).innerHTML;			
												var code=selectArray[key][name].substr(selectArray[key][name].length-4,3);
												selectArray[key][name]=selectArray[key][name].replace("'", "&#39;");
											
												var newCellContent="<div class='innerListContainer' id='"+oneLetter+foundCount+"' resText='"+resText+"' pos='"+foundCount+"' code='"+oneLetter+code+"' textString='"+selectArray[key][name]+"' onMouseOver=\"mouseFunction('"+oneLetter+foundCount+"','mouseOver"+fullWord+"')\" onMouseDown='updateAirportList(\""+action+"\",\""+code+"\",\""+selectArray[key][name]+"\")'>"+selectArray[key][name]+"</div>";			
										
												document.getElementById(targetID).innerHTML=oldCellContent+newCellContent;	
												foundCount++;	
											}								
									}else{resCount++; restrictedList=restrictedList+"<li style='list-style-image: url(/style/images/square.gif);'>"+selectArray[key][name]+"</li>";}
								}
								nameCount++;
							}
						}
					}					
				}
				if(foundCount>0){						
					if(oneLetter=='D'){ highlightedDepartPos=0; highlightedDepartID=0;}
					else if(oneLetter=='A'){ highlightedArrivalPos=0; highlightedArrivalID=0;}	
					setHighlighted(oneLetter+"0",fullWord);						
					document.getElementById(targetID).scrollTop=0;
				}else{							
					var resErrorStyled="<img src='/style/images/icon-error-prompt.gif' class='stay-left' /><h5>No results because you have not chosen a Canadian or a bordering US city</h5><ul>"+restrictedList+"</ul>";		
				
					var  noResErrorStyled="<img src='/style/images/icon-error-prompt.gif' class='stay-left' /><h5>Sorry, we were unable to find any cities or airports that match your search.</h5><p class='border-this'>Please make sure that you are entering the name of a specific city or airport and not a country or region.</p>";

					if(resCount>0){document.getElementById(errorDiv).innerHTML=resErrorStyled;}
					else{document.getElementById(errorDiv).innerHTML=noResErrorStyled;}				
					setActiveDiv(errorDiv);					
				}
				if(numResults>=6){document.getElementById(targetID).style.height='135px';}
				else{document.getElementById(targetID).style.height='';}		
			}	
		}else if(passedVar=="selectDepart"){		
			if(resType=='Restricted'){chosenDestRestricted=true;}else{chosenDestRestricted=false;}
			document.getElementById('gatewayCode').value=objectsID;			
			document.getElementById('departSelector').value=objectsValue;
			blurRestrictedCheck();
			setActiveDiv(null);		
			if(button!='tab'){document.getElementById('arrivalSelector').focus();}
		}
		else if(passedVar=="selectArrival"){
		
			if(resType=='Restricted'){chosenArivRestricted=true;}else{chosenArivRestricted=false;}
			document.getElementById('destinationCode').value=objectsID;			
			document.getElementById('arrivalSelector').value=objectsValue;	
			if(button!='tab'){document.getElementById('departureDateText').focus();}	
			blurRestrictedCheck();
			setActiveDiv(null);	
		}	
	}
	function cityListOnKeyUp(object,e,keyPressType){
		if (!e) var e = window.event;
		if (e.keyCode) code = e.keyCode;
		else if (e.which) code = e.which;
		
		if(object.id=='departSelector'){		
			updateList='updateDepartList';
			activeDiv='departSearchDesc';
			oneLetter='D';
			fullWord='Depart';
			activeID='departAirList';
			action='selectDepart';
			highlightedID=highlightedDepartID;
			
		}else if(object.id=='arrivalSelector'){		
			updateList='updateArrivalList';
			activeDiv='arrivalSearchDesc';
			oneLetter='A';
			fullWord='Arrival';
			activeID='arrivalAirList';
			action='selectArrival';
			highlightedID=highlightedArrivalID;
		}	
	
		if(keyPressType=='up'){		
			if(object.value.length>=3){				
				if(code!='38' && code!='40'){
					setActiveDiv(activeID); 
					updateAirportList(updateList,object.id,object.value);
				}									
			}else{setActiveDiv(activeDiv)}
		}else if(keyPressType=='down'){		
		//alert(code);
			if(code=='38'){					
				stopMouseAction='1';
				var currentPos=highlightedID.substring(1,highlightedID.length);							
				currentPos--;	
				if(document.getElementById(oneLetter+currentPos)){				
					setHighlighted(oneLetter+currentPos,fullWord);	
					document.getElementById(activeID).scrollTop=document.getElementById(activeID).scrollTop-17;	
				}										
			}else if(code=='40'){				
				stopMouseAction='1';
				var currentPos=highlightedID.substring(1,highlightedID.length);					
				currentPos++;	
				if(document.getElementById(oneLetter+currentPos)){
					setHighlighted(oneLetter+currentPos,fullWord);	
					document.getElementById(activeID).scrollTop=document.getElementById(activeID).scrollTop+17;	
				}
			}			
			if(code=='9'){					
				var newSelection=document.getElementById(highlightedID);			
				updateAirportList(action,newSelection.getAttribute("code"),newSelection.getAttribute("textString"),'tab',newSelection.getAttribute("resText"));			
				return !(e && e.keyCode == 13);
			}
			if(code=='13'){		
				var newSelection=document.getElementById(highlightedID);	
				updateAirportList(action,newSelection.getAttribute("code"),newSelection.getAttribute("textString"),'enter',newSelection.getAttribute("resText"));				
				return !(e && e.keyCode == 13);			
			} 
		}
	}		
	function setActiveDiv(thisDivsID){
			if(!!(window.attachEvent && !window.opera)){
				if (typeof document.body.style.maxHeight != "undefined") {
				  // IE 7, mozilla, safari, opera 9
				} else {
				  	// IE6, older browsers
					if( document.getElementById('province')){ document.getElementById('province').style.display='none';}
					if( document.getElementById('numberOfAdults')){ document.getElementById('numberOfAdults').style.display='none';	}
					if(document.getElementById('numberOfChildren')){document.getElementById('numberOfChildren').style.display='none';}	
					if(document.getElementById('numberOfInfants')){document.getElementById('numberOfInfants').style.display='none';	}
					if(document.getElementById('findFlightButton')){
						document.getElementById('findFlightButton').style.display='none';	
					}
				}
			}
		document.getElementById('departSearchDesc').style.display='none';	
		document.getElementById('arrivalSearchDescError').style.display='none';
		document.getElementById('departSearchDescError').style.display='none';	
		document.getElementById('departAirList').style.display='none';
		document.getElementById('arrivalSearchDesc').style.display='none';
		document.getElementById('arrivalAirList').style.display='none';	
		document.getElementById('dateTable').style.display='none';
		document.getElementById('dateArrivalTable').style.display='none';	
		try	{document.getElementById(thisDivsID).style.display='';}catch(e){
			if( document.getElementById('province')){ document.getElementById('province').style.display='';}

		if(document.getElementById('numberOfAdults')){
				document.getElementById('numberOfAdults').style.display='';	
				document.getElementById('numberOfChildren').style.display='';
				document.getElementById('numberOfInfants').style.display='';
			}
			if(document.getElementById('findFlightButton')){
						document.getElementById('findFlightButton').style.display='';	
					}
			}				
	}
	
		function blurRestrictedCheck(){
			var hasRestricted=0;
			var gatewayCodeLength=document.getElementById('gatewayCode').value.length;
			var destinationCodeLength=document.getElementById('destinationCode').value.length;
				if(gatewayCodeLength==3){
					var gatewayCode=document.getElementById('gatewayCode').value.toUpperCase();
				
						if(!selectArray[gatewayCode][0]){hasRestricted++;}	
					
				}else if(gatewayCodeLength==4){
					var gatewayCode=document.getElementById('gatewayCode').value.substr(1,3).toUpperCase();
					if(!selectArray[gatewayCode][0]){hasRestricted++;}	
				}			  
				if(destinationCodeLength==3){
					var destinationCode=document.getElementById('destinationCode').value.toUpperCase();
					if(!selectArray[destinationCode][0]){hasRestricted++;}	
				}else if(destinationCodeLength==4){
					var destinationCode=document.getElementById('destinationCode').value.substr(1,3).toUpperCase();
					if(!selectArray[destinationCode][0]){hasRestricted++;}	
				}
			   if(hasRestricted==2){
					alert('you have chosen 2 restricted airports');
					document.getElementById('gatewayCode').value='';
					document.getElementById('destinationCode').value='';
					document.getElementById('arrivalSelector').value='';
					document.getElementById('departSelector').value='';	
			   }		
		}
	
	function cityListOnBlur(object,e){blurRestrictedCheck();setActiveDiv(null);}
