﻿
//JOSN转换String
function toJosn($setting){

    var $josn = '{';
        
    for(var key in $setting){
        if($setting[key].toString().indexOf('function')>-1)
            $josn += '';
        else{
            if(typeof $setting[key] == 'string'){
                $josn += key + ':\'' + $setting[key].toString() + '\',';
                
            }else{
                $josn += key + ':' + $setting[key] + ',';
            }
        }
    }
    
    $josn = $josn.substring(0,$josn.length-1); 
    
    $josn += '}';
    
    return $josn;
}

function createFrame(){
    
    var $setting = arguments[0];
    
    var json = toJosn($setting);
    
    //附默认值
    if($setting.def && $setting.def != ''){
        
        //加载选中的值
        var $loadHtml = '';
        
        if($setting.def.indexOf(',') == -1)
            
            $loadHtml = selected_content($setting.def,$setting.deft,json)
        else{
            
            var arrVal  = $setting.def.split(',');
            var arrText = $setting.deft.split(',');
            
            for(var i=0;i<arrVal.length;i++){
                if( arrVal[i] != ''){
                    $loadHtml += selected_content(arrVal[i],arrText[i],json)
                }
            }
        }
        
        $('#'+$setting.parent).html($t);
    }
    
    //是否已创建此DIV
    if($('#'+$setting.id).length>0){
        $('#'+$setting.id).show();
    }else{
    
        var $html1 = '';
        
        $html1+='<div class="pannel_box" id="'+$setting.id+'" style="width:690px;">';
        $html1+='<iframe style="position: absolute; z-index: -1; width:690px; top: 0;left: 0; overflow:hidden" frameborder="0" src="about:blank"></iframe>';
        $html1+='   <div class="p_title">';
        $html1+='       <div class="p_t_left"></div>';
        $html1+='       <div class="p_t_center">请选择内容(最多' + $setting.size + '项)</div>';
        $html1+='       <div class="p_t_right"></div>';
        $html1+='       <a href="javascript:closeFrame(\''+$setting.id+'\')"></a>';
        $html1+='   </div>';
        
        $html1+='   <div class="p_c_content">';
        $html1+='           <div class="p_c_selected" style="height:0px;overflow:hidden">';
        $html1+='               <div class="p_c_quick"><b>已选择内容：</b></div>';
        $html1+='               <div class="p_selected"></div>';
        $html1+='               <div class="clear"></div>';
        $html1+='           </div>';
                
        $html1+='           <div class="p_c_html">';
        
        if(!$setting.city){
        
            $html1+='               <div class="p_c_left"><b>一级分类</b>';
            
            //绑定职位
            if(!$setting.city){
                for(var i=0; i<indtypeTop.length; i++)
                    $html1 += '<a href="javascript:void(0)" onclick="$(this).rowClick('+json+');" title="'+indtypeTop[i][1]+'"><span>' + indtypeTop[i][0] + '</span></a>';
            }else{
            
                for(var key in Provis){
                    //读取 省份
                    if(key != '10001011')
                        $html1 += '<a href="javascript:void(0)" onclick="$(this).rowClick('+json+');" title="'+key+'"><span>' + Provis[key][0][1] + '</span></a>';
                        
                }
                
            }
            
            $html1+='               </div>';
            $html1+='               <div class="p_c_left"><b>二级分类</b></div>';
            $html1+='               <div class="p_c_left"><b>三级分类</b></div>';
            $html1+='               <div class="p_clear"></div>';
        }else{
            $html1+='               <div class="p_city_c">温州地区</div>';
            $html1+='               <div id="div1" class="p_city">';
            
            for(var i=0 ;i < Provis["10001011"].length;i++)
                $html1+='<a href="#" id="a' + Provis["10001011"][i][0] + '" onclick="after(this,' + json + ')"><input type="checkbox" value="' + Provis["10001011"][i][0] + '" /><label>' + Provis["10001011"][i][1] + '</label></a>';
            
            $html1+='               </div>';
            $html1+='               <div class="p_city_c">其他地区</div>';
            $html1+='               <div id="div2" class="p_city1">';
            
            var c_count = 0;
            
            for(var key in Provis){
        
                if(c_count % 6==0)
                     $html1 += '<div class="p_city_row">';
                
                if(key != '10001011')
                     $html1 += '<a href="#" id="a' + key + '" onclick="after(this,' + json + ')"><input type="checkbox" value="' + key + '" /><label>' + Provis[key][0][1] + '</label></a>';
                
                c_count++;
                
                if(c_count%6==0)
                
                     $html1 += '</div>';
                    
            }
            
            $html1+='           </div>';
        }
        
        $html1+='           </div>';
        
        $html1+='           <div>';
        $html1+='               <input type="button" class="click" value="确定" />';
        $html1+='           </div>';
        
       
        $html1+='   </div>';
        $html1+='</div>';

        $('body').append($html1);
        
        $('#'+$setting.id).hide();
    }
    
    if($setting.city){
        $('#' + json.id).find('.p_selected').find('div').each(function(){
            $('#' + json.id).find('#a' + $(this).find('input').val()).find('input').attr('checked',true);
        })
    }
        
    $('#'+$setting.id).find('iframe').height($('#'+$setting.id).height());
    
    //窗体定位
    $( '#'+$setting.id ).css({
        left:($setting.left?$setting.left:($(window).width()-$('#'+$setting.id).width())/2),
        top:($setting.top?$setting.top:($(window).height()-$('#'+$setting.id).height())/2+$(document).scrollTop())
    });
    
    //点击确定按钮执行的事件
    $('#'+$setting.id).find('.click').click($setting.OK_btn);
    
    //展示此窗体时，执行的事件
    $('#'+$setting.elm).click($setting.open);
}



