// Messages in english
var sErrIsEmpty                 = " is required.\n";
var sErrValidateTextMinLength1  = " must be at least ";
var sErrValidateTextMinLength2  = " characters.\n";
var sErrValidateTextMaxLength1  = " can be a maximum of ";
var sErrValidateTextMaxLength2  = " characters.\n";

var sErrValidateEmail           = " is not a valid Email address.\n";
var sErrValidateNumber          = " must be an integer.\n";
var sErrValidateNumberMin       = " value should not be less than ";
var sErrValidateNumberMax       = " value should not exceed ";

//function to show validation pop up on left frame
function sAlert(sMsg)
{
	if (sMsg!="")
	{
		hidePleaseWait();
		sMsg ="Please check the following values: \n\n" + sMsg;		
		alert(sMsg);
	}
}

function hidePleaseWait()
{
try
{
	Stop_Wait();	
}
catch(ex)
{
//do nothing
}
}

function formatCurrency(amount)
{
	var delimiter = ","; // replace comma if desired
	var a = amount.split('.',2)
	var d = a[1];
	var i = parseInt(a[0]);
	if(isNaN(i)) { return ''; }
	var minus = '';
	if(i < 0) { minus = '-'; }
	i = Math.abs(i);
	var n = new String(i);
	var a = [];
	while(n.length > 3)
	{
		var nn = n.substr(n.length-3);
		a.unshift(nn);
		n = n.substr(0,n.length-3);
	}
	if(n.length > 0) { a.unshift(n); }
	n = a.join(delimiter);
	if(d.length < 1) { amount = n; }
	else { amount = n + '.' + d; }
	amount = minus + amount;
	return amount;
}

function formatDecimal(argvalue, addzero, decimaln) 
{
  var numOfDecimal = (decimaln == null) ? 2 : decimaln;
  var number = 1;

  number = Math.pow(10, numOfDecimal);

  argvalue = Math.round(parseFloat(argvalue) * number) / number;
  // If you're using IE3.x, you will get error with the following line.
  // argvalue = argvalue.toString();
  // It works fine in IE4.
  argvalue = "" + argvalue;

  if (argvalue.indexOf(".") == 0)
    argvalue = "0" + argvalue;

  if (addzero == true) {
    if (argvalue.indexOf(".") == -1)
      argvalue = argvalue + ".";

    while ((argvalue.indexOf(".") + 1) > (argvalue.length - numOfDecimal))
      argvalue = argvalue + "0";
  }
  return argvalue;
}

/*
* Validate the value in given input box for valid text value
*/
function validateText(sText, sName, bAllowEmpty, iMinLength, iMaxLength)
{
   var sErrorMsg = "";
   sText = trim(sText);
   if(!bAllowEmpty && sText == "") // If empty
   {
      sErrorMsg = sName + sErrIsEmpty;
   }
   else if(sText != "") // else if to short or to long string
   {
      if(iMinLength != null && sText.length < iMinLength)
         sErrorMsg += sName + sErrValidateTextMinLength1 + iMinLength + sErrValidateTextMinLength2;
      if(iMaxLength != null && sText.length > iMaxLength)
         sErrorMsg += sName + sErrValidateTextMaxLength1 + iMaxLength + sErrValidateTextMaxLength2;
   }

   return sErrorMsg;
}

/*
* Validate the value in given input box for valid numeric value
*/
function validateNumber(sNumber, sName, bAllowEmpty, iMinValue, iMaxValue, bAllowNegative)
{
   var sErrorMsg = "";
   sNumber = trim(sNumber);

   if(!bAllowEmpty && sNumber == "") // If empty
   {
      sErrorMsg = sName + sErrIsEmpty;
   }
   else if(sNumber != "") // else if number - to low or to high
   {
      if(bAllowNegative && sNumber.charAt(0) == "-")
         sNumber = sNumber.slice(1);
      var objRegExp   = new RegExp("[^0-9]", "g"); // Search for everything except 0-9
      var iInvalidPos = sNumber.search(objRegExp);

      if(iInvalidPos != -1) 
      {
         sErrorMsg += sName + sErrValidateNumber;
      }
		else // Only number characters
		{
		   if(iMinValue != null && eval(sNumber) < iMinValue)
		      sErrorMsg += sName + sErrValidateNumberMin + iMinValue + ".\n";
		   if(iMaxValue != null && eval(sNumber) > iMaxValue)
		      sErrorMsg += sName + sErrValidateNumberMax + iMaxValue + ".\n";
		}
   }
   return sErrorMsg;
}

