         
function bindDefaultText($obj, strDefaultValue) {
        if ($obj.val() == ""){
            $obj.css({color:'#C0C0C0'}).val(strDefaultValue);
        }
        $obj.data("defaultText", strDefaultValue).focus(function() {
            if ($(this).val() == $(this).data("defaultText"))
                $(this).css({color:'#222'}).val("");
        }).blur(function() {
            if ($(this).val() == "")
                $(this).css({color:'#CCC'}).val($(this).data("defaultText"));
        });
}
function countryLoad(){   
    var co = $('#content');
    var fo = $('form.shipCalulate');
    var sbt = $('span.selectbt',fo);
    var cl = $('div.selectlist',fo);
    var defaultKeyText = '输入关键字(点Go或回车)';
    var cko = cl.find(':text[name=countrykey]');
    var tindex = -1;
    var prevCountry = {};
    prevCountry.name = getCookie('countryName');
    prevCountry.val = getCookie('countryVal');

    cl.width(co.width() - 20);
    var defaultCountryObj = cl.find('li').css({lineHeight:'1.2em'}).eq(0).children(':first'); 

    fo.each(function(i){
        if(this.country.value == ''){
           if (prevCountry.name)
            {
                this.country.value = prevCountry.val.replace(/\++/g, ' ');
                sbt.get(i).innerHTML = prevCountry.name.replace(/\++/g, ' ');
            }else{
                this.country.value = defaultCountryObj.attr('title');
                sbt.get(i).innerHTML = defaultCountryObj.text();
            }
        }
    });

    
    $(document).keyup(function(e){
        if (tindex == -1){ return false; }
        var keycode = e.keyCode;
        var realkey = String.fromCharCode(e.keyCode);
        var list = cl.get(tindex);            
        if( (keycode == 48) || (keycode == 96) ){
          $('a.selected',list).removeClass('selected');
          $(list).find('li').show();
          $("div.title:first>span.current",list).removeClass('current')
               .parent().find("span:first").addClass('current');
        }
        if( keycode>64 && keycode< 91){
           $(list).find('li').hide();               
           var curlink = $("a[title^='"+realkey+"']",list);
           curlink.parent().show();
           $(curlink[0]).addClass('selected');
           $("div.title:first>span.current",list).removeClass('current');
           $("div.title:first>span:contains('"+realkey+"')",list).not(":contains('ALL')").addClass('current');
        } 
    });
    cl.find('div.title>span').click(function(e){
        var target = $(e.target);
        var realkey = $.trim(target.text());
        var list = $(e.currentTarget).parents('div.selectlist');            
        if(realkey=='ALL') {
              $('a.selected',list).removeClass('selected');
              $(list).find('li').show();
        }else{
           $(list).find('li').hide();               
           var curlink = $("a[title^='"+realkey+"']",list);
           curlink.parent().show();
           $(curlink[0]).addClass('selected');
        }
       target.parent().find('span.current').removeClass('current');
       target.addClass('current');
       return false;
    });
    sbt.click(function(e){      
        var index = sbt.index(this);
        var bt = $(this);
        var list = $(cl.get(index));
        if(list.css('top') == '0px'){
            var listleft = bt.offset().left - co.offset().left;
            if (listleft<10){listleft = 0;}
            list.css({ 
                top: bt.outerHeight() +'px',
                left:'-' + (listleft - 10) + 'px' 
             });                
        }    
        if(list[0].style.display == 'block'){
            list.fadeOut('fast');
            tindex = -1;
        }else{
            cl.hide();
            list.fadeIn('fast');
            tindex = index;
        }
    });
    cl.find('ul').click(function(e){    
        if(e.target.title){
            var list = $(this).parents('div.selectlist');
            var index = cl.index(list[0]);
            $('a.selected',e.currentTarget).removeClass('selected');
            $(e.target).addClass('selected');
            var txt = e.target.innerText || e.target.textContent || e.target.innerHtml;
            if (txt.length>26) {  txt = txt.substr(0,26) + '...'; }
            fo.get(index).country.value = $.trim(e.target.title);               
            sbt.get(index).innerHTML = txt;
            list.fadeOut();
        }          
        return false;
    });
    
    $(':button[name="close"]',cl).click(function(){
        $(this.parentNode.parentNode).fadeOut();
        tindex = -1;
    });
    $('p>:button[value="Go"]',cl).click(function(){
           var me = $(this);
           var pre = me.prev();
           var keyword = pre.val(); 
           if ((keyword == pre.data("defaultText")) || (keyword == '')){
                pre[0].focus();
                return false;
           }
           var list = me.parents('div.selectlist');
           search(list,keyword);
    });

    bindDefaultText(cko,defaultKeyText);
    cko.keypress(function(e){
        if (e.keyCode == 13)
        {
           var me = $(e.target);
           var keyword = e.target.value;
           var list = me.parents('div.selectlist');
           search(list,keyword);
           return false;
        }
    }).keyup(function(e){
        e.target.value = e.target.value.replace(/[^\w\d\s\.\u4E00-\u9FA5]/g,'')
        e.stopPropagation();
    });

    function search(list, keyword){
            if (keyword == ''){
                return false;
            }
            if (/^[a-z]$/i.test(keyword))
            {
                list.find("div.title:first>span:gt(0):contains('"+keyword.toUpperCase()+"')").trigger('click');
                return true;
            }
           keyword = keyword.toLowerCase();
           var all = list.find('li').hide();
           var regx = new RegExp("\\s+|,");
           if (regx.test(keyword))
           {
               var keywords = keyword.split(regx);
               keywords.unshift(keyword);
               all.filter(function(index){
                    var reval = false;
                    var i;
                    for(i in keywords){
                        if( $(this).text().toLowerCase().indexOf(keywords[i]) != -1) {
                            reval=true;
                            break;                        
                        }
                    }
                    return reval;
               }).show();    
           }else{
               all.filter(function(index){
                    var reval = false;
                    if( $(this).text().toLowerCase().indexOf(keyword) != -1) {reval=true;}
                    return reval;
               }).show();       
           }
    }
}
$(document).ready(function(){
 countryLoad();
});