function trim(value) {
   var temp = value;
   var obj = /^(\s*)([\W\w]*)(\b\s*$)/;
   if (obj.test(temp)) { temp = temp.replace(obj, '$2'); }
   var obj = / +/g;
   temp = temp.replace(obj, " ");
   if (temp == " ") { temp = ""; }
   return temp;
}

function checkFormValidation (objForm) {
	var result;
	var attrValid;
	for (var i=0; i<objForm.elements.length; i++) {
		attrValid = objForm.elements[i].getAttribute("valid");
		if (attrValid) {
			var regExp = new RegExp("^(m|n)_(d|i|t|a|s|o|f|e|u|p|r|l|y|z|c|w|b|x|v|k|h|j|q)","g");
			result = regExp.exec(attrValid);
			if (result[1] == "m" && !checkFormMantatory(objForm.elements[i]) )  return false;
			if (trim(objForm.elements[i].value) != "") {

				switch (result[2]) {
					case "t":
						if ( !checkFormCode(objForm.elements[i],true) ) return false;
						break;
					case "o":
						if ( !checkOptionForm(objForm.elements[i],true) ) return false;
						break;
					case "f":
						if ( !checkFormImageFile(objForm.elements[i],true) ) return false;
						break;
					case "v":
						if ( !checkFormDocFile(objForm.elements[i],true) ) return false;
						break;
					case "w":
						if ( !checkFormAlphaNumerichash(objForm.elements[i],true) ) return false;
						break;
					case "x":
						if ( !checkFormAlpOCBCD(objForm.elements[i],true) ) return false;
						break;
					case "e":
						if ( !checkFormEmail(objForm.elements[i],true) ) return false;
						break;
					case "p":
						if ( !checkFormHtmlFile(objForm.elements[i],true) ) return false;
						break;
					case "r":
						if ( !checkRadioForm(objForm.elements[i],true) ) return false;
						break;
					case "c":
						if ( !checkCheckBoxForm(objForm.elements[i],true) ) return false;
						break;
					case "l":
						if ( !checkFormAlpNumSpace(objForm.elements[i],true) ) return false;
						break;
					case "y":
						if ( !checkFormAlpNumSpaceDot(formLength[i],true) ) return false;
						break;
					case "z":
						if ( !checkFormCharSpace(objForm.elements[i],true) ) return false;
						break;
					case "a":
						if ( !checkFormAlphaNumeric(objForm.elements[i],true )) return false;
						break;
					case "b":
						if ( !checkFormAlphabets(objForm.elements[i],true )) return false;
						break;
					case "k":
						if ( !checkFormAlpOpenCloseBr(objForm.elements[i],true )) return false;
						break;
					case "s":
						if ( !checkFormSpecialChar(objForm.elements[i],true) ) return false;
						break;
					case "i":
						if ( !checkFormInteger(objForm.elements[i],true) ) return false;
						break;
					case "h":
						if ( !checkFormPhone(objForm.elements[i],true) ) return false;
						break;
					case "d":
						if ( !checkFormNumbersDot(objForm.elements[i],true) ) return false;
						break;
					case "j":
						if ( !checkFormNumbersDotColon(objForm.elements[i],true) ) return false;
						break;
					case "q":
						if ( !checkFormAlpNumUs(objForm.elements[i],true) ) return false;
						break;
					case "u":
						break;

				} //  Switch end

			}// Non mantatory but characters are there !!! checking

		} // valid attribute check
	} // for llop
	return true;
}


//Allowed characters are only alphabets & numeric
function checkFormAlphaNumeric (objElement) {
	var argv = arguments;
	var argc = arguments.length;
	var isAlert = (argc > 1 ) ? argv[1] : false;
	var regExp = /^[a-z][a-z0-9]+/gi;
	var result = new String(objElement.value.match(regExp));
	if ( result == objElement.value) return true;
	if ( isAlert ) {
		alert (objElement.getAttribute("errname") + " accepts only alpha numeric values \n Note: First character should be Alphabet");
	}
	objElement.focus();
	return false;
}

