/* * jQuery JavaScript Library v1.3.1 * http://jquery.com/ * * Copyright (c) 2009 John Resig * Dual licensed under the MIT and GPL licenses. * http://docs.jquery.com/License * * Date: 2009-01-21 20:42:16 -0500 (Wed, 21 Jan 2009) * Revision: 6158 */ (function(){var l=this,g,y=l.jQuery,p=l.$,o=l.jQuery=l.$=function(E,F){return new o.fn.init(E,F)},D=/^[^<]*(<(.|\s)+>)[^>]*$|^#([\w-]+)$/,f=/^.[^:#\[\.,]*$/;o.fn=o.prototype={init:function(E,H){E=E||document;if(E.nodeType){this[0]=E;this.length=1;this.context=E;return this}if(typeof E==="string"){var G=D.exec(E);if(G&&(G[1]||!H)){if(G[1]){E=o.clean([G[1]],H)}else{var I=document.getElementById(G[3]);if(I&&I.id!=G[3]){return o().find(E)}var F=o(I||[]);F.context=document;F.selector=E;return F}}else{return o(H).find(E)}}else{if(o.isFunction(E)){return o(document).ready(E)}}if(E.selector&&E.context){this.selector=E.selector;this.context=E.context}return this.setArray(o.makeArray(E))},selector:"",jquery:"1.3.1",size:function(){return this.length},get:function(E){return E===g?o.makeArray(this):this[E]},pushStack:function(F,H,E){var G=o(F);G.prevObject=this;G.context=this.context;if(H==="find"){G.selector=this.selector+(this.selector?" ":"")+E}else{if(H){G.selector=this.selector+"."+H+"("+E+")"}}return G},setArray:function(E){this.length=0;Array.prototype.push.apply(this,E);return this},each:function(F,E){return o.each(this,F,E)},index:function(E){return o.inArray(E&&E.jquery?E[0]:E,this)},attr:function(F,H,G){var E=F;if(typeof F==="string"){if(H===g){return this[0]&&o[G||"attr"](this[0],F)}else{E={};E[F]=H}}return this.each(function(I){for(F in E){o.attr(G?this.style:this,F,o.prop(this,E[F],G,I,F))}})},css:function(E,F){if((E=="width"||E=="height")&&parseFloat(F)<0){F=g}return this.attr(E,F,"curCSS")},text:function(F){if(typeof F!=="object"&&F!=null){return this.empty().append((this[0]&&this[0].ownerDocument||document).createTextNode(F))}var E="";o.each(F||this,function(){o.each(this.childNodes,function(){if(this.nodeType!=8){E+=this.nodeType!=1?this.nodeValue:o.fn.text([this])}})});return E},wrapAll:function(E){if(this[0]){var F=o(E,this[0].ownerDocument).clone();if(this[0].parentNode){F.insertBefore(this[0])}F.map(function(){var G=this;while(G.firstChild){G=G.firstChild}return G}).append(this)}return this},wrapInner:function(E){return this.each(function(){o(this).contents().wrapAll(E)})},wrap:function(E){return this.each(function(){o(this).wrapAll(E)})},append:function(){return this.domManip(arguments,true,function(E){if(this.nodeType==1){this.appendChild(E)}})},prepend:function(){return this.domManip(arguments,true,function(E){if(this.nodeType==1){this.insertBefore(E,this.firstChild)}})},before:function(){return this.domManip(arguments,false,function(E){this.parentNode.insertBefore(E,this)})},after:function(){return this.domManip(arguments,false,function(E){this.parentNode.insertBefore(E,this.nextSibling)})},end:function(){return this.prevObject||o([])},push:[].push,find:function(E){if(this.length===1&&!/,/.test(E)){var G=this.pushStack([],"find",E);G.length=0;o.find(E,this[0],G);return G}else{var F=o.map(this,function(H){return o.find(E,H)});return this.pushStack(/[^+>] [^+>]/.test(E)?o.unique(F):F,"find",E)}},clone:function(F){var E=this.map(function(){if(!o.support.noCloneEvent&&!o.isXMLDoc(this)){var I=this.cloneNode(true),H=document.createElement("div");H.appendChild(I);return o.clean([H.innerHTML])[0]}else{return this.cloneNode(true)}});var G=E.find("*").andSelf().each(function(){if(this[h]!==g){this[h]=null}});if(F===true){this.find("*").andSelf().each(function(I){if(this.nodeType==3){return}var H=o.data(this,"events");for(var K in H){for(var J in H[K]){o.event.add(G[I],K,H[K][J],H[K][J].data)}}})}return E},filter:function(E){return this.pushStack(o.isFunction(E)&&o.grep(this,function(G,F){return E.call(G,F)})||o.multiFilter(E,o.grep(this,function(F){return F.nodeType===1})),"filter",E)},closest:function(E){var F=o.expr.match.POS.test(E)?o(E):null;return this.map(function(){var G=this;while(G&&G.ownerDocument){if(F?F.index(G)>-1:o(G).is(E)){return G}G=G.parentNode}})},not:function(E){if(typeof E==="string"){if(f.test(E)){return this.pushStack(o.multiFilter(E,this,true),"not",E)}else{E=o.multiFilter(E,this)}}var F=E.length&&E[E.length-1]!==g&&!E.nodeType;return this.filter(function(){return F?o.inArray(this,E)<0:this!=E})},add:function(E){return this.pushStack(o.unique(o.merge(this.get(),typeof E==="string"?o(E):o.makeArray(E))))},is:function(E){return !!E&&o.multiFilter(E,this).length>0},hasClass:function(E){return !!E&&this.is("."+E)},val:function(K){if(K===g){var E=this[0];if(E){if(o.nodeName(E,"option")){return(E.attributes.value||{}).specified?E.value:E.text}if(o.nodeName(E,"select")){var I=E.selectedIndex,L=[],M=E.options,H=E.type=="select-one";if(I<0){return null}for(var F=H?I:0,J=H?I+1:M.length;F=0||o.inArray(this.name,K)>=0)}else{if(o.nodeName(this,"select")){var N=o.makeArray(K);o("option",this).each(function(){this.selected=(o.inArray(this.value,N)>=0||o.inArray(this.text,N)>=0)});if(!N.length){this.selectedIndex=-1}}else{this.value=K}}})},html:function(E){return E===g?(this[0]?this[0].innerHTML:null):this.empty().append(E)},replaceWith:function(E){return this.after(E).remove()},eq:function(E){return this.slice(E,+E+1)},slice:function(){return this.pushStack(Array.prototype.slice.apply(this,arguments),"slice",Array.prototype.slice.call(arguments).join(","))},map:function(E){return this.pushStack(o.map(this,function(G,F){return E.call(G,F,G)}))},andSelf:function(){return this.add(this.prevObject)},domManip:function(K,N,M){if(this[0]){var J=(this[0].ownerDocument||this[0]).createDocumentFragment(),G=o.clean(K,(this[0].ownerDocument||this[0]),J),I=J.firstChild,E=this.length>1?J.cloneNode(true):J;if(I){for(var H=0,F=this.length;H0?E.cloneNode(true):J)}}if(G){o.each(G,z)}}return this;function L(O,P){return N&&o.nodeName(O,"table")&&o.nodeName(P,"tr")?(O.getElementsByTagName("tbody")[0]||O.appendChild(O.ownerDocument.createElement("tbody"))):O}}};o.fn.init.prototype=o.fn;function z(E,F){if(F.src){o.ajax({url:F.src,async:false,dataType:"script"})}else{o.globalEval(F.text||F.textContent||F.innerHTML||"")}if(F.parentNode){F.parentNode.removeChild(F)}}function e(){return +new Date}o.extend=o.fn.extend=function(){var J=arguments[0]||{},H=1,I=arguments.length,E=false,G;if(typeof J==="boolean"){E=J;J=arguments[1]||{};H=2}if(typeof J!=="object"&&!o.isFunction(J)){J={}}if(I==H){J=this;--H}for(;H-1}},swap:function(H,G,I){var E={};for(var F in G){E[F]=H.style[F];H.style[F]=G[F]}I.call(H);for(var F in G){H.style[F]=E[F]}},css:function(G,E,I){if(E=="width"||E=="height"){var K,F={position:"absolute",visibility:"hidden",display:"block"},J=E=="width"?["Left","Right"]:["Top","Bottom"];function H(){K=E=="width"?G.offsetWidth:G.offsetHeight;var M=0,L=0;o.each(J,function(){M+=parseFloat(o.curCSS(G,"padding"+this,true))||0;L+=parseFloat(o.curCSS(G,"border"+this+"Width",true))||0});K-=Math.round(M+L)}if(o(G).is(":visible")){H()}else{o.swap(G,F,H)}return Math.max(0,K)}return o.curCSS(G,E,I)},curCSS:function(I,F,G){var L,E=I.style;if(F=="opacity"&&!o.support.opacity){L=o.attr(E,"opacity");return L==""?"1":L}if(F.match(/float/i)){F=w}if(!G&&E&&E[F]){L=E[F]}else{if(q.getComputedStyle){if(F.match(/float/i)){F="float"}F=F.replace(/([A-Z])/g,"-$1").toLowerCase();var M=q.getComputedStyle(I,null);if(M){L=M.getPropertyValue(F)}if(F=="opacity"&&L==""){L="1"}}else{if(I.currentStyle){var J=F.replace(/\-(\w)/g,function(N,O){return O.toUpperCase()});L=I.currentStyle[F]||I.currentStyle[J];if(!/^\d+(px)?$/i.test(L)&&/^\d/.test(L)){var H=E.left,K=I.runtimeStyle.left;I.runtimeStyle.left=I.currentStyle.left;E.left=L||0;L=E.pixelLeft+"px";E.left=H;I.runtimeStyle.left=K}}}}return L},clean:function(F,K,I){K=K||document;if(typeof K.createElement==="undefined"){K=K.ownerDocument||K[0]&&K[0].ownerDocument||document}if(!I&&F.length===1&&typeof F[0]==="string"){var H=/^<(\w+)\s*\/?>$/.exec(F[0]);if(H){return[K.createElement(H[1])]}}var G=[],E=[],L=K.createElement("div");o.each(F,function(P,R){if(typeof R==="number"){R+=""}if(!R){return}if(typeof R==="string"){R=R.replace(/(<(\w+)[^>]*?)\/>/g,function(T,U,S){return S.match(/^(abbr|br|col|img|input|link|meta|param|hr|area|embed)$/i)?T:U+">"});var O=o.trim(R).toLowerCase();var Q=!O.indexOf("",""]||!O.indexOf("",""]||O.match(/^<(thead|tbody|tfoot|colg|cap)/)&&[1,"","
"]||!O.indexOf("",""]||(!O.indexOf("",""]||!O.indexOf("",""]||!o.support.htmlSerialize&&[1,"div
","
"]||[0,"",""];L.innerHTML=Q[1]+R+Q[2];while(Q[0]--){L=L.lastChild}if(!o.support.tbody){var N=!O.indexOf(""&&O.indexOf("=0;--M){if(o.nodeName(N[M],"tbody")&&!N[M].childNodes.length){N[M].parentNode.removeChild(N[M])}}}if(!o.support.leadingWhitespace&&/^\s/.test(R)){L.insertBefore(K.createTextNode(R.match(/^\s*/)[0]),L.firstChild)}R=o.makeArray(L.childNodes)}if(R.nodeType){G.push(R)}else{G=o.merge(G,R)}});if(I){for(var J=0;G[J];J++){if(o.nodeName(G[J],"script")&&(!G[J].type||G[J].type.toLowerCase()==="text/javascript")){E.push(G[J].parentNode?G[J].parentNode.removeChild(G[J]):G[J])}else{if(G[J].nodeType===1){G.splice.apply(G,[J+1,0].concat(o.makeArray(G[J].getElementsByTagName("script"))))}I.appendChild(G[J])}}return E}return G},attr:function(J,G,K){if(!J||J.nodeType==3||J.nodeType==8){return g}var H=!o.isXMLDoc(J),L=K!==g;G=H&&o.props[G]||G;if(J.tagName){var F=/href|src|style/.test(G);if(G=="selected"&&J.parentNode){J.parentNode.selectedIndex}if(G in J&&H&&!F){if(L){if(G=="type"&&o.nodeName(J,"input")&&J.parentNode){throw"type property can't be changed"}J[G]=K}if(o.nodeName(J,"form")&&J.getAttributeNode(G)){return J.getAttributeNode(G).nodeValue}if(G=="tabIndex"){var I=J.getAttributeNode("tabIndex");return I&&I.specified?I.value:J.nodeName.match(/(button|input|object|select|textarea)/i)?0:J.nodeName.match(/^(a|area)$/i)&&J.href?0:g}return J[G]}if(!o.support.style&&H&&G=="style"){return o.attr(J.style,"cssText",K)}if(L){J.setAttribute(G,""+K)}var E=!o.support.hrefNormalized&&H&&F?J.getAttribute(G,2):J.getAttribute(G);return E===null?g:E}if(!o.support.opacity&&G=="opacity"){if(L){J.zoom=1;J.filter=(J.filter||"").replace(/alpha\([^)]*\)/,"")+(parseInt(K)+""=="NaN"?"":"alpha(opacity="+K*100+")")}return J.filter&&J.filter.indexOf("opacity=")>=0?(parseFloat(J.filter.match(/opacity=([^)]*)/)[1])/100)+"":""}G=G.replace(/-([a-z])/ig,function(M,N){return N.toUpperCase()});if(L){J[G]=K}return J[G]},trim:function(E){return(E||"").replace(/^\s+|\s+$/g,"")},makeArray:function(G){var E=[];if(G!=null){var F=G.length;if(F==null||typeof G==="string"||o.isFunction(G)||G.setInterval){E[0]=G}else{while(F){E[--F]=G[F]}}}return E},inArray:function(G,H){for(var E=0,F=H.length;E*",this).remove();while(this.firstChild){this.removeChild(this.firstChild)}}},function(E,F){o.fn[E]=function(){return this.each(F,arguments)}});function j(E,F){return E[0]&&parseInt(o.curCSS(E[0],F,true),10)||0}var h="jQuery"+e(),v=0,A={};o.extend({cache:{},data:function(F,E,G){F=F==l?A:F;var H=F[h];if(!H){H=F[h]=++v}if(E&&!o.cache[H]){o.cache[H]={}}if(G!==g){o.cache[H][E]=G}return E?o.cache[H][E]:H},removeData:function(F,E){F=F==l?A:F;var H=F[h];if(E){if(o.cache[H]){delete o.cache[H][E];E="";for(E in o.cache[H]){break}if(!E){o.removeData(F)}}}else{try{delete F[h]}catch(G){if(F.removeAttribute){F.removeAttribute(h)}}delete o.cache[H]}},queue:function(F,E,H){if(F){E=(E||"fx")+"queue";var G=o.data(F,E);if(!G||o.isArray(H)){G=o.data(F,E,o.makeArray(H))}else{if(H){G.push(H)}}}return G},dequeue:function(H,G){var E=o.queue(H,G),F=E.shift();if(!G||G==="fx"){F=E[0]}if(F!==g){F.call(H)}}});o.fn.extend({data:function(E,G){var H=E.split(".");H[1]=H[1]?"."+H[1]:"";if(G===g){var F=this.triggerHandler("getData"+H[1]+"!",[H[0]]);if(F===g&&this.length){F=o.data(this[0],E)}return F===g&&H[1]?this.data(H[0]):F}else{return this.trigger("setData"+H[1]+"!",[H[0],G]).each(function(){o.data(this,E,G)})}},removeData:function(E){return this.each(function(){o.removeData(this,E)})},queue:function(E,F){if(typeof E!=="string"){F=E;E="fx"}if(F===g){return o.queue(this[0],E)}return this.each(function(){var G=o.queue(this,E,F);if(E=="fx"&&G.length==1){G[0].call(this)}})},dequeue:function(E){return this.each(function(){o.dequeue(this,E)})}}); /* * Sizzle CSS Selector Engine - v0.9.3 * Copyright 2009, The Dojo Foundation * Released under the MIT, BSD, and GPL Licenses. * More information: http://sizzlejs.com/ */ (function(){var Q=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]+['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[]+)+|[>+~])(\s*,\s*)?/g,K=0,G=Object.prototype.toString;var F=function(X,T,aa,ab){aa=aa||[];T=T||document;if(T.nodeType!==1&&T.nodeType!==9){return[]}if(!X||typeof X!=="string"){return aa}var Y=[],V,ae,ah,S,ac,U,W=true;Q.lastIndex=0;while((V=Q.exec(X))!==null){Y.push(V[1]);if(V[2]){U=RegExp.rightContext;break}}if(Y.length>1&&L.exec(X)){if(Y.length===2&&H.relative[Y[0]]){ae=I(Y[0]+Y[1],T)}else{ae=H.relative[Y[0]]?[T]:F(Y.shift(),T);while(Y.length){X=Y.shift();if(H.relative[X]){X+=Y.shift()}ae=I(X,ae)}}}else{var ad=ab?{expr:Y.pop(),set:E(ab)}:F.find(Y.pop(),Y.length===1&&T.parentNode?T.parentNode:T,P(T));ae=F.filter(ad.expr,ad.set);if(Y.length>0){ah=E(ae)}else{W=false}while(Y.length){var ag=Y.pop(),af=ag;if(!H.relative[ag]){ag=""}else{af=Y.pop()}if(af==null){af=T}H.relative[ag](ah,af,P(T))}}if(!ah){ah=ae}if(!ah){throw"Syntax error, unrecognized expression: "+(ag||X)}if(G.call(ah)==="[object Array]"){if(!W){aa.push.apply(aa,ah)}else{if(T.nodeType===1){for(var Z=0;ah[Z]!=null;Z++){if(ah[Z]&&(ah[Z]===true||ah[Z].nodeType===1&&J(T,ah[Z]))){aa.push(ae[Z])}}}else{for(var Z=0;ah[Z]!=null;Z++){if(ah[Z]&&ah[Z].nodeType===1){aa.push(ae[Z])}}}}}else{E(ah,aa)}if(U){F(U,T,aa,ab)}return aa};F.matches=function(S,T){return F(S,null,null,T)};F.find=function(Z,S,aa){var Y,W;if(!Z){return[]}for(var V=0,U=H.order.length;V":function(X,T,Y){if(typeof T==="string"&&!/\W/.test(T)){T=Y?T:T.toUpperCase();for(var U=0,S=X.length;U=0){if(!U){S.push(X)}}else{if(U){T[W]=false}}}}return false},ID:function(S){return S[1].replace(/\\/g,"")},TAG:function(T,S){for(var U=0;S[U]===false;U++){}return S[U]&&P(S[U])?T[1]:T[1].toUpperCase()},CHILD:function(S){if(S[1]=="nth"){var T=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(S[2]=="even"&&"2n"||S[2]=="odd"&&"2n+1"||!/\D/.test(S[2])&&"0n+"+S[2]||S[2]);S[2]=(T[1]+(T[2]||1))-0;S[3]=T[3]-0}S[0]="done"+(K++);return S},ATTR:function(T){var S=T[1].replace(/\\/g,"");if(H.attrMap[S]){T[1]=H.attrMap[S]}if(T[2]==="~="){T[4]=" "+T[4]+" "}return T},PSEUDO:function(W,T,U,S,X){if(W[1]==="not"){if(W[3].match(Q).length>1){W[3]=F(W[3],null,null,T)}else{var V=F.filter(W[3],T,U,true^X);if(!U){S.push.apply(S,V)}return false}}else{if(H.match.POS.test(W[0])){return true}}return W},POS:function(S){S.unshift(true);return S}},filters:{enabled:function(S){return S.disabled===false&&S.type!=="hidden"},disabled:function(S){return S.disabled===true},checked:function(S){return S.checked===true},selected:function(S){S.parentNode.selectedIndex;return S.selected===true},parent:function(S){return !!S.firstChild},empty:function(S){return !S.firstChild},has:function(U,T,S){return !!F(S[3],U).length},header:function(S){return/h\d/i.test(S.nodeName)},text:function(S){return"text"===S.type},radio:function(S){return"radio"===S.type},checkbox:function(S){return"checkbox"===S.type},file:function(S){return"file"===S.type},password:function(S){return"password"===S.type},submit:function(S){return"submit"===S.type},image:function(S){return"image"===S.type},reset:function(S){return"reset"===S.type},button:function(S){return"button"===S.type||S.nodeName.toUpperCase()==="BUTTON"},input:function(S){return/input|select|textarea|button/i.test(S.nodeName)}},setFilters:{first:function(T,S){return S===0},last:function(U,T,S,V){return T===V.length-1},even:function(T,S){return S%2===0},odd:function(T,S){return S%2===1},lt:function(U,T,S){return TS[3]-0},nth:function(U,T,S){return S[3]-0==T},eq:function(U,T,S){return S[3]-0==T}},filter:{CHILD:function(S,V){var Y=V[1],Z=S.parentNode;var X=V[0];if(Z&&(!Z[X]||!S.nodeIndex)){var W=1;for(var T=Z.firstChild;T;T=T.nextSibling){if(T.nodeType==1){T.nodeIndex=W++}}Z[X]=W-1}if(Y=="first"){return S.nodeIndex==1}else{if(Y=="last"){return S.nodeIndex==Z[X]}else{if(Y=="only"){return Z[X]==1}else{if(Y=="nth"){var ab=false,U=V[2],aa=V[3];if(U==1&&aa==0){return true}if(U==0){if(S.nodeIndex==aa){ab=true}}else{if((S.nodeIndex-aa)%U==0&&(S.nodeIndex-aa)/U>=0){ab=true}}return ab}}}}},PSEUDO:function(Y,U,V,Z){var T=U[1],W=H.filters[T];if(W){return W(Y,V,U,Z)}else{if(T==="contains"){return(Y.textContent||Y.innerText||"").indexOf(U[3])>=0}else{if(T==="not"){var X=U[3];for(var V=0,S=X.length;V=0:V==="~="?(" "+X+" ").indexOf(T)>=0:!U[4]?S:V==="!="?X!=T:V==="^="?X.indexOf(T)===0:V==="$="?X.substr(X.length-T.length)===T:V==="|="?X===T||X.substr(0,T.length+1)===T+"-":false},POS:function(W,T,U,X){var S=T[2],V=H.setFilters[S];if(V){return V(W,U,T,X)}}}};var L=H.match.POS;for(var N in H.match){H.match[N]=RegExp(H.match[N].source+/(?![^\[]*\])(?![^\(]*\))/.source)}var E=function(T,S){T=Array.prototype.slice.call(T);if(S){S.push.apply(S,T);return S}return T};try{Array.prototype.slice.call(document.documentElement.childNodes)}catch(M){E=function(W,V){var T=V||[];if(G.call(W)==="[object Array]"){Array.prototype.push.apply(T,W)}else{if(typeof W.length==="number"){for(var U=0,S=W.length;U";var S=document.documentElement;S.insertBefore(T,S.firstChild);if(!!document.getElementById(U)){H.find.ID=function(W,X,Y){if(typeof X.getElementById!=="undefined"&&!Y){var V=X.getElementById(W[1]);return V?V.id===W[1]||typeof V.getAttributeNode!=="undefined"&&V.getAttributeNode("id").nodeValue===W[1]?[V]:g:[]}};H.filter.ID=function(X,V){var W=typeof X.getAttributeNode!=="undefined"&&X.getAttributeNode("id");return X.nodeType===1&&W&&W.nodeValue===V}}S.removeChild(T)})();(function(){var S=document.createElement("div");S.appendChild(document.createComment(""));if(S.getElementsByTagName("*").length>0){H.find.TAG=function(T,X){var W=X.getElementsByTagName(T[1]);if(T[1]==="*"){var V=[];for(var U=0;W[U];U++){if(W[U].nodeType===1){V.push(W[U])}}W=V}return W}}S.innerHTML="";if(S.firstChild&&S.firstChild.getAttribute("href")!=="#"){H.attrHandle.href=function(T){return T.getAttribute("href",2)}}})();if(document.querySelectorAll){(function(){var S=F,T=document.createElement("div");T.innerHTML="

";if(T.querySelectorAll&&T.querySelectorAll(".TEST").length===0){return}F=function(X,W,U,V){W=W||document;if(!V&&W.nodeType===9&&!P(W)){try{return E(W.querySelectorAll(X),U)}catch(Y){}}return S(X,W,U,V)};F.find=S.find;F.filter=S.filter;F.selectors=S.selectors;F.matches=S.matches})()}if(document.getElementsByClassName&&document.documentElement.getElementsByClassName){H.order.splice(1,0,"CLASS");H.find.CLASS=function(S,T){return T.getElementsByClassName(S[1])}}function O(T,Z,Y,ac,aa,ab){for(var W=0,U=ac.length;W0){W=S;break}}}S=S[T]}ab[V]=W}}}var J=document.compareDocumentPosition?function(T,S){return T.compareDocumentPosition(S)&16}:function(T,S){return T!==S&&(T.contains?T.contains(S):true)};var P=function(S){return S.nodeType===9&&S.documentElement.nodeName!=="HTML"||!!S.ownerDocument&&P(S.ownerDocument)};var I=function(S,Z){var V=[],W="",X,U=Z.nodeType?[Z]:Z;while((X=H.match.PSEUDO.exec(S))){W+=X[0];S=S.replace(H.match.PSEUDO,"")}S=H.relative[S]?S+"*":S;for(var Y=0,T=U.length;Y=0){I.type=G=G.slice(0,-1);I.exclusive=true}if(!H){I.stopPropagation();if(this.global[G]){o.each(o.cache,function(){if(this.events&&this.events[G]){o.event.trigger(I,K,this.handle.elem)}})}}if(!H||H.nodeType==3||H.nodeType==8){return g}I.result=g;I.target=H;K=o.makeArray(K);K.unshift(I)}I.currentTarget=H;var J=o.data(H,"handle");if(J){J.apply(H,K)}if((!H[G]||(o.nodeName(H,"a")&&G=="click"))&&H["on"+G]&&H["on"+G].apply(H,K)===false){I.result=false}if(!E&&H[G]&&!I.isDefaultPrevented()&&!(o.nodeName(H,"a")&&G=="click")){this.triggered=true;try{H[G]()}catch(L){}}this.triggered=false;if(!I.isPropagationStopped()){var F=H.parentNode||H.ownerDocument;if(F){o.event.trigger(I,K,F,true)}}},handle:function(K){var J,E;K=arguments[0]=o.event.fix(K||l.event);var L=K.type.split(".");K.type=L.shift();J=!L.length&&!K.exclusive;var I=RegExp("(^|\\.)"+L.slice().sort().join(".*\\.")+"(\\.|$)");E=(o.data(this,"events")||{})[K.type];for(var G in E){var H=E[G];if(J||I.test(H.type)){K.handler=H;K.data=H.data;var F=H.apply(this,arguments);if(F!==g){K.result=F;if(F===false){K.preventDefault();K.stopPropagation()}}if(K.isImmediatePropagationStopped()){break}}}},props:"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode metaKey newValue originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),fix:function(H){if(H[h]){return H}var F=H;H=o.Event(F);for(var G=this.props.length,J;G;){J=this.props[--G];H[J]=F[J]}if(!H.target){H.target=H.srcElement||document}if(H.target.nodeType==3){H.target=H.target.parentNode}if(!H.relatedTarget&&H.fromElement){H.relatedTarget=H.fromElement==H.target?H.toElement:H.fromElement}if(H.pageX==null&&H.clientX!=null){var I=document.documentElement,E=document.body;H.pageX=H.clientX+(I&&I.scrollLeft||E&&E.scrollLeft||0)-(I.clientLeft||0);H.pageY=H.clientY+(I&&I.scrollTop||E&&E.scrollTop||0)-(I.clientTop||0)}if(!H.which&&((H.charCode||H.charCode===0)?H.charCode:H.keyCode)){H.which=H.charCode||H.keyCode}if(!H.metaKey&&H.ctrlKey){H.metaKey=H.ctrlKey}if(!H.which&&H.button){H.which=(H.button&1?1:(H.button&2?3:(H.button&4?2:0)))}return H},proxy:function(F,E){E=E||function(){return F.apply(this,arguments)};E.guid=F.guid=F.guid||E.guid||this.guid++;return E},special:{ready:{setup:B,teardown:function(){}}},specialAll:{live:{setup:function(E,F){o.event.add(this,F[0],c)},teardown:function(G){if(G.length){var E=0,F=RegExp("(^|\\.)"+G[0]+"(\\.|$)");o.each((o.data(this,"events").live||{}),function(){if(F.test(this.type)){E++}});if(E<1){o.event.remove(this,G[0],c)}}}}}};o.Event=function(E){if(!this.preventDefault){return new o.Event(E)}if(E&&E.type){this.originalEvent=E;this.type=E.type}else{this.type=E}this.timeStamp=e();this[h]=true};function k(){return false}function u(){return true}o.Event.prototype={preventDefault:function(){this.isDefaultPrevented=u;var E=this.originalEvent;if(!E){return}if(E.preventDefault){E.preventDefault()}E.returnValue=false},stopPropagation:function(){this.isPropagationStopped=u;var E=this.originalEvent;if(!E){return}if(E.stopPropagation){E.stopPropagation()}E.cancelBubble=true},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=u;this.stopPropagation()},isDefaultPrevented:k,isPropagationStopped:k,isImmediatePropagationStopped:k};var a=function(F){var E=F.relatedTarget;while(E&&E!=this){try{E=E.parentNode}catch(G){E=this}}if(E!=this){F.type=F.data;o.event.handle.apply(this,arguments)}};o.each({mouseover:"mouseenter",mouseout:"mouseleave"},function(F,E){o.event.special[E]={setup:function(){o.event.add(this,F,a,E)},teardown:function(){o.event.remove(this,F,a)}}});o.fn.extend({bind:function(F,G,E){return F=="unload"?this.one(F,G,E):this.each(function(){o.event.add(this,F,E||G,E&&G)})},one:function(G,H,F){var E=o.event.proxy(F||H,function(I){o(this).unbind(I,E);return(F||H).apply(this,arguments)});return this.each(function(){o.event.add(this,G,E,F&&H)})},unbind:function(F,E){return this.each(function(){o.event.remove(this,F,E)})},trigger:function(E,F){return this.each(function(){o.event.trigger(E,F,this)})},triggerHandler:function(E,G){if(this[0]){var F=o.Event(E);F.preventDefault();F.stopPropagation();o.event.trigger(F,G,this[0]);return F.result}},toggle:function(G){var E=arguments,F=1;while(F=0){var E=G.slice(I,G.length);G=G.slice(0,I)}var H="GET";if(J){if(o.isFunction(J)){K=J;J=null}else{if(typeof J==="object"){J=o.param(J);H="POST"}}}var F=this;o.ajax({url:G,type:H,dataType:"html",data:J,complete:function(M,L){if(L=="success"||L=="notmodified"){F.html(E?o("
").append(M.responseText.replace(//g,"")).find(E):M.responseText)}if(K){F.each(K,[M.responseText,L,M])}}});return this},serialize:function(){return o.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?o.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||/select|textarea/i.test(this.nodeName)||/text|hidden|password/i.test(this.type))}).map(function(E,F){var G=o(this).val();return G==null?null:o.isArray(G)?o.map(G,function(I,H){return{name:F.name,value:I}}):{name:F.name,value:G}}).get()}});o.each("ajaxStart,ajaxStop,ajaxComplete,ajaxError,ajaxSuccess,ajaxSend".split(","),function(E,F){o.fn[F]=function(G){return this.bind(F,G)}});var r=e();o.extend({get:function(E,G,H,F){if(o.isFunction(G)){H=G;G=null}return o.ajax({type:"GET",url:E,data:G,success:H,dataType:F})},getScript:function(E,F){return o.get(E,null,F,"script")},getJSON:function(E,F,G){return o.get(E,F,G,"json")},post:function(E,G,H,F){if(o.isFunction(G)){H=G;G={}}return o.ajax({type:"POST",url:E,data:G,success:H,dataType:F})},ajaxSetup:function(E){o.extend(o.ajaxSettings,E)},ajaxSettings:{url:location.href,global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,xhr:function(){return l.ActiveXObject?new ActiveXObject("Microsoft.XMLHTTP"):new XMLHttpRequest()},accepts:{xml:"application/xml, text/xml",html:"text/html",script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},lastModified:{},ajax:function(M){M=o.extend(true,M,o.extend(true,{},o.ajaxSettings,M));var W,F=/=\?(&|$)/g,R,V,G=M.type.toUpperCase();if(M.data&&M.processData&&typeof M.data!=="string"){M.data=o.param(M.data)}if(M.dataType=="jsonp"){if(G=="GET"){if(!M.url.match(F)){M.url+=(M.url.match(/\?/)?"&":"?")+(M.jsonp||"callback")+"=?"}}else{if(!M.data||!M.data.match(F)){M.data=(M.data?M.data+"&":"")+(M.jsonp||"callback")+"=?"}}M.dataType="json"}if(M.dataType=="json"&&(M.data&&M.data.match(F)||M.url.match(F))){W="jsonp"+r++;if(M.data){M.data=(M.data+"").replace(F,"="+W+"$1")}M.url=M.url.replace(F,"="+W+"$1");M.dataType="script";l[W]=function(X){V=X;I();L();l[W]=g;try{delete l[W]}catch(Y){}if(H){H.removeChild(T)}}}if(M.dataType=="script"&&M.cache==null){M.cache=false}if(M.cache===false&&G=="GET"){var E=e();var U=M.url.replace(/(\?|&)_=.*?(&|$)/,"$1_="+E+"$2");M.url=U+((U==M.url)?(M.url.match(/\?/)?"&":"?")+"_="+E:"")}if(M.data&&G=="GET"){M.url+=(M.url.match(/\?/)?"&":"?")+M.data;M.data=null}if(M.global&&!o.active++){o.event.trigger("ajaxStart")}var Q=/^(\w+:)?\/\/([^\/?#]+)/.exec(M.url);if(M.dataType=="script"&&G=="GET"&&Q&&(Q[1]&&Q[1]!=location.protocol||Q[2]!=location.host)){var H=document.getElementsByTagName("head")[0];var T=document.createElement("script");T.src=M.url;if(M.scriptCharset){T.charset=M.scriptCharset}if(!W){var O=false;T.onload=T.onreadystatechange=function(){if(!O&&(!this.readyState||this.readyState=="loaded"||this.readyState=="complete")){O=true;I();L();H.removeChild(T)}}}H.appendChild(T);return g}var K=false;var J=M.xhr();if(M.username){J.open(G,M.url,M.async,M.username,M.password)}else{J.open(G,M.url,M.async)}try{if(M.data){J.setRequestHeader("Content-Type",M.contentType)}if(M.ifModified){J.setRequestHeader("If-Modified-Since",o.lastModified[M.url]||"Thu, 01 Jan 1970 00:00:00 GMT")}J.setRequestHeader("X-Requested-With","XMLHttpRequest");J.setRequestHeader("Accept",M.dataType&&M.accepts[M.dataType]?M.accepts[M.dataType]+", */*":M.accepts._default)}catch(S){}if(M.beforeSend&&M.beforeSend(J,M)===false){if(M.global&&!--o.active){o.event.trigger("ajaxStop")}J.abort();return false}if(M.global){o.event.trigger("ajaxSend",[J,M])}var N=function(X){if(J.readyState==0){if(P){clearInterval(P);P=null;if(M.global&&!--o.active){o.event.trigger("ajaxStop")}}}else{if(!K&&J&&(J.readyState==4||X=="timeout")){K=true;if(P){clearInterval(P);P=null}R=X=="timeout"?"timeout":!o.httpSuccess(J)?"error":M.ifModified&&o.httpNotModified(J,M.url)?"notmodified":"success";if(R=="success"){try{V=o.httpData(J,M.dataType,M)}catch(Z){R="parsererror"}}if(R=="success"){var Y;try{Y=J.getResponseHeader("Last-Modified")}catch(Z){}if(M.ifModified&&Y){o.lastModified[M.url]=Y}if(!W){I()}}else{o.handleError(M,J,R)}L();if(X){J.abort()}if(M.async){J=null}}}};if(M.async){var P=setInterval(N,13);if(M.timeout>0){setTimeout(function(){if(J&&!K){N("timeout")}},M.timeout)}}try{J.send(M.data)}catch(S){o.handleError(M,J,null,S)}if(!M.async){N()}function I(){if(M.success){M.success(V,R)}if(M.global){o.event.trigger("ajaxSuccess",[J,M])}}function L(){if(M.complete){M.complete(J,R)}if(M.global){o.event.trigger("ajaxComplete",[J,M])}if(M.global&&!--o.active){o.event.trigger("ajaxStop")}}return J},handleError:function(F,H,E,G){if(F.error){F.error(H,E,G)}if(F.global){o.event.trigger("ajaxError",[H,F,G])}},active:0,httpSuccess:function(F){try{return !F.status&&location.protocol=="file:"||(F.status>=200&&F.status<300)||F.status==304||F.status==1223}catch(E){}return false},httpNotModified:function(G,E){try{var H=G.getResponseHeader("Last-Modified");return G.status==304||H==o.lastModified[E]}catch(F){}return false},httpData:function(J,H,G){var F=J.getResponseHeader("content-type"),E=H=="xml"||!H&&F&&F.indexOf("xml")>=0,I=E?J.responseXML:J.responseText;if(E&&I.documentElement.tagName=="parsererror"){throw"parsererror"}if(G&&G.dataFilter){I=G.dataFilter(I,H)}if(typeof I==="string"){if(H=="script"){o.globalEval(I)}if(H=="json"){I=l["eval"]("("+I+")")}}return I},param:function(E){var G=[];function H(I,J){G[G.length]=encodeURIComponent(I)+"="+encodeURIComponent(J)}if(o.isArray(E)||E.jquery){o.each(E,function(){H(this.name,this.value)})}else{for(var F in E){if(o.isArray(E[F])){o.each(E[F],function(){H(F,this)})}else{H(F,o.isFunction(E[F])?E[F]():E[F])}}}return G.join("&").replace(/%20/g,"+")}});var m={},n,d=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]];function t(F,E){var G={};o.each(d.concat.apply([],d.slice(0,E)),function(){G[this]=F});return G}o.fn.extend({show:function(J,L){if(J){return this.animate(t("show",3),J,L)}else{for(var H=0,F=this.length;H").appendTo("body");K=I.css("display");if(K==="none"){K="block"}I.remove();m[G]=K}this[H].style.display=o.data(this[H],"olddisplay",K)}}return this}},hide:function(H,I){if(H){return this.animate(t("hide",3),H,I)}else{for(var G=0,F=this.length;G=0;H--){if(G[H].elem==this){if(E){G[H](true)}G.splice(H,1)}}});if(!E){this.dequeue()}return this}});o.each({slideDown:t("show",1),slideUp:t("hide",1),slideToggle:t("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"}},function(E,F){o.fn[E]=function(G,H){return this.animate(F,G,H)}});o.extend({speed:function(G,H,F){var E=typeof G==="object"?G:{complete:F||!F&&H||o.isFunction(G)&&G,duration:G,easing:F&&H||H&&!o.isFunction(H)&&H};E.duration=o.fx.off?0:typeof E.duration==="number"?E.duration:o.fx.speeds[E.duration]||o.fx.speeds._default;E.old=E.complete;E.complete=function(){if(E.queue!==false){o(this).dequeue()}if(o.isFunction(E.old)){E.old.call(this)}};return E},easing:{linear:function(G,H,E,F){return E+F*G},swing:function(G,H,E,F){return((-Math.cos(G*Math.PI)/2)+0.5)*F+E}},timers:[],fx:function(F,E,G){this.options=E;this.elem=F;this.prop=G;if(!E.orig){E.orig={}}}});o.fx.prototype={update:function(){if(this.options.step){this.options.step.call(this.elem,this.now,this)}(o.fx.step[this.prop]||o.fx.step._default)(this);if((this.prop=="height"||this.prop=="width")&&this.elem.style){this.elem.style.display="block"}},cur:function(F){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null)){return this.elem[this.prop]}var E=parseFloat(o.css(this.elem,this.prop,F));return E&&E>-10000?E:parseFloat(o.curCSS(this.elem,this.prop))||0},custom:function(I,H,G){this.startTime=e();this.start=I;this.end=H;this.unit=G||this.unit||"px";this.now=this.start;this.pos=this.state=0;var E=this;function F(J){return E.step(J)}F.elem=this.elem;if(F()&&o.timers.push(F)==1){n=setInterval(function(){var K=o.timers;for(var J=0;J=this.options.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;var E=true;for(var F in this.options.curAnim){if(this.options.curAnim[F]!==true){E=false}}if(E){if(this.options.display!=null){this.elem.style.overflow=this.options.overflow;this.elem.style.display=this.options.display;if(o.css(this.elem,"display")=="none"){this.elem.style.display="block"}}if(this.options.hide){o(this.elem).hide()}if(this.options.hide||this.options.show){for(var I in this.options.curAnim){o.attr(this.elem.style,I,this.options.orig[I])}}this.options.complete.call(this.elem)}return false}else{var J=G-this.startTime;this.state=J/this.options.duration;this.pos=o.easing[this.options.easing||(o.easing.swing?"swing":"linear")](this.state,J,0,1,this.options.duration);this.now=this.start+((this.end-this.start)*this.pos);this.update()}return true}};o.extend(o.fx,{speeds:{slow:600,fast:200,_default:400},step:{opacity:function(E){o.attr(E.elem.style,"opacity",E.now)},_default:function(E){if(E.elem.style&&E.elem.style[E.prop]!=null){E.elem.style[E.prop]=E.now+E.unit}else{E.elem[E.prop]=E.now}}}});if(document.documentElement.getBoundingClientRect){o.fn.offset=function(){if(!this[0]){return{top:0,left:0}}if(this[0]===this[0].ownerDocument.body){return o.offset.bodyOffset(this[0])}var G=this[0].getBoundingClientRect(),J=this[0].ownerDocument,F=J.body,E=J.documentElement,L=E.clientTop||F.clientTop||0,K=E.clientLeft||F.clientLeft||0,I=G.top+(self.pageYOffset||o.boxModel&&E.scrollTop||F.scrollTop)-L,H=G.left+(self.pageXOffset||o.boxModel&&E.scrollLeft||F.scrollLeft)-K;return{top:I,left:H}}}else{o.fn.offset=function(){if(!this[0]){return{top:0,left:0}}if(this[0]===this[0].ownerDocument.body){return o.offset.bodyOffset(this[0])}o.offset.initialized||o.offset.initialize();var J=this[0],G=J.offsetParent,F=J,O=J.ownerDocument,M,H=O.documentElement,K=O.body,L=O.defaultView,E=L.getComputedStyle(J,null),N=J.offsetTop,I=J.offsetLeft;while((J=J.parentNode)&&J!==K&&J!==H){M=L.getComputedStyle(J,null);N-=J.scrollTop,I-=J.scrollLeft;if(J===G){N+=J.offsetTop,I+=J.offsetLeft;if(o.offset.doesNotAddBorder&&!(o.offset.doesAddBorderForTableAndCells&&/^t(able|d|h)$/i.test(J.tagName))){N+=parseInt(M.borderTopWidth,10)||0,I+=parseInt(M.borderLeftWidth,10)||0}F=G,G=J.offsetParent}if(o.offset.subtractsBorderForOverflowNotVisible&&M.overflow!=="visible"){N+=parseInt(M.borderTopWidth,10)||0,I+=parseInt(M.borderLeftWidth,10)||0}E=M}if(E.position==="relative"||E.position==="static"){N+=K.offsetTop,I+=K.offsetLeft}if(E.position==="fixed"){N+=Math.max(H.scrollTop,K.scrollTop),I+=Math.max(H.scrollLeft,K.scrollLeft)}return{top:N,left:I}}}o.offset={initialize:function(){if(this.initialized){return}var L=document.body,F=document.createElement("div"),H,G,N,I,M,E,J=L.style.marginTop,K='
';M={position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",height:"1px",visibility:"hidden"};for(E in M){F.style[E]=M[E]}F.innerHTML=K;L.insertBefore(F,L.firstChild);H=F.firstChild,G=H.firstChild,I=H.nextSibling.firstChild.firstChild;this.doesNotAddBorder=(G.offsetTop!==5);this.doesAddBorderForTableAndCells=(I.offsetTop===5);H.style.overflow="hidden",H.style.position="relative";this.subtractsBorderForOverflowNotVisible=(G.offsetTop===-5);L.style.marginTop="1px";this.doesNotIncludeMarginInBodyOffset=(L.offsetTop===0);L.style.marginTop=J;L.removeChild(F);this.initialized=true},bodyOffset:function(E){o.offset.initialized||o.offset.initialize();var G=E.offsetTop,F=E.offsetLeft;if(o.offset.doesNotIncludeMarginInBodyOffset){G+=parseInt(o.curCSS(E,"marginTop",true),10)||0,F+=parseInt(o.curCSS(E,"marginLeft",true),10)||0}return{top:G,left:F}}};o.fn.extend({position:function(){var I=0,H=0,F;if(this[0]){var G=this.offsetParent(),J=this.offset(),E=/^body|html$/i.test(G[0].tagName)?{top:0,left:0}:G.offset();J.top-=j(this,"marginTop");J.left-=j(this,"marginLeft");E.top+=j(G,"borderTopWidth");E.left+=j(G,"borderLeftWidth");F={top:J.top-E.top,left:J.left-E.left}}return F},offsetParent:function(){var E=this[0].offsetParent||document.body;while(E&&(!/^body|html$/i.test(E.tagName)&&o.css(E,"position")=="static")){E=E.offsetParent}return o(E)}});o.each(["Left","Top"],function(F,E){var G="scroll"+E;o.fn[G]=function(H){if(!this[0]){return null}return H!==g?this.each(function(){this==l||this==document?l.scrollTo(!F?H:o(l).scrollLeft(),F?H:o(l).scrollTop()):this[G]=H}):this[0]==l||this[0]==document?self[F?"pageYOffset":"pageXOffset"]||o.boxModel&&document.documentElement[G]||document.body[G]:this[0][G]}});o.each(["Height","Width"],function(H,F){var E=H?"Left":"Top",G=H?"Right":"Bottom";o.fn["inner"+F]=function(){return this[F.toLowerCase()]()+j(this,"padding"+E)+j(this,"padding"+G)};o.fn["outer"+F]=function(J){return this["inner"+F]()+j(this,"border"+E+"Width")+j(this,"border"+G+"Width")+(J?j(this,"margin"+E)+j(this,"margin"+G):0)};var I=F.toLowerCase();o.fn[I]=function(J){return this[0]==l?document.compatMode=="CSS1Compat"&&document.documentElement["client"+F]||document.body["client"+F]:this[0]==document?Math.max(document.documentElement["client"+F],document.body["scroll"+F],document.documentElement["scroll"+F],document.body["offset"+F],document.documentElement["offset"+F]):J===g?(this.length?o.css(this[0],I):null):this.css(I,typeof J==="string"?J:J+"px")}})})(); /** * x.js compiled from X 4.0 with XC 0.27b. * Distributed by GNU LGPL. For copyrights, license, documentation and more visit Cross-Browser.com * Copyright 2001-2005 Michael Foster (Cross-Browser.com) **/ var xOp7Up,xOp6Dn,xIE4Up,xIE4,xIE5,xIE6,xNN4,xUA=navigator.userAgent.toLowerCase(); if(window.opera){ var i=xUA.indexOf('opera'); if(i!=-1){ var v=parseInt(xUA.charAt(i+6)); xOp7Up=v>=7; xOp6Dn=v<7; } } else if(navigator.vendor!='KDE' && document.all && xUA.indexOf('msie')!=-1){ xIE4Up=parseFloat(navigator.appVersion)>=4; xIE4=xUA.indexOf('msie 4')!=-1; xIE5=xUA.indexOf('msie 5')!=-1; xIE6=xUA.indexOf('msie 6')!=-1; } else if(document.layers){xNN4=true;} var xMac=xUA.indexOf('mac')!=-1; var xFF=xUA.indexOf('firefox')!=-1; // (element, event(without 'on'), event listener(function name)[, caption]) function xAddEventListener(e,eT,eL,cap) { if(!(e=xGetElementById(e))) return; eT=eT.toLowerCase(); if((!xIE4Up && !xOp7Up) && e==window) { if(eT=='resize') { window.xPCW=xClientWidth(); window.xPCH=xClientHeight(); window.xREL=eL; xResizeEvent(); return; } if(eT=='scroll') { window.xPSL=xScrollLeft(); window.xPST=xScrollTop(); window.xSEL=eL; xScrollEvent(); return; } } var eh='e.on'+eT+'=eL'; if(e.addEventListener) e.addEventListener(eT,eL,cap); else if(e.attachEvent) e.attachEvent('on'+eT,eL); else eval(eh); } // called only from the above function xResizeEvent() { if (window.xREL) setTimeout('xResizeEvent()', 250); var cw = xClientWidth(), ch = xClientHeight(); if (window.xPCW != cw || window.xPCH != ch) { window.xPCW = cw; window.xPCH = ch; if (window.xREL) window.xREL(); } } function xScrollEvent() { if (window.xSEL) setTimeout('xScrollEvent()', 250); var sl = xScrollLeft(), st = xScrollTop(); if (window.xPSL != sl || window.xPST != st) { window.xPSL = sl; window.xPST = st; if (window.xSEL) window.xSEL(); } } function xAppendChild(oParent, oChild) { if (oParent.appendChild) return oParent.appendChild(oChild); else return null; } function xClientHeight() { var h=0; if(xOp6Dn) h=window.innerHeight; else if(document.compatMode == 'CSS1Compat' && !window.opera && document.documentElement && document.documentElement.clientHeight) h=document.documentElement.clientHeight; else if(document.body && document.body.clientHeight) h=document.body.clientHeight; else if(xDef(window.innerWidth,window.innerHeight,document.width)) { h=window.innerHeight; if(document.width>window.innerWidth) h-=16; } return h; } function xClientWidth() { var w=0; if(xOp6Dn) w=window.innerWidth; else if(document.compatMode == 'CSS1Compat' && !window.opera && document.documentElement && document.documentElement.clientWidth) w=document.documentElement.clientWidth; else if(document.body && document.body.clientWidth) w=document.body.clientWidth; else if(xDef(window.innerWidth,window.innerHeight,document.height)) { w=window.innerWidth; if(document.height>window.innerHeight) w-=16; } return w; } function xCreateElement(sTag) { if (document.createElement) return document.createElement(sTag); else return null; } function xDef() { for(var i=0; i 0) { var offset = document.cookie.indexOf(search); if (offset != -1) { offset += search.length; var end = document.cookie.indexOf(";", offset); if (end == -1) end = document.cookie.length; value = unescape(document.cookie.substring(offset, end)); } } return value; } function xGetElementById(e) { if(typeof(e)!='string') return e; if(document.getElementById) e=document.getElementById(e); else if(document.all) e=document.all[e]; else e=null; return e; } function xGetElementsByAttribute(sTag, sAtt, sRE, fn) { var a, list, found = new Array(), re = new RegExp(sRE, 'i'); list = xGetElementsByTagName(sTag); for (var i = 0; i < list.length; ++i) { a = list[i].getAttribute(sAtt); if (!a) {a = list[i][sAtt];} if (typeof(a)=='string' && a.search(re) != -1) { found[found.length] = list[i]; if (fn) fn(list[i]); } } return found; } function xGetElementsByClassName(c,p,t,f) { var found = new Array(); var re = new RegExp('\\b'+c+'\\b', 'i'); var list = xGetElementsByTagName(t, p); for (var i = 0; i < list.length; ++i) { if (list[i].className && list[i].className.search(re) != -1) { found[found.length] = list[i]; if (f) f(list[i]); } } return found; } function xGetElementsByTagName(t,p) { var list = null; t = t || '*'; p = p || document; if (xIE4 || xIE5) { if (t == '*') list = p.all; else list = p.all.tags(t); } else if (p.getElementsByTagName) list = p.getElementsByTagName(t); return list || new Array(); } function xGetURLArguments() { var idx = location.href.indexOf('?'); var params = new Array(); if (idx != -1) { var pairs = location.href.substring(idx+1, location.href.length).split('&'); for (var i=0; i=0) { var pt=0,pb=0,bt=0,bb=0; if (document.compatMode=='CSS1Compat') { var gcs = xGetComputedStyle; pt=gcs(e,'padding-top',1); if (pt !== null) { pb=gcs(e,'padding-bottom',1); bt=gcs(e,'border-top-width',1); bb=gcs(e,'border-bottom-width',1); } // Should we try this as a last resort? // At this point getComputedStyle and currentStyle do not exist. else if(xDef(e.offsetHeight,e.style.height)){ e.style.height=h+'px'; pt=e.offsetHeight-h; } } h-=(pt+pb+bt+bb); if(isNaN(h)||h<0) return null; else e.style.height=h+'px'; } h=e.offsetHeight; } else if(css && xDef(e.style.pixelHeight)) { if(h>=0) e.style.pixelHeight=h; h=e.style.pixelHeight; } return h; } function xHex(sn, digits, prefix) { var p = ''; var n = Math.ceil(sn); if (prefix) p = prefix; n = n.toString(16); for (var i=0; i < digits - n.length; ++i) { p += '0'; } return p + n; } function xHide(e){return xVisibility(e,0);} function xInnerHtml(e,h) { if(!(e=xGetElementById(e)) || !xStr(e.innerHTML)) return null; var s = e.innerHTML; if (xStr(h)) {e.innerHTML = h;} return s; } function xLeft(e, iX) { if(!(e=xGetElementById(e))) return 0; var css=xDef(e.style); if (css && xStr(e.style.left)) { if(xNum(iX)) e.style.left=iX+'px'; else { iX=parseInt(e.style.left); if(isNaN(iX)) iX=0; } } else if(css && xDef(e.style.pixelLeft)) { if(xNum(iX)) e.style.pixelLeft=iX; else iX=e.style.pixelLeft; } return iX; } function xMoveTo(e,x,y) { xLeft(e,x); xTop(e,y); } function xName(e) { if (!e) return e; else if (e.id && e.id != "") return e.id; else if (e.name && e.name != "") return e.name; else if (e.nodeName && e.nodeName != "") return e.nodeName; else if (e.tagName && e.tagName != "") return e.tagName; else return e; } function xNextSib(e,t) { var s = e ? e.nextSibling : null; if (t) while (s && s.nodeName != t) { s = s.nextSibling; } else while (s && s.nodeType != 1) { s = s.nextSibling; } return s; } function xNum() { for(var i=0; i=0) { var pl=0,pr=0,bl=0,br=0; if (document.compatMode=='CSS1Compat') { var gcs = xGetComputedStyle; pl=gcs(e,'padding-left',1); if (pl !== null) { pr=gcs(e,'padding-right',1); bl=gcs(e,'border-left-width',1); br=gcs(e,'border-right-width',1); } // Should we try this as a last resort? // At this point getComputedStyle and currentStyle do not exist. else if(xDef(e.offsetWidth,e.style.width)){ e.style.width=w+'px'; pl=e.offsetWidth-w; } } w-=(pl+pr+bl+br); if(isNaN(w)||w<0) return null; else e.style.width=w+'px'; } w=e.offsetWidth; } else if(css && xDef(e.style.pixelWidth)) { if(w>=0) e.style.pixelWidth=w; w=e.style.pixelWidth; } return w; } function xZIndex(e,uZ) { if(!(e=xGetElementById(e))) return 0; if(e.style && xDef(e.style.zIndex)) { if(xNum(uZ)) e.style.zIndex=uZ; uZ=parseInt(e.style.zIndex); } return uZ; } function xStopPropagation(evt) { if (evt && evt.stopPropagation) evt.stopPropagation(); else if (window.event) window.event.cancelBubble = true; } /** * @file common.js * @author zero (zero@nzeo.com) * @brief 몇가지 유용한 & 기본적으로 자주 사용되는 자바스크립트 함수들 모음 **/ /* jQuery 참조변수($) 제거 */ if(jQuery) jQuery.noConflict(); (function($) { /* OS check */ var UA = navigator.userAgent.toLowerCase(); $.os = { Linux: /linux/.test(UA), Unix: /x11/.test(UA), Mac: /mac/.test(UA), Windows: /win/.test(UA) }; $.os.name = ($.os.Windows) ? 'Windows' : ($.os.Linux) ? 'Linux' : ($.os.Unix) ? 'Unix' : ($.os.Mac) ? 'Mac' : ''; /** * @brief XE 공용 유틸리티 함수 * @namespace XE */ window.XE = { loaded_popup_menus : new Array(), addedDocument : new Array(), /** * @brief 특정 name을 가진 체크박스들의 checked 속성 변경 * @param [itemName='cart',][options={}] */ checkboxToggleAll : function() { var itemName='cart'; var options = { wrap : null, checked : 'toggle', doClick : false }; switch(arguments.length) { case 1: if(typeof(arguments[0]) == "string") { itemName = arguments[0]; } else { $.extend(options, arguments[0] || {}); } break; case 2: itemName = arguments[0]; $.extend(options, arguments[1] || {}); } if(options.doClick == true) options.checked = null; if(typeof(options.wrap) == "string") options.wrap ='#'+options.wrap; if(options.wrap) { var obj = $(options.wrap).find('input[name='+itemName+']:checkbox'); } else { var obj = $('input[name='+itemName+']:checkbox'); } if(options.checked == 'toggle') { obj.each(function() { $(this).attr('checked', ($(this).attr('checked')) ? false : true); }); } else { (options.doClick == true) ? obj.click() : obj.attr('checked', options.checked); } }, /** * @brief 문서/회원 등 팝업 메뉴 출력 */ displayPopupMenu : function(ret_obj, response_tags, params) { var target_srl = params["target_srl"]; var menu_id = params["menu_id"]; var menus = ret_obj['menus']; var html = ""; if(this.loaded_popup_menus[menu_id]) { html = this.loaded_popup_menus[menu_id]; } else { if(menus) { var item = menus['item']; if(typeof(item.length)=='undefined' || item.length<1) item = new Array(item); if(item.length) { for(var i=0;i'+str+' '; } } } this.loaded_popup_menus[menu_id] = html; } /* 레이어 출력 */ if(html) { var area = $('#popup_menu_area').html('
    '+html+'
'); var areaOffset = {top:params['page_y'], left:params['page_x']}; if(area.outerHeight()+areaOffset.top > $(window).height()+$(window).scrollTop()) areaOffset.top = $(window).height() - area.outerHeight() + $(window).scrollTop(); if(area.outerWidth()+areaOffset.left > $(window).width()+$(window).scrollLeft()) areaOffset.left = $(window).width() - area.outerWidth() + $(window).scrollLeft(); area.css({ top:areaOffset.top, left:areaOffset.left }).show(); } } } }) (jQuery); /* jQuery(document).ready() */ jQuery(function($) { /* 팝업메뉴 레이어 생성 */ if(!$('#popup_menu_area').length) { var menuObj = $('
') .attr('id', 'popup_menu_area') .css({display:'none', zIndex:9999}); $(document.body).append(menuObj); } $(document).click(function(evt) { var area = $('#popup_menu_area'); if(!area.length) return; // 이전에 호출되었을지 모르는 팝업메뉴 숨김 area.hide(); var targetObj = $(evt.target); if(!targetObj.length) return; // obj의 nodeName이 div나 span이 아니면 나올대까지 상위를 찾음 if(targetObj.length && $.inArray(targetObj.attr('nodeName'), ['DIV', 'SPAN', 'A']) == -1) targetObj = targetObj.parent(); if(!targetObj.length || $.inArray(targetObj.attr('nodeName'), ['DIV', 'SPAN', 'A']) == -1) return; // 객체의 className값을 구함 var class_name = targetObj.attr('className'); if(class_name.indexOf('_') <= 0) return; // className을 분리 var class_name_list = class_name.split(' '); var menu_id = ''; var menu_id_regx = /^([a-zA-Z]+)_([0-9]+)$/; for(var i = 0, c = class_name_list.length; i < c; i++) { if(menu_id_regx.test(class_name_list[i])) { menu_id = class_name_list[i]; } } if(!menu_id) return; // module명과 대상 번호가 없으면 return var tmp_arr = menu_id.split('_'); var module_name = tmp_arr[0]; var target_srl = tmp_arr[1]; if(!module_name || !target_srl || target_srl < 1) return; // action이름을 규칙에 맞게 작성 var action_name = "get" + module_name.substr(0,1).toUpperCase() + module_name.substr(1,module_name.length-1) + "Menu"; // 서버에 메뉴를 요청 var params = new Array(); params["target_srl"] = target_srl; params["cur_mid"] = current_mid; params["cur_act"] = current_url.getQuery('act'); params["menu_id"] = menu_id; params["page_x"] = evt.pageX; params["page_y"] = evt.pageY; var response_tags = new Array("error","message","menus"); if(typeof(XE.loaded_popup_menus[menu_id]) != 'undefined') { XE.displayPopupMenu(params, response_tags, params); return; } show_waiting_message = false; exec_xml(module_name, action_name, params, XE.displayPopupMenu, response_tags, params); show_waiting_message = true; }); /* select - option의 disabled=disabled 속성을 IE에서도 체크하기 위한 함수 */ if($.browser.msie) { $('select').each(function(i, sels) { var disabled_exists = false; var first_enable = new Array(); for(var j=0; j < sels.options.length; j++) { if(sels.options[j].disabled) { sels.options[j].style.color = '#CCCCCC'; disabled_exists = true; }else{ first_enable[i] = (first_enable[i] > -1) ? first_enable[i] : j; } } if(!disabled_exists) return; sels.oldonchange = sels.onchange; sels.onchange = function() { if(this.options[this.selectedIndex].disabled) { this.selectedIndex = first_enable[i]; /* if(this.options.length<=1) this.selectedIndex = -1; else if(this.selectedIndex < this.options.length - 1) this.selectedIndex++; else this.selectedIndex--; */ } else { if(this.oldonchange) this.oldonchange(); } }; if(sels.selectedIndex >= 0 && sels.options[ sels.selectedIndex ].disabled) sels.onchange(); }); } }); /** * @brief location.href에서 특정 key의 값을 return **/ String.prototype.getQuery = function(key) { var idx = this.indexOf('?'); if(idx == -1) return null; var query_string = this.substr(idx+1, this.length); var args = {}; query_string.replace(/([^=]+)=([^&]*)(&|$)/g, function() { args[arguments[1]] = arguments[2]; }); var q = args[key]; if(typeof(q)=="undefined") q = ""; return q; } /** * @brief location.href에서 특정 key의 값을 return **/ String.prototype.setQuery = function(key, val) { var idx = this.indexOf('?'); var uri = this; uri = uri.replace(/#$/,''); if(idx != -1) { uri = this.substr(0, idx); var query_string = this.substr(idx+1, this.length); var args = new Array(); query_string.replace(/([^=]+)=([^&]*)(&|$)/g, function() { args[arguments[1]] = arguments[2]; }); args[key] = val; var q_list = new Array(); for(var i in args) { if( !args.hasOwnProperty(i) ) continue; var arg = args[i]; if(!arg.toString().trim()) continue; arg = decodeURI(arg); q_list[q_list.length] = i+'='+arg; } uri = uri+"?"+q_list.join("&"); } else { if(val.toString().trim()) uri = uri+"?"+key+"="+val; } var re = /https:\/\/([^:\/]+)(:\d+|)/i; var check = re.exec(uri); if(check) { var toReplace = "http://"+check[1]; if(typeof(http_port)!='undefined' && http_port != 80) { toReplace += ":" + http_port; } uri = uri.replace(re,toReplace); } var bUseSSL = false; if(typeof(enforce_ssl)!='undefined' && enforce_ssl) { bUseSSL = true; } else if(typeof(ssl_actions)!='undefined' && typeof(ssl_actions.length)!='undefined' && uri.getQuery('act')) { var act = uri.getQuery('act'); for(i=0;i'; } else if(/\.swf$/i.test(src)) { clsid = 'clsid:D27CDB6E-AE6D-11cf-96B8-444553540000'; codebase = "http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,28,0"; html = ''; html += ''; for(var name in params) { if(params[name] != 'undefined' && params[name] != '') { html += ''; } } html += '' + '' + ''; } else if(/\.flv$/i.test(src) || /\.mov$/i.test(src) || /\.moov$/i.test(src) || /\.m4v$/i.test(src)) { html = ''; } else { html = ' 400) { bodyObj.css({ overflowY:'scroll', overflowX:'hidden', height:400 }); } } var w = jQuery("#popup_content").width(); w = w< 400 ? 400 : w; var h = jQuery("#popup_content").height(); if(h != _popupHeight) { _popupHeight = h; jQuery('div').each(function() { var ww = jQuery(this).width(); if(jQuery.inArray(this.id, ['waitingforserverresponse', 'fororiginalimagearea', 'fororiginalimageareabg']) == -1) { if(ww > w) w = ww; } }); jQuery('table').each(function() { var ww = jQuery(this).width(); if(ww > w) w = ww; }); jQuery('form').each(function() { var ww = jQuery(this).width(); if(ww > w) w = ww; }); jQuery("#popup_content").width(w); jQuery("#popHeader").width(w); jQuery("#popFooter").width(w); window.resizeTo(w, h); // 윈도우 OS에서는 브라우저별로 미세 조절이 필요 var moreW = 0; if(navigator.userAgent.toLowerCase().indexOf('windows') > 0) { if(jQuery.browser.opera) moreW += 9; else if(jQuery.browser.msie) moreW += 10; else if(jQuery.browser.mozilla) moreW += 8; else if(jQuery.browser.safari) { moreW += 4; h -= 12; } } var h1 = jQuery(window).height(); if(!/chrome/.test(navigator.userAgent.toLowerCase())) { window.resizeBy(moreW, h-h1+5); } else { window.resizeBy(10,60); } window.scrollTo(0,0); } setTimeout(setFixedPopupSize, 300); } /** * @brief 추천/비추천,스크랩,신고기능등 특정 srl에 대한 특정 module/action을 호출하는 함수 **/ function doCallModuleAction(module, action, target_srl) { var params = new Array(); params['target_srl'] = target_srl; params['cur_mid'] = current_mid; exec_xml(module, action, params, completeCallModuleAction); } function completeCallModuleAction(ret_obj, response_tags) { if(ret_obj['message']!='success') alert(ret_obj['message']); location.reload(); } function completeMessage(ret_obj) { alert(ret_obj['message']); location.reload(); } /* 언어코드 (lang_type) 쿠키값 변경 */ function doChangeLangType(obj) { if(typeof(obj) == "string") { setLangType(obj); } else { var val = obj.options[obj.selectedIndex].value; setLangType(val); } location.reload(); } function setLangType(lang_type) { var expire = new Date(); expire.setTime(expire.getTime()+ (7000 * 24 * 3600000)); xSetCookie('lang_type', lang_type, expire, '/'); } /* 미리보기 */ function doDocumentPreview(obj) { var fo_obj = obj; while(fo_obj.nodeName != "FORM") { fo_obj = fo_obj.parentNode; } if(fo_obj.nodeName != "FORM") return; var editor_sequence = fo_obj.getAttribute('editor_sequence'); var content = editorGetContent(editor_sequence); var win = window.open("", "previewDocument","toolbars=no,width=700px;height=800px,scrollbars=yes,resizable=yes"); var dummy_obj = jQuery("#previewDocument"); if(!dummy_obj.length) { jQuery( '
'+ ''+ ''+ ''+ '
' ).appendTo(document.body); dummy_obj = jQuery("#previewDocument")[0]; } if(dummy_obj) { dummy_obj.content.value = content; dummy_obj.submit(); } } /* 게시글 저장 */ function doDocumentSave(obj) { var editor_sequence = obj.form.getAttribute('editor_sequence'); var prev_content = editorRelKeys[editor_sequence]['content'].value; if(typeof(editor_sequence)!='undefined' && editor_sequence && typeof(editorRelKeys)!='undefined' && typeof(editorGetContent)=='function') { var content = editorGetContent(editor_sequence); editorRelKeys[editor_sequence]['content'].value = content; } var oFilter = new XmlJsFilter(obj.form, "member", "procMemberSaveDocument", completeDocumentSave); oFilter.addResponseItem("error"); oFilter.addResponseItem("message"); oFilter.addResponseItem("document_srl"); oFilter.proc(); editorRelKeys[editor_sequence]['content'].value = prev_content; return false; } function completeDocumentSave(ret_obj) { jQuery('input[name=document_srl]').eq(0).val(ret_obj['document_srl']); alert(ret_obj['message']); } /* 저장된 게시글 불러오기 */ var objForSavedDoc = null; function doDocumentLoad(obj) { // 저장된 게시글 목록 불러오기 objForSavedDoc = obj.form; popopen(request_uri.setQuery('module','member').setQuery('act','dispSavedDocumentList')); } /* 저장된 게시글의 선택 */ function doDocumentSelect(document_srl) { if(!opener || !opener.objForSavedDoc) { window.close(); return; } // 게시글을 가져와서 등록하기 opener.location.href = opener.current_url.setQuery('document_srl', document_srl).setQuery('act', 'dispBoardWrite'); window.close(); } /* 스킨 정보 */ function viewSkinInfo(module, skin) { popopen("./?module=module&act=dispModuleSkinInfo&selected_module="+module+"&skin="+skin, 'SkinInfo'); } /* 관리자가 문서를 관리하기 위해서 선택시 세션에 넣음 */ var addedDocument = new Array(); function doAddDocumentCart(obj) { var srl = obj.value; addedDocument[addedDocument.length] = srl; setTimeout(function() { callAddDocumentCart(addedDocument.length); }, 100); } function callAddDocumentCart(document_length) { if(addedDocument.length<1 || document_length != addedDocument.length) return; var params = new Array(); params["srls"] = addedDocument.join(","); exec_xml("document","procDocumentAddCart", params, null); addedDocument = new Array(); } /* ff의 rgb(a,b,c)를 #... 로 변경 */ function transRGB2Hex(value) { if(!value) return value; if(value.indexOf('#') > -1) return value.replace(/^#/, ''); if(value.toLowerCase().indexOf('rgb') < 0) return value; value = value.replace(/^rgb\(/i, '').replace(/\)$/, ''); value_list = value.split(','); var hex = ''; for(var i = 0; i < value_list.length; i++) { var color = parseInt(value_list[i], 10).toString(16); if(color.length == 1) color = '0'+color; hex += color; } return hex; } /* 보안 로그인 모드로 전환 */ function toggleSecuritySignIn() { var href = location.href; if(/https:\/\//i.test(href)) location.href = href.replace(/^https/i,'http'); else location.href = href.replace(/^http/i,'https'); } function reloadDocument() { location.reload(); } /** * * Base64 encode / decode * http://www.webtoolkit.info/ * **/ var Base64 = { // private property _keyStr : "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=", // public method for encoding encode : function (input) { var output = ""; var chr1, chr2, chr3, enc1, enc2, enc3, enc4; var i = 0; input = Base64._utf8_encode(input); while (i < input.length) { chr1 = input.charCodeAt(i++); chr2 = input.charCodeAt(i++); chr3 = input.charCodeAt(i++); enc1 = chr1 >> 2; enc2 = ((chr1 & 3) << 4) | (chr2 >> 4); enc3 = ((chr2 & 15) << 2) | (chr3 >> 6); enc4 = chr3 & 63; if (isNaN(chr2)) { enc3 = enc4 = 64; } else if (isNaN(chr3)) { enc4 = 64; } output = output + this._keyStr.charAt(enc1) + this._keyStr.charAt(enc2) + this._keyStr.charAt(enc3) + this._keyStr.charAt(enc4); } return output; }, // public method for decoding decode : function (input) { var output = ""; var chr1, chr2, chr3; var enc1, enc2, enc3, enc4; var i = 0; input = input.replace(/[^A-Za-z0-9\+\/\=]/g, ""); while (i < input.length) { enc1 = this._keyStr.indexOf(input.charAt(i++)); enc2 = this._keyStr.indexOf(input.charAt(i++)); enc3 = this._keyStr.indexOf(input.charAt(i++)); enc4 = this._keyStr.indexOf(input.charAt(i++)); chr1 = (enc1 << 2) | (enc2 >> 4); chr2 = ((enc2 & 15) << 4) | (enc3 >> 2); chr3 = ((enc3 & 3) << 6) | enc4; output = output + String.fromCharCode(chr1); if (enc3 != 64) { output = output + String.fromCharCode(chr2); } if (enc4 != 64) { output = output + String.fromCharCode(chr3); } } output = Base64._utf8_decode(output); return output; }, // private method for UTF-8 encoding _utf8_encode : function (string) { string = string.replace(/\r\n/g,"\n"); var utftext = ""; for (var n = 0; n < string.length; n++) { var c = string.charCodeAt(n); if (c < 128) { utftext += String.fromCharCode(c); } else if((c > 127) && (c < 2048)) { utftext += String.fromCharCode((c >> 6) | 192); utftext += String.fromCharCode((c & 63) | 128); } else { utftext += String.fromCharCode((c >> 12) | 224); utftext += String.fromCharCode(((c >> 6) & 63) | 128); utftext += String.fromCharCode((c & 63) | 128); } } return utftext; }, // private method for UTF-8 decoding _utf8_decode : function (utftext) { var string = ""; var i = 0; var c = c1 = c2 = 0; while ( i < utftext.length ) { c = utftext.charCodeAt(i); if (c < 128) { string += String.fromCharCode(c); i++; } else if((c > 191) && (c < 224)) { c2 = utftext.charCodeAt(i+1); string += String.fromCharCode(((c & 31) << 6) | (c2 & 63)); i += 2; } else { c2 = utftext.charCodeAt(i+1); c3 = utftext.charCodeAt(i+2); string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63)); i += 3; } } return string; } } /* ---------------------------------------------- * DEPRECATED * 하위호환용으로 남겨 놓음 * ------------------------------------------- */ if(typeof(resizeImageContents) == 'undefined') { function resizeImageContents() {} } if(typeof(activateOptionDisabled) == 'undefined') { function activateOptionDisabled() {} } objectExtend = jQuery.extend; /** * @brief 특정 Element의 display 옵션 토글 **/ function toggleDisplay(objId) { jQuery('#'+objId).toggle(); } /* 체크박스 선택 */ function checkboxSelectAll(formObj, name, checked) { var itemName = name; var option = {}; if(typeof(formObj) != "undefined") option.wrap = formObj; if(typeof(checked) != "undefined") option.checked = checked; XE.checkboxToggleAll(itemName, option); } /* 체크박스를 실행 */ function clickCheckBoxAll(formObj, name) { var itemName = name; var option = { doClick:true }; if(typeof(formObj) != "undefined") option.wrap = formObj; XE.checkboxToggleAll(itemName, option); } /** * @brief 에디터에서 사용하되 내용 여닫는 코드 (zb5beta beta 호환용으로 남겨 놓음) **/ function svc_folder_open(id) { jQuery("#_folder_open_"+id).hide(); jQuery("#_folder_close_"+id).show(); jQuery("#_folder_"+id).show(); } function svc_folder_close(id) { jQuery("#_folder_open_"+id).show(); jQuery("#_folder_close_"+id).hide(); jQuery("#_folder_"+id).hide(); } /** * @brief 날짜 선택 (달력 열기) **/ function open_calendar(fo_id, day_str, callback_func) { if(typeof(day_str)=="undefined") day_str = ""; var url = "./common/tpl/calendar.php?"; if(fo_id) url+="fo_id="+fo_id; if(day_str) url+="&day_str="+day_str; if(callback_func) url+="&callback_func="+callback_func; popopen(url, 'Calendar'); } var loaded_popup_menus = XE.loaded_popup_menus; function createPopupMenu() {} function chkPopupMenu() {} function displayPopupMenu(ret_obj, response_tags, params) { XE.displayPopupMenu(ret_obj, response_tags, params); } function GetObjLeft(obj) { return jQuery(obj).offset().left; } function GetObjTop(obj) { return jQuery(obj).offset().top; } function replaceOuterHTML(obj, html) { jQuery(obj).replaceWith(html); } function getOuterHTML(obj) { return jQuery(obj).html().trim(); } /** * @file common/js/xml_handler.js * @author zero * @brief zbxe내에서 ajax기능을 이용함에 있어 module, act를 잘 사용하기 위한 자바스크립트 **/ // xml handler을 이용하는 user function var show_waiting_message = true; function exec_xml(module, act, params, callback_func, response_tags, callback_func_arg, fo_obj) { var oXml = new xml_handler(); oXml.reset(); if(typeof(params)!='undefined') { for(var key in params) { if(!params.hasOwnProperty(key)) continue; var val = params[key]; oXml.addParam(key, val); } } oXml.addParam("module", module); oXml.addParam("act", act); if(typeof(response_tags)=="undefined" || response_tags.length<1) response_tags = new Array('error','message'); oXml.request(xml_response_filter, oXml, callback_func, response_tags, callback_func_arg, fo_obj); } // 결과 처리 후 callback_func에 넘겨줌 function xml_response_filter(oXml, callback_func, response_tags, callback_func_arg, fo_obj) { var text = oXml.getResponseText(); if(text && !/^/i.test(text)) { var waiting_obj = xGetElementById("waitingforserverresponse"); if(waiting_obj) waiting_obj.style.visibility = "hidden"; alert(text); return null; } var xmlDoc = oXml.getResponseXml(); if(!xmlDoc) return null; var waiting_obj = xGetElementById("waitingforserverresponse"); if(waiting_obj) waiting_obj.style.visibility = "hidden"; var ret_obj = oXml.toZMsgObject(xmlDoc, response_tags); if(ret_obj["error"]!=0) { alert(ret_obj["message"]); return null; } if(ret_obj["redirect_url"]) { location.href=ret_obj["redirect_url"]; return null; } if(!callback_func) return null; callback_func(ret_obj, response_tags, callback_func_arg, fo_obj); return null; } // xml handler function xml_handler() { this.objXmlHttp = null; this.method_name = null; this.xml_path = request_uri+"index.php"; this.params = new Array(); this.reset = xml_handlerReset; this.getXmlHttp = zGetXmlHttp; this.request = xml_handlerRequest; this.setPath = xml_handlerSetPath; this.addParam = xml_handlerAddParam; this.getResponseXml = xml_handlerGetResponseXML; this.getResponseText = xml_handlerGetResponseText; this.toZMsgObject = xml_handlerToZMsgObject; this.parseXMLDoc = xml_parseXmlDoc; this.objXmlHttp = this.getXmlHttp(); } function zGetXmlHttp() { if (window.XMLHttpRequest) return new XMLHttpRequest(); else if (window.ActiveXObject) { try { return new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { return new ActiveXObject("Microsoft.XMLHTTP"); } } return null; } function xml_handlerRequest(callBackFunc, xmlObj, callBackFunc2, response_tags, callback_func_arg, fo_obj) { var rd = ""; rd += "\n" + "\n" + "\n" for (var key in this.params) { if(!this.params.hasOwnProperty(key)) continue; var val = this.params[key]; rd += "<"+key+">\n"; } rd += "\n" + "\n"; // ssl action if(typeof(ssl_actions)!='undefined' && typeof(ssl_actions.length)!='undefined' && typeof(this.params['act'])!='undefined' && /^https:\/\//i.test(location.href) ) { var action = this.params['act']; for(i=0;i0) { ret_obj[name][ret_obj[name].length] = value; } else { var tmp_value = ret_obj[name]; ret_obj[name] = new Array(); ret_obj[name][ret_obj[name].length] = tmp_value; ret_obj[name][ret_obj[name].length] = value; } } } obj = obj.nextSibling; } return ret_obj; */ } function xml_handlerToZMsgObject(xmlDoc, tags) { if(!xmlDoc) return null; if(!tags) tags = new Array("error","message"); tags[tags.length] = "redirect_url"; tags[tags.length] = "act"; var parsed_array = this.parseXMLDoc(xmlDoc.getElementsByTagName('response')[0]); if(typeof(parsed_array)=='undefined') { var ret = new Array(); ret['error'] = -1; ret['message'] = "Unexpected error occured."; try{ if(typeof(xmlDoc.childNodes[0].firstChild.data)!='undefined') ret['message']+="\r\n"+xmlDoc.childNodes[0].firstChild.data; } catch(e) { } return ret; } var obj_ret = new Array(); for(var i=0; i 1) o = X.escape(X.innerXml(xml)); else for (var n=xml.firstChild; n; n=n.nextSibling){ //o["#cdata"] = X.escape(n.nodeValue); o = X.escape(n.nodeValue); } } } if (!xml.attributes.length && !xml.firstChild) o = null; } else if (xml.nodeType==9) { // document.node o = X.toObj(xml.documentElement); } else alert("unhandled node type: " + xml.nodeType); return o; }, toJson: function(o, name, ind) { var json = name ? ("\""+name+"\"") : ""; if (o instanceof Array) { for (var i=0,n=o.length; i 1 ? ("\n"+ind+"\t"+o.join(",\n"+ind+"\t")+"\n"+ind) : o.join("")) + "]"; } else if (o == null) json += (name&&":") + "null"; else if (typeof(o) == "object") { var arr = []; for (var m in o) arr[arr.length] = X.toJson(o[m], m, ind+"\t"); json += (name?":{":"{") + (arr.length > 1 ? ("\n"+ind+"\t"+arr.join(",\n"+ind+"\t")+"\n"+ind) : arr.join("")) + "}"; } else if (typeof(o) == "string") json += (name&&":") + "\"" + o.toString() + "\""; else json += (name&&":") + o.toString(); return json; }, innerXml: function(node) { var s = "" if ("innerHTML" in node) s = node.innerHTML; else { var asXml = function(n) { var s = ""; if (n.nodeType == 1) { s += "<" + n.nodeName; for (var i=0; i"; } else s += "/>"; } else if (n.nodeType == 3) s += n.nodeValue; else if (n.nodeType == 4) s += ""; return s; }; for (var c=node.firstChild; c; c=c.nextSibling) s += asXml(c); } return s; }, escape: function(txt) { return txt.replace(/[\\]/g, "\\\\") .replace(/[\"]/g, '\\"') .replace(/[\n]/g, '\\n') .replace(/[\r]/g, '\\r'); }, removeWhite: function(e) { e.normalize(); for (var n = e.firstChild; n; ) { if (n.nodeType == 3) { // text node if (!n.nodeValue.match(/[^ \f\n\r\t\v]/)) { // pure whitespace text node var nxt = n.nextSibling; e.removeChild(n); n = nxt; } else n = n.nextSibling; } else if (n.nodeType == 1) { // element node X.removeWhite(n); n = n.nextSibling; } else // any other node n = n.nextSibling; } return e; } }; if (xml.nodeType == 9) // document node xml = xml.documentElement; var json = X.toJson(X.toObj(X.removeWhite(xml)), xml.nodeName, ""); return "{" + (tab ? json.replace(/\t/g, tab) : json.replace(/\t|\n/g, "")) + "}"; } /** * @brief exec_json (exec_xml와 같은 용도) **/ (function($){ $.exec_json = function(action,data,func){ if(typeof(data) == 'undefined') data = {}; action = action.split("."); if(action.length == 2){ if(show_waiting_message) { $("#waitingforserverresponse").html(waiting_message).css('top',$(document).scrollTop()+20).css('left',$(document).scrollLeft()+20).css('visibility','visible'); } $.extend(data,{module:action[0],act:action[1]}); $.ajax({ type:"POST" ,dataType:"json" ,url:request_uri ,contentType:"application/json" ,data:$.param(data) ,success : function(data){ $("#waitingforserverresponse").css('visibility','hidden'); if(data.error > 0) alert(data.message); if($.isFunction(func)) func(data); } }); } }; $.fn.exec_html = function(action,data,type,func,args){ if(typeof(data) == 'undefined') data = {}; if(!$.inArray(type, ['html','append','prepend'])) type = 'html'; var self = $(this); action = action.split("."); if(action.length == 2){ if(show_waiting_message) { $("#waitingforserverresponse").html(waiting_message).css('top',$(document).scrollTop()+20).css('left',$(document).scrollLeft()+20).css('visibility','visible'); } $.extend(data,{module:action[0],act:action[1]}); $.ajax({ type:"POST" ,dataType:"html" ,url:request_uri ,data:$.param(data) ,success : function(html){ $("#waitingforserverresponse").css('visibility','hidden'); self[type](html); if($.isFunction(func)) func(args); } }); } }; })(jQuery); /** * @file common/js/xml_js_filter.js * @author zero (zero@nzeo.com) * @brief xml filter에서 사용될 js * * zbxe 에서 form의 동작시 필수입력 여부등을 선처리하고 xml_handler.js의 exec_xml()을 통해서 * 특정 모듈과의 ajax 통신을 통해 process를 진행시킴 **/ var alertMsg = new Array(); var target_type_list = new Array(); var notnull_list = new Array(); var extra_vars = new Array(); /** * @function filterAlertMessage * @brief ajax로 서버에 요청후 결과를 처리할 callback_function을 지정하지 않았을 시 호출되는 기본 함수 **/ function filterAlertMessage(ret_obj) { var error = ret_obj["error"]; var message = ret_obj["message"]; var act = ret_obj["act"]; var redirect_url = ret_obj["redirect_url"]; var url = location.href; if(typeof(message)!="undefined"&&message&&message!="success") alert(message); if(typeof(act)!="undefined" && act) url = current_url.setQuery("act", act); else if(typeof(redirect_url)!="undefined" && redirect_url) url = redirect_url; if(url == location.href) url = url.replace(/#(.+)$/,''); location.href = url; } /** * @class XmlJsFilter * @authro zero (zero@nzeo.com) * @brief form elements, module/act, callback_user_func을 이용하여 서버에 ajax로 form 데이터를 넘기고 결과를 받아오는 js class **/ function XmlJsFilter(form_object, module, act, callback_user_func) { this.field = new Array(); this.parameter = new Array(); this.response = new Array(); this.fo_obj = form_object; this.module = module; this.act = act; this.user_func = callback_user_func; this.setFocus = XmlJsFilterSetFocus; this.addFieldItem = XmlJsFilterAddFieldItem; this.addParameterItem = XmlJsFilterAddParameterItem; this.addResponseItem = XmlJsFilterAddResponseItem; this.getValue = XmlJsFilterGetValue; this.executeFilter = XmlJsFilterExecuteFilter; this.checkFieldItem = XmlJsFilterCheckFieldItem; this.getParameterParam = XmlJsFilterGetParameterParam; this.alertMsg = XmlJsFilterAlertMsg; this.proc = XmlJsFilterProc; } function XmlJsFilterSetFocus(target_name) { var obj = this.fo_obj[target_name]; if(typeof(obj)=='undefined' || !obj) return; var length = obj.length; try { if(typeof(length)!='undefined') { obj[0].focus(); } else { obj.focus(); } } catch(e) { } } function XmlJsFilterAddFieldItem(target, required, minlength, maxlength, equalto, filter) { var obj = new Array(target, required, minlength, maxlength, equalto, filter); this.field[this.field.length] = obj; } function XmlJsFilterAddParameterItem(param, target) { var obj = new Array(param, target); this.parameter[this.parameter.length] = obj; } function XmlJsFilterAddResponseItem(name) { this.response[this.response.length] = name; } function XmlJsFilterGetValue(target_name) { var obj = this.fo_obj[target_name]; if(typeof(obj)=='undefined' || !obj) return ''; var value = ''; var length = obj.length; var type = obj.type; if((typeof(type)=='undefined'||!type) && typeof(length)!='undefined' && typeof(obj[0])!='undefined' && length>0) type = obj[0].type; else length = 0; switch(type) { case 'checkbox' : if(length>0) { var value_list = new Array(); for(var i=0;i0) { for(var i=0;i=0) value = obj.options[obj.selectedIndex].value; break; default : if(length>0 && target_type_list[target_name]) { switch(target_type_list[target_name]) { case 'kr_zip' : var val1 = obj[0].value; var val2 = obj[1].value; if(val1&&val2) { value = val1+'|@|'+val2; } break; case 'tel' : var val1 = obj[0].value; var val2 = obj[1].value; var val3 = obj[2].value; if(val1&&val2&&val3) { value = val1+'|@|'+val2+'|@|'+val3; } break; } } else { value = obj.value; } break; } if(typeof(value)=='undefined'||!value) return ''; return value.trim(); } function XmlJsFilterExecuteFilter(filter, value) { switch(filter) { case "email" : case "email_address" : var regx = /^[_0-9a-zA-Z-]+(\.[_0-9a-zA-Z-]+)*@[0-9a-zA-Z-]+(\.[0-9a-zA-Z-]+)*$/; return regx.test(value); break; case "userid" : case "user_id" : var regx = /^[a-zA-Z]+([_0-9a-zA-Z]+)*$/; return regx.test(value); break; case "homepage" : var regx = /^(http|https|ftp|mms):\/\/[0-9a-z-]+(\.[_0-9a-z-\/\~]+)+(:[0-9]{2,4})*$/; return regx.test(value); break; case "korean" : var regx = /^[가-힣]*$/; return regx.test(value); break; case "korean_number" : var regx = /^[가-힣0-9]*$/; return regx.test(value); break; case "alpha" : var regx = /^[a-zA-Z]*$/; return regx.test(value); break; case "alpha_number" : var regx = /^[a-zA-Z][a-zA-Z0-9\_]*$/; return regx.test(value); break; case "number" : return !isNaN(value); break; } return null; } function XmlJsFilterAlertMsg(target, msg_code, minlength, maxlength) { var target_msg = ""; if(alertMsg[target]!='undefined') target_msg = alertMsg[target]; else target_msg = target; var msg = ""; if(typeof(alertMsg[msg_code])!='undefined') { if(alertMsg[msg_code].indexOf('%s')>=0) msg = alertMsg[msg_code].replace('%s',target_msg); else msg = target_msg+alertMsg[msg_code]; } else { msg = msg_code; } if(typeof(minlength)!='undefined' && typeof(maxlength)!='undefined') msg += "("+minlength+"~"+maxlength+")"; alert(msg); this.setFocus(target); return false; } function XmlJsFilterCheckFieldItem() { for(var i=0; i0 && maxlength>0 && (value.length < minlength || value.length > maxlength)) return this.alertMsg(target, 'outofrange', minlength, maxlength); if(equalto) { var equalto_value = this.getValue(equalto); if(equalto_value != value) return this.alertMsg(target, 'equalto'); } if(filter.length && filter[0]) { for(var j=0;j= 10) { var content = obj.nodeValue; if(!url_regx.test(content)) continue; content = content.replace(//g, '>'); content = content.replace(url_regx, '$1'); $(obj).replaceWith(content); delete(content); } else if(obj.nodeType == 1 && obj.childNodes.length) { replaceHrefLink(obj); } } } $('.xe_content').each(function() { if(url_regx.test($(this).text())) replaceHrefLink(this); }); }); // search form function searchForm(obj_form) { if (!obj_form) return false; if (obj_form.is_keyword.length <= 0) { return false; } location.href = "/search/" + obj_form.is_keyword.value; return false; } // Hide And Show Toggle var cc=0 function hideShow(id) { if (cc==0) { cc=1 document.getElementById(id).style.display="none"; } else { cc=0 document.getElementById(id).style.display="block"; } } // Show And Hide Toggle var cc=0 function showHide(id) { if (cc==0) { cc=1 document.getElementById(id).style.display="block"; } else { cc=0 document.getElementById(id).style.display="none"; } } // Local Navigation Toggle function lnbToggle(id) { for (num = 1; num <= 3; num++) document.getElementById('D3MG'+num).style.display='none'; //D4MG1~D4MG3 까지 숨긴 다음 document.getElementById(id).style.display='block'; //해당 ID만 보임 } // IS function chkIsKind(key, value) { showHide('selectOrder'); xGetElementById('search_target'+key).checked = true; xInnerHtml('search_target_label', value); } // addLoadEvent function addLoadEvent(func) { var oldonload = window.onload; if (typeof window.onload != 'function') { window.onload = func; } else { window.onload = function() { oldonload(); func(); } } } // addReadyEvent function addReadyEvent(func) { //if (!window.domready) { if (typeof window.domready == 'undefined') { addLoadEvent(func); return; } window.addEvent('domready', function() { func(); }); } //--------------------------------------------------------------------------- // getElementsByClass // // http://forum.standardmag.org/viewtopic.php?pid=3179 // function getElementsByClass(_class, el_id) { var parent, els, returnArr = new Array(), i = 0; parent = (el_id) ? document.getElementById(el_id) : document; els = parent.getElementsByTagName('*') || parent.all; for (i; i < els.length; i++) if (els[i].className == _class) returnArr[returnArr.length] = els[i]; return returnArr; } //--------------------------------------------------------------------------- function GetCookie(sName) { // 쿠키읽기.. var aRec, aCook = document.cookie.split("; "); for (var i = 0; i < aCook.length; i++) { aRec = aCook[i].split("="); if (sName.toLowerCase() == unescape(aRec[0].toLowerCase())) return aRec[1]; } return ""; } function SetCookie(cookieName, cookieVal) { date = new Date(); validity = 100; date.setDate(date.getDate() + validity); document.cookie = cookieName + '=' + escape(cookieVal) + '; expires=' + date.toGMTString(); } function SetCookieTmp(cookieName, cookieVal) { document.cookie = cookieName + '=' + escape(cookieVal) + ';'; } function SetCookieToday(sName, sValue) { date = new Date(); date.setHours(23); date.setMinutes(59); date.setSeconds(59); document.cookie = sName + '=' + escape(sValue) + '; expires=' + date.toGMTString(); } /* http://html.nhndesign.com/blog/?p=21 */ (function() { /* Use Object Detection to detect IE6 */ var m = document.uniqueID /*IE*/ document.compatMode /*>=IE6*/ !window.XMLHttpRequest /*<=IE6*/ document.execCommand; try { if (!!m) { m("BackgroundImageCache", false, true) /* = IE6 only */ } } catch(oh) { }; })(); var menuObj = new Array( // info { 'menu_id' : 'info', 'title' : '정보 마당', 'submenu_pos' : 0, //'url' : '/community', 'submenu' : [ { 'title' : '공지사항', 'url' : '/notices' }, { 'title' : '대항해시대 새소식', 'url' : '/dho_news' }, { 'title' : '팁과 정보', 'url' : '/dho_tips' }, { 'title' : '추천정보', 'url' : '/dho_recomm' }, { 'title' : '질문과 답변', 'url' : '/dho_qna' }, { 'title' : '길드 소개', 'url' : '/dho_guilds' }, { 'title' : '대항해시대속으로', 'url' : '/age_discovery' } ] }, // journal { 'menu_id' : 'journal', 'title' : '저널', 'submenu_pos' : 0, //'url' : '/community', 'submenu' : [ { 'title' : 'DHO Guide 저널', 'url' : '/dho_journals' }, { 'title' : 'DHO Guide 저널 기사', 'url' : '/journal_articles' }, { 'title' : '유저 기자단', 'url' : '/journal_reporter' }, { 'title' : '저널 제보', 'url' : '/journal_reports' }, { 'title' : '저널팀 회의실', 'url' : '/journal_team' }, { 'title' : '저널팀 편집실', 'url' : '/journal_edit' } ] }, // community { 'menu_id' : 'community', 'title' : '커뮤니티', 'submenu_pos' : 0, //'url' : '/community', 'submenu' : [ { 'title' : '감사합니다!', 'url' : '/thanks' }, //{ 'title' : '자유게시판', 'url' : '/talk' }, { 'title' : '즐거운게시판', 'url' : '/talk' }, { 'title' : '이슈게시판', 'url' : '/dho_issues' }, { 'title' : '서버게시판', 'url' : '/dho_servers' }, //{ 'title' : '질문과 답변', 'url' : '/dho_qna' }, { 'title' : '도움 요청', 'url' : '/dho_help' }, { 'title' : '대항해시대 장터', 'url' : '/dho_trades' }, { 'title' : '스크린샷', 'url' : '/dho_screen' }, { 'title' : '건의와 제안', 'url' : '/proposals' }, { 'title' : '낙서판', 'url' : '/scribbling' } ] }, // wiki { 'menu_id' : 'wiki', 'title' : '위키', 'submenu_pos' : 0, 'submenu' : [ { 'title' : '위키란 무엇인가', 'wiki' : '위키위키' }, { 'title' : '위키 첫페이지', 'wiki' : 'FrontPage' }, { 'title' : '위키 지도', 'wiki' : 'SiteMap' }, { 'title' : '자주찾는 페이지', 'wiki' : 'FavoritePages' }, { 'title' : '위키 도움말', 'wiki' : 'HelpContents' }, { 'title' : '위키 분류', 'wiki' : '분류' }, { 'title' : '위키 검색', 'wiki' : 'FindPage' }, { 'title' : '바뀐글', 'wiki' : 'RecentChanges' } ] }, // finds { 'menu_id' : 'finds', 'title' : '발견물', 'submenu_pos' : 90, 'submenu' : [ { 'title' : '발견물', 'info' : 'finds' }, { 'title' : '발견물 카드', 'info' : 'cards' }, { 'title' : '논전 콤보', 'info' : 'combos' }, { 'title' : '논전 덱 빌더', 'info' : 'decks' }, { 'title' : '퀘스트', 'info' : 'quests' }, { 'title' : '지도', 'info' : 'maps' }, { 'title' : '침몰선', 'info' : 'sunkens' }, { 'title' : '발견물 우대 보고', 'info' : 'finds_report' }, { 'title' : '논전 정보', 'wiki' : '논전' }, { 'title' : '이벤트 정보', 'wiki' : '이벤트' } ] }, // items { 'menu_id' : 'items', 'title' : '아이템', 'submenu_pos' : 165, 'submenu' : [ { 'title' : '장비품', 'info' : 'equipments'}, { 'title' : '교역품', 'info' : 'trades'}, //{ 'title' : '교역품 구입 시세', 'info' : 'trades_price', 'member_only' : true }, { 'title' : '명산품', 'info' : 'trades_specialty' }, { 'title' : '소비품', 'info' : 'consumers' }, { 'title' : '추천장', 'info' : 'recommends' }, { 'title' : '가구', 'info' : 'furnitures' }, { 'title' : '장식물', 'info' : 'ornaments' }, { 'title' : '레시피', 'info' : 'recipes' }, { 'title' : '타롯카드', 'info' : 'tarots' }, { 'title' : '필드 획득 아이템', 'info' : 'items_field' } ] }, // ships { 'menu_id' : 'ships', 'title' : '선박', 'submenu_pos' : 130, 'submenu' : [ { 'title' : '선박', 'info' : 'ships' }, { 'title' : '조인트 빌드', 'info' : 'ships_joint' }, { 'title' : '조인트 소재', 'info' : 'joint_items' }, { 'title' : '옵션 스킬', 'info' : 'joint_skills' }, { 'title' : '대포', 'info' : 'ship_cannons' }, { 'title' : '보조돛', 'info' : 'ship_sails' }, { 'title' : '선수상', 'info' : 'ship_figures' }, { 'title' : '추가장갑', 'info' : 'ship_armors' }, { 'title' : '특수장비', 'info' : 'ship_specials' }, { 'title' : '문장', 'info' : 'ship_arms' }, { 'title' : '돛 도료', 'info' : 'simul_sails' } //{ 'title' : '조선 정보', 'wiki' : '조선' } ] }, // npcs { 'menu_id' : 'npcs', 'title' : 'NPC', 'submenu_pos' : 310, 'submenu' : [ { 'title' : '육상 NPC', 'info' : 'npcs/type/1' }, { 'title' : '해상 NPC', 'info' : 'npcs/type/2' }, { 'title' : '도시 인물', 'info' : 'npcs_town' }, { 'title' : '백병 정보', 'wiki' : '백병' }, { 'title' : '육상전 지침서 정보', 'wiki' : '육상전지침서' }, { 'title' : '육상 NPC 드랍 품목 정보', 'wiki' : '드랍품목' } ] }, // fields { 'menu_id' : 'fields', 'title' : '필드', 'submenu_pos' : 375, 'submenu' : [ { 'title' : '필드', 'info' : 'fields' }, { 'title' : '해역', 'info' : 'seas' }, { 'title' : '해상 풍향', 'info' : 'wind_time' }, { 'title' : '도시', 'info' : 'towns' }, { 'title' : '발전도 로그', 'info' : 'towns_log', 'member_only' : true }, { 'title' : '동맹항 분포', 'info' : 'towns_ally', 'member_only' : true }, { 'title' : '세력 분포', 'info' : 'towns_influence', 'member_only' : true }, { 'title' : '개척지 분포', 'info' : 'towns_exploit', 'member_only' : true }, { 'title' : '도달도', 'info' : 'reach' }, { 'title' : '개인농장', 'info' : 'farms' }, { 'title' : '문화권 정보', 'wiki' : '문화권' } ] }, // skills { 'menu_id' : 'skills', 'title' : '스킬', 'submenu_pos' : 440, 'submenu' : [ { 'title' : '스킬', 'info' : 'skills' }, { 'title' : '스킬 수 계산기', 'info' : 'simul_skills' }, { 'title' : '언어 사용 도시', 'info' : 'lang' }, { 'title' : '직업', 'info' : 'jobs' }, { 'title' : '부관', 'info' : 'aides' }, { 'title' : '아이템 효과', 'info' : 'effects' }, { 'title' : '스킬 정보', 'wiki' : '스킬' }, { 'title' : '부관 정보', 'wiki' : '부관' }, { 'title' : '호칭 정보', 'wiki' : '호칭' } ] }, // exp { 'menu_id' : 'exp', 'title' : '경험치', 'submenu_pos' : 200, 'submenu' : [ { 'title' : '경험치', 'info' : 'exp' }, { 'title' : '부관 경험치', 'info' : 'exp_aides' }, { 'title' : '재발견 추가 경험치', 'info' : 'exp_refind' }, { 'title' : '스킬 숙련도', 'info' : 'exp_skills' }, { 'title' : '조선 스킬 숙련도', 'info' : 'exp_shipbuild' }, { 'title' : '학문 스킬 숙련도', 'info' : 'exp_subjects' }, { 'title' : '전투 경험치 패널티', 'info' : 'exp_penalty' } ] } /* // simul , { 'menu_id' : 'simul', 'title' : '계산기', 'submenu_pos' : 200, 'submenu' : [ { 'title' : '스킬 수 계산기', 'info' : 'simul_skills' }, { 'title' : '돛 도료', 'info' : 'simul_sails' } ] } */ ); var on_menu_id = ""; var data_type = ""; //--------------------------------------------------------------------------- function printMenu() { var div_main_menu = document.getElementById('main_menu'); var on_main = ""; var str_main_menu = ""; var i, j; var tmp_url; var page_type = ''; if (typeof(div_main_menu) == 'undefined') return; //----------------------------------------------------------------------- if (current_mid.length > 0) page_type = 'zbxe'; else if (current_url.length > 0) { tmp_url = current_url.match('data_type=[a-z_]+'); if (tmp_url != null && typeof(tmp_url[0]) == 'string' && tmp_url[0].length > 0) { page_type = 'info'; data_type = tmp_url[0].replace('data_type=', ''); } else if (current_url.indexOf('xiki') > -1 || current_url.indexOf('Wiki') > -1) { page_type = 'wiki'; on_main = 'wiki'; } } //----------------------------------------------------------------------- str_main_menu = ''; //----------------------------------------------------------------------- div_main_menu.innerHTML = str_main_menu; //----------------------------------------------------------------------- if (on_main.length == 0) on_main = "info"; showSubMenu(on_main); } function showSubMenu(sub_id) { var div_sub_menu = document.getElementById('sub_menu'); var str_sub_menu = ""; var str_url = ""; var str_style = ""; var main_no = 0; var i; if (typeof(div_sub_menu) == 'undefined') return; if (sub_id.length <= 0) return; if (sub_id == on_menu_id) return; if (on_menu_id.length > 0) { document.getElementById("main_" + on_menu_id).className = ''; } document.getElementById("main_" + sub_id).className = 'on'; //----------------------------------------------------------------------- for (i = 0; i < menuObj.length; i++) { if (sub_id == menuObj[i].menu_id) { main_no = i; break; } } //----------------------------------------------------------------------- var url_trades = '/dho_trades'; var url_helps = '/dho_help'; var url_guilds = '/dho_guilds'; var url_servers = '/dho_servers'; if (user_server) { var category_trades = [0, 11304, 11305, 11306, 547427, 552325, 552327, 623512]; var category_helps = [0, 270304, 270306, 270308, 547431, 552306, 552315, 623510]; var category_guilds = [0, 639603, 639605, 639611, 639613, 639619, 639621, 639623]; var category_servers = [0, 932263, 932265, 932267, 932277, 932279, 932288, 932294]; url_trades = '/dho_trades/category/' + category_trades[user_server]; url_helps = '/dho_help/category/' + category_helps[user_server]; url_guilds = '/dho_guilds/category/' + category_guilds[user_server]; url_servers = '/dho_servers/category/' + category_servers[user_server]; } //----------------------------------------------------------------------- str_sub_menu = '\n\n"; div_sub_menu.innerHTML = str_sub_menu; //document.getElementById('sub_' + sub_id).style.display = 'block'; document.getElementById('sub_' + sub_id).style.display = 'block'; /* var objSubMenuItem = document.getElementById('sub_' + sub_id); var objMainMenuItem = document.getElementById('main_' + sub_id); var objMSubmenuContainer = document.getElementById('sub_menu'); objSubMenuItem.style.display = 'block'; var nLeft = objMainMenuItem.offsetLeft - objMSubmenuContainer.offsetLeft - 10; var nWidth = objSubMenuItem.offsetWidth; var nPos = nLeft; if ((nLeft + nWidth) > 800) nPos = 800 - nWidth - 10; objSubMenuItem.style.left = nPos + 'px'; //alert('left = ' + nLeft + 'px, right = ' + nRight + 'px, width = ' + nWidth+ 'px, pos = ' + nPos + 'px'); */ /* var objSubMenuItem = document.getElementById('sub_' + sub_id); objSubMenuItem.style.left = menuObj[main_no].submenu_pos + 'px'; objSubMenuItem.style.width = (800 - menuObj[main_no].submenu_pos) + 'px'; objSubMenuItem.style.display = 'block'; */ on_menu_id = sub_id; } // functions from http://network.hanb.co.kr/view.php?bi_id=1427 function getElementAbsPosX(el) { var dx = 0; if (el.offsetParent) { dx = el.offsetLeft + 8; while (el = el.offsetParent) { dx += el.offsetLeft; } } return dx; } function getElementAbsPosY(el) { var dy = 0; if (el.offsetParent) { dy = el.offsetTop + el.offsetHeight / 2; while (el = el.offsetParent) { dy += el.offsetTop; } } return dy; } function viewExploitTab() { if (user_server == 0) return; var tab_exploit = 'tab_exploit_' + user_server; var obj_tab = xGetElementById(tab_exploit); if (obj_tab) overTab(obj_tab); } function viewTownLogTab() { if (user_server == 0) return; var tab_town_log = 'tab_town_log_' + user_server; var obj_tab = xGetElementById(tab_town_log); if (obj_tab) overTab(obj_tab); } function setWidgetTab() { if (user_server == 0) return; if (current_mid != 'home') return; var tab_town_log = 'tab_town_log_' + user_server; var obj_tab = xGetElementById(tab_town_log); if (obj_tab) overTab(obj_tab); var tab_exploit = 'tab_exploit_' + user_server; var obj_tab = xGetElementById(tab_exploit); if (obj_tab) overTab(obj_tab); } //addLoadEvent(setWidgetTab); // 아래 방법은 Firefox에서는 동작, IE6에서는 동작하지 않는다 // release Focus function releaseFocus() { var myAnchors; if (document.all || document.getElementsByTagName) { if (document.all) myAnchors = document.all.tags("A"); else if (document.getElementsByTagName) myAnchors = document.getElementsByTagName("A"); for (i = 0; i < myAnchors.length; i++) { myAnchors[i].onfocus = function() { this.blur(); } var image; if (document.all) image = myAnchors[i].all.tags("IMG"); else if (document.getElementsByTagName) image = myAnchors[i].getElementsByTagName("IMG"); if (image.length > 0) { myAnchors[i].style.border = '0'; myAnchors[i].style.backgroundColor = 'transparent'; } } } } addReadyEvent(releaseFocus); function arrangeListIcons() { if (document.all || document.getElementsByTagName) { var icons; if (document.all) icons = document.all.tags("IMG"); else if (document.getElementsByTagName) icons = document.getElementsByTagName("IMG"); for (i = 0; i < icons.length; i++) { if (icons[i].title == 'image') icons[i].style.display = 'none'; else if (icons[i].title == 'file') icons[i].style.display = 'none'; } } } addReadyEvent(arrangeListIcons); /* // 아래 방법은 IE6에는 동작, Firefox에서는 동작하지 않는다 function autoBlur() { if (event.srcElement.tagName != "BODY") { if (typeof(document.body) == 'object') document.body.focus(); document.onfocusin = null; } } document.onfocusin = autoBlur; */ /* // 아래 방법은 IE6에서는 동작, Firefox에서는 동작하지 않는다 // http://emotionbank.tistory.com/7 function bluring() { if (event.srcElement.tagName == "A" || event.srcElement.tagName == "IMG") document.body.focus(); } document.onfocusin=bluring; */