/* the formvalid.js and newformvalid.js are almost similar.
The only difference between these two js is ,we are passing the 
name of the Field as a parameter to the respective methods which
will be alerted if validation fails */

//  only alphabets and space are allowed
function namevalidation(invoker,fieldName){
	var accepted=true;
	var name=invoker.value;
	var fieldname=invoker.name;
	var valstring="0123456789~`!@#$%^&*()-_+={[}]:;'<>?/|\\,<>.";
	var i=0;
	var j=0;
	for(i=0;i<name.length;i++){
				var exval=name.charAt(i);
				if(valstring.indexOf(exval)>0){
					accepted=false;
					break;
				}
	}

	//  checking for "
	var namevar=new String(name);
	if(namevar.search("\"")!=-1)
			accepted=false;
	
			if(accepted==false){
				alert(fieldName.toUpperCase()+" contains invalid characters");
				invoker.focus();
				invoker.select();
			}
	return accepted;
}


//  only numbers greater than 0 is allowed.
function numbervalidation(invoker,fieldName){
	var inval=invoker.value;
	var fieldname=invoker.name;
	var accepted=true;
	if(invoker.value!=""){
		if(isNaN(inval)||inval<0){
				alert(fieldName.toUpperCase()+" is invalid, must be a numeric value >=0");
				accepted=false;
				invoker.focus();
				invoker.select();
			
		}
	}
	return accepted;
}


// checks for valid email id
function emailvalidation(invoker){
	var inval=invoker.value;
	var accepted=true;
	var validval="@.";
	var i=0;
	if(invoker.value!=""){
			for(i=0;i<validval.length;i++){
				var temp=validval.charAt(i);
				if(inval.indexOf(temp)==-1){
					accepted=false;
					break;
				}
			}
			
	}
	if(accepted==true&&invoker.value!=""){
		var valafterat=inval.substring(inval.indexOf("@")+1,inval.length-1);
		if(valafterat.indexOf(".")==-1)
			accepted=false;
	}
	if(accepted==false){
				alert("E-mail Id Invalid");
				invoker.focus();
				invoker.select();
	}
	return accepted;
}



function isCCdate(monthinvoker,yearinvoker){
	var isccdate=false;
	if(isBlank(monthinvoker)||isBlank(yearinvoker))
		isccdate=false;
	else{
		var index1=monthinvoker.selectedIndex;
		var index2=yearinvoker.selectedIndex;
		var month=parseInt(monthinvoker.options[index1].value);
		var year=parseInt(yearinvoker.options[index2].value);
		var today=new Date();
		var curryear=today.getYear();
		var currmonth=today.getMonth()+1;
		if(year==curryear){
			if(month>currmonth)
				isccdate=true;
		}
		else if(year<curryear+4){
			isccdate=true;
		}
	}//end of main else
	if(!isccdate){
			alert("Please enter a valid Expiry Date");
			monthinvoker.focus();
	}
	return isccdate;
}


//  cheks for the length of the invoker.
function lengthvalidation(invoker,i,fieldName){
	var accepted=true;
	val=new String(invoker.value);
	var fieldname=invoker.name;
	if(val.length!=i){
			alert(fieldName.toUpperCase()+" is invalid, must contain exactly "+i+" characters");
			accepted=false;
			invoker.focus();
			invoker.select();
			
		}
	return accepted;
}


//  checks whether the value is >0
//  cheks for the length of the invoker.
function greaterThan(invoker,i,fieldName){
	var accepted=true;
	val=invoker.value;
	var fieldname=invoker.name;
	if(val==i || val<i){
			alert(fieldName.toUpperCase()+" must be greater than "+i);
			accepted=false;
			invoker.focus();
			invoker.select();
			
		}
	return accepted;
}


//  checks whether the value of invoker is empty
function isBlank(invoker,fieldName){
	var rejected=false;
		if(invoker.value==""){
		rejected=true;
		var fieldname=invoker.name;	
		alert(fieldName.toUpperCase()+" must contain a value");
		invoker.focus();
	}
	return rejected;
}


//  validated whether the invoker contains minimum number of characters.
function isMinLength(invoker,i,fieldName){
	var accepted=true;
	var val=new String(invoker.value);
	var fieldname=invoker.name;

	if(val.length<i){
			alert("Field "+ fieldName.toUpperCase()+" must contain minimum "+i+" characters");
			accepted=false;
			invoker.focus();
			invoker.select();
			
		}
	return accepted;
}


//  checks for the specified max length of the invoker
function isMaxLength(invoker,i,fieldName){
	var accepted=true;
	var val=new String(invoker.value);
	var fieldname=invoker.name;
	if(val.length>i){
			alert(fieldName.toUpperCase()+ " can contain only a maximum of "+i+" characters");
			accepted=false;
			invoker.focus();
			invoker.select();
			
		}
	return accepted;
}


