
// Copyright (c) 2007-2008 Autonoto Inc. All rights reserved.

// FIXME: do not allow password to be the same as user name

function saveForm(cookieName, theForm) {
   var str = "";
   
   //toggle pop/all turned off
   /*var makes = document.getElementById('toggleMakes');
   if (makes != null){
      str += "showAllMakes=" + showAllM + "|||";
   }*/
   for (var i = 0; i < theForm.elements.length; i++) {
      
      if (theForm.elements[i].type == "radio"){
          str += theForm.elements[i].name + "=" +
                 theForm.elements[i].checked + "|||";
          i++; //skip second radio option
      }
      else if (theForm.elements[i].type == "checkbox") {
          str += theForm.elements[i].name + "=" +
                 theForm.elements[i].checked + "|||";
      }
      else if (theForm.elements[i].name == "dist") {
                 var s = document.getElementById('slider_dist').slider;
                 
                 str += theForm.elements[i].name + "=" +
                 theForm.elements[i].value + "|||";
      }
      else {
          str += theForm.elements[i].name + "=" +
                 theForm.elements[i].value + "|||";
      }
   }

   document.cookie = cookieName + '=' + escape(str);
   return true;
}

function saveFormWithId( id, form ) {
   var n = form.name + id;
   return saveForm( n, form );
}

function retrieveForm( cookieName, theForm ) {

   var search = cookieName + '=';
   if ( document.cookie.length == 0 ) {
      return false;
   }
   var offset = document.cookie.indexOf( search );
   if ( offset == -1 ) {
      //toggle pop/all turned off
      /*var makes = document.getElementById('toggleMakes');
      if (makes != null ){
         toggle();
      }*/
      return false;
   }
   offset += search.length;
   var end = document.cookie.indexOf(';', offset );
   if ( end == -1 ) {
      end = document.cookie.length;
   }
   var contents = unescape(document.cookie.substring(offset,end));

   var newoffset = 0;
   
   //values to set slider
   var distmax = null;
   var dist    = null;
   
   logMessage("retrieve from cookie : " + cookieName);
   while ( newoffset < contents.length ) {
      offset = newoffset;
      end = contents.indexOf( '|||', offset );
      if ( end == -1 ) {
         end = contents.length;
         newoffset = end;
      } else {
         newoffset = end + 3;
      }
      // read the name
      var elt = contents.substring(offset,end);
      var equal = elt.indexOf('=');
      if ( equal == -1 ) {
         continue; // element with no value
      }
      var name = elt.substring(0,equal);
      var value = elt.substring(equal+1,elt.length);
      
      //toggle pop/all turned off
      /*if (name == 'showAllMakes') {
         var makes = document.getElementById('toggleMakes');
         if (makes != null && value == 'false'){
            toggle();
         }
      }*/

      for ( var i = 0; i < theForm.elements.length; i++ ) {
         if ( name == theForm.elements[i].name ) {
             if (theForm.elements[i].type == "radio"){
                 theForm.elements[i].checked = (value == 'true' ? true : false);
                 i++;//skip to second radio option
                 theForm.elements[i].checked = (value == 'true' ? false : true);
                 if ( theForm.elements[i].onchange ) {
                     value == 'true' ? theForm.elements[i-1].onchange() :
                                       theForm.elements[i].onchange();
                     continue;
                 }
             }
             else if (theForm.elements[i].type == "checkbox"){
                 theForm.elements[i].checked = (value == 'true' ? true : false);
                 
                 if (theForm.elements[i].name == "longDist") {
                     distmax = (value == 'true' ? 1000 : 50);
                 }
             }
             else if (theForm.elements[i].name == "dist") {
                 dist = value;
             }
             else {
                 theForm.elements[i].value = value;
             }   

            // activate validation
            //if ( theForm.elements[i].onchange ) theForm.elements[i].onchange();

            //break;
         }
      }
      
      
   }
   
   //set slider max distance and position
   if ( dist != null && distmax != null) {
       var s = document.getElementById('slider_dist').slider;
       s.setMaximum(distmax);
       s.setValue(dist);
   }
   
   //delete values from cookie so it wouldn't be loaded
   //after cancel
   //document.cookie = cookieName + "=";
   deleteCookie(cookieName);
   return true;
}

function deleteCookie (cookieName) {
  logMessage("delete cookie : " +cookieName);
  var cookieDate = new Date ();  // current date & time
  cookieDate.setTime (cookieDate.getTime() - 1);
  document.cookie = cookieName += "=; expires=" + cookieDate.toGMTString();
}
