//=========================================
var webPortalDBPath = "globalbases/webportal.nsf";
function getFieldValue(frm, fieldName) {
	var field = frm.elements[fieldName];
	if (field == null) { return ("") };
	var fieldType= field.type;
	if (fieldType == "text" || fieldType == "textarea" || fieldType == "hidden") { 
		return (field.value);
	}
	
	if (fieldType == "select-one") {
		if(field.options.selectedIndex!=-1)
		return (field.options[field.options.selectedIndex].value );
	}
	
	if (fieldType == "radio" || fieldType == "checkbox") {
		if (field.checked == true ) {
			return (field.value);
		}
		return "";
	}
	
	if (String(fieldType) == "undefined") { //multiple radio or checkbox (i hope :)
		for( var i=0; i< field.length; i++) {
			if (field[i].checked == true ) {
				return (field[i].value);
			}
		}
		return("");
	}	
	return ("");
}
function fieldFocus(frm, fieldName) {
	var field = frm.elements[fieldName];
	if (field == null) { return ("") };
	var fieldType = field.type;
	if (fieldType == "text" || fieldType == "textarea" || fieldType == "hidden"){ 
		field.focus();
	}
	if (fieldType == "select-one") {
		field.focus();
	}
	if (fieldType == "radio" || fieldType == "checkbox") {
		field.focus();
	}
	return true;	
}
function CheckFields(frm, fieldName, fieldReg, fieldMsg) {
	var fv;
	for (var i=0; i< fieldName.length; i++) {
		fv = getFieldValue(frm, fieldName[i]);
		var regex = new RegExp(fieldReg[i]);
		if (regex.test(fv) == false) {
			fieldFocus(frm, fieldName[i]);
	    		alert(fieldMsg[i]);
			return false;
		}
	}
	return true;
}
//=========================================
function TRloadScript(href){	
	loadScript(href, false)
}
function TRCountryOnChange(form){  
	var CountryList = form.elements['TR_Country'].options;
	var CountrySelected = CountryList.selectedIndex; 
	var cities = citiesArr[CountryList[CountrySelected].value];
	var nopt;
	var pair;
	var CClist = form.elements['TR_City'].options;
	CClist.length = 0;
   
	for( var i=0; i<cities.length; i++ ) {
   		CClist.length = i;
   		pair = cities[i].split("|")
   		nopt = new Option( pair[0], pair[1], false, false );
   	
   		CClist[i] = nopt;
	}            
	
	CClist.selectedIndex = 0;
	
	TRCityOnChange(form)
}
function TRCityOnChange(form){	
	services = null;
	services = new Array();
	trAvTypes = new Array();
	itemsFrom = new Array();
	itemsTo = new Array();
	var country = form.elements['TR_Country'].value;
	var city = form.elements['TR_City'].value;
	var Year = form.elements['TR_TransferYear'].value
	var Month = form.elements['TR_TransferMonth'].value
	var Day = form.elements['TR_TransferDay'].value
	var h = form.elements['TR_TransferHour'].value
	var m = form.elements['TR_TransferMin'].value
	TRloadScript( "/" + webPortalDBPath  + "/GetTRServices?OpenAgent&country=" + country + "&city=" + city + "&y=" + Year + "&m=" + Month + "&d=" + Day + "&time=" + h + "-" + m + "&curr=" + curr + "&client=" + clientType + "&lng=" + orderLanguage + "&")
}
function TRrecalcTransferTypes(){
	document.body.style.cursor = "AUTO"	
	
	var CClist = document.getElementById("TR_TransferType").options;
	var selectIndex = 0;
	CClist.length = 0;   
	for( var i=0; i<trAvTypes.length; i++ ) {
   		CClist.length = i;
   		var pair = trAvTypes[i].split("-")
   		nopt = new Option( trTypes[pair[0]] + " -> " + trTypes[pair[1]], trAvTypes[i], false, false );
   		if(selectType == trAvTypes[i])  selectIndex = i
   		CClist[i] = nopt;
	}            
	
	CClist.selectedIndex = selectIndex;
	selectType = "";
	TRrecalcTransferCarType();
}
function TRrecalcTransferObjs(){
	var curType = document.getElementById("TR_TransferType").value
	var curCarType = document.getElementById("TR_TransferCarType").value
 
	var CClist = document.getElementById("TR_TransferID").options;
	var selectIndex = 0;
	CClist.length = 0;	
	var service;
	if(curType == "") return;
	
	var objsArr = services[curType+"-"+curCarType]
   
	for( var i=0; i<objsArr.length; i++ ) {
   		CClist.length = i;
   		serviceObj = objsArr[i]
   		nopt = new Option(serviceObj.description, serviceObj.id, false, false );
		if(selectID == serviceObj.id)  selectIndex = i
   	
   		CClist[i] = nopt;
	};
	CClist.selectedIndex = selectIndex;
	selectID = "";
	TRrecalcPersons();
	TRrecalcAdditionals();
	if(clientType=="1") 
		TRrecalcDetails();
	
	TRwritePrice();
}
//----------------------------------------------------------------------------------------------
function TRrecalcTransferCarType(){
	var carType = document.getElementById("TR_TransferCarType").options;
	var selectIndex = 0;
	carType.length = 0;	
	var curType = document.getElementById("TR_TransferType").value
	if(curType == "") return;
	var carTypesArr = carTypes[curType]
	for( var i=0; i<carTypesArr.length; i++ ) {
   		carType.length = i;
		nopt = new Option(trCarTypes[carTypesArr[i]], carTypesArr[i], false, false );
		if(selectCarType == carTypesArr[i])  selectIndex = i
		carType[i] = nopt;
	};
	carType.selectedIndex = selectIndex;
	selectCarType = "";
	TRrecalcTransferObjs();
}
//----------------------------------------------------------------------------------------------
function TRrecalcPersons(){
	var curType = document.getElementById("TR_TransferType").value
	var curCarType = document.getElementById("TR_TransferCarType").value
	var curService = services[curType + "-" + curCarType][document.getElementById("TR_TransferID").options.selectedIndex]
		
	var CClist = document.getElementById("TR_NumberPersons").options;
	CClist.length = 0;	
		
	var count = curService.persMax - curService.persMin;
	var selectIndex = 0;
   
	for( var i=0; i<=count; i++ ) {
   		CClist.length = i;   		
   		nopt = new Option(curService.persMin + i,curService.persMin+ i, false, false );
		
		if(selectPerson == curService.persMin+ i)  selectIndex = i
		   	
   		CClist[i] = nopt;
	}	
	
	CClist.selectedIndex = selectIndex;
	selectPerson = "";
}
function TRrecalcDetails(){
	var curType = document.getElementById("TR_TransferType").value;
	var itemsFromThis = itemsFrom[curType.split("-")[0]];
	var itemsToThis = itemsTo[curType.split("-")[1]];	
	var pair;
	var value = "";
	var star = "<font color=\"red\">&nbsp;*</font>"
	
	var html = "";
	if(itemsFromThis){
		html = "<table border=0 width=100%>";
		for(var i=0; i<itemsFromThis.length; i++){
			pair = itemsFromThis[i].split("|");
			value = (selectDetailsFrom[pair[1]])? selectDetailsFrom[pair[1]] : "";
//			html += "<TR valign=top> <TD class=isc_inp_line>" + pair[0] + ((pair[1].indexOf("_") > -1)?star:"") + "</TD><TD><input type=text name=\"" + pair[1] + "\" value=\"" + value + "\" style=\"width: 100%;\"></TD> </TR>";
			html += "<TR valign=top> <TD class=isc_inp_line>" + pair[0] + ((pair[1].indexOf("_") > -1)?star:"") + "</TD><TD><input type=text name=\"" + pair[1] + "\" value=\"" + value + "\" ></TD> </TR>";
		}
		html += "</table>";		
	}	
	document.getElementById("SPAN_DetailsFrom").innerHTML = html;
	
	html = "";
	if(itemsToThis){
		html = "<table border=0 width=100%>";
		for(var i=0; i<itemsToThis.length; i++){
			pair = itemsToThis[i].split("|");
			value = "";
			if(pair[1] == "TR_Hotel") value = unescape(hotel);
			value = (selectDetailsTo[pair[1]])? selectDetailsTo[pair[1]] : value;			
//			html += "<TR valign=top> <TD class=isc_inp_line>" + pair[0] + ((pair[1].indexOf("_") > -1)?star:"") + "</TD><TD><input type=text name=\"" + pair[1] + "\" value=\"" + value + "\" style=\"width: 100%;\"></TD> </TR>";
			html += "<TR valign=top> <TD class=isc_inp_line>" + pair[0] + ((pair[1].indexOf("_") > -1)?star:"") + "</TD><TD><input type=text name=\"" + pair[1] + "\" value=\"" + value + "\" ></TD> </TR>";
		}
		html += "</table>";		
	}	
	document.getElementById("SPAN_DetailsTo").innerHTML = html;
		
}
function TRrecalcAdditionals(){
	var curType = document.getElementById("TR_TransferType").value;	 
	var curCarType = document.getElementById("TR_TransferCarType").value
	var curService = services[curType+"-"+curCarType][document.getElementById("TR_TransferID").options.selectedIndex];
	var span = document.getElementById("TRSPAN_Additional");	
	var html = "";	
	var checked;
	span.innerHTML = "";	
	
	var list = curService.additional.split(":");
	if(list[0] != ""){		
		document.getElementById("TRSPAN_Additional").style.display = "";	
		document.getElementById("TRSPAN_AdditionalLabel").style.display = "";	
		for( var i=0; i<list.length; i++ ) {
			checked = "";
			if(selectAdditionals != ""){
				if(selectAdditionals.indexOf(":" + list[i] + ":") > -1){
					checked = "checked";
				}
			}
			html += "<br><input type=checkbox name=\"TR_AdditionalOptions\" value=\"" + list[i] + "\" onClick=\"TRrecalcPrice(this.form)\" " + checked + "> " + additionals[list[i]];			
		}
	}else{
		document.getElementById("TRSPAN_Additional").style.display = "none";	
		document.getElementById("TRSPAN_AdditionalLabel").style.display = "none";	
	}
	span.innerHTML = html;
}
function TRrecalcPrice(form){
	var Year = getFieldValue(form,"TR_TransferYear");
	var Month = getFieldValue(form,"TR_TransferMonth");
	var Day = getFieldValue(form,"TR_TransferDay");
	var h = getFieldValue(form, "TR_TransferHour");
	var m = getFieldValue(form, "TR_TransferMin");
	var id = getFieldValue(form,"TR_TransferID");
	var UKCompany = getFieldValue(form, "UKCompany");
	var tourID = getFieldValue(form, "tourID");
	var zeroPrice= getFieldValue(form, "TR_zeroPrice");
	if(id=="") return ("");
/*
	var Year = document.getElementById("TransferYear").value;
	var Month = document.getElementById("TransferMonth").value;
	var Day = document.getElementById("TransferDay").value;
	var h = document.getElementById("TransferHour").value;
	var m = document.getElementById("TransferMin").value;
	var id = document.getElementById("TransferID").value;
*/
	document.getElementById("TRSPAN_Price").innerHTML = "Calculating...";
	var path =  "/" + webPortalDBPath  + "/GetTRPrice?OpenAgent&id=" + id + "&y=" + Year + "&m=" + Month + "&d=" + Day + "&time=" + h + "-" + m + "&curr=" + curr + "&client=" + clientType+"&UKCompany="+UKCompany+"&GON="+globalOrderNumber+"&ON="+OrderNumber+"&tourID=" + tourID+"&zeroPrice=" + zeroPrice+"&"; 
//	var path =  "/" + webPortalDBPath  + "/GetTRPrice?OpenAgent&id=" + id + "&y=" + Year + "&m=" + Month + "&d=" + Day + "&time=" + h + "-" + m + "&curr=" + curr + "&client=" + clientType; 
	var add = "";
	var cacheKey = "";
	if(form){
		add = TRgetAdditional(form)		
		if(add != ""){
			path += ("&add=" + add)
		}
	};
	cacheKey = Year + Month + Day + h+":"+m+id+curr+add.split(",").join("");
	
	if(priceCache[cacheKey]){
		price = priceCache[cacheKey]
		TRwritePrice()
	}else{
		TRloadScript(path)
	}
}
function TRwritePrice(){
	document.body.style.cursor = "AUTO";
	if (price == "-1") {price = "By request"}
	document.getElementById("TRSPAN_Price").innerHTML = "<b>" + price + "</b> " + curr;
}
function TRgetAdditional(form, getAll){
	var chk = form.elements['TR_AdditionalOptions'];
	var ret = "";
	
	if(chk){
		if(chk.length){
			for(var i=0; i<chk.length; i++ ){
				if(chk[i].checked == true || getAll) ret += (chk[i].value + ",");
			};
		}else{
			if(chk.checked == true || getAll) ret = chk.value;
		};
	};
	return ret	
}
function TRsubmitOrder(form){	
		
	if (! TRcheckAndComposeFromToItems(form) ) return false;
	var fieldName = new Array("LastName", "FirstName");
	var fieldReg = new Array("[\\w]", "[\\w]");
	var fieldMsg = new Array("Check Last Name!", "Check First Name!");
	var antiSpam = document.getElementById("antiSpam");
	if(antiSpam){
		fieldName.push("antispamImageLabel");
		fieldReg.push("[\\w]");
		fieldMsg.push("Check CAPTCHA");
	}
	if (CheckFields(form, fieldName, fieldReg, fieldMsg) == false) {return false};		
	
	form.submit()
}
function TRcheckAndComposeFromToItems(form) {
	if(getFieldValue(form, "ClientType")!="1") return true;
	var curType = form.elements['TR_TransferType'].value;
	var itemsFromThis = itemsFrom[curType.split("-")[0]];
	var itemsToThis = itemsTo[curType.split("-")[1]];	
	var pair;
	var emptyFrom = "";
	var emptyTo = "";
		
	var result = "";
	var resultH = "";
	if(itemsFromThis){		
		result = "FROM:<br>";
		for(var i=0; i<itemsFromThis.length; i++){
			pair = itemsFromThis[i].split("|");				
			var field = eval("form." + pair[1]);			
			result += pair[0] + ": " + field.value + "<br>";
			resultH += pair[1] + "|" + pair[0] + "|" + field.value + "~#";
			if(pair[1].indexOf("_") > -1)
				if(field.value == "") emptyFrom += "\n" + pair[0];
			
		}		
		if(emptyFrom != "") emptyFrom = "\nFrom:" + emptyFrom
	}	
	
	form.elements['TR_DetailsCombFrom'].value = resultH;
	resultH = "";
	if(itemsToThis){
		result += "<br>TO:<br>";
		for(var i=0; i<itemsToThis.length; i++){
			pair = itemsToThis[i].split("|");
			var field = eval("form." + pair[1])
			result += pair[0] + ": " + field.value + "<br>";
			resultH += pair[1] + "|" + pair[0] + "|" + field.value + "~#";
			if(pair[1].indexOf("_") > -1)
				if(field.value == "") emptyFrom += "\n" + pair[0];
			
		}		
		if(emptyTo != "") emptyTo = "\nTo:" + emptyTo	
	}		
	if(emptyFrom != "" || emptyTo != ""){
		alert("You have to specify the following details: \n" + emptyFrom + "\n" + emptyTo);
		return false;
	}
	form.elements['TR_AdditionalList'].value = TRgetAdditional(form, true)
	form.elements['TR_DetailsCombTo'].value = resultH;		
	
	return true;
}

