//Checking 

var test = false;

addLoadEvent(functionsInit);

function functionsInit() {
	var origin = document.getElementById('origin');
	buildAirports(origin.value);
	createCatOptions();	// create the options in the search form
	formFields();		// focusing for keyword field
	prepareRNTLinks();	// prepare all onclicks and attach to links for tracking
	loginForm();	
	prepareFormLinks('onload', null);
}

// Text Field function
function formFields() {
	var origin = document.getElementById('origin');
	origin.onchange = function() {
		buildAirports(this.value);
	}
	document.getElementById('chooser').onchange = function() {
		loginForm(document.getElementById('chooser').options[document.getElementById('chooser').selectedIndex].value);
	}
}
function loginForm(selectedValue) {
	var agentFields = document.getElementsByClassName('agent');
	var memberFields = document.getElementsByClassName('member');
	var nameFields = document.getElementsByClassName('name');
	var journeyFields = document.getElementsByClassName('journey');
	switch(selectedValue) {
		case '1' : //nonmember
			for(var i=0; i<agentFields.length; i++) {
				agentFields[i].style.display = 'none';
			}
			for(var j=0; j<memberFields.length; j++) {
				memberFields[j].style.display = 'none';
			}
			for(var j=0; j<nameFields.length; j++) {
				nameFields[j].style.display = 'block';
			}
			for(var j=0; j<journeyFields.length; j++) {
				journeyFields[j].style.display = 'block';
			}
		break;
		case '2' : //member
			for(var i=0; i<agentFields.length; i++) {
				agentFields[i].style.display = 'none';
			}
			for(var j=0; j<memberFields.length; j++) {
				memberFields[j].style.display = 'block';
			}
			for(var j=0; j<nameFields.length; j++) {
				nameFields[j].style.display = 'none';
			}
			for(var j=0; j<journeyFields.length; j++) {
				journeyFields[j].style.display = 'none';
			}
		break;
		case '3' : //agent
			for(var i=0; i<agentFields.length; i++) {
				agentFields[i].style.display = 'block';
			}
			for(var j=0; j<memberFields.length; j++) {
				memberFields[j].style.display = 'none';
			}
			for(var j=0; j<nameFields.length; j++) {
				nameFields[j].style.display = 'none';
			}
			for(var j=0; j<journeyFields.length; j++) {
				journeyFields[j].style.display = 'none';
			}
		break;
		default : //nonmember
			for(var i=0; i<agentFields.length; i++) {
				agentFields[i].style.display = 'none';
			}
			for(var j=0; j<memberFields.length; j++) {
				memberFields[j].style.display = 'none';
			}
			for(var j=0; j<nameFields.length; j++) {
				nameFields[j].style.display = 'block';
			}
			for(var j=0; j<journeyFields.length; j++) {
				journeyFields[j].style.display = 'block';
			}
		break;
	}
}
function prepareFormLinks(callFrom, linkObj) {
	
	if(callFrom == "onload"){
		var allLinks = document.getElementsByTagName('a');
		for(linkIdx = 0; linkIdx < allLinks.length; linkIdx++) {
				if((allLinks[linkIdx].className == "c3link") || (allLinks[linkIdx].className == "extralink")){
					allLinks[linkIdx].onclick = function(){prepareFormLinks("link", this); return false;};
				}
		}
	}else{
		//Set the form action
		document.getElementById('loginform').action = (test) ? 'https://149.122.160.43:8443/skylights/cgi-bin/skylights.cgi' : 'https://book.flythomascook.com/skylights/cgi-bin/skylights.cgi';

		// Get hidden form fields
		var form_login_event = document.getElementById('loginEvent');
		var form_log_in = document.getElementById('log_in');
		var form_page = document.getElementById('page');
		
		//For Nedstat img tag build
		var form_pnr1 = (document.getElementById('pnr1')) ? document.getElementById('pnr1').value : "";
		var form_firstName = (document.getElementById('firstName')) ? document.getElementById('firstName').value : "";
		var form_lastName = (document.getElementById('lastName')) ? document.getElementById('lastName').value : "";
		var form_origin = (document.getElementById('origin')) ? document.getElementById('origin').value : "";
		var form_destination = (document.getElementById('destination')) ? document.getElementById('destination').value : "";
		var form_email = (document.getElementById('email')) ? document.getElementById('email').value : "";
		var form_password = (document.getElementById('password')) ? document.getElementById('password').value : "";
		var form_iata_pw = (document.getElementById('iata_pw')) ? document.getElementById('iata_pw').value : "";
		var form_iata = (document.getElementById('iata')) ? document.getElementById('iata').value : "";
	
		//Set the hidden form fields appropriately depending on the click link type pass from the onclick function of the links
		switch(document.getElementById('chooser').options[document.getElementById('chooser').selectedIndex].value){
			case '1' :
				form_log_in.value = "";	
				form_page.value = "PNR_LOOKUP";
				break;
			case '2' :
				form_log_in.value = "1";
				form_page.value = "PNR_LIST";
				break;
			case '3' :
				form_log_in.value = "1";
				form_page.value = "PNR_LIST";
				break;	
		}
		//Set loginEvent form field depending on link title!!
		switch(linkObj.title){
				//Set c3 links loginEvent
				case 'View my booking' : form_login_event.value = "lookup"; break;
				case 'Change a name or spelling' : form_login_event.value = "name_change"; break;
				case 'Change a flight' : form_login_event.value = "change_flights"; break;
				case 'Print my itinerary and tickets' : form_login_event.value = "printItin"; break;	
				case 'Cancel a flight or booking' : form_login_event.value = ""; break;	
				//Set extras links loginEvent
				case 'Check in baggage' : form_login_event.value = "add_extras"; break;	
				case 'In flight meals' : form_login_event.value = "add_extras"; break;	
				case 'Travel Buddy service' : form_login_event.value = "add_extras"; break;	
				case 'Seating together' : form_login_event.value = "add_extras"; break;	
				default : form_login_event.value = ""; break;
		}
	
		if(validateForm()){
			//alert(window.opener.name);
			document.getElementById('loginform').target = 'popupParent';
			
			//Write Nedstat tracking image to nedstat_img_dump span
			if(document.getElementById("nedstat_img_dump")){

			//	var aTitle = linkObj.title; // get title
			//	var aTitleArray = aTitle.match(/[A-Za-z0-9]{1,}[^\s]/g); // find and replace spaces in title
			//	aTitle = aTitleArray.join("_");
			//	var nedstatStr = "http://uk.sitestat.com/tcook/flythomascook/s?clickout.flytc.rnt.entrypage.c3." + aTitle;
//
				//Build img and apply to page to register nedstat tracking
			//	if(document.getElementById("nedstat_img_dump").childNodes[0]){
			//		document.getElementById("nedstat_img_dump").removeChild(document.getElementById("nedstat_img_dump").childNodes[0]);
			//	}
			//	var imgEle = document.createElement("img");
			//	imgEle.alt = "";
			//	imgEle.height = "1px";
			//	imgEle.width = "1px";
			//	imgEle.src = nedstatStr;
//
			//	document.getElementById("nedstat_img_dump").appendChild(imgEle);
			}
			
			document.getElementById('loginform').submit();
			//window.blur();
		}
	} // end else - call from link
}

