/* jQuery Translate plugin and related components */
/* 
 * jQuery Translate plugin 
 * 
 * Version: 1.3.9
 * 
 * http://code.google.com/p/jquery-translate/
 * 
 * Copyright (c) 2009 Balazs Endresz (balazs.endresz@gmail.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.
 * 
 * This plugin uses the 'Google AJAX Language API' (http://code.google.com/apis/ajaxlanguage/)
 * You can read the terms of use at http://code.google.com/apis/ajaxlanguage/terms.html
 * 
 */
(function(D){var A,J,H,G=false,B=false,I=[];
function E(){J=C.GL=google.language;
H=J.Languages;
G=true;
var K;
while(K=I.shift()){K()
}}function F(){}function C(){this.extend(D.translate);
delete this.defaults;
delete this.fn
}C.prototype={version:"1.3.9",translateInit:function(K,M){var L=this;
this.options=M;
M.from=this.toLanguageCode(M.from)||"";
M.to=this.toLanguageCode(M.to)||"";
if(M.fromOriginal&&M.nodes[0]){M.nodes.each(function(N){var O=D.translate.getData(this,M.from,M);
if(!O){return false
}K[N]=O
})
}if(typeof K==="string"){if(!M.comments){K=this.stripComments(K)
}this.rawSource="<div>"+K+"</div>";
this.isString=true
}else{if(!M.comments){K=D.map(K,function(N){return D.translate.stripComments(N)
})
}this.rawSource="<div>"+K.join("</div><div>")+"</div>";
this.isString=false
}this.from=M.from;
this.to=M.to;
this.source=K;
this.elements=M.nodes;
this.rawTranslation="";
this.translation=[];
this.startPos=0;
this.i=0;
this.stopped=false;
M.start.call(this,M.nodes[0]?M.nodes:K,M.from,M.to,M);
if(M.timeout>0){this.timeout=setTimeout(function(){M.onTimeout.call(L,M.nodes[0]?M.nodes:K,M.from,M.to,M)
},M.timeout)
}(M.toggle&&M.nodes[0])?this._toggle():this.translate();
return this
},translate:function(){if(this.stopped){return 
}var R=this,K=this.options;
this.rawSourceSub=this.truncate(this.rawSource.substr(this.startPos),1750);
this.startPos+=this.rawSourceSub.length;
var O=this.rawTranslation.length,S;
while((S=this.rawTranslation.lastIndexOf("</div>",O))>-1){O=S-1;
var T=this.rawTranslation.substr(0,O+1),Q=T.match(/<div[> ]/gi),P=T.match(/<\/div>/gi);
Q=Q?Q.length:0;
P=P?P.length:0;
if(Q!=P+1){continue
}var L=D(this.rawTranslation.substr(0,O+7)),N=L.length,M=this.i;
if(M==N){break
}L.slice(M,N).each(function(V,W){(function(){if(this.stopped){return false
}var Y=D(W).html().replace(/^\s/,""),X=M+V,Z=this.source,a=this.from.length<2&&this.detectedSourceLanguage||this.from;
this.translation[X]=Y;
if(!K.nodes[0]){if(this.isString){this.translation=Y
}else{Z=this.source[X]
}K.each.call(this,X,Y,Z,a,this.to,K)
}else{this.each(X,this.elements[X],Y,this.source[X],a,this.to,K);
K.each.call(this,X,this.elements[X],Y,this.source[X],a,this.to,K)
}this.i++
}).call(R)
});
break
}if(this.rawSourceSub.length>0){J.translate(this.rawSourceSub,this.from,this.to,function(V){(function(){if(V.error){return K.error.call(this,V.error,this.rawSourceSub,this.from,this.to,K)
}this.rawTranslation+=V.translation||this.rawSourceSub;
this.detectedSourceLanguage=V.detectedSourceLanguage;
this.translate()
}).call(R)
});
if(!K.nodes[0]){return 
}}else{if(!this.rawTranslation){return 
}var U=this.from.length<2&&this.detectedSourceLanguage||this.from;
if(this.timeout){clearTimeout(this.timeout)
}if(!K.nodes[0]){K.complete.call(this,this.translation,this.source,U,this.to,K)
}else{K.complete.call(this,this.elements.end(),this.elements,this.translation,this.source,U,this.to,K)
}}},stop:function(){if(this.stopped){return this
}this.stopped=true;
this.options.error.call(this,{message:"stopped"});
return this
}};
D.translate=function(M,L,K,O){if(M==A){return new C()
}if(D.isFunction(M)){return D.translate.ready(M,L)
}var N=new C();
return D.translate.ready(function(){return N.translateInit(M,D.translate._getOpt(L,K,O))
},false,N)
};
D.translate.fn=D.translate.prototype=C.prototype;
D.translate.fn.extend=D.translate.extend=D.extend;
D.translate.extend({stripComments:function(K){return K.replace(/<![ \r\n\t]*(--([^\-]|[\r\n]|-[^\-])*--[ \r\n\t]*)>/g,"")
},truncate:function(Q,L){var M,T,R,P,O,S,K=encodeURIComponent(Q);
for(M=0;
M<10;
M++){try{S=decodeURIComponent(K.substr(0,L-M))
}catch(N){continue
}if(S){break
}}return(!(T=/<(?![^<]*>)/.exec(S)))?((!(R=/>\s*$/.exec(S)))?((P=/[\.\?\!;:](?![^\.\?\!;:]*[\.\?\!;:])/.exec(S))?((O=/>(?![^>]*<)/.exec(S))?(P.index>O.index?S.substring(0,P.index+1):S.substring(0,O.index+1)):S.substring(0,P.index+1)):S):S):S.substring(0,T.index)
},getLanguages:function(S,R){if(S==A||(R==A&&!S)){return H
}var Q={},L=R,O=H;
if(R){O=D.translate.getLanguages(S)
}else{if(typeof S==="object"){L=S
}}if(L){for(var P=0,M=L.length,K,N;
P<M;
P++){K=D.translate.toLanguageCode(L[P]);
for(N in O){if(K===O[N]){Q[N]=O[N]
}}}}else{for(var N in H){if(J.isTranslatable(H[N])){Q[N]=H[N]
}}}return Q
},toLanguage:function(L,M){for(var K in H){if(L===K||L===H[K]||L.toUpperCase()===K||L.toLowerCase()===H[K].toLowerCase()){return M==="lowercase"?K.toLowerCase():M==="capitalize"?K.charAt(0).toUpperCase()+K.substr(1).toLowerCase():K
}}},toLanguageCode:function(K){return H.a||H[D.translate.toLanguage(K)]
},same:function(L,K){return L===K||D.translate.toLanguageCode(L)===D.translate.toLanguageCode(K)
},isTranslatable:function(K){return J.isTranslatable(D.translate.toLanguageCode(K))
},getBranding:function(L,K,M){return D(J.getBranding(L,K,M))
},load:function(L,M,K){B=true;
function N(){google.load(M||"language",K||"1",{callback:E})
}(typeof google!=="undefined"&&google.load)?N():D.getScript("http://www.google.com/jsapi?"+(L?"key="+L:""),N);
return D.translate
},ready:function(K,M,L){G?K():I.push(K);
if(!B&&!M){D.translate.load()
}return L||D.translate
},_getOpt:function(L,K,Q,P){var O,N,M={};
if(typeof L==="object"){M=L
}else{if(!K&&!Q){N=L
}if(!Q&&K){if(typeof K==="object"){N=L;
M=K
}else{O=L;
N=K
}}if(L!=A&&K&&Q){O=L;
N=K;
M=Q
}M.from=O||M.from||"";
M.to=N||M.to||""
}if(M.fromOriginal){M.toggle=true
}if(M.toggle){M.data=true
}if(M.async===true){M.async=2
}return D.extend({},D.translate._defaults,(P?D.fn.translate.defaults:D.translate.defaults),M)
},_defaults:{comments:false,start:F,error:F,each:F,complete:F,onTimeout:F,timeout:0,from:"",to:"",nodes:[],walk:true,returnAll:false,replace:true,rebind:true,data:true,setLangAttr:false,subject:true,not:"",altAndVal:true,async:false,toggle:false,fromOriginal:false}});
D.translate.defaults=D.extend({},D.translate._defaults)
})(jQuery);
/* 
 * DOM extension for the jQuery Translate plugin 
 * Version: 1.3.9
 * http://code.google.com/p/jquery-translate/
 */
