
/** Errormessages ***************************************************

  Here's all the error messages used in the validate functions. If 
  you want them in a different language all you have to do is change 
  the strings below. You should not remove the ".\n" or the extra 
  spaces (" ") in front or after the text. To get an english version 
  you comment these swedish ones and decomment the english strings 
  below and vice versa.                                            */

// Messages in english
var sErrIsEmpty                 = " is required.\n";
var sErrFormat                  = "Err!";
var sErrNotChoosen              = " is not choosen.\n";

var sErrValidateTextMinLength1  = " must be at least ";
var sErrValidateTextMinLength2  = " characters.\n";
var sErrValidateTextMaxLength1  = " can be at most ";
var sErrValidateTextMaxLength2  = " characters.\n";

var sErrValidateText2           = " must only contain numbers and the letters A-Z.\n";

var sErrValidateNumber          = " must only contain a number.\n";
var sErrValidateNumberMin       = " Minimum value is ";
var sErrValidateNumberMax       = " Maximum value is ";

var sErrValidateFileExt         = " allows only the fileextensions "
var sErrValidateTime            = " must contain a time in the format HH:MM.\n";
var sErrValidateRegNr           = " must contain a car registration number in the formats \"ABC123\" or \"ABC 123\".\n";
var sErrValidateZipcode         = " must contain a zipcode in the formats of \"123 45\" or \"12345\".\n";
var sErrValidateUsPhNo          = " must contain a phone no. in the format of \"1234567890(##########)\".\n  And minimum length should be 10 digits\n";
var sErrValidateEmail           = " is not a valid e-mail address.\n";
var sErrValidateDate            = " only allow the formats ";

var sErrValidatePersNr          = " is not a valid swedish personalnumber.\n";

var sErrCompareDatesIsNot       = " is not ";
var sErrCompareDatesSameAs      = "same as";
var sErrCompareDatesLessOrEqual = "less or equal to";
var sErrCompareDatesMoreOrEqual = "more or equal to";
var sErrCompareDatesLessThan    = "less than";
var sErrCompareDatesMoreThan    = "more than";
var sErrCompareDatesDifferent   = "different";


var sSetFocus					= false;
/*******************************************************************/

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;
}

function validateText2(sText, sName, bAllowEmpty, iMinLength, iMaxLength)
{
   var sErrorMsg = "";

   if(!bAllowEmpty && sText == "") // If empty
   {
      sErrorMsg = "- " + sName + sErrIsEmpty;
   }
   else if(sText != "") // else if to short or to long string or nonvalid characters
   {
      sErrorMsg = validateText(sText, sName, bAllowEmpty, iMinLength, iMaxLength);
      
      if(sErrorMsg == "")
      {
		   for(var i=0; i<sText.length; i++)
		   {
		      if(!(sText.charAt(i) <= "9" && sText.charAt(i) >= "0" || 
		           sText.charAt(i) <= "z" && sText.charAt(i) >= "a" || 
		           sText.charAt(i) <= "Z" && sText.charAt(i) >= "A"))
		      {
		         sErrorMsg += "- " + sName + sErrValidateText2;
		         break;
		      }
		   }
      }
   }
   
   return sErrorMsg;
}

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;
}

function validateFileExt(sFilePath, arrExtensions, sName, bAllowEmpty)
{
   var sErrorMsg = "";
   sFilePath = trim(sFilePath);
   
   if(!bAllowEmpty && sFilePath == "") // If empty
   {
      sErrorMsg = "- " + sName + sErrNotChoosen;
   }
   else if(sFilePath != "") // Check fileextension
   {
      var sThisExt = sFilePath.slice(sFilePath.lastIndexOf(".") + 1);
      var bFound   = false;
      var sAllExt  = "";

      for(var i = 0; i < arrExtensions.length; i++)
      {
         if(arrExtensions[i].toLowerCase() == sThisExt.toLowerCase())
            bFound = true;

         sAllExt += "\"" + arrExtensions[i] + "\", ";
         if(i == arrExtensions.length-1)
            sAllExt = sAllExt.slice(0,sAllExt.length-2);
      }
      if(!bFound)
         sErrorMsg = "- " + sName + sErrValidateFileExt + sAllExt + ".\n";
   }

   return sErrorMsg;
}


function formatRegNr(sRegNr, iReturnFormat)
{
   // Format     Length  iReturnFormat
   // ==================================
   // ABC123     6       1
   // ABC 123    7       2

   var sFormated = "";
   sRegNr = trim(sRegNr);
   
   if(validateRegNr(sRegNr, "RegNr", true) == "" && sRegNr.length > 0)
   {
      // Format to ABC123
      if(sRegNr.length == 7)
         sFormated = sRegNr.slice(0,3).toUpperCase() + sRegNr.slice(4,7);
      else if(sRegNr.length == 6)
         sFormated = sRegNr.slice(0,3).toUpperCase() + sRegNr.slice(3,6);
      
      if(iReturnFormat == 2) // Reformat to ABC 123
         sFormated = sFormated.slice(0,3) + " " + sFormated.slice(3,6);
   }
   else if(sRegNr.length > 0)
      sFormated = sErrFormat;
   
   return sFormated;
}

