/* Function converts the first letter of the argument to 
   uppercase 
*/ 
        function validateCustomerName(obj) { 
        
        var customerName = ltrim(obj.value); 
        var customerNameStart = customerName.charAt(0).toUpperCase();         
        obj.value = customerNameStart + customerName.substring(1,customerName.length); 
                
        }         
/* Function to trim strings. 
        Arg - string 
        returns - string 
*/         
    function ltrim(argvalue) { 
              while (1) { 
                if (argvalue.substring(0, 1) != " ") 
                  break; 
                argvalue = argvalue.substring(1, argvalue.length); 
              } 

      return argvalue; 
    } 

function changeVsnlFields(fieldArr) {
    
    if (fieldArr == null) 
	return;

    for (i = 0; i < fieldArr.length; i++) {	
		
		fldObj = fieldArr[i]
		
    	if (fldObj == null) {
			continue			
		}			
		fldObj.value = "";	
		fldObj.disabled = true;	
		alert(fldObj.disabled);			
	}
	return;
}

function ismaxlength(obj,mlength){	
	if (obj.value.length>mlength && event.type == 'keyup') 		
		obj.value=obj.value.substring(0,mlength)
	else if (obj.value.length>=mlength)
		return false;	
}

function getFldobj(fldName,index) {
	
	var newObj;		// WSC Migration		

	if (index == null || index == newObj) {		// WSC Migration
		index = 0;
	}
	if (document.all) {
		return document.all(fldName);			// WSC Migration
	} else {
		var outArray = new Array();
		var aEl = document.getElementsByTagName( '*' );	
		for(var i=0,j=aEl.length;i<j;i+=1){
			if(aEl[i].name == fldName) {
				outArray.push(aEl[i]);
			}
		}
		for(i=0; i <= outArray.length; i++){
			if (i==index) {
				return outArray[i];
			}
		}
	}
}

function getValue(fldName) {	
	fldObj = document.all(fldName);	
	if (fldObj!=null && fldObj!= undefined) {
		if (fldObj.length == undefined)	{
			if(fldObj.checked)
				return fldObj.value;
		}
		else {
			for (i=0;i<fldObj.length;i++)
			{
				if (fldObj[i].checked)
					return fldObj[i].value;
			}
		}
	} else return;	
}

function getValueFromList(fldObj) {	
	var notChecked = 0;
	if (fldObj.length == undefined)	{
		if(fldObj.checked)
			return fldObj.value;
	}
	else {
		for (i=0;i<fldObj.length;i++)
		{
			
			if (fldObj[i].checked) {
				notChecked = 1;
				return fldObj[i].value;
			} 
		}
		if (notChecked == 0) {
			return "";
		}
	}	
}

function fnSubmit(form, methodName)
{
	if (event.srcElement.tagName == "BUTTON")
		event.srcElement.disabled = true;
	form.method.value=methodName;	
	form.submit();
}

function fnSubmit(form, methodName, buttonObj) {
	if(buttonObj == null) {
		if (event.srcElement.tagName == "BUTTON")
			event.srcElement.disabled = true;
	} else {
		buttonObj.disabled = true
	}
	form.method.value = methodName;
	form.submit();
}

function openCalendar(aPath,aDateObj,aleft,atop)
{
	dateObj = aDateObj;
	window.showModalDialog(aPath,window,'status:no;scroll:no;resizable:no;help:no;dialogHeight:218px;dialogWidth:215px;dialogLeft=' + aleft + ';dialogTop=' + atop);
}
function fillDate(str)
{
	dateObj.value = str;
}

function openNewWindow(linkurl,windowname,left,top,width,height,scroll,resize){
    windowname = window.open(linkurl,windowname,"toolbar=0,location=0,directories=0,status=0,menubar=0,scrollbars="+scroll+",resizable="+resize+",left="+left+",top="+top+",width="+width+",height="+height);
}

function openModalNewWindow(linkurl,windowname,left,top) {
	windowname = window.showModalDialog(linkurl,windowname,'status:no;scroll:yes;resizable:no;help:no;dialogHeight:50px;dialogWidth:250px;dialogLeft=' + left + ';dialogTop=' + top);
}

/* Function converts the first letter of the argument to 
uppercase
*/
function validateCustomerName(obj) {

	var customerName = ltrim(obj.value);
	var customerNameStart = customerName.charAt(0).toUpperCase(); 
	obj.value = customerNameStart + customerName.substring(1,customerName.length);

} 

/* Function to trim strings.
Arg - string
returns - string
*/ 
function ltrim(argvalue) {
	while (1) {
		if (argvalue.substring(0, 1) != " ")
			break;
		argvalue = argvalue.substring(1, argvalue.length);
	}
	return argvalue;
}




