// javascript.js

function SSL(showhide){
	if(document.cookie.match("clicked=true") == null){
		if(showhide == "show"){
			document.getElementById('popupbox').style.visibility="visible"; /* If the function is called with the variable 'show', show the box */
		}else if(showhide == "hide"){
		    document.getElementById('popupbox').style.visibility="hidden"; /* If the function is called with the variable 'hide', hide the box */
		    set_cookie("clicked","true");
		}
	}
}

function set_cookie(name,value,exp_y,exp_m,exp_d,path,domain,secure){
	var cookie_string = name + "=" + escape (value);
	if (exp_y){
		var expires = new Date (exp_y, exp_m, exp_d);
		cookie_string += "; expires=" + expires.toGMTString();
	}
	if (path)
		cookie_string += "; path=" + escape (path);
	if (domain)
	    cookie_string += "; domain=" + escape (domain);
	if (secure)
	    cookie_string += "; secure";
	document.cookie = cookie_string;
}

// validate.js

/********************************************************************
   Validate 3.13                                           2002-10-10

   Collection of validate functions.

   // Markus Gemstad
   gemstad@hotmail.com
   http://www.gemstad.com (references, samples etc)

********************************************************************/


/** 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.                                            */

/*var sErrIsEmpty                 = " är inte ifyllt.\n";
var sErrFormat                  = "Fel!";
var sErrNotChoosen              = " är inte valt.\n";

var sErrValidateTextMinLength1  = " måste innehålla minst ";
var sErrValidateTextMinLength2  = " tecken.\n";
var sErrValidateTextMaxLength1  = " får innehålla max ";
var sErrValidateTextMaxLength2  = " tecken.\n";

var sErrValidateText2           = " får endast innehålla siffror och bokstäverna a-z.\n";

var sErrValidateNumber          = " får endast innehålla siffror.\n";
var sErrValidateNumberMin       = " måste var minst ";
var sErrValidateNumberMax       = " får vara max ";

var sErrValidateFileExt         = " tillåter bara filändelsen "
var sErrValidateTime            = " måste innehålla en tid i formatet hh:mm.\n";
var sErrValidateRegNr           = " måste innehålla registreringsnummer i formaten \"ABC123\" eller \"ABC 123\".\n";
var sErrValidateZipcode         = " måste innehålla en postnummer i formaten \"123 45\" eller \"12345\".\n";
var sErrValidateEmail           = " är ingen giltig e-mail adress.\n";
var sErrValidateDate            = " tillåter endast formaten ";

var sErrValidatePersNr          = " är inte ett giltigt personnummer.\n";

var sErrCompareDatesIsNot       = " är inte ";
var sErrCompareDatesSameAs      = "lika med";
var sErrCompareDatesLessOrEqual = "mindre än eller lika med";
var sErrCompareDatesMoreOrEqual = "större än eller lika med";
var sErrCompareDatesLessThan    = "mindre än";
var sErrCompareDatesMoreThan    = "större än";
var sErrCompareDatesDifferent   = "olikt";*/

// 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 \"123 45\" or \"12345\".\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";
/*******************************************************************/


/** Valid date formats **********************************************

  g_arrValidDateFormats:
    This will be used if the arrValidFormats parameter in validateDate()
    function is null. Useful if you want all calls on your site to use
    the same formats without having to send them in every time.
  g_iValidDateReturnFormat:
    Will be used if the iReturnFormat parameter in formatDate() 
    function is null.
  g_sLastValidDateFormat:
    Used by the validateDate() and formatDate() functions. Do not 
    thouch this one!                                               */

var g_arrValidDateFormats    = new Array("YYYY-MM-DD", "YYYYMMDD", "YYMMDD", "YY-MM-DD");
var g_iValidDateReturnFormat = 0;
var g_sLastValidDateFormat   = null;
/*******************************************************************/

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 formatDate(sDate, arrValidFormats, iReturnFormat)
{
   var sFormated = "";
   sDate = trim(sDate);

   if(validateDate(sDate, "Datum", arrValidFormats, true) == "" && sDate.length > 0)
   {
      var rgExp, sValidDate, sReturnDate;
      
      // Get the format of the sDate - global variable that validateDate saves in
      sValidDate = g_sLastValidDateFormat;

      var iYearLen  = (sValidDate.lastIndexOf("Y") != -1) ? sValidDate.lastIndexOf("Y") - sValidDate.indexOf("Y") + 1 : 0;
      var iMonthLen = (sValidDate.lastIndexOf("M") != -1) ? sValidDate.lastIndexOf("M") - sValidDate.indexOf("M") + 1 : 0;
      var iDateLen  = (sValidDate.lastIndexOf("D") != -1) ? sValidDate.lastIndexOf("D") - sValidDate.indexOf("D") + 1 : 0;

      var iYear  = sDate.slice(sValidDate.indexOf("Y"), sValidDate.indexOf("Y") + iYearLen);
      var iMonth = sDate.slice(sValidDate.indexOf("M"), sValidDate.indexOf("M") + iMonthLen);
      var iDate  = sDate.slice(sValidDate.indexOf("D"), sValidDate.indexOf("D") + iDateLen);

      // If parameters are nulluse the global ones
      if(arrValidFormats == null)
         arrValidFormats = g_arrValidDateFormats;
      if(iReturnFormat == null)
         iReturnFormat = g_iValidDateReturnFormat;

      // Get the format to format to
      sReturnDate = arrValidFormats[iReturnFormat];

      var iYearLen2  = (sReturnDate.lastIndexOf("Y") != -1) ? sReturnDate.lastIndexOf("Y") - sReturnDate.indexOf("Y") + 1 : 0;
      var iMonthLen2 = (sReturnDate.lastIndexOf("M") != -1) ? sReturnDate.lastIndexOf("M") - sReturnDate.indexOf("M") + 1 : 0;
      var iDateLen2  = (sReturnDate.lastIndexOf("D") != -1) ? sReturnDate.lastIndexOf("D") - sReturnDate.indexOf("D") + 1 : 0;

      if(iYearLen == 2 && iYearLen2 == 4) // Fix year if only two numbers
      {
         if(iYear > 50)
            iYear = "19" + iYear;
         else
            iYear = "20" + iYear;
      }

      // If some of the values don't exist, use todays...
      if(iYear.length == 0) // Fix year if only two numbers
      {
         iYear = new Date().getUTCFullYear() + "";
         iYearLen = iYear.length;
      }
      if(iMonth.length == 0) // Fix year if only two numbers
      {
         iMonth = (new Date().getUTCMonth() + 1) + "";
         if(iMonth.length == 1)
            iMonth = "0" + iMonth;
         iMonthLen = iMonth.length;
      }
      if(iDate.length == 0) // Fix year if only two numbers
      {
         iDate = new Date().getUTCDate() + "";
         if(iDate.length == 1)
            iDate = "0" + iDate;
         iDateLen = iDate.length;
      }

      // Replace Y's, M's and D's with the sent in year, month, date
      if(iYearLen2)
      {
         if((iYearLen - iYearLen2) >= 0)
            iYear = iYear.slice(iYearLen - iYearLen2);
         rgExp = new RegExp("Y{" + iYearLen2 + "}");
         sReturnDate = sReturnDate.replace(rgExp, iYear);
      }
      if(iMonthLen2)
      {
         if((iMonthLen - iMonthLen2) >= 0)
            iMonth = iMonth.slice(iMonthLen - iMonthLen2);
         rgExp = new RegExp("M{" + iMonthLen2 + "}");
         sReturnDate = sReturnDate.replace(rgExp, iMonth.slice(iMonthLen - iMonthLen2));
      }
      if(iDateLen2)
      {
         if((iDateLen - iDateLen2) >= 0)
            iDate = iDate.slice(iDateLen - iDateLen2);
         rgExp = new RegExp("D{" + iDateLen2 + "}");
         sReturnDate = sReturnDate.replace(rgExp, iDate.slice(iDateLen - iDateLen2));
      }
      
      sFormated = sReturnDate;
   }
   else if(sDate.length > 0)
      sFormated = sErrFormat;

   return sFormated;
}

