

function Trim(string) 
{                  
	var i;                          
	var intCount;                       
	intCount = 0;                       
	for (i = 0; i < string.length; i++)             
		if ((string.charAt(i)) != " ")        
			break;                  
		else                        
			intCount = intCount + 1;   

	string = string.substring(intCount, string.length); 
	intCount = 0;                       
	for (i = string.length-1; i >= 0; i--)          
		if ((string.charAt(i)) != " ")        
			break;                  
		else                        
			intCount = intCount + 1;  

	string = string.substring(0, string.length-intCount);   
	return string;                      
} 
	
function isValidInput( strInput )
{
	var blnResult = false ;

	try
	{
		var strPattern = "[^~`^!@#$%&*()\\-\\+=\\,\\.?'\\[\\]\\{\\}A-Za-z0-9_ /\\\\]";

		//Checks for input string based on the pattern
		regexp = new RegExp(strPattern,"g");

		blnResult = !(regexp.test(strInput));

	}
	catch ( e )
	{
		blnResult = false;
	}

	return blnResult;
}

function isNumeric( strInput )
{
	var blnResult = false ;

	try
	{
		var strPattern = "[^0-9.]";

		//Checks for input string based on the pattern
		regexp = new RegExp(strPattern,"g");

		blnResult = !(regexp.test(strInput));

	}
	catch ( e )
	{
		blnResult = false;
	}

	return blnResult;
}
	
 function TextValidate(objForm, Param) 
 {

     var strErrMsg = '';
     var strErrMsgs = '';
     var strFieldNm = '';
     var strFieldDscp = '';
     var strFieldType = '';

     for (var intCount=0; intCount< Param.length; intCount++) {

         strErrMsg = '';
         strFieldNm = Param[intCount][0];
         strFieldDscp = Param[intCount][1];
         strFieldType = Param[intCount][2];
         strValue = '';
         if (!(objForm.elements[strFieldNm]))
             return strFieldDscp + " is a mandatory field.";
         if (objForm.elements[strFieldNm].type.indexOf('select') != -1)
         {
             index = objForm.elements[strFieldNm].selectedIndex;
             if (index >= 0)
                  strValue = objForm.elements[strFieldNm].options[index].value;
             else
                  strValue = "";
         }
         else
         {
             strValue = objForm.elements[strFieldNm].value;
         }

         switch(strFieldType){

             case "M" :

                 if (Trim(strValue) == '') {

                     strErrMsg   = strFieldDscp + " is a mandatory field.";
                 }
                 break;

             case "MN" :

                 if (Trim(strValue) == '') {

                     strErrMsg   = strFieldDscp + " is a mandatory field.";

                 } else {

                     if (!isNumeric(strValue) || (strValue == null)) {
                         strErrMsg = strFieldDscp + " should be numeric.";
                     } else {
                         if ((strValue + 0) < 0) {
                               strErrMsg = strFieldDscp + " should not be less than 0.";
                         }
                     }
                 }
                 break;

             case "N" :

                 if (strValue != '') {

                     if (!isNumeric(strValue) || (strValue == null)) {
                         strErrMsg = strFieldDscp + " should be numeric.";
                     }
                 }
                 break;

             case "MP" :

                 if (strValue == '') {

                     strErrMsg   = strFieldDscp + " is a mandatory field.";

                 } else {

                     if (!isNumeric(strValue) || (strValue == null)) {
                         strErrMsg = strFieldDscp + " should be numeric.";
                     } else {
                         if ((strValue + 0) <= 0) {
                               strErrMsg = strFieldDscp + " should not be less than 0.";
                         }
                     }
                 }
                 break;

             case "P" :

                 if (strValue!= '') {

                     if (!isNumeric(strValue) || (strValue == null)) {
                         strErrMsg =  strFieldDscp + " should be numeric.";
                     } else {
                         if ((strValue + 0) <= 0) {
                               strErrMsg = strFieldDscp + " should not be less than 0.";
                         }
                     }
                 }
                 break;
         }

         if (!isValidInput(strValue)) 
         {
             strErrMsg = strFieldDscp + " should not contain invalid character. ( eg.\", |, :, ;, < and > )";
		
         }


         if (strErrMsg != '') {
             strErrMsgs = strErrMsgs +  strErrMsg;
             objForm.elements[strFieldNm].select();
             objForm.elements[strFieldNm].focus();
             return strErrMsgs;
         }

     }

     return strErrMsgs;
 }



/**************************************************************
 IsDate: Returns a Boolean (true) if the date is true, false
         is not
 Parameters:
	- DateStr: String date in format (DD/MM/YYYY)
 Returns: Boolean
***************************************************************/
function IsDate(dateStr)
{
	// Checks for the following valid date formats:
	// DD/MM/YYYY   DD-MM-YYYY

	var datePat = /^(\d{1,2})(\/)(\d{1,2})\2(\d{4})$/;

	var matchArray = dateStr.match(datePat)
	if (matchArray == null)
		return false

	month = matchArray[3]
	day = matchArray[1]
	year = matchArray[4]
	if (month < 1 || month > 12)
		return false

	if (day < 1 || day > 31)
		return false

	if ((month==4 || month==6 || month==9 || month==11) && day==31)
		return false

	if (month == 2)
	{
		var isleap = (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0))
		if (day>29 || (day==29 && !isleap))
			return false;
	}
	return true;
}


