// validare campuri numerice

function checkNumeric(objName,displayName,minval, maxval,comma,period,hyphen)
{
	var numberfield = objName;
	if (chkNumeric(objName,displayName,minval,maxval,comma,period,hyphen) == false)
	{
		numberfield.select();
		numberfield.focus();
		return false;
	}
	else
	{
		return true;
	}
}

function chkNumeric(objName,displayName,minval,maxval,comma,period,hyphen)
{
    // only allow 0-9 be entered, plus any values passed
    // (can be in any order, and don't have to be comma, period, or hyphen)
    // if all numbers allow commas, periods, hyphens or whatever,
    // just hard code it here and take out the passed parameters
    var checkOK = "0123456789" + comma + period + hyphen;
    var checkStr = objName;
    var allValid = true;
    var decPoints = 0;
    var allNum = "";
    
    for (i = 0;  i < checkStr.value.length;  i++)
    {
        ch = checkStr.value.charAt(i);
        for (j = 0;  j < checkOK.length;  j++)
            if (ch == checkOK.charAt(j))
                break;
        if (j == checkOK.length)
        {
            allValid = false;
            break;
        }
        if (ch != ",")
        allNum += ch;
    }
    if (!allValid)
    {	
        alertsay = "Please enter only numerical values "
        alertsay = alertsay + " in \"" + displayName + "\" field."
        alert(alertsay);
        return (false);
    }
    
    // set the minimum and maximum
    var chkVal = allNum;
    var prsVal = parseInt(allNum);
    if (chkVal != "" && !(prsVal >= minval && prsVal <= maxval))
    {
        alertsay = "Please enter a value greater or "
        alertsay = alertsay + "equal than \"" + minval + "\" and smaller or "
        alertsay = alertsay + "equal than \"" + maxval + "\" in \"" + displayName + "\" field."
        alert(alertsay);
        return (false);
    }
}



// validare data

function CheckDate(field, canbeempty)
{
     var checkstr = "0123456789";
     var DateField = field;
     var Datevalue = "";
     var DateTemp = "";
     var seperator = "-";
     var day;
     var month;
     var year;
     var leap = 0;
     var err = 0;
     var i;
     err = 0;
     DateValue = DateField.value;
	 if (DateField.value.length != 10)
	 {
		 return false;
     	err = 19;
	  }
     //se verifica daca are valoare
     if (canbeempty && (DateValue.length == 0))
        return true;
     // sterge toate caracterele cu exceptia 0..9
     for (i = 0; i < DateValue.length; i++) {
          if (checkstr.indexOf(DateValue.substr(i,1)) >= 0) {
             DateTemp = DateTemp + DateValue.substr(i,1);
          }
     }
     DateValue = DateTemp;
     // se verifica daca stringul obtinut are 8 digiti
     if (DateValue.length != 8) {
      err = 19;}
     // daca anul introdus e 0000 -> eroare
     year = DateValue.substr(4,4);
     if ((year == 0) || (year < 1901) || (year > 2038)) {
      err = 20;
     }
     // validarea lunii intre 1..12
     month = DateValue.substr(2,2);
     if ((month < 1) || (month > 12)) {
      err = 21;
     }
     // validarea zilei >1
     day = DateValue.substr(0,2);
     if (day < 1) {
      err = 22;
     }
     // validarea lunii Februarie pt ani bisecti
     if ((year % 4 == 0) || (year % 100 == 0) || (year % 400 == 0)) {
      leap = 1;
     }
     if ((month == 2) && (leap == 1) && (day > 29)) {
      err = 23;
     }
     if ((month == 2) && (leap != 1) && (day > 28)) {
      err = 24;
     }
     // validarea lunilor cu 31 de zile si a celor cu 30 de zile
     if ((day > 31) && ((month == "01") || (month == "03") || (month == "05") || (month == "07") || (month == "08") || (month == "10") || (month == "12"))) {
      err = 25;
     }
     if ((day > 30) && ((month == "04") || (month == "06") || (month == "09") || (month == "11"))) {
      err = 26;
     }
     // daca se introduce 00.00.0000 semnalez eroare
     if ((day == 0) && (month == 0) && (year == 0000)) {
      err = 27;
     }
     // daca nu a fost nici o eroare, rescriu campul
     if (err == 0) {
      DateField.value = day + seperator + month + seperator + year;
      return true;
     }
     // daca am eroare afisez alerta
     else {      
      DateField.select();
      DateField.focus();
      return false;
     }
}