function validateDate(sDate, sName, arrValidFormats, bAllowEmpty)
{
   var sErrorMsg   = "";
   var bValidFound = false;
   var bEmpty      = false;

   sDate = trim(sDate);
   
   if(arrValidFormats == null)
      arrValidFormats = g_arrValidDateFormats;

   if(!bAllowEmpty && sDate == "") // If empty
   {
      sErrorMsg = "- " + sName + sErrIsEmpty;
   }
   else if(sDate != "") // Check date
   {
      var sAllDates = "";

      for(var i = 0; i < arrValidFormats.length; i++) // Go through all valid formats
      {
         var sValidDate = arrValidFormats[i];
         var bThisValid = true;

         if(sDate.length == sValidDate.length) // Only if correct length.
         {
            var iYear, iMonth, iDate, rgExp;
            var iYearLen   = (sValidDate.lastIndexOf("Y") != -1) ? sValidDate.lastIndexOf("Y") - sValidDate.indexOf("Y") + 1 : 0;
            var iMonthLen  = (sValidDate.lastIndexOf("M") != -1) ? sValidDate.lastIndexOf("M") - sValidDate.indexOf("M") + 1 : 0;
            var iDateLen   = (sValidDate.lastIndexOf("D") != -1) ? sValidDate.lastIndexOf("D") - sValidDate.indexOf("D") + 1 : 0;

            if(iYearLen != 0) // Check year
            {
               iYear = sDate.slice(sValidDate.indexOf("Y"), sValidDate.indexOf("Y") + iYearLen);
               rgExp = new RegExp("[0-9]{" + iYearLen + "}");
               if(iYear.search(rgExp) == -1) // If a valid year number
                  bThisValid = false;
            }

            if(iMonthLen != 0 && bThisValid) // Check month
            {
               iMonth = sDate.slice(sValidDate.indexOf("M"), sValidDate.indexOf("M") + iMonthLen);
               rgExp = new RegExp("[0-9]{" + iMonthLen + "}");
               if(iMonth.search(rgExp) > -1)
               {
                  // Check if from 1 to 12
                  if(iMonth < 1 || iMonth > 12)
                     bThisValid = false;
	            }
	            else
	               bThisValid = false;
            }

            if(iDateLen != 0 && bThisValid) // Check date
            {
               iDate = sDate.slice(sValidDate.indexOf("D"), sValidDate.indexOf("D") + iDateLen);
               rgExp = new RegExp("[0-9]{" + iDateLen + "}");
               if(iDate.search(rgExp) > -1)
               {
                  if(iDate < 1 || iDate > 31)
                     bThisValid = false;

	               // Check if correct nr of days for the month (months with 30 days)
	               if(iMonth == 4 || iMonth == 6 || iMonth == 9 || iMonth == 11)
	               {
	               	if(iDate == 31)
	               	   bThisValid = false;
	               }

	               if(iMonth == 2) // Check february
	               {
	                  if(iDate > 29) // If more than 29 days
	                     bThisValid = false;

                     if(iYear) // Check leap year (if a year exist)
                     {
	                     if(iDate == 29 && ((iYear / 4) != parseInt(iYear / 4)))
	                        bThisValid = false;
	                  }
	               }
	            }
	            else
	               bThisValid = false;
            }
            
            if(bThisValid) // Check separators
            {
               rgExp  = new RegExp("[^YMD]", "g"); // Search for everything except YMD
               rgExp2 = new RegExp("[^0-9]", "g"); // Search for everything except 0-9
               
               var arrMatches  = sValidDate.match(rgExp);
               var arrMatches2 = sDate.match(rgExp2);
               
               if(arrMatches != null)
               {
                  for(var i2 = 0; i2 < arrMatches.length; i2++)
                  {
                     if(arrMatches2 == null || 
                        arrMatches2.length < arrMatches.length ||
                        arrMatches[i2] != arrMatches2[i2])
                        bThisValid = false;
                  }
               }
            }
         }
         else
            bThisValid = false;

         if(bThisValid)
         {
            bValidFound = true;
            g_sLastValidDateFormat = sValidDate;
         }

         // Create string that might have to be presented in error message.
         sAllDates += "\"" + arrValidFormats[i] + "\", ";
         if(i == arrValidFormats.length-1)
            sAllDates = sAllDates.slice(0, sAllDates.length-2);
      }

      if(!bValidFound) // No valid at all found
         sErrorMsg = "- " + sName + sErrValidateDate + sAllDates + ".\n";
   }
   
   return sErrorMsg;
}

function compareDates(sDate1, sDate1Name, sMethod, sDate2, sDate2Name)
{
   var sErrorMsg = "";
   var sMethodName = "";
   switch(sMethod)
   {
      case "==" : sMethodName = sErrCompareDatesSameAs; break;
      case "<=" : sMethodName = sErrCompareDatesLessOrEqual; break;
      case ">=" : sMethodName = sErrCompareDatesMoreOrEqual; break;
      case "<"  : sMethodName = sErrCompareDatesLessThan; break;
      case ">"  : sMethodName = sErrCompareDatesMoreThan; break;
      case "!=" : sMethodName = sErrCompareDatesDifferent; break;
   }

   sErrorMsg = "- " + sDate1Name + sErrCompareDatesIsNot + sMethodName + " " + sDate2Name + ".\n";

   if(sDate1.length == 10 && sDate2.length == 10)
   {
      sDate1 = "" + sDate1.substr(0,4) + sDate1.substr(5,2) + sDate1.substr(8,2);
      sDate2 = "" + sDate2.substr(0,4) + sDate2.substr(5,2) + sDate2.substr(8,2);
      
      if(eval(sDate1 + sMethod + sDate2))
         sErrorMsg = "";
   }
   else
      sErrorMsg = "";

   return sErrorMsg;
}