function closeFrame(){
    $('#'+arguments[0]).hide();
}

function selected_class(val,text,id){
    
    var $html = '';
    var arrVal  = val.split(',');
    var arrText = text.split('+');
    
    for(var i = 0 ; i < arrVal.length ; i++){
        
        $html += '<div class="selected_div" id="panel_selected' + arrVal[i] + '" >';
        $html += '<span>' + arrText[i] + '</span>';
        $html += '<input type="hidden" value="' + arrVal[i] + '" />';
        $html += '<a href="javascript:void(0)" onclick="remove_class(this,\'' + id + '\')"></a>';
        $html += '</div>';
    }
    
    if(arguments.length == 4)
        $('#' + id).find('.p_selected').append($html);
    else
        $('#' + id).find('.p_selected').html($html);
}

$.fn.inputClick = function(j){
    

}

function remove_class(obj ,id ){
    
    var val = $(obj).parent().find('input').val();
    
    //移除当前被选中的DIV
    $('#' + id).find('.p_selected').find('div').remove('#panel_selected'+val);
    
    //取消被移除的类别的复选框
    $('#' + id).find('#a' + val).find('input').attr('checked',false);
    
    if(Provis[val]){
            for(var i=1; i<Provis[val].length;i++){
                if($('#' + id).find('#a' + Provis[val][i][0]).find('input').attr('checked')){
                    $('#' + id).find('#a' + Provis[val][i][0]).find('input').attr('checked',false);
                    $('#' + id).find('#a' + Provis[val][i][0]).find('input').attr('disabled',false);
                }
            }
        }
    
    if($('#' + id).find('.p_selected').find('div').length == 0)
        $('#' + id).find('.p_c_selected').animate({ height: '0px'}, { duration: "slow" });
        
}

    function after(obj,j){
        var josn = j; 
        
        var cbo_selected = $(obj).find('input').attr('checked');
        
        //当前选中的类别的值
        var val = $(obj).find('input').val();
        
        var text = $(obj).find('label').html();
        
        if(val.length < 7){
        
            //移除大类选中的样式
            $('#' + josn.id).find('a').removeClass('p_city_selected');
            
            //隐藏当前二级类显示的DIV
            $('#' + josn.id).find('.p_city_row1').hide();
            
            //在大类下创建二级类别容器
            var htmls = '<div class="p_city_row1">';
            
            htmls += '</div>';
            
            
                if($(obj).parent().next('.p_city_row1').length == 0)
                    $(obj).parent().after(htmls);
                else{
                    $(obj).parent().next('.p_city_row1').show();
                }
                
                if(Provis[val].length < 2)
                    $(obj).parent().next('.p_city_row1').hide();
            
            htmls = ''; 
            
            if(Provis[val]){
                for(var i = 1; i < Provis[val].length ;i++){
                    htmls += '<a href="#" id="a' + Provis[val][i][0] + '" onclick="after(this,' +toJosn(josn) + ')"><input type="checkbox" value="' + Provis[val][i][0] + '" id="cbo' + Provis[val][i][0] + '" /><label for="cbo' + Provis[val][i][0] + '">' + Provis[val][i][1] + '</label></a> ';
                }
                
                htmls += '<div style="clear:both; font-size:1px; height:0px;"></div>';
                
                $(obj).parent().next('.p_city_row1').html(htmls);
            }
        }
        
        if(cbo_selected){
            if($('#' + josn.id).find('.p_selected').find('#panel_selected' + val).length == 0){
                selected_class(val,text,josn.id,'append');
            }
            
            $(obj).parent().next('.p_city_row1').find('input').attr('checked',true);
            $(obj).parent().next('.p_city_row1').find('input').attr('disabled',true);
            
            $('#' + josn.id).find('.p_selected').find('div').each(function(){
                var iVal = $(this).find('input').val();
                
                if(Provis[val]){
                    for(var i = 1; i < Provis[val].length ;i++){
                        remove_class($('#panel_selected' + Provis[val][i][0]).find('a'),josn.id)
                    }
                }
            })
            
        } else{
            $(obj).parent().next('.p_city_row1').find('input').attr('checked',false);
            $(obj).parent().next('.p_city_row1').find('input').attr('disabled',false);
            remove_class($('#panel_selected' + val).find('a'),josn.id)
        }
        
        if(val.length < 7)
            $(obj).addClass('p_city_selected');
        
        var selected_count = $('#' + josn.id).find('.p_selected').find('div').length;
    
     //alert( $(this).find('input').attr('checked'))
    
    if( selected_count == 1 && $(obj).find('input').attr('checked')){
       
        $('#' + josn.id).find('.p_c_selected').animate({

        height: '46px'}, { duration: "slow" });
    }else{
        
        if( selected_count == 0){
        
            $('#' + josn.id).find('.p_c_selected').animate({

            height: '0px'}, { duration: "slow" });
        }
    }
        
        //判断当前是否已是最大值
        if( $(obj).find('input').attr('checked') && josn.size < selected_count){
            $(obj).find('input').attr('checked',false);
            
            if(Provis[val]){
                $(obj).parent().next('.p_city_row1').find('input').attr('checked',false);
                $(obj).parent().next('.p_city_row1').find('input').attr('disabled',false);
            }
            
            remove_class($('#panel_selected' + $(obj).find('input').val()).find('a'),josn.id);
            alert('您最多可以选择 “' + josn.size + '” 项！')
        }
        
    }