(function(C){var A={text:true,button:true,submit:true};
function B(F,E){var G=F.css("text-align");
F.css("direction",E);
if(G==="right"){F.css("text-align","left")
}if(G==="left"){F.css("text-align","right")
}}function D(F,G){var H=F.nodeName.toUpperCase(),E=H==="INPUT"&&C.attr(F,"type").toLowerCase();
return typeof G.subject==="string"?G.subject:G.altAndVal&&(H==="IMG"||E==="image")?"alt":G.altAndVal&&A[E]?"value":H==="TEXTAREA"?"value":"html"
}C.translate.fn._toggle=function(){var G=this,H=this.options,F=H.nodes,I=H.to,E=false;
F.each(function(J){G.i=J;
var L=C(this),K=G.getData(this,I,H);
if(!K){return !(E=true)
}G.translation.push(K);
G.setLangAttr(L,I,H);
G.replace(L,K,H);
H.each.call(G,J,G.elements[J],K,G.source[J],G.from,I,H)
});
!E?H.complete.call(this,F.end(),F,G.translation,this.source,this.from,this.to,H):this.translate()
};
C.translate.extend({isRtl:{ar:true,he:true,iw:true,fa:true,ur:true},each:function(F,H,E,G,L,K,J){var I=C(H);
C.translate.setData(H,E,G,L,K,J);
C.translate.replace(I,E,J);
C.translate.setLangAttr(I,K,J)
},getData:function(E,H,G){var F=C.data(E,"translation");
return F&&F[H]&&F[H][D(E,G)]
},setData:function(H,E,G,L,K,J){if(!J.data){return 
}var F=D(H,J),I=C.data(H,"translation");
I=I||C.data(H,"translation",{});
(I[L]=I[L]||{})[F]=G;
(I[K]=I[K]||{})[F]=E;
C.data(H,"translation."+L+"."+F,G);
C.data(H,"translation."+K+"."+F,E)
},replace:function(I,N,F){if(!F.replace){return 
}if(typeof F.subject==="string"){return I.attr(F.subject,N)
}var H=I[0],L=H.nodeName.toUpperCase(),K=L==="INPUT"&&C.attr(H,"type").toLowerCase(),J=C.translate.isRtl,G=C.data(H,"lang");
if(G===F.to){return 
}if(J[F.to]!==J[G||F.from]){if(J[F.to]){B(I,"rtl")
}else{if(I.css("direction")==="rtl"){B(I,"ltr")
}}}if(F.altAndVal&&(L==="IMG"||K==="image")){I.attr("alt",N)
}else{if(L==="TEXTAREA"||F.altAndVal&&A[K]){I.val(N)
}else{if(F.rebind){var E=I.find("*").not("script"),M=C("<div/>").html(N);
C.translate.copyEvents(E,M.find("*"));
I.html(M.contents())
}else{I.html(N)
}}}C.data(H,"lang",F.to)
},setLangAttr:function(E,G,F){if(F.setLangAttr){E.attr(F.setLangAttr===true?"lang":F.setLangAttr,G)
}},copyEvents:function(F,E){E.each(function(H){var K=F[H];
if(!this||!K){return false
}if(({SCRIPT:1,NOSCRIPT:1,STYLE:1,OBJECT:1,IFRAME:1})[K.nodeName.toUpperCase()]){return true
}var G=C.data(K,"events");
if(!G){return true
}for(var J in G){for(var I in G[J]){C.event.add(this,J,G[J][I],G[J][I].data)
}}})
}});
C.fn.translate=function(F,E,I){var G=C.translate._getOpt(F,E,I,true),H=C.extend({},C.translate._defaults,C.fn.translate.defaults,G,{complete:function(K,J){G.nodes=K;
C.translate(J,G)
},each:function(){}});
if(this.nodesContainingText){return this.nodesContainingText(H)
}G.nodes=this;
C.translate(C.map(this,function(J){return C(J).html()||C(J).val()
}),G);
return this
};
C.fn.translate.defaults=C.extend({},C.translate._defaults)
})(jQuery);
/* 
 * Simple user interface extension for the jQuery Translate plugin 
 * Version: 1.3.9
 * http://code.google.com/p/jquery-translate/
 */
