var event_city;
var event_place;
var event_cat;
var event_sub_cat_id;
var event_sub_cat_tr_id;
var event_sub_cat_td;
var subcaterory_list_container="subcaterory_list_container";
var subcaterory_list_item="subcaterory_list_item";
var formid="est_search_form";

function EstEventSetDefaults(eec,ec,ep,esc){
 event_city_name='_ufh['+eec+']';
 event_place_name='_ufh['+ep+']';
 event_cat_name='_ufh['+ec+']';
 event_sub_cat_name='_ufh['+esc+']';
                                     
 event_city_id='_ufh_'+eec;
 event_place_id='_ufh_'+ep;
 event_cat_id='_ufh_'+ec;
 event_sub_cat_id='_ufh_'+esc;
 $("#"+event_sub_cat_id).parent("td").parent("tr").parent("tbody").parent("table").parent("form").attr("id",formid);
 event_sub_cat_tr_id=$("#"+event_sub_cat_id).parent("td").parent("tr").attr("id");
 event_sub_cat_td=$("#"+event_sub_cat_id).parent("td");
 $("#"+event_sub_cat_tr_id).hide();
}

function EstEventFormInit(city,category,place,subcategory){
  //addResetButton();
  $("#"+event_city_id).change(function(){
      event_city= $(this).val();
      EstFormChangeCity(event_city);
  }); 
  
  $("#"+event_cat_id).change(function(){
      event_cat=$(this).val();
      EstFormChangeCategory(event_cat);
  }); 

 /* $("#"+event_place_id).change(function(){
      EstFormChangePlace($(this).val());
  });  */ 

  if (city) {
    $("#"+event_city_id+" option[value='"+city+"']").attr("selected", true);
        event_city=city;
    EstFormChangeCity(city);
  }
  if (category) {
    $("#"+event_cat_id+" option[value='"+category+"']").attr("selected", true); 
        event_cat=category;
    EstFormChangeCategory(category);
  }
  if (place) $("#"+event_place_id+" option[value='"+place+"']").attr("selected", true);
  if (category) set_subcategory_elements(category);                
}

function set_subcategory_elements(catid){
   var html="";
   var show=false;
   event_sub_cat_td.append("<div id='"+subcaterory_list_container+"'></div>");
   
   if(catid && estJson.category[catid]["sub_cat"]){
        for (var i in estJson.category[catid]["sub_cat"]) {
              if (array_key_exists(estJson.category[catid]["sub_cat"][i],estJson.category)){  
                html+="<a href='#' class='"+subcaterory_list_item+"' onclick='subcat_onclick("+estJson.category[catid]["sub_cat"][i]+");return false;'>"+estJson.category[estJson.category[catid]["sub_cat"][i]]['catname']+"</a> | ";
                show=true;
              } 
         }
   }
   $("#"+subcaterory_list_container).html(html);
   if (show) $("#"+event_sub_cat_tr_id).show();
   else $("#"+event_sub_cat_tr_id).hide();
}

function subcat_onclick($value){
  $("#"+event_sub_cat_id).attr("value",$value);
  //alert($("#"+event_sub_cat_id).attr("value"));
  $("#"+formid).submit();
  return false;
}

function EstFormChangeCity(cityid){  
  if (cityid && cityid>0) {
       var $cat=new Array();
       var j=0;
       for (var i=0;i<estJson.city[cityid]["category"].length;i++) {
            var parent=estJson.category[estJson.city[cityid]["category"][i]]["parent_cat"];
            var maincat=new Array();
            maincat=estJson.main_categories;
            if (parent && my_in_array(parent,maincat)){  
               $cat[j]=estJson.city[cityid]["category"][i];
               j++;
            } 
       }
       var $places=estJson.city[cityid]["places"];
  }
  /*else if(event_cat){
       var $cat=new Array();
       var j=0;
       for (var i in estJson.category) {
            var parent=estJson.category[i]["parent_cat"];
            var maincat=new Array();
            maincat=estJson.main_categories;
            if (parent && my_in_array(parent,maincat)){  
               $cat[j]=i;
               j++;
            } 
       }
         var $places= new Array();
         var j=0;
         for (var i=0;i<estJson.category[event_cat]["places"].length;i++){
             $places[j]=estJson.category[event_cat]["places"][i];
             j++;
         }
         if(estJson.category[event_cat]["sub_cat"]){
              for (var i in estJson.category[event_cat]["sub_cat"]) {
                    if (my_in_array(i,estJson.category)){  
                         for (var p=0;p<estJson.category[i]["places"].length;p++){
                             $places[j]=estJson.category[i]["places"][p];
                             j++;
                         }
                    } 
               }
         } 
         alert($places);
  
  } */
  else{
       var $cat=new Array();
       var j=0;
       for (var i in estJson.category) {
            var parent=estJson.category[i]["parent_cat"];
            var maincat=new Array();
            maincat=estJson.main_categories;
            if (parent && my_in_array(parent,maincat)){  
               $cat[j]=i;
               j++;
            } 
       }
       var $places= new Array();
         var j=0;
         for (var i in estJson.places) {
           $places[j]=i;
           j++;
         }

  }
  setCategoryOptions($cat);
  setPlaceOptions($places);
}

