// JavaScript Document
var jslogtext;
var currentStatements = ",current,currently,currently working,currently employed,present,still working,still employed,till date,till now,"

function add0(nmb){
	if (nmb<10)
		return "0" + nmb;
	return nmb;
}

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(year, month, day){
	var daysInMonth = new DaysArray(12);
	daysInMonth[2] = daysInFebruary(year);
	
	if (month >= 1 && month <= 12){
		if (day >= 1 && day <= daysInMonth[month]){
			return true;
		}
	}
	return false;
}

function txtInpToDataCh(nform, prefix, isday){
	return txtInpToDataCh1(nform, prefix, isday, false);
}

function txtInpToDataChP(nform, prefix, isday){
	//P vine de la Present adica sa lase in camp sa fie valoare present, current etc
	return txtInpToDataCh1(nform, prefix, isday, true);
}

function txtInpToDataCh1(nform, prefix, isday, allowcurrent){
	v = eval("document." + nform + "." + prefix + "tdata").value;
	v = trim(v);
	v = v.toLowerCase();
	if (v == "" || v == "dd/mm/yyyy" || v == "mm/yyyy"){
		alert("Please insert a date.");
		return false;
	}
	return txtInpToData1(nform, prefix, isday, allowcurrent, false);
}

function txtInpToData(nform, prefix, isday){
		return txtInpToData1(nform, prefix, isday, false, false);
}

function txtInpToDataP(nform, prefix, isday){
		return txtInpToData1(nform, prefix, isday, true, false);
}

function txtInpToData1(nform, prefix, isday, allowcurrent, displayalerts){
	var re, r;
	v = eval("document."+nform+"."+prefix+"tdata").value;
	v = trim(v);
	v = v.toLowerCase();
	try{
		jslogtext += (" check" + v + "::");
	}
	catch(e){}
	if (v != "" && v != "dd/mm/yyyy" && v!="mm/yyyy" && !(currentStatements.indexOf("," + v + ",") > -1 && allowcurrent)){
		d = checkdate(v, isday, displayalerts);
		if (d == ""){
			if (isday){
				if (allowcurrent)
					alert("Please insert a valid date in dd/mm/yyyy format (ex: for 5 August 2001 state 05/08/2001) or state current!\r\n" + v + " is not a valid date or is not in this format.");
				else
					alert("Please insert a valid date in dd/mm/yyyy format (ex: for 5 August 2001 state 05/08/2001)!\r\n" + v + " is not a valid date or is not in this format.");
			}
			else{
				if (allowcurrent)
					alert("Please insert a valid date in mm/yyyy format (ex: for August 2001 state 08/2001) or state current!!\r\n" + v + " is not a valid date or is not in this format.");
				else
					alert("Please insert a valid date in mm/yyyy format (ex: for August 2001 state 08/2001)!\r\n" + v + " is not a valid date or is not in this format.");
			}

			try{
				jslogtext += (" Eroare de format: _" + v + "_ isday: " + isday + "::");
			}
			catch(e){}
			return false;
		}
		eval("document."+nform+"."+prefix+"data").value = d;
	}
	else
		if (currentStatements.indexOf("," + v + ",") > -1 && allowcurrent){
			eval("document."+nform+"."+prefix+"data").value="19440101";
			try{
				jslogtext += (" OK current: _" + v + "_::");
			}
			catch(e){}
		}
		else{
			eval("document."+nform+"."+prefix+"data").value=0;
			try{
				jslogtext += (" Eroare false current: _" + v + "_::");
			}
			catch(e){}
		}
	try{
		jslogtext += (" OK _" + v + "_::");
	}
	catch(e){}
	return true;
}

function inp_to_dataCh(nform,prefix){
	zi=eval("document."+nform+"."+prefix+"day").value;
	if (zi=="" || zi=="0"){
		alert("Please select the day!");
		return false;	
	}
	luna=eval("document."+nform+"."+prefix+"month").value;
	if (luna=="" || luna=="0"){
		alert("Please select the month!");
		return false;	
	}
	return inp_to_data(nform,prefix);
}

