//promenna serverNow naplnena ze serveru
var regemail = /^[+]?[_a-z0-9-]+(\.[_a-z0-9-]+)*@([0-9a-z][0-9a-z-]*\.)+[a-z]{2,4}$/i;
var regnum = /^[0-9]{1,2}$/;
var regFFcard = /^[a-z0-9]+$/i;
var regAX = /^((37)|(34))[0-9]{13}$/;
var regDC = /^((30)|(36)|(38))[0-9]{12}$/;
var regCA = /^5[0-9]{15}$/;
var regVI = /^4(([0-9]{15})|([0-9]{12}))$/;
var ibs_avail_dep = null;
var ibs_avail_ret = null;
var searchMode = 'online';
var typeOfFlight = 'roundtrip';
var clndr_callback = "setDayNames();"
var lastSelected = new Array();

function setYear(type) {
   day   = document.getElementById(type+'Day');
   month = document.getElementById(type+'Month');
   year  = document.getElementById(type+'Year');
   
   //podle aktualniho data volim rok odletu
   actualDate = new Date();
   
   //pokud je zadany mecic mensi, nez aktualni, datum odletu/priletu je pristi rok, jinak aktualni rok
   //veskere validace spravnosti data jsou az pri odeslani
   if(month.value < (actualDate.getMonth() + 1)) year.value = (actualDate.getFullYear() + 1);
   else											 year.value = actualDate.getFullYear();
}

function Is() {
  var agt=navigator.userAgent.toLowerCase();
  this.ie=((agt.indexOf("msie") != -1) && (agt.indexOf("opera") == -1))?1:0;
  this.dom=document.getElementById?1:0;
  this.ie4=(document.all && !this.dom)?1:0;
  this.ns4=(document.layers && !this.dom)?1:0;
  return this;
}

var is=new Is();