function formatTime(sTime)
{
   var sFormated = "";
   var sColon    = ":";
   var iHour     = null;
   var iMinutes  = null;

   if(validateTime(sTime, "Tid", true) == "" && sTime.length > 0)
   {
      if(sTime.length == 1) // H
      {
         iHour     = sTime;
         sFormated = "0" + iHour + sColon + "00";
      }
      else if(sTime.length == 2) // HH
      {
         iHour     = sTime.substr(0,2);
         sFormated = iHour + sColon + "00";
      }
      else if(sTime.length == 4) // H:MM or H.MM
      {
         iHour     = sTime.substr(0,1);
         iMinutes  = sTime.substr(2,2);
         sFormated = "0" + iHour + sColon + iMinutes;
      }
      else if(sTime.length == 5) // HH:MM or HH.MM
      {
         iHour     = sTime.substr(0,2);
         iMinutes  = sTime.substr(3,2);
         sFormated = iHour + sColon + iMinutes;
      }
   }
   else if(sTime.length > 0)
      sFormated = sErrFormat;

   return sFormated;
}

function validateTime(sTime, sName, bAllowEmpty)
{
   var sErrorMsg = "";
   var sColon    = ":";
   var iHour     = "";
   var iMinutes  = "";

   sTime = trim(sTime);

   // validateNumber(sNumber, sName, bAllowEmpty, iMinValue, iMaxValue)
   if(!bAllowEmpty && sTime.length == 0) // If empty
   {
      sErrorMsg = "- " + sName + sErrIsEmpty;
   }
   else if(sTime.length > 0) // else check time
   {
      if(sTime.length == 1 || sTime.length == 2) // H or HH
         iHour = sTime;
      else if(sTime.length == 4 && 
             (sTime.substr(1,1) == ":" || sTime.substr(1,1) == ".")) // H:MM or H.MM
      {
         iHour    = sTime.substr(0,1);
         iMinutes = sTime.substr(2,2);
         sColon   = sTime.substr(1,1);
      }
      else if(sTime.length == 5) // HH:MM or HH.MM
      {
         iHour    = sTime.substr(0,2);
         iMinutes = sTime.substr(3,2);
         sColon   = sTime.substr(2,1);
      }
      else
         sErrorMsg = "- " + sName + sErrValidateTime;

      if(sErrorMsg == "")
      {
         if(validateNumber(iHour, "Hour", true, 0, 23) != "" ||
            validateNumber(iMinutes, "Minutes", true, 0, 59) != "" ||
            (sColon != ":" && sColon != "."))
            sErrorMsg = "- " + sName + sErrValidateTime;
      }
   }

   return sErrorMsg;
}

function formatPersNr(sPersNr, iReturnFormat)
{
   // Format          Length  iReturnFormat
   // =====================================
   // YYYYMMDD-NNNN   13      1
   // YYYYMMDDNNNN    12      2
   // YYMMDD-NNNN     11      3
   // YYMMDDNNNN      10      4

   var sFormated  = "";
   sPersNr        = trim(sPersNr);

   if(validatePersNr(sPersNr, "PersNr", true) == "" && sPersNr.length > 0)
   {
      if(sPersNr.length == 13 || sPersNr.length == 12) // Format to YYYYMMDDNNNN
      {
         var sCheckNr = (sPersNr.length == 13) ? sPersNr.slice(9) : sPersNr.slice(8);
         sPersNr      = sPersNr.slice(0,8) + sCheckNr;
      }
      else if(sPersNr.length == 11 || sPersNr.length == 10) // Format to YYYYMMDDNNNN
      {
         var sCheckNr = (sPersNr.length == 11) ? sPersNr.slice(7) : sPersNr.slice(6);
         var sYearNow = new String(new Date().getFullYear()).slice(2,4);
         var sYear    = (sPersNr.slice(0,2) < sYearNow) ? "20" : "19";
         sPersNr      = sYear + sPersNr.slice(0,6) + sCheckNr;
      }

      if(iReturnFormat == 1)
         sFormated = sPersNr.slice(0,8) + "-" + sPersNr.slice(8);
      else if(iReturnFormat == 2)
         sFormated = sPersNr;
      else if(iReturnFormat == 3)
         sFormated = sPersNr.slice(2,8) + "-" + sPersNr.slice(8);
      else if(iReturnFormat == 3)
         sFormated = sPersNr.slice(2,8) + sPersNr.slice(8);
   }
   else if(sPersNr.length > 0)
      sFormated = sErrFormat;
   
   return sFormated;
}

function validatePersNr(sPersNr, sName, bAllowEmpty)
{
   // Valid format    Length
   // ======================
   // YYYYMMDD-NNNN   13
   // YYYYMMDDNNNN    12
   // YYMMDD-NNNN     11
   // YYMMDDNNNN      10

   var sErrorMsg  = "";
   var bValidDate = false;
   sPersNr = trim(sPersNr);

   if(!bAllowEmpty && sPersNr == "") // If empty
   {
      sErrorMsg = "- " + sName + sErrIsEmpty;
   }
   else if(sPersNr != "") // Check persnr
   {
      if((sPersNr.length == 13 || sPersNr.length == 12) &&
          validateDate(sPersNr.slice(0,8), "PersNr", new Array("YYYYMMDD"), true) == "")
      {
         var sCheckNr = (sPersNr.length == 13) ? sPersNr.slice(9) : sPersNr.slice(8);
         sPersNr      = sPersNr.slice(2,8) + sCheckNr;
         bValidDate   = true;
      }
      else if((sPersNr.length == 11 || sPersNr.length == 10) &&
               validateDate(sPersNr.slice(0,6), "PersNr", new Array("YYMMDD"), true) == "")
      {
         var sCheckNr = (sPersNr.length == 11) ? sPersNr.slice(7) : sPersNr.slice(6);
         sPersNr      = sPersNr.slice(0,6) + sCheckNr;
         bValidDate   = true;
      }
      else // Met none of the requirements above - invalid
      {
         sErrorMsg = "- " + sName + sErrValidatePersNr;
      }

      if(bValidDate) // If datecheck above was successful, this check was made by Christian Halvarsson
      {
	      var sSumma = 0;
	      var sTempNr;
	      var iRest;

	      // Kollar kontrollsiffra (fyra sista), använder YYMMDDNNNN
	      for(i=0;i<=8;i++)
	      {
	      	if(i % 2 == 0)
	      	{
	      		//jämnt index
	      		sTempNr = parseInt(sPersNr.charAt(i)) * 2;

	      		//om tvåsiffrigt addera ihop båda siffrorna
	      		if(sTempNr >= 10)
	      		{
	      			iRest = sTempNr % 10;
	      			sTempNr = 1 + iRest;
	      		}
	      	}
	      	else
	      	{
	      		//Ojämnt index
	      		sTempNr = parseInt(sPersNr.charAt(i)) * 1;
	      	}

	      	sSumma += sTempNr;
	      }
	      sSumma += parseInt(sPersNr.charAt(9));

	      //om int jämt tiotal så stämmer ej kontrollsiffran.
	      if(sSumma %10 != 0)
            sErrorMsg = "- " + sName + sErrValidatePersNr;
      }
   }

	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 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);
}


// validation.js

// JavaScript Document
var arrValidDates = new Array("YY/DD/MM","YYMMDD","YYYYMMDD","YYYY-MM-DD");
var iFormatDate  = 0;

