

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(unescape('A%20megadott%20e-mail%20c%EDm%20helytelen'));
			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(unescape('A%20megadott%20e-mail%20c%EDm%20helytelen'));
			return false;
		}
	}
	
	eindex = e.indexOf('@');
	
	if (eindex == -1) {
		alert(unescape('A%20megadott%20e-mail%20c%EDm%20helytelen'));
		return false;
	}
	
	eemail = e.slice(eindex);
	
	if (eemail == '') {
		alert(unescape('A%20megadott%20e-mail%20c%EDm%20helytelen'));
		return false;
	}
	
	eindex = e.lastIndexOf('.');
	
	if (eindex == -1) {
		alert(unescape('A%20megadott%20e-mail%20c%EDm%20helytelen'));
		return false;
	}
	
	edom = e.slice(eindex);
	
	if (edom == '') {
		alert(unescape('A%20megadott%20e-mail%20c%EDm%20helytelen'));
		return false;
	}
	
	if (domains.indexOf(edom) == -1) {
		alert(unescape('A%20megadott%20e-mail%20c%EDm%20helytelen'));
		return false;
	}
	
	return true;
}


function verifyEmail(form, field, msg)
{
	if (!checkEmail(eval('form.' + field + '.value'))) {
		//alert((msg && msg != '' ? msg : 'Please insert a valid email address!'));
		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 : unescape('K%E9rj%FCk%2C%20v%E1lassza%20ki') + ' ' + unescape(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 : unescape('K%E9rj%FCk%2C%20t%F6ltse%20ki%20a') + ' "' + unescape(fieldName) + '"' + unescape('mez%F5t')));
		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 : 'You\'ve inserted words longer than ' + maxWordLen + ' characters (' + words[i] + '). Please modify.'));
			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 : 'To continue: ' + unescape(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 : 'To continue: ' + unescape(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 : unescape('K%E9rj%FCk%2C%20t%F6ltse%20ki%20a') + ' "' + unescape(fieldName) + '"' + unescape('mez%F5t')));
		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 : 'Insert a valid date: ' + unescape(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 : 'Insert a valid date: ' + unescape(fieldName) + '!'));
		return false;
	}
	
	return true;
}



function verifyFieldFile(form,field, fieldName, maxWordLen, msg)
{
	var textField = eval('form.' + field + '.value');
	if (textField == '') {
		alert((msg && msg != '' ? msg : 'Please specify the field "' + unescape(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 : 'Please specify the field "' + unescape(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 (' + unescape(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 : 'Please specify the field "' + unescape(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 : 'Please enter a valid phone number!'));
		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 : 'Please specify the field "' + unescape(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('Please specify the field "' + unescape(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('You\'ve inserted words longer than ' + maxWordLen + ' characters in field ' + unescape(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 : 'Insert a valid number (' + unescape(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 : 'Insert a percent between 0 and 100 ' + unescape(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;
}
