jQuery.noConflict();
jQuery(function($){
  var helper = '<div class="form drop"><div class="down"><input type="text" id="field_country_helper" name="field_country_helper" class="form inactive" value="" readonly="readonly" />';
  document.country_helper = '<ul>';
  $("#field_country option").each(function(){
    document.country_helper += '<li id="'+this.value+'" title="'+$(this).text().trim()+'"><img src="'+document.base_url+'images/flags/'+this.value+'.png" alt="'+this.value+'" /> '+$(this).text().trim()+'</li>';
  });
  document.country_helper += '</ul>';
  helper += '</div></div>';
  $("#field_country").hide().after(helper);
  var cc = $("#field_country option:selected").val();
  var cn = $("#field_country option:selected").text().trim();
  $("#field_country_helper")
    .css({'background-image':'url("'+document.base_url+'images/flags/'+cc+'.png")'})
    .val(cn);
  $("#field_country_helper").one('focus', function(ev){
    this.blur();
    $(".drop .down").append(document.country_helper);
    $(".drop .down ul").bind("mousedown", function(ev){
      if (!ev) var ev = window.event;
      ev.cancelBubble = true;
      if (ev.stopPropagation) ev.stopPropagation();
      if (ev.preventDefault) ev.preventDefault();
      return false;
    });
    $(".drop .down li").hover(
      function(){ $(this).siblings().removeClass('selected'); $(this).addClass('selected'); },
      function(){ $(this).removeClass('selected'); 
    }).bind("mousedown", function(){ 
      $("#field_country_helper").css({'background-image':'url("'+document.base_url+'images/flags/'+this.id+'.png")'})
        .val($(this).text().trim()); 
      $("#field_country option[value="+this.id+"]").attr('selected', 'selected');
      if ('us'==this.id) {
        $("#field_city").hide();
        $("#and-city").hide();
      } else {
        $("#field_city").show();
        $("#and-city").show();
      }
      $(this).parent().hide();
    });
  }).bind('focus', function(e){
    this.blur();
    var cc = $("#field_country option:selected").val();
    var cn = $("#field_country option:selected").text().trim();
    $(this).siblings("ul").show();
    $(".drop .down ul").scrollTo("#"+cc);
    $("#"+cc).addClass('selected');
    $(document).bind("keypress", function(ev){
      k = ev.keyCode ? ev.keyCode : ev.which;
      
      // letter
      if ((k >= 65 && k <= 90) || (k >= 97 && k <= 122)) {
        var $c = $(".selected");
        if($c.length) {
          var $next = $c.removeClass('selected').nextAll("li[title^="+String.fromCharCode(k).toUpperCase()+"]").eq(0);
          if($next.length) {
            $(".drop .down ul").scrollTo($next);
            $next.addClass('selected');  
          } else {
            $next = $c.siblings("li[title^="+String.fromCharCode(k).toUpperCase()+"]").eq(0);
            $(".drop .down ul").scrollTo($next);
            $next.addClass('selected');  
          }
        }
      } 
      
      // tab
      if (9 == k) {
        var $selected = $(".selected").eq(0);
        if($selected.length) {
          $("#field_country_helper").css({'background-image':'url("'+document.base_url+'images/flags/'+$selected.attr('id')+'.png")'})
            .val($selected.text().trim()); 
          $("#field_country option[value="+$selected.attr('id')+"]").attr('selected', 'selected');
          if ('us'==$selected.attr('id')) {
            $("#field_city").hide();
            $("#and-city").hide();
          } else {
            $("#field_city").show();
            $("#and-city").show();
          }
          $selected.parent().hide();
        }
        $(document).unbind("keypress");
        $("#field_zip").focus();
        if (ev.preventDefault) ev.preventDefault();
        if (ev.stopImmediatePropagation) ev.stopImmediatePropagation();
        if (ev.stopPropagation) ev.stopPropagation();
        ev.cancelBubble = true;
      }
      
      // enter
      if (13 == k) {
        var $selected = $(".selected").eq(0);
        if($selected.length) {
          $("#field_country_helper").css({'background-image':'url("'+document.base_url+'images/flags/'+$selected.attr('id')+'.png")'})
            .val($selected.text().trim()); 
          $("#field_country option[value="+$selected.attr('id')+"]").attr('selected', 'selected');
          if ('us'==$selected.attr('id')) {
            $("#field_city").hide();
            $("#and-city").hide();
          } else {
            $("#field_city").show();
            $("#and-city").show();
          }
          $selected.parent().hide();
          $(document).unbind("keypress");
        }
      } 
    });
    if (!e) var e = window.event;
    if (e.preventDefault) e.preventDefault();
    if (e.stopImmediatePropagation) e.stopImmediatePropagation();
    if (e.stopPropagation) e.stopPropagation();
    e.cancelBubble = true;
    $("body").one("click", function(){
      $(".drop .down ul").hide();
      $(document).unbind("keypress");
    });
  }).bind("click", function(e){
    if (!e) var e = window.event;
    if (e.preventDefault) e.preventDefault();
    if (e.stopImmediatePropagation) e.stopImmediatePropagation();
    if (e.stopPropagation) e.stopPropagation();
    e.cancelBubble = true;
  });
});