function validateOrder() {
	var sErrMsg = "";
	var objFrmMain = document.frmOrder;
	
	var required = new Array();
	
	required[0] = new Array('name', 'text', 'Name');
	required[1] = new Array('email', 'email', 'Email');
	required[2] = new Array('address', 'address', 'Address');
	required[3] = new Array('pass', 'text', 'Password');
	required[4] = new Array('pass2', 'text', 'Confirm password');
	required[5] = new Array('postcode', 'text', 'ZIP Code');
	required[6] = new Array('tel', 'text', 'Telephone');

	for (i = 0; i < objFrmMain.length; i++) {
		for (x in required) {
			if (required[x][0] == objFrmMain.elements[i].name) {
				var child = document.getElementById(objFrmMain.elements[i].name + '_error');
				if (child != null) {
					child.parentNode.removeChild(child);
					objFrmMain.elements[i].style.borderColor = '#B769B7';
				}
				if (required[x][1] == 'email') {
					sErrMsg = validateEmail(objFrmMain.elements[i].value, required[x][2], false);
				} else {
					sErrMsg = validateText(objFrmMain.elements[i].value, required[x][2], false);
				}
				if (sErrMsg != '') {
					var errors = document.createElement('p');
					errors.setAttribute('id', objFrmMain.elements[i].name + '_error');
					errors.style.color = '#FF0000';
					errors.style.paddingTop = '2px';
					errors.style.paddingBottom = '0px';
					errors.style.marginLeft = '0px';
					objFrmMain.elements[i].parentNode.appendChild(errors);
					errors.innerHTML = sErrMsg.substr(2);
					objFrmMain.elements[i].style.borderColor = '#FF0000';
				}
			}
		}
	}
	
	var pass_error = document.getElementById('password_error');
	if (pass_error != null) {
		pass_error.parentNode.removeChild(pass_error);
	}
	
	if (objFrmMain.pass.value != objFrmMain.pass2.value) {
		if (document.getElementById('pass_error') == null && document.getElementById('pass2_error') == null) {
			var pass = document.getElementById('pass2');
			var error = document.createElement('p');
			error.setAttribute('id', 'password_error');
			error.style.color = '#FF0000';
			error.style.paddingTop = '2px';
			error.style.paddingBottom = '0px';
			error.style.marginLeft = '0px';
			pass.parentNode.appendChild(error);
			sErrMsg = 'Passwords do not match';
			error.innerHTML = sErrMsg;
		}
	}
		
	if (sErrMsg != "") {
		return false;
	} else {
		return true;
	}
}

// dreamweaver.js

/***************** AJAX Stuffage ****************************/
var http = createRequestObject();
var globObj;

function createRequestObject() {
	var requestObj;
	var browser = navigator.appName;
	if (browser == 'Microsoft Internet Explorer') {
		requestObj = new ActiveXObject('Microsoft.XMLHTTP');
	} else {
		requestObj = new XMLHttpRequest();
	}
	return requestObj;
}

function getAddress(obj) {
	globObj = obj.id;
	if (obj.value != '') {
		var url = 'get_address.php?zip=' + obj.value + '&obj=' + globObj;
		http.open('get', url);
		http.onreadystatechange = handleResponse;
		http.send(null);
	} else {
		removeDropDown();
	}
}

function handleResponse() {
	if (http.readyState == 4) {
		var address = document.getElementById('addresses');
		if (address == null) {
			var dropDown = document.createElement('div');
			dropDown.setAttribute('id', 'addresses');
			dropDown.style.position = 'absolute';
			dropDown.style.backgroundColor = '#D7DBDF';
			dropDown.style.border = '1px solid #000000';
			dropDown.style.padding = '5px';
			dropDown.style.maxHeight = '100px';
			dropDown.style.width = '173px';
			dropDown.style.overflow = 'auto';
			document.getElementById('cell_' + globObj).appendChild(dropDown);
			dropDown.innerHTML = http.responseText;
		} else {
			address.innerHTML = http.responseText;
		}
	}
}

function fillFields(zip, county, state, zipField, countyField, stateField) {
	document.getElementById(zipField).value = zip;
	document.getElementById(countyField).value = county;
	document.getElementById(stateField).value = state;
	removeDropDown();
}

function removeDropDown() {
	address = document.getElementById('addresses');
	if (address != null) {
		document.getElementById('cell_' + globObj).removeChild(address);	
	}
}
/***********************************************************/

function MM_goToURL() { //v3.0
  var i, args=MM_goToURL.arguments; document.MM_returnValue = false;
  for (i=0; i<(args.length-1); i+=2) eval(args[i]+".location='"+args[i+1]+"'");
}

function MM_reloadPage(init) {  //reloads the window if Nav4 resized
  if (init==true) with (navigator) {if ((appName=="Netscape")&&(parseInt(appVersion)==4)) {
    document.MM_pgW=innerWidth; document.MM_pgH=innerHeight; onresize=MM_reloadPage; }}
  else if (innerWidth!=document.MM_pgW || innerHeight!=document.MM_pgH) location.reload();
}
MM_reloadPage(true);

function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_setTextOfLayer(objName,x,newText) { //v4.01
  if ((obj=MM_findObj(objName))!=null) with (obj)
    if (document.layers) {document.write(unescape(newText)); document.close();}
    else innerHTML = unescape(newText);
}

function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}

function rollOver(buttonName, buttonImg, bannerImg) {
	document.banner.src = bannerImg;
	document[buttonName].src = buttonImg;
}
function submitRollover(objTarget, targetImg) {
	document.getElementById(objTarget).style.backgroundImage = 'url(/media/images/'+targetImg+')';
	return true;
}

// Mforms JS
function setChildForm(stat) {
	var optional = new Array();
	optional[0] = 'f16';
	optional[1] = 'f241';
	optional[2] = 'f242';
	optional[3] = 'f243';
	optional[4] = 'f244';
	optional[5] = 'f245';
	optional[6] = 'f27';
	optional[7] = 'f40';
	optional[8] = 'f246';
	optional[9] = 'f247';
	optional[10] = 'f248';
	optional[11] = 'f249';
	optional[12] = 'f250';
	optional[13] = 'f244';
	optional[14] = 'f251';
	optional[15] = 'f252';
	optional[16] = 'f253';
	optional[17] = 'f41';
	optional[18] = 'f42';
	optional[19] = 'f44';
	optional[20] = 'f314';
	optional[21] = 'f254';
	optional[22] = 'f255';
	optional[23] = 'f256';
	optional[24] = 'f257';
	optional[25] = 'f258';
	optional[26] = 'f259';
	optional[27] = 'f260';
	
	
	for (var i = 0; i < document.forms[0].length; i++) {
		if (document.forms[0].elements[i].name == stat) {
			if (document.forms[0].elements[i].checked == true) {
				var state = document.forms[0].elements[i].value;
			}
		}
	}
	if (state == 0) {
		var style = 'none';
	} else {
		var style = 'table-row';	
	}
	for (var a = 0; a < optional.length; a++) {
		document.getElementById('row_' + optional[a]).style.display = style;
	}
}