//  validates the id's  except user id.  only a-z, 0-9, _ and space are allowed.
function idvalidation(invoker,fieldName){
	var accepted=true;
	var name=invoker.value;
		var fieldname=invoker.name;
	var valstring="~`!@#$%^&*()-+={[}]:;'<>?/|\\,<>. ";
	var i=0;
	var j=0;
	for(i=0;i<name.length;i++){
				var exval=name.charAt(i);
				if(valstring.indexOf(exval)>0){
					accepted=false;
					break;
				}
	}

	//  checking for "
	var namevar=new String(name);
	if(namevar.search("\"")!=-1)
			accepted=false;
	
			if(accepted==false){
				
			alert("Field "+ fieldName.toUpperCase()+" contains invalid characters");
				invoker.focus();
				invoker.select();
			}
					
	return accepted;
}

//  Only 0-9,-,(,)
function televalidation(invoker,fieldName){
	var accepted=true;
	var name=invoker.value;
	var fieldname=invoker.name;
	var valstring="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ~`!@#$%^&*_+={[}]:;'<>?/|\\,<>.";
	var i=0;
	var j=0;
	for(i=0;i<name.length;i++){
				var exval=name.charAt(i);
				if(valstring.indexOf(exval)>0){
					accepted=false;
					break;
				}
	}
	
	if(accepted==false){
				alert("The field "+fieldName.toUpperCase()+" contains invalid characters\n Only (, ), - and digits allowed ");
				invoker.focus();
				invoker.select();
	}
	return accepted;
}

function copyvalue(thisfield,fromfield){
	
	thisfield.value=fromfield.value;
}


function emptyvalidation(frm,maxelements){
	var i=0;
	var accepted=true;
	for(i=0;i<maxelements;i++){
		if(isBlank(frm.elements[i])){
				accepted=false;
				break;
			
			}
		
	}
	return accepted;		
}


//  mainly used in catalog and category.
// Only a-z, A-Z,space, - , _ , ' 
function catalognamevalidation(invoker,fieldName){
	var accepted=true;
	var name=invoker.value;
	var fieldname=invoker.name;

	var valstring="0123456789~`!@#$%^&*()+={[}]:;<>?/|\\,<>.";
	var i=0;
	var j=0;
	for(i=0;i<name.length;i++){
				var exval=name.charAt(i);
				if(valstring.indexOf(exval)>0){
					accepted=false;
					break;
				}
	}

	//  checking for "
	var namevar=new String(name);
	if(namevar.search("\"")!=-1)
			accepted=false;
	
			if(accepted==false){
				alert(fieldName.toUpperCase()+" contains invalid characters");
				invoker.focus();
				invoker.select();
			}
	return accepted;
}


//  mainly used in color,clarity etc.
// Only a-z, A-Z,0-9,space, - , _ , ' 
function codeNameValidation(invoker,fieldName){
	var accepted=true;
	var name=invoker.value;
	var fieldname=invoker.name;

	var valstring="~`!@#$%^&*()+={[}]:;<>?/|\\,<>.";
	var i=0;
	var j=0;
	for(i=0;i<name.length;i++){
				var exval=name.charAt(i);
				if(valstring.indexOf(exval)>0){
					accepted=false;
					break;
				}
			}

	//  checking for "
	var namevar=new String(name);
	if(namevar.search("\"")!=-1)
			accepted=false;
	
			if(accepted==false){
				alert(fieldName.toUpperCase()+" contains invalid characters");
				invoker.focus();
				invoker.select();
			}
	return accepted;
}

// create the prototype on the String object
String.prototype.trim = function() {

// skip leading and trailing whitespace
// and return everything in between
  return this.replace(/^\s*(\b.*\b|)\s*$/, "$1");

}

//  for validating image names.  only a-z,0-9,_ and . are allowed
function imageNameValidation(invoker,fieldName){
	var accepted=true;
	var name=invoker.value;
	var fieldname=invoker.name;
	var valstring="~`!@#$%^&*()-+={[}]:;'<>?/|\\,<> ";
	var i=0;
	var j=0;
	for(i=0;i<name.length;i++){
				var exval=name.charAt(i);
				if(valstring.indexOf(exval)>0){
					accepted=false;
					break;
				}
	}
	
	//  checking for space
	var namevar=new String(name);
	if(namevar.search(" ")!=-1)
			accepted=false;

	//  checking for "
	if(namevar.search("\"")!=-1)
			accepted=false;
	
			if(accepted==false){
				alert(fieldName.toUpperCase()+" contains invalid characters");
				invoker.focus();
				invoker.select();
			}
	return accepted;
}



//  validates the codes   only a-z, 0-9, _ are allowed.
function codeValidation(invoker,fieldName){
	var accepted=true;
	var name=invoker.value;
		var fieldname=invoker.name;
	var valstring="~`!@#$%^&*()-+={[}]:;'<>?/|\\,<>.";
	var i=0;
	var j=0;
	for(i=0;i<name.length;i++){
				var exval=name.charAt(i);
				if(valstring.indexOf(exval)>0){
					accepted=false;
					break;
				}
	}

	//  checking for space
	var namevar=new String(name);
	if(namevar.search(" ")!=-1)
			accepted=false;

	//  checking for "
	if(namevar.search("\"")!=-1)
			accepted=false;

	
			if(accepted==false){
				
			alert("Field "+fieldName.toUpperCase()+" contains invalid characters");
				invoker.focus();
				invoker.select();
			}
					
	return accepted;
}


