|  | @@ -0,0 +1,692 @@
 | 
	
		
			
				|  |  | +/// <reference path="jquery.js"/>
 | 
	
		
			
				|  |  | +/*
 | 
	
		
			
				|  |  | + * jerichotab
 | 
	
		
			
				|  |  | + * version: release-2.0.1 (05/13/2009) 
 | 
	
		
			
				|  |  | + * @ jQuery v1.3.*
 | 
	
		
			
				|  |  | + *
 | 
	
		
			
				|  |  | + * Licensed under the GPL:
 | 
	
		
			
				|  |  | + *   http://gplv3.fsf.org
 | 
	
		
			
				|  |  | + *
 | 
	
		
			
				|  |  | + * Copyright 2008, 2009 Jericho [ thisnamemeansnothing[at]gmail.com ] 
 | 
	
		
			
				|  |  | +	========================================
 | 
	
		
			
				|  |  | +	#example:
 | 
	
		
			
				|  |  | +		
 | 
	
		
			
				|  |  | +	========================================
 | 
	
		
			
				|  |  | +	========================================
 | 
	
		
			
				|  |  | +	#API:
 | 
	
		
			
				|  |  | +		#$.fn.initJerichoTab(Function):
 | 
	
		
			
				|  |  | +				*renderTo(String): the tab render to('#sample')
 | 
	
		
			
				|  |  | +				*uniqueId(String): the tab's id(It must be unique)
 | 
	
		
			
				|  |  | +				*tabs(Array): the tabs will be initialized, whose items will be formated as follows:
 | 
	
		
			
				|  |  | +					{
 | 
	
		
			
				|  |  | +					**title(String): the tab title text
 | 
	
		
			
				|  |  | +					**iconImg(String): the tab icon that displayed from title text,
 | 
	
		
			
				|  |  | +					**closeable(Boolean): the switch that controls whether the tab can be closed (true as default)
 | 
	
		
			
				|  |  | +					}
 | 
	
		
			
				|  |  | +				*activeTabIndex(Int): the tab you'd like to select after loading(0 as default)
 | 
	
		
			
				|  |  | +				*contentHeight(Int): height of the content div tag
 | 
	
		
			
				|  |  | +				*contentCss(Object): the same as style sheet
 | 
	
		
			
				|  |  | +				*loadOnce(Boolean): the switch controls if load tab content at the first time(true as default)
 | 
	
		
			
				|  |  | +				*tabWidth(Int): width of each tab(150 as default)
 | 
	
		
			
				|  |  | +		#$.fn.jerichoTab.addTab(Function):
 | 
	
		
			
				|  |  | +				*tabId(String); the unique tab Id(Unused, private)
 | 
	
		
			
				|  |  | +				*tabFirer(JQuery Object): the object that makes tab shown in a special way
 | 
	
		
			
				|  |  | +				*title(String): the tab title text
 | 
	
		
			
				|  |  | +				*data(Object): the tab data to load,including:
 | 
	
		
			
				|  |  | +							**dataType:type of data,
 | 
	
		
			
				|  |  | +							**dataLink:data link
 | 
	
		
			
				|  |  | +								#example(must use as suited):
 | 
	
		
			
				|  |  | +								##formtag:
 | 
	
		
			
				|  |  | +									*dataType:'formtag', 
 | 
	
		
			
				|  |  | +									//***use the html tags in this page
 | 
	
		
			
				|  |  | +									*dataLink:'#example' 
 | 
	
		
			
				|  |  | +									//***id of the tag you'd like to display in this tab
 | 
	
		
			
				|  |  | +								##iframe:
 | 
	
		
			
				|  |  | +									*dataType:'iframe', 
 | 
	
		
			
				|  |  | +									//***use the iframe to load another page
 | 
	
		
			
				|  |  | +									*dataLink:''
 | 
	
		
			
				|  |  | +									//***such as 'iframetemplates/iframe.htm' 
 | 
	
		
			
				|  |  | +									//***the relative url of the page you'd like to display in this tab,
 | 
	
		
			
				|  |  | +									//***and jerichoTab will use an iframe to load it
 | 
	
		
			
				|  |  | +								###html:
 | 
	
		
			
				|  |  | +									*dataType:'html',
 | 
	
		
			
				|  |  | +									//*** load data from html url
 | 
	
		
			
				|  |  | +									*dataLink:''
 | 
	
		
			
				|  |  | +									// *** the relative url of your html page
 | 
	
		
			
				|  |  | +								##ajax:
 | 
	
		
			
				|  |  | +								*dataType:'ajax',
 | 
	
		
			
				|  |  | +								//***use ajax to load data with asynchronous operations
 | 
	
		
			
				|  |  | +								*dataLink:''
 | 
	
		
			
				|  |  | +								//*** yes,u can write down your ajax handler url and then jerichotab'll make a callback,
 | 
	
		
			
				|  |  | +								//*** so the responseText will be displayed in the content holder(u can use html tags in your server callback datas)
 | 
	
		
			
				|  |  | +				*onLoadCompleted(Function): fired after the data has been loaded
 | 
	
		
			
				|  |  | +				*iconImg(String): the tab icon that displayed below title text(relative to...),
 | 
	
		
			
				|  |  | +				*closeable(Boolean): set whether the tab can be closed(true as default)
 | 
	
		
			
				|  |  | +	========================================
 | 
	
		
			
				|  |  | +*/
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +//; (function($) {
 | 
	
		
			
				|  |  | +$.extend($.fn, {
 | 
	
		
			
				|  |  | +    initJerichoTab: function(setting) {
 | 
	
		
			
				|  |  | +        var opts = $.fn.extend({
 | 
	
		
			
				|  |  | +            //the container of jerichotab(is required,  a jQuery format selector String as '.container' or '#container')
 | 
	
		
			
				|  |  | +            renderTo: null,
 | 
	
		
			
				|  |  | +            //the unique id of jerichotab(is required and unique, not null)
 | 
	
		
			
				|  |  | +            uniqueId: null,
 | 
	
		
			
				|  |  | +            //format your tab data like this: [{title:'',iconImg:'',closeable:true},{title:'',iconImg:'',closeable:true}]
 | 
	
		
			
				|  |  | +            //it's an Array...
 | 
	
		
			
				|  |  | +            tabs: [],
 | 
	
		
			
				|  |  | +            //when the jerichotab has been loaded, the tab you'ld like to display first(start at 0, and 0 as default)
 | 
	
		
			
				|  |  | +            activeTabIndex: 0,
 | 
	
		
			
				|  |  | +            //the style sheet of tab content
 | 
	
		
			
				|  |  | +            contentCss: {
 | 
	
		
			
				|  |  | +                'height': '500px'
 | 
	
		
			
				|  |  | +            },
 | 
	
		
			
				|  |  | +            //if you set this property as true, the data'll be loaded only at the first time when users click the tab
 | 
	
		
			
				|  |  | +            //in other times jerichotab only swich it's css(display property) from 'none' to 'block'
 | 
	
		
			
				|  |  | +            loadOnce: true,
 | 
	
		
			
				|  |  | +            //the tab width (150 as default)
 | 
	
		
			
				|  |  | +            tabWidth: 110,
 | 
	
		
			
				|  |  | +            //set an ajaxload effect, jerichotab has provided two choices: 'usebg' | 'righttag'
 | 
	
		
			
				|  |  | +            //'usebg': control if set a big loading gif in the contentholder
 | 
	
		
			
				|  |  | +            //'righttag': this will set a small loading gif in the right top of contentholder
 | 
	
		
			
				|  |  | +            loader: 'righttag',
 | 
	
		
			
				|  |  | +            //两边滑块宽度
 | 
	
		
			
				|  |  | +            slidersWidth: 19,
 | 
	
		
			
				|  |  | +            //标题高度
 | 
	
		
			
				|  |  | +            titleHeight: 26
 | 
	
		
			
				|  |  | +        }, setting);
 | 
	
		
			
				|  |  | +        //initialize the jerichotab
 | 
	
		
			
				|  |  | +        function createJerichoTab() {
 | 
	
		
			
				|  |  | +            //make sure that a container and uniqueId were provided
 | 
	
		
			
				|  |  | +            if (opts.renderTo == null) { alert('you must set the \'renderTo\' property\r\t--JeirchoTab'); return; }
 | 
	
		
			
				|  |  | +            if (opts.uniqueId == null) { alert('you must set the \'uniqueId\' property\r\t--JeirchoTab'); return; }
 | 
	
		
			
				|  |  | +            if ($('#' + opts.uniqueId).length > 0) { alert('you must set the \'uniqueId\' property as unique\r\t--JeirchoTab'); return; }
 | 
	
		
			
				|  |  | +            //the jerichotab html tree:
 | 
	
		
			
				|  |  | +            /* <div class="jericho_tab">
 | 
	
		
			
				|  |  | +            <div class="tab_pages" >
 | 
	
		
			
				|  |  | +            <div class="tabs">
 | 
	
		
			
				|  |  | +            <ul /> ###tabpages here
 | 
	
		
			
				|  |  | +            </div>
 | 
	
		
			
				|  |  | +            </div>
 | 
	
		
			
				|  |  | +            <div class="tab_content">
 | 
	
		
			
				|  |  | +            <div id="jerichotab_contentholder" class="content" /> ###tabcontents here
 | 
	
		
			
				|  |  | +            </div>
 | 
	
		
			
				|  |  | +            </div>
 | 
	
		
			
				|  |  | +            */
 | 
	
		
			
				|  |  | +            var jerichotab = $('<div id="'+opts.uniqueId+'" class="jericho_tab"><div class="tab_pages" ><div class="tabs"><ul /></div></div><div class="tab_content"><div id="jerichotab_contentholder" class="content" /></div></div>')
 | 
	
		
			
				|  |  | +                                            .appendTo($(opts.renderTo));
 | 
	
		
			
				|  |  | +            
 | 
	
		
			
				|  |  | +            //apply contentcss to the contentholder
 | 
	
		
			
				|  |  | +            $('.tab_content>.content', jerichotab).css(opts.contentCss);
 | 
	
		
			
				|  |  | +            
 | 
	
		
			
				|  |  | +            //fill data
 | 
	
		
			
				|  |  | +            $.fn.jerichoTab = {
 | 
	
		
			
				|  |  | +                master: jerichotab,
 | 
	
		
			
				|  |  | +                tabWidth: opts.tabWidth,
 | 
	
		
			
				|  |  | +                tabPageWidth: $('.tab_pages', jerichotab).width(),
 | 
	
		
			
				|  |  | +                slidersWidth: opts.slidersWidth,
 | 
	
		
			
				|  |  | +                loader: opts.loader,
 | 
	
		
			
				|  |  | +                loadOnce: opts.loadOnce,
 | 
	
		
			
				|  |  | +                tabpage: $('.tab_pages>.tabs>ul', jerichotab),
 | 
	
		
			
				|  |  | +                addTab: function(tabsetting) {
 | 
	
		
			
				|  |  | +                    //set as the unique tab id and tabFirer tag
 | 
	
		
			
				|  |  | +                    tagGuid = (typeof tagGuid == 'undefined' ? 0 : tagGuid + 1);
 | 
	
		
			
				|  |  | +                    var curIndex = tagGuid;
 | 
	
		
			
				|  |  | +                    //this function will be open to all users for them to add tab at any time
 | 
	
		
			
				|  |  | +                    var ps = $.fn.extend({
 | 
	
		
			
				|  |  | +                        //if there is a DOM that cause the tab to be added to tabpages,
 | 
	
		
			
				|  |  | +                        //you should pass it to jerichotab, in which way tab'll only be activated when
 | 
	
		
			
				|  |  | +                        //user click the DOM next time
 | 
	
		
			
				|  |  | +                        tabFirer: null,
 | 
	
		
			
				|  |  | +                        title: '新增页签'+(curIndex+1),
 | 
	
		
			
				|  |  | +                        //the dataType and dataLink were suited as:
 | 
	
		
			
				|  |  | +                        //1.formtag:
 | 
	
		
			
				|  |  | +                        //   dataType:'formtag', 
 | 
	
		
			
				|  |  | +                        //                  --use the html tags in this page
 | 
	
		
			
				|  |  | +                        //   dataLink:'#example' 
 | 
	
		
			
				|  |  | +                        //                  --id of the tag you'ld like to display in this tab
 | 
	
		
			
				|  |  | +                        //2.iframe:
 | 
	
		
			
				|  |  | +                        //   dataType:'iframe', 
 | 
	
		
			
				|  |  | +                        //                  --use the iframe to load another page
 | 
	
		
			
				|  |  | +                        //   dataLink:''
 | 
	
		
			
				|  |  | +                        //                  --such as 'iframetemplates/iframe.htm', set 
 | 
	
		
			
				|  |  | +                        //                  --the relative url of the page u'ld like to display in this tab,
 | 
	
		
			
				|  |  | +                        //                  --and jerichoTab will use an iframe to load it
 | 
	
		
			
				|  |  | +                        //3.html:
 | 
	
		
			
				|  |  | +                        //   dataType:'html',
 | 
	
		
			
				|  |  | +                        //                  --load html tags from a url
 | 
	
		
			
				|  |  | +                        //   dataLink:''
 | 
	
		
			
				|  |  | +                        //                  --the relative url of your html page
 | 
	
		
			
				|  |  | +                        //4.ajax:
 | 
	
		
			
				|  |  | +                        //   dataType:'ajax',
 | 
	
		
			
				|  |  | +                        //                  --use the ajax to load datas with asynchronous operations
 | 
	
		
			
				|  |  | +                        //    dataLink:''
 | 
	
		
			
				|  |  | +                        //                  --yes,u can write down your ajax handler url and jerichotab'll make a callback,
 | 
	
		
			
				|  |  | +                        //                  --so the responseText will be displayed in the content holder(u can use html tags in your server callback datas)
 | 
	
		
			
				|  |  | +                        data: { dataType: '', dataLink: '' },
 | 
	
		
			
				|  |  | +                        //set the tab icon of each(relative to...)
 | 
	
		
			
				|  |  | +                        iconImg: '',
 | 
	
		
			
				|  |  | +                        //whether this tab can be closed(ture as default)
 | 
	
		
			
				|  |  | +                        closeable: true,
 | 
	
		
			
				|  |  | +                        //this function will be fired after all data has been loaded
 | 
	
		
			
				|  |  | +                        onLoadCompleted: null,
 | 
	
		
			
				|  |  | +                        // the tab's name
 | 
	
		
			
				|  |  | +                        name:''
 | 
	
		
			
				|  |  | +                    }, tabsetting);
 | 
	
		
			
				|  |  | +                    //window.console && console.log('%o', tabsetting);
 | 
	
		
			
				|  |  | +                    //check whether the tabFirer exists or not, and that it has an attribute['jerichotabindex'], then set the tab that tabFirer was connected activated
 | 
	
		
			
				|  |  | +                    //otherwise attach the jerichotabindex' attribute
 | 
	
		
			
				|  |  | +                    if (ps.tabFirer != null) {
 | 
	
		
			
				|  |  | +                        var jerichotabindex = ps.tabFirer.attr('jerichotabindex');
 | 
	
		
			
				|  |  | +                        if (typeof jerichotabindex != 'undefined' && $('#jerichotab_' + jerichotabindex).length > 0)
 | 
	
		
			
				|  |  | +                            return $.fn.setTabActive(jerichotabindex).adaptSlider().loadData();
 | 
	
		
			
				|  |  | +                        ps.tabFirer.attr('jerichotabindex', curIndex);
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  | +                    // set name
 | 
	
		
			
				|  |  | +                    if(ps.name == ''){
 | 
	
		
			
				|  |  | +                    	ps.name = ps.title;
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  | +                    //newTab html tree:
 | 
	
		
			
				|  |  | +                    /*
 | 
	
		
			
				|  |  | +                    <li>
 | 
	
		
			
				|  |  | +                    <div class="tab_left" >
 | 
	
		
			
				|  |  | +                    <div class="tab_icon" />
 | 
	
		
			
				|  |  | +                    <div class="tab_text" >JerichoTab</div>
 | 
	
		
			
				|  |  | +                    <div class="tab_close">
 | 
	
		
			
				|  |  | +                    <a href="javascript:void(0)" title="Close"> </a>
 | 
	
		
			
				|  |  | +                    </div>
 | 
	
		
			
				|  |  | +                    </div>
 | 
	
		
			
				|  |  | +                    <div class="tab_right"> </div>
 | 
	
		
			
				|  |  | +                    </li>
 | 
	
		
			
				|  |  | +                    */
 | 
	
		
			
				|  |  | +                    /*var newTab = $('<li class="jericho_tabs tab_selected" style="width:0px"  id="jerichotab_' + curIndex + '" dataType="' + ps.data.dataType + '" dataLink="' + ps.data.dataLink + '">' +
 | 
	
		
			
				|  |  | +	                                    '<div class="tab_left"  style="width:' + (opts.tabWidth - 5) + 'px"  >' +
 | 
	
		
			
				|  |  | +	                                        (ps.iconImg == '' ? '' : '<div class="tab_icon" style="' + 'background-image:url(' + ps.iconImg + ')' + '"> </div>') +
 | 
	
		
			
				|  |  | +	                                        '<div class="tab_text" title="' + ps.title + '"  style="width:' + (opts.tabWidth - 45 + (ps.iconImg == '' ? 25 : 0)) + 'px"  >' + ps.title.cut(opts.tabWidth / 10 - 1) + '</div>  ' +
 | 
	
		
			
				|  |  | +	                                        '<div class="tab_close">' + (ps.closeable ? '<a href="javascript:" title="关闭"> </a>' : '') + '</div>' +
 | 
	
		
			
				|  |  | +	                                    '</div>' +
 | 
	
		
			
				|  |  | +	                                    '<div class="tab_right"> </div>' +
 | 
	
		
			
				|  |  | +	                                '</li>')*/
 | 
	
		
			
				|  |  | +                    var newTab = $('<li name="'+ps.name+'" class="jericho_tabs tab_selected" style="width:0px"  id="jerichotab_' + curIndex + '" dataType="' + ps.data.dataType + '" dataLink="' + ps.data.dataLink + '">' +
 | 
	
		
			
				|  |  | +                            '<div class="tab_left"  style="width:' + (opts.tabWidth - 5) + 'px"  >' +
 | 
	
		
			
				|  |  | +                                (ps.iconImg == '' ? '' : '<div class="tab_icon" style="' + 'background-image:url(' + ps.iconImg + ')' + '"> </div>') +
 | 
	
		
			
				|  |  | +                                '<div class="tab_text" title="' + ps.title + '"  style="width:' + (opts.tabWidth - 45 + (ps.iconImg == '' ? 25 : 0)) + 'px"  >' + ps.title.cut(opts.tabWidth / 10 - 1) + '</div>  ' +
 | 
	
		
			
				|  |  | +                                '<div class="tab_close">' + (ps.closeable ? '<a href="javascript:" title="关闭"> </a>' : '') + '</div>' +
 | 
	
		
			
				|  |  | +                            '</div>' +
 | 
	
		
			
				|  |  | +                            '<div class="tab_right"> </div>' +
 | 
	
		
			
				|  |  | +                        '</li>').appendTo($.fn.jerichoTab.tabpage).css('opacity', '0').applyHover()
 | 
	
		
			
				|  |  | +	                          .applyCloseEvent().animate({ 'opacity': '1', width: opts.tabWidth }, 100, function() {
 | 
	
		
			
				|  |  | +	                    $.fn.setTabActive(curIndex);
 | 
	
		
			
				|  |  | +	                });
 | 
	
		
			
				|  |  | +                    //use an Array named "tabHash" to restore the tab information
 | 
	
		
			
				|  |  | +                    tabHash = (typeof tabHash == 'undefined' ? [] : tabHash);
 | 
	
		
			
				|  |  | +                    tabHash.push({
 | 
	
		
			
				|  |  | +                        index: curIndex,
 | 
	
		
			
				|  |  | +                        tabFirer: ps.tabFirer,
 | 
	
		
			
				|  |  | +                        tabId: 'jerichotab_' + curIndex,
 | 
	
		
			
				|  |  | +                        holderId: 'jerichotabholder_' + curIndex,
 | 
	
		
			
				|  |  | +                        iframeId: 'jerichotabiframe_' + curIndex,
 | 
	
		
			
				|  |  | +                        onCompleted: ps.onLoadCompleted
 | 
	
		
			
				|  |  | +                    });
 | 
	
		
			
				|  |  | +                    return newTab.applySlider();
 | 
	
		
			
				|  |  | +                },
 | 
	
		
			
				|  |  | +                closeCurrentTab: function(tabsetting) {
 | 
	
		
			
				|  |  | +                	$('.tab_selected .tab_close>a').click();
 | 
	
		
			
				|  |  | +                    /*var ps = $.fn.extend({
 | 
	
		
			
				|  |  | +                        name:'',
 | 
	
		
			
				|  |  | +                        activeTabName:'',
 | 
	
		
			
				|  |  | +                        isReaload: false
 | 
	
		
			
				|  |  | +                    }, tabsetting);
 | 
	
		
			
				|  |  | +                    
 | 
	
		
			
				|  |  | +                    $.fn.jerichoTab.tabpage.children('li[name='+ps.name+']').remove();
 | 
	
		
			
				|  |  | +                    
 | 
	
		
			
				|  |  | +                    var isLoad = 0;
 | 
	
		
			
				|  |  | +                    if(ps.activeTabName != ''){
 | 
	
		
			
				|  |  | +                    	var lis = $.fn.jerichoTab.tabpage.children('li');
 | 
	
		
			
				|  |  | +                    	for(var i=0;i<lis.size();i++){
 | 
	
		
			
				|  |  | +                    		if(lis.eq(i).attr('name')==ps.activeTabName){
 | 
	
		
			
				|  |  | +                    			$.fn.setTabActive(i).loadData(ps.isReaload);
 | 
	
		
			
				|  |  | +                    			isLoad = 1;
 | 
	
		
			
				|  |  | +                    			break;
 | 
	
		
			
				|  |  | +                    		}
 | 
	
		
			
				|  |  | +                    	}
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  | +                    if(isLoad==0){
 | 
	
		
			
				|  |  | +                    	$.fn.setTabActive(0).loadData(ps.isReaload);
 | 
	
		
			
				|  |  | +                    }*/
 | 
	
		
			
				|  |  | +                    
 | 
	
		
			
				|  |  | +                },
 | 
	
		
			
				|  |  | +            };
 | 
	
		
			
				|  |  | +            $.each(opts.tabs, function(i, n) {
 | 
	
		
			
				|  |  | +                $.fn.jerichoTab.addTab(n);
 | 
	
		
			
				|  |  | +            });
 | 
	
		
			
				|  |  | +            try{
 | 
	
		
			
				|  |  | +                if (tabHash.length == 0)
 | 
	
		
			
				|  |  | +                    jerichotab.css({ 'display': 'none' });
 | 
	
		
			
				|  |  | +            }catch(e){ }
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        createJerichoTab();
 | 
	
		
			
				|  |  | +        $.fn.setTabActive(opts.activeTabIndex).loadData();
 | 
	
		
			
				|  |  | +        $.fn.jerichoTab.resize = function() {
 | 
	
		
			
				|  |  | +        	$.fn.jerichoTab.tabPageWidth = $(".tab_pages", $.fn.jerichoTab.master).width() - (($(".jericho_slider").length > 0) ? ($.fn.jerichoTab.slidersWidth * 2) : 0);
 | 
	
		
			
				|  |  | +            $(".tabs", $.fn.jerichoTab.master).width($.fn.jerichoTab.tabPageWidth).applySlider().adaptSlider();
 | 
	
		
			
				|  |  | +            var fixHeight = -2;
 | 
	
		
			
				|  |  | +            //if (Metronic.isIE8()){
 | 
	
		
			
				|  |  | +            //	fixHeight = 25;
 | 
	
		
			
				|  |  | +            //}
 | 
	
		
			
				|  |  | +            $('#jerichotab_contentholder').height($(opts.renderTo).height() - opts.titleHeight - 5 - fixHeight);
 | 
	
		
			
				|  |  | +            $(".jericho_tab iframe").height($(".jericho_tab").parent().height() - opts.titleHeight - fixHeight);
 | 
	
		
			
				|  |  | +        };
 | 
	
		
			
				|  |  | +        $(window).resize(function() {
 | 
	
		
			
				|  |  | +            $.fn.jerichoTab.resize();
 | 
	
		
			
				|  |  | +        })
 | 
	
		
			
				|  |  | +        //window.console && console.log('width :' + $.fn.jerichoTab.tabpage.width());
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +    //activate the tag(orderkey is the tab order, start at 1)
 | 
	
		
			
				|  |  | +    setTabActiveByOrder: function(orderKey) {
 | 
	
		
			
				|  |  | +        var lastTab = $.fn.jerichoTab.tabpage.children('li').filter('.tab_selected');
 | 
	
		
			
				|  |  | +        if (lastTab.length > 0) lastTab.swapTabEnable();
 | 
	
		
			
				|  |  | +        return $('#jericho_tabs').filter(':nth-child(' + orderKey + ')').swapTabEnable();
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +    //activate the tag(orderKey is the tagGuid of each tab)
 | 
	
		
			
				|  |  | +    setTabActive: function(orderKey) {
 | 
	
		
			
				|  |  | +        var lastTab = $.fn.jerichoTab.tabpage.children('li').filter('.tab_selected');
 | 
	
		
			
				|  |  | +        if (lastTab.length > 0) lastTab.swapTabEnable();
 | 
	
		
			
				|  |  | +        return $('#jerichotab_' + orderKey).swapTabEnable();
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +    addEvent: function(e, h) {
 | 
	
		
			
				|  |  | +        var target = this.get(0);
 | 
	
		
			
				|  |  | +        if (target.addEventListener) {
 | 
	
		
			
				|  |  | +            target.addEventListener(e, h, false);
 | 
	
		
			
				|  |  | +        } else if (target.attachEvent) {
 | 
	
		
			
				|  |  | +            target.attachEvent('on' + e, h);
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +    //create an iframe in the contentholder to load pages
 | 
	
		
			
				|  |  | +    buildIFrame: function(src) {
 | 
	
		
			
				|  |  | +        return this.each(function() {
 | 
	
		
			
				|  |  | +            var onComleted = null, jerichotabiframe = '';
 | 
	
		
			
				|  |  | +            for (var tab in tabHash) {
 | 
	
		
			
				|  |  | +                if (tabHash[tab].holderId == $(this).attr('id')) {
 | 
	
		
			
				|  |  | +                    onComleted = tabHash[tab].onCompleted;
 | 
	
		
			
				|  |  | +                    jerichotabiframe = tabHash[tab].iframeId;
 | 
	
		
			
				|  |  | +                    break;
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +            src += (src.indexOf('?') == -1 ? '?' : '&') + 'tabPageId=' + jerichotabiframe;
 | 
	
		
			
				|  |  | +            var iframe = $('<iframe id="' + jerichotabiframe + '" name="' + jerichotabiframe + '" src="' + src + '" frameborder="0" scrolling="auto" />')
 | 
	
		
			
				|  |  | +							.css({ width: '100%', height: $(this).parent().height(), border: 0 }).appendTo($(this));
 | 
	
		
			
				|  |  | +            //add a listener to the load event
 | 
	
		
			
				|  |  | +            $('#' + jerichotabiframe).addEvent('load', function() {
 | 
	
		
			
				|  |  | +                //if onComlete(Function) is not null, then release it
 | 
	
		
			
				|  |  | +                !!onComleted ? onComleted(arguments[1]) : true;
 | 
	
		
			
				|  |  | +                $.fn.removeLoader();
 | 
	
		
			
				|  |  | +            });
 | 
	
		
			
				|  |  | +        });
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +    //load data from dataLink
 | 
	
		
			
				|  |  | +    //use the following function after each tab was activated
 | 
	
		
			
				|  |  | +    loadData: function(flag) {
 | 
	
		
			
				|  |  | +        return this.each(function() {
 | 
	
		
			
				|  |  | +        	$('.jericho_tab .tab_selected').css('background-color', $('body').css('background-color'));
 | 
	
		
			
				|  |  | +            //show ajaxloader first
 | 
	
		
			
				|  |  | +            $('#jerichotab_contentholder').showLoader();
 | 
	
		
			
				|  |  | +            var onComleted = null, holderId = '', tabId = '';
 | 
	
		
			
				|  |  | +            //search information in tabHash
 | 
	
		
			
				|  |  | +            for (var tab in tabHash) {
 | 
	
		
			
				|  |  | +                if (tabHash[tab].tabId == $(this).attr('id')) {
 | 
	
		
			
				|  |  | +                    onComleted = tabHash[tab].onCompleted;
 | 
	
		
			
				|  |  | +                    holderId = '#' + tabHash[tab].holderId;
 | 
	
		
			
				|  |  | +                    tabId = '#' + tabHash[tab].tabId;
 | 
	
		
			
				|  |  | +                    break;
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +            var dataType = $(this).attr('dataType');
 | 
	
		
			
				|  |  | +            var dataLink = $(this).attr('dataLink');
 | 
	
		
			
				|  |  | +            //if dataType was undefined, nothing will be done
 | 
	
		
			
				|  |  | +            if (typeof dataType == 'undefined' || dataType == '' || dataType == 'undefined') { removeLoading(); return; }
 | 
	
		
			
				|  |  | +            //hide the rest contentholders
 | 
	
		
			
				|  |  | +            $('#jerichotab_contentholder').children('div[class=curholder]').attr('class', 'holder').css({ 'display': 'none' });
 | 
	
		
			
				|  |  | +            var holder = $(holderId);
 | 
	
		
			
				|  |  | +            if (holder.length == 0) {
 | 
	
		
			
				|  |  | +                //if contentholder DOM hasn't been created, create it immediately
 | 
	
		
			
				|  |  | +                holder = $('<div class="curholder" id="' + holderId.replace('#', '') + '" />').appendTo($('#jerichotab_contentholder'));
 | 
	
		
			
				|  |  | +                //load data into holder
 | 
	
		
			
				|  |  | +                load(holder);
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +            else {
 | 
	
		
			
				|  |  | +                holder.attr('class', 'curholder').css({ 'display': 'block' });
 | 
	
		
			
				|  |  | +                if ($.fn.jerichoTab.loadOnce && !flag){
 | 
	
		
			
				|  |  | +                    removeLoading();
 | 
	
		
			
				|  |  | +                } else {
 | 
	
		
			
				|  |  | +                    holder.html('');
 | 
	
		
			
				|  |  | +                    load(holder);
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            function load(c) {
 | 
	
		
			
				|  |  | +                switch (dataType) {
 | 
	
		
			
				|  |  | +                    case 'formtag':
 | 
	
		
			
				|  |  | +                        //clone html DOM elements in the page
 | 
	
		
			
				|  |  | +                        $(dataLink).css('display', 'none');
 | 
	
		
			
				|  |  | +                        var clone = $(dataLink).clone(true).appendTo(c).css('display', 'block');
 | 
	
		
			
				|  |  | +                        removeLoading(holder);
 | 
	
		
			
				|  |  | +                        break;
 | 
	
		
			
				|  |  | +                    case 'html':
 | 
	
		
			
				|  |  | +                        //load HTML from page
 | 
	
		
			
				|  |  | +                        holder.load(dataLink + '?t=' + Math.floor(Math.random()), function() {
 | 
	
		
			
				|  |  | +                            removeLoading(holder);
 | 
	
		
			
				|  |  | +                        });
 | 
	
		
			
				|  |  | +                        break;
 | 
	
		
			
				|  |  | +                    case 'iframe':
 | 
	
		
			
				|  |  | +                        //use iframe to load a website
 | 
	
		
			
				|  |  | +                        holder.buildIFrame(dataLink, holder);
 | 
	
		
			
				|  |  | +                        break;
 | 
	
		
			
				|  |  | +                    case 'ajax':
 | 
	
		
			
				|  |  | +                        //load a remote page using an HTTP request
 | 
	
		
			
				|  |  | +                        $.ajax({
 | 
	
		
			
				|  |  | +                            url: dataLink,
 | 
	
		
			
				|  |  | +                            data: { t: Math.floor(Math.random()) },
 | 
	
		
			
				|  |  | +                            error: function(r) {
 | 
	
		
			
				|  |  | +                                holder.html('数据加载失败!');
 | 
	
		
			
				|  |  | +                                removeLoading(holder);
 | 
	
		
			
				|  |  | +                            },
 | 
	
		
			
				|  |  | +                            success: function(r) {
 | 
	
		
			
				|  |  | +                                holder.html(r);
 | 
	
		
			
				|  |  | +                                removeLoading(holder);
 | 
	
		
			
				|  |  | +                            }
 | 
	
		
			
				|  |  | +                        });
 | 
	
		
			
				|  |  | +                        break;
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +            function removeLoading(h) {
 | 
	
		
			
				|  |  | +                !!onComleted ? onComleted(h) : true;
 | 
	
		
			
				|  |  | +                $.fn.removeLoader();
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +        });
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +    //attach the slider event to every tab,
 | 
	
		
			
				|  |  | +    //so users can slide the tabs when there are too much tabs
 | 
	
		
			
				|  |  | +    attachSliderEvent: function() {
 | 
	
		
			
				|  |  | +        return this.each(function() {
 | 
	
		
			
				|  |  | +            var me = this;
 | 
	
		
			
				|  |  | +            $(me).hover(function() {
 | 
	
		
			
				|  |  | +                $(me).swapClass('jericho_slider' + $(me).attr('pos') + '_enable', 'jericho_slider' + $(me).attr('pos') + '_hover');
 | 
	
		
			
				|  |  | +            }, function() {
 | 
	
		
			
				|  |  | +                $(me).swapClass('jericho_slider' + $(me).attr('pos') + '_hover', 'jericho_slider' + $(me).attr('pos') + '_enable');
 | 
	
		
			
				|  |  | +            }).mouseup(function() {
 | 
	
		
			
				|  |  | +                //filter the sliders in order to prevent users from sliding`
 | 
	
		
			
				|  |  | +                if ($(me).is('[slide=no]')) return;
 | 
	
		
			
				|  |  | +                //get the css(left) of tabpage(ul elements)
 | 
	
		
			
				|  |  | +                var offLeft = parseInt($.fn.jerichoTab.tabpage.css('left'));
 | 
	
		
			
				|  |  | +                //the max css(left) of tabpage
 | 
	
		
			
				|  |  | +                var maxLeft = tabHash.length * $.fn.jerichoTab.tabWidth - $.fn.jerichoTab.tabPageWidth + ($.fn.jerichoTab.slidersWidth * 2);
 | 
	
		
			
				|  |  | +                switch ($(me).attr('pos')) {
 | 
	
		
			
				|  |  | +                    case 'left':
 | 
	
		
			
				|  |  | +                        //slide to the left side
 | 
	
		
			
				|  |  | +                        if (offLeft + $.fn.jerichoTab.tabWidth < 0)
 | 
	
		
			
				|  |  | +                            $.fn.jerichoTab.tabpage.animate({ left: offLeft + $.fn.jerichoTab.tabWidth }, 100);
 | 
	
		
			
				|  |  | +                        else
 | 
	
		
			
				|  |  | +                            $.fn.jerichoTab.tabpage.animate({ left: 0 }, 100, function() {
 | 
	
		
			
				|  |  | +                                $(me).attr({ 'slide': 'no', 'class': 'jericho_sliders jericho_sliderleft_disable' });
 | 
	
		
			
				|  |  | +                            });
 | 
	
		
			
				|  |  | +                        $('.jericho_sliders[pos=right]').attr({ 'slide': 'yes', 'class': 'jericho_sliders jericho_sliderright_enable' });
 | 
	
		
			
				|  |  | +                        break;
 | 
	
		
			
				|  |  | +                    case 'right':
 | 
	
		
			
				|  |  | +                        //slide to the right side
 | 
	
		
			
				|  |  | +                        if (offLeft - $.fn.jerichoTab.tabWidth > -maxLeft)
 | 
	
		
			
				|  |  | +                            $.fn.jerichoTab.tabpage.animate({ left: offLeft - $.fn.jerichoTab.tabWidth }, 100);
 | 
	
		
			
				|  |  | +                        else
 | 
	
		
			
				|  |  | +                            $.fn.jerichoTab.tabpage.animate({ left: -maxLeft }, 100, function() {
 | 
	
		
			
				|  |  | +                                $(me).attr({ 'slide': 'no', 'class': 'jericho_sliders jericho_sliderright_disable' });
 | 
	
		
			
				|  |  | +                            });
 | 
	
		
			
				|  |  | +                        $('.jericho_sliders[pos=left]').attr({ 'slide': 'yes', 'class': 'jericho_sliders jericho_sliderleft_enable' });
 | 
	
		
			
				|  |  | +                        break;
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +            });
 | 
	
		
			
				|  |  | +        });
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +    //create or activate the slider to tabpage
 | 
	
		
			
				|  |  | +    applySlider: function() {
 | 
	
		
			
				|  |  | +        return this.each(function() {
 | 
	
		
			
				|  |  | +            if (typeof tabHash == 'undefined' || tabHash.length == 0) return;
 | 
	
		
			
				|  |  | +            //get the offwidth of tabpage
 | 
	
		
			
				|  |  | +            var offWidth = tabHash.length * $.fn.jerichoTab.tabWidth - $.fn.jerichoTab.tabPageWidth + ($.fn.jerichoTab.slidersWidth * 2);
 | 
	
		
			
				|  |  | +            if (tabHash.length > 0 && offWidth > 0) {
 | 
	
		
			
				|  |  | +                //make sure that the parent Div of tabpage was fixed(position:relative)
 | 
	
		
			
				|  |  | +                //so jerichotab can control the display position of tabpage by using 'left'
 | 
	
		
			
				|  |  | +                $.fn.jerichoTab.tabpage.parent().css({ width: $.fn.jerichoTab.tabPageWidth - ($.fn.jerichoTab.slidersWidth * 2) });
 | 
	
		
			
				|  |  | +                //auto grow the tabpage(ul) width and reset 'left'
 | 
	
		
			
				|  |  | +                $.fn.jerichoTab.tabpage.css({ width: offWidth + $.fn.jerichoTab.tabPageWidth - ($.fn.jerichoTab.slidersWidth * 2) })
 | 
	
		
			
				|  |  | +                		.animate({ left: -offWidth }, 0, function() {
 | 
	
		
			
				|  |  | +                    //append 'jerichosliders' to the tabpageholder if 'jerichoslider' has't been added
 | 
	
		
			
				|  |  | +                    if ($('.jericho_sliders').length <= 0) {
 | 
	
		
			
				|  |  | +                    	var s = 'onclick="if(document.selection && document.selection.empty) {document.selection.empty();}else if(window.getSelection) {var sel = window.getSelection();sel.removeAllRanges();}"';
 | 
	
		
			
				|  |  | +                        $.fn.jerichoTab.tabpage.parent()
 | 
	
		
			
				|  |  | +                            .before($('<div class="jericho_sliders jericho_sliderleft_enable" slide="yes" pos="left" '+s+'></div>'));
 | 
	
		
			
				|  |  | +                        $.fn.jerichoTab.tabpage.parent()
 | 
	
		
			
				|  |  | +                            .after($('<div class="jericho_sliders jericho_sliderright_disable" pos="right" slide="yes" '+s+'></div>'));
 | 
	
		
			
				|  |  | +                        $('.jericho_sliders').attachSliderEvent();
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  | +                    //$('.jericho_sliders').adaptSlider();
 | 
	
		
			
				|  |  | +                });
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +            else if (tabHash.length > 0 && offWidth <= 0) {
 | 
	
		
			
				|  |  | +                //remove 'jerichosliders' whether the tabs were not go beyond the capacity of tabpageholder
 | 
	
		
			
				|  |  | +                $('.jericho_sliders').remove();
 | 
	
		
			
				|  |  | +                $.fn.jerichoTab.tabpage.parent().css({ width: $.fn.jerichoTab.tabPageWidth });
 | 
	
		
			
				|  |  | +                $.fn.jerichoTab.tabpage.css({ width: -offWidth + $.fn.jerichoTab.tabPageWidth })
 | 
	
		
			
				|  |  | +                	.animate({ left: 0 }, 0);
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +        });
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +    //make sure that the slider will be adjusted quickly to the tabpage after tab 'clicking' or tab 'initializing'
 | 
	
		
			
				|  |  | +    adaptSlider: function() {
 | 
	
		
			
				|  |  | +        return this.each(function() {
 | 
	
		
			
				|  |  | +            if ($('.jericho_sliders').length > 0) {
 | 
	
		
			
				|  |  | +                var offLeft = parseInt($.fn.jerichoTab.tabpage.css('left'));
 | 
	
		
			
				|  |  | +                var curtag = '#', index = 0;
 | 
	
		
			
				|  |  | +                for (var t in tabHash) {
 | 
	
		
			
				|  |  | +                    if (tabHash[t].tabId == $(this).attr('id')) {
 | 
	
		
			
				|  |  | +                        curtag += tabHash[t].tabId;
 | 
	
		
			
				|  |  | +                        index = parseInt(t);
 | 
	
		
			
				|  |  | +                        break;
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +                //set the tabpage width
 | 
	
		
			
				|  |  | +                var tabWidth = $.fn.jerichoTab.tabPageWidth - ($.fn.jerichoTab.slidersWidth * 2);
 | 
	
		
			
				|  |  | +                //calculate the distance from the left side of tabpage
 | 
	
		
			
				|  |  | +                var space_l = $.fn.jerichoTab.tabWidth * index + offLeft;
 | 
	
		
			
				|  |  | +                //calculate the distance from the right side of tabpage
 | 
	
		
			
				|  |  | +                var space_r = $.fn.jerichoTab.tabWidth * (index + 1) + offLeft;
 | 
	
		
			
				|  |  | +                //window.console && console.log(space_l + '||' + space_r);
 | 
	
		
			
				|  |  | +                function setSlider(pos, enable) {
 | 
	
		
			
				|  |  | +                    $('.jericho_sliders[pos=' + pos + ']').attr({ 'slide': (enable ? 'yes' : 'no'), 'class': 'jericho_sliders jericho_slider' + pos + '_' + (enable ? 'enable' : 'disable') });
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +                //slider to right to check whether it's a tab nearby left slider
 | 
	
		
			
				|  |  | +                if ((space_l < 0 && space_l > -$.fn.jerichoTab.tabWidth) && (space_r > 0 && space_r < $.fn.jerichoTab.tabWidth)) {
 | 
	
		
			
				|  |  | +                    //left
 | 
	
		
			
				|  |  | +                    $.fn.jerichoTab.tabpage.animate({ left: -$.fn.jerichoTab.tabWidth * index }, 0, function() {
 | 
	
		
			
				|  |  | +                        if (index == 0) setSlider('left', false);
 | 
	
		
			
				|  |  | +                        else setSlider('left', true);
 | 
	
		
			
				|  |  | +                        setSlider('right', true);
 | 
	
		
			
				|  |  | +                    });
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +                //slider to left to check whether it's a tab nearby right slider
 | 
	
		
			
				|  |  | +                if ((space_l < tabWidth && space_l > tabWidth - $.fn.jerichoTab.tabWidth) && (space_r > tabWidth && space_r < tabWidth + $.fn.jerichoTab.tabWidth)) {
 | 
	
		
			
				|  |  | +                    //right
 | 
	
		
			
				|  |  | +                    $.fn.jerichoTab.tabpage.animate({ left: -$.fn.jerichoTab.tabWidth * (index + 1) + tabWidth }, 0, function() {
 | 
	
		
			
				|  |  | +                        if (index == tabHash.length - 1) setSlider('right', false);
 | 
	
		
			
				|  |  | +                        else setSlider('left', true);
 | 
	
		
			
				|  |  | +                        setSlider('left', true);
 | 
	
		
			
				|  |  | +                    });
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +        });
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +    //apply event to the close anchor
 | 
	
		
			
				|  |  | +    applyCloseEvent: function() {
 | 
	
		
			
				|  |  | +        return this.each(function() {
 | 
	
		
			
				|  |  | +            var me = this;
 | 
	
		
			
				|  |  | +            $('.tab_close>a', this).click(function(e) {
 | 
	
		
			
				|  |  | +                //prevents further propagation of the current event. 
 | 
	
		
			
				|  |  | +                e.stopPropagation();
 | 
	
		
			
				|  |  | +                if ($(this).length == 0) return;
 | 
	
		
			
				|  |  | +                //remove tab from tabpageholder
 | 
	
		
			
				|  |  | +                $(me).animate({ 'opacity': '0', width: '0px' }, 100, function() {
 | 
	
		
			
				|  |  | +                    //make the previous tab selected whether the removed tab was selected
 | 
	
		
			
				|  |  | +                    var lastTab = $.fn.jerichoTab.tabpage.children('li').filter('.tab_selected');
 | 
	
		
			
				|  |  | +                    if (lastTab.attr('id') == $(this).attr('id')) {
 | 
	
		
			
				|  |  | +                    	if($(this).prev().text() != ''){
 | 
	
		
			
				|  |  | +                            $(this).prev().swapTabEnable().loadData();
 | 
	
		
			
				|  |  | +                    	}else{
 | 
	
		
			
				|  |  | +                    		$(this).next().swapTabEnable().loadData();
 | 
	
		
			
				|  |  | +                    	}
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  | +                    //clear the information of the removed tab from tabHash
 | 
	
		
			
				|  |  | +                    for (var t in tabHash) {
 | 
	
		
			
				|  |  | +                        if (tabHash[t].tabId == $(me).attr('id')) {
 | 
	
		
			
				|  |  | +                            if (tabHash[t].tabFirer != null)
 | 
	
		
			
				|  |  | +                                tabHash[t].tabFirer.removeAttr('jerichotabindex');
 | 
	
		
			
				|  |  | +                            tabHash.splice(t, 1);
 | 
	
		
			
				|  |  | +                        }
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  | +                    //adapt slider
 | 
	
		
			
				|  |  | +                    $(me).applySlider().remove();
 | 
	
		
			
				|  |  | +                    //remove contentholder
 | 
	
		
			
				|  |  | +                    $('#jerichotabholder_' + $(me).attr('id').replace('jerichotab_', '')).remove();
 | 
	
		
			
				|  |  | +                })
 | 
	
		
			
				|  |  | +            });
 | 
	
		
			
				|  |  | +            $(this).RightMenu('jerichotabmenu',{menuList:[
 | 
	
		
			
				|  |  | +                {menuName:"刷新当前",clickEvent:"$('.tab_selected').loadData(true);"},
 | 
	
		
			
				|  |  | +                {menuName:"关闭其它",clickEvent:"$('.tab_unselect .tab_close>a').click();"
 | 
	
		
			
				|  |  | +                	+"setTimeout('$.fn.jerichoTab.resize();setTimeout(\\\'$.fn.jerichoTab.resize();"
 | 
	
		
			
				|  |  | +                	+"setTimeout(\\\\\\'$.fn.jerichoTab.resize();\\\\\\',1000);\\\',500);',500);"}
 | 
	
		
			
				|  |  | +        	]});
 | 
	
		
			
				|  |  | +        });
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +    //apply the "hover" effect and "onSelect" event
 | 
	
		
			
				|  |  | +    applyHover: function() {
 | 
	
		
			
				|  |  | +        return this.each(function() {
 | 
	
		
			
				|  |  | +            $(this).hover(function() {
 | 
	
		
			
				|  |  | +                if ($(this).hasClass('tab_unselect')) $(this).addClass('tab_unselect_h');
 | 
	
		
			
				|  |  | +            }, function() {
 | 
	
		
			
				|  |  | +                if ($(this).hasClass('tab_unselect_h')) $(this).removeClass('tab_unselect_h');
 | 
	
		
			
				|  |  | +            }).mouseup(function() {
 | 
	
		
			
				|  |  | +                if ($(this).hasClass('tab_selected')) return;
 | 
	
		
			
				|  |  | +                //select this tab and hide the last selected tab
 | 
	
		
			
				|  |  | +                var lastTab = $.fn.jerichoTab.tabpage.children('li').filter('.tab_selected');
 | 
	
		
			
				|  |  | +                lastTab.attr('class', 'jericho_tabs tab_unselect');
 | 
	
		
			
				|  |  | +                $('#jerichotabholder_' + lastTab.attr('id').replace('jerichotab_', '')).css({ 'display': 'none' });
 | 
	
		
			
				|  |  | +                $(this).attr('class', 'jericho_tabs tab_selected').loadData().adaptSlider();
 | 
	
		
			
				|  |  | +            });
 | 
	
		
			
				|  |  | +        });
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +    //switch the tab between the selected mode and the unselected mode, or v.v...
 | 
	
		
			
				|  |  | +    swapTabEnable: function() {
 | 
	
		
			
				|  |  | +        return this.each(function() {
 | 
	
		
			
				|  |  | +            if ($(this).hasClass('tab_selected'))
 | 
	
		
			
				|  |  | +                $(this).swapClass('tab_selected', 'tab_unselect');
 | 
	
		
			
				|  |  | +            else if ($(this).hasClass('tab_unselect'))
 | 
	
		
			
				|  |  | +                $(this).swapClass('tab_unselect', 'tab_selected');
 | 
	
		
			
				|  |  | +        });
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +    //change class from css1 to css2 of DOM
 | 
	
		
			
				|  |  | +    swapClass: function(css1, css2) {
 | 
	
		
			
				|  |  | +        return this.each(function() {
 | 
	
		
			
				|  |  | +            $(this).removeClass(css1).addClass(css2);
 | 
	
		
			
				|  |  | +        })
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +    //if it takes a long time to load the data, show a loader to ui
 | 
	
		
			
				|  |  | +    showLoader: function() {
 | 
	
		
			
				|  |  | +        return this.each(function() {
 | 
	
		
			
				|  |  | +            switch ($.fn.jerichoTab.loader) {
 | 
	
		
			
				|  |  | +                case 'usebg':
 | 
	
		
			
				|  |  | +                    //add a circular loading gif picture to the background of contentholder
 | 
	
		
			
				|  |  | +                    $(this).addClass('loading');
 | 
	
		
			
				|  |  | +                    break;
 | 
	
		
			
				|  |  | +                case 'righttag':
 | 
	
		
			
				|  |  | +                    //add a small loading gif picture and a banner to the right top corner of contentholder
 | 
	
		
			
				|  |  | +                    if ($('#jerichotab_contentholder>.righttag').length == 0)
 | 
	
		
			
				|  |  | +                        $('<div class="righttag">正在加载...</div>').appendTo($(this));
 | 
	
		
			
				|  |  | +                    else
 | 
	
		
			
				|  |  | +                        $('#jerichotab_contentholder>.righttag').css({ display: 'block' });
 | 
	
		
			
				|  |  | +                    break;
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +        });
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +    //remove the loader
 | 
	
		
			
				|  |  | +    removeLoader: function() {
 | 
	
		
			
				|  |  | +        switch ($.fn.jerichoTab.loader) {
 | 
	
		
			
				|  |  | +            case 'usebg':
 | 
	
		
			
				|  |  | +                $('#jerichotab_contentholder').removeClass('loading');
 | 
	
		
			
				|  |  | +                break;
 | 
	
		
			
				|  |  | +            case 'righttag':
 | 
	
		
			
				|  |  | +                $('#jerichotab_contentholder>.righttag').css({ display: 'none' });
 | 
	
		
			
				|  |  | +                break;
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +});
 | 
	
		
			
				|  |  | +//})(jQuery);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +String.prototype.cut = function(len) {
 | 
	
		
			
				|  |  | +    var position = 0;
 | 
	
		
			
				|  |  | +    var result = [];
 | 
	
		
			
				|  |  | +    var tale = '';
 | 
	
		
			
				|  |  | +    for (var i = 0; i < this.length; i++) {
 | 
	
		
			
				|  |  | +        if (position >= len) {
 | 
	
		
			
				|  |  | +            tale = '...';
 | 
	
		
			
				|  |  | +            break;
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        if (this.charCodeAt(i) > 255) {
 | 
	
		
			
				|  |  | +            position += 2;
 | 
	
		
			
				|  |  | +            result.push(this.substr(i, 1));
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        else {
 | 
	
		
			
				|  |  | +            position++;
 | 
	
		
			
				|  |  | +            result.push(this.substr(i, 1));
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +    return result.join("") + tale;
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +/*
 | 
	
		
			
				|  |  | + * 右键菜单,示例:$(this).RightMenu('myMenu2',{menuList:[{menuName:"菜单1",menuclass:"1",clickEvent:"divClick(1)"}]});
 | 
	
		
			
				|  |  | + */
 | 
	
		
			
				|  |  | +$(function(){
 | 
	
		
			
				|  |  | +	document.oncontextmenu=function(){return false;}//屏蔽右键
 | 
	
		
			
				|  |  | +	document.onmousemove=mouseMove;//记录鼠标位置
 | 
	
		
			
				|  |  | +});
 | 
	
		
			
				|  |  | +var mx=0,my=0;
 | 
	
		
			
				|  |  | +function mouseMove(ev){Ev=ev||window.event;var mousePos=mouseCoords(Ev);mx=mousePos.x;my=mousePos.y;} 
 | 
	
		
			
				|  |  | +function mouseCoords(ev){
 | 
	
		
			
				|  |  | +	if(ev.pageX||ev.pageY){return{x:ev.pageX,y:ev.pageY};}
 | 
	
		
			
				|  |  | +	return{x:ev.clientX,y:ev.clientY+$(document).scrollTop()};
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +$.fn.extend({RightMenu: function(id,options){
 | 
	
		
			
				|  |  | +	options = $.extend({menuList:[]},options);
 | 
	
		
			
				|  |  | +	var menuCount=options.menuList.length;
 | 
	
		
			
				|  |  | +	if (!$("#"+id)[0]){
 | 
	
		
			
				|  |  | +		var divMenuList="<div id=\""+id+"\" class=\"div_RightMenu\"><div><ul class='ico'>";
 | 
	
		
			
				|  |  | +		for(var i=0;i<menuCount;i++){
 | 
	
		
			
				|  |  | +			divMenuList+="<li class=\""+options.menuList[i].menuclass+"\" onclick=\""+options.menuList[i].clickEvent+"\">"+options.menuList[i].menuName+"</li>";
 | 
	
		
			
				|  |  | +		}
 | 
	
		
			
				|  |  | +		divMenuList += "</ul></div><div>";
 | 
	
		
			
				|  |  | +		$("body").append(divMenuList).find("#"+id).hide().find("li")
 | 
	
		
			
				|  |  | +				.bind("mouseover",function(){$(this).addClass("RM_mouseover");})
 | 
	
		
			
				|  |  | +				.bind("mouseout",function(){$(this).removeClass("RM_mouseover");});
 | 
	
		
			
				|  |  | +		$(document).click(function(){$("#"+id).hide();});
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  | +	return this.each(function(){
 | 
	
		
			
				|  |  | +		this.oncontextmenu=function(){
 | 
	
		
			
				|  |  | +			var mw=$('body').width(),mhh=$('html').height(),mbh=$('body').height(),
 | 
	
		
			
				|  |  | +				w=$('#'+id).width(),h=$('#'+id).height(),
 | 
	
		
			
				|  |  | +				mh=(mhh>mbh)?mhh:mbh;//最大高度 比较html与body的高度
 | 
	
		
			
				|  |  | +			if(mh<h+my){my=mh-h;}//超 高
 | 
	
		
			
				|  |  | +			if(mw<w+mx){mx=mw-w;}//超 宽
 | 
	
		
			
				|  |  | +			$("#"+id).hide().css({top:my,left:mx}).show();
 | 
	
		
			
				|  |  | +			$.fn.jerichoTab.resize(); // 修正弹出菜单时tab滚动被挤下去的问题
 | 
	
		
			
				|  |  | +		}
 | 
	
		
			
				|  |  | +	});
 | 
	
		
			
				|  |  | +}});
 |