function validateRegNr(sRegNr, sName, bAllowEmpty)
{
   // Valid format    Length
   // ======================
   // ABC123          6
   // ABC 123         7

   var sErrorMsg = "";
   var objRegExp;

   sRegNr = trim(sRegNr);

   if(!bAllowEmpty && sRegNr.length == 0) // If empty
   {
      sErrorMsg = "- " + sName + sErrIsEmpty;
   }
   else if(sRegNr.length > 0) // else check regnr
   {
      if(sRegNr.length == 6)
      {
         objRegExp = new RegExp("[A-Za-z]{3}[0-9]{3}");
         if(sRegNr.search(objRegExp) == -1) // If invalid
            sErrorMsg = "- " + sName + sErrValidateRegNr;
      }
      else if(sRegNr.length == 7)
      {
         objRegExp = new RegExp("[A-Za-z]{3} [0-9]{3}");
         if(sRegNr.search(objRegExp) == -1) // If invalid
            sErrorMsg = "- " + sName + sErrValidateRegNr;
      }
      else // If another length
         sErrorMsg = "- " + sName + sErrValidateRegNr;
   }

   return sErrorMsg;
}

function formatZipcode(sZipcode, iReturnFormat)
{
   // Format     Length  iReturnFormat
   // ==================================
   // 12345      5       1
   // 123 45     6       2

   var sFormated = "";
   sZipcode = trim(sZipcode);
   
   if(validateZipcode(sZipcode, "Zipcode", true) == "" && sZipcode.length > 0)
   {
      // Format to 123 45
      if(sZipcode.length == 5 && iReturnFormat == 2)
         sFormated = sZipcode.slice(0,3) + " " + sZipcode.slice(3,5);
      else
         sFormated = sZipcode;
   }
   else if(sZipcode.length > 0)
      sFormated = sErrFormat;
   
   return sFormated;
}

function validateZipcode(sZipcode, sName, bAllowEmpty)
{
   // Valid format    Length
   // ======================
   // 12345           5
   // 123 45          6

   var sErrorMsg = "";
   var objRegExp;

   sZipcode = trim(sZipcode);

   if(!bAllowEmpty && sZipcode.length == 0) // If empty
   {
      sErrorMsg = "- " + sName + sErrIsEmpty;
   }
   else if(sZipcode.length > 0) // else check zipcode
   {
      if(sZipcode.length == 5) // 12345
      {
         objRegExp = new RegExp("[0-9]{5}");
         if(sZipcode.search(objRegExp) == -1) // If invalid
            sErrorMsg = "- " + sName + sErrValidateZipcode;
      }
      else if(sZipcode.length == 6) // 123 45
      {
         objRegExp = new RegExp("[0-9]{3} [0-9]{2}");
         if(sZipcode.search(objRegExp) == -1) // If invalid
            sErrorMsg = "- " + sName + sErrValidateZipcode;
      }
      else // If another length
         sErrorMsg = "- " + sName + sErrValidateZipcode;
   }

   return sErrorMsg;
}

function validateUsPhNo(sUsPhNo, sName, bAllowEmpty)
{
   // Valid format    Length
   // ======================
   // 7322256266      10
   
   var sErrorMsg = "";
   var objRegExp;

   sUsPhNo = trim(sUsPhNo);

   if(!bAllowEmpty && sUsPhNo.length == 0) // If empty
   {
      sErrorMsg = "- " + sName + sErrIsEmpty;
   }
   else if(sUsPhNo.length > 0) // else check zipcode
   {
      if(sUsPhNo.length == 10) // 7322256266
      {
         objRegExp = new RegExp("[0-9]{10}");
         if(sUsPhNo.search(objRegExp) == -1) // If invalid
            sErrorMsg = "- " + sName + sErrValidateUsPhNo;
      }
      else // If another length
         sErrorMsg = "- " + sName + sErrValidateUsPhNo;
   }

   return sErrorMsg;
}



