var jsObjDate = new Date();
var jsTzId = jsObjDate.getTimezoneOffset();
var dbTzId = (-1) * jsTzId * 60 ;

function fnCheckSpaceInString(sFldval) {
	var sTemp = sFldval;
	var retval = false;
	for(var i=0;i<sTemp.length;i++) {
		if ( sTemp.charAt(i) == " " ) {
			retval = true;
			break;
		}
	}
	return retval;
}

function fnRemoveSpaces(sFldval) {
	var sTemp = sFldval;
	var sNewval = sTemp;
	//remove spaces from the front
	for(var i=0;i<sTemp.length;i++) {
		if(sTemp.charAt(i)!=" ")
			break;
		else
			sNewval = sTemp.substring(i+1);
	}
	return sNewval;
}

function fnFixSpace(sFldval) {
	var sTemp = sFldval;
	var sReversedString = "";
	var sTemp1;

	//remove spaces from the front
	sNewval = fnRemoveSpaces(sTemp);
	
	// reverse n remove spaces from the front
	for(var i=sNewval.length-1;i>=0;i--)
		sReversedString = sReversedString + sNewval.charAt(i);

	sTemp1 = fnRemoveSpaces(sReversedString);

	//reverse again
	sReversedString="";

	for(var i=sTemp1.length-1;i>=0;i--)
		sReversedString = sReversedString + sTemp1.charAt(i);
	sNewval = sReversedString;

	return sNewval;
}

function IsNumeric(obj) {
	/*
	var theChar = "" ;
	var retval = true ;
	for(var i=0 ; i<obj.value.length ; i++) {
		theChar = obj.value.substring(i, 1) ;
		if(theChar <= '0' || theChar >= '9' ) {
			retval = false;
			break ;
		}
	}
	*/
	return true;
}

function ValidEmail(objName)
{
	var sobjValue;
	var iobjLength;

	sobjValue=objName;
	iobjLength=sobjValue.length;
	iFposition=sobjValue.indexOf("@");
	iSposition=sobjValue.indexOf(".");
	iTmp=sobjValue.lastIndexOf(".");
	iPosition=sobjValue.indexOf(",");
	iPos=sobjValue.indexOf(";");

	if (iobjLength!=0) 	{
		if ((iFposition == -1)||(iSposition == -1)) {
			return false;
		} else if(sobjValue.charAt(0) == "@" || sobjValue.charAt(0)==".") {
			return false;
		}
		else if (sobjValue.charAt(iobjLength) == "@" || sobjValue.charAt(iobjLength)==".") {
			return false;
		} else if((sobjValue.indexOf("@",(iFposition+1)))!=-1) {
			return false;
		} else if ((iobjLength-(iTmp+1)<2)||(iobjLength-(iTmp+1)>3)) {
			return false;
		} else if ((iPosition!=-1) || (iPos!=-1)) {
			return false;
		} else {
			return true;
		}
	}
}

/* 
	Function		:	IsHTMLTagByField()
	Author			:	Anupam Saha
	Purpose			:	To exclude any HTML / Script Tag in a Text Entry
	Logic Applied	:	Search for "<...>" pattern within the Text.
						If found, then show Error, otherwise Allow it.
	Parameters		:	Expression (can be an Object / String Expression)
	Return Value	:	Boolean
*/
function IsHTMLTagByField(Expression) {
	var retval = false ;
	var str ;
	var reg1 = /<(.*)>/ ;		// HTML Open Tag => Not Valid
	var reg2 = /<\/(.*)>/ ;		// HTML Close Tag => Not Valid
	
	str = (typeof Expression == "object" ? Expression.value : Expression) ;

	if (!reg1.test(str) && !reg2.test(str)) {
		retval = false ;
	} else {
		retval = true ;
	}
	
	return retval ;
}

function ValidExtension(objField, array_extension) {
	// get the extension from the Field Value
	var fldExtn_place = objField.value.lastIndexOf(".");
	var fldExtn = objField.value.substr(fldExtn_place).toLowerCase();
	var found = false;
	var valid_extn = "";
	
	for( var i = 0; i < array_extension.length ; i++) {
		if ( fldExtn == array_extension[i] ) {
			found = true;
			break;
		} else {
			found = false;
		}
	}
	
	if ( !found ) {
		for(var i = 0 ; i < array_extension.length ; i++) {
			valid_extn += "'" + array_extension[i] + "', " ;
		}
		
		alert("File with extensions " + valid_extn + " are only allowed");
	}
	return (found);
}

/*
	General Form Validation Function
	Applicable for all forms
*/
function ValidForm(f) {
	for(var i = 0 ; i < f.elements.length ; i++) {
		var fld = f.elements[i];
		var fldName = fld.name;
		var fldType = fld.type;
		
		if ( fldType == "submit" || fldType == "reset" || fldType == "button") {
			continue ;
		}
		
		var fldArray = fldName.split("_");
		
		if ( fldArray[0] == "r" ) {	// if it is a required field
			if ( fldType == "text" || fldType == "textarea" ) {		// if it is a text or textarea
				if ( fnFixSpace(fld.value) == "" ) {
					ShowAlert(fld);
					fld.value = fnFixSpace(fld.value);
					fld.select();
					fld.focus();
					return false;
				}
				
				if ( fldArray[1] == "nh" ) {	// if it is a non-HTML value
					if ( IsHTMLTagByField(fld) ) {
						alert("Invalid character found in Input\n\nTry to avoid HTML tags or '<' and '>' characters!!");
						fld.select();
						fld.focus();
						return false;
					}
				}
				
				if ( fldArray[1] == "em" ) {	// if it is a Email field
					if ( !ValidEmail(fld.value) ) {
						alert("Enter a valid Email Address");
						fld.select();
						fld.focus();
						return false;
					}
				}
			}	// End of text or textarea checking
			
			if ( fldType == "select-one" ) {	// if it is a drop-down
				if ( fld.value == "" ) {
					ShowAlert(fld);
					fld.focus();
					return false;
				}
			}	// end drop-down
		}	// End checking Required Field

		if ( fldArray[0] == "n" ) { 	// if it is a non-required field
			// TO DO:
		}	// End non-required field
	}	// End of for()
	
	return true;
}

function ShowAlert(objField) {
	if ( objField.title == "" ) {
		alert("Manditory Field Missing Value");
	} else {
		alert(objField.title);
	}
}