function setFocus(formname){
	var object=eval("document."+formname);	
	//alert(object);
	//var object=document.forms[1];	
	for(var i=0;i<object.elements.length;i++){
		if( (object.elements[i].type=="text")||(object.elements[i].type=="textarea")||(object.elements[i].type=="password")||(object.elements[i].type=="select")){
			object.elements[i].focus();
			alert("The focussed object="+object.elements[i].name);
			break;
		}
	}
}

function enterKeyHandler(e){	
	var key=0;
	
	key = (navigator.appName == "Netscape") ? e.which : e.keyCode;
    if (key == 13){
		return true;
	}
	else {
		return false;
	}
}

function spacevalidation(invoker,fieldName){
	var accepted=true;
	var name=invoker.value;
	var fieldname=invoker.name;

	//  checking for space
	var namevar=new String(name);
	if(namevar.search(" ")!=-1)
			accepted=false;
	
	if(accepted==false){
				alert("The field "+fieldName.toUpperCase()+" contains invalid characters\n space not allowed ");
				invoker.focus();
				invoker.select();
	}
	
	return accepted;
}

//  Allows a-z,A-Z,0-9,space,"
function alphanumvalidation(invoker,fieldName){
			var accepted=true;
			var name=invoker.value;

			var valstring="~`!@#$%^&*()-+={[}]:;'<>?/|\\,<>.";
			var i=0;
			var j=0;
			for(i=0;i<name.length;i++){
					var exval=name.charAt(i);
					if(valstring.indexOf(exval)>0){
						accepted=false;
							break;
					}
			}
			if(accepted==false){
				alert(fieldName.toUpperCase()+" contains invalid characters");
				invoker.focus();
				invoker.select();
			}
			return accepted;
		}

//to compare between a starting date and end date.returns true only if starting date is after end date 
function dateComparison(start_dateInvoker,end_dateInvoker){
	var accepted=false;
	if(isBlank(start_dateInvoker)||isBlank(end_dateInvoker)){
		accepted=false;	
		return accepted;
	}

	var start_dateInvokerValue=start_dateInvoker.value;
	var end_dateInvokerValue=end_dateInvoker.value;
	var start_date=new Date(start_dateInvokerValue);
	var end_date=new Date(end_dateInvokerValue);

	if(start_date>end_date){
		accepted=false;
		alert('Start date should be before End date');
		start_dateInvoker.focus();
		start_dateInvoker.select();
		return accepted;
	}else if(start_date<end_date){
		accepted=true;			
		return accepted;
	}else if(start_date=end_date){
		accepted=false;
		alert('Start date and End date cannot be same');
		end_dateInvoker.focus();
		end_dateInvoker.select();
		return accepted;
	}
	return accepted;
}

//toCheck whether given date is after today's date.return true only if given date is after today's date
function isDateAfterToday(invoker,fieldName){	
	var date=new Date();	
	var day=date.getDate();	
	var year=date.getYear();	
	var month=date.getMonth()+1;
	var today=new Date(month+'-'+day+'-'+year);	
	var givenDate=new Date(invoker.value);
	var fieldname=invoker.name.toUpperCase();

	if(isBlank(invoker)){		
		return false;
	}

	if(givenDate>today){
		return true;
	}
	else if(givenDate=today){
		alert(fieldName+' should be after todays date');
		invoker.focus();
		invoker.select();
		return false;
	}
	else if(givenDate<today){
		alert(fieldName+' should be after todays date');
		invoker.focus();
		invoker.select();
		return false;
	}
}

//toCheck whether given date is before today's date.return true only if given date is before today's date
function isDateBeforeToday(invoker,fieldName){	
	var date=new Date();	
	var day=date.getDate();	
	var year=date.getYear();	
	var month=date.getMonth()+1;
	var today=new Date(month+'-'+day+'-'+year);	
	var givenDate=new Date(invoker.value);	
	var fieldname=invoker.name.toUpperCase();

	if(isBlank(invoker)){		
		return false;
	}

	if(givenDate<today){
		return true;
	}
	else if(givenDate=today){
		alert(fieldName+' should be before todays date');
		invoker.focus();
		invoker.select();
		return false;
	}
	else if(givenDate>today){
		alert(fieldName+' should be before todays date');
		invoker.focus();
		invoker.select();
		return false;
	}
}

function decimalcorrection(invoker){          //this is for setting zeros before and zfter the '.' sign ,if necessery zeros are not present.
		
	var fieldvalue=new String(invoker.value);
	if(fieldvalue.indexOf(".")!=-1){
		var startpoint=fieldvalue.indexOf('.');
		var substrgot=fieldvalue.substring(startpoint+1,fieldvalue.length);
		if(substrgot.length==0)
			fieldvalue=fieldvalue+'00';
		if(substrgot.length==1)
			fieldvalue=fieldvalue+'0';
	}else
		fieldvalue=fieldvalue+'.00';
		
		if(fieldvalue.indexOf(".")==0)
			fieldvalue='0'+fieldvalue;

  	invoker.value=fieldvalue;
}