
//-----------------
function isEmailAddr(email) {
  var result = false;
  var theStr = new String(email);
  var index = theStr.indexOf("@");
  if (index > 0) {
    var pindex = theStr.indexOf(".",index);
    if ((pindex > index+1) && (theStr.length > pindex+1))
	result = true;
  }
  return result;
}

function fieldEmpty(formField) {
	var result = true;
	
	if (formField.value == ""){
		result = false;
	}	
	return result;
}

function validSelection(formField,fieldLabel){
	var result = true;
	
	if (formField.options[0].selected) {
		alert('Please select a value for the "' + fieldLabel +'" field.');
		result = false;
	}	
	return result;
}

function validCheckbox(formField,fieldLabel) {
	var result = true;
	
	if (! formField.checked) {
		alert('Please select the "' + fieldLabel +'" field.');
		formField.focus();
		result = false;
	}	
	return result;
}


function validRequired(formField,fieldLabel){
	var result = true;
	
	if ((formField.value == "")||(formField.value == "-Select-")) {
		alert('Please enter a value for the "' + fieldLabel +'" field.');
		formField.focus();
		result = false;
	}	
	return result;
}

function allDigits(str) {
	return inValidCharSet(str,"0123456789");
}

function allFloat(str) {
	return inValidCharSet(str,"0123456789.");
}

function inValidCharSet(str,charset){
	var result = true;

	// Note: doesn't use regular expressions to avoid early Mac browser bugs	
	for (var i=0;i<str.length;i++)
		if (charset.indexOf(str.substr(i,1))<0)	{
			result = false;
			break;
		}
	
	return result;
}

function validEmail(formField,fieldLabel,required) {
	var result = true;

	if (required && !validRequired(formField,fieldLabel))
		result = false;

	if (required)	{
		if (result && ((formField.value.length < 3) || !isEmailAddr(formField.value)) )	{
			alert("Please enter a complete email address in the form: yourname@yourdomain.com");
			formField.focus();
			result = false;
		}
	}
   
  return result;
}

function validNum(formField,fieldLabel,required) {
	var result = true;
	
	if (required && !validRequired(formField,fieldLabel))
		result = false;

	if (result)	{
 		if (!allDigits(formField.value)) {
 			alert('Please enter a number for the "' + fieldLabel +'" field.');
			formField.focus();		
			result = false;
		}
	} 
	return result;
}


function validInt(formField,fieldLabel,required) {
	var result = true;
	if (required && !validRequired(formField,fieldLabel))
		result = false;
  
 	if (result)	{
 		var num = parseInt(formField.value);
 		if (isNaN(num))	{
 			alert('Please enter a number for the "' + fieldLabel +'" field.');
			formField.focus();		
			result = false;
		}
	} 
	return result;
}


function validDate(formField,fieldLabel,required) {
	var result = true;
	if (required && !validRequired(formField,fieldLabel)) 
		result = false;

	if (result)	{
 		if (formField.value){
			var elems = formField.value.split("/");
 		
 			result = (elems.length == 3); // should be three components
 		
 			if (result)	{
 				var day = elems[0];
  			var month = elems[1];
 				var year = elems[2];
				result = allDigits(elems[0]) && (month > 0) && (month < 13) &&
					 allDigits(elems[1]) && (day > 0) && (day < 32) &&
					 allDigits(elems[2]) && ((elems[2].length == 2) || (elems[2].length == 4));
 			}
		}

  	if (!result) {
 			alert('Please enter a date in the format DD/MM/YYYY for the "' + fieldLabel +'" field.');
			formField.focus();
			formField.select();
		}
	} 
	return result;
}

function validRadioSelected(formField,fieldLabel) {
	var radio_choice = false;
	for (counter = 0; counter < formField.length; counter++) {
		if (formField[counter].checked)
			radio_choice = true; 
	}

	if (!radio_choice) {
		alert('Please select a option for "' + fieldLabel + '" field.');
	} 
	return radio_choice;
}

function validFloat(formField,fieldLabel, required) {
	var result = true;
	
	if (required && !validRequired(formField,fieldLabel))
		result = false;

	if (result)	{
 		if (!allFloat(formField.value)) {
 			alert('Please enter a number for the "' + fieldLabel +'" field.');
			formField.focus();		
			result = false;
		}
	} 
	return result;
} 

function dialogBox(msg) {
	var is_confirmed = confirm(msg);
	if (is_confirmed) {return true;} else {return false;}
}

function validTime(formField,fieldLabel,required) {
	var result = true;
	if (required && !validRequired(formField,fieldLabel)) 
		result = false;

	if (result)	{
 		if (formField.value){
			var elems = formField.value.split(":");
 		
 			result = (elems.length == 2); // should be three components
 		
 			if (result)	{
 				var hour = elems[0];
  			var min = elems[1];
				result = allDigits(elems[0]) && (hour >= 0) && (hour < 24) &&
					 allDigits(elems[1]) && (min >= 0) && (min < 61);
 			}
		}

  	if (!result) {
 			alert('Please enter a Time in the format H:M for the "' + fieldLabel +'" field.');
			formField.focus();		
		}
	} 
	return result;
}