function inp_to_data(nform,prefix){
	var an,sdata,str,zi,luna;
	an=parseInt(eval("document."+nform+"."+prefix+"year").value);
	luna=parseInt(eval("document."+nform+"."+prefix+"month").value);
	zi=parseInt(eval("document."+nform+"."+prefix+"day").value);
	if (luna!=0 && zi!=0){
		if(!isDate(an, luna, zi)){
			alert("Date is not valid!");
			return false;
		}
		str = "" + an;
		str+= add0(luna);
		str+= add0(zi);
		eval("document."+nform+"."+prefix+"data").value=str;
	}
	else
		eval("document."+nform+"."+prefix+"data").value=0;
	return true;
}

function checkdate(v, isday, alerts)
{
	var listaluni, listalunishort, separator, i, isseparator;
	listaluni = ",January,February,March,April,May,June,July,August,September,October,November,December,";
	listaluni = listaluni.toLowerCase();
	listalunishort = ",Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec,";
	listalunishort = listalunishort.toLowerCase();
	separator = "";
	if (separator == "" && v.indexOf("/") > 0)
		separator = "/";
	if (separator == "" && v.indexOf("\\") > 0)
		separator = "\\";
	if (separator == "" && v.indexOf("-") > 0)
		separator = "-";
	if (separator == "" && v.indexOf(",") > 0)
		separator = ",";
	if (separator == "" && v.indexOf(".") > 0)
		separator = ".";
	if (separator == "" && v.indexOf(" ") > 0)
		separator = " ";

	if (chkcond((separator == ""), alerts, "No separator."))
		return "";

	values = v.split(separator);
	if (chkcond((values.length != 2 && values.length != 3), alerts, "Too many or too little."))
		return "";
	if (chkcond((isday && values.length == 2), alerts, "No day."))
		return "";

	if (values.length == 3){
		day = trim(values[0]);
		i = 1;
	}
	else{
		day = 1;
		i = 0;
	}
	month = trim(values[i]);
	year = trim(values[i + 1]);

	//verificare de zi
	day = parseInt(day, 10);
	if (chkcond(isNaN(day), alerts, "Please insert a number for day."))
		return "";
	if (chkcond((day > 31), alerts, "Please insert a valid day."))
		return "";

	//verificare de luna
	if (isNaN(parseInt(month, 10))){
		if (chkcond((month == ""), alerts, "Please insert the month."))
			return "";
		month = month.toLowerCase();
		if (listaluni.indexOf("," + month + ",")==-1 && listalunishort.indexOf("," + month + ",")==-1){
			if (alerts)
				alert("Please insert the month as number or its short/long name.");
			return "";
		}
		if (month.length > 3){
			month = month.slice(0,3);
		}
		month = listalunishort.indexOf("," + month + ",") / 4 + 1;
	}
	month = parseInt(month, 10);

	if (chkcond((month > 12), alerts, "Please insert a valid month."))
		return "";
	if (chkcond((year.length != 1 && year.length != 2 && year.length != 4), alerts, "Please insert a valid year."))
		return "";

	year = parseInt(year, 10);
	if (chkcond(isNaN(year), alerts, "Please insert a valid year."))
		return "";

	if (year < 40)
		year = year + 2000;
	if (year >= 40 && year < 100)
		year = year + 1900;
	d = new Date();
	if (chkcond((year < 1900 || year > d.getFullYear() + 20), alerts, "Please insert a valid year."))
		return "";

	if (chkcond(!isDate(year, month, day), alerts, "Please insert a valid date."))
		return "";

	return ("" + year + add0(month) + add0(day));
}

function chkcond(cond, alerts, mesaj){
	if (cond){
		if (alerts)
			alert(mesaj);
		return true;
	}
	return false;
}

function trim(sir){
	var s,r;
	s = sir;
	re = /^\s+/g;
	s = s.replace(re, "");
	re = /\s+$/g;
	s = s.replace(re, "");
	return s;
}