// validare email

function CheckEmail(value)
{
	var emailReg = "^[\\w-_\.]*[\\w-_\.]\@[\\w]\.+[\\w]+[\\w]$";
	var regex = new RegExp(emailReg);
	// validare mail
	if ((regex.test(value)==false) && (value.length!=0))
	{	      
		return false;
	}
	return true;
}

// promotii index

function change_color_over(cellid, path)
{   
    document.getElementById("cell" + cellid).style.backgroundColor='#FFC549';
    document.getElementById("rcell" + cellid).style.backgroundColor='#FFC549';
    document.getElementById("afont" + cellid).style.color='#8A6A26';
    document.getElementById("bfont" + cellid).style.color='#8A6A26';
    document.getElementById("cfont" + cellid).style.color='#8A6A26';
    document.getElementById("dfont" + cellid).style.color='#8A6A26';
    MM_swapImage('Image' + cellid,'',path + 'pics/promoplane_icon_over.gif',1)
}

function change_color_out(cellid)
{   
    document.getElementById("cell" + cellid).style.backgroundColor='#FFE7B3';
    document.getElementById("rcell" + cellid).style.backgroundColor='#FFE7B3';
    document.getElementById("afont" + cellid).style.color='#CCA85C';
    document.getElementById("bfont" + cellid).style.color='#CCA85C';
    document.getElementById("cfont" + cellid).style.color='#CCA85C';
    document.getElementById("dfont" + cellid).style.color='#CCA85C';
    MM_swapImgRestore();
}

// image over

function MM_swapImgRestore() { //v3.0
    var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}
    
function MM_preloadImages() { //v3.0
    var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}
    
function MM_findObj(n, d) { //v4.0
    var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
    if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
    for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
    if(!x && document.getElementById) x=document.getElementById(n); return x;
}
    
function MM_swapImage() { //v3.0
    var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
    if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}
            
/* deschidere popup imagine */
function open_image(path,w,h) {
	var properties = 'status=no,toolbar=0,scrollbars=no,menubar=0,titlebar=0,resizable=1,width='+w+',height='+h+'';
	var new_fer = window.open(path,"imagine",properties);
	new_fer.focus();
}

// vlad
// deschidere popup evenimente
function open_ev_popup(path, h)
{
	var properties = 'alwaysRaised=1,toolbar=0,location=0,directories=0,status=0,menubar=0,scrollbars=0,resizable=0,width=500,height='+h+',left='+((screen.width-h)/2)+',top='+((screen.height-400)/2)+'';
	var new_fer = window.open(path,"imagine_eveniment",properties);
	new_fer.focus();
}

/**************************/
/* functii meniu          */

/* mouse over menu item */
function change_clas(ob,tt) {
	
	switch (tt) {
		case 'over' :
			ob.className = 'tdMenuOver';	
			break;
		case 'out' :
			ob.className = 'tdMenu';	
			break;
		case 'outY' :
			ob.className = 'tdMenuY';	
			break;
	}
}

/* mouse over submenu item */
function change_sub_clas(ob,tt) {
	
	switch (tt) {
		case 'over' :
			ob.className = 'tdSubMenuOver';	
			break;
		case 'out' :
			ob.className = 'tdSubMenu';	
			break;
	}
}

/* show submenu */
function show_menu(ob,nr) {
	hide_menu();
	change_clas(ob,'over');
	
	if (document.all) {
		n=0; 
		ie=1;
	}
	else {
		n = 1;
		ie = 0;	
	}
	var menu = document.getElementById('menu'+nr);
	var top = ob.offsetTop;
	var left = 0;
	var width = ob.offsetWidth;
	var x = ob;
	while(x = x.offsetParent) {
		left += x.offsetLeft;
		top += x.offsetTop;
	}
	left = eval(left)+ob.offsetLeft;	
	top = eval(top)+ob.offsetHeight;
	menu.style.top=top;
	menu.style.left=left;
	menu.style.width=width;
	menu.style.visibility = 'visible';
	ob.focus();
}