function prepareRNTLinks() {
	if(!document.getElementsByTagName) return false; // return false if can't find tags
	if(!document.getElementById) return false; // return false if can't find id's
	var links = document.getElementsByTagName('a');
	for(var link=0; link<links.length; link++) {
		if((links[link].id != 'c3Links') && (links[link].id != 'extraLinks') && (links[link].href != '#')){
			links[link].onclick = function() { // create onclick attribute for tracking
				var aTitle = this.title; // get title
				var aTitleArray = aTitle.match(/[A-Za-z0-9]{1,}[^\s]/g); // find and replace spaces in title
				var sHref = this.href;
				aTitle = aTitleArray.join("_");
				//window.location = "http://uk.sitestat.com/tcook/flythomascook/s?flytc.rnt." + aTitle + "&ns_type=clickout&ns_url=" + sHref;
				window.location = sHref;
				return false;
			}
		}
	}
}

function createCatOptions() {
	catOptGroup = document.createElement('optgroup');
	catOptGroup.id = 'catGroup';
	catOptGroup.label = '';
	for (var i=0; i<catArray.length; i++) {
		var newOption = document.createElement('option');
		newOption.value = i+1;
		var newOptionText = document.createTextNode(catArray[i]);
		newOption.appendChild(newOptionText);
		catOptGroup.appendChild(newOption);
	}
	var catSelect = document.getElementById('catSelect');
	catSelect.appendChild(catOptGroup);
	catSelect.onchange = function() {
		createSubOptions(this.value);
		//alert('triggered!')
	}
}
function createSubOptions(subArrayIndex) {
	subArrayIndex -= 1;
	//alert(subArrayIndex);	
	
	if(document.getElementById('subGroup')) {
		document.getElementById('subSelect').removeChild(document.getElementById('subGroup'));
	}
	
	if(subArrayIndex == -1) return false;
	
	if(subArray[subArrayIndex][0] != 'none') {
		subOptGroup = document.createElement('optgroup');
		subOptGroup.id = 'subGroup';
		subOptGroup.label = '';
		for(var i=0; i<subArray[subArrayIndex].length; i++) {
			var newOption = document.createElement('option');
			var valueArray = subArray[subArrayIndex][i].split(',');
			newOption.value = valueArray[1];
			var newOptionText = document.createTextNode(valueArray[0]);
			newOption.appendChild(newOptionText);
			subOptGroup.appendChild(newOption);
		}
		document.getElementById('subSelect').appendChild(subOptGroup);
	}
}
function checkEnter(e) {
	e = e || window.event;
	ch = e.which || e.keyCode;
	if( ch != null) {
		if( ch == 13 ) {
			applicationLink();
			return false;
		} 
		else {
			return true; 
		}
	}
}
function applicationLink() { 

	if( (document.getElementById('catSelect')) && (document.getElementById('catSelect').value != 0) ){
		//var searchStr = 'http://uk.sitestat.com/tcook/flythomascook/s?flytc.rnt.go_button&ns_type=clickout&ns_url=http://flythomascook.custhelp.com/cgi-bin/flythomascook.cfg/php/enduser/std_alp.php?p_accessibility=0&p_page=1';
		var searchStr = 'http://flythomascook.custhelp.com/cgi-bin/flythomascook.cfg/php/enduser/std_alp.php?p_accessibility=0&p_page=1';
		if(document.getElementById('subSelect') && document.getElementById('subGroup')) { //main and sub catagory selected
			
			var prodCatId_1 = document.getElementById('subSelect').value; //the selected option value
			var temp_1 = prodCatId_1.split('.'); 
			var prodId_1 = temp_1[0];
			var catId_1 = temp_1[1];
			var prodCatId_2 = 0;
			var temp_2 = 0;
			var catId_2 = 0;
			
			prodCatId_2 = document.getElementById('subGroup').firstChild ? document.getElementById('subGroup').firstChild.value : ''; //the first option value
			temp_2 = prodCatId_2.split('.')		
			catId_2 = temp_2[1];	
			
			if(prodCatId_1 == 0){
				prodCatId_1 = "1." + catId_2;
			}
	
			//alert("prodCatId_1=" + prodCatId_1 + " : " + "prodId_1=" + prodId_1 + " : " + "catId_1=" + catId_1 + " : " + "catId_2=" + catId_2);

			searchStr += 	'&p_pv=' + prodCatId_1; 
			
			if (prodId_1 == 0) { //No sub topic has been selected allow all sub products search
				//alert("No sub topic has been selected allow all sub products search");
				searchStr +=	'&p_prods=' + catId_2
									+ 	'&prod_lvl1=' + catId_2
									+ 	'&prod_lvl2=0';
			}
			if (prodId_1 == 1) { //all sub cat
				searchStr +=	'&p_prods=' + catId_1
									+ 	'&prod_lvl1=' + catId_1
									+ 	'&prod_lvl2=0';
			}
			if (prodId_1 == 2) { //selected sub cat
				searchStr +=	'&p_prods=' + catId_2 + '%2C' + catId_1
									+ 	'&prod_lvl1=' + catId_2
									+ 	'&prod_lvl2=' + catId_1;
			}
			
			
		} 
		else { //'all' in main catagory only
			searchStr += '&p_prods=0&prod_lvl1=0';
		}
		//add search text if applicable
		var keyWord = document.getElementById('txtInput').value;
		//if ( keyWord != '' ) {
		keyWord = keyWord.replace(/[<>&;%]+/g,'');//replace some special chars
		keyWord = keyWord.replace(/^[ \t]+|[ \t]+$/,'');//trim whitespace
		keyWord = keyWord.replace(/[ \t]+/,'%20');//replacing space			
		searchStr += '&p_search_text=' + keyWord;

		searchStr += '&p_new_search=1';
		//document.getElementById('searchform').action = searchStr;
		
		//alert(searchStr);
		window.location = searchStr;
		
		//}
	}
	else {
		alert('Please select a topic. If you are uncertain of the topic you can select \'All topics\' from the dropdown.');
		return false;
	}
}
function buildAirports(code) {
	var origin = document.getElementById('origin');
	var destinationdd = document.getElementById('destinationdd');
	if(document.getElementById('destination')) {
		destinationdd.removeChild(document.getElementById('destination'));
	}
	var selEle = document.createElement('select');
	selEle.setAttribute('id', 'destination');
	selEle.setAttribute('size','1');
	selEle.setAttribute('name', 'destination');
	for(var i=0; i<AirportsArr[code].AirportDestList.length; i++) {
		var optEle = document.createElement('option');
		if((i==0) && (origin.value == '???')) {
			var optTxt = document.createTextNode('Destination');
			optEle.value = '';
		}else{
			try{
				var optTxt = document.createTextNode(AirportsArr[AirportsArr[code].AirportDestList[i]].Airportname + ' (' + AirportsArr[AirportsArr[code].AirportDestList[i]].Airportcode + ')' + AirportsArr[AirportsArr[code].AirportDestList[i]].AirportOnSalePeriod);
				optEle.value = AirportsArr[code].AirportDestList[i];
			}catch(err){
				continue;
			}
		}
		optEle.appendChild(optTxt);
		selEle.appendChild(optEle);
	}
	destinationdd.appendChild(selEle);
}

