/*      SWFObject v2.2 <http://code.google.com/p/swfobject/> 
        is released under the MIT License <http://www.opensource.org/licenses/mit-license.php> 
*/
var swfobject=function(){var D="undefined",r="object",S="Shockwave Flash",W="ShockwaveFlash.ShockwaveFlash",q="application/x-shockwave-flash",R="SWFObjectExprInst",x="onreadystatechange",O=window,j=document,t=navigator,T=false,U=[h],o=[],N=[],I=[],l,Q,E,B,J=false,a=false,n,G,m=true,M=function(){var aa=typeof j.getElementById!=D&&typeof j.getElementsByTagName!=D&&typeof j.createElement!=D,ah=t.userAgent.toLowerCase(),Y=t.platform.toLowerCase(),ae=Y?/win/.test(Y):/win/.test(ah),ac=Y?/mac/.test(Y):/mac/.test(ah),af=/webkit/.test(ah)?parseFloat(ah.replace(/^.*webkit\/(\d+(\.\d+)?).*$/,"$1")):false,X=!+"\v1",ag=[0,0,0],ab=null;if(typeof t.plugins!=D&&typeof t.plugins[S]==r){ab=t.plugins[S].description;if(ab&&!(typeof t.mimeTypes!=D&&t.mimeTypes[q]&&!t.mimeTypes[q].enabledPlugin)){T=true;X=false;ab=ab.replace(/^.*\s+(\S+\s+\S+$)/,"$1");ag[0]=parseInt(ab.replace(/^(.*)\..*$/,"$1"),10);ag[1]=parseInt(ab.replace(/^.*\.(.*)\s.*$/,"$1"),10);ag[2]=/[a-zA-Z]/.test(ab)?parseInt(ab.replace(/^.*[a-zA-Z]+(.*)$/,"$1"),10):0}}else{if(typeof O.ActiveXObject!=D){try{var ad=new ActiveXObject(W);if(ad){ab=ad.GetVariable("$version");if(ab){X=true;ab=ab.split(" ")[1].split(",");ag=[parseInt(ab[0],10),parseInt(ab[1],10),parseInt(ab[2],10)]}}}catch(Z){}}}return{w3:aa,pv:ag,wk:af,ie:X,win:ae,mac:ac}}(),k=function(){if(!M.w3){return}if((typeof j.readyState!=D&&j.readyState=="complete")||(typeof j.readyState==D&&(j.getElementsByTagName("body")[0]||j.body))){f()}if(!J){if(typeof j.addEventListener!=D){j.addEventListener("DOMContentLoaded",f,false)}if(M.ie&&M.win){j.attachEvent(x,function(){if(j.readyState=="complete"){j.detachEvent(x,arguments.callee);f()}});if(O==top){(function(){if(J){return}try{j.documentElement.doScroll("left")}catch(X){setTimeout(arguments.callee,0);return}f()})()}}if(M.wk){(function(){if(J){return}if(!/loaded|complete/.test(j.readyState)){setTimeout(arguments.callee,0);return}f()})()}s(f)}}();function f(){if(J){return}try{var Z=j.getElementsByTagName("body")[0].appendChild(C("span"));Z.parentNode.removeChild(Z)}catch(aa){return}J=true;var X=U.length;for(var Y=0;Y<X;Y++){U[Y]()}}function K(X){if(J){X()}else{U[U.length]=X}}function s(Y){if(typeof O.addEventListener!=D){O.addEventListener("load",Y,false)}else{if(typeof j.addEventListener!=D){j.addEventListener("load",Y,false)}else{if(typeof O.attachEvent!=D){i(O,"onload",Y)}else{if(typeof O.onload=="function"){var X=O.onload;O.onload=function(){X();Y()}}else{O.onload=Y}}}}}function h(){if(T){V()}else{H()}}function V(){var X=j.getElementsByTagName("body")[0];var aa=C(r);aa.setAttribute("type",q);var Z=X.appendChild(aa);if(Z){var Y=0;(function(){if(typeof Z.GetVariable!=D){var ab=Z.GetVariable("$version");if(ab){ab=ab.split(" ")[1].split(",");M.pv=[parseInt(ab[0],10),parseInt(ab[1],10),parseInt(ab[2],10)]}}else{if(Y<10){Y++;setTimeout(arguments.callee,10);return}}X.removeChild(aa);Z=null;H()})()}else{H()}}function H(){var ag=o.length;if(ag>0){for(var af=0;af<ag;af++){var Y=o[af].id;var ab=o[af].callbackFn;var aa={success:false,id:Y};if(M.pv[0]>0){var ae=c(Y);if(ae){if(F(o[af].swfVersion)&&!(M.wk&&M.wk<312)){w(Y,true);if(ab){aa.success=true;aa.ref=z(Y);ab(aa)}}else{if(o[af].expressInstall&&A()){var ai={};ai.data=o[af].expressInstall;ai.width=ae.getAttribute("width")||"0";ai.height=ae.getAttribute("height")||"0";if(ae.getAttribute("class")){ai.styleclass=ae.getAttribute("class")}if(ae.getAttribute("align")){ai.align=ae.getAttribute("align")}var ah={};var X=ae.getElementsByTagName("param");var ac=X.length;for(var ad=0;ad<ac;ad++){if(X[ad].getAttribute("name").toLowerCase()!="movie"){ah[X[ad].getAttribute("name")]=X[ad].getAttribute("value")}}P(ai,ah,Y,ab)}else{p(ae);if(ab){ab(aa)}}}}}else{w(Y,true);if(ab){var Z=z(Y);if(Z&&typeof Z.SetVariable!=D){aa.success=true;aa.ref=Z}ab(aa)}}}}}function z(aa){var X=null;var Y=c(aa);if(Y&&Y.nodeName=="OBJECT"){if(typeof Y.SetVariable!=D){X=Y}else{var Z=Y.getElementsByTagName(r)[0];if(Z){X=Z}}}return X}function A(){return !a&&F("6.0.65")&&(M.win||M.mac)&&!(M.wk&&M.wk<312)}function P(aa,ab,X,Z){a=true;E=Z||null;B={success:false,id:X};var ae=c(X);if(ae){if(ae.nodeName=="OBJECT"){l=g(ae);Q=null}else{l=ae;Q=X}aa.id=R;if(typeof aa.width==D||(!/%$/.test(aa.width)&&parseInt(aa.width,10)<310)){aa.width="310"}if(typeof aa.height==D||(!/%$/.test(aa.height)&&parseInt(aa.height,10)<137)){aa.height="137"}j.title=j.title.slice(0,47)+" - Flash Player Installation";var ad=M.ie&&M.win?"ActiveX":"PlugIn",ac="MMredirectURL="+O.location.toString().replace(/&/g,"%26")+"&MMplayerType="+ad+"&MMdoctitle="+j.title;if(typeof ab.flashvars!=D){ab.flashvars+="&"+ac}else{ab.flashvars=ac}if(M.ie&&M.win&&ae.readyState!=4){var Y=C("div");X+="SWFObjectNew";Y.setAttribute("id",X);ae.parentNode.insertBefore(Y,ae);ae.style.display="none";(function(){if(ae.readyState==4){ae.parentNode.removeChild(ae)}else{setTimeout(arguments.callee,10)}})()}u(aa,ab,X)}}function p(Y){if(M.ie&&M.win&&Y.readyState!=4){var X=C("div");Y.parentNode.insertBefore(X,Y);X.parentNode.replaceChild(g(Y),X);Y.style.display="none";(function(){if(Y.readyState==4){Y.parentNode.removeChild(Y)}else{setTimeout(arguments.callee,10)}})()}else{Y.parentNode.replaceChild(g(Y),Y)}}function g(ab){var aa=C("div");if(M.win&&M.ie){aa.innerHTML=ab.innerHTML}else{var Y=ab.getElementsByTagName(r)[0];if(Y){var ad=Y.childNodes;if(ad){var X=ad.length;for(var Z=0;Z<X;Z++){if(!(ad[Z].nodeType==1&&ad[Z].nodeName=="PARAM")&&!(ad[Z].nodeType==8)){aa.appendChild(ad[Z].cloneNode(true))}}}}}return aa}function u(ai,ag,Y){var X,aa=c(Y);if(M.wk&&M.wk<312){return X}if(aa){if(typeof ai.id==D){ai.id=Y}if(M.ie&&M.win){var ah="";for(var ae in ai){if(ai[ae]!=Object.prototype[ae]){if(ae.toLowerCase()=="data"){ag.movie=ai[ae]}else{if(ae.toLowerCase()=="styleclass"){ah+=' class="'+ai[ae]+'"'}else{if(ae.toLowerCase()!="classid"){ah+=" "+ae+'="'+ai[ae]+'"'}}}}}var af="";for(var ad in ag){if(ag[ad]!=Object.prototype[ad]){af+='<param name="'+ad+'" value="'+ag[ad]+'" />'}}aa.outerHTML='<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"'+ah+">"+af+"</object>";N[N.length]=ai.id;X=c(ai.id)}else{var Z=C(r);Z.setAttribute("type",q);for(var ac in ai){if(ai[ac]!=Object.prototype[ac]){if(ac.toLowerCase()=="styleclass"){Z.setAttribute("class",ai[ac])}else{if(ac.toLowerCase()!="classid"){Z.setAttribute(ac,ai[ac])}}}}for(var ab in ag){if(ag[ab]!=Object.prototype[ab]&&ab.toLowerCase()!="movie"){e(Z,ab,ag[ab])}}aa.parentNode.replaceChild(Z,aa);X=Z}}return X}function e(Z,X,Y){var aa=C("param");aa.setAttribute("name",X);aa.setAttribute("value",Y);Z.appendChild(aa)}function y(Y){var X=c(Y);if(X&&X.nodeName=="OBJECT"){if(M.ie&&M.win){X.style.display="none";(function(){if(X.readyState==4){b(Y)}else{setTimeout(arguments.callee,10)}})()}else{X.parentNode.removeChild(X)}}}function b(Z){var Y=c(Z);if(Y){for(var X in Y){if(typeof Y[X]=="function"){Y[X]=null}}Y.parentNode.removeChild(Y)}}function c(Z){var X=null;try{X=j.getElementById(Z)}catch(Y){}return X}function C(X){return j.createElement(X)}function i(Z,X,Y){Z.attachEvent(X,Y);I[I.length]=[Z,X,Y]}function F(Z){var Y=M.pv,X=Z.split(".");X[0]=parseInt(X[0],10);X[1]=parseInt(X[1],10)||0;X[2]=parseInt(X[2],10)||0;return(Y[0]>X[0]||(Y[0]==X[0]&&Y[1]>X[1])||(Y[0]==X[0]&&Y[1]==X[1]&&Y[2]>=X[2]))?true:false}function v(ac,Y,ad,ab){if(M.ie&&M.mac){return}var aa=j.getElementsByTagName("head")[0];if(!aa){return}var X=(ad&&typeof ad=="string")?ad:"screen";if(ab){n=null;G=null}if(!n||G!=X){var Z=C("style");Z.setAttribute("type","text/css");Z.setAttribute("media",X);n=aa.appendChild(Z);if(M.ie&&M.win&&typeof j.styleSheets!=D&&j.styleSheets.length>0){n=j.styleSheets[j.styleSheets.length-1]}G=X}if(M.ie&&M.win){if(n&&typeof n.addRule==r){n.addRule(ac,Y)}}else{if(n&&typeof j.createTextNode!=D){n.appendChild(j.createTextNode(ac+" {"+Y+"}"))}}}function w(Z,X){if(!m){return}var Y=X?"visible":"hidden";if(J&&c(Z)){c(Z).style.visibility=Y}else{v("#"+Z,"visibility:"+Y)}}function L(Y){var Z=/[\\\"<>\.;]/;var X=Z.exec(Y)!=null;return X&&typeof encodeURIComponent!=D?encodeURIComponent(Y):Y}var d=function(){if(M.ie&&M.win){window.attachEvent("onunload",function(){var ac=I.length;for(var ab=0;ab<ac;ab++){I[ab][0].detachEvent(I[ab][1],I[ab][2])}var Z=N.length;for(var aa=0;aa<Z;aa++){y(N[aa])}for(var Y in M){M[Y]=null}M=null;for(var X in swfobject){swfobject[X]=null}swfobject=null})}}();return{registerObject:function(ab,X,aa,Z){if(M.w3&&ab&&X){var Y={};Y.id=ab;Y.swfVersion=X;Y.expressInstall=aa;Y.callbackFn=Z;o[o.length]=Y;w(ab,false)}else{if(Z){Z({success:false,id:ab})}}},getObjectById:function(X){if(M.w3){return z(X)}},embedSWF:function(ab,ah,ae,ag,Y,aa,Z,ad,af,ac){var X={success:false,id:ah};if(M.w3&&!(M.wk&&M.wk<312)&&ab&&ah&&ae&&ag&&Y){w(ah,false);K(function(){ae+="";ag+="";var aj={};if(af&&typeof af===r){for(var al in af){aj[al]=af[al]}}aj.data=ab;aj.width=ae;aj.height=ag;var am={};if(ad&&typeof ad===r){for(var ak in ad){am[ak]=ad[ak]}}if(Z&&typeof Z===r){for(var ai in Z){if(typeof am.flashvars!=D){am.flashvars+="&"+ai+"="+Z[ai]}else{am.flashvars=ai+"="+Z[ai]}}}if(F(Y)){var an=u(aj,am,ah);if(aj.id==ah){w(ah,true)}X.success=true;X.ref=an}else{if(aa&&A()){aj.data=aa;P(aj,am,ah,ac);return}else{w(ah,true)}}if(ac){ac(X)}})}else{if(ac){ac(X)}}},switchOffAutoHideShow:function(){m=false},ua:M,getFlashPlayerVersion:function(){return{major:M.pv[0],minor:M.pv[1],release:M.pv[2]}},hasFlashPlayerVersion:F,createSWF:function(Z,Y,X){if(M.w3){return u(Z,Y,X)}else{return undefined}},showExpressInstall:function(Z,aa,X,Y){if(M.w3&&A()){P(Z,aa,X,Y)}},removeSWF:function(X){if(M.w3){y(X)}},createCSS:function(aa,Z,Y,X){if(M.w3){v(aa,Z,Y,X)}},addDomLoadEvent:K,addLoadEvent:s,getQueryParamValue:function(aa){var Z=j.location.search||j.location.hash;if(Z){if(/\?/.test(Z)){Z=Z.split("?")[1]}if(aa==null){return L(Z)}var Y=Z.split("&");for(var X=0;X<Y.length;X++){if(Y[X].substring(0,Y[X].indexOf("="))==aa){return L(Y[X].substring((Y[X].indexOf("=")+1)))}}}return""},expressInstallCallback:function(){if(a){var X=c(R);if(X&&l){X.parentNode.replaceChild(l,X);if(Q){w(Q,true);if(M.ie&&M.win){l.style.display="block"}}if(E){E(B)}}a=false}}}}();

/*
 * Copyright © 2008 Multimedia Company CSC (www.cural.ru)
 * $Date: 2008-11-07 14:35:29 +0500 (Fri, 07 Nov 2008) $
 * $Version: 1.0.6 $
 */

var Utils = {
    Cookie: {
        set: function (E, F, D, C, A, B) {
            document.cookie = escape(E) + "=" + (window.encodeURI ? encodeURI(F) : escape(F)) + ((null == D) ? "" : "; expires=" + D.toGMTString()) + ((null == C) ? "" : "; path=" + C) + ((null == A) ? "" : "; domain=" + A) + ((null == B) ? "" : "; secure")
        },
        get: function (D) {
            var E = document,
                B, A, C = D + "=";
            if (E.cookie.length > 0) {
                    B = E.cookie.indexOf(C);
                    if (-1 != B) {
                        B += C.length;
                        A = E.cookie.indexOf(";", B);
                        if (-1 == A) {
                            A = E.cookie.length
                        }
                        return window.decodeURI ? decodeURI(E.cookie.substring(B, A)) : unescape(E.cookie.substring(B, A))
                    }
                }
            return ""
        }
    },
    Popup: function (B, D, A) {
        var C = Utils.extend({
            iLeft: 0,
            iTop: 0,
            iWidth: 600,
            iHeight: 640,
            sToolbar: "no",
            sMenubar: "no",
            sResizeable: "yes",
            sScrollbars: "yes",
            sStatus: "yes"
        }, A);
        oNW = window.open(B, D, "left=" + (C.iLeft || screen.availWidth / 2 - C.iWidth / 2) + ", top = " + (C.iTop || screen.availHeight / 2 - C.iHeight / 2) + ", width=" + (C.iWidth || document.body.clientWidth || window.innerWidth) + ", height=" + (C.iHeight || document.body.clientHeight || window.innerHeight) + ", menubar=" + C.sMenubar + ", toolbar=" + C.sToolbar + ", resizable=" + C.sResizeable + ", scrollbars=" + C.sScrollbars + ", status=" + C.sStatus);
        if (B.match(/\.(gif|png|jpe?g)$/i)) {
            var E = '<?xml version="1.0" encoding="windows-1251"?>';
            E += '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">';
            E += '<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ru"><head><title></title>';
            E += "<style>";
            E += "html,body{background:#fff;height:100%;margin:0;padding:0}";
            E += "table{border-collapse:collapse;width:100%;height:100%}";
            E += "td{text-align:center}";
            E += "</style></head><body>";
            E += '<table><tr><td><img src="' + B + '" alt="" /></td></tr></table>';
            E += "</body></html>";
            oNW.document.open();
            oNW.document.write(E);
            oNW.document.close()
        }
        oNW.focus();
        return false
    },
    iepngfix: function (B) {
        if (/MSIE (5\.5|6).+Win/.test(navigator.userAgent)) {
            var A;
            if ("IMG" == B.tagName) {
                if (/\.png$/.test(B.src)) {
                    A = B.src;
                    B.src = "/img/n.gif"
                }
            } else {
                A = B.currentStyle.backgroundImage.match(/url\("(.+\.png)"\)/i);
                if (A) {
                    A = A[1];
                    B.runtimeStyle.backgroundImage = "none"
                }
            }
            if (A) {
                B.runtimeStyle.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + A + "',sizingMethod='crop')"
            }
        }
    },
    dw: function (A) {
        return (A.length > 0) ? document.writeln(A) : false
    },
    extend: function (D, A, C) {
        var B;
        for (B in A) {
            if (!D[B] || !C) {
                D[B] = A[B]
            }
        }
        return D
    }
};
(function () {
    var _jQuery = window.jQuery,
        _$ = window.$;
    var jQuery = window.jQuery = window.$ = function (selector, context) {
            return new jQuery.fn.init(selector, context)
        };
    var quickExpr = /^[^<]*(<(.|\s)+>)[^>]*$|^#(\w+)$/,
        isSimple = /^.[^:#\[\.]*$/,
        undefined;
    jQuery.fn = jQuery.prototype = {
            init: function (selector, context) {
                selector = selector || document;
                if (selector.nodeType) {
                    this[0] = selector;
                    this.length = 1;
                    return this
                }
                if (typeof selector == "string") {
                    var match = quickExpr.exec(selector);
                    if (match && (match[1] || !context)) {
                        if (match[1]) {
                            selector = jQuery.clean([match[1]], context)
                        } else {
                            var elem = document.getElementById(match[3]);
                            if (elem) {
                                if (elem.id != match[3]) {
                                    return jQuery().find(selector)
                                }
                                return jQuery(elem)
                            }
                            selector = []
                        }
                    } else {
                        return jQuery(context).find(selector)
                    }
                } else {
                    if (jQuery.isFunction(selector)) {
                        return jQuery(document)[jQuery.fn.ready ? "ready" : "load"](selector)
                    }
                }
                return this.setArray(jQuery.makeArray(selector))
            },
            jquery: "1.2.6",
            size: function () {
                return this.length
            },
            length: 0,
            get: function (num) {
                return num == undefined ? jQuery.makeArray(this) : this[num]
            },
            pushStack: function (elems) {
                var ret = jQuery(elems);
                ret.prevObject = this;
                return ret
            },
            setArray: function (elems) {
                this.length = 0;
                Array.prototype.push.apply(this, elems);
                return this
            },
            each: function (callback, args) {
                return jQuery.each(this, callback, args)
            },
            index: function (elem) {
                var ret = -1;
                return jQuery.inArray(elem && elem.jquery ? elem[0] : elem, this)
            },
            attr: function (name, value, type) {
                var options = name;
                if (name.constructor == String) {
                    if (value === undefined) {
                        return this[0] && jQuery[type || "attr"](this[0], name)
                    } else {
                        options = {};
                        options[name] = value
                    }
                }
                return this.each(function (i) {
                    for (name in options) {
                        jQuery.attr(type ? this.style : this, name, jQuery.prop(this, options[name], type, i, name))
                    }
                })
            },
            css: function (key, value) {
                if ((key == "width" || key == "height") && parseFloat(value) < 0) {
                    value = undefined
                }
                return this.attr(key, value, "curCSS")
            },
            text: function (text) {
                if (typeof text != "object" && text != null) {
                    return this.empty().append((this[0] && this[0].ownerDocument || document).createTextNode(text))
                }
                var ret = "";
                jQuery.each(text || this, function () {
                    jQuery.each(this.childNodes, function () {
                        if (this.nodeType != 8) {
                            ret += this.nodeType != 1 ? this.nodeValue : jQuery.fn.text([this])
                        }
                    })
                });
                return ret
            },
            wrapAll: function (html) {
                if (this[0]) {
                    jQuery(html, this[0].ownerDocument).clone().insertBefore(this[0]).map(function () {
                        var elem = this;
                        while (elem.firstChild) {
                            elem = elem.firstChild
                        }
                        return elem
                    }).append(this)
                }
                return this
            },
            wrapInner: function (html) {
                return this.each(function () {
                    jQuery(this).contents().wrapAll(html)
                })
            },
            wrap: function (html) {
                return this.each(function () {
                    jQuery(this).wrapAll(html)
                })
            },
            append: function () {
                return this.domManip(arguments, true, false, function (elem) {
                    if (this.nodeType == 1) {
                        this.appendChild(elem)
                    }
                })
            },
            prepend: function () {
                return this.domManip(arguments, true, true, function (elem) {
                    if (this.nodeType == 1) {
                        this.insertBefore(elem, this.firstChild)
                    }
                })
            },
            before: function () {
                return this.domManip(arguments, false, false, function (elem) {
                    this.parentNode.insertBefore(elem, this)
                })
            },
            after: function () {
                return this.domManip(arguments, false, true, function (elem) {
                    this.parentNode.insertBefore(elem, this.nextSibling)
                })
            },
            end: function () {
                return this.prevObject || jQuery([])
            },
            find: function (selector) {
                var elems = jQuery.map(this, function (elem) {
                    return jQuery.find(selector, elem)
                });
                return this.pushStack(/[^+>] [^+>]/.test(selector) || selector.indexOf("..") > -1 ? jQuery.unique(elems) : elems)
            },
            clone: function (events) {
                var ret = this.map(function () {
                    if (jQuery.browser.msie && !jQuery.isXMLDoc(this)) {
                        var clone = this.cloneNode(true),
                            container = document.createElement("div");
                        container.appendChild(clone);
                        return jQuery.clean([container.innerHTML])[0]
                    } else {
                        return this.cloneNode(true)
                    }
                });
                var clone = ret.find("*").andSelf().each(function () {
                    if (this[expando] != undefined) {
                        this[expando] = null
                    }
                });
                if (events === true) {
                    this.find("*").andSelf().each(function (i) {
                        if (this.nodeType == 3) {
                            return
                        }
                        var events = jQuery.data(this, "events");
                        for (var type in events) {
                            for (var handler in events[type]) {
                                jQuery.event.add(clone[i], type, events[type][handler], events[type][handler].data)
                            }
                        }
                    })
                }
                return ret
            },
            filter: function (selector) {
                return this.pushStack(jQuery.isFunction(selector) && jQuery.grep(this, function (elem, i) {
                    return selector.call(elem, i)
                }) || jQuery.multiFilter(selector, this))
            },
            not: function (selector) {
                if (selector.constructor == String) {
                    if (isSimple.test(selector)) {
                        return this.pushStack(jQuery.multiFilter(selector, this, true))
                    } else {
                        selector = jQuery.multiFilter(selector, this)
                    }
                }
                var isArrayLike = selector.length && selector[selector.length - 1] !== undefined && !selector.nodeType;
                return this.filter(function () {
                    return isArrayLike ? jQuery.inArray(this, selector) < 0 : this != selector
                })
            },
            add: function (selector) {
                return this.pushStack(jQuery.unique(jQuery.merge(this.get(), typeof selector == "string" ? jQuery(selector) : jQuery.makeArray(selector))))
            },
            is: function (selector) {
                return !!selector && jQuery.multiFilter(selector, this).length > 0
            },
            hasClass: function (selector) {
                return this.is("." + selector)
            },
            val: function (value) {
                if (value == undefined) {
                    if (this.length) {
                        var elem = this[0];
                        if (jQuery.nodeName(elem, "select")) {
                            var index = elem.selectedIndex,
                                values = [],
                                options = elem.options,
                                one = elem.type == "select-one";
                            if (index < 0) {
                                    return null
                                }
                            for (var i = one ? index : 0, max = one ? index + 1 : options.length; i < max; i++) {
                                    var option = options[i];
                                    if (option.selected) {
                                        value = jQuery.browser.msie && !option.attributes.value.specified ? option.text : option.value;
                                        if (one) {
                                            return value
                                        }
                                        values.push(value)
                                    }
                                }
                            return values
                        } else {
                            return (this[0].value || "").replace(/\r/g, "")
                        }
                    }
                    return undefined
                }
                if (value.constructor == Number) {
                    value += ""
                }
                return this.each(function () {
                    if (this.nodeType != 1) {
                        return
                    }
                    if (value.constructor == Array && /radio|checkbox/.test(this.type)) {
                        this.checked = (jQuery.inArray(this.value, value) >= 0 || jQuery.inArray(this.name, value) >= 0)
                    } else {
                        if (jQuery.nodeName(this, "select")) {
                            var values = jQuery.makeArray(value);
                            jQuery("option", this).each(function () {
                                this.selected = (jQuery.inArray(this.value, values) >= 0 || jQuery.inArray(this.text, values) >= 0)
                            });
                            if (!values.length) {
                                this.selectedIndex = -1
                            }
                        } else {
                            this.value = value
                        }
                    }
                })
            },
            html: function (value) {
                return value == undefined ? (this[0] ? this[0].innerHTML : null) : this.empty().append(value)
            },
            replaceWith: function (value) {
                return this.after(value).remove()
            },
            eq: function (i) {
                return this.slice(i, i + 1)
            },
            slice: function () {
                return this.pushStack(Array.prototype.slice.apply(this, arguments))
            },
            map: function (callback) {
                return this.pushStack(jQuery.map(this, function (elem, i) {
                    return callback.call(elem, i, elem)
                }))
            },
            andSelf: function () {
                return this.add(this.prevObject)
            },
            data: function (key, value) {
                var parts = key.split(".");
                parts[1] = parts[1] ? "." + parts[1] : "";
                if (value === undefined) {
                    var data = this.triggerHandler("getData" + parts[1] + "!", [parts[0]]);
                    if (data === undefined && this.length) {
                        data = jQuery.data(this[0], key)
                    }
                    return data === undefined && parts[1] ? this.data(parts[0]) : data
                } else {
                    return this.trigger("setData" + parts[1] + "!", [parts[0], value]).each(function () {
                        jQuery.data(this, key, value)
                    })
                }
            },
            removeData: function (key) {
                return this.each(function () {
                    jQuery.removeData(this, key)
                })
            },
            domManip: function (args, table, reverse, callback) {
                var clone = this.length > 1,
                    elems;
                return this.each(function () {
                        if (!elems) {
                            elems = jQuery.clean(args, this.ownerDocument);
                            if (reverse) {
                                elems.reverse()
                            }
                        }
                        var obj = this;
                        if (table && jQuery.nodeName(this, "table") && jQuery.nodeName(elems[0], "tr")) {
                            obj = this.getElementsByTagName("tbody")[0] || this.appendChild(this.ownerDocument.createElement("tbody"))
                        }
                        var scripts = jQuery([]);
                        jQuery.each(elems, function () {
                            var elem = clone ? jQuery(this).clone(true)[0] : this;
                            if (jQuery.nodeName(elem, "script")) {
                                scripts = scripts.add(elem)
                            } else {
                                if (elem.nodeType == 1) {
                                    scripts = scripts.add(jQuery("script", elem).remove())
                                }
                                callback.call(obj, elem)
                            }
                        });
                        scripts.each(evalScript)
                    })
            }
        };
    jQuery.fn.init.prototype = jQuery.fn;

    function evalScript(i, elem) {
            if (elem.src) {
                jQuery.ajax({
                    url: elem.src,
                    async: false,
                    dataType: "script"
                })
            } else {
                jQuery.globalEval(elem.text || elem.textContent || elem.innerHTML || "")
            }
            if (elem.parentNode) {
                elem.parentNode.removeChild(elem)
            }
        }
    function now() {
            return +new Date
        }
    jQuery.extend = jQuery.fn.extend = function () {
            var target = arguments[0] || {},
                i = 1,
                length = arguments.length,
                deep = false,
                options;
            if (target.constructor == Boolean) {
                    deep = target;
                    target = arguments[1] || {};
                    i = 2
                }
            if (typeof target != "object" && typeof target != "function") {
                    target = {}
                }
            if (length == i) {
                    target = this;
                    --i
                }
            for (; i < length; i++) {
                    if ((options = arguments[i]) != null) {
                        for (var name in options) {
                            var src = target[name],
                                copy = options[name];
                            if (target === copy) {
                                    continue
                                }
                            if (deep && copy && typeof copy == "object" && !copy.nodeType) {
                                    target[name] = jQuery.extend(deep, src || (copy.length != null ? [] : {}), copy)
                                } else {
                                    if (copy !== undefined) {
                                        target[name] = copy
                                    }
                                }
                        }
                    }
                }
            return target
        };
    var expando = "jQuery" + now(),
        uuid = 0,
        windowData = {},
        exclude = /z-?index|font-?weight|opacity|zoom|line-?height/i,
        defaultView = document.defaultView || {};
    jQuery.extend({
            noConflict: function (deep) {
                window.$ = _$;
                if (deep) {
                    window.jQuery = _jQuery
                }
                return jQuery
            },
            isFunction: function (fn) {
                return !!fn && typeof fn != "string" && !fn.nodeName && fn.constructor != Array && /^[\s[]?function/.test(fn + "")
            },
            isXMLDoc: function (elem) {
                return elem.documentElement && !elem.body || elem.tagName && elem.ownerDocument && !elem.ownerDocument.body
            },
            globalEval: function (data) {
                data = jQuery.trim(data);
                if (data) {
                    var head = document.getElementsByTagName("head")[0] || document.documentElement,
                        script = document.createElement("script");
                    script.type = "text/javascript";
                    if (jQuery.browser.msie) {
                            script.text = data
                        } else {
                            script.appendChild(document.createTextNode(data))
                        }
                    head.insertBefore(script, head.firstChild);
                    head.removeChild(script)
                }
            },
            nodeName: function (elem, name) {
                return elem.nodeName && elem.nodeName.toUpperCase() == name.toUpperCase()
            },
            cache: {},
            data: function (elem, name, data) {
                elem = elem == window ? windowData : elem;
                var id = elem[expando];
                if (!id) {
                    id = elem[expando] = ++uuid
                }
                if (name && !jQuery.cache[id]) {
                    jQuery.cache[id] = {}
                }
                if (data !== undefined) {
                    jQuery.cache[id][name] = data
                }
                return name ? jQuery.cache[id][name] : id
            },
            removeData: function (elem, name) {
                elem = elem == window ? windowData : elem;
                var id = elem[expando];
                if (name) {
                    if (jQuery.cache[id]) {
                        delete jQuery.cache[id][name];
                        name = "";
                        for (name in jQuery.cache[id]) {
                            break
                        }
                        if (!name) {
                            jQuery.removeData(elem)
                        }
                    }
                } else {
                    try {
                        delete elem[expando]
                    } catch (e) {
                        if (elem.removeAttribute) {
                            elem.removeAttribute(expando)
                        }
                    }
                    delete jQuery.cache[id]
                }
            },
            each: function (object, callback, args) {
                var name, i = 0,
                    length = object.length;
                if (args) {
                        if (length == undefined) {
                            for (name in object) {
                                if (callback.apply(object[name], args) === false) {
                                    break
                                }
                            }
                        } else {
                            for (; i < length;) {
                                if (callback.apply(object[i++], args) === false) {
                                    break
                                }
                            }
                        }
                    } else {
                        if (length == undefined) {
                            for (name in object) {
                                if (callback.call(object[name], name, object[name]) === false) {
                                    break
                                }
                            }
                        } else {
                            for (var value = object[0]; i < length && callback.call(value, i, value) !== false; value = object[++i]) {}
                        }
                    }
                return object
            },
            prop: function (elem, value, type, i, name) {
                if (jQuery.isFunction(value)) {
                    value = value.call(elem, i)
                }
                return value && value.constructor == Number && type == "curCSS" && !exclude.test(name) ? value + "px" : value
            },
            className: {
                add: function (elem, classNames) {
                    jQuery.each((classNames || "").split(/\s+/), function (i, className) {
                        if (elem.nodeType == 1 && !jQuery.className.has(elem.className, className)) {
                            elem.className += (elem.className ? " " : "") + className
                        }
                    })
                },
                remove: function (elem, classNames) {
                    if (elem.nodeType == 1) {
                        elem.className = classNames != undefined ? jQuery.grep(elem.className.split(/\s+/), function (className) {
                            return !jQuery.className.has(classNames, className)
                        }).join(" ") : ""
                    }
                },
                has: function (elem, className) {
                    return jQuery.inArray(className, (elem.className || elem).toString().split(/\s+/)) > -1
                }
            },
            swap: function (elem, options, callback) {
                var old = {};
                for (var name in options) {
                    old[name] = elem.style[name];
                    elem.style[name] = options[name]
                }
                callback.call(elem);
                for (var name in options) {
                    elem.style[name] = old[name]
                }
            },
            css: function (elem, name, force) {
                if (name == "width" || name == "height") {
                    var val, props = {
                        position: "absolute",
                        visibility: "hidden",
                        display: "block"
                    },
                        which = name == "width" ? ["Left", "Right"] : ["Top", "Bottom"];

                    function getWH() {
                            val = name == "width" ? elem.offsetWidth : elem.offsetHeight;
                            var padding = 0,
                                border = 0;
                            jQuery.each(which, function () {
                                    padding += parseFloat(jQuery.curCSS(elem, "padding" + this, true)) || 0;
                                    border += parseFloat(jQuery.curCSS(elem, "border" + this + "Width", true)) || 0
                                });
                            val -= Math.round(padding + border)
                        }
                    if (jQuery(elem).is(":visible")) {
                            getWH()
                        } else {
                            jQuery.swap(elem, props, getWH)
                        }
                    return Math.max(0, val)
                }
                return jQuery.curCSS(elem, name, force)
            },
            curCSS: function (elem, name, force) {
                var ret, style = elem.style;

                function color(elem) {
                    if (!jQuery.browser.safari) {
                        return false
                    }
                    var ret = defaultView.getComputedStyle(elem, null);
                    return !ret || ret.getPropertyValue("color") == ""
                }
                if (name == "opacity" && jQuery.browser.msie) {
                    ret = jQuery.attr(style, "opacity");
                    return ret == "" ? "1" : ret
                }
                if (jQuery.browser.opera && name == "display") {
                    var save = style.outline;
                    style.outline = "0 solid black";
                    style.outline = save
                }
                if (name.match(/float/i)) {
                    name = styleFloat
                }
                if (!force && style && style[name]) {
                    ret = style[name]
                } else {
                    if (defaultView.getComputedStyle) {
                        if (name.match(/float/i)) {
                            name = "float"
                        }
                        name = name.replace(/([A-Z])/g, "-$1").toLowerCase();
                        var computedStyle = defaultView.getComputedStyle(elem, null);
                        if (computedStyle && !color(elem)) {
                            ret = computedStyle.getPropertyValue(name)
                        } else {
                            var swap = [],
                                stack = [],
                                a = elem,
                                i = 0;
                            for (; a && color(a); a = a.parentNode) {
                                    stack.unshift(a)
                                }
                            for (; i < stack.length; i++) {
                                    if (color(stack[i])) {
                                        swap[i] = stack[i].style.display;
                                        stack[i].style.display = "block"
                                    }
                                }
                            ret = name == "display" && swap[stack.length - 1] != null ? "none" : (computedStyle && computedStyle.getPropertyValue(name)) || "";
                            for (i = 0; i < swap.length; i++) {
                                    if (swap[i] != null) {
                                        stack[i].style.display = swap[i]
                                    }
                                }
                        }
                        if (name == "opacity" && ret == "") {
                            ret = "1"
                        }
                    } else {
                        if (elem.currentStyle) {
                            var camelCase = name.replace(/\-(\w)/g, function (all, letter) {
                                return letter.toUpperCase()
                            });
                            ret = elem.currentStyle[name] || elem.currentStyle[camelCase];
                            if (!/^\d+(px)?$/i.test(ret) && /^\d/.test(ret)) {
                                var left = style.left,
                                    rsLeft = elem.runtimeStyle.left;
                                elem.runtimeStyle.left = elem.currentStyle.left;
                                style.left = ret || 0;
                                ret = style.pixelLeft + "px";
                                style.left = left;
                                elem.runtimeStyle.left = rsLeft
                            }
                        }
                    }
                }
                return ret
            },
            clean: function (elems, context) {
                var ret = [];
                context = context || document;
                if (typeof context.createElement == "undefined") {
                    context = context.ownerDocument || context[0] && context[0].ownerDocument || document
                }
                jQuery.each(elems, function (i, elem) {
                    if (!elem) {
                        return
                    }
                    if (elem.constructor == Number) {
                        elem += ""
                    }
                    if (typeof elem == "string") {
                        elem = elem.replace(/(<(\w+)[^>]*?)\/>/g, function (all, front, tag) {
                            return tag.match(/^(abbr|br|col|img|input|link|meta|param|hr|area|embed)$/i) ? all : front + "></" + tag + ">"
                        });
                        var tags = jQuery.trim(elem).toLowerCase(),
                            div = context.createElement("div");
                        var wrap = !tags.indexOf("<opt") && [1, "<select multiple='multiple'>", "</select>"] || !tags.indexOf("<leg") && [1, "<fieldset>", "</fieldset>"] || tags.match(/^<(thead|tbody|tfoot|colg|cap)/) && [1, "<table>", "</table>"] || !tags.indexOf("<tr") && [2, "<table><tbody>", "</tbody></table>"] || (!tags.indexOf("<td") || !tags.indexOf("<th")) && [3, "<table><tbody><tr>", "</tr></tbody></table>"] || !tags.indexOf("<col") && [2, "<table><tbody></tbody><colgroup>", "</colgroup></table>"] || jQuery.browser.msie && [1, "div<div>", "</div>"] || [0, "", ""];
                        div.innerHTML = wrap[1] + elem + wrap[2];
                        while (wrap[0]--) {
                                div = div.lastChild
                            }
                        if (jQuery.browser.msie) {
                                var tbody = !tags.indexOf("<table") && tags.indexOf("<tbody") < 0 ? div.firstChild && div.firstChild.childNodes : wrap[1] == "<table>" && tags.indexOf("<tbody") < 0 ? div.childNodes : [];
                                for (var j = tbody.length - 1; j >= 0; --j) {
                                    if (jQuery.nodeName(tbody[j], "tbody") && !tbody[j].childNodes.length) {
                                        tbody[j].parentNode.removeChild(tbody[j])
                                    }
                                }
                                if (/^\s/.test(elem)) {
                                    div.insertBefore(context.createTextNode(elem.match(/^\s*/)[0]), div.firstChild)
                                }
                            }
                        elem = jQuery.makeArray(div.childNodes)
                    }
                    if (elem.length === 0 && (!jQuery.nodeName(elem, "form") && !jQuery.nodeName(elem, "select"))) {
                        return
                    }
                    if (elem[0] == undefined || jQuery.nodeName(elem, "form") || elem.options) {
                        ret.push(elem)
                    } else {
                        ret = jQuery.merge(ret, elem)
                    }
                });
                return ret
            },
            attr: function (elem, name, value) {
                if (!elem || elem.nodeType == 3 || elem.nodeType == 8) {
                    return undefined
                }
                var notxml = !jQuery.isXMLDoc(elem),
                    set = value !== undefined,
                    msie = jQuery.browser.msie;
                name = notxml && jQuery.props[name] || name;
                if (elem.tagName) {
                        var special = /href|src|style/.test(name);
                        if (name == "selected" && jQuery.browser.safari) {
                            elem.parentNode.selectedIndex
                        }
                        if (name in elem && notxml && !special) {
                            if (set) {
                                if (name == "type" && jQuery.nodeName(elem, "input") && elem.parentNode) {
                                    throw "type property can't be changed"
                                }
                                elem[name] = value
                            }
                            if (jQuery.nodeName(elem, "form") && elem.getAttributeNode(name)) {
                                return elem.getAttributeNode(name).nodeValue
                            }
                            return elem[name]
                        }
                        if (msie && notxml && name == "style") {
                            return jQuery.attr(elem.style, "cssText", value)
                        }
                        if (set) {
                            elem.setAttribute(name, "" + value)
                        }
                        var attr = msie && notxml && special ? elem.getAttribute(name, 2) : elem.getAttribute(name);
                        return attr === null ? undefined : attr
                    }
                if (msie && name == "opacity") {
                        if (set) {
                            elem.zoom = 1;
                            elem.filter = (elem.filter || "").replace(/alpha\([^)]*\)/, "") + (parseInt(value) + "" == "NaN" ? "" : "alpha(opacity=" + value * 100 + ")")
                        }
                        return elem.filter && elem.filter.indexOf("opacity=") >= 0 ? (parseFloat(elem.filter.match(/opacity=([^)]*)/)[1]) / 100) + "" : ""
                    }
                name = name.replace(/-([a-z])/ig, function (all, letter) {
                        return letter.toUpperCase()
                    });
                if (set) {
                        elem[name] = value
                    }
                return elem[name]
            },
            trim: function (text) {
                return (text || "").replace(/^\s+|\s+$/g, "")
            },
            makeArray: function (array) {
                var ret = [];
                if (array != null) {
                    var i = array.length;
                    if (i == null || array.split || array.setInterval || array.call) {
                        ret[0] = array
                    } else {
                        while (i) {
                            ret[--i] = array[i]
                        }
                    }
                }
                return ret
            },
            inArray: function (elem, array) {
                for (var i = 0, length = array.length; i < length; i++) {
                    if (array[i] === elem) {
                        return i
                    }
                }
                return -1
            },
            merge: function (first, second) {
                var i = 0,
                    elem, pos = first.length;
                if (jQuery.browser.msie) {
                        while (elem = second[i++]) {
                            if (elem.nodeType != 8) {
                                first[pos++] = elem
                            }
                        }
                    } else {
                        while (elem = second[i++]) {
                            first[pos++] = elem
                        }
                    }
                return first
            },
            unique: function (array) {
                var ret = [],
                    done = {};
                try {
                        for (var i = 0, length = array.length; i < length; i++) {
                            var id = jQuery.data(array[i]);
                            if (!done[id]) {
                                done[id] = true;
                                ret.push(array[i])
                            }
                        }
                    } catch (e) {
                        ret = array
                    }
                return ret
            },
            grep: function (elems, callback, inv) {
                var ret = [];
                for (var i = 0, length = elems.length; i < length; i++) {
                    if (!inv != !callback(elems[i], i)) {
                        ret.push(elems[i])
                    }
                }
                return ret
            },
            map: function (elems, callback) {
                var ret = [];
                for (var i = 0, length = elems.length; i < length; i++) {
                    var value = callback(elems[i], i);
                    if (value != null) {
                        ret[ret.length] = value
                    }
                }
                return ret.concat.apply([], ret)
            }
        });
    var userAgent = navigator.userAgent.toLowerCase();
    jQuery.browser = {
            version: (userAgent.match(/.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/) || [])[1],
            safari: /webkit/.test(userAgent),
            opera: /opera/.test(userAgent),
            msie: /msie/.test(userAgent) && !/opera/.test(userAgent),
            mozilla: /mozilla/.test(userAgent) && !/(compatible|webkit)/.test(userAgent)
        };
    var styleFloat = jQuery.browser.msie ? "styleFloat" : "cssFloat";
    jQuery.extend({
            boxModel: !jQuery.browser.msie || document.compatMode == "CSS1Compat",
            props: {
                "for": "htmlFor",
                "class": "className",
                "float": styleFloat,
                cssFloat: styleFloat,
                styleFloat: styleFloat,
                readonly: "readOnly",
                maxlength: "maxLength",
                cellspacing: "cellSpacing"
            }
        });
    jQuery.each({
            parent: function (elem) {
                return elem.parentNode
            },
            parents: function (elem) {
                return jQuery.dir(elem, "parentNode")
            },
            next: function (elem) {
                return jQuery.nth(elem, 2, "nextSibling")
            },
            prev: function (elem) {
                return jQuery.nth(elem, 2, "previousSibling")
            },
            nextAll: function (elem) {
                return jQuery.dir(elem, "nextSibling")
            },
            prevAll: function (elem) {
                return jQuery.dir(elem, "previousSibling")
            },
            siblings: function (elem) {
                return jQuery.sibling(elem.parentNode.firstChild, elem)
            },
            children: function (elem) {
                return jQuery.sibling(elem.firstChild)
            },
            contents: function (elem) {
                return jQuery.nodeName(elem, "iframe") ? elem.contentDocument || elem.contentWindow.document : jQuery.makeArray(elem.childNodes)
            }
        }, function (name, fn) {
            jQuery.fn[name] = function (selector) {
                var ret = jQuery.map(this, fn);
                if (selector && typeof selector == "string") {
                    ret = jQuery.multiFilter(selector, ret)
                }
                return this.pushStack(jQuery.unique(ret))
            }
        });
    jQuery.each({
            appendTo: "append",
            prependTo: "prepend",
            insertBefore: "before",
            insertAfter: "after",
            replaceAll: "replaceWith"
        }, function (name, original) {
            jQuery.fn[name] = function () {
                var args = arguments;
                return this.each(function () {
                    for (var i = 0, length = args.length; i < length; i++) {
                        jQuery(args[i])[original](this)
                    }
                })
            }
        });
    jQuery.each({
            removeAttr: function (name) {
                jQuery.attr(this, name, "");
                if (this.nodeType == 1) {
                    this.removeAttribute(name)
                }
            },
            addClass: function (classNames) {
                jQuery.className.add(this, classNames)
            },
            removeClass: function (classNames) {
                jQuery.className.remove(this, classNames)
            },
            toggleClass: function (classNames) {
                jQuery.className[jQuery.className.has(this, classNames) ? "remove" : "add"](this, classNames)
            },
            remove: function (selector) {
                if (!selector || jQuery.filter(selector, [this]).r.length) {
                    jQuery("*", this).add(this).each(function () {
                        jQuery.event.remove(this);
                        jQuery.removeData(this)
                    });
                    if (this.parentNode) {
                        this.parentNode.removeChild(this)
                    }
                }
            },
            empty: function () {
                jQuery(">*", this).remove();
                while (this.firstChild) {
                    this.removeChild(this.firstChild)
                }
            }
        }, function (name, fn) {
            jQuery.fn[name] = function () {
                return this.each(fn, arguments)
            }
        });
    jQuery.each(["Height", "Width"], function (i, name) {
            var type = name.toLowerCase();
            jQuery.fn[type] = function (size) {
                return this[0] == window ? jQuery.browser.opera && document.body["client" + name] || jQuery.browser.safari && window["inner" + name] || document.compatMode == "CSS1Compat" && document.documentElement["client" + name] || document.body["client" + name] : this[0] == document ? Math.max(Math.max(document.body["scroll" + name], document.documentElement["scroll" + name]), Math.max(document.body["offset" + name], document.documentElement["offset" + name])) : size == undefined ? (this.length ? jQuery.css(this[0], type) : null) : this.css(type, size.constructor == String ? size : size + "px")
            }
        });

    function num(elem, prop) {
            return elem[0] && parseInt(jQuery.curCSS(elem[0], prop, true), 10) || 0
        }
    var chars = jQuery.browser.safari && parseInt(jQuery.browser.version) < 417 ? "(?:[\\w*_-]|\\\\.)" : "(?:[\\w\u0128-\uFFFF*_-]|\\\\.)",
        quickChild = new RegExp("^>\\s*(" + chars + "+)"),
        quickID = new RegExp("^(" + chars + "+)(#)(" + chars + "+)"),
        quickClass = new RegExp("^([#.]?)(" + chars + "*)");
    jQuery.extend({
            expr: {
                "": function (a, i, m) {
                    return m[2] == "*" || jQuery.nodeName(a, m[2])
                },
                "#": function (a, i, m) {
                    return a.getAttribute("id") == m[2]
                },
                ":": {
                    lt: function (a, i, m) {
                        return i < m[3] - 0
                    },
                    gt: function (a, i, m) {
                        return i > m[3] - 0
                    },
                    nth: function (a, i, m) {
                        return m[3] - 0 == i
                    },
                    eq: function (a, i, m) {
                        return m[3] - 0 == i
                    },
                    first: function (a, i) {
                        return i == 0
                    },
                    last: function (a, i, m, r) {
                        return i == r.length - 1
                    },
                    even: function (a, i) {
                        return i % 2 == 0
                    },
                    odd: function (a, i) {
                        return i % 2
                    },
                    "first-child": function (a) {
                        return a.parentNode.getElementsByTagName("*")[0] == a
                    },
                    "last-child": function (a) {
                        return jQuery.nth(a.parentNode.lastChild, 1, "previousSibling") == a
                    },
                    "only-child": function (a) {
                        return !jQuery.nth(a.parentNode.lastChild, 2, "previousSibling")
                    },
                    parent: function (a) {
                        return a.firstChild
                    },
                    empty: function (a) {
                        return !a.firstChild
                    },
                    contains: function (a, i, m) {
                        return (a.textContent || a.innerText || jQuery(a).text() || "").indexOf(m[3]) >= 0
                    },
                    visible: function (a) {
                        return "hidden" != a.type && jQuery.css(a, "display") != "none" && jQuery.css(a, "visibility") != "hidden"
                    },
                    hidden: function (a) {
                        return "hidden" == a.type || jQuery.css(a, "display") == "none" || jQuery.css(a, "visibility") == "hidden"
                    },
                    enabled: function (a) {
                        return !a.disabled
                    },
                    disabled: function (a) {
                        return a.disabled
                    },
                    checked: function (a) {
                        return a.checked
                    },
                    selected: function (a) {
                        return a.selected || jQuery.attr(a, "selected")
                    },
                    text: function (a) {
                        return "text" == a.type
                    },
                    radio: function (a) {
                        return "radio" == a.type
                    },
                    checkbox: function (a) {
                        return "checkbox" == a.type
                    },
                    file: function (a) {
                        return "file" == a.type
                    },
                    password: function (a) {
                        return "password" == a.type
                    },
                    submit: function (a) {
                        return "submit" == a.type
                    },
                    image: function (a) {
                        return "image" == a.type
                    },
                    reset: function (a) {
                        return "reset" == a.type
                    },
                    button: function (a) {
                        return "button" == a.type || jQuery.nodeName(a, "button")
                    },
                    input: function (a) {
                        return /input|select|textarea|button/i.test(a.nodeName)
                    },
                    has: function (a, i, m) {
                        return jQuery.find(m[3], a).length
                    },
                    header: function (a) {
                        return /h\d/i.test(a.nodeName)
                    },
                    animated: function (a) {
                        return jQuery.grep(jQuery.timers, function (fn) {
                            return a == fn.elem
                        }).length
                    }
                }
            },
            parse: [/^(\[) *@?([\w-]+) *([!*$^~=]*) *('?"?)(.*?)\4 *\]/, /^(:)([\w-]+)\("?'?(.*?(\(.*?\))?[^(]*?)"?'?\)/, new RegExp("^([:.#]*)(" + chars + "+)")],
            multiFilter: function (expr, elems, not) {
                var old, cur = [];
                while (expr && expr != old) {
                    old = expr;
                    var f = jQuery.filter(expr, elems, not);
                    expr = f.t.replace(/^\s*,\s*/, "");
                    cur = not ? elems = f.r : jQuery.merge(cur, f.r)
                }
                return cur
            },
            find: function (t, context) {
                if (typeof t != "string") {
                    return [t]
                }
                if (context && context.nodeType != 1 && context.nodeType != 9) {
                    return []
                }
                context = context || document;
                var ret = [context],
                    done = [],
                    last, nodeName;
                while (t && last != t) {
                        var r = [];
                        last = t;
                        t = jQuery.trim(t);
                        var foundToken = false,
                            re = quickChild,
                            m = re.exec(t);
                        if (m) {
                                nodeName = m[1].toUpperCase();
                                for (var i = 0; ret[i]; i++) {
                                    for (var c = ret[i].firstChild; c; c = c.nextSibling) {
                                        if (c.nodeType == 1 && (nodeName == "*" || c.nodeName.toUpperCase() == nodeName)) {
                                            r.push(c)
                                        }
                                    }
                                }
                                ret = r;
                                t = t.replace(re, "");
                                if (t.indexOf(" ") == 0) {
                                    continue
                                }
                                foundToken = true
                            } else {
                                re = /^([>+~])\s*(\w*)/i;
                                if ((m = re.exec(t)) != null) {
                                    r = [];
                                    var merge = {};
                                    nodeName = m[2].toUpperCase();
                                    m = m[1];
                                    for (var j = 0, rl = ret.length; j < rl; j++) {
                                        var n = m == "~" || m == "+" ? ret[j].nextSibling : ret[j].firstChild;
                                        for (; n; n = n.nextSibling) {
                                            if (n.nodeType == 1) {
                                                var id = jQuery.data(n);
                                                if (m == "~" && merge[id]) {
                                                    break
                                                }
                                                if (!nodeName || n.nodeName.toUpperCase() == nodeName) {
                                                    if (m == "~") {
                                                        merge[id] = true
                                                    }
                                                    r.push(n)
                                                }
                                                if (m == "+") {
                                                    break
                                                }
                                            }
                                        }
                                    }
                                    ret = r;
                                    t = jQuery.trim(t.replace(re, ""));
                                    foundToken = true
                                }
                            }
                        if (t && !foundToken) {
                                if (!t.indexOf(",")) {
                                    if (context == ret[0]) {
                                        ret.shift()
                                    }
                                    done = jQuery.merge(done, ret);
                                    r = ret = [context];
                                    t = " " + t.substr(1, t.length)
                                } else {
                                    var re2 = quickID;
                                    var m = re2.exec(t);
                                    if (m) {
                                        m = [0, m[2], m[3], m[1]]
                                    } else {
                                        re2 = quickClass;
                                        m = re2.exec(t)
                                    }
                                    m[2] = m[2].replace(/\\/g, "");
                                    var elem = ret[ret.length - 1];
                                    if (m[1] == "#" && elem && elem.getElementById && !jQuery.isXMLDoc(elem)) {
                                        var oid = elem.getElementById(m[2]);
                                        if ((jQuery.browser.msie || jQuery.browser.opera) && oid && typeof oid.id == "string" && oid.id != m[2]) {
                                            oid = jQuery('[@id="' + m[2] + '"]', elem)[0]
                                        }
                                        ret = r = oid && (!m[3] || jQuery.nodeName(oid, m[3])) ? [oid] : []
                                    } else {
                                        for (var i = 0; ret[i]; i++) {
                                            var tag = m[1] == "#" && m[3] ? m[3] : m[1] != "" || m[0] == "" ? "*" : m[2];
                                            if (tag == "*" && ret[i].nodeName.toLowerCase() == "object") {
                                                tag = "param"
                                            }
                                            r = jQuery.merge(r, ret[i].getElementsByTagName(tag))
                                        }
                                        if (m[1] == ".") {
                                            r = jQuery.classFilter(r, m[2])
                                        }
                                        if (m[1] == "#") {
                                            var tmp = [];
                                            for (var i = 0; r[i]; i++) {
                                                if (r[i].getAttribute("id") == m[2]) {
                                                    tmp = [r[i]];
                                                    break
                                                }
                                            }
                                            r = tmp
                                        }
                                        ret = r
                                    }
                                    t = t.replace(re2, "")
                                }
                            }
                        if (t) {
                                var val = jQuery.filter(t, r);
                                ret = r = val.r;
                                t = jQuery.trim(val.t)
                            }
                    }
                if (t) {
                        ret = []
                    }
                if (ret && context == ret[0]) {
                        ret.shift()
                    }
                done = jQuery.merge(done, ret);
                return done
            },
            classFilter: function (r, m, not) {
                m = " " + m + " ";
                var tmp = [];
                for (var i = 0; r[i]; i++) {
                    var pass = (" " + r[i].className + " ").indexOf(m) >= 0;
                    if (!not && pass || not && !pass) {
                        tmp.push(r[i])
                    }
                }
                return tmp
            },
            filter: function (t, r, not) {
                var last;
                while (t && t != last) {
                    last = t;
                    var p = jQuery.parse,
                        m;
                    for (var i = 0; p[i]; i++) {
                            m = p[i].exec(t);
                            if (m) {
                                t = t.substring(m[0].length);
                                m[2] = m[2].replace(/\\/g, "");
                                break
                            }
                        }
                    if (!m) {
                            break
                        }
                    if (m[1] == ":" && m[2] == "not") {
                            r = isSimple.test(m[3]) ? jQuery.filter(m[3], r, true).r : jQuery(r).not(m[3])
                        } else {
                            if (m[1] == ".") {
                                r = jQuery.classFilter(r, m[2], not)
                            } else {
                                if (m[1] == "[") {
                                    var tmp = [],
                                        type = m[3];
                                    for (var i = 0, rl = r.length; i < rl; i++) {
                                            var a = r[i],
                                                z = a[jQuery.props[m[2]] || m[2]];
                                            if (z == null || /href|src|selected/.test(m[2])) {
                                                    z = jQuery.attr(a, m[2]) || ""
                                                }
                                            if ((type == "" && !! z || type == "=" && z == m[5] || type == "!=" && z != m[5] || type == "^=" && z && !z.indexOf(m[5]) || type == "$=" && z.substr(z.length - m[5].length) == m[5] || (type == "*=" || type == "~=") && z.indexOf(m[5]) >= 0) ^ not) {
                                                    tmp.push(a)
                                                }
                                        }
                                    r = tmp
                                } else {
                                    if (m[1] == ":" && m[2] == "nth-child") {
                                        var merge = {},
                                            tmp = [],
                                            test = /(-?)(\d*)n((?:\+|-)?\d*)/.exec(m[3] == "even" && "2n" || m[3] == "odd" && "2n+1" || !/\D/.test(m[3]) && "0n+" + m[3] || m[3]),
                                            first = (test[1] + (test[2] || 1)) - 0,
                                            last = test[3] - 0;
                                        for (var i = 0, rl = r.length; i < rl; i++) {
                                                var node = r[i],
                                                    parentNode = node.parentNode,
                                                    id = jQuery.data(parentNode);
                                                if (!merge[id]) {
                                                        var c = 1;
                                                        for (var n = parentNode.firstChild; n; n = n.nextSibling) {
                                                            if (n.nodeType == 1) {
                                                                n.nodeIndex = c++
                                                            }
                                                        }
                                                        merge[id] = true
                                                    }
                                                var add = false;
                                                if (first == 0) {
                                                        if (node.nodeIndex == last) {
                                                            add = true
                                                        }
                                                    } else {
                                                        if ((node.nodeIndex - last) % first == 0 && (node.nodeIndex - last) / first >= 0) {
                                                            add = true
                                                        }
                                                    }
                                                if (add ^ not) {
                                                        tmp.push(node)
                                                    }
                                            }
                                        r = tmp
                                    } else {
                                        var fn = jQuery.expr[m[1]];
                                        if (typeof fn == "object") {
                                            fn = fn[m[2]]
                                        }
                                        if (typeof fn == "string") {
                                            fn = eval("false||function(a,i){return " + fn + ";}")
                                        }
                                        r = jQuery.grep(r, function (elem, i) {
                                            return fn(elem, i, m, r)
                                        }, not)
                                    }
                                }
                            }
                        }
                }
                return {
                    r: r,
                    t: t
                }
            },
            dir: function (elem, dir) {
                var matched = [],
                    cur = elem[dir];
                while (cur && cur != document) {
                        if (cur.nodeType == 1) {
                            matched.push(cur)
                        }
                        cur = cur[dir]
                    }
                return matched
            },
            nth: function (cur, result, dir, elem) {
                result = result || 1;
                var num = 0;
                for (; cur; cur = cur[dir]) {
                    if (cur.nodeType == 1 && ++num == result) {
                        break
                    }
                }
                return cur
            },
            sibling: function (n, elem) {
                var r = [];
                for (; n; n = n.nextSibling) {
                    if (n.nodeType == 1 && n != elem) {
                        r.push(n)
                    }
                }
                return r
            }
        });
    jQuery.event = {
            add: function (elem, types, handler, data) {
                if (elem.nodeType == 3 || elem.nodeType == 8) {
                    return
                }
                if (jQuery.browser.msie && elem.setInterval) {
                    elem = window
                }
                if (!handler.guid) {
                    handler.guid = this.guid++
                }
                if (data != undefined) {
                    var fn = handler;
                    handler = this.proxy(fn, function () {
                        return fn.apply(this, arguments)
                    });
                    handler.data = data
                }
                var events = jQuery.data(elem, "events") || jQuery.data(elem, "events", {}),
                    handle = jQuery.data(elem, "handle") || jQuery.data(elem, "handle", function () {
                        if (typeof jQuery != "undefined" && !jQuery.event.triggered) {
                            return jQuery.event.handle.apply(arguments.callee.elem, arguments)
                        }
                    });
                handle.elem = elem;
                jQuery.each(types.split(/\s+/), function (index, type) {
                        var parts = type.split(".");
                        type = parts[0];
                        handler.type = parts[1];
                        var handlers = events[type];
                        if (!handlers) {
                            handlers = events[type] = {};
                            if (!jQuery.event.special[type] || jQuery.event.special[type].setup.call(elem) === false) {
                                if (elem.addEventListener) {
                                    elem.addEventListener(type, handle, false)
                                } else {
                                    if (elem.attachEvent) {
                                        elem.attachEvent("on" + type, handle)
                                    }
                                }
                            }
                        }
                        handlers[handler.guid] = handler;
                        jQuery.event.global[type] = true
                    });
                elem = null
            },
            guid: 1,
            global: {},
            remove: function (elem, types, handler) {
                if (elem.nodeType == 3 || elem.nodeType == 8) {
                    return
                }
                var events = jQuery.data(elem, "events"),
                    ret, index;
                if (events) {
                        if (types == undefined || (typeof types == "string" && types.charAt(0) == ".")) {
                            for (var type in events) {
                                this.remove(elem, type + (types || ""))
                            }
                        } else {
                            if (types.type) {
                                handler = types.handler;
                                types = types.type
                            }
                            jQuery.each(types.split(/\s+/), function (index, type) {
                                var parts = type.split(".");
                                type = parts[0];
                                if (events[type]) {
                                    if (handler) {
                                        delete events[type][handler.guid]
                                    } else {
                                        for (handler in events[type]) {
                                            if (!parts[1] || events[type][handler].type == parts[1]) {
                                                delete events[type][handler]
                                            }
                                        }
                                    }
                                    for (ret in events[type]) {
                                        break
                                    }
                                    if (!ret) {
                                        if (!jQuery.event.special[type] || jQuery.event.special[type].teardown.call(elem) === false) {
                                            if (elem.removeEventListener) {
                                                elem.removeEventListener(type, jQuery.data(elem, "handle"), false)
                                            } else {
                                                if (elem.detachEvent) {
                                                    elem.detachEvent("on" + type, jQuery.data(elem, "handle"))
                                                }
                                            }
                                        }
                                        ret = null;
                                        delete events[type]
                                    }
                                }
                            })
                        }
                        for (ret in events) {
                            break
                        }
                        if (!ret) {
                            var handle = jQuery.data(elem, "handle");
                            if (handle) {
                                handle.elem = null
                            }
                            jQuery.removeData(elem, "events");
                            jQuery.removeData(elem, "handle")
                        }
                    }
            },
            trigger: function (type, data, elem, donative, extra) {
                data = jQuery.makeArray(data);
                if (type.indexOf("!") >= 0) {
                    type = type.slice(0, -1);
                    var exclusive = true
                }
                if (!elem) {
                    if (this.global[type]) {
                        jQuery("*").add([window, document]).trigger(type, data)
                    }
                } else {
                    if (elem.nodeType == 3 || elem.nodeType == 8) {
                        return undefined
                    }
                    var val, ret, fn = jQuery.isFunction(elem[type] || null),
                        event = !data[0] || !data[0].preventDefault;
                    if (event) {
                            data.unshift({
                                type: type,
                                target: elem,
                                preventDefault: function () {},
                                stopPropagation: function () {},
                                timeStamp: now()
                            });
                            data[0][expando] = true
                        }
                    data[0].type = type;
                    if (exclusive) {
                            data[0].exclusive = true
                        }
                    var handle = jQuery.data(elem, "handle");
                    if (handle) {
                            val = handle.apply(elem, data)
                        }
                    if ((!fn || (jQuery.nodeName(elem, "a") && type == "click")) && elem["on" + type] && elem["on" + type].apply(elem, data) === false) {
                            val = false
                        }
                    if (event) {
                            data.shift()
                        }
                    if (extra && jQuery.isFunction(extra)) {
                            ret = extra.apply(elem, val == null ? data : data.concat(val));
                            if (ret !== undefined) {
                                val = ret
                            }
                        }
                    if (fn && donative !== false && val !== false && !(jQuery.nodeName(elem, "a") && type == "click")) {
                            this.triggered = true;
                            try {
                                elem[type]()
                            } catch (e) {}
                        }
                    this.triggered = false
                }
                return val
            },
            handle: function (event) {
                var val, ret, namespace, all, handlers;
                event = arguments[0] = jQuery.event.fix(event || window.event);
                namespace = event.type.split(".");
                event.type = namespace[0];
                namespace = namespace[1];
                all = !namespace && !event.exclusive;
                handlers = (jQuery.data(this, "events") || {})[event.type];
                for (var j in handlers) {
                    var handler = handlers[j];
                    if (all || handler.type == namespace) {
                        event.handler = handler;
                        event.data = handler.data;
                        ret = handler.apply(this, arguments);
                        if (val !== false) {
                            val = ret
                        }
                        if (ret === false) {
                            event.preventDefault();
                            event.stopPropagation()
                        }
                    }
                }
                return val
            },
            fix: function (event) {
                if (event[expando] == true) {
                    return event
                }
                var originalEvent = event;
                event = {
                    originalEvent: originalEvent
                };
                var props = "altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode metaKey newValue originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target timeStamp toElement type view wheelDelta which".split(" ");
                for (var i = props.length; i; i--) {
                    event[props[i]] = originalEvent[props[i]]
                }
                event[expando] = true;
                event.preventDefault = function () {
                    if (originalEvent.preventDefault) {
                        originalEvent.preventDefault()
                    }
                    originalEvent.returnValue = false
                };
                event.stopPropagation = function () {
                    if (originalEvent.stopPropagation) {
                        originalEvent.stopPropagation()
                    }
                    originalEvent.cancelBubble = true
                };
                event.timeStamp = event.timeStamp || now();
                if (!event.target) {
                    event.target = event.srcElement || document
                }
                if (event.target.nodeType == 3) {
                    event.target = event.target.parentNode
                }
                if (!event.relatedTarget && event.fromElement) {
                    event.relatedTarget = event.fromElement == event.target ? event.toElement : event.fromElement
                }
                if (event.pageX == null && event.clientX != null) {
                    var doc = document.documentElement,
                        body = document.body;
                    event.pageX = event.clientX + (doc && doc.scrollLeft || body && body.scrollLeft || 0) - (doc.clientLeft || 0);
                    event.pageY = event.clientY + (doc && doc.scrollTop || body && body.scrollTop || 0) - (doc.clientTop || 0)
                }
                if (!event.which && ((event.charCode || event.charCode === 0) ? event.charCode : event.keyCode)) {
                    event.which = event.charCode || event.keyCode
                }
                if (!event.metaKey && event.ctrlKey) {
                    event.metaKey = event.ctrlKey
                }
                if (!event.which && event.button) {
                    event.which = (event.button & 1 ? 1 : (event.button & 2 ? 3 : (event.button & 4 ? 2 : 0)))
                }
                return event
            },
            proxy: function (fn, proxy) {
                proxy.guid = fn.guid = fn.guid || proxy.guid || this.guid++;
                return proxy
            },
            special: {
                ready: {
                    setup: function () {
                        bindReady();
                        return
                    },
                    teardown: function () {
                        return
                    }
                },
                mouseenter: {
                    setup: function () {
                        if (jQuery.browser.msie) {
                            return false
                        }
                        jQuery(this).bind("mouseover", jQuery.event.special.mouseenter.handler);
                        return true
                    },
                    teardown: function () {
                        if (jQuery.browser.msie) {
                            return false
                        }
                        jQuery(this).unbind("mouseover", jQuery.event.special.mouseenter.handler);
                        return true
                    },
                    handler: function (event) {
                        if (withinElement(event, this)) {
                            return true
                        }
                        event.type = "mouseenter";
                        return jQuery.event.handle.apply(this, arguments)
                    }
                },
                mouseleave: {
                    setup: function () {
                        if (jQuery.browser.msie) {
                            return false
                        }
                        jQuery(this).bind("mouseout", jQuery.event.special.mouseleave.handler);
                        return true
                    },
                    teardown: function () {
                        if (jQuery.browser.msie) {
                            return false
                        }
                        jQuery(this).unbind("mouseout", jQuery.event.special.mouseleave.handler);
                        return true
                    },
                    handler: function (event) {
                        if (withinElement(event, this)) {
                            return true
                        }
                        event.type = "mouseleave";
                        return jQuery.event.handle.apply(this, arguments)
                    }
                }
            }
        };
    jQuery.fn.extend({
            bind: function (type, data, fn) {
                return type == "unload" ? this.one(type, data, fn) : this.each(function () {
                    jQuery.event.add(this, type, fn || data, fn && data)
                })
            },
            one: function (type, data, fn) {
                var one = jQuery.event.proxy(fn || data, function (event) {
                    jQuery(this).unbind(event, one);
                    return (fn || data).apply(this, arguments)
                });
                return this.each(function () {
                    jQuery.event.add(this, type, one, fn && data)
                })
            },
            unbind: function (type, fn) {
                return this.each(function () {
                    jQuery.event.remove(this, type, fn)
                })
            },
            trigger: function (type, data, fn) {
                return this.each(function () {
                    jQuery.event.trigger(type, data, this, true, fn)
                })
            },
            triggerHandler: function (type, data, fn) {
                return this[0] && jQuery.event.trigger(type, data, this[0], false, fn)
            },
            toggle: function (fn) {
                var args = arguments,
                    i = 1;
                while (i < args.length) {
                        jQuery.event.proxy(fn, args[i++])
                    }
                return this.click(jQuery.event.proxy(fn, function (event) {
                        this.lastToggle = (this.lastToggle || 0) % i;
                        event.preventDefault();
                        return args[this.lastToggle++].apply(this, arguments) || false
                    }))
            },
            hover: function (fnOver, fnOut) {
                return this.bind("mouseenter", fnOver).bind("mouseleave", fnOut)
            },
            ready: function (fn) {
                bindReady();
                if (jQuery.isReady) {
                    fn.call(document, jQuery)
                } else {
                    jQuery.readyList.push(function () {
                        return fn.call(this, jQuery)
                    })
                }
                return this
            }
        });
    jQuery.extend({
            isReady: false,
            readyList: [],
            ready: function () {
                if (!jQuery.isReady) {
                    jQuery.isReady = true;
                    if (jQuery.readyList) {
                        jQuery.each(jQuery.readyList, function () {
                            this.call(document)
                        });
                        jQuery.readyList = null
                    }
                    jQuery(document).triggerHandler("ready")
                }
            }
        });
    var readyBound = false;

    function bindReady() {
            if (readyBound) {
                return
            }
            readyBound = true;
            if (document.addEventListener && !jQuery.browser.opera) {
                document.addEventListener("DOMContentLoaded", jQuery.ready, false)
            }
            if (jQuery.browser.msie && window == top) {
                (function () {
                    if (jQuery.isReady) {
                        return
                    }
                    try {
                        document.documentElement.doScroll("left")
                    } catch (error) {
                        setTimeout(arguments.callee, 0);
                        return
                    }
                    jQuery.ready()
                })()
            }
            if (jQuery.browser.opera) {
                document.addEventListener("DOMContentLoaded", function () {
                    if (jQuery.isReady) {
                        return
                    }
                    for (var i = 0; i < document.styleSheets.length; i++) {
                        if (document.styleSheets[i].disabled) {
                            setTimeout(arguments.callee, 0);
                            return
                        }
                    }
                    jQuery.ready()
                }, false)
            }
            if (jQuery.browser.safari) {
                var numStyles;
                (function () {
                    if (jQuery.isReady) {
                        return
                    }
                    if (document.readyState != "loaded" && document.readyState != "complete") {
                        setTimeout(arguments.callee, 0);
                        return
                    }
                    if (numStyles === undefined) {
                        numStyles = jQuery("style, link[rel=stylesheet]").length
                    }
                    if (document.styleSheets.length != numStyles) {
                        setTimeout(arguments.callee, 0);
                        return
                    }
                    jQuery.ready()
                })()
            }
            jQuery.event.add(window, "load", jQuery.ready)
        }
    jQuery.each(("blur,focus,load,resize,scroll,unload,click,dblclick,mousedown,mouseup,mousemove,mouseover,mouseout,change,select,submit,keydown,keypress,keyup,error").split(","), function (i, name) {
            jQuery.fn[name] = function (fn) {
                return fn ? this.bind(name, fn) : this.trigger(name)
            }
        });
    var withinElement = function (event, elem) {
            var parent = event.relatedTarget;
            while (parent && parent != elem) {
                try {
                    parent = parent.parentNode
                } catch (error) {
                    parent = elem
                }
            }
            return parent == elem
        };
    jQuery(window).bind("unload", function () {
            jQuery("*").add(document).unbind()
        });
    jQuery.fn.extend({
            _load: jQuery.fn.load,
            load: function (url, params, callback) {
                if (typeof url != "string") {
                    return this._load(url)
                }
                var off = url.indexOf(" ");
                if (off >= 0) {
                    var selector = url.slice(off, url.length);
                    url = url.slice(0, off)
                }
                callback = callback ||
                function () {};
                var type = "GET";
                if (params) {
                    if (jQuery.isFunction(params)) {
                        callback = params;
                        params = null
                    } else {
                        params = jQuery.param(params);
                        type = "POST"
                    }
                }
                var self = this;
                jQuery.ajax({
                    url: url,
                    type: type,
                    dataType: "html",
                    data: params,
                    complete: function (res, status) {
                        if (status == "success" || status == "notmodified") {
                            self.html(selector ? jQuery("<div/>").append(res.responseText.replace(/<script(.|\s)*?\/script>/g, "")).find(selector) : res.responseText)
                        }
                        self.each(callback, [res.responseText, status, res])
                    }
                });
                return this
            },
            serialize: function () {
                return jQuery.param(this.serializeArray())
            },
            serializeArray: function () {
                return this.map(function () {
                    return jQuery.nodeName(this, "form") ? jQuery.makeArray(this.elements) : this
                }).filter(function () {
                    return this.name && !this.disabled && (this.checked || /select|textarea/i.test(this.nodeName) || /text|hidden|password/i.test(this.type))
                }).map(function (i, elem) {
                    var val = jQuery(this).val();
                    return val == null ? null : val.constructor == Array ? jQuery.map(val, function (val, i) {
                        return {
                            name: elem.name,
                            value: val
                        }
                    }) : {
                        name: elem.name,
                        value: val
                    }
                }).get()
            }
        });
    jQuery.each("ajaxStart,ajaxStop,ajaxComplete,ajaxError,ajaxSuccess,ajaxSend".split(","), function (i, o) {
            jQuery.fn[o] = function (f) {
                return this.bind(o, f)
            }
        });
    var jsc = now();
    jQuery.extend({
            get: function (url, data, callback, type) {
                if (jQuery.isFunction(data)) {
                    callback = data;
                    data = null
                }
                return jQuery.ajax({
                    type: "GET",
                    url: url,
                    data: data,
                    success: callback,
                    dataType: type
                })
            },
            getScript: function (url, callback) {
                return jQuery.get(url, null, callback, "script")
            },
            getJSON: function (url, data, callback) {
                return jQuery.get(url, data, callback, "json")
            },
            post: function (url, data, callback, type) {
                if (jQuery.isFunction(data)) {
                    callback = data;
                    data = {}
                }
                return jQuery.ajax({
                    type: "POST",
                    url: url,
                    data: data,
                    success: callback,
                    dataType: type
                })
            },
            ajaxSetup: function (settings) {
                jQuery.extend(jQuery.ajaxSettings, settings)
            },
            ajaxSettings: {
                url: location.href,
                global: true,
                type: "GET",
                timeout: 0,
                contentType: "application/x-www-form-urlencoded",
                processData: true,
                async: true,
                data: null,
                username: null,
                password: null,
                accepts: {
                    xml: "application/xml, text/xml",
                    html: "text/html",
                    script: "text/javascript, application/javascript",
                    json: "application/json, text/javascript",
                    text: "text/plain",
                    _default: "*/*"
                }
            },
            lastModified: {},
            ajax: function (s) {
                s = jQuery.extend(true, s, jQuery.extend(true, {}, jQuery.ajaxSettings, s));
                var jsonp, jsre = /=\?(&|$)/g,
                    status, data, type = s.type.toUpperCase();
                if (s.data && s.processData && typeof s.data != "string") {
                        s.data = jQuery.param(s.data)
                    }
                if (s.dataType == "jsonp") {
                        if (type == "GET") {
                            if (!s.url.match(jsre)) {
                                s.url += (s.url.match(/\?/) ? "&" : "?") + (s.jsonp || "callback") + "=?"
                            }
                        } else {
                            if (!s.data || !s.data.match(jsre)) {
                                s.data = (s.data ? s.data + "&" : "") + (s.jsonp || "callback") + "=?"
                            }
                        }
                        s.dataType = "json"
                    }
                if (s.dataType == "json" && (s.data && s.data.match(jsre) || s.url.match(jsre))) {
                        jsonp = "jsonp" + jsc++;
                        if (s.data) {
                            s.data = (s.data + "").replace(jsre, "=" + jsonp + "$1")
                        }
                        s.url = s.url.replace(jsre, "=" + jsonp + "$1");
                        s.dataType = "script";
                        window[jsonp] = function (tmp) {
                            data = tmp;
                            success();
                            complete();
                            window[jsonp] = undefined;
                            try {
                                delete window[jsonp]
                            } catch (e) {}
                            if (head) {
                                head.removeChild(script)
                            }
                        }
                    }
                if (s.dataType == "script" && s.cache == null) {
                        s.cache = false
                    }
                if (s.cache === false && type == "GET") {
                        var ts = now();
                        var ret = s.url.replace(/(\?|&)_=.*?(&|$)/, "$1_=" + ts + "$2");
                        s.url = ret + ((ret == s.url) ? (s.url.match(/\?/) ? "&" : "?") + "_=" + ts : "")
                    }
                if (s.data && type == "GET") {
                        s.url += (s.url.match(/\?/) ? "&" : "?") + s.data;
                        s.data = null
                    }
                if (s.global && !jQuery.active++) {
                        jQuery.event.trigger("ajaxStart")
                    }
                var remote = /^(?:\w+:)?\/\/([^\/?#]+)/;
                if (s.dataType == "script" && type == "GET" && remote.test(s.url) && remote.exec(s.url)[1] != location.host) {
                        var head = document.getElementsByTagName("head")[0];
                        var script = document.createElement("script");
                        script.src = s.url;
                        if (s.scriptCharset) {
                            script.charset = s.scriptCharset
                        }
                        if (!jsonp) {
                            var done = false;
                            script.onload = script.onreadystatechange = function () {
                                if (!done && (!this.readyState || this.readyState == "loaded" || this.readyState == "complete")) {
                                    done = true;
                                    success();
                                    complete();
                                    head.removeChild(script)
                                }
                            }
                        }
                        head.appendChild(script);
                        return undefined
                    }
                var requestDone = false;
                var xhr = window.ActiveXObject ? new ActiveXObject("Microsoft.XMLHTTP") : new XMLHttpRequest();
                if (s.username) {
                        xhr.open(type, s.url, s.async, s.username, s.password)
                    } else {
                        xhr.open(type, s.url, s.async)
                    }
                try {
                        if (s.data) {
                            xhr.setRequestHeader("Content-Type", s.contentType)
                        }
                        if (s.ifModified) {
                            xhr.setRequestHeader("If-Modified-Since", jQuery.lastModified[s.url] || "Thu, 01 Jan 1970 00:00:00 GMT")
                        }
                        xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest");
                        xhr.setRequestHeader("Accept", s.dataType && s.accepts[s.dataType] ? s.accepts[s.dataType] + ", */*" : s.accepts._default)
                    } catch (e) {}
                if (s.beforeSend && s.beforeSend(xhr, s) === false) {
                        s.global && jQuery.active--;
                        xhr.abort();
                        return false
                    }
                if (s.global) {
                        jQuery.event.trigger("ajaxSend", [xhr, s])
                    }
                var onreadystatechange = function (isTimeout) {
                        if (!requestDone && xhr && (xhr.readyState == 4 || isTimeout == "timeout")) {
                            requestDone = true;
                            if (ival) {
                                clearInterval(ival);
                                ival = null
                            }
                            status = isTimeout == "timeout" && "timeout" || !jQuery.httpSuccess(xhr) && "error" || s.ifModified && jQuery.httpNotModified(xhr, s.url) && "notmodified" || "success";
                            if (status == "success") {
                                try {
                                    data = jQuery.httpData(xhr, s.dataType, s.dataFilter)
                                } catch (e) {
                                    status = "parsererror"
                                }
                            }
                            if (status == "success") {
                                var modRes;
                                try {
                                    modRes = xhr.getResponseHeader("Last-Modified")
                                } catch (e) {}
                                if (s.ifModified && modRes) {
                                    jQuery.lastModified[s.url] = modRes
                                }
                                if (!jsonp) {
                                    success()
                                }
                            } else {
                                jQuery.handleError(s, xhr, status)
                            }
                            complete();
                            if (s.async) {
                                xhr = null
                            }
                        }
                    };
                if (s.async) {
                        var ival = setInterval(onreadystatechange, 13);
                        if (s.timeout > 0) {
                            setTimeout(function () {
                                if (xhr) {
                                    xhr.abort();
                                    if (!requestDone) {
                                        onreadystatechange("timeout")
                                    }
                                }
                            }, s.timeout)
                        }
                    }
                try {
                        xhr.send(s.data)
                    } catch (e) {
                        jQuery.handleError(s, xhr, null, e)
                    }
                if (!s.async) {
                        onreadystatechange()
                    }
                function success() {
                        if (s.success) {
                            s.success(data, status)
                        }
                        if (s.global) {
                            jQuery.event.trigger("ajaxSuccess", [xhr, s])
                        }
                    }
                function complete() {
                        if (s.complete) {
                            s.complete(xhr, status)
                        }
                        if (s.global) {
                            jQuery.event.trigger("ajaxComplete", [xhr, s])
                        }
                        if (s.global && !--jQuery.active) {
                            jQuery.event.trigger("ajaxStop")
                        }
                    }
                return xhr
            },
            handleError: function (s, xhr, status, e) {
                if (s.error) {
                    s.error(xhr, status, e)
                }
                if (s.global) {
                    jQuery.event.trigger("ajaxError", [xhr, s, e])
                }
            },
            active: 0,
            httpSuccess: function (xhr) {
                try {
                    return !xhr.status && location.protocol == "file:" || (xhr.status >= 200 && xhr.status < 300) || xhr.status == 304 || xhr.status == 1223 || jQuery.browser.safari && xhr.status == undefined
                } catch (e) {}
                return false
            },
            httpNotModified: function (xhr, url) {
                try {
                    var xhrRes = xhr.getResponseHeader("Last-Modified");
                    return xhr.status == 304 || xhrRes == jQuery.lastModified[url] || jQuery.browser.safari && xhr.status == undefined
                } catch (e) {}
                return false
            },
            httpData: function (xhr, type, filter) {
                var ct = xhr.getResponseHeader("content-type"),
                    xml = type == "xml" || !type && ct && ct.indexOf("xml") >= 0,
                    data = xml ? xhr.responseXML : xhr.responseText;
                if (xml && data.documentElement.tagName == "parsererror") {
                        throw "parsererror"
                    }
                if (filter) {
                        data = filter(data, type)
                    }
                if (type == "script") {
                        jQuery.globalEval(data)
                    }
                if (type == "json") {
                        data = eval("(" + data + ")")
                    }
                return data
            },
            param: function (a) {
                var s = [];
                if (a.constructor == Array || a.jquery) {
                    jQuery.each(a, function () {
                        s.push(encodeURIComponent(this.name) + "=" + encodeURIComponent(this.value))
                    })
                } else {
                    for (var j in a) {
                        if (a[j] && a[j].constructor == Array) {
                            jQuery.each(a[j], function () {
                                s.push(encodeURIComponent(j) + "=" + encodeURIComponent(this))
                            })
                        } else {
                            s.push(encodeURIComponent(j) + "=" + encodeURIComponent(jQuery.isFunction(a[j]) ? a[j]() : a[j]))
                        }
                    }
                }
                return s.join("&").replace(/%20/g, "+")
            }
        });
    jQuery.fn.extend({
            show: function (speed, callback) {
                return speed ? this.animate({
                    height: "show",
                    width: "show",
                    opacity: "show"
                }, speed, callback) : this.filter(":hidden").each(function () {
                    this.style.display = this.oldblock || "";
                    if (jQuery.css(this, "display") == "none") {
                        var elem = jQuery("<" + this.tagName + " />").appendTo("body");
                        this.style.display = elem.css("display");
                        if (this.style.display == "none") {
                            this.style.display = "block"
                        }
                        elem.remove()
                    }
                }).end()
            },
            hide: function (speed, callback) {
                return speed ? this.animate({
                    height: "hide",
                    width: "hide",
                    opacity: "hide"
                }, speed, callback) : this.filter(":visible").each(function () {
                    this.oldblock = this.oldblock || jQuery.css(this, "display");
                    this.style.display = "none"
                }).end()
            },
            _toggle: jQuery.fn.toggle,
            toggle: function (fn, fn2) {
                return jQuery.isFunction(fn) && jQuery.isFunction(fn2) ? this._toggle.apply(this, arguments) : fn ? this.animate({
                    height: "toggle",
                    width: "toggle",
                    opacity: "toggle"
                }, fn, fn2) : this.each(function () {
                    jQuery(this)[jQuery(this).is(":hidden") ? "show" : "hide"]()
                })
            },
            slideDown: function (speed, callback) {
                return this.animate({
                    height: "show"
                }, speed, callback)
            },
            slideUp: function (speed, callback) {
                return this.animate({
                    height: "hide"
                }, speed, callback)
            },
            slideToggle: function (speed, callback) {
                return this.animate({
                    height: "toggle"
                }, speed, callback)
            },
            fadeIn: function (speed, callback) {
                return this.animate({
                    opacity: "show"
                }, speed, callback)
            },
            fadeOut: function (speed, callback) {
                return this.animate({
                    opacity: "hide"
                }, speed, callback)
            },
            fadeTo: function (speed, to, callback) {
                return this.animate({
                    opacity: to
                }, speed, callback)
            },
            animate: function (prop, speed, easing, callback) {
                var optall = jQuery.speed(speed, easing, callback);
                return this[optall.queue === false ? "each" : "queue"](function () {
                    if (this.nodeType != 1) {
                        return false
                    }
                    var opt = jQuery.extend({}, optall),
                        p, hidden = jQuery(this).is(":hidden"),
                        self = this;
                    for (p in prop) {
                            if (prop[p] == "hide" && hidden || prop[p] == "show" && !hidden) {
                                return opt.complete.call(this)
                            }
                            if (p == "height" || p == "width") {
                                opt.display = jQuery.css(this, "display");
                                opt.overflow = this.style.overflow
                            }
                        }
                    if (opt.overflow != null) {
                            this.style.overflow = "hidden"
                        }
                    opt.curAnim = jQuery.extend({}, prop);
                    jQuery.each(prop, function (name, val) {
                            var e = new jQuery.fx(self, opt, name);
                            if (/toggle|show|hide/.test(val)) {
                                e[val == "toggle" ? hidden ? "show" : "hide" : val](prop)
                            } else {
                                var parts = val.toString().match(/^([+-]=)?([\d+-.]+)(.*)$/),
                                    start = e.cur(true) || 0;
                                if (parts) {
                                        var end = parseFloat(parts[2]),
                                            unit = parts[3] || "px";
                                        if (unit != "px") {
                                                self.style[name] = (end || 1) + unit;
                                                start = ((end || 1) / e.cur(true)) * start;
                                                self.style[name] = start + unit
                                            }
                                        if (parts[1]) {
                                                end = ((parts[1] == "-=" ? -1 : 1) * end) + start
                                            }
                                        e.custom(start, end, unit)
                                    } else {
                                        e.custom(start, val, "")
                                    }
                            }
                        });
                    return true
                })
            },
            queue: function (type, fn) {
                if (jQuery.isFunction(type) || (type && type.constructor == Array)) {
                    fn = type;
                    type = "fx"
                }
                if (!type || (typeof type == "string" && !fn)) {
                    return queue(this[0], type)
                }
                return this.each(function () {
                    if (fn.constructor == Array) {
                        queue(this, type, fn)
                    } else {
                        queue(this, type).push(fn);
                        if (queue(this, type).length == 1) {
                            fn.call(this)
                        }
                    }
                })
            },
            stop: function (clearQueue, gotoEnd) {
                var timers = jQuery.timers;
                if (clearQueue) {
                    this.queue([])
                }
                this.each(function () {
                    for (var i = timers.length - 1; i >= 0; i--) {
                        if (timers[i].elem == this) {
                            if (gotoEnd) {
                                timers[i](true)
                            }
                            timers.splice(i, 1)
                        }
                    }
                });
                if (!gotoEnd) {
                    this.dequeue()
                }
                return this
            }
        });
    var queue = function (elem, type, array) {
            if (elem) {
                type = type || "fx";
                var q = jQuery.data(elem, type + "queue");
                if (!q || array) {
                    q = jQuery.data(elem, type + "queue", jQuery.makeArray(array))
                }
            }
            return q
        };
    jQuery.fn.dequeue = function (type) {
            type = type || "fx";
            return this.each(function () {
                var q = queue(this, type);
                q.shift();
                if (q.length) {
                    q[0].call(this)
                }
            })
        };
    jQuery.extend({
            speed: function (speed, easing, fn) {
                var opt = speed && speed.constructor == Object ? speed : {
                    complete: fn || !fn && easing || jQuery.isFunction(speed) && speed,
                    duration: speed,
                    easing: fn && easing || easing && easing.constructor != Function && easing
                };
                opt.duration = (opt.duration && opt.duration.constructor == Number ? opt.duration : jQuery.fx.speeds[opt.duration]) || jQuery.fx.speeds.def;
                opt.old = opt.complete;
                opt.complete = function () {
                    if (opt.queue !== false) {
                        jQuery(this).dequeue()
                    }
                    if (jQuery.isFunction(opt.old)) {
                        opt.old.call(this)
                    }
                };
                return opt
            },
            easing: {
                linear: function (p, n, firstNum, diff) {
                    return firstNum + diff * p
                },
                swing: function (p, n, firstNum, diff) {
                    return ((-Math.cos(p * Math.PI) / 2) + 0.5) * diff + firstNum
                }
            },
            timers: [],
            timerId: null,
            fx: function (elem, options, prop) {
                this.options = options;
                this.elem = elem;
                this.prop = prop;
                if (!options.orig) {
                    options.orig = {}
                }
            }
        });
    jQuery.fx.prototype = {
            update: function () {
                if (this.options.step) {
                    this.options.step.call(this.elem, this.now, this)
                }(jQuery.fx.step[this.prop] || jQuery.fx.step._default)(this);
                if (this.prop == "height" || this.prop == "width") {
                    this.elem.style.display = "block"
                }
            },
            cur: function (force) {
                if (this.elem[this.prop] != null && this.elem.style[this.prop] == null) {
                    return this.elem[this.prop]
                }
                var r = parseFloat(jQuery.css(this.elem, this.prop, force));
                return r && r > -10000 ? r : parseFloat(jQuery.curCSS(this.elem, this.prop)) || 0
            },
            custom: function (from, to, unit) {
                this.startTime = now();
                this.start = from;
                this.end = to;
                this.unit = unit || this.unit || "px";
                this.now = this.start;
                this.pos = this.state = 0;
                this.update();
                var self = this;

                function t(gotoEnd) {
                    return self.step(gotoEnd)
                }
                t.elem = this.elem;
                jQuery.timers.push(t);
                if (jQuery.timerId == null) {
                    jQuery.timerId = setInterval(function () {
                        var timers = jQuery.timers;
                        for (var i = 0; i < timers.length; i++) {
                            if (!timers[i]()) {
                                timers.splice(i--, 1)
                            }
                        }
                        if (!timers.length) {
                            clearInterval(jQuery.timerId);
                            jQuery.timerId = null
                        }
                    }, 13)
                }
            },
            show: function () {
                this.options.orig[this.prop] = jQuery.attr(this.elem.style, this.prop);
                this.options.show = true;
                this.custom(0, this.cur());
                if (this.prop == "width" || this.prop == "height") {
                    this.elem.style[this.prop] = "1px"
                }
                jQuery(this.elem).show()
            },
            hide: function () {
                this.options.orig[this.prop] = jQuery.attr(this.elem.style, this.prop);
                this.options.hide = true;
                this.custom(this.cur(), 0)
            },
            step: function (gotoEnd) {
                var t = now();
                if (gotoEnd || t > this.options.duration + this.startTime) {
                    this.now = this.end;
                    this.pos = this.state = 1;
                    this.update();
                    this.options.curAnim[this.prop] = true;
                    var done = true;
                    for (var i in this.options.curAnim) {
                        if (this.options.curAnim[i] !== true) {
                            done = false
                        }
                    }
                    if (done) {
                        if (this.options.display != null) {
                            this.elem.style.overflow = this.options.overflow;
                            this.elem.style.display = this.options.display;
                            if (jQuery.css(this.elem, "display") == "none") {
                                this.elem.style.display = "block"
                            }
                        }
                        if (this.options.hide) {
                            this.elem.style.display = "none"
                        }
                        if (this.options.hide || this.options.show) {
                            for (var p in this.options.curAnim) {
                                jQuery.attr(this.elem.style, p, this.options.orig[p])
                            }
                        }
                    }
                    if (done) {
                        this.options.complete.call(this.elem)
                    }
                    return false
                } else {
                    var n = t - this.startTime;
                    this.state = n / this.options.duration;
                    this.pos = jQuery.easing[this.options.easing || (jQuery.easing.swing ? "swing" : "linear")](this.state, n, 0, 1, this.options.duration);
                    this.now = this.start + ((this.end - this.start) * this.pos);
                    this.update()
                }
                return true
            }
        };
    jQuery.extend(jQuery.fx, {
            speeds: {
                slow: 600,
                fast: 200,
                def: 400
            },
            step: {
                scrollLeft: function (fx) {
                    fx.elem.scrollLeft = fx.now
                },
                scrollTop: function (fx) {
                    fx.elem.scrollTop = fx.now
                },
                opacity: function (fx) {
                    jQuery.attr(fx.elem.style, "opacity", fx.now)
                },
                _default: function (fx) {
                    fx.elem.style[fx.prop] = fx.now + fx.unit
                }
            }
        });
    jQuery.fn.offset = function () {
            var left = 0,
                top = 0,
                elem = this[0],
                results;
            if (elem) {
                    with(jQuery.browser) {
                        var parent = elem.parentNode,
                            offsetChild = elem,
                            offsetParent = elem.offsetParent,
                            doc = elem.ownerDocument,
                            safari2 = safari && parseInt(version) < 522 && !/adobeair/i.test(userAgent),
                            css = jQuery.curCSS,
                            fixed = css(elem, "position") == "fixed";
                        if (elem.getBoundingClientRect) {
                                var box = elem.getBoundingClientRect();
                                add(box.left + Math.max(doc.documentElement.scrollLeft, doc.body.scrollLeft), box.top + Math.max(doc.documentElement.scrollTop, doc.body.scrollTop));
                                add(-doc.documentElement.clientLeft, -doc.documentElement.clientTop)
                            } else {
                                add(elem.offsetLeft, elem.offsetTop);
                                while (offsetParent) {
                                    add(offsetParent.offsetLeft, offsetParent.offsetTop);
                                    if (mozilla && !/^t(able|d|h)$/i.test(offsetParent.tagName) || safari && !safari2) {
                                        border(offsetParent)
                                    }
                                    if (!fixed && css(offsetParent, "position") == "fixed") {
                                        fixed = true
                                    }
                                    offsetChild = /^body$/i.test(offsetParent.tagName) ? offsetChild : offsetParent;
                                    offsetParent = offsetParent.offsetParent
                                }
                                while (parent && parent.tagName && !/^body|html$/i.test(parent.tagName)) {
                                    if (!/^inline|table.*$/i.test(css(parent, "display"))) {
                                        add(-parent.scrollLeft, -parent.scrollTop)
                                    }
                                    if (mozilla && css(parent, "overflow") != "visible") {
                                        border(parent)
                                    }
                                    parent = parent.parentNode
                                }
                                if ((safari2 && (fixed || css(offsetChild, "position") == "absolute")) || (mozilla && css(offsetChild, "position") != "absolute")) {
                                    add(-doc.body.offsetLeft, -doc.body.offsetTop)
                                }
                                if (fixed) {
                                    add(Math.max(doc.documentElement.scrollLeft, doc.body.scrollLeft), Math.max(doc.documentElement.scrollTop, doc.body.scrollTop))
                                }
                            }
                        results = {
                                top: top,
                                left: left
                            }
                    }
                }
            function border(elem) {
                    add(jQuery.curCSS(elem, "borderLeftWidth", true), jQuery.curCSS(elem, "borderTopWidth", true))
                }
            function add(l, t) {
                    left += parseInt(l, 10) || 0;
                    top += parseInt(t, 10) || 0
                }
            return results
        };
    jQuery.fn.extend({
            position: function () {
                var left = 0,
                    top = 0,
                    results;
                if (this[0]) {
                        var offsetParent = this.offsetParent(),
                            offset = this.offset(),
                            parentOffset = /^body|html$/i.test(offsetParent[0].tagName) ? {
                                top: 0,
                                left: 0
                            } : offsetParent.offset();
                        offset.top -= num(this, "marginTop");
                        offset.left -= num(this, "marginLeft");
                        parentOffset.top += num(offsetParent, "borderTopWidth");
                        parentOffset.left += num(offsetParent, "borderLeftWidth");
                        results = {
                                top: offset.top - parentOffset.top,
                                left: offset.left - parentOffset.left
                            }
                    }
                return results
            },
            offsetParent: function () {
                var offsetParent = this[0].offsetParent;
                while (offsetParent && (!/^body|html$/i.test(offsetParent.tagName) && jQuery.css(offsetParent, "position") == "static")) {
                    offsetParent = offsetParent.offsetParent
                }
                return jQuery(offsetParent)
            }
        });
    jQuery.each(["Left", "Top"], function (i, name) {
            var method = "scroll" + name;
            jQuery.fn[method] = function (val) {
                if (!this[0]) {
                    return
                }
                return val != undefined ? this.each(function () {
                    this == window || this == document ? window.scrollTo(!i ? val : jQuery(window).scrollLeft(), i ? val : jQuery(window).scrollTop()) : this[method] = val
                }) : this[0] == window || this[0] == document ? self[i ? "pageYOffset" : "pageXOffset"] || jQuery.boxModel && document.documentElement[method] || document.body[method] : this[0][method]
            }
        });
    jQuery.each(["Height", "Width"], function (i, name) {
            var tl = i ? "Left" : "Top",
                br = i ? "Right" : "Bottom";
            jQuery.fn["inner" + name] = function () {
                    return this[name.toLowerCase()]() + num(this, "padding" + tl) + num(this, "padding" + br)
                };
            jQuery.fn["outer" + name] = function (margin) {
                    return this["inner" + name]() + num(this, "border" + tl + "Width") + num(this, "border" + br + "Width") + (margin ? num(this, "margin" + tl) + num(this, "margin" + br) : 0)
                }
        })
})();
(function (A) {
    A.oR = {
        stack: [],
        timer: null,
        run: function () {
            var C, E, D, B = A.oR.stack.length;
            for (C = 0; C < B; C++) {
                E = A(A.oR.stack[C].id);
                if (E.length) {
                    D = A.oR.stack[C].fn;
                    if ("function" == typeof D) {
                        A.oR.stack[C] = A.oR.stack[--B];
                        A.oR.stack.pop();
                        D.apply(E, [A])
                    }
                }
            }
        },
        init: function (C, B) {
            A.oR.stack.push({
                id: C,
                fn: B
            });
            if (null == A.oR.timer) {
                A.oR.timer = setInterval(function () {
                    A.oR.run();
                    if (A.isReady) {
                        clearInterval(A.oR.timer);
                        A.oR.timer = null;
                        A.oR.run()
                    }
                }, 15)
            }
            return this
        }
    };
    A.eready = A.oR.init
})(jQuery);
(function (A) {
    A(document).ready(function () {
        A("a[@class^=popup]").each(function (C) {
            var G = A(this),
                E = {},
                B = G.attr("class").match(new RegExp("w(\\d+)")),
                F = G.attr("class").match(new RegExp("h(\\d+)")),
                D = G.attr("class").match(new RegExp("popup(\\w*)"));
            if (null != B) {
                    E.iWidth = B[1]
                }
            if (null != F) {
                    E.iHeight = F[1]
                }
            switch (D[1]) {
                case "1":
                case "2":
                    E.sResizeable = "no";
                    E.sStatus = "no";
                    E.iWidth = 600;
                    E.iHeight = 550;
                    break;
                case "3":
                    E.sScrollbars = "no";
                    E.sStatus = "no";
                    E.sResizeable = "no";
                    break;
                case "4":
                    E.sResizeable = "no";
                    E.sStatus = "no";
                    E.iWidth = 800;
                    E.iHeight = 650;
                    break;
                default:
                }
            A(this).click(function (H) {
                    return function () {
                        window.Utils ? Utils.Popup(this.href, "popup" + C, H) : false;
                        return false
                    }
                }(E))
        })
    })
})(jQuery);
(function (F) {
    if (/1\.(0|1|2)\.(0|1|2)/.test(F.fn.jquery) || /^1.1/.test(F.fn.jquery)) {
        alert("blockUI requires jQuery v1.2.3 or later!  You are using v" + F.fn.jquery);
        return
    }
    F.blockUI = function (M) {
        C(window, M)
    };
    F.unblockUI = function (M) {
        G(window, M)
    };
    F.fn.block = function (M) {
        return this.each(function () {
            if (F.css(this, "position") == "static") {
                this.style.position = "relative"
            }
            if (F.browser.msie) {
                this.style.zoom = 1
            }
            C(this, M)
        })
    };
    F.fn.unblock = function (M) {
        return this.each(function () {
            G(this, M)
        })
    };
    F.blockUI.version = 2.06;
    F.blockUI.defaults = {
        message: "<h1>Please wait...</h1>",
        css: {
            padding: 0,
            margin: 0,
            width: "30%",
            top: "40%",
            left: "35%",
            textAlign: "center",
            color: "#000",
            border: "3px solid #aaa",
            backgroundColor: "#fff",
            cursor: "wait"
        },
        overlayCSS: {
            backgroundColor: "#000",
            opacity: "0.6"
        },
        baseZ: 1000,
        centerX: true,
        centerY: true,
        allowBodyStretch: true,
        constrainTabKey: true,
        fadeOut: 400,
        focusInput: true,
        applyPlatformOpacityRules: true
    };
    var D = F.browser.msie && /MSIE 6.0/.test(navigator.userAgent);
    var B = null;
    var E = [];

    function C(O, M) {
        var X = (O == window);
        var P = M && M.message !== undefined ? M.message : undefined;
        M = F.extend({}, F.blockUI.defaults, M || {});
        M.overlayCSS = F.extend({}, F.blockUI.defaults.overlayCSS, M.overlayCSS || {});
        var W = F.extend({}, F.blockUI.defaults.css, M.css || {});
        P = P === undefined ? M.message : P;
        if (X && B) {
            G(window, {
                fadeOut: 0
            })
        }
        if (P && typeof P != "string" && (P.parentNode || P.jquery)) {
            var R = P.jquery ? P[0] : P;
            var V = {};
            F(O).data("blockUI.history", V);
            V.el = R;
            V.parent = R.parentNode;
            V.display = R.style.display;
            V.position = R.style.position;
            V.parent.removeChild(R)
        }
        var Y = M.baseZ;
        var U = (F.browser.msie) ? F('<iframe class="blockUI" style="z-index:' + Y+++';border:none;margin:0;padding:0;position:absolute;width:100%;height:100%;top:0;left:0" src="javascript:false;"></iframe>') : F('<div class="blockUI" style="display:none"></div>');
        var T = F('<div class="blockUI" style="z-index:' + Y+++';cursor:wait;border:none;margin:0;padding:0;width:100%;height:100%;top:0;left:0"></div>');
        var Q = X ? F('<div class="blockUI blockMsg blockPage" style="z-index:' + Y + ';position:fixed"></div>') : F('<div class="blockUI blockMsg blockElement" style="z-index:' + Y + ';display:none;position:absolute"></div>');
        if (P) {
            Q.css(W)
        }
        if (!M.applyPlatformOpacityRules || !(F.browser.mozilla && /Linux/.test(navigator.platform))) {
            T.css(M.overlayCSS)
        }
        T.css("position", X ? "fixed" : "absolute");
        if (F.browser.msie) {
            U.css("opacity", "0.0")
        }
        F([U[0], T[0], Q[0]]).appendTo(X ? "body" : O);
        var a = F.browser.msie && (!F.boxModel || F("object,embed", X ? null : O).length > 0);
        if (D || a) {
            if (0 != parseInt(Q.css("height"), 10)) {
                Q.css("width", "auto")
            }
            if (X && M.allowBodyStretch && F.boxModel) {
                F("html,body").css("height", "100%")
            }
            if ((D || !F.boxModel) && !X) {
                var b = J(O, "borderTopWidth"),
                    S = J(O, "borderLeftWidth");
                var Z = b ? "(0 - " + b + ")" : 0;
                var N = S ? "(0 - " + S + ")" : 0
            }
            F.each([U, T, Q], function (c, e) {
                var d = e[0].style;
                d.position = "absolute";
                if (c < 2) {
                    X ? d.height = (parseInt(document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop, 10) + parseInt(document.documentElement.clientHeight || document.body.clientHeight, 10)) + "px" : (this.parentNode.offsetHeight) + "px";
                    X ? d.setExpression("width", 'jQuery.boxModel && document.documentElement.clientWidth || document.body.clientWidth + "px"') : d.setExpression("width", 'this.parentNode.offsetWidth + "px"');
                    if (N) {
                        d.setExpression("left", N)
                    }
                    if (Z) {
                        d.setExpression("top", Z)
                    }
                } else {
                    if (M.centerY) {
                        if (X) {
                            d.setExpression("top", '(parseInt(document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop, 10) + parseInt(document.documentElement.clientHeight || document.body.clientHeight, 10) / 2 - parseInt($(this)[0].offsetHeight, 10)/ 2) + "px"')
                        }
                        d.marginTop = 0
                    }
                }
            })
        }
        Q.append(P).show();
        if (P && (P.jquery || P.nodeType)) {
            F(P).show()
        }
        I(1, O, M);
        if (X) {
            B = Q[0];
            E = F(":input:enabled:visible", B);
            if (M.focusInput) {
                setTimeout(L, 20)
            }
        } else {
            A(Q[0], M.centerX, M.centerY)
        }
    }
    function G(O, P) {
        var N = O == window;
        var Q = F(O).data("blockUI.history");
        P = F.extend(true, {}, F.blockUI.defaults, P);
        I(0, O, P);
        var M = N ? F("body").children().filter(".blockUI") : F(".blockUI", O);
        if (N) {
            B = E = null
        }
        if (P.fadeOut) {
            M.fadeOut(P.fadeOut);
            setTimeout(function () {
                H(M, Q)
            }, P.fadeOut)
        } else {
            H(M, Q)
        }
    }
    function H(M, N) {
        M.each(function (O, P) {
            if (this.parentNode) {
                this.parentNode.removeChild(this)
            }
        });
        if (N && N.el) {
            N.el.style.display = N.display;
            N.el.style.position = N.position;
            N.parent.appendChild(N.el);
            F(N.el).removeData("blockUI.history")
        }
    }
    function I(M, Q, R) {
        var P = Q == window,
            O = F(Q);
        if (!M && (P && !B || !P && !O.data("blockUI.isBlocked"))) {
                return
            }
        if (!P) {
                O.data("blockUI.isBlocked", M)
            }
        var N = "mousedown mouseup keydown keypress click";
        M ? F(document).bind(N, R, K) : F(document).unbind(N, K)
    }
    function K(P) {
        if (P.keyCode && P.keyCode == 9) {
            if (B && P.data.constrainTabKey) {
                var O = E;
                var N = !P.shiftKey && P.target == O[O.length - 1];
                var M = P.shiftKey && P.target == O[0];
                if (N || M) {
                    setTimeout(function () {
                        L(M)
                    }, 10);
                    return false
                }
            }
        }
        if (F(P.target).parents("div.blockMsg").length > 0) {
            return true
        }
        return F(P.target).parents().children().filter("div.blockUI").length == 0
    }
    function L(M) {
        if (!E) {
            return
        }
        var N = E[M === true ? E.length - 1 : 0];
        if (N) {
            N.focus()
        }
    }
    function A(Q, M, S) {
        var R = Q.parentNode,
            P = Q.style;
        var N = ((R.offsetWidth - Q.offsetWidth) / 2) - J(R, "borderLeftWidth");
        var O = ((R.offsetHeight - Q.offsetHeight) / 2) - J(R, "borderTopWidth");
        if (M) {
                P.left = N > 0 ? (N + "px") : "0"
            }
        if (S) {
                P.top = O > 0 ? (O + "px") : "0"
            }
    }
    function J(M, N) {
        return parseInt(F.css(M, N)) || 0
    }
})(jQuery);

(function (A) {
    A.oNavigator = {
        go: function (C) {
            if (window.event) {
                C = window.event
            }
            if (C.ctrlKey) {
                var B = null;
                switch (C.keyCode ? C.keyCode : C.which ? C.which : null) {
                case 37:
                    B = A("link[@rel=prev]").attr("href");
                    break;
                case 39:
                    B = A("link[@rel=next]").attr("href");
                    break;
                case 38:
                    B = A("link[@rel=up]").attr("href");
                    break;
                case 40:
                    B = A("link[@rel=down]").attr("href");
                    break;
                case 36:
                    B = "/";
                    break
                }
                if (B) {
                    document.location = B
                }
            }
        }
    };
    A(document).keydown(A.oNavigator.go)
})(jQuery);

function thisMovie(A) {
    if (navigator.appName.indexOf("Microsoft") != -1) {
        return window[A]
    } else {
        return document[A]
    }
}
function flashToggleUp() {
    /*var A = jQuery;
    A("#flash-presentation").width(1000).height(600);
    A("#flash-cont").css({
        paddingTop: "40px"
    });
    if (A.browser.msie || A.browser.safari) {
        A("#flash-cont").css({
            position: "static"
        })
    }
    A("#flash .big").hide(); */
}

function setLocation(value) {
        window.location.hash = "#" + value;
}       
function getLocation() {
        thisMovie("presentation").onGetLocation(window.location.hash.substring(1));
}       
function closePresent() {
        flashToggleDown();
}

function flashToggleDown() {
        window.location.hash = "";
    var A = jQuery;    
    A("#flash-presentation").width(0).height(0);
    A("#flash-presentation").empty();   
    A("#flash .big").css({
        display: "block"
    });
    A("#flash-cont").css({
        paddingTop: "0"
    });
    if (A.browser.msie || A.browser.safari) {
        A("#flash-cont").css({
            position: "absolute",
            top: "-1000px"
        })
    }
        
    setTimeout(function () {
                A("#flash .big").css({
                        display: "block",
                        opacity: 1,
                        height: 600,
                        width: 1000
                }).animate({
            height: 298,
            width: 496,
            marginTop: 0,
            marginLeft: 0
        }, 1000, function () {
            A(this).hide();
            A("#flash").css({
                backgroundColor: "#000"
            }).find("div").show()
        })
    }, 10)
}
(function (A) {
    A.eready("#flash", function () {
        var B = true;
        A("#link-presentation-start").click(function () {               
            A("#flash div").hide();
            //if (B) {
                A("#flash-cont").animate({
                    paddingTop: "40px"
                });
                A("#flash .big").css({
                    display: "block",
                    opacity: 1,
                    height: 298,
                    width: 496
                }).animate({
                    height: 600,
                    width: 1000,
                    marginLeft: 89
                }, function () {
                    A("#flash .big").animate({
                        opacity: 0
                    }, function () {                            
                        A("#flash-presentation").width(1000).height(600);
						A("#flash-presentation").css({
                                                        display: "block"
                                                });
                                                //A("#flash-presentation").html('<div id="flash_object"><p>Извините!<br />Для просмотра презентации необходимо <a href="http://www.adobe.com/go/getflashplayer">установить Adobe Flash Player</a> версии 10 или выше.</p></div>');
                                                A("#flash-cont").css({
                                                        paddingTop: "40px"
                                                });
                                                if (A.browser.msie || A.browser.safari) {
                                                        A("#flash-cont").css({
                                                                position: "static"
                                                        })
                                                }
                                                A("#flash .big").hide();
                        /*A("#flash .big").hide().css({
                            opacity: 1
                        }).hide();*/
                        /*var C = new SWFObject("/flashtest/Present.swf", "presentation", "1000", "600", "9.0.115", "#0f0f0f");
                        C.addParam("menu", "false");
                        C.addParam("allowFullScreen", "true");
                        C.addParam("allowScriptAccess", "always");
                        C.write("flash-presentation")*/
			   relflashlang = '';
			   if ($('#link-presentation-start').attr('rel') == 2) {
				relflashlang = '_eng';
			   }
                        var params = {
                                                        menu: "false",
                                                        scale: "noScale",
                                                        allowFullscreen: "true",
                                                        allowScriptAccess: "always",
                                                        bgcolor: "#0f0f0f"
                                                };
                                                var attributes = {
                                                        id:"presentation"
                                                };
                                                var showIntro = 0;
                                                if(window.location.hash.length == 0 || window.location.hash.match(/#\d{4}\/map\/?$/)) {
                                                        showIntro = 1;
                                                }
                                                var flashvars = {
                                                        showIntro: showIntro
                                                };
                                                swfobject.embedSWF("/flashtest/Present"+relflashlang+".swf", "flash_object", "1000", "600", "9.0.0", "expressInstall.swf", flashvars, params, attributes);
                    })
                });
                //B = false
            /*} else {
                A("#flash .big").css({
                    display: "block"
                }).animate({
                    height: 600,
                    width: 1000,
                    marginTop: 40,
                    marginLeft: 89
                }, function () {
                    A("#flash-cont").css({
                        paddingTop: "15px"
                    });
                    flashToggleUp()
                })
            }*/
            A("#flash").css({
                backgroundColor: "#0f0f0f"
            })
            return false;
        })
    })
})(jQuery);
