/*!
 * jQuery JavaScript Library v1.4.4
 * http://jquery.com/
 *
 * Copyright 2010, John Resig
 * Dual licensed under the MIT or GPL Version 2 licenses.
 * http://jquery.org/license
 *
 * Includes Sizzle.js
 * http://sizzlejs.com/
 * Copyright 2010, The Dojo Foundation
 * Released under the MIT, BSD, and GPL Licenses.
 *
 * Date: Thu Nov 11 19:04:53 2010 -0500
 */
(function(E,B){function ka(a,b,d){if(d===B&&a.nodeType===1){d=a.getAttribute("data-"+b);if(typeof d==="string"){try{d=d==="true"?true:d==="false"?false:d==="null"?null:!c.isNaN(d)?parseFloat(d):Ja.test(d)?c.parseJSON(d):d}catch(e){}c.data(a,b,d)}else d=B}return d}function U(){return false}function ca(){return true}function la(a,b,d){d[0].type=a;return c.event.handle.apply(b,d)}function Ka(a){var b,d,e,f,h,l,k,o,x,r,A,C=[];f=[];h=c.data(this,this.nodeType?"events":"__events__");if(typeof h==="function")h=
h.events;if(!(a.liveFired===this||!h||!h.live||a.button&&a.type==="click")){if(a.namespace)A=RegExp("(^|\\.)"+a.namespace.split(".").join("\\.(?:.*\\.)?")+"(\\.|$)");a.liveFired=this;var J=h.live.slice(0);for(k=0;k<J.length;k++){h=J[k];h.origType.replace(X,"")===a.type?f.push(h.selector):J.splice(k--,1)}f=c(a.target).closest(f,a.currentTarget);o=0;for(x=f.length;o<x;o++){r=f[o];for(k=0;k<J.length;k++){h=J[k];if(r.selector===h.selector&&(!A||A.test(h.namespace))){l=r.elem;e=null;if(h.preType==="mouseenter"||
h.preType==="mouseleave"){a.type=h.preType;e=c(a.relatedTarget).closest(h.selector)[0]}if(!e||e!==l)C.push({elem:l,handleObj:h,level:r.level})}}}o=0;for(x=C.length;o<x;o++){f=C[o];if(d&&f.level>d)break;a.currentTarget=f.elem;a.data=f.handleObj.data;a.handleObj=f.handleObj;A=f.handleObj.origHandler.apply(f.elem,arguments);if(A===false||a.isPropagationStopped()){d=f.level;if(A===false)b=false;if(a.isImmediatePropagationStopped())break}}return b}}function Y(a,b){return(a&&a!=="*"?a+".":"")+b.replace(La,
"`").replace(Ma,"&")}function ma(a,b,d){if(c.isFunction(b))return c.grep(a,function(f,h){return!!b.call(f,h,f)===d});else if(b.nodeType)return c.grep(a,function(f){return f===b===d});else if(typeof b==="string"){var e=c.grep(a,function(f){return f.nodeType===1});if(Na.test(b))return c.filter(b,e,!d);else b=c.filter(b,e)}return c.grep(a,function(f){return c.inArray(f,b)>=0===d})}function na(a,b){var d=0;b.each(function(){if(this.nodeName===(a[d]&&a[d].nodeName)){var e=c.data(a[d++]),f=c.data(this,
e);if(e=e&&e.events){delete f.handle;f.events={};for(var h in e)for(var l in e[h])c.event.add(this,h,e[h][l],e[h][l].data)}}})}function Oa(a,b){b.src?c.ajax({url:b.src,async:false,dataType:"script"}):c.globalEval(b.text||b.textContent||b.innerHTML||"");b.parentNode&&b.parentNode.removeChild(b)}function oa(a,b,d){var e=b==="width"?a.offsetWidth:a.offsetHeight;if(d==="border")return e;c.each(b==="width"?Pa:Qa,function(){d||(e-=parseFloat(c.css(a,"padding"+this))||0);if(d==="margin")e+=parseFloat(c.css(a,
"margin"+this))||0;else e-=parseFloat(c.css(a,"border"+this+"Width"))||0});return e}function da(a,b,d,e){if(c.isArray(b)&&b.length)c.each(b,function(f,h){d||Ra.test(a)?e(a,h):da(a+"["+(typeof h==="object"||c.isArray(h)?f:"")+"]",h,d,e)});else if(!d&&b!=null&&typeof b==="object")c.isEmptyObject(b)?e(a,""):c.each(b,function(f,h){da(a+"["+f+"]",h,d,e)});else e(a,b)}function S(a,b){var d={};c.each(pa.concat.apply([],pa.slice(0,b)),function(){d[this]=a});return d}function qa(a){if(!ea[a]){var b=c("<"+
a+">").appendTo("body"),d=b.css("display");b.remove();if(d==="none"||d==="")d="block";ea[a]=d}return ea[a]}function fa(a){return c.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:false}var t=E.document,c=function(){function a(){if(!b.isReady){try{t.documentElement.doScroll("left")}catch(j){setTimeout(a,1);return}b.ready()}}var b=function(j,s){return new b.fn.init(j,s)},d=E.jQuery,e=E.$,f,h=/^(?:[^<]*(<[\w\W]+>)[^>]*$|#([\w\-]+)$)/,l=/\S/,k=/^\s+/,o=/\s+$/,x=/\W/,r=/\d/,A=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,
C=/^[\],:{}\s]*$/,J=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,w=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,I=/(?:^|:|,)(?:\s*\[)+/g,L=/(webkit)[ \/]([\w.]+)/,g=/(opera)(?:.*version)?[ \/]([\w.]+)/,i=/(msie) ([\w.]+)/,n=/(mozilla)(?:.*? rv:([\w.]+))?/,m=navigator.userAgent,p=false,q=[],u,y=Object.prototype.toString,F=Object.prototype.hasOwnProperty,M=Array.prototype.push,N=Array.prototype.slice,O=String.prototype.trim,D=Array.prototype.indexOf,R={};b.fn=b.prototype={init:function(j,
s){var v,z,H;if(!j)return this;if(j.nodeType){this.context=this[0]=j;this.length=1;return this}if(j==="body"&&!s&&t.body){this.context=t;this[0]=t.body;this.selector="body";this.length=1;return this}if(typeof j==="string")if((v=h.exec(j))&&(v[1]||!s))if(v[1]){H=s?s.ownerDocument||s:t;if(z=A.exec(j))if(b.isPlainObject(s)){j=[t.createElement(z[1])];b.fn.attr.call(j,s,true)}else j=[H.createElement(z[1])];else{z=b.buildFragment([v[1]],[H]);j=(z.cacheable?z.fragment.cloneNode(true):z.fragment).childNodes}return b.merge(this,
j)}else{if((z=t.getElementById(v[2]))&&z.parentNode){if(z.id!==v[2])return f.find(j);this.length=1;this[0]=z}this.context=t;this.selector=j;return this}else if(!s&&!x.test(j)){this.selector=j;this.context=t;j=t.getElementsByTagName(j);return b.merge(this,j)}else return!s||s.jquery?(s||f).find(j):b(s).find(j);else if(b.isFunction(j))return f.ready(j);if(j.selector!==B){this.selector=j.selector;this.context=j.context}return b.makeArray(j,this)},selector:"",jquery:"1.4.4",length:0,size:function(){return this.length},
toArray:function(){return N.call(this,0)},get:function(j){return j==null?this.toArray():j<0?this.slice(j)[0]:this[j]},pushStack:function(j,s,v){var z=b();b.isArray(j)?M.apply(z,j):b.merge(z,j);z.prevObject=this;z.context=this.context;if(s==="find")z.selector=this.selector+(this.selector?" ":"")+v;else if(s)z.selector=this.selector+"."+s+"("+v+")";return z},each:function(j,s){return b.each(this,j,s)},ready:function(j){b.bindReady();if(b.isReady)j.call(t,b);else q&&q.push(j);return this},eq:function(j){return j===
-1?this.slice(j):this.slice(j,+j+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(N.apply(this,arguments),"slice",N.call(arguments).join(","))},map:function(j){return this.pushStack(b.map(this,function(s,v){return j.call(s,v,s)}))},end:function(){return this.prevObject||b(null)},push:M,sort:[].sort,splice:[].splice};b.fn.init.prototype=b.fn;b.extend=b.fn.extend=function(){var j,s,v,z,H,G=arguments[0]||{},K=1,Q=arguments.length,ga=false;
if(typeof G==="boolean"){ga=G;G=arguments[1]||{};K=2}if(typeof G!=="object"&&!b.isFunction(G))G={};if(Q===K){G=this;--K}for(;K<Q;K++)if((j=arguments[K])!=null)for(s in j){v=G[s];z=j[s];if(G!==z)if(ga&&z&&(b.isPlainObject(z)||(H=b.isArray(z)))){if(H){H=false;v=v&&b.isArray(v)?v:[]}else v=v&&b.isPlainObject(v)?v:{};G[s]=b.extend(ga,v,z)}else if(z!==B)G[s]=z}return G};b.extend({noConflict:function(j){E.$=e;if(j)E.jQuery=d;return b},isReady:false,readyWait:1,ready:function(j){j===true&&b.readyWait--;
if(!b.readyWait||j!==true&&!b.isReady){if(!t.body)return setTimeout(b.ready,1);b.isReady=true;if(!(j!==true&&--b.readyWait>0))if(q){var s=0,v=q;for(q=null;j=v[s++];)j.call(t,b);b.fn.trigger&&b(t).trigger("ready").unbind("ready")}}},bindReady:function(){if(!p){p=true;if(t.readyState==="complete")return setTimeout(b.ready,1);if(t.addEventListener){t.addEventListener("DOMContentLoaded",u,false);E.addEventListener("load",b.ready,false)}else if(t.attachEvent){t.attachEvent("onreadystatechange",u);E.attachEvent("onload",
b.ready);var j=false;try{j=E.frameElement==null}catch(s){}t.documentElement.doScroll&&j&&a()}}},isFunction:function(j){return b.type(j)==="function"},isArray:Array.isArray||function(j){return b.type(j)==="array"},isWindow:function(j){return j&&typeof j==="object"&&"setInterval"in j},isNaN:function(j){return j==null||!r.test(j)||isNaN(j)},type:function(j){return j==null?String(j):R[y.call(j)]||"object"},isPlainObject:function(j){if(!j||b.type(j)!=="object"||j.nodeType||b.isWindow(j))return false;if(j.constructor&&
!F.call(j,"constructor")&&!F.call(j.constructor.prototype,"isPrototypeOf"))return false;for(var s in j);return s===B||F.call(j,s)},isEmptyObject:function(j){for(var s in j)return false;return true},error:function(j){throw j;},parseJSON:function(j){if(typeof j!=="string"||!j)return null;j=b.trim(j);if(C.test(j.replace(J,"@").replace(w,"]").replace(I,"")))return E.JSON&&E.JSON.parse?E.JSON.parse(j):(new Function("return "+j))();else b.error("Invalid JSON: "+j)},noop:function(){},globalEval:function(j){if(j&&
l.test(j)){var s=t.getElementsByTagName("head")[0]||t.documentElement,v=t.createElement("script");v.type="text/javascript";if(b.support.scriptEval)v.appendChild(t.createTextNode(j));else v.text=j;s.insertBefore(v,s.firstChild);s.removeChild(v)}},nodeName:function(j,s){return j.nodeName&&j.nodeName.toUpperCase()===s.toUpperCase()},each:function(j,s,v){var z,H=0,G=j.length,K=G===B||b.isFunction(j);if(v)if(K)for(z in j){if(s.apply(j[z],v)===false)break}else for(;H<G;){if(s.apply(j[H++],v)===false)break}else if(K)for(z in j){if(s.call(j[z],
z,j[z])===false)break}else for(v=j[0];H<G&&s.call(v,H,v)!==false;v=j[++H]);return j},trim:O?function(j){return j==null?"":O.call(j)}:function(j){return j==null?"":j.toString().replace(k,"").replace(o,"")},makeArray:function(j,s){var v=s||[];if(j!=null){var z=b.type(j);j.length==null||z==="string"||z==="function"||z==="regexp"||b.isWindow(j)?M.call(v,j):b.merge(v,j)}return v},inArray:function(j,s){if(s.indexOf)return s.indexOf(j);for(var v=0,z=s.length;v<z;v++)if(s[v]===j)return v;return-1},merge:function(j,
s){var v=j.length,z=0;if(typeof s.length==="number")for(var H=s.length;z<H;z++)j[v++]=s[z];else for(;s[z]!==B;)j[v++]=s[z++];j.length=v;return j},grep:function(j,s,v){var z=[],H;v=!!v;for(var G=0,K=j.length;G<K;G++){H=!!s(j[G],G);v!==H&&z.push(j[G])}return z},map:function(j,s,v){for(var z=[],H,G=0,K=j.length;G<K;G++){H=s(j[G],G,v);if(H!=null)z[z.length]=H}return z.concat.apply([],z)},guid:1,proxy:function(j,s,v){if(arguments.length===2)if(typeof s==="string"){v=j;j=v[s];s=B}else if(s&&!b.isFunction(s)){v=
s;s=B}if(!s&&j)s=function(){return j.apply(v||this,arguments)};if(j)s.guid=j.guid=j.guid||s.guid||b.guid++;return s},access:function(j,s,v,z,H,G){var K=j.length;if(typeof s==="object"){for(var Q in s)b.access(j,Q,s[Q],z,H,v);return j}if(v!==B){z=!G&&z&&b.isFunction(v);for(Q=0;Q<K;Q++)H(j[Q],s,z?v.call(j[Q],Q,H(j[Q],s)):v,G);return j}return K?H(j[0],s):B},now:function(){return(new Date).getTime()},uaMatch:function(j){j=j.toLowerCase();j=L.exec(j)||g.exec(j)||i.exec(j)||j.indexOf("compatible")<0&&n.exec(j)||
[];return{browser:j[1]||"",version:j[2]||"0"}},browser:{}});b.each("Boolean Number String Function Array Date RegExp Object".split(" "),function(j,s){R["[object "+s+"]"]=s.toLowerCase()});m=b.uaMatch(m);if(m.browser){b.browser[m.browser]=true;b.browser.version=m.version}if(b.browser.webkit)b.browser.safari=true;if(D)b.inArray=function(j,s){return D.call(s,j)};if(!/\s/.test("\u00a0")){k=/^[\s\xA0]+/;o=/[\s\xA0]+$/}f=b(t);if(t.addEventListener)u=function(){t.removeEventListener("DOMContentLoaded",u,
false);b.ready()};else if(t.attachEvent)u=function(){if(t.readyState==="complete"){t.detachEvent("onreadystatechange",u);b.ready()}};return E.jQuery=E.$=b}();(function(){c.support={};var a=t.documentElement,b=t.createElement("script"),d=t.createElement("div"),e="script"+c.now();d.style.display="none";d.innerHTML="   <link/><table></table><a href='/a' style='color:red;float:left;opacity:.55;'>a</a><input type='checkbox'/>";var f=d.getElementsByTagName("*"),h=d.getElementsByTagName("a")[0],l=t.createElement("select"),
k=l.appendChild(t.createElement("option"));if(!(!f||!f.length||!h)){c.support={leadingWhitespace:d.firstChild.nodeType===3,tbody:!d.getElementsByTagName("tbody").length,htmlSerialize:!!d.getElementsByTagName("link").length,style:/red/.test(h.getAttribute("style")),hrefNormalized:h.getAttribute("href")==="/a",opacity:/^0.55$/.test(h.style.opacity),cssFloat:!!h.style.cssFloat,checkOn:d.getElementsByTagName("input")[0].value==="on",optSelected:k.selected,deleteExpando:true,optDisabled:false,checkClone:false,
scriptEval:false,noCloneEvent:true,boxModel:null,inlineBlockNeedsLayout:false,shrinkWrapBlocks:false,reliableHiddenOffsets:true};l.disabled=true;c.support.optDisabled=!k.disabled;b.type="text/javascript";try{b.appendChild(t.createTextNode("window."+e+"=1;"))}catch(o){}a.insertBefore(b,a.firstChild);if(E[e]){c.support.scriptEval=true;delete E[e]}try{delete b.test}catch(x){c.support.deleteExpando=false}a.removeChild(b);if(d.attachEvent&&d.fireEvent){d.attachEvent("onclick",function r(){c.support.noCloneEvent=
false;d.detachEvent("onclick",r)});d.cloneNode(true).fireEvent("onclick")}d=t.createElement("div");d.innerHTML="<input type='radio' name='radiotest' checked='checked'/>";a=t.createDocumentFragment();a.appendChild(d.firstChild);c.support.checkClone=a.cloneNode(true).cloneNode(true).lastChild.checked;c(function(){var r=t.createElement("div");r.style.width=r.style.paddingLeft="1px";t.body.appendChild(r);c.boxModel=c.support.boxModel=r.offsetWidth===2;if("zoom"in r.style){r.style.display="inline";r.style.zoom=
1;c.support.inlineBlockNeedsLayout=r.offsetWidth===2;r.style.display="";r.innerHTML="<div style='width:4px;'></div>";c.support.shrinkWrapBlocks=r.offsetWidth!==2}r.innerHTML="<table><tr><td style='padding:0;display:none'></td><td>t</td></tr></table>";var A=r.getElementsByTagName("td");c.support.reliableHiddenOffsets=A[0].offsetHeight===0;A[0].style.display="";A[1].style.display="none";c.support.reliableHiddenOffsets=c.support.reliableHiddenOffsets&&A[0].offsetHeight===0;r.innerHTML="";t.body.removeChild(r).style.display=
"none"});a=function(r){var A=t.createElement("div");r="on"+r;var C=r in A;if(!C){A.setAttribute(r,"return;");C=typeof A[r]==="function"}return C};c.support.submitBubbles=a("submit");c.support.changeBubbles=a("change");a=b=d=f=h=null}})();var ra={},Ja=/^(?:\{.*\}|\[.*\])$/;c.extend({cache:{},uuid:0,expando:"jQuery"+c.now(),noData:{embed:true,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:true},data:function(a,b,d){if(c.acceptData(a)){a=a==E?ra:a;var e=a.nodeType,f=e?a[c.expando]:null,h=
c.cache;if(!(e&&!f&&typeof b==="string"&&d===B)){if(e)f||(a[c.expando]=f=++c.uuid);else h=a;if(typeof b==="object")if(e)h[f]=c.extend(h[f],b);else c.extend(h,b);else if(e&&!h[f])h[f]={};a=e?h[f]:h;if(d!==B)a[b]=d;return typeof b==="string"?a[b]:a}}},removeData:function(a,b){if(c.acceptData(a)){a=a==E?ra:a;var d=a.nodeType,e=d?a[c.expando]:a,f=c.cache,h=d?f[e]:e;if(b){if(h){delete h[b];d&&c.isEmptyObject(h)&&c.removeData(a)}}else if(d&&c.support.deleteExpando)delete a[c.expando];else if(a.removeAttribute)a.removeAttribute(c.expando);
else if(d)delete f[e];else for(var l in a)delete a[l]}},acceptData:function(a){if(a.nodeName){var b=c.noData[a.nodeName.toLowerCase()];if(b)return!(b===true||a.getAttribute("classid")!==b)}return true}});c.fn.extend({data:function(a,b){var d=null;if(typeof a==="undefined"){if(this.length){var e=this[0].attributes,f;d=c.data(this[0]);for(var h=0,l=e.length;h<l;h++){f=e[h].name;if(f.indexOf("data-")===0){f=f.substr(5);ka(this[0],f,d[f])}}}return d}else if(typeof a==="object")return this.each(function(){c.data(this,
a)});var k=a.split(".");k[1]=k[1]?"."+k[1]:"";if(b===B){d=this.triggerHandler("getData"+k[1]+"!",[k[0]]);if(d===B&&this.length){d=c.data(this[0],a);d=ka(this[0],a,d)}return d===B&&k[1]?this.data(k[0]):d}else return this.each(function(){var o=c(this),x=[k[0],b];o.triggerHandler("setData"+k[1]+"!",x);c.data(this,a,b);o.triggerHandler("changeData"+k[1]+"!",x)})},removeData:function(a){return this.each(function(){c.removeData(this,a)})}});c.extend({queue:function(a,b,d){if(a){b=(b||"fx")+"queue";var e=
c.data(a,b);if(!d)return e||[];if(!e||c.isArray(d))e=c.data(a,b,c.makeArray(d));else e.push(d);return e}},dequeue:function(a,b){b=b||"fx";var d=c.queue(a,b),e=d.shift();if(e==="inprogress")e=d.shift();if(e){b==="fx"&&d.unshift("inprogress");e.call(a,function(){c.dequeue(a,b)})}}});c.fn.extend({queue:function(a,b){if(typeof a!=="string"){b=a;a="fx"}if(b===B)return c.queue(this[0],a);return this.each(function(){var d=c.queue(this,a,b);a==="fx"&&d[0]!=="inprogress"&&c.dequeue(this,a)})},dequeue:function(a){return this.each(function(){c.dequeue(this,
a)})},delay:function(a,b){a=c.fx?c.fx.speeds[a]||a:a;b=b||"fx";return this.queue(b,function(){var d=this;setTimeout(function(){c.dequeue(d,b)},a)})},clearQueue:function(a){return this.queue(a||"fx",[])}});var sa=/[\n\t]/g,ha=/\s+/,Sa=/\r/g,Ta=/^(?:href|src|style)$/,Ua=/^(?:button|input)$/i,Va=/^(?:button|input|object|select|textarea)$/i,Wa=/^a(?:rea)?$/i,ta=/^(?:radio|checkbox)$/i;c.props={"for":"htmlFor","class":"className",readonly:"readOnly",maxlength:"maxLength",cellspacing:"cellSpacing",rowspan:"rowSpan",
colspan:"colSpan",tabindex:"tabIndex",usemap:"useMap",frameborder:"frameBorder"};c.fn.extend({attr:function(a,b){return c.access(this,a,b,true,c.attr)},removeAttr:function(a){return this.each(function(){c.attr(this,a,"");this.nodeType===1&&this.removeAttribute(a)})},addClass:function(a){if(c.isFunction(a))return this.each(function(x){var r=c(this);r.addClass(a.call(this,x,r.attr("class")))});if(a&&typeof a==="string")for(var b=(a||"").split(ha),d=0,e=this.length;d<e;d++){var f=this[d];if(f.nodeType===
1)if(f.className){for(var h=" "+f.className+" ",l=f.className,k=0,o=b.length;k<o;k++)if(h.indexOf(" "+b[k]+" ")<0)l+=" "+b[k];f.className=c.trim(l)}else f.className=a}return this},removeClass:function(a){if(c.isFunction(a))return this.each(function(o){var x=c(this);x.removeClass(a.call(this,o,x.attr("class")))});if(a&&typeof a==="string"||a===B)for(var b=(a||"").split(ha),d=0,e=this.length;d<e;d++){var f=this[d];if(f.nodeType===1&&f.className)if(a){for(var h=(" "+f.className+" ").replace(sa," "),
l=0,k=b.length;l<k;l++)h=h.replace(" "+b[l]+" "," ");f.className=c.trim(h)}else f.className=""}return this},toggleClass:function(a,b){var d=typeof a,e=typeof b==="boolean";if(c.isFunction(a))return this.each(function(f){var h=c(this);h.toggleClass(a.call(this,f,h.attr("class"),b),b)});return this.each(function(){if(d==="string")for(var f,h=0,l=c(this),k=b,o=a.split(ha);f=o[h++];){k=e?k:!l.hasClass(f);l[k?"addClass":"removeClass"](f)}else if(d==="undefined"||d==="boolean"){this.className&&c.data(this,
"__className__",this.className);this.className=this.className||a===false?"":c.data(this,"__className__")||""}})},hasClass:function(a){a=" "+a+" ";for(var b=0,d=this.length;b<d;b++)if((" "+this[b].className+" ").replace(sa," ").indexOf(a)>-1)return true;return false},val:function(a){if(!arguments.length){var b=this[0];if(b){if(c.nodeName(b,"option")){var d=b.attributes.value;return!d||d.specified?b.value:b.text}if(c.nodeName(b,"select")){var e=b.selectedIndex;d=[];var f=b.options;b=b.type==="select-one";
if(e<0)return null;var h=b?e:0;for(e=b?e+1:f.length;h<e;h++){var l=f[h];if(l.selected&&(c.support.optDisabled?!l.disabled:l.getAttribute("disabled")===null)&&(!l.parentNode.disabled||!c.nodeName(l.parentNode,"optgroup"))){a=c(l).val();if(b)return a;d.push(a)}}return d}if(ta.test(b.type)&&!c.support.checkOn)return b.getAttribute("value")===null?"on":b.value;return(b.value||"").replace(Sa,"")}return B}var k=c.isFunction(a);return this.each(function(o){var x=c(this),r=a;if(this.nodeType===1){if(k)r=
a.call(this,o,x.val());if(r==null)r="";else if(typeof r==="number")r+="";else if(c.isArray(r))r=c.map(r,function(C){return C==null?"":C+""});if(c.isArray(r)&&ta.test(this.type))this.checked=c.inArray(x.val(),r)>=0;else if(c.nodeName(this,"select")){var A=c.makeArray(r);c("option",this).each(function(){this.selected=c.inArray(c(this).val(),A)>=0});if(!A.length)this.selectedIndex=-1}else this.value=r}})}});c.extend({attrFn:{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true},
attr:function(a,b,d,e){if(!a||a.nodeType===3||a.nodeType===8)return B;if(e&&b in c.attrFn)return c(a)[b](d);e=a.nodeType!==1||!c.isXMLDoc(a);var f=d!==B;b=e&&c.props[b]||b;var h=Ta.test(b);if((b in a||a[b]!==B)&&e&&!h){if(f){b==="type"&&Ua.test(a.nodeName)&&a.parentNode&&c.error("type property can't be changed");if(d===null)a.nodeType===1&&a.removeAttribute(b);else a[b]=d}if(c.nodeName(a,"form")&&a.getAttributeNode(b))return a.getAttributeNode(b).nodeValue;if(b==="tabIndex")return(b=a.getAttributeNode("tabIndex"))&&
b.specified?b.value:Va.test(a.nodeName)||Wa.test(a.nodeName)&&a.href?0:B;return a[b]}if(!c.support.style&&e&&b==="style"){if(f)a.style.cssText=""+d;return a.style.cssText}f&&a.setAttribute(b,""+d);if(!a.attributes[b]&&a.hasAttribute&&!a.hasAttribute(b))return B;a=!c.support.hrefNormalized&&e&&h?a.getAttribute(b,2):a.getAttribute(b);return a===null?B:a}});var X=/\.(.*)$/,ia=/^(?:textarea|input|select)$/i,La=/\./g,Ma=/ /g,Xa=/[^\w\s.|`]/g,Ya=function(a){return a.replace(Xa,"\\$&")},ua={focusin:0,focusout:0};
c.event={add:function(a,b,d,e){if(!(a.nodeType===3||a.nodeType===8)){if(c.isWindow(a)&&a!==E&&!a.frameElement)a=E;if(d===false)d=U;else if(!d)return;var f,h;if(d.handler){f=d;d=f.handler}if(!d.guid)d.guid=c.guid++;if(h=c.data(a)){var l=a.nodeType?"events":"__events__",k=h[l],o=h.handle;if(typeof k==="function"){o=k.handle;k=k.events}else if(!k){a.nodeType||(h[l]=h=function(){});h.events=k={}}if(!o)h.handle=o=function(){return typeof c!=="undefined"&&!c.event.triggered?c.event.handle.apply(o.elem,
arguments):B};o.elem=a;b=b.split(" ");for(var x=0,r;l=b[x++];){h=f?c.extend({},f):{handler:d,data:e};if(l.indexOf(".")>-1){r=l.split(".");l=r.shift();h.namespace=r.slice(0).sort().join(".")}else{r=[];h.namespace=""}h.type=l;if(!h.guid)h.guid=d.guid;var A=k[l],C=c.event.special[l]||{};if(!A){A=k[l]=[];if(!C.setup||C.setup.call(a,e,r,o)===false)if(a.addEventListener)a.addEventListener(l,o,false);else a.attachEvent&&a.attachEvent("on"+l,o)}if(C.add){C.add.call(a,h);if(!h.handler.guid)h.handler.guid=
d.guid}A.push(h);c.event.global[l]=true}a=null}}},global:{},remove:function(a,b,d,e){if(!(a.nodeType===3||a.nodeType===8)){if(d===false)d=U;var f,h,l=0,k,o,x,r,A,C,J=a.nodeType?"events":"__events__",w=c.data(a),I=w&&w[J];if(w&&I){if(typeof I==="function"){w=I;I=I.events}if(b&&b.type){d=b.handler;b=b.type}if(!b||typeof b==="string"&&b.charAt(0)==="."){b=b||"";for(f in I)c.event.remove(a,f+b)}else{for(b=b.split(" ");f=b[l++];){r=f;k=f.indexOf(".")<0;o=[];if(!k){o=f.split(".");f=o.shift();x=RegExp("(^|\\.)"+
c.map(o.slice(0).sort(),Ya).join("\\.(?:.*\\.)?")+"(\\.|$)")}if(A=I[f])if(d){r=c.event.special[f]||{};for(h=e||0;h<A.length;h++){C=A[h];if(d.guid===C.guid){if(k||x.test(C.namespace)){e==null&&A.splice(h--,1);r.remove&&r.remove.call(a,C)}if(e!=null)break}}if(A.length===0||e!=null&&A.length===1){if(!r.teardown||r.teardown.call(a,o)===false)c.removeEvent(a,f,w.handle);delete I[f]}}else for(h=0;h<A.length;h++){C=A[h];if(k||x.test(C.namespace)){c.event.remove(a,r,C.handler,h);A.splice(h--,1)}}}if(c.isEmptyObject(I)){if(b=
w.handle)b.elem=null;delete w.events;delete w.handle;if(typeof w==="function")c.removeData(a,J);else c.isEmptyObject(w)&&c.removeData(a)}}}}},trigger:function(a,b,d,e){var f=a.type||a;if(!e){a=typeof a==="object"?a[c.expando]?a:c.extend(c.Event(f),a):c.Event(f);if(f.indexOf("!")>=0){a.type=f=f.slice(0,-1);a.exclusive=true}if(!d){a.stopPropagation();c.event.global[f]&&c.each(c.cache,function(){this.events&&this.events[f]&&c.event.trigger(a,b,this.handle.elem)})}if(!d||d.nodeType===3||d.nodeType===
8)return B;a.result=B;a.target=d;b=c.makeArray(b);b.unshift(a)}a.currentTarget=d;(e=d.nodeType?c.data(d,"handle"):(c.data(d,"__events__")||{}).handle)&&e.apply(d,b);e=d.parentNode||d.ownerDocument;try{if(!(d&&d.nodeName&&c.noData[d.nodeName.toLowerCase()]))if(d["on"+f]&&d["on"+f].apply(d,b)===false){a.result=false;a.preventDefault()}}catch(h){}if(!a.isPropagationStopped()&&e)c.event.trigger(a,b,e,true);else if(!a.isDefaultPrevented()){var l;e=a.target;var k=f.replace(X,""),o=c.nodeName(e,"a")&&k===
"click",x=c.event.special[k]||{};if((!x._default||x._default.call(d,a)===false)&&!o&&!(e&&e.nodeName&&c.noData[e.nodeName.toLowerCase()])){try{if(e[k]){if(l=e["on"+k])e["on"+k]=null;c.event.triggered=true;e[k]()}}catch(r){}if(l)e["on"+k]=l;c.event.triggered=false}}},handle:function(a){var b,d,e,f;d=[];var h=c.makeArray(arguments);a=h[0]=c.event.fix(a||E.event);a.currentTarget=this;b=a.type.indexOf(".")<0&&!a.exclusive;if(!b){e=a.type.split(".");a.type=e.shift();d=e.slice(0).sort();e=RegExp("(^|\\.)"+
d.join("\\.(?:.*\\.)?")+"(\\.|$)")}a.namespace=a.namespace||d.join(".");f=c.data(this,this.nodeType?"events":"__events__");if(typeof f==="function")f=f.events;d=(f||{})[a.type];if(f&&d){d=d.slice(0);f=0;for(var l=d.length;f<l;f++){var k=d[f];if(b||e.test(k.namespace)){a.handler=k.handler;a.data=k.data;a.handleObj=k;k=k.handler.apply(this,h);if(k!==B){a.result=k;if(k===false){a.preventDefault();a.stopPropagation()}}if(a.isImmediatePropagationStopped())break}}}return a.result},props:"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode layerX layerY metaKey newValue offsetX offsetY pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),
fix:function(a){if(a[c.expando])return a;var b=a;a=c.Event(b);for(var d=this.props.length,e;d;){e=this.props[--d];a[e]=b[e]}if(!a.target)a.target=a.srcElement||t;if(a.target.nodeType===3)a.target=a.target.parentNode;if(!a.relatedTarget&&a.fromElement)a.relatedTarget=a.fromElement===a.target?a.toElement:a.fromElement;if(a.pageX==null&&a.clientX!=null){b=t.documentElement;d=t.body;a.pageX=a.clientX+(b&&b.scrollLeft||d&&d.scrollLeft||0)-(b&&b.clientLeft||d&&d.clientLeft||0);a.pageY=a.clientY+(b&&b.scrollTop||
d&&d.scrollTop||0)-(b&&b.clientTop||d&&d.clientTop||0)}if(a.which==null&&(a.charCode!=null||a.keyCode!=null))a.which=a.charCode!=null?a.charCode:a.keyCode;if(!a.metaKey&&a.ctrlKey)a.metaKey=a.ctrlKey;if(!a.which&&a.button!==B)a.which=a.button&1?1:a.button&2?3:a.button&4?2:0;return a},guid:1E8,proxy:c.proxy,special:{ready:{setup:c.bindReady,teardown:c.noop},live:{add:function(a){c.event.add(this,Y(a.origType,a.selector),c.extend({},a,{handler:Ka,guid:a.handler.guid}))},remove:function(a){c.event.remove(this,
Y(a.origType,a.selector),a)}},beforeunload:{setup:function(a,b,d){if(c.isWindow(this))this.onbeforeunload=d},teardown:function(a,b){if(this.onbeforeunload===b)this.onbeforeunload=null}}}};c.removeEvent=t.removeEventListener?function(a,b,d){a.removeEventListener&&a.removeEventListener(b,d,false)}:function(a,b,d){a.detachEvent&&a.detachEvent("on"+b,d)};c.Event=function(a){if(!this.preventDefault)return new c.Event(a);if(a&&a.type){this.originalEvent=a;this.type=a.type}else this.type=a;this.timeStamp=
c.now();this[c.expando]=true};c.Event.prototype={preventDefault:function(){this.isDefaultPrevented=ca;var a=this.originalEvent;if(a)if(a.preventDefault)a.preventDefault();else a.returnValue=false},stopPropagation:function(){this.isPropagationStopped=ca;var a=this.originalEvent;if(a){a.stopPropagation&&a.stopPropagation();a.cancelBubble=true}},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=ca;this.stopPropagation()},isDefaultPrevented:U,isPropagationStopped:U,isImmediatePropagationStopped:U};
var va=function(a){var b=a.relatedTarget;try{for(;b&&b!==this;)b=b.parentNode;if(b!==this){a.type=a.data;c.event.handle.apply(this,arguments)}}catch(d){}},wa=function(a){a.type=a.data;c.event.handle.apply(this,arguments)};c.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(a,b){c.event.special[a]={setup:function(d){c.event.add(this,b,d&&d.selector?wa:va,a)},teardown:function(d){c.event.remove(this,b,d&&d.selector?wa:va)}}});if(!c.support.submitBubbles)c.event.special.submit={setup:function(){if(this.nodeName.toLowerCase()!==
"form"){c.event.add(this,"click.specialSubmit",function(a){var b=a.target,d=b.type;if((d==="submit"||d==="image")&&c(b).closest("form").length){a.liveFired=B;return la("submit",this,arguments)}});c.event.add(this,"keypress.specialSubmit",function(a){var b=a.target,d=b.type;if((d==="text"||d==="password")&&c(b).closest("form").length&&a.keyCode===13){a.liveFired=B;return la("submit",this,arguments)}})}else return false},teardown:function(){c.event.remove(this,".specialSubmit")}};if(!c.support.changeBubbles){var V,
xa=function(a){var b=a.type,d=a.value;if(b==="radio"||b==="checkbox")d=a.checked;else if(b==="select-multiple")d=a.selectedIndex>-1?c.map(a.options,function(e){return e.selected}).join("-"):"";else if(a.nodeName.toLowerCase()==="select")d=a.selectedIndex;return d},Z=function(a,b){var d=a.target,e,f;if(!(!ia.test(d.nodeName)||d.readOnly)){e=c.data(d,"_change_data");f=xa(d);if(a.type!=="focusout"||d.type!=="radio")c.data(d,"_change_data",f);if(!(e===B||f===e))if(e!=null||f){a.type="change";a.liveFired=
B;return c.event.trigger(a,b,d)}}};c.event.special.change={filters:{focusout:Z,beforedeactivate:Z,click:function(a){var b=a.target,d=b.type;if(d==="radio"||d==="checkbox"||b.nodeName.toLowerCase()==="select")return Z.call(this,a)},keydown:function(a){var b=a.target,d=b.type;if(a.keyCode===13&&b.nodeName.toLowerCase()!=="textarea"||a.keyCode===32&&(d==="checkbox"||d==="radio")||d==="select-multiple")return Z.call(this,a)},beforeactivate:function(a){a=a.target;c.data(a,"_change_data",xa(a))}},setup:function(){if(this.type===
"file")return false;for(var a in V)c.event.add(this,a+".specialChange",V[a]);return ia.test(this.nodeName)},teardown:function(){c.event.remove(this,".specialChange");return ia.test(this.nodeName)}};V=c.event.special.change.filters;V.focus=V.beforeactivate}t.addEventListener&&c.each({focus:"focusin",blur:"focusout"},function(a,b){function d(e){e=c.event.fix(e);e.type=b;return c.event.trigger(e,null,e.target)}c.event.special[b]={setup:function(){ua[b]++===0&&t.addEventListener(a,d,true)},teardown:function(){--ua[b]===
0&&t.removeEventListener(a,d,true)}}});c.each(["bind","one"],function(a,b){c.fn[b]=function(d,e,f){if(typeof d==="object"){for(var h in d)this[b](h,e,d[h],f);return this}if(c.isFunction(e)||e===false){f=e;e=B}var l=b==="one"?c.proxy(f,function(o){c(this).unbind(o,l);return f.apply(this,arguments)}):f;if(d==="unload"&&b!=="one")this.one(d,e,f);else{h=0;for(var k=this.length;h<k;h++)c.event.add(this[h],d,l,e)}return this}});c.fn.extend({unbind:function(a,b){if(typeof a==="object"&&!a.preventDefault)for(var d in a)this.unbind(d,
a[d]);else{d=0;for(var e=this.length;d<e;d++)c.event.remove(this[d],a,b)}return this},delegate:function(a,b,d,e){return this.live(b,d,e,a)},undelegate:function(a,b,d){return arguments.length===0?this.unbind("live"):this.die(b,null,d,a)},trigger:function(a,b){return this.each(function(){c.event.trigger(a,b,this)})},triggerHandler:function(a,b){if(this[0]){var d=c.Event(a);d.preventDefault();d.stopPropagation();c.event.trigger(d,b,this[0]);return d.result}},toggle:function(a){for(var b=arguments,d=
1;d<b.length;)c.proxy(a,b[d++]);return this.click(c.proxy(a,function(e){var f=(c.data(this,"lastToggle"+a.guid)||0)%d;c.data(this,"lastToggle"+a.guid,f+1);e.preventDefault();return b[f].apply(this,arguments)||false}))},hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}});var ya={focus:"focusin",blur:"focusout",mouseenter:"mouseover",mouseleave:"mouseout"};c.each(["live","die"],function(a,b){c.fn[b]=function(d,e,f,h){var l,k=0,o,x,r=h||this.selector;h=h?this:c(this.context);if(typeof d===
"object"&&!d.preventDefault){for(l in d)h[b](l,e,d[l],r);return this}if(c.isFunction(e)){f=e;e=B}for(d=(d||"").split(" ");(l=d[k++])!=null;){o=X.exec(l);x="";if(o){x=o[0];l=l.replace(X,"")}if(l==="hover")d.push("mouseenter"+x,"mouseleave"+x);else{o=l;if(l==="focus"||l==="blur"){d.push(ya[l]+x);l+=x}else l=(ya[l]||l)+x;if(b==="live"){x=0;for(var A=h.length;x<A;x++)c.event.add(h[x],"live."+Y(l,r),{data:e,selector:r,handler:f,origType:l,origHandler:f,preType:o})}else h.unbind("live."+Y(l,r),f)}}return this}});
c.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error".split(" "),function(a,b){c.fn[b]=function(d,e){if(e==null){e=d;d=null}return arguments.length>0?this.bind(b,d,e):this.trigger(b)};if(c.attrFn)c.attrFn[b]=true});E.attachEvent&&!E.addEventListener&&c(E).bind("unload",function(){for(var a in c.cache)if(c.cache[a].handle)try{c.event.remove(c.cache[a].handle.elem)}catch(b){}});
(function(){function a(g,i,n,m,p,q){p=0;for(var u=m.length;p<u;p++){var y=m[p];if(y){var F=false;for(y=y[g];y;){if(y.sizcache===n){F=m[y.sizset];break}if(y.nodeType===1&&!q){y.sizcache=n;y.sizset=p}if(y.nodeName.toLowerCase()===i){F=y;break}y=y[g]}m[p]=F}}}function b(g,i,n,m,p,q){p=0;for(var u=m.length;p<u;p++){var y=m[p];if(y){var F=false;for(y=y[g];y;){if(y.sizcache===n){F=m[y.sizset];break}if(y.nodeType===1){if(!q){y.sizcache=n;y.sizset=p}if(typeof i!=="string"){if(y===i){F=true;break}}else if(k.filter(i,
[y]).length>0){F=y;break}}y=y[g]}m[p]=F}}}var d=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,e=0,f=Object.prototype.toString,h=false,l=true;[0,0].sort(function(){l=false;return 0});var k=function(g,i,n,m){n=n||[];var p=i=i||t;if(i.nodeType!==1&&i.nodeType!==9)return[];if(!g||typeof g!=="string")return n;var q,u,y,F,M,N=true,O=k.isXML(i),D=[],R=g;do{d.exec("");if(q=d.exec(R)){R=q[3];D.push(q[1]);if(q[2]){F=q[3];
break}}}while(q);if(D.length>1&&x.exec(g))if(D.length===2&&o.relative[D[0]])u=L(D[0]+D[1],i);else for(u=o.relative[D[0]]?[i]:k(D.shift(),i);D.length;){g=D.shift();if(o.relative[g])g+=D.shift();u=L(g,u)}else{if(!m&&D.length>1&&i.nodeType===9&&!O&&o.match.ID.test(D[0])&&!o.match.ID.test(D[D.length-1])){q=k.find(D.shift(),i,O);i=q.expr?k.filter(q.expr,q.set)[0]:q.set[0]}if(i){q=m?{expr:D.pop(),set:C(m)}:k.find(D.pop(),D.length===1&&(D[0]==="~"||D[0]==="+")&&i.parentNode?i.parentNode:i,O);u=q.expr?k.filter(q.expr,
q.set):q.set;if(D.length>0)y=C(u);else N=false;for(;D.length;){q=M=D.pop();if(o.relative[M])q=D.pop();else M="";if(q==null)q=i;o.relative[M](y,q,O)}}else y=[]}y||(y=u);y||k.error(M||g);if(f.call(y)==="[object Array]")if(N)if(i&&i.nodeType===1)for(g=0;y[g]!=null;g++){if(y[g]&&(y[g]===true||y[g].nodeType===1&&k.contains(i,y[g])))n.push(u[g])}else for(g=0;y[g]!=null;g++)y[g]&&y[g].nodeType===1&&n.push(u[g]);else n.push.apply(n,y);else C(y,n);if(F){k(F,p,n,m);k.uniqueSort(n)}return n};k.uniqueSort=function(g){if(w){h=
l;g.sort(w);if(h)for(var i=1;i<g.length;i++)g[i]===g[i-1]&&g.splice(i--,1)}return g};k.matches=function(g,i){return k(g,null,null,i)};k.matchesSelector=function(g,i){return k(i,null,null,[g]).length>0};k.find=function(g,i,n){var m;if(!g)return[];for(var p=0,q=o.order.length;p<q;p++){var u,y=o.order[p];if(u=o.leftMatch[y].exec(g)){var F=u[1];u.splice(1,1);if(F.substr(F.length-1)!=="\\"){u[1]=(u[1]||"").replace(/\\/g,"");m=o.find[y](u,i,n);if(m!=null){g=g.replace(o.match[y],"");break}}}}m||(m=i.getElementsByTagName("*"));
return{set:m,expr:g}};k.filter=function(g,i,n,m){for(var p,q,u=g,y=[],F=i,M=i&&i[0]&&k.isXML(i[0]);g&&i.length;){for(var N in o.filter)if((p=o.leftMatch[N].exec(g))!=null&&p[2]){var O,D,R=o.filter[N];D=p[1];q=false;p.splice(1,1);if(D.substr(D.length-1)!=="\\"){if(F===y)y=[];if(o.preFilter[N])if(p=o.preFilter[N](p,F,n,y,m,M)){if(p===true)continue}else q=O=true;if(p)for(var j=0;(D=F[j])!=null;j++)if(D){O=R(D,p,j,F);var s=m^!!O;if(n&&O!=null)if(s)q=true;else F[j]=false;else if(s){y.push(D);q=true}}if(O!==
B){n||(F=y);g=g.replace(o.match[N],"");if(!q)return[];break}}}if(g===u)if(q==null)k.error(g);else break;u=g}return F};k.error=function(g){throw"Syntax error, unrecognized expression: "+g;};var o=k.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,CLASS:/\.((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF\-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF\-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*\-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\((even|odd|[\dn+\-]*)\))?/,
POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^\-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF\-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/},leftMatch:{},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(g){return g.getAttribute("href")}},relative:{"+":function(g,i){var n=typeof i==="string",m=n&&!/\W/.test(i);n=n&&!m;if(m)i=i.toLowerCase();m=0;for(var p=g.length,q;m<p;m++)if(q=g[m]){for(;(q=q.previousSibling)&&q.nodeType!==1;);g[m]=n||q&&q.nodeName.toLowerCase()===
i?q||false:q===i}n&&k.filter(i,g,true)},">":function(g,i){var n,m=typeof i==="string",p=0,q=g.length;if(m&&!/\W/.test(i))for(i=i.toLowerCase();p<q;p++){if(n=g[p]){n=n.parentNode;g[p]=n.nodeName.toLowerCase()===i?n:false}}else{for(;p<q;p++)if(n=g[p])g[p]=m?n.parentNode:n.parentNode===i;m&&k.filter(i,g,true)}},"":function(g,i,n){var m,p=e++,q=b;if(typeof i==="string"&&!/\W/.test(i)){m=i=i.toLowerCase();q=a}q("parentNode",i,p,g,m,n)},"~":function(g,i,n){var m,p=e++,q=b;if(typeof i==="string"&&!/\W/.test(i)){m=
i=i.toLowerCase();q=a}q("previousSibling",i,p,g,m,n)}},find:{ID:function(g,i,n){if(typeof i.getElementById!=="undefined"&&!n)return(g=i.getElementById(g[1]))&&g.parentNode?[g]:[]},NAME:function(g,i){if(typeof i.getElementsByName!=="undefined"){for(var n=[],m=i.getElementsByName(g[1]),p=0,q=m.length;p<q;p++)m[p].getAttribute("name")===g[1]&&n.push(m[p]);return n.length===0?null:n}},TAG:function(g,i){return i.getElementsByTagName(g[1])}},preFilter:{CLASS:function(g,i,n,m,p,q){g=" "+g[1].replace(/\\/g,
"")+" ";if(q)return g;q=0;for(var u;(u=i[q])!=null;q++)if(u)if(p^(u.className&&(" "+u.className+" ").replace(/[\t\n]/g," ").indexOf(g)>=0))n||m.push(u);else if(n)i[q]=false;return false},ID:function(g){return g[1].replace(/\\/g,"")},TAG:function(g){return g[1].toLowerCase()},CHILD:function(g){if(g[1]==="nth"){var i=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(g[2]==="even"&&"2n"||g[2]==="odd"&&"2n+1"||!/\D/.test(g[2])&&"0n+"+g[2]||g[2]);g[2]=i[1]+(i[2]||1)-0;g[3]=i[3]-0}g[0]=e++;return g},ATTR:function(g,i,n,
m,p,q){i=g[1].replace(/\\/g,"");if(!q&&o.attrMap[i])g[1]=o.attrMap[i];if(g[2]==="~=")g[4]=" "+g[4]+" ";return g},PSEUDO:function(g,i,n,m,p){if(g[1]==="not")if((d.exec(g[3])||"").length>1||/^\w/.test(g[3]))g[3]=k(g[3],null,null,i);else{g=k.filter(g[3],i,n,true^p);n||m.push.apply(m,g);return false}else if(o.match.POS.test(g[0])||o.match.CHILD.test(g[0]))return true;return g},POS:function(g){g.unshift(true);return g}},filters:{enabled:function(g){return g.disabled===false&&g.type!=="hidden"},disabled:function(g){return g.disabled===
true},checked:function(g){return g.checked===true},selected:function(g){return g.selected===true},parent:function(g){return!!g.firstChild},empty:function(g){return!g.firstChild},has:function(g,i,n){return!!k(n[3],g).length},header:function(g){return/h\d/i.test(g.nodeName)},text:function(g){return"text"===g.type},radio:function(g){return"radio"===g.type},checkbox:function(g){return"checkbox"===g.type},file:function(g){return"file"===g.type},password:function(g){return"password"===g.type},submit:function(g){return"submit"===
g.type},image:function(g){return"image"===g.type},reset:function(g){return"reset"===g.type},button:function(g){return"button"===g.type||g.nodeName.toLowerCase()==="button"},input:function(g){return/input|select|textarea|button/i.test(g.nodeName)}},setFilters:{first:function(g,i){return i===0},last:function(g,i,n,m){return i===m.length-1},even:function(g,i){return i%2===0},odd:function(g,i){return i%2===1},lt:function(g,i,n){return i<n[3]-0},gt:function(g,i,n){return i>n[3]-0},nth:function(g,i,n){return n[3]-
0===i},eq:function(g,i,n){return n[3]-0===i}},filter:{PSEUDO:function(g,i,n,m){var p=i[1],q=o.filters[p];if(q)return q(g,n,i,m);else if(p==="contains")return(g.textContent||g.innerText||k.getText([g])||"").indexOf(i[3])>=0;else if(p==="not"){i=i[3];n=0;for(m=i.length;n<m;n++)if(i[n]===g)return false;return true}else k.error("Syntax error, unrecognized expression: "+p)},CHILD:function(g,i){var n=i[1],m=g;switch(n){case "only":case "first":for(;m=m.previousSibling;)if(m.nodeType===1)return false;if(n===
"first")return true;m=g;case "last":for(;m=m.nextSibling;)if(m.nodeType===1)return false;return true;case "nth":n=i[2];var p=i[3];if(n===1&&p===0)return true;var q=i[0],u=g.parentNode;if(u&&(u.sizcache!==q||!g.nodeIndex)){var y=0;for(m=u.firstChild;m;m=m.nextSibling)if(m.nodeType===1)m.nodeIndex=++y;u.sizcache=q}m=g.nodeIndex-p;return n===0?m===0:m%n===0&&m/n>=0}},ID:function(g,i){return g.nodeType===1&&g.getAttribute("id")===i},TAG:function(g,i){return i==="*"&&g.nodeType===1||g.nodeName.toLowerCase()===
i},CLASS:function(g,i){return(" "+(g.className||g.getAttribute("class"))+" ").indexOf(i)>-1},ATTR:function(g,i){var n=i[1];n=o.attrHandle[n]?o.attrHandle[n](g):g[n]!=null?g[n]:g.getAttribute(n);var m=n+"",p=i[2],q=i[4];return n==null?p==="!=":p==="="?m===q:p==="*="?m.indexOf(q)>=0:p==="~="?(" "+m+" ").indexOf(q)>=0:!q?m&&n!==false:p==="!="?m!==q:p==="^="?m.indexOf(q)===0:p==="$="?m.substr(m.length-q.length)===q:p==="|="?m===q||m.substr(0,q.length+1)===q+"-":false},POS:function(g,i,n,m){var p=o.setFilters[i[2]];
if(p)return p(g,n,i,m)}}},x=o.match.POS,r=function(g,i){return"\\"+(i-0+1)},A;for(A in o.match){o.match[A]=RegExp(o.match[A].source+/(?![^\[]*\])(?![^\(]*\))/.source);o.leftMatch[A]=RegExp(/(^(?:.|\r|\n)*?)/.source+o.match[A].source.replace(/\\(\d+)/g,r))}var C=function(g,i){g=Array.prototype.slice.call(g,0);if(i){i.push.apply(i,g);return i}return g};try{Array.prototype.slice.call(t.documentElement.childNodes,0)}catch(J){C=function(g,i){var n=0,m=i||[];if(f.call(g)==="[object Array]")Array.prototype.push.apply(m,
g);else if(typeof g.length==="number")for(var p=g.length;n<p;n++)m.push(g[n]);else for(;g[n];n++)m.push(g[n]);return m}}var w,I;if(t.documentElement.compareDocumentPosition)w=function(g,i){if(g===i){h=true;return 0}if(!g.compareDocumentPosition||!i.compareDocumentPosition)return g.compareDocumentPosition?-1:1;return g.compareDocumentPosition(i)&4?-1:1};else{w=function(g,i){var n,m,p=[],q=[];n=g.parentNode;m=i.parentNode;var u=n;if(g===i){h=true;return 0}else if(n===m)return I(g,i);else if(n){if(!m)return 1}else return-1;
for(;u;){p.unshift(u);u=u.parentNode}for(u=m;u;){q.unshift(u);u=u.parentNode}n=p.length;m=q.length;for(u=0;u<n&&u<m;u++)if(p[u]!==q[u])return I(p[u],q[u]);return u===n?I(g,q[u],-1):I(p[u],i,1)};I=function(g,i,n){if(g===i)return n;for(g=g.nextSibling;g;){if(g===i)return-1;g=g.nextSibling}return 1}}k.getText=function(g){for(var i="",n,m=0;g[m];m++){n=g[m];if(n.nodeType===3||n.nodeType===4)i+=n.nodeValue;else if(n.nodeType!==8)i+=k.getText(n.childNodes)}return i};(function(){var g=t.createElement("div"),
i="script"+(new Date).getTime(),n=t.documentElement;g.innerHTML="<a name='"+i+"'/>";n.insertBefore(g,n.firstChild);if(t.getElementById(i)){o.find.ID=function(m,p,q){if(typeof p.getElementById!=="undefined"&&!q)return(p=p.getElementById(m[1]))?p.id===m[1]||typeof p.getAttributeNode!=="undefined"&&p.getAttributeNode("id").nodeValue===m[1]?[p]:B:[]};o.filter.ID=function(m,p){var q=typeof m.getAttributeNode!=="undefined"&&m.getAttributeNode("id");return m.nodeType===1&&q&&q.nodeValue===p}}n.removeChild(g);
n=g=null})();(function(){var g=t.createElement("div");g.appendChild(t.createComment(""));if(g.getElementsByTagName("*").length>0)o.find.TAG=function(i,n){var m=n.getElementsByTagName(i[1]);if(i[1]==="*"){for(var p=[],q=0;m[q];q++)m[q].nodeType===1&&p.push(m[q]);m=p}return m};g.innerHTML="<a href='#'></a>";if(g.firstChild&&typeof g.firstChild.getAttribute!=="undefined"&&g.firstChild.getAttribute("href")!=="#")o.attrHandle.href=function(i){return i.getAttribute("href",2)};g=null})();t.querySelectorAll&&
function(){var g=k,i=t.createElement("div");i.innerHTML="<p class='TEST'></p>";if(!(i.querySelectorAll&&i.querySelectorAll(".TEST").length===0)){k=function(m,p,q,u){p=p||t;m=m.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!u&&!k.isXML(p))if(p.nodeType===9)try{return C(p.querySelectorAll(m),q)}catch(y){}else if(p.nodeType===1&&p.nodeName.toLowerCase()!=="object"){var F=p.getAttribute("id"),M=F||"__sizzle__";F||p.setAttribute("id",M);try{return C(p.querySelectorAll("#"+M+" "+m),q)}catch(N){}finally{F||
p.removeAttribute("id")}}return g(m,p,q,u)};for(var n in g)k[n]=g[n];i=null}}();(function(){var g=t.documentElement,i=g.matchesSelector||g.mozMatchesSelector||g.webkitMatchesSelector||g.msMatchesSelector,n=false;try{i.call(t.documentElement,"[test!='']:sizzle")}catch(m){n=true}if(i)k.matchesSelector=function(p,q){q=q.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!k.isXML(p))try{if(n||!o.match.PSEUDO.test(q)&&!/!=/.test(q))return i.call(p,q)}catch(u){}return k(q,null,null,[p]).length>0}})();(function(){var g=
t.createElement("div");g.innerHTML="<div class='test e'></div><div class='test'></div>";if(!(!g.getElementsByClassName||g.getElementsByClassName("e").length===0)){g.lastChild.className="e";if(g.getElementsByClassName("e").length!==1){o.order.splice(1,0,"CLASS");o.find.CLASS=function(i,n,m){if(typeof n.getElementsByClassName!=="undefined"&&!m)return n.getElementsByClassName(i[1])};g=null}}})();k.contains=t.documentElement.contains?function(g,i){return g!==i&&(g.contains?g.contains(i):true)}:t.documentElement.compareDocumentPosition?
function(g,i){return!!(g.compareDocumentPosition(i)&16)}:function(){return false};k.isXML=function(g){return(g=(g?g.ownerDocument||g:0).documentElement)?g.nodeName!=="HTML":false};var L=function(g,i){for(var n,m=[],p="",q=i.nodeType?[i]:i;n=o.match.PSEUDO.exec(g);){p+=n[0];g=g.replace(o.match.PSEUDO,"")}g=o.relative[g]?g+"*":g;n=0;for(var u=q.length;n<u;n++)k(g,q[n],m);return k.filter(p,m)};c.find=k;c.expr=k.selectors;c.expr[":"]=c.expr.filters;c.unique=k.uniqueSort;c.text=k.getText;c.isXMLDoc=k.isXML;
c.contains=k.contains})();var Za=/Until$/,$a=/^(?:parents|prevUntil|prevAll)/,ab=/,/,Na=/^.[^:#\[\.,]*$/,bb=Array.prototype.slice,cb=c.expr.match.POS;c.fn.extend({find:function(a){for(var b=this.pushStack("","find",a),d=0,e=0,f=this.length;e<f;e++){d=b.length;c.find(a,this[e],b);if(e>0)for(var h=d;h<b.length;h++)for(var l=0;l<d;l++)if(b[l]===b[h]){b.splice(h--,1);break}}return b},has:function(a){var b=c(a);return this.filter(function(){for(var d=0,e=b.length;d<e;d++)if(c.contains(this,b[d]))return true})},
not:function(a){return this.pushStack(ma(this,a,false),"not",a)},filter:function(a){return this.pushStack(ma(this,a,true),"filter",a)},is:function(a){return!!a&&c.filter(a,this).length>0},closest:function(a,b){var d=[],e,f,h=this[0];if(c.isArray(a)){var l,k={},o=1;if(h&&a.length){e=0;for(f=a.length;e<f;e++){l=a[e];k[l]||(k[l]=c.expr.match.POS.test(l)?c(l,b||this.context):l)}for(;h&&h.ownerDocument&&h!==b;){for(l in k){e=k[l];if(e.jquery?e.index(h)>-1:c(h).is(e))d.push({selector:l,elem:h,level:o})}h=
h.parentNode;o++}}return d}l=cb.test(a)?c(a,b||this.context):null;e=0;for(f=this.length;e<f;e++)for(h=this[e];h;)if(l?l.index(h)>-1:c.find.matchesSelector(h,a)){d.push(h);break}else{h=h.parentNode;if(!h||!h.ownerDocument||h===b)break}d=d.length>1?c.unique(d):d;return this.pushStack(d,"closest",a)},index:function(a){if(!a||typeof a==="string")return c.inArray(this[0],a?c(a):this.parent().children());return c.inArray(a.jquery?a[0]:a,this)},add:function(a,b){var d=typeof a==="string"?c(a,b||this.context):
c.makeArray(a),e=c.merge(this.get(),d);return this.pushStack(!d[0]||!d[0].parentNode||d[0].parentNode.nodeType===11||!e[0]||!e[0].parentNode||e[0].parentNode.nodeType===11?e:c.unique(e))},andSelf:function(){return this.add(this.prevObject)}});c.each({parent:function(a){return(a=a.parentNode)&&a.nodeType!==11?a:null},parents:function(a){return c.dir(a,"parentNode")},parentsUntil:function(a,b,d){return c.dir(a,"parentNode",d)},next:function(a){return c.nth(a,2,"nextSibling")},prev:function(a){return c.nth(a,
2,"previousSibling")},nextAll:function(a){return c.dir(a,"nextSibling")},prevAll:function(a){return c.dir(a,"previousSibling")},nextUntil:function(a,b,d){return c.dir(a,"nextSibling",d)},prevUntil:function(a,b,d){return c.dir(a,"previousSibling",d)},siblings:function(a){return c.sibling(a.parentNode.firstChild,a)},children:function(a){return c.sibling(a.firstChild)},contents:function(a){return c.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:c.makeArray(a.childNodes)}},function(a,
b){c.fn[a]=function(d,e){var f=c.map(this,b,d);Za.test(a)||(e=d);if(e&&typeof e==="string")f=c.filter(e,f);f=this.length>1?c.unique(f):f;if((this.length>1||ab.test(e))&&$a.test(a))f=f.reverse();return this.pushStack(f,a,bb.call(arguments).join(","))}});c.extend({filter:function(a,b,d){if(d)a=":not("+a+")";return b.length===1?c.find.matchesSelector(b[0],a)?[b[0]]:[]:c.find.matches(a,b)},dir:function(a,b,d){var e=[];for(a=a[b];a&&a.nodeType!==9&&(d===B||a.nodeType!==1||!c(a).is(d));){a.nodeType===1&&
e.push(a);a=a[b]}return e},nth:function(a,b,d){b=b||1;for(var e=0;a;a=a[d])if(a.nodeType===1&&++e===b)break;return a},sibling:function(a,b){for(var d=[];a;a=a.nextSibling)a.nodeType===1&&a!==b&&d.push(a);return d}});var za=/ jQuery\d+="(?:\d+|null)"/g,$=/^\s+/,Aa=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,Ba=/<([\w:]+)/,db=/<tbody/i,eb=/<|&#?\w+;/,Ca=/<(?:script|object|embed|option|style)/i,Da=/checked\s*(?:[^=]|=\s*.checked.)/i,fb=/\=([^="'>\s]+\/)>/g,P={option:[1,
"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],area:[1,"<map>","</map>"],_default:[0,"",""]};P.optgroup=P.option;P.tbody=P.tfoot=P.colgroup=P.caption=P.thead;P.th=P.td;if(!c.support.htmlSerialize)P._default=[1,"div<div>","</div>"];c.fn.extend({text:function(a){if(c.isFunction(a))return this.each(function(b){var d=
c(this);d.text(a.call(this,b,d.text()))});if(typeof a!=="object"&&a!==B)return this.empty().append((this[0]&&this[0].ownerDocument||t).createTextNode(a));return c.text(this)},wrapAll:function(a){if(c.isFunction(a))return this.each(function(d){c(this).wrapAll(a.call(this,d))});if(this[0]){var b=c(a,this[0].ownerDocument).eq(0).clone(true);this[0].parentNode&&b.insertBefore(this[0]);b.map(function(){for(var d=this;d.firstChild&&d.firstChild.nodeType===1;)d=d.firstChild;return d}).append(this)}return this},
wrapInner:function(a){if(c.isFunction(a))return this.each(function(b){c(this).wrapInner(a.call(this,b))});return this.each(function(){var b=c(this),d=b.contents();d.length?d.wrapAll(a):b.append(a)})},wrap:function(a){return this.each(function(){c(this).wrapAll(a)})},unwrap:function(){return this.parent().each(function(){c.nodeName(this,"body")||c(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.appendChild(a)})},
prepend:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b,this)});else if(arguments.length){var a=c(arguments[0]);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b,
this.nextSibling)});else if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,c(arguments[0]).toArray());return a}},remove:function(a,b){for(var d=0,e;(e=this[d])!=null;d++)if(!a||c.filter(a,[e]).length){if(!b&&e.nodeType===1){c.cleanData(e.getElementsByTagName("*"));c.cleanData([e])}e.parentNode&&e.parentNode.removeChild(e)}return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++)for(b.nodeType===1&&c.cleanData(b.getElementsByTagName("*"));b.firstChild;)b.removeChild(b.firstChild);
return this},clone:function(a){var b=this.map(function(){if(!c.support.noCloneEvent&&!c.isXMLDoc(this)){var d=this.outerHTML,e=this.ownerDocument;if(!d){d=e.createElement("div");d.appendChild(this.cloneNode(true));d=d.innerHTML}return c.clean([d.replace(za,"").replace(fb,'="$1">').replace($,"")],e)[0]}else return this.cloneNode(true)});if(a===true){na(this,b);na(this.find("*"),b.find("*"))}return b},html:function(a){if(a===B)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(za,""):null;
else if(typeof a==="string"&&!Ca.test(a)&&(c.support.leadingWhitespace||!$.test(a))&&!P[(Ba.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Aa,"<$1></$2>");try{for(var b=0,d=this.length;b<d;b++)if(this[b].nodeType===1){c.cleanData(this[b].getElementsByTagName("*"));this[b].innerHTML=a}}catch(e){this.empty().append(a)}}else c.isFunction(a)?this.each(function(f){var h=c(this);h.html(a.call(this,f,h.html()))}):this.empty().append(a);return this},replaceWith:function(a){if(this[0]&&this[0].parentNode){if(c.isFunction(a))return this.each(function(b){var d=
c(this),e=d.html();d.replaceWith(a.call(this,b,e))});if(typeof a!=="string")a=c(a).detach();return this.each(function(){var b=this.nextSibling,d=this.parentNode;c(this).remove();b?c(b).before(a):c(d).append(a)})}else return this.pushStack(c(c.isFunction(a)?a():a),"replaceWith",a)},detach:function(a){return this.remove(a,true)},domManip:function(a,b,d){var e,f,h,l=a[0],k=[];if(!c.support.checkClone&&arguments.length===3&&typeof l==="string"&&Da.test(l))return this.each(function(){c(this).domManip(a,
b,d,true)});if(c.isFunction(l))return this.each(function(x){var r=c(this);a[0]=l.call(this,x,b?r.html():B);r.domManip(a,b,d)});if(this[0]){e=l&&l.parentNode;e=c.support.parentNode&&e&&e.nodeType===11&&e.childNodes.length===this.length?{fragment:e}:c.buildFragment(a,this,k);h=e.fragment;if(f=h.childNodes.length===1?h=h.firstChild:h.firstChild){b=b&&c.nodeName(f,"tr");f=0;for(var o=this.length;f<o;f++)d.call(b?c.nodeName(this[f],"table")?this[f].getElementsByTagName("tbody")[0]||this[f].appendChild(this[f].ownerDocument.createElement("tbody")):
this[f]:this[f],f>0||e.cacheable||this.length>1?h.cloneNode(true):h)}k.length&&c.each(k,Oa)}return this}});c.buildFragment=function(a,b,d){var e,f,h;b=b&&b[0]?b[0].ownerDocument||b[0]:t;if(a.length===1&&typeof a[0]==="string"&&a[0].length<512&&b===t&&!Ca.test(a[0])&&(c.support.checkClone||!Da.test(a[0]))){f=true;if(h=c.fragments[a[0]])if(h!==1)e=h}if(!e){e=b.createDocumentFragment();c.clean(a,b,e,d)}if(f)c.fragments[a[0]]=h?e:1;return{fragment:e,cacheable:f}};c.fragments={};c.each({appendTo:"append",
prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){c.fn[a]=function(d){var e=[];d=c(d);var f=this.length===1&&this[0].parentNode;if(f&&f.nodeType===11&&f.childNodes.length===1&&d.length===1){d[b](this[0]);return this}else{f=0;for(var h=d.length;f<h;f++){var l=(f>0?this.clone(true):this).get();c(d[f])[b](l);e=e.concat(l)}return this.pushStack(e,a,d.selector)}}});c.extend({clean:function(a,b,d,e){b=b||t;if(typeof b.createElement==="undefined")b=b.ownerDocument||
b[0]&&b[0].ownerDocument||t;for(var f=[],h=0,l;(l=a[h])!=null;h++){if(typeof l==="number")l+="";if(l){if(typeof l==="string"&&!eb.test(l))l=b.createTextNode(l);else if(typeof l==="string"){l=l.replace(Aa,"<$1></$2>");var k=(Ba.exec(l)||["",""])[1].toLowerCase(),o=P[k]||P._default,x=o[0],r=b.createElement("div");for(r.innerHTML=o[1]+l+o[2];x--;)r=r.lastChild;if(!c.support.tbody){x=db.test(l);k=k==="table"&&!x?r.firstChild&&r.firstChild.childNodes:o[1]==="<table>"&&!x?r.childNodes:[];for(o=k.length-
1;o>=0;--o)c.nodeName(k[o],"tbody")&&!k[o].childNodes.length&&k[o].parentNode.removeChild(k[o])}!c.support.leadingWhitespace&&$.test(l)&&r.insertBefore(b.createTextNode($.exec(l)[0]),r.firstChild);l=r.childNodes}if(l.nodeType)f.push(l);else f=c.merge(f,l)}}if(d)for(h=0;f[h];h++)if(e&&c.nodeName(f[h],"script")&&(!f[h].type||f[h].type.toLowerCase()==="text/javascript"))e.push(f[h].parentNode?f[h].parentNode.removeChild(f[h]):f[h]);else{f[h].nodeType===1&&f.splice.apply(f,[h+1,0].concat(c.makeArray(f[h].getElementsByTagName("script"))));
d.appendChild(f[h])}return f},cleanData:function(a){for(var b,d,e=c.cache,f=c.event.special,h=c.support.deleteExpando,l=0,k;(k=a[l])!=null;l++)if(!(k.nodeName&&c.noData[k.nodeName.toLowerCase()]))if(d=k[c.expando]){if((b=e[d])&&b.events)for(var o in b.events)f[o]?c.event.remove(k,o):c.removeEvent(k,o,b.handle);if(h)delete k[c.expando];else k.removeAttribute&&k.removeAttribute(c.expando);delete e[d]}}});var Ea=/alpha\([^)]*\)/i,gb=/opacity=([^)]*)/,hb=/-([a-z])/ig,ib=/([A-Z])/g,Fa=/^-?\d+(?:px)?$/i,
jb=/^-?\d/,kb={position:"absolute",visibility:"hidden",display:"block"},Pa=["Left","Right"],Qa=["Top","Bottom"],W,Ga,aa,lb=function(a,b){return b.toUpperCase()};c.fn.css=function(a,b){if(arguments.length===2&&b===B)return this;return c.access(this,a,b,true,function(d,e,f){return f!==B?c.style(d,e,f):c.css(d,e)})};c.extend({cssHooks:{opacity:{get:function(a,b){if(b){var d=W(a,"opacity","opacity");return d===""?"1":d}else return a.style.opacity}}},cssNumber:{zIndex:true,fontWeight:true,opacity:true,
zoom:true,lineHeight:true},cssProps:{"float":c.support.cssFloat?"cssFloat":"styleFloat"},style:function(a,b,d,e){if(!(!a||a.nodeType===3||a.nodeType===8||!a.style)){var f,h=c.camelCase(b),l=a.style,k=c.cssHooks[h];b=c.cssProps[h]||h;if(d!==B){if(!(typeof d==="number"&&isNaN(d)||d==null)){if(typeof d==="number"&&!c.cssNumber[h])d+="px";if(!k||!("set"in k)||(d=k.set(a,d))!==B)try{l[b]=d}catch(o){}}}else{if(k&&"get"in k&&(f=k.get(a,false,e))!==B)return f;return l[b]}}},css:function(a,b,d){var e,f=c.camelCase(b),
h=c.cssHooks[f];b=c.cssProps[f]||f;if(h&&"get"in h&&(e=h.get(a,true,d))!==B)return e;else if(W)return W(a,b,f)},swap:function(a,b,d){var e={},f;for(f in b){e[f]=a.style[f];a.style[f]=b[f]}d.call(a);for(f in b)a.style[f]=e[f]},camelCase:function(a){return a.replace(hb,lb)}});c.curCSS=c.css;c.each(["height","width"],function(a,b){c.cssHooks[b]={get:function(d,e,f){var h;if(e){if(d.offsetWidth!==0)h=oa(d,b,f);else c.swap(d,kb,function(){h=oa(d,b,f)});if(h<=0){h=W(d,b,b);if(h==="0px"&&aa)h=aa(d,b,b);
if(h!=null)return h===""||h==="auto"?"0px":h}if(h<0||h==null){h=d.style[b];return h===""||h==="auto"?"0px":h}return typeof h==="string"?h:h+"px"}},set:function(d,e){if(Fa.test(e)){e=parseFloat(e);if(e>=0)return e+"px"}else return e}}});if(!c.support.opacity)c.cssHooks.opacity={get:function(a,b){return gb.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?parseFloat(RegExp.$1)/100+"":b?"1":""},set:function(a,b){var d=a.style;d.zoom=1;var e=c.isNaN(b)?"":"alpha(opacity="+b*100+")",f=
d.filter||"";d.filter=Ea.test(f)?f.replace(Ea,e):d.filter+" "+e}};if(t.defaultView&&t.defaultView.getComputedStyle)Ga=function(a,b,d){var e;d=d.replace(ib,"-$1").toLowerCase();if(!(b=a.ownerDocument.defaultView))return B;if(b=b.getComputedStyle(a,null)){e=b.getPropertyValue(d);if(e===""&&!c.contains(a.ownerDocument.documentElement,a))e=c.style(a,d)}return e};if(t.documentElement.currentStyle)aa=function(a,b){var d,e,f=a.currentStyle&&a.currentStyle[b],h=a.style;if(!Fa.test(f)&&jb.test(f)){d=h.left;
e=a.runtimeStyle.left;a.runtimeStyle.left=a.currentStyle.left;h.left=b==="fontSize"?"1em":f||0;f=h.pixelLeft+"px";h.left=d;a.runtimeStyle.left=e}return f===""?"auto":f};W=Ga||aa;if(c.expr&&c.expr.filters){c.expr.filters.hidden=function(a){var b=a.offsetHeight;return a.offsetWidth===0&&b===0||!c.support.reliableHiddenOffsets&&(a.style.display||c.css(a,"display"))==="none"};c.expr.filters.visible=function(a){return!c.expr.filters.hidden(a)}}var mb=c.now(),nb=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,
ob=/^(?:select|textarea)/i,pb=/^(?:color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,qb=/^(?:GET|HEAD)$/,Ra=/\[\]$/,T=/\=\?(&|$)/,ja=/\?/,rb=/([?&])_=[^&]*/,sb=/^(\w+:)?\/\/([^\/?#]+)/,tb=/%20/g,ub=/#.*$/,Ha=c.fn.load;c.fn.extend({load:function(a,b,d){if(typeof a!=="string"&&Ha)return Ha.apply(this,arguments);else if(!this.length)return this;var e=a.indexOf(" ");if(e>=0){var f=a.slice(e,a.length);a=a.slice(0,e)}e="GET";if(b)if(c.isFunction(b)){d=b;b=null}else if(typeof b===
"object"){b=c.param(b,c.ajaxSettings.traditional);e="POST"}var h=this;c.ajax({url:a,type:e,dataType:"html",data:b,complete:function(l,k){if(k==="success"||k==="notmodified")h.html(f?c("<div>").append(l.responseText.replace(nb,"")).find(f):l.responseText);d&&h.each(d,[l.responseText,k,l])}});return this},serialize:function(){return c.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?c.makeArray(this.elements):this}).filter(function(){return this.name&&
!this.disabled&&(this.checked||ob.test(this.nodeName)||pb.test(this.type))}).map(function(a,b){var d=c(this).val();return d==null?null:c.isArray(d)?c.map(d,function(e){return{name:b.name,value:e}}):{name:b.name,value:d}}).get()}});c.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){c.fn[b]=function(d){return this.bind(b,d)}});c.extend({get:function(a,b,d,e){if(c.isFunction(b)){e=e||d;d=b;b=null}return c.ajax({type:"GET",url:a,data:b,success:d,dataType:e})},
getScript:function(a,b){return c.get(a,null,b,"script")},getJSON:function(a,b,d){return c.get(a,b,d,"json")},post:function(a,b,d,e){if(c.isFunction(b)){e=e||d;d=b;b={}}return c.ajax({type:"POST",url:a,data:b,success:d,dataType:e})},ajaxSetup:function(a){c.extend(c.ajaxSettings,a)},ajaxSettings:{url:location.href,global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,xhr:function(){return new E.XMLHttpRequest},accepts:{xml:"application/xml, text/xml",html:"text/html",
script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},ajax:function(a){var b=c.extend(true,{},c.ajaxSettings,a),d,e,f,h=b.type.toUpperCase(),l=qb.test(h);b.url=b.url.replace(ub,"");b.context=a&&a.context!=null?a.context:b;if(b.data&&b.processData&&typeof b.data!=="string")b.data=c.param(b.data,b.traditional);if(b.dataType==="jsonp"){if(h==="GET")T.test(b.url)||(b.url+=(ja.test(b.url)?"&":"?")+(b.jsonp||"callback")+"=?");else if(!b.data||
!T.test(b.data))b.data=(b.data?b.data+"&":"")+(b.jsonp||"callback")+"=?";b.dataType="json"}if(b.dataType==="json"&&(b.data&&T.test(b.data)||T.test(b.url))){d=b.jsonpCallback||"jsonp"+mb++;if(b.data)b.data=(b.data+"").replace(T,"="+d+"$1");b.url=b.url.replace(T,"="+d+"$1");b.dataType="script";var k=E[d];E[d]=function(m){if(c.isFunction(k))k(m);else{E[d]=B;try{delete E[d]}catch(p){}}f=m;c.handleSuccess(b,w,e,f);c.handleComplete(b,w,e,f);r&&r.removeChild(A)}}if(b.dataType==="script"&&b.cache===null)b.cache=
false;if(b.cache===false&&l){var o=c.now(),x=b.url.replace(rb,"$1_="+o);b.url=x+(x===b.url?(ja.test(b.url)?"&":"?")+"_="+o:"")}if(b.data&&l)b.url+=(ja.test(b.url)?"&":"?")+b.data;b.global&&c.active++===0&&c.event.trigger("ajaxStart");o=(o=sb.exec(b.url))&&(o[1]&&o[1].toLowerCase()!==location.protocol||o[2].toLowerCase()!==location.host);if(b.dataType==="script"&&h==="GET"&&o){var r=t.getElementsByTagName("head")[0]||t.documentElement,A=t.createElement("script");if(b.scriptCharset)A.charset=b.scriptCharset;
A.src=b.url;if(!d){var C=false;A.onload=A.onreadystatechange=function(){if(!C&&(!this.readyState||this.readyState==="loaded"||this.readyState==="complete")){C=true;c.handleSuccess(b,w,e,f);c.handleComplete(b,w,e,f);A.onload=A.onreadystatechange=null;r&&A.parentNode&&r.removeChild(A)}}}r.insertBefore(A,r.firstChild);return B}var J=false,w=b.xhr();if(w){b.username?w.open(h,b.url,b.async,b.username,b.password):w.open(h,b.url,b.async);try{if(b.data!=null&&!l||a&&a.contentType)w.setRequestHeader("Content-Type",
b.contentType);if(b.ifModified){c.lastModified[b.url]&&w.setRequestHeader("If-Modified-Since",c.lastModified[b.url]);c.etag[b.url]&&w.setRequestHeader("If-None-Match",c.etag[b.url])}o||w.setRequestHeader("X-Requested-With","XMLHttpRequest");w.setRequestHeader("Accept",b.dataType&&b.accepts[b.dataType]?b.accepts[b.dataType]+", */*; q=0.01":b.accepts._default)}catch(I){}if(b.beforeSend&&b.beforeSend.call(b.context,w,b)===false){b.global&&c.active--===1&&c.event.trigger("ajaxStop");w.abort();return false}b.global&&
c.triggerGlobal(b,"ajaxSend",[w,b]);var L=w.onreadystatechange=function(m){if(!w||w.readyState===0||m==="abort"){J||c.handleComplete(b,w,e,f);J=true;if(w)w.onreadystatechange=c.noop}else if(!J&&w&&(w.readyState===4||m==="timeout")){J=true;w.onreadystatechange=c.noop;e=m==="timeout"?"timeout":!c.httpSuccess(w)?"error":b.ifModified&&c.httpNotModified(w,b.url)?"notmodified":"success";var p;if(e==="success")try{f=c.httpData(w,b.dataType,b)}catch(q){e="parsererror";p=q}if(e==="success"||e==="notmodified")d||
c.handleSuccess(b,w,e,f);else c.handleError(b,w,e,p);d||c.handleComplete(b,w,e,f);m==="timeout"&&w.abort();if(b.async)w=null}};try{var g=w.abort;w.abort=function(){w&&Function.prototype.call.call(g,w);L("abort")}}catch(i){}b.async&&b.timeout>0&&setTimeout(function(){w&&!J&&L("timeout")},b.timeout);try{w.send(l||b.data==null?null:b.data)}catch(n){c.handleError(b,w,null,n);c.handleComplete(b,w,e,f)}b.async||L();return w}},param:function(a,b){var d=[],e=function(h,l){l=c.isFunction(l)?l():l;d[d.length]=
encodeURIComponent(h)+"="+encodeURIComponent(l)};if(b===B)b=c.ajaxSettings.traditional;if(c.isArray(a)||a.jquery)c.each(a,function(){e(this.name,this.value)});else for(var f in a)da(f,a[f],b,e);return d.join("&").replace(tb,"+")}});c.extend({active:0,lastModified:{},etag:{},handleError:function(a,b,d,e){a.error&&a.error.call(a.context,b,d,e);a.global&&c.triggerGlobal(a,"ajaxError",[b,a,e])},handleSuccess:function(a,b,d,e){a.success&&a.success.call(a.context,e,d,b);a.global&&c.triggerGlobal(a,"ajaxSuccess",
[b,a])},handleComplete:function(a,b,d){a.complete&&a.complete.call(a.context,b,d);a.global&&c.triggerGlobal(a,"ajaxComplete",[b,a]);a.global&&c.active--===1&&c.event.trigger("ajaxStop")},triggerGlobal:function(a,b,d){(a.context&&a.context.url==null?c(a.context):c.event).trigger(b,d)},httpSuccess:function(a){try{return!a.status&&location.protocol==="file:"||a.status>=200&&a.status<300||a.status===304||a.status===1223}catch(b){}return false},httpNotModified:function(a,b){var d=a.getResponseHeader("Last-Modified"),
e=a.getResponseHeader("Etag");if(d)c.lastModified[b]=d;if(e)c.etag[b]=e;return a.status===304},httpData:function(a,b,d){var e=a.getResponseHeader("content-type")||"",f=b==="xml"||!b&&e.indexOf("xml")>=0;a=f?a.responseXML:a.responseText;f&&a.documentElement.nodeName==="parsererror"&&c.error("parsererror");if(d&&d.dataFilter)a=d.dataFilter(a,b);if(typeof a==="string")if(b==="json"||!b&&e.indexOf("json")>=0)a=c.parseJSON(a);else if(b==="script"||!b&&e.indexOf("javascript")>=0)c.globalEval(a);return a}});
if(E.ActiveXObject)c.ajaxSettings.xhr=function(){if(E.location.protocol!=="file:")try{return new E.XMLHttpRequest}catch(a){}try{return new E.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}};c.support.ajax=!!c.ajaxSettings.xhr();var ea={},vb=/^(?:toggle|show|hide)$/,wb=/^([+\-]=)?([\d+.\-]+)(.*)$/,ba,pa=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]];c.fn.extend({show:function(a,b,d){if(a||a===0)return this.animate(S("show",
3),a,b,d);else{d=0;for(var e=this.length;d<e;d++){a=this[d];b=a.style.display;if(!c.data(a,"olddisplay")&&b==="none")b=a.style.display="";b===""&&c.css(a,"display")==="none"&&c.data(a,"olddisplay",qa(a.nodeName))}for(d=0;d<e;d++){a=this[d];b=a.style.display;if(b===""||b==="none")a.style.display=c.data(a,"olddisplay")||""}return this}},hide:function(a,b,d){if(a||a===0)return this.animate(S("hide",3),a,b,d);else{a=0;for(b=this.length;a<b;a++){d=c.css(this[a],"display");d!=="none"&&c.data(this[a],"olddisplay",
d)}for(a=0;a<b;a++)this[a].style.display="none";return this}},_toggle:c.fn.toggle,toggle:function(a,b,d){var e=typeof a==="boolean";if(c.isFunction(a)&&c.isFunction(b))this._toggle.apply(this,arguments);else a==null||e?this.each(function(){var f=e?a:c(this).is(":hidden");c(this)[f?"show":"hide"]()}):this.animate(S("toggle",3),a,b,d);return this},fadeTo:function(a,b,d,e){return this.filter(":hidden").css("opacity",0).show().end().animate({opacity:b},a,d,e)},animate:function(a,b,d,e){var f=c.speed(b,
d,e);if(c.isEmptyObject(a))return this.each(f.complete);return this[f.queue===false?"each":"queue"](function(){var h=c.extend({},f),l,k=this.nodeType===1,o=k&&c(this).is(":hidden"),x=this;for(l in a){var r=c.camelCase(l);if(l!==r){a[r]=a[l];delete a[l];l=r}if(a[l]==="hide"&&o||a[l]==="show"&&!o)return h.complete.call(this);if(k&&(l==="height"||l==="width")){h.overflow=[this.style.overflow,this.style.overflowX,this.style.overflowY];if(c.css(this,"display")==="inline"&&c.css(this,"float")==="none")if(c.support.inlineBlockNeedsLayout)if(qa(this.nodeName)===
"inline")this.style.display="inline-block";else{this.style.display="inline";this.style.zoom=1}else this.style.display="inline-block"}if(c.isArray(a[l])){(h.specialEasing=h.specialEasing||{})[l]=a[l][1];a[l]=a[l][0]}}if(h.overflow!=null)this.style.overflow="hidden";h.curAnim=c.extend({},a);c.each(a,function(A,C){var J=new c.fx(x,h,A);if(vb.test(C))J[C==="toggle"?o?"show":"hide":C](a);else{var w=wb.exec(C),I=J.cur()||0;if(w){var L=parseFloat(w[2]),g=w[3]||"px";if(g!=="px"){c.style(x,A,(L||1)+g);I=(L||
1)/J.cur()*I;c.style(x,A,I+g)}if(w[1])L=(w[1]==="-="?-1:1)*L+I;J.custom(I,L,g)}else J.custom(I,C,"")}});return true})},stop:function(a,b){var d=c.timers;a&&this.queue([]);this.each(function(){for(var e=d.length-1;e>=0;e--)if(d[e].elem===this){b&&d[e](true);d.splice(e,1)}});b||this.dequeue();return this}});c.each({slideDown:S("show",1),slideUp:S("hide",1),slideToggle:S("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){c.fn[a]=function(d,e,f){return this.animate(b,
d,e,f)}});c.extend({speed:function(a,b,d){var e=a&&typeof a==="object"?c.extend({},a):{complete:d||!d&&b||c.isFunction(a)&&a,duration:a,easing:d&&b||b&&!c.isFunction(b)&&b};e.duration=c.fx.off?0:typeof e.duration==="number"?e.duration:e.duration in c.fx.speeds?c.fx.speeds[e.duration]:c.fx.speeds._default;e.old=e.complete;e.complete=function(){e.queue!==false&&c(this).dequeue();c.isFunction(e.old)&&e.old.call(this)};return e},easing:{linear:function(a,b,d,e){return d+e*a},swing:function(a,b,d,e){return(-Math.cos(a*
Math.PI)/2+0.5)*e+d}},timers:[],fx:function(a,b,d){this.options=b;this.elem=a;this.prop=d;if(!b.orig)b.orig={}}});c.fx.prototype={update:function(){this.options.step&&this.options.step.call(this.elem,this.now,this);(c.fx.step[this.prop]||c.fx.step._default)(this)},cur:function(){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null))return this.elem[this.prop];var a=parseFloat(c.css(this.elem,this.prop));return a&&a>-1E4?a:0},custom:function(a,b,d){function e(l){return f.step(l)}
var f=this,h=c.fx;this.startTime=c.now();this.start=a;this.end=b;this.unit=d||this.unit||"px";this.now=this.start;this.pos=this.state=0;e.elem=this.elem;if(e()&&c.timers.push(e)&&!ba)ba=setInterval(h.tick,h.interval)},show:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.show=true;this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur());c(this.elem).show()},hide:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.hide=true;
this.custom(this.cur(),0)},step:function(a){var b=c.now(),d=true;if(a||b>=this.options.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;for(var e in this.options.curAnim)if(this.options.curAnim[e]!==true)d=false;if(d){if(this.options.overflow!=null&&!c.support.shrinkWrapBlocks){var f=this.elem,h=this.options;c.each(["","X","Y"],function(k,o){f.style["overflow"+o]=h.overflow[k]})}this.options.hide&&c(this.elem).hide();if(this.options.hide||
this.options.show)for(var l in this.options.curAnim)c.style(this.elem,l,this.options.orig[l]);this.options.complete.call(this.elem)}return false}else{a=b-this.startTime;this.state=a/this.options.duration;b=this.options.easing||(c.easing.swing?"swing":"linear");this.pos=c.easing[this.options.specialEasing&&this.options.specialEasing[this.prop]||b](this.state,a,0,1,this.options.duration);this.now=this.start+(this.end-this.start)*this.pos;this.update()}return true}};c.extend(c.fx,{tick:function(){for(var a=
c.timers,b=0;b<a.length;b++)a[b]()||a.splice(b--,1);a.length||c.fx.stop()},interval:13,stop:function(){clearInterval(ba);ba=null},speeds:{slow:600,fast:200,_default:400},step:{opacity:function(a){c.style(a.elem,"opacity",a.now)},_default:function(a){if(a.elem.style&&a.elem.style[a.prop]!=null)a.elem.style[a.prop]=(a.prop==="width"||a.prop==="height"?Math.max(0,a.now):a.now)+a.unit;else a.elem[a.prop]=a.now}}});if(c.expr&&c.expr.filters)c.expr.filters.animated=function(a){return c.grep(c.timers,function(b){return a===
b.elem}).length};var xb=/^t(?:able|d|h)$/i,Ia=/^(?:body|html)$/i;c.fn.offset="getBoundingClientRect"in t.documentElement?function(a){var b=this[0],d;if(a)return this.each(function(l){c.offset.setOffset(this,a,l)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return c.offset.bodyOffset(b);try{d=b.getBoundingClientRect()}catch(e){}var f=b.ownerDocument,h=f.documentElement;if(!d||!c.contains(h,b))return d||{top:0,left:0};b=f.body;f=fa(f);return{top:d.top+(f.pageYOffset||c.support.boxModel&&
h.scrollTop||b.scrollTop)-(h.clientTop||b.clientTop||0),left:d.left+(f.pageXOffset||c.support.boxModel&&h.scrollLeft||b.scrollLeft)-(h.clientLeft||b.clientLeft||0)}}:function(a){var b=this[0];if(a)return this.each(function(x){c.offset.setOffset(this,a,x)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return c.offset.bodyOffset(b);c.offset.initialize();var d,e=b.offsetParent,f=b.ownerDocument,h=f.documentElement,l=f.body;d=(f=f.defaultView)?f.getComputedStyle(b,null):b.currentStyle;
for(var k=b.offsetTop,o=b.offsetLeft;(b=b.parentNode)&&b!==l&&b!==h;){if(c.offset.supportsFixedPosition&&d.position==="fixed")break;d=f?f.getComputedStyle(b,null):b.currentStyle;k-=b.scrollTop;o-=b.scrollLeft;if(b===e){k+=b.offsetTop;o+=b.offsetLeft;if(c.offset.doesNotAddBorder&&!(c.offset.doesAddBorderForTableAndCells&&xb.test(b.nodeName))){k+=parseFloat(d.borderTopWidth)||0;o+=parseFloat(d.borderLeftWidth)||0}e=b.offsetParent}if(c.offset.subtractsBorderForOverflowNotVisible&&d.overflow!=="visible"){k+=
parseFloat(d.borderTopWidth)||0;o+=parseFloat(d.borderLeftWidth)||0}d=d}if(d.position==="relative"||d.position==="static"){k+=l.offsetTop;o+=l.offsetLeft}if(c.offset.supportsFixedPosition&&d.position==="fixed"){k+=Math.max(h.scrollTop,l.scrollTop);o+=Math.max(h.scrollLeft,l.scrollLeft)}return{top:k,left:o}};c.offset={initialize:function(){var a=t.body,b=t.createElement("div"),d,e,f,h=parseFloat(c.css(a,"marginTop"))||0;c.extend(b.style,{position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",
height:"1px",visibility:"hidden"});b.innerHTML="<div style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;'><div></div></div><table style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;' cellpadding='0' cellspacing='0'><tr><td></td></tr></table>";a.insertBefore(b,a.firstChild);d=b.firstChild;e=d.firstChild;f=d.nextSibling.firstChild.firstChild;this.doesNotAddBorder=e.offsetTop!==5;this.doesAddBorderForTableAndCells=
f.offsetTop===5;e.style.position="fixed";e.style.top="20px";this.supportsFixedPosition=e.offsetTop===20||e.offsetTop===15;e.style.position=e.style.top="";d.style.overflow="hidden";d.style.position="relative";this.subtractsBorderForOverflowNotVisible=e.offsetTop===-5;this.doesNotIncludeMarginInBodyOffset=a.offsetTop!==h;a.removeChild(b);c.offset.initialize=c.noop},bodyOffset:function(a){var b=a.offsetTop,d=a.offsetLeft;c.offset.initialize();if(c.offset.doesNotIncludeMarginInBodyOffset){b+=parseFloat(c.css(a,
"marginTop"))||0;d+=parseFloat(c.css(a,"marginLeft"))||0}return{top:b,left:d}},setOffset:function(a,b,d){var e=c.css(a,"position");if(e==="static")a.style.position="relative";var f=c(a),h=f.offset(),l=c.css(a,"top"),k=c.css(a,"left"),o=e==="absolute"&&c.inArray("auto",[l,k])>-1;e={};var x={};if(o)x=f.position();l=o?x.top:parseInt(l,10)||0;k=o?x.left:parseInt(k,10)||0;if(c.isFunction(b))b=b.call(a,d,h);if(b.top!=null)e.top=b.top-h.top+l;if(b.left!=null)e.left=b.left-h.left+k;"using"in b?b.using.call(a,
e):f.css(e)}};c.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),d=this.offset(),e=Ia.test(b[0].nodeName)?{top:0,left:0}:b.offset();d.top-=parseFloat(c.css(a,"marginTop"))||0;d.left-=parseFloat(c.css(a,"marginLeft"))||0;e.top+=parseFloat(c.css(b[0],"borderTopWidth"))||0;e.left+=parseFloat(c.css(b[0],"borderLeftWidth"))||0;return{top:d.top-e.top,left:d.left-e.left}},offsetParent:function(){return this.map(function(){for(var a=this.offsetParent||t.body;a&&!Ia.test(a.nodeName)&&
c.css(a,"position")==="static";)a=a.offsetParent;return a})}});c.each(["Left","Top"],function(a,b){var d="scroll"+b;c.fn[d]=function(e){var f=this[0],h;if(!f)return null;if(e!==B)return this.each(function(){if(h=fa(this))h.scrollTo(!a?e:c(h).scrollLeft(),a?e:c(h).scrollTop());else this[d]=e});else return(h=fa(f))?"pageXOffset"in h?h[a?"pageYOffset":"pageXOffset"]:c.support.boxModel&&h.document.documentElement[d]||h.document.body[d]:f[d]}});c.each(["Height","Width"],function(a,b){var d=b.toLowerCase();
c.fn["inner"+b]=function(){return this[0]?parseFloat(c.css(this[0],d,"padding")):null};c.fn["outer"+b]=function(e){return this[0]?parseFloat(c.css(this[0],d,e?"margin":"border")):null};c.fn[d]=function(e){var f=this[0];if(!f)return e==null?null:this;if(c.isFunction(e))return this.each(function(l){var k=c(this);k[d](e.call(this,l,k[d]()))});if(c.isWindow(f))return f.document.compatMode==="CSS1Compat"&&f.document.documentElement["client"+b]||f.document.body["client"+b];else if(f.nodeType===9)return Math.max(f.documentElement["client"+
b],f.body["scroll"+b],f.documentElement["scroll"+b],f.body["offset"+b],f.documentElement["offset"+b]);else if(e===B){f=c.css(f,d);var h=parseFloat(f);return c.isNaN(h)?f:h}else return this.css(d,typeof e==="string"?e:e+"px")}})})(window);/**
 * jGrowl 1.2.5
 *
 * Dual licensed under the MIT (http://www.opensource.org/licenses/mit-license.php)
 * and GPL (http://www.opensource.org/licenses/gpl-license.php) licenses.
 *
 * Written by Stan Lemon <stosh1985@gmail.com>
 * Last updated: 2009.12.15
 *
 * jGrowl is a jQuery plugin implementing unobtrusive userland notifications.  These
 * notifications function similarly to the Growl Framework available for
 * Mac OS X (http://growl.info).
 *
 * To Do:
 * - Move library settings to containers and allow them to be changed per container
 *
 * Changes in 1.2.5
 * - Changed wrapper jGrowl's options usage to "o" instead of $.jGrowl.defaults
 * - Added themeState option to control 'highlight' or 'error' for jQuery UI
 * - Ammended some CSS to provide default positioning for nested usage.
 * - Changed some CSS to be prefixed with jGrowl- to prevent namespacing issues
 * - Added two new options - openDuration and closeDuration to allow
 *   better control of notification open and close speeds, respectively
 *   Patch contributed by Jesse Vincet.
 * - Added afterOpen callback.  Patch contributed by Russel Branca.
 *
 * Changes in 1.2.4
 * - Fixed IE bug with the close-all button
 * - Fixed IE bug with the filter CSS attribute (special thanks to gotwic)
 * - Update IE opacity CSS
 * - Changed font sizes to use "em", and only set the base style
 *
 * Changes in 1.2.3
 * - The callbacks no longer use the container as context, instead they use the actual notification
 * - The callbacks now receive the container as a parameter after the options parameter
 * - beforeOpen and beforeClose now check the return value, if it's false - the notification does
 *   not continue.  The open callback will also halt execution if it returns false.
 * - Fixed bug where containers would get confused
 * - Expanded the pause functionality to pause an entire container.
 *
 * Changes in 1.2.2
 * - Notification can now be theme rolled for jQuery UI, special thanks to Jeff Chan!
 *
 * Changes in 1.2.1
 * - Fixed instance where the interval would fire the close method multiple times.
 * - Added CSS to hide from print media
 * - Fixed issue with closer button when div { position: relative } is set
 * - Fixed leaking issue with multiple containers.  Special thanks to Matthew Hanlon!
 *
 * Changes in 1.2.0
 * - Added message pooling to limit the number of messages appearing at a given time.
 * - Closing a notification is now bound to the notification object and triggered by the close button.
 *
 * Changes in 1.1.2
 * - Added iPhone styled example
 * - Fixed possible IE7 bug when determining if the ie6 class shoudl be applied.
 * - Added template for the close button, so that it's content could be customized.
 *
 * Changes in 1.1.1
 * - Fixed CSS styling bug for ie6 caused by a mispelling
 * - Changes height restriction on default notifications to min-height
 * - Added skinned examples using a variety of images
 * - Added the ability to customize the content of the [close all] box
 * - Added jTweet, an example of using jGrowl + Twitter
 *
 * Changes in 1.1.0
 * - Multiple container and instances.
 * - Standard $.jGrowl() now wraps $.fn.jGrowl() by first establishing a generic jGrowl container.
 * - Instance methods of a jGrowl container can be called by $.fn.jGrowl(methodName)
 * - Added glue preferenced, which allows notifications to be inserted before or after nodes in the container
 * - Added new log callback which is called before anything is done for the notification
 * - Corner's attribute are now applied on an individual notification basis.
 *
 * Changes in 1.0.4
 * - Various CSS fixes so that jGrowl renders correctly in IE6.
 *
 * Changes in 1.0.3
 * - Fixed bug with options persisting across notifications
 * - Fixed theme application bug
 * - Simplified some selectors and manipulations.
 * - Added beforeOpen and beforeClose callbacks
 * - Reorganized some lines of code to be more readable
 * - Removed unnecessary this.defaults context
 * - If corners plugin is present, it's now customizable.
 * - Customizable open animation.
 * - Customizable close animation.
 * - Customizable animation easing.
 * - Added customizable positioning (top-left, top-right, bottom-left, bottom-right, center)
 *
 * Changes in 1.0.2
 * - All CSS styling is now external.
 * - Added a theme parameter which specifies a secondary class for styling, such
 *   that notifications can be customized in appearance on a per message basis.
 * - Notification life span is now customizable on a per message basis.
 * - Added the ability to disable the global closer, enabled by default.
 * - Added callbacks for when a notification is opened or closed.
 * - Added callback for the global closer.
 * - Customizable animation speed.
 * - jGrowl now set itself up and tears itself down.
 *
 * Changes in 1.0.1:
 * - Removed dependency on metadata plugin in favor of .data()
 * - Namespaced all events
 */
(function($) {

	/** jGrowl Wrapper - Establish a base jGrowl Container for compatibility with older releases. **/
	$.jGrowl = function( m , o ) {
		// To maintain compatibility with older version that only supported one instance we'll create the base container.
		if ( $('#jGrowl').size() == 0 )
			$('<div id="jGrowl"></div>').addClass( (o && o.position) ? o.position : $.jGrowl.defaults.position ).appendTo('body');

		// Create a notification on the container.
		$('#jGrowl').jGrowl(m,o);
	};


	/** Raise jGrowl Notification on a jGrowl Container **/
	$.fn.jGrowl = function( m , o ) {
		if ( $.isFunction(this.each) ) {
			var args = arguments;

			return this.each(function() {
				var self = this;

				/** Create a jGrowl Instance on the Container if it does not exist **/
				if ( $(this).data('jGrowl.instance') == undefined ) {
					$(this).data('jGrowl.instance', $.extend( new $.fn.jGrowl(), { notifications: [], element: null, interval: null } ));
					$(this).data('jGrowl.instance').startup( this );
				}

				/** Optionally call jGrowl instance methods, or just raise a normal notification **/
				if ( $.isFunction($(this).data('jGrowl.instance')[m]) ) {
					$(this).data('jGrowl.instance')[m].apply( $(this).data('jGrowl.instance') , $.makeArray(args).slice(1) );
				} else {
					$(this).data('jGrowl.instance').create( m , o );
				}
			});
		};
	};

	$.extend( $.fn.jGrowl.prototype , {

		/** Default JGrowl Settings **/
		defaults: {
			pool: 			0,
			header: 		'',
			group: 			'',
			sticky: 		false,
			position: 		'top-right',
			glue: 			'after',
			theme: 			'default',
			themeState: 	'highlight',
			corners: 		'10px',
			check: 			250,
			life: 			3000,
			closeDuration:  'normal',
			openDuration:   'normal',
			easing: 		'swing',
			closer: 		true,
			closeTemplate: '&times;',
			closerTemplate: '<div>[ close all ]</div>',
			log: 			function(e,m,o) {},
			beforeOpen: 	function(e,m,o) {},
			afterOpen: 		function(e,m,o) {},
			open: 			function(e,m,o) {},
			beforeClose: 	function(e,m,o) {},
			close: 			function(e,m,o) {},
			animateOpen: 	{
				opacity: 	'show'
			},
			animateClose: 	{
				opacity: 	'hide'
			}
		},

		notifications: [],

		/** jGrowl Container Node **/
		element: 	null,

		/** Interval Function **/
		interval:   null,

		/** Create a Notification **/
		create: 	function( message , o ) {
			var o = $.extend({}, this.defaults, o);

			/* To keep backward compatibility with 1.24 and earlier, honor 'speed' if the user has set it */
			if (typeof o.speed !== 'undefined') {
				o.openDuration = o.speed;
				o.closeDuration = o.speed;
			}

			this.notifications.push({ message: message , options: o });

			o.log.apply( this.element , [this.element,message,o] );
		},

		render: 		function( notification ) {
			var self = this;
			var message = notification.message;
			var o = notification.options;

			var notification = $(
				'<div class="jGrowl-notification ' + o.themeState + ' ui-corner-all' +
				((o.group != undefined && o.group != '') ? ' ' + o.group : '') + '">' +
				'<div class="jGrowl-close">' + o.closeTemplate + '</div>' +
				'<div class="jGrowl-header">' + o.header + '</div>' +
				'<div class="jGrowl-message">' + message + '</div></div>'
			).data("jGrowl", o).addClass(o.theme).children('div.jGrowl-close').bind("click.jGrowl", function() {
				$(this).parent().trigger('jGrowl.close');
			}).parent();


			/** Notification Actions **/
			$(notification).bind("mouseover.jGrowl", function() {
				$('div.jGrowl-notification', self.element).data("jGrowl.pause", true);
			}).bind("mouseout.jGrowl", function() {
				$('div.jGrowl-notification', self.element).data("jGrowl.pause", false);
			}).bind('jGrowl.beforeOpen', function() {
				if ( o.beforeOpen.apply( notification , [notification,message,o,self.element] ) != false ) {
					$(this).trigger('jGrowl.open');
				}
			}).bind('jGrowl.open', function() {
				if ( o.open.apply( notification , [notification,message,o,self.element] ) != false ) {
					if ( o.glue == 'after' ) {
						$('div.jGrowl-notification:last', self.element).after(notification);
					} else {
						$('div.jGrowl-notification:first', self.element).before(notification);
					}

					$(this).animate(o.animateOpen, o.openDuration, o.easing, function() {
						// Fixes some anti-aliasing issues with IE filters.
						if ($.browser.msie && (parseInt($(this).css('opacity'), 10) === 1 || parseInt($(this).css('opacity'), 10) === 0))
							this.style.removeAttribute('filter');

						$(this).data("jGrowl").created = new Date();

						$(this).trigger('jGrowl.afterOpen');
					});
				}
			}).bind('jGrowl.afterOpen', function() {
				o.afterOpen.apply( notification , [notification,message,o,self.element] );
			}).bind('jGrowl.beforeClose', function() {
				if ( o.beforeClose.apply( notification , [notification,message,o,self.element] ) != false )
					$(this).trigger('jGrowl.close');
			}).bind('jGrowl.close', function() {
				// Pause the notification, lest during the course of animation another close event gets called.
				$(this).data('jGrowl.pause', true);
				$(this).animate(o.animateClose, o.closeDuration, o.easing, function() {
					$(this).remove();
					var close = o.close.apply( notification , [notification,message,o,self.element] );

					if ( $.isFunction(close) )
						close.apply( notification , [notification,message,o,self.element] );
				});
			}).trigger('jGrowl.beforeOpen');

			/** Optional Corners Plugin **/
			 if(navigator.appName != 'Microsoft Internet Explorer') {
				if ( o.corners != '' && $.fn.corner != undefined ) $(notification).corner( o.corners );
			 }
			/** Add a Global Closer if more than one notification exists **/
			if ( $('div.jGrowl-notification:parent', self.element).size() > 1 &&
				 $('div.jGrowl-closer', self.element).size() == 0 && this.defaults.closer != false ) {
				$(this.defaults.closerTemplate).addClass('jGrowl-closer ui-state-highlight ui-corner-all').addClass(this.defaults.theme)
					.appendTo(self.element).animate(this.defaults.animateOpen, this.defaults.speed, this.defaults.easing)
					.bind("click.jGrowl", function() {
						$(this).siblings().trigger("jGrowl.beforeClose");

						if ( $.isFunction( self.defaults.closer ) ) {
							self.defaults.closer.apply( $(this).parent()[0] , [$(this).parent()[0]] );
						}
					});
			};
		},

		/** Update the jGrowl Container, removing old jGrowl notifications **/
		update:	 function() {
			$(this.element).find('div.jGrowl-notification:parent').each( function() {
				if ( $(this).data("jGrowl") != undefined && $(this).data("jGrowl").created != undefined &&
					 ($(this).data("jGrowl").created.getTime() + parseInt($(this).data("jGrowl").life))  < (new Date()).getTime() &&
					 $(this).data("jGrowl").sticky != true &&
					 ($(this).data("jGrowl.pause") == undefined || $(this).data("jGrowl.pause") != true) ) {

					// Pause the notification, lest during the course of animation another close event gets called.
					$(this).trigger('jGrowl.beforeClose');
				}
			});

			if ( this.notifications.length > 0 &&
				 (this.defaults.pool == 0 || $(this.element).find('div.jGrowl-notification:parent').size() < this.defaults.pool) )
				this.render( this.notifications.shift() );

			if ( $(this.element).find('div.jGrowl-notification:parent').size() < 2 ) {
				$(this.element).find('div.jGrowl-closer').animate(this.defaults.animateClose, this.defaults.speed, this.defaults.easing, function() {
					$(this).remove();
				});
			}
		},

		/** Setup the jGrowl Notification Container **/
		startup:	function(e) {
			this.element = $(e).addClass('jGrowl').append('<div class="jGrowl-notification"></div>');
			this.interval = setInterval( function() {
				$(e).data('jGrowl.instance').update();
			}, parseInt(this.defaults.check));

			if ($.browser.msie && parseInt($.browser.version) < 7 && !window["XMLHttpRequest"]) {
				$(this.element).addClass('ie6');
			}
		},

		/** Shutdown jGrowl, removing it and clearing the interval **/
		shutdown:   function() {
			$(this.element).removeClass('jGrowl').find('div.jGrowl-notification').remove();
			clearInterval( this.interval );
		},

		close: 	function() {
			$(this.element).find('div.jGrowl-notification').each(function(){
				$(this).trigger('jGrowl.beforeClose');
			});
		}
	});

	/** Reference the Defaults Object for compatibility with older versions of jGrowl **/
	$.jGrowl.defaults = $.fn.jGrowl.prototype.defaults;

})(jQuery);/**
 * TableDnD plug-in for JQuery, allows you to drag and drop table rows
 * You can set up various options to control how the system will work
 * Copyright (c) Denis Howlett <denish@isocra.com>
 * Licensed like jQuery, see http://docs.jquery.com/License.
 *
 * Configuration options:
 * 
 * onDragStyle
 *     This is the style that is assigned to the row during drag. There are limitations to the styles that can be
 *     associated with a row (such as you can't assign a border--well you can, but it won't be
 *     displayed). (So instead consider using onDragClass.) The CSS style to apply is specified as
 *     a map (as used in the jQuery css(...) function).
 * onDropStyle
 *     This is the style that is assigned to the row when it is dropped. As for onDragStyle, there are limitations
 *     to what you can do. Also this replaces the original style, so again consider using onDragClass which
 *     is simply added and then removed on drop.
 * onDragClass
 *     This class is added for the duration of the drag and then removed when the row is dropped. It is more
 *     flexible than using onDragStyle since it can be inherited by the row cells and other content. The default
 *     is class is tDnD_whileDrag. So to use the default, simply customise this CSS class in your
 *     stylesheet.
 * onDrop
 *     Pass a function that will be called when the row is dropped. The function takes 2 parameters: the table
 *     and the row that was dropped. You can work out the new order of the rows by using
 *     table.rows.
 * onDragStart
 *     Pass a function that will be called when the user starts dragging. The function takes 2 parameters: the
 *     table and the row which the user has started to drag.
 * onAllowDrop
 *     Pass a function that will be called as a row is over another row. If the function returns true, allow 
 *     dropping on that row, otherwise not. The function takes 2 parameters: the dragged row and the row under
 *     the cursor. It returns a boolean: true allows the drop, false doesn't allow it.
 * scrollAmount
 *     This is the number of pixels to scroll if the user moves the mouse cursor to the top or bottom of the
 *     window. The page should automatically scroll up or down as appropriate (tested in IE6, IE7, Safari, FF2,
 *     FF3 beta
 * dragHandle
 *     This is the name of a class that you assign to one or more cells in each row that is draggable. If you
 *     specify this class, then you are responsible for setting cursor: move in the CSS and only these cells
 *     will have the drag behaviour. If you do not specify a dragHandle, then you get the old behaviour where
 *     the whole row is draggable.
 * 
 * Other ways to control behaviour:
 *
 * Add class="nodrop" to any rows for which you don't want to allow dropping, and class="nodrag" to any rows
 * that you don't want to be draggable.
 *
 * Inside the onDrop method you can also call $.tableDnD.serialize() this returns a string of the form
 * <tableID>[]=<rowID1>&<tableID>[]=<rowID2> so that you can send this back to the server. The table must have
 * an ID as must all the rows.
 *
 * Other methods:
 *
 * $("...").tableDnDUpdate() 
 * Will update all the matching tables, that is it will reapply the mousedown method to the rows (or handle cells).
 * This is useful if you have updated the table rows using Ajax and you want to make the table draggable again.
 * The table maintains the original configuration (so you don't have to specify it again).
 *
 * $("...").tableDnDSerialize()
 * Will serialize and return the serialized string as above, but for each of the matching tables--so it can be
 * called from anywhere and isn't dependent on the currentTable being set up correctly before calling
 *
 * Known problems:
 * - Auto-scoll has some problems with IE7  (it scrolls even when it shouldn't), work-around: set scrollAmount to 0
 * 
 * Version 0.2: 2008-02-20 First public version
 * Version 0.3: 2008-02-07 Added onDragStart option
 *                         Made the scroll amount configurable (default is 5 as before)
 * Version 0.4: 2008-03-15 Changed the noDrag/noDrop attributes to nodrag/nodrop classes
 *                         Added onAllowDrop to control dropping
 *                         Fixed a bug which meant that you couldn't set the scroll amount in both directions
 *                         Added serialize method
 * Version 0.5: 2008-05-16 Changed so that if you specify a dragHandle class it doesn't make the whole row
 *                         draggable
 *                         Improved the serialize method to use a default (and settable) regular expression.
 *                         Added tableDnDupate() and tableDnDSerialize() to be called when you are outside the table
 */
jQuery.tableDnD = {
    /** Keep hold of the current table being dragged */
    currentTable : null,
    /** Keep hold of the current drag object if any */
    dragObject: null,
    /** The current mouse offset */
    mouseOffset: null,
    /** Remember the old value of Y so that we don't do too much processing */
    oldY: 0,

    /** Actually build the structure */
    build: function(options) {
        // Set up the defaults if any

        this.each(function() {
            // This is bound to each matching table, set up the defaults and override with user options
            this.tableDnDConfig = jQuery.extend({
                onDragStyle: null,
                onDropStyle: null,
				// Add in the default class for whileDragging
				onDragClass: "tDnD_whileDrag",
                onDrop: null,
                onDragStart: null,
                scrollAmount: 5,
				serializeRegexp: /[^\-]*$/, // The regular expression to use to trim row IDs
				serializeParamName: null, // If you want to specify another parameter name instead of the table ID
                dragHandle: null // If you give the name of a class here, then only Cells with this class will be draggable
            }, options || {});
            // Now make the rows draggable
            jQuery.tableDnD.makeDraggable(this);
        });

        // Now we need to capture the mouse up and mouse move event
        // We can use bind so that we don't interfere with other event handlers
        jQuery(document)
            .bind('mousemove', jQuery.tableDnD.mousemove)
            .bind('mouseup', jQuery.tableDnD.mouseup);

        // Don't break the chain
        return this;
    },

    /** This function makes all the rows on the table draggable apart from those marked as "NoDrag" */
    makeDraggable: function(table) {
        var config = table.tableDnDConfig;
		if (table.tableDnDConfig.dragHandle) {
			// We only need to add the event to the specified cells
			var cells = jQuery("td."+table.tableDnDConfig.dragHandle, table);
			cells.each(function() {
				// The cell is bound to "this"
                jQuery(this).mousedown(function(ev) {
                    jQuery.tableDnD.dragObject = this.parentNode;
                    jQuery.tableDnD.currentTable = table;
                    jQuery.tableDnD.mouseOffset = jQuery.tableDnD.getMouseOffset(this, ev);
                    if (config.onDragStart) {
                        // Call the onDrop method if there is one
                        config.onDragStart(table, this);
                    }
                    return false;
                });
			})
		} else {
			// For backwards compatibility, we add the event to the whole row
	        var rows = jQuery("tr", table); // get all the rows as a wrapped set
	        rows.each(function() {
				// Iterate through each row, the row is bound to "this"
				var row = jQuery(this);
				if (! row.hasClass("nodrag")) {
	                row.mousedown(function(ev) {
	                    if (ev.target.tagName == "TD") {
	                        jQuery.tableDnD.dragObject = this;
	                        jQuery.tableDnD.currentTable = table;
	                        jQuery.tableDnD.mouseOffset = jQuery.tableDnD.getMouseOffset(this, ev);
	                        if (config.onDragStart) {
	                            // Call the onDrop method if there is one
	                            config.onDragStart(table, this);
	                        }
	                        return false;
	                    }
	                }).css("cursor", "move"); // Store the tableDnD object
				}
			});
		}
	},

	updateTables: function() {
		this.each(function() {
			// this is now bound to each matching table
			if (this.tableDnDConfig) {
				jQuery.tableDnD.makeDraggable(this);
			}
		})
	},

    /** Get the mouse coordinates from the event (allowing for browser differences) */
    mouseCoords: function(ev){
        if(ev.pageX || ev.pageY){
            return {x:ev.pageX, y:ev.pageY};
        }
        return {
            x:ev.clientX + document.body.scrollLeft - document.body.clientLeft,
            y:ev.clientY + document.body.scrollTop  - document.body.clientTop
        };
    },

    /** Given a target element and a mouse event, get the mouse offset from that element.
        To do this we need the element's position and the mouse position */
    getMouseOffset: function(target, ev) {
        ev = ev || window.event;

        var docPos    = this.getPosition(target);
        var mousePos  = this.mouseCoords(ev);
        return {x:mousePos.x - docPos.x, y:mousePos.y - docPos.y};
    },

    /** Get the position of an element by going up the DOM tree and adding up all the offsets */
    getPosition: function(e){
        var left = 0;
        var top  = 0;
        /** Safari fix -- thanks to Luis Chato for this! */
        if (e.offsetHeight == 0) {
            /** Safari 2 doesn't correctly grab the offsetTop of a table row
            this is detailed here:
            http://jacob.peargrove.com/blog/2006/technical/table-row-offsettop-bug-in-safari/
            the solution is likewise noted there, grab the offset of a table cell in the row - the firstChild.
            note that firefox will return a text node as a first child, so designing a more thorough
            solution may need to take that into account, for now this seems to work in firefox, safari, ie */
            e = e.firstChild; // a table cell
        }

        while (e.offsetParent){
            left += e.offsetLeft;
            top  += e.offsetTop;
            e     = e.offsetParent;
        }

        left += e.offsetLeft;
        top  += e.offsetTop;

        return {x:left, y:top};
    },

    mousemove: function(ev) {
        if (jQuery.tableDnD.dragObject == null) {
            return;
        }

        var dragObj = jQuery(jQuery.tableDnD.dragObject);
        var config = jQuery.tableDnD.currentTable.tableDnDConfig;
        var mousePos = jQuery.tableDnD.mouseCoords(ev);
        var y = mousePos.y - jQuery.tableDnD.mouseOffset.y;
        //auto scroll the window
	    var yOffset = window.pageYOffset;
	 	if (document.all) {
	        // Windows version
	        //yOffset=document.body.scrollTop;
	        if (typeof document.compatMode != 'undefined' &&
	             document.compatMode != 'BackCompat') {
	           yOffset = document.documentElement.scrollTop;
	        }
	        else if (typeof document.body != 'undefined') {
	           yOffset=document.body.scrollTop;
	        }

	    }
		    
		if (mousePos.y-yOffset < config.scrollAmount) {
	    	window.scrollBy(0, -config.scrollAmount);
	    } else {
            var windowHeight = window.innerHeight ? window.innerHeight
                    : document.documentElement.clientHeight ? document.documentElement.clientHeight : document.body.clientHeight;
            if (windowHeight-(mousePos.y-yOffset) < config.scrollAmount) {
                window.scrollBy(0, config.scrollAmount);
            }
        }


        if (y != jQuery.tableDnD.oldY) {
            // work out if we're going up or down...
            var movingDown = y > jQuery.tableDnD.oldY;
            // update the old value
            jQuery.tableDnD.oldY = y;
            // update the style to show we're dragging
			if (config.onDragClass) {
				dragObj.addClass(config.onDragClass);
			} else {
	            dragObj.css(config.onDragStyle);
			}
            // If we're over a row then move the dragged row to there so that the user sees the
            // effect dynamically
            var currentRow = jQuery.tableDnD.findDropTargetRow(dragObj, y);
            if (currentRow) {
                // TODO worry about what happens when there are multiple TBODIES
                if (movingDown && jQuery.tableDnD.dragObject != currentRow) {
                    jQuery.tableDnD.dragObject.parentNode.insertBefore(jQuery.tableDnD.dragObject, currentRow.nextSibling);
                } else if (! movingDown && jQuery.tableDnD.dragObject != currentRow) {
                    jQuery.tableDnD.dragObject.parentNode.insertBefore(jQuery.tableDnD.dragObject, currentRow);
                }
            }
        }

        return false;
    },

    /** We're only worried about the y position really, because we can only move rows up and down */
    findDropTargetRow: function(draggedRow, y) {
        var rows = jQuery.tableDnD.currentTable.rows;
        for (var i=0; i<rows.length; i++) {
            var row = rows[i];
            var rowY    = this.getPosition(row).y;
            var rowHeight = parseInt(row.offsetHeight)/2;
            if (row.offsetHeight == 0) {
                rowY = this.getPosition(row.firstChild).y;
                rowHeight = parseInt(row.firstChild.offsetHeight)/2;
            }
            // Because we always have to insert before, we need to offset the height a bit
            if ((y > rowY - rowHeight) && (y < (rowY + rowHeight))) {
                // that's the row we're over
				// If it's the same as the current row, ignore it
				if (row == draggedRow) {return null;}
                var config = jQuery.tableDnD.currentTable.tableDnDConfig;
                if (config.onAllowDrop) {
                    if (config.onAllowDrop(draggedRow, row)) {
                        return row;
                    } else {
                        return null;
                    }
                } else {
					// If a row has nodrop class, then don't allow dropping (inspired by John Tarr and Famic)
                    var nodrop = jQuery(row).hasClass("nodrop");
                    if (! nodrop) {
                        return row;
                    } else {
                        return null;
                    }
                }
                return row;
            }
        }
        return null;
    },

    mouseup: function(e) {
        if (jQuery.tableDnD.currentTable && jQuery.tableDnD.dragObject) {
            var droppedRow = jQuery.tableDnD.dragObject;
            var config = jQuery.tableDnD.currentTable.tableDnDConfig;
            // If we have a dragObject, then we need to release it,
            // The row will already have been moved to the right place so we just reset stuff
			if (config.onDragClass) {
	            jQuery(droppedRow).removeClass(config.onDragClass);
			} else {
	            jQuery(droppedRow).css(config.onDropStyle);
			}
            jQuery.tableDnD.dragObject   = null;
            if (config.onDrop) {
                // Call the onDrop method if there is one
                config.onDrop(jQuery.tableDnD.currentTable, droppedRow);
            }
            jQuery.tableDnD.currentTable = null; // let go of the table too
        }
    },

    serialize: function() {
        if (jQuery.tableDnD.currentTable) {
            return jQuery.tableDnD.serializeTable(jQuery.tableDnD.currentTable);
        } else {
            return "Error: No Table id set, you need to set an id on your table and every row";
        }
    },

	serializeTable: function(table) {
        var result = "";
        var tableId = table.id;
        var rows = table.rows;
        for (var i=0; i<rows.length; i++) {
            if (result.length > 0) result += "&";
            var rowId = rows[i].id;
            if (rowId && rowId && table.tableDnDConfig && table.tableDnDConfig.serializeRegexp) {
                rowId = rowId.match(table.tableDnDConfig.serializeRegexp)[0];
            }

            result += tableId + '[]=' + rowId;
        }
        return result;
	},

	serializeTables: function() {
        var result = "";
        this.each(function() {
			// this is now bound to each matching table
			result += jQuery.tableDnD.serializeTable(this);
		});
        return result;
    }

}

jQuery.fn.extend(
	{
		tableDnD : jQuery.tableDnD.build,
		tableDnDUpdate : jQuery.tableDnD.updateTables,
		tableDnDSerialize: jQuery.tableDnD.serializeTables
	}
);/*
 * jQuery Table Display
 *
 * Copyright (c) 2008 Gabriel Langhans, Lucas Leite, Maicon Martins
 * Dual licensed under the MIT (MIT-LICENSE.txt)
 * and GPL (GPL-LICENSE.txt) licenses.
 *
 * $Date: 2008-08-06 14:01:12 +0300 (Wed, 06 Aug 2008) $
 */
(function($){

   $.fn.toggleRow = function() {
      if($(this).css('display')=='none') {
         $(this).showRow();
      } else {
         $(this).hideRow();
      }
   };

   $.fn.hideRow = function() {
      $(this).hide();
   };

   $.fn.showRow = function() {
      if($(this).css('display')=='none'){
         if ($.browser.msie) {
            $(this).css('display', 'block');
         }
         else{
            $(this).css('display', 'table-row');
         }
      }
   };
   
})(jQuery);/*
 * jquery.tools 1.0.2 - The missing UI library
 * 
 * [tools.tooltip-1.0.2]
 * 
 * Copyright (c) 2009 Tero Piirainen
 * http://flowplayer.org/tools/
 *
 * Dual licensed under MIT and GPL 2+ licenses
 * http://www.opensource.org/licenses
 * 
 * -----
 * 
 * Build: Fri Jun 12 12:46:48 GMT+00:00 2009
 */
(function(c){c.tools=c.tools||{version:{}};c.tools.version.tooltip="1.0.2";var b={toggle:[function(){this.getTip().show()},function(){this.getTip().hide()}],fade:[function(){this.getTip().fadeIn(this.getConf().fadeInSpeed)},function(){this.getTip().fadeOut(this.getConf().fadeOutSpeed)}]};c.tools.addTipEffect=function(d,f,e){b[d]=[f,e]};c.tools.addTipEffect("slideup",function(){var d=this.getConf();var e=d.slideOffset||10;this.getTip().css({opacity:0}).animate({top:"-="+e,opacity:d.opacity},d.slideInSpeed||200).show()},function(){var d=this.getConf();var e=d.slideOffset||10;this.getTip().animate({top:"-="+e,opacity:0},d.slideOutSpeed||200,function(){c(this).hide().animate({top:"+="+(e*2)},0)})});function a(f,e){var d=this;var h=f.next();if(e.tip){if(e.tip.indexOf("#")!=-1){h=c(e.tip)}else{h=f.nextAll(e.tip).eq(0);if(!h.length){h=f.parent().nextAll(e.tip).eq(0)}}}function j(k,l){c(d).bind(k,function(n,m){if(l&&l.call(this)===false&&m){m.proceed=false}});return d}c.each(e,function(k,l){if(c.isFunction(l)){j(k,l)}});var g=f.is("input, textarea");f.bind(g?"focus":"mouseover",function(k){k.target=this;d.show(k);h.hover(function(){d.show()},function(){d.hide()})});f.bind(g?"blur":"mouseout",function(){d.hide()});h.css("opacity",e.opacity);var i=0;c.extend(d,{show:function(q){if(q){f=c(q.target)}clearTimeout(i);if(h.is(":animated")||h.is(":visible")){return d}var o={proceed:true};c(d).trigger("onBeforeShow",o);if(!o.proceed){return d}var n=f.position().top-h.outerHeight();var k=h.outerHeight()+f.outerHeight();var r=e.position[0];if(r=="center"){n+=k/2}if(r=="bottom"){n+=k}var l=f.outerWidth()+h.outerWidth();var m=f.position().left+f.outerWidth();r=e.position[1];if(r=="center"){m-=l/2}if(r=="left"){m-=l}n+=e.offset[0];m+=e.offset[1];h.css({position:"absolute",top:n,left:m});b[e.effect][0].call(d);c(d).trigger("onShow");return d},hide:function(){clearTimeout(i);i=setTimeout(function(){if(!h.is(":visible")){return d}var k={proceed:true};c(d).trigger("onBeforeHide",k);if(!k.proceed){return d}b[e.effect][1].call(d);c(d).trigger("onHide")},e.delay||1);return d},isShown:function(){return h.is(":visible, :animated")},getConf:function(){return e},getTip:function(){return h},getTrigger:function(){return f},onBeforeShow:function(k){return j("onBeforeShow",k)},onShow:function(k){return j("onShow",k)},onBeforeHide:function(k){return j("onBeforeHide",k)},onHide:function(k){return j("onHide",k)}})}c.prototype.tooltip=function(d){var e=this.eq(typeof d=="number"?d:0).data("tooltip");if(e){return e}var f={tip:null,effect:"slideup",delay:30,opacity:1,position:["top","center"],offset:[0,0],api:false};if(c.isFunction(d)){d={onBeforeShow:d}}c.extend(f,d);this.each(function(){e=new a(c(this),f);c(this).data("tooltip",e)});return f.api?e:this}})(jQuery);
/**
 * jQuery lightBox plugin
 * This jQuery plugin was inspired and based on Lightbox 2 by Lokesh Dhakar (http://www.huddletogether.com/projects/lightbox2/)
 * and adapted to me for use like a plugin from jQuery.
 * @name jquery-lightbox-0.5.js
 * @author Leandro Vieira Pinho - http://leandrovieira.com
 * @version 0.5
 * @date April 11, 2008
 * @category jQuery plugin
 * @copyright (c) 2008 Leandro Vieira Pinho (leandrovieira.com)
 * @license CC Attribution-No Derivative Works 2.5 Brazil - http://creativecommons.org/licenses/by-nd/2.5/br/deed.en_US
 * @example Visit http://leandrovieira.com/projects/jquery/lightbox/ for more informations about this jQuery plugin
 */
(function($){$.fn.lightBox=function(settings){settings=jQuery.extend({overlayBgColor:'#000',overlayOpacity:0.8,fixedNavigation:false,imageLoading:'images/lightbox-ico-loading.gif',imageBtnPrev:'images/lightbox-btn-prev.gif',imageBtnNext:'images/lightbox-btn-next.gif',imageBtnClose:'images/lightbox-btn-close.gif',imageBlank:'images/lightbox-blank.gif',containerBorderSize:10,containerResizeSpeed:400,txtImage:'Image',txtOf:'of',keyToClose:'c',keyToPrev:'p',keyToNext:'n',imageArray:[],activeImage:0},settings);var jQueryMatchedObj=this;function _initialize(){_start(this,jQueryMatchedObj);return false;}
function _start(objClicked,jQueryMatchedObj){$('embed, object, select').css({'visibility':'hidden'});_set_interface();settings.imageArray.length=0;settings.activeImage=0;if(jQueryMatchedObj.length==1){settings.imageArray.push(new Array(objClicked.getAttribute('href'),objClicked.getAttribute('title')));}else{for(var i=0;i<jQueryMatchedObj.length;i++){settings.imageArray.push(new Array(jQueryMatchedObj[i].getAttribute('href'),jQueryMatchedObj[i].getAttribute('title')));}}
while(settings.imageArray[settings.activeImage][0]!=objClicked.getAttribute('href')){settings.activeImage++;}
_set_image_to_view();}
function _set_interface(){$('body').append('<div id="jquery-overlay"></div><div id="jquery-lightbox"><div id="lightbox-container-image-box"><div id="lightbox-container-image"><img id="lightbox-image"><div style="" id="lightbox-nav"><a href="#" id="lightbox-nav-btnPrev"></a><a href="#" id="lightbox-nav-btnNext"></a></div><div id="lightbox-loading"><a href="#" id="lightbox-loading-link"><img src="'+settings.imageLoading+'"></a></div></div></div><div id="lightbox-container-image-data-box"><div id="lightbox-container-image-data"><div id="lightbox-image-details"><span id="lightbox-image-details-caption"></span><span id="lightbox-image-details-currentNumber"></span></div><div id="lightbox-secNav"><a href="#" id="lightbox-secNav-btnClose"><img src="'+settings.imageBtnClose+'"></a></div></div></div></div>');var arrPageSizes=___getPageSize();$('#jquery-overlay').css({backgroundColor:settings.overlayBgColor,opacity:settings.overlayOpacity,width:arrPageSizes[0],height:arrPageSizes[1]}).fadeIn();var arrPageScroll=___getPageScroll();$('#jquery-lightbox').css({top:arrPageScroll[1]+(arrPageSizes[3]/10),left:arrPageScroll[0]}).show();$('#jquery-overlay,#jquery-lightbox').click(function(){_finish();});$('#lightbox-loading-link,#lightbox-secNav-btnClose').click(function(){_finish();return false;});$(window).resize(function(){var arrPageSizes=___getPageSize();$('#jquery-overlay').css({width:arrPageSizes[0],height:arrPageSizes[1]});var arrPageScroll=___getPageScroll();$('#jquery-lightbox').css({top:arrPageScroll[1]+(arrPageSizes[3]/10),left:arrPageScroll[0]});});}
function _set_image_to_view(){$('#lightbox-loading').show();if(settings.fixedNavigation){$('#lightbox-image,#lightbox-container-image-data-box,#lightbox-image-details-currentNumber').hide();}else{$('#lightbox-image,#lightbox-nav,#lightbox-nav-btnPrev,#lightbox-nav-btnNext,#lightbox-container-image-data-box,#lightbox-image-details-currentNumber').hide();}
var objImagePreloader=new Image();objImagePreloader.onload=function(){$('#lightbox-image').attr('src',settings.imageArray[settings.activeImage][0]);_resize_container_image_box(objImagePreloader.width,objImagePreloader.height);objImagePreloader.onload=function(){};};objImagePreloader.src=settings.imageArray[settings.activeImage][0];};function _resize_container_image_box(intImageWidth,intImageHeight){var intCurrentWidth=$('#lightbox-container-image-box').width();var intCurrentHeight=$('#lightbox-container-image-box').height();var intWidth=(intImageWidth+(settings.containerBorderSize*2));var intHeight=(intImageHeight+(settings.containerBorderSize*2));var intDiffW=intCurrentWidth-intWidth;var intDiffH=intCurrentHeight-intHeight;$('#lightbox-container-image-box').animate({width:intWidth,height:intHeight},settings.containerResizeSpeed,function(){_show_image();});if((intDiffW==0)&&(intDiffH==0)){if($.browser.msie){___pause(250);}else{___pause(100);}}
$('#lightbox-container-image-data-box').css({width:intImageWidth});$('#lightbox-nav-btnPrev,#lightbox-nav-btnNext').css({height:intImageHeight+(settings.containerBorderSize*2)});};function _show_image(){$('#lightbox-loading').hide();$('#lightbox-image').fadeIn(function(){_show_image_data();_set_navigation();});_preload_neighbor_images();};function _show_image_data(){$('#lightbox-container-image-data-box').slideDown('fast');$('#lightbox-image-details-caption').hide();if(settings.imageArray[settings.activeImage][1]){$('#lightbox-image-details-caption').html(settings.imageArray[settings.activeImage][1]).show();}
if(settings.imageArray.length>1){$('#lightbox-image-details-currentNumber').html(settings.txtImage+' '+(settings.activeImage+1)+' '+settings.txtOf+' '+settings.imageArray.length).show();}}
function _set_navigation(){$('#lightbox-nav').show();$('#lightbox-nav-btnPrev,#lightbox-nav-btnNext').css({'background':'transparent url('+settings.imageBlank+') no-repeat'});if(settings.activeImage!=0){if(settings.fixedNavigation){$('#lightbox-nav-btnPrev').css({'background':'url('+settings.imageBtnPrev+') left 15% no-repeat'}).unbind().bind('click',function(){settings.activeImage=settings.activeImage-1;_set_image_to_view();return false;});}else{$('#lightbox-nav-btnPrev').unbind().hover(function(){$(this).css({'background':'url('+settings.imageBtnPrev+') left 15% no-repeat'});},function(){$(this).css({'background':'transparent url('+settings.imageBlank+') no-repeat'});}).show().bind('click',function(){settings.activeImage=settings.activeImage-1;_set_image_to_view();return false;});}}
if(settings.activeImage!=(settings.imageArray.length-1)){if(settings.fixedNavigation){$('#lightbox-nav-btnNext').css({'background':'url('+settings.imageBtnNext+') right 15% no-repeat'}).unbind().bind('click',function(){settings.activeImage=settings.activeImage+1;_set_image_to_view();return false;});}else{$('#lightbox-nav-btnNext').unbind().hover(function(){$(this).css({'background':'url('+settings.imageBtnNext+') right 15% no-repeat'});},function(){$(this).css({'background':'transparent url('+settings.imageBlank+') no-repeat'});}).show().bind('click',function(){settings.activeImage=settings.activeImage+1;_set_image_to_view();return false;});}}
_enable_keyboard_navigation();}
function _enable_keyboard_navigation(){$(document).keydown(function(objEvent){_keyboard_action(objEvent);});}
function _disable_keyboard_navigation(){$(document).unbind();}
function _keyboard_action(objEvent){if(objEvent==null){keycode=event.keyCode;escapeKey=27;}else{keycode=objEvent.keyCode;escapeKey=objEvent.DOM_VK_ESCAPE;}
key=String.fromCharCode(keycode).toLowerCase();if((key==settings.keyToClose)||(key=='x')||(keycode==escapeKey)){_finish();}
if((key==settings.keyToPrev)||(keycode==37)){if(settings.activeImage!=0){settings.activeImage=settings.activeImage-1;_set_image_to_view();_disable_keyboard_navigation();}}
if((key==settings.keyToNext)||(keycode==39)){if(settings.activeImage!=(settings.imageArray.length-1)){settings.activeImage=settings.activeImage+1;_set_image_to_view();_disable_keyboard_navigation();}}}
function _preload_neighbor_images(){if((settings.imageArray.length-1)>settings.activeImage){objNext=new Image();objNext.src=settings.imageArray[settings.activeImage+1][0];}
if(settings.activeImage>0){objPrev=new Image();objPrev.src=settings.imageArray[settings.activeImage-1][0];}}
function _finish(){$('#jquery-lightbox').remove();$('#jquery-overlay').fadeOut(function(){$('#jquery-overlay').remove();});$('embed, object, select').css({'visibility':'visible'});}
function ___getPageSize(){var xScroll,yScroll;if(window.innerHeight&&window.scrollMaxY){xScroll=window.innerWidth+window.scrollMaxX;yScroll=window.innerHeight+window.scrollMaxY;}else if(document.body.scrollHeight>document.body.offsetHeight){xScroll=document.body.scrollWidth;yScroll=document.body.scrollHeight;}else{xScroll=document.body.offsetWidth;yScroll=document.body.offsetHeight;}
var windowWidth,windowHeight;if(self.innerHeight){if(document.documentElement.clientWidth){windowWidth=document.documentElement.clientWidth;}else{windowWidth=self.innerWidth;}
windowHeight=self.innerHeight;}else if(document.documentElement&&document.documentElement.clientHeight){windowWidth=document.documentElement.clientWidth;windowHeight=document.documentElement.clientHeight;}else if(document.body){windowWidth=document.body.clientWidth;windowHeight=document.body.clientHeight;}
if(yScroll<windowHeight){pageHeight=windowHeight;}else{pageHeight=yScroll;}
if(xScroll<windowWidth){pageWidth=xScroll;}else{pageWidth=windowWidth;}
arrayPageSize=new Array(pageWidth,pageHeight,windowWidth,windowHeight);return arrayPageSize;};function ___getPageScroll(){var xScroll,yScroll;if(self.pageYOffset){yScroll=self.pageYOffset;xScroll=self.pageXOffset;}else if(document.documentElement&&document.documentElement.scrollTop){yScroll=document.documentElement.scrollTop;xScroll=document.documentElement.scrollLeft;}else if(document.body){yScroll=document.body.scrollTop;xScroll=document.body.scrollLeft;}
arrayPageScroll=new Array(xScroll,yScroll);return arrayPageScroll;};function ___pause(ms){var date=new Date();curDate=null;do{var curDate=new Date();}
while(curDate-date<ms);};return this.unbind('click').click(_initialize);};})(jQuery);/*
 * jQuery UI 1.6rc6
 *
 * Copyright (c) 2009 AUTHORS.txt (http://ui.jquery.com/about)
 * Dual licensed under the MIT (MIT-LICENSE.txt)
 * and GPL (GPL-LICENSE.txt) licenses.
 *
 * http://docs.jquery.com/UI
 */
(function(c){var i=c.fn.remove,d=c.browser.mozilla&&(parseFloat(c.browser.version)<1.9);c.ui={version:"1.6rc6",plugin:{add:function(k,l,n){var m=c.ui[k].prototype;for(var j in n){m.plugins[j]=m.plugins[j]||[];m.plugins[j].push([l,n[j]])}},call:function(j,l,k){var n=j.plugins[l];if(!n){return}for(var m=0;m<n.length;m++){if(j.options[n[m][0]]){n[m][1].apply(j.element,k)}}}},contains:function(k,j){return document.compareDocumentPosition?k.compareDocumentPosition(j)&16:k!==j&&k.contains(j)},cssCache:{},css:function(j){if(c.ui.cssCache[j]){return c.ui.cssCache[j]}var k=c('<div class="ui-gen"></div>').addClass(j).css({position:"absolute",top:"-5000px",left:"-5000px",display:"block"}).appendTo("body");c.ui.cssCache[j]=!!((!(/auto|default/).test(k.css("cursor"))||(/^[1-9]/).test(k.css("height"))||(/^[1-9]/).test(k.css("width"))||!(/none/).test(k.css("backgroundImage"))||!(/transparent|rgba\(0, 0, 0, 0\)/).test(k.css("backgroundColor"))));try{c("body").get(0).removeChild(k.get(0))}catch(l){}return c.ui.cssCache[j]},hasScroll:function(m,k){if(c(m).css("overflow")=="hidden"){return false}var j=(k&&k=="left")?"scrollLeft":"scrollTop",l=false;if(m[j]>0){return true}m[j]=1;l=(m[j]>0);m[j]=0;return l},isOverAxis:function(k,j,l){return(k>j)&&(k<(j+l))},isOver:function(o,k,n,m,j,l){return c.ui.isOverAxis(o,n,j)&&c.ui.isOverAxis(k,m,l)},keyCode:{BACKSPACE:8,CAPS_LOCK:20,COMMA:188,CONTROL:17,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,INSERT:45,LEFT:37,NUMPAD_ADD:107,NUMPAD_DECIMAL:110,NUMPAD_DIVIDE:111,NUMPAD_ENTER:108,NUMPAD_MULTIPLY:106,NUMPAD_SUBTRACT:109,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SHIFT:16,SPACE:32,TAB:9,UP:38}};if(d){var f=c.attr,e=c.fn.removeAttr,h="http://www.w3.org/2005/07/aaa",a=/^aria-/,b=/^wairole:/;c.attr=function(k,j,l){var m=l!==undefined;return(j=="role"?(m?f.call(this,k,j,"wairole:"+l):(f.apply(this,arguments)||"").replace(b,"")):(a.test(j)?(m?k.setAttributeNS(h,j.replace(a,"aaa:"),l):f.call(this,k,j.replace(a,"aaa:"))):f.apply(this,arguments)))};c.fn.removeAttr=function(j){return(a.test(j)?this.each(function(){this.removeAttributeNS(h,j.replace(a,""))}):e.call(this,j))}}c.fn.extend({remove:function(){c("*",this).add(this).each(function(){c(this).triggerHandler("remove")});return i.apply(this,arguments)},enableSelection:function(){return this.attr("unselectable","off").css("MozUserSelect","").unbind("selectstart.ui")},disableSelection:function(){return this.attr("unselectable","on").css("MozUserSelect","none").bind("selectstart.ui",function(){return false})},scrollParent:function(){var j;if((c.browser.msie&&(/(static|relative)/).test(this.css("position")))||(/absolute/).test(this.css("position"))){j=this.parents().filter(function(){return(/(relative|absolute|fixed)/).test(c.curCSS(this,"position",1))&&(/(auto|scroll)/).test(c.curCSS(this,"overflow",1)+c.curCSS(this,"overflow-y",1)+c.curCSS(this,"overflow-x",1))}).eq(0)}else{j=this.parents().filter(function(){return(/(auto|scroll)/).test(c.curCSS(this,"overflow",1)+c.curCSS(this,"overflow-y",1)+c.curCSS(this,"overflow-x",1))}).eq(0)}return(/fixed/).test(this.css("position"))||!j.length?c(document):j}});c.extend(c.expr[":"],{data:function(l,k,j){return !!c.data(l,j[3])},focusable:function(k){var l=k.nodeName.toLowerCase(),j=c.attr(k,"tabindex");return(/input|select|textarea|button|object/.test(l)?!k.disabled:"a"==l||"area"==l?k.href||!isNaN(j):!isNaN(j))&&!c(k)["area"==l?"parents":"closest"](":hidden").length},tabbable:function(k){var j=c.attr(k,"tabindex");return(isNaN(j)||j>=0)&&c(k).is(":focusable")}});function g(m,n,o,l){function k(q){var p=c[m][n][q]||[];return(typeof p=="string"?p.split(/,?\s+/):p)}var j=k("getter");if(l.length==1&&typeof l[0]=="string"){j=j.concat(k("getterSetter"))}return(c.inArray(o,j)!=-1)}c.widget=function(k,j){var l=k.split(".")[0];k=k.split(".")[1];c.fn[k]=function(p){var n=(typeof p=="string"),o=Array.prototype.slice.call(arguments,1);if(n&&p.substring(0,1)=="_"){return this}if(n&&g(l,k,p,o)){var m=c.data(this[0],k);return(m?m[p].apply(m,o):undefined)}return this.each(function(){var q=c.data(this,k);(!q&&!n&&c.data(this,k,new c[l][k](this,p))._init());(q&&n&&c.isFunction(q[p])&&q[p].apply(q,o))})};c[l]=c[l]||{};c[l][k]=function(o,n){var m=this;this.namespace=l;this.widgetName=k;this.widgetEventPrefix=c[l][k].eventPrefix||k;this.widgetBaseClass=l+"-"+k;this.options=c.extend({},c.widget.defaults,c[l][k].defaults,c.metadata&&c.metadata.get(o)[k],n);this.element=c(o).bind("setData."+k,function(q,p,r){if(q.target==o){return m._setData(p,r)}}).bind("getData."+k,function(q,p){if(q.target==o){return m._getData(p)}}).bind("remove",function(){return m.destroy()})};c[l][k].prototype=c.extend({},c.widget.prototype,j);c[l][k].getterSetter="option"};c.widget.prototype={_init:function(){},destroy:function(){this.element.removeData(this.widgetName).removeClass(this.widgetBaseClass+"-disabled "+this.namespace+"-state-disabled").removeAttr("aria-disabled")},option:function(l,m){var k=l,j=this;if(typeof l=="string"){if(m===undefined){return this._getData(l)}k={};k[l]=m}c.each(k,function(n,o){j._setData(n,o)})},_getData:function(j){return this.options[j]},_setData:function(j,k){this.options[j]=k;if(j=="disabled"){this.element[k?"addClass":"removeClass"](this.widgetBaseClass+"-disabled "+this.namespace+"-state-disabled").attr("aria-disabled",k)}},enable:function(){this._setData("disabled",false)},disable:function(){this._setData("disabled",true)},_trigger:function(l,m,n){var p=this.options[l],j=(l==this.widgetEventPrefix?l:this.widgetEventPrefix+l);m=c.Event(m);m.type=j;if(m.originalEvent){for(var k=c.event.props.length,o;k;){o=c.event.props[--k];m[o]=m.originalEvent[o]}}this.element.trigger(m,n);return !(c.isFunction(p)&&p.call(this.element[0],m,n)===false||m.isDefaultPrevented())}};c.widget.defaults={disabled:false};c.ui.mouse={_mouseInit:function(){var j=this;this.element.bind("mousedown."+this.widgetName,function(k){return j._mouseDown(k)}).bind("click."+this.widgetName,function(k){if(j._preventClickEvent){j._preventClickEvent=false;return false}});if(c.browser.msie){this._mouseUnselectable=this.element.attr("unselectable");this.element.attr("unselectable","on")}this.started=false},_mouseDestroy:function(){this.element.unbind("."+this.widgetName);(c.browser.msie&&this.element.attr("unselectable",this._mouseUnselectable))},_mouseDown:function(l){if(l.originalEvent.mouseHandled){return}(this._mouseStarted&&this._mouseUp(l));this._mouseDownEvent=l;var k=this,m=(l.which==1),j=(typeof this.options.cancel=="string"?c(l.target).parents().add(l.target).filter(this.options.cancel).length:false);if(!m||j||!this._mouseCapture(l)){return true}this.mouseDelayMet=!this.options.delay;if(!this.mouseDelayMet){this._mouseDelayTimer=setTimeout(function(){k.mouseDelayMet=true},this.options.delay)}if(this._mouseDistanceMet(l)&&this._mouseDelayMet(l)){this._mouseStarted=(this._mouseStart(l)!==false);if(!this._mouseStarted){l.preventDefault();return true}}this._mouseMoveDelegate=function(n){return k._mouseMove(n)};this._mouseUpDelegate=function(n){return k._mouseUp(n)};c(document).bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate);(c.browser.safari||l.preventDefault());l.originalEvent.mouseHandled=true;return true},_mouseMove:function(j){if(c.browser.msie&&!j.button){return this._mouseUp(j)}if(this._mouseStarted){this._mouseDrag(j);return j.preventDefault()}if(this._mouseDistanceMet(j)&&this._mouseDelayMet(j)){this._mouseStarted=(this._mouseStart(this._mouseDownEvent,j)!==false);(this._mouseStarted?this._mouseDrag(j):this._mouseUp(j))}return !this._mouseStarted},_mouseUp:function(j){c(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate);if(this._mouseStarted){this._mouseStarted=false;this._preventClickEvent=true;this._mouseStop(j)}return false},_mouseDistanceMet:function(j){return(Math.max(Math.abs(this._mouseDownEvent.pageX-j.pageX),Math.abs(this._mouseDownEvent.pageY-j.pageY))>=this.options.distance)},_mouseDelayMet:function(j){return this.mouseDelayMet},_mouseStart:function(j){},_mouseDrag:function(j){},_mouseStop:function(j){},_mouseCapture:function(j){return true}};c.ui.mouse.defaults={cancel:null,distance:1,delay:0}})(jQuery);;/*
 * jQuery UI Draggable 1.6rc6
 *
 * Copyright (c) 2009 AUTHORS.txt (http://ui.jquery.com/about)
 * Dual licensed under the MIT (MIT-LICENSE.txt)
 * and GPL (GPL-LICENSE.txt) licenses.
 *
 * http://docs.jquery.com/UI/Draggables
 *
 * Depends:
 *	ui.core.js
 */
(function(a){a.widget("ui.draggable",a.extend({},a.ui.mouse,{_init:function(){if(this.options.helper=="original"&&!(/^(?:r|a|f)/).test(this.element.css("position"))){this.element[0].style.position="relative"}(this.options.cssNamespace&&this.element.addClass(this.options.cssNamespace+"-draggable"));(this.options.disabled&&this.element.addClass(this.options.cssNamespace+"-draggable-disabled"));this._mouseInit()},destroy:function(){if(!this.element.data("draggable")){return}this.element.removeData("draggable").unbind(".draggable").removeClass(this.options.cssNamespace+"-draggable "+this.options.cssNamespace+"-draggable-dragging "+this.options.cssNamespace+"-draggable-disabled");this._mouseDestroy()},_mouseCapture:function(b){var c=this.options;if(this.helper||c.disabled||a(b.target).is("."+this.options.cssNamespace+"-resizable-handle")){return false}this.handle=this._getHandle(b);if(!this.handle){return false}return true},_mouseStart:function(b){var c=this.options;this.helper=this._createHelper(b);this._cacheHelperProportions();if(a.ui.ddmanager){a.ui.ddmanager.current=this}this._cacheMargins();this.cssPosition=this.helper.css("position");this.scrollParent=this.helper.scrollParent();this.offset=this.element.offset();this.offset={top:this.offset.top-this.margins.top,left:this.offset.left-this.margins.left};a.extend(this.offset,{click:{left:b.pageX-this.offset.left,top:b.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()});this.originalPosition=this._generatePosition(b);this.originalPageX=b.pageX;this.originalPageY=b.pageY;if(c.cursorAt){this._adjustOffsetFromHelper(c.cursorAt)}if(c.containment){this._setContainment()}this._trigger("start",b);this._cacheHelperProportions();if(a.ui.ddmanager&&!c.dropBehaviour){a.ui.ddmanager.prepareOffsets(this,b)}this.helper.addClass(c.cssNamespace+"-draggable-dragging");this._mouseDrag(b,true);return true},_mouseDrag:function(b,d){this.position=this._generatePosition(b);this.positionAbs=this._convertPositionTo("absolute");if(!d){var c=this._uiHash();this._trigger("drag",b,c);this.position=c.position}if(!this.options.axis||this.options.axis!="y"){this.helper[0].style.left=this.position.left+"px"}if(!this.options.axis||this.options.axis!="x"){this.helper[0].style.top=this.position.top+"px"}if(a.ui.ddmanager){a.ui.ddmanager.drag(this,b)}return false},_mouseStop:function(c){var d=false;if(a.ui.ddmanager&&!this.options.dropBehaviour){d=a.ui.ddmanager.drop(this,c)}if(this.dropped){d=this.dropped;this.dropped=false}if((this.options.revert=="invalid"&&!d)||(this.options.revert=="valid"&&d)||this.options.revert===true||(a.isFunction(this.options.revert)&&this.options.revert.call(this.element,d))){var b=this;a(this.helper).animate(this.originalPosition,parseInt(this.options.revertDuration,10),function(){b._trigger("stop",c);b._clear()})}else{this._trigger("stop",c);this._clear()}return false},_getHandle:function(b){var c=!this.options.handle||!a(this.options.handle,this.element).length?true:false;a(this.options.handle,this.element).find("*").andSelf().each(function(){if(this==b.target){c=true}});return c},_createHelper:function(c){var d=this.options;var b=a.isFunction(d.helper)?a(d.helper.apply(this.element[0],[c])):(d.helper=="clone"?this.element.clone():this.element);if(!b.parents("body").length){b.appendTo((d.appendTo=="parent"?this.element[0].parentNode:d.appendTo))}if(b[0]!=this.element[0]&&!(/(fixed|absolute)/).test(b.css("position"))){b.css("position","absolute")}return b},_adjustOffsetFromHelper:function(b){if(b.left!=undefined){this.offset.click.left=b.left+this.margins.left}if(b.right!=undefined){this.offset.click.left=this.helperProportions.width-b.right+this.margins.left}if(b.top!=undefined){this.offset.click.top=b.top+this.margins.top}if(b.bottom!=undefined){this.offset.click.top=this.helperProportions.height-b.bottom+this.margins.top}},_getParentOffset:function(){this.offsetParent=this.helper.offsetParent();var b=this.offsetParent.offset();if(this.cssPosition=="absolute"&&this.scrollParent[0]!=document&&a.ui.contains(this.scrollParent[0],this.offsetParent[0])){b.left+=this.scrollParent.scrollLeft();b.top+=this.scrollParent.scrollTop()}if((this.offsetParent[0]==document.body&&a.browser.mozilla)||(this.offsetParent[0].tagName&&this.offsetParent[0].tagName.toLowerCase()=="html"&&a.browser.msie)){b={top:0,left:0}}return{top:b.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:b.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if(this.cssPosition=="relative"){var b=this.element.position();return{top:b.top-(parseInt(this.helper.css("top"),10)||0)+this.scrollParent.scrollTop(),left:b.left-(parseInt(this.helper.css("left"),10)||0)+this.scrollParent.scrollLeft()}}else{return{top:0,left:0}}},_cacheMargins:function(){this.margins={left:(parseInt(this.element.css("marginLeft"),10)||0),top:(parseInt(this.element.css("marginTop"),10)||0)}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var e=this.options;if(e.containment=="parent"){e.containment=this.helper[0].parentNode}if(e.containment=="document"||e.containment=="window"){this.containment=[0-this.offset.relative.left-this.offset.parent.left,0-this.offset.relative.top-this.offset.parent.top,a(e.containment=="document"?document:window).width()-this.helperProportions.width-this.margins.left,(a(e.containment=="document"?document:window).height()||document.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top]}if(!(/^(document|window|parent)$/).test(e.containment)&&e.containment.constructor!=Array){var c=a(e.containment)[0];if(!c){return}var d=a(e.containment).offset();var b=(a(c).css("overflow")!="hidden");this.containment=[d.left+(parseInt(a(c).css("borderLeftWidth"),10)||0)+(parseInt(a(c).css("paddingLeft"),10)||0)-this.margins.left,d.top+(parseInt(a(c).css("borderTopWidth"),10)||0)+(parseInt(a(c).css("paddingTop"),10)||0)-this.margins.top,d.left+(b?Math.max(c.scrollWidth,c.offsetWidth):c.offsetWidth)-(parseInt(a(c).css("borderLeftWidth"),10)||0)-(parseInt(a(c).css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left,d.top+(b?Math.max(c.scrollHeight,c.offsetHeight):c.offsetHeight)-(parseInt(a(c).css("borderTopWidth"),10)||0)-(parseInt(a(c).css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top]}else{if(e.containment.constructor==Array){this.containment=e.containment}}},_convertPositionTo:function(f,h){if(!h){h=this.position}var c=f=="absolute"?1:-1;var e=this.options,b=this.cssPosition=="absolute"&&!(this.scrollParent[0]!=document&&a.ui.contains(this.scrollParent[0],this.offsetParent[0]))?this.offsetParent:this.scrollParent,g=(/(html|body)/i).test(b[0].tagName);return{top:(h.top+this.offset.relative.top*c+this.offset.parent.top*c-(this.cssPosition=="fixed"?-this.scrollParent.scrollTop():(g?0:b.scrollTop()))*c),left:(h.left+this.offset.relative.left*c+this.offset.parent.left*c-(this.cssPosition=="fixed"?-this.scrollParent.scrollLeft():g?0:b.scrollLeft())*c)}},_generatePosition:function(e){var h=this.options,b=this.cssPosition=="absolute"&&!(this.scrollParent[0]!=document&&a.ui.contains(this.scrollParent[0],this.offsetParent[0]))?this.offsetParent:this.scrollParent,i=(/(html|body)/i).test(b[0].tagName);if(this.cssPosition=="relative"&&!(this.scrollParent[0]!=document&&this.scrollParent[0]!=this.offsetParent[0])){this.offset.relative=this._getRelativeOffset()}var d=e.pageX;var c=e.pageY;if(this.originalPosition){if(this.containment){if(e.pageX-this.offset.click.left<this.containment[0]){d=this.containment[0]+this.offset.click.left}if(e.pageY-this.offset.click.top<this.containment[1]){c=this.containment[1]+this.offset.click.top}if(e.pageX-this.offset.click.left>this.containment[2]){d=this.containment[2]+this.offset.click.left}if(e.pageY-this.offset.click.top>this.containment[3]){c=this.containment[3]+this.offset.click.top}}if(h.grid){var g=this.originalPageY+Math.round((c-this.originalPageY)/h.grid[1])*h.grid[1];c=this.containment?(!(g-this.offset.click.top<this.containment[1]||g-this.offset.click.top>this.containment[3])?g:(!(g-this.offset.click.top<this.containment[1])?g-h.grid[1]:g+h.grid[1])):g;var f=this.originalPageX+Math.round((d-this.originalPageX)/h.grid[0])*h.grid[0];d=this.containment?(!(f-this.offset.click.left<this.containment[0]||f-this.offset.click.left>this.containment[2])?f:(!(f-this.offset.click.left<this.containment[0])?f-h.grid[0]:f+h.grid[0])):f}}return{top:(c-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+(this.cssPosition=="fixed"?-this.scrollParent.scrollTop():(i?0:b.scrollTop()))),left:(d-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+(this.cssPosition=="fixed"?-this.scrollParent.scrollLeft():i?0:b.scrollLeft()))}},_clear:function(){this.helper.removeClass(this.options.cssNamespace+"-draggable-dragging");if(this.helper[0]!=this.element[0]&&!this.cancelHelperRemoval){this.helper.remove()}this.helper=null;this.cancelHelperRemoval=false},_trigger:function(b,c,d){d=d||this._uiHash();a.ui.plugin.call(this,b,[c,d]);if(b=="drag"){this.positionAbs=this._convertPositionTo("absolute")}return a.widget.prototype._trigger.call(this,b,c,d)},plugins:{},_uiHash:function(b){return{helper:this.helper,position:this.position,absolutePosition:this.positionAbs,offset:this.positionAbs}}}));a.extend(a.ui.draggable,{version:"1.6rc6",eventPrefix:"drag",defaults:{appendTo:"parent",axis:false,cancel:":input,option",connectToSortable:false,containment:false,cssNamespace:"ui",cursor:"default",cursorAt:false,delay:0,distance:1,grid:false,handle:false,helper:"original",iframeFix:false,opacity:false,refreshPositions:false,revert:false,revertDuration:500,scope:"default",scroll:true,scrollSensitivity:20,scrollSpeed:20,snap:false,snapMode:"both",snapTolerance:20,stack:false,zIndex:false}});a.ui.plugin.add("draggable","connectToSortable",{start:function(b,d){var c=a(this).data("draggable"),e=c.options;c.sortables=[];a(e.connectToSortable).each(function(){a(typeof this=="string"?this+"":this).each(function(){if(a.data(this,"sortable")){var f=a.data(this,"sortable");c.sortables.push({instance:f,shouldRevert:f.options.revert});f._refreshItems();f._trigger("activate",b,c)}})})},stop:function(b,d){var c=a(this).data("draggable");a.each(c.sortables,function(){if(this.instance.isOver){this.instance.isOver=0;c.cancelHelperRemoval=true;this.instance.cancelHelperRemoval=false;if(this.shouldRevert){this.instance.options.revert=true}this.instance._mouseStop(b);this.instance.options.helper=this.instance.options._helper;if(c.options.helper=="original"){this.instance.currentItem.css({top:"auto",left:"auto"})}}else{this.instance.cancelHelperRemoval=false;this.instance._trigger("deactivate",b,c)}})},drag:function(c,f){var e=a(this).data("draggable"),b=this;var d=function(i){var n=this.offset.click.top,m=this.offset.click.left;var g=this.positionAbs.top,k=this.positionAbs.left;var j=i.height,l=i.width;var p=i.top,h=i.left;return a.ui.isOver(g+n,k+m,p,h,j,l)};a.each(e.sortables,function(g){if(d.call(e,this.instance.containerCache)){if(!this.instance.isOver){this.instance.isOver=1;this.instance.currentItem=a(b).clone().appendTo(this.instance.element).data("sortable-item",true);this.instance.options._helper=this.instance.options.helper;this.instance.options.helper=function(){return f.helper[0]};c.target=this.instance.currentItem[0];this.instance._mouseCapture(c,true);this.instance._mouseStart(c,true,true);this.instance.offset.click.top=e.offset.click.top;this.instance.offset.click.left=e.offset.click.left;this.instance.offset.parent.left-=e.offset.parent.left-this.instance.offset.parent.left;this.instance.offset.parent.top-=e.offset.parent.top-this.instance.offset.parent.top;e._trigger("toSortable",c);e.dropped=this.instance.element;this.instance.fromOutside=e}if(this.instance.currentItem){this.instance._mouseDrag(c)}}else{if(this.instance.isOver){this.instance.isOver=0;this.instance.cancelHelperRemoval=true;this.instance.options.revert=false;this.instance._mouseStop(c,true);this.instance.options.helper=this.instance.options._helper;this.instance.currentItem.remove();if(this.instance.placeholder){this.instance.placeholder.remove()}e._trigger("fromSortable",c);e.dropped=false}}})}});a.ui.plugin.add("draggable","cursor",{start:function(c,d){var b=a("body"),e=a(this).data("draggable").options;if(b.css("cursor")){e._cursor=b.css("cursor")}b.css("cursor",e.cursor)},stop:function(b,c){var d=a(this).data("draggable").options;if(d._cursor){a("body").css("cursor",d._cursor)}}});a.ui.plugin.add("draggable","iframeFix",{start:function(b,c){var d=a(this).data("draggable").options;a(d.iframeFix===true?"iframe":d.iframeFix).each(function(){a('<div class="ui-draggable-iframeFix" style="background: #fff;"></div>').css({width:this.offsetWidth+"px",height:this.offsetHeight+"px",position:"absolute",opacity:"0.001",zIndex:1000}).css(a(this).offset()).appendTo("body")})},stop:function(b,c){a("div.ui-draggable-iframeFix").each(function(){this.parentNode.removeChild(this)})}});a.ui.plugin.add("draggable","opacity",{start:function(c,d){var b=a(d.helper),e=a(this).data("draggable").options;if(b.css("opacity")){e._opacity=b.css("opacity")}b.css("opacity",e.opacity)},stop:function(b,c){var d=a(this).data("draggable").options;if(d._opacity){a(c.helper).css("opacity",d._opacity)}}});a.ui.plugin.add("draggable","scroll",{start:function(c,d){var b=a(this).data("draggable");if(b.scrollParent[0]!=document&&b.scrollParent[0].tagName!="HTML"){b.overflowOffset=b.scrollParent.offset()}},drag:function(d,e){var c=a(this).data("draggable"),f=c.options,b=false;if(c.scrollParent[0]!=document&&c.scrollParent[0].tagName!="HTML"){if(!f.axis||f.axis!="x"){if((c.overflowOffset.top+c.scrollParent[0].offsetHeight)-d.pageY<f.scrollSensitivity){c.scrollParent[0].scrollTop=b=c.scrollParent[0].scrollTop+f.scrollSpeed}else{if(d.pageY-c.overflowOffset.top<f.scrollSensitivity){c.scrollParent[0].scrollTop=b=c.scrollParent[0].scrollTop-f.scrollSpeed}}}if(!f.axis||f.axis!="y"){if((c.overflowOffset.left+c.scrollParent[0].offsetWidth)-d.pageX<f.scrollSensitivity){c.scrollParent[0].scrollLeft=b=c.scrollParent[0].scrollLeft+f.scrollSpeed}else{if(d.pageX-c.overflowOffset.left<f.scrollSensitivity){c.scrollParent[0].scrollLeft=b=c.scrollParent[0].scrollLeft-f.scrollSpeed}}}}else{if(!f.axis||f.axis!="x"){if(d.pageY-a(document).scrollTop()<f.scrollSensitivity){b=a(document).scrollTop(a(document).scrollTop()-f.scrollSpeed)}else{if(a(window).height()-(d.pageY-a(document).scrollTop())<f.scrollSensitivity){b=a(document).scrollTop(a(document).scrollTop()+f.scrollSpeed)}}}if(!f.axis||f.axis!="y"){if(d.pageX-a(document).scrollLeft()<f.scrollSensitivity){b=a(document).scrollLeft(a(document).scrollLeft()-f.scrollSpeed)}else{if(a(window).width()-(d.pageX-a(document).scrollLeft())<f.scrollSensitivity){b=a(document).scrollLeft(a(document).scrollLeft()+f.scrollSpeed)}}}}if(b!==false&&a.ui.ddmanager&&!f.dropBehaviour){a.ui.ddmanager.prepareOffsets(c,d)}}});a.ui.plugin.add("draggable","snap",{start:function(c,d){var b=a(this).data("draggable"),e=b.options;b.snapElements=[];a(e.snap.constructor!=String?(e.snap.items||":data(draggable)"):e.snap).each(function(){var g=a(this);var f=g.offset();if(this!=b.element[0]){b.snapElements.push({item:this,width:g.outerWidth(),height:g.outerHeight(),top:f.top,left:f.left})}})},drag:function(u,p){var g=a(this).data("draggable"),q=g.options;var y=q.snapTolerance;var x=p.absolutePosition.left,w=x+g.helperProportions.width,f=p.absolutePosition.top,e=f+g.helperProportions.height;for(var v=g.snapElements.length-1;v>=0;v--){var s=g.snapElements[v].left,n=s+g.snapElements[v].width,m=g.snapElements[v].top,A=m+g.snapElements[v].height;if(!((s-y<x&&x<n+y&&m-y<f&&f<A+y)||(s-y<x&&x<n+y&&m-y<e&&e<A+y)||(s-y<w&&w<n+y&&m-y<f&&f<A+y)||(s-y<w&&w<n+y&&m-y<e&&e<A+y))){if(g.snapElements[v].snapping){(g.options.snap.release&&g.options.snap.release.call(g.element,u,a.extend(g._uiHash(),{snapItem:g.snapElements[v].item})))}g.snapElements[v].snapping=false;continue}if(q.snapMode!="inner"){var c=Math.abs(m-e)<=y;var z=Math.abs(A-f)<=y;var j=Math.abs(s-w)<=y;var k=Math.abs(n-x)<=y;if(c){p.position.top=g._convertPositionTo("relative",{top:m-g.helperProportions.height,left:0}).top-g.margins.top}if(z){p.position.top=g._convertPositionTo("relative",{top:A,left:0}).top-g.margins.top}if(j){p.position.left=g._convertPositionTo("relative",{top:0,left:s-g.helperProportions.width}).left-g.margins.left}if(k){p.position.left=g._convertPositionTo("relative",{top:0,left:n}).left-g.margins.left}}var h=(c||z||j||k);if(q.snapMode!="outer"){var c=Math.abs(m-f)<=y;var z=Math.abs(A-e)<=y;var j=Math.abs(s-x)<=y;var k=Math.abs(n-w)<=y;if(c){p.position.top=g._convertPositionTo("relative",{top:m,left:0}).top-g.margins.top}if(z){p.position.top=g._convertPositionTo("relative",{top:A-g.helperProportions.height,left:0}).top-g.margins.top}if(j){p.position.left=g._convertPositionTo("relative",{top:0,left:s}).left-g.margins.left}if(k){p.position.left=g._convertPositionTo("relative",{top:0,left:n-g.helperProportions.width}).left-g.margins.left}}if(!g.snapElements[v].snapping&&(c||z||j||k||h)){(g.options.snap.snap&&g.options.snap.snap.call(g.element,u,a.extend(g._uiHash(),{snapItem:g.snapElements[v].item})))}g.snapElements[v].snapping=(c||z||j||k||h)}}});a.ui.plugin.add("draggable","stack",{start:function(b,c){var e=a(this).data("draggable").options;var d=a.makeArray(a(e.stack.group)).sort(function(g,f){return(parseInt(a(g).css("zIndex"),10)||e.stack.min)-(parseInt(a(f).css("zIndex"),10)||e.stack.min)});a(d).each(function(f){this.style.zIndex=e.stack.min+f});this[0].style.zIndex=e.stack.min+d.length}});a.ui.plugin.add("draggable","zIndex",{start:function(c,d){var b=a(d.helper),e=a(this).data("draggable").options;if(b.css("zIndex")){e._zIndex=b.css("zIndex")}b.css("zIndex",e.zIndex)},stop:function(b,c){var d=a(this).data("draggable").options;if(d._zIndex){a(c.helper).css("zIndex",d._zIndex)}}})})(jQuery);;/*
 * jQuery UI Sortable 1.6rc6
 *
 * Copyright (c) 2009 AUTHORS.txt (http://ui.jquery.com/about)
 * Dual licensed under the MIT (MIT-LICENSE.txt)
 * and GPL (GPL-LICENSE.txt) licenses.
 *
 * http://docs.jquery.com/UI/Sortables
 *
 * Depends:
 *	ui.core.js
 */
(function(a){a.widget("ui.sortable",a.extend({},a.ui.mouse,{_init:function(){var b=this.options;this.containerCache={};(this.options.cssNamespace&&this.element.addClass(this.options.cssNamespace+"-sortable"));this.refresh();this.floating=this.items.length?(/left|right/).test(this.items[0].item.css("float")):false;this.offset=this.element.offset();this._mouseInit()},destroy:function(){this.element.removeClass(this.options.cssNamespace+"-sortable "+this.options.cssNamespace+"-sortable-disabled").removeData("sortable").unbind(".sortable");this._mouseDestroy();for(var b=this.items.length-1;b>=0;b--){this.items[b].item.removeData("sortable-item")}},_mouseCapture:function(e,f){if(this.reverting){return false}if(this.options.disabled||this.options.type=="static"){return false}this._refreshItems(e);var d=null,c=this,b=a(e.target).parents().each(function(){if(a.data(this,"sortable-item")==c){d=a(this);return false}});if(a.data(e.target,"sortable-item")==c){d=a(e.target)}if(!d){return false}if(this.options.handle&&!f){var g=false;a(this.options.handle,d).find("*").andSelf().each(function(){if(this==e.target){g=true}});if(!g){return false}}this.currentItem=d;this._removeCurrentsFromItems();return true},_mouseStart:function(e,f,b){var g=this.options,c=this;this.currentContainer=this;this.refreshPositions();this.helper=this._createHelper(e);this._cacheHelperProportions();this._cacheMargins();this.scrollParent=this.helper.scrollParent();this.offset=this.currentItem.offset();this.offset={top:this.offset.top-this.margins.top,left:this.offset.left-this.margins.left};this.helper.css("position","absolute");this.cssPosition=this.helper.css("position");a.extend(this.offset,{click:{left:e.pageX-this.offset.left,top:e.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()});this.originalPosition=this._generatePosition(e);this.originalPageX=e.pageX;this.originalPageY=e.pageY;if(g.cursorAt){this._adjustOffsetFromHelper(g.cursorAt)}this.domPosition={prev:this.currentItem.prev()[0],parent:this.currentItem.parent()[0]};if(this.helper[0]!=this.currentItem[0]){this.currentItem.hide()}this._createPlaceholder();if(g.containment){this._setContainment()}if(g.cursor){if(a("body").css("cursor")){this._storedCursor=a("body").css("cursor")}a("body").css("cursor",g.cursor)}if(g.opacity){if(this.helper.css("opacity")){this._storedOpacity=this.helper.css("opacity")}this.helper.css("opacity",g.opacity)}if(g.zIndex){if(this.helper.css("zIndex")){this._storedZIndex=this.helper.css("zIndex")}this.helper.css("zIndex",g.zIndex)}if(this.scrollParent[0]!=document&&this.scrollParent[0].tagName!="HTML"){this.overflowOffset=this.scrollParent.offset()}this._trigger("start",e,this._uiHash());if(!this._preserveHelperProportions){this._cacheHelperProportions()}if(!b){for(var d=this.containers.length-1;d>=0;d--){this.containers[d]._trigger("activate",e,c._uiHash(this))}}if(a.ui.ddmanager){a.ui.ddmanager.current=this}if(a.ui.ddmanager&&!g.dropBehaviour){a.ui.ddmanager.prepareOffsets(this,e)}this.dragging=true;this.helper.addClass(g.cssNamespace+"-sortable-helper");this._mouseDrag(e);return true},_mouseDrag:function(f){this.position=this._generatePosition(f);this.positionAbs=this._convertPositionTo("absolute");if(!this.lastPositionAbs){this.lastPositionAbs=this.positionAbs}if(this.options.scroll){var g=this.options,b=false;if(this.scrollParent[0]!=document&&this.scrollParent[0].tagName!="HTML"){if((this.overflowOffset.top+this.scrollParent[0].offsetHeight)-f.pageY<g.scrollSensitivity){this.scrollParent[0].scrollTop=b=this.scrollParent[0].scrollTop+g.scrollSpeed}else{if(f.pageY-this.overflowOffset.top<g.scrollSensitivity){this.scrollParent[0].scrollTop=b=this.scrollParent[0].scrollTop-g.scrollSpeed}}if((this.overflowOffset.left+this.scrollParent[0].offsetWidth)-f.pageX<g.scrollSensitivity){this.scrollParent[0].scrollLeft=b=this.scrollParent[0].scrollLeft+g.scrollSpeed}else{if(f.pageX-this.overflowOffset.left<g.scrollSensitivity){this.scrollParent[0].scrollLeft=b=this.scrollParent[0].scrollLeft-g.scrollSpeed}}}else{if(f.pageY-a(document).scrollTop()<g.scrollSensitivity){b=a(document).scrollTop(a(document).scrollTop()-g.scrollSpeed)}else{if(a(window).height()-(f.pageY-a(document).scrollTop())<g.scrollSensitivity){b=a(document).scrollTop(a(document).scrollTop()+g.scrollSpeed)}}if(f.pageX-a(document).scrollLeft()<g.scrollSensitivity){b=a(document).scrollLeft(a(document).scrollLeft()-g.scrollSpeed)}else{if(a(window).width()-(f.pageX-a(document).scrollLeft())<g.scrollSensitivity){b=a(document).scrollLeft(a(document).scrollLeft()+g.scrollSpeed)}}}if(b!==false&&a.ui.ddmanager&&!g.dropBehaviour){a.ui.ddmanager.prepareOffsets(this,f)}}this.positionAbs=this._convertPositionTo("absolute");if(!this.options.axis||this.options.axis!="y"){this.helper[0].style.left=this.position.left+"px"}if(!this.options.axis||this.options.axis!="x"){this.helper[0].style.top=this.position.top+"px"}for(var d=this.items.length-1;d>=0;d--){var e=this.items[d],c=e.item[0],h=this._intersectsWithPointer(e);if(!h){continue}if(c!=this.currentItem[0]&&this.placeholder[h==1?"next":"prev"]()[0]!=c&&!a.ui.contains(this.placeholder[0],c)&&(this.options.type=="semi-dynamic"?!a.ui.contains(this.element[0],c):true)){this.direction=h==1?"down":"up";if(this.options.tolerance=="pointer"||this._intersectsWithSides(e)){this.options.sortIndicator.call(this,f,e)}else{break}this._trigger("change",f,this._uiHash());break}}this._contactContainers(f);if(a.ui.ddmanager){a.ui.ddmanager.drag(this,f)}this._trigger("sort",f,this._uiHash());this.lastPositionAbs=this.positionAbs;return false},_mouseStop:function(c,d){if(!c){return}if(a.ui.ddmanager&&!this.options.dropBehaviour){a.ui.ddmanager.drop(this,c)}if(this.options.revert){var b=this;var e=b.placeholder.offset();b.reverting=true;a(this.helper).animate({left:e.left-this.offset.parent.left-b.margins.left+(this.offsetParent[0]==document.body?0:this.offsetParent[0].scrollLeft),top:e.top-this.offset.parent.top-b.margins.top+(this.offsetParent[0]==document.body?0:this.offsetParent[0].scrollTop)},parseInt(this.options.revert,10)||500,function(){b._clear(c)})}else{this._clear(c,d)}return false},cancel:function(){var b=this;if(this.dragging){this._mouseUp();if(this.options.helper=="original"){this.currentItem.css(this._storedCSS).removeClass(this.options.cssNamespace+"-sortable-helper")}else{this.currentItem.show()}for(var c=this.containers.length-1;c>=0;c--){this.containers[c]._trigger("deactivate",null,b._uiHash(this));if(this.containers[c].containerCache.over){this.containers[c]._trigger("out",null,b._uiHash(this));this.containers[c].containerCache.over=0}}}if(this.placeholder[0].parentNode){this.placeholder[0].parentNode.removeChild(this.placeholder[0])}if(this.options.helper!="original"&&this.helper&&this.helper[0].parentNode){this.helper.remove()}a.extend(this,{helper:null,dragging:false,reverting:false,_noFinalSort:null});if(this.domPosition.prev){a(this.domPosition.prev).after(this.currentItem)}else{a(this.domPosition.parent).prepend(this.currentItem)}return true},serialize:function(d){var b=this._getItemsAsjQuery(d&&d.connected);var c=[];d=d||{};a(b).each(function(){var e=(a(d.item||this).attr(d.attribute||"id")||"").match(d.expression||(/(.+)[-=_](.+)/));if(e){c.push((d.key||e[1]+"[]")+"="+(d.key&&d.expression?e[1]:e[2]))}});return c.join("&")},toArray:function(d){var b=this._getItemsAsjQuery(d&&d.connected);var c=[];d=d||{};b.each(function(){c.push(a(d.item||this).attr(d.attribute||"id")||"")});return c},_intersectsWith:function(m){var e=this.positionAbs.left,d=e+this.helperProportions.width,k=this.positionAbs.top,j=k+this.helperProportions.height;var f=m.left,c=f+m.width,n=m.top,i=n+m.height;var o=this.offset.click.top,h=this.offset.click.left;var g=(k+o)>n&&(k+o)<i&&(e+h)>f&&(e+h)<c;if(this.options.tolerance=="pointer"||this.options.forcePointerForContainers||(this.options.tolerance!="pointer"&&this.helperProportions[this.floating?"width":"height"]>m[this.floating?"width":"height"])){return g}else{return(f<e+(this.helperProportions.width/2)&&d-(this.helperProportions.width/2)<c&&n<k+(this.helperProportions.height/2)&&j-(this.helperProportions.height/2)<i)}},_intersectsWithPointer:function(d){var e=a.ui.isOverAxis(this.positionAbs.top+this.offset.click.top,d.top,d.height),c=a.ui.isOverAxis(this.positionAbs.left+this.offset.click.left,d.left,d.width),g=e&&c,b=this._getDragVerticalDirection(),f=this._getDragHorizontalDirection();if(!g){return false}return this.floating?(((f&&f=="right")||b=="down")?2:1):(b&&(b=="down"?2:1))},_intersectsWithSides:function(e){var c=a.ui.isOverAxis(this.positionAbs.top+this.offset.click.top,e.top+(e.height/2),e.height),d=a.ui.isOverAxis(this.positionAbs.left+this.offset.click.left,e.left+(e.width/2),e.width),b=this._getDragVerticalDirection(),f=this._getDragHorizontalDirection();if(this.floating&&f){return((f=="right"&&d)||(f=="left"&&!d))}else{return b&&((b=="down"&&c)||(b=="up"&&!c))}},_getDragVerticalDirection:function(){var b=this.positionAbs.top-this.lastPositionAbs.top;return b!=0&&(b>0?"down":"up")},_getDragHorizontalDirection:function(){var b=this.positionAbs.left-this.lastPositionAbs.left;return b!=0&&(b>0?"right":"left")},refresh:function(b){this._refreshItems(b);this.refreshPositions()},_getItemsAsjQuery:function(b){var l=this;var g=[];var e=[];if(this.options.connectWith&&b){var h=this.options.connectWith.constructor==String?[this.options.connectWith]:this.options.connectWith;for(var d=h.length-1;d>=0;d--){var k=a(h[d]);for(var c=k.length-1;c>=0;c--){var f=a.data(k[c],"sortable");if(f&&f!=this&&!f.options.disabled){e.push([a.isFunction(f.options.items)?f.options.items.call(f.element):a(f.options.items,f.element).not("."+f.options.cssNamespace+"-sortable-helper"),f])}}}}e.push([a.isFunction(this.options.items)?this.options.items.call(this.element,null,{options:this.options,item:this.currentItem}):a(this.options.items,this.element).not("."+this.options.cssNamespace+"-sortable-helper"),this]);for(var d=e.length-1;d>=0;d--){e[d][0].each(function(){g.push(this)})}return a(g)},_removeCurrentsFromItems:function(){var d=this.currentItem.find(":data(sortable-item)");for(var c=0;c<this.items.length;c++){for(var b=0;b<d.length;b++){if(d[b]==this.items[c].item[0]){this.items.splice(c,1)}}}},_refreshItems:function(b){this.items=[];this.containers=[this];var h=this.items;var o=this;var f=[[a.isFunction(this.options.items)?this.options.items.call(this.element[0],b,{item:this.currentItem}):a(this.options.items,this.element),this]];if(this.options.connectWith){for(var e=this.options.connectWith.length-1;e>=0;e--){var l=a(this.options.connectWith[e]);for(var d=l.length-1;d>=0;d--){var g=a.data(l[d],"sortable");if(g&&g!=this&&!g.options.disabled){f.push([a.isFunction(g.options.items)?g.options.items.call(g.element[0],b,{item:this.currentItem}):a(g.options.items,g.element),g]);this.containers.push(g)}}}}for(var e=f.length-1;e>=0;e--){var k=f[e][1];var c=f[e][0];for(var d=0,m=c.length;d<m;d++){var n=a(c[d]);n.data("sortable-item",k);h.push({item:n,instance:k,width:0,height:0,left:0,top:0})}}},refreshPositions:function(b){if(this.offsetParent&&this.helper){this.offset.parent=this._getParentOffset()}for(var d=this.items.length-1;d>=0;d--){var e=this.items[d];if(e.instance!=this.currentContainer&&this.currentContainer&&e.item[0]!=this.currentItem[0]){continue}var c=this.options.toleranceElement?a(this.options.toleranceElement,e.item):e.item;if(!b){if(this.options.accurateIntersection){e.width=c.outerWidth();e.height=c.outerHeight()}else{e.width=c[0].offsetWidth;e.height=c[0].offsetHeight}}var f=c.offset();e.left=f.left;e.top=f.top}if(this.options.custom&&this.options.custom.refreshContainers){this.options.custom.refreshContainers.call(this)}else{for(var d=this.containers.length-1;d>=0;d--){var f=this.containers[d].element.offset();this.containers[d].containerCache.left=f.left;this.containers[d].containerCache.top=f.top;this.containers[d].containerCache.width=this.containers[d].element.outerWidth();this.containers[d].containerCache.height=this.containers[d].element.outerHeight()}}},_createPlaceholder:function(d){var b=d||this,e=b.options;if(!e.placeholder||e.placeholder.constructor==String){var c=e.placeholder;e.placeholder={element:function(){var f=a(document.createElement(b.currentItem[0].nodeName)).addClass(c||b.currentItem[0].className+" "+b.options.cssNamespace+"-sortable-placeholder").removeClass(b.options.cssNamespace+"-sortable-helper")[0];if(!c){f.style.visibility="hidden"}return f},update:function(f,g){if(c&&!e.forcePlaceholderSize){return}if(!g.height()){g.height(b.currentItem.innerHeight()-parseInt(b.currentItem.css("paddingTop")||0,10)-parseInt(b.currentItem.css("paddingBottom")||0,10))}if(!g.width()){g.width(b.currentItem.innerWidth()-parseInt(b.currentItem.css("paddingLeft")||0,10)-parseInt(b.currentItem.css("paddingRight")||0,10))}}}}b.placeholder=a(e.placeholder.element.call(b.element,b.currentItem));b.currentItem.after(b.placeholder);e.placeholder.update(b,b.placeholder)},_contactContainers:function(d){for(var c=this.containers.length-1;c>=0;c--){if(this._intersectsWith(this.containers[c].containerCache)){if(!this.containers[c].containerCache.over){if(this.currentContainer!=this.containers[c]){var h=10000;var g=null;var e=this.positionAbs[this.containers[c].floating?"left":"top"];for(var b=this.items.length-1;b>=0;b--){if(!a.ui.contains(this.containers[c].element[0],this.items[b].item[0])){continue}var f=this.items[b][this.containers[c].floating?"left":"top"];if(Math.abs(f-e)<h){h=Math.abs(f-e);g=this.items[b]}}if(!g&&!this.options.dropOnEmpty){continue}this.currentContainer=this.containers[c];g?this.options.sortIndicator.call(this,d,g,null,true):this.options.sortIndicator.call(this,d,null,this.containers[c].element,true);this._trigger("change",d,this._uiHash());this.containers[c]._trigger("change",d,this._uiHash(this));this.options.placeholder.update(this.currentContainer,this.placeholder)}this.containers[c]._trigger("over",d,this._uiHash(this));this.containers[c].containerCache.over=1}}else{if(this.containers[c].containerCache.over){this.containers[c]._trigger("out",d,this._uiHash(this));this.containers[c].containerCache.over=0}}}},_createHelper:function(c){var d=this.options;var b=a.isFunction(d.helper)?a(d.helper.apply(this.element[0],[c,this.currentItem])):(d.helper=="clone"?this.currentItem.clone():this.currentItem);if(!b.parents("body").length){a(d.appendTo!="parent"?d.appendTo:this.currentItem[0].parentNode)[0].appendChild(b[0])}if(b[0]==this.currentItem[0]){this._storedCSS={width:this.currentItem[0].style.width,height:this.currentItem[0].style.height,position:this.currentItem.css("position"),top:this.currentItem.css("top"),left:this.currentItem.css("left")}}if(b[0].style.width==""||d.forceHelperSize){b.width(this.currentItem.width())}if(b[0].style.height==""||d.forceHelperSize){b.height(this.currentItem.height())}return b},_adjustOffsetFromHelper:function(b){if(b.left!=undefined){this.offset.click.left=b.left+this.margins.left}if(b.right!=undefined){this.offset.click.left=this.helperProportions.width-b.right+this.margins.left}if(b.top!=undefined){this.offset.click.top=b.top+this.margins.top}if(b.bottom!=undefined){this.offset.click.top=this.helperProportions.height-b.bottom+this.margins.top}},_getParentOffset:function(){this.offsetParent=this.helper.offsetParent();var b=this.offsetParent.offset();if(this.cssPosition=="absolute"&&this.scrollParent[0]!=document&&a.ui.contains(this.scrollParent[0],this.offsetParent[0])){b.left+=this.scrollParent.scrollLeft();b.top+=this.scrollParent.scrollTop()}if((this.offsetParent[0]==document.body&&a.browser.mozilla)||(this.offsetParent[0].tagName&&this.offsetParent[0].tagName.toLowerCase()=="html"&&a.browser.msie)){b={top:0,left:0}}return{top:b.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:b.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if(this.cssPosition=="relative"){var b=this.currentItem.position();return{top:b.top-(parseInt(this.helper.css("top"),10)||0)+this.scrollParent.scrollTop(),left:b.left-(parseInt(this.helper.css("left"),10)||0)+this.scrollParent.scrollLeft()}}else{return{top:0,left:0}}},_cacheMargins:function(){this.margins={left:(parseInt(this.currentItem.css("marginLeft"),10)||0),top:(parseInt(this.currentItem.css("marginTop"),10)||0)}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var e=this.options;if(e.containment=="parent"){e.containment=this.helper[0].parentNode}if(e.containment=="document"||e.containment=="window"){this.containment=[0-this.offset.relative.left-this.offset.parent.left,0-this.offset.relative.top-this.offset.parent.top,a(e.containment=="document"?document:window).width()-this.helperProportions.width-this.margins.left,(a(e.containment=="document"?document:window).height()||document.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top]}if(!(/^(document|window|parent)$/).test(e.containment)){var c=a(e.containment)[0];var d=a(e.containment).offset();var b=(a(c).css("overflow")!="hidden");this.containment=[d.left+(parseInt(a(c).css("borderLeftWidth"),10)||0)+(parseInt(a(c).css("paddingLeft"),10)||0)-this.margins.left,d.top+(parseInt(a(c).css("borderTopWidth"),10)||0)+(parseInt(a(c).css("paddingTop"),10)||0)-this.margins.top,d.left+(b?Math.max(c.scrollWidth,c.offsetWidth):c.offsetWidth)-(parseInt(a(c).css("borderLeftWidth"),10)||0)-(parseInt(a(c).css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left,d.top+(b?Math.max(c.scrollHeight,c.offsetHeight):c.offsetHeight)-(parseInt(a(c).css("borderTopWidth"),10)||0)-(parseInt(a(c).css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top]}},_convertPositionTo:function(f,h){if(!h){h=this.position}var c=f=="absolute"?1:-1;var e=this.options,b=this.cssPosition=="absolute"&&!(this.scrollParent[0]!=document&&a.ui.contains(this.scrollParent[0],this.offsetParent[0]))?this.offsetParent:this.scrollParent,g=(/(html|body)/i).test(b[0].tagName);return{top:(h.top+this.offset.relative.top*c+this.offset.parent.top*c-(this.cssPosition=="fixed"?-this.scrollParent.scrollTop():(g?0:b.scrollTop()))*c),left:(h.left+this.offset.relative.left*c+this.offset.parent.left*c-(this.cssPosition=="fixed"?-this.scrollParent.scrollLeft():g?0:b.scrollLeft())*c)}},_generatePosition:function(e){var h=this.options,b=this.cssPosition=="absolute"&&!(this.scrollParent[0]!=document&&a.ui.contains(this.scrollParent[0],this.offsetParent[0]))?this.offsetParent:this.scrollParent,i=(/(html|body)/i).test(b[0].tagName);if(this.cssPosition=="relative"&&!(this.scrollParent[0]!=document&&this.scrollParent[0]!=this.offsetParent[0])){this.offset.relative=this._getRelativeOffset()}var d=e.pageX;var c=e.pageY;if(this.originalPosition){if(this.containment){if(e.pageX-this.offset.click.left<this.containment[0]){d=this.containment[0]+this.offset.click.left}if(e.pageY-this.offset.click.top<this.containment[1]){c=this.containment[1]+this.offset.click.top}if(e.pageX-this.offset.click.left>this.containment[2]){d=this.containment[2]+this.offset.click.left}if(e.pageY-this.offset.click.top>this.containment[3]){c=this.containment[3]+this.offset.click.top}}if(h.grid){var g=this.originalPageY+Math.round((c-this.originalPageY)/h.grid[1])*h.grid[1];c=this.containment?(!(g-this.offset.click.top<this.containment[1]||g-this.offset.click.top>this.containment[3])?g:(!(g-this.offset.click.top<this.containment[1])?g-h.grid[1]:g+h.grid[1])):g;var f=this.originalPageX+Math.round((d-this.originalPageX)/h.grid[0])*h.grid[0];d=this.containment?(!(f-this.offset.click.left<this.containment[0]||f-this.offset.click.left>this.containment[2])?f:(!(f-this.offset.click.left<this.containment[0])?f-h.grid[0]:f+h.grid[0])):f}}return{top:(c-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+(this.cssPosition=="fixed"?-this.scrollParent.scrollTop():(i?0:b.scrollTop()))),left:(d-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+(this.cssPosition=="fixed"?-this.scrollParent.scrollLeft():i?0:b.scrollLeft()))}},_rearrange:function(g,f,c,e){c?c[0].appendChild(this.placeholder[0]):f.item[0].parentNode.insertBefore(this.placeholder[0],(this.direction=="down"?f.item[0]:f.item[0].nextSibling));this.counter=this.counter?++this.counter:1;var d=this,b=this.counter;window.setTimeout(function(){if(b==d.counter){d.refreshPositions(!e)}},0)},_clear:function(d,e){this.reverting=false;var f=[],b=this;if(!this._noFinalSort){this.placeholder.before(this.currentItem)}this._noFinalSort=null;if(this.helper[0]==this.currentItem[0]){for(var c in this._storedCSS){if(this._storedCSS[c]=="auto"||this._storedCSS[c]=="static"){this._storedCSS[c]=""}}this.currentItem.css(this._storedCSS).removeClass(this.options.cssNamespace+"-sortable-helper")}else{this.currentItem.show()}if(this.fromOutside&&!e){f.push(function(g){this._trigger("receive",g,this._uiHash(this.fromOutside))})}if((this.fromOutside||this.domPosition.prev!=this.currentItem.prev().not("."+this.options.cssNamespace+"-sortable-helper")[0]||this.domPosition.parent!=this.currentItem.parent()[0])&&!e){f.push(function(g){this._trigger("update",g,this._uiHash())})}if(!a.ui.contains(this.element[0],this.currentItem[0])){if(!e){f.push(function(g){this._trigger("remove",g,this._uiHash())})}for(var c=this.containers.length-1;c>=0;c--){if(a.ui.contains(this.containers[c].element[0],this.currentItem[0])&&!e){f.push((function(g){return function(h){g._trigger("receive",h,this._uiHash(this))}}).call(this,this.containers[c]));f.push((function(g){return function(h){g._trigger("update",h,this._uiHash(this))}}).call(this,this.containers[c]))}}}for(var c=this.containers.length-1;c>=0;c--){if(!e){f.push((function(g){return function(h){g._trigger("deactivate",h,this._uiHash(this))}}).call(this,this.containers[c]))}if(this.containers[c].containerCache.over){f.push((function(g){return function(h){g._trigger("out",h,this._uiHash(this))}}).call(this,this.containers[c]));this.containers[c].containerCache.over=0}}if(this._storedCursor){a("body").css("cursor",this._storedCursor)}if(this._storedOpacity){this.helper.css("opacity",this._storedCursor)}if(this._storedZIndex){this.helper.css("zIndex",this._storedZIndex=="auto"?"":this._storedZIndex)}this.dragging=false;if(this.cancelHelperRemoval){if(!e){this._trigger("beforeStop",d,this._uiHash());for(var c=0;c<f.length;c++){f[c].call(this,d)}this._trigger("stop",d,this._uiHash())}return false}if(!e){this._trigger("beforeStop",d,this._uiHash())}this.placeholder[0].parentNode.removeChild(this.placeholder[0]);if(this.helper[0]!=this.currentItem[0]){this.helper.remove()}this.helper=null;if(!e){for(var c=0;c<f.length;c++){f[c].call(this,d)}this._trigger("stop",d,this._uiHash())}this.fromOutside=false;return true},_trigger:function(){if(a.widget.prototype._trigger.apply(this,arguments)===false){this.cancel()}},_uiHash:function(c){var b=c||this;return{helper:b.helper,placeholder:b.placeholder||a([]),position:b.position,absolutePosition:b.positionAbs,offset:b.positionAbs,item:b.currentItem,sender:c?c.element:null}}}));a.extend(a.ui.sortable,{getter:"serialize toArray",version:"1.6rc6",defaults:{accurateIntersection:true,appendTo:"parent",cancel:":input,option",connectWith:false,cssNamespace:"ui",delay:0,distance:1,dropOnEmpty:true,forcePlaceholderSize:false,forceHelperSize:false,handle:false,helper:"original",items:"> *",placeholder:false,scope:"default",scroll:true,scrollSensitivity:20,scrollSpeed:20,sortIndicator:a.ui.sortable.prototype._rearrange,tolerance:"intersect",zIndex:1000}})})(jQuery);;/**
 * Copyright (c) 2008 Kelvin Luck (http://www.kelvinluck.com/)
 * Dual licensed under the MIT (http://www.opensource.org/licenses/mit-license.php) 
 * and GPL (http://www.opensource.org/licenses/gpl-license.php) licenses.
 *
 * $Id: jquery.datePicker.js 70 2009-04-05 19:25:15Z kelvin.luck $
 **/

(function($){
    
	$.fn.extend({
/**
 * Render a calendar table into any matched elements.
 * 
 * @param Object s (optional) Customize your calendars.
 * @option Number month The month to render (NOTE that months are zero based). Default is today's month.
 * @option Number year The year to render. Default is today's year.
 * @option Function renderCallback A reference to a function that is called as each cell is rendered and which can add classes and event listeners to the created nodes. Default is no callback.
 * @option Number showHeader Whether or not to show the header row, possible values are: $.dpConst.SHOW_HEADER_NONE (no header), $.dpConst.SHOW_HEADER_SHORT (first letter of each day) and $.dpConst.SHOW_HEADER_LONG (full name of each day). Default is $.dpConst.SHOW_HEADER_SHORT.
 * @option String hoverClass The class to attach to each cell when you hover over it (to allow you to use hover effects in IE6 which doesn't support the :hover pseudo-class on elements other than links). Default is dp-hover. Pass false if you don't want a hover class.
 * @type jQuery
 * @name renderCalendar
 * @cat plugins/datePicker
 * @author Kelvin Luck (http://www.kelvinluck.com/)
 *
 * @example $('#calendar-me').renderCalendar({month:0, year:2007});
 * @desc Renders a calendar displaying January 2007 into the element with an id of calendar-me.
 *
 * @example
 * var testCallback = function($td, thisDate, month, year)
 * {
 * if ($td.is('.current-month') && thisDate.getDay() == 4) {
 *		var d = thisDate.getDate();
 *		$td.bind(
 *			'click',
 *			function()
 *			{
 *				alert('You clicked on ' + d + '/' + (Number(month)+1) + '/' + year);
 *			}
 *		).addClass('thursday');
 *	} else if (thisDate.getDay() == 5) {
 *		$td.html('Friday the ' + $td.html() + 'th');
 *	}
 * }
 * $('#calendar-me').renderCalendar({month:0, year:2007, renderCallback:testCallback});
 * 
 * @desc Renders a calendar displaying January 2007 into the element with an id of calendar-me. Every Thursday in the current month has a class of "thursday" applied to it, is clickable and shows an alert when clicked. Every Friday on the calendar has the number inside replaced with text.
 **/
		renderCalendar  :   function(s)
		{
			var dc = function(a)
			{
				return document.createElement(a);
			};

			s = $.extend({}, $.fn.datePicker.defaults, s);
			
			if (s.showHeader != $.dpConst.SHOW_HEADER_NONE) {
				var headRow = $(dc('tr'));
				for (var i=Date.firstDayOfWeek; i<Date.firstDayOfWeek+7; i++) {
					var weekday = i%7;
					var day = Date.dayNames[weekday];
					headRow.append(
						jQuery(dc('th')).attr({'scope':'col', 'abbr':day, 'title':day, 'class':(weekday == 0 || weekday == 6 ? 'weekend' : 'weekday')}).html(s.showHeader == $.dpConst.SHOW_HEADER_SHORT ? day.substr(0, 1) : day)
					);
				}
			};
			
			var calendarTable = $(dc('table'))
									.attr(
										{
											'cellspacing':2
										}
									)
									.addClass('jCalendar')
									.append(
										(s.showHeader != $.dpConst.SHOW_HEADER_NONE ? 
											$(dc('thead'))
												.append(headRow)
											:
											dc('thead')
										)
									);
			var tbody = $(dc('tbody'));
			
			var today = (new Date()).zeroTime();
			
			var month = s.month == undefined ? today.getMonth() : s.month;
			var year = s.year || today.getFullYear();
			
			var currentDate = new Date(year, month, 1);
			
			
			var firstDayOffset = Date.firstDayOfWeek - currentDate.getDay() + 1;
			if (firstDayOffset > 1) firstDayOffset -= 7;
			var weeksToDraw = Math.ceil(( (-1*firstDayOffset+1) + currentDate.getDaysInMonth() ) /7);
			currentDate.addDays(firstDayOffset-1);
			
			var doHover = function(firstDayInBounds)
			{
				return function()
				{
					if (s.hoverClass) {
						var $this = $(this);
						if (!s.selectWeek) {
							$this.addClass(s.hoverClass);
						} else if (firstDayInBounds && !$this.is('.disabled')) {
							$this.parent().addClass('activeWeekHover');
						}
					}
				}
			};
			var unHover = function()
			{
				if (s.hoverClass) {
					var $this = $(this);
					$this.removeClass(s.hoverClass);
					$this.parent().removeClass('activeWeekHover');
				}
			};

			var w = 0;
			while (w++<weeksToDraw) {
				var r = jQuery(dc('tr'));
				var firstDayInBounds = s.dpController ? currentDate > s.dpController.startDate : false;
				for (var i=0; i<7; i++) {
					var thisMonth = currentDate.getMonth() == month;
					var d = $(dc('td'))
								.text(currentDate.getDate() + '')
								.addClass((thisMonth ? 'current-month ' : 'other-month ') +
													(currentDate.isWeekend() ? 'weekend ' : 'weekday ') +
													(thisMonth && currentDate.getTime() == today.getTime() ? 'today ' : '')
								)
								.data('datePickerDate', currentDate.asString())
								.hover(doHover(firstDayInBounds), unHover)
							;
					r.append(d);
					if (s.renderCallback) {
						s.renderCallback(d, currentDate, month, year);
					}
					// addDays(1) fails in some locales due to daylight savings. See issue 39.
					//currentDate.addDays(1);
					currentDate = new Date(currentDate.getFullYear(), currentDate.getMonth(), currentDate.getDate()+1);
				}
				tbody.append(r);
			}
			calendarTable.append(tbody);
			
			return this.each(
				function()
				{
					$(this).empty().append(calendarTable);
				}
			);
		},
/**
 * Create a datePicker associated with each of the matched elements.
 *
 * The matched element will receive a few custom events with the following signatures:
 *
 * dateSelected(event, date, $td, status)
 * Triggered when a date is selected. event is a reference to the event, date is the Date selected, $td is a jquery object wrapped around the TD that was clicked on and status is whether the date was selected (true) or deselected (false)
 * 
 * dpClosed(event, selected)
 * Triggered when the date picker is closed. event is a reference to the event and selected is an Array containing Date objects.
 *
 * dpMonthChanged(event, displayedMonth, displayedYear)
 * Triggered when the month of the popped up calendar is changed. event is a reference to the event, displayedMonth is the number of the month now displayed (zero based) and displayedYear is the year of the month.
 *
 * dpDisplayed(event, $datePickerDiv)
 * Triggered when the date picker is created. $datePickerDiv is the div containing the date picker. Use this event to add custom content/ listeners to the popped up date picker.
 *
 * @param Object s (optional) Customize your date pickers.
 * @option Number month The month to render when the date picker is opened (NOTE that months are zero based). Default is today's month.
 * @option Number year The year to render when the date picker is opened. Default is today's year.
 * @option String startDate The first date date can be selected.
 * @option String endDate The last date that can be selected.
 * @option Boolean inline Whether to create the datePicker as inline (e.g. always on the page) or as a model popup. Default is false (== modal popup)
 * @option Boolean createButton Whether to create a .dp-choose-date anchor directly after the matched element which when clicked will trigger the showing of the date picker. Default is true.
 * @option Boolean showYearNavigation Whether to display buttons which allow the user to navigate through the months a year at a time. Default is true.
 * @option Boolean closeOnSelect Whether to close the date picker when a date is selected. Default is true.
 * @option Boolean displayClose Whether to create a "Close" button within the date picker popup. Default is false.
 * @option Boolean selectMultiple Whether a user should be able to select multiple dates with this date picker. Default is false.
 * @option Number numSelectable The maximum number of dates that can be selected where selectMultiple is true. Default is a very high number.
 * @option Boolean clickInput If the matched element is an input type="text" and this option is true then clicking on the input will cause the date picker to appear.
 * @option Boolean rememberViewedMonth Whether the datePicker should remember the last viewed month and open on it. If false then the date picker will always open with the month for the first selected date visible.
 * @option Boolean selectWeek Whether to select a complete week at a time...
 * @option Number verticalPosition The vertical alignment of the popped up date picker to the matched element. One of $.dpConst.POS_TOP and $.dpConst.POS_BOTTOM. Default is $.dpConst.POS_TOP.
 * @option Number horizontalPosition The horizontal alignment of the popped up date picker to the matched element. One of $.dpConst.POS_LEFT and $.dpConst.POS_RIGHT.
 * @option Number verticalOffset The number of pixels offset from the defined verticalPosition of this date picker that it should pop up in. Default in 0.
 * @option Number horizontalOffset The number of pixels offset from the defined horizontalPosition of this date picker that it should pop up in. Default in 0.
 * @option (Function|Array) renderCallback A reference to a function (or an array of seperate functions) that is called as each cell is rendered and which can add classes and event listeners to the created nodes. Each callback function will receive four arguments; a jquery object wrapping the created TD, a Date object containing the date this TD represents, a number giving the currently rendered month and a number giving the currently rendered year. Default is no callback.
 * @option String hoverClass The class to attach to each cell when you hover over it (to allow you to use hover effects in IE6 which doesn't support the :hover pseudo-class on elements other than links). Default is dp-hover. Pass false if you don't want a hover class.
 * @type jQuery
 * @name datePicker
 * @cat plugins/datePicker
 * @author Kelvin Luck (http://www.kelvinluck.com/)
 *
 * @example $('input.date-picker').datePicker();
 * @desc Creates a date picker button next to all matched input elements. When the button is clicked on the value of the selected date will be placed in the corresponding input (formatted according to Date.format).
 *
 * @example demo/index.html
 * @desc See the projects homepage for many more complex examples...
 **/
		datePicker : function(s)
		{			
			if (!$.event._dpCache) $.event._dpCache = [];
			
			// initialise the date picker controller with the relevant settings...
			s = $.extend({}, $.fn.datePicker.defaults, s);
			
			return this.each(
				function()
				{
					var $this = $(this);
					var alreadyExists = true;
					
					if (!this._dpId) {
						this._dpId = $.event.guid++;
						$.event._dpCache[this._dpId] = new DatePicker(this);
						alreadyExists = false;
					}
					
					if (s.inline) {
						s.createButton = false;
						s.displayClose = false;
						s.closeOnSelect = false;
						$this.empty();
					}
					
					var controller = $.event._dpCache[this._dpId];
					
					controller.init(s);
					
					if (!alreadyExists && s.createButton) {
						// create it!
						controller.button = $('<a href="#" class="dp-choose-date" title="' + $.dpText.TEXT_CHOOSE_DATE + '">' + $.dpText.TEXT_CHOOSE_DATE + '</a>')
								.bind(
									'click',
									function()
									{
										$this.dpDisplay(this);
										this.blur();
										return false;
									}
								);
						$this.after(controller.button);
					}
					
					if (!alreadyExists && $this.is(':text')) {
						$this
							.bind(
								'dateSelected',
								function(e, selectedDate, $td)
								{
									this.value = selectedDate.asString();
								}
							).bind(
								'change',
								function()
								{
									if (this.value == '') {
										controller.clearSelected();
									} else {
										var d = Date.fromString(this.value);
										if (d) {
											controller.setSelected(d, true, true);
										}
									}
								}
							);
						if (s.clickInput) {
							$this.bind(
								'click',
								function()
								{
									// The change event doesn't happen until the input loses focus so we need to manually trigger it...
									$this.trigger('change');
									$this.dpDisplay();
								}
							);
						}
						var d = Date.fromString(this.value);
						if (this.value != '' && d) {
							controller.setSelected(d, true, true);
						}
					}
					
					$this.addClass('dp-applied');
					
				}
			)
		},
/**
 * Disables or enables this date picker
 *
 * @param Boolean s Whether to disable (true) or enable (false) this datePicker
 * @type jQuery
 * @name dpSetDisabled
 * @cat plugins/datePicker
 * @author Kelvin Luck (http://www.kelvinluck.com/)
 *
 * @example $('.date-picker').datePicker();
 * $('.date-picker').dpSetDisabled(true);
 * @desc Prevents this date picker from displaying and adds a class of dp-disabled to it (and it's associated button if it has one) for styling purposes. If the matched element is an input field then it will also set the disabled attribute to stop people directly editing the field.
 **/
		dpSetDisabled : function(s)
		{
			return _w.call(this, 'setDisabled', s);
		},
/**
 * Updates the first selectable date for any date pickers on any matched elements.
 *
 * @param String d A string representing the first selectable date (formatted according to Date.format).
 * @type jQuery
 * @name dpSetStartDate
 * @cat plugins/datePicker
 * @author Kelvin Luck (http://www.kelvinluck.com/)
 *
 * @example $('.date-picker').datePicker();
 * $('.date-picker').dpSetStartDate('01/01/2000');
 * @desc Creates a date picker associated with all elements with a class of "date-picker" then sets the first selectable date for each of these to the first day of the millenium.
 **/
		dpSetStartDate : function(d)
		{
			return _w.call(this, 'setStartDate', d);
		},
/**
 * Updates the last selectable date for any date pickers on any matched elements.
 *
 * @param String d A string representing the last selectable date (formatted according to Date.format).
 * @type jQuery
 * @name dpSetEndDate
 * @cat plugins/datePicker
 * @author Kelvin Luck (http://www.kelvinluck.com/)
 *
 * @example $('.date-picker').datePicker();
 * $('.date-picker').dpSetEndDate('01/01/2010');
 * @desc Creates a date picker associated with all elements with a class of "date-picker" then sets the last selectable date for each of these to the first Janurary 2010.
 **/
		dpSetEndDate : function(d)
		{
			return _w.call(this, 'setEndDate', d);
		},
/**
 * Gets a list of Dates currently selected by this datePicker. This will be an empty array if no dates are currently selected or NULL if there is no datePicker associated with the matched element.
 *
 * @type Array
 * @name dpGetSelected
 * @cat plugins/datePicker
 * @author Kelvin Luck (http://www.kelvinluck.com/)
 *
 * @example $('.date-picker').datePicker();
 * alert($('.date-picker').dpGetSelected());
 * @desc Will alert an empty array (as nothing is selected yet)
 **/
		dpGetSelected : function()
		{
			var c = _getController(this[0]);
			if (c) {
				return c.getSelected();
			}
			return null;
		},
/**
 * Selects or deselects a date on any matched element's date pickers. Deselcting is only useful on date pickers where selectMultiple==true. Selecting will only work if the passed date is within the startDate and endDate boundries for a given date picker.
 *
 * @param String d A string representing the date you want to select (formatted according to Date.format).
 * @param Boolean v Whether you want to select (true) or deselect (false) this date. Optional - default = true.
 * @param Boolean m Whether you want the date picker to open up on the month of this date when it is next opened. Optional - default = true.
 * @param Boolean e Whether you want the date picker to dispatch events related to this change of selection. Optional - default = true.
 * @type jQuery
 * @name dpSetSelected
 * @cat plugins/datePicker
 * @author Kelvin Luck (http://www.kelvinluck.com/)
 *
 * @example $('.date-picker').datePicker();
 * $('.date-picker').dpSetSelected('01/01/2010');
 * @desc Creates a date picker associated with all elements with a class of "date-picker" then sets the selected date on these date pickers to the first Janurary 2010. When the date picker is next opened it will display Janurary 2010.
 **/
		dpSetSelected : function(d, v, m, e)
		{
			if (v == undefined) v=true;
			if (m == undefined) m=true;
			if (e == undefined) e=true;
			return _w.call(this, 'setSelected', Date.fromString(d), v, m, e);
		},
/**
 * Sets the month that will be displayed when the date picker is next opened. If the passed month is before startDate then the month containing startDate will be displayed instead. If the passed month is after endDate then the month containing the endDate will be displayed instead.
 *
 * @param Number m The month you want the date picker to display. Optional - defaults to the currently displayed month.
 * @param Number y The year you want the date picker to display. Optional - defaults to the currently displayed year.
 * @type jQuery
 * @name dpSetDisplayedMonth
 * @cat plugins/datePicker
 * @author Kelvin Luck (http://www.kelvinluck.com/)
 *
 * @example $('.date-picker').datePicker();
 * $('.date-picker').dpSetDisplayedMonth(10, 2008);
 * @desc Creates a date picker associated with all elements with a class of "date-picker" then sets the selected date on these date pickers to the first Janurary 2010. When the date picker is next opened it will display Janurary 2010.
 **/
		dpSetDisplayedMonth : function(m, y)
		{
			return _w.call(this, 'setDisplayedMonth', Number(m), Number(y), true);
		},
/**
 * Displays the date picker associated with the matched elements. Since only one date picker can be displayed at once then the date picker associated with the last matched element will be the one that is displayed.
 *
 * @param HTMLElement e An element that you want the date picker to pop up relative in position to. Optional - default behaviour is to pop up next to the element associated with this date picker.
 * @type jQuery
 * @name dpDisplay
 * @cat plugins/datePicker
 * @author Kelvin Luck (http://www.kelvinluck.com/)
 *
 * @example $('#date-picker').datePicker();
 * $('#date-picker').dpDisplay();
 * @desc Creates a date picker associated with the element with an id of date-picker and then causes it to pop up.
 **/
		dpDisplay : function(e)
		{
			return _w.call(this, 'display', e);
		},
/**
 * Sets a function or array of functions that is called when each TD of the date picker popup is rendered to the page
 *
 * @param (Function|Array) a A function or an array of functions that are called when each td is rendered. Each function will receive four arguments; a jquery object wrapping the created TD, a Date object containing the date this TD represents, a number giving the currently rendered month and a number giving the currently rendered year.
 * @type jQuery
 * @name dpSetRenderCallback
 * @cat plugins/datePicker
 * @author Kelvin Luck (http://www.kelvinluck.com/)
 *
 * @example $('#date-picker').datePicker();
 * $('#date-picker').dpSetRenderCallback(function($td, thisDate, month, year)
 * {
 * 	// do stuff as each td is rendered dependant on the date in the td and the displayed month and year
 * });
 * @desc Creates a date picker associated with the element with an id of date-picker and then creates a function which is called as each td is rendered when this date picker is displayed.
 **/
		dpSetRenderCallback : function(a)
		{
			return _w.call(this, 'setRenderCallback', a);
		},
/**
 * Sets the position that the datePicker will pop up (relative to it's associated element)
 *
 * @param Number v The vertical alignment of the created date picker to it's associated element. Possible values are $.dpConst.POS_TOP and $.dpConst.POS_BOTTOM
 * @param Number h The horizontal alignment of the created date picker to it's associated element. Possible values are $.dpConst.POS_LEFT and $.dpConst.POS_RIGHT
 * @type jQuery
 * @name dpSetPosition
 * @cat plugins/datePicker
 * @author Kelvin Luck (http://www.kelvinluck.com/)
 *
 * @example $('#date-picker').datePicker();
 * $('#date-picker').dpSetPosition($.dpConst.POS_BOTTOM, $.dpConst.POS_RIGHT);
 * @desc Creates a date picker associated with the element with an id of date-picker and makes it so that when this date picker pops up it will be bottom and right aligned to the #date-picker element.
 **/
		dpSetPosition : function(v, h)
		{
			return _w.call(this, 'setPosition', v, h);
		},
/**
 * Sets the offset that the popped up date picker will have from it's default position relative to it's associated element (as set by dpSetPosition)
 *
 * @param Number v The vertical offset of the created date picker.
 * @param Number h The horizontal offset of the created date picker.
 * @type jQuery
 * @name dpSetOffset
 * @cat plugins/datePicker
 * @author Kelvin Luck (http://www.kelvinluck.com/)
 *
 * @example $('#date-picker').datePicker();
 * $('#date-picker').dpSetOffset(-20, 200);
 * @desc Creates a date picker associated with the element with an id of date-picker and makes it so that when this date picker pops up it will be 20 pixels above and 200 pixels to the right of it's default position.
 **/
		dpSetOffset : function(v, h)
		{
			return _w.call(this, 'setOffset', v, h);
		},
/**
 * Closes the open date picker associated with this element.
 *
 * @type jQuery
 * @name dpClose
 * @cat plugins/datePicker
 * @author Kelvin Luck (http://www.kelvinluck.com/)
 *
 * @example $('.date-pick')
 *		.datePicker()
 *		.bind(
 *			'focus',
 *			function()
 *			{
 *				$(this).dpDisplay();
 *			}
 *		).bind(
 *			'blur',
 *			function()
 *			{
 *				$(this).dpClose();
 *			}
 *		);
 * @desc Creates a date picker and makes it appear when the relevant element is focused and disappear when it is blurred.
 **/
		dpClose : function()
		{
			return _w.call(this, '_closeCalendar', false, this[0]);
		},
		// private function called on unload to clean up any expandos etc and prevent memory links...
		_dpDestroy : function()
		{
			// TODO - implement this?
		}
	});
	
	// private internal function to cut down on the amount of code needed where we forward
	// dp* methods on the jQuery object on to the relevant DatePicker controllers...
	var _w = function(f, a1, a2, a3, a4)
	{
		return this.each(
			function()
			{
				var c = _getController(this);
				if (c) {
					c[f](a1, a2, a3, a4);
				}
			}
		);
	};
	
	function DatePicker(ele)
	{
		this.ele = ele;
		
		// initial values...
		this.displayedMonth		=	null;
		this.displayedYear		=	null;
		this.startDate			=	null;
		this.endDate			=	null;
		this.showYearNavigation	=	null;
		this.closeOnSelect		=	null;
		this.displayClose		=	null;
		this.rememberViewedMonth=	null;
		this.selectMultiple		=	null;
		this.numSelectable		=	null;
		this.numSelected		=	null;
		this.verticalPosition	=	null;
		this.horizontalPosition	=	null;
		this.verticalOffset		=	null;
		this.horizontalOffset	=	null;
		this.button				=	null;
		this.renderCallback		=	[];
		this.selectedDates		=	{};
		this.inline				=	null;
		this.context			=	'#dp-popup';
		this.settings			=	{};
	};
	$.extend(
		DatePicker.prototype,
		{	
			init : function(s)
			{
				this.setStartDate(s.startDate);
				this.setEndDate(s.endDate);
				this.setDisplayedMonth(Number(s.month), Number(s.year));
				this.setRenderCallback(s.renderCallback);
				this.showYearNavigation = s.showYearNavigation;
				this.closeOnSelect = s.closeOnSelect;
				this.displayClose = s.displayClose;
				this.rememberViewedMonth =	s.rememberViewedMonth;
				this.selectMultiple = s.selectMultiple;
				this.numSelectable = s.selectMultiple ? s.numSelectable : 1;
				this.numSelected = 0;
				this.verticalPosition = s.verticalPosition;
				this.horizontalPosition = s.horizontalPosition;
				this.hoverClass = s.hoverClass;
				this.setOffset(s.verticalOffset, s.horizontalOffset);
				this.inline = s.inline;
				this.settings = s;
				if (this.inline) {
					this.context = this.ele;
					this.display();
				}
			},
			setStartDate : function(d)
			{
				if (d) {
					this.startDate = Date.fromString(d);
				}
				if (!this.startDate) {
					this.startDate = (new Date()).zeroTime();
				}
				this.setDisplayedMonth(this.displayedMonth, this.displayedYear);
			},
			setEndDate : function(d)
			{
				if (d) {
					this.endDate = Date.fromString(d);
				}
				if (!this.endDate) {
					this.endDate = (new Date('12/31/2999')); // using the JS Date.parse function which expects mm/dd/yyyy
				}
				if (this.endDate.getTime() < this.startDate.getTime()) {
					this.endDate = this.startDate;
				}
				this.setDisplayedMonth(this.displayedMonth, this.displayedYear);
			},
			setPosition : function(v, h)
			{
				this.verticalPosition = v;
				this.horizontalPosition = h;
			},
			setOffset : function(v, h)
			{
				this.verticalOffset = parseInt(v) || 0;
				this.horizontalOffset = parseInt(h) || 0;
			},
			setDisabled : function(s)
			{
				$e = $(this.ele);
				$e[s ? 'addClass' : 'removeClass']('dp-disabled');
				if (this.button) {
					$but = $(this.button);
					$but[s ? 'addClass' : 'removeClass']('dp-disabled');
					$but.attr('title', s ? '' : $.dpText.TEXT_CHOOSE_DATE);
				}
				if ($e.is(':text')) {
					$e.attr('disabled', s ? 'disabled' : '');
				}
			},
			setDisplayedMonth : function(m, y, rerender)
			{
				if (this.startDate == undefined || this.endDate == undefined) {
					return;
				}
				var s = new Date(this.startDate.getTime());
				s.setDate(1);
				var e = new Date(this.endDate.getTime());
				e.setDate(1);
				
				var t;
				if ((!m && !y) || (isNaN(m) && isNaN(y))) {
					// no month or year passed - default to current month
					t = new Date().zeroTime();
					t.setDate(1);
				} else if (isNaN(m)) {
					// just year passed in - presume we want the displayedMonth
					t = new Date(y, this.displayedMonth, 1);
				} else if (isNaN(y)) {
					// just month passed in - presume we want the displayedYear
					t = new Date(this.displayedYear, m, 1);
				} else {
					// year and month passed in - that's the date we want!
					t = new Date(y, m, 1)
				}
				// check if the desired date is within the range of our defined startDate and endDate
				if (t.getTime() < s.getTime()) {
					t = s;
				} else if (t.getTime() > e.getTime()) {
					t = e;
				}
				var oldMonth = this.displayedMonth;
				var oldYear = this.displayedYear;
				this.displayedMonth = t.getMonth();
				this.displayedYear = t.getFullYear();

				if (rerender && (this.displayedMonth != oldMonth || this.displayedYear != oldYear))
				{
					this._rerenderCalendar();
					$(this.ele).trigger('dpMonthChanged', [this.displayedMonth, this.displayedYear]);
				}
			},
			setSelected : function(d, v, moveToMonth, dispatchEvents)
			{
				if (d < this.startDate || d > this.endDate) {
					// Don't allow people to select dates outside range...
					return;
				}
				var s = this.settings;
				if (s.selectWeek)
				{
					d = d.addDays(- (d.getDay() - Date.firstDayOfWeek + 7) % 7);
					if (d < this.startDate) // The first day of this week is before the start date so is unselectable...
					{
						return;
					}
				}
				if (v == this.isSelected(d)) // this date is already un/selected
				{
					return;
				}
				if (this.selectMultiple == false) {
					this.clearSelected();
				} else if (v && this.numSelected == this.numSelectable) {
					// can't select any more dates...
					return;
				}
				if (moveToMonth && (this.displayedMonth != d.getMonth() || this.displayedYear != d.getFullYear())) {
					this.setDisplayedMonth(d.getMonth(), d.getFullYear(), true);
				}
				this.selectedDates[d.toString()] = v;
				this.numSelected += v ? 1 : -1;
				var selectorString = 'td.' +( d.getMonth() == this.displayedMonth ? 'current-month' : 'other-month');
				var $td;
				$(selectorString, this.context).each(
					function()
					{
						if ($(this).data('datePickerDate') == d.asString()) {
							$td = $(this);
							if (s.selectWeek)
							{
								$td.parent()[v ? 'addClass' : 'removeClass']('selectedWeek');
							}
							$td[v ? 'addClass' : 'removeClass']('selected'); 
						}
					}
				);
				$('td', this.context).not('.selected')[this.selectMultiple &&  this.numSelected == this.numSelectable ? 'addClass' : 'removeClass']('unselectable');
				
				if (dispatchEvents)
				{
					var s = this.isSelected(d);
					$e = $(this.ele);
					var dClone = Date.fromString(d.asString());
					$e.trigger('dateSelected', [dClone, $td, s]);
					$e.trigger('change');
				}
			},
			isSelected : function(d)
			{
				return this.selectedDates[d.toString()];
			},
			getSelected : function()
			{
				var r = [];
				for(s in this.selectedDates) {
					if (this.selectedDates[s] == true) {
						r.push(Date.parse(s));
					}
				}
				return r;
			},
			clearSelected : function()
			{
				this.selectedDates = {};
				this.numSelected = 0;
				$('td.selected', this.context).removeClass('selected').parent().removeClass('selectedWeek');
			},
			display : function(eleAlignTo)
			{
				if ($(this.ele).is('.dp-disabled')) return;
				
				eleAlignTo = eleAlignTo || this.ele;
				var c = this;
				var $ele = $(eleAlignTo);
				var eleOffset = $ele.offset();
				
				var $createIn;
				var attrs;
				var attrsCalendarHolder;
				var cssRules;
				
				if (c.inline) {
					$createIn = $(this.ele);
					attrs = {
						'id'		:	'calendar-' + this.ele._dpId,
						'class'	:	'dp-popup dp-popup-inline'
					};

					$('.dp-popup', $createIn).remove();
					cssRules = {
					};
				} else {
					$createIn = $('body');
					attrs = {
						'id'		:	'dp-popup',
						'class'	:	'dp-popup'
					};
					cssRules = {
						'top'	:	eleOffset.top + c.verticalOffset,
						'left'	:	eleOffset.left + c.horizontalOffset
					};
					
					var _checkMouse = function(e)
					{
						var el = e.target;
						var cal = $('#dp-popup')[0];
						
						while (true){
							if (el == cal) {
								return true;
							} else if (el == document) {
								c._closeCalendar();
								return false;
							} else {
								el = $(el).parent()[0];
							}
						}
					};
					this._checkMouse = _checkMouse;
					
					c._closeCalendar(true);
					$(document).bind(
						'keydown.datepicker', 
						function(event)
						{
							if (event.keyCode == 27) {
								c._closeCalendar();
							}
						}
					);
				}
				
				if (!c.rememberViewedMonth)
				{
					var selectedDate = this.getSelected()[0];
					if (selectedDate) {
						selectedDate = new Date(selectedDate);
						this.setDisplayedMonth(selectedDate.getMonth(), selectedDate.getFullYear(), false);
					}
				}
				
				$createIn
					.append(
						$('<div></div>')
							.attr(attrs)
							.css(cssRules)
							.append(
//								$('<a href="#" class="selecteee">aaa</a>'),
								$('<h2></h2>'),
								$('<div class="dp-nav-prev"></div>')
									.append(
										$('<a class="dp-nav-prev-year" href="#" title="' + $.dpText.TEXT_PREV_YEAR + '">&lt;&lt;</a>')
											.bind(
												'click',
												function()
												{
													return c._displayNewMonth.call(c, this, 0, -1);
												}
											),
										$('<a class="dp-nav-prev-month" href="#" title="' + $.dpText.TEXT_PREV_MONTH + '">&lt;</a>')
											.bind(
												'click',
												function()
												{
													return c._displayNewMonth.call(c, this, -1, 0);
												}
											)
									),
								$('<div class="dp-nav-next"></div>')
									.append(
										$('<a class="dp-nav-next-year" href="#" title="' + $.dpText.TEXT_NEXT_YEAR + '">&gt;&gt;</a>')
											.bind(
												'click',
												function()
												{
													return c._displayNewMonth.call(c, this, 0, 1);
												}
											),
										$('<a class="dp-nav-next-month" href="#" title="' + $.dpText.TEXT_NEXT_MONTH + '">&gt;</a>')
											.bind(
												'click',
												function()
												{
													return c._displayNewMonth.call(c, this, 1, 0);
												}
											)
									),
								$('<div class="dp-calendar"></div>')
							)
							.bgIframe()
						);
					
				var $pop = this.inline ? $('.dp-popup', this.context) : $('#dp-popup');
				
				if (this.showYearNavigation == false) {
					$('.dp-nav-prev-year, .dp-nav-next-year', c.context).css('display', 'none');
				}
				if (this.displayClose) {
					$pop.append(
						$('<a href="#" id="dp-close">' + $.dpText.TEXT_CLOSE + '</a>')
							.bind(
								'click',
								function()
								{
									c._closeCalendar();
									return false;
								}
							)
					);
				}
				c._renderCalendar();

				$(this.ele).trigger('dpDisplayed', $pop);
				
				if (!c.inline) {
					if (this.verticalPosition == $.dpConst.POS_BOTTOM) {
						$pop.css('top', eleOffset.top + $ele.height() - $pop.height() + c.verticalOffset);
					}
					if (this.horizontalPosition == $.dpConst.POS_RIGHT) {
						$pop.css('left', eleOffset.left + $ele.width() - $pop.width() + c.horizontalOffset);
					}
//					$('.selectee', this.context).focus();
					$(document).bind('mousedown.datepicker', this._checkMouse);
				}
				
			},
			setRenderCallback : function(a)
			{
				if (a == null) return;
				if (a && typeof(a) == 'function') {
					a = [a];
				}
				this.renderCallback = this.renderCallback.concat(a);
			},
			cellRender : function ($td, thisDate, month, year) {
				var c = this.dpController;
				var d = new Date(thisDate.getTime());
				
				// add our click handlers to deal with it when the days are clicked...
				
				$td.bind(
					'click',
					function()
					{
						var $this = $(this);
						if (!$this.is('.disabled')) {
							c.setSelected(d, !$this.is('.selected') || !c.selectMultiple, false, true);
							if (c.closeOnSelect) {
								c._closeCalendar();
							}
							// TODO: Instead of this which doesn't work in IE anyway we should find the next focusable element in the document
							// and pass the focus onto that. That would allow the user to continue on the form as expected...
							if (!$.browser.msie)
							{
								$(c.ele).trigger('focus', [$.dpConst.DP_INTERNAL_FOCUS]);
							}
						}
					}
				);
				
				if (c.isSelected(d)) {
					$td.addClass('selected');
					if (c.settings.selectWeek)
					{
						$td.parent().addClass('selectedWeek');
					}
				} else  if (c.selectMultiple && c.numSelected == c.numSelectable) {
					$td.addClass('unselectable');
				}
				
			},
			_applyRenderCallbacks : function()
			{
				var c = this;
				$('td', this.context).each(
					function()
					{
						for (var i=0; i<c.renderCallback.length; i++) {
							$td = $(this);
							c.renderCallback[i].apply(this, [$td, Date.fromString($td.data('datePickerDate')), c.displayedMonth, c.displayedYear]);
						}
					}
				);
				return;
			},
			// ele is the clicked button - only proceed if it doesn't have the class disabled...
			// m and y are -1, 0 or 1 depending which direction we want to go in...
			_displayNewMonth : function(ele, m, y) 
			{
				if (!$(ele).is('.disabled')) {
					this.setDisplayedMonth(this.displayedMonth + m, this.displayedYear + y, true);
				}
				ele.blur();
				return false;
			},
			_rerenderCalendar : function()
			{
				this._clearCalendar();
				this._renderCalendar();
			},
			_renderCalendar : function()
			{
				// set the title...
				$('h2', this.context).html((new Date(this.displayedYear, this.displayedMonth, 1)).asString($.dpText.HEADER_FORMAT));
				
				// render the calendar...
				$('.dp-calendar', this.context).renderCalendar(
					$.extend(
						{},
						this.settings, 
						{
							month			: this.displayedMonth,
							year			: this.displayedYear,
							renderCallback	: this.cellRender,
							dpController	: this,
							hoverClass		: this.hoverClass
						})
				);
				
				// update the status of the control buttons and disable dates before startDate or after endDate...
				// TODO: When should the year buttons be disabled? When you can't go forward a whole year from where you are or is that annoying?
				if (this.displayedYear == this.startDate.getFullYear() && this.displayedMonth == this.startDate.getMonth()) {
					$('.dp-nav-prev-year', this.context).addClass('disabled');
					$('.dp-nav-prev-month', this.context).addClass('disabled');
					$('.dp-calendar td.other-month', this.context).each(
						function()
						{
							var $this = $(this);
							if (Number($this.text()) > 20) {
								$this.addClass('disabled');
							}
						}
					);
					var d = this.startDate.getDate();
					$('.dp-calendar td.current-month', this.context).each(
						function()
						{
							var $this = $(this);
							if (Number($this.text()) < d) {
								$this.addClass('disabled');
							}
						}
					);
				} else {
					$('.dp-nav-prev-year', this.context).removeClass('disabled');
					$('.dp-nav-prev-month', this.context).removeClass('disabled');
					var d = this.startDate.getDate();
					if (d > 20) {
						// check if the startDate is last month as we might need to add some disabled classes...
						var st = this.startDate.getTime();
						var sd = new Date(st);
						sd.addMonths(1);
						if (this.displayedYear == sd.getFullYear() && this.displayedMonth == sd.getMonth()) {
							$('.dp-calendar td.other-month', this.context).each(
								function()
								{
									var $this = $(this);
									if (Date.fromString($this.data('datePickerDate')).getTime() < st) {
										$this.addClass('disabled');
									}
								}
							);
						}
					}
				}
				if (this.displayedYear == this.endDate.getFullYear() && this.displayedMonth == this.endDate.getMonth()) {
					$('.dp-nav-next-year', this.context).addClass('disabled');
					$('.dp-nav-next-month', this.context).addClass('disabled');
					$('.dp-calendar td.other-month', this.context).each(
						function()
						{
							var $this = $(this);
							if (Number($this.text()) < 14) {
								$this.addClass('disabled');
							}
						}
					);
					var d = this.endDate.getDate();
					$('.dp-calendar td.current-month', this.context).each(
						function()
						{
							var $this = $(this);
							if (Number($this.text()) > d) {
								$this.addClass('disabled');
							}
						}
					);
				} else {
					$('.dp-nav-next-year', this.context).removeClass('disabled');
					$('.dp-nav-next-month', this.context).removeClass('disabled');
					var d = this.endDate.getDate();
					if (d < 13) {
						// check if the endDate is next month as we might need to add some disabled classes...
						var ed = new Date(this.endDate.getTime());
						ed.addMonths(-1);
						if (this.displayedYear == ed.getFullYear() && this.displayedMonth == ed.getMonth()) {
							$('.dp-calendar td.other-month', this.context).each(
								function()
								{
									var $this = $(this);
									if (Number($this.text()) > d) {
										$this.addClass('disabled');
									}
								}
							);
						}
					}
				}
				this._applyRenderCallbacks();
			},
			_closeCalendar : function(programatic, ele)
			{
				if (!ele || ele == this.ele)
				{
					$(document).unbind('mousedown.datepicker');
					$(document).unbind('keydown.datepicker');
					this._clearCalendar();
					$('#dp-popup a').unbind();
					$('#dp-popup').empty().remove();
					if (!programatic) {
						$(this.ele).trigger('dpClosed', [this.getSelected()]);
					}
				}
			},
			// empties the current dp-calendar div and makes sure that all events are unbound
			// and expandos removed to avoid memory leaks...
			_clearCalendar : function()
			{
				// TODO.
				$('.dp-calendar td', this.context).unbind();
				$('.dp-calendar', this.context).empty();
			}
		}
	);
	
	// static constants
	$.dpConst = {
		SHOW_HEADER_NONE	:	0,
		SHOW_HEADER_SHORT	:	1,
		SHOW_HEADER_LONG	:	2,
		POS_TOP				:	0,
		POS_BOTTOM			:	1,
		POS_LEFT			:	0,
		POS_RIGHT			:	1,
		DP_INTERNAL_FOCUS	:	'dpInternalFocusTrigger'
	};
	// localisable text
	$.dpText = {
		TEXT_PREV_YEAR		:	'Previous year',
		TEXT_PREV_MONTH		:	'Previous month',
		TEXT_NEXT_YEAR		:	'Next year',
		TEXT_NEXT_MONTH		:	'Next month',
		TEXT_CLOSE			:	'Close',
		TEXT_CHOOSE_DATE	:	'Choose date',
		HEADER_FORMAT		:	'mmmm yyyy'
	};
	// version
	$.dpVersion = '$Id: jquery.datePicker.js 70 2009-04-05 19:25:15Z kelvin.luck $';

	$.fn.datePicker.defaults = {
		month				: undefined,
		year				: undefined,
		showHeader			: $.dpConst.SHOW_HEADER_SHORT,
		startDate			: undefined,
		endDate				: undefined,
		inline				: false,
		renderCallback		: null,
		createButton		: true,
		showYearNavigation	: true,
		closeOnSelect		: true,
		displayClose		: false,
		selectMultiple		: false,
		numSelectable		: Number.MAX_VALUE,
		clickInput			: false,
		rememberViewedMonth	: true,
		selectWeek			: false,
		verticalPosition	: $.dpConst.POS_TOP,
		horizontalPosition	: $.dpConst.POS_LEFT,
		verticalOffset		: 0,
		horizontalOffset	: 0,
		hoverClass			: 'dp-hover'
	};

	function _getController(ele)
	{
		if (ele._dpId) return $.event._dpCache[ele._dpId];
		return false;
	};
	
	// make it so that no error is thrown if bgIframe plugin isn't included (allows you to use conditional
	// comments to only include bgIframe where it is needed in IE without breaking this plugin).
	if ($.fn.bgIframe == undefined) {
		$.fn.bgIframe = function() {return this; };
	};


	// clean-up
	$(window)
		.bind('unload', function() {
			var els = $.event._dpCache || [];
			for (var i in els) {
				$(els[i].ele)._dpDestroy();
			}
		});
		
	
})(jQuery);
/* jQuery Captify Plugin
* 
* Copyright (C) 2008 Brian Reavis
* Licenced under the MIT license
*
* $Date: 2008-2-27 [Fri, 27 Feb 2009] $
*/
jQuery.fn.extend({
	captify: function(o) {
		var o = $.extend({
			speedOver: 'fast',				// speed of the mouseover effect
			speedOut: 'normal',				// speed of the mouseout effect
			hideDelay: 500,					// how long to delay the hiding of the caption after mouseout (ms)
			animation: 'fade',				// 'fade', 'slide', 'always-on'
			prefix: '',						// text/html to be placed at the beginning of every caption
			opacity: '0.5',					// opacity of the caption on mouse over
			className: 'caption-bottom',	// the name of the CSS class to apply to the caption box         
			position: 'bottom',				// position of the caption (top or bottom)         
			spanWidth: '100%'				// caption span % of the image
		}, o);
		$(this).each(function() {
			var img = this;
			$(this).load(function() {
				$this = img;
				if (this.hasInit) {
					return false;
				}
				this.hasInit = true;
				var over_caption = false;
				var over_img = false;

				//pull the label from another element if there is a 
				//valid element id inside the rel="..." attribute, otherwise,
				//just use the text in the alt="..." attribute.
				var captionLabelSrc = $('#' + $(this).attr('rel'));
				var captionLabelHTML = !captionLabelSrc.length ? $(this).attr('alt') : captionLabelSrc.html();
				captionLabelSrc.remove();
				var toWrap = this.parent && this.parent.tagName == 'a' ? this.parent : $(this);
				var wrapper = toWrap.wrap('<div></div>').parent();
				wrapper.css({
					overflow: 'hidden',
					padding: 0,
					fontSize: 0.1
				})
				wrapper.addClass('caption-wrapper');
				wrapper.width($(this).width());
				wrapper.height($(this).height());

				//transfer the margin and border properties from the image to the wrapper
				$.map(['top', 'right', 'bottom', 'left'], function(i) {
					wrapper.css('margin-' + i, $(img).css('margin-' + i));
					$.map(['style', 'width', 'color'], function(j) {
						var key = 'border-' + i + '-' + j;
						wrapper.css(key, $(img).css(key));
					});
				});
				$(img).css({ border: '0 none' });

				//create two consecutive divs, one for the semi-transparent background,
				//and other other for the fully-opaque label
				var caption = $('div:last', wrapper.append('<div></div>')).addClass(o.className);
				var captionContent = $('div:last', wrapper.append('<div id="cfimagedesc"></div>')).addClass(o.className).append(o.prefix).append(captionLabelHTML);

				//override hiding from CSS, and reset all margins (which could have been inherited)
				$('*', wrapper).css({ margin: 0 }).show();

				//ensure the background is on bottom
				var captionPositioning = jQuery.browser.msie ? 'static' : 'relative';
				caption.css({
					zIndex: 1,
					position: captionPositioning,
					opacity: o.animation == 'fade' ? 0 : o.opacity,
					width: o.spanWidth
				});

				if (o.position == 'bottom'){
					var vLabelOffset = parseInt(caption.css('border-top-width').replace('px', '')) + parseInt(captionContent.css('padding-top').replace('px', '')) - 1;
					captionContent.css('paddingTop', vLabelOffset);
				}
				//clear the backgrounds/borders from the label, and make it fully-opaque
				captionContent.css({
					position: captionPositioning,
					zIndex: 2,
					background: 'none',
					border: '0 none',
					opacity: o.animation == 'fade' ? 0 : 1,
					width: o.spanWidth
				});
				caption.width(captionContent.outerWidth());
				caption.height(captionContent.height());

				// represents caption margin positioning for hide and show states
				var topBorderAdj = (o.position == 'bottom' && jQuery.browser.msie) ? -4 : 0;
				var captionPosition = (o.position == 'top')
				   ? { hide: -$(img).height() - caption.outerHeight() - 1, show: -$(img).height() }
				   : { hide: 0, show: -caption.outerHeight() + topBorderAdj };
				
				//pull the label up on top of the background
				captionContent.css('marginTop', -caption.outerHeight());
				caption.css('marginTop', captionPosition[o.animation == 'fade' || o.animation == 'always-on' ? 'show' : 'hide']);
				
				//function to push the caption out of view
				var cHide = function() {
					if (!over_caption && !over_img){
						var props = o.animation == 'fade'
							? { opacity: 0 }
							: { marginTop: captionPosition.hide };
						caption.animate(props, {duration: o.speedOut, queue:false});
						if (o.animation == 'fade'){
							captionContent.animate({opacity: 0}, {duration: o.speedOut, queue:false});
						}
					}
				};

				if (o.animation != 'always-on'){
					//when the mouse is over the image
					$(this).hover(
						function() {
							over_img = true;
							if ($("#cfimagedesc").text()!='') {
								var props = o.animation == 'fade'
									? { opacity: o.opacity }
									: { marginTop: captionPosition.show };
								caption.animate(props, {duration: o.speedOver, queue:false});
								if (o.animation == 'fade'){
									captionContent.animate({opacity: 1}, {duration: o.speedOver, queue:false});
								}
							}
						},
						function() {
							over_img = false;
							window.setTimeout(cHide, o.hideDelay);
						}
					);
					//when the mouse is over the caption on top of the image (the caption is a sibling of the image)
					$('div', wrapper).hover(
						function() { over_caption = true; },
						function() { over_caption = false; window.setTimeout(cHide, o.hideDelay); }
					);
				}
			});
			//if the image has already loaded (due to being cached), force the load function to be called
			if (this.complete || this.naturalWidth > 0) {
				$(img).trigger('load');
			}
		});
	}
});$(function(){

    $("ul.dropdown li").hover(function(){
    
        $(this).addClass("hover");
        //$('ul:first',this).css('visibility', 'visible');
        $('ul:first',this).fadeIn('slow');
    
    }, function(){
    
        $(this).removeClass("hover");
        //$('ul:first',this).css('visibility', 'hidden');
        $('ul:first',this).fadeOut('slow');
    
    });
    
    $("ul.dropdown li ul li:has(ul)").find("a:first").append(" &raquo; ");

});/*
 ### jQuery FCKEditor Plugin v1.3 - 2008-10-09 ###
 * http://www.fyneworks.com/ - diego@fyneworks.com
 * Dual licensed under the MIT and GPL licenses:
 *   http://www.opensource.org/licenses/mit-license.php
 *   http://www.gnu.org/licenses/gpl.html
 ###
 Project: http://jquery.com/plugins/project/FCKEditor/
 Website: http://www.fyneworks.com/jquery/FCKEditor/
*/
/*
 USAGE: $('textarea').fck({ path:'/path/to/fck/editor/' }); // initialize FCK editor
 ADVANCED USAGE: $.fck.update(); // update value in textareas of each FCK editor instance
*/

/*# AVOID COLLISIONS #*/
;if(window.jQuery) (function($){
/*# AVOID COLLISIONS #*/

$.extend($, {
 fck:{
  waitFor: 10,// in seconds, how long should we wait for the script to load?
  config: { Config: {} }, // default configuration
  path: '/fckeditor/', // default path to FCKEditor directory
  editors: [], // array of editor instances
  loaded: false, // flag indicating whether FCK script is loaded
  intercepted: null, // variable to store intercepted method(s)
  
  // utility method to read contents of FCK editor
  content: function(i, v){
   //try{
				//if(window.console) console.log(['fck.content',arguments]);
    var x = FCKeditorAPI.GetInstance(i);
				//if(window.console) console.log(['fck.content','x',x]);
				// Look for textare with matching name for backward compatibility
				if(!x){
					x = $('#'+i.replace(/\./gi,'\\\.')+'')[0];
 				//if(window.console) console.log(['fck.content','ele',x]);
					if(x) x = FCKeditorAPI.GetInstance(x.id);
				};
				if(!x){
					alert('FCKEditor instance "'+i+'" could not be found!');
					return '';
				};
				if(v) x.SetHTML(v);
				//if(window.console) console.log(['fck.content','x',x.GetXHTML]);
    return x.GetXHTML(true);
   //}catch(e){ return 'OOPS!'; };
  }, // fck.content function
  
  // inspired by Sebastián Barrozo <sbarrozo@b-soft.com.ar>
  setHTML: function(i, v){
   if(typeof i=='object'){
    v = i.html;
    i = i.InstanceName || i.instance;
   };
   return $.fck.content(i, v);
  },
  
  // utility method to update textarea contents before ajax submission
  update: function(){
			// Ignore missing editors
   $.fck.clean();
   // Update contents of all instances
   var e = $.fck.editors;
   //if(window.console) console.log(['fck.update',e]);
   for(var i=0;i<e.length;i++){
    var ta = e[i].textarea;
    //if(window.console) console.log(['fck.update','ta',ta]);
    var ht = $.fck.content(e[i].InstanceName);
    //if(window.console) console.log(['fck.update','ht',ht]);
    ta.val(ht).filter('textarea').text(ht);
    if(ht!=ta.val())
     alert('Critical error in FCK plugin:'+'\n'+'Unable to update form data');
   }
   //if(window.console) console.log(['fck.update','done']);
  }, // fck.update
  
  // utility method to non-existing instances from memory
  clean: function(){
   //if(window.console) console.log(['fck.clean',$.fck.editors]);
			var a = $.fck.editors, b = {}, c = [];
   //if(window.console) console.log(['fck.clean','a',a]);
			$.each(a, function(){
    //if(window.console) console.log(['fck.clean','a - id',this.InstanceName]);
    if($('#'+this.InstanceName.replace(/\./gi,'\\\.')+'').length>0)
				 b[this.InstanceName] = this;
			});
   //if(window.console) console.log(['fck.clean','b',b]);
			$.each(b, function(){ c[c.length] = this; });
   //if(window.console) console.log(['fck.clean','c',c]);
			$.fck.editors = c;
   //if(window.console) console.log(['fck.clean',$.fck.editors]);
  }, // fck.clean
  
  // utility method to create instances of FCK editor (if any)
  create: function(option){
			// Create a new options object
   var o = $.extend({}/* new object */, $.fck.config || {}, option || {});
   // Normalize plugin options
   $.extend(o, {
    selector: (o.selector || 'textarea.fck, textarea.fckeditor'),
    BasePath: (o.path || o.BasePath || $.fck.path)
   });
   // Find fck.editor-instance 'wannabes'
   var e = $(o.e);
   if(!e.length>0) e = $(o.selector);
   if(!e.length>0) return;
			// Accept settings from metadata plugin
			o = $.extend({}, o,
				($.meta ? e.data()/*NEW metadata plugin*/ :
				($.metadata ? e.metadata()/*OLD metadata plugin*/ : 
				null/*metadata plugin not available*/)) || {}
			);
   // Load script and create instances
   if(!$.fck.loading && !$.fck.loaded){
    $.fck.loading = true;
    $.getScript(
     o.BasePath+'fckeditor.js',
     function(){ $.fck.loaded = true; }
    );
   };
   // Start editor
   var start = function(){//e){
    if($.fck.loaded){
     //if(window.console) console.log(['fck.create','start',e,o]);
     $.fck.editor(e,o);
    }
    else{
     //if(window.console) console.log(['fck.create','waiting for script...',e,o]);
     if($.fck.waited<=0){
      alert('jQuery.fckeditor plugin error: The FCKEditor script did not load.');
     }
     else{
      $.fck.waitFor--;
      window.setTimeout(start,1000);
     };
    }
   };
   start(e);
   // Return matched elements...
   return e;
  },
  
  // utility method to integrate this plugin with others...
  intercept: function(){
   if($.fck.intercepted) return;
   // This method intercepts other known methods which
   // require up-to-date code from FCKEditor
   $.fck.intercepted = {
    ajaxSubmit: $.fn.ajaxSubmit || function(){}
   };
   $.fn.ajaxSubmit = function(){
				//if(window.console) console.log(['fck.intercepted','$.fn.ajaxSubmit',$.fck.editors]);
    $.fck.update(); // update html
    return $.fck.intercepted.ajaxSubmit.apply( this, arguments );
   };
			// Also attach to conventional form submission
			//$('form').submit(function(){
   // $.fck.update(); // update html
   //});
  },
  
  // utility method to create an instance of FCK editor
  editor: function(e /* elements */, o /* options */){
   //if(window.console) console.log(['fck.editor','OPTIONS',o]);
   o = $.extend({}, $.fck.config || {}, o || {});
   // Default configuration
   $.extend(o,{
    Width: (o.width || o.Width || '100%'),
    Height: (o.height || o.Height|| '500px'),
    BasePath: (o.path || o.BasePath || $.fck.path),
    ToolbarSet: (o.toolbar || o.ToolbarSet || 'Default'),
    Config: (o.config || o.Config || {})
   });
   // Make sure we have a jQuery object
   e = $(e);
   //if(window.console) console.log(['fck.editor','E',e,o]);
   if(e.size()>0){
    // Local array to store instances
    var a = $.fck.editors;// || [];
    // Go through objects and initialize fck.editor
    e.each(
     function(i,t){
						if((t.tagName||'').toLowerCase()!='textarea')
							return alert(['An invalid parameter has been passed to the $.fckeditor.editor function','tagName:'+t.tagName,'name:'+t.name,'id:'+t.id].join('\n'));
      
      var T = $(t);// t = element, T = jQuery
      if(!t.fck/* not already installed */){
							t.id = t.id || 'fck'+($.fck.editors.length+1);
							t.name = t.name || t.id;
       var n = a.length;
							// create FCKeditor instance
       //if(window.console) console.log(['fck.editor','new FCKeditor',t.id,t]);
       a[n] = new FCKeditor(t.id);
							// Apply inline configuration
       //if(window.console) console.log(['fck.editor','Apply inline configuration',o]);
       $.extend(a[n], o, o.Config || {});
							// Start FCKeditor
       a[n].ReplaceTextarea();
							// Store reference to original element
       a[n].textarea = T;
							// Store reference to FCKeditor in element
       //if(window.console) console.log(['fck.editor','Store reference to FCKeditor in element',a[n]]);
       t.fck = a[n];
      };
     }
    );
    // Store editor instances in global array
    //if(window.console) console.log(['fck.editor','Store editor instances in global array',a]);
    $.fck.editors = a;
    //if(window.console) console.log(['fck.editor','$.fck.editors',$.fck.editors]);
				// Remove old non-existing editors from memory
				$.fck.clean();
   };
   // return jQuery array of elements
   return e;
  }, // fck.editor function
  
  // start-up method
  start: function(o/* options */){
   // Attach itself to known plugins...
			$.fck.intercept();
			// Create FCK editors
   return $.fck.create(o);
  } // fck.start
  
 } // fck object
 //##############################
 
});
// extend $
//##############################


$.extend($.fn, {
 fck: function(o){
  //(function(opts){ $.fck.start(opts); })($.extend(o || {}, {e: this}));
  $.fck.start($.extend(o || {}, {e: this}));
 }
});
// extend $.fn
//##############################

/*# AVOID COLLISIONS #*/
})(jQuery);
/*# AVOID COLLISIONS #*/
/* Copyright (c) 2008 Kean Loong Tan http://www.gimiti.com/kltan
 * Licensed under the MIT (http://www.opensource.org/licenses/mit-license.php)
 * Copyright notice and license must remain intact for legal use
 * jSuggest
 * Version: 1.0 (May 26, 2008)
 * Requires: jQuery 1.2.6+
 */
(function(A){A.fn.jSuggest=function(D){var F=A.extend({},A.fn.jSuggest.defaults,D);var G=".jSuggestHover";var H="jSuggestHover";var E=this.value;var I=this;var C=this.value;var B="#jSuggestContainer";A("body").append('<div id="jSuggestContainer"></div>');A(B).hide();A(this).bind("keyup click",function(K){I=this;C=this.value;if(this.value.length>=F.minchar&&A.trim(this.value)!="Search Terms"){var J=A(this).offset();A(B).css({position:"absolute",top:J.top+A(this).outerHeight()+"px",left:J.left,width:A(this).outerWidth()-2+"px",opacity:F.opacity,zIndex:F.zindex}).show();if(K.keyCode==27){A(B).hide()}else{if(K.keyCode==13){if(A(G).length==1){A(I).val(A(G).text())}A(B).hide();E=I.value}else{if(K.keyCode==40){if(A(G).length==1){if(!A(G).next().length==0){A(G).next().addClass(H);A(".jSuggestHover:eq(0)").removeClass(H);if(F.autoChange){A(I).val(A(G).text())}}}else{A("#jSuggestContainer ul li:first-child").addClass(H);if(F.autoChange){A(I).val(A(G).text())}}}else{if(K.keyCode==38){if(A(G).length==1){if(!A(G).prev().length==0){A(G).prev().addClass(H);A(".jSuggestHover:eq(1)").removeClass(H);if(F.autoChange){A(I).val(A(G).text())}}else{A(G).removeClass(H);A(I).val(E)}}}else{if(I.value!=E){E=I.value;if(A(".jSuggestLoading").length==0){A('<div class="jSuggestLoading"><img src="'+F.loadingImg+'" align="bottom" /> '+F.loadingText+"</div>").prependTo("#jSuggestContainer")}A(".jSuggestLoading").show();A(B).find("ul").remove();if(F.data==""){F.data=A(this).serialize()}else{F.data=F.data+"="+A(this).val()}setTimeout(function(){A.ajax({type:F.type,url:F.url,data:F.data,success:function(L){A(B).find("ul").remove();A(B).append(L);A("#jSuggestContainer ul li").bind("mouseover",function(){A(G).removeClass(H);A(this).addClass(H);C=A(this).text();if(F.autoChange){A(I).val(A(G).text())}});A("#jSuggestContainer ul li").click(function(){A(this).addClass(H);A(I).val(C)});A(".jSuggestLoading").hide()}})},F.delay)}}}}}}else{A(G).removeClass(H);A(B).hide()}return false});A(document).bind("click",function(){A(B).hide();E=I.value})};A.fn.jSuggest.defaults={minchar:3,opacity:1,zindex:20000,delay:2500,loadingImg:"ajax-loader.gif",loadingText:"Loading...",autoChange:false,url:"",type:"GET",data:""}})(jQuery);/**
 * Flash (http://jquery.lukelutman.com/plugins/flash)
 * A jQuery plugin for embedding Flash movies.
 * 
 * Version 1.0
 * November 9th, 2006
 *
 * Copyright (c) 2006 Luke Lutman (http://www.lukelutman.com)
 * Dual licensed under the MIT and GPL licenses.
 * http://www.opensource.org/licenses/mit-license.php
 * http://www.opensource.org/licenses/gpl-license.php
 * 
 * Inspired by:
 * SWFObject (http://blog.deconcept.com/swfobject/)
 * UFO (http://www.bobbyvandersluis.com/ufo/)
 * sIFR (http://www.mikeindustries.com/sifr/)
 * 
 * IMPORTANT: 
 * The packed version of jQuery breaks ActiveX control
 * activation in Internet Explorer. Use JSMin to minifiy
 * jQuery (see: http://jquery.lukelutman.com/plugins/flash#activex).
 *
 **/ 
;(function(){
	
var $$;

/**
 * 
 * @desc Replace matching elements with a flash movie.
 * @author Luke Lutman
 * @version 1.0.1
 *
 * @name flash
 * @param Hash htmlOptions Options for the embed/object tag.
 * @param Hash pluginOptions Options for detecting/updating the Flash plugin (optional).
 * @param Function replace Custom block called for each matched element if flash is installed (optional).
 * @param Function update Custom block called for each matched if flash isn't installed (optional).
 * @type jQuery
 *
 * @cat plugins/flash
 * 
 * @example $('#hello').flash({ src: 'hello.swf' });
 * @desc Embed a Flash movie.
 *
 * @example $('#hello').flash({ src: 'hello.swf' }, { version: 8 });
 * @desc Embed a Flash 8 movie.
 *
 * @example $('#hello').flash({ src: 'hello.swf' }, { expressInstall: true });
 * @desc Embed a Flash movie using Express Install if flash isn't installed.
 *
 * @example $('#hello').flash({ src: 'hello.swf' }, { update: false });
 * @desc Embed a Flash movie, don't show an update message if Flash isn't installed.
 *
**/
$$ = jQuery.fn.flash = function(htmlOptions, pluginOptions, replace, update) {
	
	// Set the default block.
	var block = replace || $$.replace;
	
	// Merge the default and passed plugin options.
	pluginOptions = $$.copy($$.pluginOptions, pluginOptions);
	
	// Detect Flash.
	if(!$$.hasFlash(pluginOptions.version)) {
		// Use Express Install (if specified and Flash plugin 6,0,65 or higher is installed).
		if(pluginOptions.expressInstall && $$.hasFlash(6,0,65)) {
			// Add the necessary flashvars (merged later).
			var expressInstallOptions = {
				flashvars: {  	
					MMredirectURL: location,
					MMplayerType: 'PlugIn',
					MMdoctitle: jQuery('title').text() 
				}					
			};
		// Ask the user to update (if specified).
		} else if (pluginOptions.update) {
			// Change the block to insert the update message instead of the flash movie.
			block = update || $$.update;
		// Fail
		} else {
			// The required version of flash isn't installed.
			// Express Install is turned off, or flash 6,0,65 isn't installed.
			// Update is turned off.
			// Return without doing anything.
			return this;
		}
	}
	
	// Merge the default, express install and passed html options.
	htmlOptions = $$.copy($$.htmlOptions, expressInstallOptions, htmlOptions);
	
	// Invoke $block (with a copy of the merged html options) for each element.
	return this.each(function(){
		block.call(this, $$.copy(htmlOptions));
	});
	
};
/**
 *
 * @name flash.copy
 * @desc Copy an arbitrary number of objects into a new object.
 * @type Object
 * 
 * @example $$.copy({ foo: 1 }, { bar: 2 });
 * @result { foo: 1, bar: 2 };
 *
**/
$$.copy = function() {
	var options = {}, flashvars = {};
	for(var i = 0; i < arguments.length; i++) {
		var arg = arguments[i];
		if(arg == undefined) continue;
		jQuery.extend(options, arg);
		// don't clobber one flash vars object with another
		// merge them instead
		if(arg.flashvars == undefined) continue;
		jQuery.extend(flashvars, arg.flashvars);
	}
	options.flashvars = flashvars;
	return options;
};
/*
 * @name flash.hasFlash
 * @desc Check if a specific version of the Flash plugin is installed
 * @type Boolean
 *
**/
$$.hasFlash = function() {
	// look for a flag in the query string to bypass flash detection
	if(/hasFlash\=true/.test(location)) return true;
	if(/hasFlash\=false/.test(location)) return false;
	var pv = $$.hasFlash.playerVersion().match(/\d+/g);
	var rv = String([arguments[0], arguments[1], arguments[2]]).match(/\d+/g) || String($$.pluginOptions.version).match(/\d+/g);
	for(var i = 0; i < 3; i++) {
		pv[i] = parseInt(pv[i] || 0);
		rv[i] = parseInt(rv[i] || 0);
		// player is less than required
		if(pv[i] < rv[i]) return false;
		// player is greater than required
		if(pv[i] > rv[i]) return true;
	}
	// major version, minor version and revision match exactly
	return true;
};
/**
 *
 * @name flash.hasFlash.playerVersion
 * @desc Get the version of the installed Flash plugin.
 * @type String
 *
**/
$$.hasFlash.playerVersion = function() {
	// ie
	try {
		try {
			// avoid fp6 minor version lookup issues
			// see: http://blog.deconcept.com/2006/01/11/getvariable-setvariable-crash-internet-explorer-flash-6/
			var axo = new ActiveXObject('ShockwaveFlash.ShockwaveFlash.6');
			try { axo.AllowScriptAccess = 'always';	} 
			catch(e) { return '6,0,0'; }				
		} catch(e) {}
		return new ActiveXObject('ShockwaveFlash.ShockwaveFlash').GetVariable('$version').replace(/\D+/g, ',').match(/^,?(.+),?$/)[1];
	// other browsers
	} catch(e) {
		try {
			if(navigator.mimeTypes["application/x-shockwave-flash"].enabledPlugin){
				return (navigator.plugins["Shockwave Flash 2.0"] || navigator.plugins["Shockwave Flash"]).description.replace(/\D+/g, ",").match(/^,?(.+),?$/)[1];
			}
		} catch(e) {}		
	}
	return '0,0,0';
};
/**
 *
 * @name flash.htmlOptions
 * @desc The default set of options for the object or embed tag.
 *
**/
$$.htmlOptions = {
	height: 240,
	flashvars: {},
	pluginspage: 'http://www.adobe.com/go/getflashplayer',
	src: '#',
	type: 'application/x-shockwave-flash',
	width: 320		
};
/**
 *
 * @name flash.pluginOptions
 * @desc The default set of options for checking/updating the flash Plugin.
 *
**/
$$.pluginOptions = {
	expressInstall: false,
	update: true,
	version: '6.0.65'
};
/**
 *
 * @name flash.replace
 * @desc The default method for replacing an element with a Flash movie.
 *
**/
$$.replace = function(htmlOptions) {
	this.innerHTML = '<div class="alt">'+this.innerHTML+'</div>';
	jQuery(this)
		.addClass('flash-replaced')
		.prepend($$.transform(htmlOptions));
};
/**
 *
 * @name flash.update
 * @desc The default method for replacing an element with an update message.
 *
**/
$$.update = function(htmlOptions) {
	var url = String(location).split('?');
	url.splice(1,0,'?hasFlash=true&');
	url = url.join('');
	var msg = '<p>This content requires the Flash Player. <a href="http://www.adobe.com/go/getflashplayer">Download Flash Player</a>. Already have Flash Player? <a href="'+url+'">Click here.</a></p>';
	this.innerHTML = '<span class="alt">'+this.innerHTML+'</span>';
	jQuery(this)
		.addClass('flash-update')
		.prepend(msg);
};
/**
 *
 * @desc Convert a hash of html options to a string of attributes, using Function.apply(). 
 * @example toAttributeString.apply(htmlOptions)
 * @result foo="bar" foo="bar"
 *
**/
function toAttributeString() {
	var s = '';
	for(var key in this)
		if(typeof this[key] != 'function')
			s += key+'="'+this[key]+'" ';
	return s;		
};
/**
 *
 * @desc Convert a hash of flashvars to a url-encoded string, using Function.apply(). 
 * @example toFlashvarsString.apply(flashvarsObject)
 * @result foo=bar&foo=bar
 *
**/
function toFlashvarsString() {
	var s = '';
	for(var key in this)
		if(typeof this[key] != 'function')
			s += key+'='+encodeURIComponent(this[key])+'&';
	return s.replace(/&$/, '');		
};
/**
 *
 * @name flash.transform
 * @desc Transform a set of html options into an embed tag.
 * @type String 
 *
 * @example $$.transform(htmlOptions)
 * @result <embed src="foo.swf" ... />
 *
 * Note: The embed tag is NOT standards-compliant, but it 
 * works in all current browsers. flash.transform can be
 * overwritten with a custom function to generate more 
 * standards-compliant markup.
 *
**/
$$.transform = function(htmlOptions) {
	htmlOptions.toString = toAttributeString;
	if(htmlOptions.flashvars) htmlOptions.flashvars.toString = toFlashvarsString;
	return '<embed ' + String(htmlOptions) + '/>';		
};

/**
 *
 * Flash Player 9 Fix (http://blog.deconcept.com/2006/07/28/swfobject-143-released/)
 *
**/
if (window.attachEvent) {
	window.attachEvent("onbeforeunload", function(){
		__flash_unloadHandler = function() {};
		__flash_savedUnloadHandler = function() {};
	});
}
	
})();$(document).ready(function(){
	$('a[href*=\'.swf\']').each(function(htmlOptions) {
		var params = $(this).attr('href').split(':::');
		$(this).wrap("<div class=\"autoflashMP3\"></div>").parent().empty().flash({ 
			width: params[1],
			height: params[2],
			src: params[0],
			wmode: 'transparent'
		},{ version: 8 });
	});
	
	
	
	/**
	$('a[href*=\'.flv\'],a[href*=\'.avi\'],a[href*=\'.mpg\'],a[href*=\'.mpeg\'],a[href*=\'.mp4\'],a[href*=\'.mov\']').each(function() {
	**/
	$('a[href*=\'.flv\']').each(function() {
		var params = $(this).attr('href').split(':::');
		if(params[1]==undefined) params[1]= 575;
		if(params[2]==undefined) params[2]= 308;
		$(this).wrap("<div></div>").parent().empty().flash({ 
			src: '/java/flashplayers/player.swf',
			width: params[1],
			height: params[2],
			wmode: 'transparent',
			flashvars: { file: params[0], autostart: 'true', fullscreen:'true' }
		},{ version: 8 });
	});
	
	
	
	
	
	
	$('a[href$=\'.mp3\']').each(function() {
		filename=$(this).attr("href");
		$(this).wrap("<div></div>").parent().empty().flash({ 
			src: '/java/flashplayers/audioplayer.swf',
			width: 300,
			height: 24,
			wmode: 'transparent', 
			flashvars: { soundFile: filename, transparentpagebg:'yes'}
		},{ version: 8 });
	});
});/*
 * jQuery UI Dialog 1.7.1
 *
 * Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about)
 * Dual licensed under the MIT (MIT-LICENSE.txt)
 * and GPL (GPL-LICENSE.txt) licenses.
 *
 * http://docs.jquery.com/UI/Dialog
 *
 * Depends:
 *	ui.core.js
 *	ui.draggable.js
 *	ui.resizable.js
 */
(function($) {

var setDataSwitch = {
		dragStart: "start.draggable",
		drag: "drag.draggable",
		dragStop: "stop.draggable",
		maxHeight: "maxHeight.resizable",
		minHeight: "minHeight.resizable",
		maxWidth: "maxWidth.resizable",
		minWidth: "minWidth.resizable",
		resizeStart: "start.resizable",
		resize: "drag.resizable",
		resizeStop: "stop.resizable"
	},
	
	uiDialogClasses =
		'ui-dialog ' +
		'ui-widget ' +
		'ui-widget-content ' +
		'ui-corner-all ';

$.widget("ui.dialog", {

	_init: function() {
		this.originalTitle = this.element.attr('title');

		var self = this,
			options = this.options,

			title = options.title || this.originalTitle || '&nbsp;',
			titleId = $.ui.dialog.getTitleId(this.element),

			uiDialog = (this.uiDialog = $('<div/>'))
				.appendTo(document.body)
				.hide()
				.addClass(uiDialogClasses + options.dialogClass)
				.css({
					position: 'absolute',
					overflow: 'hidden',
					zIndex: options.zIndex
				})
				// setting tabIndex makes the div focusable
				// setting outline to 0 prevents a border on focus in Mozilla
				.attr('tabIndex', -1).css('outline', 0).keydown(function(event) {
					(options.closeOnEscape && event.keyCode
						&& event.keyCode == $.ui.keyCode.ESCAPE && self.close(event));
				})
				.attr({
					role: 'dialog',
					'aria-labelledby': titleId
				})
				.mousedown(function(event) {
					self.moveToTop(false, event);
				}),

			uiDialogContent = this.element
				.show()
				.removeAttr('title')
				.addClass(
					'ui-dialog-content ' +
					'ui-widget-content')
				.appendTo(uiDialog),

			uiDialogTitlebar = (this.uiDialogTitlebar = $('aaa'))
				.addClass(
					'ui-dialog-titlebar ' +
					'ui-widget-header ' +
					'ui-corner-all ' +
					'ui-helper-clearfix'
				)
				.prependTo(uiDialog),
				
			uiDialogTitlebarClose = $('aaa').appendTo(uiDialogTitlebar),
/*
			uiDialogTitlebarClose = $('<a href="#"/>')
				.addClass(
					'ui-dialog-titlebar-close ' +
					'ui-corner-all'
				)
				.attr('role', 'button')
				.hover(
					function() {
						uiDialogTitlebarClose.addClass('ui-state-hover');
					},
					function() {
						uiDialogTitlebarClose.removeClass('ui-state-hover');
					}
				)
				.focus(function() {
					uiDialogTitlebarClose.addClass('ui-state-focus');
				})
				.blur(function() {
					uiDialogTitlebarClose.removeClass('ui-state-focus');
				})
				.mousedown(function(ev) {
					ev.stopPropagation();
				})
				.click(function(event) {
					self.close(event);
					return false;
				})
				.appendTo(uiDialogTitlebar),
*/
			uiDialogTitlebarCloseText = (this.uiDialogTitlebarCloseText = $('<span/>'))
				.addClass(
					'ui-icon ' +
					'ui-icon-closethick'
				)
				.text(options.closeText)
				.appendTo(uiDialogTitlebarClose),

			uiDialogTitle = $('<span/>')
				.addClass('ui-dialog-title')
				.attr('id', titleId)
				.html(title)
				.prependTo(uiDialogTitlebar);

		uiDialogTitlebar.find("*").add(uiDialogTitlebar).disableSelection();

		(options.draggable && $.fn.draggable && this._makeDraggable());
		(options.resizable && $.fn.resizable && this._makeResizable());

		this._createButtons(options.buttons);
		this._isOpen = false;

		(options.bgiframe && $.fn.bgiframe && uiDialog.bgiframe());
		(options.autoOpen && this.open());
		
	},

	destroy: function() {
		(this.overlay && this.overlay.destroy());
		this.uiDialog.hide();
		this.element
			.unbind('.dialog')
			.removeData('dialog')
			.removeClass('ui-dialog-content ui-widget-content')
			.hide().appendTo('body');
		this.uiDialog.remove();

		(this.originalTitle && this.element.attr('title', this.originalTitle));
	},

	close: function(event) {
		var self = this;
		
		if (false === self._trigger('beforeclose', event)) {
			return;
		}

		(self.overlay && self.overlay.destroy());
		self.uiDialog.unbind('keypress.ui-dialog');

		(self.options.hide
			? self.uiDialog.hide(self.options.hide, function() {
				self._trigger('close', event);
			})
			: self.uiDialog.hide() && self._trigger('close', event));

		$.ui.dialog.overlay.resize();

		self._isOpen = false;
	},

	isOpen: function() {
		return this._isOpen;
	},

	// the force parameter allows us to move modal dialogs to their correct
	// position on open
	moveToTop: function(force, event) {

		if ((this.options.modal && !force)
			|| (!this.options.stack && !this.options.modal)) {
			return this._trigger('focus', event);
		}
		
		if (this.options.zIndex > $.ui.dialog.maxZ) {
			$.ui.dialog.maxZ = this.options.zIndex;
		}
		(this.overlay && this.overlay.$el.css('z-index', $.ui.dialog.overlay.maxZ = ++$.ui.dialog.maxZ));

		//Save and then restore scroll since Opera 9.5+ resets when parent z-Index is changed.
		//  http://ui.jquery.com/bugs/ticket/3193
		var saveScroll = { scrollTop: this.element.attr('scrollTop'), scrollLeft: this.element.attr('scrollLeft') };
		this.uiDialog.css('z-index', ++$.ui.dialog.maxZ);
		this.element.attr(saveScroll);
		this._trigger('focus', event);
	},

	open: function() {
		if (this._isOpen) { return; }

		var options = this.options,
			uiDialog = this.uiDialog;

		this.overlay = options.modal ? new $.ui.dialog.overlay(this) : null;
		(uiDialog.next().length && uiDialog.appendTo('body'));
		this._size();
		this._position(options.position);
		uiDialog.show(options.show);
		this.moveToTop(true);

		// prevent tabbing out of modal dialogs
		(options.modal && uiDialog.bind('keypress.ui-dialog', function(event) {
			if (event.keyCode != $.ui.keyCode.TAB) {
				return;
			}

			var tabbables = $(':tabbable', this),
				first = tabbables.filter(':first')[0],
				last  = tabbables.filter(':last')[0];

			if (event.target == last && !event.shiftKey) {
				setTimeout(function() {
					first.focus();
				}, 1);
			} else if (event.target == first && event.shiftKey) {
				setTimeout(function() {
					last.focus();
				}, 1);
			}
		}));

		// set focus to the first tabbable element in the content area or the first button
		// if there are no tabbable elements, set focus on the dialog itself
		$([])
			.add(uiDialog.find('.ui-dialog-content :tabbable:first'))
			.add(uiDialog.find('.ui-dialog-buttonpane :tabbable:first'))
			.add(uiDialog)
			.filter(':first')
			.focus();

		this._trigger('open');
		this._isOpen = true;
	},

	_createButtons: function(buttons) {
		var self = this,
			hasButtons = false,
			uiDialogButtonPane = $('<div></div>')
				.addClass(
					'ui-dialog-buttonpane ' +
					'ui-widget-content ' +
					'ui-helper-clearfix'
				);

		// if we already have a button pane, remove it
		this.uiDialog.find('.ui-dialog-buttonpane').remove();

		(typeof buttons == 'object' && buttons !== null &&
			$.each(buttons, function() { return !(hasButtons = true); }));
		if (hasButtons) {
			$.each(buttons, function(name, fn) {
				$('<button type="button"></button>')
					.addClass(
						'ui-state-default ' +
						'ui-corner-all'
					)
					.text(name)
					.click(function() { fn.apply(self.element[0], arguments); })
					.hover(
						function() {
							$(this).addClass('ui-state-hover');
						},
						function() {
							$(this).removeClass('ui-state-hover');
						}
					)
					.focus(function() {
						$(this).addClass('ui-state-focus');
					})
					.blur(function() {
						$(this).removeClass('ui-state-focus');
					})
					.appendTo(uiDialogButtonPane);
			});
			uiDialogButtonPane.appendTo(this.uiDialog);
		}
	},

	_makeDraggable: function() {
		var self = this,
			options = this.options,
			heightBeforeDrag;

		this.uiDialog.draggable({
			cancel: '.ui-dialog-content',
			handle: '.ui-dialog-titlebar',
			containment: 'document',
			start: function() {
				heightBeforeDrag = options.height;
				$(this).height($(this).height()).addClass("ui-dialog-dragging");
				(options.dragStart && options.dragStart.apply(self.element[0], arguments));
			},
			drag: function() {
				(options.drag && options.drag.apply(self.element[0], arguments));
			},
			stop: function() {
				$(this).removeClass("ui-dialog-dragging").height(heightBeforeDrag);
				(options.dragStop && options.dragStop.apply(self.element[0], arguments));
				$.ui.dialog.overlay.resize();
			}
		});
	},

	_makeResizable: function(handles) {
		handles = (handles === undefined ? this.options.resizable : handles);
		var self = this,
			options = this.options,
			resizeHandles = typeof handles == 'string'
				? handles
				: 'n,e,s,w,se,sw,ne,nw';

		this.uiDialog.resizable({
			cancel: '.ui-dialog-content',
			alsoResize: this.element,
			maxWidth: options.maxWidth,
			maxHeight: options.maxHeight,
			minWidth: options.minWidth,
			minHeight: options.minHeight,
			start: function() {
				$(this).addClass("ui-dialog-resizing");
				(options.resizeStart && options.resizeStart.apply(self.element[0], arguments));
			},
			resize: function() {
				(options.resize && options.resize.apply(self.element[0], arguments));
			},
			handles: resizeHandles,
			stop: function() {
				$(this).removeClass("ui-dialog-resizing");
				options.height = $(this).height();
				options.width = $(this).width();
				(options.resizeStop && options.resizeStop.apply(self.element[0], arguments));
				$.ui.dialog.overlay.resize();
			}
		})
		.find('.ui-resizable-se').addClass('ui-icon ui-icon-grip-diagonal-se');
	},

	_position: function(pos) {
		var wnd = $(window), doc = $(document),
			pTop = doc.scrollTop(), pLeft = doc.scrollLeft(),
			minTop = pTop;

		if ($.inArray(pos, ['center','top','right','bottom','left']) >= 0) {
			pos = [
				pos == 'right' || pos == 'left' ? pos : 'center',
				pos == 'top' || pos == 'bottom' ? pos : 'middle'
			];
		}
		if (pos.constructor != Array) {
			pos = ['center', 'middle'];
		}
		if (pos[0].constructor == Number) {
			pLeft += pos[0];
		} else {
			switch (pos[0]) {
				case 'left':
					pLeft += 0;
					break;
				case 'right':
					pLeft += wnd.width() - this.uiDialog.outerWidth();
					break;
				default:
				case 'center':
					pLeft += (wnd.width() - this.uiDialog.outerWidth()) / 2;
			}
		}
		if (pos[1].constructor == Number) {
			pTop += pos[1];
		} else {
			switch (pos[1]) {
				case 'top':
					pTop += 0;
					break;
				case 'bottom':
					pTop += wnd.height() - this.uiDialog.outerHeight();
					break;
				default:
				case 'middle':
					pTop += (wnd.height() - this.uiDialog.outerHeight()) / 2;
			}
		}

		// prevent the dialog from being too high (make sure the titlebar
		// is accessible)
		pTop = Math.max(pTop, minTop);
		this.uiDialog.css({top: pTop, left: pLeft});
	},

	_setData: function(key, value){
		(setDataSwitch[key] && this.uiDialog.data(setDataSwitch[key], value));
		switch (key) {
			case "buttons":
				this._createButtons(value);
				break;
			case "closeText":
				this.uiDialogTitlebarCloseText.text(value);
				break;
			case "dialogClass":
				this.uiDialog
					.removeClass(this.options.dialogClass)
					.addClass(uiDialogClasses + value);
				break;
			case "draggable":
				(value
					? this._makeDraggable()
					: this.uiDialog.draggable('destroy'));
				break;
			case "height":
				this.uiDialog.height(value);
				break;
			case "position":
				this._position(value);
				break;
			case "resizable":
				var uiDialog = this.uiDialog,
					isResizable = this.uiDialog.is(':data(resizable)');

				// currently resizable, becoming non-resizable
				(isResizable && !value && uiDialog.resizable('destroy'));

				// currently resizable, changing handles
				(isResizable && typeof value == 'string' &&
					uiDialog.resizable('option', 'handles', value));

				// currently non-resizable, becoming resizable
				(isResizable || this._makeResizable(value));
				break;
			case "title":
				$(".ui-dialog-title", this.uiDialogTitlebar).html(value || '&nbsp;');
				break;
			case "width":
				this.uiDialog.width(value);
				break;
		}

		$.widget.prototype._setData.apply(this, arguments);
	},

	_size: function() {
		/* If the user has resized the dialog, the .ui-dialog and .ui-dialog-content
		 * divs will both have width and height set, so we need to reset them
		 */
		var options = this.options;

		// reset content sizing
		this.element.css({
			height: 0,
			minHeight: 0,
			width: 'auto'
		});

		// reset wrapper sizing
		// determine the height of all the non-content elements
		var nonContentHeight = this.uiDialog.css({
				height: 'auto',
				width: options.width
			})
			.height();

		this.element
			.css({
				minHeight: Math.max(options.minHeight - nonContentHeight, 0),
				height: options.height == 'auto'
					? 'auto'
					: Math.max(options.height - nonContentHeight, 0)
			});
	}
});

$.extend($.ui.dialog, {
	version: "1.7.1",
	defaults: {
		autoOpen: true,
		bgiframe: false,
		buttons: {},
		closeOnEscape: true,
		closeText: 'close',
		dialogClass: '',
		draggable: true,
		hide: null,
		height: 'auto',
		maxHeight: false,
		maxWidth: false,
		minHeight: 150,
		minWidth: 150,
		modal: false,
		position: 'center',
		resizable: true,
		show: null,
		stack: true,
		title: '',
		width: 300,
		zIndex: 1000
	},

	getter: 'isOpen',

	uuid: 0,
	maxZ: 0,

	getTitleId: function($el) {
		return 'ui-dialog-title-' + ($el.attr('id') || ++this.uuid);
	},

	overlay: function(dialog) {
		this.$el = $.ui.dialog.overlay.create(dialog);
	}
});

$.extend($.ui.dialog.overlay, {
	instances: [],
	maxZ: 0,
	events: $.map('focus,mousedown,mouseup,keydown,keypress,click'.split(','),
		function(event) { return event + '.dialog-overlay'; }).join(' '),
	create: function(dialog) {
		if (this.instances.length === 0) {
			// prevent use of anchors and inputs
			// we use a setTimeout in case the overlay is created from an
			// event that we're going to be cancelling (see #2804)
			setTimeout(function() {
				$(document).bind($.ui.dialog.overlay.events, function(event) {
					var dialogZ = $(event.target).parents('.ui-dialog').css('zIndex') || 0;
					return (dialogZ > $.ui.dialog.overlay.maxZ);
				});
			}, 1);

			// allow closing by pressing the escape key
			$(document).bind('keydown.dialog-overlay', function(event) {
				(dialog.options.closeOnEscape && event.keyCode
						&& event.keyCode == $.ui.keyCode.ESCAPE && dialog.close(event));
			});

			// handle window resize
			$(window).bind('resize.dialog-overlay', $.ui.dialog.overlay.resize);
		}

		var $el = $('<div></div>').appendTo(document.body)
			.addClass('ui-widget-overlay').css({
				width: this.width(),
				height: this.height()
			});

		(dialog.options.bgiframe && $.fn.bgiframe && $el.bgiframe());

		this.instances.push($el);
		return $el;
	},

	destroy: function($el) {
		this.instances.splice($.inArray(this.instances, $el), 1);

		if (this.instances.length === 0) {
			$([document, window]).unbind('.dialog-overlay');
		}

		$el.remove();
	},

	height: function() {
		// handle IE 6
		if ($.browser.msie && $.browser.version < 7) {
			var scrollHeight = Math.max(
				document.documentElement.scrollHeight,
				document.body.scrollHeight
			);
			var offsetHeight = Math.max(
				document.documentElement.offsetHeight,
				document.body.offsetHeight
			);

			if (scrollHeight < offsetHeight) {
				return $(window).height() + 'px';
			} else {
				return scrollHeight + 'px';
			}
		// handle "good" browsers
		} else {
			return $(document).height() + 'px';
		}
	},

	width: function() {
		// handle IE 6
		if ($.browser.msie && $.browser.version < 7) {
			var scrollWidth = Math.max(
				document.documentElement.scrollWidth,
				document.body.scrollWidth
			);
			var offsetWidth = Math.max(
				document.documentElement.offsetWidth,
				document.body.offsetWidth
			);

			if (scrollWidth < offsetWidth) {
				return $(window).width() + 'px';
			} else {
				return scrollWidth + 'px';
			}
		// handle "good" browsers
		} else {
			return $(document).width() + 'px';
		}
	},

	resize: function() {
		/* If the dialog is draggable and the user drags it past the
		 * right edge of the window, the document becomes wider so we
		 * need to stretch the overlay. If the user then drags the
		 * dialog back to the left, the document will become narrower,
		 * so we need to shrink the overlay to the appropriate size.
		 * This is handled by shrinking the overlay before setting it
		 * to the full document size.
		 */
		var $overlays = $([]);
		$.each($.ui.dialog.overlay.instances, function() {
			$overlays = $overlays.add(this);
		});

		$overlays.css({
			width: 0,
			height: 0
		}).css({
			width: $.ui.dialog.overlay.width(),
			height: $.ui.dialog.overlay.height()
		});
	}
});

$.extend($.ui.dialog.overlay.prototype, {
	destroy: function() {
		$.ui.dialog.overlay.destroy(this.$el);
	}
});

})(jQuery);
/*
 * jQuery UI Tabs 1.7.2
 *
 * Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about)
 * Dual licensed under the MIT (MIT-LICENSE.txt)
 * and GPL (GPL-LICENSE.txt) licenses.
 *
 * http://docs.jquery.com/UI/Tabs
 *
 * Depends:
 *	ui.core.js
 */
(function($) {

$.widget("ui.tabs", {

	_init: function() {
		if (this.options.deselectable !== undefined) {
			this.options.collapsible = this.options.deselectable;
		}
		this._tabify(true);
	},

	_setData: function(key, value) {
		if (key == 'selected') {
			if (this.options.collapsible && value == this.options.selected) {
				return;
			}
			this.select(value);
		}
		else {
			this.options[key] = value;
			if (key == 'deselectable') {
				this.options.collapsible = value;
			}
			this._tabify();
		}
	},

	_tabId: function(a) {
		return a.title && a.title.replace(/\s/g, '_').replace(/[^A-Za-z0-9\-_:\.]/g, '') ||
			this.options.idPrefix + $.data(a);
	},

	_sanitizeSelector: function(hash) {
		return hash.replace(/:/g, '\\:'); // we need this because an id may contain a ":"
	},

	_cookie: function() {
		var cookie = this.cookie || (this.cookie = this.options.cookie.name || 'ui-tabs-' + $.data(this.list[0]));
		return $.cookie.apply(null, [cookie].concat($.makeArray(arguments)));
	},

	_ui: function(tab, panel) {
		return {
			tab: tab,
			panel: panel,
			index: this.anchors.index(tab)
		};
	},

	_cleanup: function() {
		// restore all former loading tabs labels
		this.lis.filter('.ui-state-processing').removeClass('ui-state-processing')
				.find('span:data(label.tabs)')
				.each(function() {
					var el = $(this);
					el.html(el.data('label.tabs')).removeData('label.tabs');
				});
	},

	_tabify: function(init) {

		this.list = this.element.children('ul:first');
		this.lis = $('li:has(a[href])', this.list);
		this.anchors = this.lis.map(function() { return $('a', this)[0]; });
		this.panels = $([]);

		var self = this, o = this.options;

		var fragmentId = /^#.+/; // Safari 2 reports '#' for an empty hash
		this.anchors.each(function(i, a) {
			var href = $(a).attr('href');

			// For dynamically created HTML that contains a hash as href IE < 8 expands
			// such href to the full page url with hash and then misinterprets tab as ajax.
			// Same consideration applies for an added tab with a fragment identifier
			// since a[href=#fragment-identifier] does unexpectedly not match.
			// Thus normalize href attribute...
			var hrefBase = href.split('#')[0], baseEl;
			if (hrefBase && (hrefBase === location.toString().split('#')[0] ||
					(baseEl = $('base')[0]) && hrefBase === baseEl.href)) {
				href = a.hash;
				a.href = href;
			}

			// inline tab
			if (fragmentId.test(href)) {
				self.panels = self.panels.add(self._sanitizeSelector(href));
			}

			// remote tab
			else if (href != '#') { // prevent loading the page itself if href is just "#"
				$.data(a, 'href.tabs', href); // required for restore on destroy

				// TODO until #3808 is fixed strip fragment identifier from url
				// (IE fails to load from such url)
				$.data(a, 'load.tabs', href.replace(/#.*$/, '')); // mutable data

				var id = self._tabId(a);
				a.href = '#' + id;
				var $panel = $('#' + id);
				if (!$panel.length) {
					$panel = $(o.panelTemplate).attr('id', id).addClass('ui-tabs-panel ui-widget-content ui-corner-bottom')
						.insertAfter(self.panels[i - 1] || self.list);
					$panel.data('destroy.tabs', true);
				}
				self.panels = self.panels.add($panel);
			}

			// invalid tab href
			else {
				o.disabled.push(i);
			}
		});

		// initialization from scratch
		if (init) {

			// attach necessary classes for styling
			this.element.addClass('ui-tabs ui-widget ui-widget-content ui-corner-all');
			this.list.addClass('ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all');
			this.lis.addClass('ui-state-default ui-corner-top');
			this.panels.addClass('ui-tabs-panel ui-widget-content ui-corner-bottom');

			// Selected tab
			// use "selected" option or try to retrieve:
			// 1. from fragment identifier in url
			// 2. from cookie
			// 3. from selected class attribute on <li>
			if (o.selected === undefined) {
				if (location.hash) {
					this.anchors.each(function(i, a) {
						if (a.hash == location.hash) {
							o.selected = i;
							return false; // break
						}
					});
				}
				if (typeof o.selected != 'number' && o.cookie) {
					o.selected = parseInt(self._cookie(), 10);
				}
				if (typeof o.selected != 'number' && this.lis.filter('.ui-tabs-selected').length) {
					o.selected = this.lis.index(this.lis.filter('.ui-tabs-selected'));
				}
				o.selected = o.selected || 0;
			}
			else if (o.selected === null) { // usage of null is deprecated, TODO remove in next release
				o.selected = -1;
			}

			// sanity check - default to first tab...
			o.selected = ((o.selected >= 0 && this.anchors[o.selected]) || o.selected < 0) ? o.selected : 0;

			// Take disabling tabs via class attribute from HTML
			// into account and update option properly.
			// A selected tab cannot become disabled.
			o.disabled = $.unique(o.disabled.concat(
				$.map(this.lis.filter('.ui-state-disabled'),
					function(n, i) { return self.lis.index(n); } )
			)).sort();

			if ($.inArray(o.selected, o.disabled) != -1) {
				o.disabled.splice($.inArray(o.selected, o.disabled), 1);
			}

			// highlight selected tab
			this.panels.addClass('ui-tabs-hide');
			this.lis.removeClass('ui-tabs-selected ui-state-active');
			if (o.selected >= 0 && this.anchors.length) { // check for length avoids error when initializing empty list
				this.panels.eq(o.selected).removeClass('ui-tabs-hide');
				this.lis.eq(o.selected).addClass('ui-tabs-selected ui-state-active');

				// seems to be expected behavior that the show callback is fired
				self.element.queue("tabs", function() {
					self._trigger('show', null, self._ui(self.anchors[o.selected], self.panels[o.selected]));
				});
				
				this.load(o.selected);
			}

			// clean up to avoid memory leaks in certain versions of IE 6
			$(window).bind('unload', function() {
				self.lis.add(self.anchors).unbind('.tabs');
				self.lis = self.anchors = self.panels = null;
			});

		}
		// update selected after add/remove
		else {
			o.selected = this.lis.index(this.lis.filter('.ui-tabs-selected'));
		}

		// update collapsible
		this.element[o.collapsible ? 'addClass' : 'removeClass']('ui-tabs-collapsible');

		// set or update cookie after init and add/remove respectively
		if (o.cookie) {
			this._cookie(o.selected, o.cookie);
		}

		// disable tabs
		for (var i = 0, li; (li = this.lis[i]); i++) {
			$(li)[$.inArray(i, o.disabled) != -1 &&
				!$(li).hasClass('ui-tabs-selected') ? 'addClass' : 'removeClass']('ui-state-disabled');
		}

		// reset cache if switching from cached to not cached
		if (o.cache === false) {
			this.anchors.removeData('cache.tabs');
		}

		// remove all handlers before, tabify may run on existing tabs after add or option change
		this.lis.add(this.anchors).unbind('.tabs');

		if (o.event != 'mouseover') {
			var addState = function(state, el) {
				if (el.is(':not(.ui-state-disabled)')) {
					el.addClass('ui-state-' + state);
				}
			};
			var removeState = function(state, el) {
				el.removeClass('ui-state-' + state);
			};
			this.lis.bind('mouseover.tabs', function() {
				addState('hover', $(this));
			});
			this.lis.bind('mouseout.tabs', function() {
				removeState('hover', $(this));
			});
			this.anchors.bind('focus.tabs', function() {
				addState('focus', $(this).closest('li'));
			});
			this.anchors.bind('blur.tabs', function() {
				removeState('focus', $(this).closest('li'));
			});
		}

		// set up animations
		var hideFx, showFx;
		if (o.fx) {
			if ($.isArray(o.fx)) {
				hideFx = o.fx[0];
				showFx = o.fx[1];
			}
			else {
				hideFx = showFx = o.fx;
			}
		}

		// Reset certain styles left over from animation
		// and prevent IE's ClearType bug...
		function resetStyle($el, fx) {
			$el.css({ display: '' });
			if ($.browser.msie && fx.opacity) {
				$el[0].style.removeAttribute('filter');
			}
		}

		// Show a tab...
		var showTab = showFx ?
			function(clicked, $show) {
				$(clicked).closest('li').removeClass('ui-state-default').addClass('ui-tabs-selected ui-state-active');
				$show.hide().removeClass('ui-tabs-hide') // avoid flicker that way
					.animate(showFx, showFx.duration || 'normal', function() {
						resetStyle($show, showFx);
						self._trigger('show', null, self._ui(clicked, $show[0]));
					});
			} :
			function(clicked, $show) {
				$(clicked).closest('li').removeClass('ui-state-default').addClass('ui-tabs-selected ui-state-active');
				$show.removeClass('ui-tabs-hide');
				self._trigger('show', null, self._ui(clicked, $show[0]));
			};

		// Hide a tab, $show is optional...
		var hideTab = hideFx ?
			function(clicked, $hide) {
				$hide.animate(hideFx, hideFx.duration || 'normal', function() {
					self.lis.removeClass('ui-tabs-selected ui-state-active').addClass('ui-state-default');
					$hide.addClass('ui-tabs-hide');
					resetStyle($hide, hideFx);
					self.element.dequeue("tabs");
				});
			} :
			function(clicked, $hide, $show) {
				self.lis.removeClass('ui-tabs-selected ui-state-active').addClass('ui-state-default');
				$hide.addClass('ui-tabs-hide');
				self.element.dequeue("tabs");
			};

		// attach tab event handler, unbind to avoid duplicates from former tabifying...
		this.anchors.bind(o.event + '.tabs', function() {
			var el = this, $li = $(this).closest('li'), $hide = self.panels.filter(':not(.ui-tabs-hide)'),
					$show = $(self._sanitizeSelector(this.hash));

			// If tab is already selected and not collapsible or tab disabled or
			// or is already loading or click callback returns false stop here.
			// Check if click handler returns false last so that it is not executed
			// for a disabled or loading tab!
			if (($li.hasClass('ui-tabs-selected') && !o.collapsible) ||
				$li.hasClass('ui-state-disabled') ||
				$li.hasClass('ui-state-processing') ||
				self._trigger('select', null, self._ui(this, $show[0])) === false) {
				this.blur();
				return false;
			}

			o.selected = self.anchors.index(this);

			self.abort();

			// if tab may be closed
			if (o.collapsible) {
				if ($li.hasClass('ui-tabs-selected')) {
					o.selected = -1;

					if (o.cookie) {
						self._cookie(o.selected, o.cookie);
					}

					self.element.queue("tabs", function() {
						hideTab(el, $hide);
					}).dequeue("tabs");
					
					this.blur();
					return false;
				}
				else if (!$hide.length) {
					if (o.cookie) {
						self._cookie(o.selected, o.cookie);
					}
					
					self.element.queue("tabs", function() {
						showTab(el, $show);
					});

					self.load(self.anchors.index(this)); // TODO make passing in node possible, see also http://dev.jqueryui.com/ticket/3171
					
					this.blur();
					return false;
				}
			}

			if (o.cookie) {
				self._cookie(o.selected, o.cookie);
			}

			// show new tab
			if ($show.length) {
				if ($hide.length) {
					self.element.queue("tabs", function() {
						hideTab(el, $hide);
					});
				}
				self.element.queue("tabs", function() {
					showTab(el, $show);
				});
				
				self.load(self.anchors.index(this));
			}
			else {
				throw 'jQuery UI Tabs: Mismatching fragment identifier.';
			}

			// Prevent IE from keeping other link focussed when using the back button
			// and remove dotted border from clicked link. This is controlled via CSS
			// in modern browsers; blur() removes focus from address bar in Firefox
			// which can become a usability and annoying problem with tabs('rotate').
			if ($.browser.msie) {
				this.blur();
			}

		});

		// disable click in any case
		this.anchors.bind('click.tabs', function(){return false;});

	},

	destroy: function() {
		var o = this.options;

		this.abort();
		
		this.element.unbind('.tabs')
			.removeClass('ui-tabs ui-widget ui-widget-content ui-corner-all ui-tabs-collapsible')
			.removeData('tabs');

		this.list.removeClass('ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all');

		this.anchors.each(function() {
			var href = $.data(this, 'href.tabs');
			if (href) {
				this.href = href;
			}
			var $this = $(this).unbind('.tabs');
			$.each(['href', 'load', 'cache'], function(i, prefix) {
				$this.removeData(prefix + '.tabs');
			});
		});

		this.lis.unbind('.tabs').add(this.panels).each(function() {
			if ($.data(this, 'destroy.tabs')) {
				$(this).remove();
			}
			else {
				$(this).removeClass([
					'ui-state-default',
					'ui-corner-top',
					'ui-tabs-selected',
					'ui-state-active',
					'ui-state-hover',
					'ui-state-focus',
					'ui-state-disabled',
					'ui-tabs-panel',
					'ui-widget-content',
					'ui-corner-bottom',
					'ui-tabs-hide'
				].join(' '));
			}
		});

		if (o.cookie) {
			this._cookie(null, o.cookie);
		}
	},

	add: function(url, label, index) {
		if (index === undefined) {
			index = this.anchors.length; // append by default
		}

		var self = this, o = this.options,
			$li = $(o.tabTemplate.replace(/#\{href\}/g, url).replace(/#\{label\}/g, label)),
			id = !url.indexOf('#') ? url.replace('#', '') : this._tabId($('a', $li)[0]);

		$li.addClass('ui-state-default ui-corner-top').data('destroy.tabs', true);

		// try to find an existing element before creating a new one
		var $panel = $('#' + id);
		if (!$panel.length) {
			$panel = $(o.panelTemplate).attr('id', id).data('destroy.tabs', true);
		}
		$panel.addClass('ui-tabs-panel ui-widget-content ui-corner-bottom ui-tabs-hide');

		if (index >= this.lis.length) {
			$li.appendTo(this.list);
			$panel.appendTo(this.list[0].parentNode);
		}
		else {
			$li.insertBefore(this.lis[index]);
			$panel.insertBefore(this.panels[index]);
		}

		o.disabled = $.map(o.disabled,
			function(n, i) { return n >= index ? ++n : n; });

		this._tabify();

		if (this.anchors.length == 1) { // after tabify
			$li.addClass('ui-tabs-selected ui-state-active');
			$panel.removeClass('ui-tabs-hide');
			this.element.queue("tabs", function() {
				self._trigger('show', null, self._ui(self.anchors[0], self.panels[0]));
			});
				
			this.load(0);
		}

		// callback
		this._trigger('add', null, this._ui(this.anchors[index], this.panels[index]));
	},

	remove: function(index) {
		var o = this.options, $li = this.lis.eq(index).remove(),
			$panel = this.panels.eq(index).remove();

		// If selected tab was removed focus tab to the right or
		// in case the last tab was removed the tab to the left.
		if ($li.hasClass('ui-tabs-selected') && this.anchors.length > 1) {
			this.select(index + (index + 1 < this.anchors.length ? 1 : -1));
		}

		o.disabled = $.map($.grep(o.disabled, function(n, i) { return n != index; }),
			function(n, i) { return n >= index ? --n : n; });

		this._tabify();

		// callback
		this._trigger('remove', null, this._ui($li.find('a')[0], $panel[0]));
	},

	enable: function(index) {
		var o = this.options;
		if ($.inArray(index, o.disabled) == -1) {
			return;
		}

		this.lis.eq(index).removeClass('ui-state-disabled');
		o.disabled = $.grep(o.disabled, function(n, i) { return n != index; });

		// callback
		this._trigger('enable', null, this._ui(this.anchors[index], this.panels[index]));
	},

	disable: function(index) {
		var self = this, o = this.options;
		if (index != o.selected) { // cannot disable already selected tab
			this.lis.eq(index).addClass('ui-state-disabled');

			o.disabled.push(index);
			o.disabled.sort();

			// callback
			this._trigger('disable', null, this._ui(this.anchors[index], this.panels[index]));
		}
	},

	select: function(index) {
		if (typeof index == 'string') {
			index = this.anchors.index(this.anchors.filter('[href$=' + index + ']'));
		}
		else if (index === null) { // usage of null is deprecated, TODO remove in next release
			index = -1;
		}
		if (index == -1 && this.options.collapsible) {
			index = this.options.selected;
		}

		this.anchors.eq(index).trigger(this.options.event + '.tabs');
	},

	load: function(index) {
		var self = this, o = this.options, a = this.anchors.eq(index)[0], url = $.data(a, 'load.tabs');

		this.abort();

		// not remote or from cache
		if (!url || this.element.queue("tabs").length !== 0 && $.data(a, 'cache.tabs')) {
			this.element.dequeue("tabs");
			return;
		}

		// load remote from here on
		this.lis.eq(index).addClass('ui-state-processing');

		if (o.spinner) {
			var span = $('span', a);
			span.data('label.tabs', span.html()).html(o.spinner);
		}

		this.xhr = $.ajax($.extend({}, o.ajaxOptions, {
			url: url,
			success: function(r, s) {
				$(self._sanitizeSelector(a.hash)).html(r);

				// take care of tab labels
				self._cleanup();

				if (o.cache) {
					$.data(a, 'cache.tabs', true); // if loaded once do not load them again
				}

				// callbacks
				self._trigger('load', null, self._ui(self.anchors[index], self.panels[index]));
				try {
					o.ajaxOptions.success(r, s);
				}
				catch (e) {}

				// last, so that load event is fired before show...
				self.element.dequeue("tabs");
			}
		}));
	},

	abort: function() {
		// stop possibly running animations
		this.element.queue([]);
		this.panels.stop(false, true);

		// terminate pending requests from other tabs
		if (this.xhr) {
			this.xhr.abort();
			delete this.xhr;
		}

		// take care of tab labels
		this._cleanup();

	},

	url: function(index, url) {
		this.anchors.eq(index).removeData('cache.tabs').data('load.tabs', url);
	},

	length: function() {
		return this.anchors.length;
	}

});

$.extend($.ui.tabs, {
	version: '1.7.2',
	getter: 'length',
	defaults: {
		ajaxOptions: null,
		cache: false,
		cookie: null, // e.g. { expires: 7, path: '/', domain: 'jquery.com', secure: true }
		collapsible: false,
		disabled: [],
		event: 'click',
		fx: null, // e.g. { height: 'toggle', opacity: 'toggle', duration: 200 }
		idPrefix: 'ui-tabs-',
		panelTemplate: '<div></div>',
		spinner: '<em>Loading&#8230;</em>',
		tabTemplate: '<li><a href="#{href}"><span>#{label}</span></a></li>'
	}
});

/*
 * Tabs Extensions
 */

/*
 * Rotate
 */
$.extend($.ui.tabs.prototype, {
	rotation: null,
	rotate: function(ms, continuing) {

		var self = this, o = this.options;
		
		var rotate = self._rotate || (self._rotate = function(e) {
			clearTimeout(self.rotation);
			self.rotation = setTimeout(function() {
				var t = o.selected;
				self.select( ++t < self.anchors.length ? t : 0 );
			}, ms);
			
			if (e) {
				e.stopPropagation();
			}
		});
		
		var stop = self._unrotate || (self._unrotate = !continuing ?
			function(e) {
				if (e.clientX) { // in case of a true click
					self.rotate(null);
				}
			} :
			function(e) {
				t = o.selected;
				rotate();
			});

		// start rotation
		if (ms) {
			this.element.bind('tabsshow', rotate);
			this.anchors.bind(o.event + '.tabs', stop);
			rotate();
		}
		// stop rotation
		else {
			clearTimeout(self.rotation);
			this.element.unbind('tabsshow', rotate);
			this.anchors.unbind(o.event + '.tabs', stop);
			delete this._rotate;
			delete this._unrotate;
		}
	}
});

})(jQuery);
/*
 * jQuery UI Slider 1.7.2
 *
 * Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about)
 * Dual licensed under the MIT (MIT-LICENSE.txt)
 * and GPL (GPL-LICENSE.txt) licenses.
 *
 * http://docs.jquery.com/UI/Slider
 *
 * Depends:
 *	ui.core.js
 */

(function($) {

$.widget("ui.slider", $.extend({}, $.ui.mouse, {

	_init: function() {

		var self = this, o = this.options;
		this._keySliding = false;
		this._handleIndex = null;
		this._detectOrientation();
		this._mouseInit();

		this.element
			.addClass("ui-slider"
				+ " ui-slider-" + this.orientation
				+ " ui-widget"
				+ " ui-widget-content"
				+ " ui-corner-all");

		this.range = $([]);

		if (o.range) {

			if (o.range === true) {
				this.range = $('<div></div>');
				if (!o.values) o.values = [this._valueMin(), this._valueMin()];
				if (o.values.length && o.values.length != 2) {
					o.values = [o.values[0], o.values[0]];
				}
			} else {
				this.range = $('<div></div>');
			}

			this.range
				.appendTo(this.element)
				.addClass("ui-slider-range");

			if (o.range == "min" || o.range == "max") {
				this.range.addClass("ui-slider-range-" + o.range);
			}

			// note: this isn't the most fittingly semantic framework class for this element,
			// but worked best visually with a variety of themes
			this.range.addClass("ui-widget-header");

		}

		if ($(".ui-slider-handle", this.element).length == 0)
			$('<a href="#"></a>')
				.appendTo(this.element)
				.addClass("ui-slider-handle");

		if (o.values && o.values.length) {
			while ($(".ui-slider-handle", this.element).length < o.values.length)
				$('<a href="#"></a>')
					.appendTo(this.element)
					.addClass("ui-slider-handle");
		}

		this.handles = $(".ui-slider-handle", this.element)
			.addClass("ui-state-default"
				+ " ui-corner-all");

		this.handle = this.handles.eq(0);

		this.handles.add(this.range).filter("a")
			.click(function(event) {
				event.preventDefault();
			})
			.hover(function() {
				if (!o.disabled) {
					$(this).addClass('ui-state-hover');
				}
			}, function() {
				$(this).removeClass('ui-state-hover');
			})
			.focus(function() {
				if (!o.disabled) {
					$(".ui-slider .ui-state-focus").removeClass('ui-state-focus'); $(this).addClass('ui-state-focus');
				} else {
					$(this).blur();
				}
			})
			.blur(function() {
				$(this).removeClass('ui-state-focus');
			});

		this.handles.each(function(i) {
			$(this).data("index.ui-slider-handle", i);
		});

		this.handles.keydown(function(event) {

			var ret = true;

			var index = $(this).data("index.ui-slider-handle");

			if (self.options.disabled)
				return;

			switch (event.keyCode) {
				case $.ui.keyCode.HOME:
				case $.ui.keyCode.END:
				case $.ui.keyCode.UP:
				case $.ui.keyCode.RIGHT:
				case $.ui.keyCode.DOWN:
				case $.ui.keyCode.LEFT:
					ret = false;
					if (!self._keySliding) {
						self._keySliding = true;
						$(this).addClass("ui-state-active");
						self._start(event, index);
					}
					break;
			}

			var curVal, newVal, step = self._step();
			if (self.options.values && self.options.values.length) {
				curVal = newVal = self.values(index);
			} else {
				curVal = newVal = self.value();
			}

			switch (event.keyCode) {
				case $.ui.keyCode.HOME:
					newVal = self._valueMin();
					break;
				case $.ui.keyCode.END:
					newVal = self._valueMax();
					break;
				case $.ui.keyCode.UP:
				case $.ui.keyCode.RIGHT:
					if(curVal == self._valueMax()) return;
					newVal = curVal + step;
					break;
				case $.ui.keyCode.DOWN:
				case $.ui.keyCode.LEFT:
					if(curVal == self._valueMin()) return;
					newVal = curVal - step;
					break;
			}

			self._slide(event, index, newVal);

			return ret;

		}).keyup(function(event) {

			var index = $(this).data("index.ui-slider-handle");

			if (self._keySliding) {
				self._stop(event, index);
				self._change(event, index);
				self._keySliding = false;
				$(this).removeClass("ui-state-active");
			}

		});

		this._refreshValue();

	},

	destroy: function() {

		this.handles.remove();
		this.range.remove();

		this.element
			.removeClass("ui-slider"
				+ " ui-slider-horizontal"
				+ " ui-slider-vertical"
				+ " ui-slider-disabled"
				+ " ui-widget"
				+ " ui-widget-content"
				+ " ui-corner-all")
			.removeData("slider")
			.unbind(".slider");

		this._mouseDestroy();

	},

	_mouseCapture: function(event) {

		var o = this.options;

		if (o.disabled)
			return false;

		this.elementSize = {
			width: this.element.outerWidth(),
			height: this.element.outerHeight()
		};
		this.elementOffset = this.element.offset();

		var position = { x: event.pageX, y: event.pageY };
		var normValue = this._normValueFromMouse(position);

		var distance = this._valueMax() - this._valueMin() + 1, closestHandle;
		var self = this, index;
		this.handles.each(function(i) {
			var thisDistance = Math.abs(normValue - self.values(i));
			if (distance > thisDistance) {
				distance = thisDistance;
				closestHandle = $(this);
				index = i;
			}
		});

		// workaround for bug #3736 (if both handles of a range are at 0,
		// the first is always used as the one with least distance,
		// and moving it is obviously prevented by preventing negative ranges)
		if(o.range == true && this.values(1) == o.min) {
			closestHandle = $(this.handles[++index]);
		}

		this._start(event, index);

		self._handleIndex = index;

		closestHandle
			.addClass("ui-state-active")
			.focus();
		
		var offset = closestHandle.offset();
		var mouseOverHandle = !$(event.target).parents().andSelf().is('.ui-slider-handle');
		this._clickOffset = mouseOverHandle ? { left: 0, top: 0 } : {
			left: event.pageX - offset.left - (closestHandle.width() / 2),
			top: event.pageY - offset.top
				- (closestHandle.height() / 2)
				- (parseInt(closestHandle.css('borderTopWidth'),10) || 0)
				- (parseInt(closestHandle.css('borderBottomWidth'),10) || 0)
				+ (parseInt(closestHandle.css('marginTop'),10) || 0)
		};

		normValue = this._normValueFromMouse(position);
		this._slide(event, index, normValue);
		return true;

	},

	_mouseStart: function(event) {
		return true;
	},

	_mouseDrag: function(event) {

		var position = { x: event.pageX, y: event.pageY };
		var normValue = this._normValueFromMouse(position);
		
		this._slide(event, this._handleIndex, normValue);

		return false;

	},

	_mouseStop: function(event) {

		this.handles.removeClass("ui-state-active");
		this._stop(event, this._handleIndex);
		this._change(event, this._handleIndex);
		this._handleIndex = null;
		this._clickOffset = null;

		return false;

	},
	
	_detectOrientation: function() {
		this.orientation = this.options.orientation == 'vertical' ? 'vertical' : 'horizontal';
	},

	_normValueFromMouse: function(position) {

		var pixelTotal, pixelMouse;
		if ('horizontal' == this.orientation) {
			pixelTotal = this.elementSize.width;
			pixelMouse = position.x - this.elementOffset.left - (this._clickOffset ? this._clickOffset.left : 0);
		} else {
			pixelTotal = this.elementSize.height;
			pixelMouse = position.y - this.elementOffset.top - (this._clickOffset ? this._clickOffset.top : 0);
		}

		var percentMouse = (pixelMouse / pixelTotal);
		if (percentMouse > 1) percentMouse = 1;
		if (percentMouse < 0) percentMouse = 0;
		if ('vertical' == this.orientation)
			percentMouse = 1 - percentMouse;

		var valueTotal = this._valueMax() - this._valueMin(),
			valueMouse = percentMouse * valueTotal,
			valueMouseModStep = valueMouse % this.options.step,
			normValue = this._valueMin() + valueMouse - valueMouseModStep;

		if (valueMouseModStep > (this.options.step / 2))
			normValue += this.options.step;

		// Since JavaScript has problems with large floats, round
		// the final value to 5 digits after the decimal point (see #4124)
		return parseFloat(normValue.toFixed(5));

	},

	_start: function(event, index) {
		var uiHash = {
			handle: this.handles[index],
			value: this.value()
		};
		if (this.options.values && this.options.values.length) {
			uiHash.value = this.values(index);
			uiHash.values = this.values();
		}
		this._trigger("start", event, uiHash);
	},

	_slide: function(event, index, newVal) {

		var handle = this.handles[index];

		if (this.options.values && this.options.values.length) {
			var otherVal = this.values(index ? 0 : 1);

			if ((this.options.values.length == 2 && this.options.range === true) && 
				((index == 0 && newVal > otherVal) || (index == 1 && newVal < otherVal))){
 				newVal = otherVal;
			}

			if (newVal != this.values(index)) {
				var newValues = this.values();
				newValues[index] = newVal;
				// A slide can be canceled by returning false from the slide callback
				var allowed = this._trigger("slide", event, {
					handle: this.handles[index],
					value: newVal,
					values: newValues
				});
				var otherVal = this.values(index ? 0 : 1);
				if (allowed !== false) {
					this.values(index, newVal, ( event.type == 'mousedown' && this.options.animate ), true);
				}
			}

		} else {

			if (newVal != this.value()) {
				// A slide can be canceled by returning false from the slide callback
				var allowed = this._trigger("slide", event, {
					handle: this.handles[index],
					value: newVal
				});
				if (allowed !== false) {
					this._setData('value', newVal, ( event.type == 'mousedown' && this.options.animate ));
				}
					
			}

		}

	},

	_stop: function(event, index) {
		var uiHash = {
			handle: this.handles[index],
			value: this.value()
		};
		if (this.options.values && this.options.values.length) {
			uiHash.value = this.values(index);
			uiHash.values = this.values();
		}
		this._trigger("stop", event, uiHash);
	},

	_change: function(event, index) {
		var uiHash = {
			handle: this.handles[index],
			value: this.value()
		};
		if (this.options.values && this.options.values.length) {
			uiHash.value = this.values(index);
			uiHash.values = this.values();
		}
		this._trigger("change", event, uiHash);
	},

	value: function(newValue) {

		if (arguments.length) {
			this._setData("value", newValue);
			this._change(null, 0);
		}

		return this._value();

	},

	values: function(index, newValue, animated, noPropagation) {

		if (arguments.length > 1) {
			this.options.values[index] = newValue;
			this._refreshValue(animated);
			if(!noPropagation) this._change(null, index);
		}

		if (arguments.length) {
			if (this.options.values && this.options.values.length) {
				return this._values(index);
			} else {
				return this.value();
			}
		} else {
			return this._values();
		}

	},

	_setData: function(key, value, animated) {

		$.widget.prototype._setData.apply(this, arguments);

		switch (key) {
			case 'disabled':
				if (value) {
					this.handles.filter(".ui-state-focus").blur();
					this.handles.removeClass("ui-state-hover");
					this.handles.attr("disabled", "disabled");
				} else {
					this.handles.removeAttr("disabled");
				}
			case 'orientation':

				this._detectOrientation();
				
				this.element
					.removeClass("ui-slider-horizontal ui-slider-vertical")
					.addClass("ui-slider-" + this.orientation);
				this._refreshValue(animated);
				break;
			case 'value':
				this._refreshValue(animated);
				break;
		}

	},

	_step: function() {
		var step = this.options.step;
		return step;
	},

	_value: function() {

		var val = this.options.value;
		if (val < this._valueMin()) val = this._valueMin();
		if (val > this._valueMax()) val = this._valueMax();

		return val;

	},

	_values: function(index) {

		if (arguments.length) {
			var val = this.options.values[index];
			if (val < this._valueMin()) val = this._valueMin();
			if (val > this._valueMax()) val = this._valueMax();

			return val;
		} else {
			return this.options.values;
		}

	},

	_valueMin: function() {
		var valueMin = this.options.min;
		return valueMin;
	},

	_valueMax: function() {
		var valueMax = this.options.max;
		return valueMax;
	},

	_refreshValue: function(animate) {

		var oRange = this.options.range, o = this.options, self = this;

		if (this.options.values && this.options.values.length) {
			var vp0, vp1;
			this.handles.each(function(i, j) {
				var valPercent = (self.values(i) - self._valueMin()) / (self._valueMax() - self._valueMin()) * 100;
				var _set = {}; _set[self.orientation == 'horizontal' ? 'left' : 'bottom'] = valPercent + '%';
				$(this).stop(1,1)[animate ? 'animate' : 'css'](_set, o.animate);
				if (self.options.range === true) {
					if (self.orientation == 'horizontal') {
						(i == 0) && self.range.stop(1,1)[animate ? 'animate' : 'css']({ left: valPercent + '%' }, o.animate);
						(i == 1) && self.range[animate ? 'animate' : 'css']({ width: (valPercent - lastValPercent) + '%' }, { queue: false, duration: o.animate });
					} else {
						(i == 0) && self.range.stop(1,1)[animate ? 'animate' : 'css']({ bottom: (valPercent) + '%' }, o.animate);
						(i == 1) && self.range[animate ? 'animate' : 'css']({ height: (valPercent - lastValPercent) + '%' }, { queue: false, duration: o.animate });
					}
				}
				lastValPercent = valPercent;
			});
		} else {
			var value = this.value(),
				valueMin = this._valueMin(),
				valueMax = this._valueMax(),
				valPercent = valueMax != valueMin
					? (value - valueMin) / (valueMax - valueMin) * 100
					: 0;
			var _set = {}; _set[self.orientation == 'horizontal' ? 'left' : 'bottom'] = valPercent + '%';
			this.handle.stop(1,1)[animate ? 'animate' : 'css'](_set, o.animate);

			(oRange == "min") && (this.orientation == "horizontal") && this.range.stop(1,1)[animate ? 'animate' : 'css']({ width: valPercent + '%' }, o.animate);
			(oRange == "max") && (this.orientation == "horizontal") && this.range[animate ? 'animate' : 'css']({ width: (100 - valPercent) + '%' }, { queue: false, duration: o.animate });
			(oRange == "min") && (this.orientation == "vertical") && this.range.stop(1,1)[animate ? 'animate' : 'css']({ height: valPercent + '%' }, o.animate);
			(oRange == "max") && (this.orientation == "vertical") && this.range[animate ? 'animate' : 'css']({ height: (100 - valPercent) + '%' }, { queue: false, duration: o.animate });
		}

	}
	
}));

$.extend($.ui.slider, {
	getter: "value values",
	version: "1.7.2",
	eventPrefix: "slide",
	defaults: {
		animate: false,
		delay: 0,
		distance: 0,
		max: 100,
		min: 0,
		orientation: 'horizontal',
		range: false,
		step: 1,
		value: 0,
		values: null
	}
});

})(jQuery);
/*
 * 
 * jFontSizer Plugin
 * Written by fluidByte - http://www.fluidbyte.net
 * 
 * 
 */

jQuery.fn.jfontsizer = function(o) {

	// Cookie functions
	function setCookie(c_name,value,expiredays){
	var exdate=new Date();
	exdate.setDate(exdate.getDate()+expiredays);
	document.cookie=c_name+ "=" +escape(value)+
	((expiredays==null) ? "" : ";expires="+exdate.toGMTString());
	}
	
	function getCookie(c_name){
	if (document.cookie.length>0){
	  c_start=document.cookie.indexOf(c_name + "=");
	  if (c_start!=-1){
	    c_start=c_start + c_name.length+1;
	    c_end=document.cookie.indexOf(";",c_start);
	    if (c_end==-1) c_end=document.cookie.length;
	    return unescape(document.cookie.substring(c_start,c_end));
	    }
	  }
	return "";
	}

    
	// Defaults
	var o = jQuery.extend( {
		applyTo: 'body',
		changesmall: '2',
		changelarge: '2',
		expire: 30
	},o);
	
	var s = '';
	var m = '';
	var l = '';
	
	// Current
	var c = 'fs_med';
	
	// Check cookie  
	if (getCookie('fsizer') != "") {
		var c = getCookie('fsizer');
		switch (c) {
			case 'fs_sml':
				s = 'fsactive';
			$(o.applyTo).css('font-size','.'+(10-o.changesmall)+'em');
				break;
			case 'fs_med':
				m = 'fsactive';
			$(o.applyTo).css('font-size','1em');
				break;
			case 'fs_lrg':
				l = 'fsactive';
			$(o.applyTo).css('font-size','1.'+o.changelarge+'em');
				break;
		}
	}
	else {
		m = "fsactive";
	}
	
	// Create font-chooser box
	$(this).html('<div class="fsizer"><a id="fs_sml" class="'+s+'">A</a><a id="fs_med" class="'+m+'">A</a><a id="fs_lrg" class="'+l+'">A</a><br style="clear: both" /></div>');
	
	
	$('.fsizer a').click(function(){
	
		var t = $(this).attr('id');
		
		setCookie('fsizer',t,o.expire);
		
		$('.fsizer a').removeClass('fsactive');
		$(this).addClass('fsactive');
		
		var f = $(o.applyTo).css('font-size');	
		
		switch(t){
			case 'fs_sml':
				$(o.applyTo).css('font-size','.'+(10-o.changesmall)+'em');
				break;
			case 'fs_med':
			    $(o.applyTo).css('font-size','1em');
				break;
			case 'fs_lrg':
				$(o.applyTo).css('font-size','1.'+o.changelarge+'em');
				break;
		}	
	});
};/**
 * jQuery.ScrollTo - Easy element scrolling using jQuery.
 * Copyright (c) 2007-2009 Ariel Flesler - aflesler(at)gmail(dot)com | http://flesler.blogspot.com
 * Dual licensed under MIT and GPL.
 * Date: 5/25/2009
 * @author Ariel Flesler
 * @version 1.4.2
 *
 * http://flesler.blogspot.com/2007/10/jqueryscrollto.html
 */
;(function(d){var k=d.scrollTo=function(a,i,e){d(window).scrollTo(a,i,e)};k.defaults={axis:'xy',duration:parseFloat(d.fn.jquery)>=1.3?0:1};k.window=function(a){return d(window)._scrollable()};d.fn._scrollable=function(){return this.map(function(){var a=this,i=!a.nodeName||d.inArray(a.nodeName.toLowerCase(),['iframe','#document','html','body'])!=-1;if(!i)return a;var e=(a.contentWindow||a).document||a.ownerDocument||a;return d.browser.safari||e.compatMode=='BackCompat'?e.body:e.documentElement})};d.fn.scrollTo=function(n,j,b){if(typeof j=='object'){b=j;j=0}if(typeof b=='function')b={onAfter:b};if(n=='max')n=9e9;b=d.extend({},k.defaults,b);j=j||b.speed||b.duration;b.queue=b.queue&&b.axis.length>1;if(b.queue)j/=2;b.offset=p(b.offset);b.over=p(b.over);return this._scrollable().each(function(){var q=this,r=d(q),f=n,s,g={},u=r.is('html,body');switch(typeof f){case'number':case'string':if(/^([+-]=)?\d+(\.\d+)?(px|%)?$/.test(f)){f=p(f);break}f=d(f,this);case'object':if(f.is||f.style)s=(f=d(f)).offset()}d.each(b.axis.split(''),function(a,i){var e=i=='x'?'Left':'Top',h=e.toLowerCase(),c='scroll'+e,l=q[c],m=k.max(q,i);if(s){g[c]=s[h]+(u?0:l-r.offset()[h]);if(b.margin){g[c]-=parseInt(f.css('margin'+e))||0;g[c]-=parseInt(f.css('border'+e+'Width'))||0}g[c]+=b.offset[h]||0;if(b.over[h])g[c]+=f[i=='x'?'width':'height']()*b.over[h]}else{var o=f[h];g[c]=o.slice&&o.slice(-1)=='%'?parseFloat(o)/100*m:o}if(/^\d+$/.test(g[c]))g[c]=g[c]<=0?0:Math.min(g[c],m);if(!a&&b.queue){if(l!=g[c])t(b.onAfterFirst);delete g[c]}});t(b.onAfter);function t(a){r.animate(g,j,b.easing,a&&function(){a.call(this,n,b)})}}).end()};k.max=function(a,i){var e=i=='x'?'Width':'Height',h='scroll'+e;if(!d(a).is('html,body'))return a[h]-d(a)[e.toLowerCase()]();var c='client'+e,l=a.ownerDocument.documentElement,m=a.ownerDocument.body;return Math.max(l[h],m[h])-Math.min(l[c],m[c])};function p(a){return typeof a=='object'?a:{top:a,left:a}}})(jQuery);/**
 * jCorners - Cross-Browser Corners with JQuery
 *   http://jcorners.culturezoo.com/
 *
 * Copyright (c) 2008 Levi Nunnink, Culturezoo, LLC (http://culturezoo.com)
 * Licensed under the GPL
 *
 * Built on top of the jQuery library
 *   http://jquery.com
 *
 * Inspired by the "Corners Experiment" by Jonathan Snook
 *   http://snook.ca/archives/html_and_css/rounded_corners_experiment_ie/
 */

var defaults = {
	radius: 5
};
jQuery.fn.jcorners = function(o) {
	return this.each(function() {
		new $jc(this, o);
	});
};
jQuery.jcorners = function(e, o) {
	this.options = $.extend({}, defaults, o || {});
	if(this.browser.msie){
		this("body").prepend("<xml:namespace ns='urn:schemas-microsoft-com:vml' prefix='v' />");
		if($(e).css("background-color") != undefined){
			var bg = $(e).css("background-color");
		}else{
			var bg = "white";
		}
		var guid = this.guid();
		var padding = this.intval(this(e).css("padding"));
		var arc = (this.options.radius / this(e).height());
		this(e).wrap("<v:roundrect arcsize='"+arc+"' class='corner-wrapper' id='wrapper-"+guid+"' fillcolor='"+bg+"' strokecolor='"+bg+"'></v:roundrect>");
		this("#wrapper-"+guid+"").css("behavior","url(#default#VML)");
		this("#wrapper-"+guid+"").css("background-color","transparent");
		this("#wrapper-"+guid+"").css("padding",this.options.radius+"px");
		this("#wrapper-"+guid+"").css("height","100%");
		this("#wrapper-"+guid+"").css("width",this(e).width()+(padding*2)+"px");
		this("#wrapper-"+guid+"").css("border-color:",bg);
		this("#wrapper-"+guid+"").css("display","inline-block");

	}else if(this.browser.mozilla){
		this(e).css("-moz-border-radius",this.options.radius+"px");
	}else if(this.browser.safari){
		this(e).css("-webkit-border-radius",this.options.radius+"px");
	}else{
		this(e).css("border-radius",this.options.radius+"px");
	}
	return this;
}
jQuery.extend({
	intval: function(v) {
        v = parseInt(v);
        return isNaN(v) ? 0 : v;
    },
    guid: function(){
		var result, i, j;
		result = '';
		for(j=0; j<32; j++)
		{
			if( j == 8 || j == 12|| j == 16|| j == 20)
			result = result + '-';
			i = Math.floor(Math.random()*16).toString(16).toUpperCase();
			result = result + i;
		}
		return result
	} 
});
/****************************************************************
 *                                                              *
 *  JQuery Curvy Corners by Mike Jolley                         *
 *  http://blue-anvil.com                                       *
 *  http://code.google.com/p/jquerycurvycorners/                *
 *  ==========================================================  *
 *                                                              *
 *  Version 2.1.1 (Based on CC 2.1 beta)                          *
 *                                                              *
 *  Original by: Terry Riegel, Cameron Cooke and Tim Hutchison  *
 *  Website: http://www.curvycorners.net                        *
 *                                                              *
 *  This library is free software; you can redistribute         *
 *  it and/or modify it under the terms of the GNU              *
 *  Lesser General Public License as published by the           *
 *  Free Software Foundation; either version 2.1 of the         *
 *  License, or (at your option) any later version.             *
 *                                                              *
 *  This library is distributed in the hope that it will        *
 *  be useful, but WITHOUT ANY WARRANTY; without even the       *
 *  implied warranty of MERCHANTABILITY or FITNESS FOR A        *
 *  PARTICULAR PURPOSE. See the GNU Lesser General Public       *
 *  License for more details.                                   *
 *                                                              *
 *  You should have received a copy of the GNU Lesser           *
 *  General Public License along with this library;             *
 *  Inc., 59 Temple Place, Suite 330, Boston,                   *
 *  MA 02111-1307 USA                                           *
 *                                                              *
 ****************************************************************/

/*
Usage:
	To use this plugin just apply borders via CSS Rules and include this plugin - it will automatically detect styles and apply corners.
	
	Opera and Chrome support rounded corners via border-radius
	
	Safari and Mozilla support rounded borders via -webkit-border-radius and -moz-border-radius
		
	IE (any version) does not support border-radius - this is all we need to support.
		
	So to make curvycorners work with any major browser simply add the following CSS declarations:
	
	.round { 
		border-radius: 3px;
		-webkit-border-radius: 3px;
		-moz-border-radius: 3px;
	}
	
	----
	
	If you don't want to use the above method, you can still use the direct syntax if you want:

		$('.myBox').corner();
		
	The script will still use border-radius for those which support it.
*/  
(function($) { 

	// object that parses border-radius properties for a box
	function curvyCnrSpec(selText) {
		this.selectorText = selText;
		this.tlR = this.trR = this.blR = this.brR = 0;
		this.tlu = this.tru = this.blu = this.bru = "";
		this.antiAlias = true; // default true
	};
	curvyCnrSpec.prototype.setcorner = function(tb, lr, radius, unit) {
		if (!tb) { // no corner specified
			this.tlR = this.trR = this.blR = this.brR = parseInt(radius);
			this.tlu = this.tru = this.blu = this.bru = unit;
		} else { // corner specified
			propname = tb.charAt(0) + lr.charAt(0);
			this[propname + 'R'] = parseInt(radius);
			this[propname + 'u'] = unit;
		}
	};
	curvyCnrSpec.prototype.get = function(prop) {
		if (/^(t|b)(l|r)(R|u)$/.test(prop)) return this[prop];
		if (/^(t|b)(l|r)Ru$/.test(prop)) {
			var pname = prop.charAt(0) + prop.charAt(1);
			return this[pname + 'R'] + this[pname + 'u'];
		}
		if (/^(t|b)Ru?$/.test(prop)) {
			var tb = prop.charAt(0);
			tb += this[tb + 'lR'] > this[tb + 'rR'] ? 'l' : 'r';
			var retval = this[tb + 'R'];
			if (prop.length === 3 && prop.charAt(2) === 'u')
		  		retval += this[tb = 'u'];
			return retval;
		}
		throw new Error('Don\'t recognize property ' + prop);
	};
	curvyCnrSpec.prototype.radiusdiff = function(tb) {
		if (tb !== 't' && tb !== 'b') throw new Error("Param must be 't' or 'b'");
		return Math.abs(this[tb + 'lR'] - this[tb + 'rR']);
	};
	curvyCnrSpec.prototype.setfrom = function(obj) {
		this.tlu = this.tru = this.blu = this.bru = 'px'; // default to px
		if ('tl' in obj) this.tlR = obj.tl.radius;
		if ('tr' in obj) this.trR = obj.tr.radius;
		if ('bl' in obj) this.blR = obj.bl.radius;
		if ('br' in obj) this.brR = obj.br.radius;
		if ('antiAlias' in obj) this.antiAlias = obj.antiAlias;
	};
	curvyCnrSpec.prototype.cloneOn = function(box) { // not needed by IE
		var props = ['tl', 'tr', 'bl', 'br'];
		var converted = 0;
		var i, propu;	
		for (i in props) if (!isNaN(i)) {
			propu = this[props[i] + 'u'];
			if (propu !== '' && propu !== 'px') {
				converted = new curvyCnrSpec;
				break;
			}
		}
		if (!converted)
			converted = this; // no need to clone
		else {
			var propi, propR, save = curvyBrowser.get_style(box, 'left');
			for (i in props) if (!isNaN(i)) {
				propi = props[i];
				propu = this[propi + 'u'];
				propR = this[propi + 'R'];
				if (propu !== 'px') {
					var save = box.style.left;
					box.style.left = propR + propu;
					propR = box.style.pixelLeft;
					box.style.left = save;
				}
				converted[propi + 'R'] = propR;
				converted[propi + 'u'] = 'px';
			}
			box.style.left = save;
		}
		return converted;
	};
	curvyCnrSpec.prototype.radiusSum = function(tb) {
		if (tb !== 't' && tb !== 'b') throw new Error("Param must be 't' or 'b'");
		return this[tb + 'lR'] + this[tb + 'rR'];
	};
	curvyCnrSpec.prototype.radiusCount = function(tb) {
		var count = 0;
		if (this[tb + 'lR']) ++count;
		if (this[tb + 'rR']) ++count;
		return count;
	};
	curvyCnrSpec.prototype.cornerNames = function() {
		var ret = [];
		if (this.tlR) ret.push('tl');
		if (this.trR) ret.push('tr');
		if (this.blR) ret.push('bl');
		if (this.brR) ret.push('br');
		return ret;
	};
	
	if (typeof redrawList === 'undefined') redrawList = new Array;
	
	$.fn.corner = function(options) {
		
		// Check for Native Round Corners
		var nativeCornersSupported = false;
		var checkWebkit, checkMozilla, checkStandard;
		try {	checkWebkit = (document.body.style.WebkitBorderRadius !== undefined);	} catch(err) {}
		try {	checkMozilla = (document.body.style.MozBorderRadius !== undefined);	} catch(err) {}
		try {	checkStandard = (document.body.style.BorderRadius !== undefined);	} catch(err) {}		
		try {	checkStandard = (document.body.style.borderRadius !== undefined);	} catch(err) {}
		if (checkWebkit || checkMozilla || checkStandard) nativeCornersSupported = true;
		
		if (options instanceof curvyCnrSpec) {
			settings = options;
		}
		else {
		
			var options = jQuery.extend({
				tl: { radius: 8 },
				tr: { radius: 8 },
				bl: { radius: 8 },
				br: { radius: 8 },
				antiAlias: true
			}, options);
			
			var settings = new curvyCnrSpec(this);
			settings.setfrom(options);
		
		}
		
  		// Apply the corners to the passed object!
		function curvyObject()
		{				
			// Setup Globals
			this.box              = arguments[1];
			this.settings         = arguments[0];
			var $$ 						= $(this.box);
			var boxDisp;
			
			this.masterCorners 			= new Array();
			//this.contentDIV 				= null;			
			this.topContainer = this.bottomContainer = this.shell = boxDisp = null;
		
			// Get CSS of box and define vars
			var boxWidth = $$.innerWidth(); // Does not include border width

			if ($$.is('table'))
				throw new Error("You cannot apply corners to " + this.box.tagName + " elements.", "Error");
			
			// try to handle attempts to style inline elements
			if ($$.css('display') === 'inline') {
				$$.css('display', 'inline-block');
			}
			
			// all attempts have failed
			
			if (!boxWidth) {
				this.applyCorners = function() {}; // make the error harmless
				return;
			}
			if (arguments[0] instanceof curvyCnrSpec) {
				this.spec = arguments[0].cloneOn(this.box); // convert non-pixel units
			} else {
				this.spec = new curvyCnrSpec('');
				this.spec.setfrom(this.settings); // no need for unit conversion, use settings param. directly
			}
			
			// Get box formatting details
			var borderWidth     = $$.css("borderTopWidth") ? $$.css("borderTopWidth") : 0;
			var borderWidthB    = $$.css("borderBottomWidth") ? $$.css("borderBottomWidth") : 0;
			var borderWidthL    = $$.css("borderLeftWidth") ? $$.css("borderLeftWidth") : 0;
			var borderWidthR    = $$.css("borderRightWidth") ? $$.css("borderRightWidth") : 0;
			var borderColour    = $$.css("borderTopColor");
			var borderColourB   = $$.css("borderBottomColor"); 
			var borderColourL   = $$.css("borderLeftColor"); 
			var borderColourR   = $$.css("borderRightColor"); 
			var borderStyle     = $$.css("borderTopStyle");
			var borderStyleB    = $$.css("borderBottomStyle");
			var borderStyleL    = $$.css("borderLeftStyle");
			var borderStyleR    = $$.css("borderRightStyle");
			
			var boxColour       = $$.css("backgroundColor");
			var backgroundImage = $$.css("backgroundImage");		
			var backgroundRepeat= $$.css("backgroundRepeat");
				
			var backgroundPosX, backgroundPosY;
			
			backgroundPosX  = $$.css("backgroundPositionX") ? $$.css("backgroundPositionX") : 0;
			backgroundPosY  = $$.css("backgroundPositionY") ? $$.css("backgroundPositionY") : 0;

			var boxPosition     = $$.css("position");
			var topPadding      = $$.css("paddingTop");
			var bottomPadding   = $$.css("paddingBottom");
			var leftPadding     = $$.css("paddingLeft");
			var rightPadding    = $$.css("paddingRight");
			var border          = $$.css("border");
			var filter = jQuery.browser.version > 7 && $.browser.msie ? $$.css("filter") : null; // IE8 bug fix
			
			var topMaxRadius    = this.spec.get('tR');
			var botMaxRadius    = this.spec.get('bR');
			
			var styleToNPx = function(val) {
				if (typeof val === 'number') return val;
				if (typeof val !== 'string') throw new Error('unexpected styleToNPx type ' + typeof val);
				var matches = /^[-\d.]([a-z]+)$/.exec(val);
				if (matches && matches[1] != 'px') throw new Error('Unexpected unit ' + matches[1]);
				if (isNaN(val = parseInt(val))) val = 0;
				return val;
			};
			var min0Px = function(val) {
				return val <= 0 ? "0" : val + "px";
			};
			
			// Set formatting properties
			try {
				this.borderWidth     = styleToNPx(borderWidth);
				this.borderWidthB    = styleToNPx(borderWidthB);
				this.borderWidthL    = styleToNPx(borderWidthL);
				this.borderWidthR    = styleToNPx(borderWidthR);
				this.boxColour       = curvyObject.format_colour(boxColour);
				this.topPadding      = styleToNPx(topPadding);
				this.bottomPadding   = styleToNPx(bottomPadding);
				this.leftPadding     = styleToNPx(leftPadding);
				this.rightPadding    = styleToNPx(rightPadding);
				this.boxWidth        = boxWidth;
				this.boxHeight       = $$.innerHeight(); // No border
				this.borderColour    = curvyObject.format_colour(borderColour);
				this.borderColourB   = curvyObject.format_colour(borderColourB);
				this.borderColourL   = curvyObject.format_colour(borderColourL);
				this.borderColourR   = curvyObject.format_colour(borderColourR);
				this.borderString    = this.borderWidth + "px" + " " + borderStyle + " " + this.borderColour;
				this.borderStringB   = this.borderWidthB + "px" + " " + borderStyleB + " " + this.borderColourB;
				this.borderStringL   = this.borderWidthL + "px" + " " + borderStyleL + " " + this.borderColourL;
				this.borderStringR   = this.borderWidthR + "px" + " " + borderStyleR + " " + this.borderColourR;
				this.backgroundImage = (backgroundImage != "none" && backgroundImage!="initial") ? backgroundImage : "";
				this.backgroundRepeat= backgroundRepeat;
			}
			catch(e) {}
			
			var clientHeight = this.boxHeight;
			var clientWidth = boxWidth; // save it as it gets trampled on later
			if ($.browser.opera) {
				backgroundPosX = styleToNPx(backgroundPosX);
				backgroundPosY = styleToNPx(backgroundPosY);
				if (backgroundPosX) {
					var t = clientWidth + this.borderWidthL + this.borderWidthR;
					if (backgroundPosX > t) backgroundPosX = t;
					backgroundPosX = (t / backgroundPosX * 100) + '%'; // convert to percentage
				}
				if (backgroundPosY) {
					var t = clientHeight + this.borderWidth + this.borderWidthB;
					if (backgroundPosY > t) backgroundPosY = t;
					backgroundPosY = (t / backgroundPosY * 100) + '%'; // convert to percentage
				}
			}

			// Create content container
			this.contentContainer = document.createElement("div");
			if (filter) this.contentContainer.style.filter = filter; // IE8 bug fix
			while (this.box.firstChild) this.contentContainer.appendChild(this.box.removeChild(this.box.firstChild));
			
			if (boxPosition != "absolute") $$.css("position", "relative");
			this.box.style.padding = '0';
			this.box.style.border = this.box.style.backgroundImage = 'none';
			this.box.style.backgroundColor = 'transparent';
			
			this.box.style.width   = (clientWidth + this.borderWidthL + this.borderWidthR) + 'px';
			this.box.style.height  = (clientHeight + this.borderWidth + this.borderWidthB) + 'px';
			
			// Ok we add an inner div to actually put things into this will allow us to keep the height
			
			var newMainContainer = document.createElement("div");
			$(newMainContainer).css({
				width: clientWidth + 'px',
				'padding':			"0",
				position:			"absolute", 
				height:				min0Px(clientHeight + this.borderWidth + this.borderWidthB - topMaxRadius - botMaxRadius),
				top:				topMaxRadius + "px",
				left:				"0",
				'backgroundColor':	boxColour,
				'backgroundImage':	this.backgroundImage,
				'backgroundRepeat':	this.backgroundRepeat,
				'direction':		'ltr'
			});
			
			if (filter) $(newMainContainer).css('filter', 'filter'); // IE8 bug fix

			if (this.borderWidthL)
				$(newMainContainer).css('borderLeft', this.borderStringL);
			if (this.borderWidth && !topMaxRadius)
				$(newMainContainer).css('borderTop', this.borderString);
			if (this.borderWidthR)
				$(newMainContainer).css('borderRight', this.borderStringR);
			if (this.borderWidthB && !botMaxRadius)
				$(newMainContainer).css('borderBottom', this.borderStringB);
				
			this.shell = this.box.appendChild(newMainContainer);
			
			boxWidth = $(this.shell).css("width");
			
			if (boxWidth === "" || boxWidth === "auto" || boxWidth.indexOf("%") !== -1) throw Error('Shell width is ' + boxWidth);
			
			this.boxWidth = (boxWidth != "" && boxWidth != "auto" && boxWidth.indexOf("%") == -1) ? parseInt(boxWidth) : $(this.shell).width();
			
			this.applyCorners = function() {
				/*
				Set up background offsets. This may need to be delayed until
				the background image is loaded.
				*/
				this.backgroundPosX = this.backgroundPosY = 0;
				if (this.backgroundObject) {
					var bgOffset = function(style, imglen, boxlen) {
						if (style === 0) return 0;
						var retval;
						if (style === 'right' || style === 'bottom') return boxlen - imglen;
						if (style === 'center') return (boxlen - imglen) / 2;
						if (style.indexOf('%') > 0) return (boxlen - imglen) / (100 / parseInt(style));
						return styleToNPx(style);
					};
					this.backgroundPosX  = bgOffset(backgroundPosX, this.backgroundObject.width, clientWidth);
					this.backgroundPosY  = bgOffset(backgroundPosY, this.backgroundObject.height, clientHeight);
				}
				else if (this.backgroundImage) {
					this.backgroundPosX = styleToNPx(backgroundPosX);
					this.backgroundPosY = styleToNPx(backgroundPosY);
				}
				/*
				Create top and bottom containers.
				These will be used as a parent for the corners and bars.
				*/
				// Build top bar only if a top corner is to be drawn
				if (topMaxRadius) {
					newMainContainer = document.createElement("div");
					
					$(newMainContainer).css({
						width: 				this.boxWidth + "px",
						'fontSize':			"1px",
						overflow:			"hidden", 
						position:			"absolute", 
						'paddingLeft':		this.borderWidth + "px",
						'paddingRight':		this.borderWidth + "px",						
						height:				topMaxRadius + "px",
						top:				-topMaxRadius + "px",
						left:				-this.borderWidthL + "px"
					});					
					this.topContainer = this.shell.appendChild(newMainContainer);
				}
				// Build bottom bar only if a bottom corner is to be drawn
				if (botMaxRadius) {
					var newMainContainer = document.createElement("div");
					
					$(newMainContainer).css({
						width: 				this.boxWidth + "px",
						'fontSize':			"1px",
						overflow:			"hidden", 
						position:			"absolute", 
						'paddingLeft':		this.borderWidthB + "px",
						'paddingRight':		this.borderWidthB + "px",					
						height:				botMaxRadius + "px",
						bottom:				-botMaxRadius + "px",
						left:				-this.borderWidthL + "px"
					});
					this.bottomContainer = this.shell.appendChild(newMainContainer);
				}
			
				var corners = this.spec.cornerNames();  // array of available corners
			
				/*
				Loop for each corner
				*/
				for (var i in corners) if (!isNaN(i)) {
					// Get current corner type from array
					var cc = corners[i];
					var specRadius = this.spec[cc + 'R'];
					// Has the user requested the currentCorner be round?
					// Code to apply correct color to top or bottom
					var bwidth, bcolor, borderRadius, borderWidthTB;
					if (cc == "tr" || cc == "tl") {
						bwidth = this.borderWidth;
						bcolor = this.borderColour;
						borderWidthTB = this.borderWidth;
					} else {
						bwidth = this.borderWidthB;
						bcolor = this.borderColourB;
						borderWidthTB = this.borderWidthB;
					}
					borderRadius = specRadius - borderWidthTB;
					
					var newCorner = document.createElement("div");
					
					$(newCorner).css({
						position:"absolute",
						"font-size":"1px", 
						overflow:"hidden"
					}).height(this.spec.get(cc + 'Ru')).width(this.spec.get(cc + 'Ru'));
					
					// THE FOLLOWING BLOCK OF CODE CREATES A ROUNDED CORNER
					// ---------------------------------------------------- TOP
					var intx, inty, outsideColour;
					var trans = filter ? parseInt(/alpha\(opacity.(\d+)\)/.exec(filter)[1]) : 100; // IE8 bug fix
					// Cycle the x-axis
					for (intx = 0; intx < specRadius; ++intx) {
						// Calculate the value of y1 which identifies the pixels inside the border
						var y1 = (intx + 1 >= borderRadius) ? -1 : Math.floor(Math.sqrt(Math.pow(borderRadius, 2) - Math.pow(intx + 1, 2))) - 1;
						// Calculate y2 and y3 only if there is a border defined
						if (borderRadius != specRadius) {
							var y2 = (intx >= borderRadius) ? -1 : Math.ceil(Math.sqrt(Math.pow(borderRadius, 2) - Math.pow(intx, 2)));
							var y3 = (intx + 1 >= specRadius) ? -1 : Math.floor(Math.sqrt(Math.pow(specRadius, 2) - Math.pow((intx+1), 2))) - 1;
						}
						// Calculate y4
						var y4 = (intx >= specRadius) ? -1 : Math.ceil(Math.sqrt(Math.pow(specRadius, 2) - Math.pow(intx, 2)));
						// Draw bar on inside of the border with foreground colour
						if (y1 > -1) this.drawPixel(intx, 0, this.boxColour, trans, (y1 + 1), newCorner, true, specRadius);
						// Draw border/foreground antialiased pixels and border only if there is a border defined
						if (borderRadius != specRadius) {
							// Cycle the y-axis
							if (this.spec.antiAlias) {
								for (inty = y1 + 1; inty < y2; ++inty) {
									// For each of the pixels that need anti aliasing between the foreground and border colour draw single pixel divs
									if (this.backgroundImage != "") {
										var borderFract = curvyObject.pixelFraction(intx, inty, borderRadius) * 100;
										this.drawPixel(intx, inty, bcolor, trans, 1, newCorner, borderFract >= 30, specRadius);
									}
									else if (this.boxColour !== 'transparent') {
										var pixelcolour = curvyObject.BlendColour(this.boxColour, bcolor, curvyObject.pixelFraction(intx, inty, borderRadius));
										this.drawPixel(intx, inty, pixelcolour, trans, 1, newCorner, false, specRadius);
									}
									else this.drawPixel(intx, inty, bcolor, trans >> 1, 1, newCorner, false, specRadius);
								}
								// Draw bar for the border
								if (y3 >= y2) {
									if (y2 == -1) y2 = 0;
									this.drawPixel(intx, y2, bcolor, trans, (y3 - y2 + 1), newCorner, false, 0);
								}
								outsideColour = bcolor;  // Set the colour for the outside AA curve
								inty = y3;               // start_pos - 1 for y-axis AA pixels
							}
							else { // no antiAlias
								if (y3 > y1) { // NB condition was >=, changed to avoid zero-height divs
									this.drawPixel(intx, (y1 + 1), bcolor, trans, (y3 - y1), newCorner, false, 0);
								}
							}
						}
						else {
							outsideColour = this.boxColour;  // Set the colour for the outside curve
							inty = y1;               // start_pos - 1 for y-axis AA pixels
						}
						// Draw aa pixels?
						if (this.spec.antiAlias && this.boxColour !== 'transparent') {
							// Cycle the y-axis and draw the anti aliased pixels on the outside of the curve
							while (++inty < y4) {
								// For each of the pixels that need anti aliasing between the foreground/border colour & background draw single pixel divs
								this.drawPixel(intx, inty, outsideColour, (curvyObject.pixelFraction(intx, inty , specRadius) * trans), 1, newCorner, borderWidthTB <= 0, specRadius);
							}
						}
					}
					// END OF CORNER CREATION
					// ---------------------------------------------------- END
				
					/*
					Now we have a new corner we need to reposition all the pixels unless
					the current corner is the bottom right.
					*/
					// Loop through all children (pixel bars)
					for (var t = 0, k = newCorner.childNodes.length; t < k; ++t) {
						// Get current pixel bar
						var pixelBar = newCorner.childNodes[t];
						// Get current top and left properties
						var pixelBarTop    = parseInt($(pixelBar).css('top'));
						var pixelBarLeft   = parseInt($(pixelBar).css('left'));
						var pixelBarHeight = parseInt($(pixelBar).css('height'));
						// Reposition pixels
						if (cc == "tl" || cc == "bl") {
							$(pixelBar).css('left', (specRadius - pixelBarLeft - 1) + "px"); // Left
						}
						if (cc == "tr" || cc == "tl"){
							$(pixelBar).css('top', (specRadius - pixelBarHeight - pixelBarTop) + "px"); // Top
						}
						$(pixelBar).css('backgroundRepeat', this.backgroundRepeat);
	
						if (this.backgroundImage) switch(cc) {
							case "tr":
								$(pixelBar).css('backgroundPosition',(this.backgroundPosX - this.borderWidthL + specRadius - clientWidth - pixelBarLeft) + "px " + (this.backgroundPosY + pixelBarHeight + pixelBarTop + this.borderWidth - specRadius) + "px");
							break;
							case "tl":
								$(pixelBar).css('backgroundPosition',(this.backgroundPosX - specRadius + pixelBarLeft + 1 + this.borderWidthL) + "px " + (this.backgroundPosY - specRadius + pixelBarHeight + pixelBarTop + this.borderWidth) + "px");
							break;
							case "bl":
								$(pixelBar).css('backgroundPosition',(this.backgroundPosX - specRadius + pixelBarLeft + 1 + this.borderWidthL) + "px " + (this.backgroundPosY - clientHeight - this.borderWidth + (!jQuery.support.boxModel ? pixelBarTop : -pixelBarTop) + specRadius) + "px");
							break;
							case "br":
								// Quirks mode on?
								if (!jQuery.support.boxModel) {
									$(pixelBar).css('backgroundPosition',(this.backgroundPosX - this.borderWidthL - clientWidth + specRadius - pixelBarLeft) + "px " + (this.backgroundPosY - clientHeight - this.borderWidth + pixelBarTop + specRadius) + "px");
								} else {
									$(pixelBar).css('backgroundPosition',(this.backgroundPosX - this.borderWidthL - clientWidth + specRadius - pixelBarLeft) + "px " + (this.backgroundPosY - clientHeight - this.borderWidth + specRadius - pixelBarTop) + "px");
								}
							//break;
						}
					}
				
					// Position the container
					switch (cc) {
						case "tl":
							$(newCorner).css('top', newCorner.style.left = "0");
							this.topContainer.appendChild(newCorner);
						break;
						case "tr":
							$(newCorner).css('top', newCorner.style.right = "0");
							this.topContainer.appendChild(newCorner);
						break;
						case "bl":
							$(newCorner).css('bottom', newCorner.style.left = "0");
							this.bottomContainer.appendChild(newCorner);
						break;
						case "br":
							$(newCorner).css('bottom', newCorner.style.right = "0");
							this.bottomContainer.appendChild(newCorner);
						//break;
					}
				}
			
				/*
				The last thing to do is draw the rest of the filler DIVs.
				*/
				
				// Find out which corner has the bigger radius and get the difference amount
				var radiusDiff = {
					t : this.spec.radiusdiff('t'),
					b : this.spec.radiusdiff('b')
				};
				
				for (z in radiusDiff) {
					if (typeof z === 'function') continue; // for prototype, mootools frameworks
					if (!this.spec.get(z + 'R')) continue; // no need if no corners
					if (radiusDiff[z]) {
						// Get the type of corner that is the smaller one
						var smallerCornerType = (this.spec[z + "lR"] < this.spec[z + "rR"]) ? z + "l" : z + "r";
				
						// First we need to create a DIV for the space under the smaller corner
						var newFiller = document.createElement("div");	
						
						$(newFiller).css({
							'height':			radiusDiff[z] + "px",
							'width':			this.spec.get(smallerCornerType + 'Ru'),
							'position':			"absolute",
							'fontSize':			"1px",
							'overflow':			"hidden",
							'backgroundColor':	this.boxColour,
							'backgroundImage':	this.backgroundImage,
							'backgroundRepeat':	this.backgroundRepeat
						});					
						
						if (filter) $(newFiller).css('filter', 'filter'); // IE8 bug fix

						// Position filler
						switch (smallerCornerType) {
							case "tl":
								$(newFiller).css({
									'bottom':				'',
									'left':					'0',
									'borderLeft':			this.borderStringL,
									'backgroundPosition':	this.backgroundPosX + "px " + (this.borderWidth + this.backgroundPosY - this.spec.tlR) + "px"
								});
								this.topContainer.appendChild(newFiller);
							break;
							case "tr":
								$(newFiller).css({
									'bottom':				'',
									'right':					'0',
									'borderRight':			this.borderStringR,
									'backgroundPosition':	(this.backgroundPosX - this.boxWidth + this.spec.trR) + "px " + (this.borderWidth + this.backgroundPosY - this.spec.trR) + "px"
								});
								this.topContainer.appendChild(newFiller);
							break;
							case "bl":
								$(newFiller).css({
									'top':					'',
									'left':					'0',
									'borderLeft':			this.borderStringL,
									'backgroundPosition':	this.backgroundPosX + "px " + (this.backgroundPosY - this.borderWidth - this.boxHeight + radiusDiff[z] + this.spec.blR) + "px"
								});
								this.bottomContainer.appendChild(newFiller);
							break;
							case "br":
								$(newFiller).css({
									'top':					'',
									'right':				'0',
									'borderRight':			this.borderStringR,
									'backgroundPosition':	(this.borderWidthL + this.backgroundPosX - this.boxWidth + this.spec.brR) + "px " + (this.backgroundPosY - this.borderWidth - this.boxHeight + radiusDiff[z] + this.spec.brR) + "px"
								});
								this.bottomContainer.appendChild(newFiller);
							//break;
						}
					}
				
					// Create the bar to fill the gap between each corner horizontally
					var newFillerBar = document.createElement("div");
					if (filter) $(newFillerBar).css('filter', 'filter'); // IE8 bug fix
					$(newFillerBar).css({
						'position':					"relative",
						'fontSize':					"1px",
						'overflow':					"hidden",
						'width':					this.fillerWidth(z),
						'backgroundColor':			this.boxColour,
						'backgroundImage':			this.backgroundImage,
						'backgroundRepeat':			this.backgroundRepeat
					});
				
					switch (z) {
						case "t":
							// Top Bar
							if (this.topContainer) {
								if (!jQuery.support.boxModel) {
									$(newFillerBar).css('height', 100 + topMaxRadius + "px");
								} else {
									$(newFillerBar).css('height', 100 + topMaxRadius - this.borderWidth + "px");
								}
								$(newFillerBar).css('marginLeft', this.spec.tlR ? (this.spec.tlR - this.borderWidthL) + "px" : "0");
								$(newFillerBar).css('borderTop', this.borderString);
								if (this.backgroundImage) {
									var x_offset = this.spec.tlR ?
										(this.borderWidthL + this.backgroundPosX - this.spec.tlR) + "px " : this.backgroundPosX + "px ";
									
									$(newFillerBar).css('backgroundPosition', x_offset + this.backgroundPosY + "px");
				
									// Reposition the box's background image
									$(this.shell).css('backgroundPosition', this.backgroundPosX + "px " + (this.backgroundPosY - topMaxRadius + this.borderWidthL) + "px");
								}
								this.topContainer.appendChild(newFillerBar);
							}
						break;
						case "b":
							if (this.bottomContainer) {
								// Bottom Bar
								if (!jQuery.support.boxModel) {
									$(newFillerBar).css('height', botMaxRadius + "px");
								} else {
									$(newFillerBar).css('height', botMaxRadius - this.borderWidthB + "px");
								}
								$(newFillerBar).css('marginLeft', this.spec.blR ? (this.spec.blR - this.borderWidthL) + "px" : "0");
								$(newFillerBar).css('borderBottom', this.borderStringB);
								if (this.backgroundImage) {
									var x_offset = this.spec.blR ?
										(this.backgroundPosX + this.borderWidthL - this.spec.blR) + "px " : this.backgroundPosX + "px ";
									$(newFillerBar).css('backgroundPosition', x_offset + (this.backgroundPosY - clientHeight - this.borderWidth + botMaxRadius) + "px");
								}
								this.bottomContainer.appendChild(newFillerBar);
							}
						//break;
					}
				}			
			
				// style content container
				z = clientWidth;				
				if (jQuery.support.boxModel) z -= this.leftPadding + this.rightPadding;
				
				$(this.contentContainer).css({
					'position':			'absolute',
					'left':				this.borderWidthL + "px",
					'paddingTop':		this.topPadding + "px",
					'top':				this.borderWidth + "px",
					'paddingLeft':		this.leftPadding + "px",
					'paddingRight':		this.rightPadding + "px",
					'width':			z + "px",
					'textAlign':		$$.css('textAlign')
				}).addClass('autoPadDiv');
				
				$$.css('textAlign', 'left').addClass('hasCorners');
	
				this.box.appendChild(this.contentContainer);
				if (boxDisp) $(boxDisp).css('display', boxDispSave);
			};
			
			if (this.backgroundImage) {				
				backgroundPosX = this.backgroundCheck(backgroundPosX);
				backgroundPosY = this.backgroundCheck(backgroundPosY);
				if (this.backgroundObject) {
					this.backgroundObject.holdingElement = this;
					this.dispatch = this.applyCorners;
					this.applyCorners = function() {
						if (this.backgroundObject.complete) this.dispatch();
						else this.backgroundObject.onload = new Function('$(this.holdingElement).dispatch();');
					};
				}
			}
		};
		
		curvyObject.prototype.backgroundCheck = function(style) {
		  if (style === 'top' || style === 'left' || parseInt(style) === 0) return 0;
		  if (!(/^[-\d.]+px$/.test(style))  && !this.backgroundObject) {
		    this.backgroundObject = new Image;
		    var imgName = function(str) {
		      var matches = /url\("?([^'"]+)"?\)/.exec(str);
		      return (matches ? matches[1] : str);
		    };
		    this.backgroundObject.src = imgName(this.backgroundImage);
		  }
		  return style;
		};		
		
		/*curvyObject.dispatch = function(obj) {
		  if ('dispatch' in obj) obj.dispatch();
		  else throw Error('No dispatch function');
		};*/
		
		/*
		This function draws the pixels
		*/	
		curvyObject.prototype.drawPixel = function( intx, inty, colour, transAmount, height, newCorner, image, cornerRadius ) {			
			//var $$ = $(box);			
		    var pixel = document.createElement("div");
		    
		    $(pixel).css({	
		    	"height" :			height + "px",
		    	"width" :			"1px", 
		    	"position" :		"absolute", 
		    	"font-size" :		"1px", 
		    	"overflow" :		"hidden",
		    	"top" :				inty + "px",
		    	"left" :			intx + "px",
		    	"background-color" :colour
		    });
		    
		    var topMaxRadius = this.spec.get('tR');
		    
		    // Dont apply background image to border pixels
			if(image && this.backgroundImage != "")
			{
				$(pixel).css({
					"background-position":"-" + (this.boxWidth - (cornerRadius - intx) + this.borderWidth) + "px -" + ((this.boxHeight + topMaxRadius + inty) - this.borderWidth) + "px",
					"background-image":this.backgroundImage				 
				});
			}		    
		    if (transAmount != 100)
		    	$(pixel).css({opacity: (transAmount/100) });

		    newCorner.appendChild(pixel);
		};
		
		curvyObject.prototype.fillerWidth = function(tb) {
			var b_width, f_width;
			b_width = !jQuery.support.boxModel ? 0 : this.spec.radiusCount(tb) * this.borderWidthL;
			
			if ((f_width = this.boxWidth - this.spec.radiusSum(tb) + b_width) < 0)
				throw Error("Radius exceeds box width");
			return f_width + 'px';
		};			
		
		// Gets the computed colour.
		curvyObject.getComputedColour = function(colour) {
		  var d = document.createElement('DIV');
		  d.style.backgroundColor = colour;
		  document.body.appendChild(d);
		
		  if (window.getComputedStyle) { // Mozilla, Opera, Chrome, Safari
		    var rtn = document.defaultView.getComputedStyle(d, null).getPropertyValue('background-color');
		    d.parentNode.removeChild(d);
		    if (rtn.substr(0, 3) === "rgb") rtn = curvyObject.rgb2Hex(rtn);
		    return rtn;
		  }
		  else { // IE
		    var rng = document.body.createTextRange();
		    rng.moveToElementText(d);
		    rng.execCommand('ForeColor', false, colour);
		    var iClr = rng.queryCommandValue('ForeColor');
		    var rgb = "rgb("+(iClr & 0xFF)+", "+((iClr & 0xFF00)>>8)+", "+((iClr & 0xFF0000)>>16)+")";
		    d.parentNode.removeChild(d);
		    rng = null;
		    return curvyObject.rgb2Hex(rgb);
		  }
		};
				
		curvyObject.BlendColour = function(Col1, Col2, Col1Fraction) 
		{
			
			if (Col1 === 'transparent' || Col2 === 'transparent') throw Error('Cannot blend with transparent');
			if (Col1.charAt(0) !== '#') {
				Col1 = curvyObject.format_colour(Col1);
			}
			if (Col2.charAt(0) !== '#') {
				Col2 = curvyObject.format_colour(Col2);
			}
			var red1 = parseInt(Col1.substr(1, 2), 16);
			var green1 = parseInt(Col1.substr(3, 2), 16);
			var blue1 = parseInt(Col1.substr(5, 2), 16);
			var red2 = parseInt(Col2.substr(1, 2), 16);
			var green2 = parseInt(Col2.substr(3, 2), 16);
			var blue2 = parseInt(Col2.substr(5, 2), 16);
			
			if (Col1Fraction > 1 || Col1Fraction < 0) Col1Fraction = 1;
			
			var endRed = Math.round((red1 * Col1Fraction) + (red2 * (1 - Col1Fraction)));
			if (endRed > 255) endRed = 255;
			if (endRed < 0) endRed = 0;
			
			var endGreen = Math.round((green1 * Col1Fraction) + (green2 * (1 - Col1Fraction)));
			if (endGreen > 255) endGreen = 255;
			if (endGreen < 0) endGreen = 0;
			
			var endBlue = Math.round((blue1 * Col1Fraction) + (blue2 * (1 - Col1Fraction)));
			if (endBlue > 255) endBlue = 255;
			if (endBlue < 0) endBlue = 0;
			
			return "#" + curvyObject.IntToHex(endRed) + curvyObject.IntToHex(endGreen)+ curvyObject.IntToHex(endBlue);
			
		};
	
		curvyObject.IntToHex = function(strNum)
		{			
			var hexdig = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' ];
			return hexdig[strNum >>> 4] + '' + hexdig[strNum & 15];
		};
	
		/*
		For a pixel cut by the line determines the fraction of the pixel on the 'inside' of the
		line.  Returns a number between 0 and 1
		*/
		curvyObject.pixelFraction = function(x, y, r) 
		{
  			var fraction;
 			var rsquared = r * r;

			/*
			determine the co-ordinates of the two points on the perimeter of the pixel that the
			circle crosses
			*/
			var xvalues = new Array(2);
			var yvalues = new Array(2);
			var point = 0;
			var whatsides = "";

			// x + 0 = Left
			var intersect = Math.sqrt(rsquared - Math.pow(x, 2));
			
			if (intersect >= y && intersect < (y + 1)) {
				whatsides = "Left";
				xvalues[point] = 0;
				yvalues[point] = intersect - y;
				++point;
			}
			// y + 1 = Top
			intersect = Math.sqrt(rsquared - Math.pow(y + 1, 2));
			
			if (intersect >= x && intersect < (x + 1)) {
				whatsides += "Top";
				xvalues[point] = intersect - x;
				yvalues[point] = 1;
				++point;
			}
			// x + 1 = Right
			intersect = Math.sqrt(rsquared - Math.pow(x + 1, 2));
			
			if (intersect >= y && intersect < (y + 1)) {
				whatsides += "Right";
				xvalues[point] = 1;
				yvalues[point] = intersect - y;
				++point;
			}
			// y + 0 = Bottom
			intersect = Math.sqrt(rsquared - Math.pow(y, 2));
			
			if (intersect >= x && intersect < (x + 1)) {
				whatsides += "Bottom";
				xvalues[point] = intersect - x;
				yvalues[point] = 0;
			}

			/*
			depending on which sides of the perimeter of the pixel the circle crosses calculate the
			fraction of the pixel inside the circle
			*/
			switch (whatsides) {
				case "LeftRight":
					fraction = Math.min(yvalues[0], yvalues[1]) + ((Math.max(yvalues[0], yvalues[1]) - Math.min(yvalues[0], yvalues[1])) / 2);
				break;
				
				case "TopRight":
					fraction = 1 - (((1 - xvalues[0]) * (1 - yvalues[1])) / 2);
				break;
				
				case "TopBottom":
					fraction = Math.min(xvalues[0], xvalues[1]) + ((Math.max(xvalues[0], xvalues[1]) - Math.min(xvalues[0], xvalues[1])) / 2);
				break;
				
				case "LeftBottom":
					fraction = yvalues[0] * xvalues[1] / 2;
				break;
				
				default:
					fraction = 1;
			}			
			return fraction;
		};
  
  
		// This function converts CSS rgb(x, x, x) to hexadecimal
		curvyObject.rgb2Hex = function(rgbColour) 
		{
			try{
			
				// Get array of RGB values
				var rgbArray = curvyObject.rgb2Array(rgbColour);
				
				// Get RGB values
				var red   = parseInt(rgbArray[0]);
				var green = parseInt(rgbArray[1]);
				var blue  = parseInt(rgbArray[2]);
				
				// Build hex colour code
				var hexColour = "#" + curvyObject.IntToHex(red) + curvyObject.IntToHex(green) + curvyObject.IntToHex(blue);
			}
			catch(e){			
				alert("There was an error converting the RGB value to Hexadecimal in function rgb2Hex");
			}
			
			return hexColour;
		};
		
		// Returns an array of rbg values
		curvyObject.rgb2Array = function(rgbColour) 
		{
			// Remove rgb()
			var rgbValues = rgbColour.substring(4, rgbColour.indexOf(")"));

			// Split RGB into array
			return rgbValues.split(", ");
		};

		// Formats colours
		curvyObject.format_colour = function(colour) 
		{
			// Make sure colour is set and not transparent
			if (colour != "" && colour != "transparent") {
			  // RGB Value?
			  if (colour.substr(0, 3) === "rgb") {
			    // Get HEX aquiv.
			    colour = curvyObject.rgb2Hex(colour);
			  }
			  else if (colour.charAt(0) !== '#') {
			    // Convert colour name to hex value
			    colour = getComputedColour(colour);
			  }
			  else if (colour.length === 4) {
			    // 3 chr colour code add remainder
			    colour = "#" + colour.charAt(1) + colour.charAt(1) + colour.charAt(2) + colour.charAt(2) + colour.charAt(3) + colour.charAt(3);
			  }
			}
			return colour;
		};	
		  
		return this.each(function() {
			if (!$(this).is('.hasCorners')) {
				if (nativeCornersSupported) {
					if (settings.get('tlR')) {
						$(this).css({
							'border-top-left-radius' : settings.get('tlR') + 'px',
							'-moz-border-radius-topleft' : settings.get('tlR') + 'px',
							'-webkit-border-top-left-radius' : settings.get('tlR') + 'px'
						});
					}
					if (settings.get('trR')) {
						$(this).css({
							'border-top-right-radius' : settings.get('trR') + 'px',
							'-moz-border-radius-topright' : settings.get('trR') + 'px',
							'-webkit-border-top-right-radius' : settings.get('trR') + 'px'
						});
					}
					if (settings.get('blR')) {
						$(this).css({
							'border-bottom-left-radius' : settings.get('blR') + 'px',
							'-moz-border-radius-bottomleft' : settings.get('blR') + 'px',
							'-webkit-border-bottom-left-radius' : settings.get('blR') + 'px'
						});
					}
					if (settings.get('brR')) {
						$(this).css({
							'border-bottom-right-radius' : settings.get('brR') + 'px',
							'-moz-border-radius-bottomright' : settings.get('brR') + 'px',
							'-webkit-border-bottom-right-radius' : settings.get('brR') + 'px'
						});
					}
				} else {
					if (!$(this).is('.drawn')) {						
						$(this).addClass('drawn');
						
						thestyles = $(this).attr('style');
						if (thestyles == 'undefined') {
							thestyles = '';
						}
						
						redrawList.push({
						  node : this,
						  spec : settings,
						  style : thestyles,
						  copy : $(this).clone(true)
						});
					}
					var obj = new curvyObject(settings, this);
					obj.applyCorners();
				}			
			}			
		});
			
	};
	
	$.fn.removeCorners = function() { 
		return this.each(function(i, e) {
			thisdiv = e;
			$.each(
				redrawList,
				function( intIndex, list ){	
					if (list.node==thisdiv && $('.autoPadDiv', thisdiv).size()>0) {
						//$('div:not(.autoPadDiv)', thisdiv).remove();
						//$('.autoPadDiv', thisdiv).replaceWith( $('.autoPadDiv', thisdiv).contents() );							
						$(thisdiv).html($(thisdiv).children('.autoPadDiv:first').contents());						
						style = list.style == 'undefined' ? list.style : ''; 
						$(thisdiv).removeClass('hasCorners').attr('style', style );						
						return false;
					}
				}
			);
		});
	};
	
	$.fn.redrawCorners = function() { 
		return this.each(function(i, e) {
			thisdiv = e;
			$.each(
				redrawList,				
				function( intIndex, list ){	
					if (list.node==thisdiv) {
						//$('div:not(.autoPadDiv)', thisdiv).remove();
						//$('.autoPadDiv', thisdiv).replaceWith( $('.autoPadDiv', thisdiv).contents() );	
						//style = list.style == 'undefined' ? list.style : ''; 
						//$(thisdiv).removeClass('hasCorners').attr('style', style );	
						$(thisdiv).corner(list.spec);
						return false;
					}
				}
			);
		});
	};
	
	$.fn.dispatch = function() { 
		return this.each(function(i, e) {
			obj = e;
			if ('dispatch' in obj) obj.dispatch();
			else throw Error('No dispatch function')
		});			
	};
	
	$(function(){
		
		// Detect styles and apply corners in browsers with no native border-radius support
		if ($.browser.msie) {	
			/* Force caching of bg images in IE6 */
			try {	document.execCommand("BackgroundImageCache", false, true);	}	catch(e) {};
			
			function units(num) {
				if (!parseInt(num)) return 'px'; // '0' becomes '0px' for simplicity's sake
				var matches = /^[\d.]+(\w+)$/.exec(num);
				return matches[1];
			};
			
			/* Detect and Apply Corners */
			var t, i, j;
			
			function procIEStyles(rule) {
				var style = rule.style;
			
				if (jQuery.browser.version > 6.0) {
					var allR = style['-moz-border-radius'] || 0;
					var tR   = style['-moz-border-radius-topright'] || 0;
					var tL   = style['-moz-border-radius-topleft'] || 0;
					var bR   = style['-moz-border-radius-bottomright'] || 0;
					var bL   = style['-moz-border-radius-bottomleft'] || 0;
				}
				else {
					var allR = style['moz-border-radius'] || 0;
					var tR   = style['moz-border-radius-topright'] || 0;
					var tL   = style['moz-border-radius-topleft'] || 0;
					var bR   = style['moz-border-radius-bottomright'] || 0;
					var bL   = style['moz-border-radius-bottomleft'] || 0;
				}
				if (allR) {
					var t = allR.split('/'); // ignore elliptical spec.
					t = t[0].split(/\s+/);
					if (t[t.length - 1] === '') t.pop();
					switch (t.length) {
						case 3:
							tL = t[0];
							tR = bL = t[1];
							bR = t[2];
							allR = false;
						break;
						case 2:
							tL = bR = t[0];
							tR = bL = t[1];
							allR = false;
						case 1:
						break;
						case 4:
							tL = t[0];
							tR = t[1];
							bR = t[2];
							bL = t[3];
							allR = false;
						break;
						default:
							alert('Illegal corners specification: ' + allR);
					}
				}
				if (allR || tL || tR || bR || bL) {
					var settings = new curvyCnrSpec(rule.selectorText);
					if (allR)
						settings.setcorner(null, null, parseInt(allR), units(allR));
					else {
						if (tR) settings.setcorner('t', 'r', parseInt(tR), units(tR));
						if (tL) settings.setcorner('t', 'l', parseInt(tL), units(tL));
						if (bL) settings.setcorner('b', 'l', parseInt(bL), units(bL));
						if (bR) settings.setcorner('b', 'r', parseInt(bR), units(bR));
					}
					$(rule.selectorText).corner(settings);
				}
			}
			for (t = 0; t < document.styleSheets.length; ++t) {
				try {
					if (document.styleSheets[t].imports) {
						for (i = 0; i < document.styleSheets[t].imports.length; ++i) {
							for (j = 0; j < document.styleSheets[t].imports[i].rules.length; ++j) {
								procIEStyles(document.styleSheets[t].imports[i].rules[j]);
							}
						}
					}
					for (i = 0; i < document.styleSheets[t].rules.length; ++i)
						procIEStyles(document.styleSheets[t].rules[i]);
				}
				catch (e) {} 
			}
		} else if ($.browser.opera) {
			
			// Apply if border radius is not supported
			try {	checkStandard = (document.body.style.BorderRadius !== undefined);	} catch(err) {}
			
			if (!checkStandard) {
		
				function opera_contains_border_radius(sheetnumber) {
					return /border-((top|bottom)-(left|right)-)?radius/.test(document.styleSheets.item(sheetnumber).ownerNode.text);
				};
				
				rules = [];
			
				for (t = 0; t < document.styleSheets.length; ++t) {
					if (opera_contains_border_radius(t)) {
				   	
				   		var txt = document.styleSheets.item(sheetnumber).ownerNode.text;
				   		txt = txt.replace(/\/\*(\n|\r|.)*?\*\//g, ''); // strip comments
				   		
				   		var pat = new RegExp("^\\s*([\\w.#][-\\w.#, ]+)[\\n\\s]*\\{([^}]+border-((top|bottom)-(left|right)-)?radius[^}]*)\\}", "mg");
				   		var matches;				   		
				   		while ((matches = pat.exec(txt)) !== null) {
				   			var pat2 = new RegExp("(..)border-((top|bottom)-(left|right)-)?radius:\\s*([\\d.]+)(in|em|px|ex|pt)", "g");
				   			var submatches, cornerspec = new curvyCnrSpec(matches[1]);
				   			while ((submatches = pat2.exec(matches[2])) !== null) {
				   				if (submatches[1] !== "z-")
				   				    cornerspec.setcorner(submatches[3], submatches[4], submatches[5], submatches[6]);
				   				rules.push(cornerspec);
				   			}
				   		}
				   	}
				}				
				for (i in rules) if (!isNaN(i))
					$(rules[i].selectorText).corner(rules[i]);
					
					
			}
		}
	});		
	
})(jQuery);/*
 * jqDnR - Minimalistic Drag'n'Resize for jQuery.
 *
 * Copyright (c) 2007 Brice Burgess <bhb@iceburg.net>, http://www.iceburg.net
 * Licensed under the MIT License:
 * http://www.opensource.org/licenses/mit-license.php
 * 
 * $Version: 2007.08.19 +r2
 */

(function($){
$.fn.jqDrag=function(h){return i(this,h,'d');};
$.fn.jqResize=function(h){return i(this,h,'r');};
$.jqDnR={dnr:{},e:0,
drag:function(v){
 if(M.k == 'd')E.css({left:M.X+v.pageX-M.pX,top:M.Y+v.pageY-M.pY});
 else E.css({width:Math.max(v.pageX-M.pX+M.W,0),height:Math.max(v.pageY-M.pY+M.H,0)});
  return false;},
stop:function(){E.css('opacity',M.o);$().unbind('mousemove',J.drag).unbind('mouseup',J.stop);}
};
var J=$.jqDnR,M=J.dnr,E=J.e,
i=function(e,h,k){return e.each(function(){h=(h)?$(h,e):e;
 h.bind('mousedown',{e:e,k:k},function(v){var d=v.data,p={};E=d.e;
 // attempt utilization of dimensions plugin to fix IE issues
 if(E.css('position') != 'relative'){try{E.position(p);}catch(e){}}
 M={X:p.left||f('left')||0,Y:p.top||f('top')||0,W:f('width')||E[0].scrollWidth||0,H:f('height')||E[0].scrollHeight||0,pX:v.pageX,pY:v.pageY,k:d.k,o:E.css('opacity')};
 E.css({opacity:0.8});$().mousemove($.jqDnR.drag).mouseup($.jqDnR.stop);
 return false;
 });
});},
f=function(k){return parseInt(E.css(k))||false;};
})(jQuery);/** 
 * Name:    Highslide JS
 * Version: 4.1.9 (2010-07-05)
 * Author:  Torstein HÃ¸nsi
 * Support: www.highslide.com/support
 * License: www.highslide.com/#license
 */
eval(function(p,a,c,k,e,d){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--){d[e(c)]=k[c]||e(c)}k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1};while(c--){if(k[c]){p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c])}}return p}('q(!m){A m={14:{9s:\'ar\',al:\'eX...\',am:\'8R 2g eY\',bD:\'8R 2g eK 2g ek\',9v:\'en 2g eJ D (f)\',cu:\'ex by <i>ag ah</i>\',cs:\'ez 2g eB ag ah fN\',8t:\'aa\',8n:\'ao\',8f:\'an\',8l:\'af\',8i:\'af (fQ)\',b6:\'fH\',aT:\'ae\',b1:\'ae 1p (ad)\',aW:\'ab\',aU:\'ab 1p (ad)\',8s:\'aa (8Q 18)\',8w:\'ao (8Q 3o)\',8h:\'an\',bb:\'1:1\',3N:\'ff %1 fh %2\',9F:\'8R 2g 2b 2R, fj a8 fy 2g 3A. g3 8Q cR O 1C a8 2W.\'},5p:\'K/dW/\',7M:\'dZ.4X\',5w:\'e0.4X\',7s:5S,9Y:5S,4y:15,9h:15,4T:15,77:15,4t:e1,ak:0.75,91:M,9o:5,3F:2,dV:3,5A:1j,bR:\'4j 3o\',bP:1,c2:M,cp:\'dQ://K.dS/\',cx:\'dv\',az:M,9U:[\'a\',\'5j\'],3i:[],cz:5S,48:0,95:50,7N:1j,7G:M,4z:M,3J:\'5D\',9E:M,4l:\'1Q\',9n:\'1Q\',b7:I,b8:I,9N:M,4B:aZ,5G:aZ,5T:M,1Y:\'dp-dt\',9R:{35:\'<P 1W="K-35"><6c>\'+\'<1K 1W="K-2W">\'+\'<a 24="#" 2j="{m.14.8s}">\'+\'<1D>{m.14.8t}</1D></a>\'+\'</1K>\'+\'<1K 1W="K-3I">\'+\'<a 24="#" 2j="{m.14.b1}">\'+\'<1D>{m.14.aT}</1D></a>\'+\'</1K>\'+\'<1K 1W="K-3r">\'+\'<a 24="#" 2j="{m.14.aU}">\'+\'<1D>{m.14.aW}</1D></a>\'+\'</1K>\'+\'<1K 1W="K-1C">\'+\'<a 24="#" 2j="{m.14.8w}">\'+\'<1D>{m.14.8n}</1D></a>\'+\'</1K>\'+\'<1K 1W="K-3A">\'+\'<a 24="#" 2j="{m.14.8h}">\'+\'<1D>{m.14.8f}</1D></a>\'+\'</1K>\'+\'<1K 1W="K-19-2H">\'+\'<a 24="#" 2j="{m.14.9v}">\'+\'<1D>{m.14.bb}</1D></a>\'+\'</1K>\'+\'<1K 1W="K-2b">\'+\'<a 24="#" 2j="{m.14.8i}" >\'+\'<1D>{m.14.8l}</1D></a>\'+\'</1K>\'+\'</6c></P>\',aK:\'<P 1W="K-fq"><6c>\'+\'<1K 1W="K-2W">\'+\'<a 24="#" 2j="{m.14.8s}" 2n="E m.2W(k)">\'+\'<1D>{m.14.8t}</1D></a>\'+\'</1K>\'+\'<1K 1W="K-1C">\'+\'<a 24="#" 2j="{m.14.8w}" 2n="E m.1C(k)">\'+\'<1D>{m.14.8n}</1D></a>\'+\'</1K>\'+\'<1K 1W="K-3A">\'+\'<a 24="#" 2j="{m.14.8h}" 2n="E 1j">\'+\'<1D>{m.14.8f}</1D></a>\'+\'</1K>\'+\'<1K 1W="K-2b">\'+\'<a 24="#" 2j="{m.14.8i}" 2n="E m.2b(k)">\'+\'<1D>{m.14.8l}</1D></a>\'+\'</1K>\'+\'</6c></P>\'+\'<P 1W="K-1f"></P>\'+\'<P 1W="K-cV"><P>\'+\'<1D 1W="K-4g" 2j="{m.14.b6}"><1D></1D></1D>\'+\'</P></P>\'},6s:[],a0:M,16:[],a1:[\'5T\',\'3x\',\'4l\',\'9n\',\'b7\',\'b8\',\'1Y\',\'3F\',\'cW\',\'cP\',\'dU\',\'aR\',\'e3\',\'eb\',\'ea\',\'aS\',\'cr\',\'9N\',\'4d\',\'64\',\'3i\',\'48\',\'L\',\'N\',\'7X\',\'7N\',\'7G\',\'4z\',\'e9\',\'e5\',\'e4\',\'2F\',\'9E\',\'4f\',\'4m\',\'3J\',\'8e\',\'8Y\',\'4B\',\'5G\',\'6J\',\'8W\',\'aM\',\'2N\',\'2O\',\'cw\',\'ct\',\'1e\'],1T:[],61:0,88:{x:[\'c5\',\'18\',\'4J\',\'3o\',\'c6\'],y:[\'5X\',\'Y\',\'9i\',\'4j\',\'7w\']},7u:{},aS:{},aR:{},8e:{aF:{},2c:{},ax:{}},44:[],5O:[],4A:{},4s:[],6S:[],5b:[],6F:{},a5:{},7l:[],3f:/e8\\/4\\.0/.1a(56.6y)?8:8C((56.6y.6p().31(/.+(?:aB|dO|dN|1E)[\\/: ]([\\d.]+)/)||[0,\'0\'])[1]),1E:(W.6w&&!1S.3u),4H:/dw/.1a(56.6y),5I:/dy.+aB:1\\.[0-8].+dD/.1a(56.6y),$:C(1x){q(1x)E W.92(1x)},2k:C(26,3g){26[26.V]=3g},1b:C(aA,46,3W,5v,au){A el=W.1b(aA);q(46)m.3s(el,46);q(au)m.R(el,{8O:0,8g:\'1F\',97:0});q(3W)m.R(el,3W);q(5v)5v.21(el);E el},3s:C(el,46){O(A x 3e 46)el[x]=46[x];E el},R:C(el,3W){O(A x 3e 3W){q(m.1E&&x==\'1z\'){q(3W[x]>0.99)el.G.dE(\'60\');J el.G.60=\'aN(1z=\'+(3W[x]*2x)+\')\'}J el.G[x]=3W[x]}},2u:C(el,1d,3B){A 4F,54,4v;q(1G 3B!=\'7F\'||3B===I){A 2G=ck;3B={45:2G[2],2O:2G[3],6O:2G[4]}}q(1G 3B.45!=\'3N\')3B.45=5S;3B.2O=1i[3B.2O]||1i.aq;3B.7o=m.3s({},1d);O(A 2X 3e 1d){A e=1J m.fx(el,3B,2X);4F=8C(m.8p(el,2X))||0;54=8C(1d[2X]);4v=2X!=\'1z\'?\'F\':\'\';e.3y(4F,54,4v)}},8p:C(el,1d){q(el.G[1d]){E el.G[1d]}J q(W.84){E W.84.cf(el,I).bB(1d)}J{q(1d==\'1z\')1d=\'60\';A 3g=el.5H[1d.2d(/\\-(\\w)/g,C(a,b){E b.aE()})];q(1d==\'60\')3g=3g.2d(/aN\\(1z=([0-9]+)\\)/,C(a,b){E b/2x});E 3g===\'\'?1:3g}},7k:C(){A d=W,w=1S,6k=d.7t&&d.7t!=\'8I\'?d.59:d.1f;A L=m.1E?6k.8F:(d.59.8F||7q.dM),N=m.1E?6k.ca:7q.dL;m.4e={L:L,N:N,6v:m.1E?6k.6v:dK,69:m.1E?6k.69:dB};E m.4e},71:C(el){q(/5j/i.1a(el.3O)){A 6V=W.2A(\'1R\');O(A i=0;i<6V.V;i++){A u=6V[i].dA;q(u&&u.2d(/^.*?#/,\'\')==el.22.2X){el=6V[i];5a}}}A p={x:el.4O,y:el.8K};5o(el.aO){el=el.aO;p.x+=el.4O;p.y+=el.8K;q(el!=W.1f&&el!=W.59){p.x-=el.6v;p.y-=el.69}}E p},2H:C(a,2c,3y,T){q(!a)a=m.1b(\'a\',I,{1o:\'1F\'},m.29);q(1G a.6d==\'C\')E 2c;q(T==\'3w\'){O(A i=0;i<m.4s.V;i++){q(m.4s[i]&&m.4s[i].a==a){m.4s[i].bt();m.4s[i]=I;E 1j}}m.bd=M}1t{1J m.6l(a,2c,3y,T);E 1j}1v(e){E M}},9T:C(a,2c,3y){E m.2H(a,2c,3y,\'3w\')},7Y:C(){E m.1b(\'P\',{1c:\'K-3w-S\',2i:m.9Q(m.9R.aK)})},4K:C(el,3O,1c){A 1m=el.2A(3O);O(A i=0;i<1m.V;i++){q((1J 5s(1c)).1a(1m[i].1c)){E 1m[i]}}E I},9Q:C(s){s=s.2d(/\\s/g,\' \');A 2o=/{m\\.14\\.([^}]+)\\}/g,6m=s.31(2o),14;q(6m)O(A i=0;i<6m.V;i++){14=6m[i].2d(2o,"$1");q(1G m.14[14]!=\'1V\')s=s.2d(6m[i],m.14[14])}E s},bl:C(){A 1m=W.2A(\'a\');O(A i=0;i<1m.V;i++){A T=m.aI(1m[i]);q(T&&!1m[i].aJ){(C(){A t=T;q(m.1A(m,\'du\',{6A:1m[i],T:t})){1m[i].2n=(T==\'2R\')?C(){E m.2H(k)}:C(){E m.9T(k,{2F:t})}}})();1m[i].aJ=M}}m.5R()},aI:C(el){q(el.6X==\'K\')E\'2R\';J q(el.6X==\'K-2U\')E\'2U\';J q(el.6X==\'K-1k\')E\'1k\';J q(el.6X==\'K-3t\')E\'3t\'},8c:C(a){O(A i=0;i<m.5b.V;i++){q(m.5b[i][0]==a){A c=m.5b[i][1];m.5b[i][1]=c.5B(1);E c}}E I},bw:C(e){A 26=m.5R();O(A i=0;i<26.5t.V;i++){A a=26.5t[i];q(m.43(a,\'2F\')==\'2U\'&&m.43(a,\'9E\'))m.2k(m.6S,a)}m.9A(0)},9A:C(i){q(!m.6S[i])E;A a=m.6S[i];A 6r=m.4o(m.43(a,\'7X\'));q(!6r)6r=m.7Y();A 2U=1J m.7E(a,6r,1);2U.9a=C(){};2U.3z=C(){m.2k(m.5b,[a,6r]);m.9A(i+1)};2U.9C()},b9:C(){A a2=0,7c=-1,16=m.16,B,1B;O(A i=0;i<16.V;i++){B=16[i];q(B){1B=B.U.G.1B;q(1B&&1B>a2){a2=1B;7c=i}}}q(7c==-1)m.2Y=-1;J 16[7c].3P()},43:C(a,6j){a.6d=a.2n;A p=a.6d?a.6d():I;a.6d=I;E(p&&1G p[6j]!=\'1V\')?p[6j]:(1G m[6j]!=\'1V\'?m[6j]:I)},7L:C(a){A 1e=m.43(a,\'1e\');q(1e)E 1e;E a.24},4o:C(1x){A 1O=m.$(1x),4S=m.a5[1x],a={};q(!1O&&!4S)E I;q(!4S){4S=1O.5B(M);4S.1x=\'\';m.a5[1x]=4S;E 1O}J{E 4S.5B(M)}},3v:C(d){q(d)m.8X.21(d);m.8X.2i=\'\'},1w:C(B){q(!m.2S){m.2S=m.1b(\'P\',{1c:\'K-ee K-2t-D\',67:\'\',2n:C(){q(m.1A(m,\'ed\'))m.2b()}},{1n:\'1X\',1z:0},m.29,M)}m.2S.G.1o=\'\';m.2S.67+=\'|\'+B.Q;q(m.5I&&m.ay)m.R(m.2S,{9k:\'7R(\'+m.5p+\'ec.bf)\',1z:1});J m.2u(m.2S,{1z:B.48},m.95)},9H:C(Q){q(!m.2S)E;q(1G Q!=\'1V\')m.2S.67=m.2S.67.2d(\'|\'+Q,\'\');q((1G Q!=\'1V\'&&m.2S.67!=\'\')||(m.2s&&m.43(m.2s,\'48\')))E;q(m.5I&&m.ay)m.2S.G.1o=\'1F\';J m.2u(m.2S,{1z:0},m.95,I,C(){m.2S.G.1o=\'1F\'})},8A:C(78,B){A 1h=B||m.2B();B=1h;q(m.2s)E 1j;J m.1h=1h;m.4R(W,1S.3u?\'7f\':\'7b\',m.5V);1t{m.2s=78;78.2n()}1v(e){m.1h=m.2s=I}1t{q(!78||B.3i[1]!=\'42\')B.2b()}1v(e){}E 1j},6B:C(el,2q){A B=m.2B(el);q(B)E m.8A(B.8J(2q),B);J E 1j},2W:C(el){E m.6B(el,-1)},1C:C(el){E m.6B(el,1)},5V:C(e){q(!e)e=1S.2v;q(!e.2C)e.2C=e.9X;q(1G e.2C.a3!=\'1V\')E M;q(!m.1A(m,\'dR\',e))E M;A B=m.2B();A 2q=I;ba(e.do){28 70:q(B)B.74();E M;28 32:2q=2;5a;28 34:28 39:28 40:2q=1;5a;28 8:28 33:28 37:28 38:2q=-1;5a;28 27:28 13:2q=0}q(2q!==I){m.4R(W,1S.3u?\'7f\':\'7b\',m.5V);q(!m.az)E M;q(e.5g)e.5g();J e.cv=1j;q(B){q(2q==0){B.2b()}J q(2q==2){q(B.1p)B.1p.bi()}J{q(B.1p)B.1p.3r();m.6B(B.Q,2q)}E 1j}}E M},cO:C(11){m.2k(m.1T,m.3s(11,{23:\'23\'+m.61++}))},cQ:C(1r){A 2Z=1r.2N;q(1G 2Z==\'7F\'){O(A i=0;i<2Z.V;i++){A o={};O(A x 3e 1r)o[x]=1r[x];o.2N=2Z[i];m.2k(m.5O,o)}}J{m.2k(m.5O,1r)}},82:C(6A,6P){A el,2o=/^K-U-([0-9]+)$/;el=6A;5o(el.22){q(el.6I!==1V)E el.6I;q(el.1x&&2o.1a(el.1x))E el.1x.2d(2o,"$1");el=el.22}q(!6P){el=6A;5o(el.22){q(el.3O&&m.6U(el)){O(A Q=0;Q<m.16.V;Q++){A B=m.16[Q];q(B&&B.a==el)E Q}}el=el.22}}E I},2B:C(el,6P){q(1G el==\'1V\')E m.16[m.2Y]||I;q(1G el==\'3N\')E m.16[el]||I;q(1G el==\'9p\')el=m.$(el);E m.16[m.82(el,6P)]||I},6U:C(a){E(a.2n&&a.2n.cB().2d(/\\s/g,\' \').31(/m.(cU|e)cT/))},bM:C(){O(A i=0;i<m.16.V;i++)q(m.16[i]&&m.16[i].5i)m.b9()},1A:C(6u,9l,2G){E 6u&&6u[9l]?(6u[9l](6u,2G)!==1j):M},7Z:C(e){q(!e)e=1S.2v;q(e.dn>1)E M;q(!e.2C)e.2C=e.9X;A el=e.2C;5o(el.22&&!(/K-(2R|3A|3w|4g)/.1a(el.1c))){el=el.22}A B=m.2B(el);q(B&&(B.5J||!B.5i))E M;q(B&&e.T==\'7W\'){q(e.2C.a3)E M;A 31=el.1c.31(/K-(2R|3A|4g)/);q(31){m.2w={B:B,T:31[1],18:B.x.H,L:B.x.D,Y:B.y.H,N:B.y.D,b4:e.7r,b3:e.7P};m.2m(W,\'7x\',m.7n);q(e.5g)e.5g();q(/K-(2R|3w)-9K/.1a(B.S.1c)){B.3P();m.9f=M}E 1j}J q(/K-3w/.1a(el.1c)&&m.2Y!=B.Q){B.3P();B.5l(\'1q\')}}J q(e.T==\'bh\'){m.4R(W,\'7x\',m.7n);q(m.2w){q(m.58&&m.2w.T==\'2R\')m.2w.B.S.G.4w=m.58;A 3G=m.2w.3G;q(!3G&&!m.9f&&!/(3A|4g)/.1a(m.2w.T)){q(m.1A(B,\'dg\'))B.2b()}J q(3G||(!3G&&m.bd)){m.2w.B.5l(\'1q\')}q(m.2w.B.3H)m.2w.B.3H.G.1o=\'1F\';q(3G)m.1A(m.2w.B,\'df\',m.2w);m.9f=1j;m.2w=I}J q(/K-2R-9K/.1a(el.1c)){el.G.4w=m.58}}E 1j},7n:C(e){q(!m.2w)E M;q(!e)e=1S.2v;A a=m.2w,B=a.B;q(B.1k){q(!B.3H)B.3H=m.1b(\'P\',I,{1l:\'2l\',L:B.x.D+\'F\',N:B.y.D+\'F\',18:B.x.cb+\'F\',Y:B.y.cb+\'F\',1B:4,9k:(m.1E?\'dc\':\'1F\'),1z:0.dh},B.U,M);q(B.3H.G.1o==\'1F\')B.3H.G.1o=\'\'}a.dX=e.7r-a.b4;a.dY=e.7P-a.b3;A 9x=1i.dl(1i.aX(a.dX,2)+1i.aX(a.dY,2));q(!a.3G)a.3G=(a.T!=\'2R\'&&9x>0)||(9x>(m.db||5));q(a.3G&&e.7r>5&&e.7P>5){q(!m.1A(B,\'d1\',a))E 1j;q(a.T==\'4g\')B.4g(a);J{B.9B(a.18+a.dX,a.Y+a.dY);q(a.T==\'2R\')B.S.G.4w=\'3A\'}}E 1j},aL:C(e){1t{q(!e)e=1S.2v;A 6f=/d0/i.1a(e.T);q(!e.2C)e.2C=e.9X;q(m.1E)e.98=6f?e.cZ:e.d3;A B=m.2B(e.2C);q(!B.5i)E;q(!B||!e.98||m.2B(e.98,M)==B||m.2w)E;m.1A(B,6f?\'d8\':\'d6\',e);O(A i=0;i<B.1T.V;i++)(C(){A o=m.$(\'23\'+B.1T[i]);q(o&&o.7J){q(6f)m.R(o,{1n:\'1X\',1o:\'\'});m.2u(o,{1z:6f?o.1z:0},o.4b)}})()}1v(e){}},2m:C(el,2v,3E){q(el==W&&2v==\'41\'){m.2k(m.7l,3E)}1t{el.2m(2v,3E,1j)}1v(e){1t{el.a9(\'68\'+2v,3E);el.fd(\'68\'+2v,3E)}1v(e){el[\'68\'+2v]=3E}}},4R:C(el,2v,3E){1t{el.4R(2v,3E,1j)}1v(e){1t{el.a9(\'68\'+2v,3E)}1v(e){el[\'68\'+2v]=I}}},7B:C(i){q(m.a0&&m.6s[i]&&m.6s[i]!=\'1V\'){A 1R=W.1b(\'1R\');1R.4L=C(){1R=I;m.7B(i+1)};1R.1e=m.6s[i]}},bu:C(3N){q(3N&&1G 3N!=\'7F\')m.9o=3N;A 26=m.5R();O(A i=0;i<26.5r.V&&i<m.9o;i++){m.2k(m.6s,m.7L(26.5r[i]))}q(m.1Y)1J m.5L(m.1Y,C(){m.7B(0)});J m.7B(0);q(m.5w)A 4X=m.1b(\'1R\',{1e:m.5p+m.5w})},7A:C(){q(!m.29){m.7k();m.5h=m.1E&&m.3f<7;m.bX=m.5h&&8a.fY==\'fT:\';O(A x 3e m.6N){q(1G m[x]!=\'1V\')m.14[x]=m[x];J q(1G m.14[x]==\'1V\'&&1G m.6N[x]!=\'1V\')m.14[x]=m.6N[x]}m.29=m.1b(\'P\',{1c:\'K-29\'},{1l:\'2l\',18:0,Y:0,L:\'2x%\',1B:m.4t,9t:\'ar\'},W.1f,M);m.2r=m.1b(\'a\',{1c:\'K-2r\',2j:m.14.am,2i:m.14.al,24:\'bZ:;\'},{1l:\'2l\',Y:\'-4k\',1z:m.ak,1B:1},m.29);m.8X=m.1b(\'P\',I,{1o:\'1F\'},m.29);m.2t=m.1b(\'P\',{1c:\'K-2t K-2t-D\'},{1n:(m.4H&&m.3f<7O)?\'1X\':\'1q\'},m.29,1);m.3D=m.1b(\'P\',I,{aD:\'aC\',fw:\'fv\'},I,M);1i.fu=C(t,b,c,d){E c*t/d+b};1i.aq=C(t,b,c,d){E c*(t/=d)*t+b};1i.8d=C(t,b,c,d){E-c*(t/=d)*(t-2)+b};m.cG=m.5h;m.cF=((1S.3u&&m.3f<9)||56.aV==\'b0\'||(m.1E&&m.3f<5.5));m.1A(k,\'ft\')}},41:C(){q(m.a4)E;m.a4=M;O(A i=0;i<m.7l.V;i++)m.7l[i]()},93:C(){A el,1m,6w=[],5r=[],5t=[],3h={},2o;O(A i=0;i<m.9U.V;i++){1m=W.2A(m.9U[i]);O(A j=0;j<1m.V;j++){el=1m[j];2o=m.6U(el);q(2o){m.2k(6w,el);q(2o[0]==\'m.2H\')m.2k(5r,el);J q(2o[0]==\'m.9T\')m.2k(5t,el);A g=m.43(el,\'2N\')||\'1F\';q(!3h[g])3h[g]=[];m.2k(3h[g],el)}}}m.4P={6w:6w,3h:3h,5r:5r,5t:5t};E m.4P},5R:C(){E m.4P||m.93()},2b:C(el){A B=m.2B(el);q(B)B.2b();E 1j}};m.fx=C(30,1r,1d){k.1r=1r;k.30=30;k.1d=1d;q(!1r.aH)1r.aH={}};m.fx.5e={9m:C(){(m.fx.3U[k.1d]||m.fx.3U.a7)(k);q(k.1r.3U)k.1r.3U.aj(k.30,k.4i,k)},3y:C(8m,2g,4v){k.8U=(1J 7C()).7D();k.4F=8m;k.54=2g;k.4v=4v;k.4i=k.4F;k.H=k.9r=0;A 7q=k;C t(7v){E 7q.3U(7v)}t.30=k.30;q(t()&&m.44.2k(t)==1){m.ai=fB(C(){A 44=m.44;O(A i=0;i<44.V;i++)q(!44[i]())44.fr(i--,1);q(!44.V){eg(m.ai)}},13)}},3U:C(7v){A t=(1J 7C()).7D();q(7v||t>=k.1r.45+k.8U){k.4i=k.54;k.H=k.9r=1;k.9m();k.1r.7o[k.1d]=M;A 94=M;O(A i 3e k.1r.7o)q(k.1r.7o[i]!==M)94=1j;q(94){q(k.1r.6O)k.1r.6O.aj(k.30)}E 1j}J{A n=t-k.8U;k.9r=n/k.1r.45;k.H=k.1r.2O(n,0,1,k.1r.45);k.4i=k.4F+((k.54-k.4F)*k.H);k.9m()}E M}};m.3s(m.fx,{3U:{1z:C(fx){m.R(fx.30,{1z:fx.4i})},a7:C(fx){1t{q(fx.30.G&&fx.30.G[fx.1d]!=I)fx.30.G[fx.1d]=fx.4i+fx.4v;J fx.30[fx.1d]=fx.4i}1v(e){}}}});m.5L=C(1Y,3z){k.3z=3z;k.1Y=1Y;A v=m.3f,3X;k.9e=m.1E&&v>=5.5&&v<7;q(!1Y){q(3z)3z();E}m.7A();k.2h=m.1b(\'2h\',{fo:0},{1n:\'1q\',1l:\'2l\',fm:\'fE\',L:0},m.29,M);A 4q=m.1b(\'4q\',I,I,k.2h,1);k.2E=[];O(A i=0;i<=8;i++){q(i%3==0)3X=m.1b(\'3X\',I,{N:\'1Q\'},4q,M);k.2E[i]=m.1b(\'2E\',I,I,3X,M);A G=i!=4?{fF:0,fW:0}:{1l:\'4n\'};m.R(k.2E[i],G)}k.2E[4].1c=1Y+\' K-1g\';k.ap()};m.5L.5e={ap:C(){A 1e=m.5p+(m.fU||"fX/")+k.1Y+".bf";A b2=m.4H&&m.3f<7O?m.29:I;k.3L=m.1b(\'1R\',I,{1l:\'2l\',Y:\'-4k\'},b2,M);A 3C=k;k.3L.4L=C(){3C.aY()};k.3L.1e=1e},aY:C(){A o=k.1y=k.3L.L/4,H=[[0,0],[0,-4],[-2,0],[0,-8],0,[-2,-8],[0,-2],[0,-6],[-2,-2]],1w={N:(2*o)+\'F\',L:(2*o)+\'F\'};O(A i=0;i<=8;i++){q(H[i]){q(k.9e){A w=(i==1||i==7)?\'2x%\':k.3L.L+\'F\';A P=m.1b(\'P\',I,{L:\'2x%\',N:\'2x%\',1l:\'4n\',2e:\'1q\'},k.2E[i],M);m.1b(\'P\',I,{60:"fZ:fS.bT.fR(fK=fJ, 1e=\'"+k.3L.1e+"\')",1l:\'2l\',L:w,N:k.3L.N+\'F\',18:(H[i][0]*o)+\'F\',Y:(H[i][1]*o)+\'F\'},P,M)}J{m.R(k.2E[i],{9k:\'7R(\'+k.3L.1e+\') \'+(H[i][0]*o)+\'F \'+(H[i][1]*o)+\'F\'})}q(1S.3u&&(i==3||i==5))m.1b(\'P\',I,1w,k.2E[i],M);m.R(k.2E[i],1w)}}k.3L=I;q(m.4A[k.1Y])m.4A[k.1Y].6q();m.4A[k.1Y]=k;q(k.3z)k.3z()},4G:C(H,1y,at,4b,2O){A B=k.B,5K=B.U.G,1y=1y||0,H=H||{x:B.x.H+1y,y:B.y.H+1y,w:B.x.Z(\'2f\')-2*1y,h:B.y.Z(\'2f\')-2*1y};q(at)k.2h.G.1n=(H.h>=4*k.1y)?\'1X\':\'1q\';m.R(k.2h,{18:(H.x-k.1y)+\'F\',Y:(H.y-k.1y)+\'F\',L:(H.w+2*k.1y)+\'F\'});H.w-=2*k.1y;H.h-=2*k.1y;m.R(k.2E[4],{L:H.w>=0?H.w+\'F\':0,N:H.h>=0?H.h+\'F\':0});q(k.9e)k.2E[3].G.N=k.2E[5].G.N=k.2E[4].G.N},6q:C(be){q(be)k.2h.G.1n=\'1q\';J m.3v(k.2h)}};m.6T=C(B,1w){k.B=B;k.1w=1w;k.3n=1w==\'x\'?\'bH\':\'bI\';k.3l=k.3n.6p();k.5Q=1w==\'x\'?\'bv\':\'bG\';k.7a=k.5Q.6p();k.9q=1w==\'x\'?\'cg\':\'bF\';k.b5=k.9q.6p();k.1H=k.3b=0};m.6T.5e={Z:C(Q){ba(Q){28\'9G\':E k.1L+k.3m+(k.t-m.2r[\'1y\'+k.3n])/2;28\'9I\':E k.H+k.cb+k.1H+(k.D-m.2r[\'1y\'+k.3n])/2;28\'2f\':E k.D+2*k.cb+k.1H+k.3b;28\'5c\':E k.4E-k.3p-k.4D;28\'89\':E k.Z(\'5c\')-2*k.cb-k.1H-k.3b;28\'63\':E k.H-(k.B.1g?k.B.1g.1y:0);28\'83\':E k.Z(\'2f\')+(k.B.1g?2*k.B.1g.1y:0);28\'2I\':E k.1Z?1i.3c((k.D-k.1Z)/2):0}},86:C(){k.cb=(k.B.S[\'1y\'+k.3n]-k.t)/2;k.4D=m[\'97\'+k.9q]},9w:C(){k.t=k.B.el[k.3l]?3M(k.B.el[k.3l]):k.B.el[\'1y\'+k.3n];k.1L=k.B.1L[k.1w];k.3m=(k.B.el[\'1y\'+k.3n]-k.t)/2;q(k.1L==0||k.1L==-1){k.1L=(m.4e[k.3l]/2)+m.4e[\'2a\'+k.5Q]}},87:C(){A B=k.B;k.2Q=\'1Q\';q(B.9n==\'4J\')k.2Q=\'4J\';J q(1J 5s(k.7a).1a(B.4l))k.2Q=I;J q(1J 5s(k.b5).1a(B.4l))k.2Q=\'4x\';k.H=k.1L-k.cb+k.3m;q(k.8W&&k.1w==\'x\')B.6J=1i.3d(B.6J||k.19,B.8W*k.19/B.y.19);k.D=1i.3d(k.19,B[\'4x\'+k.3n]||k.19);k.2L=B.5T?1i.3d(B[\'3d\'+k.3n],k.19):k.19;q(B.2D&&B.3x){k.D=B[k.3l];k.1Z=k.19}q(k.1w==\'x\'&&m.5A)k.2L=B.4B;k.2C=B[\'2C\'+k.1w.aE()];k.3p=m[\'97\'+k.5Q];k.2a=m.4e[\'2a\'+k.5Q];k.4E=m.4e[k.3l]},73:C(i){A B=k.B;q(B.2D&&(B.3x||m.5A)){k.1Z=i;k.D=1i.4x(k.D,k.1Z);B.S.G[k.7a]=k.Z(\'2I\')+\'F\'}J k.D=i;B.S.G[k.3l]=i+\'F\';B.U.G[k.3l]=k.Z(\'2f\')+\'F\';q(B.1g)B.1g.4G();q(B.3H)B.3H.G[k.3l]=i+\'F\';q(k.1w==\'y\'&&B.5U&&B.1f.G.N!=\'1Q\')1t{B.5U.1f.G.2e=\'1Q\'}1v(e){}q(B.2y){A d=B.2p;q(k.9S===1V)k.9S=B.1s[\'1y\'+k.3n]-d[\'1y\'+k.3n];d.G[k.3l]=(k.D-k.9S)+\'F\';q(k.1w==\'x\')B.3V.G.L=\'1Q\';q(B.1f)B.1f.G[k.3l]=\'1Q\'}q(k.1w==\'x\'&&B.1u)B.55(M);q(k.1w==\'x\'&&B.1p&&B.2D){q(i==k.19)B.1p.53(\'19-2H\');J B.1p.4N(\'19-2H\')}},9z:C(i){k.H=i;k.B.U.G[k.7a]=i+\'F\';q(k.B.1g)k.B.1g.4G()}};m.6l=C(a,2c,3y,36){q(W.bW&&m.1E&&!m.a4){m.2m(W,\'41\',C(){1J m.6l(a,2c,3y,36)});E}k.a=a;k.3y=3y;k.36=36||\'2R\';k.2y=(36==\'3w\');k.2D=!k.2y;m.a0=1j;k.1T=[];k.1h=m.1h;m.1h=I;m.7A();A Q=k.Q=m.16.V;O(A i=0;i<m.a1.V;i++){A 2X=m.a1[i];k[2X]=2c&&1G 2c[2X]!=\'1V\'?2c[2X]:m[2X]}q(!k.1e)k.1e=a.24;A el=(2c&&2c.a6)?m.$(2c.a6):a;el=k.aQ=el.2A(\'1R\')[0]||el;k.7m=el.1x||a.1x;q(!m.1A(k,\'eC\'))E M;O(A i=0;i<m.16.V;i++){q(m.16[i]&&m.16[i].a==a&&!(k.1h&&k.3i[1]==\'42\')){m.16[i].3P();E 1j}}q(!m.eA)O(A i=0;i<m.16.V;i++){q(m.16[i]&&m.16[i].aQ!=el&&!m.16[i].6R){m.16[i].7d()}}m.16[Q]=k;q(!m.91&&!m.2s){q(m.16[Q-1])m.16[Q-1].2b();q(1G m.2Y!=\'1V\'&&m.16[m.2Y])m.16[m.2Y].2b()}k.el=el;k.1L=k.aM||m.71(el);m.7k();A x=k.x=1J m.6T(k,\'x\');x.9w();A y=k.y=1J m.6T(k,\'y\');y.9w();q(/5j/i.1a(el.3O))k.ac(el);k.U=m.1b(\'P\',{1x:\'K-U-\'+k.Q,1c:\'K-U \'+k.8Y},{1n:\'1q\',1l:\'2l\',1B:m.4t+=2},I,M);k.U.eD=k.U.eE=m.aL;q(k.36==\'2R\'&&k.3F==2)k.3F=0;q(!k.1Y||(k.1h&&k.2D&&k.3i[1]==\'42\')){k[k.36+\'9y\']()}J q(m.4A[k.1Y]){k.8S();k[k.36+\'9y\']()}J{k.65();A B=k;1J m.5L(k.1Y,C(){B.8S();B[B.36+\'9y\']()})}E M};m.6l.5e={9L:C(e){q(m.eI)eH(\'eF \'+e.eG+\': \'+e.ew);J 1S.8a.24=k.1e},8S:C(){A 1g=k.1g=m.4A[k.1Y];1g.B=k;1g.2h.G.1B=k.U.G.1B-1;m.4A[k.1Y]=I},65:C(){q(k.6R||k.2r)E;k.2r=m.2r;A B=k;k.2r.2n=C(){B.7d()};q(!m.1A(k,\'em\'))E;A B=k,l=k.x.Z(\'9G\')+\'F\',t=k.y.Z(\'9G\')+\'F\';q(!2K&&k.1h&&k.3i[1]==\'42\')A 2K=k.1h;q(2K){l=2K.x.Z(\'9I\')+\'F\';t=2K.y.Z(\'9I\')+\'F\';k.2r.G.1B=m.4t++}47(C(){q(B.2r)m.R(B.2r,{18:l,Y:t,1B:m.4t++})},2x)},ej:C(){A B=k;A 1R=W.1b(\'1R\');k.S=1R;1R.4L=C(){q(m.16[B.Q])B.5Y()};q(m.eh)1R.ei=C(){E 1j};1R.1c=\'K-2R\';m.R(1R,{1n:\'1q\',1o:\'3Q\',1l:\'2l\',6J:\'4k\',1B:3});1R.2j=m.14.9F;q(m.4H&&m.3f<7O)m.29.21(1R);q(m.1E&&m.eo)1R.1e=I;1R.1e=k.1e;k.65()},ep:C(){q(!m.1A(k,\'eu\'))E;k.S=m.8c(k.a);q(!k.S)k.S=m.4o(k.7X);q(!k.S)k.S=m.7Y();k.9V([\'72\']);q(k.72){A 1f=m.4K(k.S,\'P\',\'K-1f\');q(1f)1f.21(k.72);k.72.G.1o=\'3Q\'}m.1A(k,\'et\');A 1s=k.1s=k.S;q(/(3t|1k)/.1a(k.2F))k.8r(1s);m.29.21(k.U);m.R(k.U,{1l:\'es\',8O:\'0 \'+m.9h+\'F 0 \'+m.4y+\'F\'});k.S=m.1b(\'P\',{1c:\'K-3w\'},{1l:\'4n\',1B:3,N:0,2e:\'1q\'},k.U);k.3V=m.1b(\'P\',I,I,k.S,1);k.3V.21(1s);m.R(1s,{1l:\'4n\',1o:\'3Q\',9t:m.14.9s||\'\'});q(k.L)1s.G.L=k.L+\'F\';q(k.N)m.R(1s,{N:k.N+\'F\',2e:\'1q\'});q(1s.1N<k.4B)1s.G.L=k.4B+\'F\';q(k.2F==\'2U\'&&!m.8c(k.a)){k.65();A B=k;A 2U=1J m.7E(k.a,1s);2U.1e=k.1e;2U.3z=C(){q(m.16[B.Q])B.5Y()};2U.9a=C(){8a.24=B.1e};2U.9C()}J q(k.2F==\'1k\'&&k.3J==\'5D\'){k.6L()}J k.5Y()},5Y:C(){1t{q(!k.S)E;k.S.4L=I;q(k.6R)E;J k.6R=M;A x=k.x,y=k.y;q(k.2r){m.R(k.2r,{Y:\'-4k\'});k.2r=I;m.1A(k,\'ch\')}q(k.2D){x.19=k.S.L;y.19=k.S.N;m.R(k.S,{L:x.t+\'F\',N:y.t+\'F\'});k.U.21(k.S);m.29.21(k.U)}J q(k.8B)k.8B();x.86();y.86();m.R(k.U,{18:(x.1L+x.3m-x.cb)+\'F\',Y:(y.1L+x.3m-y.cb)+\'F\'});k.90();k.c3();A 2V=x.19/y.19;x.87();k.2Q(x);y.87();k.2Q(y);q(k.2y)k.bc();q(k.1u)k.55(0,1);q(k.5T){q(k.2D)k.cl(2V);J k.7T();A 1P=k.1p;q(1P&&k.1h&&1P.35&&1P.aP){A H=1P.cA.1l||\'\',p;O(A 1w 3e m.88)O(A i=0;i<5;i++){p=k[1w];q(H.31(m.88[1w][i])){p.H=k.1h[1w].H+(k.1h[1w].1H-p.1H)+(k.1h[1w].D-p.D)*[0,0,.5,1,1][i];q(1P.aP==\'eL\'){q(p.H+p.D+p.1H+p.3b>p.2a+p.4E-p.4D)p.H=p.2a+p.4E-p.D-p.3p-p.4D-p.1H-p.3b;q(p.H<p.2a+p.3p)p.H=p.2a+p.3p}}}}q(k.2D&&k.x.19>(k.x.1Z||k.x.D)){k.c0();q(k.1T.V==1)k.55()}}k.8Z()}1v(e){k.9L(e)}},8r:C(5v,1Q){A c=m.4K(5v,\'79\',\'K-1f\');q(/(1k|3t)/.1a(k.2F)){q(k.4f)c.G.L=k.4f+\'F\';q(k.4m)c.G.N=k.4m+\'F\'}},6L:C(){q(k.aw)E;A B=k;k.1f=m.4K(k.1s,\'79\',\'K-1f\');q(k.2F==\'1k\'){k.65();A 5m=m.3D.5B(1);k.1f.21(5m);k.f5=k.1s.1N;q(!k.4f)k.4f=5m.1N;A 5k=k.1s.1U-k.1f.1U,h=k.4m||m.4e.N-5k-m.4T-m.77,4L=k.3J==\'5D\'?\' 4L="q (m.16[\'+k.Q+\']) m.16[\'+k.Q+\'].5Y()" \':\'\';k.1f.2i+=\'<1k 2X="m\'+(1J 7C()).7D()+\'" f1="0" Q="\'+k.Q+\'" \'+\' G="L:\'+k.4f+\'F; N:\'+h+\'F" \'+4L+\' 1e="\'+k.1e+\'" ></1k>\';k.5m=k.1f.2A(\'P\')[0];k.1k=k.1f.2A(\'1k\')[0];q(k.3J==\'5P\')k.7U()}q(k.2F==\'3t\'){k.1f.1x=k.1f.1x||\'m-f6-1x-\'+k.Q;A a=k.8e;q(!a.2c)a.2c={};q(1G a.2c.aG==\'1V\')a.2c.aG=\'f7\';q(96)96.fc(k.1e,k.1f.1x,k.4f,k.4m,a.fb||\'7\',a.fa,a.aF,a.2c,a.ax)}k.aw=M},8B:C(){q(k.1k&&!k.4m){k.1k.G.N=k.1f.G.N=k.8E()+\'F\'}k.1s.21(m.3D);q(!k.x.19)k.x.19=k.1s.1N;k.y.19=k.1s.1U;k.1s.8T(m.3D);q(m.1E&&k.av>3M(k.1s.5H.N)){k.av=3M(k.1s.5H.N)}m.R(k.U,{1l:\'2l\',8O:\'0\'});m.R(k.S,{L:k.x.t+\'F\',N:k.y.t+\'F\'})},8E:C(){A h;1t{A 2z=k.5U=k.1k.9c||k.1k.6i.W;A 3D=2z.1b(\'P\');3D.G.aD=\'aC\';2z.1f.21(3D);h=3D.8K;q(m.1E)h+=3M(2z.1f.5H.4T)+3M(2z.1f.5H.77)-1}1v(e){h=eZ}E h},7U:C(){A 5n=k.1s.1N-k.5m.1N;m.3v(k.5m);q(5n<0)5n=0;A 5k=k.1s.1U-k.1k.1U;q(k.5U&&!k.4m&&!k.N&&k.y.D==k.y.19)1t{k.5U.1f.G.2e=\'1q\'}1v(e){}m.R(k.1k,{L:1i.9D(k.x.D-5n)+\'F\',N:1i.9D(k.y.D-5k)+\'F\'});m.R(k.1f,{L:k.1k.G.L,N:k.1k.G.N});k.4Z=k.1k;k.2p=k.4Z},bc:C(){k.8r(k.1s);q(k.2F==\'3t\'&&k.3J==\'5D\')k.6L();q(k.x.D<k.x.19&&!k.7N)k.x.D=k.x.19;q(k.y.D<k.y.19&&!k.7G)k.y.D=k.y.19;k.2p=k.1s;m.R(k.3V,{1l:\'4n\',L:k.x.D+\'F\'});m.R(k.1s,{8g:\'1F\',L:\'1Q\',N:\'1Q\'});A 1O=m.4K(k.1s,\'79\',\'K-1f\');q(1O&&!/(1k|3t)/.1a(k.2F)){A 5d=1O;1O=m.1b(5d.eP,I,{2e:\'1q\'},I,M);5d.22.eO(1O,5d);1O.21(m.3D);1O.21(5d);A 5n=k.1s.1N-1O.1N;A 5k=k.1s.1U-1O.1U;1O.8T(m.3D);A 7I=m.4H||56.aV==\'b0\'?1:0;m.R(1O,{L:(k.x.D-5n-7I)+\'F\',N:(k.y.D-5k)+\'F\',2e:\'1Q\',1l:\'4n\'});q(7I&&5d.1U>1O.1U){1O.G.L=(3M(1O.G.L)+7I)+\'F\'}k.4Z=1O;k.2p=k.4Z}q(k.1k&&k.3J==\'5D\')k.7U();q(!k.4Z&&k.y.D<k.3V.1U)k.2p=k.S;q(k.2p==k.S&&!k.7N&&!/(1k|3t)/.1a(k.2F)){k.x.D+=17}q(k.2p&&k.2p.1U>k.2p.22.1U){47("1t { m.16["+k.Q+"].2p.G.2e = \'1Q\'; } 1v(e) {}",m.7s)}},ac:C(5j){A c=5j.eU.6z(\',\');O(A i=0;i<c.V;i++)c[i]=3M(c[i]);q(5j.g1.6p()==\'eV\'){k.x.1L+=c[0]-c[2];k.y.1L+=c[1]-c[2];k.x.t=k.y.t=2*c[2]}J{A 5M,5N,5y=5M=c[0],62=5N=c[1];O(A i=0;i<c.V;i++){q(i%2==0){5y=1i.3d(5y,c[i]);5M=1i.4x(5M,c[i])}J{62=1i.3d(62,c[i]);5N=1i.4x(5N,c[i])}}k.x.1L+=5y;k.x.t=5M-5y;k.y.1L+=62;k.y.t=5N-62}},2Q:C(p,5f){A 4M,2K=p.2C,1w=p==k.x?\'x\':\'y\';q(2K&&2K.31(/ /)){4M=2K.6z(\' \');2K=4M[0]}q(2K&&m.$(2K)){p.H=m.71(m.$(2K))[1w];q(4M&&4M[1]&&4M[1].31(/^[-]?[0-9]+F$/))p.H+=3M(4M[1]);q(p.D<p.2L)p.D=p.2L}J q(p.2Q==\'1Q\'||p.2Q==\'4J\'){A 8b=1j;A 52=p.B.5T;q(p.2Q==\'4J\')p.H=1i.3c(p.2a+(p.4E+p.3p-p.4D-p.Z(\'2f\'))/2);J p.H=1i.3c(p.H-((p.Z(\'2f\')-p.t)/2));q(p.H<p.2a+p.3p){p.H=p.2a+p.3p;8b=M}q(!5f&&p.D<p.2L){p.D=p.2L;52=1j}q(p.H+p.Z(\'2f\')>p.2a+p.4E-p.4D){q(!5f&&8b&&52){p.D=1i.3d(p.D,p.Z(1w==\'y\'?\'5c\':\'89\'))}J q(p.Z(\'2f\')<p.Z(\'5c\')){p.H=p.2a+p.4E-p.4D-p.Z(\'2f\')}J{p.H=p.2a+p.3p;q(!5f&&52)p.D=p.Z(1w==\'y\'?\'5c\':\'89\')}}q(!5f&&p.D<p.2L){p.D=p.2L;52=1j}}J q(p.2Q==\'4x\'){p.H=1i.eW(p.H-p.D+p.t)}q(p.H<p.3p){A co=p.H;p.H=p.3p;q(52&&!5f)p.D=p.D-(p.H-co)}},cl:C(2V){A x=k.x,y=k.y,3K=1j,3a=1i.3d(x.19,x.D),4c=1i.3d(y.19,y.D),3x=(k.3x||m.5A);q(3a/4c>2V){ 3a=4c*2V;q(3a<x.2L){3a=x.2L;4c=3a/2V}3K=M}J q(3a/4c<2V){ 4c=3a/2V;3K=M}q(m.5A&&x.19<x.2L){x.1Z=x.19;y.D=y.1Z=y.19}J q(k.3x){x.1Z=3a;y.1Z=4c}J{x.D=3a;y.D=4c}3K=k.7T(k.3x?I:2V,3K);q(3x&&y.D<y.1Z){y.1Z=y.D;x.1Z=y.D*2V}q(3K||3x){x.H=x.1L-x.cb+x.3m;x.2L=x.D;k.2Q(x,M);y.H=y.1L-y.cb+y.3m;y.2L=y.D;k.2Q(y,M);q(k.1u)k.55()}},7T:C(2V,3K){A x=k.x,y=k.y;q(k.1u&&(k.2D||k.7G)){5o(y.D>k.5G&&x.D>k.4B&&y.Z(\'2f\')>y.Z(\'5c\')){y.D-=10;q(2V)x.D=y.D*2V;k.55(0,1);3K=M}}E 3K},eT:C(){q(k.2p){A h=/1k/i.1a(k.2p.3O)?(k.8E()+1)+\'F\':\'1Q\';q(k.1f)k.1f.G.N=h;k.2p.G.N=h;k.y.73(k.1s.1U)}},8Z:C(){A x=k.x,y=k.y;k.5l(\'1q\');m.1A(k,\'eS\');q(k.1p&&k.1p.2J)k.1p.2J.4W();k.9Z(1,{U:{L:x.Z(\'2f\'),N:y.Z(\'2f\'),18:x.H,Y:y.H},S:{18:x.1H+x.Z(\'2I\'),Y:y.1H+y.Z(\'2I\'),L:x.1Z||x.D,N:y.1Z||y.D}},m.7s)},9Z:C(1I,2g,4b){A 5x=k.3i,8G=1I?(k.1h?k.1h.a:I):m.2s,t=(5x[1]&&8G&&m.43(8G,\'3i\')[1]==5x[1])?5x[1]:5x[0];q(k[t]&&t!=\'2H\'){k[t](1I,2g);E}q(k.1g&&!k.3F){q(1I)k.1g.4G();J k.1g.6q((k.2y&&k.4z))}q(!1I)k.7H();A B=k,x=B.x,y=B.y,2O=k.2O;q(!1I)2O=k.cw||2O;A 5P=1I?C(){q(B.1g)B.1g.2h.G.1n="1X";47(C(){B.6C()},50)}:C(){B.5z()};q(1I)m.R(k.U,{L:x.t+\'F\',N:y.t+\'F\'});q(1I&&k.2y){m.R(k.U,{18:(x.1L-x.cb+x.3m)+\'F\',Y:(y.1L-y.cb+y.3m)+\'F\'})}q(k.ct){m.R(k.U,{1z:1I?0:1});m.3s(2g.U,{1z:1I})}m.2u(k.U,2g.U,{45:4b,2O:2O,3U:C(3g,2G){q(B.1g&&B.3F&&2G.1d==\'Y\'){A 5C=1I?2G.H:1-2G.H;A H={w:x.t+(x.Z(\'2f\')-x.t)*5C,h:y.t+(y.Z(\'2f\')-y.t)*5C,x:x.1L+(x.H-x.1L)*5C,y:y.1L+(y.H-y.1L)*5C};B.1g.4G(H,0,1)}q(B.2y){q(2G.1d==\'18\')B.3V.G.18=(x.H-3g)+\'F\';q(2G.1d==\'Y\')B.3V.G.Y=(y.H-3g)+\'F\'}}});m.2u(k.S,2g.S,4b,2O,5P);q(1I){k.U.G.1n=\'1X\';k.S.G.1n=\'1X\';q(k.2y)k.1s.G.1n=\'1X\';k.a.1c+=\' K-57-4l\'}},6b:C(1I,2g){k.3F=1j;A B=k,t=1I?m.7s:0;q(1I){m.2u(k.U,2g.U,0);m.R(k.U,{1z:0,1n:\'1X\'});m.2u(k.S,2g.S,0);k.S.G.1n=\'1X\';m.2u(k.U,{1z:1},t,I,C(){B.6C()})}q(k.1g){k.1g.2h.G.1B=k.U.G.1B;A 7z=1I||-1,1y=k.1g.1y,8y=1I?3:1y,8L=1I?1y:3;O(A i=8y;7z*i<=7z*8L;i+=7z,t+=25){(C(){A o=1I?8L-i:8y-i;47(C(){B.1g.4G(0,o,1)},t)})()}}q(1I){}J{47(C(){q(B.1g)B.1g.6q(B.4z);B.7H();m.2u(B.U,{1z:0},m.9Y,I,C(){B.5z()})},t)}},42:C(1I,2g,8m){q(!1I)E;A B=k,1h=k.1h,x=k.x,y=k.y,3k=1h.x,3q=1h.y,U=k.U,S=k.S,1u=k.1u;m.4R(W,\'7x\',m.7n);m.R(S,{L:(x.1Z||x.D)+\'F\',N:(y.1Z||y.D)+\'F\'});q(1u)1u.G.2e=\'1X\';k.1g=1h.1g;q(k.1g)k.1g.B=B;1h.1g=I;A 5u=m.1b(\'P\',{1c:\'K-\'+k.36},{1l:\'2l\',1B:4,2e:\'1q\',1o:\'1F\'});A 8j={cI:1h,cC:k};O(A n 3e 8j){k[n]=8j[n].S.5B(1);m.R(k[n],{1l:\'2l\',8g:0,1n:\'1X\'});5u.21(k[n])}U.21(5u);q(k.2y)m.R(k.3V,{18:0,Y:0});q(1u){1u.1c=\'\';U.21(1u)}5u.G.1o=\'\';1h.S.G.1o=\'1F\';q(m.4H&&m.3f<7O){k.U.G.1n=\'1X\'}m.2u(U,{L:x.D},{45:m.cz,3U:C(3g,2G){A H=2G.H,4C=1-H;A 1d,D={},8v=[\'H\',\'D\',\'1H\',\'3b\'];O(A n 3e 8v){1d=8v[n];D[\'x\'+1d]=1i.3c(4C*3k[1d]+H*x[1d]);D[\'y\'+1d]=1i.3c(4C*3q[1d]+H*y[1d]);D.cq=1i.3c(4C*(3k.1Z||3k.D)+H*(x.1Z||x.D));D.7h=1i.3c(4C*3k.Z(\'2I\')+H*x.Z(\'2I\'));D.cL=1i.3c(4C*(3q.1Z||3q.D)+H*(y.1Z||y.D));D.6E=1i.3c(4C*3q.Z(\'2I\')+H*y.Z(\'2I\'))}q(B.1g)B.1g.4G({x:D.3j,y:D.4u,w:D.5F+D.49+D.8q+2*x.cb,h:D.5Z+D.4a+D.8z+2*y.cb});1h.U.G.eN=\'eM(\'+(D.4u-3q.H)+\'F, \'+(D.5F+D.49+D.8q+D.3j+2*3k.cb-3k.H)+\'F, \'+(D.5Z+D.4a+D.8z+D.4u+2*3q.cb-3q.H)+\'F, \'+(D.3j-3k.H)+\'F)\';m.R(S,{Y:(D.4a+y.Z(\'2I\'))+\'F\',18:(D.49+x.Z(\'2I\'))+\'F\',4T:(y.H-D.4u)+\'F\',4y:(x.H-D.3j)+\'F\'});m.R(U,{Y:D.4u+\'F\',18:D.3j+\'F\',L:(D.49+D.8q+D.5F+2*x.cb)+\'F\',N:(D.4a+D.8z+D.5Z+2*y.cb)+\'F\'});m.R(5u,{L:(D.cq||D.5F)+\'F\',N:(D.cL||D.5Z)+\'F\',18:(D.49+D.7h)+\'F\',Y:(D.4a+D.6E)+\'F\',1n:\'1X\'});m.R(B.cI,{Y:(3q.H-D.4u+3q.1H-D.4a+3q.Z(\'2I\')-D.6E)+\'F\',18:(3k.H-D.3j+3k.1H-D.49+3k.Z(\'2I\')-D.7h)+\'F\'});m.R(B.cC,{1z:H,Y:(y.H-D.4u+y.1H-D.4a+y.Z(\'2I\')-D.6E)+\'F\',18:(x.H-D.3j+x.1H-D.49+x.Z(\'2I\')-D.7h)+\'F\'});q(1u)m.R(1u,{L:D.5F+\'F\',N:D.5Z+\'F\',18:(D.49+x.cb)+\'F\',Y:(D.4a+y.cb)+\'F\'})},6O:C(){U.G.1n=S.G.1n=\'1X\';S.G.1o=\'3Q\';m.3v(5u);B.6C();1h.5z();B.1h=I}})},br:C(o,el){q(!k.1h)E 1j;O(A i=0;i<k.1h.1T.V;i++){A 6M=m.$(\'23\'+k.1h.1T[i]);q(6M&&6M.23==o.23){k.8V();6M.eR=k.Q;m.2k(k.1T,k.1h.1T[i]);E M}}E 1j},6C:C(){k.5i=M;k.3P();q(k.2y&&k.3J==\'5P\')k.6L();q(k.1k){1t{A B=k,2z=k.1k.9c||k.1k.6i.W;m.2m(2z,\'7W\',C(){q(m.2Y!=B.Q)B.3P()})}1v(e){}q(m.1E&&1G k.5J!=\'eQ\')k.1k.G.L=(k.4f-1)+\'F\'}q(k.48)m.1w(k);q(m.2s&&m.2s==k.a)m.2s=I;k.cD();A p=m.4e,8k=m.7u.x+p.6v,8x=m.7u.y+p.69;k.9b=k.x.H<8k&&8k<k.x.H+k.x.Z(\'2f\')&&k.y.H<8x&&8x<k.y.H+k.y.Z(\'2f\');q(k.1u)k.cc();m.1A(k,\'f0\')},cD:C(){A Q=k.Q;A 1Y=k.1Y;1J m.5L(1Y,C(){1t{m.16[Q].cJ()}1v(e){}})},cJ:C(){A 1C=k.8J(1);q(1C&&1C.2n.cB().31(/m\\.2H/))A 1R=m.1b(\'1R\',{1e:m.7L(1C)})},8J:C(2q){A 8M=k.6Q(),as=m.4P.3h[k.2N||\'1F\'];q(as&&!as[8M+2q]&&k.1p&&k.1p.bs){q(2q==1)E as[0];J q(2q==-1)E as[as.V-1]}E(as&&as[8M+2q])||I},6Q:C(){A 26=m.5R().3h[k.2N||\'1F\'];q(26)O(A i=0;i<26.V;i++){q(26[i]==k.a)E i}E I},c1:C(){q(k[k.64]){A 26=m.4P.3h[k.2N||\'1F\'];q(26){A s=m.14.3N.2d(\'%1\',k.6Q()+1).2d(\'%2\',26.V);k[k.64].2i=\'<P 1W="K-3N">\'+s+\'</P>\'+k[k.64].2i}}},90:C(){q(!k.1h){O(A i=0;i<m.5O.V;i++){A 1P=m.5O[i],2Z=1P.2N;q(1G 2Z==\'1V\'||2Z===I||2Z===k.2N)k.1p=1J m.9W(k.Q,1P)}}J{k.1p=k.1h.1p}A 1P=k.1p;q(!1P)E;A Q=1P.4h=k.Q;1P.bp();1P.53(\'19-2H\');q(1P.35){k.4p(m.3s(1P.cA||{},{4I:1P.35,23:\'35\',1B:5}))}q(1P.2J)1P.2J.6K(k);q(!k.1h&&k.4d)1P.3I(M);q(1P.4d){1P.4d=47(C(){m.1C(Q)},(1P.f9||f8))}},7d:C(){m.3v(k.U);m.16[k.Q]=I;q(m.2s==k.a)m.2s=I;m.9H(k.Q);q(k.2r)m.2r.G.18=\'-4k\';m.1A(k,\'ch\')},c8:C(){q(k.5W)E;k.5W=m.1b(\'a\',{24:m.cp,2C:m.cx,1c:\'K-5W\',2i:m.14.cu,2j:m.14.cs});k.4p({4I:k.5W,1l:k.cr||\'Y 18\',23:\'5W\'})},9V:C(8D,cK){O(A i=0;i<8D.V;i++){A T=8D[i],s=I;q(T==\'9M\'&&!m.1A(k,\'f2\'))E;J q(T==\'4U\'&&!m.1A(k,\'f3\'))E;q(!k[T+\'5q\']&&k.7m)k[T+\'5q\']=T+\'-O-\'+k.7m;q(k[T+\'5q\'])k[T]=m.4o(k[T+\'5q\']);q(!k[T]&&!k[T+\'7S\']&&k[T+\'cj\'])1t{s=f4(k[T+\'cj\'])}1v(e){}q(!k[T]&&k[T+\'7S\']){s=k[T+\'7S\']}q(!k[T]&&!s){k[T]=m.4o(k.a[\'ci\'+T+\'5q\']);q(!k[T]){A 1C=k.a.cn;5o(1C&&!m.6U(1C)){q((1J 5s(\'K-\'+T)).1a(1C.1c||I)){q(!1C.1x)k.a[\'ci\'+T+\'5q\']=1C.1x=\'23\'+m.61++;k[T]=m.4o(1C.1x);5a}1C=1C.cn}}}q(!k[T]&&!s&&k.64==T)s=\'\\n\';q(!k[T]&&s)k[T]=m.1b(\'P\',{1c:\'K-\'+T,2i:s});q(cK&&k[T]){A o={1l:(T==\'4U\')?\'5X\':\'7w\'};O(A x 3e k[T+\'cH\'])o[x]=k[T+\'cH\'][x];o.4I=k[T];k.4p(o)}}},5l:C(1n){q(m.cG)k.6W(\'er\',1n);q(m.cF)k.6W(\'eq\',1n);q(m.5I)k.6W(\'*\',1n)},6W:C(3O,1n){A 1m=W.2A(3O);A 1d=3O==\'*\'?\'2e\':\'1n\';O(A i=0;i<1m.V;i++){q(1d==\'1n\'||(W.84.cf(1m[i],"").bB(\'2e\')==\'1Q\'||1m[i].bC(\'1q-by\')!=I)){A 2P=1m[i].bC(\'1q-by\');q(1n==\'1X\'&&2P){2P=2P.2d(\'[\'+k.Q+\']\',\'\');1m[i].5E(\'1q-by\',2P);q(!2P)1m[i].G[1d]=1m[i].9d}J q(1n==\'1q\'){A 3T=m.71(1m[i]);3T.w=1m[i].1N;3T.h=1m[i].1U;q(!k.48){A bz=(3T.x+3T.w<k.x.Z(\'63\')||3T.x>k.x.Z(\'63\')+k.x.Z(\'83\'));A bg=(3T.y+3T.h<k.y.Z(\'63\')||3T.y>k.y.Z(\'63\')+k.y.Z(\'83\'))}A 6Z=m.82(1m[i]);q(!bz&&!bg&&6Z!=k.Q){q(!2P){1m[i].5E(\'1q-by\',\'[\'+k.Q+\']\');1m[i].9d=1m[i].G[1d];1m[i].G[1d]=\'1q\'}J q(2P.bx(\'[\'+k.Q+\']\')==-1){1m[i].5E(\'1q-by\',2P+\'[\'+k.Q+\']\')}}J q((2P==\'[\'+k.Q+\']\'||m.2Y==6Z)&&6Z!=k.Q){1m[i].5E(\'1q-by\',\'\');1m[i].G[1d]=1m[i].9d||\'\'}J q(2P&&2P.bx(\'[\'+k.Q+\']\')>-1){1m[i].5E(\'1q-by\',2P.2d(\'[\'+k.Q+\']\',\'\'))}}}}},3P:C(){k.U.G.1B=m.4t+=2;O(A i=0;i<m.16.V;i++){q(m.16[i]&&i==m.2Y){A 4r=m.16[i];4r.S.1c+=\' K-\'+4r.36+\'-9K\';q(4r.2D){4r.S.G.4w=m.1E?\'bJ\':\'7i\';4r.S.2j=m.14.bD}m.1A(4r,\'ev\')}}q(k.1g)k.1g.2h.G.1B=k.U.G.1B-1;k.S.1c=\'K-\'+k.36;q(k.2D){k.S.2j=m.14.9F;q(m.5w){m.58=1S.3u?\'7i\':\'7R(\'+m.5p+m.5w+\'), 7i\';q(m.1E&&m.3f<6)m.58=\'bJ\';k.S.G.4w=m.58}}m.2Y=k.Q;m.2m(W,1S.3u?\'7f\':\'7b\',m.5V);m.1A(k,\'ey\')},9B:C(x,y){k.x.9z(x);k.y.9z(y)},4g:C(e){A w,h,r=e.L/e.N;w=1i.4x(e.L+e.dX,1i.3d(k.4B,k.x.19));q(k.2D&&1i.9D(w-k.x.19)<12)w=k.x.19;h=k.2y?e.N+e.dY:w/r;q(h<1i.3d(k.5G,k.y.19)){h=1i.3d(k.5G,k.y.19);q(k.2D)w=h*r}k.9P(w,h)},9P:C(w,h){k.y.73(h);k.x.73(w);k.U.G.N=k.y.Z(\'2f\')+\'F\'},2b:C(){q(k.5J||!k.5i)E;q(k.3i[1]==\'42\'&&m.2s){m.2B(m.2s).7d();m.2s=I}q(!m.1A(k,\'fe\'))E;k.5J=M;q(k.1p&&!m.2s)k.1p.3r();m.4R(W,1S.3u?\'7f\':\'7b\',m.5V);1t{q(k.2y)k.bj();k.S.G.4w=\'fp\';k.9Z(0,{U:{L:k.x.t,N:k.y.t,18:k.x.1L-k.x.cb+k.x.3m,Y:k.y.1L-k.y.cb+k.y.3m},S:{18:0,Y:0,L:k.x.t,N:k.y.t}},m.9Y)}1v(e){k.5z()}},bj:C(){q(m.5I){q(!m.66)m.66=m.1b(\'P\',I,{1l:\'2l\'},m.29);m.R(m.66,{L:k.x.D+\'F\',N:k.y.D+\'F\',18:k.x.H+\'F\',Y:k.y.H+\'F\',1o:\'3Q\'})}q(k.2F==\'3t\')1t{m.$(k.1f.1x).fO()}1v(e){}q(k.3J==\'5P\'&&!k.4z)k.bn();q(k.2p&&k.2p!=k.4Z)k.2p.G.2e=\'1q\'},bn:C(){q(m.1E&&k.1k)1t{k.1k.6i.W.1f.2i=\'\'}1v(e){}q(k.2F==\'3t\')96.fP(k.1f.1x);k.1f.2i=\'\'},bO:C(){q(k.1g)k.1g.2h.G.1o=\'1F\';k.3H=I;k.U.G.1o=\'1F\';k.5i=1j;m.2k(m.4s,k)},bt:C(){1t{m.16[k.Q]=k;q(!m.91&&m.2Y!=k.Q){1t{m.16[m.2Y].2b()}1v(e){}}A z=m.4t++,5K={1o:\'\',1B:z};m.R(k.U,5K);k.5J=1j;A o=k.1g||0;q(o){q(!k.3F)5K.1n=\'1q\';m.R(o.2h,5K)}q(k.1p){k.90()}k.8Z()}1v(e){}},4p:C(o){A el=o.4I,4Y=(o.bq==\'2t\'&&!/7K$/.1a(o.1l));q(1G el==\'9p\')el=m.4o(el);q(o.3w)el=m.1b(\'P\',{2i:o.3w});q(!el||1G el==\'9p\')E;q(!m.1A(k,\'fM\',{11:el}))E;el.G.1o=\'3Q\';o.23=o.23||o.4I;q(k.3i[1]==\'42\'&&k.br(o,el))E;k.8V();A L=o.L&&/^[0-9]+(F|%)$/.1a(o.L)?o.L:\'1Q\';q(/^(18|3o)7K$/.1a(o.1l)&&!/^[0-9]+F$/.1a(o.L))L=\'fG\';A 11=m.1b(\'P\',{1x:\'23\'+m.61++,23:o.23},{1l:\'2l\',1n:\'1q\',L:L,9t:m.14.9s||\'\',1z:0},4Y?m.2t:k.1u,M);q(4Y)11.6I=k.Q;11.21(el);m.3s(11,{1z:1,bK:0,bL:0,4b:(o.6b===0||o.6b===1j||(o.6b==2&&m.1E))?0:5S});m.3s(11,o);q(k.ce){k.6e(11);q(!11.7J||k.9b)m.2u(11,{1z:11.1z},11.4b)}m.2k(k.1T,m.61-1)},6e:C(11){A p=11.1l||\'9i 4J\',4Y=(11.bq==\'2t\'),6D=11.bK,6H=11.bL;q(4Y){m.2t.G.1o=\'3Q\';11.6I=k.Q;q(11.1N>11.22.1N)11.G.L=\'2x%\'}J q(11.22!=k.1u)k.1u.21(11);q(/18$/.1a(p))11.G.18=6D+\'F\';q(/4J$/.1a(p))m.R(11,{18:\'50%\',4y:(6D-1i.3c(11.1N/2))+\'F\'});q(/3o$/.1a(p))11.G.3o=-6D+\'F\';q(/^c5$/.1a(p)){m.R(11,{3o:\'2x%\',9h:k.x.cb+\'F\',Y:-k.y.cb+\'F\',4j:-k.y.cb+\'F\',2e:\'1Q\'});k.x.1H=11.1N}J q(/^c6$/.1a(p)){m.R(11,{18:\'2x%\',4y:k.x.cb+\'F\',Y:-k.y.cb+\'F\',4j:-k.y.cb+\'F\',2e:\'1Q\'});k.x.3b=11.1N}A 9j=11.22.1U;11.G.N=\'1Q\';q(4Y&&11.1U>9j)11.G.N=m.5h?9j+\'F\':\'2x%\';q(/^Y/.1a(p))11.G.Y=6H+\'F\';q(/^9i/.1a(p))m.R(11,{Y:\'50%\',4T:(6H-1i.3c(11.1U/2))+\'F\'});q(/^4j/.1a(p))11.G.4j=-6H+\'F\';q(/^5X$/.1a(p)){m.R(11,{18:(-k.x.1H-k.x.cb)+\'F\',3o:(-k.x.3b-k.x.cb)+\'F\',4j:\'2x%\',77:k.y.cb+\'F\',L:\'1Q\'});k.y.1H=11.1U}J q(/^7w$/.1a(p)){m.R(11,{1l:\'4n\',18:(-k.x.1H-k.x.cb)+\'F\',3o:(-k.x.3b-k.x.cb)+\'F\',Y:\'2x%\',4T:k.y.cb+\'F\',L:\'1Q\'});k.y.3b=11.1U;11.G.1l=\'2l\'}},c3:C(){k.9V([\'4U\',\'9M\'],M);k.c1();q(k.9M)m.1A(k,\'g2\');q(k.4U)m.1A(k,\'fV\');q(k.4U&&k.9N)k.4U.1c+=\' K-3A\';q(m.c2)k.c8();O(A i=0;i<m.1T.V;i++){A o=m.1T[i],7p=o.a6,2Z=o.2N;q((!7p&&!2Z)||(7p&&7p==k.7m)||(2Z&&2Z===k.2N)){q(k.2D||(k.2y&&o.fk))k.4p(o)}}A 7y=[];O(A i=0;i<k.1T.V;i++){A o=m.$(\'23\'+k.1T[i]);q(/7K$/.1a(o.1l))k.6e(o);J m.2k(7y,o)}O(A i=0;i<7y.V;i++)k.6e(7y[i]);k.ce=M},8V:C(){q(!k.1u)k.1u=m.1b(\'P\',{1c:k.8Y},{1l:\'2l\',L:(k.x.D||(k.3x?k.L:I)||k.x.19)+\'F\',N:(k.y.D||k.y.19)+\'F\',1n:\'1q\',2e:\'1q\',1B:m.1E?4:\'1Q\'},m.29,M)},55:C(9g,cd){A 1u=k.1u,x=k.x,y=k.y;m.R(1u,{L:x.D+\'F\',N:y.D+\'F\'});q(9g||cd){O(A i=0;i<k.1T.V;i++){A o=m.$(\'23\'+k.1T[i]);A 9u=(m.5h||W.7t==\'8I\');q(o&&/^(5X|7w)$/.1a(o.1l)){q(9u){o.G.L=(1u.1N+2*x.cb+x.1H+x.3b)+\'F\'}y[o.1l==\'5X\'?\'1H\':\'3b\']=o.1U}q(o&&9u&&/^(18|3o)7K$/.1a(o.1l)){o.G.N=(1u.1U+2*y.cb)+\'F\'}}}q(9g){m.R(k.S,{Y:y.1H+\'F\'});m.R(1u,{Y:(y.1H+y.cb)+\'F\'})}},cc:C(){A b=k.1u;b.1c=\'\';m.R(b,{Y:(k.y.1H+k.y.cb)+\'F\',18:(k.x.1H+k.x.cb)+\'F\',2e:\'1X\'});q(m.4H)b.G.1n=\'1X\';k.U.21(b);O(A i=0;i<k.1T.V;i++){A o=m.$(\'23\'+k.1T[i]);o.G.1B=o.1B||4;q(!o.7J||k.9b){o.G.1n=\'1X\';m.R(o,{1n:\'1X\',1o:\'\'});m.2u(o,{1z:o.1z},o.4b)}}},7H:C(){q(!k.1T.V)E;q(k.1p){A c=k.1p.35;q(c&&m.2B(c)==k)c.22.8T(c)}O(A i=0;i<k.1T.V;i++){A o=m.$(\'23\'+k.1T[i]);q(o&&o.22==m.2t&&m.2B(o)==k)m.3v(o)}q(k.2y&&k.4z){k.1u.G.Y=\'-4k\';m.29.21(k.1u)}J m.3v(k.1u)},c0:C(){q(k.1p&&k.1p.35){k.1p.4N(\'19-2H\');E}k.7j=m.1b(\'a\',{24:\'bZ:m.16[\'+k.Q+\'].74();\',2j:m.14.9v,1c:\'K-19-2H\'});q(!m.1A(k,\'fi\'))E;k.4p({4I:k.7j,1l:m.bR,7J:M,1z:m.bP})},74:C(){1t{q(!m.1A(k,\'fC\'))E;q(k.7j)m.3v(k.7j);k.3P();A 3a=k.x.D;k.9P(k.x.19,k.y.19);A 3j=k.x.H-(k.x.D-3a)/2;q(3j<m.4y)3j=m.4y;k.9B(3j,k.y.H);k.5l(\'1q\')}1v(e){k.9L(e)}},5z:C(){k.a.1c=k.a.1c.2d(\'K-57-4l\',\'\');k.5l(\'1X\');q(k.2y&&k.4z&&k.3i[1]!=\'42\'){k.bO()}J{q(k.1g&&k.3F)k.1g.6q();m.3v(k.U)}q(m.66)m.66.G.1o=\'1F\';k.7H();q(!m.2t.7Q.V)m.2t.G.1o=\'1F\';q(k.48)m.9H(k.Q);m.1A(k,\'fD\');m.16[k.Q]=I;m.bM()}};m.7E=C(a,S,6G){k.a=a;k.S=S;k.6G=6G};m.7E.5e={9C:C(){A 2T;q(!k.1e)k.1e=m.7L(k.a);q(k.1e.31(\'#\')){A 26=k.1e.6z(\'#\');k.1e=26[0];k.1x=26[1]}q(m.6F[k.1e]){k.bN=m.6F[k.1e];q(k.1x)k.9O();J k.6h();E}1t{2T=1J bU()}1v(e){1t{2T=1J bS("fz.bY")}1v(e){1t{2T=1J bS("bT.bY")}1v(e){k.9a()}}}A 3C=k;2T.fs=C(){q(3C.2T.bW==4){q(3C.1x)3C.9O();J 3C.6h()}};A 1e=k.1e;k.2T=2T;q(m.fA)1e=1e.2d(/$/,(/\\?/.1a(1e)?\'&\':\'?\')+\'fl=\'+(1J 7C()).7D());2T.c7(\'fn\',1e,M);2T.bV(\'X-g0-fI\',\'bU\');2T.bV(\'fL-dx\',\'d9/x-d4-a3-cY\');2T.d2(I)},9O:C(){m.7A();A 46=1S.3u||m.bX?{1e:\'dk:dm\'}:I;k.1k=m.1b(\'1k\',46,{1l:\'2l\',Y:\'-4k\'},m.29);k.6h()},6h:C(){A s=k.bN||k.2T.cX,7g;q(k.6G)m.6F[k.1e]=s;q(!m.1E||m.3f>=5.5){s=s.2d(1J 5s(\'<cM[^>]*>\',\'c9\'),\'\').2d(1J 5s(\'<bQ[^>]*>.*?</bQ>\',\'c9\'),\'\');q(k.1k){A 2z=k.1k.9c;q(!2z&&k.1k.6i)2z=k.1k.6i.W;q(!2z){A 3C=k;47(C(){3C.6h()},25);E}2z.c7();2z.cN(s);2z.2b();1t{s=2z.92(k.1x).2i}1v(e){1t{s=k.1k.W.92(k.1x).2i}1v(e){}}m.3v(k.1k)}J{7g=/(<1f[^>]*>|<\\/1f>)/de;q(7g.1a(s))s=s.6z(7g)[m.1E?1:2]}}m.4K(k.S,\'79\',\'K-1f\').2i=s;k.3z();O(A x 3e k)k[x]=I}};m.9W=C(4h,1r){q(m.dT!==1j)m.93();k.4h=4h;O(A x 3e 1r)k[x]=1r[x];q(k.e2)k.c4();q(k.2J)k.2J=m.bm(k)};m.9W.5e={c4:C(){k.35=m.1b(\'P\',{2i:m.9Q(m.9R.35)},I,m.29);A 6a=[\'3I\',\'3r\',\'2W\',\'1C\',\'3A\',\'19-2H\',\'2b\'];k.1M={};A 3C=k;O(A i=0;i<6a.V;i++){k.1M[6a[i]]=m.4K(k.35,\'1K\',\'K-\'+6a[i]);k.4N(6a[i])}k.1M.3r.G.1o=\'1F\'},bp:C(){q(k.bs||!k.35)E;A B=m.16[k.4h],4X=B.6Q(),2o=/7e$/;q(4X==0)k.53(\'2W\');J q(2o.1a(k.1M.2W.2A(\'a\')[0].1c))k.4N(\'2W\');q(4X+1==m.4P.3h[B.2N||\'1F\'].V){k.53(\'1C\');k.53(\'3I\')}J q(2o.1a(k.1M.1C.2A(\'a\')[0].1c)){k.4N(\'1C\');k.4N(\'3I\')}},4N:C(1M){q(!k.1M)E;A bo=k,a=k.1M[1M].2A(\'a\')[0],2o=/7e$/;a.2n=C(){bo[1M]();E 1j};q(2o.1a(a.1c))a.1c=a.1c.2d(2o,\'\')},53:C(1M){q(!k.1M)E;A a=k.1M[1M].2A(\'a\')[0];a.2n=C(){E 1j};q(!/7e$/.1a(a.1c))a.1c+=\' 7e\'},bi:C(){q(k.4d)k.3r();J k.3I()},3I:C(bk){q(k.1M){k.1M.3I.G.1o=\'1F\';k.1M.3r.G.1o=\'\'}k.4d=M;q(!bk)m.1C(k.4h)},3r:C(){q(k.1M){k.1M.3r.G.1o=\'1F\';k.1M.3I.G.1o=\'\'}e7(k.4d);k.4d=I},2W:C(){k.3r();m.2W(k.1M.2W)},1C:C(){k.3r();m.1C(k.1M.1C)},3A:C(){},\'19-2H\':C(){m.2B().74()},2b:C(){m.2b(k.1M.2b)}};m.bm=C(1p){C 6K(B){m.3s(1r||{},{4I:4Q,23:\'2J\',1c:\'K-2J-\'+51+\'-11 \'+(1r.1c||\'\')});q(m.5h)1r.6b=0;B.4p(1r);m.R(4Q.22,{2e:\'1q\'})};C 2a(3S){4W(1V,1i.3c(3S*4Q[3R?\'1N\':\'1U\']*0.7))};C 4W(i,9J){q(i===1V)O(A j=0;j<6x.V;j++){q(6x[j]==m.16[1p.4h].a){i=j;5a}}q(i===1V)E;A as=4Q.2A(\'a\'),57=as[i],3Y=57.22,18=3R?\'bv\':\'bG\',3o=3R?\'cg\':\'bF\',L=3R?\'bH\':\'bI\',4O=\'1y\'+18,1N=\'1y\'+L,6Y=P.22.22[1N],4V=6Y-2h[1N],6n=3M(2h.G[3R?\'18\':\'Y\'])||0,2M=6n,dz=20;q(9J!==1V){2M=6n-9J;q(4V>0)4V=0;q(2M>0)2M=0;q(2M<4V)2M=4V}J{O(A j=0;j<as.V;j++)as[j].1c=\'\';57.1c=\'K-57-4l\';A 85=i>0?as[i-1].22[4O]:3Y[4O],80=3Y[4O]+3Y[1N]+(as[i+1]?as[i+1].22[1N]:0);q(80>6Y-6n)2M=6Y-80;J q(85<-6n)2M=-85}A 7V=3Y[4O]+(3Y[1N]-76[1N])/2+2M;m.2u(2h,3R?{18:2M}:{Y:2M},I,\'8d\');m.2u(76,3R?{18:7V}:{Y:7V},I,\'8d\');8P.G.1o=2M<0?\'3Q\':\'1F\';8N.G.1o=(2M>4V)?\'3Q\':\'1F\'};A 6x=m.4P.3h[m.16[1p.4h].2N||\'1F\'],1r=1p.2J,51=1r.51||\'bE\',8H=(51==\'dr\'),3Z=8H?[\'P\',\'6c\',\'1K\',\'1D\']:[\'2h\',\'4q\',\'3X\',\'2E\'],3R=(51==\'bE\'),4Q=m.1b(\'P\',{1c:\'K-2J K-2J-\'+51,2i:\'<P 1W="K-2J-dJ">\'+\'<\'+3Z[0]+\'><\'+3Z[1]+\'></\'+3Z[1]+\'></\'+3Z[0]+\'></P>\'+\'<P 1W="K-2a-1I"><P></P></P>\'+\'<P 1W="K-2a-dI"><P></P></P>\'+\'<P 1W="K-76"><P></P></P>\'},{1o:\'1F\'},m.29),6t=4Q.7Q,P=6t[0],8P=6t[1],8N=6t[2],76=6t[3],2h=P.dH,4q=4Q.2A(3Z[1])[0],3X;O(A i=0;i<6x.V;i++){q(i==0||!3R)3X=m.1b(3Z[2],I,I,4q);(C(){A a=6x[i],3Y=m.1b(3Z[3],I,I,3X),dC=i;m.1b(\'a\',{24:a.24,2n:C(){m.2B(k).3P();E m.8A(a)},2i:m.bA?m.bA(a):a.2i},I,3Y)})()}q(!8H){8P.2n=C(){2a(-1)};8N.2n=C(){2a(1)};m.2m(4q,W.dG!==1V?\'dF\':\'ds\',C(e){A 3S=0;e=e||1S.2v;q(e.cy){3S=e.cy/e6;q(m.3u)3S=-3S}J q(e.cE){3S=-e.cE/3}q(3S)2a(-3S*0.2);q(e.5g)e.5g();e.cv=1j})}E{6K:6K,4W:4W}};m.6N=m.14;A dd=m.6l;q(m.1E&&1S==1S.Y){(C(){1t{W.59.di(\'18\')}1v(e){47(ck.dj,50);E}m.41()})()}m.2m(W,\'d7\',m.41);m.2m(1S,\'81\',m.41);m.2m(W,\'41\',C(){q(m.7M||m.48){A G=m.1b(\'G\',{T:\'d5/8p\'},I,W.2A(\'da\')[0]);C 6o(8u,8o){q(!m.1E){G.21(W.cS(8u+" {"+8o+"}"))}J{A 1h=W.cm[W.cm.V-1];q(1G(1h.6o)=="7F")1h.6o(8u,8o)}}C 6g(1d){E\'dP( ( ( dq = W.59.\'+1d+\' ? W.59.\'+1d+\' : W.1f.\'+1d+\' ) ) + \\\'F\\\' );\'}q(m.7M)6o(\'.K 1R\',\'4w: 7R(\'+m.5p+m.7M+\'), 7i !ef;\');6o(\'.K-2t-D\',m.1E&&(m.3f<7||W.7t==\'8I\')?\'1l: 2l; \'+\'18:\'+6g(\'6v\')+\'Y:\'+6g(\'69\')+\'L:\'+6g(\'8F\')+\'N:\'+6g(\'ca\'):\'1l: fg; L: 2x%; N: 2x%; 18: 0; Y: 0\')}});m.2m(1S,\'4g\',C(){m.7k();q(m.2t)O(A i=0;i<m.2t.7Q.V;i++){A 1O=m.2t.7Q[i],B=m.2B(1O);B.6e(1O);q(1O.23==\'2J\')B.1p.2J.4W()}});m.2m(W,\'7x\',C(e){m.7u={x:e.7r,y:e.7P}});m.2m(W,\'7W\',m.7Z);m.2m(W,\'bh\',m.7Z);m.2m(W,\'41\',m.bl);m.2m(1S,\'81\',m.bu);m.2m(1S,\'81\',m.bw)}',62,996,'||||||||||||||||||||this||hs||||if||||||||||var|exp|function|size|return|px|style|pos|null|else|highslide|width|true|height|for|div|key|setStyles|content|type|wrapper|length|document||top|get||overlay|||lang||expanders||left|full|test|createElement|className|prop|src|body|outline|last|Math|false|iframe|position|els|visibility|display|slideshow|hidden|options|innerContent|try|overlayBox|catch|dim|id|offset|opacity|fireEvent|zIndex|next|span|ie|none|typeof|p1|up|new|li|tpos|btn|offsetWidth|node|ss|auto|img|window|overlays|offsetHeight|undefined|class|visible|outlineType|imgSize||appendChild|parentNode|hsId|href||arr||case|container|scroll|close|params|replace|overflow|wsize|to|table|innerHTML|title|push|absolute|addEventListener|onclick|re|scrollerDiv|op|loading|upcoming|viewport|animate|event|dragArgs|100|isHtml|doc|getElementsByTagName|getExpander|target|isImage|td|objectType|args|expand|imgPad|thumbstrip|tgt|minSize|tblPos|slideshowGroup|easing|hiddenBy|justify|image|dimmer|xhr|ajax|ratio|previous|name|focusKey|sg|elem|match||||controls|contentType||||xSize|p2|round|min|in|uaVersion|val|groups|transitions|xpos|lastX|wh|tb|ucwh|right|marginMin|lastY|pause|extend|swf|opera|discardElement|html|useBox|custom|onLoad|move|opt|pThis|clearing|func|outlineWhileAnimating|hasDragged|releaseMask|play|objectLoadTime|changed|graphic|parseInt|number|tagName|focus|block|isX|delta|elPos|step|mediumContent|styles|tr|cell|tree||ready|crossfade|getParam|timers|duration|attribs|setTimeout|dimmingOpacity|xp1|yp1|dur|ySize|autoplay|page|objectWidth|resize|expKey|now|bottom|9999px|anchor|objectHeight|relative|getNode|createOverlay|tbody|blurExp|sleeping|zIndexCounter|ypos|unit|cursor|max|marginLeft|preserveContent|pendingOutlines|minWidth|invPos|marginMax|clientSize|start|setPosition|safari|overlayId|center|getElementByClass|onload|tgtArr|enable|offsetLeft|anchors|dom|removeEventListener|clone|marginTop|heading|minTblPos|selectThumb|cur|relToVP|scrollingContent||mode|allowReduce|disable|end|sizeOverlayBox|navigator|active|styleRestoreCursor|documentElement|break|cacheBindings|fitsize|cNode|prototype|moveOnly|preventDefault|ieLt7|isExpanded|area|hDiff|doShowHide|ruler|wDiff|while|graphicsDir|Id|images|RegExp|htmls|fadeBox|parent|restoreCursor|trans|minX|afterClose|padToMinWidth|cloneNode|fac|before|setAttribute|xsize|minHeight|currentStyle|geckoMac|isClosing|stl|Outline|maxX|maxY|slideshows|after|uclt|getAnchors|250|allowSizeReduction|iDoc|keyHandler|credits|above|contentLoaded|ysize|filter|idCounter|minY|opos|numberPosition|showLoading|mask|owner|on|scrollTop|buttons|fade|ul|getParams|positionOverlay|over|fix|loadHTML|contentWindow|param|iebody|Expander|matches|curTblPos|addRule|toLowerCase|destroy|cache|preloadTheseImages|domCh|obj|scrollLeft|all|group|userAgent|split|element|previousOrNext|afterExpand|offX|yimgPad|cachedGets|pre|offY|hsKey|maxWidth|add|writeExtendedContent|oDiv|langDefaults|complete|expOnly|getAnchorIndex|onLoadStarted|preloadTheseAjax|Dimension|isHsAnchor|imgs|showHideElements|rel|overlayWidth|wrapperKey||getPosition|maincontent|setSize|doFullExpand||marker|marginBottom|adj|DIV|lt|keydown|topmostKey|cancelLoading|disabled|keypress|regBody|ximgPad|pointer|fullExpandLabel|getPageSize|onReady|thumbsUserSetId|dragHandler|curAnim|tId|self|clientX|expandDuration|compatMode|mouse|gotoEnd|below|mousemove|os|dir|init|preloadFullImage|Date|getTime|Ajax|object|allowHeightReduction|destroyOverlays|kdeBugCorr|hideOnMouseOut|panel|getSrc|expandCursor|allowWidthReduction|525|clientY|childNodes|url|Text|fitOverlayBox|correctIframeSize|markerPos|mousedown|contentId|getSelfRendered|mouseClickHandler|activeRight|load|getWrapperKey|osize|defaultView|activeLeft|calcBorders|calcExpanded|oPos|maxsize|location|hasMovedMin|getCacheBinding|easeOutQuad|swfOptions|moveText|border|moveTitle|closeTitle|names|mX|closeText|from|nextText|dec|css|xp2|setObjContainerSize|previousTitle|previousText|sel|props|nextTitle|mY|startOff|yp2|transit|htmlGetSize|parseFloat|types|getIframePageHeight|clientWidth|other|floatMode|BackCompat|getAdjacentAnchor|offsetTop|endOff|current|scrollDown|padding|scrollUp|arrow|Click|connectOutline|removeChild|startTime|genOverlayBox|maxHeight|garbageBin|wrapperClassName|show|initSlideshow|allowMultipleInstances|getElementById|updateAnchors|done|dimmingDuration|swfobject|margin|relatedTarget||onError|mouseIsOver|contentDocument|origProp|hasAlphaImageLoader|hasFocused|doWrapper|marginRight|middle|parOff|background|evt|update|align|numberOfImagesToPreload|string|ucrb|state|cssDirection|direction|ie6|fullExpandTitle|calcThumb|distance|Create|setPos|preloadAjaxElement|moveTo|run|abs|cacheAjax|restoreTitle|loadingPos|undim|loadingPosXfade|scrollBy|blur|error|caption|dragByHeading|getElementContent|resizeTo|replaceLang|skin|sizeDiff|htmlExpand|openerTagNames|getInline|Slideshow|srcElement|restoreDuration|changeSize|continuePreloading|overrides|topZ|form|isReady|clones|thumbnailId|_default|and|detachEvent|Previous|Pause|getImageMapAreaCorrection|spacebar|Play|Close|Highslide|JS|timerId|call|loadingOpacity|loadingText|loadingTitle|Move|Next|preloadGraphic|easeInQuad|ltr||vis|nopad|newHeight|hasExtendedContent|attributes|dimmingGeckoFix|enableKeyListener|tag|rv|both|clear|toUpperCase|flashvars|wmode|orig|isUnobtrusiveAnchor|hsHasSetClick|contentWrapper|wrapperMouseHandler|pageOrigin|alpha|offsetParent|fixedControls|thumb|captionOverlay|headingOverlay|playText|pauseTitle|vendor|pauseText|pow|onGraphicLoad|200|KDE|playTitle|appendTo|clickY|clickX|rb|resizeTitle|targetX|targetY|focusTopmost|switch|fullExpandText|htmlSizeOperations|hasHtmlExpanders|hide|png|clearsY|mouseup|hitSpace|htmlPrepareClose|wait|setClickEvents|Thumbstrip|destroyObject|sls|checkFirstAndLast|relativeTo|reuseOverlay|repeat|awake|preloadImages|Left|preloadAjax|indexOf||clearsX|stripItemFormatter|getPropertyValue|getAttribute|focusTitle|horizontal|Bottom|Top|Width|Height|hand|offsetX|offsetY|reOrder|cachedGet|sleep|fullExpandOpacity|script|fullExpandPosition|ActiveXObject|Microsoft|XMLHttpRequest|setRequestHeader|readyState|ie6SSL|XMLHTTP|javascript|createFullExpand|getNumber|showCredits|getOverlays|getControls|leftpanel|rightpanel|open|writeCredits|gi|clientHeight||showOverlays|doPanels|gotOverlays|getComputedStyle|Right|onHideLoading|_|Eval|arguments|correctRatio|styleSheets|nextSibling|tmpMin|creditsHref|ximgSize|creditsPosition|creditsTitle|fadeInOut|creditsText|returnValue|easingClose|creditsTarget|wheelDelta|transitionDuration|overlayOptions|toString|newImg|prepareNextOutline|detail|hideIframes|hideSelects|Overlay|oldImg|preloadNext|addOverlay|yimgSize|link|write|registerOverlay|captionText|addSlideshow|keys|createTextNode|xpand|htmlE|footer|captionId|responseText|urlencoded|fromElement|mouseover|onDrag|send|toElement|www|text|onMouseOut|DOMContentLoaded|onMouseOver|application|HEAD|dragSensitivity|white|HsExpander|ig|onDrop|onImageClick|01|doScroll|callee|about|sqrt|blank|button|keyCode|drop|ignoreMe|float|DOMMouseScroll|shadow|onSetClickEvent|_self|Safari|Type|Macintosh|mgnRight|useMap|pageYOffset|pI|Gecko|removeAttribute|mousewheel|onmousewheel|firstChild|down|inner|pageXOffset|innerHeight|innerWidth|ra|it|expression|http|onKeyDown|com|dynamicallyUpdateAnchors|captionEval|outlineStartOffset|graphics|||zoomin|zoomout|1001|useControls|headingId|maincontentEval|maincontentText|120|clearTimeout|Trident|maincontentId|headingEval|headingText|geckodimmer|onDimmerClick|dimming|important|clearInterval|blockRightClick|oncontextmenu|imageCreate|front||onShowLoading|Expand|flushImgSize|htmlCreate|IFRAME|SELECT|static|onAfterGetContent|onBeforeGetContent|onBlur|message|Powered|onFocus|Go|allowSimultaneousLoading|the|onInit|onmouseover|onmouseout|Line|lineNumber|alert|debug|actual|bring|fit|rect|clip|insertBefore|nodeName|boolean|reuse|onBeforeExpand|reflow|coords|circle|floor|Loading|cancel|300|onAfterExpand|frameborder|onBeforeGetCaption|onBeforeGetHeading|eval|newWidth|flash|transparent|500|interval|expressInstallSwfurl|version|embedSWF|attachEvent|onBeforeClose|Image|fixed|of|onCreateFullExpand|click|useOnHtml|dummy|borderCollapse|GET|cellSpacing|default|header|splice|onreadystatechange|onActivate|linearTween|1px|paddingTop||drag|Msxml2|forceAjaxReload|setInterval|onDoFullExpand|onAfterClose|collapse|lineHeight|200px|Resize|With|scale|sizingMethod|Content|onCreateOverlay|homepage|StopPlay|removeSWF|esc|AlphaImageLoader|DXImageTransform|https|outlinesDir|onAfterGetHeading|fontSize|outlines|protocol|progid|Requested|shape|onAfterGetCaption|Use'.split('|'),0,{}))
//<![CDATA[


// Gallerie
hs.graphicsDir = '/css/highslide/';
hs.align = 'center';
hs.transitions = ['expand', 'crossfade'];
hs.wrapperClassName = 'dark borderless floating-caption';
hs.fadeInOut = true;
hs.dimmingOpacity = .75;
hs.showCredits = false;
// Add the controlbar
if (hs.addSlideshow) hs.addSlideshow({
    //slideshowGroup: 'group1',
    interval: 5000,
    repeat: false,
    useControls: true,
    fixedControls: 'fit',
    overlayOptions: {
        opacity: .6,
        position: 'bottom center',
        hideOnMouseOut: true
    }
});
var jetzt = new Date();
var Jahr = jetzt.getFullYear();




jQuery(document).ready(function($) {
	$('a[rel*=facebox]').facebox();
		$('a[target*=_facebox]').each( function(){
			if( $(this).attr('href').indexOf('javascript')==-1 && $(this).attr('href').indexOf('facebox')==-1){
				$(this).facebox();
			}else{
				$(this).attr('target','');
			}
		}
	);
	$('a.faceboxlink').facebox();
});
//]]>
function tellafriend(){
	$.facebox({ ajax: '/includesOpen/tellafriend.php'});
}
function checkDomain(nname) {
	var arr = new Array(
	'.com','.net','.org','.biz','.coop','.info','.museum','.name',
	'.pro','.edu','.gov','.int','.mil','.ac','.ad','.ae','.af','.ag',
	'.ai','.al','.am','.an','.ao','.aq','.ar','.as','.at','.au','.aw',
	'.az','.ba','.bb','.bd','.be','.bf','.bg','.bh','.bi','.bj','.bm',
	'.bn','.bo','.br','.bs','.bt','.bv','.bw','.by','.bz','.ca','.cc',
	'.cd','.cf','.cg','.ch','.ci','.ck','.cl','.cm','.cn','.co','.cr',
	'.cu','.cv','.cx','.cy','.cz','.de','.dj','.dk','.dm','.do','.dz',
	'.ec','.ee','.eg','.eh','.er','.es','.et','.eu','.fi','.fj','.fk','.fm',
	'.fo','.fr','.ga','.gd','.ge','.gf','.gg','.gh','.gi','.gl','.gm',
	'.gn','.gp','.gq','.gr','.gs','.gt','.gu','.gv','.gy','.hk','.hm',
	'.hn','.hr','.ht','.hu','.id','.ie','.il','.im','.in','.io','.iq',
	'.ir','.is','.it','.je','.jm','.jo','.jp','.ke','.kg','.kh','.ki',
	'.km','.kn','.kp','.kr','.kw','.ky','.kz','.la','.lb','.lc','.li',
	'.lk','.lr','.ls','.lt','.lu','.lv','.ly','.ma','.mc','.md','.mg',
	'.mh','.mk','.ml','.mm','.mn','.mo','.mp','.mq','.mr','.ms','.mt',
	'.mu','.mv','.mw','.mx','.my','.mz','.na','.nc','.ne','.nf','.ng',
	'.ni','.nl','.no','.np','.nr','.nu','.nz','.om','.pa','.pe','.pf',
	'.pg','.ph','.pk','.pl','.pm','.pn','.pr','.ps','.pt','.pw','.py',
	'.qa','.re','.ro','.rw','.ru','.sa','.sb','.sc','.sd','.se','.sg',
	'.sh','.si','.sj','.sk','.sl','.sm','.sn','.so','.sr','.st','.sv',
	'.sy','.sz','.tc','.td','.tf','.tg','.th','.tj','.tk','.tm','.tn',
	'.to','.tp','.tr','.tt','.tv','.tw','.tz','.ua','.ug','.uk','.um',
	'.us','.uy','.uz','.va','.vc','.ve','.vg','.vi','.vn','.vu','.ws',
	'.wf','.ye','.yt','.yu','.za','.zm','.zw');
	var mai = nname;
	var val = true;
	var dot = mai.lastIndexOf(".");
	var dname = mai.substring(0,dot);
	var ext = mai.substring(dot,mai.length);
	//alert(ext);
	if(dot>2 && dot<57){
		for(var i=0; i<arr.length; i++)	{
			if(ext == arr[i]) {
				val = true;
				break;
			} else {
				val = false;
			}
		}
		if(val == false) {
			//alert("Die Endung "+ext+" ist nicht korrekt");
			return false;
		} else {
			for(var j=0; j<dname.length; j++) {
				var dh = dname.charAt(j);
				var hh = dh.charCodeAt(0);
				if((hh > 47 && hh<59) || (hh > 64 && hh<91) || (hh > 96 && hh<123) || hh==45 || hh==46) {
					if((j==0 || j==dname.length-1) && hh == 45) {
						//alert("Domains dürfen nicht mit '-' beginnen oder enden");
						return false;
					}
				} else {
					//alert("Domains dürfen keine Sonderzeichen enthalten");
					return false;
				}
			}
		}
	} else {
		//alert("Domains müssen zwischen 3 und 56 Zeichen lang sein");
		return false;
	}
	return true;
}
function mtDotspot(NAME,DOMAIN,SUBJECT,BODY){
	var SUBJECT1 = "";
    if(SUBJECT.length<2) {
    	var SUBJECT1 = SUBJECT;
    }
    var BODY1 = "";
    if(BODY.length<2) {
         var BODY1 = BODY;
    }
    getURL("mailto:"+NAME+"@"+DOMAIN+"?subject="+escape(SUBJECT1)+"&body="+escape(BODY1),'_blank');
}
function mailprintfooter(a,b,c){
	document.write("<a href='mailto:"+a+"@"+b+"."+c+"' onfocus='if(this.blur)this.blur()' target='_blank'><span class='textklein' style='color:#b91a1b;'>"+a+"@"+b+"."+c+"</span></a>");
}
function mailprint(a,b,c){
	document.write("<a href='mailto:"+a+"@"+b+"."+c+"' onfocus='if(this.blur)this.blur()' target='_blank'>"+a+"@"+b+"."+c+"</a>");
}
/////////////////////////////////////////////////////////////////
function SubmitDelete_WP(MSG){
	if(MSG=='') {
		alert('Es ist ein Fehler im Programm (javascript)');
	}else{
		Check = confirm(MSG);
		if (Check == true) {
			document.wp_delete.submit();
		}else{
			return false;
		}
	}
}
function SubmitDelete_MYPOSTWP(MSG) {
	if(MSG=='') {
		alert('Es ist ein Fehler im Programm (javascript)');
	}else{
		Check = confirm(MSG);
		if (Check == true) {
			document.mwp_delete.submit();
		}else{
			return false;
		}
	}
}
function TesteValues(values) {
    if(values.length<1) {
        return false;
    }else{
        return true;
    }
}
function validateUsername(ID) {
	var id = document.getElementById(ID).value;
	var multiCharPattern=/^[a-zA-Z0-9_]+$/;
	if (id == null || id == ''){
		return(false);
	}
	if(!multiCharPattern.test(id)){
		return(false);
	}					
	if (id.length < 6){
		return(false); 
	}
	return(true);
}
function validatePassword(ID) {
	var password = document.getElementById(ID).value;
	if (password == null || password == ''){
		return(false);
	}else{
		var passwordMatchPattern=/^[A-Za-z\-\_0-9]+$/;
		if(!passwordMatchPattern.test(password)){
			return false;
		}
	}
	if (password.length < 5)	{
		return(false);
	}
	if(password.toLowerCase() == 'password' || password.toLowerCase() == 'passwort'){
		return(false);
	}
	return(true);
}
function validateEmail(ID){
var Country_Codes = new Array('AD','AE','AF','AG','AI','AL','AM','AN','AO','AQ','AR','AS','AT','AU','AW','AZ','BA','BB','BD','BE','BF','BG','BH','BI','BJ','BM','BN','BO','BR','BS','BT','BV','BW','BY','BZ','CA','CC','CF','CG','CH','CI','CK','CL','CM','CN','CO','CR','CS','CU','CV','CX','CY','CZ','DE','DJ','DK','DM','DO','DZ','EC','EE', 'EG', 'EH', 'ER', 'ES', 'ET', 'FI', 'FJ', 'FK', 'FM', 'FO', 'FR', 'FX', 'GA', 'GB', 'GD', 'GE', 'GF', 'GH', 'GI','GL','GM','GN','GP','GQ','GR','GS','GT','GU','GW','GY','HK','HM','HN','HR','HT','HU','ID','IE','IL','IN','IO','IQ','IR','IS','IT','JM','JO','JP','KE','KG','KH','KI','KM','KN','KP','KR','KW','KY','KZ','LA','LB','LC','LI','LK','LR','LS','LT','LU','LV','LY', 'MA', 'MC', 'MD', 'MG', 'MH', 'MK', 'ML', 'MM', 'MN', 'MO', 'MP', 'MQ','MR', 'MS', 'MT', 'MU', 'MV', 'MW', 'MX', 'MY', 'MZ', 'NA', 'NC', 'NE', 'NF', 'NG', 'NI', 'NL', 'NO', 'NP', 'NR', 'NT', 'NU','NZ', 'OM', 'PA', 'PE', 'PF', 'PG', 'PH', 'PK', 'PL', 'PM', 'PN', 'PR', 'PT', 'PW', 'PY', 'QA', 'RE', 'RO', 'RU', 'RW', 'SA','Sb', 'SC', 'SD', 'SE', 'SG', 'SH', 'SI', 'SJ', 'SK', 'SL', 'SM', 'SN', 'SO', 'SR', 'ST', 'SU', 'SV', 'SY', 'SZ', 'TC', 'TD','TF', 'TG', 'TH', 'TJ', 'TK', 'TM', 'TN', 'TO', 'TP', 'TR', 'TT', 'TV', 'TW', 'TZ', 'UA', 'UG', 'UK', 'UM', 'US', 'UY', 'UZ','VA', 'VC', 'VE', 'VG', 'VI', 'VN', 'VU', 'WF', 'WS', 'YE', 'YT', 'YU', 'ZA', 'ZM', 'ZR', 'ZW', 'COM', 'EDU', 'GOV', 'INT','MIL', 'NET', 'ORG', 'ARPA', 'NATO', 'AERO', 'BIZ', 'COOP', 'INFO', 'MUSEUM', 'NAME', 'PRO');
var email = document.getElementById(ID).value;
if (email==''){
	return(false);
}else if (email.search(/^[A-Za-z0-9_\.\-\']+\@[A-Za-z0-9_\-]+\.[A-Za-z0-9_\.\-]+$/)  == -1){
	return(false);
}else{
	var i = 0;
	while(i<email.length){
		if(email.charAt(i) == '.'){
			if(email.charAt(i+1) == '.'){
				return(false);
			}
		}
	i++;
	}

	var startPos = email.indexOf('@')+1;
	i = startPos;
	var endPos = '';
	
	while(i<email.length){
		if(email.charAt(i) == '.'){
			endPos = i;
			break;
		}
		i++;
	}
	
	var domainName = email.substring(startPos,endPos);
	if (domainName.length < 2){
		return(false);
	}else{  
		var flag = 0;
		var topDomain = email;
		while(topDomain.search(/[.]/) != -1){
			topDomain = topDomain.substring(topDomain.indexOf('.')+1);
		}
		topDomain = topDomain .toUpperCase();
		for(i=0;i<Country_Codes.length;i++){
			if(Country_Codes[i]==topDomain){
				flag = 1;
				break;
			}
		}
		if (flag == 0){
			return(false);
		}
	}
}
return(true);
}
function UsedUsername(ID,Username_Codes) {
	var newusername = document.getElementById(ID).value;	
	var flag = 0;
	for(i=0;i<Username_Codes.length;i++){
		if(Username_Codes[i]==newusername.toLowerCase()){
			flag = 1;
			break;
		}
	}
	if (flag == 1){
		return(false);
	}
	return(true);
}
function UsedUsername(ID,Username_Codes) {
	var newusername = document.getElementById(ID).value;	
	var flag = 0;
	for(i=0;i<Username_Codes.length;i++){
		if(Username_Codes[i]==newusername.toLowerCase()){
			flag = 1;
			break;
		}
	}
	if (flag == 1){
		return(false);
	}
	return(true);
}
function UsedUsernameIN(ID,Username_Codes,MeineID) {
	var newusername = document.getElementById(ID).value;	
	var flag = 0;
	
	for(i=0;i<Username_Codes.length;i++){
		if( MeineID == Username_Codes[i]){
			// meine ID
		}else{
			if(Username_Codes[i]==newusername.toLowerCase()){
				flag = 1;
				break;
			}
		}
	}
	if (flag == 1){
		return(false);
	}
	return(true);
}



function TestZIP(values) {
		if(values.length<4 || values.length>4) {
			return false;
		}else{
			for(n=0; n < values.length; n++) {
				if( values.charAt(n) < '0' || values.charAt(n) > '9') {
					ist_zahl = false;
					break;
				}else{
					ist_zahl = true;
				}
			}
			//////////////////////
			if(ist_zahl) {
				if( values <= 999 ) {
					return false;
				}else{
					return true;
				}
			}else{
				return false;
			}
		}
}
function generateAlerts(indikator) {
	
	var ErDATAPW='Bitte geben Sie Ihr Passwort ein. Bitte kontrollieren Sie die Schreibweise: keine Sonderzeichen oder Umlaute; (nur a-z und 0 bis 9 sind erlaubt)';
	
	if( indikator == 1 ) {
		ERRORSMSGALERT = '';
	} 
	if (indikator == 2) {
		ERRORSMSGALERT = '';
	}
	if (indikator == 3) {
		ERRORSMSGALERT = 'Username/Passwort Grossbuchstaben und Sonderzeichen (ausser Bindestrich und Unterstrich) sind nicht erlaubt. Bitte mindestens 6 Zeichen angeben.';
	}
	if (indikator == 4) {
		ERRORSMSGALERT = 'Ihre E-Mail-Adresse ist falsch; bitte kontrollieren Sie die Schreibweise';
	}
	if (indikator == 5) {
		ERRORSMSGALERT = 'Dieser Username ist leider bereits schon vergeben. Bitte geben Sie einen anderen Username ein.';
	}
	if( indikator == 6 ) {
		ERRORSMSGALERT = 'Bitte geben Sie Ihren Nachnamen ein';
	} 
	if (indikator == 7) {
		ERRORSMSGALERT = 'Bitte geben Sie Ihren Vorname an';
	}
	if (indikator == 8) {
		ERRORSMSGALERT = 'Bitte geben Sie die Adresse ein';
	}
	if (indikator == 9) {
		ERRORSMSGALERT = 'Bitte geben Sie die PLZ an';
	}
	if (indikator == 10) {
		ERRORSMSGALERT = 'Bitte geben Sie eine Ortschaft an';
	}
	if (indikator == 11) {
		ERRORSMSGALERT = 'Tel ist nicht korrekt eingegeben (nur +, -, / und 0 bis 9 sind erlaubt)';
	}
	if (indikator == 12) {
		ERRORSMSGALERT = 'Ihr Bestellfeld ist leer';
	}
	if (indikator == 13) {
		ERRORSMSGALERT = 'Die Sicherheitsabfrage ist leer!';
	}
	if (indikator == 14) {
		ERRORSMSGALERT = 'Der Wochenplatztitel ist nicht gesetzt!';
	}
	if (indikator == 15) {
		ERRORSMSGALERT = 'Die Zeit ist nicht gesetzt!';
	}
	if (indikator == 16) {
		ERRORSMSGALERT = 'Bitte geben Sie eine anz. Stunden an!';
	}
	if (indikator == 17) {
		ERRORSMSGALERT = 'Bitte beschreiben Sie Ihr Anliegen.';
	}
	if (indikator == 18) {
		ERRORSMSGALERT = 'Bitte wiederholen Sie Ihr Passwort';
	}
	if (indikator == 19) {
		ERRORSMSGALERT = 'Bitte geben Sie Ihr Passwort ein';
	}
	if (indikator == 20) {
		ERRORSMSGALERT = 'Bitte geben Sie Ihren Rufname an';
	}
	if (indikator == 21) {
		ERRORSMSGALERT = 'Die Natelnummer ist nicht korrekt (nur +, -, / und 0 bis 9 sind erlaubt)';
	}
    if (indikator == 22) {
		ERRORSMSGALERT = 'Bitte geben Sie Ihr Geburtsjahr ein';
	}
    if (indikator == 23) {
		ERRORSMSGALERT = 'Bitte geben Sie Ihr Geburtsmonat ein';
	}
    if (indikator == 24) {
		ERRORSMSGALERT = 'Bitte geben Sie Ihr Geburtstag ein';
	}
    if(ERRORSMSGALERT){
		alert(ERRORSMSGALERT);
    }
}



function testeTellAFriend() {
	var X=0;
	if( !TesteValues(document.getElementById('t_name_empf').value) ) {
		X++;
		return false;
	}
	if( !TesteValues(document.getElementById('t_mail_empf').value) ) {
		X++;
		return false;
	}
	if( !validateEmail('t_mail_empf') ) {
		X++;	
		generateAlerts(4);
		return false;
	}
	if( !TesteValues(document.getElementById('t_mail_sender').value) ) {
		X++;
		return false;
	}
	if( !TesteValues(document.getElementById('t_mail_sender').value) ) {
		X++;
		return false;
	}
	if( !validateEmail('t_mail_sender') ) {
		X++;	
		generateAlerts(4);
		return false;
	}
	if( X == 0 ) {
		document.tellafriend.submit();
	}else{
		return false;	
	}
}

function testeMeineDaten() {
	var X=0;
    if( !TesteValues(document.getElementById('mu_Passwort').value) ) {
		X++;
		generateAlerts(19);
		return false;
	}
	if( !validatePassword('mu_Passwort') ) {
		X++;
		generateAlerts(19);
		return false;
	}
	if( document.getElementById('mu_Passwort').value != document.getElementById('mu_Passwort2').value ) {
		X++;
		generateAlerts(18);
		return false;
	}
	
	if( !TesteValues(document.getElementById('mu_Name').value) ) {
		X++;
		generateAlerts(6);
		return false;
	}
	if( !TesteValues(document.getElementById('mu_Vorname').value) ) {
		X++;
		generateAlerts(7);
		return false;
	}
	
	if( !TesteValues(document.getElementById('mu_Adresse').value) ) {
		X++;
		generateAlerts(8);
		return false;
	}
	
	
	if( !TesteValues(document.getElementById('mu_PLZ').value) ) {
		X++;
		generateAlerts(9);
		return false;
	}
	if( !TestZIP(document.getElementById('mu_PLZ').value) ) {
		X++;
		generateAlerts(9);
		return false;
	}
	
	
	if( !TesteValues(document.getElementById('mu_Ort').value) ) {
		X++;
		generateAlerts(10);
		return false;
	}
		if( X == 0 ) {
		document.meineDaten.submit();
	}else{
		return false;	
	}
}


function shopDataControll() {
	var X=0;
	if( !TesteValues(document.getElementById('id_4').value) ) {
		X++;
		generateAlerts(6);
		return false;
	}
	if( !TesteValues(document.getElementById('id_5').value) ) {
		X++;
		generateAlerts(7);
		return false;
	}
	if( !TesteValues(document.getElementById('id_8').value) ) {
		X++;
		generateAlerts(9);
		return false;
	}
	
	if( !TesteValues(document.getElementById('id_9').value) ) {
		X++;
		generateAlerts(10);
		return false;
	}
	
	if( !TesteValues(document.getElementById('id_11').value) ) {
		X++;	
		generateAlerts(4);
		return false;
	}
	if( !validateEmail('id_11') ) {
		X++;	
		generateAlerts(4);
		return false;
	}
	if( X == 0 ) {
		document.getElementById('bestellen').value='bestellen';
		document.bestellung_b.submit();
	}else{
		return false;	
	}
}

function testeForm_kontakt() {
	var X=0;
	if( !TesteValues(document.getElementById('firstName').value) ) {
		X++;
		generateAlerts(6);
		return false;
	}
	if( !TesteValues(document.getElementById('lastName').value) ) {
		X++;
		generateAlerts(7);
		return false;
	}
	if( !TesteValues(document.getElementById('email').value) ) {
		X++;	
		generateAlerts(4);
		return false;
	}
	if( !validateEmail('email') ) {
		X++;	
		generateAlerts(4);
		return false;
	}
	if( !TesteValues(document.getElementById('message').value) ) {
		X++;	
		generateAlerts(17);
		return false;
	}
	if( X == 0 ) {
		document.kontakt_form.submit();
	}else{
		return false;	
	}
}



function NLTest() {
	var X=0;
	if( document.getElementById('myusersnl_status').checked ) {
		if( !TesteValues(document.getElementById('myusersVorname').value) ) {
			X++;	
			generateAlerts(7);
			return false;
		}
		if( !TesteValues(document.getElementById('myusersNachname').value) ) {
			X++;	
			generateAlerts(6);
			return false;
		}
	}	
	if( !TesteValues(document.getElementById('myusersEmail').value) ) {
		X++;	
		generateAlerts(4);
		return false;
	}
	if(!validateEmail('myusersEmail')){
		X++;	
		generateAlerts(4);
		return false;
	}
	if( X == 0 ) {
		document.nlform.submit();
	}else{
		return false;	
	}
	
}

///////////////////////////////////////////
function browsersize(breite) {
	return parseInt(1250-(breite/2));
}
function goToContextHelp(id) {
	var ID = id;
	Fenster1 = window.open('/_popups/admin_help.php?helpCenterID='+ID,'help','width=500,height=250,left=100,top=100,resizable=no,status=no,scrollbars=yes');	
	Fenster1.focus();
}
function Fensterweite () {
var A = window.innerWidth;
var B = document.body.offsetWidth;
var C = self.innerWidth;
  if(!B) {
	 if(!A) {
		return C; 
	 }else{
    	return A;
	 }
  }else{
    return B;
  }
}
function Fensterhoehe () {
  if (window.innerHeight) {
    return window.innerHeight;
  } else if (document.body && document.body.offsetHeight) {
    return document.body.offsetHeight;
  }else{
    return 0;
  }
}
function neuAufbau () {
  if (Weite != Fensterweite() || Hoehe != Fensterhoehe())
    location.href = location.href;
}

function sendwein() {
  submit();
}

function myprint() {
	self.focus();
	window.print();		
}

function MM_displayStatusMsg(msgStr) { //v1.0
  top.status=msgStr;
  document.MM_returnValue = true;
}

function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf('?'))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_showHideLayers() { //v6.0
  var i,p,v,obj,args=MM_showHideLayers.arguments;
  for (i=0; i<(args.length-2); i+=3) if ((obj=MM_findObj(args[i]))!=null) { v=args[i+2];
    if (obj.style) { obj=obj.style; v=(v=='show')?'visible':(v=='hide')?'hidden':v; }
    obj.visibility=v; }
}
function MM_reloadPage(init) {  //reloads the window if Nav4 resized
  if (init==true) with (navigator) {if ((appName=='Netscape')&&(parseInt(appVersion)==4)) {
    document.MM_pgW=innerWidth; document.MM_pgH=innerHeight; onresize=MM_reloadPage; }}
  else if (innerWidth!=document.MM_pgW || innerHeight!=document.MM_pgH) location.reload();
}
MM_reloadPage(true);

function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf('#')!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf('?'))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_openBrWindow(theURL,winName,features) { //v2.0
  window.open(theURL,winName,features);
}

function MM_nbGroup(event, grpName) { //v6.0
  var i,img,nbArr,args=MM_nbGroup.arguments;
  if (event == 'init' && args.length > 2) {
    if ((img = MM_findObj(args[2])) != null && !img.MM_init) {
      img.MM_init = true; img.MM_up = args[3]; img.MM_dn = img.src;
      if ((nbArr = document[grpName]) == null) nbArr = document[grpName] = new Array();
      nbArr[nbArr.length] = img;
      for (i=4; i < args.length-1; i+=2) if ((img = MM_findObj(args[i])) != null) {
        if (!img.MM_up) img.MM_up = img.src;
        img.src = img.MM_dn = args[i+1];
        nbArr[nbArr.length] = img;
    } }
  } else if (event == 'over') {
    document.MM_nbOver = nbArr = new Array();
    for (i=1; i < args.length-1; i+=3) if ((img = MM_findObj(args[i])) != null) {
      if (!img.MM_up) img.MM_up = img.src;
      img.src = (img.MM_dn && args[i+2]) ? args[i+2] : ((args[i+1])? args[i+1] : img.MM_up);
      nbArr[nbArr.length] = img;
    }
  } else if (event == 'out' ) {
    for (i=0; i < document.MM_nbOver.length; i++) {
      img = document.MM_nbOver[i]; img.src = (img.MM_dn) ? img.MM_dn : img.MM_up; }
  } else if (event == 'down') {
    nbArr = document[grpName];
    if (nbArr)
      for (i=0; i < nbArr.length; i++) { img=nbArr[i]; img.src = img.MM_up; img.MM_dn = 0; }
    document[grpName] = nbArr = new Array();
    for (i=2; i < args.length-1; i+=2) if ((img = MM_findObj(args[i])) != null) {
      if (!img.MM_up) img.MM_up = img.src;
      img.src = img.MM_dn = (args[i+1])? args[i+1] : img.MM_up;
      nbArr[nbArr.length] = img;
  } }
}

function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}

function MM_callJS(jsStr) { //v2.0
  return eval(jsStr)
}function MM_openBrWindow(theURL,winName,features) { 
window.open(theURL,winName,features);
}
if (document.images) {
img1_high = new Image();
img1_high.src = "/admin/images/pflichtf_gruen.gif";
}
function austausch(nr) {
if (document.images) {
document[nr].src = img1_high.src;
}	
}
function nonAustausch(nr) {
if (document.images) {
document[nr].src = "/admin/images/pflichtf_rot.gif";
}	
}
function checkDate(dayIn, monthIn, yearIn) {
var year=yearIn;
var mon=monthIn;
var day=dayIn;
year = String(year);
mon = String(mon);
day = String(day);
if(day=="")
{
return false;
}
if(mon=="")
{
return false;
}
if(year.length<2 || year.length==3 || year.length>4)
{
return false;
}
var stryear = year;
var day = Number(day);
var mon = Number(mon);
var year = Number(year);
if((isNaN(day)) || (isNaN(mon)) || (isNaN(year)))
{
return false;
}
if(stryear.length==2) {
return false;
}
if(year<1900 || year>2000) {
return false;
}
if ((mon == 4 || mon == 6 || mon == 9 || mon == 11) && day == 31) {
return false;
}
if (mon == 2) {
var isleap=(year%4==0 && (year%100!=0 || year%400==0));
if (day > 29 || (day == 29 && !isleap)) {
return false;
}
}
return true;
}
function formular_select(formname, lang, id, meldung) {
var imgprint = "img_"+id;
if("" == document.forms[formname]['id_'+id][document.forms[formname]['id_'+id].selectedIndex].value || "Bitte wählen Sie:" == document.forms[formname]['id_'+id][document.forms[formname]['id_'+id].selectedIndex].value || "Veuillez choisir:" == document.forms[formname]['id_'+id][document.forms[formname]['id_'+id].selectedIndex].value || "Choississez s.v.p.:" == document.forms[formname]['id_'+id][document.forms[formname]['id_'+id].selectedIndex].value) {
nonAustausch(imgprint);
if( meldung == "no value" || meldung == "" ) {
}else{
alert(meldung);
}
document.forms[formname]['id_'+id].focus();
}else{
austausch(imgprint);
}
}
function formular_imput(formname, lang, id, meldung, stingtyp) {
var imgprint = "img_"+id;
var imput = document.forms[formname]['id_'+id].value;
if(imput == "" || imput == " ") {
if( meldung == "no value" || meldung == "" ) {
}else{
alert(meldung);
}
document.forms[formname]['id_'+id].focus();
nonAustausch(imgprint);
}else{ 
if( stingtyp == "string" ) {
if(imput.length<1) {
if( meldung == "no value" || meldung == "" ) {
}else{
alert(meldung);
}
document.forms[formname]['id_'+id].focus();
nonAustausch(imgprint);
}else{
austausch(imgprint);
}
}
if(stingtyp == "email") {
if(imput.indexOf('@') == -1 || imput.indexOf('.') == -1) {
if( meldung == "no value" || meldung == "" ) {
}else{
alert(meldung);
}
document.forms[formname]['id_'+id].focus();
nonAustausch(imgprint);
}else{
austausch(imgprint);
}
}
if( stingtyp == "zip" ) {
if(imput.length<4) {
if( meldung == "no value" || meldung == "" ) {
}else{
alert(meldung);
}
document.forms[formname]['id_'+id].focus();
nonAustausch(imgprint);
}else{
for(n=0; n < imput.length; n++) {
if( imput.charAt(n) < "0" || imput.charAt(n) > "9") {
ist_zahl = false;
break;
}else{
ist_zahl = true;
}
}
if(ist_zahl) {
wert = document.forms[formname]['id_'+id].value;
if( wert <= 999 ) {
if( meldung == "no value" || meldung == "" ) {
}else{
alert(meldung);
}
document.forms[formname]['id_'+id].focus();
nonAustausch(imgprint);
}else{
austausch(imgprint);
}
}else{
if( meldung == "no value" || meldung == "" ) {
}else{
alert(meldung);
}
document.forms[formname]['id_'+id].focus();
nonAustausch(imgprint);
}
}
}
if(stingtyp == "nummeric") {
for(n=0; n < imput.length; n++) {
if( imput.charAt(n) < "0" || imput.charAt(n) > "9") {
ist_zahl=false;
break;
}else{
ist_zahl=true;
}
}
if(ist_zahl) {
austausch(imgprint);
}else{
if( meldung == "no value" || meldung == "" ) {
}else{
alert(meldung);
}
document.forms[formname]['id_'+id].focus();
nonAustausch(imgprint);
}
}
if(stingtyp == "tel") {
var nur_das ="/+-() ";
for(n=0; n < imput.length; n++) {
if( imput.charAt(n) < "0" || imput.charAt(n) > "9") {
if( nur_das.indexOf(imput.charAt(n)) < "0"  ) {
ist_zahl=false;
break;
}
}else{
ist_zahl=true;
}
}
if(ist_zahl) {
austausch(imgprint);
}else{
if( meldung == "no value" || meldung == "" ) {
}else{
alert(meldung);
}
document.forms[formname]['id_'+id].focus();
nonAustausch(imgprint);
}
}	
}
}
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}}}}();
(function($) {
$.facebox = function(data, klass) {
$.facebox.loading()
if (data.ajax) fillFaceboxFromAjax(data.ajax)
else if (data.image) fillFaceboxFromImage(data.image)
else if (data.div) fillFaceboxFromHref(data.div)
else if ($.isFunction(data)) data.call($)
else $.facebox.reveal(data, klass)
}
$.extend($.facebox, {
settings: {
opacity      : 0,
overlay      : true,
loadingImage : '/java/ajax-loader.gif',
closeImage   : '/java/closelabel.png',
imageTypes   : [ 'png', 'jpg', 'jpeg', 'gif' ],
faceboxHtml  : '\
<div id="facebox" style="display:none;"> \
<div class="popup"> \
<table> \
<tbody> \
<tr> \
<td class="tl"/><td class="b"/><td class="tr"/> \
</tr> \
<tr> \
<td class="b"/> \
<td class="body"> \
<div class="content"> \
</div> \
<div class="footer"> \
<a href="#" class="close"> \
<img src="/java/closelabel.gif" title="close" class="close_image" /> \
</a> \
</div> \
</td> \
<td class="b"/> \
</tr> \
<tr> \
<td class="bl"/><td class="b"/><td class="br"/> \
</tr> \
</tbody> \
</table> \
</div> \
</div>'
},
loading: function() {
init()
if ($('#facebox .loading').length == 1) return true
showOverlay()
$('#facebox .content').empty()
$('#facebox .body').children().hide().end().
append('<div class="loading"><img src="'+$.facebox.settings.loadingImage+'"/></div>')
$('#facebox').css({
top:	getPageScroll()[1] + (getPageHeight() / 10),
left:	385.5
}).show()
if (!skipOverlay()) {
$(document).bind('keydown.facebox', function(e) {
if (e.keyCode == 27) $.facebox.close()
return true
})
}
$(document).trigger('loading.facebox')
},
reveal: function(data, klass) {
$(document).trigger('beforeReveal.facebox')
if (klass) $('#facebox .content').addClass(klass)
$('#facebox .content').append(data)
$('#facebox .loading').remove()
$('#facebox .body').children().fadeIn('normal')
$('#facebox').css('left', $(window).width() / 2 - ($('#facebox table').width() / 2))
$(document).trigger('reveal.facebox').trigger('afterReveal.facebox')
},
close: function() {
$(document).trigger('close.facebox')
return false
}
})
$.fn.facebox = function(settings) {
init(settings)
function clickHandler() {
$.facebox.loading(true)
var klass = this.rel.match(/facebox\[?\.(\w+)\]?/)
if (klass) klass = klass[1]
fillFaceboxFromHref(this.href, klass)
return false
}
return this.click(clickHandler)
}
function init(settings) {
if ($.facebox.settings.inited) return true
else $.facebox.settings.inited = true
$(document).trigger('init.facebox')
makeCompatible()
var imageTypes = $.facebox.settings.imageTypes.join('|')
$.facebox.settings.imageTypesRegexp = new RegExp('\.' + imageTypes + '$', 'i')
if (settings) $.extend($.facebox.settings, settings)
$('body').append($.facebox.settings.faceboxHtml)
var preload = [ new Image(), new Image() ]
preload[0].src = $.facebox.settings.closeImage
preload[1].src = $.facebox.settings.loadingImage
$('#facebox').find('.b:first, .bl, .br, .tl, .tr').each(function() {
preload.push(new Image())
preload.slice(-1).src = $(this).css('background-image').replace(/url\((.+)\)/, '$1')
})
$('#facebox .close').click($.facebox.close)
$('#facebox .close_image').attr('src', $.facebox.settings.closeImage)
}
function getPageScroll() {
var xScroll, yScroll;
if (self.pageYOffset) {
yScroll = self.pageYOffset;
xScroll = self.pageXOffset;
} else if (document.documentElement && document.documentElement.scrollTop) {	 
yScroll = document.documentElement.scrollTop;
xScroll = document.documentElement.scrollLeft;
} else if (document.body) {
yScroll = document.body.scrollTop;
xScroll = document.body.scrollLeft;	
}
return new Array(xScroll,yScroll) 
}
function getPageHeight() {
var windowHeight
if (self.innerHeight) {	
windowHeight = self.innerHeight;
} else if (document.documentElement && document.documentElement.clientHeight) { 
windowHeight = document.documentElement.clientHeight;
} else if (document.body) { 
windowHeight = document.body.clientHeight;
}	
return windowHeight
}
function makeCompatible() {
var $s = $.facebox.settings
$s.loadingImage = $s.loading_image || $s.loadingImage
$s.closeImage = $s.close_image || $s.closeImage
$s.imageTypes = $s.image_types || $s.imageTypes
$s.faceboxHtml = $s.facebox_html || $s.faceboxHtml
}
function fillFaceboxFromHref(href, klass) {
if (href.match(/#/)) {
var url    = window.location.href.split('#')[0]
var target = href.replace(url,'')
$.facebox.reveal($(target).clone().show(), klass)
} else if (href.match($.facebox.settings.imageTypesRegexp)) {
fillFaceboxFromImage(href, klass)
}else{
fillFaceboxFromAjax(href, klass)
}
}
function fillFaceboxFromImage(href, klass) {
var image = new Image()
image.onload = function() {
$.facebox.reveal('<div class="image"><img src="' + image.src + '" /></div>', klass)
}
image.src = href
}
function fillFaceboxFromAjax(href, klass) {
$.get(href, function(data) { $.facebox.reveal(data, klass) })
}
function skipOverlay() {
return $.facebox.settings.overlay == false || $.facebox.settings.opacity === null 
}
function showOverlay() {
if (skipOverlay()) return
if ($('facebox_overlay').length == 0) 
$("body").append('<div id="facebox_overlay" class="facebox_hide"></div>')
$('#facebox_overlay').hide().addClass("facebox_overlayBG")
.css('opacity', $.facebox.settings.opacity)
.click(function() { $(document).trigger('close.facebox') })
.fadeIn(200)
return false
}
function hideOverlay() {
if (skipOverlay()) return
$('#facebox_overlay').fadeOut(200, function(){
$("#facebox_overlay").removeClass("facebox_overlayBG")
$("#facebox_overlay").addClass("facebox_hide") 
$("#facebox_overlay").remove()
})
return false
}
$(document).bind('close.facebox', function() {
$(document).unbind('keydown.facebox')
$('#facebox').fadeOut(function() {
$('#facebox .content').removeClass().addClass('content')
hideOverlay()
$('#facebox .loading').remove()
})
})
})(jQuery);
var tmp = navigator.appName == 'Microsoft Internet Explorer' && navigator.userAgent.indexOf('Opera') < 1 ? 1 : 0;
if(tmp) var isIE = document.namespaces && ( !document.documentMode || document.documentMode < 9 ) ? 1 : 0;
if(isIE) {
if(document.namespaces['v']==null) {
var e=["shape","shapetype","group","background","path","formulas","handles","fill","stroke","shadow","textbox","textpath","imagedata","line","polyline","curve","roundrect","oval","rect","arc","image"],s=document.createStyleSheet();
for(var i=0; i<e.length; i++) {s.addRule("v\\:"+e[i],"behavior: url(#default#VML);");} document.namespaces.add("v","urn:schemas-microsoft-com:vml");
}
}
function getImages(className){
var children = document.getElementsByTagName('img');
var elements = new Array(); var i = 0;
var child; var classNames; var j = 0;
for (i=0;i<children.length;i++) {
child = children[i];
classNames = child.className.split(' ');
for (var j = 0; j < classNames.length; j++) {
if (classNames[j] == className) {
elements.push(child);
break;
}
}
}
return elements;
}
function getClasses(classes,string){
var temp = '';
for (var j=0;j<classes.length;j++) {
if (classes[j] != string) {
if (temp) {
temp += ' '
}
temp += classes[j];
}
}
return temp;
}
function getClassValue(classes,string){
var temp = 0; var pos = string.length;
for (var j=0;j<classes.length;j++) {
if (classes[j].indexOf(string) == 0) {
temp = Math.min(classes[j].substring(pos),100);
break;
}
}
return Math.max(0,temp);
}
function getClassColor(classes,string){
var temp = 0; var str = ''; var pos = string.length;
for (var j=0;j<classes.length;j++) {
if (classes[j].indexOf(string) == 0) {
temp = classes[j].substring(pos);
str = '#' + temp.toLowerCase();
break;
}
}
if(str.match(/^#[0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f]$/i)) {return str; }else {return 0;}
}
function getClassAttribute(classes,string){
var temp = 0; var pos = string.length;
for (var j=0;j<classes.length;j++) {
if (classes[j].indexOf(string) == 0) {
temp = 1;
break;
}
}
return temp;
}
function clipPolyRight(ctx,x,y,w,h,t,d,s) {
var z = (h-t-t)/h;
ctx.beginPath();
ctx.moveTo(x,y); ctx.lineTo(w,y+t); ctx.lineTo(w,y+h-t); ctx.lineTo(x,y+h);
if(d>0) {ctx.lineTo(x,y+h-s); ctx.lineTo(w,y+h-t-(z*s)); ctx.lineTo(w,y+h-t-(z*(s+d))); ctx.lineTo(x,y+h-s-d);}
ctx.closePath();
}
function clipPolyLeft(ctx,x,y,w,h,t,d,s) {
var z = (h-t-t)/h;
ctx.beginPath();
ctx.moveTo(x,y+t); ctx.lineTo(w,y+1); ctx.lineTo(w,y+h); ctx.lineTo(x,y+h-t);
if(d>0) {ctx.lineTo(x,y+h-t-(z*s)); ctx.lineTo(w,y+h-s); ctx.lineTo(w,y+h-s-d); ctx.lineTo(x,y+h-t-(z*(s+d))); }
ctx.closePath();
}
function strokePolyRight(ctx,x,y,w,h,t,d,s,b) {
var z = (h-t-t)/h; var n = (b>=1?1:0);
ctx.beginPath();
ctx.moveTo(x+b,y+b); ctx.lineTo(w-b,y+t+b-n); ctx.lineTo(w-b,y+h-t-(z*(s+d))-b); ctx.lineTo(x+b,y+h-s-d-b);
ctx.closePath();
}
function strokePolyLeft(ctx,x,y,w,h,t,d,s,b) {
var z = (h-t-t)/h; var n = (b>=1?1:0);
ctx.beginPath();
ctx.moveTo(x+b,y+t+b-n); ctx.lineTo(w-b,y+b); ctx.lineTo(w-b,y+h-s-d-b); ctx.lineTo(x+b,y+h-t-(z*(s+d))-b);
ctx.closePath();
}
function clipReflex(ctx,x,y,w,h,t,d,s,o) {
var z = (h-t-t)/h;
ctx.beginPath();
if(o=='r') {
ctx.moveTo(x,y+h-s); ctx.lineTo(w,y+h-t-(z*s)); ctx.lineTo(w,y+h-t+2); ctx.lineTo(x,y+h+2);
}else {
ctx.moveTo(w,y+h+2); ctx.lineTo(w,y+h-s); ctx.lineTo(x,y+h-t-(z*s)); ctx.lineTo(x,y+h-t+2);
}
ctx.closePath();
}
function clearReflex(ctx,x,y,w,h,t,d,s,o) {
var z = (h-t-t)/h;
ctx.beginPath();
if(o=='r') {
ctx.moveTo(x,y+h-1); ctx.lineTo(w,y+h-t-1); ctx.lineTo(w,y+h-t+1); ctx.lineTo(x,y+h+1);
}else {
ctx.moveTo(w,y+h-1); ctx.lineTo(x,y+h-t-1); ctx.lineTo(x,y+h-t+1); ctx.lineTo(w,y+h+1);
}
ctx.closePath();
}
function addIEReflex() {
var theimages = getImages('reflex');
var image, object, vml, display, flt, classes, newClasses, head, fill, flex, foot;
var i, j, z, q, p, dist, stl, iter, rest, radi, higt, divs, opac, colr, bord, wide, half, ih, iw, ww, hh, fb, xb;
var itiltright, itiltnone, itiltleft, iheight, iopacity, idistance, iborder, icolor, iradius;
var children = document.getElementsByTagName('img'); var tilt = 'r';
for(i=0;i<theimages.length;i++) {
image = theimages[i]; object = image.parentNode; j = 0;
itiltright = 0; itiltnone = 0; itiltleft = 0;
iheight = 33; iopacity = 33; idistance = 0;
iborder = 0; icolor = '#000000'; iradius = 0;
if(image.width>=32 && image.height>=32) {
classes = image.className.split(' ');
iradius = getClassValue(classes,"iradius");
iborder = getClassValue(classes,"iborder");
iheight = getClassValue(classes,"iheight");
iopacity = getClassValue(classes,"iopacity");
idistance = getClassValue(classes,"idistance");
icolor = getClassColor(classes,"icolor");
itiltleft = getClassAttribute(classes,"itiltleft");
itiltright = getClassAttribute(classes,"itiltright");
itiltnone = getClassAttribute(classes,"itiltnone");
if(itiltright==true) tilt = 'r';
if(itiltnone==true) tilt = 'n';
if(itiltleft==true) tilt = 'l';
newClasses = getClasses(classes,"reflex");
ih = image.height; iw = image.width; dist = idistance;
radi = Math.min(iradius,Math.max(iw,ih)/10);
colr = (icolor!=0?icolor:'#000000');
opac = (iopacity>0?iopacity:33);
divs = 100/(iheight>=10?iheight:33);
p = (iheight>=10?iheight:33)/100;
higt = Math.floor(ih/divs); wide = 12;
if(iborder==1) { bord = 0; }else {
iborder = Math.floor(Math.round(Math.min(Math.min(iborder,higt/4),Math.max(iw,ih)/20))/2)*2;
bord = (iborder>0?iborder/2:0);
}
ww = parseInt(iw/20); q = 1;
iter = Math.floor((iw-ww-ww)/wide);
rest = ((iw-ww-ww)%wide); half = (((iw-ww-ww)/wide)-1)/2;
hh = iter+(rest>0?1:0); z = (ih-hh-hh)/ih;
display = (image.currentStyle.display.toLowerCase()=='block')?'block':'inline-block';
vml = document.createElement(['<var style="overflow:hidden;display:' + display + ';width:' + iw + 'px;height:' + (ih+higt+dist) + 'px;padding:0;">'].join(''));
flt = image.currentStyle.styleFloat.toLowerCase();
display = (flt=='left'||flt=='right')?'inline':display;
head = '<v:group style="zoom:1; display:' + display + '; margin:-1px 0 0 -1px; padding:0; position:relative; width:' + iw + 'px;height:' + (ih+higt+dist) + 'px;" coordsize="' + iw + ',' + (ih+higt+dist) + '">';
if(tilt=='n') {
fill = '<v:rect strokeweight="0" filled="t" stroked="f" fillcolor="#ffffff" style="position:absolute; margin:-1px 0 0 -1px; padding:0; top:0px; left:0px; width:' + iw + 'px;height:' + ih + 'px;"><v:fill src="' + image.src + '" type="frame" /></v:rect>';
fb = '<v:rect strokeweight="'+iborder+'" strokecolor="'+colr+'" filled="f" stroked="'+(bord>0||iborder>0?'t':'f')+'" fillcolor="#ffffff" style="position:absolute; margin:-1px 0 0 -1px; padding:0; top:'+bord+'px; left:'+bord+'px; width:'+(iw-bord-bord)+'px;height:'+(ih-bord-bord)+'px;"></v:rect>';
xb = '<v:rect strokeweight="'+iborder+'" strokecolor="'+colr+'" filled="f" stroked="'+(bord>0||iborder>0?'t':'f')+'" fillcolor="#ffffff" style="position:absolute; margin:-1px 0 0 -1px; padding:0; top:'+(ih+dist+bord)+'px; left:'+bord+'px; width:'+(iw-bord-bord)+'px;height:'+(higt-bord-bord)+'px; filter: progid:DXImageTransform.Microsoft.Alpha(opacity='+opac+',style=1,finishOpacity=0,startx=0,starty=0,finishx=0,finishy='+parseInt(ih*0.66)+');"></v:rect>';
flex = '<v:rect strokeweight="0" filled="t" stroked="f" fillcolor="#ffffff" style="position:absolute; margin:-1px 0 0 -1px; padding:0; top:'+(ih+dist)+'px; left:0px; width:' + iw + 'px;height:' + higt + 'px; filter:flipv progid:DXImageTransform.Microsoft.Alpha(opacity='+opac+',style=1,finishOpacity=0,startx=0,starty=0,finishx=0,finishy='+ih+');"><v:fill origin="0,0" position="0,-'+(divs/2-0.5)+'" size="1,'+(1*divs)+'" src="' + image.src + '" type="frame" /></v:rect>';
}else if(tilt=='r') {
fill = '<v:rect strokeweight="0" filled="t" stroked="f" fillcolor="#808080" style="position:absolute; margin:-1px 0 0 -1px;padding:0 ;width:' + iw + 'px;height:' + (ih+higt+dist) + 'px;"><v:fill color="#808080" opacity="0.0" /></v:rect><v:shape strokeweight="0" filled="t" stroked="f" fillcolor="#ffffff" coordorigin="0,0" coordsize="'+iw+','+ih+'" path="m '+ww+',0 l '+ww+','+ih+','+(iw-ww)+','+(ih-hh)+','+(iw-ww)+','+hh+' x e" style="position:absolute; margin:-1px 0 0 -1px; padding:0; top:0px; left:0px; width:' + iw + 'px;height:' + ih + 'px;"><v:fill src="' + image.src + '" type="frame" /></v:shape>';
for(j=0;j<iter;j++) {
if(j==(iter-1)) q = (rest>0?1:0);
fill += '<v:shape strokeweight="0" filled="t" stroked="f" fillcolor="#808080" coordorigin="0,0" coordsize="'+iw+','+ih+'" path="m '+(ww+(j*wide))+','+j+' l '+(q+ww+((j+1)*wide))+','+(j+1)+','+(q+ww+((j+1)*wide))+','+(ih-1-j)+','+(ww+(j*wide))+','+(ih-j)+' x e" style="position:absolute; margin: -1px 0 0 -1px; padding:0px; top:0px; left:0px; width:' + iw + 'px; height:' + ih + 'px;"><v:fill origin="0,0" position="'+(half-j)+',0" size="'+((iw-ww-ww)/wide)+',1" type="frame" src="' + image.src + '" /></v:shape>';
}
if(rest>0) {
fill += '<v:shape strokeweight="0" filled="t" stroked="f" fillcolor="#808080" coordorigin="0,0" coordsize="'+iw+','+ih+'" path="m '+(ww+(j*wide))+','+j+' l '+(ww+((j+1)*wide))+','+(j+1)+','+(ww+((j+1)*wide))+','+(ih-1-j)+','+(ww+(j*wide))+','+(ih-j)+' x e" style="position:absolute; margin: -1px 0 0 -1px; padding:0px; top:0px; left:0px; width:' + iw + 'px; height:' + ih + 'px;"><v:fill origin="0,0" position="'+(half-j)+',0" size="'+((iw-ww-ww)/wide)+',1" type="frame" src="' + image.src + '" /></v:shape>';
}
q = ((iter*z)/(ih/100))/2;
if(bord>0||iborder>0) {
fb = '<v:shape strokeweight="'+iborder+'" strokecolor="'+colr+'" filled="f" stroked="'+(bord>0||iborder>0?'t':'f')+'" coordorigin="0,0" coordsize="'+iw+','+ih+'" path="m '+(ww+bord)+','+bord+' l '+(ww+bord)+','+(ih-bord)+','+(iw-ww-bord)+','+(ih-hh-bord)+','+(iw-ww-bord)+','+(hh+bord)+' x e" style="position:absolute; margin:-1px 0 0 -1px; padding:0; top:0px; left:0px; width:' + iw + 'px;height:' + ih + 'px;"></v:shape>';
xb = '<v:shape strokeweight="'+iborder+'" strokecolor="'+colr+'" stroked="'+(bord>0||iborder>0?'t':'f')+'" filled="f" coordorigin="0,0" coordsize="'+iw+','+(hh+higt+dist)+'" path="m '+(ww+bord)+','+(hh+dist+bord)+' l '+(ww+bord)+','+(higt+hh+dist-bord)+','+(iw-ww-bord)+','+(parseInt((higt+dist)*z)-bord)+','+(iw-ww-bord)+','+(parseInt(dist*z)+bord)+' x e" style="position:absolute; margin:-1px 0 0 -1px; padding:0; top:'+(ih-hh+dist)+'px; left:0px; width:' + iw + 'px;height:' + (hh+higt+dist) + 'px; flip: y; filter:flipv progid:DXImageTransform.Microsoft.Alpha(opacity='+opac+',style=1,finishOpacity=0,startx=0,starty=0,finishx='+q+',finishy=80);"></v:shape>';
}else {fb = ''; xb = ''; }
flex = '<v:shape strokeweight="0" stroked="f" filled="t" fillcolor="#808080" coordorigin="0,0" coordsize="'+iw+','+(hh+higt+dist)+'" path="m '+ww+','+(hh+dist)+' l '+ww+','+(higt+hh+dist)+','+(iw-ww)+','+parseInt((higt+dist)*z)+','+(iw-ww)+','+parseInt(dist*z)+' x e" style="position:absolute; margin:-1px 0 0 -1px; padding:0; top:'+(ih-hh+dist)+'px; left:0px; width:' + iw + 'px;height:' + (hh+higt+dist) + 'px; flip: y; filter:flipv progid:DXImageTransform.Microsoft.Alpha(opacity='+opac+',style=1,finishOpacity=0,startx=0,starty=0,finishx='+q+',finishy=90);"><v:fill origin="0,0" position="0,-'+((divs/2)-0.5)+'" size="1,'+(divs)+'" src="' + image.src + '" type="frame" /></v:shape>';
}else if(tilt=='l') {
fill = '<v:rect strokeweight="0" filled="t" stroked="f" fillcolor="#808080" style="position:absolute; margin:-1px 0 0 -1px;padding:0 ;width:' + iw + 'px;height:' + (ih+higt+dist) + 'px;"><v:fill color="#808080" opacity="0.0" /></v:rect><v:shape strokeweight="0" filled="t" stroked="f" fillcolor="#ffffff" coordorigin="0,0" coordsize="'+iw+','+ih+'" path="m '+ww+','+hh+' l '+ww+','+(ih-hh)+','+(iw-ww)+','+ih+','+(iw-ww)+',0 x e" style="position:absolute; margin:-1px 0 0 -1px; padding:0; top:0px; left:0px; width:' + iw + 'px;height:' + ih + 'px;"><v:fill src="' + image.src + '" type="frame" /></v:shape>';
for(j=0;j<iter;j++) {
if(j==(iter-1)) q = (rest>0?1:0);
fill += '<v:shape strokeweight="0" filled="t" stroked="f" fillcolor="#808080" coordorigin="0,0" coordsize="'+iw+','+ih+'" path="m '+(ww+(j*wide))+','+(iter-j)+' l '+(q+ww+((j+1)*wide))+','+(iter-1-j)+','+(q+ww+((j+1)*wide))+','+(ih-1-iter+j)+','+(ww+(j*wide))+','+(ih-iter+j)+' x e" style="position:absolute; margin: -1px 0 0 -1px; padding:0px; top:0px; left:0px; width:' + iw + 'px; height:' + ih + 'px;"><v:fill origin="0,0" position="'+(half-j)+',0" size="'+((iw-ww-ww)/wide)+',1" type="frame" src="' + image.src + '" /></v:shape>';
}
if(rest>0) {
fill += '<v:shape strokeweight="0" filled="t" stroked="f" fillcolor="#808080" coordorigin="0,0" coordsize="'+iw+','+ih+'" path="m '+(ww+(j*wide))+','+(iter-j)+' l '+(ww+((j+1)*wide))+','+(iter-1-j)+','+(ww+((j+1)*wide))+','+(ih-1-iter+j)+','+(ww+(j*wide))+','+(ih-iter+j)+' x e" style="position:absolute; margin: -1px 0 0 -1px; padding:0px; top:0px; left:0px; width:' + iw + 'px; height:' + ih + 'px;"><v:fill origin="0,0" position="'+(half-j)+',0" size="'+((iw-ww-ww)/wide)+',1" type="frame" src="' + image.src + '" /></v:shape>';
}
q = 100-(((iter*z)/(ih/100))/2);
if(bord>0||iborder>0) {
fb = '<v:shape strokeweight="'+iborder+'" strokecolor="'+colr+'" filled="f" stroked="'+(bord>0||iborder>0?'t':'f')+'" coordorigin="0,0" coordsize="'+iw+','+ih+'" path="m '+(ww+bord)+','+(hh+bord)+' l '+(ww+bord)+','+(ih-hh-bord)+','+(iw-ww-bord)+','+(ih-bord)+','+(iw-ww-bord)+','+bord+' x e" style="position:absolute; margin:-1px 0 0 -1px; padding:0; top:0px; left:0px; width:' + iw + 'px;height:' + ih + 'px;"></v:shape>';
xb = '<v:shape strokeweight="'+iborder+'" strokecolor="'+colr+'" stroked="'+(bord>0||iborder>0?'t':'f')+'" filled="f" coordorigin="0,0" coordsize="'+iw+','+(hh+higt+dist)+'" path="m '+(ww+bord)+','+(parseInt(dist*z)+bord)+' l '+(ww+bord)+','+(parseInt((higt+dist)*z)-bord)+','+(iw-ww-bord)+','+(higt+hh+dist-bord)+','+(iw-ww-bord)+','+(hh+dist+bord)+' x e" style="position:absolute; margin:-1px 0 0 -1px; padding:0; top:'+(ih-hh+dist)+'px; left:0px; width:' + iw + 'px;height:' + (hh+higt+dist) + 'px; flip: y; filter:flipv progid:DXImageTransform.Microsoft.Alpha(opacity='+opac+',style=1,finishOpacity=0,startx=100,starty=0,finishx='+q+',finishy=80);"></v:shape>';
}else {fb = ''; xb = ''; }
flex = '<v:shape strokeweight="0" filled="t" stroked="f" fillcolor="#808080" coordorigin="0,0" coordsize="'+iw+','+(hh+higt+dist)+'" path="m '+ww+','+parseInt(dist*z)+' l '+ww+','+parseInt((higt+dist)*z)+','+(iw-ww)+','+(higt+hh+dist)+','+(iw-ww)+','+(hh+dist)+' x e" style="position:absolute; margin:-1px 0 0 -1px; padding:0; top:'+(ih-hh+dist)+'px; left:0px; width:' + iw + 'px;height:' + (hh+higt+dist) + 'px; flip: y; filter:flipv progid:DXImageTransform.Microsoft.Alpha(opacity='+opac+',style=1,finishOpacity=0,startx=100,starty=0,finishx='+q+',finishy=90);"><v:fill origin="0,0" position="0,-'+((divs/2)-0.5)+'" size="1,'+(divs)+'" src="' + image.src + '" type="frame" /></v:shape>';
}
foot = '</v:group>';
vml.innerHTML = head+flex+xb+fill+fb+foot;
vml.className = newClasses;
vml.style.cssText = image.style.cssText;
vml.style.height = ih+higt+dist+'px'; vml.width = iw;
vml.height = ih+higt+dist; vml.style.width = iw+'px';
vml.src = image.src; vml.alt = image.alt;
if(image.id!='') vml.id = image.id;
if(image.title!='') vml.title = image.title;
if(image.getAttribute('onclick')!='') vml.setAttribute('onclick',image.getAttribute('onclick'));
object.replaceChild(vml,image);
if(tilt=='r') {tilt='n';}else if(tilt=='n') {tilt='l';}else if(tilt=='l') {tilt='r';}
vml.style.visibility = 'visible';
}
}
}
function addReflex() {
var theimages = getImages('reflex');
var image, object, canvas, context, classes, newClasses, resource, tmp;
var i, j, dist, stl, iter, rest, radi, higt, divs, opac, colr, bord, wide, ih, iw;
var itiltright, itiltnone, itiltleft, iheight, iopacity, idistance, iborder, icolor, iradius;
var children = document.getElementsByTagName('img'); var tilt = 'r';
var tmp = navigator.userAgent.indexOf('WebKit')!=-1?true:false;
var isWK=(tmp==true?window.postMessage?false:window.external?false:true:false);
var isCR=(tmp==true&&window.external?true:false);
for(i=0;i<theimages.length;i++) {
image = theimages[i]; object = image.parentNode; tmp = 0;
itiltright = 0; itiltnone = 0; itiltleft = 0;
iheight = 33; iopacity = 33; idistance = 0;
iborder = 0; icolor = '#000000'; iradius = 0;
canvas = document.createElement('canvas');
if(canvas.getContext && image.width>=32 && image.height>=32) {
classes = image.className.split(' ');
iradius = getClassValue(classes,"iradius");
iborder = getClassValue(classes,"iborder");
iheight = getClassValue(classes,"iheight");
iopacity = getClassValue(classes,"iopacity");
idistance = getClassValue(classes,"idistance");
icolor = getClassColor(classes,"icolor");
itiltleft = getClassAttribute(classes,"itiltleft");
itiltright = getClassAttribute(classes,"itiltright");
itiltnone = getClassAttribute(classes,"itiltnone");
if(itiltright==true) tilt = 'r';
if(itiltnone==true) tilt = 'n';
if(itiltleft==true) tilt = 'l';
newClasses = getClasses(classes,"reflex");
ih = image.height; iw = image.width; dist = idistance;
radi = Math.min(iradius,Math.max(iw,ih)/10);
colr = (icolor!=0?icolor:'#000000');
opac = (100-(iopacity>0?iopacity:33))/100;
divs = 100/(iheight>=10?iheight:33);
higt = Math.floor(image.height/divs);
iborder = Math.round(Math.min(Math.min(iborder,higt/4),Math.max(iw,ih)/20));
wide = 12; bord = (iborder>0?iborder/2:0);
canvas.className = newClasses;
canvas.style.cssText = image.style.cssText;
canvas.style.height = ih+higt+dist+'px'; canvas.width = iw;
canvas.style.width = iw+'px'; canvas.height = ih+higt+dist;
canvas.src = image.src; canvas.alt = image.alt;
if(image.id!='') canvas.id = image.id;
if(image.title!='') canvas.title = image.title;
if(image.getAttribute('onclick')!='') canvas.setAttribute('onclick',image.getAttribute('onclick'));
iter = Math.floor(canvas.width/wide); rest = (canvas.width%wide);
if(tilt=='l'||tilt=='r') {
resource = document.createElement('canvas');
if(resource.getContext) {
resource.style.position = 'fixed';
resource.style.left = -9999+'px';
resource.style.top = 0+'px';
resource.height = canvas.height;
resource.width = canvas.width;
resource.style.height = canvas.height+'px';
resource.style.width = canvas.width+'px';
if(isWK) {object.appendChild(resource);}
}
}
context = canvas.getContext("2d");
object.replaceChild(canvas,image);
context.clearRect(0,0,canvas.width,canvas.height);
if(!isCR) {
context.globalCompositeOperation = "source-over";
context.fillStyle = "rgba(0,0,0,0)";
context.fillRect(0,0,canvas.width,canvas.height);
}
context.save();
context.translate(0,canvas.height);
context.scale(1,-1);
context.drawImage(image,0,-(canvas.height-higt-higt-dist),canvas.width,canvas.height-higt-dist);
context.restore();
if(iborder>0) {
context.strokeStyle = colr;
context.lineWidth = iborder;
context.beginPath();
context.rect(bord,canvas.height-higt+bord,canvas.width-iborder,higt);
context.closePath();
context.stroke();
}
if(!isWK||tilt=='n') {
context.globalCompositeOperation = "destination-out";
stl = context.createLinearGradient(0,canvas.height-higt,0,canvas.height);
stl.addColorStop(1,"rgba(0,0,0,1.0)");
stl.addColorStop(0,"rgba(0,0,0,"+opac+")");
context.fillStyle = stl;
}
if(isWK) {
context.beginPath();
context.rect(0,canvas.height-higt,canvas.width,higt);
context.closePath();
context.fill();
}else {
context.fillRect(0,canvas.height-higt,canvas.width,higt);
}
context.globalCompositeOperation = "source-over";
context.drawImage(image,0,0,iw,ih);
context.save();
if(isWK&&dist>0&&tilt!='n') {
context.fillStyle = '#808080';
context.fillRect(0,canvas.height-higt-dist,canvas.width,dist);
}
if(iborder>0) {
if(tilt=='n') {
context.beginPath();
context.rect(bord,bord,canvas.width-iborder,canvas.height-higt-dist-iborder);
context.closePath();
context.stroke();
}
}
if(tilt=='l'||tilt=='r') {
if(resource.getContext) {
context = resource.getContext("2d");
context.globalCompositeOperation = "source-over";
context.clearRect(0,0,resource.width,resource.height);
if(tilt=='r') {
for(j=0;j<iter;j++) {
context.drawImage(canvas,j*wide,0,wide,resource.height,j*wide,j*1,wide,resource.height-(j*2));
}
if(rest>0) {
rest = canvas.width-(iter*wide);
context.drawImage(canvas,j*wide,0,rest,resource.height,j*wide,j*1,rest,resource.height-(j*2));
}
}else {
for(j=0;j<iter;j++) {
context.drawImage(canvas,j*wide,0,wide,resource.height,j*wide,(iter-j)*1,wide,resource.height-((iter-j)*2));
}
if(rest>0) {
rest = canvas.width-(iter*wide);
context.drawImage(canvas,j*wide,0,rest,resource.height,j*wide,0,rest,resource.height);
}
}
context.save();
if(canvas.getContext) {
context = canvas.getContext("2d");
context.clearRect(0,0,canvas.width,canvas.height);
if(tilt=='r') {
clipPolyRight(context,canvas.width/20,0,canvas.width*0.95,canvas.height,iter+(rest>0?1:0),dist,higt);
}else {
clipPolyLeft(context,canvas.width/20,0,canvas.width*0.95,canvas.height,iter+(rest>0?1:1),dist,higt);
}
context.clip();
context.drawImage(resource,parseInt(canvas.width/20),0,parseInt(canvas.width*0.9),canvas.height);
context.save();
if(iborder>0) {
context.lineWidth = iborder;
if(tilt=='r') {
strokePolyRight(context,canvas.width/20,0,canvas.width*0.95,canvas.height,iter+(rest>0?1:0),dist,higt,bord);
context.stroke();
}else {
strokePolyLeft(context,canvas.width/20,0,canvas.width*0.95,canvas.height,iter+(rest>0?1:0),dist,higt,bord);
context.stroke();
}
}
if(isWK) {
context.globalCompositeOperation = "destination-out";
stl = context.createLinearGradient((tilt=='l'?canvas.width:0),canvas.height-higt,(tilt=='l'?canvas.width-parseInt(wide/divs):parseInt(wide/divs)),canvas.height);
stl.addColorStop(1,"rgba(255,0,0,1.0)");
stl.addColorStop(0,"rgba(255,0,0,"+opac+")");
context.fillStyle = stl;
clipReflex(context,canvas.width/20,0,canvas.width*0.95,canvas.height,iter+(rest>0?1:0),dist,higt,tilt);
context.fill();
globalCompositeOperation = "source-in";
clearReflex(context,canvas.width/20,0,canvas.width*0.95,canvas.height,iter+(rest>0?1:0),dist,higt,tilt);
context.clip();
context.clearRect(0,0,canvas.width,canvas.height);
context.clearRect(0,0,canvas.width,canvas.height);
context.clearRect(0,0,canvas.width,canvas.height);
context.clearRect(0,0,canvas.width,canvas.height);
if(isWK) {object.removeChild(resource);}
}
}
}
}
if(tilt=='r') {tilt='n';}else if(tilt=='n') {tilt='l';}else if(tilt=='l') {tilt='r';}
context.save();
canvas.style.visibility = 'visible';
}
}
}
if(window.addEventListener) window.addEventListener("load",addReflex,false);
else window.attachEvent("onload",addIEReflex);
var tmp = navigator.appName == 'Microsoft Internet Explorer' && navigator.userAgent.indexOf('Opera') < 1 ? 1 : 0;
if(tmp) var isIE = document.namespaces && ( !document.documentMode || document.documentMode < 9 ) ? 1 : 0;
if(isIE) {
if(document.namespaces['v']==null) {
var e=["shape","shapetype","group","background","path","formulas","handles","fill","stroke","shadow","textbox","textpath","imagedata","line","polyline","curve","roundrect","oval","rect","arc","image"],s=document.createStyleSheet();
for(var i=0; i<e.length; i++) {s.addRule("v\\:"+e[i],"behavior: url(#default#VML);");} document.namespaces.add("v","urn:schemas-microsoft-com:vml");
}
}
function getImages(className){
var children = document.getElementsByTagName('img');
var elements = new Array(); var i = 0;
var child; var classNames; var j = 0;
for (i=0;i<children.length;i++) {
child = children[i];
classNames = child.className.split(' ');
for (var j = 0; j < classNames.length; j++) {
if (classNames[j] == className) {
elements.push(child);
break;
}
}
}
return elements;
}
function getClasses(classes,string){
var temp = '';
for (var j=0;j<classes.length;j++) {
if (classes[j] != string) {
if (temp) {
temp += ' '
}
temp += classes[j];
}
}
return temp;
}
function getClassValue(classes,string){
var temp = 0; var pos = string.length;
for (var j=0;j<classes.length;j++) {
if (classes[j].indexOf(string) == 0) {
temp = Math.min(classes[j].substring(pos),100);
break;
}
}
return Math.max(0,temp);
}
function getClassAttribute(classes,string){
var temp = 0; var pos = string.length;
for (var j=0;j<classes.length;j++) {
if (classes[j].indexOf(string) == 0) {
temp = 1;
break;
}
}
return temp;
}
function getClassHexColor(classes,string,color){
var temp, val = color, pos = string.length;
for (var j=0;j<classes.length;j++) {
if (classes[j].indexOf(string) == 0) {
temp = classes[j].substring(pos);
val = temp.toLowerCase();
break;
}
}
if(!val.match(/^[0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f]$/i)) {val = color||'000000'; }
if(isIE) {return val; }else {var mx=254;
function hex2dec(hex){return(Math.max(0,Math.min(parseInt(hex,16),255)));}
var cr=hex2dec(val.substr(0,2)),cg=hex2dec(val.substr(2,2)),cb=hex2dec(val.substr(4,2));
return Math.min(cr,mx)+','+Math.min(cg,mx)+','+Math.min(cb,mx);
}
}
function getRadius(radius,width,height){
var part = (Math.min(width,height)/100);
radius = Math.max(Math.min(100,radius/part),0);
return radius+'%';
}
function applyForm(ctx,x,y,w,h,r,o,f) {
var z=o?Math.round(r*((window.opera?0.3:0.25)*f)):0;
ctx.beginPath(); ctx.moveTo(x,y+r); ctx.lineTo(x,y+h-r);
ctx.quadraticCurveTo(x+z,y+h-z,x+r,y+h); ctx.lineTo(x+w-r,y+h);
ctx.quadraticCurveTo(x+w-z,y+h-z,x+w,y+h-r); ctx.lineTo(x+w,y+r);
ctx.quadraticCurveTo(x+w-z,y+z,x+w-r,y); ctx.lineTo(x+r,y);
ctx.quadraticCurveTo(x+z,y+z,x,y+r); ctx.closePath();
}
function applyFlex(ctx,x,y,w,h,r,o,c) {
ctx.beginPath();ctx.moveTo(x-r,y-r); ctx.lineTo(x-r,y+r);
ctx.lineTo(x,y+(r*2)); ctx.lineTo(x,y+r); ctx.quadraticCurveTo(x,y,x+r,y);
ctx.lineTo(x+(r*2),y); ctx.lineTo(x+r,y-r); ctx.closePath();
var st=ctx.createRadialGradient(x+(r/4),y+(r/4),0,x+(r/4),y+(r/4),r);
st.addColorStop(0,'rgba('+c+','+o+')'); st.addColorStop(1,'rgba('+c+',0)');
ctx.fillStyle=st; ctx.fill();
ctx.beginPath(); ctx.moveTo(x+w+r,y-r); ctx.lineTo(x+w+r,y+r);
ctx.lineTo(x+w,y+(r*2)); ctx.lineTo(x+w,y+r); ctx.quadraticCurveTo(x+w,y,x+w-r,y);
ctx.lineTo(x+w-(r*2),y); ctx.lineTo(x+w-r,y-r); ctx.closePath();
st=ctx.createRadialGradient(x+w-(r/4),y+(r/4),0,x+w-(r/4),y+(r/4),r);
st.addColorStop(0,'rgba('+c+','+o+')'); st.addColorStop(1,'rgba('+c+',0)');
ctx.fillStyle=st; ctx.fill();
}
function applyGlow(ctx,x,y,w,h,r,o,c) {
function setRS(ctx,x1,y1,r1,x2,y2,r2,o,c) {
var opt=Math.min(parseFloat(o+0.1),1.0),tmp=ctx.createRadialGradient(x1,y1,r1,x2,y2,r2);
tmp.addColorStop(0,'rgba('+c+','+opt+')'); tmp.addColorStop(0.25,'rgba('+c+','+o+')');
tmp.addColorStop(1,'rgba('+c+',0)'); return tmp;
}
function setLS(ctx,x,y,w,h,o,c) {
var opt=Math.min(parseFloat(o+0.1),1.0),tmp=ctx.createLinearGradient(x,y,w,h);
tmp.addColorStop(0,'rgba('+c+','+opt+')'); tmp.addColorStop(0.25,'rgba('+c+','+o+')');
tmp.addColorStop(1,'rgba('+c+',0)'); return tmp;
}
var st,os=Math.round(Math.min(w,h)*(window.opera?0.058:0.05));
ctx.beginPath(); ctx.rect(x+r,y,w-(r*2),r); ctx.closePath();
st=setLS(ctx,x+r,y+os,x+r,y,o,c); ctx.fillStyle=st; ctx.fill();
ctx.beginPath(); ctx.rect(x,y+r,r,h-(r*2)); ctx.closePath();
st=setLS(ctx,x+os,y+r,x,y+r,o,c); ctx.fillStyle=st; ctx.fill();
ctx.beginPath(); ctx.rect(x+r,y+h-r,w-x-(r*2),r); ctx.closePath();
st=setLS(ctx,x+r,y+h-os,x+r,y+h,o,c); ctx.fillStyle=st; ctx.fill();
ctx.beginPath(); ctx.rect(x+w-r,y+r,r,h-y-(r*2)); ctx.closePath();
st=setLS(ctx,x+w-os,y+r,x+w,y+r,o,c); ctx.fillStyle=st; ctx.fill();
ctx.beginPath(); ctx.rect(x,y,r,r); ctx.closePath();
st=setRS(ctx,x+r,y+r,r-os,x+r,y+r,r,o,c); ctx.fillStyle=st; ctx.fill();
ctx.beginPath(); ctx.rect(x,y+h-r,r,r); ctx.closePath();
st=setRS(ctx,x+r,y+h-r,r-os,x+r,y+h-r,r,o,c); ctx.fillStyle=st; ctx.fill();
ctx.beginPath(); ctx.rect(w-r,h-r,x+r,y+r); ctx.closePath();
st=setRS(ctx,w-r,h-r,r-os+x,w-r,h-r,y+r,o,c); ctx.fillStyle=st; ctx.fill();
ctx.beginPath(); ctx.rect(x+w-r,y,r,r); ctx.closePath();
st=setRS(ctx,x+w-r,y+r,r-os,x+w-r,y+r,r,o,c); ctx.fillStyle=st; ctx.fill();
}
function applyMask(ctx,x,y,w,h,r,o,c,i,z) {
function setRS(ctx,x1,y1,r1,x2,y2,r2,o,c,i,z) {
var sg=(i==true?o:0),eg=(i==true?0:o),mg=eg*(z==true?0.9:0.7);
var tmp=ctx.createRadialGradient(x1,y1,r1,x2,y2,r2); tmp.addColorStop(0,'rgba('+c+','+sg+')');
if(z==false) {tmp.addColorStop(0.9,'rgba('+c+','+mg+')');}tmp.addColorStop(1,'rgba('+c+','+eg+')'); return tmp;
}
function setLS(ctx,x,y,w,h,o,c,i,z) {
var sg=(i==true?o:0),eg=(i==true?0:o),mg=eg*(z==true?0.9:0.7);
var tmp=ctx.createLinearGradient(x,y,w,h); tmp.addColorStop(0,'rgba('+c+','+sg+')');
if(z==false) {tmp.addColorStop(0.9,'rgba('+c+','+mg+')');}tmp.addColorStop(1,'rgba('+c+','+eg+')'); return tmp;
}
var st,os=r,p=Math.round(r/8); ctx.fillStyle='rgba('+c+','+o+')';
if(i) {ctx.beginPath(); ctx.rect(x+r,y+r,w-(r*2),h-(r*2)); ctx.closePath(); ctx.fill();}
if(window.opera && !i) {
ctx.beginPath(); ctx.moveTo(x,y); ctx.lineTo(x,y+r); ctx.quadraticCurveTo(x+p,y+p,x+r,y); ctx.closePath(); ctx.fill();
ctx.beginPath(); ctx.moveTo(x+w,y); ctx.lineTo(x+w,y+r); ctx.quadraticCurveTo(x+w-p,y+p,x+w-r,y); ctx.closePath(); ctx.fill();
ctx.beginPath(); ctx.moveTo(x+w,y+h); ctx.lineTo(x+w,y+h-r); ctx.quadraticCurveTo(x+w-p,y+h-p,x+w-r,y+h); ctx.closePath(); ctx.fill();
ctx.beginPath(); ctx.moveTo(x,y+h); ctx.lineTo(x,y+h-r); ctx.quadraticCurveTo(x+p,y+h-p,x+r,y+h); ctx.closePath(); ctx.fill();
}
ctx.beginPath(); ctx.rect(x+r,y,w-(r*2),os); ctx.closePath(); st=setLS(ctx,x+r,y+os,x+r,y,o,c,i,z); ctx.fillStyle=st; ctx.fill();
ctx.beginPath(); ctx.rect(x,y,r,r); ctx.closePath(); st=setRS(ctx,x+r,y+r,r-os,x+r,y+r,r,o,c,i,z); ctx.fillStyle=st; ctx.fill();
ctx.beginPath(); ctx.rect(x,y+r,os,h-(r*2)); ctx.closePath(); st=setLS(ctx,x+os,y+r,x,y+r,o,c,i,z); ctx.fillStyle=st; ctx.fill();
ctx.beginPath(); ctx.rect(x,y+h-r,r,r); ctx.closePath(); st=setRS(ctx,x+r,y+h-r,r-os,x+r,y+h-r,r,o,c,i,z); ctx.fillStyle=st; ctx.fill();
ctx.beginPath(); ctx.rect(x+r,y+h-os,w-(r*2),os); ctx.closePath(); st=setLS(ctx,x+r,y+h-os,x+r,y+h,o,c,i,z); ctx.fillStyle=st; ctx.fill();
ctx.beginPath(); ctx.rect(x+w-r,y+h-r,r,r); ctx.closePath(); st=setRS(ctx,x+w-r,y+h-r,r-os,x+w-r,y+h-r,r,o,c,i,z); ctx.fillStyle=st; ctx.fill();
ctx.beginPath(); ctx.rect(x+w-os,y+r,os,h-(r*2)); ctx.closePath(); st=setLS(ctx,x+w-os,y+r,x+w,y+r,o,c,i,z); ctx.fillStyle=st; ctx.fill();
ctx.beginPath(); ctx.rect(x+w-r,y,r,r); ctx.closePath(); st=setRS(ctx,x+w-r,y+r,r-os,x+w-r,y+r,r,o,c,i,z); ctx.fillStyle=st; ctx.fill();
}
function addIEBevel() {
var theimages = getImages('bevel');
var image, object, vml, display, flt, classes, newClasses;
var ww, hh, iw, ih, ix, iy, i, t, f, p, ro, ri, r, mask, radius, inner;
var iglowcol, ishinecol, ishadecol, ibackcol, ifillcol, usemask, noshine;
var iglowopac, ishineopac, ishadeopac, iradius, noglow, noshade, islinear;
var head, foot, glow, fill, shade, shine, high, left, right, oline;
for (i=0;i<theimages.length;i++) {
image = theimages[i]; object = image.parentNode;
high = ''; shine = ''; left = ''; right = ''; shade = ''; glow = ''; oline = '';
classes = image.className.split(' ');
iglowcol = getClassHexColor(classes,"iglowcol",'000000');
ibackcol = getClassHexColor(classes,"ibackcol",'0080ff');
ifillcol = getClassHexColor(classes,"ifillcol",'000000');
if(ifillcol=='000000') {ifillcol = ibackcol; }
ishinecol = getClassHexColor(classes,"ishinecol",'ffffff');
ishadecol = getClassHexColor(classes,"ishadecol",'000000');
iradius = getClassValue(classes,"iradius");
iglowopac = getClassValue(classes,"iglowopac");
ishineopac = getClassValue(classes,"ishineopac");
ishadeopac  = getClassValue(classes,"ishadeopac");
islinear = getClassAttribute(classes,"islinear");
usemask = getClassAttribute(classes,"usemask");
noglow = getClassAttribute(classes,"noglow");
noshine = getClassAttribute(classes,"noshine");
noshade = getClassAttribute(classes,"noshade");
iradius = iradius==0?20:iradius;
iglowopac = Math.min(iglowopac==0?40:iglowopac*1.2,100);
ishineopac = ishineopac==0?0.4:ishineopac/100;
ishadeopac = ishadeopac==0?0.5:ishadeopac/100;
newClasses = getClasses(classes,"bevel");
ww = image.width; hh = image.height;
mask = usemask>=1?"filter:progid:DXImageTransform.Microsoft.Alpha(opacity=100,finishopacity=50,style=3);":"";
if(noglow<1) {
radius = Math.max(Math.min(iradius,40),20);
ix = Math.round(Math.min(ww,hh)*0.05);
iy = ix; iw = ww-(2*ix); ih = hh-(2*iy);
ro = Math.round(Math.min(iw,ih)*(radius/100));
ri = Math.round(ro*0.8); r = ri/2;
inner = getRadius(ri/2,iw-ri,ih-ri);
radius = radius*0.8; ro = Math.round(ro*0.8);
}else {
radius = Math.max(Math.min(iradius,40),20);
ix = 0; iy = 0; iw = ww; ih = hh;
ri = Math.round(Math.min(iw,ih)*(radius/100));
r = ri/2; inner = getRadius(ri/2,iw-ri,ih-ri);
ro = ri;
} t = Math.round(Math.max(Math.round(iw/200),1)); f = 0;
if(noglow<1) {glow = '<v:roundrect arcsize="'+radius+'%" strokeweight="0" filled="t" stroked="f" fillcolor="#'+iglowcol+'" style="filter:Alpha(opacity='+iglowopac+'), progid:dxImageTransform.Microsoft.Blur(PixelRadius='+(ix/2)+',MakeShadow=false); zoom:1;margin:-1px 0 0 -1px;padding:0;position:absolute;top:0px;left:0px;width:'+(iw+ix)+'px;height:'+(ih+iy)+'px;"><v:fill color="#'+iglowcol+'" opacity="1" /></v:roundrect>';}
fill = '<v:roundrect arcsize="'+radius+'%" strokeweight="0" filled="t" stroked="f" fillcolor="#ffffff" style="zoom:1;margin:-1px 0 0 -1px;padding:0;position:absolute;top:'+iy+'px;left:'+ix+'px;width:'+iw+'px;height:'+ih+'px;"><v:fill method="linear" type="gradient" angle="0" color="#'+ifillcol+'" color2="#'+ibackcol+'" /></v:roundrect>';
fill += '<v:roundrect arcsize="'+radius+'%" strokeweight="0" filled="t" stroked="f" style="'+mask+'zoom:1;margin:-1px 0 0 -1px;padding:0;position:absolute;top:'+iy+'px;left:'+ix+'px;width:'+iw+'px;height:'+ih+'px;"><v:fill src="'+image.src+'" type="frame" /></v:roundrect>';
if(noshade<1) {
shade = '<v:shape strokeweight="0" filled="t" stroked="f" fillcolor="#000000" coordorigin="0,0" coordsize="'+ro+','+ro+'" path="m '+ro+','+ro+' l 0,'+ro+' qy '+ro+',0 l '+ro+','+ro+' x e" style="position:absolute;margin: -1px 0 0 -1px;top:'+iy+'px;left:'+ix+'px;width:'+ro+'px;height:'+ro+'px;"><v:fill method="'+(islinear>0?"linear":"sigma")+'" type="gradientradial" focus="1" focusposition="1,1" focussize="0.5,0.5" color="#'+ishadecol+'" opacity="0" color2="#'+ishadecol+'" o:opacity2="'+ishadeopac+'" /></v:shape>';
shade += '<v:shape strokeweight="0" filled="t" stroked="f" fillcolor="#000000" coordorigin="0,0" coordsize="'+ro+','+ro+'" path="m 0,'+ro+' l '+ro+','+ro+' qy 0,0 l 0,'+ro+' x e" style="position:absolute;margin: -1px 0 0 -1px;top:'+iy+'px;left:'+(ix+iw-ro)+'px;width:'+ro+'px;height:'+ro+'px;"><v:fill method="'+(islinear>0?"linear":"sigma")+'" type="gradientradial" focus="1" focusposition="-0.5,1" focussize="0.5,0.5" color="#'+ishadecol+'" opacity="0" color2="#'+ishadecol+'" o:opacity2="'+ishadeopac+'" /></v:shape>';
shade += '<v:shape strokeweight="0" filled="t" stroked="f" fillcolor="#000000" coordorigin="0,0" coordsize="'+ro+','+ro+'" path="m '+ro+',0 l '+ro+','+ro+' qx 0,0 l '+ro+',0 x e" style="position:absolute;margin: -1px 0 0 -1px;top:'+(iy+ih-ro)+'px;left:'+ix+'px;width:'+ro+'px;height:'+ro+'px;"><v:fill method="'+(islinear>0?"linear":"sigma")+'" type="gradientradial" focus="1" focusposition="1,-0.5" focussize="0.5,0.5" color="#'+ishadecol+'" opacity="0" color2="#'+ishadecol+'" o:opacity2="'+ishadeopac+'" /></v:shape>';
shade += '<v:shape strokeweight="0" filled="t" stroked="f" fillcolor="#000000" coordorigin="0,0" coordsize="'+ro+','+ro+'" path="m 0,0 l '+ro+',0 qy 0,'+ro+' l 0,0 x e" style="position:absolute;margin: -1px 0 0 -1px;top:'+(iy+ih-ro)+'px;left:'+(ix+iw-ro)+'px;width:'+ro+'px;height:'+ro+'px;"><v:fill method="'+(islinear>0?"linear":"sigma")+'" type="gradientradial" focus="1" focusposition="-0.5,-0.5" focussize="0.5,0.5" color="#'+ishadecol+'" opacity="0" color2="#'+ishadecol+'" o:opacity2="'+ishadeopac+'" /></v:shape>';
shade += '<v:rect strokeweight="0" filled="t" stroked="f" fillcolor="#000000" style="position:absolute;margin: -1px 0 0 -1px;top:'+iy+'px;left:'+(ix+ro-f)+'px;width:'+(iw-ro-ro+f+f)+'px;height:'+ro+'px;"><v:fill method="'+(islinear>0?"linear":"sigma")+'" type="gradient" angle="0" color="#'+ishadecol+'" opacity="0" color2="#'+ishadecol+'" o:opacity2="'+ishadeopac+'" /></v:rect>';
shade += '<v:rect strokeweight="0" filled="t" stroked="f" fillcolor="#000000" style="position:absolute;margin: -1px 0 0 -1px;top:'+(iy+ro-f)+'px;left:'+ix+'px;width:'+ro+'px;height:'+(ih-ro-ro+f+f)+'px;"><v:fill method="'+(islinear>0?"linear":"sigma")+'" type="gradient" angle="90" color="#'+ishadecol+'" opacity="0" color2="#'+ishadecol+'" o:opacity2="'+ishadeopac+'" /></v:rect>';
shade += '<v:rect strokeweight="0" filled="t" stroked="f" fillcolor="#000000" style="position:absolute;margin: -1px 0 0 -1px;top:'+(iy+ro-f)+'px;left:'+(ix+iw-ro)+'px;width:'+ro+'px;height:'+(ih-ro-ro+f+f)+'px;"><v:fill method="'+(islinear>0?"linear":"sigma")+'" type="gradient" angle="270" color="#'+ishadecol+'" opacity="0" color2="#'+ishadecol+'" o:opacity2="'+ishadeopac+'" /></v:rect>';
shade += '<v:rect strokeweight="0" filled="t" stroked="f" fillcolor="#000000" style="position:absolute;margin: -1px 0 0 -1px;top:'+(iy+ih-ro)+'px;left:'+(ix+ro-f)+'px;width:'+(iw-ro-ro+f+f)+'px;height:'+ro+'px;"><v:fill method="'+(islinear>0?"linear":"sigma")+'" type="gradient" angle="180" color="#'+ishadecol+'" opacity="0" color2="#'+ishadecol+'" o:opacity2="'+ishadeopac+'" /></v:rect>';
oline = '<v:roundrect arcsize="'+radius+'%" filled="f" stroked="t" style="zoom:1;margin:-1px 0 0 -1px;padding:0;position:absolute;top:'+iy+'px;left:'+ix+'px;width:'+iw+'px;height:'+ih+'px;"><v:stroke weight="1" style="single" color="#'+ishadecol+'" opacity="'+ishadeopac+'" /></v:roundrect>';
}
if(noshine<1) {
shine = '<v:roundrect arcsize="'+inner+'" strokeweight="0" filled="t" stroked="f" fillcolor="#ffffff" style="zoom:1;margin:-1px 0 0 -1px;padding:0;position:absolute;top:'+(iy+(ri/2))+'px;left:'+(ix+(ri/2))+'px;width:'+(iw-ri)+'px;height:'+(ih-ri)+'px;"><v:fill method="linear sigma" type="gradient" angle="0" color="#'+ishinecol+'" opacity="0" color2="#'+ishinecol+'" o:opacity2="'+ishineopac+'" /></v:roundrect>';
r=Math.round(r); p = "m 0,"+r+" l 0,"+(ih-ri-r)+","+t+","+(ih-ri-r)+","+t+","+r+" qy "+r+","+t+" l "+(iw-ri-r)+","+t+" qx "+(iw-ri-t)+","+r+" l "+(iw-ri-t)+","+(ih-ri-r)+","+(iw-ri)+","+(ih-ri-r)+","+(iw-ri)+","+r+" qy "+(iw-ri-r)+",0 l "+r+",0 qx 0,"+r+" x e";
high = '<v:shape strokeweight="0" stroked="f" filled="t" coordorigin="0,0" coordsize="'+(iw-ri)+','+(ih-ri)+'" path="'+p+'" style="zoom:1;margin:-1px 0 0 -1px;padding:0;position:absolute;top:'+(iy+(ri/2))+'px;left:'+(ix+(ri/2))+'px;width:'+(iw-ri)+'px;height:'+(ih-ri)+'px;"><v:fill method="linear sigma" type="gradient" angle="0" color="#'+ishinecol+'" opacity="0" color2="#'+ishinecol+'" o:opacity2="'+ishineopac+'" /></v:shape>';
left = '<v:oval stroked="f" strokeweight="0" style="zoom:1;margin:-1px 0 0 -1px;padding:0;position:absolute;top:'+(iy+(ri/8))+'px;left:'+(ix+(ri/8))+'px;width:'+ri+'px;height:'+ri+'px;"><v:fill method="any" type="gradientradial" focus="0" focussize="0,0" focusposition="0.5,0.5" on="t" color="#'+ishinecol+'" opacity="0" color2="#'+ishinecol+'" o:opacity2="'+ishineopac+'" /></v:oval>';
right = '<v:oval stroked="f" strokeweight="0" style="zoom:1;margin:-1px 0 0 -1px;padding:0;position:absolute;top:'+(iy+(ri/8))+'px;left:'+(ix+iw-(ri*1.125))+'px;width:'+ri+'px;height:'+ri+'px;"><v:fill method="any" type="gradientradial" focus="0" focussize="0,0" focusposition="0.5,0.5" on="t" color="#'+ishinecol+'" opacity="0" color2="#'+ishinecol+'" o:opacity2="'+ishineopac+'" /></v:oval>';
}
display = (image.currentStyle.display.toLowerCase()=='block')?'block':'inline-block';
vml = document.createElement(['<var style="zoom:1;overflow:hidden;display:'+display+';width:'+ww+'px;height:'+hh+'px;padding:0;">'].join(''));
flt = image.currentStyle.styleFloat.toLowerCase();
display = (flt=='left'||flt=='right')?'inline':display;
head = '<v:group style="zoom:1;display:'+display+';margin:-1px 0 0 -1px;padding:0;position:relative;width:'+ww+'px;height:'+hh+'px;" coordsize="'+ww+','+hh+'"><v:rect strokeweight="0" filled="t" stroked="f" fillcolor="#ffffff" style="zoom:1;margin:-1px 0 0 -1px;padding:0;position:absolute;top:0px;left:0px;width:'+ww+'px;height:'+hh+'px;"><v:fill color="#ffffff" opacity="0.0" /></v:rect>';
foot = '</v:group>';
vml.innerHTML = head+glow+fill+shade+shine+high+left+right+oline+foot;
vml.className = newClasses;
vml.style.cssText = image.style.cssText;
vml.style.height = image.height+'px';
vml.style.width = image.width+'px';
vml.height = image.height;
vml.width = image.width;
if(image.id!=null) vml.id = image.id;
if(image.alt!=null) vml.alt = image.alt;
if(image.title!=null) vml.title = image.title;
if(image.getAttribute('onclick')!=null) vml.setAttribute('onclick',image.getAttribute('onclick'));
object.replaceChild(vml,image);
vml.style.visibility = 'visible';
}
}
function addBevel() {
var theimages = getImages('bevel');
var image, object, canvas, context, classes, newClasses;
var ww, hh, iw, ih, ix, iy, i, r, radius, inner, outer, style, islinear;
var iglowcol, ishinecol, ishadecol, ibackcol, ifillcol, usemask, noshine;
var iglowopac, ishineopac, ishadeopac, iradius, noglow, noshade;
for (i=0;i<theimages.length;i++) {
image = theimages[i]; object = image.parentNode;
canvas = document.createElement('canvas');
if (canvas.getContext) {
classes = image.className.split(' ');
iglowcol = getClassHexColor(classes,"iglowcol",'000000');
ibackcol = getClassHexColor(classes,"ibackcol",'0080ff');
ifillcol = getClassHexColor(classes,"ifillcol",'000000');
if(ifillcol=='0,0,0') {ifillcol = ibackcol; }
ishinecol = getClassHexColor(classes,"ishinecol",'ffffff');
ishadecol = getClassHexColor(classes,"ishadecol",'000000');
iradius = getClassValue(classes,"iradius");
iglowopac = getClassValue(classes,"iglowopac");
ishineopac = getClassValue(classes,"ishineopac");
ishadeopac  = getClassValue(classes,"ishadeopac");
islinear = getClassAttribute(classes,"islinear");
usemask = getClassAttribute(classes,"usemask");
noglow = getClassAttribute(classes,"noglow");
noshine = getClassAttribute(classes,"noshine");
noshade = getClassAttribute(classes,"noshade");
iradius = iradius==0?0.2:iradius/100;
iglowopac = iglowopac==0?0.33:iglowopac/100;
ishineopac = ishineopac==0?0.4:ishineopac/100;
ishadeopac = ishadeopac==0?0.5:ishadeopac/100;
newClasses = getClasses(classes,"bevel");
canvas.className = newClasses;
canvas.style.cssText = image.style.cssText;
canvas.style.height = image.height+'px';
canvas.style.width = image.width+'px';
canvas.height = image.height;
canvas.width = image.width;
canvas.src = image.src;
if(image.id!=null) canvas.id = image.id;
if(image.alt!=null) canvas.alt = image.alt;
if(image.title!=null) canvas.title = image.title;
if(image.getAttribute('onclick')!=null) canvas.setAttribute('onclick',image.getAttribute('onclick'));
ww = canvas.width; hh = canvas.height;
r = Math.max(Math.min(iradius,0.4),0.2);
ix = Math.round(Math.min(ww,hh)*0.05);
iy = ix; iw = ww-(2*ix); ih = hh-(2*iy);
outer = Math.round(Math.min(iw,ih)*r);
radius = Math.round(outer*0.8);
if(noglow>0) {
ix = 0; iy = 0; iw = ww; ih = hh;
radius = Math.round(Math.min(iw,ih)*r);
} inner = Math.round(radius/2);
context = canvas.getContext("2d");
object.replaceChild(canvas,image);
context.clearRect(0,0,ww,hh);
context.globalCompositeOperation = "source-over";
context.save();
if(noglow<1) {applyGlow(context,0,0,ww,hh,outer,iglowopac,iglowcol);}
applyForm(context,ix,iy,iw,ih,radius,true,r);
context.clip();
style = context.createLinearGradient(ix,iy,ix,iy+ih);
style.addColorStop(0,'rgba('+ibackcol+',1)');
style.addColorStop(1,'rgba('+ifillcol+',1)');
context.fillStyle = style; context.fill();
context.fillStyle = 'rgba(0,0,0,0)';
context.fillRect(0,0,ww,hh);
context.drawImage(image,0,0,ww,hh);
if(usemask>=1) {
context.globalCompositeOperation = "destination-out";
applyMask(context,ix,iy,iw,ih,radius,1,'0,0,0');
context.globalCompositeOperation = "destination-over";
context.fillStyle = style;
context.beginPath(); context.rect(ix,iy,iw,ih);
context.closePath(); context.fill();
}
if(noshade<1) {
context.globalCompositeOperation = window.opera?"source-over":"source-atop";
context.fillStyle = 'rgba(0,0,0,0)'; context.fillRect(ix,iy,iw,ih);
applyMask(context,ix,iy,iw,ih,radius,ishadeopac,ishadecol,false,islinear);
applyForm(context,ix,iy,iw,ih,radius,true,r);
context.strokeStyle = 'rgba('+ishadecol+','+ishadeopac+')';
context.lineWidth = 1; context.stroke();
}
if(noshine<1) {
context.globalCompositeOperation = window.opera?"source-over":"source-atop";
applyForm(context,ix+inner,iy+inner,iw-radius,ih-radius,inner);
if(!window.opera) {context.globalCompositeOperation = "lighter"; ishineopac = ishineopac*0.5; }
style = context.createLinearGradient(0,inner,0,ih-radius);
style.addColorStop(0,'rgba('+ishinecol+','+ishineopac+')');
style.addColorStop(0.25,'rgba('+ishinecol+','+(ishineopac/2)+')');
style.addColorStop(1,'rgba('+ishinecol+',0)');
context.fillStyle = style; context.fill();
applyForm(context,ix+inner,iy+inner,iw-radius,ih-radius,inner);
style = context.createLinearGradient(0,inner,0,ih-radius);
style.addColorStop(0,'rgba('+ishinecol+','+(ishineopac*1.25)+')');
style.addColorStop(0.25,'rgba('+ishinecol+','+(ishineopac/1.5)+')');
style.addColorStop(1,'rgba('+ishinecol+',0)');
context.strokeStyle = style; context.lineWidth = Math.max(Math.round(iw/200),0.5); context.stroke();
applyFlex(context,ix+inner,iy+inner,iw-radius,ih-radius,inner,ishineopac,ishinecol);
}
canvas.style.visibility = 'visible';
}
}
}
if(window.addEventListener) window.addEventListener("load",addBevel,false);
else window.attachEvent("onload",addIEBevel);
function initMenus() {
$('ul.menu ul').hide();
$.each($('ul.menu'), function(){
$('ul.current_page_item').show();
});
$.each($('ul.menu'), function(){
$('#' + this.id + '.expandfirst ul.current_page_item').show();
});
$('ul.menu li a').click(
function() {
var checkElement = $(this).next();
var parent = this.parentNode.parentNode.id;
if($('#' + parent).hasClass('nixklappi') && this.href.substr(-1)!='#') {
window.location=this.href;
return false;
}
if($('#' + parent).hasClass('noaccordion')) {
$(this).next().slideToggle('normal');
return false;
}
if((checkElement.is('ul')) && (checkElement.is(':visible'))) {
if($('#' + parent).hasClass('collapsible')) {
$('#' + parent + ' ul:visible').slideUp('normal');
}
return false;
}
if((checkElement.is('ul')) && (!checkElement.is(':visible'))) {
$('#' + parent + ' ul:visible').slideUp('normal');
checkElement.slideDown('normal');
return false;
}
}
);
}
$(document).ready(function() {initMenus();});function testeSpezForm(id){
e=0;
$("#spezform_"+id+" .spezFormPflichtfeld").each(function(){
oncfunc=$(this).attr('onchange')+'';
if(oncfunc.search('spezFormEmail')!=-1 && !spezFormEmail($(this).val())){
e++;
}
switch($(this).attr('type')){
case 'text':
if($(this).val()=='') {
if(e==0) alert('Bitte prüfen Sie Ihre Textfeld Eingaben.');
e++;
}
break;
case 'textarea':
if($(this).val()=='') {
if(e==0) alert('Bitte prüfen Sie Ihre Freitext Eingaben.');
e++;
}
break;
case 'checkbox':
if( !$(this).attr('checked')) {
if(e==0) alert('Bitte prüfen Sie Ihre Häckchen.');
e++;
}
break;
}
});
if($('#captchaBox_'+id).length>0){
var captcha = $("#captchaInput"+id).val();
$.ajax({
url: '/includesOpen/captcha/checkCaptcha.php',
type: 'post',
data: {code: captcha},
success: function(data) {
if(data) {
alert(data);
e++;
}else {
if(e==0) {
document.getElementById('kontaktFormSpez'+id).action="/includesOpen/kontaktFormSpezTarget.php";
document.getElementById('kontaktFormSpez'+id).submit();
return true;
}
}
}
});
}else{
if(e==0) {
document.getElementById('kontaktFormSpez'+id).action="/includesOpen/kontaktFormSpezTarget.php";
document.getElementById('kontaktFormSpez'+id).submit();
return true;
}else{
return false;
}
}
return false;
}
function spezFormEmail(email){
var Country_Codes = new Array("AD","AE","AF","AG","AI","AL","AM","AN","AO","AQ","AR","AS","AT","AU","AW","AZ","BA","BB","BD","BE","BF","BG","BH","BI","BJ","BM","BN","BO","BR","BS","BT","BV","BW","BY","BZ","CA","CC","CF","CG","CH","CI","CK","CL","CM","CN","CO","CR","CS","CU","CV","CX","CY","CZ","DE","DJ","DK","DM","DO","DZ","EC","EE", "EG", "EH", "ER", "ES", "ET", "FI", "FJ", "FK", "FM", "FO", "FR", "FX", "GA", "GB", "GD", "GE", "GF", "GH", "GI","GL","GM","GN","GP","GQ","GR","GS","GT","GU","GW","GY","HK","HM","HN","HR","HT","HU","ID","IE","IL","IN","IO","IQ","IR","IS","IT","JM","JO","JP","KE","KG","KH","KI","KM","KN","KP","KR","KW","KY","KZ","LA","LB","LC","LI","LK","LR","LS","LT","LU","LV","LY", "MA", "MC", "MD", "MG", "MH", "MK", "ML", "MM", "MN", "MO", "MP", "MQ","MR", "MS", "MT", "MU", "MV", "MW", "MX", "MY", "MZ", "NA", "NC", "NE", "NF", "NG", "NI", "NL", "NO", "NP", "NR", "NT", "NU","NZ", "OM", "PA", "PE", "PF", "PG", "PH", "PK", "PL", "PM", "PN", "PR", "PT", "PW", "PY", "QA", "RE", "RO", "RU", "RW", "SA","Sb", "SC", "SD", "SE", "SG", "SH", "SI", "SJ", "SK", "SL", "SM", "SN", "SO", "SR", "ST", "SU", "SV", "SY", "SZ", "TC", "TD","TF", "TG", "TH", "TJ", "TK", "TM", "TN", "TO", "TP", "TR", "TT", "TV", "TW", "TZ", "UA", "UG", "UK", "UM", "US", "UY", "UZ","VA", "VC", "VE", "VG", "VI", "VN", "VU", "WF", "WS", "YE", "YT", "YU", "ZA", "ZM", "ZR", "ZW", "COM", "EDU", "GOV", "INT","MIL", "NET", "ORG", "ARPA", "NATO", "AERO", "BIZ", "COOP", "INFO", "MUSEUM", "NAME", "PRO");
if (email == ""){
alert('Eingabe Email ungültig');return false;
}else if (email.search(/^[A-Za-z0-9_\.\-\']+\@[A-Za-z0-9_\-]+\.[A-Za-z0-9_\.\-]+$/)  == -1){
alert('Eingabe Email ungültig');return false;
}else{
var i = 0;
while(i<email.length){
if(email.charAt(i) == '.'){
if(email.charAt(i+1) == '.'){
alert('Eingabe Email ungültig');return false;
}
}
i++;
}
var startPos = email.indexOf("@")+1;
i = startPos;
var endPos = "";
while(i<email.length){
if(email.charAt(i) == '.'){
endPos = i;
break;
}
i++;
}
var domainName = email.substring(startPos,endPos);
if (domainName.length < 2){
alert('Eingabe Email ungültig');return false;
}else{  
var flag = 0;
var topDomain = email;
while(topDomain.search(/[.]/) != -1){
topDomain = topDomain.substring(topDomain.indexOf(".")+1);
}
topDomain = topDomain .toUpperCase();
for(i=0;i<Country_Codes.length;i++){
if(Country_Codes[i]==topDomain){
flag = 1;
break;
}
}
if (flag == 0){
alert('Eingabe Email ungültig');return false;
}
}
}
return true;
}
;(function($){document.write("<style type='text/css'>.noscript{display:none}</style>");var ver='galleriffic-1.0';var galleryOffset=0;var galleries=[];var allImages=[];var historyCurrentHash;var historyBackStack;var historyForwardStack;var isFirst=false;var dontCheck=false;var isInitialized=false;function getHashFromString(hash){if(!hash)return-1;hash=hash.replace(/^.*#/,'');if(isNaN(hash))return-1;return(+hash);}
function getHash(){var hash=location.hash;return getHashFromString(hash);}
function registerGallery(gallery){galleries.push(gallery);galleryOffset+=gallery.data.length;}
function getGallery(hash){for(i=0;i<galleries.length;i++){var gallery=galleries[i];if(hash<(gallery.data.length+gallery.offset))
return gallery;}
return 0;}
function getIndex(gallery,hash){return hash-gallery.offset;}
function clickHandler(e,gallery,link){gallery.pause();if(!gallery.settings.enableHistory){var hash=getHashFromString(link.href);if(hash>=0){var index=getIndex(gallery,hash);if(index>=0)
gallery.goto(index);}
e.preventDefault();}}
function historyCallback(){var hash=getHash();if(hash<0)return;var gallery=getGallery(hash);if(!gallery)return;var index=hash-gallery.offset;gallery.goto(index);}
function historyInit(){if(isInitialized)return;isInitialized=true;var current_hash=location.hash;historyCurrentHash=current_hash;if($.browser.msie){if(historyCurrentHash==''){historyCurrentHash='#';}}else if($.browser.safari){historyBackStack=[];historyBackStack.length=history.length;historyForwardStack=[];isFirst=true;}
setInterval(function(){historyCheck();},100);}
function historyAddHistory(hash){historyBackStack.push(hash);historyForwardStack.length=0;isFirst=true;}
function historyCheck(){if($.browser.safari){if(!dontCheck){var historyDelta=history.length-historyBackStack.length;if(historyDelta){isFirst=false;if(historyDelta<0){for(var i=0;i<Math.abs(historyDelta);i++)historyForwardStack.unshift(historyBackStack.pop());}else{for(var i=0;i<historyDelta;i++)historyBackStack.push(historyForwardStack.shift());}
var cachedHash=historyBackStack[historyBackStack.length-1];if(cachedHash!=undefined){historyCurrentHash=location.hash;historyCallback();}}else if(historyBackStack[historyBackStack.length-1]==undefined&&!isFirst){historyCallback();isFirst=true;}}}else{var current_hash=location.hash;if(current_hash!=historyCurrentHash){historyCurrentHash=current_hash;historyCallback();}}}
var defaults={delay:3000,numThumbs:20,preloadAhead:40,enableTopPager:false,enableBottomPager:true,imageContainerSel:'',captionContainerSel:'',controlsContainerSel:'',loadingContainerSel:'',renderSSControls:true,renderNavControls:true,playLinkText:'Play',pauseLinkText:'Pause',prevLinkText:'Previous',nextLinkText:'Next',nextPageLinkText:'Next &rsaquo;',prevPageLinkText:'&lsaquo; Prev',enableHistory:false,autoStart:false,onChange:undefined,onTransitionOut:undefined,onTransitionIn:undefined,onPageTransitionOut:undefined,onPageTransitionIn:undefined};$.fn.galleriffic=function(thumbsContainerSel,settings){$.extend(this,{ver:function(){return ver;},initializeThumbs:function(){this.data=[];var gallery=this;this.$thumbsContainer.find('ul.thumbs > li').each(function(i){var $li=$(this);var $aThumb=$li.find('a.thumb');var hash=gallery.offset+i;gallery.data.push({title:$aThumb.attr('title'),slideUrl:$aThumb.attr('href'),caption:$li.find('.caption').remove(),hash:hash});$aThumb.attr('rel','history');$aThumb.attr('href','#'+hash);$aThumb.click(function(e){clickHandler(e,gallery,this);});});return this;},isPreloadComplete:false,preloadInit:function(){if(this.settings.preloadAhead==0)return this;this.preloadStartIndex=this.currentIndex;var nextIndex=this.getNextIndex(this.preloadStartIndex);return this.preloadRecursive(this.preloadStartIndex,nextIndex);},preloadRelocate:function(index){this.preloadStartIndex=index;return this;},preloadRecursive:function(startIndex,currentIndex){if(startIndex!=this.preloadStartIndex){var nextIndex=this.getNextIndex(this.preloadStartIndex);return this.preloadRecursive(this.preloadStartIndex,nextIndex);}
var gallery=this;var preloadCount=currentIndex-startIndex;if(preloadCount<0)
preloadCount=this.data.length-1-startIndex+currentIndex;if(this.settings.preloadAhead>=0&&preloadCount>this.settings.preloadAhead){setTimeout(function(){gallery.preloadRecursive(startIndex,currentIndex);},500);return this;}
var imageData=this.data[currentIndex];if(!imageData)
return this;if(imageData.image)
return this.preloadNext(startIndex,currentIndex);var image=new Image();image.onload=function(){imageData.image=this;gallery.preloadNext(startIndex,currentIndex);};image.alt=imageData.title;image.src=imageData.slideUrl;return this;},preloadNext:function(startIndex,currentIndex){var nextIndex=this.getNextIndex(currentIndex);if(nextIndex==startIndex){this.isPreloadComplete=true;}else{var gallery=this;setTimeout(function(){gallery.preloadRecursive(startIndex,nextIndex);},100);}
return this;},getNextIndex:function(index){var nextIndex=index+1;if(nextIndex>=this.data.length)
nextIndex=0;return nextIndex;},getPrevIndex:function(index){var prevIndex=index-1;if(prevIndex<0)
prevIndex=this.data.length-1;return prevIndex;},pause:function(){if(this.interval)
this.toggleSlideshow();return this;},play:function(){if(!this.interval)
this.toggleSlideshow();return this;},toggleSlideshow:function(){if(this.interval){clearInterval(this.interval);this.interval=0;if(this.$controlsContainer){this.$controlsContainer.find('div.ss-controls a').removeClass().addClass('play').attr('title',this.settings.playLinkText).attr('href','#play').html(this.settings.playLinkText);}}else{this.ssAdvance();var gallery=this;this.interval=setInterval(function(){gallery.ssAdvance();},this.settings.delay);if(this.$controlsContainer){this.$controlsContainer.find('div.ss-controls a').removeClass().addClass('pause').attr('title',this.settings.pauseLinkText).attr('href','#pause').html(this.settings.pauseLinkText);}}
return this;},ssAdvance:function(){var nextIndex=this.getNextIndex(this.currentIndex);var nextHash=this.data[nextIndex].hash;if(this.settings.enableHistory)
location.href='#'+nextHash;else
this.goto(nextIndex);return this;},goto:function(index){if(index<0)index=0;else if(index>=this.data.length)index=this.data.length-1;if(this.settings.onChange)
this.settings.onChange(this.currentIndex,index);this.currentIndex=index;this.preloadRelocate(index);return this.refresh();},refresh:function(){var imageData=this.data[this.currentIndex];if(!imageData)
return this;var isTransitioning=true;var gallery=this;var transitionOutCallback=function(){isTransitioning=false;if(gallery.$controlsContainer){gallery.$controlsContainer.find('div.nav-controls a.prev').attr('href','#'+gallery.data[gallery.getPrevIndex(gallery.currentIndex)].hash).end().find('div.nav-controls a.next').attr('href','#'+gallery.data[gallery.getNextIndex(gallery.currentIndex)].hash);}
var imageData=gallery.data[gallery.currentIndex];if(gallery.$captionContainer){gallery.$captionContainer.empty().append(imageData.caption);}
if(imageData.image){gallery.buildImage(imageData.image);}else{if(gallery.$loadingContainer){gallery.$loadingContainer.show();}}}
if(this.settings.onTransitionOut){this.settings.onTransitionOut(transitionOutCallback);}else{this.$transitionContainers.hide();transitionOutCallback();}
if(!imageData.image){var image=new Image();image.onload=function(){imageData.image=this;if(!isTransitioning){gallery.buildImage(imageData.image);}};image.alt=imageData.title;image.src=imageData.slideUrl;}
this.relocatePreload=true;return this.syncThumbs();},buildImage:function(image){if(this.$imageContainer){this.$imageContainer.empty();var gallery=this;var nextIndex=this.getNextIndex(this.currentIndex);if(this.$loadingContainer){this.$loadingContainer.hide();}
this.$imageContainer.append('<span class="image-wrapper"><a class="advance-link" rel="history" href="#'+this.data[nextIndex].hash+'" title="'+image.alt+'"></a></span>').find('a').append(image).click(function(e){clickHandler(e,gallery,this);});}
if(this.settings.onTransitionIn)
this.settings.onTransitionIn();else
this.$transitionContainers.show();return this;},syncThumbs:function(){if(this.$thumbsContainer){var page=Math.floor(this.currentIndex/this.settings.numThumbs);if(page!=this.currentPage){this.currentPage=page;this.updateThumbs();}
var $thumbs=this.$thumbsContainer.find('ul.thumbs').children();$thumbs.filter('.selected').removeClass('selected');$thumbs.eq(this.currentIndex).addClass('selected');}
return this;},updateThumbs:function(){var gallery=this;var transitionOutCallback=function(){gallery.rebuildThumbs();if(gallery.settings.onPageTransitionIn)
gallery.settings.onPageTransitionIn();else
gallery.$thumbsContainer.show();};if(this.settings.onPageTransitionOut){this.settings.onPageTransitionOut(transitionOutCallback);}else{this.$thumbsContainer.hide();transitionOutCallback();}
return this;},rebuildThumbs:function(){if(this.currentPage<0)
this.currentPage=0;var needsPagination=this.data.length>this.settings.numThumbs;var $topPager=this.$thumbsContainer.find('div.top');if($topPager.length==0)
$topPager=this.$thumbsContainer.prepend('<div class="top pagination"></div>').find('div.top');if(needsPagination&&this.settings.enableTopPager){$topPager.empty();this.buildPager($topPager);}
if(needsPagination&&this.settings.enableBottomPager){var $bottomPager=this.$thumbsContainer.find('div.bottom');if($bottomPager.length==0)
$bottomPager=this.$thumbsContainer.append('<div class="bottom pagination"></div>').find('div.bottom');else
$bottomPager.empty();this.buildPager($bottomPager);}
var startIndex=this.currentPage*this.settings.numThumbs;var stopIndex=startIndex+this.settings.numThumbs-1;if(stopIndex>=this.data.length)
stopIndex=this.data.length-1;var $thumbsUl=this.$thumbsContainer.find('ul.thumbs');$thumbsUl.find('li').each(function(i){var $li=$(this);if(i>=startIndex&&i<=stopIndex){$li.show();}else{$li.hide();}});$thumbsUl.removeClass('noscript');return this;},buildPager:function(pager){var gallery=this;var startIndex=this.currentPage*this.settings.numThumbs;if(this.currentPage>0){var prevPage=startIndex-this.settings.numThumbs;pager.append('<a rel="history" href="#'+this.data[prevPage].hash+'" title="'+this.settings.prevPageLinkText+'">'+this.settings.prevPageLinkText+'</a>');}
for(i=this.currentPage-3;i<=this.currentPage+3;i++){var pageNum=i+1;if(i==this.currentPage)
pager.append('<span class="current">'+pageNum+'</span>');else if(i>=0&&i<this.numPages){var imageIndex=i*this.settings.numThumbs;pager.append('<a rel="history" href="#'+this.data[imageIndex].hash+'" title="'+pageNum+'">'+pageNum+'</a>');}}
var nextPage=startIndex+this.settings.numThumbs;if(nextPage<this.data.length){pager.append('<a rel="history" href="#'+this.data[nextPage].hash+'" title="'+this.settings.nextPageLinkText+'">'+this.settings.nextPageLinkText+'</a>');}
pager.find('a').click(function(e){clickHandler(e,gallery,this);});return this;}});this.settings=$.extend({},defaults,settings);if(this.interval)
clearInterval(this.interval);this.interval=0;if(this.settings.imageContainerSel)this.$imageContainer=$(this.settings.imageContainerSel);if(this.settings.captionContainerSel)this.$captionContainer=$(this.settings.captionContainerSel);if(this.settings.loadingContainerSel)this.$loadingContainer=$(this.settings.loadingContainerSel);this.$transitionContainers=$([]);if(this.$imageContainer)
this.$transitionContainers=this.$transitionContainers.add(this.$imageContainer);if(this.$captionContainer)
this.$transitionContainers=this.$transitionContainers.add(this.$captionContainer);this.offset=galleryOffset;this.$thumbsContainer=$(thumbsContainerSel);this.initializeThumbs();registerGallery(this);this.numPages=Math.ceil(this.data.length/this.settings.numThumbs);this.currentPage=-1;this.currentIndex=0;var gallery=this;if(this.$loadingContainer)
this.$loadingContainer.hide();if(this.settings.controlsContainerSel){this.$controlsContainer=$(this.settings.controlsContainerSel).empty();if(this.settings.renderSSControls){if(this.settings.autoStart){this.$controlsContainer.append('<div class="ss-controls"><a href="#pause" class="pause" title="'+this.settings.pauseLinkText+'">'+this.settings.pauseLinkText+'</a></div>');}else{this.$controlsContainer.append('<div class="ss-controls"><a href="#play" class="play" title="'+this.settings.playLinkText+'">'+this.settings.playLinkText+'</a></div>');}
this.$controlsContainer.find('div.ss-controls a').click(function(e){gallery.toggleSlideshow();e.preventDefault();return false;});}
if(this.settings.renderNavControls){var $navControls=this.$controlsContainer.append('<div class="nav-controls"><a class="prev" rel="history" title="'+this.settings.prevLinkText+'">'+this.settings.prevLinkText+'</a><a class="next" rel="history" title="'+this.settings.nextLinkText+'">'+this.settings.nextLinkText+'</a></div>').find('div.nav-controls a').click(function(e){clickHandler(e,gallery,this);});}}
historyInit();var hash=getHash();var hashGallery=(hash>=0)?getGallery(hash):0;var gotoIndex=(hashGallery&&this==hashGallery)?(hash-this.offset):0;this.goto(gotoIndex);if(this.settings.autoStart){setTimeout(function(){gallery.play();},this.settings.delay);}
setTimeout(function(){gallery.preloadInit();},1000);return this;};})(jQuery);
(function(b){var m,u,x,g,D,i,z,A,B,p=0,e={},q=[],n=0,c={},j=[],E=null,s=new Image,G=/\.(jpg|gif|png|bmp|jpeg)(.*)?$/i,S=/[^\.]\.(swf)\s*$/i,H,I=1,k,l,h=false,y=b.extend(b("<div/>")[0],{prop:0}),v=0,O=!b.support.opacity&&!window.XMLHttpRequest,J=function(){u.hide();s.onerror=s.onload=null;E&&E.abort();m.empty()},P=function(){b.fancybox('<p id="fancybox_error">The requested content cannot be loaded.<br />Please try again later.</p>',{scrolling:"no",padding:20,transitionIn:"none",transitionOut:"none"})},
K=function(){return[b(window).width(),b(window).height(),b(document).scrollLeft(),b(document).scrollTop()]},T=function(){var a=K(),d={},f=c.margin,o=c.autoScale,t=(20+f)*2,w=(20+f)*2,r=c.padding*2;if(c.width.toString().indexOf("%")>-1){d.width=a[0]*parseFloat(c.width)/100-40;o=false}else d.width=c.width+r;if(c.height.toString().indexOf("%")>-1){d.height=a[1]*parseFloat(c.height)/100-40;o=false}else d.height=c.height+r;if(o&&(d.width>a[0]-t||d.height>a[1]-w))if(e.type=="image"||e.type=="swf"){t+=r;
w+=r;o=Math.min(Math.min(a[0]-t,c.width)/c.width,Math.min(a[1]-w,c.height)/c.height);d.width=Math.round(o*(d.width-r))+r;d.height=Math.round(o*(d.height-r))+r}else{d.width=Math.min(d.width,a[0]-t);d.height=Math.min(d.height,a[1]-w)}d.top=a[3]+(a[1]-(d.height+40))*0.5;d.left=a[2]+(a[0]-(d.width+40))*0.5;if(c.autoScale===false){d.top=Math.max(a[3]+f,d.top);d.left=Math.max(a[2]+f,d.left)}return d},U=function(a){if(a&&a.length)switch(c.titlePosition){case "inside":return a;case "over":return'<span id="fancybox-title-over">'+
a+"</span>";default:return'<span id="fancybox-title-wrap"><span id="fancybox-title-left"></span><span id="fancybox-title-main">'+a+'</span><span id="fancybox-title-right"></span></span>'}return false},V=function(){var a=c.title,d=l.width-c.padding*2,f="fancybox-title-"+c.titlePosition;b("#fancybox-title").remove();v=0;if(c.titleShow!==false){a=b.isFunction(c.titleFormat)?c.titleFormat(a,j,n,c):U(a);if(!(!a||a==="")){b('<div id="fancybox-title" class="'+f+'" />').css({width:d,paddingLeft:c.padding,
paddingRight:c.padding}).html(a).appendTo("body");switch(c.titlePosition){case "inside":v=b("#fancybox-title").outerHeight(true)-c.padding;l.height+=v;break;case "over":b("#fancybox-title").css("bottom",c.padding);break;default:b("#fancybox-title").css("bottom",b("#fancybox-title").outerHeight(true)*-1);break}b("#fancybox-title").appendTo(D).hide()}}},W=function(){b(document).unbind("keydown.fb").bind("keydown.fb",function(a){if(a.keyCode==27&&c.enableEscapeButton){a.preventDefault();b.fancybox.close()}else if(a.keyCode==
37){a.preventDefault();b.fancybox.prev()}else if(a.keyCode==39){a.preventDefault();b.fancybox.next()}});if(b.fn.mousewheel){g.unbind("mousewheel.fb");j.length>1&&g.bind("mousewheel.fb",function(a,d){a.preventDefault();h||d===0||(d>0?b.fancybox.prev():b.fancybox.next())})}if(c.showNavArrows){if(c.cyclic&&j.length>1||n!==0)A.show();if(c.cyclic&&j.length>1||n!=j.length-1)B.show()}},X=function(){var a,d;if(j.length-1>n){a=j[n+1].href;if(typeof a!=="undefined"&&a.match(G)){d=new Image;d.src=a}}if(n>0){a=
j[n-1].href;if(typeof a!=="undefined"&&a.match(G)){d=new Image;d.src=a}}},L=function(){i.css("overflow",c.scrolling=="auto"?c.type=="image"||c.type=="iframe"||c.type=="swf"?"hidden":"auto":c.scrolling=="yes"?"auto":"visible");if(!b.support.opacity){i.get(0).style.removeAttribute("filter");g.get(0).style.removeAttribute("filter")}b("#fancybox-title").show();c.hideOnContentClick&&i.one("click",b.fancybox.close);c.hideOnOverlayClick&&x.one("click",b.fancybox.close);c.showCloseButton&&z.show();W();b(window).bind("resize.fb",
b.fancybox.center);c.centerOnScroll?b(window).bind("scroll.fb",b.fancybox.center):b(window).unbind("scroll.fb");b.isFunction(c.onComplete)&&c.onComplete(j,n,c);h=false;X()},M=function(a){var d=Math.round(k.width+(l.width-k.width)*a),f=Math.round(k.height+(l.height-k.height)*a),o=Math.round(k.top+(l.top-k.top)*a),t=Math.round(k.left+(l.left-k.left)*a);g.css({width:d+"px",height:f+"px",top:o+"px",left:t+"px"});d=Math.max(d-c.padding*2,0);f=Math.max(f-(c.padding*2+v*a),0);i.css({width:d+"px",height:f+
"px"});if(typeof l.opacity!=="undefined")g.css("opacity",a<0.5?0.5:a)},Y=function(a){var d=a.offset();d.top+=parseFloat(a.css("paddingTop"))||0;d.left+=parseFloat(a.css("paddingLeft"))||0;d.top+=parseFloat(a.css("border-top-width"))||0;d.left+=parseFloat(a.css("border-left-width"))||0;d.width=a.width();d.height=a.height();return d},Q=function(){var a=e.orig?b(e.orig):false,d={};if(a&&a.length){a=Y(a);d={width:a.width+c.padding*2,height:a.height+c.padding*2,top:a.top-c.padding-20,left:a.left-c.padding-
20}}else{a=K();d={width:1,height:1,top:a[3]+a[1]*0.5,left:a[2]+a[0]*0.5}}return d},N=function(){u.hide();if(g.is(":visible")&&b.isFunction(c.onCleanup))if(c.onCleanup(j,n,c)===false){b.event.trigger("fancybox-cancel");h=false;return}j=q;n=p;c=e;i.get(0).scrollTop=0;i.get(0).scrollLeft=0;if(c.overlayShow){O&&b("select:not(#fancybox-tmp select)").filter(function(){return this.style.visibility!=="hidden"}).css({visibility:"hidden"}).one("fancybox-cleanup",function(){this.style.visibility="inherit"});
x.css({"background-color":c.overlayColor,opacity:c.overlayOpacity}).unbind().show()}l=T();V();if(g.is(":visible")){b(z.add(A).add(B)).hide();var a=g.position(),d;k={top:a.top,left:a.left,width:g.width(),height:g.height()};d=k.width==l.width&&k.height==l.height;i.fadeOut(c.changeFade,function(){var f=function(){i.html(m.contents()).fadeIn(c.changeFade,L)};b.event.trigger("fancybox-change");i.empty().css("overflow","hidden");if(d){i.css({top:c.padding,left:c.padding,width:Math.max(l.width-c.padding*
2,1),height:Math.max(l.height-c.padding*2-v,1)});f()}else{i.css({top:c.padding,left:c.padding,width:Math.max(k.width-c.padding*2,1),height:Math.max(k.height-c.padding*2,1)});y.prop=0;b(y).animate({prop:1},{duration:c.changeSpeed,easing:c.easingChange,step:M,complete:f})}})}else{g.css("opacity",1);if(c.transitionIn=="elastic"){k=Q();i.css({top:c.padding,left:c.padding,width:Math.max(k.width-c.padding*2,1),height:Math.max(k.height-c.padding*2,1)}).html(m.contents());g.css(k).show();if(c.opacity)l.opacity=
0;y.prop=0;b(y).animate({prop:1},{duration:c.speedIn,easing:c.easingIn,step:M,complete:L})}else{i.css({top:c.padding,left:c.padding,width:Math.max(l.width-c.padding*2,1),height:Math.max(l.height-c.padding*2-v,1)}).html(m.contents());g.css(l).fadeIn(c.transitionIn=="none"?0:c.speedIn,L)}}},F=function(){m.width(e.width);m.height(e.height);if(e.width=="auto")e.width=m.width();if(e.height=="auto")e.height=m.height();N()},Z=function(){h=true;e.width=s.width;e.height=s.height;b("<img />").attr({id:"fancybox-img",
src:s.src,alt:e.title}).appendTo(m);N()},C=function(){J();var a=q[p],d,f,o,t,w;e=b.extend({},b.fn.fancybox.defaults,typeof b(a).data("fancybox")=="undefined"?e:b(a).data("fancybox"));o=a.title||b(a).title||e.title||"";if(a.nodeName&&!e.orig)e.orig=b(a).children("img:first").length?b(a).children("img:first"):b(a);if(o===""&&e.orig)o=e.orig.attr("alt");d=a.nodeName&&/^(?:javascript|#)/i.test(a.href)?e.href||null:e.href||a.href||null;if(e.type){f=e.type;if(!d)d=e.content}else if(e.content)f="html";else if(d)if(d.match(G))f=
"image";else if(d.match(S))f="swf";else if(b(a).hasClass("iframe"))f="iframe";else if(d.match(/#/)){a=d.substr(d.indexOf("#"));f=b(a).length>0?"inline":"ajax"}else f="ajax";else f="inline";e.type=f;e.href=d;e.title=o;if(e.autoDimensions&&e.type!=="iframe"&&e.type!=="swf"){e.width="auto";e.height="auto"}if(e.modal){e.overlayShow=true;e.hideOnOverlayClick=false;e.hideOnContentClick=false;e.enableEscapeButton=false;e.showCloseButton=false}if(b.isFunction(e.onStart))if(e.onStart(q,p,e)===false){h=false;
return}m.css("padding",20+e.padding+e.margin);b(".fancybox-inline-tmp").unbind("fancybox-cancel").bind("fancybox-change",function(){b(this).replaceWith(i.children())});switch(f){case "html":m.html(e.content);F();break;case "inline":b('<div class="fancybox-inline-tmp" />').hide().insertBefore(b(a)).bind("fancybox-cleanup",function(){b(this).replaceWith(i.children())}).bind("fancybox-cancel",function(){b(this).replaceWith(m.children())});b(a).appendTo(m);F();break;case "image":h=false;b.fancybox.showActivity();
s=new Image;s.onerror=function(){P()};s.onload=function(){s.onerror=null;s.onload=null;Z()};s.src=d;break;case "swf":t='<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="'+e.width+'" height="'+e.height+'"><param name="movie" value="'+d+'"></param>';w="";b.each(e.swf,function(r,R){t+='<param name="'+r+'" value="'+R+'"></param>';w+=" "+r+'="'+R+'"'});t+='<embed src="'+d+'" type="application/x-shockwave-flash" width="'+e.width+'" height="'+e.height+'"'+w+"></embed></object>";m.html(t);
F();break;case "ajax":a=d.split("#",2);f=e.ajax.data||{};if(a.length>1){d=a[0];if(typeof f=="string")f+="&selector="+a[1];else f.selector=a[1]}h=false;b.fancybox.showActivity();E=b.ajax(b.extend(e.ajax,{url:d,data:f,error:P,success:function(r){if(E.status==200){m.html(r);F()}}}));break;case "iframe":b('<iframe id="fancybox-frame" name="fancybox-frame'+(new Date).getTime()+'" frameborder="0" hspace="0" scrolling="'+e.scrolling+'" src="'+e.href+'"></iframe>').appendTo(m);N();break}},$=function(){if(u.is(":visible")){b("div",
u).css("top",I*-40+"px");I=(I+1)%12}else clearInterval(H)},aa=function(){if(!b("#fancybox-wrap").length){b("body").append(m=b('<div id="fancybox-tmp"></div>'),u=b('<div id="fancybox-loading"><div></div></div>'),x=b('<div id="fancybox-overlay"></div>'),g=b('<div id="fancybox-wrap"></div>'));if(!b.support.opacity){g.addClass("fancybox-ie");u.addClass("fancybox-ie")}D=b('<div id="fancybox-outer"></div>').append('<div class="fancy-bg" id="fancy-bg-n"></div><div class="fancy-bg" id="fancy-bg-ne"></div><div class="fancy-bg" id="fancy-bg-e"></div><div class="fancy-bg" id="fancy-bg-se"></div><div class="fancy-bg" id="fancy-bg-s"></div><div class="fancy-bg" id="fancy-bg-sw"></div><div class="fancy-bg" id="fancy-bg-w"></div><div class="fancy-bg" id="fancy-bg-nw"></div>').appendTo(g);
D.append(i=b('<div id="fancybox-inner"></div>'),z=b('<a id="fancybox-close"></a>'),A=b('<a href="javascript:;" id="fancybox-left"><span class="fancy-ico" id="fancybox-left-ico"></span></a>'),B=b('<a href="javascript:;" id="fancybox-right"><span class="fancy-ico" id="fancybox-right-ico"></span></a>'));z.click(b.fancybox.close);u.click(b.fancybox.cancel);A.click(function(a){a.preventDefault();b.fancybox.prev()});B.click(function(a){a.preventDefault();b.fancybox.next()});if(O){x.get(0).style.setExpression("height",
"document.body.scrollHeight > document.body.offsetHeight ? document.body.scrollHeight : document.body.offsetHeight + 'px'");u.get(0).style.setExpression("top","(-20 + (document.documentElement.clientHeight ? document.documentElement.clientHeight/2 : document.body.clientHeight/2 ) + ( ignoreMe = document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop )) + 'px'");D.prepend('<iframe id="fancybox-hide-sel-frame" src="javascript:\'\';" scrolling="no" frameborder="0" ></iframe>')}}};
b.fn.fancybox=function(a){b(this).data("fancybox",b.extend({},a,b.metadata?b(this).metadata():{})).unbind("click.fb").bind("click.fb",function(d){d.preventDefault();if(!h){h=true;b(this).blur();q=[];p=0;d=b(this).attr("rel")||"";if(!d||d==""||d==="nofollow")q.push(this);else{q=b("a[rel="+d+"], area[rel="+d+"]");p=q.index(this)}C();return false}});return this};b.fancybox=function(a,d){if(!h){h=true;d=typeof d!=="undefined"?d:{};q=[];p=d.index||0;if(b.isArray(a)){for(var f=0,o=a.length;f<o;f++)if(typeof a[f]==
"object")b(a[f]).data("fancybox",b.extend({},d,a[f]));else a[f]=b({}).data("fancybox",b.extend({content:a[f]},d));q=jQuery.merge(q,a)}else{if(typeof a=="object")b(a).data("fancybox",b.extend({},d,a));else a=b({}).data("fancybox",b.extend({content:a},d));q.push(a)}if(p>q.length||p<0)p=0;C()}};b.fancybox.showActivity=function(){clearInterval(H);u.show();H=setInterval($,66)};b.fancybox.hideActivity=function(){u.hide()};b.fancybox.next=function(){return b.fancybox.pos(n+1)};b.fancybox.prev=function(){return b.fancybox.pos(n-
1)};b.fancybox.pos=function(a){if(!h){a=parseInt(a,10);if(a>-1&&j.length>a){p=a;C()}if(c.cyclic&&j.length>1&&a<0){p=j.length-1;C()}if(c.cyclic&&j.length>1&&a>=j.length){p=0;C()}}};b.fancybox.cancel=function(){if(!h){h=true;b.event.trigger("fancybox-cancel");J();e&&b.isFunction(e.onCancel)&&e.onCancel(q,p,e);h=false}};b.fancybox.close=function(){function a(){x.fadeOut("fast");g.hide();b.event.trigger("fancybox-cleanup");i.empty();b.isFunction(c.onClosed)&&c.onClosed(j,n,c);j=e=[];n=p=0;c=e={};h=false}
if(!(h||g.is(":hidden"))){h=true;if(c&&b.isFunction(c.onCleanup))if(c.onCleanup(j,n,c)===false){h=false;return}J();b(z.add(A).add(B)).hide();b("#fancybox-title").remove();g.add(i).add(x).unbind();b(window).unbind("resize.fb scroll.fb");b(document).unbind("keydown.fb");i.css("overflow","hidden");if(c.transitionOut=="elastic"){k=Q();var d=g.position();l={top:d.top,left:d.left,width:g.width(),height:g.height()};if(c.opacity)l.opacity=1;y.prop=1;b(y).animate({prop:0},{duration:c.speedOut,easing:c.easingOut,
step:M,complete:a})}else g.fadeOut(c.transitionOut=="none"?0:c.speedOut,a)}};b.fancybox.resize=function(){var a,d;if(!(h||g.is(":hidden"))){h=true;a=i.wrapInner("<div style='overflow:auto'></div>").children();d=a.height();g.css({height:d+c.padding*2+v});i.css({height:d});a.replaceWith(a.children());b.fancybox.center()}};b.fancybox.center=function(){h=true;var a=K(),d=c.margin,f={};f.top=a[3]+(a[1]-(g.height()-v+40))*0.5;f.left=a[2]+(a[0]-(g.width()+40))*0.5;f.top=Math.max(a[3]+d,f.top);f.left=Math.max(a[2]+
d,f.left);g.css(f);h=false};b.fn.fancybox.defaults={padding:10,margin:20,opacity:false,modal:false,cyclic:false,scrolling:"auto",width:560,height:340,autoScale:true,autoDimensions:true,centerOnScroll:false,ajax:{},swf:{wmode:"transparent"},hideOnOverlayClick:true,hideOnContentClick:false,overlayShow:true,overlayOpacity:0.3,overlayColor:"#666",titleShow:true,titlePosition:"outside",titleFormat:null,transitionIn:"fade",transitionOut:"fade",speedIn:300,speedOut:300,changeSpeed:300,changeFade:"fast",
easingIn:"swing",easingOut:"swing",showCloseButton:true,showNavArrows:true,enableEscapeButton:true,onStart:null,onCancel:null,onComplete:null,onCleanup:null,onClosed:null};b(document).ready(function(){aa()})})(jQuery);
