//İSTASYONLAR İLE İLGİLİ FONKSİYONLAR
//----------------------------------------------------------------------------------------------------
//istasyonları xmlden ceken php sayfasına bağlanan ajax isteğinin bulunduğu javascript fonksiyonudur.
function getStations(lang,wheretoselect)
{
	if (lang=="en") {
	document.getElementById('stations').innerHTML="<select name=ctystations disabled=\"true\" ><option value=\"-1\">Please Wait!</option></select>";
    document.getElementById('arrstations').innerHTML="<select name=arrctystations disabled=\"true\" ><option value=\"-1\">same as pick-up</option></select>";
	}else if (lang=="de") {
	document.getElementById('stations').innerHTML="<select name=ctystations disabled=\"true\" ><option value=\"-1\">Eine Moment Geduld bitte!</option></select>";
    document.getElementById('arrstations').innerHTML="<select name=arrctystations disabled=\"true\" ><option value=\"-1\">gleiche wie Anmietstation</option></select>";	
	}else{
			document.getElementById('stations').innerHTML="<select name=ctystations disabled=\"true\" ><option value=\"-1\">Lütfen Bekleyin!</option></select>";
    document.getElementById('arrstations').innerHTML="<select name=arrctystations disabled=\"true\" ><option value=\"-1\">Alış ile Aynı!</option></select>";
	
	}
	var xmlhttp =  new XMLHttpRequest();
	xmlhttp.open('POST', 'COM_getstations.php', true);
    
	xmlhttp.onreadystatechange = function() {
        if (xmlhttp.readyState == 4) {
            if (xmlhttp.status == 200){
				document.getElementById('stations').innerHTML=xmlhttp.responseText;
				if(wheretoselect != undefined)
					getArrStations(lang);
			}
        }
    }
    
	var request = "<START><Administration><ObjectType>2</ObjectType><DemandedObjects>1003</DemandedObjects><Lang_id>"+ lang +"</Lang_id><Op_id>572169</Op_id><Country_id>"+getstations.countries.value+"</Country_id></Administration></START>";
	
    xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    xmlhttp.send('request='+request+'&selected='+wheretoselect+'&lang='+lang);
}

function select_innerHTML(objeto,innerHTML)
{
    objeto.innerHTML = "";
    var selTemp = document.createElement("micoxselect");
    var opt;
    selTemp.id="micoxselect1";
    document.body.appendChild(selTemp);
    selTemp = document.getElementById("micoxselect1");
    selTemp.style.display="none";
    if(innerHTML.toLowerCase().indexOf("<option")<0){
        innerHTML = "<option>" + innerHTML + "</option>";
    }
    innerHTML = innerHTML.toLowerCase().replace(/<option/g,"<span").replace(/<\/option/g,"</span");
    selTemp.innerHTML = innerHTML;
      
    for(var i=0;i<selTemp.childNodes.length;i++){
		var spantemp = selTemp.childNodes[i];
  
        if(spantemp.tagName){     
            opt = document.createElement("OPTION");
    
		if(document.all){
			objeto.add(opt);
		}else{
			objeto.appendChild(opt);
		}       
    
	   //getting attributes
	   for(var j=0; j<spantemp.attributes.length ; j++){
	    var attrName = spantemp.attributes[j].nodeName;
	    var attrVal = spantemp.attributes[j].nodeValue;
	    if(attrVal){
	     try{
	      opt.setAttribute(attrName,attrVal);
	      opt.setAttributeNode(spantemp.attributes[j].cloneNode(true));
	     }catch(e){}
	    }
	   }
	   
	   if(spantemp.style){
	    for(var y in spantemp.style){
	     try{opt.style[y] = spantemp.style[y];}catch(e){}
	    }
	   }
	   
	   opt.value = spantemp.getAttribute("value");
	   opt.text = spantemp.innerHTML;
	   
	   opt.selected = spantemp.getAttribute('selected');
	   opt.className = spantemp.className;
	  } 
	 }    
	 document.body.removeChild(selTemp);
	 selTemp = null;
}

