/* the newformvalid.js and new_formvalid.js are almost similar.
The only difference between these two js is ,we have removed onFocus and onSelect methods
This js is useful in ticl jsps where we have validation in multiple tabitems */

//  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");								
			}
	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;								
			
		}
	}
	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");				
	}
	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");			
	}
	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;						
			
		}
	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;			
			
		}
	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");		
	}
	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;									
		}
	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;				
			
		}
	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");								
			}
					
	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 ");				
	}
	return accepted;
}

//  Only 0-9
function retelevalidation(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){
					name=name.substring(0,i)+name.substring(i+1,name.length);
					
				}
	}
	
	
	invoker.value=name;
	
}


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");				
			}
	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");					
			}
	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");								
			}
	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");					
			}
					
	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 ");				
	}
	
	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");								
			}
			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');				
		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');				
		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');				
		return false;
	}
	else if(givenDate<today){
		alert(fieldName+' should be after todays date');				
		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');				
		return false;
	}
	else if(givenDate>today){
		alert(fieldName+' should be before todays date');				
		return false;
	}
}

function compare(field1,field2){
		var accepted=true;
		if(field1.value!=field2.value){
				accepted=false;
				alert("The Passwords should match");			
		}
		return accepted;
	}

//decimalpoint validation
function decimalvalidation(fieldval,fieldName){
	var accepted=true;
	
var fieldvalue=new String(fieldval);
	if (isNaN(fieldvalue)) 
       accepted=false;    
   if (fieldvalue.indexOf('.') >0)
       accepted=false;
	 
	
	if(accepted==false){
				alert("Please enter a valid number without a decimal point");
		
	}
	
	return accepted;
}

function showImage(url,image)
{
	var completeUrl=url+"&file="+image;
	window.open(completeUrl,'','toolbar=no,location=no,status=no,menubar=no,scrollbars=Yes,resizable=Yes,width=500,height=500');
}

function URLEncode(plaintext )
{
	// The Javascript escape and unescape functions do not correspond
	// with what browsers actually do...
	var SAFECHARS = "0123456789" +					// Numeric
					"ABCDEFGHIJKLMNOPQRSTUVWXYZ" +	// Alphabetic
					"abcdefghijklmnopqrstuvwxyz" +
					"-_.!~*'()";					// RFC2396 Mark characters
	var HEX = "0123456789ABCDEF";

//	var plaintext = document.URLForm.F1.value;
	var encoded = "";
	for (var i = 0; i < plaintext.length; i++ ) {
		var ch = plaintext.charAt(i);
	    if (ch == " ") {
		    encoded += "+";				// x-www-urlencoded, rather than %20
		} else if (SAFECHARS.indexOf(ch) != -1) {
		    encoded += ch;
		} else {
		    var charCode = ch.charCodeAt(0);
			if (charCode > 255) {
			    alert( "Unicode Character '" 
                        + ch 
                        + "' cannot be encoded using standard URL encoding.\n" +
				          "(URL encoding only supports 8-bit characters.)\n" +
						  "A space (+) will be substituted." );
				encoded += "+";
			} else {
				encoded += "%";
				encoded += HEX.charAt((charCode >> 4) & 0xF);
				encoded += HEX.charAt(charCode & 0xF);
			}
		}
	} // for

	//document.URLForm.F2.value = encoded;
	return encoded;
};


function decimalcorrection(invoker,rlength){  //this is for setting zeros before and zfter the '.' sign ,if necessery zeros are not present.
	var number=new Number(invoker.value);
	if(isNaN(rlength))
		rlength=2;
	var newnumber = Math.round(number*Math.pow(10,rlength))/Math.pow(10,rlength);	
	var fieldvalue=new String(newnumber);
	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;
}

function roundNumber(number,rlength) {
	//1) Multiple the original number by 10^x (10 to the power of x)
	//2) Apply Math.round() to the result
	//3) Divide result by 10^x
	//var rlength = 2; // The number of decimal places to round to
	var newnumber = Math.round(number*Math.pow(10,rlength))/Math.pow(10,rlength);
	return newnumber;
}