function openWindow(theURL,winName,features) { //v2.0
  window.open(theURL,winName,features);
}
//////////////////////////////////////////////////////////////////////////////////
/* This funtion is used to check for multiple text boxes,in the form name and emailid ie if we have five
pair of text boxes which are not mandatory then if one is filled up but 
not the other and submit is clicked
*/
function chk_txtemailPair(formField1,formField2)                

{	
	var result = true;
	if ((formField1.value != "" && formField2.value == "") || (formField2.value !="" && formField1.value == ""))
	{		
		alert('Please  fill both the fields');
		formField1.focus();
		result = false;	

	}

	if (formField2.value !="" && !isEmailAddr(formField2.value))
		{
		alert('Please enter email in format yourname@yourdomain.com');
		result =false;
		}

	return result;
}
/////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////
/*
	This function will block the user to input the list of special characters. 
*/
var mikExp = /[$\\@\\\#%\^\&\*\(\)\[\]\+\_\{\}\`\~\=\|\'\<\>\/\"]/;
function spCharChk(val)
{
	var strPass = val.value;
	var strLength = strPass.length;
	var lchar = val.value.charAt((strLength) - 1);
	if(lchar.search(mikExp) != -1) 
	{
		var tst = val.value.substring(0, (strLength) - 1);
		val.value = tst;
  }
}// Ends Here
////////////////////////////////////////////////////////////////////////////////
/*This function will check for special characters even if these are added force fully
Since the function spCharChk will only check for one character at a time and will 
simply replace the character with blank */
function spCharChkonSubmit(val,fieldlevel)
{
	var strPass = val.value;
	var strLength = strPass.length;
	var lchar = val.value.charAt((strLength) - 1);
	var i=0;
	var flag=0;
	for(i=0;i<strLength;i++)
	{
		if(lchar.search(mikExp) != -1)
		{
			flag=1;		
		}
	}
	if(flag==1)
	{
		/*IF any character is added or removed from the regular expression 
			in function spCharChk then that has to removed or added in the alert.
		*/
		alert ("Sorry, but the characters @ $ % ^ & * # ( ) [ ] \\ { + } ` ~ =  |'< > / are not allowed for "+fieldlevel);
		val.focus();
		return false;

	}
	else
	{
		return true;

	}
}
///////////////////////////////////////////////////////////////////////
// New date validation for dd/mm/yyyy 

var dtCh= "/";
var minYear=1900;
var maxYear=2100;

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++){   
        var c = s.charAt(i);
        if (bag.indexOf(c) == -1) returnString += c;
    }
    return returnString;
}

function daysInFebruary (year){
	// February has 29 days in any year evenly divisible by four,
    // EXCEPT for centurial years which are not also divisible by 400.
    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(dtStr){
	var daysInMonth = DaysArray(12)
	var pos1=dtStr.indexOf(dtCh)
	var pos2=dtStr.indexOf(dtCh,pos1+1)
	var strDay=dtStr.substring(0,pos1)
	var strMonth=dtStr.substring(pos1+1,pos2)
	var strYear=dtStr.substring(pos2+1)
	strYr=strYear
	if (strDay.charAt(0)=="0" && strDay.length>1) strDay=strDay.substring(1)
	if (strMonth.charAt(0)=="0" && strMonth.length>1) strMonth=strMonth.substring(1)
	for (var i = 1; i <= 3; i++) {
		if (strYr.charAt(0)=="0" && strYr.length>1) strYr=strYr.substring(1)
	}
	month=parseInt(strMonth)
	day=parseInt(strDay)
	year=parseInt(strYr)
	if (pos1==-1 || pos2==-1){
		alert("The date format should be : dd/mm/yyyy")
		return false
	}
	if (strMonth.length<1 || month<1 || month>12){
		alert("Please enter a valid month")
		return false
	}
	if (strDay.length<1 || day<1 || day>31 || (month==2 && day>daysInFebruary(year)) || day > daysInMonth[month]){
		alert("Please enter a valid day")
		return false
	}
	if (strYear.length != 4 || year==0 || year<minYear || year>maxYear){
		alert("Please enter a valid 4 digit year between "+minYear+" and "+maxYear)
		return false
	}
	if (dtStr.indexOf(dtCh,pos2+1)!=-1 || isInteger(stripCharsInBag(dtStr, dtCh))==false){
		alert("Please enter a valid date")
		return false
	}
return true
}

function validateDateNew(formField){
	var dt=formField
	if (isDate(dt.value)==false){
		dt.focus()
		return false
	}
    return true
 }
// Date Validatio dd/mm/yyyy Ends here
///////////////////////////////////////////////////////////////////////////////


