﻿AjaxDropDown=function(dropDownId, ajaxFunction){
    var self = this;
    
    this.masters = [];
    this.childs = [];
    this.additionalLookupValue=[];
    this.additionalUpdate = "";
    this.useDefault = true;
    
    this.captionField = "Value";
    this.valueField = "Key";
    
    this.dropDownId=dropDownId;
    this.persistentId="__"+dropDownId;
    this.ajaxFunction=ajaxFunction;
    //this.ajaxParams=ajaxParams;
    
    this.ddl=null;
    this.persist=null;
    
    this.defaultValue=null;
    
    this.init=function(){
      self.init(null);
    } 
    
    this.init=function(defaultValue){
      self.ddl=document.getElementById(self.dropDownId); //Dropdown list control
      if (self.ddl){
        self.ddl.onchange=self.notify;    
        self.persist=self.getPersistentControl();         //Persistent - input type hidden
        if ((defaultValue) && (self.persist.value==""))
          self.persist.value=defaultValue;
      }  
    }  
    
    this.setAdditionalUpdate=function(func){
      self.additionalUpdate=func;
    }
    
    this.addAdditionalLookupValue = function (value){
      self.additionalLookupValue[self.additionalLookupValue.length]=value;
    }

    
    this.setFields=function(caption,value){
      self.captionField=caption;
      self.valueField=value;
    }
    
    this.addMaster = function (obj){
      self.masters[self.masters.length]=obj;
      obj.childs[obj.childs.length]=self;
    }
    
    this.getPersistentControl=function(){
      control = document.getElementById(self.persistentId);
      if (control==null){
        control = document.createElement("input");
		control.id = self.persistentId;
		control.name = self.persistentId;
		control.type = "hidden";
		self.ddl.form.appendChild(control);
      }
      return control;
    }
    
    this.disable=function(){
      if (self.ddl)
        self.ddl.disabled=true;
    }
    
    this.enable=function(){
      if (self.ddl)
        self.ddl.disabled=false;
    }
    
    this.setDefault=function(caption,value){
      self.defaultValue=new Option(caption, value);
    }
    
    this.setDefaultValue=function(){
      if ((self.defaultValue) && (self.ddl))
        self.ddl.options[self.ddl.options.length] = self.defaultValue;
    }
    
    this.clear=function(){
      if (self.ddl){
        self.ddl.options.length=0;
      }  
    }
    
    this.value=function(){
      var value = -1;
      if ((self.ddl) && (self.ddl.selectedIndex>-1))
        value=self.ddl.options[self.ddl.selectedIndex].value;
      return value;
    }
    
    this.notify=function(){
      self.persist.value=self.value();
      for (var i=0; i<self.childs.length; i++)
        self.childs[i].load();
      if (self.additionalUpdate!=""){  
        eval(self.additionalUpdate);
      }
    }
    
    this.load=function(){
      if (self.ddl){
        self.clear();
        if (self.useDefault) self.setDefaultValue();
      
        var s=self.ajaxFunction+"(";
        for (var i=0;i<self.masters.length;i++){
          s+="'"+self.masters[i].value()+"'";
          if (i<self.masters.length-1) s+=",";
        }
      
        if (self.additionalLookupValue.length>0)
          s+=",";
      
        for (var i=0;i<self.additionalLookupValue.length;i++){
          s+="'"+self.additionalLookupValue[i]+"'";
          if (i<self.additionalLookupValue.length-1) s+=",";
        }
      
        s+=")";

        list=eval(s);
      
        if (list == null || typeof(list) != "object"){
          return;
        }
      
        list=list.value;

        if (list){
          for (var i=0; i < list.length; i++){
            self.ddl.options[self.ddl.options.length] = 
              new Option(eval("list[i]."+self.captionField), eval("list[i]."+self.valueField));
          }
        
          if ((list.length==0) && (self.ddl.options.length==0))
            self.setDefaultValue();
          
          self.preset();
        }else{
          if (self.ddl.options.length==0)
            self.setDefaultValue();  
        }
      }  
    }
    
    this.preset=function(){
      var found=false;
      var i=0;
      for (var i = 0; i < self.ddl.options.length; i++) {
	    if (self.ddl.options[i].value==self.persist.value) {
		  found=true; 
		  break;
		}
	  }
	  if (found) { 
	    self.ddl.selectedIndex = i; 
	    self.notify();
	  }
    }
}

function refreshItemsCount(){
  var parentCategoryId = ddlCategory.value();
  var categoryId = ddlSubCategory.value();
  var details1 = ddlDetails1.value();
  var details2 = ddlDetails2.value();
  var details3 = ddlDetails3.value();
/*
  var country = ddlCountry.value();
  var province = ddlProvince.value();
  var city = ddlCity.value();
  var radius = ddlRadius.value();
*/

  var country = Tradepoint.Web.AjaxRoutines.GetPartnerCountry().value;
  var province = "";
  var city = "";
  var radius = -1;

  var userLocationCookie = getCookie('UserLocation');
  if (userLocationCookie != null) {
    var userLocation  = qs(userLocationCookie);
    province = userLocation["pid"];
    city = userLocation["city"];
    if (userLocation["DistanceByZip"]!="") radius = userLocation["DistanceByZip"];
  }
    
  var userType = -1;
  if (ddlUser)
    userType=ddlUser.options[ddlUser.selectedIndex].value;
  
  categoryId = (categoryId==-1)?parentCategoryId:categoryId;
  
  var itemsCount=Tradepoint.Web.AjaxRoutines.GetItemsCountByParams(categoryId, details1,
                                                    details2, details3, country, province,
                                                    city,360,userType, radius).value;

//  var itemsCount=Tradepoint.Web.AjaxRoutines.Test().value;

  try{
  var s="";
  var lblFoundItems = document.getElementById("lblFoundItems");
  if (itemsCount>0  && ddlCategory.value()>0){
    s=itemsCount+" items found";
    lblFoundItems.innerText = s;
  }else{
    if (ddlCategory.value()>0) {s="No items found";}
    lblFoundItems.innerText = s;
  }
  }catch(e){}
}

function getCookie(name) {
  var dc = document.cookie;
  var prefix = name + "=";
  var begin = dc.indexOf("; " + prefix);
  if (begin == -1) {
    begin = dc.indexOf(prefix);
    if (begin != 0) return null;
  } else
    begin += 2;
  var end = document.cookie.indexOf(";", begin);
  if (end == -1)
    end = dc.length;
  return unescape(dc.substring(begin + prefix.length, end));
}

function qs(query) {
    var parms = query.split('&');
    var resultArray = new Array();
    for (var i=0; i<parms.length; i++) {
        var pos = parms[i].indexOf('=');
        if (pos > 0) {
            var key = parms[i].substring(0,pos);
            var val = parms[i].substring(pos+1);
            resultArray[key] = val;
        }
    }
    return resultArray;
} 