(function(A){A.translate.ui=A.translate.fn.ui=function(D,B,G){var F="",E="",C="";
if(G){E="<"+G+">";
C="</"+G+">"
}A.each(A.translate.getLanguages(true),function(H,I){F+=("<"+B+">"+E+H.charAt(0)+H.substring(1).toLowerCase()+C+"</"+B+">")
});
return A("<"+D+' class="jq-translate-ui">'+F+"</"+D+">")
}
})(jQuery);
/* 
 * Progress indicator extension for the jQuery Translate plugin 
 * Version: 1.3.9
 * http://code.google.com/p/jquery-translate/
 */
(function(A){A.translate.fn.progress=function(B,D){if(!this.i){this.pr=0
}this.pr+=this.source[this.i].length;
var C=100*this.pr/(this.rawSource.length-(11*(this.i+1)));
if(B){var E=A(B);
if(!this.i&&!E.hasClass("ui-progressbar")){E.progressbar(D)
}E.progressbar("option","value",C)
}return C
}
})(jQuery);
/* 
 * jQuery nodesContainingText plugin 
 * 
 * Version: 1.1.0
 * 
 * http://code.google.com/p/jquery-translate/
 * 
 * Copyright (c) 2009 Balazs Endresz (balazs.endresz@gmail.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.
 * 
 */