function validateEmail(sEmail, sName, bAllowEmpty)
{
   /* Written by Paolo Wales (paolo@taize.fr) starting on a basis by Samrat Sen.

   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;
}

function validateSelect(oFormObj, sName)
{
   var sErrorMsg = "";

   if(oFormObj.multiple)
   {
      sErrorMsg = "- " + sName + sErrNotChoosen;
      for(var i=0; i<oFormObj.options.length; i++)
      {
         if(oFormObj.options[i].selected)
         {
            sErrorMsg = "";
            break;
         }
      }
   }
   else
   {
      if(oFormObj.options[oFormObj.selectedIndex].value == "0" ||
         oFormObj.options[oFormObj.selectedIndex].value == "")
      {
         sErrorMsg = "- " + sName + sErrNotChoosen;
      }
   }
   return sErrorMsg;
}

function validateRadio(oFormObj, sName)
{
   var sErrorMsg = "- " + sName + sErrNotChoosen;
   if(oFormObj.length == null && oFormObj.checked)
      sErrorMsg = "";
   else
   {
  	   for(i=0;i<oFormObj.length;i++)
	   {
         if(oFormObj[i].checked)
         {
            sErrorMsg = "";
            break;
         }
	   }
   }
   return sErrorMsg;
}

function validateCheckbox(oFormObj, sName)
{
   var sErrorMsg = "";
  
	if(!oFormObj.checked)
		sErrorMsg = "- " + sName + sErrNotChoosen;

   return sErrorMsg;
}

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);
}


function setFocusFun(parObjSetFocus,parSSetFocus,parSErrMsg){
	if (parSSetFocus==false && parSErrMsg!=""){
		parObjSetFocus.focus();
		parObjSetFocus.select();
		sSetFocus=true;
	}
}

function kepPressNumOnly(){	
		
	if (((event.keyCode>=48) && (event.keyCode<=57)) || (event.keyCode==13)){
		return true;
	}
	else{
		event.keyCode = 0;
		return false;
	}
}

	
function validateEmpty(obj,frm){
	var bSubmit=true;
	if (obj.value==""){
		obj.focus();
		alert('plase put appropriate Quantity');
		bSubmit=false;
	}
	if (bSubmit==true){
		frm.submit();
	}
}





var dtCh= "/";

var minYear=1900;

var maxYear=2100;

 

function isInteger(s){

            var i;

    for (i = 0; i < s.length; i++){   

        // Check that current character is number.

        var c = s.charAt(i);

        if (((c < "0") || (c > "9"))) return false;

    }

    // All characters are numbers.

    return true;

}

 

function stripCharsInBag(s, bag){

            var i;

    var returnString = "";

    // Search through string's characters one by one.

    // If character is not in bag, append to returnString.

    for (i = 0; i < s.length; i++){   

        var c = s.charAt(i);

        if (bag.indexOf(c) == -1) returnString += c;

    }

    return returnString;

}

 

function daysInFebruary (year){

            // February has 29 days in any year evenly divisible by four,

    // EXCEPT for centurial years which are not also divisible by 400.

    return (((year % 4 == 0) && ( (!(year % 100 == 0)) || (year % 400 == 0))) ? 29 : 28 );

}

function DaysArray(n) {

            for (var i = 1; i <= n; i++) {

                        this[i] = 31

                        if (i==4 || i==6 || i==9 || i==11) {this[i] = 30}

                        if (i==2) {this[i] = 29}

   } 

   return this

}

 

function isDate(dtStr){

            var daysInMonth = DaysArray(12)

            var pos1=dtStr.indexOf(dtCh)

            var pos2=dtStr.indexOf(dtCh,pos1+1)

            var strMonth=dtStr.substring(0,pos1)

            var strDay=dtStr.substring(pos1+1,pos2)

            var strYear=dtStr.substring(pos2+1)

            strYr=strYear

            if (strDay.charAt(0)=="0" && strDay.length>1) strDay=strDay.substring(1)

            if (strMonth.charAt(0)=="0" && strMonth.length>1) strMonth=strMonth.substring(1)

            for (var i = 1; i <= 3; i++) {

                        if (strYr.charAt(0)=="0" && strYr.length>1) strYr=strYr.substring(1)

            }

            month=parseInt(strMonth)

            day=parseInt(strDay)

            year=parseInt(strYr)

            if (pos1==-1 || pos2==-1){

                        alert("The date format should be : mm/dd/yyyy")

                        return false

            }

            if (strMonth.length<1 || month<1 || month>12){

                        alert("Please enter a valid month")

                        return false

            }

            if (strDay.length<1 || day<1 || day>31 || (month==2 && day>daysInFebruary(year)) || day > daysInMonth[month]){

                        alert("Please enter a valid day")

                        return false

            }

            if (strYear.length != 4 || year==0 || year<minYear || year>maxYear){

                        alert("Please enter a valid 4 digit year between "+minYear+" and "+maxYear)

                        return false

            }

            if (dtStr.indexOf(dtCh,pos2+1)!=-1 || isInteger(stripCharsInBag(dtStr, dtCh))==false){

                        alert("Please Check the Dates Entered in Dates Fields")

                        return false

            }

return true

}

