var arrDealers = {};
var n_tries = 2;
var btnvalue = "";
var oldZip;
var oldZip_add;
var oldTrim;
var flgRequest = 0;
var flgRequest_add = 0;

var IsoTreeDealerClass = function IsoTreeDealer() {
 this.html = "<table border=\"0\"> <tr>  <td valign=\"top\" width=\"4%\"><input name=\"dealer\" id=\"dealer_chk\" type=\"checkbox\" value=\"\" onclick=\"javascript:if(!this.checked){document.getElementById('dealer_chk_all').checked=false}\" />  </td>  <td width=\"46%\" valign=\"top\"><a href=\"#null\" id=\"dealer_lnk\" onclick=\"\"><b><span id=\"dealer_name\"></span></b></a><br /><span id=\"dealer_data\"></span>, USA  </td> </tr>  </table>";
 
 IsoTreeDealer.prototype.div  = new Object();
 IsoTreeDealer.prototype.chk  = new Object();
 IsoTreeDealer.prototype.lnk  = new Object();
 IsoTreeDealer.prototype.name = new Object();
 IsoTreeDealer.prototype.data = new Object();
 IsoTreeDealer.prototype.dst  = new Object();
 IsoTreeDealer.prototype.put  = new Function();
 IsoTreeDealer.prototype.set  = new Function();
 IsoTreeDealer.prototype.show = new Function();
 
 this.put = function(div_id, parent) {
  this.div = document.createElement('div');
  this.div.setAttribute('id',div_id);
  this.div.setAttribute('style','display: none');
  this.div.innerHTML = this.html;
  parent.appendChild(this.div);
 }

 this.set = function(params, prefix) {
  this.chk = document.getElementById('dealer_chk');
  this.chk.setAttribute('id', 'dealer_chk'+prefix+params['id']);
  this.chk.setAttribute('value', params['id']+'||'+params['source']+'||'+params['reservationid']+'||'+params['zip']+'||'+params['state']+'||'+params['city']+'||'+params['address']+'||'+params['dealername']+'||'+params['distance']+'||'+params['session_id']);

  this.lnk = document.getElementById('dealer_lnk');
  this.lnk.setAttribute('id', 'dealer_lnk'+prefix+params['id']);
  if (userAgent.isInternetExplorer)
   this.lnk.setAttribute('onclick', function(){document.getElementById('dealer_chk'+prefix+params['id']).checked=!document.getElementById('dealer_chk'+prefix+params['id']).checked;if(!document.getElementById('dealer_chk'+prefix+params['id']).checked){document.getElementById('dealer_chk_all'+prefix).checked=false};return false;});
  else
   this.lnk.setAttribute('onclick', 'javascript:document.getElementById(\'dealer_chk'+prefix+params['id']+'\').checked=!document.getElementById(\'dealer_chk'+prefix+params['id']+'\').checked;if(!document.getElementById(\'dealer_chk'+prefix+params['id']+'\').checked){document.getElementById(\'dealer_chk_all'+prefix+'\').checked=false};return false;');   

  this.name = document.getElementById('dealer_name');
  this.name.setAttribute('id', 'dealer_name'+prefix+params['id']);
  this.name.innerHTML = params['dealername'];

  this.data = document.getElementById('dealer_data');
  this.data.setAttribute('id', 'dealer_data'+prefix+params['id']);
  this.data.innerHTML = params['address']+', '+params['city']+', '+params['state']+' '+params['zip'];
  
  this.dst = document.getElementById('dealer_dst');
  if (this.dst != null) this.dst.innerHTML = params['distance'];
 }

 this.show = function() {
  this.div.style.display = "";
 }
};

function onZipKeyUp(objZip, objTrim, make, trim_id, objBtn, container, list, show_alert) {
 if (objZip.value.length == 5) {
  if (objZip.value != oldZip || objTrim.value != oldTrim) {
   list.innerHTML = "";
   container.style.display = "none";
   var objApology = document.getElementById('dealer_apology');
   if (objApology != null) objApology.style.display = "none";
   flgRequest = 1;
   if (show_alert != 0) var show_alert = 1;
   n_tries = 2;
   get_dealers(objZip, objTrim, make, trim_id, objBtn, container, list, show_alert);
   oldZip = objZip.value;
   oldTrim = objTrim.value;
  }
 } else {
//  list.innerHTML = "";
//  container.style.display = "none";
  flgRequest = 0;
 }
}

function onZipKeyUp_add(objZip, make, trim_id, objBtn, container, list, show_alert) {
 if (objZip.value.length == 5) {
  if (objZip.value != oldZip_add) {
   flgRequest_add = 1;
   if (show_alert != 0) var show_alert = 1;
   n_tries = 2;
   get_dealers(objZip, null, make, trim_id, objBtn, container, list, show_alert);
   oldZip_add = objZip.value;
  }
 } else {
  flgRequest_add = 0;
 }
}

function onZipBlur(objZip, objTrim, make, trim_id, objBtn, container, list, show_alert) {
 if (flgRequest == 0) onZipKeyUp(objZip, objTrim, make, trim_id, objBtn, container, list, show_alert);
}

function onZipBlur_add(objZip, make, trim_id, objBtn, container, list, show_alert) {
 if (flgRequest_add == 0) onZipKeyUp_add(objZip, make, trim_id, objBtn, container, list, show_alert);
}