function setMedSuppForm(stat) {
	var tableRows = new Array();
	tableRows[0] = 'f68';
	tableRows[1] = 'f72';
	tableRows[2] = 'f73';
	tableRows[3] = 'f75';
	tableRows[4] = 'f80';
	tableRows[5] = 'f81';
	tableRows[6] = 'f82';
	tableRows[7] = 'f83';

	for (var i = 0; i < tableRows.length; i++) {
		document.getElementById('row_' + tableRows[i]).style.display = 'none';
	}
	
	var optional =  new Array();
	for (x = 0; x < document.forms[0].length; x++) { 
		if (document.forms[0].elements[x].name == stat) {
			if (document.forms[0].elements[x].checked) {
				if (document.forms[0].elements[x].value == 1) {
					optional[0] = 'f68';
					optional[1] = 'f72';
					optional[2] = 'f73';
					optional[3] = 'f75';
				    optional[4] = 'f80';
					optional[5] = 'f81';
				}
				if (document.forms[0].elements[x].value == 2) {
					optional[0] = 'f82';
				}
				if (document.forms[0].elements[x].value == 3) {
					optional[0] = 'f83';
				}
			}
		}
	}
	for (var i = 0; i < optional.length; i++) {
		document.getElementById('row_' + optional[i]).style.display = 'table-row';
	}
}
/* confirm separate property */
function setSepPropForm(stat) {
	var state = new Array();
	state[0] = 'none';
	state[1] = 'table-row';

	var optional =  new Array();
	optional[0] = 'f50';
	optional[1] = 'f53';
	optional[2] = 'f54';
	optional[3] = 'f270';
	optional[4] = 'f271';
	optional[5] = 'f272';
	optional[6] = 'f273';
	optional[7] = 'f55';
	optional[8] = 'f56';
	optional[9] = 'f57';
	optional[10] = 'f58';
	optional[11] = 'f59';
	optional[12] = 'f60';
	optional[13] = 'f61';
	optional[14] = 'f62';
	optional[15] = 'f63';
	optional[16] = 'f64';
	optional[17] = 'f65';
	optional[18] = 'f66';
	optional[19] = 'f67';
	optional[20] = 'f69';
	optional[21] = 'f70';
	optional[22] = 'f71';
	optional[23] = 'f286';
	optional[24] = 'f287';
	optional[25] = 'f288';
	optional[26] = 'f289';
	optional[27] = 'f298';
	optional[28] = 'f299';
	
	
	for (x = 0; x < document.forms[0].length; x++) { 		
		if (document.forms[0].elements[x].name == stat) {
			if (document.forms[0].elements[x].checked) {
				var a = document.forms[0].elements[x].value;
			}
		}
	}
	for (var i = 0; i < optional.length; i++) {
		document.getElementById('row_' + optional[i]).style.display = state[a];
	}
}

function setSepHouse(stat) {
	var state = new Array();
	state[0] = 'none';
	state[1] = 'table-row';
	
	var optional =  new Array();
	optional[0] = 'f54';
	optional[1] = 'f270';
	optional[2] = 'f271';
	optional[3] = 'f272';
	optional[4] = 'f273';
	optional[5] = 'f298';
	
	for (x = 0; x < document.forms[0].length; x++) { 		
		if (document.forms[0].elements[x].name == stat) {
			if (document.forms[0].elements[x].checked) {
				var a = document.forms[0].elements[x].value;
			}
		}
	}
	for (var i = 0; i < optional.length; i++) {
		document.getElementById('row_' + optional[i]).style.display = state[a];
	}
}
function setSepLand(stat) {
	var state = new Array();
	state[0] = 'none';
	state[1] = 'table-row';
	
	var optional =  new Array();
	optional[0] = 'f56';
	optional[1] = 'f286';
	optional[2] = 'f287';
	optional[3] = 'f288';
	optional[4] = 'f289';
	optional[5] = 'f299';
	
	for (x = 0; x < document.forms[0].length; x++) { 		
		if (document.forms[0].elements[x].name == stat) {
			if (document.forms[0].elements[x].checked) {
				var a = document.forms[0].elements[x].value;
			}
		}
	}
	for (var i = 0; i < optional.length; i++) {
		document.getElementById('row_' + optional[i]).style.display = state[a];
	}
}
function setSepMotor(stat) {
	var state = new Array();
	state[0] = 'none';
	state[1] = 'table-row';
	
	var optional =  new Array();
	optional[0] = 'f59';
	optional[1] = 'f60';
	optional[2] = 'f61';
	optional[3] = 'f62';
	optional[4] = 'f58';
	
	for (x = 0; x < document.forms[0].length; x++) { 		
		if (document.forms[0].elements[x].name == stat) {
			if (document.forms[0].elements[x].checked) {
				var a = document.forms[0].elements[x].value;
			}
		}
	}
	for (var i = 0; i < optional.length; i++) {
		document.getElementById('row_' + optional[i]).style.display = state[a];
	}
}
/* form 18 - Property & Debt Division (Part 1: Husband Details) */

function setPropDebtForm1(stat) {
	var state = new Array();
	state[0] = 'none';
	state[1] = 'table-row';
	
	var optional =  new Array();
	optional[0] = 'f159';
	optional[1] = 'f276';
	optional[2] = 'f277';
	optional[3] = 'f279';
	optional[4] = 'f278';
	optional[5] = 'f162';
	optional[6] = 'f163';
	optional[7] = 'f300';
	
	for (x = 0; x < document.forms[0].length; x++) { 		
		if (document.forms[0].elements[x].name == stat) {
			if (document.forms[0].elements[x].checked) {
				var a = document.forms[0].elements[x].value;
			}
		}
	}
	for (var i = 0; i < optional.length; i++) {
		document.getElementById('row_' + optional[i]).style.display = state[a];
	}
}

function setPropDebtForm2(stat) {
	var state = new Array();
	state[0] = 'none';
	state[1] = 'table-row';	
	
	var optional =  new Array();
	optional[0] = 'f161';
	optional[1] = 'f290';
	optional[2] = 'f291';
	optional[3] = 'f292';
	optional[4] = 'f293';
	optional[5] = 'f162';
	optional[6] = 'f163';
	optional[7] = 'f301';

	for (x = 0; x < document.forms[0].length; x++) { 		
		if (document.forms[0].elements[x].name == stat) {
			if (document.forms[0].elements[x].checked) {
				var a = document.forms[0].elements[x].value;
			}
		}
	}
	for (var i = 0; i < optional.length; i++) {
		document.getElementById('row_' + optional[i]).style.display = state[a];
	}
}

function setPropDebtForm3(stat) {
	var state = new Array();
	state[0] = 'none';
	state[1] = 'table-row';	
	
	var optional =  new Array();
	optional[0] = 'f165';
	optional[1] = 'f201';
	optional[2] = 'f202';
	optional[3] = 'f203';
	optional[4] = 'f204';
	optional[5] = 'f166';
	
	for (x = 0; x < document.forms[0].length; x++) { 		
		if (document.forms[0].elements[x].name == stat) {
			if (document.forms[0].elements[x].checked) {
				var a = document.forms[0].elements[x].value;
			}
		}
	}
	for (var i = 0; i < optional.length; i++) {
		document.getElementById('row_' + optional[i]).style.display = state[a];
	}
}

