//function IsNumeric(sText)
//function IsReal(sText)
//function addError(strError) {
//function ValidateNotEmpty(objField, strError)
//function Validate(bTest, strError)
//function ValidateIsNumber(objField, strError)
//function ValidateDropDown(objSelect, strError)
//function ValidateIsPositiveNumber(objField, strError)
//function ValidateIsReal(objField, strError)
//function ValidateWeight(objField, strError)
//function ValidateRealOrEmpty(objField, strError)
//function ValidateIsReal(objField, strError)
//function ValidateSIC(objField, strError)
//function ValidatePremisesCode(objField, strError)
//function ValidateEmail(objField, strError) {
//function ValidatePrice(nItem, sPrice, sMin)
//function ValidatePrefix(selectPrefix, sError)
//function ValidateLT(nVal, nMax, sError)
//function ValidateLTE(nVal, nMax, sError)
//function ValidateDate(nDay, nMonth, nYear, sError)
//function ValidateDateRange(fd, fm, fy, td, tm, ty, sError)

function trim(str, chars) {
    return ltrim(rtrim(str, chars), chars);
}

function ltrim(str, chars) {
    chars = chars || "\\s";
    return str.replace(new RegExp("^[" + chars + "]+", "g"), "");
}

function rtrim(str, chars) {
    chars = chars || "\\s";
    return str.replace(new RegExp("[" + chars + "]+$", "g"), "");
}

function IsNumeric(sText)
{
   var ValidChars = "0123456789";
   var IsNumber=true;
   var Char;

   if(sText.length == 0)
   {
      return false;
   }

   for (i = 0; i < sText.length && IsNumber == true; i++) 
      { 
      Char = sText.charAt(i); 
      if (ValidChars.indexOf(Char) == -1) 
         {
         IsNumber = false;
         }
      }
   return IsNumber;
   
}


function IsNatural(sText)
{
   var ValidChars = "0123456789";
   var IsNumber=true;
   var Char;
   
   if(sText.length == 0)
      return false;
 
   for (i = 0; i < sText.length && IsNumber == true; i++) 
      { 
      Char = sText.charAt(i); 
      if (ValidChars.indexOf(Char) == -1) 
         {
         IsNumber = false;
         }
      }
   return IsNumber;
}

function IsReal(sText)
{
   var ValidChars = "0123456789.";
   var IsNumber=true;
   var Char;
   
   if(sText.length == 0)
      return false;
 
   for (i = 0; i < sText.length && IsNumber == true; i++) 
      { 
      Char = sText.charAt(i); 
      if (ValidChars.indexOf(Char) == -1) 
         {
         IsNumber = false;
         }
      }
   return IsNumber;
   
}

function addError(strError) {
  var ni = document.getElementById('errorDiv');
  ni.innerHTML = "<p class=error>" + strError + "</p>";
}


function ValidateNoHTML(objField, strError)
{
    if(objField.value.match("<") == "<"){
         addError("Invalid characeter: &lt;");
         return false;
	}

    if(objField.value.match(">") == ">"){
         addError("Invalid characeter: &gt;");
         return false;
	}
	
	if(objField.value.match("&") == "&"){
         addError("Invalid characeter: &amp;");
         return false;
	}
	
	
	if(objField.value.indexOf('\"') > -1){
         addError("Invalid characeter: &quot;");
         return false;
	}
	
	if(objField.value.indexOf('\'') > -1){
         addError("Invalid characeter: \'");
         return false;
	}
	
	if(objField.value.indexOf('\\') > -1){
         addError("Invalid characeter: \\");
         return false;
	}
	
	
    return true;
}


function ValidateNotEmpty(objField, strError)
{
    var strValue;
    strValue = trim(objField.value);
    if(strValue.length == 0){
         addError(strError);
         return false;
	}

    return true;
}

function Validate(bTest, strError)
{
    if(bTest == false)
        addError(strError)
    return bTest;
}

function ValidateIsNumber(objField, strError)
{
    if(!IsNumeric(objField.value)){
       addError(strError);
       return false;
    }
    return true;
}

function ValidateDropDown(objSelect, strError)
{
    if(objSelect.selectedIndex == 0){
       addError(strError);
       return false;
    }

    return true;
}

function ValidateIsPositiveNumber(objField, strError)
{
    if(!IsNumeric(objField.value)){
       addError(strError);
       return false;
    }
    if(Number(objField.value) < 1)
	{
       addError(strError);
       return false;
    }
    return true;
}

function ValidateIsReal(objField, strError)
{
    if(!IsReal(objField.value)){
       addError(strError);
       return false;
    }
    return true;
}