function EstFormChangeCategory(catid){
  var $places=new Array();
  var j=0;

  if (event_city && !catid){
       for (var i=0;i<estJson.city[event_city]["places"].length;i++){
           $places[j]=estJson.city[event_city]["places"][i];
           j++;
       } 
  }else if(event_city && catid){       
         var p= new Array();
         for (var i=0;i<estJson.category[catid]["places"].length;i++){
             p[j]=estJson.category[catid]["places"][i];
             j++;
         }
         if(estJson.category[catid]["sub_cat"]){
              for (var i in estJson.category[event_cat]["sub_cat"]) {
                    if (my_in_array(i,estJson.category)){  
                         for (var sp=0;p<estJson.category[i]["places"].length;sp++){
                             p[j]=estJson.category[i]["places"][sp];
                             j++;
                         }
                    } 
               }
         }
        j=0;   
        for (var i=0;i<p.length;i++){
               if (my_in_array(p[i],estJson.city[event_city]["places"])){
                $places[j]=p[i];             
                j++;
               } 
         } 
  }else if(!event_city && catid){
         var $places= new Array();
         for (var i=0;i<estJson.category[catid]["places"].length;i++){
             $places[j]=estJson.category[catid]["places"][i];
             j++;
         }
         if(estJson.category[catid]["sub_cat"]){
              for (var i in estJson.category[event_cat]["sub_cat"]) {
                    if (my_in_array(i,estJson.category)){  
                         for (var sp=0;p<estJson.category[i]["places"].length;sp++){
                             $places[j]=estJson.category[i]["places"][sp];
                             j++;
                         }
                    } 
               }
         }
  }else{
       for (var i in estJson.places) {
         $places[j]=i;
         j++;
       }  
  }
  setPlaceOptions($places);
  set_subcategory_elements(catid);
}

function EstFormChangePlace(placeid){
  /*var $cityid=$("#"+event_city_id+" option:selected").val();
  if (!$cityid){   
    $cityid=estJson.places[placeid]["cityid"];
        //alert($cityid);    
    $("#"+event_city_id+" option[value='"+$cityid+"']").attr("selected", true);
    EstFormChangeCity($cityid);
    $("#"+event_place_id+" option[value='"+placeid+"']").attr("selected", true);
  } */
}

function setCategoryOptions($obj){
  set_subcategory_elements(false);
  var sobject=new Array();
  var j=1;
  sobject[0]=new Array();
  sobject[0]["val"]="";
  sobject[0]["text"]="";
  
  for (var i=0;i<$obj.length;i++){  
       sobject[j]=new Array();
       sobject[j]["val"]=$obj[i];
       sobject[j]["text"]=estJson.category[$obj[i]]['catname'];
       j++;
  }  
  removeSelectOptions(event_cat_id,0); 
  addSelectOption(event_cat_id,sobject,"val","text");
}

function setCityOptions($obj){
}

function setPlaceOptions($obj){
  var sobject=new Array();

  sobject[0]=new Array();
  sobject[0]["val"]="";
  sobject[0]["text"]="";

  var j=1;
  for (var i in $obj) {  
     sobject[j]=new Array();
     sobject[j]["val"]=estJson.places[$obj[i]]["id"];
     sobject[j]["text"]=j+". "+estJson.places[$obj[i]]["name"];
     j++;
  }
  removeSelectOptions(event_place_id,0); 
  addSelectOption(event_place_id,sobject,"val","text");
}



function removeSelectOptions(objid,from,to){
  //alert (objid);
  var select=document.getElementById(objid);
  var options = select.getElementsByTagName('option');
  var num=options.length-1;
  if (to && to<=num) num=to;

  var i=0;
        for(i=num;i>=from;i--){
            options[i].parentNode.removeChild(options[i]);
        }
}

function addSelectOption(objid,myObject,valueindex,textnodeindex){
        var select=document.getElementById(objid);
        for (i=0;i<myObject.length;i++){
            myEle = document.createElement("option") ;
            myEle.setAttribute("value",myObject[i][valueindex]);
            var txt = document.createTextNode(myObject[i][textnodeindex]);
            myEle.appendChild(txt)
            select.appendChild(myEle)
        } 

}

function colorboxGallery(separator,object){
  if (object==null) object="";
  //$("a[rel='"+separator+"']").colorbox(object);
  $("a[rel='"+separator+"']").lightBox({
  	imageLoading: object+'/images/lightbox-ico-loading.gif',
  	imageBtnClose: object+'/images/lightbox-btn-close.gif',
  	imageBtnPrev: object+'/images/lightbox-btn-prev.gif',
  	imageBtnNext: object+'/images/lightbox-btn-next.gif'
  });   


 /* $(".est_img_container a").lightBox({
  	imageLoading: object+'/images/lightbox-ico-loading.gif',
  	imageBtnClose: object+'/images/lightbox-btn-close.gif',
  	imageBtnPrev: object+'/images/lightbox-btn-prev.gif',
  	imageBtnNext: object+'/images/lightbox-btn-next.gif',
  });*/    
  

}


function dump(obj) {
    var out = '';
    for (var i in obj) {
        out += i + ": " + obj[i] + "\n";
    }

    alert(out);
}

function my_in_array(key,obj) {
    var ret = 0;
     for (var i=0;i<obj.length;i++){
        if (key==obj[i])  return 1;
     }
    return ret;
}

function array_key_exists(key,obj) {
     var ret = 0;
     for (var i in obj) {
        if (key==i) return 1;
     }
    return ret;
}

function addResetButton(){
  $("#est_search_form table.button tr").append('<div align="center" class="button b">'+
      		'<div class="left">&nbsp;</div>'+
      		'<input type="reset" value="Reset" id="est_searc_reset">'+
      		'<div class="right">&nbsp;</div>'+
      	'</div>');
   $("#est_searc_reset").click(function(){
    EstFormChangeCity('');
   });   	
  
}