/* form 19  - Property & Debt Division (Part 2: Wife Details) */

function setPropDebtForm7(stat) {
	var state = new Array();
	state[0] = 'none';
	state[1] = 'table-row';
	
	var optional =  new Array();
	optional[0] = 'f180';
	optional[1] = 'f282';
	optional[2] = 'f283';
	optional[3] = 'f284';
	optional[4] = 'f285';
	optional[5] = 'f304';
	
	for (x = 0; x < document.forms[0].length; x++) { 		
		if (document.forms[0].elements[x].name == stat) {
			if (document.forms[0].elements[x].checked) {
				var a = document.forms[0].elements[x].value;
			}
		}
	}
	for (var i = 0; i < optional.length; i++) {
		document.getElementById('row_' + optional[i]).style.display = state[a];
	}
}

function setPropDebtForm8(stat) {
	var state = new Array();
	state[0] = 'none';
	state[1] = 'table-row';
	
	var optional =  new Array();
	optional[0] = 'f183';
	optional[1] = 'f294';
	optional[2] = 'f295';
	optional[3] = 'f296';
	optional[4] = 'f297';
	optional[5] = 'f305';
	for (x = 0; x < document.forms[0].length; x++) { 		
		if (document.forms[0].elements[x].name == stat) {
			if (document.forms[0].elements[x].checked) {
				var a = document.forms[0].elements[x].value;
			}
		}
	}
	for (var i = 0; i < optional.length; i++) {
		document.getElementById('row_' + optional[i]).style.display = state[a];
	}
}

function setPropDebtForm9(stat) {
	var state = new Array();
	state[0] = 'none';
	state[1] = 'table-row';
	
	var optional =  new Array();
	optional[0] = 'f205';
	optional[1] = 'f187';
	optional[2] = 'f188';
	optional[3] = 'f189';
	optional[4] = 'f190';
	optional[5] = 'f191';
	
	for (x = 0; x < document.forms[0].length; x++) { 		
		if (document.forms[0].elements[x].name == stat) {
			if (document.forms[0].elements[x].checked) {
				var a = document.forms[0].elements[x].value;
			}
		}
	}
	for (var i = 0; i < optional.length; i++) {
		document.getElementById('row_' + optional[i]).style.display = state[a];
	}
}

/* form 2 - petitioner details */

function setPetMail(stat) {
	var state = new Array();
	state[0] = 'table-row';
	state[1] = 'none';
	
	var optional =  new Array();
	optional[0] = 'f269';
	optional[1] = 'f274';
	optional[2] = 'f275';
	optional[3] = 'f280';
	optional[4] = 'f281';
	
	for (x = 0; x < document.forms[0].length; x++) { 		
		if (document.forms[0].elements[x].name == stat) {
			if (document.forms[0].elements[x].checked) {
				var a = document.forms[0].elements[x].value;
			}
		}
	}
	for (var i = 0; i < optional.length; i++) {
		document.getElementById('row_' + optional[i]).style.display = state[a];
	}
}
function setPetDrive(stat) {
	var state = new Array();
	state[0] = 'none';
	state[1] = 'table-row';
	
	var optional =  new Array();
	optional[0] = 'f21';
	optional[1] = 'f308';
	
	for (x = 0; x < document.forms[0].length; x++) { 		
		if (document.forms[0].elements[x].name == stat) {
			if (document.forms[0].elements[x].checked) {
				var a = document.forms[0].elements[x].value;
			}
		}
	}
	for (var i = 0; i < optional.length; i++) {
		document.getElementById('row_' + optional[i]).style.display = state[a];
	}
}

function setPetWork(stat) {
	var state = new Array();
	state[0] = 'none';
	state[1] = 'table-row';
	
	var optional =  new Array();
	optional[0] = 'f23';
	optional[1] = 'f216';
	optional[2] = 'f217';
	optional[3] = 'f218';
	optional[4] = 'f219';
	optional[5] = 'f220';
	optional[6] = 'f24';
	
	for (x = 0; x < document.forms[0].length; x++) { 		
		if (document.forms[0].elements[x].name == stat) {
			if (document.forms[0].elements[x].checked) {
				var a = document.forms[0].elements[x].value;
			}
		}
	}
	for (var i = 0; i < optional.length; i++) {
		document.getElementById('row_' + optional[i]).style.display = state[a];
	}
}

/* form 3 - respondent details */

function setResMail(stat) {
	var state = new Array();
	state[0] = 'table-row';
	state[1] = 'none';
	
	var optional =  new Array();
	optional[0] = 'f226';
	optional[1] = 'f227';
	optional[2] = 'f228';
	optional[3] = 'f229';
	optional[4] = 'f230';

	for (x = 0; x < document.forms[0].length; x++) { 		
		if (document.forms[0].elements[x].name == stat) {
			if (document.forms[0].elements[x].checked) {
				var a = document.forms[0].elements[x].value;
			}
		}
	}
	for (var i = 0; i < optional.length; i++) {
		document.getElementById('row_' + optional[i]).style.display = state[a];
	}
}
function setResDrive(stat) {
	var state = new Array();
	state[0] = 'none';
	state[1] = 'table-row';
	
	var optional =  new Array();
	optional[0] = 'f232';
	optional[1] = 'f309';
	
	for (x = 0; x < document.forms[0].length; x++) { 		
		if (document.forms[0].elements[x].name == stat) {
			if (document.forms[0].elements[x].checked) {
				var a = document.forms[0].elements[x].value;
			}
		}
	}
	for (var i = 0; i < optional.length; i++) {
		document.getElementById('row_' + optional[i]).style.display = state[a];
	}
}
function setResWork(stat) {
	var state = new Array();
	state[0] = 'none';
	state[1] = 'table-row';
	
	var optional =  new Array();
	optional[0] = 'f234';
	optional[1] = 'f235';
	optional[2] = 'f236';
	optional[3] = 'f237';
	optional[4] = 'f238';
	optional[5] = 'f239';
	optional[6] = 'f240';
	
	for (x = 0; x < document.forms[0].length; x++) { 		
		if (document.forms[0].elements[x].name == stat) {
			if (document.forms[0].elements[x].checked) {
				var a = document.forms[0].elements[x].value;
			}
		}
	}
	for (var i = 0; i < optional.length; i++) {
		document.getElementById('row_' + optional[i]).style.display = state[a];
	}
}

/* form 4 - child details */
function setChildMail(stat) {
	var state = new Array();
	state[0] = 'table-row';
	state[1] = 'none';
	
	var optional =  new Array();
	optional[0] = 'f246';
	optional[1] = 'f247';
	optional[2] = 'f248';
	optional[3] = 'f249';
	optional[4] = 'f250';
	
	for (x = 0; x < document.forms[0].length; x++) { 		
		if (document.forms[0].elements[x].name == stat) {
			if (document.forms[0].elements[x].checked) {
				var a = document.forms[0].elements[x].value;
			}
		}
	}
	for (var i = 0; i < optional.length; i++) {
		document.getElementById('row_' + optional[i]).style.display = state[a];
	}
}