(function(B){function A(){}A.prototype={init:function(E,D){this.textArray=[];
this.elements=[];
this.options=D;
this.jquery=E;
this.n=-1;
if(D.async===true){D.async=2
}if(D.not){E=E.not(D.not);
E=E.add(E.find("*").not(D.not)).not(B(D.not).find("*"))
}else{E=E.add(E.find("*"))
}this.jq=E;
this.jql=this.jq.length;
return this.process()
},process:function(){this.n++;
var H=this,D=this.options,N="",G=false,F=false,E=this.jq[this.n],J,L,I;
if(this.n==this.jql){I=this.jquery.pushStack(this.elements,"nodesContainingText");
D.complete.call(I,I,this.textArray);
if(D.returnAll===false&&D.walk===false){return this.jquery
}return I
}if(!E){return this.process()
}J=B(E);
var M=E.nodeName.toUpperCase(),K=M==="INPUT"&&B.attr(E,"type").toLowerCase();
if(({SCRIPT:1,NOSCRIPT:1,STYLE:1,OBJECT:1,IFRAME:1})[M]){return this.process()
}if(typeof D.subject==="string"){N=J.attr(D.subject)
}else{if(D.altAndVal&&(M==="IMG"||K==="image")){N=J.attr("alt")
}else{if(D.altAndVal&&({text:1,button:1,submit:1})[K]){N=J.val()
}else{if(M==="TEXTAREA"){N=J.val()
}else{L=E.firstChild;
if(D.walk!==true){F=true
}else{while(L){if(L.nodeType==1){F=true;
break
}L=L.nextSibling
}}if(!F){N=J.text()
}else{if(D.walk!==true){G=true
}L=E.firstChild;
while(L){if(L.nodeType==3&&L.nodeValue.match(/\S/)!==null){if(L.nodeValue.match(/<![ \r\n\t]*(--([^\-]|[\r\n]|-[^\-])*--[ \r\n\t]*)>/)!==null){if(L.nodeValue.match(/(\S+(?=.*<))|(>(?=.*\S+))/)!==null){G=true;
break
}}else{G=true;
break
}}L=L.nextSibling
}if(G){N=J.html().replace(/<script[^>]*>([\s\S]*?)<\/script>/gi,"");
this.jq=this.jq.not(J.find("*"))
}}}}}}if(!N){return this.process()
}this.elements.push(E);
if(D.comments===false){N=this.stripComments(N)
}this.textArray.push(N);
D.each.call(E,this.elements.length-1,E,N);
if(D.async){setTimeout(function(){H.process()
},D.async);
return this.jquery
}else{return this.process()
}},stripComments:function(D){return D.replace(/<![ \r\n\t]*(--([^\-]|[\r\n]|-[^\-])*--[ \r\n\t]*)>/g,"")
}};
B.fn.nodesContainingText=function(D){D=B.extend({},C,B.fn.nodesContainingText.defaults,D);
return new A().init(this,D)
};
var C={not:"",async:false,each:function(){},complete:function(){},comments:false,returnAll:true,walk:true,altAndVal:false,subject:true};
B.fn.nodesContainingText.defaults=C
})(jQuery);