//dönüş istasyonlarının bulunduğu dropdown listeyi düzenleyen javascript fonksiyonudur.
function getArrStations(lang)
{
	var cty_inner = getstations.ctystations.innerHTML;
	if (lang=="en"){
		if (navigator.appName.indexOf('Microsoft') != -1){
		cty_inner = "<" + cty_inner.substr(0+("<option value=\"-1\">Please Select</option>").length, cty_inner.length);	
		cty_inner = "<option value=\"0\">same as pick-up</option>" + cty_inner;
		select_innerHTML(getstations.arrctystations,cty_inner);	
		
		}else{
			cty_inner = cty_inner.substr(0+("<option value=\"-1\">Please Select</option>").length, cty_inner.length);
			getstations.arrctystations.innerHTML = "<option value=\"0\"> same as pick-up </option>" + cty_inner;
		}
	}else if (lang=="de"){
		if (navigator.appName.indexOf('Microsoft') != -1){
		cty_inner = "<" + cty_inner.substr(0+("<option value=\"-1\">Bitte Ort eingeben</option>").length, cty_inner.length);	
		cty_inner = "<option value=\"0\">gleiche wie Anmietstation</option>" + cty_inner;
		select_innerHTML(getstations.arrctystations,cty_inner);	
		
		}else{
			cty_inner = cty_inner.substr(0+("<option value=\"-1\">Bitte Ort eingeben</option>").length, cty_inner.length);
			getstations.arrctystations.innerHTML = "<option value=\"0\"> gleiche wie Anmietstation </option>" + cty_inner;
		}
		
	}else{
		
	if (navigator.appName.indexOf('Microsoft') != -1){
		cty_inner = "<" + cty_inner.substr(0+("<option value=\"-1\">Lütfen Seçin</option>").length, cty_inner.length);	
		cty_inner = "<option value=\"0\"> Alış ile Aynı </option>" + cty_inner;
		select_innerHTML(getstations.arrctystations,cty_inner);	
	}else{
		cty_inner = cty_inner.substr(0+("<option value=\"-1\">Lütfen Seçin</option>").length, cty_inner.length);
		getstations.arrctystations.innerHTML = "<option value=\"0\"> Alış ile Aynı </option>" + cty_inner;
	}
	}
	getstations.arrctystations.disabled = false;
}

//sayfa ilk yüklendiğinde Türkiye ile alakalı istasyonları getiren koddur.

//getStations();
//----------------------------------------------------------------------------------------------------

//TARİHLE İLGİLİ FONKSİYONLAR
//----------------------------------------------------------------------------------------------------
function justifyDateMonth(dateormonth)
{
//4 olan explorer icin
if(dateormonth.toLocaleString().length == 1 || dateormonth.toLocaleString().length == 4)
	return "0"+dateormonth;
return dateormonth;
}

//alış tarihi değiştiği zaman, dönüş tarihini alış tarihinin bir gün sonrasına ayarlayan javascript fonksiyonudur.
function changeArrDate(when)
{
	if ( isDate( getstations.SDate.value ) ) {
	if(when != 1)
		if( !isDate(getstations.SDate.value, 1) ) return;
    Ad2=stringToDate( getstations.SDate.value );
    Ad0=new Date(Ad2.getTime() + 259200000);
    var M = (Ad0.getDate())+"";
    if( M.length< 2 ) M = "0"+M;

    var N = (Ad0.getMonth()+1)+"";
    if( N.length< 2 ) N = "0"+N;

    getstations.RDate.value=M+"."+N+"."+Ad0.getFullYear();
  }

  //offer.R2.value=offer.T2.value;
  //offer.R3.value=offer.T3.value;
  
	/*var sdate = getstations.SDate.value;
	if(when != 1)
		if( !isDate(sdate, 1) ) return;
	
	sdate = stringToDate(sdate);
	sdate.setDate(sdate.getDate()+3);
	
	var sdate_day = justifyDateMonth(sdate.getDate());
	var sdate_month = justifyDateMonth(sdate.getMonth()+1);
	var sdate_year = sdate.getFullYear();
	
	getstations.RDate.value = sdate_day+"."+sdate_month+"."+sdate_year;*/
}

//inputlara direkt olarak bugünün tarihini getiren javascript fonksiyonudur.
/*function getDateFormatted()
{
var mydate= new Date();
var theyear=mydate.getFullYear();
var themonth=justifyDateMonth(mydate.getMonth()+1);
var thetoday=justifyDateMonth(mydate.getDate()+2);

return thetoday+"."+themonth+"."+theyear;
}

//inputlara bugünün tarihini atayan javascript kodudur.
getstations.SDate.value = getDateFormatted();
changeArrDate(1);
*/
//----------------------------------------------------------------------------------------------------

//FORM İLE İLGİLİ FONKSİYONLAR
//----------------------------------------------------------------------------------------------------
//formda input kısmına girilen tarih bilgisinin formatının doğruluğunu kontrol eden javascript fonksiyonu.
var dtCh= ".";
var minYear=1900;
var myWidth = 0, myHeight = 0;
var maxYear=2100;