$.fn.rowClick = function(j){

    //选中样式
    $(this).parent().find('a').removeClass('selected_row');
    $(this).addClass('selected_row');
    
    //JOSN参数
    var josn = j;
    
    //JOSN字符串格式
    var strJosn = toJosn(josn);
    
    //选中的类别的编码
    var key = $(this).attr('title')
    
    //二级类别内容获取
    var arr = gp[key];
    
    //点击内容被显示的DIV 序号
    var index = 1;
    
    //当前点击的行所在DIV 序号
    var nowDivIndex = $(this).parent().parent().find('div').index($(this).parent());
    
    var html = '<b>二级分类</b>';
    
    if(!arr){
        //三级类别内容获取
        arr   = gp_Sub[key];
        index = 2;
        html  = '<b>三级分类</b>';
    }
    
    if(nowDivIndex < 2){
        for(var i = 0; i < arr.length; i++){
            
            var val  = arr[i][1];
            var text = arr[i][0];
            
            var input = '<input type="checkbox" value="' + val + '" onclick="$(this).inputClick(' + strJosn + ');" />';
            
            if(index == 1)
                input = '';
        
            html += '<a href="javascript:void(0)" id="a' + val + '" onclick="$(this).rowClick(' + strJosn + ');" title="' + val + '">';
            html += input;
            html += '<span>' + text + '</span>';
            html += '</a>';
        }
        
        $('#' + josn.id).find('.p_c_left').eq(index).html(html); 
    }
    
    //当为选择大类时，只进行二级类的绑定
    if(nowDivIndex==0)
        return;
    
    //当前选择的类别里，是否存在类别的选择
    var checkbox = ( $(this).find('input').length > 0 ? true : false );
    //当前类别是否被选中
    var cbx_Selected = $('#' + josn.id).find('#a' + key).find('input').attr('checked');
    
    //当前行中，复选框选中和取消 执行的操作
    if(cbx_Selected && checkbox){
        
        var text = $('#' + josn.id).find('#a' + key).find('span').html();
        
        if($('#' + josn.id).find('.p_selected').find('#panel_selected' + key).length == 0)
            
            selected_class(key ,text ,josn.id,'append');
        
        //当选中类别全部时    
        if(nowDivIndex == 2 && arr ){
            $('#' + josn.id).find('#a' + key).parent().find('input').attr('checked',true);
            $('#' + josn.id).find('#a' + key).parent().find('input').attr('disabled',true);
            
            $('#' + josn.id).find('#a' + key).parent().find('input').eq(0).attr('disabled',false);
        }
    }
    
    if( !cbx_Selected && checkbox ){
        
        //当取消类别全部时  
        if(nowDivIndex == 2 && arr ){
            
            remove_class($('#panel_selected' + key).find('a'),josn.id);
            $('#' + josn.id).find('#a' + key).parent().find('input').attr('checked',false);
            $('#' + josn.id).find('#a' + key).parent().find('input').attr('disabled',false);
        }else{
            remove_class($('#panel_selected' + key).find('a'),josn.id);
        }
    
    }
    
    //将选中的类别 在复选框中打钩
    $('#' + josn.id).find('.p_selected').find('div').each(function(){
        
        var val = $(this).find('input').val();
        //当为选中全部时，将子类禁用
        if(gp_Sub[val]){
            $('#' + josn.id).find('#a' + val).parent().find('input').attr('checked',true);
            $('#' + josn.id).find('#a' + val).parent().find('input').attr('disabled',true);
            
            $('#' + josn.id).find('#a' + val).parent().find('input').eq(0).attr('disabled',false);
            
            
            for(var i = 1 ; i <  gp_Sub[val].length; i++){
                remove_class($('#panel_selected' + gp_Sub[val][i][1]).find('a'),josn.id);
            }
        }else{
            
            $('#' + josn.id).find('#a' + val).find('input').attr('checked',true);
        }
    
    });
    


    var selected_count = $('#' + josn.id).find('.p_selected').find('div').length;
    
    if( selected_count == 1 && $(this).find('input').attr('checked')){
        
        $('#' + josn.id).find('.p_c_selected').animate({

        height: '46px'}, { duration: "slow" });
    }else{
        
        if( selected_count == 0 && nowDivIndex == 2){
        
            $('#' + josn.id).find('.p_c_selected').animate({

            height: '0px'}, { duration: "slow" });
        }
    }
    
    //判断当前是否已是最大值
    if( $(this).find('input').attr('checked') && josn.size < selected_count){
        $(this).find('input').attr('checked',false);
        
        if(arr && nowDivIndex == 2){
            $(this).parent().find('input').attr('checked',false);
            $(this).parent().find('input').attr('disabled',false);
        }
        
        remove_class($('#panel_selected' + $(this).find('input').val()).find('a'),josn.id);
        alert('您最多可以选择 “' + josn.size + '” 项！')
    }
    
}

