// FUNZIONI PER LE FORM

var aPrezzi = new Array();
var oValute = null;
var arrvalute = { 'e' : '€', 'd' : '$', 'p' : '£'};	

/*if(!Array.indexOf){
	Array.prototype.indexOf = function(obj){
		for(var i=0; i<this.length; i++){
			if(this[i]==obj){
				return i;
			}
		}
		return -1;
	}
}*/

//-- SPRINTF -------------------------------------

function sprintf () {
  var i = 0, a, f = arguments[i++], o = [], m, p, c, x;
  while (f) {
    if (m = /^[^\x25]+/.exec(f)) o.push(m[0]);
    else if (m = /^\x25{2}/.exec(f)) o.push('%');
    else if (m = /^\x25(?:(\d+)\$)?(\+)?(0|'[^$])?(-)?(\d+)?(?:\.(\d+))?([b-fosuxX])/.exec(f)) {
      if (((a = arguments[m[1] || i++]) == null) || (a == undefined)) throw("Too few arguments.");
      if (/[^s]/.test(m[7]) && (typeof(a) != 'number'))
        throw("Expecting number but found " + typeof(a));
      switch (m[7]) {
        case 'b': a = a.toString(2); break;
        case 'c': a = String.fromCharCode(a); break;
        case 'd': a = parseInt(a); break;
        case 'e': a = m[6] ? a.toExponential(m[6]) : a.toExponential(); break;
        case 'f': a = m[6] ? parseFloat(a).toFixed(m[6]) : parseFloat(a); break;
        case 'o': a = a.toString(8); break;
        case 's': a = ((a = String(a)) && m[6] ? a.substring(0, m[6]) : a); break;
        case 'u': a = Math.abs(a); break;
        case 'x': a = a.toString(16); break;
        case 'X': a = a.toString(16).toUpperCase(); break;
      }
      a = (/[def]/.test(m[7]) && m[2] && a > 0 ? '+' + a : a);
      c = m[3] ? m[3] == '0' ? '0' : m[3].charAt(1) : ' ';
      x = m[5] - String(a).length;
      p = m[5] ? str_repeat(c, x) : '';
      o.push(m[4] ? a + p : p + a);
    }
    else throw ("?!");
    f = f.substring(m[0].length);
  }
  return o.join('');
}

//------------------------------------------------

function spinTxt(txt,val,minv,maxv){
	
	if(typeof(minv)=='undefined')
		minv = 1;
		
	if(typeof(maxv)=='undefined')
		maxv = 300;
	
	var ris = parseInt($(txt).value)+val;
	
	if(ris < minv) ris = minv;	
	if(ris > maxv) ris = maxv;
	
	$(txt).value = ris;
}

//formatta un numero 0000,00
function virgola(num){
	n = parseFloat(num).toFixed(2);
	return n.replace('.',',');
}

function pad(v){
	
	v = new String(v);
	
	if(v.length < 2)
		return '0'+v;
	else
		return v;
}

//cambia valuta
function cambio(val,num){
	var cambi = { 'e' : 1, 'd' : 1.44, 'p' : 0.7};	
	return (parseFloat(num)*cambi[val]); //.toFixed(2);
}

//traduce tutti i prezzi nella valuta scelta
function cambiaValuta(v){

	var url = 'index_opt.php?operation=getvalute';

	var request = new Json.Remote(url, {
		onComplete: function(objval) {
			
			var arrspan = $$('span');
			var reg = new RegExp(/\€|\$|\£|&euro;|&pound; ([0-9\.\,]+)/);
			var vv = {'d':'$', 'p':'&pound;', 'e':'&euro;'};
			
			arrspan.forEach(function(span,i){
				
				if(reg.test(span.innerHTML) && span.id.length > 2){
					
					numconv = parseFloat($(span.id+'_val').getValue());
					
					if(v == 'd') numconv *= objval.USD;
						
					if(v == 'p') numconv *= objval.GBP;
					
					arrspan[i].innerHTML =  arrvalute[v]+' '+virgola(numconv); //vv[val]+' '+virgola(numconv);*/
				}
			});
			
			$$('.hvaluta').forEach(function(hva,i){
				hva.value = v;
			});
		}
	}).send();
	
}

//click sul checkbox -> lo span si attiva
function togglePrezzo(cb,val,span){

	var c = $(cb);
	var s = $(span);
	var p = $(cb.replace('cbextra','cbextraprezzo'));
	var v = $(val);

	if(c.checked){
		//s.innerHTML = arrvalute[v.value]+' '+virgola(cambio(v.value,p.value));
		//s.setHTML( arrvalute[v.value]+' '+virgola(cambio(v.value,p.value)) );
		s.setText( arrvalute[v.value]+' '+virgola(cambio(v.value,p.value)) );
		//alert(s.innerHTML);
	}else{
		s.innerHTML = arrvalute[v.value]+' '+virgola(0);
	}
} //*/

// + supporto per le ore
function toggleOrePrezzo(cb,ore,val,span){

	var c = document.getElementById(cb);
	var s = document.getElementById(span);
	var o = document.getElementById(ore);
	var v = document.getElementById(val);
	var p = document.getElementById(cb.replace('cbextra','cbextraprezzo'));

	if(c.checked){
		s.innerHTML = arrvalute[v.value]+' '+virgola(cambio(v.value,p.value * parseInt(o.value)));
	}else{
		o.value = '0';
		s.innerHTML = arrvalute[v.value]+' '+virgola(0);
	}
} //*/

//per le ore aggiuntive
function aggiornaPrezzo(ore,cb,val,span){
	
	var cb = document.getElementById(cb);
	var p = document.getElementById(cb.id.replace('cbextra','cbextraprezzo'));
	
	if(cb.checked){
		
		var s = document.getElementById(span);
		var v = document.getElementById(val);
		
		s.innerHTML = arrvalute[v.value]+' '+virgola(cambio(v.value,p.value * ore.value));
	}
}

//somma dei prezzi extra
function sommaExtra(id,val){
	
	var mezzo = $('prezzo_mezzo_'+id+'_val');
	var s = $('totextra'+id);
	var sv = $('totextra'+id+'_val');
	var cb = $$('input');
	var v = $(val);
	
	tot = parseFloat(mezzo.value);
	
	for(i in cb){
		if(cb[i].type == 'checkbox' && cb[i].id.match('cbextra'+id) && cb[i].checked){
			
			var ore = document.getElementById('oreagg'+id);
			var p = document.getElementById(cb[i].id.replace('cbextra','cbextraprezzo'));

			if(ore){

				if(ore.value > 0)
					tot += parseInt(p.value) * parseInt(ore.value);

			}else{

				tot += parseInt(p.value);

			}
		}
			
	}
	
	sv.value = tot;
	s.innerHTML = arrvalute[v.value]+' '+virgola(cambio(v.value,tot)); //////////////////virgola(cambio(v.value,tot));
} //*/


function calcolaPercorsoTransfer(){
	
	var pick = $('cb_pickup');
	var drop = $('cb_dropoff');
	var hp = $('cb_hpartenza').value;
	var mp = $('cb_mpartenza').value;
	var dur = $('tempostimato');
	var arr = $('arrivostimato');
	
	if(drop.value == '0'){

		top.location.href = 'http://www.airportconnection.it/index_opt.php?operation=transfertoesc&pick='+pick.value+'&pind='+$('txt_nvolo').value+'&l='+$('h_lang').value; //contatti/contatti_en.htm';
		return;	
	}
	
	for(p in percorsi){
		
		if(percorsi[p]['pick']==pick.value && percorsi[p]['drop']==drop.value){
			
			tempo = percorsi[p]['t'].match(/(\d+)\:(\d+)\:\d/);
			
			dur.innerHTML = pad(tempo[1])+':'+pad(tempo[2]);
			
			var d = new Date();
			d.setHours(hp);
			d.setMinutes(mp);
			
			var d2 = new Date(d.getTime() + (tempo[1]*3600*1000) + (tempo[2]*60*1000) );
			
			arr.innerHTML = pad(d2.getHours())+':'+pad(d2.getMinutes());
		}
	}
	
	if(!window.ie6){ 
		if(punti[drop.value]['tipo']=='Aeroporto')
			$('prenotazione').setStyle('display','block');
		else
			$('prenotazione').setStyle('display','none');
	}
}

function mostraCampiAiuto(){

	var pick = $('cb_pickup');
	var drop = $('cb_dropoff');
	var t_pick = $('txt_nvolo');
	var t_drop = $('txt_dropoff');
	var boxpick = $('help_pickup');
	var boxdrop = $('help_dropoff');
	
	if(pick.value && pick.value!='0' && pick.value!='' && punti[pick.value]['tipo']=='Citta'){
		boxpick.setStyle('display','inline');
//boxpick.setStyle('display','block'); //
		//boxpick.setStyle('margin','10px 0');
	}else{
		t_pick.value = '';
		boxpick.setStyle('display','none');
		//boxpick.setStyle('display','none'); //t_pick.setStyle('display','none');
	}
	
	if(drop.value && drop.value!='0' && drop.value!=''){ //alert('sdfasdfasdfasdfasfd'); alert(drop.value);
		if(punti[drop.value]['tipo']=='Citta'){
			boxdrop.setStyle('display','inline');
			//boxdrop.setStyle('display','block'); //t_drop.setStyle('display','inline');
			//boxdrop.setStyle('margin','10px 0');
		}else{
			t_drop.value = '';
			boxdrop.setStyle('display','none');
			//boxdrop.setStyle('display','none'); //t_drop.setStyle('display','none');
		}
	}else{
		t_drop.value = '';
		boxdrop.setStyle('display','none');
		//boxdrop.setStyle('display','none'); //t_drop.setStyle('display','none');
	}
	
}

function settaMinuti(){
	
	var ore = $('cb_hpartenza');
	var minuti = $('cb_mpartenza');
	
	//alert(ore.value+'||||'+minuti.value);
	if(ore.value != ''){
		if(minuti.value=='')
			minuti.selectedIndex = 1;
	}else{
		minuti.selectedIndex = 0;
	}
	
}

function applicaData(calendar){
	
	if(!calendar.dateClicked) return;
	
	var sg = document.getElementById('cb_gpickup');
	var sma = document.getElementById('cb_mapickup');
	var cald = calendar.date.getDate();
	var calma = pad(calendar.date.getMonth()+1)+'-'+calendar.date.getFullYear();
	
	for(i in sg.options){
		if(sg.options[i].value == cald){
			sg.selectedIndex = i;
			break;
		}
	}
	
	for(i in sma.options){
		if(sma.options[i].value == calma){
			sma.selectedIndex = i;
			break;
		}
	}
	
	calendar.hide();
}

function selectTransferDropOff(pickup,noredir){
	
	var pickup = $(pickup);	
	var dropoff = $('cb_dropoff');
	
	if(pickup.value == '0' && !noredir){ 
		//window.open('form.php','PickUp', 'width=800,height=600'); //,toolbar=no,location=no,status=no,menubar=no,scrollbars=yes,resizable=no'); //,toolbar=no,location=no,status=no,menubar=no,scrollbars=yes,resizable=no
		top.location.href = 'http://www.airportconnection.it/index.php?op=escursione&l='+$('h_lang').value; //contatti/contatti_en.htm
		return;	
	}
	
	dropoff.empty();
	
	var o = new Element('option',{'value': ''});
	//o.setText('Seleziona un punto di arrivo');
	o.setText(STR_JS_T1_SELDROP);
	dropoff.adopt(o);
	
	if(!pickup.value) return;
	
	
	var i = 0;
	var area = '';
	var optg = null;
	
	var o = new Element('option',{'value': '0'});
	o.setText(STR_JS_ALTRO_ITINERARIO);
	o.setStyles({
		backgroundColor: '#F90',
		fontWeight: 'bold'
	});
	dropoff.adopt(o);
	
	percorsi.forEach(function(perc,p){
		
		if(pickup.value == perc['pick']){
				
			if(area != perc['area']){
				
				optg = new Element('optgroup',{'label': perc['area']});
				dropoff.adopt(optg);
				
				area = perc['area'];
			}
			
			var o = new Element('option',{'value': perc['drop']});
			o.setText(punti[perc['drop']]['nome']);
			optg.adopt(o);
		}
	});
	
	if(dropoff.options.length == 2 && !noredir){
		top.location.href = 'http://www.airportconnection.it/index_opt.php?operation=transfertoesc&pick='+$('cb_pickup').value+'&pind='+$('txt_nvolo').value+'&l='+$('h_lang').value;
		return;
	}
	
	var o = new Element('option',{'value': '0'});
	o.setText(STR_JS_ALTRO_ITINERARIO);
	o.setStyles({
		backgroundColor: '#F90',
		fontWeight: 'bold'
	});
	dropoff.adopt(o);
	
	/*
	var i = 1;
	
	for(p in percorsi){
		
		if(pickup.value == percorsi[p]['pick']){
			
			dropoff.options[i++] = new Option(punti[percorsi[p]['drop']],percorsi[p]['drop']);
			//alert(percorsi[p]['pick']);	
		}
		
	}*/
}

function selDrop(drop){
	var dropoff = $('cb_dropoff');
	var optdrops = $$('#cb_dropoff option');

	optdrops.forEach(function(opt,o){
		if(opt.value == drop){
			optdrops[o].setProperty('selected','selected');
		}
	});
	
	/*for(o = dropoff.options.length-1; o > 0; o--){
		if(dropoff.options[o].value == drop){
			//dropoff.selectedIndex = o;
			dropoff.setProperty('selectedIndex',o);
			return;
		}
	}*/
}

function checkDataPassata(oggi){
	return true;


	var data = $('cb_gpickup').value+'-'+$('cb_mapickup').value;

	data = data.match(/(\d+)/g);
	
	var o = new Date(oggi * 1000);
	var d = new Date(data[2],data[1]-1,data[0],$('cb_hpartenza').value,$('cb_mpartenza').value,0);

	if(d > o){
		return true;
	}else{
		alert(STR_JS_SERVIZIO_PASSATO);
		return false;
	}
}

function customCheck(form,rules,mode,oggi){
	
	var ok = performCheck(form,rules,mode);
	
	ok &= checkDataPassata(oggi);

	return (ok ? true : false);
}

function tourGuida(){
	
	var sel = $('cb_guida').value,
		stot = $('tourtotprezzo'),
		prezzo = $('h_prezzo').value,
		npass = $('t_npass').value,
		durata = parseFloat($('h_durata').value);
	
	if(sel){
		var g = guide[sel];
		var cg = g.costo*durata;
		
		if(npass > g.soglia)
			cg += (npass - g.soglia) * g.addiz;
		
		prezzo = parseFloat(prezzo) + cg;
	}

	stot.innerHTML = '&euro; '+parseFloat(prezzo).round();
}