function isInteger(s){
	var i;
    for (i = 0; i < s.length; i++) {   
        var c = s.charAt(i);
        if (((c < "0") || (c > "9"))) return false;
    }
    return true;
}

function stripCharsInBag(s, bag) {
	var i;
    var returnString = "";
    for (i = 0; i < s.length; i++) {   
        var c = s.charAt(i);
        if (bag.indexOf(c) == -1) returnString += c;
    }
    return returnString;
}

function daysInFebruary (year){
    return (((year % 4 == 0) && ( (!(year % 100 == 0)) || (year % 400 == 0))) ? 29 : 28 );
}
function DaysArray(n) {
	for (var i = 1; i <= n; i++) {
		this[i] = 31
		if (i==4 || i==6 || i==9 || i==11) {this[i] = 30}
		if (i==2) {this[i] = 29}
   } 
   return this
}

function isDate(dtStr, control){
    var daysInMonth = DaysArray(12)
    var pos1=dtStr.indexOf(dtCh)
    var pos2=dtStr.indexOf(dtCh,pos1+1)
    var strDay=dtStr.substring(0,pos1)
    var strMonth=dtStr.substring(pos1+1,pos2)
    var strYear=dtStr.substring(pos2+1)
    strYr=strYear
    if (strDay.charAt(0)=="0" && strDay.length>1) 
		strDay=strDay.substring(1)
    if (strMonth.charAt(0)=="0" && strMonth.length>1) 
		strMonth=strMonth.substring(1)
    for (var i = 1; i <= 3; i++) {
		if (strYr.charAt(0)=="0" && strYr.length>1) 
			strYr=strYr.substring(1)
    }
    _month=parseInt(strMonth)
    day=parseInt(strDay)
    year=parseInt(strYr)
    if (pos1==-1 || pos2==-1){
		if(control != 1)
			alert("Hatalı tarih girişi yaptınız (gg.aa.yyyy şeklinde giriş yapmalısınız)")
		return false;
    }
    if (strMonth.length<1 || _month<1 || _month>12){
		if(control != 1)
			alert("Tarih alanına girilen ay geçerli değil");
		return false;
    }
    if (strDay.length<1 || day<1 || day>31 || (_month==2 && day>daysInFebruary(year)) || day > daysInMonth[_month]){
		if(control != 1)
			alert("Tarih alanına girilen gün geçerli değil");
		return false;
    }
    if (strYear.length != 4 || year==0 || year<minYear || year>maxYear){
		if(control != 1)
			alert("Tarih alanına girilen yıl geçerli değil");
		return false;
    }
    if (dtStr.indexOf(dtCh,pos2+1)!=-1 || isInteger(stripCharsInBag(dtStr, dtCh))==false){
		if(control != 1)
			alert("Hatalı tarih girişi yaptınız (gg.aa.yyyy şeklinde giriş yapmalısınız)");
		return false;
    }
    return true;
}

//formda string tipinde bulunan tarih verilerini, date tipine çeviren javascript fonksiyonu.
function stringToDate(string) {
  var match = /^(\d\d)\.(\d\d)\.(\d{4})$/.exec(string);

  if (match) {
    return new Date(match[3],match[2]-1,match[1]);
  }
}

function getlocalcamp(country_id, station_id, promotion_code, query)
{
	getstations.countries.value = country_id;
	getStations(station_id);
	if(promotion_code != '-')
		getstations.promotion.value = promotion_code;
	
}