/*
* Validate the value in given input box for valid float value
*/
function validateFloat( s, sName ,bAllowEmpty, bAllowNegative)
{   
	var i;
    var seenDecimalPoint = false;
    var decimalPointDelimiter = "." ;
    var sErrMsg = "" ;
    
	if(!bAllowEmpty && s == "") // If empty
	{
		sErrMsg = sName + " is required.\n";
		return sErrMsg;
	}
	else //
	{
		if (isEmpty(s)) 
		{
			if (validateFloat.arguments.length == 1)
			{
				return "" ;
			}
			else
			{
				if ( validateFloat.arguments[2] == true)
				{
					return "" ;
				}
				else
				{
					sErrMsg += sName + " is required.\n" ;
					return sErrMsg ;
				}
			}
		}
		if(bAllowNegative && s.charAt(0) == "-")
         s = s.slice(1);
         
		if (s == decimalPointDelimiter)
		{
			sErrMsg += sName + " is an invalid value.\n" ;
			return sErrMsg ;
		}
		// Search through string's characters one by one
		// until we find a non-numeric character.
		// When we do, return false; if we don't, return true.

		for (i = 0; i < s.length; i++)
		{   
			// Check that current character is number.
			var c = s.charAt(i);

			if ((c == decimalPointDelimiter) && !seenDecimalPoint) seenDecimalPoint = true;
			else if (!isDigit(c)) 
			{
				sErrMsg += sName + " is an invalid value.\n" ;
				return sErrMsg ;
			}
		}
	}
	return sErrMsg;
}	

/* Validate the Phone-Fax values */
/* ++ Bhupali 7/3/2005 A fucntion used to check the Alphanumeric value*/
function validatePhoneFaxText(sText, sName, bAllowEmpty, iMinLength, iMaxLength)
{
   var sErrorMsg = "";
   sText = trim(sText);
   if(!bAllowEmpty && sText == "") // If empty
   {
      sErrorMsg = sName + sErrIsEmpty;
   }
   else if(sText != "") // else if to short or to long string
   {
      if(iMinLength != null && sText.length < iMinLength)
         sErrorMsg += sName + sErrValidateTextMinLength1 + iMinLength + sErrValidateTextMinLength2;
      if(iMaxLength != null && sText.length > iMaxLength)
         sErrorMsg += sName + sErrValidateTextMaxLength1 + iMaxLength + sErrValidateTextMaxLength2;
   }
   
  // var validNum = "0123456789-()abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
   var validNum = "0123456789-()+ ";  
   for ( var i=sText.length; i>0; i-- )
   {
	  var alpha = sText.substring(i-1,i);	
	  if (validNum.indexOf(alpha) == "-1")	
	  {
		sErrorMsg += sName + " is not in valid format\nValid format: +01 628 2293712\n";
		break;
	  }
   }
   return sErrorMsg;
}

/*
* validate the text in Input box against rules defined for valid e-mail address
*/
function validateEmail(sEmail, sName, bAllowEmpty)
{
   /* 
   Notes:
   
   'exclude' checks 5 conditions:
   
   a) characters that should not be in the address
   b) characters that should not be at the start
   c) & d) characters that shouldn't be together
   e) there's not more than one '@'
   
   'check' checks there's at least one '@', later followed by at least one '.'
   'checkend' checks the address ends with a period followed by 2 or 3 alpha characters.
   N.B. Javascript 1.2 only works with version 4 browsers and higher. */
   
   var exclude   =/[^@\-\.\w]|^[_@\.\-]|[\._\-]{2}|[@\.]{2}|(@)[^@]*\1/;
   var check     =/@[\w\-]+\./;
   var checkend  =/\.[a-zA-Z]{2,3}$/;   
   var sErrorMsg = "";
   sEmail = trim(sEmail);
 
   if(!bAllowEmpty && sEmail == "")
   {
      sErrorMsg = sName + sErrIsEmpty;
   }
   else if(sEmail != "")
   {
      if(((sEmail.search(exclude) != -1) || 
          (sEmail.search(check)) == -1) || 
          (sEmail.search(checkend) == -1))
      {
         sErrorMsg = sName + sErrValidateEmail;
      }
   }

   return sErrorMsg;
}

/**********************************************************
Pre-requisit functions
***********************************************************/
function isEmpty(s)
{   
	return ((s == null) || (s.length == 0)) ;
}
function isDigit (c)
{   
	return ((c >= "0") && (c <= "9"));
}

function ltrim(sValue)
{
   while(1)
   {
      if(sValue.substring(0, 1) != " ")
         break;
      sValue = sValue.substring(1, sValue.length);
   }
   return sValue;
}

function rtrim(sValue)
{
   while(1)
   {
      if(sValue.substring(sValue.length - 1, sValue.length) != " ")
         break;
      sValue = sValue.substring(0, sValue.length - 1);
   }
   return sValue;
}

function trim(sValue)
{
   var sTemp = ltrim(sValue);
   return rtrim(sTemp);
}