// jQuery region Selector plugin
var restored_path = new Array();   
(function( $ ){
  $.fn.createSelector = function(r, closebutton, finalonly) {
    this.prefix = Math.floor(Math.random()*100);
    this.r = r;
    this.parent = $(this);
    var disabled = '';
    if(finalonly) disabled = 'disabled' // Create flag for final-only selectors
     
    // Store scope
    var self = this;

    // Create Done button
    this.parent.after("<div class='selector-button'></div>");
    this.parent.next(".selector-button").append("<input type='button' class='selector-done' value='Завершить выбор' disabled />");

    this.parent.next().children(".selector-done").click( function () { $(self).trigger("done"); })

    // Set live event for click by region
    this.parent.find('input:radio').live('click',(function(){
        $(".selector-done").removeAttr('disabled');
        if(finalonly) {
            if ($(this).hasClass('final')) {
                $(".selector-done").removeAttr('disabled');
            } else {
                $('.selector-done').attr('disabled', 1)
            }
        }
          self.parent.find(".region_selector li").removeClass("selected");
          $(this).parent("li").addClass("selected");
          self.makeSelectList($(this));
        })
    );
    
    // Create root regins (Russia, Europe, etc.)
    this.makeSelectList(null);
  };

  $.fn.restorePath = function(regions,restart, e)
    {
      if (restart) { restored_path = new Array(); }

      for (var i in regions)
      {
        var t = regions[i];
        if (t.id == e)
        {
          restored_path.push(t.id);
          if (t.parent != 0)
          {
            this.restorePath(regions, false, t.parent);
            return;
          }
          else
          {
            break;
          }
        }
      }

      // Get prefix
      var total = $(this).find("ul.region_selector").length;
      var first_levels = $(this).find("ul.region_selector:first");
      var prefix = first_levels.attr("id").split("_");
      prefix = prefix[1];

      restored_path = restored_path.reverse();
    
      for (var i in restored_path)
      {
        $("#t_"+prefix+"_"+ restored_path[i]).click();
      }

      $(this).next('.selector-button').find('.selector-done').trigger('click');
  };

  $.fn.makeSelectList = function(e)
  {
    var prefix = this.prefix;
    var level  = 0;
    var parent = null;

    this.level = level;

    // For first level
    if (e==null) { level = 0; parent = null; }
    else
    {
      // if this is sublevel
      var element_id = e.attr('id').substring(3+prefix.toString().length);
      parent = e.attr('name').substring(3+prefix.toString().length);

      // Get level
      level =  parseInt(e.attr('level').substring(3+prefix.toString().length));
      level +=1;
    }

    // Remove all old sublevels
    for (var i=level; i<10; i++) $("#l_"+prefix+"_"+i).remove();

    // Create new sublevel
    var g = $("#l_"+prefix+"_"+level);
    this.parent.append("<ul class='region_selector' id='l_"+prefix+"_"+level+"'></ul>");
    
    // Add elements to sublevel
    $.each(this.r, function(i, v)
    {
      if (v.parent == element_id) {
          var final = '';
          if(v.final) final = 'final';
        $("#l_"+prefix+"_"+level).append("<li><input level='l_"+prefix+"_"+level+"' name='p_"+prefix+"_"+v.parent+"' id='t_"+prefix+"_"+v.id+"' type='radio' value='"+v.id+"' class='"+final+"'></input><label for='t_"+prefix+"_"+v.id+"'>"+v.name+"</label></li>");
        }
    });
    
    // If level is empty - remove him.
    if ($("#l_"+prefix+"_"+level+" li").length==0) $("#l_"+prefix+"_"+level+"").remove();

    // Modify container width
    var levels = this.parent.children(".region_selector").length;

    $(document).trigger("change", [levels]);

  }

})( jQuery );



function get_path(elem)
    {
      var total = elem.find(".region_selector").length;
      var first_levels = elem.find(".region_selector:first");
      var prefix = first_levels.attr("id").split("_");
      prefix = prefix[1];

     var result = [];

      for (var i=0; i<total; i++)
      {
        var container = elem.find("#l_"+prefix+"_"+i.toString());
        var val = container.find("li input[type='radio']:checked").val();
        var text = container.find("li input[type='radio']:checked").closest('li').find("label").text(); // Говнокод для совместимости с IE
        if (val!=undefined) result.push([val,text]);
      }

      var text = "";
      var ids = "";
      for (var r=0; r<result.length;r++)
      {
        text += result[r][1]+" / ";
        ids +=  result[r][0]+"/";
      }
      text = text.substring(0,text.length-2);
      ids = ids.substring(0,ids.length-1);
        if(!ids) return false;
      return [ids, text]
    } 