//form submit edilmek istenildiği zaman kontrolleri yapan javascript fonksiyonudur.
function doValidate(lang)
{	
	if(getstations.ctystations.value == -1){
		if (lang=="tr"){
			alert("Lütfen Alış İstasyonunu Seçiniz!");
		}else if(lang=="en"){
			alert("Please choose a pickup location!");
		}else if(lang=="de"){
			alert("Bitte wählen Sie alle Pflichtfelder!");
		}else{
			alert("Lütfen Alış İstasyonunu Seçiniz!");
		}
		return;
	}
	
	//get hour||min take||arrive//
	var ght = getstations.gethour_take.value;
	var gmt = getstations.getmin_take.value;
	var gha = getstations.gethour_arr.value;
	var gma = getstations.getmin_arr.value;
	
	//get date take||arrive//
	var gdt = getstations.SDate.value;
	var gda = getstations.RDate.value;
	
	if( !isDate(gdt, 0) || !isDate(gda, 0) ) return;
	
	var dt=stringToDate( gdt );
	dt.setHours( ght );
	dt.setMinutes( gmt );

	var da=stringToDate( gda );
	da.setHours( gha );
	da.setMinutes( gma );
	var now = new Date();
	
  if( dt< now ) {
	if (lang=="tr") {
    	alert("Alış tarihi geçmiş bir tarih olarak girilemez!");
	}else if(lang=="en"){
		alert("Please enter a valid date!");
	}else if (lang=="de"){
		alert("Bitte wählen Sie ein gültiges Datum");
	}else{
		alert("Alış tarihi geçmiş bir tarih olarak girilemez");
	}
    return;
  }
	
	//TODO : bu kısımda kontroller yapılmaya devam edilecek.
	getstations.PUh.value = ght;
	getstations.PUm.value = gmt;
	getstations.DOh.value = gha;
	getstations.DOm.value = gma;
	getstations.PUsc.value = getstations.ctystations.value;
	getstations.DOsc.value = getstations.arrctystations.value;
	getstations.Cc.value = getstations.countries.value;
	getstations.PRc.value = getstations.promotion.value;
	getstations.PUsn.value = getstations.ctystations.options[getstations.ctystations.selectedIndex].text;
	getstations.DOsn.value = getstations.ctystations.options[getstations.ctystations.selectedIndex].text;
	if(getstations.arrctystations.value != 0)
		getstations.DOsn.value = getstations.arrctystations.options[getstations.arrctystations.selectedIndex].text;
	if(getstations.countries.value==10){
			var pickupDate=stringToDate(getstations.SDate.value);
			var pickupHour = ght*1;
			var pickupMinute = gmt*1;
			pickupDate.setHours(pickupHour);
			pickupDate.setMinutes(pickupMinute);
			var returnDate=stringToDate(getstations.RDate.value);
			var returnHour = gha*1;
			var returnMinute = gma*1;
			returnDate.setHours(returnHour);
			returnDate.setMinutes(returnMinute);
			var dateTime = new Date();
			var pickupStation = getstations.ctystations.value;
			var returnStation = getstations.arrctystations.value;
			if (returnStation==0) {
				returnStation = pickupStation;
			}
			$.post("utils/resValidation.php",{ pickupStation:pickupStation,pickupDate:pickupDate,pickupHour:pickupHour,pickupMinute:pickupMinute,returnStation:returnStation,returnDate:returnDate,returnHour:returnHour,returnMinute:returnMinute,dateTime:dateTime} ,function(data){
																																																																				
																																																																												if (data=='1'){
						act();
																																																																												}else{
	alert(data);
	return;
	}
			 });
		}else{
			//yurt dışı 
			act();
		}
	//TODO : bu kısımda kontroller yapılmaya devam edilecek.
	getstations.PUh.value = ght;
	getstations.PUm.value = gmt;
	getstations.DOh.value = gha;
	getstations.DOm.value = gma;
	getstations.PUsc.value = getstations.ctystations.value;
	getstations.DOsc.value = getstations.arrctystations.value;
	getstations.Cc.value = getstations.countries.value;
	getstations.PRc.value = getstations.promotion.value;
	getstations.PUsn.value = getstations.ctystations.options[getstations.ctystations.selectedIndex].text;
	getstations.DOsn.value = getstations.ctystations.options[getstations.ctystations.selectedIndex].text;
	if(getstations.arrctystations.value != 0)
		getstations.DOsn.value = getstations.arrctystations.options[getstations.arrctystations.selectedIndex].text;
	function act(){
	if (lang =="en"){
		iMessage = "Please wait a moment while we find you our best price.";
	}else if (lang =="de"){
		iMessage ="Einen Moment Geduld bitte, wir suchen die günstigen Angebote für Sie.";
	}else{
		iMessage = "Lütfen bekleyiniz! Sizin için en iyi fiyatı araştırıyoruz.";
	}
	
	   window.waiter.show({ 
						 speed : 10,
						 delay: 5,
						 argetId : 'sixtLoad',  
                         textColor : '#FF6600',  
                         background: '#6F6F6F',  
						 fontSize: '30px',
                         opacity : 60,  
                         message : iMessage,  
                         spinner : { yRadius : 15,  
                                     xRadius : 75,  
                                    background : '#F99A30'  
                                  }  
                       });    

	getstations.submit();
		}

}
//----------------------------------------------------------------------------------------------------	