function setChildDrive(stat){
	var state = new Array();
	state[0] = 'none';
	state[1] = 'table-row';
		
	var optional =  new Array();
	optional[0] = 'f314';
	optional[1] = 'f252';
	
	for (x = 0; x < document.forms[0].length; x++) { 		
		if (document.forms[0].elements[x].name == stat) {
			if (document.forms[0].elements[x].checked) {
				var a = document.forms[0].elements[x].value;
			}
		}
	}
	for (var i = 0; i < optional.length; i++) {
		document.getElementById('row_' + optional[i]).style.display = state[a];
	}
}

function setChildEmploy(stat) {
	var state = new Array();
	state[0] = 'none';
	state[1] = 'table-row';
		
	var optional =  new Array();
	optional[0] = 'f254';
	optional[1] = 'f255';
	optional[2] = 'f256';
	optional[3] = 'f257';
	optional[4] = 'f258';
	optional[5] = 'f259';
	optional[6] = 'f260';
	
	for (x = 0; x < document.forms[0].length; x++) { 		
		if (document.forms[0].elements[x].name == stat) {
			if (document.forms[0].elements[x].checked) {
				var a = document.forms[0].elements[x].value;
			}
		}
	}
	for (var i = 0; i < optional.length; i++) {
		document.getElementById('row_' + optional[i]).style.display = state[a];
	}
}

/* protective order statement */
function setProcOrder(stat) {
	var state = new Array();
	state[0] = 'none';
	state[1] = 'table-row';
		
	var optional =  new Array();
	optional[0] = 'f261';
	optional[1] = 'f262';
	optional[2] = 'f263';
	optional[3] = 'f264';
	
	for (x = 0; x < document.forms[0].length; x++) { 		
		if (document.forms[0].elements[x].name == stat) {
			if (document.forms[0].elements[x].checked) {
				var a = document.forms[0].elements[x].value;
			}
		}
	}
	for (var i = 0; i < optional.length; i++) {
		document.getElementById('row_' + optional[i]).style.display = state[a];
	}
}

/* Exhibit Possession and Access Order (Visitation) */
function setVisitationTime(stat) {
	var state = new Array();
	state[0] = 'table-row';
	state[1] = 'none';	
	
	var optional =  new Array();
	optional[0] = 'f312';
	optional[1] = 'f313';

	for (x = 0; x < document.forms[0].length; x++) { 		
		if (document.forms[0].elements[x].name == stat) {
			if (document.forms[0].elements[x].checked) {
				var a = document.forms[0].elements[x].value;
			}
		}
	}
	for (var i = 0; i < optional.length; i++) {
		document.getElementById('row_' + optional[i]).style.display = state[a];
	}
}
function setVisitationTime2(stat) {
	var state = new Array();
	state[0] = 'table-row';
	state[1] = 'none';	
	
	var optional =  new Array();
	optional[0] = 'f315';
	optional[1] = 'f316';

	for (x = 0; x < document.forms[0].length; x++) { 		
		if (document.forms[0].elements[x].name == stat) {
			if (document.forms[0].elements[x].checked) {
				var a = document.forms[0].elements[x].value;
			}
		}
	}
	for (var i = 0; i < optional.length; i++) {
		document.getElementById('row_' + optional[i]).style.display = state[a];
	}
}
/* child support */
function setChildSupp(stat){
	var tableRows = new Array();
	tableRows[0] = 'f141';
	tableRows[1] = 'f142';
	tableRows[2] = 'f143';
	tableRows[3] = 'f144';

	for (var i = 0; i < tableRows.length; i++) {
		document.getElementById('row_' + tableRows[i]).style.display = 'none';
	}
	
	var optional =  new Array();
	for (x = 0; x < document.forms[0].length; x++) { 
		if (document.forms[0].elements[x].name == stat) {
			if (document.forms[0].elements[x].checked) {
				if (document.forms[0].elements[x].value == 0) {
					optional[0] = 'f141';
				}
				if (document.forms[0].elements[x].value == 1) {
					optional[0] = 'f141';
					optional[1] = 'f142';
					optional[2] = 'f143';
				}
				if (document.forms[0].elements[x].value == 2) {
					optional[0] = 'f144';
				}
			}
		}
	}
	for (var i = 0; i < optional.length; i++) {
		document.getElementById('row_' + optional[i]).style.display = 'table-row';
	}
}

// clock.js

function clock() {
	var time = new Date();
	var hours = time.getHours();
	var minutes = time.getMinutes();
	var seconds = time.getSeconds();
	if (minutes <= 9) minutes = "0" + minutes;
	if (seconds <= 9) seconds = "0" + seconds;
	dispTime = hours + ":" + minutes + ":" + seconds;
	document.getElementById("pendule").innerHTML = dispTime;
	setTimeout("clock()", 1000);
}

// caz.js

/* to be combined into dreamweaver js later */
function setPetMail(stat) {
	var optional =  new Array();
	optional[0] = 'f269';
	optional[1] = 'f274';
	optional[2] = 'f275';
	optional[3] = 'f280';
	optional[4] = 'f281';
	
	if (stat.value == 0 || typeof stat.value == 'undefined') {
		var state = 'table-row';
	} else {
		var state = 'none';
	}
	for (var i = 0; i < optional.length; i++) {
		document.getElementById('row_' + optional[i]).style.display = state;
	}
}
function setPetWork(stat) {
	var optional =  new Array();
	optional[0] = 'f23';
	optional[1] = 'f216';
	optional[2] = 'f217';
	optional[3] = 'f218';
	optional[4] = 'f219';
	optional[5] = 'f220';
	optional[6] = 'f24';
	
	if (stat.value == 1) {
		var state = 'table-row';
	} else {
		var state = 'none';
	}
	for (var i = 0; i < optional.length; i++) {
		document.getElementById('row_' + optional[i]).style.display = state;
	}
}
function setResMail(stat) {
	var optional =  new Array();
	optional[0] = 'f226';
	optional[1] = 'f227';
	optional[2] = 'f228';
	optional[3] = 'f229';
	optional[4] = 'f230';

	if (stat.value == 0 || typeof stat.value == 'undefined') {
		var state = 'table-row';
	} else {
		var state = 'none';
	}
	for (var i = 0; i < optional.length; i++) {
		document.getElementById('row_' + optional[i]).style.display = state;
	}
}
function setResWork(stat) {
	
	alert(stat.value);
	
	var optional =  new Array();
	optional[0] = 'f234';
	optional[1] = 'f235';
	optional[2] = 'f236';
	optional[3] = 'f237';
	optional[4] = 'f238';
	optional[5] = 'f239';
	optional[6] = 'f240';
	
	if (stat.value == 1) {
		var state = 'table-row';
	} else {
		var state = 'none';
	}
	for (var i = 0; i < optional.length; i++) {
		document.getElementById('row_' + optional[i]).style.display = state;
	}
}

// timeline hover