/* hide all submenus */
function hide_menu() {
	var table = document.getElementById('table_menu');
	var nrSubmenu = document.getElementById('nrSubmenu');
	var i = 0;
	var temp;
	
	if(nrSubmenu) {
		nrS = nrSubmenu.value;
	}
	else {
		nrS = 0;
	}
	while(i<=nrS) {
		menu = document.getElementById('menu'+i);
		if (menu) {
			menu.style.width = "1px";
			menu.style.visibility = 'hidden';
		}
		i++;
	}
}

/* end functii meniu      */
/**************************/



/************************/
/*   functii formular   */

function submit_opinie() {
	var frm = document.getElementById('frm');
	var name = frm.name;
	var email = frm.email;
	var text = frm.text;
	// completare campurilor
	if( 
		(name.value == '') ||
		(email.value == '') ||
		(text.value == '')
		)
		{
		alert(frm.alert.value);
		return;
	}
	// validare email
	arr_inf=new Array();
	arr_inf=email.value.split('@');
	if ((arr_inf[0]!='') && (arr_inf.length==2)) {
	    arr_inf=arr_inf[1].split('.');
	    if ((arr_inf[0]!='') && (arr_inf.length>=2) && (arr_inf[1]!='')) {
			frm.submit();
	    }
	    else {
			alert(frm.alertEmail.value);
			return;
		  }
	}
	else {
	    alert(frm.alertEmail.value);
		return;
	} 
}

function submit_confirm() {
	var frm = document.getElementById('frm');
	var i = 0;
	while(i<frm.length) {
		if(frm[i].value == '') {
			alert("Toate cāmpurile sunt obligatorii!");
			return false;
		}
		i++;
	}
	frm.submit();
}

/* vlad bomboe begin */
/* submit cariere */

function IsEmpty(value)
{
	v = "" + value;
    if (v.length==0)
	    return true;
	for (i=0;i<v.length;i++)
	{
		ch=v.charAt(i);
	    if (ch !=' ' && ch!= '\t')
	    	return false;
	}
	return true;
}

function IsNumber(value)
{
        v = "" + value;
        if (IsEmpty(v))
                return true;
        for (i=0;i<v.length;i++)
        {
                ch=v.charAt(i);
                if ((ch < '0' || ch > '9') && (ch != '.')) return false;

        }
        return true;
}

function submit_cariera(cat) {
	var frm = document.getElementById('frm');
	var nume = frm.nume;
	var oras = frm.oras;
	var telefon = frm.telefon;
	var email = frm.email;
	var problem = 0;
	// completare campurilor
	if( 
		(nume.value == '') ||		
		(oras.value == '') ||		
		(telefon.value == '')
		)
		{
		alert(frm.alert.value);
		problem = 1;
		return;
	}
	// validare email
	arr_inf=new Array();
	if (email.value != '')
	{
		arr_inf=email.value.split('@');
		if ((arr_inf[0]!='') && (arr_inf.length==2)) {
		    arr_inf=arr_inf[1].split('.');
		    if ((arr_inf[0]!='') && (arr_inf.length>=2) && (arr_inf[1]!='')) {
				problem = problem;
		    }
		    else {
				alert(frm.alertEmail.value);
				problem = 1;
				return;
			  }
		}
		else {
		    alert(frm.alertEmail.value);
		    problem = 1;
			return;
		}
	} 
	
	// validare numere
	
	if ((cat==1)&&(!IsEmpty(frm.nr_potentiali_clienti.value)))
	{
		var nr = frm.nr_potentiali_clienti.value;		
		if (!IsNumber(nr))
		{
			alert(frm.alertNumar.value);
			problem = 1;
			return;
		} 
	} 
	
	if ((cat==2)&&(!IsEmpty(frm.nr_clienti_firma.value))) {
		var nr = frm.nr_clienti_firma.value;
		if (!IsNumber(nr))
		{
			alert(frm.alertNumar.value);
			problem = 1;
			return;
		} 
	} 

	if (problem == 0)
		frm.submit();
	
}

function CompareDates(date1, date2)
{    
    // returns:
    // 0 if the dates are same 
    // -1 if date1 is an earlier date 
    // 1 if date1 is a later date 

    var oArray;
    var iArray;
    
    oArray = date1.split("-");
    iArray = date2.split("-");
    
    date1 = oArray[0];
    month1 = oArray[1]-1;
    year1 = oArray[2];
    date2 = iArray[0];
    month2 = iArray[1]-1;
    year2 = iArray[2];
    
    if (year1 > year2) return 1;
    else if (year1 < year2) return -1;
    else if (month1 > month2) return 1;
    else if (month1 < month2) return -1;
    else if (date1 > date2) return 1;
    else if (date1 < date2) return -1;
    else return 0;

}

