// JavaScript Document
//----------------------------------------------------------
//	Project Validation Routines
//----------------------------------------------------------


	function AdmButton(obj, action) {
		switch(action) {
			case 'over' :
					obj.className = "button_over";
				break;
			case 'out' :
					obj.className = "button";
				break;
		}
	}


	function AdmTRMouseOver(tr) {
		tr.style.backgroundColor='#FFFFFF';
	}
	
	function AdmTRMouseOut(tr) {
		tr.style.backgroundColor='';
	}


	function Validate1to255Interval(varData, msg) {
		if (varData.value == "") {
			if (msg == "") {
				msg += "Value is Required for this field.\n";
			}
			alert(msg);
			varData.focus();
			varData.select();
			return false;
		}
		else {
			//  to be changed with each digit determination, because ot the parseInt function
			// somewhere in time
			var varIntValue;
			varIntValue = parseInt(varData.value);
			if (!((varIntValue > 0) && (varIntValue < 256))) {
				msg = "Please, enter value between 1 and 255.";
				alert(msg);
				varData.focus();
				varData.select();
				return false;
			}
		}
	return true;			
	}

function openWindowOriginal( image_name ) {
	window.open(image_name,'image_name','scrollbars=1,status=0,toolbar=0,resizable=1,menubar=0');
}

function ValidateMultipleSelect(varData, msg) {
	if (varData.value == "") {
		if (msg == "") {
			msg += "Selection is Required for this dropdown.\n";
		}
		alert(msg);
		return false;
	}
	return true;
}

function ValidateTextField(varData, msg) {
	if (varData.value == "") {
		if (msg == "") {
			msg += "Value is Required for this field.\n";
		}
		alert(msg);
		varData.focus();
		varData.select();
		return false;
	}
	return true;
}


function ValidateDate (inp, msg) {
	
	var val = inp.value
	
	if (val == "") {
		if (msg == "") {
			msg = "Value is Required for this field.\n";
		}
		else {
			msg = "Value is Required for " + msg + " field.\n";
		}
		alert(msg);
		inp.focus();
		inp.select();
		return false;
	}
	
	//Date format HAVE TO BE validation "dd/mm/yyyy"
	dtString = new String(val);
	
	splitString = dtString.split("/");
	if (splitString.length != 3) {
		splitString = dtString.split(".");
		if (splitString.length != 3) {
			alert("Unpropper date format.\nPlease, look at the example.");
			inp.focus();
			inp.select();
			return false;
		}
	}  
	
	var intDay, intMonth, intYear
		
	//Year validation
	intYear = parseInt(splitString[2], 10);
		if (intYear != splitString[2]) {
			alert("Year value is not a number.\n");
			inp.focus();
			inp.select();
			return false;
		}
		if ((intYear < 1900) || (intYear > 2099)) {
			alert("Year value is out of range.\nPlease, choose Year between 1900 and 2099");
			inp.focus();
			inp.select();
			return false;
		} 
			
		
	//Month validation
	intMonth = splitString[1];
	intMonth = parseInt(splitString[1], 10);
		if (intMonth != splitString[1]) {
			alert("Month value is not a number.\n");
			inp.focus();
			inp.select();
			return false;
		}
		if ((intMonth < 1) || (intMonth > 12)) {
			alert("Month value is out of range.\nPlease, choose Month between 1 and 12");
			inp.focus();
			inp.select();
			return false;
		} 
			
		
	//Day validation
	intDay = splitString[0];
	intDay = parseInt(splitString[0], 10);
		if (intDay != splitString[0]) {
			alert("Day value is not a number.\n");
			inp.focus();
			inp.select();
			return false;
		}
		
	//Leap Year determination
	var blnLeapYear
	if (intYear % 4 != 0) {
		blnLeapYear = false;
	}
	else {
		if (intYear % 400 == 0) {
			blnLeapYear = true;
		}
		else {
		//This comment is because of the lack of year, 
		//which can be devided by 100 and not by 400 in the our current range of years
		//	if (intYear % 100 == 0) {
		//		blnLeapYear = false;
		//	} 	
		//	else {
				blnLeapYear = true;
			}
		//} 	
	} 
		
	//Last Day of the Month determination
	var intLastDay
	switch (intMonth) {
		case 1:	
			intLastDay = 31;
			break;
	    case 2:	
			if (blnLeapYear) {
				intLastDay = 29;
			}
			else {
				intLastDay = 28;
			}
			break;
	    case 3:
			intLastDay = 31;
			break;
	    case 4:
			intLastDay = 30;
			break;
	    case 5:
			intLastDay = 31;
			break;
		case 6:
			intLastDay = 30;
		break;
	    case 7:
			intLastDay = 31;
			break;
	    case 8:
			intLastDay = 31;
			break;
	    case 9:
			intLastDay = 30;
			break;
	    case 10:
			intLastDay = 31;
			break;
	    case 11:
			intLastDay = 30;
			break;
	    case 12:
			intLastDay = 31;
			break;
	}
		
	if ((intDay < 1) || (intDay > intLastDay)) {
		alert("Day value is out of range.\nPlease, choose Day between 1 and " + intLastDay);
		inp.focus();
		inp.select();
		return false;
	} 
		
	return true;
}


function ValidateDateFromToInterval (inpFrom, inpTo, strMessage) {

	var valFrom = inpFrom.value;
	dtString = new String(valFrom);
	splitString = dtString.split("/");
	valFrom = splitString[1] + '/' + splitString[0] + '/' + splitString[2]
	
	var valTo = inpTo.value;
	dtString = new String(valTo);
	splitString = dtString.split("/");
	valTo = splitString[1] + '/' + splitString[0] + '/' + splitString[2]
	
	if (Date.parse(valFrom) > Date.parse(valTo)) {
		alert(strMessage);
		inpTo.focus();
		inpTo.select();
		return false;
	}
	
	return true;
}


function ValidateEmail(item) {

	var lsAT;
	var lsDOT;

	lsAT = item.value.indexOf("@");
	lsDOT = item.value.indexOf(".");
	
	if (lsAT == -1 || lsDOT == -1 || item.value.indexOf(" ") != -1 ) {
		alert("Sorry, you have missed @ or . !")
		item.focus();
		item.select();
		return false;
	}	
	return true;
}


function ValidatePrice(item) {
	
	if (item.value != "") {
		if (isNaN(parseFloat(item.value))) {
			alert("This is not a valide price!");
			item.focus();
			item.select();
			return false;
		}
	}
	return true;
}

function ValidateZip(item) {

	if (item.value != "") {
			
		var re, r, str
				
			str = item.value
			re = /[a-z][a-z][0-9][0-9]\s[0-9][a-z][a-z]|[a-z][a-z][0-9]\s[0-9][a-z][a-z]|[a-z][0-9][0-9]\s[0-9][a-z][a-z]|[a-z][0-9]\s[0-9][a-z][a-z]/i;
			r = str.match(re);
				
			if (r == null){
				alert("This is not a valide Zip!");
				item.focus();
				item.select();
				return false;
			}
			else {
				if (r[0] != str) {
					alert("This is not a valide Zip!");
					item.focus();
					item.select();
					return false;
				}
			}			
	}
	return true;

}

function ValidateNumber(item, message) {
	if (isNaN(parseInt(item.value))) {
		alert(message);
		item.focus();
		item.select();
		return false;
	}
	return true;
}

function ValidateFloat(item, message) {
	if (isNaN(parseFloat(item.value))) {
		alert(message);
		item.focus();
		item.select();
		return false;
	}
	return true;
}