/***************************************************************************************
 A function accept 1 valid date string and return integer value of year of the date string.

 Association : IsDate(Expression)
***************************************************************************************/
function getYear(pDate) {
 var yyyy = "00"; count = 0; nextt = 0;

 for (var i = 0; i < pDate.length && count < 2; i++) {
  var ch = pDate.substr(i, 1);

  if (ch == "/") {
   ++count;
   nextt = i + 1;
  }
 }
 yyyy = pDate.substr(nextt, pDate.length);
 return(yyyy);
}

/***************************************************************************************
 A function accept 1 valid date string and return integer value of month of the date string.

 Association : IsDate(Expression)
***************************************************************************************/
function getMonth(pDate) {
 var mm = "00"; count = 0; nextt = 0;

 for (var i = 0; i < pDate.length && count < 2; i++) {
  var ch = pDate.substr(i, 1);
  if (ch == "/") {
   if (count == 1)
    mm = pDate.substr(nextt, (i - nextt));
   ++count;
   nextt = i + 1;
  }
 }

 return(mm);
}

/***************************************************************************************
 A function accept 1 valid date string and return integer value of day of the date string.

 Association : IsDate(Expression)
***************************************************************************************/
function getDay(pDate) {
 var dd = "00"; count = 0;

 for (var i = 0; i < pDate.length && count < 1; i++) {
  var ch = pDate.substr(i, 1);
  if (ch == "/") {
   dd = pDate.substr(0, i);
   ++count;
  }
 }

 return(dd);
}

/***************************************************************************************
	A function accept 2 valid date string and compare 1st one wif 2nd one.
	The return value is an integer represent the different days between 1st and 2nd date,
	if 1st date is a date b4 2nd date, this function return negative value.

	Required Function	: getYear(Date), getMonth(Date), getDay(Date)
	Association	: IsDate(Expression)

	Returns: Integer. 0  => Date1 = Date2
				   1  => Date1 > Date2
				   -1 => Date1 < Date2

***************************************************************************************/
function CompareDate(pDate1, pDate2) {
	var Date1 = new Date(getYear(pDate1),getMonth(pDate1) - 1,getDay(pDate1));
	var Date2 = new Date(getYear(pDate2),getMonth(pDate2) - 1,getDay(pDate2));

	if (Date1.getDate() == Date2.getDate() && Date1.getMonth() == Date2.getMonth() && Date1.getYear() == Date2.getYear())
		return(0);
	else if (Date1.getYear() > Date2.getYear())
		return(1);
	else if (Date1.getMonth() > Date2.getMonth() && Date1.getYear() == Date2.getYear()) {
		return(1);
	}
	else if (Date1.getDate() > Date2.getDate() && Date1.getMonth() == Date2.getMonth() && Date1.getYear() == Date2.getYear())
		return(1);
	else {
		return(-1);
	}
}

function showPageForImage( href) 
{
	var para = "toolbar=no, menubar=no, status=yes, alwaysRaised=yes, scrollbars=yes, width=800, height=400, top=50, left=50";
	var newOne = window.open(href,"",para);
}

function showMe( href, w, h, t, l ) {
	var para = "toolbar=no, menubar=no, resizable=yes, status=yes, scrollbars=yes, width=" + w + ", height=" + h + ", top=" + t + ", left=" + l;
	var newOne = window.open(href,"",para);	
}

function formatPercent(dbInValue, iNumberDecimals)
{
	var iNumDecimals = iNumberDecimals;
	var dbInVal = dbInValue;
	var bNegative = false;
	var iInVal = 0;
	var strInVal
	var strWhole = "", strDec = "";
	var strTemp = "", strOut = "";
	var iLen = 0;

	if (dbInVal < 0) {
		bNegative = true;
		dbInVal *= -1;
	}

	dbInVal = dbInVal * Math.pow(10, iNumDecimals)
	iInVal = parseInt(dbInVal);
	if ((dbInVal - iInVal) >= .5) {
		iInVal++;
	}
	strInVal = iInVal + "";
	strWhole = strInVal.substring(0, (strInVal.length - iNumDecimals));
	strDec = strInVal.substring((strInVal.length - iNumDecimals), strInVal.length);
	while (strDec.length < iNumDecimals) {
		strDec = "0" + strDec;
	}
	iLen = strWhole.length;
	
	//disable coma in number after 3 digits
	/* 
	if (iLen >= 3) {
		while (iLen > 0) {
			strTemp = strWhole.substring(iLen - 3, iLen);
			if (strTemp.length == 3) {
				strOut = "," + strTemp + strOut;
				iLen -= 3;
			} else {
				strOut = strTemp + strOut;
				iLen = 0;
			}
		}
		if (strOut.substring(0, 1) == ",") {
			strWhole = strOut.substring(1, strOut.length);
		} else {
			strWhole = strOut;
		}
	}*/
	if (bNegative) {
		return "-" + strWhole + "." + strDec;
	} else {
		return strWhole + "." + strDec;
	}
}