/*
Use this method, if the "div" blocks need to be shown/hidden/blurred
This method takes an array of div ids that need to be shown or hidden
1 - show the block
0 - hide the block
Usage:
if "div1" is to be shown
divArr = [[div1,1]];

if "div1" is to be shown and "div5" is to be hidden
divArr = [[div1,1], [div5,0]];

call the function using showhideBlock(divArr)
*/

function showhideBlock(divArr,disableFlag){
	
	if (divArr == null) return;		
	for (var i=0;i<divArr.length;i++){
		
		divObj = divArr[i][0];
		changeType = divArr[i][1];
		
		if (changeType == 1){		
			divObj.style.display = "block";
		}
		else {
			divObj.style.display = "none";			
		}
		if (disableFlag != null && disableFlag == 1)
			disableCtrls(divObj,changeType);	
				
	}		
}

function disableCtrls(parentNode,enableflag) 
{		
	for (var i=0;i<parentNode.childNodes.length;i++) 
	{
		var oNode  = parentNode.childNodes[i];
		
		if (oNode.tagName == 'A') {
			oNode.outerHTML = oNode.innerText; 			
		}
		else if (oNode.childNodes.length > 0 && oNode.tagName != 'SELECT' && oNode.tagName != 'TEXTAREA') 
		{
			disableCtrls(oNode,enableflag);
		}
		else 
		{		
			if ((oNode.tagName == 'INPUT' || oNode.tagName == 'SELECT' || oNode.tagName == 'TEXTAREA') && oNode.type != 'button' && oNode.type != 'hidden') 
			{				
				if (enableflag == 1) 
				{					
					oNode.disabled = false;
					if (oNode.tagName == 'SELECT') {					
						if (oNode.options.length!=0 && oNode.value=='')
							oNode.options[0].selected = true;
					}
				}
				else if(enableflag == -1)
				{					
					oNode.disabled = true;
				}
				else 
				{
					oNode.value = '';
					oNode.disabled = true;
				}								
			}
		}		
	}
}

//to validatedate 
function chequeDate(oDate) {
	var date = oDate.value;
	
	if(date!= "undefined" && date!=""){		
		if(validateDate(date)){				
			oDate.value = formatChequeDate(oDate);							
			return;
		}
		else { 
			oDate.value="";
			oDate.focus();	
		}
	}else if(date == "undefined"){
		oDate.value = "";
	}	
	return;		
}

function validateCommunicationNo(obj,min,max,msg) {
	var input = obj.value;
	len = input.length;
	if (input!="") {
		if (min!=0) {
			if (min>len || len>max){
				alert(msg);
				obj.value="";
				obj.focus();
				return false;
			}else return true;
		}else if (len>max) {
			alert(msg);
			obj.value="";
			obj.focus();
			return false;
		}else return true;
	}else return true;
}


	/**	This function is to compare a date in "dd-mm-yyyy" format with the System date
		@ param 1:  objDate : Field object whose value is to be compared.
		@ param 2:  futureDate : 0 = futureDate is not allowed, 1 = futureDate is allowed. 
					futureDate : 2 = upto 1 month future date is allowed. 
		@ return true if the condition is satisfied
				 false if the condition is not satisfied
	*/
	
	
	function compareDate(objDate,futureDate) {
		var aGivenDate = objDate.value;
		if (aGivenDate != "") {
			var actualDate = new Date(); 
			var givenDate = new Date(); // for 6 months past date
			var systemDate = new Date();
			var givenDate2 = new Date(); // to allow only 1 month future date
			
			actualDate.setFullYear(parseFloat(aGivenDate.substring(6,10)));
			actualDate.setMonth(parseFloat(aGivenDate.substring(3,5)-1));
			actualDate.setDate(parseFloat(aGivenDate.substring(0,2)));
			givenDate.setFullYear(systemDate.getFullYear());
			givenDate.setMonth(systemDate.getMonth()- 6);
			givenDate.setDate(systemDate.getDate());
			givenDate2.setFullYear(systemDate.getFullYear());
			givenDate2.setMonth(systemDate.getMonth()+1);
			givenDate2.setDate(systemDate.getDate());
			
			
			if (futureDate == 0) {
				if(actualDate < givenDate) {
					alert("The Cheque Date should not be older than six months");
					objDate.focus();
					return false;
				} else if (actualDate > givenDate && actualDate > systemDate) {
					alert("Post Dated Cheques are not allowed");
					objDate.focus();
					return false;
				} else return true;
			} else if (futureDate==1) {
				if(actualDate < givenDate) {
					alert("The Cheque Date should not be older than six months");
					objDate.focus();
					return false;
				} else return true;
			} else if (futureDate == 2) {
				if(actualDate < givenDate) {
					alert("The Cheque Date should not be older than six months");
					objDate.focus();
					return false;
				} else if (actualDate > givenDate2) {
					alert("More than One month Post Dated Cheques are not allowed");
					objDate.focus();
					return false;
				} else return true;
			}
			
		}else return true;
	}
	
	/* Function for converting a Date in String format (dd-mm-yyyy) to javascript Date object */
	function convertStringToDate(aGivenDate) {
		var gDay = parseFloat(aGivenDate.substring(0,2));
		var gMonth = parseFloat(aGivenDate.substring(3,5));
		var gYear = parseFloat(aGivenDate.substring(6,10));
	 	
	 	var givenDate = new Date();
	 	givenDate.setFullYear(gYear);
	 	givenDate.setMonth(gMonth - 1);
		givenDate.setDate(gDay);
		
		return givenDate;
	}
	
	/*Function to round of double value
	* use : function roundNumber(fieldValue,roundto)
	* fieldValue = The value needs to be rounded of
	* round to = The number of decimal places to round to
	*/
	function roundNumber(fieldValue,roundto) {
		var rlength = roundto; // The number of decimal places to round to
		var newnumber = Math.round(fieldValue*Math.pow(10,rlength))/Math.pow(10,rlength);
		return newnumber;
	} 
	
	function trim(s) {
		if (s == null)
		    return "";
		return s.replace( /^\s*/, "" ).replace( /\s*$/, "" );
	}
	
