﻿/*
 * @(#)jQuery.CEA.Weather.js
 *       
 * 系统名称：东航电子商务国内B2C系统
 * 版本号：1.0
 * 
 * Copyright (c)  TravelSky
 * All Rights Reserved.
 * 
 * 作者：bjiang
 * 创建日期：DEC 7, 2009
 * 
 * 功能描述：Div转Tab
 * 公用方法描述：
 *    
 * 修改人：
 * 修改日期：
 * 修改原因：
 * 
 * 
 */
;(function($)
{
    $.fn.jTab=function(options)
    {
        //* 内部参数变量 */
        var settings=
        {
            actionType:"click",
            defaultSelectedTab:"",
            selectedClassSuffix:"",
            transitionType:"",
            speed:"fast",
            clearradio:true
        };
        
        var config=$.extend(settings,options);
        var oldobj=null;
        var $this=$(this);

        /* 对外接口 */
        $.fn.jTab.SelectTab = function(selectstr)
        {
            var obj = $("li[rel=" + selectstr + "]");
            var nowobj=obj;
            if (oldobj==null)
            {
                oldobj=obj;
                changeTabClass(obj);
            }
            else
            {
                changeTabClass(oldobj);
                changeTabClass(obj);
                showHiddenTabcontent(obj);
                oldobj=obj;
            } 
        };
        /* 内部函数 */
        var showTabcontent=function(obj,callback)
        {
            $this.find("#"+$(obj).attr("rel")).show();
        };
        
        var showHiddenTabcontent=function(obj)
        {
            //alert($this.find("#tabcontent:first > .tab:visible").attr("id")+" - "+$(obj).attr("rel"))
            if ($this.find("#tabcontent:first > .tab:visible").attr("id")==$(obj).attr("rel"))
            { //在同一个Tab上动作，就不执行显示隐藏内容动作
                return false;
            }
            switch (config.transitionType)
            {
            case "slide":
                $this.find("#tabcontent:first > .tab:visible").slideUp(config.speed,function()
                {
                    $this.find("#" + $(obj).attr("rel")).slideDown(config.speed);
				});
                break;
            case "fade":
                $this.find("#tabcontent:first > .tab:visible").fadeOut(config.speed,function()
                {
                    $this.find("#" + $(obj).attr("rel")).fadeIn(config.speed);
				});
                break;
//             case "show":
//                 alert("show");
//                 $this.find("#tabcontent:first > div:visible").hide(config.speed);
//                 break;
            default :
                $this.find("#tabcontent:first > .tab:visible").hide();
                $this.find("#" + $(obj).attr("rel")).show();
                break;
            }
        };
        

        var changeTabClass=function(obj)
        { //改进 未作。可以考虑用showTabcontent的方法来改进
            if (config.selectedClassSuffix!="")
            {
                if ($(obj).hasClass($(obj).attr("rel")+config.selectedClassSuffix))
                {
                    $(obj).removeClass($(obj).attr("rel")+config.selectedClassSuffix);
                }
                else
                {
                    $(obj).addClass($(obj).attr("rel")+config.selectedClassSuffix);
                }
            }
            else
            {
                $(obj).toggleClass("current");
            }
            if ($(obj).find("input[type=radio]").length>0)
            {
                $(obj).find("input[type=radio]").attr("checked","checked");
            }
        };
        
        var initTabcontent=function()
        {
            $this.find("#tabcontent:first").children(".tab").each(function()
            {
                if ($(this).attr("id")!=config.defaultSelectedTab)
                {
                    $(this).hide();
                }
            });
        };
        /* 初始化设用   */
        initTabcontent();

        return $(this).find("#tabs:first").find("li").each(function(i)
        {
            if ($(this).attr("rel")==config.defaultSelectedTab)
            {
                oldobj=this;
                changeTabClass(this);
            }
            $(this).bind(config.actionType,function()
            {
                var nowobj=this;
                if (oldobj==null)
                {
                    oldobj=this;
                    changeTabClass(this);
                }
                else
                {
                    changeTabClass(oldobj);
                    changeTabClass(this);
                    showHiddenTabcontent(this);
                    oldobj=this;
                }
                if(config.actionType=='click'&&config.clearradio==true)
                {
                	$this.find('div.tab[id!='+$(this).attr('rel')+'] input[checked=true]').each(function()
                	{
                		this.checked = false;
                	});
                }
                return false;
            });
        });
    }
})( jQuery );
