﻿(function (window) {
var orange = {};
	//version
	orange.info = {
        author : 'ariesjia' ,
		version : "0.9.1", //for 2011 BtOrange v1.0
		email:'ariesjia00@hotmail.com',
		blog:'www.btorange.com'
	}
	orange.browser = function(){
		var ua = navigator.userAgent;
	    return {
	    	ie:ua.match(/MSIE/)?parseInt(ua.match(/MSIE ([\d.]+)/)[1]):null,
	    	ff:ua.indexOf('Firefox') > -1,
			webkit : !!window.google || ua.indexOf("KHTML") > -1 || ua.indexOf("Konqueror") > -1,
			ios : ua.indexOf('iPhone OS') > -1,
			android : ua.indexOf('android') > -1
	    }
	}
	orange.suppot = function(){
		var b = orange.browser()
		return b.ie && b.ie <=8 ? b.ie < 8&& b.ie >= 6 ? 'C' : 'B' :'A';
	}
	//function
	orange.Fn = {
		isFunction: function ( obj ) {
			return typeof obj === "function";
		},
		mix: function ( self, obj, o ) {
			for ( var name in obj ) {
				if ( self[ name ] === undefined || o ) {
					self[ name ] = obj[ name ];
				}
			}
			return self;
		},
		widget:function(t,o){
			for ( var name in o ) {
				if ( o.hasOwnProperty(name)) {
					t[ name ] = o [ name ];
				}
			}
			return t;
		},
		arr:{
            pop : function(arr){
                var l = arr;
                if(!l[l.length-1]){
                    l.pop();
                }
                return l;
            },
            indexOf : (Array.prototype.indexOf) ?
            function(a, val) {
                return Array.prototype.indexOf.call(a, val);
            } :
            function(a, val) {
                for (var i=0; i<a.length; i=i+1) {
                    if (a[i] === val) {
                        return i;
                    }
                }
                return -1;
            }
		},
        bindAsEventListener : function(object, fun) {
            return function(event) {
                return fun.call(object, (event || window.event));
            }
        }
	}
    orange.load_js_hook = function(root){
        var re = /j_(\w+)/;
        var fns = {};
        $(".j", root).each(function(i){
            var m = re.exec(this.className);
            if (m) {
                var f = fns[m[1]];
                if (!f) {
                    f = eval("orange.page.init_"+m[1]);
                    fns[m[1]] = f;
                }
                f && f(this);
            }
        });
    }
    orange.url = {
		template_url : function(){
			return $('script').attr('src').match(/([A-Za-z:\/0-9-_]+)js/)[1];
		},
        getquery : function(key,url)
        {
           url = url || window.location
           new RegExp("(^|&)"+key+"=([^&]*)").exec(url.search.substr(1));
           return RegExp.$2
        },
        ishome : (location.search == null || location )? true : false ,
        iscat : null ,
        issearch : null ,
        ism : null ,
        issingle :null
    }
    orange.history = {
        location : {
            put: function(hash, win) {
                (win || window).location.hash = this.encoder(hash);
            },
            get: function(win) {
                var hash = ((win || window).location.hash).replace(/^#/, '');
                try {
                    return $.browser.mozilla ? hash : decodeURIComponent(hash);
                }
                catch (error) {
                    return hash;
                }
            }
        },
        iframe : {

        }
    }
    orange.cache = {
        cookie:function(name,key,options){
            if (typeof key != 'undefined') { // name and value given, set cookie
                options = options || {};
                if (key === null) {
                    key = '';
                    options.expires = -1;
                }
                var expires = '';
                if (options.expires && (typeof options.expires == 'number' || options.expires.toUTCString)) {
                    var date;
                    if (typeof options.expires == 'number') {
                        date = new Date();
                        date.setTime(date.getTime() + (options.expires * 24 * 60 * 60 * 1000));
                    } else {
                        date = options.expires;
                    }
                    expires = '; expires=' + date.toUTCString(); // use expires attribute, max-age is notsupported by IE
                }
                var path = options.path ? '; path=' + options.path : '';
                var domain = options.domain ? '; domain=' + options.domain : '';
                var secure = options.secure ? '; secure' : '';
                document.cookie = [name, '=', encodeURIComponent(key), expires, path, domain, secure].join('');
            } else { // only name given, get cookie
                var cookieValue = null;
                if (document.cookie && document.cookie != '') {
                    var cookies = document.cookie.split(';');
                    for (var i = 0; i < cookies.length; i++) {
                        var cookie = jQuery.trim(cookies[i]);
                        // Does this cookie string begin with the name we want?
                        if (cookie.substring(0, name.length + 1) == (name + '=')) {
                            cookieValue = decodeURIComponent(cookie.substring(name.length + 1));
                            break;
                        }
                    }
                }
                return cookieValue;
            }
        }
    }
    orange.page = {
        init_book:function(o)
        {
            var bookIdlist = orange.Fn.arr.pop($("#bookidlist").val().split(",")),
            hashnum = parseInt(orange.history.location.get().replace('book','')),
            $o = $(o);
            orange.use("pager",function(){
                var direct = new orange.expand.pager($("#post_direct-r .post_entry ul"),12);
                direct.handlepostion($("#post_direct-r .post_hd"))
                direct.init();
            })
            orange.use("book",function(){
                var b = window.orangebook = new orange.expand.book($o,bookIdlist,{teWay:function(e){
                    orange.expand.alert(e);
                }});
                b.init();
                $(".mod_book_ft",$o).show('fast')
                if(orange.browser().ff){
                    b.changeConfig({'speed':'fast'});
                }
                var totalnum = b.getlist().length,
                changehref = function(num){
                    num = parseInt(num);
                    var pvnum = num == 0 ? "javascript:void(0);" : "#book"+(num-2),nextnum = num == ( totalnum%2 == 1 ? totalnum - 1 : totalnum ) ? "javascript:void(0);" : "#book"+(num+1);
                    $("#book_prev",$o).attr("href",pvnum);
                    $("#book_next",$o).attr("href",nextnum);
                };
                b.bindConfig('cur',function(cur){
                    changehref(cur);
                })
                if(hashnum){
                    b.pageto((hashnum+1),{'immediate':true})
                }
                $("#book_next",$o).bind('click',function(){
                    b.next();
                })
                $("#book_prev",$o).bind('click',function(){
                    b.prev();
                })
                $("#direct li a",$o).bind('click',function(){
                    b.pageto(parseInt($(this).parent().find(".pagenum").text())+1);
                    return false;
                })
            });
        },
        init_search:function(o){
            var $o=$(o),$input=$(":text",$o),$sub=$(":submit",$o),text=$input.attr('placeholder');
            if(orange.suppot() >= 'A' && !orange.browser().webkit)
			{
                $input.val(text);
                $input.focus(function(){
                    if($input.val() == text){
                        $input.val("");
                    }
                })
                $input.blur(function(){
                    if($input.val() == ""){
                        $input.val(text);
                    }
                })
			}
            $("form",$o).submit(function(){
                var v = $input.val();
                if( v==text|| v == ""){
                    orange.expand.alert("请输入搜索关键字进行查询");
                    return false;
                }
                if( v[0] == ":" ){
                    switch(v.slice(1)){
                        case "config" : {
                            return false;
                        }
                        case "ariesjia" : {
                            orange.expand.alert("这将是一场革命",{title:"<h3>ariesjia</h3>",time:null});
                            return false;
                        }
                    }
                }
            });
        },
        init_comments:function(o){
            var $o = $(o) , ajaxurl = 'http://www.btorange.com/wp-content/themes/orange/comments-ajax.php',
            edit, num = 1, comm_array=[]; comm_array.push(''),
            $comments = $('#comments-title'); // 評論數的 ID
            $cancel = $('#cancel-comment-reply-link');
            $submit = $('#commentform #submit'),
            $comment = $('#commentform #comment');
            $body = (window.opera) ? (document.compatMode == "CSS1Compat" ? $('html') : $('body')) : $('html,body');
            $('#commentform').submit(function() {
                $submit.attr('disabled', true).fadeTo('slow', 0.5);
                /** Ajax */
                var loading = new orange.expand.fbox('<p class="comment_loading">评论发送中....</p>',{
                    time:null
                });
                $.ajax( {
                    url: ajaxurl,
                    data: $(this).serialize(),
                    type: $(this).attr('method'),
                    error: function(request){
                        loading.init('<p class="comment_error">'+ request.responseText + '</p>',{
                            title : '<h3 title="提示">不给力</h3>',
                            time : 2000
                        });
                        setTimeout(function() {
                            $submit.attr('disabled', false).fadeTo('slow', 1);
                        },3000);
                    },
                    success: function(data){
                        data = $(data);
                        var post = $('#comment_post_ID').val(),
                            pdep = $('#comment_parent').val(),
                            clist = $(".commentlist",o),
                            addComtitle = function(){
                                var $comtitle = $("#comments-title",$o),
                                    t = $comtitle.text(),
                                    nn = t.match(/(\d.)/)[1];
                                    $comtitle.text(t.replace(nn,parseInt(nn)+1));
                        };
                        loading.init('<p class="comment_success">祝贺你，你完成了一次伟大的留言。</p>',{
                            time : 1500
                        });
                        if(pdep == 0 && !clist.length){
                            $('#respond').before('<h3 id="comments-title">已经0条留言</h3><ol class="commentlist"><li class="comment even thread-even depth-1" >' + data.html() + '</li></ol>');
                            orange.page.init_single_bft();
                        }
                        else if(pdep ==0 ){
                            clist.append(data);
                            orange.page.init_single_bft();
                        }
                        else{
                            $('#respond').before(data);
                            orange.page.init_single_bft();
                        }
                        addComtitle();
                        $comment.val("");
                        $cancel.click();
                        $submit.attr('disabled', false).fadeTo('slow', 1);
                    }
                }); // end Ajax
                return false;
            });
            window.addComment={moveForm:function(d,f,i,c){var m=this,a,h=m.I(d),b=m.I(i),l=m.I("cancel-comment-reply-link"),j=m.I("comment_parent"),k=m.I("comment_post_ID");if(!h||!b||!l||!j){return}m.respondId=i;c=c||false;if(!m.I("wp-temp-form-div")){a=document.createElement("div");a.id="wp-temp-form-div";a.style.display="none";b.parentNode.insertBefore(a,b)}h.parentNode.insertBefore(b,h.nextSibling);if(k&&c){k.value=c}j.value=f;l.style.display="";l.onclick=function(){var n=addComment,e=n.I("wp-temp-form-div"),o=n.I(n.respondId);if(!e||!o){return}n.I("comment_parent").value="0";e.parentNode.insertBefore(o,e);e.parentNode.removeChild(e);this.style.display="none";this.onclick=null;return false};try{m.I("comment").focus()}catch(g){}return false},I:function(a){return document.getElementById(a)}};
        },
        init_single_bft:function(o){
            var $o = $(o) || $('.mod_book_ft');
            if(orange.suppot() <= 'C'){
                $(".shadow_ls",$o).add(".book_lf",$o).css('height',$("#content").outerHeight());
            }
        },
        init_aside : function(o){
            var $o = $(o),col_main = $o.parent().find(".col_main"),
                subheight = parseInt(col_main.height())-20;
            if($o.height() < subheight){
                $o.css('height',subheight);
            }

        },
        init_runcode : function(o){
            var $o = $(o),$rb = $('.runcode_button',o),id = $('textarea',$o).attr('id');
            function runcode_open_new(element)
            {
                var code = document.getElementById(element).value;
                var win = window.open("", "", "");
                win.opener = null;
                win.document.write(code);
                win.document.close();
            }
            function saveCode(obj,filename)
            {
                if(!document.all){alert("您的浏览器不支持此方法。");	return;
                }
                var winname = window.open("", "", "top=10000,left=10000");
                winname.document.open("text/html", "replace");
                winname.document.write(document.getElementById(obj).value);
                winname.document.execCommand("saveas", "", filename + ".htm");
                winname.close();
            }
            function runcode_copy(element)
            {
                var codeobj = document.getElementById(element);
                var meintext = codeobj.value;
                try {
                 if (window.clipboardData)
                   {
                   // the IE-manier
                   window.clipboardData.setData("Text", meintext);
                   // waarschijnlijk niet de beste manier om Moz/NS te detecteren;
                   // het is mij echter onbekend vanaf welke versie dit precies werkt:
                   }
                   else if (window.netscape)
                   {
                   // dit is belangrijk maar staat nergens duidelijk vermeld:
                   // you have to sign the code to enable this, or see notes below
                   netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect');
                   // maak een interface naar het clipboard
                   var clip = Components.classes['@mozilla.org/widget/clipboard;1'].createInstance(Components.interfaces.nsIClipboard);
                   if (!clip) return;
                   // maak een transferable
                   var trans = Components.classes['@mozilla.org/widget/transferable;1']
                                  .createInstance(Components.interfaces.nsITransferable);
                   if (!trans) return;
                   // specificeer wat voor soort data we op willen halen; text in dit geval
                   trans.addDataFlavor('text/unicode');
                   // om de data uit de transferable te halen hebben we 2 nieuwe objecten
                   // nodig om het in op te slaan
                   var str = new Object();
                   var len = new Object();
                   var str = Components.classes["@mozilla.org/supports-string;1"].createInstance(Components.interfaces.nsISupportsString);
                   var copytext=meintext;
                   str.data=copytext;
                   trans.setTransferData("text/unicode",str,copytext.length*2);
                   var clipid=Components.interfaces.nsIClipboard;
                   if (!clip) return false;
                   clip.setData(trans,null,clipid.kGlobalClipboard);
                   }
                } catch (e) {alert('因为安全策略的原因，此项功能已被您的浏览器禁止。关闭此窗口，然后按下“Ctrl+C”组合键完成复制。');		codeobj.focus();
                }
                codeobj.select();
               return false;
            }
            $rb.eq(0).bind('click',function(){
                runcode_open_new(id);
            });
            $rb.eq(1).bind('click',function(){
                runcode_copy(id);
            });
            $rb.eq(2).bind('click',function(){
                saveCode(id,id);
            });
        },
        init_ishare : function(o){
            var $o = $(o);
            $o.hover(function(){
                $('.mod_ishare_wrap',$o).animate( { 'right' : '0px' }, 100)
            },function(){
                $('.mod_ishare_wrap',$o).animate( { 'right': '-200px' }, 100)
            })
            orange.use("ishare",function(){

            })
        },
        init_addFavicon : function(o){
            var $o = $(o);
            $("li",$o).each(function(i){
                var $this = $(this);
                var $a = $(this).find("a");
                var url ='http://www.google.com/s2/favicons?domain='+$a.attr("href").replace(/^(http:\/\/[^\/]+).*$/, '$1').replace( 'http://', '' );
                $a.css({
                'background':"url('"+url+"') 0 center no-repeat"
                });
            });
        },
        init_booksetting : function(o){
            var $o = $(o),$bs = $("#booksetting"),$bsf = $("#booksetting form"),
            bsetting = orange.cache.cookie('booksetting'),sobj = null,speedbar = null;
            function setconfig(){
                if(bsetting == null){
                    bsetting = "blogtype=book&speed=3&adapt=adapton&help=helpon";
                }
                if(sobj==null){
                    sobj = {}
                    jQuery.each(bsetting.split("&"),function(i,item){
                        var nk = item.split("=")
                        sobj[nk[0]]=nk[1];
                    })
                }
                jQuery.each(sobj,function(name,key){
                    if(name=='blogtype')
                    {
                        key = orange.cache.cookie('blogtype');
                    }
                    $("input[name='"+name+"']",$bsf).val([key]);
                })
            }
            function change(setting){
                var sbj = {};
                jQuery.each(bsetting.split("&"),function(i,item){
                    var nk = item.split("=")
                    sbj[nk[0]]=nk[1];
                })
                try {
                 var speedtable = ['slow','normal','fast','esin','none'],
                 speed = speedtable[sbj.speed];
                   orangebook.changeConfig({'speed':speed});
                } catch(e) {}
                orange.cache.cookie('blogtype',sbj.blogtype);
            }
            setconfig();
            var bs = new orange.expand.fbox($o,{
                time:null,
                hide:true,
                opacity : "0.6",
                overlay : true,
                title:'<h3>设置</h3>',
                button:['确定修改','取消'],
                buttonevent :[function(){
                    try {
                        orange.cache.cookie('blogtype',$("input[name='blogtype']:checked",$bsf).val());
                        bsetting = $bsf.serialize();
                        change(bsetting);
                        orange.cache.cookie('booksetting',bsetting);
                        this.close();
                        orange.expand.alert("设置成功",{time:2500});
                    } catch(e) {}
                },function(){
                    this.close();sobj = null;
                    setconfig();
                }]
            });
            $(document).bind('show.orange.expand.fbox',function(){
                if(speedbar == null){
                    speedbar = new orange.expand.dragbar($("#speedbar"),{
                        width:100,
                        valtext:['慢','中','快','缓动','无动画'],
                        val:[0,1,2,3,4]
                    });
                }
            });
            $o.bind('click',function(){
                bs.show();
                return false;
            })
        }
    }
	// load js
    orange.expand = {};
	orange.Fn.widget(orange,{
		use : function(mod,callback){
            if(orange.expand[mod])
            {
                if(callback){
                    callback();
                }
                return;
            }
			var element = document.createElement("script"),url,temurl = orange.url.template_url();
			switch(mod.toLowerCase()){
				case 'jscroll' : url = temurl +'js/jscroll.js';break;
				case 'book' : url = 'http://www.btorange.com/wp-content/themes/orange/js/orange.book.js';break;
				default :  url = temurl+'js/orange.'+mod.toLowerCase()+'.js';
			};
			element.src = url;
			element.type = 'text/javascript';
			element.language = 'javascript';
			document.getElementsByTagName('head')[0].appendChild(element);
			   if(window.ActiveXObject)
			   {
				    element.onreadystatechange = function() {
				    	var self = this;
				    	var state = self.readyState;
					    if (state == "loaded" || state == "interactive" || state == "complete") {
					      this.onreadystatechange = null;
						  if(callback){
						  	callback();
						  }
					    }
				    }
			    }
			    else
			    {
					element.onload = function() {
						element.onload = null;
						  if(callback){
						  	callback();
						  }
					};
			    }
		}
	})
	window.orange = orange;
})(window);
(function (window) {
    var alertbox = null;

    orange.expand.drag = function(elem,setting){
        var self = this,Bind = function(object, fun) {
	    return function() {
		    return fun.apply(object, arguments);
	    }
        };
        this.destroy = function(){
            this._handle.unbind("mousedown");
            this._fM = this._fS = null;
        }
        this.init = function(){
            this.drag =  $(elem);
            this._x = this._y = 0;
            this.dw = this.drag.width();
            this.dh = this.drag.height();
            this._marginLeft = this._marginTop = 0;
            this.setoption();
            this._handle = this.option.handle || this.drag;
            this._handle.css({'cursor':'move'})
            this.drag.css({'position':'absolute'});
            this._handle.bind("mousedown",function(e){self.start(e);});
            //event object
            this._fM = orange.Fn.bindAsEventListener(this, this.move);
            this._fS = Bind(this, this.stop);
        }
        this.setoption = function(){
            this.option =$.fn.extend({
                handle : "" ,
                lockx : false ,
                locky : false ,
                maxl : 0 ,
                maxt : 0 ,
                maxr : $(document).width() ,
                maxb : $(document).height() ,
                lock : false ,
                grid : null,
                comcontainer : null ,
                container : "",
                onstart : function(){},
                onmove : function(){},
                onstop : function(){}
            },setting);
        }
        this.start = function(e){
            if(this.option.lock){
                return;
            }
            this._x = e.clientX - this.drag.offset().left;
            this._y = e.clientY - this.drag.offset().top;
            $(document).bind("mousemove",this._fM).bind("mouseup",this._fS);
            if(orange.browser().ie){
                var handle_r = this._handle[0];
                handle_r.attachEvent("onlosecapture",this._fS);
                handle_r.setCapture();
            }else{
                window.addEventListener("blur",this._fS, false);
                event.preventDefault();
            }
            this.option.onstart();
        }
        this.move = function(e){
            window.getSelection ? window.getSelection().removeAllRanges() : document.selection.empty();
            var l = e.clientX - this._x,t = e.clientY - this._y,ml = this.option.maxl,mt = this.option.maxt,mb = this.option.maxb , mr = this.option.maxr;
            if(this.option.comcontainer){
                l = l - this.option.comcontainer.offset().left;
                t = l - this.option.comcontainer.offset().top;
            }
            if(this.option.container){
                var c = this.option.container;
                ml = Math.max(ml, 0);
                mt = Math.max(mt, 0);
                mr = Math.min(mr, c.width());
                mb = Math.min(mb, c.height());
            }
            //else{
                l = Math.max(Math.min(l,mr-this.dw),ml);
                t = Math.max(Math.min(t,mb-this.dh),mt);
            //}
            if(!this.option.lockx){
                if(this.option.grid){
                    var rl = parseInt(this.drag.css('left') == "auto" ? 0 : this.drag.css('left'));
                    if(l-rl>=this.option.grid[0]||l-rl<=-this.option.grid[0]){
                        var gl = this.option.grid[0];
                        if(l - rl >= gl){
                            ll = rl+gl;
                        }
                        if(l - rl <= -gl){
                            ll = rl-gl;
                        }
                         console.log("ll: " + ll);
                        this.drag.css({left:ll});
                    }
                }else{
                    this.drag.css({left:l});
                }
            }if(!this.option.locky){
                if(this.option.grid){
                    var rt = parseInt(this.drag.css('top'));
                    if(t-rt>=this.option.grid[1]||t-rt<=-this.option.grid[1]){
                        this.drag.css({top:t});
                    }
                }else{
                    this.drag.css({top:t});
                }
            }
            this.option.onmove();
        }
        this.stop = function(){
            this.option.onstop();
            $(document).unbind("mousemove",this._fM).unbind("mouseup",this._fS);
            if(orange.browser().ie){
                var handle_r = this._handle[0];
                handle_r.detachEvent("onlosecapture",this._fS);
                handle_r.releaseCapture();
            }else{
                window.removeEventListener("blur",this._fS, false);
            }
        }
        this.init();
    }
    orange.expand.dragbar = function(obj,setting){
        var dragbar ='<div class="dragbar"><div class="dragbarpanel"><span></span></div><em></em><div>',
        $db = $(dragbar),$dbhandel = $("span",$db),$dbvtext = $("em",$db),dragobj,$op = obj.parent(),valnum = setting.val.length,prew = setting.width/(valnum-1),self = this;
        this.init = function(){
            obj.hide();
            //obj.after($db);
            $db.appendTo($op);
            this.cur = obj.val();
            dragobj = new orange.expand.drag($dbhandel,{
                comcontainer : $db,
                locky : true,
                maxr : setting.width+8,
                grid : [prew,1],
                onmove : function(){
                    self.cur = Math.ceil(parseInt($dbhandel.css("left"))/prew);
                    obj.val(setting.val[self.cur]);
                    self.change();
                }
            });
            this.bind();
        }
        this.bind = function(){
            var objpos = orange.Fn.arr.indexOf(setting.val,parseInt(this.cur));
            $dbhandel.css('left',objpos*prew);
            this.change();
        }
        this.change = function(){
            $dbvtext.text(setting.valtext[this.cur])
        }
        this.init();
    }
    orange.expand.alert = function(e,setting){
        if(alertbox){
            alertbox.init(e);
        }else{
            alertbox = new this.fbox(e,setting);
        }
    }
    orange.expand.fbox = function(data,setting){
        var self = this,fboxHtml  ='<div class="mod_fbox"> \
          <div class="popup"> \
            <table> \
              <tbody> \
                <tr> \
                  <td class="tl"/><td class="b"/><td class="tr"/> \
                </tr> \
                <tr> \
                  <td class="b"/> \
                  <td class="body"> \
                    <div class="hd"></div>\
                    <div class="bd"> \
                    </div> \
                    <div class="ft"> \
                    </div> \
                    <a href="javascript:void(0)" class="mod_fbox_close"><button type="button" title="点击关闭">×</button></a>\
                  </td> \
                  <td class="b"/> \
                </tr> \
                <tr> \
                  <td class="bl"/><td class="b"/><td class="br"/> \
                </tr> \
              </tbody> \
            </table> \
          </div> \
        </div>',$fbox = $(fboxHtml),timeout,dragobj;
        setting = $.fn.extend({
          opacity : "0.4",
          overlay : false,
          classname : null ,
          title : '<h3 title="提示">提示</h3>',
          time : 1500,
          hide : false,
          ifremove : true,
          button:[],
          buttonevent:[]
        },setting),buttonHtml = '<button></button>';
        this.init = function(data,config){
            if(arguments.length>1){
                setting = $.fn.extend(setting,config)
            }
            $("body").append($fbox.addClass(setting.classname));
            $('.body .hd',$fbox).html(setting.title);
            $('.body .bd',$fbox).html(data);
            this.addbutton();
            this.show();
        }
        this.addbutton = function(){
            if(setting.button.length){
                for(var i = 0; i<setting.button.length ;i++){
                     $('.body .ft',$fbox).append($(buttonHtml).clone().text(setting.button[i]).attr('title',setting.button[i]));
                }
            }
        }
        this.show = function(){
            showOverlay();
            $fbox.show();
            $fbox.css({
                'left': $('body').width() / 2 - ($fbox.width() / 2),
                'top': $('body').scrollTop() + $(window).height() / 2 - ($fbox.height() / 2)
            });
            this.bind();
        }
        this.bind = function(){
          var self = this,setTime = function(){
              if(setting.time != null && typeof setting.time == "number"){
                cleartime(timeout);
                timeout = window.setTimeout(function(){
                    self.close();
                },setting.time);
              }
          }
          $(document).bind('keydown.orange.expand.fbox', function(e) {
            if (e.keyCode == 27){
                self.close();
            }
            return true;
          })
          $(".mod_fbox_close button",$fbox).click(function(){
              self.close();
          })
          setTime();
          if(setting.button.length){
              $('.body .ft button',$fbox).each(function(i,dom){
                  if(setting.buttonevent[i]){
                      $(dom).bind('click',function(){
                          setting.buttonevent[i].call(self);
                      });
                  }
              })
          }
          dragobj = new orange.expand.drag($fbox,{
              handle:$(".hd",$fbox),
              onstart:function(){
                  cleartime(timeout);
              },
              onstop:function(){
                  setTime();
              }
          });
          $(document).trigger('show.orange.expand.fbox');
        }
        this.loading = function(){

        }
        function cleartime(t){
            window.clearTimeout(t);
			t = null;
        }
        this.close = function(){
            dragobj.destroy();
            $(document).trigger('close.orange.expand.fbox');
            if(!skipOverlay()){
                $('.mod_overlay').fadeOut('fast');
            }
            if(!!setting.ifremove)
            {
                $fbox.remove();
                return;
            }else{
                $fbox.fadeOut('normal');
            }
            $('.body .ft button',$fbox).unbind();
        }
        if(data.ajax){
            fillFromAjax(data);
        }else if(data.image){
            fillFromImage(data);
        }else if(data.div){
            fillFromHtml(data);
        }else if (orange.Fn.isFunction(data)){
            data.call($)
        }else if(data.jquery){
            fillFromJq(data);
        }else{
            this.init(data);
        }
        function fillFromHtml(data){
            var data = $(data.div);
            setting.ifremove = false;
            data.replaceWith($fbox);
            $('.body .hd',$fbox).html(setting.title);
            $('.body .bd',$fbox).html(data);
            self.addbutton();
            if(!setting.hide){
                self.show();
            }
        }
        function fillFromJq(data){
            data.each(function(i,elem){
                elem = $(elem)
                if(elem.is("a")){
                    var href = elem.attr('href');
                    if(href.match(/#/)){
                        var d = $("#"+href.match(/#([A-Za-z:\/0-9-_]+)/)[1]);
                        fillFromHtml({'div':d});
                    }else{
                        fillFromAjax(href);
                    }
                }
            })
        }
        function fillFaceboxFromImage(href) {
            var image = new Image()
            image.onload = function() {

            }
            image.src = href;
        }
        function fillFaceboxFromAjax(href) {
            $.get(href, function(data){

            })
        }
        function skipOverlay() {
            return (setting.overlay == false || setting.opacity === null);
        }
        function showOverlay() {
            if (skipOverlay()){
                return false;
            }
            if ($('.mod_overlay').length == 0){
                $("body").append('<div class="mod_overlay"></div>');
            }
            $('.mod_overlay').hide().css({opacity:setting.opacity}).click(function(){
            }).fadeIn(200)
            return false
        }
    }
    orange.expand.pager = function(selector,listnum){
        selector = $(selector);
        var cw,ch,getchildwh = function(){
            cw = selector.children().outerWidth();
            ch = selector.children().outerHeight();
        },childnum = selector.children().length,sp,self=this,scrollh,cur=1,$li,
        pagednum = Math.ceil(childnum/listnum);
        this.init = function(){
            getchildwh();
            selector.wrap("<div class='mod_pager'></div>");
            selector = selector.parent();
            if(!this.hPostion){
                this.hPostion = selector.parent();
            }
            this.handle();
            scrollh = ch * listnum ;
            selector.css({
                "height":scrollh
            });
            this.bind();
            this.setcur(1);
        }
        this.handlepostion = function(po){
            this.hPostion = po;
        }
        this.handle = function(){
            var s = "<ul class='mod_pager_btn clearfix'><li class='pager_prev'><a rel='prev'>&lt;</a></li><li class='pager_next'><a rel='next'>&gt;</a></li>";
            for(var i=1;i<=pagednum;i++){
                s+="<li><a href='javascript:void(0)'>"+Number(i)+"</a></li>";
            }
            this.hPostion.append(s+"</ul>");
        }
        this.setcur = function(n){
            $li.siblings().removeClass("mod_pager_btn_cur").end().eq(n+1).addClass("mod_pager_btn_cur");
            var $btn1 = $li.eq(0),$btn2 = $li.eq(1);
            if( n == 1 ){
                $btn1.addClass("mod_pager_btn_dis");
            }
            else{
                $btn1.removeClass("mod_pager_btn_dis");
            }
            if( n == pagednum){
                $btn2.addClass("mod_pager_btn_dis");
            }
            else{
                $btn2.removeClass("mod_pager_btn_dis");
            }
        }
        this.scroll = function(n){
            cur = parseInt(n);
            this.setcur(cur);
            var $ul = $("ul",selector)
            $ul.animate({"top":-scrollh*(n-1)},500,function(){
                //$(this).css({'top':0m}).find("li:first").appendTo(this);
            });
        }
        this.bind = function(){
            $li = this.hPostion.find(".mod_pager_btn li");
            $li.eq(0).click(function(){
                if( cur == 1 ){
                    return false;
                }
                self.scroll(cur-1);
            })
            $li.eq(1).click(function(){
                if( cur == pagednum ){
                    return false;
                }
                self.scroll(cur+1);
            })
            $li.slice(2).bind('click',function(){
                var gon = $(this).text();
                if(gon == cur ){
                    return false;
                }
                self.scroll(gon);
            })
        }
    }
})(window);


$(function(){
    orange.load_js_hook(document);
	var isIE = orange.browser().ie;
	if(!!isIE && isIE  <= 8)
	{
		$('body').addClass('ie')
	}
})