function validateForm() {
	var theForm = document.getElementById('loginform');
	var chooser = document.getElementById('chooser').options[document.getElementById('chooser').selectedIndex].value;
	var msg = 'Please fill out the required information:';
	var checkRef = /^[A-Za-z0-9]{6}$/;
	var errorMSG = document.getElementById('errorMSG');
	
	switch(chooser) {
		case '1' : // nonmember
				if(!theForm.pnr1.value) {
					theForm.pnr1.style.borderColor = '#f00';
					msg = '\nPlease provide booking reference';
					break;
				} else if(!checkRef.test(theForm.pnr1.value)) {
					theForm.pnr1.style.borderColor = '#f00';
					msg = '\nUnfortunately this service is not available for the booking reference you have entered, please contact 0871 230 2406';
					break;
				}
				if(theForm.firstName.value == ''){ theForm.firstName.style.borderColor = '#f00'; msg += '\nPlease provide first name';} // Non Member First Name
				if(theForm.lastName.value == ''){ theForm.lastName.style.borderColor = '#f00'; msg += '\nPlease provide last name';} // Non Member Last Name
				break;
		case '2' : // member
				if(!theForm.pnr1.value) {
					theForm.pnr1.style.borderColor = '#f00';
					msg = '\nPlease provide booking reference';
					break;
				} else if(!checkRef.test(theForm.pnr1.value)) {
					theForm.pnr1.style.borderColor = '#f00';
					msg = '\nUnfortunately this service is not available for the booking reference you have entered, please contact 0871 230 2406';
					break;
				}
				if(theForm.pnr1.value == ''){ theForm.pnr1.style.borderColor = '#f00'; msg += '\nPlease provide booking reference';}// Booking Reference
				if(theForm.email.value == ''){ theForm.email.style.borderColor = '#f00'; msg += '\nPlease provide an email';} // Non Member First Name
				if(theForm.password.value == ''){ theForm.password.style.borderColor = '#f00'; msg += '\nPlease provide a password';} // Non Member Last Name
				break;
		case '3' : // agent
				if(!theForm.pnr1.value) {
					theForm.pnr1.style.borderColor = '#f00';
					msg += '\nPlease provide booking reference';
				} else if(!checkRef.test(theForm.pnr1.value)) {
					theForm.pnr1.style.borderColor = '#f00';
					msg = '\nUnfortunately this service is not available for the booking reference you have entered, please contact 0871 230 2406';
					break;
				}
				if(theForm.iata.value == ''){ theForm.iata.style.borderColor = '#f00'; msg += '\nPlease provide your agent id';} // Non Member First Name
				if(theForm.iata_pw.value == ''){ theForm.iata_pw.style.borderColor = '#f00'; msg += '\nPlease provide your agent password';} // Non Member Last Name
				//alert(checkRef.test(theForm.pnr1.value));
				break;
	}
	
	if(msg != 'Please fill out the required information:') {
		alert(msg);
		return false;
	}
	return true;
}