/***********************************************
* Image w/ description tooltip- By Dynamic Web Coding (www.dyn-web.com)
* Copyright 2002-2007 by Sharon Paine
* Visit Dynamic Drive at http://www.dynamicdrive.com/ for full source code
***********************************************/

/* IMPORTANT: Put script after tooltip div or 
	 put tooltip div just before </BODY>. */

var dom = (document.getElementById) ? true : false;
var ns5 = (!document.all && dom || window.opera) ? true: false;
var ie5 = ((navigator.userAgent.indexOf("MSIE")>-1) && dom) ? true : false;
var ie4 = (document.all && !dom) ? true : false;
var nodyn = (!ns5 && !ie4 && !ie5 && !dom) ? true : false;

var origWidth, origHeight;

// avoid error of passing event object in older browsers
if (nodyn) { event = "nope" }

///////////////////////  CUSTOMIZE HERE   ////////////////////
// settings for tooltip 
// Do you want tip to move when mouse moves over link?
var tipFollowMouse= true;	
// Be sure to set tipWidth wide enough for widest image
var tipWidth= 160;
var offX= 20;	// how far from mouse to show tip
var offY= 12; 
var tipFontFamily= "Verdana, arial, helvetica, sans-serif";
var tipFontSize= "8pt";
// set default text color and background color for tooltip here
// individual tooltips can have their own (set in messages arrays)
// but don't have to
var tipFontColor= "#000000";
var tipBgColor= "#DDECFF"; 
var tipBorderColor= "#000080";
var tipBorderWidth= 3;
var tipBorderStyle= "ridge";
var tipPadding= 4;

// tooltip content goes here (image, description, optional bgColor, optional textcolor)
var messages = new Array();
// multi-dimensional arrays containing: 
// image and text for tooltip
// optional: bgColor and color to be sent to tooltip

////////////////////  END OF CUSTOMIZATION AREA  ///////////////////

// preload images that are to appear in tooltip
// from arrays above
if (document.images) {
	var theImgs = new Array();
	for (var i=0; i<messages.length; i++) {
  	theImgs[i] = new Image();
		theImgs[i].src = messages[i][0];
  }
}

// to layout image and text, 2-row table, image centered in top cell
// these go in var tip in doTooltip function
// startStr goes before image, midStr goes between image and text
var startStr = '<table width="' + tipWidth + '"><tr><td align="center" width="100%"><img src="';
var midStr = '" border="0"></td></tr><tr><td valign="top">';
var endStr = '</td></tr></table>';

////////////////////////////////////////////////////////////
//  initTip	- initialization for tooltip.
//		Global variables for tooltip. 
//		Set styles
//		Set up mousemove capture if tipFollowMouse set true.
////////////////////////////////////////////////////////////
var tooltip, tipcss;
function initTip() {
	if (nodyn) return;
	tooltip = (ie4)? document.all['tipDiv']: (ie5||ns5)? document.getElementById('tipDiv'): null;
	tipcss = tooltip.style;
	if (ie4||ie5||ns5) {	// ns4 would lose all this on rewrites
		tipcss.width = tipWidth+"px";
		tipcss.fontFamily = tipFontFamily;
		tipcss.fontSize = tipFontSize;
		tipcss.color = tipFontColor;
		tipcss.backgroundColor = tipBgColor;
		tipcss.borderColor = tipBorderColor;
		tipcss.borderWidth = tipBorderWidth+"px";
		tipcss.padding = tipPadding+"px";
		tipcss.borderStyle = tipBorderStyle;
	}
	if (tooltip&&tipFollowMouse) {
		document.onmousemove = trackMouse;
	}
}

window.onload = initTip;

/////////////////////////////////////////////////
//  doTooltip function
//			Assembles content for tooltip and writes 
//			it to tipDiv
/////////////////////////////////////////////////
var t1,t2;	// for setTimeouts
var tipOn = false;	// check if over tooltip link
function doTooltip(evt,num) {
	if (!tooltip) return;
	if (t1) clearTimeout(t1);	if (t2) clearTimeout(t2);
	tipOn = true;
	// set colors if included in messages array
	if (messages[num][2])	var curBgColor = messages[num][2];
	else curBgColor = tipBgColor;
	if (messages[num][3])	var curFontColor = messages[num][3];
	else curFontColor = tipFontColor;
	if (ie4||ie5||ns5) {
		var tip = startStr + messages[num][0] + midStr + '<span style="font-family:' + tipFontFamily + '; font-size:' + tipFontSize + '; color:' + curFontColor + ';">' + messages[num][1] + '</span>' + endStr;
		tipcss.backgroundColor = curBgColor;
	 	tooltip.innerHTML = tip;
	}
	if (!tipFollowMouse) positionTip(evt);
	else t1=setTimeout("tipcss.visibility='visible'",100);
}

var mouseX, mouseY;
function trackMouse(evt) {
	standardbody=(document.compatMode=="CSS1Compat")? document.documentElement : document.body //create reference to common "body" across doctypes
	mouseX = (ns5)? evt.pageX: window.event.clientX + standardbody.scrollLeft;
	mouseY = (ns5)? evt.pageY: window.event.clientY + standardbody.scrollTop;
	if (tipOn) positionTip(evt);
}

/////////////////////////////////////////////////////////////
//  positionTip function
//		If tipFollowMouse set false, so trackMouse function
//		not being used, get position of mouseover event.
//		Calculations use mouseover event position, 
//		offset amounts and tooltip width to position
//		tooltip within window.
/////////////////////////////////////////////////////////////
function positionTip(evt) {
	if (!tipFollowMouse) {
		mouseX = (ns5)? evt.pageX: window.event.clientX + standardbody.scrollLeft;
		mouseY = (ns5)? evt.pageY: window.event.clientY + standardbody.scrollTop;
	}
	// tooltip width and height
	var tpWd = (ie4||ie5)? tooltip.clientWidth: tooltip.offsetWidth;
	var tpHt = (ie4||ie5)? tooltip.clientHeight: tooltip.offsetHeight;
	// document area in view (subtract scrollbar width for ns)
	var winWd = (ns5)? window.innerWidth-20+window.pageXOffset: standardbody.clientWidth+standardbody.scrollLeft;
	var winHt = (ns5)? window.innerHeight-20+window.pageYOffset: standardbody.clientHeight+standardbody.scrollTop;
	// check mouse position against tip and window dimensions
	// and position the tooltip 
	if ((mouseX+offX+tpWd)>winWd) 
		tipcss.left = mouseX-(tpWd+offX)+"px";
	else tipcss.left = mouseX+offX+"px";
	if ((mouseY+offY+tpHt)>winHt) 
		tipcss.top = winHt-(tpHt+offY)+"px";
	else tipcss.top = mouseY+offY+"px";
	if (!tipFollowMouse) t1=setTimeout("tipcss.visibility='visible'",100);
}

function hideTip() {
	if (!tooltip) return;
	t2=setTimeout("tipcss.visibility='hidden'",100);
	tipOn = false;
}

document.write('<div id="tipDiv" style="position:absolute; visibility:hidden; z-index:100"></div>')