function ValidateWeight(objField, strError)
{
    if(!IsReal(objField.value)){
       addError(strError);
       return false;
    }
    
    if(objField.value > 5000)
    {
        if(!confirm("That's very heavy, are you sure?"))
        {
            addError(strError);
            return false;
        }
    }
    
    return true;
}

function ValidateRealOrEmpty(objField, strError)
{
   // empty is fine
   if(objField.value.length == 0)
       return true;

    if(!IsReal(objField.value)){
       addError(strError);
       return false;
    }
    return true;
}


function ValidateIsReal(objField, strError)
{
    if(!IsReal(objField.value)){
       addError(strError);
       return false;
    }
    return true;
}

function ValidateNotEquals(objField, nVal, strError) {
    if (objField.value == nVal) {
        addError(strError);
        return false;
    }
    return true;
}

function ValidateSIC(objField, strError)
{
	if(!(objField.value.length == 5 &&
         IsReal(objField.value) && 
         objField.value.charAt(2) == '.' )  &&
       !(objField.value.length == 7 && 
         IsReal(Left(objField.value, 5)) && 
         objField.value.charAt(2) == '.' && 
         objField.value.charAt(5) == '/' && 
         IsNumeric(Right(objField.value, 1)) ))
	{
	    addError(strError);
	    return false;
	}	

	return true;
}


function ValidatePremisesCode(objField, strError)
{
//	var SICRegExp = /[\D\D.\D\D/;
//    if !(SICRegExp.test(objField.value))
//    {
//          addError(strError);
//          return false;
//    }
    return false;
}

function ValidateEmail(objField, strError) {

        // empty is fine
        if(objField.value.length == 0)
             return true;

        var str=objField.value;
		var at="@";
		var dot=".";
		var lat=str.indexOf(at);
		var lstr=str.length;
		var ldot=str.indexOf(dot);
		if (str.indexOf(at)==-1){
		   addError(strError);
		   return false
		}

		if (str.indexOf(at)==-1 || str.indexOf(at)==0 || str.indexOf(at)==lstr){
		   addError(strError);
		   return false
		}

		if (str.indexOf(dot)==-1 || str.indexOf(dot)==0 || str.indexOf(dot)==lstr){
		    addError(strError);
		    return false
		}

		 if (str.indexOf(at,(lat+1))!=-1){
		    addError(strError);
		    return false
		 }

		 if (str.substring(lat-1,lat)==dot || str.substring(lat+1,lat+2)==dot){
		    addError(strError);
		    return false
		 }

		 if (str.indexOf(dot,(lat+2))==-1){
		    addError(strError);
		    return false
		 }
		
		 if (str.indexOf(" ")!=-1){
		    addError(strError);
		    return false
		 }

 		 return true					
}

function ValidatePrice(nItem, sPrice, sMin)
{
     // first make sure the price is valid
     if(!IsReal(sPrice))
     {
           if(sPrice.length > 0)
            addError(sPrice + " is not a valid price");
           else
            addError("Please enter a valid price");
           
           return false;
     }


     // check the price is not below the minimum
     if(Number(sPrice) < Number(sMin))
     {
           addError("The minimum price for that item is " + sMin);
           return false;
     }
     return true;
}

function ValidatePrefix(selectPrefix, sError)
{
     if(selectPrefix.value == "-1")
     {
         addError(sError);
         return false;
     }
     return true;
}

function ValidateLT(nVal, nMax, sError)
{
     if(!(nVal < nMax))
     {
          addError(sError);
          return false;
     }
     return true;
}

function ValidateLTE(nVal, nMax, sError)
{
     if(!(nVal < nMax + 1))
     {
          addError(sError);
          return false;
     }
     return true;
}

function ValidateDate(nDay, nMonth, nYear, sError)
{ 
    /* Using form values, create a new date object
    using the setFullYear function */
    var myDate = new Date();
    myDate.setFullYear( nYear, nMonth-1, nDay );

    
    if ( myDate.getMonth() + 1 != nMonth ||
         myDate.getDate() != nDay) 
    {
        addError(sError);
        return false
    }
    else
        return true;
}

function ValidateTime(h, m, sError)
{
    if(!(IsNatural(h) && IsNatural(m)))
    {
        addError(sError);
        return false;
    }
    if(h < 0 || h > 23 || m < 0 || m > 59)
    {
        addError(sError);
        return false;
    }
    return true;
}

function ValidateDateRange(fd, fm, fy, td, tm, ty, sError)
{
    var fromDate = new Date();
    var toDate = new Date();
    
    fromDate.setFullYear(fy, fm - 1, fd);
    toDate.setFullYear(ty, tm - 1, td);
    
    if(toDate < fromDate)
    {
        addError(sError);
        return false;
    }
    return true;
}
 