//Allowed characters are only alphabets & numeric and #
function checkFormAlphaNumerichash (objElement) {
	var argv = arguments;
	var argc = arguments.length;
	var isAlert = (argc > 1 ) ? argv[1] : false;
	var regExp = /^[a-z][a-z0-9#]+/gi;
	var result = new String(objElement.value.match(regExp));
	if ( result == objElement.value) return true;
	if ( isAlert ) {
		alert (objElement.getAttribute("errname") + " accepts only alpha numeric values and #  \n Note: First character should be Alphabet");
	}
	objElement.focus();
	return false;
}

//Allowed characters are only alphabets
function checkFormAlphabets (objElement) {
	var argv = arguments;
	var argc = arguments.length;
	var isAlert = (argc > 1 ) ? argv[1] : false;
	var regExp = /^[a-z]+/gi;
	var result = new String(objElement.value.match(regExp));
	if ( result == objElement.value) return true;
	if ( isAlert ) {
		alert (objElement.getAttribute("errname") + " accepts only alphabets \n ");
	}
	objElement.focus();
	return false;
}

function checkFormImageFile (objElement) {
	var argv = arguments;
	var argc = arguments.length;
	var isAlert = (argc > 1 ) ? argv[1] : false;

	var regExp = /\.(jpg|jpeg|gif)/gi
	//var regExp = /\.(xls|txt)/gi
	if (!objElement.value.match(regExp)){
		alert ("Upload file accepts only .jpg, .jpeg , .gif File Formats.");
		objElement.focus();
		return false;
	}
	var img1 = new Image();
	img1.src = objElement.value ;
	var imgsize = img1.fileSize;

	if(imgsize> 10000000)
	{
		  alert ("Image size should be less than 10 MB");
		  objElement.focus();
		  return false;
	}
	
	return true;

}

function checkFormDocFile (objElement) {
	var argv = arguments;
	var argc = arguments.length;
	var isAlert = (argc > 1 ) ? argv[1] : false;

	//var regExp = /\.(jpg|jpeg|gif)/gi
	var regExp = /\.(doc|pdf)/gi
	if (!objElement.value.match(regExp)){
		alert ("Upload file accepts only .doc, .pdf File Formats.");
		objElement.focus();
		return false;
	}
	return true;

}

function checkFormHtmlFile (objElement) {
	var argv = arguments;
	var argc = arguments.length;
	var isAlert = (argc > 1 ) ? argv[1] : false;

	//var regExp = /\.(jpg|jpeg|gif)/gi
	var regExp = /\.(htm|html)/gi
	if (!objElement.value.match(regExp)){
		alert ("Upload file accepts only .htm, .html File Formats.");
		objElement.focus();
		return false;
	}
	return true;

}


//Allowed characters are  alphabets , space ,dot , open and close bracket and number
function checkFormAlpNumSpaceDot (objElement) {
	var argv = arguments;
	var argc = arguments.length;
	var isAlert = (argc > 1 ) ? argv[1] : false;
	var regExp = /^[a-z0-9 .()]+/gi;
	var result = new String(objElement.value.match(regExp));
	if ( result == objElement.value) return true;
	if ( isAlert ) {
		alert (objElement.getAttribute("errname") + " accepts only alpha numeric values,Dot , comma ,(,), and space \n ");
	}
	objElement.focus();
	return false;
}

//Allowed characters are  alphabets ,numbers and underscore
function checkFormAlpNumUs (objElement) {
	var argv = arguments;
	var argc = arguments.length;
	var isAlert = (argc > 1 ) ? argv[1] : false;
	var regExp = /^[a-z0-9_]+/gi;
	var result = new String(objElement.value.match(regExp));
	if ( result == objElement.value) return true;
	if ( isAlert ) {
		alert (objElement.getAttribute("errname") + " accepts only alpha numeric values and underscore  \n ");
	}
	objElement.focus();
	return false;
}

//Allowed characters are  alphabets , space and numbers
function checkFormAlpNumSpace (objElement) {
	var argv = arguments;
	var argc = arguments.length;
	var isAlert = (argc > 1 ) ? argv[1] : false;
	var regExp = /^[a-z0-9 ]+/gi;
	var result = new String(objElement.value.match(regExp));
	if ( result == objElement.value) return true;
	if ( isAlert ) {
		alert (objElement.getAttribute("errname") + " accepts only alpha numeric values and space \n ");
	}
	objElement.focus();
	return false;
}

//Allowed characters are only alphabets & ()
function checkFormAlpOpenCloseBr (objElement) {
	var argv = arguments;
	var argc = arguments.length;
	var isAlert = (argc > 1 ) ? argv[1] : false;
	var regExp = /^[a-z()]+/gi;
	var result = new String(objElement.value.match(regExp));
	if ( result == objElement.value) return true;
	if ( isAlert ) {
		alert (objElement.getAttribute("errname") + " accepts only alphabets and ( , )  \n ");
	}
	objElement.focus();
	return false;
}

//Allowed characters are only alphabets, &, , ,.,(,)
function checkFormAlpOCBCD (objElement) {
	var argv = arguments;
	var argc = arguments.length;
	var isAlert = (argc > 1 ) ? argv[1] : false;
	var regExp = /^[a-z(),.&]+/gi;
	var result = new String(objElement.value.match(regExp));
	if ( result == objElement.value) return true;
	if ( isAlert ) {
		alert (objElement.getAttribute("errname") + " accepts only alphabets values,Dot ,  comma , ( , ) , &  \n ");
	}
	objElement.focus();
	return false;
}

//Allowed characters are only alphabets and space
function checkFormCharSpace (objElement) {
	var argv = arguments;
	var argc = arguments.length;
	var isAlert = (argc > 1 ) ? argv[1] : false;
	var regExp = /^[a-z]+[a-z ]*/gi;
	var result = new String(objElement.value.match(regExp));
	if ( result == objElement.value) return true;
	if ( isAlert ) {
		alert (objElement.getAttribute("errname") + " accepts only character and space \n ");
	}
	objElement.focus();
	return false;
}

function checkFormEmail (objElement) {

		var argv = arguments;
	var argc = arguments.length;
	var isAlert = (argc > 1 ) ? argv[1] : false;
 	var re=/^([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$/;
	var strInputDate = objElement.value;
	if ( strInputDate.match(re) ) {
		return true;
	}else {
		if ( isAlert ) {
			alert( objElement.getAttribute("errname")+" is not valid ");
			objElement.focus();
		}
		return false;
	}
	return true;
}

function checkFormMantatory (objElement) {
	if ( trim(objElement.value) == "" ) {
		alert ("Please enter the "+objElement.getAttribute("errname"));
		objElement.value = "";
		objElement.focus();
		return false;
	}
	return true;
}

function checkOptionForm(objElement) {
	if (objElement.value == "" || objElement.selectedIndex == 0 ) {
		alert ("Please select the "+objElement.getAttribute("errname"));
		objElement.focus();
		return false;
	}
	return true;
}

function checkFormPhone (objElement) {
	var argv = arguments;
	var argc = arguments.length;
	var isAlert = ( argc > 1) ? argv[1] : false;
	var regExp =/^[0-9\-\+\_\(\)\/]*/gi
	var result =  new String(objElement.value.match(regExp));
	if ( result == objElement.value) return true;
	if ( isAlert ) {
		alert (objElement.getAttribute("errname")+" accepts only Numbers , Hypens ,(,),/ and +");
	}
	objElement.focus();
	return false;
}

function checkRadioForm(objElement) {

	var radio = document.getElementsByName(objElement.name);
	j=0;
	for (i= 0;i<radio.length ;i++){
		if (radio[i].checked == true){
			j++
		}
	}

	if ( j == 0 ) {
		alert ("Please select the "+objElement.getAttribute("errname"));
		objElement.focus();
		return false;
	}
	return true;

}

function checkCheckBoxForm(objElement) {

	var checkBox = document.getElementsByName(objElement.name);
	j=0;
	for (i= 0;i<checkBox.length ;i++){
		if (checkBox[i].checked == true){
			j++
		}
	}

	if ( j == 0 ) {
		alert ("Please select the "+objElement.getAttribute("errname"));
		objElement.focus();
		return false;
	}
	return true;

}


function checkValidDate (objElement) {
	var argv = arguments;
	var argc = arguments.length;
	var isAlert = (argc > 1 ) ? argv[1] : false;
	var re=/^((29-0?2-\d{2}([13579][26]|[02468][048]))|((0?[1-9]|[1-2]\d|3[0-1])-(0?[13578]|10|12)-\d{4})|((0?[1-9]|[1-2]\d|30)-(0?[469]|11)-\d{4})|((0?[1-9]|1\d|2[0-8])-0?2-\d{4}))/g;
	var strInputDate = objElement.value.replace(/\//g,"-");
	if ( strInputDate.match(re) ) {
		return true;
	}else {
		if ( isAlert ) {
			alert( objElement.getAttribute("errname")+" is not valid");
			objElement.focus();
		}
		return false;
	}
	return true;
}

function checkValidFromToDate (objElement) {
	var argv = arguments;
	var argc = arguments.length;
	var isAlert = (argc > 1 ) ? argv[1] : false;
	Months = ["jan", "feb", "mar", "apr", "may", "jun",
			"jul", "aug", "sep", "oct", "nov", "dec"];

	var re= /^((0?[1-9]|1\d|2[0-8])-0?2-\d{4})/g
	//var strInputDate = objElement.value.replace(/\//g,"-");
	var strInputDate = objElement.value;
	var strInput = strInputDate.split("-");
	if(strInput.length == 2){
		if (strInput[1].match(re) ) {
			return true;
		}
		else
		{
			alert( objElement.getAttribute("errname")+" is not valid");
			objElement.focus();
			return false;
		}
	}else {
		if ( isAlert ) {
			alert( objElement.getAttribute("errname")+" is not valid");
			objElement.focus();
		}
		return false;
	}
	return true;
}


/*This function change date to long*/
function getLongDate(dd,mm,yy){
	dd=dd.toString()
	mm=mm.toString()
	yy=yy.toString()
	return parseInt(yy+mm+dd)
}

/*	Extract date from given form date */
function getFormDate (date) {
	var re = /^(0?\d{1,2})[\/-]0?\d{1,2}[\/-]\d{4}/g
	var arr= re.exec(date);
	var ret = false;
	for (i in arr) {
		if ( i==1) ret = true;
	}
	if (ret) return checkDateLength( arr[1] );
	return 0;
}

/*	Extract month from given form date */
function getFormMonth (date) {
	var re = /^0?\d{1,2}[\/-](0?\d{1,2})[\/-]\d{4}/g
	var arr= re.exec(date);
	var ret = false;
	for (i in arr) {
		if ( i==1) ret = true;
	}
	if (ret) return checkDateLength( arr[1] );
	return 0;
}

/*	Extract year from given form date */

function getFormYear (date) {
	var re = /^0?\d{1,2}[\/-]0?\d{1,2}[\/-](\d{4})/g
	var arr= re.exec(date);
	var ret = false;
	for (i in arr) {
		if ( i==1) ret = true;
	}
	if (ret) return arr[1];
	return 0;
}

function compareDate (date1,date2) {
	var date1 = getLongDate ( getFormDate(date1),getFormMonth(date1),getFormYear(date1));
	var date2 = getLongDate ( getFormDate(date2),getFormMonth(date2),getFormYear(date2));
	if (date1 == date2) return 0;
	if (date1 > date2) return 1;
	if (date1 < date2) return -1;
}

function checkDateLength (date) {
	var strDate = date.toString();
	if ( strDate.length == 1) strDate = "0"+strDate;
	return strDate;
}



function checkFormInteger (objElement) {
		var argv = arguments;
		var argc = arguments.length;
		var isAlert = ( argc > 1) ? argv[1] : false;
		var regExp =/^[0-9]\d*/gi
		var result =  new String(objElement.value.match(regExp));
		if ( result == objElement.value) return true;
		if ( isAlert ) {
			alert (objElement.getAttribute("errname")+" accepts only numbers");
		}
		objElement.focus();
		return false;
}

function checkFormNumbersDot (objElement) {
		var argv = arguments;
		var argc = arguments.length;
		var isAlert = ( argc > 1) ? argv[1] : false;
		var regExp =/^[0-9]+[\.]?[0-9]\d*/gi 
		var result =  new String(objElement.value.match(regExp));
		if ( result == objElement.value) return true;
		if ( isAlert ) {
			alert (objElement.getAttribute("errname")+" accepts only numbers and dot");
		}
		objElement.focus();
		return false;
}

function checkFormNumbersDotColon (objElement) {
		var argv = arguments;
		var argc = arguments.length;
		var isAlert = ( argc > 1) ? argv[1] : false;
		var regExp =/^[0-9]+[\.\:]?[0-9]\d*/gi 
		var result =  new String(objElement.value.match(regExp));
		if ( result == objElement.value) return true;
		if ( isAlert ) {
			alert (objElement.getAttribute("errname")+" accepts only numbers , dot and Colon");
		}
		objElement.focus();
		return false;
}

//pincode
function checkFormCode (objElement) {
		var argv = arguments;
		var argc = arguments.length;
		var isAlert = ( argc > 1) ? argv[1] : false;
		//var regExp =/^[0-9]\d*/gi
		var regExp =/^[0-9]{6,6}/gi
		var result =  new String(objElement.value.match(regExp));
		if ( result == objElement.value) return true;
		if ( isAlert ) {
			alert (objElement.getAttribute("errname")+" accepts only numbers and should contain 6 numbers");
		}
		objElement.focus();
		return false;
}

function checkFormSpecialChar (objElement) {
	var argv = arguments;
	var argc = arguments.length;
	var isAlert = (argc > 1 ) ? argv[1] : false;
	var regExp = /^[\w\W]*/gi;
	var result = new String(objElement.value.match(regExp));
	if ( result == objElement.value) return true;
	if ( isAlert ) {
		alert (objElement.getAttribute("errname")+"  accepts only alphanumeric, &, - and spaces");
	}
	objElement.focus();
	return false;
}

function callPick(element){
	dTarget = eval("document.forms[0]."+element);
	if (trim(dTarget.value) !=""){
		var m = dTarget.value.substring(0,2);
		var d = dTarget.value.substring(2,2);
		args="m="+ m + "&d="+ d + "&t=Today";
	}else{
		args = "";
	}
	var dp = window.open("../includes/datepicker.php?"+args,'dp','left=200,top=200,width=230,height=210,toolbar=0,location=0,directories=0,status=0,menubar=0,scrollbars=0');
	return false;
}
function callPick1(element){
	dTarget = eval(element);
	if (trim(dTarget.value) !=""){
		var m = dTarget.value.substring(0,2);
		var d = dTarget.value.substring(2,2);
		args="m="+ m + "&d="+ d + "&t=Today";
	}else{
		args = "";
	}
	var dp = window.open("../includes/datepicker.php?"+args,'dp','left=200,top=200,width=230,height=210,toolbar=0,location=0,directories=0,status=0,menubar=0,scrollbars=0');
	return false;
}
function callPickv2(element){
	dTarget = eval("document.forms[0]."+element);
	if (trim(dTarget.value) !=""){
		var m = dTarget.value.substring(0,2);
		var d = dTarget.value.substring(2,2);
		args="m="+ m + "&d="+ d + "&t=Today";
	}else{
		args = "";
	}
	var dp = window.open("../includes/datepickerv2.php?"+args,'dp','left=200,top=200,width=230,height=210,toolbar=0,location=0,directories=0,status=0,menubar=0,scrollbars=0');
	return false;
}