function onTrimChange(objZip, objTrim, make, trim_id, objBtn, container, list, show_alert) {
 if (objZip.value.length == 5) {
  if (objZip.value != oldZip || objTrim.value != oldTrim) {
   if (show_alert != 0) var show_alert = 1;
   n_tries = 2;
   get_dealers(objZip, objTrim, make, trim_id, objBtn, container, list, show_alert);
   oldTrim = objTrim.value;
  }
 } else {
  list.innerHTML = "";
  container.style.display = "none";
 }
}

function get_dealers(objZip, objTrim, make, trim_id, objBtn, container, list, show_alert) {
 document.getElementById('divAnotherBuyer').innerHTML = "";
 if (n_tries == 2) btnvalue = objBtn.value;
 callServer('POST', '/Components/get_dealers.html', "zip=" + escape(objZip.value) + "&trim_id=" + escape(trim_id) + "&partner_id=bad001", null, onDealersResponse, null, {zip: objZip, btn: objBtn, trim: objTrim, trim_id: trim_id, make: make, btnvalue: btnvalue, container: container, list: list, show_alert: show_alert});
 n_tries--;
 objBtn.value = "Please wait";
 objBtn.disabled = true;
 objZip.disabled = true;
 if (objTrim != null) objTrim.disabled = true;
}

function onDealersResponse(element, responseText, responseXML, statusCode, statusText, params) {
  if (statusCode==200 || statusCode==201) {
    if (/invalid zip/.test(responseText)) {
     if (params['show_alert'] == 1) alert("Please Enter Valid Zipcode");
     params['zip'].disabled = false;
     params['zip'].value = oldZip = oldZip_add = "";
     if (params['trim']!= null) params['trim'].disabled = false;
     oldTrim = "";
     params['zip'].focus();
    } else {
     eval(responseText);
     params['list'].innerHTML = "";
     if (arrDealers['accepted'] == '1') {
      document.getElementById('divAnotherBuyer').innerHTML = arrDealers['anotherbuyer'];
      
      var prefix = params['container'].id;
      if (document.getElementById('dealer_chk_all') != null) prefix = "";
      
      for (var i=1; i<=6; i++) {
       if (typeof(arrDealers[i]) == "undefined") {
        if (i == 1 && n_tries > 0) {
         get_dealers(params['zip'], params['trim'], params['make'], params['trim_id'], params['btn'], params['container'], params['list'], params['show_alert']);
         return;
        } else {
         break;
        }
       }
       var dealer = new IsoTreeDealerClass();
       dealer.put("dealer"+prefix+i, params['list']);
       dealer.set(arrDealers[i], prefix);
       dealer.show();
      }

      if (arrDealers['count'] > 6) arrDealers['count'] = 6;
    
      var objCount = document.getElementById('dealer_count');
      if (objCount != null) objCount.innerHTML = arrDealers['count'];
    
      if (arrDealers['count'] > 0) {
       params['container'].style.display = "";
      } else {
       var objApology = document.getElementById('dealer_apology');
       if (objApology != null) objApology.style.display = "";
      }
     } else {
      if (n_tries > 0) {
       get_dealers(params['zip'], params['trim'], params['make'], params['trim_id'], params['btn'], params['container'], params['list'], params['show_alert']);
       return;
      } else {
       params['container'].style.display = "none";
       var objApology = document.getElementById('dealer_apology');
       if (objApology != null) objApology.style.display = "";
      }
     }
     params['zip'].disabled = false;
     if (params['trim']!= null) params['trim'].disabled = false;
    }
     params['btn'].disabled = false;
     params['btn'].value = params['btnvalue'];
  }
    else {
         }
}

function checkIfGMDealersSelected(name, msg, frm, msg1) {
  var is_arr_exists = false;
  var count = 0;
  msg += "\nIf you would like to select all dealers, please click continue.\nOtherwise click cancel and select specific dealers from the list.";
  if (msg1 == null || msg1.length == 0) msg1 = "Please select up to 4 dealers only.";

  if (frm == null) {
   var arrChks = document.getElementsByName(name);
   for (var i = 0; i < arrChks.length; i++) {
    is_arr_exists = true;
    if (arrChks[i].checked == true) {
      count++;
    }
   }
  } else {
   for (var i = 0; i < frm.elements.length; i++) {
    var el = frm.elements[i];
    if (el.name == name) {
     is_arr_exists = true;
     if (el.checked == true) {
      count++;
     }
    } 
   }    
  }

  if (is_arr_exists == true) {
   if (count > 0 && count <= 4) {
    return true;
   } else if (count > 4) {
    alert(msg1);
    return false;
   } else {
    if (confirm(msg)) {
     changeAllDealersStatus(name, true, frm);
     return true;
    } else {
     return false;
    }
   }
  } else return true;
}

function changeAllDealersStatus(name, status, frm) {
 var j = 0;
 if (frm == null) {
  var arrDealers = document.getElementsByName(name);
  for (var i=0; i < arrDealers.length; i++) {
   if (j < 4) j++; else break;
   arrDealers[i].checked = status;
  }
 } else {
  for (var i = 0; i < frm.elements.length; i++) {
   var el = frm.elements[i];
   if (el.name == name) {
    if (j < 4) j++; else break;
    el.checked = status;
   }
  }
 }
}