/* vlad bomboe end */

/* end functii formular */
/************************/


// functii booking

function FillHiddenFields()
{
    var oArray;
    var iArray;
    
    var oD = document.getElementById('outboundDay');
    var oM = document.getElementById('outboundMonth');
    var oY = document.getElementById('outboundYear');
    var iD = document.getElementById('inboundDay');
    var iM = document.getElementById('inboundMonth');
    var iY = document.getElementById('inboundYear');
    
    var dateO = document.getElementById('txtDateDep');
    var dateI = document.getElementById('txtDateRet');
    
    if (dateO.value.indexOf("-") >= 0)
        oArray = dateO.value.split("-");
        
    if (dateI.value.indexOf("-") >= 0)
        iArray = dateI.value.split("-");
    
    if (oArray.length == 3)
    {
        oD.value = oArray[0];
        oM.value = oArray[1]-1;
        oY.value = oArray[2];
    }
    
    if (iArray.length == 3)
    {
        iD.value = iArray[0];
        iM.value = iArray[1]-1;
        iY.value = iArray[2];
    }
    
}

function ValidateOrderForm(mandatory_message, wrong_date_format_message, wrong_timespan_message, one_adult_message, invalid_route)
{
	// validare ruta la booking
	from = document.getElementById('fromAirport').value;
	to = document.getElementById('toAirport').value;		
	/*if ( (from==to) ||  
		 ((from!=35)&&(to!=6)) || ((from!=36)&&(to!=6)) || ((from!=37)&&(to!=6)) ||
		 ((from==36)&&(to!=37)&&(to!=35)) ||
		 ((from==37)&&(to!=36)&&(from==37)&&(to!=6)) ||
		 ((from==35)&&(to!=36)&&(from==35)&&(to!=6)) ) { alert(invalid_route); return false; }	*/
	
    if ((booking.fromAirport.value == -1) ||
        (booking.toAirport.value == -1) ||
        (booking.txtDateDep.value == '') ||
        (booking.txtDateRet.value == '') ||
        ((booking.personType_1.value == 0) &&
         (booking.personType_2.value == 0) &&
         (booking.personType_3.value == 0) &&
         (booking.personType_4.value == 0) &&
        (booking.personType_5.value == 0) ))
    {
        alert(mandatory_message);
        return false;
    }
        	
	if ((!CheckDate(document.booking.txtDateDep, false)) ||
        (!CheckDate(document.booking.txtDateRet, false)))
    {
        alert(wrong_date_format_message);
        return false;
    }

	//verificare zboruri interne bucuresti - cluj | data plecarii poate fi egala cu data intoarcerii
	if (((booking.fromAirport.value == 43) && (booking.toAirport.value == 6)) || 
		((booking.fromAirport.value == 6) && (booking.toAirport.value == 43)))
	{
		if ((CompareDates(document.booking.txtDateDep.value, document.booking.txtDateRet.value) != -1) &&
			(CompareDates(document.booking.txtDateDep.value, document.booking.txtDateRet.value) != 0))
	    {
	        alert(wrong_timespan_message);
	        return false;
	    }
	}	
	else
	{
	    var obj;
	    obj = document.getElementById('tickettype2');	    
	    if ((obj.checked) && (CompareDates(document.booking.txtDateDep.value, document.booking.txtDateRet.value) != -1))
	    {
	        alert(wrong_timespan_message);
	        return false;
	    }	
    }
	if (((document.booking.personType_3.value>0) && (document.booking.personType_1.value==0)) || ((document.booking.personType_4.value>0) && (document.booking.personType_1.value==0)))
	{
		alert(one_adult_message);
		return false;
	}
	
    return true;
}

function replaceAll( str, from, to ) {
    var idx = str.indexOf( from );
    while ( idx > -1 ) {
        str = str.replace( from, to ); 
        idx = str.indexOf( from );
    }
    return str;
}

function isInString( str, what ) {
    var idx = str.indexOf( what );
    return ( idx > -1 );
}


