

function checkEmail(e) {
	ok = '1234567890qwertyuiop[]asdfghjklzxcvbnm.@-_QWERTYUIOPASDFGHJKLZXCVBNM';
	domains = new Array('.aero', '.asia', '.biz', '.cat', '.com', '.coop', '.edu', '.gov', '.info', '.int', '.jobs', '.mil', '.mobi', '.museum', '.name', '.net', '.org', '.pro', '.tel', '.travel', '.ac', '.ad', '.ae', '.af', '.ag', '.ai', '.al', '.am', '.an', '.ao', '.aq', '.ar', '.as', '.at', '.au', '.aw', '.ax', '.az', '.ba', '.bb', '.bd', '.be', '.bf', '.bg', '.bh', '.bi', '.bj', '.bm', '.bn', '.bo', '.br', '.bs', '.bt', '.bv', '.bw', '.by', '.bz', '.ca', '.cc', '.cd', '.cf', '.cg', '.ch', '.ci', '.ck', '.cl', '.cm', '.cn', '.co', '.cr', '.cu', '.cv', '.cx', '.cy', '.cz', '.de', '.dj', '.dk', '.dm', '.do', '.dz', '.ec', '.ee', '.eg', '.er', '.es', '.et', '.eu', '.fi', '.fj', '.fk', '.fm', '.fo', '.fr', '.ga', '.gb', '.gd', '.ge', '.gf', '.gg', '.gh', '.gi', '.gl', '.gm', '.gn', '.gp', '.gq', '.gr', '.gs', '.gt', '.gu', '.gw', '.gy', '.hk', '.hm', '.hn', '.hr', '.ht', '.hu', '.id', '.ie', '.il', '.im', '.in', '.io', '.iq', '.ir', '.is', '.it', '.je', '.jm', '.jo', '.jp', '.ke', '.kg', '.kh', '.ki', '.km', '.kn', '.kp', '.kr', '.kw', '.ky', '.kz', '.la', '.lb', '.lc', '.li', '.lk', '.lr', '.ls', '.lt', '.lu', '.lv', '.ly', '.ma', '.mc', '.md', '.me', '.mg', '.mh', '.mk', '.ml', '.mm', '.mn', '.mo', '.mp', '.mq', '.mr', '.ms', '.mt', '.mu', '.mv', '.mw', '.mx', '.my', '.mz', '.na', '.nc', '.ne', '.nf', '.ng', '.ni', '.nl', '.no', '.np', '.nr', '.nu', '.nz', '.om', '.pa', '.pe', '.pf', '.pg', '.ph', '.pk', '.pl', '.pm', '.pn', '.pr', '.ps', '.pt', '.pw', '.py', '.qa', '.re', '.ro', '.rs', '.ru', '.rw', '.sa', '.sb', '.sc', '.sd', '.se', '.sg', '.sh', '.si', '.sj', '.sk', '.sl', '.sm', '.sn', '.so', '.sr', '.st', '.su', '.sv', '.sy', '.sz', '.tc', '.td', '.tf', '.tg', '.th', '.tj', '.tk', '.tl', '.tm', '.tn', '.to', '.tp', '.tr', '.tt', '.tv', '.tw', '.tz', '.ua', '.ug', '.uk', '.us', '.uy', '.uz', '.va', '.vc', '.ve', '.vg', '.vi', '.vn', '.vu', '.wf', '.ws', '.ye', '.yt', '.yu', '.za', '.zm', '.zw')

	for (i = 0; i < e.length; i++){
		if(ok.indexOf(e.charAt(i)) < 0) {
			alert('Adresa de email contine caractere nepermise. Va rugam sa introduceti o adresa de mail valida.');
			return false;
		}
	} 
	
	if (document.images) {
		re = /(@.*@)|(\.\.)|(^\.)|(^@)|(@$)|(\.$)|(@\.)/;
		re_two = /^.+\@(\[?)[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$/;
		//if (!e.match(re) && e.match(re_two))
		if (!e.match(re) && !e.match(re_two)) {
			alert('Sintaxa incorecta. Va rugam sa introduceti o adresa de mail valida.');
			return false;
		}
	}
	
	eindex = e.indexOf('@');
	
	if (eindex == -1) {
		alert('Nu apare caracterul @. Va rugam sa introduceti o adresa de mail valida.');
		return false;
	}
	
	eemail = e.slice(eindex);
	
	if (eemail == '') {
		alert('Nu ati specificat contul de email. Va rugam sa introduceti o adresa de mail valida.');
		return false;
	}
	
	eindex = e.lastIndexOf('.');
	
	if (eindex == -1) {
		alert('Nu apare separatorul ".". Va rugam sa introduceti o adresa de mail valida.');
		return false;
	}
	
	edom = e.slice(eindex);
	
	if (edom == '') {
		alert('Domeniul este specificat. Va rugam sa introduceti o adresa de mail valida.');
		return false;
	}
	
	if (domains.indexOf(edom) == -1) {
		alert('Domeniul specificat nu figureaza ca extensie valida (' + edom + '). Va rugam sa introduceti o adresa de mail valida.');
		return false;
	}
	
	return true;
}


function verifyEmail(form, field, msg)
{
	if (!checkEmail(eval('form.' + field + '.value'))) {
		//alert((msg && msg != '' ? msg : 'Va rugam sa introduceti o adresa de mail valida!'));
		eval('form.' + field + '.focus()');
		document.getElementById(field).style.border = '1px solid #f00';
		return false;
	}
	else
		document.getElementById(field).style.border = '1px solid #999';
	
	return true;
}


function verifyFieldSelect(form, field, fieldName, msg)
{
	var sel = eval('form.' + field + '.selectedIndex');
	
	if (sel == -1 || eval('form.' + field + '.options[form.' + field + '.selectedIndex].value') == 0) {
		alert((msg && msg != '' ? msg : 'Va rugam sa selectati ' + fieldName + '!'));
		eval('form.' + field + '.focus()');
		document.getElementById(field).style.border = '1px solid #f00';
		return false;
	}
	else
		document.getElementById(field).style.border = '1px solid #999';
		
	return true;
}


function verifyFieldText(form, field, fieldName, maxWordLen, msg, msg1)
{
	var textField = eval('form.' + field + '.value');
	
	if (textField == '') {
		alert((msg && msg != '' ? msg : 'Va rugam sa completati rubrica ' + fieldName + '!'));
		eval('form.' + field + '.focus()');
		document.getElementById(field).style.border = '1px solid #f00';
		return false;
	}
	else
		document.getElementById(field).style.border = '1px solid #999';
	
	if (maxWordLen == undefined)
		maxWordLen = 500;
	
	var words = textField.split(' ');
	var index = 0;
	var word = '';
	
	for (var i = 0; i < words.length; i++) {
		if (words[i].length > maxWordLen) {
			alert((msg1 ? msg1 : 'Ati introdus cuvinte mai lungi de ' + maxWordLen + ' caractere (' + words[i] + '). Va rugam modificati.'));
			eval('form.' + field + '.focus()');
			document.getElementById(field).style.border = '1px solid #f00';
			return false;
		}
		else
			document.getElementById(field).style.border = '1px solid #999';
	}
	
	return true;
}


function verifyFieldCheckbox(form, field, fieldName, msg)
{
	var cField = eval('form.' + field + '.checked');
	
	if (!cField) {
		alert((msg && msg != '' ? msg : 'Pentru a continua, va rugam sa ' + fieldName + '!'));
		eval('form.' + field + '.focus()');
		document.getElementById(field).style.border = '1px solid #f00';
		return false;
	}
	else
		document.getElementById(field).style.border = '1px solid #999';
	
	return true;
}



function verifyFieldRadio(form, field, fieldName, msg)
{
	var cField = eval('form.' + field);
	
	if (cField) {
		var radioLength = cField.length;
		if (radioLength == undefined) {
			if (cField.checked)
				return true;
		}
		else
			for (var i = 0; i < radioLength; i++) {
				if (cField[i].checked)
					return true;
			}
	}
	
	alert((msg && msg != '' ? msg : 'Pentru a continua, va rugam sa ' + fieldName + '!'));
	
	return false;
}


function verifyFieldDateText(form, field, fieldName, msg)
{
	var dateField = document.getElementById(field);
	
	/*if (getBrowser() == 'ie') {
		var mydate = new Date(parseInt(dateField.value));
		alert(mydate);
		alert(mydate.getFullYear());
		var dateFieldValue = mydate.getFullYear() + '-' + mydate.getMonth() +  '-' + mydate.getDay();
	}
	else*/
	var dateFieldValue = dateField.value;
	
	if (dateFieldValue == '') { 
		alert((msg && msg != '' ? msg : 'Va rugam sa completati rubrica ' + fieldName + '!'));
		eval('form.' + field + '.focus()');
		dateField.style.border = '1px solid #f00';
		return false;
	}
	else
		dateField.style.border = '1px solid #999';
	
	var checkstr = "0123456789";
	var DateField = dateField;
	var Datevalue = '';
	var DateTemp = "";
	var seperator = ".";
	var day;
	var month;
	var year;
	var leap = 0;
	var err = 0;
	var i;
	
	err = 0;
	DateValue = dateFieldValue;
	
	/* Delete all chars except 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;
	/* Always change date to 8 digits - string*/
	/* if year is entered as 2-digit / always assume 20xx */
	if (DateValue.length == 6)
		DateValue = DateValue.substr(0,4) + '20' + DateValue.substr(4,2);
	if (DateValue.length != 8)
		err = 19;
	
	/* year is wrong if year = 0000 */
	year = DateValue.substr(4,4);
	if (year == 0)
		err = 20;
	
	/* Validation of month*/
	month = DateValue.substr(2,2);
	if ((month < 1) || (month > 12))
		err = 21;
	
	/* Validation of day*/
	day = DateValue.substr(0,2);
	if (day < 1)
		err = 22;

	/* Validation leap-year / february / day */
	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;
	
	/* Validation of other months */
	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;
	
	/* if 00 ist entered, no error, deleting the entry */
	/*if ((day == 0) && (month == 0) && (year == 00)) {
		err = 0; day = ""; month = ""; year = ""; seperator = "";
	}*/
	/* if no error, write the completed date to Input-Field (e.g. 13.12.2001) */
	if (err == 0) {
		//DateField.value = day + seperator + month + seperator + year;
		document.getElementById(field).style.border = '1px solid #999';
	}
	else { /* Error-message if err != 0 */
		alert((msg && msg != '' ? msg : 'Va rugam sa introduceti o data corecta la rubrica ' + fieldName + ' (' + err + ')!'));
		eval('form.' + field + '.focus()');
		document.getElementById(field).style.border = '1px solid #f00';
		return false;
	}
	
	return true;
}


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 verifyFieldDate(form, field, fieldName, msg)
{
	var currentDate = new Date();
	
	var myDay = eval('form.' + field + '_day.options[form.' + field + '_day.selectedIndex].value');
	var myMonth = eval('form.' + field + '_month.options[form.' + field + '_month.selectedIndex].value');
	var myYear = eval('form.' + field + '_year.options[form.' + field + '_year.selectedIndex].value');
	var myDate = new Date(myYear, myMonth, myDay, 23, 59, 59, 999);
	
	var daysInMonth = DaysArray(12);
	
	if ((myMonth == 2 && myDay > daysInFebruary(myYear)) || myDay > daysInMonth[myMonth]) {
		//alert(('Va rugam sa specificati o data corecta!');
		alert((msg && msg != '' ? msg : 'Va rugam sa specificati o data corecta la rubrica ' + fieldName + '!'));
		return false;
	}
	
	return true;
}



function verifyFieldFile(form,field, fieldName, maxWordLen, msg)
{
	var textField = eval('form.' + field + '.value');
	if (textField == '') {
		alert((msg && msg != '' ? msg : 'Va rugam sa completati rubrica ' + fieldName + '!'));
		eval('form.' + field + '.focus()');
		document.getElementById(field).style.border = '1px solid #f00';
		return false;
	}
	else
		document.getElementById(field).style.border = '1px solid #999';
		
	return true;
}


function isInteger(s)
{   
	var i;
	for (i = 0; i < s.length; i++) {   
		// Check that current character is number.
		var c = s.charAt(i);
		if (((c < "0") || (c > "9"))) return false;
	}
	
	// All characters are numbers.
	return true;
}


function stripCharsInBag(s, bag)
{   
	var i;
	var returnString = "";
	// Search through string's characters one by one.
	// If character is not in bag, append to returnString.
	for (i = 0; i < s.length; i++) {   
		// Check that current character isn't whitespace.
		var c = s.charAt(i);
		if (bag.indexOf(c) == -1) returnString += c;
	}
	
	return returnString;
}


function checkInternationalPhone(strPhone)
{
	// Declaring required variables
	var digits = "0123456789";
	// non-digit characters which are allowed in phone numbers
	var phoneNumberDelimiters = "()- ";
	// characters which are allowed in international phone numbers
	// (a leading + is OK)
	var validWorldPhoneChars = phoneNumberDelimiters + "+";
	// Minimum no of digits in an international phone no.
	var minDigitsInIPhoneNumber = 10;
	
	s = stripCharsInBag(strPhone, validWorldPhoneChars);
	return (isInteger(s) && s.length >= minDigitsInIPhoneNumber);
}


function verifyFieldPhone(form,field, fieldName, maxWordLen, msg)
{
	var textField = eval('form.' + field + '.value');
	if (textField == '') {
		alert((msg && msg != '' ? msg : 'Va rugam sa completati rubrica ' + fieldName + '!'));
		eval('form.' + field + '.focus()');
		document.getElementById(field).style.border = '1px solid #f00';
		return false;
	}
	else
		document.getElementById(field).style.border = '1px solid #999';
	
	/**
	 * DHTML phone number validation script. Courtesy of SmartWebby.com (http://www.smartwebby.com/dhtml/)
	 */
	
	// Declaring required variables
	var digits = "0123456789";
	// non-digit characters which are allowed in phone numbers
	var phoneNumberDelimiters = "()- ";
	// characters which are allowed in international phone numbers
	// (a leading + is OK)
	var validWorldPhoneChars = phoneNumberDelimiters + "+";
	// Minimum no of digits in an international phone no.
	var minDigitsInIPhoneNumber = 10;


	if ((textField==null) || (textField == "")) {
		alert((msg && msg != '' ? msg : 'Va rugam sa introduceti un numar de telefon valid!'));
		eval('form.' + field + '.focus()');
		document.getElementById(field).style.border = '1px solid #f00';
		return false;
	}
	else
	if (checkInternationalPhone(textField) == false) {
		alert((msg && msg != '' ? msg : 'Va rugam sa introduceti un numar de telefon valid (' + fieldName + ')!'));
		eval('form.' + field + '.focus()');
		document.getElementById(field).style.border = '1px solid #f00';
		return false;
	}
	else
		document.getElementById(field).style.border = '1px solid #999';
	
	return true;
}


function verifyFieldZipcode(form, field, fieldName, maxWordLen, msg)
{
	var textField = eval('form.' + field + '.value');
	if (textField == '') {
		alert((msg && msg != '' ? msg : 'Va rugam sa completati rubrica ' + fieldName + '!'));
		eval('form.' + field + '.focus()');
		document.getElementById(field).style.border = '1px solid #f00';
		return false;
	}
	else
		document.getElementById(field).style.border = '1px solid #999';
	
	if (!isInteger(textField) || textField.length != 6) {
		alert((msg && msg != '' ? msg : 'Va rugam sa introduceti un cod postal valid!'));
		eval('form.' + field + '.focus()');
		document.getElementById(field).style.border = '1px solid #f00';
		return false;
	}
	else
		document.getElementById(field).style.border = '1px solid #999';
	
	return true;
}



function verifyFieldCNP(form, field, fieldName, maxWordLen, msg)
{
	var textField = eval('form.' + field + '.value');
	if (textField == '') {
		alert((msg && msg != '' ? msg : 'Va rugam sa completati rubrica ' + fieldName + '!'));
		eval('form.' + field + '.focus()');
		document.getElementById(field).style.border = '1px solid #f00';
		return false;
	}
	else
		document.getElementById(field).style.border = '1px solid #999';
	
	if (!isInteger(textField) || textField.length != 13) {
		alert((msg && msg != '' ? msg : 'CNP-ul nu este valid!'));
		eval('form.' + field + '.focus()');
		document.getElementById(field).style.border = '1px solid #f00';
		return false;
	}
	else
		document.getElementById(field).style.border = '1px solid #999';
	
	cnp = textField;
	var control = cnp.charAt(0) * 2 + cnp.charAt(1) * 7 + cnp.charAt(2) * 9 + cnp.charAt(3) * 1 + cnp.charAt(4) * 4 + 
				cnp.charAt(5) * 6 + cnp.charAt(6) * 3 + cnp.charAt(7) * 5 + cnp.charAt(8) * 8 + cnp.charAt(9) * 2 + 
				cnp.charAt(10) * 7 + cnp.charAt(11) * 9;
	
	var ver = control % 11;
	
	if ((ver >= 10 || ver != cnp.charAt(12)) && (ver != 10 || cnp.charAt(12) != 1)) {
	//if (!(ver < 10 && ver == cnp[12]) && !(ver == 10 && cnp[12] == 1)) {
		alert((msg && msg != '' ? msg : 'CNP-ul nu este valid!'));
		eval('form.' + field + '.focus()');
		document.getElementById(field).style.border = '1px solid #f00';
		return false;
	}
	else
		document.getElementById(field).style.border = '1px solid #999';
	
	
	return true;
}


function verifyFieldNumber(form,field, fieldName, maxWordLen, msg)
{
	var textField = eval('form.' + field + '.value');
	if (textField == '') {
		alert('Va rugam sa completati rubrica ' + fieldName + '!');
		eval('form.' + field + '.focus()');
		document.getElementById(field).style.border = '1px solid #f00';
		return false;
	}
	else
		document.getElementById(field).style.border = '1px solid #999';
	
	if (maxWordLen == undefined)
		maxWordLen = 12;
	
	if (textField.length > maxWordLen) {
		alert('Ati introdus cuvinte mai lungi de ' + maxWordLen + ' caractere in campul ' + fieldName + '.');
		eval('form.' + field + '.focus()');
		document.getElementById(field).style.border = '1px solid #f00';
		return false;
	}
	else {
	
		var validDelimiters = ".,";
		
		s = stripCharsInBag(textField, validDelimiters);
		
		if (!isInteger(s)) {
			alert((msg && msg != '' ? msg : 'Va rugam sa introduceti un numar valid (' + fieldName + ') !'));
			eval('form.' + field + '.focus()');
			document.getElementById(field).style.border = '1px solid #f00';
			return false;
		}
		else
			document.getElementById(field).style.border = '1px solid #999';
	}
	
	return true;
}



function verifyFieldPercent(form,field, fieldName, maxWordLen, msg)
{
	if (!verifyFieldNumber(form, field, fieldName, maxWordLen))
		return false;
	
	var textField = eval('form.' + field + '.value');
	var value = parseFloat(textField);
	
	if (value < 0 || value > 100) {
		alert((msg && msg != '' ? msg : 'Va rugam sa introduceti un procent intre 0 si 100 pentru ' + fieldName + '!'));
		eval('form.' + field + '.focus()');
		document.getElementById(field).style.border = '1px solid #f00';
		return false;
	}
	else
		document.getElementById(field).style.border = '1px solid #999';
	
	return true;
}


function verifyFieldsGeneral(form, fields)
{
	
	/******* MODEL *******
	var fields = new Array();
	
	fields[0] = new Array();
	fields[0]['name'] = 'venit';
	fields[0]['title'] ='venitul salarial net';
	fields[0]['type'] ='text'; 
	
	fields[1] = new Array();
	fields[1]['name'] = 'credit_type';
	fields[1]['title'] ='tipul de credit';
	fields[1]['type'] ='select'; 
	
	***********************/
	
	for (var i = 0; i < fields.length; i++) {
		//alert(fields[i]['name']);
		
		if (fields[i]['type'] == 'select')
			if (!verifyFieldSelect(form, fields[i]['name'], fields[i]['title']))
				return false;
		
		if (fields[i]['type'] == 'text' || fields[i]['type'] == 'string')
			if (!verifyFieldText(form, fields[i]['name'], fields[i]['title']))
				return false;
		
		if (fields[i]['type'] == 'email') {
			if (!verifyFieldText(form, fields[i]['name'], fields[i]['title']))
				return false;
				
			if (!verifyEmail(form, fields[i]['name'])) {
				return false;
			}
		}
		
		if (fields[i]['type'] == 'date')
			if (!verifyFieldDate(form, fields[i]['name'], fields[i]['title']))
				return false;
		
		if (fields[i]['type'] == 'file')
			if (!verifyFieldFile(form, fields[i]['name'], fields[i]['title']))
				return false;
		
		if (fields[i]['type'] == 'image')
			if (!verifyFieldFile(form, fields[i]['name'], fields[i]['title']))
				return false;
		
		if (fields[i]['type'] == 'number')
			if (!verifyFieldNumber(form, fields[i]['name'], fields[i]['title']))
				return false;
		
		if (fields[i]['type'] == 'percent')
			if (!verifyFieldPercent(form, fields[i]['name'], fields[i]['title']))
				return false;
		
		if (fields[i]['type'] == 'checkbox')
			if (!verifyFieldCheckbox(form, fields[i]['name'], fields[i]['title'], fields[i]['msg']))
				return false;
		
		
		if (fields[i]['type'] == 'radio')
			if (!verifyFieldRadio(form, fields[i]['name'], fields[i]['title'], fields[i]['msg']))
				return false;
		
		if (fields[i]['type'] == 'phone')
			if (!verifyFieldPhone(form,fields[i]['name'], fields[i]['title']))
				return false;
		
		if (fields[i]['type'] == 'zipcode')
			if (!verifyFieldZipcode(form,fields[i]['name'], fields[i]['title']))
				return false;
		
		if (fields[i]['type'] == 'cnp')
			if (!verifyFieldCNP(form,fields[i]['name'], fields[i]['title']))
				return false;
		
		//alert('end ' + fields[i]['name']);
	}
	
	return true;
}