/* Function converts the first letter of the argument to 
   uppercase 
*/ 
        function validateCustomerName(obj) { 
        
        var customerName = ltrim(obj.value); 
        var customerNameStart = customerName.charAt(0).toUpperCase();         
        obj.value = customerNameStart + customerName.substring(1,customerName.length); 
                
        }         
/* Function to trim strings. 
        Arg - string 
        returns - string 
*/         
        function ltrim(argvalue) { 

                  while (1) { 
                    if (argvalue.substring(0, 1) != " ") 
                      break; 
                    argvalue = argvalue.substring(1, argvalue.length); 
                  } 

          return argvalue; 
        } 

/*
	 * Function to validate Mobile Number entered by the user
	 */
	function validateMobileNumber(obj){
		input=trim(obj.value);
		// Check for null value, If the value is null then dont validate
		if(input != "") {
			// Check Number Validation
			if(isNaN(input)) {
				alert("Please enter only digits");
				obj.focus();
				return false;
			}
			
			// Check for 10 Digit number
			if(!(input.length == 10))	{
				alert("Mobile Number should have 10 digits");
				obj.focus();
				return false;
			}
			
			// Check that the number entered is more than 9000000000 and less than 100000000000 
			if(input.substring(0,1) != '9')	{
				alert("Please Enter a Mobile Number beginning with digit 9");
				obj.focus();
				return false;
			}
			
		} else return true;
	}
	
	/*
	 * Function to validate LandLine Number entered by the user
	 */
	function validateLandLineNumber(obj){
		input=trim(obj.value);
		// Check for null value, If the value is null then dont validate
		if(input != "") {
			// Check Number Validation
			if(isNaN(input)) {
				alert("Please enter only digits");
				obj.focus();
				return false;
			}
			
			// Check for 10 Digit number
			if(!(input.length == 10))	{
				alert("Landline Number should have 10 digits including STD Code without Zero");
				obj.focus();
				return false;
			}
			
		} else return true;
	}

	/*
	 * Function to validate Login id entered by the user
	 */
	function validateEmailId(oLoginId){
		
		input=trim(oLoginId.value);
		if(input!="") {
			// commented by arjun. Added new Login id Filter
			//var emailFilter=/^.+@.+\..{2,3}$/;
			var emailFilter = /^([a-zA-Z0-9_\-])+(\.([a-zA-Z0-9_\-])+)*@((\[(((([0-1])?([0-9])?[0-9])|(2[0-4][0-9])|(2[0-5][0-5])))\.(((([0-1])?([0-9])?[0-9])|(2[0-4][0-9])|(2[0-5][0-5])))\.(((([0-1])?([0-9])?[0-9])|(2[0-4][0-9])|(2[0-5][0-5])))\.(((([0-1])?([0-9])?[0-9])|(2[0-4][0-9])|(2[0-5][0-5]))\]))|((([a-zA-Z0-9])+(([\-])+([a-zA-Z0-9])+)*\.)+([a-zA-Z])+(([\-])+([a-zA-Z0-9])+)*))$/;
			if (!(emailFilter.test(input))){
				alert("Please enter a valid Email Id");
				oLoginId.focus();
				return false;
			}

			var illegalChars= /[\(\)\<\>\,\;\:\\\/\"\[\]\']/;
			if (input.match(illegalChars)) {
				alert("The Email Id containss illegal characters. Please enter a valid Email Id");
				oLoginId.focus();
				return false;
			}
		}
	}