if(is.ns4) {
	var regSurnames = /^[ ]*[a-z]+[ ]*[a-z]+[ a-z]*$/i;
	var regNames = /^[ ]*[a-z]+[ a-z]*$/i;                             
	var regInfSurnames = /^[ ]*[a-z]{2,}[ ]*$/i;
	var regInfNames = /^[ ]*[a-z]{1,}[ ]*$/i;
	var regContact = /^[ ]*[a-z0-9,.:_"\'()&#*+\/-]+[ a-z0-9,.:_"\'()&#*+\/-]*$/i;
}
else {
	var charAllowed = ' -ſ';
	var regSurnames = new RegExp("^[ ]*[a-z" + charAllowed + "]+[ ]*[a-z" + charAllowed + "]+[ a-z" + charAllowed + "]*$", "i");
	var regNames = new RegExp("^[ ]*[a-z" + charAllowed + "]+[ a-z" + charAllowed + "]*$", "i");
	var regInfSurnames = new RegExp("^[ ]*[a-z" + charAllowed + "]{2,}[ ]*$", "i");
	var regInfNames = new RegExp("^[ ]*[a-z" + charAllowed + "]{1,}[ ]*", "i");
	var regContact = new RegExp("^[ ]*[a-z" + charAllowed + "0-9,.:_\"'()&#\/*+-]+[ a-z" + charAllowed + "0-9,.:_\"'()&#\/*+-]*$", "i");
}


function getServerNow() {
    return new Date(serverNow.getFullYear(), serverNow.getMonth(), serverNow.getDate(), 
                    serverNow.getHours(), serverNow.getMinutes(), serverNow.getSeconds());
}

function IsLeapYear(y) {
   return (0 == y%4 && ((y%100 != 0) || (y%400 == 0)));
}

function DayEnd(mes, rok) {
   mes -= 1;
   pocet_dni = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
   return ((IsLeapYear(rok)) && (mes == 1)) ? 29 : pocet_dni[mes];
}


// Veci pridane pro Special Offers

function dvoucifra(a) {
            str=new String(a);
            if (str.length==1) return '0'+a;
            else return a;
        }
        
function in_array(prvek,pole) {
            for (i=0;i<pole.length;i++) if (prvek==pole[i]) return true;
            return false;    
}
  
function guessYear(day, month) {
  var today = getServerNow(); //new Date();
  day = parseInt(day,10);
  month = parseInt(month,10);
  if(month > today.getMonth()+1) return today.getFullYear();
  else {
    if(month == today.getMonth()+1) {
      if(day >= today.getDate()) return today.getFullYear();
      else return(today.getFullYear()+1);
    }
    else
      return(today.getFullYear()+1);
  }
}

function getWholeDate(monthStr,dayStr) {
    var month = parseInt(monthStr,10)-1;
    var day = parseInt(dayStr,10);
    var today = getServerNow(); //new Date();
    var today_midnight = Date.UTC(today.getFullYear(), today.getMonth(), today.getDate(), 0, 0, 0);
    var guess_midnight = Date.UTC(today.getFullYear(), month, day, 0, 0, 0);
    var year = (guess_midnight  >= today_midnight) ? today.getFullYear() : today.getFullYear()+1;
    var date = new Date(year, month, day, 0, 0, 0);
    return date;
}

function maxStayMonth(datum1,datum2,mesicu) {
    m1=datum1.getMonth();
    y1=datum1.getFullYear();
    d1=datum1.getDate();

    m1=parseInt(m1)+parseInt(mesicu);
    
    while (m1>11) {
        m1=m1-12;
        y1++;
    }
    
    if (d1>DayEnd(m1+1,y1)) {
        d1=DayEnd(m1+1,y1);
    }
    return (datum2<=(new Date(y1,m1,d1)));
}


// Konec - Veci pridane pro Special Offers

function switchVisibility(elem, status) {
  var elm;
  if(!is.dom) return;
  elm = document.getElementById(elem);
  if(elm)
	  elm.style.display = (status) ? "" : "none";
}

function switchVisibility2(elem, status) {
  var elm;
  if(!is.dom) return;
  elm = document.getElementById(elem);
  if(elm)
	  elm.style.visibility = (status) ? "visible" : "hidden";
}

function setCssClass(elem, cssClassName)
{
	var elm;
	if(!is.dom) return;
	elm = document.getElementById(elem);
	if(elm)
		elm.className = cssClassName;
}

function iterateSwitch(id, status, start, end)
{
	for(var k = start; k <= end; k++)
		eval("switchVisibility('" + id + k + "', " + status + ");");	
}

function getRadio(formName, elName)
{
	var Ctrl = document.forms[formName];
	var el;
	if(!Ctrl)
		return false;

	eval("el = Ctrl." + elName);
	if(!el)
		return false;

  	if(!el.length && el.checked == 1) {	//zaskrtnuta jedina volba
    	return el.value
	}
	else {
    	for(var z=0; z<el.length; z++)
     		if(el[z].checked)
	     	   	return el[z].value;
  	}
	return false;
}

function setRadio(name, wanted, unwanted)
{
	//alert(name + " " + wanted + " " + unwanted);
	elm = document.getElementsByName(name);
	if(!elm || !elm.length)
		return;

	if(unwanted && unwanted.length) {
		for(var k = 0; k < elm.length; k++) {
			if(elm[k].value == unwanted && elm[k].checked) {
				return setRadio(name, wanted);
			}
		}
	}
	else {
		for(var k = 0; k < elm.length; k++) {
			if(elm[k].value == wanted) {
				elm[k].checked = true;
				return true;
		    }
		}
	}
	return false;
}

//function setPreferenceCombo(mode, keepClass)
//{
//	elm = document.getElementsByName('pref');
//	if(!elm || !elm.length) return;
//	var combo = elm[0];
//alert(combo.options.length);
//alert(combo.selectedIndex);
//	var actual = '';
//	if (combo.selectedIndex >= 0) actual = combo.options[combo.selectedIndex].value;
//alert('jo');	
//	if(!mode)
//		mode = actual;
//	if(keepClass) {
//		if(actual.substring(actual.length - 2) == 'YC')
//			mode += 'YC';
//		else if(actual.substring(actual.length - 1) == 'C')
//			mode += 'C';
//	}
//	alert(mode);
//	combo.value = mode;
//	switchVisibility('depTimes', (mode.substr(0, 3) == 'avb') ? 1 : 0);
//}

function setPreferenceCombo(wanted, keepClass, unwanted)
{
	elm = document.getElementsByName('pref');
	if(!elm || !elm.length)
		return;
	var combo = elm[0];
	var actual = combo.options[combo.selectedIndex].value;
	if(unwanted && actual != unwanted)
		return;
	if(!wanted)
		wanted = actual;

	if(keepClass) {
		if(actual.substring(actual.length - 2) == 'YC')
			wanted += 'YC';
		else if(actual.substring(actual.length - 1) == 'C')
			wanted += 'C';
	}
	var found = false;
	for(var m = 0; m < combo.options.length; m++) {
		if(combo.options[m].value.substr(0, wanted.length) == wanted) { //find first matching by start of wanted preference
			wanted = combo.options[m].value;
			found = true;
		}
	}
	//alert(wanted);	
	combo.value = (found) ? wanted : combo.options[0].value;
	switchVisibility('depTimes', (wanted.substr(0, 3) == 'avb') ? 1 : 0);
}


function setJourney()
{
	elm = document.getElementsByName('pref');
	if(!elm || !elm.length)
		return;
	var actual = elm[0].options[elm[0].selectedIndex].value;
	if(actual.substr(0, 3) == 'onp' || actual.substr(0, 2) == 'mp') {
		changed = setRadio('journey', 'roundTrip', 'other'); //set "roundTrip" only if "other" is checked!
		if(changed) {
			switchHidden('roundtrip');
		}
	}
}

function setDayName(prefix)
{
	if(!is.dom) return;
	var dayE = document.getElementsByName(prefix + 'Day');
	if(!dayE || !dayE.length) return;
	var day = parseInt(dayE[0].value, 10);
	var monthE = document.getElementsByName(prefix + 'Month');
	if(!monthE || !monthE[0] || !monthE[0].options) return;
	var month = monthE[0].options[monthE[0].selectedIndex].value;
	var date = getWholeDate(month, day);	
	var value = null;
	if(date)
		value = (date.getDay() == 0) ? clndr_wnames[6] : clndr_wnames[date.getDay() - 1];
	var dayName1 = document.getElementById(prefix + 'DayName');
	dayName1.value = (value) ? value : '';
}

function setDayNames()
{
	setDayName('dep');
	setDayName('arr');
}

function reLabel(elName, val)
{
	var index;
	var el = document.getElementById(elName);
	if(el)
		el.innerHTML = val;
}

function switchHidden(what)
{
	switch(what) {
		case 'off-line':
		    searchMode = 'off-line';
			iterateSwitch('depOther', 0, 1, 2);
			switchVisibility('depDates', 0);
      switchVisibility('calendars', 0);
			switchVisibility('depTimes', 0);
			switchVisibility('depIataRow2', 0);
			reLabel('from1suffix', '');
			reLabel('to1suffix', '');
			iterateSwitch('depPref', 0, 1, 4);
			iterateSwitch('depAirlines', 0, 1, 4);
			iterateSwitch('depPassengers', 0, 1, 8);
			setRadio('journey', 'roundTrip', 'other'); //set "roundTrip" only if "other" is checked!
			break;
		case 'on-line':
			searchMode = 'online';
			iterateSwitch('depOther', 1, 1, 2);
			switchVisibility('depDates', 1);
      switchVisibility('calendars', 1);
			iterateSwitch('depPref', 1, 1, 4);
			iterateSwitch('depAirlines', 1, 1, 4);
			iterateSwitch('depPassengers', 1, 1, 8);
			setPreferenceCombo(null, false);
			break;
		case 'oneway':
			typeOfFlight = 'oneway';
			document.inputdata.arrDay.disabled = true;
			document.inputdata.arrMonth.disabled = true;
			document.inputdata.retTime.disabled = true;
			switchVisibility2('arrCalendar', 0);
			switchVisibility('depIataRow2', 0);
			switchVisibility('depTimes', 0);
			reLabel('from1suffix', '');
			reLabel('to1suffix', '');
			iterateSwitch('depDate2', 0, 1, 2);
//			iterateSwitch('depTimes2', 0, 1, 2);
			setPreferenceCombo('onp', true, 'hf');
			break;
		case 'roundtrip':
			typeOfFlight = 'roundTrip';
			document.inputdata.arrDay.disabled = false;
			document.inputdata.arrMonth.disabled = false;
			document.inputdata.retTime.disabled = false;
			switchVisibility2('arrCalendar', 1);
			switchVisibility('depIataRow2', 0);
			switchVisibility('depTimes', 0);
			reLabel('from1suffix', '');
			reLabel('to1suffix', '');
			iterateSwitch('depDate2', 1, 1, 2);
//			iterateSwitch('depTimes2', 1, 1, 2);
			break;
		case 'other':
			typeOfFlight = 'other';
			document.inputdata.arrDay.disabled = false;
			document.inputdata.arrMonth.disabled = false;
			document.inputdata.retTime.disabled = false;
			switchVisibility2('arrCalendar', 1);
			switchVisibility('depIataRow2', 1);
			reLabel('from1suffix', "&nbsp;1");
			reLabel('to1suffix', "&nbsp;1");
			iterateSwitch('depDate2', 1, 1, 2);
//			iterateSwitch('depTimes2', 1, 1, 2);
			setPreferenceCombo('avb', true);
			break;
		case 'pref':
			setJourney();
			setPreferenceCombo(null, false);
			break;
	}
}

function foidType(formName, k)
{
    var Ctrl = document.forms[formName];
    eval("var foidType = (Ctrl.identificationType"+k+") ? Ctrl.identificationType"+k+".options[Ctrl.identificationType"+k+".selectedIndex].value : null;");
    if(foidType == null)
        return;

    var delivery = getRadio(formName, "delivery");
    var flag = (delivery == 'ETK') ? 1 : 0;
	switchVisibility('foidType'+k, flag);
	var flag2 = (delivery == 'ETK' && foidType != 'CL' && foidType.length) ? 1 : 0;
	switchVisibility('foidValue'+k, flag2);
}

function deliveryType(formName)
{
	var v = getRadio(formName, "delivery");
	if(!v) return false;
	var flag = (v == 'TBM' || v == 'EMS' || v == 'TBC' || v == 'TBI') ? 1 : 0;
	switchVisibility('deliveryAddressDiv', flag);
	for(var m = 0; m < 10; m++)
	    foidType('psginfo', m);
	return flag;
}

function deliveryOffice(formName)
{
	var Ctrl = document.forms[formName];
	var v = getRadio(formName, "delivery");
	var o;
	eval("o = Ctrl.office" + v + ";");
	if(v && o && o.options && !o.options[o.selectedIndex].value.length)
		return false;
	else
		return true;
}

function paymentType(formName)
{
	var v = getRadio(formName, "fop")
	if(!v) return false;
	var flag = (v == 'CCA' || v == 'CCN') ? 1 : 0;
	switchVisibility('creditDiv', flag);
	return flag;
}

function changeLocation(field) {
  var Ctrl = document.forms[pagename];
  if(typeOfFlight == 'roundtrip') {
    if(field == 'from1')
      Ctrl.to2.value = Ctrl.from1.value;
    else if(field == 'to1')
      Ctrl.from2.value = Ctrl.to1.value;
    else if(field == 'from2')
      Ctrl.to1.value = Ctrl.from2.value;
    else if(field == 'to2')
      Ctrl.from1.value = Ctrl.to2.value;
  }
}

function checkDay(value) {
  return (value.search(regnum) == -1) ? false : true;
}

function checkMonth(field) {
  return (value.search(regnum) == -1) ? false : true;
}


//vybrani v combo boxu na page2 -> zaskrtnuti prislusneho radio button
function TicketingRadioOn(id) {
  var Ctrl = document.forms['page2'];  	
  if(!Ctrl.method.length && Ctrl.method.value == id)
    Ctrl.method.click();
  else if(Ctrl.method.length) {
    for(var z=0; z<Ctrl.method.length; z++) {
       if(Ctrl.method[z].value == id) {
       	 Ctrl.method[z].click();
         break;
       }
    }
  }
  
}

function checkBirthDates(day, month, year, min, max) {
  var depDay = departureDate.substr(0,2);
  var depMonth = departureDate.substr(2,2);
  var depYear = departureDate.substr(4,2);

  year1 = parseInt(year,10)+min;
  year3 = parseInt(year,10)+max;
  var stamp1 = new Date(year3, parseInt(month,10)-1, day);
  var stamp2 = new Date(2000+parseInt(depYear,10), parseInt(depMonth,10)-1, depDay);
  var stamp3 = new Date(year1, parseInt(month,10)-1, day);
  //alert(stamp1 + "\n" + stamp2 + "\n" + stamp3);
  return ((stamp3 <= stamp2) && (stamp2 < stamp1));
}

function notExpired(month, year) {
  var now = getServerNow(); //new Date();
  if(year == now.getFullYear())
    if(month < (now.getMonth()+1))
      return false;
  return true;	
}

function removeSeparator(num) {
    var re = /[^0-9]*/gi;
    return num.replace(re, '');
}

//kontrola dle reg vyrazu a LUHN algoritmu
function check_CCnumber(cc_num, type) {
  switch(type) {
    case 'AX': if(cc_num.search(regAX) == -1) return false; break;
    case 'DC': if(cc_num.search(regDC) == -1) return false; break;
    case 'EC':
    case 'CA': if(cc_num.search(regCA) == -1) return false; break;
    case 'VI': if(cc_num.search(regVI) == -1) return false; break;
    default: return true;	//neznamy typ karty - nekontrolovat
  }
  //LUHN algoritmus
  var ar = new Array(cc_num.length);
  var i = 0, suma = 0;
  for(i=0; i<cc_num.length; ++i)
    ar[i] = parseInt(cc_num.charAt(i));

  for(i=ar.length-2; i>=0; i-=2) {
    ar[i] *= 2;	
    if( ar[i] > 9 ) ar[i]-=9;
  }
		
  for(i=0; i<ar.length; ++i)
     suma += ar[i];		
  return ( (suma%10) == 0 );
}

function changeFF(num) {
  var Ctrl = document.forms['page4'];
  eval("var ffprog = Ctrl.ff_prog"+num+".options[Ctrl.ff_prog"+num+".selectedIndex].value;");
  if(ffprog.length == 0)
    eval("Ctrl.ff_num"+num+".value = '';");
}

function fullnameLength(surname, firstname, title) {
    var fullname = "" + surname + "/" + firstname + "" + title;
    return (fullname.length <= 27);
}

//calendars start
function dummy(){}
var openedCalendar = null;
var clndrSetDates = new Array();
//mn - month names
//wd - week names
//hc,bc - barvy
//r1 - day field, r2 - month field, r3 - year field, f - formaty
function clndr(ti,mi,mx,mn,wd,ho,hc,bc,r1,f1,r2,f2,r3,f3) {
    if(openedCalendar && !window.openedCalendar.closed) {
    	window.openedCalendar.close();
    	window.openedCalendar = null;
    }
    clndr_wi=window.open('about:blank','clndr_wi',"location=0,menubar=0,resizable=0,scrollbars=0,status=0,toolbar=0,width=186,height=146,left="+Math.floor((screen.width-196)/2)+",top="+Math.floor((screen.height-175)/2));
    openedCalendar = clndr_wi;
    clndr_ho=new Array();
    clndr_mn=new Array();
    clndr_wd=new Array();
    clndr_ms=new Array(31,28,31,30,31,30,31,31,30,31,30,31);
    clndr_dd=new Date();
    clndr_td=new Date();
    clndr_hd=new Date();
    for(i=0;i<ho.length;i++) if(ho[i].charAt(ho[i].length-1)==".") clndr_ho[i]=ho[i].substring(0,ho[i].length-1);
	    else clndr_ho[i]=ho[i];
    for(i=0;i<mn.length;i++) clndr_mn[i]=encodeURIComponentFull(mn[i]);
    for(i=0;i<7;i++) clndr_wd[i]=encodeURIComponentFull(wd[i]);
	    
    clndr_mi=clndr_mm(mi);
    clndr_mx=clndr_mm(mx);
    clndr_mx.setHours(23);
    clndr_mx.setMinutes(59);
    clndr_ti=encodeURIComponentFull(ti);
    clndr_hc=hc;
    clndr_bc=bc;
    clndr_r1=r1;
    clndr_r2=r2;
    clndr_r3=r3;
    clndr_f1=f1;
    clndr_f2=f2;
    clndr_f3=f3;
    if(clndrSetDates[clndr_ti])
      clndr_td = clndr_mm(clndrSetDates[clndr_ti]);
    clndr_sh();
}
function clndr_sh() {
    
    var i,pd,bm,yr,ho;
    var wd=clndr_wi.document;
    wd.open();
    wd.write("<html>\n<head>\n");
    if(document.all) wd.write("<meta http-equiv=\"Content-Type\" content=\"text/html; charset="+document.charset+"\">\n");
    wd.write("<title>"+decodeURIComponent(clndr_ti)+"&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </title>");
    wd.write("<style>\ntd { background-color: "+clndr_bc+"; text-align: center; font-style: normal; font-size: 11px; font-family: Tahoma, Arial, Helvetica, sans-serif; } input, select { font-size: 11px; } .no { color: #cccccc; } .ce { color: #dd0000; } .mi { color: #555555; } a, a:link, a:visited { color: #000000; text-decoration: none; } a:hover { color: #990000; text-decoration: none; } .border { background-color: "+clndr_hc+"; } .head { background-color: "+clndr_hc+"; }");
    wd.write("</style>\n<scr"+"ipt language=javascript>\n");
    wd.write("\nfunction ff(v) { var id='"+clndr_ti+"'; window.opener.clndr_ff(v,id); }");
    wd.write("\nfunction sm(v) { window.opener.clndr_td.setMonth(v); window.opener.clndr_sh(); }");
    wd.write("\nfunction sy(v) { window.opener.clndr_td.setFullYear(v); window.opener.clndr_sh(); }");
    wd.write("</scr"+"ipt>\n");
    wd.write("</head>\n<body topmargin=3 leftmargin=3 marginheight=3 marginwidth=3>");
    wd.write("<table width=180 cellpadding=1 cellspacing=0 border=0><tr><td class=border>\n<table width=100% cellpadding=0 cellspacing=0 border=0><tr><td width=20 class=head>");
    if((clndr_td.getFullYear()>clndr_mi.getFullYear())||((clndr_td.getMonth()!=0)&&(clndr_td.getFullYear()==clndr_mi.getFullYear()))) wd.write("<a href=\"javascript:sm("+(clndr_td.getMonth()-1)+")\"><b>&lt;</b></a>");
    else wd.write("<b>&lt;</b>");
	wd.write("</td><td class=head><form style=\"margin: 0px;\"><select style=\"width: 80px;\" name=\"m\" onchange=\"sm(this[this.selectedIndex].value);\">");
	for(i=0;i<12;i++) {
	    wd.write("<option value="+i);
	    if(i==(clndr_td.getMonth())) { wd.write(" selected "); }
	    wd.write(">"+decodeURIComponent(clndr_mn[i])+"</option>\n");
	}
	wd.write("</select><select name=r onchange=\"sy(this[this.selectedIndex].value);\">");
	for(i=clndr_mi.getFullYear();i<(clndr_mx.getFullYear()+1);i++) {
	    wd.write("<option value="+i);
	    if(i==clndr_td.getFullYear()) wd.write(" selected ");
	    wd.write(">"+i+"</option>\n");
	}
	wd.write("</select></form></td><td class=head width=20>");
    if((clndr_td.getFullYear()<clndr_mx.getFullYear())||((clndr_td.getMonth()!=11)&&(clndr_td.getFullYear()==clndr_mx.getFullYear()))) wd.write("<a href=\"javascript:sm("+(clndr_td.getMonth()+1)+")\"><b>&gt;</b></a>");
    else wd.write("<b>&gt;</b>");
    wd.write("</td></tr></table><table width=100% cellpadding=2 cellspacing=0 border=0><tr>");
    for(i=0;i<6;i++) wd.write("<td width=20><b>"+decodeURIComponent(clndr_wd[i])+"</b></td>");
    wd.write("<td width=20><span class=ce><b>"+decodeURIComponent(clndr_wd[6])+"</b></span></td></tr>\n");
    clndr_td.setDate(1);
    pd=clndr_td.getDay()-1;
    clndr_rc=0;
    if(pd==-1) pd=6;
	bm=clndr_td.getMonth();
	yr=clndr_td.getFullYear();
	if(bm==0) {
	    clndr_td.setMonth(11);
	    clndr_td.setFullYear(yr-1);
	    clndr_ol();
	} else clndr_td.setMonth(bm-1);
	for(i=clndr_ms[clndr_td.getMonth()]-pd+1;i<=clndr_ms[clndr_td.getMonth()];i++) {
	    clndr_td.setDate(i);
 	    if(clndr_td.getDay()==0) ho="class=ce";
	    else ho="";
	    wd.write("<td>&nbsp</td>");
	}
	clndr_td.setDate(1);
	clndr_td.setMonth(bm);
	clndr_td.setFullYear(yr);
	clndr_ol();
	
	ourDate = new Date( );
	
	for(i=0;i<clndr_ms[(clndr_td.getMonth())];i++) {
	    clndr_td.setDate(i+1);
	    if((clndr_td.getDay()==1)&&(clndr_td.getDate()!=1)) {
	 	    wd.write("</tr>\n<tr>");
	 	    clndr_rc++;
	    } else if((clndr_td.getDay()==1)&&(clndr_td.getDate()==1)) wd.write("<tr>");
	    if(clndr_td.getDay()==0) ho="class=ce";
	    else ho="";
 	    for(j=0;j<clndr_ho.length;j++) {
 	    	 if((clndr_ho[j].substring(0,clndr_ho[j].indexOf("."))==clndr_td.getDate())&&(clndr_ho[j].substring(clndr_ho[j].indexOf(".")+1,clndr_ho[j].length)==(clndr_td.getMonth()+1))) {
 	    	 	 ho="class=ce";
 	    	 	 }
 	    }
 	    
	    if(((clndr_td.getTime() + 24*60*60) <  ourDate.getTime())){
	    	 wd.write("<td "+ho+"><span class=no>"+clndr_td.getDate()+"</span></td>");
	     }
	    else if(ho=="") {
	    	 wd.write("<td style=\"text-decoration: underline;\"><a href=\"javascript:ff('"+clndr_td.getDate()+"."+(clndr_td.getMonth()+1)+"."+clndr_td.getFullYear()+"')\">"+clndr_td.getDate()+"</a></td>");
	     }
	    else  {
	    	wd.write("<td style=\"text-decoration: underline;\"><a href=\"javascript:ff('"+clndr_td.getDate()+"."+(clndr_td.getMonth()+1)+"."+clndr_td.getFullYear()+"')\"><span class=ce>"+clndr_td.getDate()+"</span></a></td>");
	    }
		
		
			    
	}
	clndr_td.setDate(1);
	clndr_td.setMonth(bm+1);
	pd=clndr_td.getDay()-1;
	if(pd==0) pd=20;
	if(pd==-1) pd=6;
	for(i=1;i<=(7-pd);i++) {
	    wd.write("<td>&nbsp</td>");
	    clndr_td.setDate(i);
	    if(clndr_td.getDay()==0) ho="class=ce";
	    else ho="";
	}
	clndr_td.setDate(1);
	clndr_td.setMonth(bm);
	clndr_td.setFullYear(yr);
	clndr_ol();
    if(clndr_rc<5) wd.write("</tr><tr><td colspan=7>&nbsp;</td>");
    wd.write("</tr></table></td></tr></table></body></html>");
    wd.close();
    window.clndr_wi.focus();
}
function clndr_mm(ta) {
    var td=new Date();
    ta=ta.split(".");
    td.setDate(ta[0]);
    td.setMonth(ta[1]-1);
    td.setFullYear(ta[2]);
    td.setHours(0);
    td.setMinutes(0);
    return(td);
}
function clndr_ol() {
    var y=clndr_td.getFullYear();
	if (0 == y%4 && ((y%100 != 0) || (y%400 == 0))) clndr_ms[1]=29;
	else  clndr_ms[1]=28;
}
function clndr_ff(dt,id) {
    var f,r,fr,d,dd,m,mm,mmm,yy,yyyy;
        clndrSetDates[id] = dt;
    var msn=Array('JAN','FEB','MAR','APR','MAY','JUN','JUL','AUG','SEP','OCT','NOV','DEC');
	dt=dt.split(".");
	d=dt[0];
	if(d<10) dd="0"+d;
	else dd=d;
	m=dt[1];
	if(m<10) mm="0"+m;
	else mm=m;
	mmm = msn[m-1];
	yyyy=dt[2];
	yy=yyyy.substring(2,4);
	for(i=1;i<=3;i++) {
	    r=eval("clndr_r"+i);
	    f=eval("clndr_f"+i);
	    if((r)&&(f!="undefined")) {
		    fr=f.replace("dd",dd);
		    fr=fr.replace("d",d);
		    fr=fr.replace("mmm",mmm);
		    fr=fr.replace("mm",mm);
		    fr=fr.replace("m",m);
		    fr=fr.replace("yyyy",yyyy);
		    fr=fr.replace("yy",yy);
        	r.value=fr;
    	}
    }
    
    if(id == 'Odlet') {
    	document.getElementById('depYear').value = yyyy;
    } else {
    	document.getElementById('arrYear').value = yyyy;
    }
    
    window.clndr_wi.close();
	setDayName('dep');
	setDayName('arr');
    openedWindow = false;
}
function encodeURIComponentFull(text) { // opravuje nedokonalost fce encodeURIComponent
    var reg;
    text = encodeURIComponent(text);
    reg = new RegExp('\\x2d', 'gm');
    text = text.replace(reg, '%2D'); //-
    reg = new RegExp('\\x5f', 'gm');
    text = text.replace(reg, '%5F'); //_
    reg = new RegExp('\\x2e', 'gm');
    text = text.replace(reg, '%2E'); //.
    reg = new RegExp('\\x21', 'gm');
    text = text.replace(reg, '%21'); //!
    reg = new RegExp('\\x7e', 'gm');
    text = text.replace(reg, '%7E'); //~
    reg = new RegExp('\\x2a', 'gm');
    text = text.replace(reg, '%2A'); //*
    reg = new RegExp('\\x27', 'gm');
    text = text.replace(reg, '%27'); //'
    reg = new RegExp('\\x28', 'gm');
    text = text.replace(reg, '%28'); //(
    reg = new RegExp('\\x29', 'gm');
    text = text.replace(reg, '%29'); //)
    return text;
}
function clndr_as(co) {
 var k;
 var n="aAaAcCdDeEeEeEiIlLlLnNoOoOoOrRrRsStTuUuUuUyYzZ";
 var o="áÁäÄčČďĎéÉëËěĚíÍĺĹľĽňŇóÓôÔöÖŕŔřŘšŠťŤúÚůŮüÜýÝžŽ";
 for(k=0;k<n.length;k++) co=co.replace(o[k],n[k]);
 return(co);
}

function checkDates() {
    var date1 = correctDates(1);
    var date2 = correctDates(2);
    if (date1 > date2) return false;
    return true;
}
function correctDates(formName, calName, dayField, monthField, force) {
    var dobj;
    eval("dobj = document.forms['" + formName + "']."+dayField+";");
    var mobj;
    eval("mobj = document.forms['" + formName + "']."+monthField+";");
    if (!force & ((dobj.value == 'TT') || (mobj.value == 'MM') || (dobj.value == 'den') || (mobj.value == ''))) return;
    var today = new Date();
    var d = parseInt(dobj.value);
    if (!d) d = today.getDate();
    var m = parseInt(mobj.value);
    if (!m) m = today.getMonth()+1;
    var lastDay = new Date();
	lastDay.setTime(Date.UTC(today.getFullYear(), today.getMonth(), today.getDate(), 0, 0, 0) + (331*24*60*60*1000));
    var y = today.getFullYear();
    if (m < today.getMonth()+1) y++;
    var date = new Date(y, m-1, d, 0, 0, 0);
    if (date > lastDay) date = lastDay;
    if (date < today) date = today;
    //if (dobj.value != date.getDate()) dobj.value = date.getDate();
    //if (mobj.value != date.getMonth()+1) mobj.value = date.getMonth()+1;
    clndrSetDates[encodeURIComponentFull(calName)] = date.getDate() + '.' + String(date.getMonth()+1) + '.' + date.getFullYear();
    return date;
}
function modifyStartDate(formName, cn1, cn2, d1, m1, d2, m2) {
    var obj = document.forms[formName].dateStart2;
    var date1 = correctDates(formName, cn1, d1, m1);
    var date2 = correctDates(formName, cn2, d2, m2, true);
    if (!date1) return;
    if (date1 > date2) {
        eval("var d2obj = document.forms['" + formName + "']." + d2);
        eval("var m2obj = document.forms['" + formName + "']." + m2);
        d2obj.value = date1.getDate();
        m2obj.value = date1.getMonth() + 1;
        date2 = correctDates(formName, cn2, d2, m2);
    }
    var x = '';
    if (date1.getDate() < 10) x = '0';
    x = x + String(date1.getDate()) + '.';
    if (date1.getMonth() < 9) x = x + '0';
    x = x + String(date1.getMonth() + 1) + '.' + String(date1.getFullYear());
    obj.value = x;
}
//calendars end


//univerzal funkce pro odkazy do noveho okna
function goLocation(href, prefWidth, prefHeight) {
  var _width  = (prefWidth)  ? prefWidth  : 640;
  var _height = (prefHeight) ? prefHeight : 480;
  w = window.open(href, "info", "resizable=yes,scrollbars=yes,width=" + _width + ",height=" + _height + ",left="+Math.floor((screen.width-_width)/2)+",top="+Math.floor((screen.height-_height)/2));
  if(w) w.focus();
}

//univerzal funkce pro tisk  do noveho okna
function goPrint(href) {
  w = window.open(href, '_blank','resizable=yes,toolbar=yes,scrollbars=yes,width=700,height=455,left='+Math.floor((screen.width-710)/2)+',top='+Math.floor((screen.height-500)/2));
  if(w) w.focus();
}

//verisign digital id
function verisign(url) {
    var w=window.open(url,"win",'toolbar=0,location=0,directories=0,status=1,menubar=1,scrollbars=1,resizable=1,width=720,height=440');
}

function switchHidden1(nazev, sender) { //zmena visibility pro index.php
    var value1, value2, value, i, teerka;
    if ((nazev != '') && (sender)) {
        if (sender.checked) {
            if ((teerka = document.getElementById('depIATA')) && (value = document.getElementById('depIATA_1'))) value.value = teerka.value;
            value1 = 'none';
            value2 = '';
            if (teerka.form) {
                if (teerka.form.pricerType[1].checked) { //availibility
                    teerka.form.pricerType[1].checked = false; //availibility
                    teerka.form.moreReturns.checked = false; //availibility - more returns
                    teerka.form.pricerType[0].checked = true; //online

                    if (teerka = document.getElementById('moreHide_1')) teerka.style.display = value1;
                }
            }
        } else {
            if ((teerka = document.getElementById('depIATA')) && (value = document.getElementById('depIATA_1'))) teerka.value = value.value;
            value1 = '';
            value2 = 'none';
        }
        for (i=1;i<=7;i++) { //zmena visibility do stavu 1
            if (teerka = document.getElementById(nazev+'_'+i)) teerka.style.display = value1;
        }
        for (i=1;i<=4;i++) { //zmena visibility do stavu 2
            if (teerka = document.getElementById(nazev+'_1'+i)) teerka.style.display = value2;
        }
    }
    return true;
}
function switchHidden2(nazev, sender) { //zmena visibility pro index.php
    var value1, value2, value, i, teerka;
    if ((nazev != '') && (sender) && (sender.form)) {
        if (sender.form.pricerType[2].checked) { //offline
            value1 = 'none';
            value2 = '';
        } else {
            value1 = '';
            value2 = 'none';
        }
        if (sender.form.pricerType[3].checked == false) { //masterpricer
            if (teerka = document.getElementById('directHide')) teerka.checked = false;
        }
        if (sender.form.pricerType[1].checked == false) { //masterpricer
            if (teerka = document.getElementById('moreHide')) teerka.checked = false;
            if (teerka = document.getElementById('moreHide_1')) teerka.style.display = "none";
        }

        for (i=1;i<=14;i++) { //zmena visibility do stavu 1
            if (teerka = document.getElementById(nazev+'_'+i)) teerka.style.display = value1;
        }
    }
    return true;
}
function switchHidden3(nazev, sender) { //zmena visibility pro index.php
    var value1, value2, value, i, teerka;
    if ((nazev != '') && (sender) && (sender.form)) {
        if (!sender.checked) { //offline
            value1 = 'none';
            value2 = '';
        } else {
            value1 = '';
            value2 = 'none';
        }
        for (i=1;i<=1;i++) { //zmena visibility do stavu 1
            if (teerka = document.getElementById(nazev+'_'+i)) teerka.style.display = value1;
        }
    }
    return true;
}
function selectCheckBoxOfPricerType(nazev, sender, order) { //zmena visibility pro index.php MasterPricer
    var value1, value2, value, i, teerka;
    if ((nazev != '') && (sender) && (sender.form)) {
        if (sender.checked) {
            for(var i = 0; i < 4; i++) {
                if(order == i) {
                    sender.form.pricerType[i].checked = true;
                } else {
                    sender.form.pricerType[i].checked = false;
                }
            }
            switchHidden2(nazev, sender);
        }
    }
}
function fromIATA_check(checkbx, objname) {
    var ele, teerka;
    if ((ele = document.getElementById(checkbx)) && ele.checked) {
        if (ele = document.getElementById(objname)) {
                var value = '';
                for (i=1;i<=3;i++) {
                    teerka = document.getElementById(objname+'_'+i);
                    if(teerka.type.toLowerCase() == "text") {
                        if (teerka && (teerka.value != '')) value += teerka.value + ':';
                    } else if(teerka.type.toLowerCase() == "select") {
                        value += teerka.options[teerka.selectedIndex].value + ':'
                    }
                }
                value = value.substring(0, value.length-1);
                if(ele.type.toLowerCase() == "text") {
                    ele.value = value;
                } else if(ele.type.toLowerCase() == "select") {
                    ele.options[ele.selectedIndex].value = value;
                }
        }
    }
    return true;  
}

function postSelection(el, status, name, index, cssClassName)
{
	swapImages(el, status);
    if(status && lastSelected && lastSelected[index])	//remove selection from previous
    	setCssClass(lastSelected[index], '');
    setCssClass(name, (status) ? cssClassName : '');	//select new one
    if(index !== null)
		lastSelected[index] = name;
}

function swapImages(el, status)
{
    if(el)
	    el.src = (status) ? minus.src : plus.src;
}

function daySelected(el, route)
{
	var name = el.value + route;
	if(el.checked && lastSelected && lastSelected[route]) {  //remove selection from previous
		setCssClass(lastSelected[route], '');
	}
	setCssClass(name, (el.checked) ? 'active' : '');		 //select new one
	lastSelected[route] = name;
}

function setAirport(num, airport)
{
    var op = window.opener;
    if(!op || !op.document.forms['inputdata'])
        return;
    var el = null;
    switch(num) {
        case 0: el = op.document.forms['inputdata'].from1;  break;
        case 1: el = op.document.forms['inputdata'].to1;    break;
        case 2: el = op.document.forms['inputdata'].from2;  break;
        case 3: el = op.document.forms['inputdata'].to2;    break;
		case 4: el = op.document.forms['inputdata'].code;   break;
    }
	if(op && el) {
	    el.value = airport;
	}
}

function addAirline(airline, emptyStringValue)
{
    var op = window.opener;
	if(op && op.document.forms['inputdata'] && op.document.forms['inputdata'].airlines) {
	    val = op.document.forms['inputdata'].airlines;
	    if(val.value == emptyStringValue)
	        val.value = '';
	    if(val.value.search(new RegExp(airline, "i")) == -1) {
            if(val.value.length)
	            val.value += ", ";
	        val.value += airline;
	    }
	}
}

function trim(obj) {
    if (obj && obj.value != undefined) {
        var regWS = new RegExp('^[\\x20|\\xA0|\\x0A|\\x0D|\\x09]*((.*[^\\x20|\\xA0|\\x0A|\\x0D|\\x09])[\\x20|\\xA0|\\x0A|\\x0D|\\x09]*)?$', 'gm');
        obj.value = obj.value.replace(regWS, '$2');
    }
}

//function classString_trim() {
//    return this.replace(this.regWS, '$2');
//}
//function classString_searchT(reg) {
//    var x = this.trim();
//    return x.search(reg);
//}
//function classString_lengthT() {
//    var x = this.trim();
//    return x.length;
//}
//String.prototype.regWS = new RegExp('^[\\x20|\\xA0|\\x0A|\\x0D|\\x09]*((.*[^\\x20|\\xA0|\\x0A|\\x0D|\\x09])[\\x20|\\xA0|\\x0A|\\x0D|\\x09]*)?$', 'gm');
//String.prototype.trim = classString_trim;
//String.prototype.searchT = classString_searchT;
//String.prototype.lengthT = classString_lengthT;


//general images
var plus = new Image();
plus.src='/imgs/box.gif';
var minus = new Image();
minus.src='/imgs/min.gif';

