$Bootstrap={_loaded:{},_loaded_groups:{},_pending_lazy:{},_styles:[],_style_limit:25,_next_style_index:0,applyCss:function(_1){
if(!_1){
return;
}
var _2=document.getElementsByTagName("head")[0];
var _3=/MSIE/.test(navigator.userAgent);
var _4=true;
if(_3&&this._styles.length==this._style_limit){
if(this._next_style_index==this._style_limit){
this._next_style_index=0;
}
var _5=this._styles[this._next_style_index];
_1=_5.innerHTML+_1;
this._next_style_index++;
_4=false;
}else{
var _5=document.createElement("style");
_5.setAttribute("type","text/css");
if(_3){
this._styles.push(_5);
}
}
if(_4&&!_3){
_2.appendChild(_5);
}
if(_5.styleSheet){
_5.styleSheet.cssText=_1;
}else{
var _6=document.createTextNode(_1);
_5.appendChild(_6);
}
if(_4&&_3){
_2.appendChild(_5);
}
return _5;
},getAppWindow:function(){
var _7=window;
while(_7){
if(_7._wm__app_win){
return _7;
}
if(_7._wm__app_win_ptr){
return _7._wm__app_win_ptr;
}
_7=_7.opener;
}
return null;
},getBuildVersion:function(_8,_9){
if(Webmail.isDev()){
return (new Date).getTime();
}else{
var _a=this.getAppWindow()._wm__build_versions[_8]||{};
return _a[_9]||(new Date).getTime();
}
},getUrl:function(_b,_c,_d){
if(_b=="css"||_b=="combo"){
var _e=this.getAppWindow()._wm__globals["css_agent"];
_c+="-"+_e;
}
var _f=Webmail.getBaseUri()+"_build/"+_b+"/"+_c+"."+this.getBuildVersion(_b,_c)+"."+Webmail.getGlobal("js_extension");
if(_d.static_domain){
var _10=(Webmail.isHttps()?"https://":"http://");
var _11=CFG_STATIC_DOMAIN;
_f=_10+_11+_f;
}
return _f;
},notLoaded:function(key){
if(this._loaded[key]){
return false;
}
this._loaded[key]=true;
return true;
},reportLoaded:function(_13,_14){
var _15=_13+_14;
this._loaded_groups[_15]=true;
try{
if(this._pending_lazy[_15]){
if(this._pending_lazy[_15].callback){
this._pending_lazy[_15].callback();
}
}
delete this._pending_lazy[_15];
}
catch(e){
}
},request:function(_16,_17,_18){
var _19=_16+_17;
if(this._loaded_groups[_19]){
return;
}
_18=wack.extend({async:false,callback:null,lazy:false,static_domain:false},_18||{});
var url=this.getUrl(_16,_17,_18);
if(_18.lazy){
this._pending_lazy[_19]=_18;
var _1b=Element.create("script");
_1b.type="text/javascript";
_1b.src=url;
document.getElementsByTagName("head")[0].appendChild(_1b);
}else{
var _1c=new Ajax.Request(url,{method:"get",asynchronous:_18.async,onSuccess:function(r){
try{
if(window.execScript){
window.execScript(r.responseText);
}else{
if(false){
}else{
window.eval(r.responseText);
}
}
}
catch(e){
alert("An unexpected error has occurred.\n\n"+"("+_19+", "+e.message+")");
}
$Bootstrap._loaded_groups[_19]=true;
}});
}
}};
function REQUIRE(s,o){
var p=s.split("/");
$Bootstrap.request(p[0],p[1],o);
}
$Bootstrap.reportLoaded("js","bootstrap");
if($Bootstrap.notLoaded("db63ada23991523e788583775b5d761c")){
var Prototype={Version:"1.5.0",BrowserFeatures:{XPath:!!document.evaluate},ScriptFragment:"(?:<script.*?>)((\n|\r|.)*?)(?:</script>)",emptyFunction:function(){
},K:function(x){
return x;
}};
var Class={create:function(){
return function(){
this.initialize.apply(this,arguments);
};
}};
var Abstract=new Object();
Object.extend=function(_22,_23){
for(var _24 in _23){
_22[_24]=_23[_24];
}
return _22;
};
Object.extend(Object,{inspect:function(_25){
try{
if(_25===undefined){
return "undefined";
}
if(_25===null){
return "null";
}
return _25.inspect?_25.inspect():_25.toString();
}
catch(e){
if(e instanceof RangeError){
return "...";
}
throw e;
}
},keys:function(_26){
var _27=[];
for(var _28 in _26){
_27.push(_28);
}
return _27;
},values:function(_29){
var _2a=[];
for(var _2b in _29){
_2a.push(_29[_2b]);
}
return _2a;
},clone:function(_2c){
return Object.extend({},_2c);
}});
Function.prototype.bind=function(){
var _2d=this,args=$A(arguments),object=args.shift();
return function(){
if(typeof $A==="function"){
return _2d.apply(object,args.concat($A(arguments)));
}
};
};
Function.prototype.bindAsEventListener=function(_2e){
var _2f=this,args=$A(arguments),_2e=args.shift();
return function(_30){
if(typeof $A==="function"){
return _2f.apply(_2e,[(_30||window.event)].concat(args).concat($A(arguments)));
}
};
};
Object.extend(Number.prototype,{toColorPart:function(){
var _31=this.toString(16);
if(this<16){
return "0"+_31;
}
return _31;
},succ:function(){
return this+1;
},times:function(_32){
$R(0,this,true).each(_32);
return this;
}});
var Try={these:function(){
var _33;
for(var i=0,length=arguments.length;i<length;i++){
var _35=arguments[i];
try{
_33=_35();
break;
}
catch(e){
}
}
return _33;
}};
var PeriodicalExecuter=Class.create();
PeriodicalExecuter.prototype={initialize:function(_36,_37){
this.callback=_36;
this.frequency=_37;
this.currentlyExecuting=false;
this.registerCallback();
},registerCallback:function(){
this.timer=setInterval(this.onTimerEvent.bind(this),this.frequency*1000);
},stop:function(){
if(!this.timer){
return;
}
clearInterval(this.timer);
this.timer=null;
},onTimerEvent:function(){
if(!this.currentlyExecuting){
try{
this.currentlyExecuting=true;
this.callback(this);
}
finally{
this.currentlyExecuting=false;
}
}
}};
String.interpret=function(_38){
return _38==null?"":String(_38);
};
Object.extend(String.prototype,{gsub:function(_39,_3a){
var _3b="",source=this,match;
_3a=arguments.callee.prepareReplacement(_3a);
while(source.length>0){
if(match=source.match(_39)){
_3b+=source.slice(0,match.index);
_3b+=String.interpret(_3a(match));
source=source.slice(match.index+match[0].length);
}else{
_3b+=source,source="";
}
}
return _3b;
},sub:function(_3c,_3d,_3e){
_3d=this.gsub.prepareReplacement(_3d);
_3e=_3e===undefined?1:_3e;
return this.gsub(_3c,function(_3f){
if(--_3e<0){
return _3f[0];
}
return _3d(_3f);
});
},scan:function(_40,_41){
this.gsub(_40,_41);
return this;
},truncate:function(_42,_43){
_42=_42||30;
_43=_43===undefined?"...":_43;
return this.length>_42?this.slice(0,_42-_43.length)+_43:this;
},strip:function(){
return this.replace(/^\s+/,"").replace(/\s+$/,"");
},stripTags:function(){
return this.replace(/<\/?[^>]+>/gi,"");
},stripScripts:function(){
return this.replace(new RegExp(Prototype.ScriptFragment,"img"),"");
},extractScripts:function(){
var _44=new RegExp(Prototype.ScriptFragment,"img");
var _45=new RegExp(Prototype.ScriptFragment,"im");
return (this.match(_44)||[]).map(function(_46){
return (_46.match(_45)||["",""])[1];
});
},evalScripts:function(){
return this.extractScripts().map(function(_47){
return eval(_47);
});
},escapeHTML:function(){
var div=document.createElement("div");
var _49=document.createTextNode(this);
div.appendChild(_49);
return div.innerHTML;
},unescapeHTML:function(){
var div=document.createElement("div");
div.innerHTML=this.stripTags();
return div.childNodes[0]?(div.childNodes.length>1?$A(div.childNodes).inject("",function(_4b,_4c){
return _4b+_4c.nodeValue;
}):div.childNodes[0].nodeValue):"";
},toQueryParams:function(_4d){
var _4e=this.strip().match(/([^?#]*)(#.*)?$/);
if(!_4e){
return {};
}
return _4e[1].split(_4d||"&").inject({},function(_4f,_50){
if((_50=_50.split("="))[0]){
var _51=decodeURIComponent(_50[0]);
var _52=_50[1]?decodeURIComponent(_50[1]):undefined;
if(_4f[_51]!==undefined){
if(_4f[_51].constructor!=Array){
_4f[_51]=[_4f[_51]];
}
if(_52){
_4f[_51].push(_52);
}
}else{
_4f[_51]=_52;
}
}
return _4f;
});
},toArray:function(){
return this.split("");
},succ:function(){
return this.slice(0,this.length-1)+String.fromCharCode(this.charCodeAt(this.length-1)+1);
},camelize:function(){
var _53=this.split("-"),len=_53.length;
if(len==1){
return _53[0];
}
var _54=this.charAt(0)=="-"?_53[0].charAt(0).toUpperCase()+_53[0].substring(1):_53[0];
for(var i=1;i<len;i++){
_54+=_53[i].charAt(0).toUpperCase()+_53[i].substring(1);
}
return _54;
},capitalize:function(){
return this.charAt(0).toUpperCase()+this.substring(1).toLowerCase();
},underscore:function(){
return this.gsub(/::/,"/").gsub(/([A-Z]+)([A-Z][a-z])/,"#{1}_#{2}").gsub(/([a-z\d])([A-Z])/,"#{1}_#{2}").gsub(/-/,"_").toLowerCase();
},dasherize:function(){
return this.gsub(/_/,"-");
},inspect:function(_56){
var _57=this.replace(/\\/g,"\\\\");
if(_56){
return "\""+_57.replace(/"/g,"\\\"")+"\"";
}else{
return "'"+_57.replace(/'/g,"\\'")+"'";
}
}});
String.prototype.gsub.prepareReplacement=function(_58){
if(typeof _58=="function"){
return _58;
}
var _59=new Template(_58);
return function(_5a){
return _59.evaluate(_5a);
};
};
String.prototype.parseQuery=String.prototype.toQueryParams;
var Template=Class.create();
Template.Pattern=/(^|.|\r|\n)(#\{(.*?)\})/;
Template.prototype={initialize:function(_5b,_5c){
this.template=_5b.toString();
this.pattern=_5c||Template.Pattern;
},evaluate:function(_5d){
return this.template.gsub(this.pattern,function(_5e){
var _5f=_5e[1];
if(_5f=="\\"){
return _5e[2];
}
return _5f+String.interpret(_5d[_5e[3]]);
});
}};
var $break=new Object();
var $continue=new Object();
var Enumerable={each:function(_60){
var _61=0;
try{
this._each(function(_62){
try{
_60(_62,_61++);
}
catch(e){
if(e!=$continue){
throw e;
}
}
});
}
catch(e){
if(e!=$break){
throw e;
}
}
return this;
},eachSlice:function(_63,_64){
var _65=-_63,slices=[],array=this.toArray();
while((_65+=_63)<array.length){
slices.push(array.slice(_65,_65+_63));
}
return slices.map(_64);
},all:function(_66){
var _67=true;
this.each(function(_68,_69){
_67=_67&&!!(_66||Prototype.K)(_68,_69);
if(!_67){
throw $break;
}
});
return _67;
},any:function(_6a){
var _6b=false;
this.each(function(_6c,_6d){
if(_6b=!!(_6a||Prototype.K)(_6c,_6d)){
throw $break;
}
});
return _6b;
},collect:function(_6e){
var _6f=[];
this.each(function(_70,_71){
_6f.push((_6e||Prototype.K)(_70,_71));
});
return _6f;
},detect:function(_72){
var _73;
this.each(function(_74,_75){
if(_72(_74,_75)){
_73=_74;
throw $break;
}
});
return _73;
},findAll:function(_76){
var _77=[];
this.each(function(_78,_79){
if(_76(_78,_79)){
_77.push(_78);
}
});
return _77;
},grep:function(_7a,_7b){
var _7c=[];
this.each(function(_7d,_7e){
var _7f=_7d.toString();
if(_7f.match(_7a)){
_7c.push((_7b||Prototype.K)(_7d,_7e));
}
});
return _7c;
},include:function(_80){
var _81=false;
this.each(function(_82){
if(_82==_80){
_81=true;
throw $break;
}
});
return _81;
},inGroupsOf:function(_83,_84){
_84=_84===undefined?null:_84;
return this.eachSlice(_83,function(_85){
while(_85.length<_83){
_85.push(_84);
}
return _85;
});
},inject:function(_86,_87){
this.each(function(_88,_89){
_86=_87(_86,_88,_89);
});
return _86;
},invoke:function(_8a){
var _8b=$A(arguments).slice(1);
return this.map(function(_8c){
return _8c[_8a].apply(_8c,_8b);
});
},max:function(_8d){
var _8e;
this.each(function(_8f,_90){
_8f=(_8d||Prototype.K)(_8f,_90);
if(_8e==undefined||_8f>=_8e){
_8e=_8f;
}
});
return _8e;
},min:function(_91){
var _92;
this.each(function(_93,_94){
_93=(_91||Prototype.K)(_93,_94);
if(_92==undefined||_93<_92){
_92=_93;
}
});
return _92;
},partition:function(_95){
var _96=[],falses=[];
this.each(function(_97,_98){
((_95||Prototype.K)(_97,_98)?_96:falses).push(_97);
});
return [_96,falses];
},pluck:function(_99){
var _9a=[];
this.each(function(_9b,_9c){
_9a.push(_9b[_99]);
});
return _9a;
},reject:function(_9d){
var _9e=[];
this.each(function(_9f,_a0){
if(!_9d(_9f,_a0)){
_9e.push(_9f);
}
});
return _9e;
},sortBy:function(_a1){
return this.map(function(_a2,_a3){
return {value:_a2,criteria:_a1(_a2,_a3)};
}).sort(function(_a4,_a5){
var a=_a4.criteria,b=_a5.criteria;
return a<b?-1:a>b?1:0;
}).pluck("value");
},toArray:function(){
return this.map();
},zip:function(){
var _a7=Prototype.K,args=$A(arguments);
if(typeof args.last()=="function"){
_a7=args.pop();
}
var _a8=[this].concat(args).map($A);
return this.map(function(_a9,_aa){
return _a7(_a8.pluck(_aa));
});
},size:function(){
return this.toArray().length;
},inspect:function(){
return "#<Enumerable:"+this.toArray().inspect()+">";
}};
Object.extend(Enumerable,{map:Enumerable.collect,find:Enumerable.detect,select:Enumerable.findAll,member:Enumerable.include,entries:Enumerable.toArray});
var $A=Array.from=function(_ab){
if(!_ab){
return [];
}
if(_ab.toArray){
return _ab.toArray();
}else{
var _ac=[];
for(var i=0,length=_ab.length;i<length;i++){
_ac.push(_ab[i]);
}
return _ac;
}
};
Object.extend(Array.prototype,Enumerable);
if(!Array.prototype._reverse){
Array.prototype._reverse=Array.prototype.reverse;
}
Object.extend(Array.prototype,{_each:function(_ae){
for(var i=0,length=this.length;i<length;i++){
_ae(this[i]);
}
},clear:function(){
this.length=0;
return this;
},first:function(){
return this[0];
},last:function(){
return this[this.length-1];
},compact:function(){
return this.select(function(_b0){
return _b0!=null;
});
},flatten:function(){
return this.inject([],function(_b1,_b2){
return _b1.concat(_b2&&_b2.constructor==Array?_b2.flatten():[_b2]);
});
},without:function(){
var _b3=$A(arguments);
return this.select(function(_b4){
return !_b3.include(_b4);
});
},indexOf:function(_b5){
for(var i=0,length=this.length;i<length;i++){
if(this[i]==_b5){
return i;
}
}
return -1;
},reverse:function(_b7){
return (_b7!==false?this:this.toArray())._reverse();
},reduce:function(){
return this.length>1?this:this[0];
},uniq:function(){
return this.inject([],function(_b8,_b9){
return _b8.include(_b9)?_b8:_b8.concat([_b9]);
});
},clone:function(){
return [].concat(this);
},size:function(){
return this.length;
},inspect:function(){
return "["+this.map(Object.inspect).join(", ")+"]";
}});
Array.prototype.toArray=Array.prototype.clone;
function $w(_ba){
_ba=_ba.strip();
return _ba?_ba.split(/\s+/):[];
}
if(window.opera){
Array.prototype.concat=function(){
var _bb=[];
for(var i=0,length=this.length;i<length;i++){
_bb.push(this[i]);
}
for(var i=0,length=arguments.length;i<length;i++){
if(arguments[i].constructor==Array){
for(var j=0,arrayLength=arguments[i].length;j<arrayLength;j++){
_bb.push(arguments[i][j]);
}
}else{
_bb.push(arguments[i]);
}
}
return _bb;
};
}
var Hash=function(obj){
Object.extend(this,obj||{});
};
Object.extend(Hash,{toQueryString:function(obj){
var _c0=[];
this.prototype._each.call(obj,function(_c1){
if(!_c1.key){
return;
}
if(_c1.value&&_c1.value.constructor==Array){
var _c2=_c1.value.compact();
if(_c2.length<2){
_c1.value=_c2.reduce();
}else{
key=encodeURIComponent(_c1.key);
_c2.each(function(_c3){
_c3=_c3!=undefined?encodeURIComponent(_c3):"";
_c0.push(key+"="+encodeURIComponent(_c3));
});
return;
}
}
if(_c1.value==undefined){
_c1[1]="";
}
_c0.push(_c1.map(encodeURIComponent).join("="));
});
return _c0.join("&");
}});
Object.extend(Hash.prototype,Enumerable);
Object.extend(Hash.prototype,{_each:function(_c4){
for(var key in this){
var _c6=this[key];
if(_c6&&_c6==Hash.prototype[key]){
continue;
}
var _c7=[key,_c6];
_c7.key=key;
_c7.value=_c6;
_c4(_c7);
}
},keys:function(){
return this.pluck("key");
},values:function(){
return this.pluck("value");
},merge:function(_c8){
return $H(_c8).inject(this,function(_c9,_ca){
_c9[_ca.key]=_ca.value;
return _c9;
});
},remove:function(){
var _cb;
for(var i=0,length=arguments.length;i<length;i++){
var _cd=this[arguments[i]];
if(_cd!==undefined){
if(_cb===undefined){
_cb=_cd;
}else{
if(_cb.constructor!=Array){
_cb=[_cb];
}
_cb.push(_cd);
}
}
delete this[arguments[i]];
}
return _cb;
},toQueryString:function(){
return Hash.toQueryString(this);
},inspect:function(){
return "#<Hash:{"+this.map(function(_ce){
return _ce.map(Object.inspect).join(": ");
}).join(", ")+"}>";
}});
function $H(_cf){
if(_cf&&_cf.constructor==Hash){
return _cf;
}
return new Hash(_cf);
}
ObjectRange=Class.create();
Object.extend(ObjectRange.prototype,Enumerable);
Object.extend(ObjectRange.prototype,{initialize:function(_d0,end,_d2){
this.start=_d0;
this.end=end;
this.exclusive=_d2;
},_each:function(_d3){
var _d4=this.start;
while(this.include(_d4)){
_d3(_d4);
_d4=_d4.succ();
}
},include:function(_d5){
if(_d5<this.start){
return false;
}
if(this.exclusive){
return _d5<this.end;
}
return _d5<=this.end;
}});
var $R=function(_d6,end,_d8){
return new ObjectRange(_d6,end,_d8);
};
var Ajax={getTransport:function(){
return Try.these(function(){
return new XMLHttpRequest();
},function(){
return new ActiveXObject("Msxml2.XMLHTTP");
},function(){
return new ActiveXObject("Microsoft.XMLHTTP");
})||false;
},activeRequestCount:0};
Ajax.Responders={responders:[],_each:function(_d9){
this.responders._each(_d9);
},register:function(_da){
if(!this.include(_da)){
this.responders.push(_da);
}
},unregister:function(_db){
this.responders=this.responders.without(_db);
},dispatch:function(_dc,_dd,_de,_df){
this.each(function(_e0){
if(typeof _e0[_dc]=="function"){
try{
_e0[_dc].apply(_e0,[_dd,_de,_df]);
}
catch(e){
}
}
});
}};
Object.extend(Ajax.Responders,Enumerable);
Ajax.Responders.register({onCreate:function(){
Ajax.activeRequestCount++;
},onComplete:function(){
Ajax.activeRequestCount--;
}});
Ajax.Base=function(){
};
Ajax.Base.prototype={setOptions:function(_e1){
this.options={method:"post",asynchronous:true,contentType:"application/x-www-form-urlencoded",encoding:"UTF-8",parameters:""};
Object.extend(this.options,_e1||{});
this.options.method=this.options.method.toLowerCase();
if(typeof this.options.parameters=="string"){
this.options.parameters=this.options.parameters.toQueryParams();
}
}};
Ajax.Request=Class.create();
Ajax.Request.Events=["Uninitialized","Loading","Loaded","Interactive","Complete"];
Ajax.Request.prototype=Object.extend(new Ajax.Base(),{_complete:false,initialize:function(url,_e3){
this.transport=Ajax.getTransport();
this.setOptions(_e3);
this.request(url);
},request:function(url){
this.url=url;
this.method=this.options.method;
var _e5=this.options.parameters;
if(!["get","post"].include(this.method)){
_e5["_method"]=this.method;
this.method="post";
}
_e5=Hash.toQueryString(_e5);
if(_e5&&/Konqueror|Safari|KHTML/.test(navigator.userAgent)){
_e5+="&_=";
}
if(this.method=="get"&&_e5){
this.url+=(this.url.indexOf("?")>-1?"&":"?")+_e5;
}
try{
Ajax.Responders.dispatch("onCreate",this,this.transport);
this.transport.open(this.method.toUpperCase(),this.url,this.options.asynchronous);
if(this.options.asynchronous){
setTimeout(function(){
this.respondToReadyState(1);
}.bind(this),10);
}
this.transport.onreadystatechange=this.onStateChange.bind(this);
this.setRequestHeaders();
var _e6=this.method=="post"?(this.options.postBody||_e5):null;
this.transport.send(_e6);
if(!this.options.asynchronous&&this.transport.overrideMimeType){
this.onStateChange();
}
}
catch(e){
this.dispatchException(e);
}
},onStateChange:function(){
var _e7=this.transport.readyState;
if(_e7>1&&!((_e7==4)&&this._complete)){
this.respondToReadyState(this.transport.readyState);
}
},setRequestHeaders:function(){
var _e8={"X-Requested-With":"XMLHttpRequest","X-Prototype-Version":Prototype.Version,"Accept":"text/javascript, text/html, application/xml, text/xml, */*"};
if(this.method=="post"){
_e8["Content-type"]=this.options.contentType+(this.options.encoding?"; charset="+this.options.encoding:"");
if(this.transport.overrideMimeType&&(navigator.userAgent.match(/Gecko\/(\d{4})/)||[0,2005])[1]<2005){
_e8["Connection"]="close";
}
}
if(typeof this.options.requestHeaders=="object"){
var _e9=this.options.requestHeaders;
if(typeof _e9.push=="function"){
for(var i=0,length=_e9.length;i<length;i+=2){
_e8[_e9[i]]=_e9[i+1];
}
}else{
$H(_e9).each(function(_eb){
_e8[_eb.key]=_eb.value;
});
}
}
for(var _ec in _e8){
this.transport.setRequestHeader(_ec,_e8[_ec]);
}
},success:function(){
return !this.transport.status||(this.transport.status>=200&&this.transport.status<300);
},respondToReadyState:function(_ed){
var _ee=Ajax.Request.Events[_ed];
var _ef=this.transport,json=this.evalJSON();
if(_ee=="Complete"){
try{
this._complete=true;
(this.options["on"+this.transport.status]||this.options["on"+(this.success()?"Success":"Failure")]||Prototype.emptyFunction)(_ef,json);
}
catch(e){
this.dispatchException(e);
}
}
try{
(this.options["on"+_ee]||Prototype.emptyFunction)(_ef,json);
Ajax.Responders.dispatch("on"+_ee,this,_ef,json);
}
catch(e){
this.dispatchException(e);
}
if(_ee=="Complete"){
this.transport.onreadystatechange=Prototype.emptyFunction;
}
},getHeader:function(_f0){
try{
return this.transport.getResponseHeader(_f0);
}
catch(e){
return null;
}
},evalJSON:function(){
try{
var _f1=this.getHeader("X-JSON");
return _f1?eval("("+_f1+")"):null;
}
catch(e){
return null;
}
},evalResponse:function(){
try{
return eval(this.transport.responseText);
}
catch(e){
this.dispatchException(e);
}
},dispatchException:function(_f2){
(this.options.onException||Prototype.emptyFunction)(this,_f2);
Ajax.Responders.dispatch("onException",this,_f2);
}});
Ajax.Updater=Class.create();
Object.extend(Object.extend(Ajax.Updater.prototype,Ajax.Request.prototype),{initialize:function(_f3,url,_f5){
this.container={success:(_f3.success||_f3),failure:(_f3.failure||(_f3.success?null:_f3))};
this.transport=Ajax.getTransport();
this.setOptions(_f5);
var _f6=this.options.onComplete||Prototype.emptyFunction;
this.options.onComplete=(function(_f7,_f8){
this.updateContent();
_f6(_f7,_f8);
}).bind(this);
this.request(url);
},updateContent:function(){
var _f9=this.container[this.success()?"success":"failure"];
var _fa=this.transport.responseText;
if(!this.options.evalScripts){
_fa=_fa.stripScripts();
}
if(_f9=$(_f9)){
if(this.options.insertion){
new this.options.insertion(_f9,_fa);
}else{
_f9.update(_fa);
}
}
if(this.success()){
if(this.onComplete){
setTimeout(this.onComplete.bind(this),10);
}
}
}});
Ajax.PeriodicalUpdater=Class.create();
Ajax.PeriodicalUpdater.prototype=Object.extend(new Ajax.Base(),{initialize:function(_fb,url,_fd){
this.setOptions(_fd);
this.onComplete=this.options.onComplete;
this.frequency=(this.options.frequency||2);
this.decay=(this.options.decay||1);
this.updater={};
this.container=_fb;
this.url=url;
this.start();
},start:function(){
this.options.onComplete=this.updateComplete.bind(this);
this.onTimerEvent();
},stop:function(){
this.updater.options.onComplete=undefined;
clearTimeout(this.timer);
(this.onComplete||Prototype.emptyFunction).apply(this,arguments);
},updateComplete:function(_fe){
if(this.options.decay){
this.decay=(_fe.responseText==this.lastText?this.decay*this.options.decay:1);
this.lastText=_fe.responseText;
}
this.timer=setTimeout(this.onTimerEvent.bind(this),this.decay*this.frequency*1000);
},onTimerEvent:function(){
this.updater=new Ajax.Updater(this.container,this.url,this.options);
}});
function $(_ff){
if(arguments.length>1){
for(var i=0,elements=[],length=arguments.length;i<length;i++){
elements.push($(arguments[i]));
}
return elements;
}
if(typeof _ff=="string"){
_ff=document.getElementById(_ff);
}
return Element.extend(_ff);
}
if(Prototype.BrowserFeatures.XPath){
document._getElementsByXPath=function(_101,_102){
var _103=[];
var _104=document.evaluate(_101,$(_102)||document,null,XPathResult.ORDERED_NODE_SNAPSHOT_TYPE,null);
for(var i=0,length=_104.snapshotLength;i<length;i++){
_103.push(_104.snapshotItem(i));
}
return _103;
};
}
document.getElementsByClassName=function(_106,_107){
if(Prototype.BrowserFeatures.XPath){
var q=".//*[contains(concat(' ', @class, ' '), ' "+_106+" ')]";
return document._getElementsByXPath(q,_107);
}else{
var _109=($(_107)||document.body).getElementsByTagName("*");
var _10a=[],child;
for(var i=0,length=_109.length;i<length;i++){
child=_109[i];
if(Element.hasClassName(child,_106)){
_10a.push(Element.extend(child));
}
}
return _10a;
}
};
if(!window.Element){
var Element=new Object();
}
Element.extend=function(_10c){
if(!_10c||_nativeExtensions||_10c.nodeType==3){
return _10c;
}
if(!_10c._extended&&_10c.tagName&&_10c!=window){
var _10d=Object.clone(Element.Methods),cache=Element.extend.cache;
if(_10c.tagName=="FORM"){
Object.extend(_10d,Form.Methods);
}
if(["INPUT","TEXTAREA","SELECT"].include(_10c.tagName)){
Object.extend(_10d,Form.Element.Methods);
}
Object.extend(_10d,Element.Methods.Simulated);
for(var _10e in _10d){
var _10f=_10d[_10e];
if(typeof _10f=="function"&&!(_10e in _10c)){
_10c[_10e]=cache.findOrStore(_10f);
}
}
}
_10c._extended=true;
return _10c;
};
Element.extend.cache={findOrStore:function(_110){
return this[_110]=this[_110]||function(){
return _110.apply(null,[this].concat($A(arguments)));
};
}};
Element.Methods={visible:function(_111){
return $(_111).style.display!="none";
},toggle:function(_112){
_112=$(_112);
Element[Element.visible(_112)?"hide":"show"](_112);
return _112;
},hide:function(_113){
$(_113).style.display="none";
return _113;
},show:function(_114){
$(_114).style.display="";
return _114;
},remove:function(_115){
_115=$(_115);
_115.parentNode.removeChild(_115);
return _115;
},update:function(_116,html){
html=typeof html=="undefined"?"":html.toString();
$(_116).innerHTML=html.stripScripts();
setTimeout(function(){
html.evalScripts();
},10);
return _116;
},replace:function(_118,html){
_118=$(_118);
html=typeof html=="undefined"?"":html.toString();
if(_118.outerHTML){
_118.outerHTML=html.stripScripts();
}else{
var _11a=_118.ownerDocument.createRange();
_11a.selectNodeContents(_118);
_118.parentNode.replaceChild(_11a.createContextualFragment(html.stripScripts()),_118);
}
setTimeout(function(){
html.evalScripts();
},10);
return _118;
},inspect:function(_11b){
_11b=$(_11b);
var _11c="<"+_11b.tagName.toLowerCase();
$H({"id":"id","className":"class"}).each(function(pair){
var _11e=pair.first(),attribute=pair.last();
var _11f=(_11b[_11e]||"").toString();
if(_11f){
_11c+=" "+attribute+"="+_11f.inspect(true);
}
});
return _11c+">";
},recursivelyCollect:function(_120,_121){
_120=$(_120);
var _122=[];
while(_120=_120[_121]){
if(_120.nodeType==1){
_122.push(Element.extend(_120));
}
}
return _122;
},ancestors:function(_123){
return $(_123).recursivelyCollect("parentNode");
},descendants:function(_124){
return $A($(_124).getElementsByTagName("*"));
},immediateDescendants:function(_125){
if(!(_125=$(_125).firstChild)){
return [];
}
while(_125&&_125.nodeType!=1){
_125=_125.nextSibling;
}
if(_125){
return [_125].concat($(_125).nextSiblings());
}
return [];
},previousSiblings:function(_126){
return $(_126).recursivelyCollect("previousSibling");
},nextSiblings:function(_127){
return $(_127).recursivelyCollect("nextSibling");
},siblings:function(_128){
_128=$(_128);
return _128.previousSiblings().reverse().concat(_128.nextSiblings());
},match:function(_129,_12a){
if(typeof _12a=="string"){
_12a=new Selector(_12a);
}
return _12a.match($(_129));
},up:function(_12b,_12c,_12d){
return Selector.findElement($(_12b).ancestors(),_12c,_12d);
},down:function(_12e,_12f,_130){
return Selector.findElement($(_12e).descendants(),_12f,_130);
},previous:function(_131,_132,_133){
return Selector.findElement($(_131).previousSiblings(),_132,_133);
},next:function(_134,_135,_136){
return Selector.findElement($(_134).nextSiblings(),_135,_136);
},getElementsBySelector:function(){
var args=$A(arguments),element=$(args.shift());
return Selector.findChildElements(element,args);
},getElementsByClassName:function(_138,_139){
return document.getElementsByClassName(_139,_138);
},readAttribute:function(_13a,name){
_13a=$(_13a);
if(document.all&&!window.opera){
var t=Element._attributeTranslations;
if(t.values[name]){
return t.values[name](_13a,name);
}
if(t.names[name]){
name=t.names[name];
}
var _13d=_13a.attributes[name];
if(_13d){
return _13d.nodeValue;
}
}
return _13a.getAttribute(name);
},getHeight:function(_13e){
return $(_13e).getDimensions().height;
},getWidth:function(_13f){
return $(_13f).getDimensions().width;
},classNames:function(_140){
return new Element.ClassNames(_140);
},hasClassName:function(_141,_142){
if(!(_141=$(_141))){
return;
}
var _143=_141.className;
if(_143.length==0){
return false;
}
if(_143==_142||_143.match(new RegExp("(^|\\s)"+_142+"(\\s|$)"))){
return true;
}
return false;
},addClassName:function(_144,_145){
if(!(_144=$(_144))){
return;
}
Element.classNames(_144).add(_145);
return _144;
},removeClassName:function(_146,_147){
if(!(_146=$(_146))){
return;
}
Element.classNames(_146).remove(_147);
return _146;
},toggleClassName:function(_148,_149){
if(!(_148=$(_148))){
return;
}
Element.classNames(_148)[_148.hasClassName(_149)?"remove":"add"](_149);
return _148;
},observe:function(){
Event.observe.apply(Event,arguments);
return $A(arguments).first();
},stopObserving:function(){
Event.stopObserving.apply(Event,arguments);
return $A(arguments).first();
},cleanWhitespace:function(_14a){
_14a=$(_14a);
var node=_14a.firstChild;
while(node){
var _14c=node.nextSibling;
if(node.nodeType==3&&!/\S/.test(node.nodeValue)){
_14a.removeChild(node);
}
node=_14c;
}
return _14a;
},empty:function(_14d){
return $(_14d).innerHTML.match(/^\s*$/);
},descendantOf:function(_14e,_14f){
_14e=$(_14e),_14f=$(_14f);
while(_14e=_14e.parentNode){
if(_14e==_14f){
return true;
}
}
return false;
},scrollTo:function(_150){
_150=$(_150);
var pos=Position.cumulativeOffset(_150);
window.scrollTo(pos[0],pos[1]);
return _150;
},getStyle:function(_152,_153){
_152=$(_152);
if(["float","cssFloat"].include(_153)){
_153=(typeof _152.style.styleFloat!="undefined"?"styleFloat":"cssFloat");
}
_153=_153.camelize();
var _154=_152.style[_153];
if(!_154){
if(document.defaultView&&document.defaultView.getComputedStyle){
var css=document.defaultView.getComputedStyle(_152,null);
_154=css?css[_153]:null;
}else{
if(_152.currentStyle){
_154=_152.currentStyle[_153];
}
}
}
if((_154=="auto")&&["width","height"].include(_153)&&(_152.getStyle("display")!="none")){
_154=_152["offset"+_153.capitalize()]+"px";
}
if(window.opera&&["left","top","right","bottom"].include(_153)){
if(Element.getStyle(_152,"position")=="static"){
_154="auto";
}
}
if(_153=="opacity"){
if(_154){
return parseFloat(_154);
}
if(_154=(_152.getStyle("filter")||"").match(/alpha\(opacity=(.*)\)/)){
if(_154[1]){
return parseFloat(_154[1])/100;
}
}
return 1;
}
return _154=="auto"?null:_154;
},setStyle:function(_156,_157){
_156=$(_156);
for(var name in _157){
var _159=_157[name];
if(name=="opacity"){
if(_159==1){
_159=(/Gecko/.test(navigator.userAgent)&&!/Konqueror|Safari|KHTML/.test(navigator.userAgent))?0.999999:1;
if(/MSIE/.test(navigator.userAgent)&&!window.opera){
_156.style.filter=_156.getStyle("filter").replace(/alpha\([^\)]*\)/gi,"");
}
}else{
if(_159==""){
if(/MSIE/.test(navigator.userAgent)&&!window.opera){
_156.style.filter=_156.getStyle("filter").replace(/alpha\([^\)]*\)/gi,"");
}
}else{
if(_159<0.00001){
_159=0;
}
if(/MSIE/.test(navigator.userAgent)&&!window.opera){
_156.style.filter=_156.getStyle("filter").replace(/alpha\([^\)]*\)/gi,"")+"alpha(opacity="+_159*100+")";
}
}
}
}else{
if(["float","cssFloat"].include(name)){
name=(typeof _156.style.styleFloat!="undefined")?"styleFloat":"cssFloat";
}
}
_156.style[name.camelize()]=_159;
}
return _156;
},getDimensions:function(_15a){
_15a=$(_15a);
var _15b=$(_15a).getStyle("display");
if(_15b!="none"&&_15b!=null){
return {width:_15a.offsetWidth,height:_15a.offsetHeight};
}
var els=_15a.style;
var _15d=els.visibility;
var _15e=els.position;
var _15f=els.display;
els.visibility="hidden";
els.position="absolute";
els.display="block";
var _160=_15a.clientWidth;
var _161=_15a.clientHeight;
els.display=_15f;
els.position=_15e;
els.visibility=_15d;
return {width:_160,height:_161};
},makePositioned:function(_162){
_162=$(_162);
var pos=Element.getStyle(_162,"position");
if(pos=="static"||!pos){
_162._madePositioned=true;
_162.style.position="relative";
if(window.opera){
_162.style.top=0;
_162.style.left=0;
}
}
return _162;
},undoPositioned:function(_164){
_164=$(_164);
if(_164._madePositioned){
_164._madePositioned=undefined;
_164.style.position=_164.style.top=_164.style.left=_164.style.bottom=_164.style.right="";
}
return _164;
},makeClipping:function(_165){
_165=$(_165);
if(_165._overflow){
return _165;
}
_165._overflow=_165.style.overflow||"auto";
if((Element.getStyle(_165,"overflow")||"visible")!="hidden"){
_165.style.overflow="hidden";
}
return _165;
},undoClipping:function(_166){
_166=$(_166);
if(!_166._overflow){
return _166;
}
_166.style.overflow=_166._overflow=="auto"?"":_166._overflow;
_166._overflow=null;
return _166;
}};
Object.extend(Element.Methods,{childOf:Element.Methods.descendantOf});
Element._attributeTranslations={};
Element._attributeTranslations.names={colspan:"colSpan",rowspan:"rowSpan",valign:"vAlign",datetime:"dateTime",accesskey:"accessKey",tabindex:"tabIndex",enctype:"encType",maxlength:"maxLength",readonly:"readOnly",longdesc:"longDesc"};
Element._attributeTranslations.values={_getAttr:function(_167,_168){
return _167.getAttribute(_168,2);
},_flag:function(_169,_16a){
return $(_169).hasAttribute(_16a)?_16a:null;
},style:function(_16b){
return _16b.style.cssText.toLowerCase();
},title:function(_16c){
var node=_16c.getAttributeNode("title");
return node.specified?node.nodeValue:null;
}};
Object.extend(Element._attributeTranslations.values,{href:Element._attributeTranslations.values._getAttr,src:Element._attributeTranslations.values._getAttr,disabled:Element._attributeTranslations.values._flag,checked:Element._attributeTranslations.values._flag,readonly:Element._attributeTranslations.values._flag,multiple:Element._attributeTranslations.values._flag});
Element.Methods.Simulated={hasAttribute:function(_16e,_16f){
var t=Element._attributeTranslations;
_16f=t.names[_16f]||_16f;
return $(_16e).getAttributeNode(_16f).specified;
}};
if(document.all&&!window.opera){
Element.Methods.update=function(_171,html){
_171=$(_171);
html=typeof html=="undefined"?"":html.toString();
var _173=_171.tagName.toUpperCase();
if(["THEAD","TBODY","TR","TD"].include(_173)){
var div=document.createElement("div");
switch(_173){
case "THEAD":
case "TBODY":
div.innerHTML="<table><tbody>"+html.stripScripts()+"</tbody></table>";
depth=2;
break;
case "TR":
div.innerHTML="<table><tbody><tr>"+html.stripScripts()+"</tr></tbody></table>";
depth=3;
break;
case "TD":
div.innerHTML="<table><tbody><tr><td>"+html.stripScripts()+"</td></tr></tbody></table>";
depth=4;
}
$A(_171.childNodes).each(function(node){
_171.removeChild(node);
});
depth.times(function(){
div=div.firstChild;
});
$A(div.childNodes).each(function(node){
_171.appendChild(node);
});
}else{
_171.innerHTML=html.stripScripts();
}
setTimeout(function(){
html.evalScripts();
},10);
return _171;
};
}
Object.extend(Element,Element.Methods);
var _nativeExtensions=false;
if(/Konqueror|Safari|KHTML/.test(navigator.userAgent)){
["","Form","Input","TextArea","Select"].each(function(tag){
var _178="HTML"+tag+"Element";
if(window[_178]){
return;
}
var _179=window[_178]={};
_179.prototype=document.createElement(tag?tag.toLowerCase():"div").__proto__;
});
}
Element.addMethods=function(_17a){
Object.extend(Element.Methods,_17a||{});
function copy(_17b,_17c,_17d){
_17d=_17d||false;
var _17e=Element.extend.cache;
for(var _17f in _17b){
var _180=_17b[_17f];
if(!_17d||!(_17f in _17c)){
_17c[_17f]=_17e.findOrStore(_180);
}
}
}
if(typeof HTMLElement!="undefined"){
copy(Element.Methods,HTMLElement.prototype);
copy(Element.Methods.Simulated,HTMLElement.prototype,true);
copy(Form.Methods,HTMLFormElement.prototype);
[HTMLInputElement,HTMLTextAreaElement,HTMLSelectElement].each(function(_181){
copy(Form.Element.Methods,_181.prototype);
});
_nativeExtensions=true;
}
};
var Toggle=new Object();
Toggle.display=Element.toggle;
Abstract.Insertion=function(_182){
this.adjacency=_182;
};
Abstract.Insertion.prototype={initialize:function(_183,_184){
this.element=$(_183);
this.content=_184.stripScripts();
if(this.adjacency&&this.element.insertAdjacentHTML){
try{
this.element.insertAdjacentHTML(this.adjacency,this.content);
}
catch(e){
var _185=this.element.tagName.toUpperCase();
if(["TBODY","TR"].include(_185)){
this.insertContent(this.contentFromAnonymousTable());
}else{
throw e;
}
}
}else{
this.range=this.element.ownerDocument.createRange();
if(this.initializeRange){
this.initializeRange();
}
this.insertContent([this.range.createContextualFragment(this.content)]);
}
setTimeout(function(){
_184.evalScripts();
},10);
},contentFromAnonymousTable:function(){
var div=document.createElement("div");
div.innerHTML="<table><tbody>"+this.content+"</tbody></table>";
return $A(div.childNodes[0].childNodes[0].childNodes);
}};
var Insertion=new Object();
Insertion.Before=Class.create();
Insertion.Before.prototype=Object.extend(new Abstract.Insertion("beforeBegin"),{initializeRange:function(){
this.range.setStartBefore(this.element);
},insertContent:function(_187){
_187.each((function(_188){
this.element.parentNode.insertBefore(_188,this.element);
}).bind(this));
}});
Insertion.Top=Class.create();
Insertion.Top.prototype=Object.extend(new Abstract.Insertion("afterBegin"),{initializeRange:function(){
this.range.selectNodeContents(this.element);
this.range.collapse(true);
},insertContent:function(_189){
_189.reverse(false).each((function(_18a){
this.element.insertBefore(_18a,this.element.firstChild);
}).bind(this));
}});
Insertion.Bottom=Class.create();
Insertion.Bottom.prototype=Object.extend(new Abstract.Insertion("beforeEnd"),{initializeRange:function(){
this.range.selectNodeContents(this.element);
this.range.collapse(this.element);
},insertContent:function(_18b){
_18b.each((function(_18c){
this.element.appendChild(_18c);
}).bind(this));
}});
Insertion.After=Class.create();
Insertion.After.prototype=Object.extend(new Abstract.Insertion("afterEnd"),{initializeRange:function(){
this.range.setStartAfter(this.element);
},insertContent:function(_18d){
_18d.each((function(_18e){
this.element.parentNode.insertBefore(_18e,this.element.nextSibling);
}).bind(this));
}});
Element.ClassNames=Class.create();
Element.ClassNames.prototype={initialize:function(_18f){
this.element=$(_18f);
},_each:function(_190){
this.element.className.split(/\s+/).select(function(name){
return name.length>0;
})._each(_190);
},set:function(_192){
this.element.className=_192;
},add:function(_193){
if(this.include(_193)){
return;
}
this.set($A(this).concat(_193).join(" "));
},remove:function(_194){
if(!this.include(_194)){
return;
}
this.set($A(this).without(_194).join(" "));
},toString:function(){
return $A(this).join(" ");
}};
Object.extend(Element.ClassNames.prototype,Enumerable);
var Selector=Class.create();
Selector.prototype={initialize:function(_195){
this.params={classNames:[]};
this.expression=_195.toString().strip();
this.parseExpression();
this.compileMatcher();
},parseExpression:function(){
function abort(_196){
throw "Parse error in selector: "+_196;
}
if(this.expression==""){
abort("empty expression");
}
var _197=this.params,expr=this.expression,match,modifier,clause,rest;
while(match=expr.match(/^(.*)\[([a-z0-9_:-]+?)(?:([~\|!]?=)(?:"([^"]*)"|([^\]\s]*)))?\]$/i)){
_197.attributes=_197.attributes||[];
_197.attributes.push({name:match[2],operator:match[3],value:match[4]||match[5]||""});
expr=match[1];
}
if(expr=="*"){
return this.params.wildcard=true;
}
while(match=expr.match(/^([^a-z0-9_-])?([a-z0-9_-]+)(.*)/i)){
modifier=match[1],clause=match[2],rest=match[3];
switch(modifier){
case "#":
_197.id=clause;
break;
case ".":
_197.classNames.push(clause);
break;
case "":
case undefined:
_197.tagName=clause.toUpperCase();
break;
default:
abort(expr.inspect());
}
expr=rest;
}
if(expr.length>0){
abort(expr.inspect());
}
},buildMatchExpression:function(){
var _198=this.params,conditions=[],clause;
if(_198.wildcard){
conditions.push("true");
}
if(clause=_198.id){
conditions.push("element.readAttribute(\"id\") == "+clause.inspect());
}
if(clause=_198.tagName){
conditions.push("element.tagName.toUpperCase() == "+clause.inspect());
}
if((clause=_198.classNames).length>0){
for(var i=0,length=clause.length;i<length;i++){
conditions.push("element.hasClassName("+clause[i].inspect()+")");
}
}
if(clause=_198.attributes){
clause.each(function(_19a){
var _19b="element.readAttribute("+_19a.name.inspect()+")";
var _19c=function(_19d){
return _19b+" && "+_19b+".split("+_19d.inspect()+")";
};
switch(_19a.operator){
case "=":
conditions.push(_19b+" == "+_19a.value.inspect());
break;
case "~=":
conditions.push(_19c(" ")+".include("+_19a.value.inspect()+")");
break;
case "|=":
conditions.push(_19c("-")+".first().toUpperCase() == "+_19a.value.toUpperCase().inspect());
break;
case "!=":
conditions.push(_19b+" != "+_19a.value.inspect());
break;
case "":
case undefined:
conditions.push("element.hasAttribute("+_19a.name.inspect()+")");
break;
default:
throw "Unknown operator "+_19a.operator+" in selector";
}
});
}
return conditions.join(" && ");
},compileMatcher:function(){
this.match=new Function("element","if (!element.tagName) return false;       element = $(element);       return "+this.buildMatchExpression());
},findElements:function(_19e){
var _19f;
if(_19f=$(this.params.id)){
if(this.match(_19f)){
if(!_19e||Element.childOf(_19f,_19e)){
return [_19f];
}
}
}
_19e=(_19e||document).getElementsByTagName(this.params.tagName||"*");
var _1a0=[];
for(var i=0,length=_19e.length;i<length;i++){
if(this.match(_19f=_19e[i])){
_1a0.push(Element.extend(_19f));
}
}
return _1a0;
},toString:function(){
return this.expression;
}};
Object.extend(Selector,{matchElements:function(_1a2,_1a3){
var _1a4=new Selector(_1a3);
return _1a2.select(_1a4.match.bind(_1a4)).map(Element.extend);
},findElement:function(_1a5,_1a6,_1a7){
if(typeof _1a6=="number"){
_1a7=_1a6,_1a6=false;
}
return Selector.matchElements(_1a5,_1a6||"*")[_1a7||0];
},findChildElements:function(_1a8,_1a9){
return _1a9.map(function(_1aa){
return _1aa.match(/[^\s"]+(?:"[^"]*"[^\s"]+)*/g).inject([null],function(_1ab,expr){
var _1ad=new Selector(expr);
return _1ab.inject([],function(_1ae,_1af){
return _1ae.concat(_1ad.findElements(_1af||_1a8));
});
});
}).flatten();
}});
function $$(){
return Selector.findChildElements(document,$A(arguments));
}
var Form={reset:function(form){
$(form).reset();
return form;
},serializeElements:function(_1b1,_1b2){
var data=_1b1.inject({},function(_1b4,_1b5){
if(!_1b5.disabled&&_1b5.name){
var key=_1b5.name,value=$(_1b5).getValue();
if(value!=undefined){
if(_1b4[key]){
if(_1b4[key].constructor!=Array){
_1b4[key]=[_1b4[key]];
}
_1b4[key].push(value);
}else{
_1b4[key]=value;
}
}
}
return _1b4;
});
return _1b2?data:Hash.toQueryString(data);
}};
Form.Methods={serialize:function(form,_1b8){
return Form.serializeElements(Form.getElements(form),_1b8);
},getElements:function(form){
return $A($(form).getElementsByTagName("*")).inject([],function(_1ba,_1bb){
if(Form.Element.Serializers[_1bb.tagName.toLowerCase()]){
_1ba.push(Element.extend(_1bb));
}
return _1ba;
});
},getInputs:function(form,_1bd,name){
form=$(form);
var _1bf=form.getElementsByTagName("input");
if(!_1bd&&!name){
return $A(_1bf).map(Element.extend);
}
for(var i=0,matchingInputs=[],length=_1bf.length;i<length;i++){
var _1c1=_1bf[i];
if((_1bd&&_1c1.type!=_1bd)||(name&&_1c1.name!=name)){
continue;
}
matchingInputs.push(Element.extend(_1c1));
}
return matchingInputs;
},disable:function(form){
form=$(form);
form.getElements().each(function(_1c3){
_1c3.blur();
_1c3.disabled="true";
});
return form;
},enable:function(form){
form=$(form);
form.getElements().each(function(_1c5){
_1c5.disabled="";
});
return form;
},findFirstElement:function(form){
return $(form).getElements().find(function(_1c7){
return _1c7.type!="hidden"&&!_1c7.disabled&&["input","select","textarea"].include(_1c7.tagName.toLowerCase());
});
},focusFirstElement:function(form){
form=$(form);
form.findFirstElement().activate();
return form;
}};
Object.extend(Form,Form.Methods);
Form.Element={focus:function(_1c9){
$(_1c9).focus();
return _1c9;
},select:function(_1ca){
$(_1ca).select();
return _1ca;
}};
Form.Element.Methods={serialize:function(_1cb){
_1cb=$(_1cb);
if(!_1cb.disabled&&_1cb.name){
var _1cc=_1cb.getValue();
if(_1cc!=undefined){
var pair={};
pair[_1cb.name]=_1cc;
return Hash.toQueryString(pair);
}
}
return "";
},getValue:function(_1ce){
_1ce=$(_1ce);
var _1cf=_1ce.tagName.toLowerCase();
return Form.Element.Serializers[_1cf](_1ce);
},clear:function(_1d0){
$(_1d0).value="";
return _1d0;
},present:function(_1d1){
return $(_1d1).value!="";
},activate:function(_1d2){
_1d2=$(_1d2);
_1d2.focus();
if(_1d2.select&&(_1d2.tagName.toLowerCase()!="input"||!["button","reset","submit"].include(_1d2.type))){
_1d2.select();
}
return _1d2;
},disable:function(_1d3){
_1d3=$(_1d3);
_1d3.disabled=true;
return _1d3;
},enable:function(_1d4){
_1d4=$(_1d4);
_1d4.blur();
_1d4.disabled=false;
return _1d4;
}};
Object.extend(Form.Element,Form.Element.Methods);
var Field=Form.Element;
var $F=Form.Element.getValue;
Form.Element.Serializers={input:function(_1d5){
switch(_1d5.type.toLowerCase()){
case "checkbox":
case "radio":
return Form.Element.Serializers.inputSelector(_1d5);
default:
return Form.Element.Serializers.textarea(_1d5);
}
},inputSelector:function(_1d6){
return _1d6.checked?_1d6.value:null;
},textarea:function(_1d7){
return _1d7.value;
},select:function(_1d8){
return this[_1d8.type=="select-one"?"selectOne":"selectMany"](_1d8);
},selectOne:function(_1d9){
var _1da=_1d9.selectedIndex;
return _1da>=0?this.optionValue(_1d9.options[_1da]):null;
},selectMany:function(_1db){
var _1dc,length=_1db.length;
if(!length){
return null;
}
for(var i=0,_1dc=[];i<length;i++){
var opt=_1db.options[i];
if(opt.selected){
_1dc.push(this.optionValue(opt));
}
}
return _1dc;
},optionValue:function(opt){
return Element.extend(opt).hasAttribute("value")?opt.value:opt.text;
}};
Abstract.TimedObserver=function(){
};
Abstract.TimedObserver.prototype={initialize:function(_1e0,_1e1,_1e2){
this.frequency=_1e1;
this.element=$(_1e0);
this.callback=_1e2;
this.lastValue=this.getValue();
this.registerCallback();
},registerCallback:function(){
setInterval(this.onTimerEvent.bind(this),this.frequency*1000);
},onTimerEvent:function(){
var _1e3=this.getValue();
var _1e4=("string"==typeof this.lastValue&&"string"==typeof _1e3?this.lastValue!=_1e3:String(this.lastValue)!=String(_1e3));
if(_1e4){
this.callback(this.element,_1e3);
this.lastValue=_1e3;
}
}};
Form.Element.Observer=Class.create();
Form.Element.Observer.prototype=Object.extend(new Abstract.TimedObserver(),{getValue:function(){
return Form.Element.getValue(this.element);
}});
Form.Observer=Class.create();
Form.Observer.prototype=Object.extend(new Abstract.TimedObserver(),{getValue:function(){
return Form.serialize(this.element);
}});
Abstract.EventObserver=function(){
};
Abstract.EventObserver.prototype={initialize:function(_1e5,_1e6){
this.element=$(_1e5);
this.callback=_1e6;
this.lastValue=this.getValue();
if(this.element.tagName.toLowerCase()=="form"){
this.registerFormCallbacks();
}else{
this.registerCallback(this.element);
}
},onElementEvent:function(){
var _1e7=this.getValue();
if(this.lastValue!=_1e7){
this.callback(this.element,_1e7);
this.lastValue=_1e7;
}
},registerFormCallbacks:function(){
Form.getElements(this.element).each(this.registerCallback.bind(this));
},registerCallback:function(_1e8){
if(_1e8.type){
switch(_1e8.type.toLowerCase()){
case "checkbox":
case "radio":
Event.observe(_1e8,"click",this.onElementEvent.bind(this));
break;
default:
Event.observe(_1e8,"change",this.onElementEvent.bind(this));
break;
}
}
}};
Form.Element.EventObserver=Class.create();
Form.Element.EventObserver.prototype=Object.extend(new Abstract.EventObserver(),{getValue:function(){
return Form.Element.getValue(this.element);
}});
Form.EventObserver=Class.create();
Form.EventObserver.prototype=Object.extend(new Abstract.EventObserver(),{getValue:function(){
return Form.serialize(this.element);
}});
if(!window.Event){
var Event=new Object();
}
Object.extend(Event,{KEY_BACKSPACE:8,KEY_TAB:9,KEY_RETURN:13,KEY_ESC:27,KEY_LEFT:37,KEY_UP:38,KEY_RIGHT:39,KEY_DOWN:40,KEY_DELETE:46,KEY_HOME:36,KEY_END:35,KEY_PAGEUP:33,KEY_PAGEDOWN:34,element:function(_1e9){
return _1e9.target||_1e9.srcElement;
},isLeftClick:function(_1ea){
return (((_1ea.which)&&(_1ea.which==1))||((_1ea.button)&&(_1ea.button==1)));
},pointerX:function(_1eb){
return _1eb.pageX||(_1eb.clientX+(document.documentElement.scrollLeft||document.body.scrollLeft));
},pointerY:function(_1ec){
return _1ec.pageY||(_1ec.clientY+(document.documentElement.scrollTop||document.body.scrollTop));
},stop:function(_1ed){
if(_1ed.preventDefault){
_1ed.preventDefault();
_1ed.stopPropagation();
}else{
_1ed.returnValue=false;
_1ed.cancelBubble=true;
}
},findElement:function(_1ee,_1ef){
var _1f0=Event.element(_1ee);
while(_1f0.parentNode&&(!_1f0.tagName||(_1f0.tagName.toUpperCase()!=_1ef.toUpperCase()))){
_1f0=_1f0.parentNode;
}
return _1f0;
},observers:false,_observeAndCache:function(_1f1,name,_1f3,_1f4){
if(!this.observers){
this.observers=[];
}
if(_1f1.addEventListener){
this.observers.push([_1f1,name,_1f3,_1f4]);
_1f1.addEventListener(name,_1f3,_1f4);
}else{
if(_1f1.attachEvent){
this.observers.push([_1f1,name,_1f3,_1f4]);
_1f1.attachEvent("on"+name,_1f3);
}
}
},unloadCache:function(){
if(!Event.observers){
return;
}
for(var i=0,length=Event.observers.length;i<length;i++){
Event.stopObserving.apply(this,Event.observers[i]);
Event.observers[i][0]=null;
}
Event.observers=false;
},observe:function(_1f6,name,_1f8,_1f9){
_1f6=$(_1f6);
_1f9=_1f9||false;
if(name=="keypress"&&(navigator.appVersion.match(/Konqueror|Safari|KHTML/)||_1f6.attachEvent)){
name="keydown";
}
Event._observeAndCache(_1f6,name,_1f8,_1f9);
},stopObserving:function(_1fa,name,_1fc,_1fd){
_1fa=$(_1fa);
_1fd=_1fd||false;
if(name=="keypress"&&(navigator.appVersion.match(/Konqueror|Safari|KHTML/)||_1fa.detachEvent)){
name="keydown";
}
if(_1fa.removeEventListener){
_1fa.removeEventListener(name,_1fc,_1fd);
}else{
if(_1fa.detachEvent){
try{
_1fa.detachEvent("on"+name,_1fc);
}
catch(e){
}
}
}
}});
if(navigator.appVersion.match(/\bMSIE\b/)){
Event.observe(window,"unload",Event.unloadCache,false);
}
var Position={includeScrollOffsets:false,prepare:function(){
this.deltaX=window.pageXOffset||document.documentElement.scrollLeft||document.body.scrollLeft||0;
this.deltaY=window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop||0;
},realOffset:function(_1fe){
var _1ff=0,valueL=0;
do{
_1ff+=_1fe.scrollTop||0;
valueL+=_1fe.scrollLeft||0;
_1fe=_1fe.parentNode;
}while(_1fe);
return [valueL,_1ff];
},cumulativeOffset:function(_200){
var _201=0,valueL=0;
do{
_201+=_200.offsetTop||0;
valueL+=_200.offsetLeft||0;
_200=_200.offsetParent;
}while(_200);
return [valueL,_201];
},positionedOffset:function(_202){
var _203=0,valueL=0;
do{
_203+=_202.offsetTop||0;
valueL+=_202.offsetLeft||0;
_202=_202.offsetParent;
if(_202){
if(_202.tagName=="BODY"){
break;
}
var p=Element.getStyle(_202,"position");
if(p=="relative"||p=="absolute"){
break;
}
}
}while(_202);
return [valueL,_203];
},offsetParent:function(_205){
if(_205.offsetParent&&!(_205.style.display=="none"&&_205.offsetParent==document.body)){
return _205.offsetParent;
}
if(_205==document.body){
return _205;
}
while((_205=_205.parentNode)&&_205!=document.body){
if(Element.getStyle(_205,"position")!="static"){
return _205;
}
}
return document.body;
},within:function(_206,x,y){
if(this.includeScrollOffsets){
return this.withinIncludingScrolloffsets(_206,x,y);
}
this.xcomp=x;
this.ycomp=y;
this.offset=this.cumulativeOffset(_206);
return (y>=this.offset[1]&&y<this.offset[1]+_206.offsetHeight&&x>=this.offset[0]&&x<this.offset[0]+_206.offsetWidth);
},withinIncludingScrolloffsets:function(_209,x,y){
var _20c=this.realOffset(_209);
this.xcomp=x+_20c[0]-this.deltaX;
this.ycomp=y+_20c[1]-this.deltaY;
this.offset=this.cumulativeOffset(_209);
return (this.ycomp>=this.offset[1]&&this.ycomp<this.offset[1]+_209.offsetHeight&&this.xcomp>=this.offset[0]&&this.xcomp<this.offset[0]+_209.offsetWidth);
},overlap:function(mode,_20e){
if(!mode){
return 0;
}
if(mode=="vertical"){
return ((this.offset[1]+_20e.offsetHeight)-this.ycomp)/_20e.offsetHeight;
}
if(mode=="horizontal"){
return ((this.offset[0]+_20e.offsetWidth)-this.xcomp)/_20e.offsetWidth;
}
},page:function(_20f){
var _210=0,valueL=0;
var _211=_20f;
do{
_210+=_211.offsetTop||0;
valueL+=_211.offsetLeft||0;
if(_211.offsetParent==document.body){
if(Element.getStyle(_211,"position")=="absolute"){
break;
}
}
}while(_211=_211.offsetParent);
_211=_20f;
do{
if(!window.opera||_211.tagName=="BODY"){
_210-=_211.scrollTop||0;
valueL-=_211.scrollLeft||0;
}
}while(_211=_211.parentNode);
return [valueL,_210];
},clone:function(_212,_213){
var _214=Object.extend({setLeft:true,setTop:true,setWidth:true,setHeight:true,offsetTop:0,offsetLeft:0},arguments[2]||{});
_212=$(_212);
var p=Position.page(_212);
_213=$(_213);
var _216=[0,0];
var _217=null;
if(Element.getStyle(_213,"position")=="absolute"){
_217=Position.offsetParent(_213);
_216=Position.page(_217);
}
if(_217==document.body){
_216[0]-=document.body.offsetLeft;
_216[1]-=document.body.offsetTop;
}
if(_214.setLeft){
_213.style.left=(p[0]-_216[0]+_214.offsetLeft)+"px";
}
if(_214.setTop){
_213.style.top=(p[1]-_216[1]+_214.offsetTop)+"px";
}
if(_214.setWidth){
_213.style.width=_212.offsetWidth+"px";
}
if(_214.setHeight){
_213.style.height=_212.offsetHeight+"px";
}
},absolutize:function(_218){
_218=$(_218);
if(_218.style.position=="absolute"){
return;
}
Position.prepare();
var _219=Position.positionedOffset(_218);
var top=_219[1];
var left=_219[0];
var _21c=_218.clientWidth;
var _21d=_218.clientHeight;
_218._originalLeft=left-parseFloat(_218.style.left||0);
_218._originalTop=top-parseFloat(_218.style.top||0);
_218._originalWidth=_218.style.width;
_218._originalHeight=_218.style.height;
_218.style.position="absolute";
_218.style.top=top+"px";
_218.style.left=left+"px";
_218.style.width=_21c+"px";
_218.style.height=_21d+"px";
},relativize:function(_21e){
_21e=$(_21e);
if(_21e.style.position=="relative"){
return;
}
Position.prepare();
_21e.style.position="relative";
var top=parseFloat(_21e.style.top||0)-(_21e._originalTop||0);
var left=parseFloat(_21e.style.left||0)-(_21e._originalLeft||0);
_21e.style.top=top+"px";
_21e.style.left=left+"px";
_21e.style.height=_21e._originalHeight;
_21e.style.width=_21e._originalWidth;
}};
if(/Konqueror|Safari|KHTML/.test(navigator.userAgent)){
Position.cumulativeOffset=function(_221){
var _222=0,valueL=0;
do{
_222+=_221.offsetTop||0;
valueL+=_221.offsetLeft||0;
if(_221.offsetParent==document.body){
if(Element.getStyle(_221,"position")=="absolute"){
break;
}
}
_221=_221.offsetParent;
}while(_221);
return [valueL,_222];
};
}
Element.addMethods();
}
if($Bootstrap.notLoaded("41197467ddfd0890e7f0c74f2c78aec4")){
var Debug={alert:function(v){
alert(Debug.dump(v));
},dump:function(v,l,r){
function indent(n){
var r="";
for(var i=0;i<n;i++){
r+=" ";
}
return r;
}
if(r===undefined){
r=true;
}
var t=typeof v;
var l=l||0;
if(t=="object"){
var _22b=[];
for(var i in v){
if(typeof v[i]=="function"){
continue;
}
var p=indent(l+4)+i+" => ";
if(r){
p+=this.dump(v[i],l+4,true);
}else{
p+=v[i];
}
_22b.push(p);
}
return "{\n"+_22b.join(",\n")+"\n"+indent(l)+"}";
}else{
return v;
}
},popup:function(obj){
if(typeof obj=="string"){
var _22f=obj;
}else{
var _22f=this.dump(obj);
}
var w=window.open("","","width=800,height=600,scrollbars=yes");
w.document.open();
w.document.write("<pre>"+obj+"</pre>");
w.document.close();
},_fixed_window:null,fixedPopup:function(str){
if(!this._fixed_window||this._fixed_window.closed){
this._fixed_window=window.open("","","width=800,height=600,scrollbars=yes");
}
this._fixed_window.document.body.innerHTML+="<pre>"+str+"</pre>";
}};
}
if($Bootstrap.notLoaded("8312fb9edc519ca6d4075177151fe7ae")){
var JSON=function(){
var m={"\b":"\\b","\t":"\\t","\n":"\\n","\f":"\\f","\r":"\\r","\"":"\\\"","\\":"\\\\"},s={"boolean":function(x){
return String(x);
},number:function(x){
return isFinite(x)?String(x):"null";
},string:function(x){
if(/["\\\x00-\x1f]/.test(x)){
x=x.replace(/([\x00-\x1f\\"])/g,function(a,b){
var c=m[b];
if(c){
return c;
}
c=b.charCodeAt();
return "\\u00"+Math.floor(c/16).toString(16)+(c%16).toString(16);
});
}
return "\""+x+"\"";
},object:function(x){
if(x){
var a=[],b,f,i,l,v;
if(x instanceof Array){
a[0]="[";
l=x.length;
for(i=0;i<l;i+=1){
v=x[i];
f=s[typeof v];
if(f){
v=f(v);
if(typeof v=="string"){
if(b){
a[a.length]=",";
}
a[a.length]=v;
b=true;
}
}
}
a[a.length]="]";
}else{
if(x instanceof Object){
a[0]="{";
for(i in x){
v=x[i];
f=s[typeof v];
if(f){
v=f(v);
if(typeof v=="string"){
if(b){
a[a.length]=",";
}
a.push(s.string(i),":",v);
b=true;
}
}
}
a[a.length]="}";
}else{
return;
}
}
return a.join("");
}
return "null";
}};
return {stringify:function(v){
var f=s[typeof v];
if(f){
v=f(v);
if(typeof v=="string"){
return v;
}
}
return null;
},parse:function(text){
try{
return !(/[^,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t]/.test(text.replace(/"(\\.|[^"\\])*"/g,"")))&&eval("("+text+")");
}
catch(e){
return false;
}
}};
}();
}
if($Bootstrap.notLoaded("09bb7d8c40d0a197e89bc5beaaef3275")){
Framework={create:function(name,obj){
var _240=name.split(".");
var root=window;
var i=0;
for(ii=_240.length-1;i<ii;i++){
if(!root[_240[i]]){
root[_240[i]]={exists:false};
}
root=root[_240[i]];
}
if(root[_240[i]]){
var leaf=root[_240[i]];
if(typeof leaf["exists"]!="undefined"&&leaf.exists==false){
delete leaf["exists"];
}
}else{
root[_240[i]]={};
}
if(typeof obj=="function"&&obj.bind){
root[_240[i]]=obj;
}else{
for(var p in obj){
if(typeof root[_240[i]][p]=="undefined"){
root[_240[i]][p]=obj[p];
}
}
}
return root[_240[i]];
},register:function(name){
var _246=name.split(".");
var root=window;
var i=0;
for(ii=_246.length;i<ii;i++){
if(!root[_246[i]]){
root[_246[i]]={exists:false};
}
root=root[_246[i]];
}
}};
function defined(v){
if(typeof (v)=="undefined"){
return false;
}else{
return true;
}
}
}
if($Bootstrap.notLoaded("a9700d6ea81c1e2d741b9d959608cfd4")){
Browser={is_safari_1_3:/Safari\/312/.test(navigator.userAgent),is_safari:/Konqueror|Safari|KHTML/.test(navigator.userAgent),is_ie:/MSIE/.test(navigator.userAgent),is_ie6:/MSIE\ 6/.test(navigator.userAgent),is_ie7:/MSIE\ 7/.test(navigator.userAgent),is_firefox:/Firefox/.test(navigator.userAgent),is_win:/Win/.test(navigator.platform),is_win2k:/Windows\ NT\ 5\.0/.test(navigator.userAgent),is_mac:/Mac/.test(navigator.platform),is_linux:/Linux/.test(navigator.platform),getDimensions:function(){
if(this.is_ie){
var _24a=document.body.clientHeight;
var _24b=document.body.clientWidth;
}else{
var _24a=window.innerHeight;
var _24b=window.innerWidth;
}
return [_24a,_24b];
},getIframeDocument:function(_24c){
if(!_24c){
return null;
}
var root=_24c.contentWindow||_24c.contentDocument;
if(root.document){
root=root.document;
}
return root;
},popup:function(u,h,w,t,l,_253,_254){
var left=l||(screen.width-w)/2;
var top=t||(screen.height-h-60)/2;
_253=(_253?"yes":"no");
_254=(_254?"yes":"no");
var _257="status,width="+w+",height="+h+",scrollbars="+_254+",resizable="+_253+",top="+top+",left="+left;
return window.open(u,"",_257);
}};
}
if($Bootstrap.notLoaded("cffacd684309d1eb32ff0752dc489aa5")){
function __ginit(){
if($_w){
return;
}
$_w=window;
$_d=document;
$_b=document.body;
}
function _ac(par){
for(a=1,aa=arguments.length;a<aa;a++){
_ge(par).appendChild(_ge(arguments[a]));
}
}
function _ac_index(par,_25a){
var _25b=_ge(par).childNodes.length-1;
if(_25b<0){
_25b=0;
}
for(var a=2,aa=arguments.length;a<aa;a++){
if(_25a<=_25b){
var _25d=_ge(par).childNodes[_25a];
_ge(par).insertBefore(_ge(arguments[a]),_25d);
}else{
_ge(par).appendChild(_ge(arguments[a]));
}
}
}
function _ce(type,_25f){
__ginit();
var e=$_d.createElement(type);
if(!e){
return false;
}
for(p in _25f){
e[p]=_25f[p];
}
return e;
}
function _ce_html(html){
__ginit();
var c=_ce("div");
_html(c,html);
return c.firstChild;
}
function _check(o){
_ge(o).checked=true;
}
function _cookie(n,v,e){
if(v){
var d=(new Date).getTime();
document.cookie=n+"="+v+";"+(e?"expires="+(new Date(d+e).toGMTString()):"");
}else{
var c=" "+$_d.cookie;
var p=c.indexOf(" "+n+"=");
if(p!=-1){
var e=c.indexOf(";",p);
return c.substring(p+n.length+2,(e==-1?c.length:e));
}else{
return "";
}
}
}
function _cssProp(elem,prop,_26c){
var s,p="undefined";
var dv=document.defaultView;
if(dv&&dv.getComputedStyle){
s=dv.getComputedStyle(elem,"");
if(s){
p=s.getPropertyValue(prop);
}
}else{
if(elem.currentStyle){
var a=prop.split("-");
prop=a[0];
for(var i=1;i<a.length;++i){
c=a[i].charAt(0);
prop+=a[i].replace(c,c.toUpperCase());
}
p=elem.currentStyle[prop];
}else{
return null;
}
}
return _26c?(parseInt(p)||0):p;
}
function _find_parent(e,f){
while(e!=$_b&&!f(e)){
e=e.parentNode;
}
if(e==$_b){
return null;
}
return e;
}
function _ge(obj,win){
__ginit();
if(typeof obj!="string"){
return obj;
}
if(win){
d=win.document;
}else{
d=$_d;
}
return d.getElementById(obj);
}
function _height(obj,h){
obj=_ge(obj);
if(h){
obj.style.height=parseInt(h)+"px";
}else{
return obj.offsetHeight;
}
}
function _hide(o){
var d=_ge(o);
if(d){
d.style.display="none";
}
}
function _html(obj,h){
obj=_ge(obj);
if(typeof h!="undefined"){
obj.innerHTML=h;
}else{
return obj.innerHTML;
}
}
function _left(obj,l){
obj=_ge(obj);
if(l){
obj.style.left=parseInt(l)+"px";
}else{
var cl=0;
if(obj.offsetParent){
while(obj.offsetParent){
cl+=obj.offsetLeft;
obj=obj.offsetParent;
}
}else{
cl+=obj.offsetLeft;
}
return cl;
}
}
function _msx(e){
if(window.event){
return event.clientX;
}else{
return e.clientX;
}
}
function _msy(e){
if(window.event){
return event.clientY;
}else{
return e.clientY;
}
}
function _node_name(o){
return o.nodeName.toLowerCase();
}
function _pd(e){
if(e&&e.preventDefault){
e.preventDefault();
}else{
if(window.event){
window.event.returnValue=false;
}
}
}
function _rc(par,chi){
par.removeChild(chi);
}
function _remove(elem){
elem=_ge(elem);
elem.parentNode.removeChild(elem);
}
function _select(o,v){
o=_ge(o);
var op=o.options;
var idx=0;
for(i=0,ii=op.length;i<ii;i++){
if(op[i].value==v){
idx=i;
break;
}
}
o.selectedIndex=idx;
}
function _serialize(v){
var r="";
if(typeof v=="string"||typeof v=="number"){
if(v.replace){
v=v.replace(/\"/g,"\\\"");
}
r="\""+v+"\"";
}else{
var c=[];
for(var i in v){
c.push(i+":"+_serialize(v[i]));
}
r="{"+c.join(",")+"}";
}
return r;
}
function _show(o){
_ge(o).style.display="";
}
function _sp(e){
if(e&&e.stopPropagation){
e.stopPropagation();
}else{
if(window.event){
window.event.cancelBubble=true;
}
}
}
function _src_elem(e,n){
var o=null;
if(window.event){
o=window.event.srcElement;
}else{
if(e){
o=e.target;
}else{
return null;
}
}
if(n){
o=_find_parent(o,function(x){
return (_node_name(x)==n?true:false);
});
}
return o;
}
function _style(o,st){
o=_ge(o);
for(s in st){
o.style[s]=st[s];
}
}
function _top(obj,t){
obj=_ge(obj);
if(t){
obj.style.top=parseInt(t)+"px";
}else{
var ct=0;
if(obj.offsetParent){
while(obj.offsetParent){
ct+=obj.offsetTop;
obj=obj.offsetParent;
}
}else{
ct+=obj.offsetTop;
}
return ct;
}
}
function _uncheck(o){
_ge(o).checked=false;
}
function _v(obj,v){
obj=_ge(obj);
if(typeof v!="undefined"){
obj.value=v;
}else{
if(obj&&obj.value){
return obj.value;
}
}
return "";
}
function _width(obj,w){
obj=_ge(obj);
if(w){
obj.style.width=parseInt(w)+"px";
}else{
return obj.offsetWidth;
}
}
$_w=null;
$_d=null;
$_b=null;
}
if($Bootstrap.notLoaded("243c18c7e2b12d321affd0d9339f664e")){
if(Object&&Object.extend){
Object.extend(Array.prototype,{insert:function(_29d,_29e){
for(var i=this.length-1;i>=_29d;i--){
this[i+1]=this[i];
}
this[_29d]=_29e;
},isMember:function(str,_2a1){
return this.indexOf(str,_2a1)>-1;
},quicksort:function(_2a2,low,high){
var _2a5,pivot,swap1,swap2,temp;
_2a2=_2a2||Array._compareNormal;
if(typeof low=="undefined"){
low=0;
}
if(typeof high=="undefined"){
high=this.length-1;
}
if((high-low)==1){
if(_2a2(this[low],this[high])==1){
temp=this[low];
this[low]=this[high];
this[high]=temp;
}
return;
}
_2a5=parseInt((low+high)/2);
pivot=this[_2a5];
this[_2a5]=this[low];
this[low]=pivot;
swap1=low+1;
swap2=high;
do{
while(swap1<=swap2&&_2a2(this[swap1],pivot)!=1){
swap1++;
}
while(_2a2(this[swap2],pivot)==1){
swap2--;
}
if(swap1<swap2){
temp=this[swap1];
this[swap1]=this[swap2];
this[swap2]=temp;
}
}while(swap1<swap2);
this[low]=this[swap2];
this[swap2]=pivot;
if(low<(swap2-1)){
this.quicksort(_2a2,low,swap2-1);
}
if((swap2+1)<high){
this.quicksort(_2a2,swap2+1,high);
}
},remove:function(_2a6){
for(var i=_2a6,ii=this.length-1;i<ii;i++){
this[i]=this[i+1];
}
if(this.length>0){
this.length--;
}
},unique:function(_2a8){
if(this.length==0){
return this;
}
if(arguments.length==0){
_2a8=false;
}
var _2a9=new Array(this[0]);
var _2aa,tmp1,tmp2;
for(var i=0;i<this.length;i++){
if(!_2a9.isMember(this[i],_2a8)){
_2a9.push(this[i]);
}
}
return _2a9;
},in_array:function(obj){
var len=this.length;
for(var x=0;x<=len;x++){
if(this[x]==obj){
return true;
}
}
return false;
}});
}
if(Object&&Object.extend){
Object.extend(Array,{diff:function(_2af,_2b0){
var diff=[];
for(var i=0,ii=_2af.length;i<ii;i++){
if(!_2b0.isMember(_2af[i])){
diff.push(_2af[i]);
}
}
return diff;
},merge:function(){
var _2b3=[];
for(var a=0,aa=arguments.length;a<aa;a++){
for(var i=0,ii=arguments[a].length;i<ii;i++){
_2b3.push(arguments[a][i]);
}
}
return _2b3;
},_compareNormal:function(a,b){
if(a<b){
return -1;
}else{
if(a>b){
return 1;
}else{
return 0;
}
}
}});
}
}
if($Bootstrap.notLoaded("f006adea6d9ac90e4ddfb0f7a5f1448d")){
if(Object&&Object.extend&&Element){
var ElementExt={append:function(){
var _2b8=$(arguments[0]);
for(var i=1,ii=arguments.length;i<ii;i++){
_2b8.appendChild($(arguments[i]));
}
return _2b8;
},appendOverlay:function(_2ba,_2bb){
var _2bc=_2ba.lastChild||_2ba;
var _2bd=Position.cumulativeOffset(_2bc);
var _2be=_2ba==_2bc?{width:0,height:0}:Element.getDimensions(_2bc);
Element.setStyle(_2bb,{position:"absolute",left:_2bd[0]+"px",top:(_2bd[1]+_2be.height)+"px"});
},appendStrict:function(){
var args=$A(arguments);
var _2c0=args.shift();
_2c0=$(_2c0);
for(var i=0,ii=args.length;i<ii;i++){
var _2c2=Element.create("div");
_2c2.appendChild($(args[i]));
_2c0.innerHTML=_2c0.innerHTML+_2c2.innerHTML;
}
return _2c0;
},create:function(type,_2c4){
var elem=document.createElement(type);
for(p in _2c4){
elem[p]=_2c4[p];
}
return $(elem);
},__create_html_div:null,createHtml:function(html){
if(!Element.__create_html_div){
Element.__create_html_div=Element.create("div");
}
Element.__create_html_div.innerHTML=html;
var _2c7=Element.__create_html_div.firstChild;
Element.remove(_2c7);
return $(_2c7);
},getByTag:function(_2c8,tag){
return _2c8.getElementsByTagName(tag);
},_getDimensions:Element.getDimensions,getDimensions:function(_2ca){
var _2cb=$(_2ca)._getDimensions();
if(Browser.is_safari&&_2ca.tagName.toLowerCase()=="tr"){
var _2cc=0;
var _2cd=_2ca.childNodes;
for(var i=0;i<_2cd.length;i++){
var _2cf=$(_2cd[i])._getDimensions().height;
if(_2cf>_2cc){
_2cc=_2cf;
}
}
return {width:_2cb.width,height:_2cc};
}else{
return _2cb;
}
},getText:function(_2d0){
if(_2d0.childNodes.length>1){
return _2d0.childNodes[1].nodeValue;
}else{
return _2d0.firstChild.nodeValue;
}
},insert:function(_2d1,_2d2){
_2d1=$(_2d1);
if(!_2d1){
return;
}
var _2d3=_2d1.childNodes;
var _2d4=_2d3.length-1;
if(_2d4<0){
_2d4=0;
}
for(var a=2,aa=arguments.length;a<aa;a++){
if(_2d3.length>0&&_2d2<=_2d4){
var _2d6=_2d3[_2d2];
_2d1.insertBefore($(arguments[a]),_2d6);
}else{
_2d1.appendChild($(arguments[a]));
}
}
},isMember:function(_2d7,_2d8){
if($(_2d8).parentNode==$(_2d7)){
return true;
}else{
return false;
}
},isOrphan:function(_2d9){
_2d9=$(_2d9);
if(!_2d9.parentNode||Element.nodeName(_2d9.parentNode)=="#document-fragment"){
return true;
}else{
return false;
}
},reallyVisible:function(_2da){
_2da=$(_2da);
if((_2da.offsetHeight||0)==0){
return false;
}else{
return true;
}
},update:function(_2db,text){
$(_2db).innerHTML=text;
},updateText:function(_2dd,text,_2df){
_2df=Object.extend({escape_spaces:false,allow_breaks:true},_2df||{});
text=text.escapeHTML();
if(!_2df.allow_breaks){
text=text.replace(/ /g,"&nbsp;");
}else{
if(_2df.escape_spaces){
text=text.replace(/  /g," &nbsp;");
}
}
$(_2dd).innerHTML=text;
},contains:function(_2e0,_2e1){
if(!$(_2e1)){
return false;
}else{
if($(_2e1)==$(_2e0)){
return true;
}else{
return Element.contains($(_2e0),$(_2e1).parentNode);
}
}
}};
Object.extend(Element,ElementExt);
Element.addMethods(ElementExt);
Object.extend(Element,{nodeName:function(_2e2){
return (new String($(_2e2).nodeName)).toLowerCase();
}});
}
document._getElementById=document.getElementById;
document.getElementById=function(id){
var a=[];
var o=document._getElementById(id);
if(!o){
return o;
}
while(o.id!=id){
a.push({i:o.id,e:o});
o.id="";
o=document._getElementById(id);
if(!o){
return o;
}
}
for(j=0,jj=a.length;j<jj;j++){
a[j].e.id=a[j].i;
}
a=null;
return o;
};
}
if($Bootstrap.notLoaded("45a2d6bcb7fd8de4c7189a7342862287")){
if(Object&&Object.extend&&Event){
Object.extend(Event,{type:function(e){
return e.type;
},key:function(e){
return e.keyCode;
}});
Event._observe=Event.observe;
Event.observe=function(_2e8,_2e9,func,_2eb){
if(_2eb){
func=func.bindAsEventListener(_2eb);
}
Event._observe(_2e8,_2e9,func);
};
Event.__observeAndCache=Event._observeAndCache;
Event._observeAndCache=function(_2ec,name,_2ee,_2ef){
if(name=="dblclick"&&navigator.appVersion.match(/Konqueror|Safari|KHTML/)){
if(!_2ec.ondblclick){
_2ec.ondblclick=function(e){
var _2f1=Event.element(e);
while(!_2f1.ondblclick){
_2f1=_2f1.parentNode;
if(_2f1==document.body){
return false;
}
}
$A(_2f1.dbl_funcs).each(function(func){
func(e);
});
};
}
if(!_2ec.dbl_funcs){
_2ec.dbl_funcs=new Array();
}
_2ec.dbl_funcs.push(_2ee);
}else{
if((name=="click"||name=="dblclick")&&Element.nodeName(_2ec)=="a"){
_2ec.onclick=function(){
return false;
};
}
Event.__observeAndCache(_2ec,name,_2ee,_2ef);
}
};
Event._stopObserving=Event.stopObserving;
Event.stopObserving=function(_2f3,name,_2f5,_2f6){
if(name=="dblclick"&&navigator.appVersion.match(/Konqueror|Safari|KHTML/)){
if(_2f3.dbl_funcs){
_2f3.dbl_funcs=_2f3.dbl_funcs.reject(function(func){
return (func==_2f5);
});
}
}else{
Event._stopObserving(_2f3,name,_2f5,_2f6);
}
};
Event.stopPropagation=function(_2f8){
if(_2f8.preventDefault){
_2f8.stopPropagation();
}else{
_2f8.cancelBubble=true;
}
};
}
}
if($Bootstrap.notLoaded("c339b1f39a8f9e699a9822a91e32691a")){
if(Object&&Object.extend&&Form){
Form.prepare=function(form){
var _2fa=Form.getElements(form);
for(var i=0,ii=_2fa.length;i<ii;i++){
var elm=_2fa[i];
if(elm.name&&!form[elm.name]){
form[elm.name]=elm;
}
}
};
}
}
if($Bootstrap.notLoaded("f066f9904b67c3c3bc11e9289052b37e")){
if(typeof Form=="undefined"){
Form={};
}
Form.Select={append:function(_2fd,opt){
var _2ff=document.createElement("option");
Element.update(_2ff,opt.text.replace(/\ /g,"&nbsp;"));
_2ff.value=opt.value;
_2ff.className=opt.className;
_2fd.appendChild(_2ff);
return _2ff;
},binarySearch:function(_300,opt){
var _302=Object.extend({returnBestFitPosition:false,low:0,high:_300.options.length},arguments[2]||{});
var low=_302.low;
var high=_302.high;
while(low!=high){
var mid=parseInt((low+high)/2);
if(opt.text>_300.options[mid].text){
low=mid+1;
}else{
if(opt.text<_300.options[mid].text){
high=mid;
}else{
return mid;
}
}
}
if(_302.returnBestFitPosition){
return low;
}
return -1;
},clear:function(_306){
_306=$(_306);
while(_306&&_306.options&&_306.options.length>0){
try{
_306.options[0]=null;
}
catch(e){
}
}
},contains:function(_307,opt){
var _309=Object.extend({sorted:false},arguments[2]||{});
if(_309.sorted){
return (Form.Select.binarySearch(_307,opt)>-1);
}else{
return (Form.Select.iterativeSearch(_307,opt,_309)>-1);
}
},insert:function(_30a,opt){
var _30c=Object.extend({sorted:false,unique:false,position:_30a.options.length},arguments[2]||{});
if(_30c.sorted){
_30c.position=Form.Select.binarySearch(_30a,opt,{returnBestFitPosition:true});
}
if(_30c.unique&&_30a.options.length>0&&((_30c.sorted&&_30c.position<_30a.options.length&&_30a.options[_30c.position].value==opt.value)||Form.Select.contains(_30a,opt,_30c))){
return false;
}
if(_30c.position>_30a.options.length){
return false;
}else{
if(_30c.position==_30a.options.length){
return Form.Select.append(_30a,opt);
}else{
var _30d=document.createElement("option");
Element.update(_30d,opt.text.replace(/\ /g,"&nbsp;"));
_30d.value=opt.value;
_30d.className=opt.className;
_30a.insertBefore(_30d,_30a.options[_30c.position]);
return _30d;
}
}
},iterativeSearch:function(_30e,opt){
for(var i=0;i<_30e.options.length;i++){
if(_30e.options[i].text==opt.text){
return i;
}
}
return -1;
},remove:function(_311,opt){
var _313=Object.extend({sorted:false},arguments[2]||{});
var _314=-1;
do{
if(_313.sorted){
_314=Form.Select.binarySearch(_311,opt);
}else{
_314=Form.Select.iterativeSearch(_311,opt);
}
if(_314!=-1){
var _315=_311.options[_314].value;
_311.options[_314]=null;
return _315;
}
}while(_314!=-1);
},setSelected:function(_316,_317){
_316=$(_316);
for(var i=0,ii=_316.options.length;i<ii;i++){
if(_316.options[i].value==_317){
_316.selectedIndex=i;
return true;
}
}
return false;
},setInnerHTML:function(_319,html){
if(wack.Browser.is_ie){
html="<option>truncated</option>"+html;
}
_319.innerHTML=html;
if(wack.Browser.is_ie){
_319.outerHTML=_319.outerHTML;
}
},swap:function(_31b,_31c,_31d){
var opt1=_31b.options[_31c];
var opt2=_31b.options[_31d];
var _320=opt1.text;
var _321=opt1.value;
opt1.text=opt2.text;
opt1.value=opt2.value;
opt2.text=_320;
opt2.value=_321;
},transfer:function(_322,_323){
var _324=[];
var _325=arguments[2]||{};
while(_322.selectedIndex!=-1){
var opt=_322.options[_322.selectedIndex];
_322.options[_322.selectedIndex]=null;
_324.push(opt.value);
opt.text=opt.text.escapeHTML({escape_newlines:false});
Form.Select.insert(_323,opt,_325);
}
return _324;
},copy:function(_327,_328){
var _329=arguments[2]||{};
$A(_327.options).each(function(opt){
Form.Select.insert(_328,opt,_329);
});
}};
if(Object.extend){
Object.extend(Form.Select,{include:Form.Select.contains});
}
}
if($Bootstrap.notLoaded("ecf96694b44e3f407f67c8dccf5b2ba5")){
if(Object&&Object.extend&&Function){
Object.extend(Function,{release:function(func,win){
win=win||window;
win.setTimeout(func,1);
}});
}
}
if($Bootstrap.notLoaded("1ba3b250df567d14dffc248117fa3e56")){
if(Object&&Object.extend){
Object.extend(Number.prototype,{format:function(){
return Number.format(this);
}});
Object.extend(Number,{format:function(n){
var s=String(n);
var l=s.length;
var o=l-3;
var r="";
while(o>0){
r=","+s.substr(o,3)+r;
o-=3;
}
r=s.substr(0,o+3)+r;
return r;
}});
}
}
if($Bootstrap.notLoaded("311af0b0b246eaa67bbab8bedb35b827")){
Object.equals=function(_332,_333){
if(!window.JSON){
return false;
}
return (JSON.stringify(_332)==JSON.stringify(_333));
};
if(Object.extend){
Object.extend(Object,{bindCallbacks:function(obj){
for(var t in obj){
if(t.substr(0,3)=="_cb"&&!obj[t.substr(1)]){
obj[t.substr(1)]=obj[t].bind(obj);
}
}
},bindObservers:function(obj){
for(var t in obj){
if(t.substr(0,3)=="_ev"&&!obj[t.substr(1)]){
obj[t.substr(1)]=obj[t].bindAsEventListener(obj);
}
}
},copy:function(obj){
switch(typeof obj){
case "object":
if(obj===null){
return obj;
}else{
if(obj instanceof Array){
var _339=obj.clone();
for(var i=0,ii=_339.length;i<ii;i++){
_339[i]=Object.copy(_339[i]);
}
return _339;
}else{
if(obj.clone){
return obj.clone();
}else{
if(obj instanceof Object){
var _339=Object.clone(obj);
for(var i in _339){
_339[i]=Object.copy(_339[i]);
}
return _339;
}
}
}
}
return obj;
case "function":
case "boolean":
case "number":
case "string":
default:
return obj;
}
}});
}
}
if($Bootstrap.notLoaded("b5f45e1a6caef9db1924c110576f8ba3")){
String.prototype.urlEncode=function(){
var _33b="0123456789"+"ABCDEFGHIJKLMNOPQRSTUVWXYZ"+"abcdefghijklmnopqrstuvwxyz"+"-_.!~*'()";
var HEX="0123456789ABCDEF";
var _33d=this;
var _33e="";
for(var i=0;i<_33d.length;i++){
var ch=_33d.charAt(i);
if(ch==" "){
_33e+="+";
}else{
if(_33b.indexOf(ch)!=-1){
_33e+=ch;
}else{
var _341=ch.charCodeAt(0);
if(_341>255){
alert("Unicode Character '"+ch+"' cannot be encoded using standard URL encoding.\n"+"(URL encoding only supports 8-bit characters.)\n"+"A space (+) will be substituted.");
_33e+="+";
}else{
_33e+="%";
_33e+=HEX.charAt((_341>>4)&15);
_33e+=HEX.charAt(_341&15);
}
}
}
}
return _33e;
};
String.prototype.urlDecode=function(){
var _342="0123456789ABCDEFabcdef";
var _343=this.toString();
_343=_343.replace(/%00/g,"");
var _344="";
var i=0;
while(i<_343.length){
var ch=_343.charAt(i);
if(ch=="+"){
_344+=" ";
i++;
}else{
if(ch=="%"){
if(i<(_343.length-2)&&_342.indexOf(_343.charAt(i+1))!=-1&&_342.indexOf(_343.charAt(i+2))!=-1){
_344+=unescape(_343.substr(i,3));
i+=3;
}else{
_344+="";
i++;
}
}else{
_344+=ch;
i++;
}
}
}
return _344;
};
String.prototype.trim=function(){
var str=this;
str=str.replace(/^\s*/,"").replace(/\s*$/,"");
return str;
};
String.prototype.escapeHTML=function(_348){
_348=Object.extend({allow_wrap:true,escape_newlines:true,escape_spaces:false},_348||{});
if(_348.escape_newlines){
var _349=this.split("\n");
}else{
var _349=[this];
}
var div=document.createElement("div");
var ret="";
for(var i=0,ii=_349.length;i<ii;i++){
var _34d=document.createTextNode(_349[i]);
div.appendChild(_34d);
if(_348.escape_newlines&&i+1!=ii){
var br=document.createElement("br");
div.appendChild(br);
}
}
ret=div.innerHTML;
div.innerHTML="";
if(_348.escape_spaces){
ret=(_348.allow_wrap?ret.replace(/  /g," &nbsp;"):ret.replace(/ /g,"&nbsp;"));
}
return ret;
};
String.prototype.unescapeHTML=function(_34f){
_34f=Object.extend({unescape_spaces:false},_34f||{});
var div=document.createElement("div");
var text=this.stripTags();
if(_34f.unescape_spaces){
text=text.replace("&nbsp;"," ");
}
text_array=text.split("\n");
var _352="";
for(var i=0,ii=text_array.length;i<ii;i++){
div.innerHTML=text_array[i];
_352+=div.childNodes[0]?div.childNodes[0].nodeValue:"";
if(i+1!=ii){
_352+="\n";
}
}
return _352;
};
if(Object&&Object.extend){
Object.extend(String.prototype,{addSlashes:function(){
return String.addSlashes(this);
},htmlEncode:function(){
var _354=this.toString();
_354=_354.replace(/&/g,"&amp;");
_354=_354.replace(/</g,"&lt;");
_354=_354.replace(/>/g,"&gt;");
return _354;
},splitByLastChar:function(find){
return String.splitByLastChar(this,find);
},toFilesize:function(_356){
_356=_356||0;
var size=parseFloat(this)/1024;
size=size.toFixed(_356);
var unit="KB";
if(size<1){
size="< 1";
}else{
if(size>=1048576){
size=size/1048576;
size=size.toFixed(_356);
unit="GB";
}else{
if(size>=1024){
size=size/1024;
size=size.toFixed(_356);
unit="MB";
}
}
}
return size+" "+unit;
}});
Object.extend(String,{addSlashes:function(s){
s=new String(s);
s=s.replace(/\\/g,"\\\\");
s=s.replace(/\'/g,"\\'");
s=s.replace(/\"/g,"\\\"");
return s;
},compare:function(a,b,_35c){
if(!_35c){
a=a.toLowerCase();
b=b.toLowerCase();
}
if(a==b){
return true;
}else{
return false;
}
},repeat:function(_35d,_35e){
var _35f="";
for(var i=0;i<_35e;i++){
_35f+=_35d;
}
return _35f;
},splitByLastChar:function(_361,find){
var p=_361.lastIndexOf(find);
if(p==-1){
return [_361,_361];
}else{
return [_361.substring(0,p),_361.substring(p+1)];
}
}});
}
String.prototype.urlencode=String.prototype.urlEncode;
String.prototype.urldecode=String.prototype.urlDecode;
function urldecode(_364){
return _364.urlDecode();
}
}
if($Bootstrap.notLoaded("a608677076c791993f6afe53a5c8e844")){
wack={addMethods:function(obj,_366,_367){
wack.extend(obj,_366);
if(_367){
for(var func in _366){
obj.prototype[func]=function(){
return _366[func].apply(null,[this].concat($A(arguments)));
};
}
}
},depends:function(path){
var _36a=path.split(".");
var root=window;
for(var i=0,ii=_36a.length;i<ii;i++){
if(!root[_36a[i]]){
root[_36a[i]]={__wack_exists:false};
}
root=root[_36a[i]];
}
},extend:function(obj,_36e){
for(var prop in _36e){
obj[prop]=_36e[prop];
}
return obj;
},log:function(_370){
wack.Log.log(_370);
}};
}
if($Bootstrap.notLoaded("350a3f53212f035ca33ee9783e696b6a")){
wack.Class={create:function(){
return function(){
if(this.initialize){
this.initialize.apply(this,arguments);
}
};
}};
}
if($Bootstrap.notLoaded("90a40316f19d0b7d60dd662b8eacd035")){
wack.depends("wack.Array");
wack.Array.prototype={all:function(_371){
var _372=(_371||Prototype.K);
for(var i=0,ii=this.length;i<ii;i++){
if(!_372(this[i],i)){
return false;
}
}
return true;
},collect:function(_374){
var _375=[];
var _376=(_374||Prototype.K);
for(var i=0,ii=this.length;i<ii;i++){
_375.push(_376(this[i],i));
}
return _375;
},detect:function(_378){
for(var i=0,ii=this.length;i<ii;i++){
if(_378(this[i],i)){
return this[i];
}
}
return null;
},findAll:function(_37a){
var _37b=[];
for(var i=0,ii=this.length;i<ii;i++){
if(_37a(this[i],i)){
_37b.push(this[i]);
}
}
return _37b;
},include:function(_37d){
for(var i=0,ii=this.length;i<ii;i++){
if(this[i]==_37d){
return true;
}
}
return false;
},inject:function(memo,_380){
for(var i=0,ii=this.length;i<ii;i++){
memo=_380(memo,this[i],i);
}
return memo;
},max:function(_382){
if(this.length==0){
return;
}
var _383=_382||Prototype.K;
var _384=_383(this[0],0);
for(var i=1,ii=this.length;i<ii;i++){
var _386=_383(this[i],i);
if(_386>_384){
_384=_386;
}
}
return _384;
},min:function(_387){
if(this.length==0){
return;
}
var _388=_387||Prototype.K;
var _389=_388(this[0],0);
for(var i=1,ii=this.length;i<ii;i++){
var _38b=_388(this[i],i);
if(_38b<_389){
_389=_38b;
}
}
return _389;
},pluck:function(_38c){
var _38d=[];
for(var i=0,ii=this.length;i<ii;i++){
_38d.push(this[i][_38c]);
}
return _38d;
},reject:function(_38f){
var _390=[];
for(var i=0,ii=this.length;i<ii;i++){
if(!_38f(this[i],i)){
_390.push(this[i]);
}
}
return _390;
}};
Object.extend(wack.Array.prototype,{map:wack.Array.prototype.collect,find:wack.Array.prototype.detect,select:wack.Array.prototype.findAll,member:wack.Array.prototype.include});
Object.extend(Array.prototype,wack.Array.prototype);
}
if($Bootstrap.notLoaded("37432db9098633e9d7181f66eff23134")){
wack.BigInterval=function(_392,_393){
var _394=1000;
var _395=60*_394;
var _396=_395;
var sum=0;
function step(){
if(sum>=_393){
_392();
sum=0;
step();
}else{
sum+=1;
setTimeout(step,_396);
}
}
step();
};
}
if($Bootstrap.notLoaded("414aaed3a8c0c53ef48108acd76ec61d")){
wack.Browser={is_safari_1_3:/Safari\/312/.test(navigator.userAgent),is_safari:/Konqueror|Safari|KHTML/.test(navigator.userAgent),is_safari4:/4\.0\ Safari/.test(navigator.userAgent),is_ie:/MSIE/.test(navigator.userAgent),is_ie6:/MSIE\ 6/.test(navigator.userAgent),is_ie7:/MSIE\ 7/.test(navigator.userAgent),is_ie8:/MSIE\ 8/.test(navigator.userAgent),is_firefox:/Firefox/.test(navigator.userAgent),is_ff2:/Firefox\/2/.test(navigator.userAgent),is_ff3:/Firefox\/3/.test(navigator.userAgent),is_opera:/Opera/.test(navigator.userAgent),is_win:/Win/.test(navigator.platform),is_win2k:/Windows\ NT\ 5\.0/.test(navigator.userAgent),is_mac:/Mac/.test(navigator.platform),is_linux:/Linux/.test(navigator.platform),is_https:document.location.protocol=="https:",controlVersion:function(){
var _398;
var axo;
var e;
try{
axo=new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7");
_398=axo.GetVariable("$version");
}
catch(e){
}
if(!_398){
try{
axo=new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6");
_398="WIN 6,0,21,0";
axo.AllowScriptAccess="always";
_398=axo.GetVariable("$version");
}
catch(e){
}
}
if(!_398){
try{
axo=new ActiveXObject("ShockwaveFlash.ShockwaveFlash.3");
_398=axo.GetVariable("$version");
}
catch(e){
}
}
if(!_398){
try{
axo=new ActiveXObject("ShockwaveFlash.ShockwaveFlash.3");
_398="WIN 3,0,18,0";
}
catch(e){
}
}
if(!_398){
try{
axo=new ActiveXObject("ShockwaveFlash.ShockwaveFlash");
_398="WIN 2,0,0,11";
}
catch(e){
_398=-1;
}
}
return _398;
},deleteCookie:function(name){
this.setCookie(name,"",-1);
},detectFlashVersion:function(_39c,_39d,_39e){
versionStr=this.getSwfVersion();
if(versionStr==-1){
return false;
}else{
if(versionStr!=0){
if(this.is_ie&&this.is_win&&!this.is_opera){
tempArray=versionStr.split(" ");
tempString=tempArray[1];
versionArray=tempString.split(",");
}else{
versionArray=versionStr.split(".");
}
var _39f=versionArray[0];
var _3a0=versionArray[1];
var _3a1=versionArray[2];
if(_39f>parseFloat(_39c)){
return true;
}else{
if(_39f==parseFloat(_39c)){
if(_3a0>parseFloat(_39d)){
return true;
}else{
if(_3a0==parseFloat(_39d)){
if(_3a1>=parseFloat(_39e)){
return true;
}
}
}
}
}
return false;
}
}
},getCookie:function(name){
var _3a3=" "+String(document.cookie);
var pos=_3a3.indexOf(" "+name+"=");
if(pos!=-1){
var end=_3a3.indexOf(";",pos);
if(end==-1){
end=_3a3.length;
}
var val=_3a3.substring(pos+name.length+2,end);
return val;
}
return null;
},getCssProperty:function(elem,prop,_3a9){
var s,p="undefined";
var a=prop.split("-");
prop=a[0];
for(var i=1;i<a.length;++i){
c=a[i].charAt(0);
prop+=a[i].replace(c,c.toUpperCase());
}
var dv=document.defaultView;
if(dv&&dv.getComputedStyle){
s=dv.getComputedStyle(elem,"");
if(s){
p=s[prop];
}
}else{
if(elem.currentStyle){
p=elem.currentStyle[prop];
}else{
return null;
}
}
return _3a9?(parseInt(p)||0):p;
},getDimensions:function(){
if(this.is_ie){
var _3ae=document.body.clientHeight;
var _3af=document.body.clientWidth;
}else{
var _3ae=window.innerHeight;
var _3af=window.innerWidth;
}
return [_3ae,_3af];
},getIframeDocument:function(_3b0){
if(!_3b0){
return null;
}
var root=_3b0.contentWindow||_3b0.contentDocument;
if(root.document){
root=root.document;
}
return root;
},getSwfVersion:function(){
var _3b2=-1;
if(navigator.plugins!=null&&navigator.plugins.length>0){
if(navigator.plugins["Shockwave Flash 2.0"]||navigator.plugins["Shockwave Flash"]){
var _3b3=navigator.plugins["Shockwave Flash 2.0"]?" 2.0":"";
var _3b4=navigator.plugins["Shockwave Flash"+_3b3].description;
var _3b5=_3b4.split(" ");
var _3b6=_3b5[2].split(".");
var _3b7=_3b6[0];
var _3b8=_3b6[1];
var _3b9=_3b5[3];
if(_3b9==""){
_3b9=_3b5[4];
}
if(_3b9[0]=="d"){
_3b9=_3b9.substring(1);
}else{
if(_3b9[0]=="r"){
_3b9=_3b9.substring(1);
if(_3b9.indexOf("d")>0){
_3b9=_3b9.substring(0,_3b9.indexOf("d"));
}
}
}
var _3b2=_3b7+"."+_3b8+"."+_3b9;
}
}else{
if(navigator.userAgent.toLowerCase().indexOf("webtv/2.6")!=-1){
_3b2=4;
}else{
if(navigator.userAgent.toLowerCase().indexOf("webtv/2.5")!=-1){
_3b2=3;
}else{
if(navigator.userAgent.toLowerCase().indexOf("webtv")!=-1){
_3b2=2;
}else{
if(this.is_ie&&this.is_win&&!this.is_opera){
_3b2=this.controlVersion();
}
}
}
}
}
return _3b2;
},popup:function(u,h,w,t,l,_3bf,_3c0){
var left=l||(screen.width-w)/2;
var top=t||(screen.height-h-60)/2;
_3bf=(_3bf?"yes":"no");
_3c0=(_3c0?"yes":"no");
var _3c3="status,width="+w+",height="+h+",scrollbars="+_3c0+",resizable="+_3bf+",top="+top+",left="+left;
return window.open(u,"",_3c3);
},setCookie:function(name,_3c5,_3c6){
if(_3c6){
var date=new Date();
date.setTime(date.getTime()+(_3c6*24*60*60*1000));
var _3c8="; expires="+date.toGMTString();
}else{
var _3c8="";
}
document.cookie=name+"="+_3c5+_3c8+"; path=/";
}};
}
if($Bootstrap.notLoaded("808fa0c513b7f852fbdbc817f7225978")){
wack.DateTime=wack.Class.create();
wack.extend(wack.DateTime,{DATE_AMERICAN:1,DATE_INTL:2,HOUR_12:1,HOUR_24:2,_bad_date:new Date("xxx!"),parseDateString:function(date,_3ca){
if(date==""){
return new Date;
}
_3ca=_3ca||wack.DateTime.DATE_AMERICAN;
var _3cb=date.split("-");
if(_3cb.length==3){
return new Date(parseInt(_3cb[0],10),parseInt(_3cb[1],10)-1,parseInt(_3cb[2],10));
}
var _3cb=date.split("/");
if(_3cb.length==3){
var _3cc,day;
var year=_3cb[2];
if(_3ca==wack.DateTime.DATE_AMERICAN){
_3cc=_3cb[0];
day=_3cb[1];
}else{
_3cc=_3cb[1];
day=_3cb[0];
}
return new Date(year,_3cc,day);
}
return new Date(date);
},parseDateTimeString:function(_3ce,_3cf){
_3cf=_3cf||this._date_order;
var _3d0=_3ce.split(" ");
var _3d1=_3d0.shift();
var _3d2=_3d0.join(" ");
var _3d3=this.parseDateString(_3d1,_3cf);
var _3d4=this.parseTimeString(_3d2);
if(!this._checkDateObject(_3d3)||!this._checkDateObject(_3d4)){
return this._bad_date;
}
var _3d5=new Date(_3d3.getFullYear(),_3d3.getMonth(),_3d3.getDate(),_3d4.getHours(),_3d4.getMinutes(),_3d4.getSeconds());
return _3d5;
},parseTimeString:function(time){
var _3d7=new Date("January 1, 1970 "+time);
var _3d8=parseInt(time,10);
if(!this._checkDateObject(_3d7)){
if(!_3d8){
return this._bad_date;
}
if(time.indexOf(":")>0){
var _3d9=time.split(":");
if(_3d9[1]){
var _3da=time.substr(-2).toLowerCase();
if(_3da!="am"&&_3da!="pm"){
_3da="am";
}
if(_3d9[1].replace(_3da,"").length!=2){
return this._bad_date;
}
var _3db=parseInt(_3d9[1],10);
if(_3db==""||isNaN(_3db)){
_3db=0;
}
if(_3db<10){
_3db="0"+_3db;
}
time=_3d9[0]+":"+_3db+" "+_3da;
}else{
time=_3d8+":00 am";
}
return this.parseTimeString(time);
}else{
var mins="00";
if(_3d8>=100){
var _3dd=Math.floor(_3d8/100);
mins=_3d8%100;
if(mins<10){
mins="0"+""+mins;
}
_3d8=_3dd;
}
if(_3d8<24){
var _3da=time.substr(-2).toLowerCase();
time=_3d8+":"+mins;
if(_3da=="pm"||(_3da!="am"&&_3d8==12)){
time+=" pm";
}else{
if(_3d8<=12){
time=time+=" am";
}
}
return this.parseTimeString(time);
}
var _3de=time.match(/([\d]{1,2})([\d]{2})/);
var hour=_3de[1];
var _3e0=_3de[2];
if(typeof (_3e0)=="undefined"||_3e0==""){
_3e0="00";
}
if(hour>23||_3e0>59){
return this._bad_date;
}
time=hour+":"+_3e0;
return this.parseTimeString(time);
}
_3d7=this._bad_date;
}
return _3d7;
},_checkDateObject:function(date){
if(date=="Invalid Date"||isNaN(date)){
return false;
}else{
return true;
}
},day_names:["Date.L.Sunday","Date.L.Monday","Date.L.Tuesday","Date.L.Wednesday","Date.L.Thursday","Date.L.Friday","Date.L.Saturday","Date.L.Sunday","Date.L.Sat/Sun"],day_abbrev:["Date.L.Sunday.Ab","Date.L.Monday.Ab","Date.L.Tuesday.Ab","Date.L.Wednesday.Ab","Date.L.Thursday.Ab","Date.L.Friday.Ab","Date.L.Saturday.Ab","Date.L.Sunday.Ab"],month_names:["","Date.L.January","Date.L.February","Date.L.March","Date.L.April","Date.L.May","Date.L.June","Date.L.July","Date.L.August","Date.L.September","Date.L.October","Date.L.November","Date.L.December"],month_abbrev:["","Date.L.January.Ab","Date.L.February.Ab","Date.L.March.Ab","Date.L.April.Ab","Date.L.May.Ab","Date.L.June.Ab","Date.L.July.Ab","Date.L.August.Ab","Date.L.September.Ab","Date.L.October.Ab","Date.L.November.Ab","Date.L.December.Ab"],millisecondsPerDay:86400000,convertUnit:function(val,_3e3,_3e4){
if(!_3e3||!_3e4){
return false;
}
var _3e5={"week":60*24*7,"day":60*24,"hour":60,"minute":1};
return val*_3e5[_3e3]/_3e5[_3e4];
},convertToBiggestUnit:function(val,unit){
if(val>0){
var _3e8=["week","day","hour","minute"];
for(var i=0;i<_3e8.length;i++){
var _3ea=_3e8[i];
res=parseInt(this.convertUnit(val,unit,_3ea));
if(res>0){
return {val:res,unit:_3ea};
}
}
}
return {val:val,unit:unit};
},getEndOfMonth:function(val){
if(!wack.DateTime.isDate(val)){
return null;
}
if(typeof (val)=="string"){
val=new Date(val);
}
val=val.add(0,1);
val=new Date(val.getMonth()+1+"/1/"+val.getFullYear()).add(-1);
return val;
},getStartEndDates:function(_3ec,date){
var type=_3ec||"month";
if(!date){
var date=new Date();
}
if(typeof (date)=="string"){
date=new Date(date);
}
var _3ef="";
var _3f0="";
switch(type){
case "month":
_3ef=new Date(date.getFullYear(),date.getMonth(),1);
_3f0=_3ef.add(0,1).add(-1);
break;
case "week":
var _3f1=date.getDay();
_3ef=date.add(1-(_3f1==0?7:_3f1));
_3f0=_3ef.add(6);
break;
case "weekend":
var _3f1=date.getDay();
_3ef=date.add(5-_3f1);
_3f0=_3ef.add(2);
break;
case "workweek":
var _3f1=date.getDay();
_3ef=date.add(1-_3f1);
_3f0=_3ef.add(4);
break;
default:
_3ef=date;
_3f0=date;
}
var _3f2={"start":_3ef,"end":_3f0};
return _3f2;
},intlToAmerican:function(_3f3){
var _3f4=String(_3f3).match(/([0-9]{1,2})\/([0-9]{1,2})\/([0-9]{2,4})/);
if(!_3f4){
return false;
}
var date=new Date(_3f4[3],_3f4[2]-1,_3f4[1]);
var _3f6=date.format("%m/%d/%Y");
return _3f6;
},isDate:function(_3f7){
if(typeof (_3f7)!="string"){
var _3f8=Date.parse(_3f7);
if(isNaN(_3f8)){
return null;
}
_3f7=_3f7.getMonth()+1+"/"+_3f7.getDate()+"/"+_3f7.getFullYear();
}
var re=/^\d{1,2}\/\d{1,2}\/\d{4}$/;
if(re.test(_3f7)){
var dArr=_3f7.split("/");
var d=new Date(_3f7);
return d.getMonth()+1==dArr[0]&&d.getDate()==dArr[1]&&d.getFullYear()==dArr[2];
}else{
return false;
}
},isEndOfMonth:function(val){
if(!wack.DateTime.isDate(val)){
return false;
}
if(typeof (val)=="string"){
val=new Date(val);
}
var _3fd=new Array(4,6,9,11);
var _3fe=val.getMonth()+1;
var day=val.getDate();
var year=val.getFullYear();
var _401=false;
if(day==31){
_401=true;
}else{
if(day==30&&_3fd.indexOf(_3fe)>=0){
_401=true;
}else{
if(day==29&&wack.DateTime.isLeapYear(year)){
_401=true;
}else{
if(day==28&&_3fe==2&&!wack.DateTime.isLeapYear(year)){
_401=true;
}
}
}
}
return _401;
},isLeapYear:function(yr){
return new Date(yr,2-1,29).getDate()==29;
},minutesToString:function(_403){
if(!_403||_403==""||_403==0){
return "0 "+L("Date.L.Minute.P");
}
var _404=new Array("week","day","hour","minute");
var _405={"week":7*24*60,"day":24*60,"hour":60,"minute":1};
for(var i=0,ii=_404.length;i<ii;i++){
var _407=_404[i];
var r=wack.DateTime.convertUnit(_403,"minute",_407);
if(r>=1){
if(r-parseInt(r)>0){
var _409=parseInt(r);
var _40a=_403-(_409*_405[_407]);
var _40b=".S";
if(_409>1){
_40b=".P";
}
var _40c=_407.substring(0,1).toUpperCase()+_407.substring(1,_407.length);
var _40d=_409+" "+L("Date.L."+_40c+_40b);
if(_40a>0){
_40d+=" "+wack.DateTime.minutesToString(_40a);
}
}else{
var _40b=".S";
if(r>1){
_40b=".P";
}
var _40c=_407.substring(0,1).toUpperCase()+_407.substring(1,_407.length);
var _40d=r+" "+L("Date.L."+_40c+_40b);
}
break;
}
}
return _40d;
},monthNumFromName:function(n){
n=n.toLowerCase();
switch(n){
case "jan":
case "january":
n=1;
break;
case "feb":
case "february":
n=2;
break;
case "mar":
case "march":
n=3;
break;
case "apr":
case "april":
n=4;
break;
case "may":
n=5;
break;
case "jun":
case "june":
n=6;
break;
case "jul":
case "july":
n=7;
break;
case "aug":
case "august":
n=8;
break;
case "sep":
case "sept":
case "september":
n=9;
break;
case "oct":
case "october":
n=10;
break;
case "nov":
case "november":
n=11;
break;
case "dec":
case "december":
n=12;
break;
}
return n;
},dayNameFromNum:function(n){
var nm=["Date.L.Sunday","Date.L.Monday","Date.L.Tuesday","Date.L.Wednesday","Date.L.Thursday","Date.L.Friday","Date.L.Saturday","Date.L.Sunday","Date.L.SatSun"];
return L(nm[n]);
},Methods:{add:function(d,m,y,H,i,s){
d=d||0;
m=m||0;
y=y||0;
H=H||0;
i=i||0;
s=s||0;
var nd=this.getDate()+d;
var nm=this.getMonth()+m;
var ny=this.getFullYear()+y;
var cH=this.getHours()+H;
var ci=this.getMinutes()+i;
var cs=this.getSeconds()+s;
if(Browser.is_safari){
if(ci>127){
cH=Math.floor(ci/60)+cH;
ci=ci%60;
}else{
if(ci<-128){
while(ci<-128){
cH--;
ci=ci-60;
}
}
}
if(cH>127){
nd=Math.floor(cH/24)+nd;
cH=cH%24;
}else{
if(cH<-128){
while(cH<-128){
nd--;
cH=cH+24;
}
}
}
if(nm>11){
ny=Math.floor(nm/11)+ny;
nm=nm%11-1;
}else{
if(nm<0){
while(nm<0){
ny--;
nm=12+nm;
}
}
}
}
return new Date(ny,nm,nd,cH,ci,cs);
},diff:function(_41d,_41e){
var _41f=this.getDate();
var iOut=0;
var _421=Date.parse(_41f);
var _422=Date.parse(_41d);
if(isNaN(_421)||isNaN(_422)){
return null;
}
if(_41e.charAt(0)=="undefined"){
return null;
}
var _423=_422-_421;
switch(_41e.charAt(0)){
case "d":
case "D":
iOut=Math.round(_423/86400000);
break;
case "h":
case "H":
iOut=Math.round(_423/3600000);
break;
case "n":
case "N":
iOut=Math.round(_423/60000);
break;
case "s":
case "S":
iOut=Math.round(_423/1000);
break;
default:
return null;
}
return iOut;
},format:function(_424){
var _425=_424.split("%");
var _426=_425[0];
for(var i=1,ii=_425.length;i<ii;i++){
var _428=_425[i];
var type=_428.charAt(0);
var _42a=wack.DateTime.FormatMethods[type];
if(_42a){
_426+=_42a(this)+_428.substr(1);
}else{
_426+="%"+_428;
}
}
return _426;
},getDateString:function(_42b){
var _42c;
switch(_42b){
case wack.DateTime.DATE_INTL:
_42c="%d/%m/%Y";
break;
case wack.DateTime.DATE_AMERICAN:
default:
_42c="%m/%d/%Y";
}
return this.format(_42c);
},simpleIntl:function(_42d){
switch(_42d){
case "american":
return this.format("%m/%d/%Y");
case "european":
return this.format("%d/%m/%Y");
default:
throw "Unknown date format";
}
}},FormatMethods:{n:function(date){
return date.getMonth()+1;
},m:function(date){
var _430=date.getMonth()+1;
return (_430<10?"0"+_430:_430);
},F:function(date){
var _432=date.getMonth()+1;
return L(wack.DateTime.month_names[_432]);
},M:function(date){
var _434=date.getMonth()+1;
return L(wack.DateTime.month_abbrev[_434]);
},j:function(date){
return date.getDate();
},d:function(date){
var _437=date.getDate();
return (_437<10?"0"+_437:_437);
},l:function(date){
return L(wack.DateTime.day_names[date.getDay()]);
},D:function(date){
return L(wack.DateTime.day_abbrev[date.getDay()]);
},w:function(date){
return date.getDay();
},Y:function(date){
return date.getFullYear();
},H:function(date){
var hour=date.getHours();
return (hour<10?"0"+hour:hour);
},G:function(date){
return date.getHours();
},g:function(date){
var hour=date.getHours();
return (hour==0?12:(hour>12?hour-12:hour));
},i:function(date){
var _442=date.getMinutes();
return (_442<10?"0"+_442:_442);
},A:function(date){
var hour=date.getHours();
return (hour==0||hour<12?"AM":"PM");
},a:function(date){
var hour=date.getHours();
return (hour==0||hour<12?"am":"pm");
}}});
wack.DateTime.prototype={_date_obj:null,_date_order:wack.DateTime.DATE_AMERICAN,_hour_format:wack.DateTime.HOUR_12,__construct:function(){
},isValid:function(){
if(this._date_obj&&wack.DateTime._checkDateObject(this._date_obj)){
return true;
}else{
return false;
}
},setDateOrder:function(_447){
this._date_order=_447;
},setDateString:function(date){
this._date_obj=wack.DateTime.parseDateString(date,this._date_order);
},setDateTimeString:function(_449){
this._date_obj=wack.DateTime.parseDateTimeString(_449,this._date_order);
},setHourFormat:function(_44a){
this._hour_format=_44a;
},setTimeString:function(time){
this._date_obj=wack.DateTime.parseTimeString(time);
},format:function(_44c){
if(this._date_obj){
return this._date_obj.format(_44c);
}else{
return "";
}
},basicDateLong:function(){
if(this._date_order==wack.DateTime.DATE_INTL){
return this.format("%D %d/%n/%Y");
}else{
return this.format("%D %n/%d/%Y");
}
},basicDateShort:function(){
if(this._date_order==wack.DateTime.DATE_INTL){
return this.format("%D %j/%n");
}else{
return this.format("%D %n/%j");
}
},basicTime:function(){
if(this._hour_format==wack.DateTime.HOUR_24){
return this.format("%H:%i");
}else{
return this.format("%g:%i %a");
}
},getSimpleDisplay:function(){
var now=new Date;
var _44e=now.getYear();
var _44f=now.getMonth();
var _450=now.getDate();
var _451=_44e+"-"+_44f+"-"+_450;
var _452=this._date_obj;
var year=_452.getYear();
var _454=_452.getMonth();
var day=_452.getDate();
var date=year+"-"+_454+"-"+day;
var _457="";
if(date==_451){
_457=L("L.Today")+" "+this.basicTime();
}else{
if(year!=_44e||_454>_44f||(_454==_44f&&_452.getDate()>now.getDate())){
_457=this.basicDateLong();
}else{
_457=this.basicDateShort()+" "+this.basicTime();
}
}
return _457;
},getDayString:function(day){
},getTimeStamp:function(date){
return this._date_obj.getTime();
}};
function newDate(s){
if(s==""){
return new Date;
}
var p=(new String(s)).split("-");
if(p.length!=3){
var d=new Date(s);
}else{
var d=new Date(parseInt(p[0],10),parseInt(p[1],10)-1,parseInt(p[2],10));
}
if(d=="Invalid Date"||isNaN(d)){
d=new Date(0);
}
return d;
}
function newTime(s){
var d=new Date("January 1, 1970 "+s);
if(d=="Invalid Date"||isNaN(d)){
d=new Date(0);
}
return d;
}
function newDateTime(dt){
var _460=dt.indexOf(" ");
var _461=dt.substr(0,_460);
var _462=dt.substr(_460+1);
var date=newDate(_461);
var time=newTime(_462);
return new Date(date.getFullYear(),date.getMonth(),date.getDate(),time.getHours(),time.getMinutes(),time.getSeconds());
}
if(!window.L){
L=function(s){
switch(s){
case "Date.L.Sunday":
return "Sunday";
case "Date.L.Monday":
return "Monday";
case "Date.L.Tuesday":
return "Tuesday";
case "Date.L.Wednesday":
return "Wednesday";
case "Date.L.Thursday":
return "Thursday";
case "Date.L.Friday":
return "Friday";
case "Date.L.Saturday":
return "Saturday";
case "Date.L.Sunday":
return "Sunday";
case "Date.L.Sat/Sun":
return "Sat/Sun";
case "Date.L.Sunday.Ab":
return "Sun";
case "Date.L.Monday.Ab":
return "Mon";
case "Date.L.Tuesday.Ab":
return "Tue";
case "Date.L.Wednesday.Ab":
return "Wed";
case "Date.L.Thursday.Ab":
return "Thu";
case "Date.L.Friday.Ab":
return "Fri";
case "Date.L.Saturday.Ab":
return "Sat";
case "Date.L.Sunday.Ab":
return "Sun";
case "Date.L.January":
return "January";
case "Date.L.February":
return "February";
case "Date.L.March":
return "March";
case "Date.L.April":
return "April";
case "Date.L.May":
return "May";
case "Date.L.June":
return "June";
case "Date.L.July":
return "July";
case "Date.L.August":
return "August";
case "Date.L.September":
return "September";
case "Date.L.October":
return "October";
case "Date.L.November":
return "November";
case "Date.L.December":
return "December";
case "Date.L.January.Ab":
return "Jan";
case "Date.L.February.Ab":
return "Feb";
case "Date.L.March.Ab":
return "Mar";
case "Date.L.April.Ab":
return "Apr";
case "Date.L.May.Ab":
return "May";
case "Date.L.June.Ab":
return "Jun";
case "Date.L.July.Ab":
return "Jul";
case "Date.L.August.Ab":
return "Aug";
case "Date.L.September.Ab":
return "Sep";
case "Date.L.October.Ab":
return "Oct";
case "Date.L.November.Ab":
return "Nov";
case "Date.L.December.Ab":
return "Dec";
default:
return s;
}
};
}
wack.extend(Date.prototype,wack.DateTime.Methods);
}
if($Bootstrap.notLoaded("fbdd9c61c7fec9296209fdf98b404e76")){
wack.depends("wack.Element");
wack.Element.Methods={addClassName:function(_466,_467){
var _468=$(_466).className.split(/\s+/);
for(var i=0,ii=_468.length;i<ii;i++){
if(_468[i]==_467){
return _466;
}
}
_466.className+=" "+_467;
return _466;
},fitHeightToParent:function(_46a,_46b){
_46b=_46b||_46a.parentNode;
var _46c=this.getTotalOffsets(_46a)["top"];
var _46d=this.getTotalOffsets(_46b)["top"];
var _46e=_46c-_46d;
_46a.style.height=_46b.offsetHeight-_46e+"px";
},getScrollbarWidth:function(_46f){
if(_46f.offsetWidth>_46f.clientWidth){
return _46f.offsetWidth-_46f.clientWidth;
}else{
return 0;
}
},getTotalOffsets:function(_470){
var top=0;
var left=0;
while(_470){
top+=_470.offsetTop||0;
left+=_470.offsetLeft||0;
_470=_470.offsetParent;
}
return {top:top,left:left};
},removeClassName:function(_473,_474){
var _475=$(_473).className.split(/\s+/);
var _476=null;
for(var i=0,ii=_475.length;i<ii;i++){
if(_475[i]==_474){
_476=i;
break;
}
}
if(_476!==null){
_473.className=_475.slice(0,_476).concat(_475.slice(_476+1)).join(" ");
}
return _473;
},setDimensions:function(_478,dims){
if(typeof dims.width!=="undefined"){
if(dims.width>0){
_478.style.width=dims.width+"px";
}
}
if(typeof dims.height!=="undefined"){
if(dims.height>0){
_478.style.height=dims.height+"px";
}
}
}};
Object.extend(wack.Element,wack.Element.Methods);
Object.extend(Element,wack.Element.Methods);
Element.addMethods(wack.Element.Methods);
}
if($Bootstrap.notLoaded("e9cde56dd36a4bf1d401e60ac33cd816")){
wack.List=wack.Class.create();
wack.List.prototype={_list:null,initialize:function(){
this._list=[];
},add:function(item){
this.addItemToList(item,this._list);
},clear:function(){
this._list=[];
},contains:function(item){
for(var x=0;x<this._list.length;x++){
if(this.matches(item,this._list[x])){
return true;
}
}
return false;
},isEmpty:function(){
if(this._list.length==0){
return true;
}else{
return false;
}
},remove:function(item){
if(this.contains(item)){
this.removeItemFromList(item,this._list);
return true;
}
return false;
},shiftTopItem:function(){
return this._list.shift();
},addItemToList:function(item,list){
list.push(item);
},removeItemFromList:function(item,list){
var _482=new wack.List();
for(var x=0;x<list.length;x++){
if(!list.matches(item,list[x])){
_482.add(list[x]);
}
}
list=_482;
},matches:function(item,_485){
if(item==_485){
return true;
}
return false;
}};
}
if($Bootstrap.notLoaded("5093f0285166f054429476fd864e8f59")){
wack.Log={_log:[],_max:40,dump:function(_486){
var _486=_486||"\n";
var _487="";
for(var i=0,ii=this._log.length;i<ii;i++){
}
return _487;
},log:function(_489){
var now=new Date();
var time=[now.getFullYear(),"-",now.getMonth()+1,"-",now.getDate()," ",(now.getHours()<10?"0"+now.getHours():now.getHours()),":",(now.getMinutes()<10?"0"+now.getMinutes():now.getMinutes()),":",(now.getSeconds()<10?"0"+now.getSeconds():now.getSeconds()),":",].join("");
this._log.push({time:time,message:_489});
while(this._log.length>this._max){
this._log.shift();
}
},setLimit:function(max){
if(typeof max=="integer"){
this._max=max;
}
}};
}
if($Bootstrap.notLoaded("d3fbe2018e3397c2757dcfa8e2c8d597")){
wack.depends("wack.Number");
wack.Number.prototype={toColor:function(){
var _48d=this.toString(16);
while(_48d.length<6){
_48d="0"+_48d;
}
return _48d;
}};
Object.extend(Number.prototype,wack.Number.prototype);
}
if($Bootstrap.notLoaded("b61dba08f50d8c002d05af9592a3b740")){
wack.depends("wack.SortedArray");
wack.SortedArray.factory=function(_48e,_48f){
var ar=_48e||[];
for(var name in this.Methods){
ar[name]=this.Methods[name];
}
if(_48f){
ar._compare=_48f;
}
return ar;
};
wack.SortedArray.Methods={add:function(val){
var _493=this._binarySearch(val);
this.splice(_493[1],0,val);
},include:function(val){
return this._binarySearch(val)[0];
},merge:function(ar){
var _496=wack.SortedArray.factory([],this._compare);
for(var i=0,j=0,ii=this.length,jj=ar.length;i<ii&&j<jj;){
switch(this._compare(this[i],ar[j])){
case 1:
_496.push(ar[j]);
j++;
break;
case -1:
_496.push(this[i]);
i++;
break;
case 0:
_496.push(this[i]);
_496.push(ar[j]);
i++;
j++;
break;
}
}
for(;i<ii;i++){
_496.push(this[i]);
}
for(;j<jj;j++){
_496.push(ar[j]);
}
return _496;
},remove:function(val){
var _499=this._binarySearch(val);
if(_499[0]){
this.splice(_499[1],1);
}
},_binarySearch:function(_49a){
var low=0;
var high=this.length;
while(low!=high){
var mid=parseInt((low+high)/2);
switch(this._compare(_49a,this[mid])){
case 1:
low=mid+1;
break;
case -1:
high=mid;
break;
case 0:
return [true,mid];
default:
throw "error";
}
}
return [false,low];
},_compare:function(val1,val2){
if(val1<val2){
return -1;
}else{
if(val1>val2){
return 1;
}else{
return 0;
}
}
}};
}
if($Bootstrap.notLoaded("d49c23ea030276c9effb6d1551016cb1")){
String.prototype.parseColor=function(){
var _4a0="#";
if(this.slice(0,4)=="rgb("){
var cols=this.slice(4,this.length-1).split(",");
var i=0;
do{
_4a0+=parseInt(cols[i]).toColorPart();
}while(++i<3);
}else{
if(this.slice(0,1)=="#"){
if(this.length==4){
for(var i=1;i<4;i++){
_4a0+=(this.charAt(i)+this.charAt(i)).toLowerCase();
}
}
if(this.length==7){
_4a0=this.toLowerCase();
}
}
}
return (_4a0.length==7?_4a0:(arguments[0]||this));
};
Element.collectTextNodes=function(_4a3){
return $A($(_4a3).childNodes).collect(function(node){
return (node.nodeType==3?node.nodeValue:(node.hasChildNodes()?Element.collectTextNodes(node):""));
}).flatten().join("");
};
Element.collectTextNodesIgnoreClass=function(_4a5,_4a6){
return $A($(_4a5).childNodes).collect(function(node){
return (node.nodeType==3?node.nodeValue:((node.hasChildNodes()&&!Element.hasClassName(node,_4a6))?Element.collectTextNodesIgnoreClass(node,_4a6):""));
}).flatten().join("");
};
Element.setContentZoom=function(_4a8,_4a9){
_4a8=$(_4a8);
_4a8.setStyle({fontSize:(_4a9/100)+"em"});
if(navigator.appVersion.indexOf("AppleWebKit")>0){
window.scrollBy(0,0);
}
return _4a8;
};
Element.getOpacity=function(_4aa){
_4aa=$(_4aa);
var _4ab;
if(_4ab=_4aa.getStyle("opacity")){
return parseFloat(_4ab);
}
if(_4ab=(_4aa.getStyle("filter")||"").match(/alpha\(opacity=(.*)\)/)){
if(_4ab[1]){
return parseFloat(_4ab[1])/100;
}
}
return 1;
};
Element.setOpacity=function(_4ac,_4ad){
_4ac=$(_4ac);
if(_4ad==1){
_4ac.setStyle({opacity:(/Gecko/.test(navigator.userAgent)&&!/Konqueror|Safari|KHTML/.test(navigator.userAgent))?0.999999:1});
if(/MSIE/.test(navigator.userAgent)&&!window.opera){
_4ac.setStyle({filter:Element.getStyle(_4ac,"filter").replace(/alpha\([^\)]*\)/gi,"")});
}
}else{
if(_4ad<0.00001){
_4ad=0;
}
_4ac.setStyle({opacity:_4ad});
if(/MSIE/.test(navigator.userAgent)&&!window.opera){
_4ac.setStyle({filter:_4ac.getStyle("filter").replace(/alpha\([^\)]*\)/gi,"")+"alpha(opacity="+_4ad*100+")"});
}
}
return _4ac;
};
Element.getInlineOpacity=function(_4ae){
return $(_4ae).style.opacity||"";
};
Element.forceRerendering=function(_4af){
try{
_4af=$(_4af);
var n=document.createTextNode(" ");
_4af.appendChild(n);
_4af.removeChild(n);
}
catch(e){
}
};
Array.prototype.call=function(){
var args=arguments;
this.each(function(f){
f.apply(this,args);
});
};
var Effect={_elementDoesNotExistError:{name:"ElementDoesNotExistError",message:"The specified DOM element does not exist, but is required for this effect to operate"},tagifyText:function(_4b3){
if(typeof Builder=="undefined"){
throw ("Effect.tagifyText requires including script.aculo.us' builder.js library");
}
var _4b4="position:relative";
if(/MSIE/.test(navigator.userAgent)&&!window.opera){
_4b4+=";zoom:1";
}
_4b3=$(_4b3);
$A(_4b3.childNodes).each(function(_4b5){
if(_4b5.nodeType==3){
_4b5.nodeValue.toArray().each(function(_4b6){
_4b3.insertBefore(Builder.node("span",{style:_4b4},_4b6==" "?String.fromCharCode(160):_4b6),_4b5);
});
Element.remove(_4b5);
}
});
},multiple:function(_4b7,_4b8){
var _4b9;
if(((typeof _4b7=="object")||(typeof _4b7=="function"))&&(_4b7.length)){
_4b9=_4b7;
}else{
_4b9=$(_4b7).childNodes;
}
var _4ba=Object.extend({speed:0.1,delay:0},arguments[2]||{});
var _4bb=_4ba.delay;
$A(_4b9).each(function(_4bc,_4bd){
new _4b8(_4bc,Object.extend(_4ba,{delay:_4bd*_4ba.speed+_4bb}));
});
},PAIRS:{"slide":["SlideDown","SlideUp"],"blind":["BlindDown","BlindUp"],"appear":["Appear","Fade"]},toggle:function(_4be,_4bf){
_4be=$(_4be);
_4bf=(_4bf||"appear").toLowerCase();
var _4c0=Object.extend({queue:{position:"end",scope:(_4be.id||"global"),limit:1}},arguments[2]||{});
Effect[_4be.visible()?Effect.PAIRS[_4bf][1]:Effect.PAIRS[_4bf][0]](_4be,_4c0);
}};
var Effect2=Effect;
Effect.Transitions={linear:Prototype.K,sinoidal:function(pos){
return (-Math.cos(pos*Math.PI)/2)+0.5;
},reverse:function(pos){
return 1-pos;
},flicker:function(pos){
return ((-Math.cos(pos*Math.PI)/4)+0.75)+Math.random()/4;
},wobble:function(pos){
return (-Math.cos(pos*Math.PI*(9*pos))/2)+0.5;
},pulse:function(pos,_4c6){
_4c6=_4c6||5;
return (Math.round((pos%(1/_4c6))*_4c6)==0?((pos*_4c6*2)-Math.floor(pos*_4c6*2)):1-((pos*_4c6*2)-Math.floor(pos*_4c6*2)));
},none:function(pos){
return 0;
},full:function(pos){
return 1;
}};
Effect.ScopedQueue=Class.create();
Object.extend(Object.extend(Effect.ScopedQueue.prototype,Enumerable),{initialize:function(){
this.effects=[];
this.interval=null;
},_each:function(_4c9){
this.effects._each(_4c9);
},add:function(_4ca){
var _4cb=new Date().getTime();
var _4cc=(typeof _4ca.options.queue=="string")?_4ca.options.queue:_4ca.options.queue.position;
switch(_4cc){
case "front":
this.effects.findAll(function(e){
return e.state=="idle";
}).each(function(e){
e.startOn+=_4ca.finishOn;
e.finishOn+=_4ca.finishOn;
});
break;
case "with-last":
_4cb=this.effects.pluck("startOn").max()||_4cb;
break;
case "end":
_4cb=this.effects.pluck("finishOn").max()||_4cb;
break;
}
_4ca.startOn+=_4cb;
_4ca.finishOn+=_4cb;
if(!_4ca.options.queue.limit||(this.effects.length<_4ca.options.queue.limit)){
this.effects.push(_4ca);
}
if(!this.interval){
this.interval=setInterval(this.loop.bind(this),40);
}
},remove:function(_4cf){
this.effects=this.effects.reject(function(e){
return e==_4cf;
});
if(this.effects.length==0){
clearInterval(this.interval);
this.interval=null;
}
},loop:function(){
var _4d1=new Date().getTime();
this.effects.invoke("loop",_4d1);
}});
Effect.Queues={instances:$H(),get:function(_4d2){
if(typeof _4d2!="string"){
return _4d2;
}
if(!this.instances[_4d2]){
this.instances[_4d2]=new Effect.ScopedQueue();
}
return this.instances[_4d2];
}};
Effect.Queue=Effect.Queues.get("global");
Effect.DefaultOptions={transition:Effect.Transitions.sinoidal,duration:1,fps:25,sync:false,from:0,to:1,delay:0,queue:"parallel"};
Effect.Base=function(){
};
Effect.Base.prototype={position:null,start:function(_4d3){
this.options=Object.extend(Object.extend({},Effect.DefaultOptions),_4d3||{});
this.currentFrame=0;
this.state="idle";
this.startOn=this.options.delay*1000;
this.finishOn=this.startOn+(this.options.duration*1000);
this.event("beforeStart");
if(!this.options.sync){
Effect.Queues.get(typeof this.options.queue=="string"?"global":this.options.queue.scope).add(this);
}
},loop:function(_4d4){
if(_4d4>=this.startOn){
if(_4d4>=this.finishOn){
this.render(1);
this.cancel();
this.event("beforeFinish");
if(this.finish){
this.finish();
}
this.event("afterFinish");
return;
}
var pos=(_4d4-this.startOn)/(this.finishOn-this.startOn);
var _4d6=Math.round(pos*this.options.fps*this.options.duration);
if(_4d6>this.currentFrame){
this.render(pos);
this.currentFrame=_4d6;
}
}
},render:function(pos){
if(this.state=="idle"){
this.state="running";
this.event("beforeSetup");
if(this.setup){
this.setup();
}
this.event("afterSetup");
}
if(this.state=="running"){
if(this.options.transition){
pos=this.options.transition(pos);
}
pos*=(this.options.to-this.options.from);
pos+=this.options.from;
this.position=pos;
this.event("beforeUpdate");
if(this.update){
this.update(pos);
}
this.event("afterUpdate");
}
},cancel:function(){
if(!this.options.sync){
Effect.Queues.get(typeof this.options.queue=="string"?"global":this.options.queue.scope).remove(this);
}
this.state="finished";
},event:function(_4d8){
if(this.options[_4d8+"Internal"]){
this.options[_4d8+"Internal"](this);
}
if(this.options[_4d8]){
this.options[_4d8](this);
}
},inspect:function(){
return "#<Effect:"+$H(this).inspect()+",options:"+$H(this.options).inspect()+">";
}};
Effect.Parallel=Class.create();
Object.extend(Object.extend(Effect.Parallel.prototype,Effect.Base.prototype),{initialize:function(_4d9){
this.effects=_4d9||[];
this.start(arguments[1]);
},update:function(_4da){
this.effects.invoke("render",_4da);
},finish:function(_4db){
this.effects.each(function(_4dc){
_4dc.render(1);
_4dc.cancel();
_4dc.event("beforeFinish");
if(_4dc.finish){
_4dc.finish(_4db);
}
_4dc.event("afterFinish");
});
}});
Effect.Event=Class.create();
Object.extend(Object.extend(Effect.Event.prototype,Effect.Base.prototype),{initialize:function(){
var _4dd=Object.extend({duration:0},arguments[0]||{});
this.start(_4dd);
},update:Prototype.emptyFunction});
Effect.Opacity=Class.create();
Object.extend(Object.extend(Effect.Opacity.prototype,Effect.Base.prototype),{initialize:function(_4de){
this.element=$(_4de);
if(!this.element){
throw (Effect._elementDoesNotExistError);
}
if(/MSIE/.test(navigator.userAgent)&&!window.opera&&(!this.element.currentStyle.hasLayout)){
this.element.setStyle({zoom:1});
}
var _4df=Object.extend({from:this.element.getOpacity()||0,to:1},arguments[1]||{});
this.start(_4df);
},update:function(_4e0){
this.element.setOpacity(_4e0);
}});
Effect.Move=Class.create();
Object.extend(Object.extend(Effect.Move.prototype,Effect.Base.prototype),{initialize:function(_4e1){
this.element=$(_4e1);
if(!this.element){
throw (Effect._elementDoesNotExistError);
}
var _4e2=Object.extend({x:0,y:0,mode:"relative"},arguments[1]||{});
this.start(_4e2);
},setup:function(){
this.element.makePositioned();
this.originalLeft=parseFloat(this.element.getStyle("left")||"0");
this.originalTop=parseFloat(this.element.getStyle("top")||"0");
if(this.options.mode=="absolute"){
this.options.x=this.options.x-this.originalLeft;
this.options.y=this.options.y-this.originalTop;
}
},update:function(_4e3){
this.element.setStyle({left:Math.round(this.options.x*_4e3+this.originalLeft)+"px",top:Math.round(this.options.y*_4e3+this.originalTop)+"px"});
}});
Effect.MoveBy=function(_4e4,_4e5,_4e6){
return new Effect.Move(_4e4,Object.extend({x:_4e6,y:_4e5},arguments[3]||{}));
};
Effect.Scale=Class.create();
Object.extend(Object.extend(Effect.Scale.prototype,Effect.Base.prototype),{initialize:function(_4e7,_4e8){
this.element=$(_4e7);
if(!this.element){
throw (Effect._elementDoesNotExistError);
}
var _4e9=Object.extend({scaleX:true,scaleY:true,scaleContent:true,scaleFromCenter:false,scaleMode:"box",scaleFrom:100,scaleTo:_4e8},arguments[2]||{});
this.start(_4e9);
},setup:function(){
this.restoreAfterFinish=this.options.restoreAfterFinish||false;
this.elementPositioning=this.element.getStyle("position");
this.originalStyle={};
["top","left","width","height","fontSize"].each(function(k){
this.originalStyle[k]=this.element.style[k];
}.bind(this));
this.originalTop=this.element.offsetTop;
this.originalLeft=this.element.offsetLeft;
var _4eb=this.element.getStyle("font-size")||"100%";
["em","px","%","pt"].each(function(_4ec){
if(_4eb.indexOf(_4ec)>0){
this.fontSize=parseFloat(_4eb);
this.fontSizeType=_4ec;
}
}.bind(this));
this.factor=(this.options.scaleTo-this.options.scaleFrom)/100;
this.dims=null;
if(this.options.scaleMode=="box"){
this.dims=[this.element.offsetHeight,this.element.offsetWidth];
}
if(/^content/.test(this.options.scaleMode)){
this.dims=[this.element.scrollHeight,this.element.scrollWidth];
}
if(!this.dims){
this.dims=[this.options.scaleMode.originalHeight,this.options.scaleMode.originalWidth];
}
},update:function(_4ed){
var _4ee=(this.options.scaleFrom/100)+(this.factor*_4ed);
if(this.options.scaleContent&&this.fontSize){
this.element.setStyle({fontSize:this.fontSize*_4ee+this.fontSizeType});
}
this.setDimensions(this.dims[0]*_4ee,this.dims[1]*_4ee);
},finish:function(_4ef){
if(this.restoreAfterFinish){
this.element.setStyle(this.originalStyle);
}
},setDimensions:function(_4f0,_4f1){
var d={};
if(this.options.scaleX){
d.width=Math.round(_4f1)+"px";
}
if(this.options.scaleY){
d.height=Math.round(_4f0)+"px";
}
if(this.options.scaleFromCenter){
var topd=(_4f0-this.dims[0])/2;
var _4f4=(_4f1-this.dims[1])/2;
if(this.elementPositioning=="absolute"){
if(this.options.scaleY){
d.top=this.originalTop-topd+"px";
}
if(this.options.scaleX){
d.left=this.originalLeft-_4f4+"px";
}
}else{
if(this.options.scaleY){
d.top=-topd+"px";
}
if(this.options.scaleX){
d.left=-_4f4+"px";
}
}
}
this.element.setStyle(d);
}});
Effect.Highlight=Class.create();
Object.extend(Object.extend(Effect.Highlight.prototype,Effect.Base.prototype),{initialize:function(_4f5){
this.element=$(_4f5);
if(!this.element){
throw (Effect._elementDoesNotExistError);
}
var _4f6=Object.extend({startcolor:"#ffff99"},arguments[1]||{});
this.start(_4f6);
},setup:function(){
if(this.element.getStyle("display")=="none"){
this.cancel();
return;
}
this.oldStyle={backgroundImage:this.element.getStyle("background-image")};
this.element.setStyle({backgroundImage:"none"});
if(!this.options.endcolor){
this.options.endcolor=this.element.getStyle("background-color").parseColor("#ffffff");
}
if(!this.options.restorecolor){
this.options.restorecolor=this.element.getStyle("background-color");
}
this._base=$R(0,2).map(function(i){
return parseInt(this.options.startcolor.slice(i*2+1,i*2+3),16);
}.bind(this));
this._delta=$R(0,2).map(function(i){
return parseInt(this.options.endcolor.slice(i*2+1,i*2+3),16)-this._base[i];
}.bind(this));
},update:function(_4f9){
this.element.setStyle({backgroundColor:$R(0,2).inject("#",function(m,v,i){
return m+(Math.round(this._base[i]+(this._delta[i]*_4f9)).toColorPart());
}.bind(this))});
},finish:function(){
this.element.setStyle(Object.extend(this.oldStyle,{backgroundColor:this.options.restorecolor}));
}});
Effect.ScrollTo=Class.create();
Object.extend(Object.extend(Effect.ScrollTo.prototype,Effect.Base.prototype),{initialize:function(_4fd){
this.element=$(_4fd);
this.start(arguments[1]||{});
},setup:function(){
Position.prepare();
var _4fe=Position.cumulativeOffset(this.element);
if(this.options.offset){
_4fe[1]+=this.options.offset;
}
var max=window.innerHeight?window.height-window.innerHeight:document.body.scrollHeight-(document.documentElement.clientHeight?document.documentElement.clientHeight:document.body.clientHeight);
this.scrollStart=Position.deltaY;
this.delta=(_4fe[1]>max?max:_4fe[1])-this.scrollStart;
},update:function(_500){
Position.prepare();
window.scrollTo(Position.deltaX,this.scrollStart+(_500*this.delta));
}});
Effect.Fade=function(_501){
_501=$(_501);
var _502=_501.getInlineOpacity();
var _503=Object.extend({from:_501.getOpacity()||1,to:0,afterFinishInternal:function(_504){
if(_504.options.to!=0){
return;
}
_504.element.hide().setStyle({opacity:_502});
}},arguments[1]||{});
return new Effect.Opacity(_501,_503);
};
Effect.Appear=function(_505){
_505=$(_505);
var _506=Object.extend({from:(_505.getStyle("display")=="none"?0:_505.getOpacity()||0),to:1,afterFinishInternal:function(_507){
_507.element.forceRerendering();
},beforeSetup:function(_508){
_508.element.setOpacity(_508.options.from).show();
}},arguments[1]||{});
return new Effect.Opacity(_505,_506);
};
Effect.Puff=function(_509){
_509=$(_509);
var _50a={opacity:_509.getInlineOpacity(),position:_509.getStyle("position"),top:_509.style.top,left:_509.style.left,width:_509.style.width,height:_509.style.height};
return new Effect.Parallel([new Effect.Scale(_509,200,{sync:true,scaleFromCenter:true,scaleContent:true,restoreAfterFinish:true}),new Effect.Opacity(_509,{sync:true,to:0})],Object.extend({duration:1,beforeSetupInternal:function(_50b){
Position.absolutize(_50b.effects[0].element);
},afterFinishInternal:function(_50c){
_50c.effects[0].element.hide().setStyle(_50a);
}},arguments[1]||{}));
};
Effect.BlindUp=function(_50d){
_50d=$(_50d);
_50d.makeClipping();
return new Effect.Scale(_50d,0,Object.extend({scaleContent:false,scaleX:false,restoreAfterFinish:true,afterFinishInternal:function(_50e){
_50e.element.hide().undoClipping();
}},arguments[1]||{}));
};
Effect.BlindDown=function(_50f){
_50f=$(_50f);
var _510=_50f.getDimensions();
return new Effect.Scale(_50f,100,Object.extend({scaleContent:false,scaleX:false,scaleFrom:0,scaleMode:{originalHeight:_510.height,originalWidth:_510.width},restoreAfterFinish:true,afterSetup:function(_511){
_511.element.makeClipping().setStyle({height:"0px"}).show();
},afterFinishInternal:function(_512){
_512.element.undoClipping();
}},arguments[1]||{}));
};
Effect.SwitchOff=function(_513){
_513=$(_513);
var _514=_513.getInlineOpacity();
return new Effect.Appear(_513,Object.extend({duration:0.4,from:0,transition:Effect.Transitions.flicker,afterFinishInternal:function(_515){
new Effect.Scale(_515.element,1,{duration:0.3,scaleFromCenter:true,scaleX:false,scaleContent:false,restoreAfterFinish:true,beforeSetup:function(_516){
_516.element.makePositioned().makeClipping();
},afterFinishInternal:function(_517){
_517.element.hide().undoClipping().undoPositioned().setStyle({opacity:_514});
}});
}},arguments[1]||{}));
};
Effect.DropOut=function(_518){
_518=$(_518);
var _519={top:_518.getStyle("top"),left:_518.getStyle("left"),opacity:_518.getInlineOpacity()};
return new Effect.Parallel([new Effect.Move(_518,{x:0,y:100,sync:true}),new Effect.Opacity(_518,{sync:true,to:0})],Object.extend({duration:0.5,beforeSetup:function(_51a){
_51a.effects[0].element.makePositioned();
},afterFinishInternal:function(_51b){
_51b.effects[0].element.hide().undoPositioned().setStyle(_519);
}},arguments[1]||{}));
};
Effect.Shake=function(_51c){
_51c=$(_51c);
var _51d={top:_51c.getStyle("top"),left:_51c.getStyle("left")};
return new Effect.Move(_51c,{x:20,y:0,duration:0.05,afterFinishInternal:function(_51e){
new Effect.Move(_51e.element,{x:-40,y:0,duration:0.1,afterFinishInternal:function(_51f){
new Effect.Move(_51f.element,{x:40,y:0,duration:0.1,afterFinishInternal:function(_520){
new Effect.Move(_520.element,{x:-40,y:0,duration:0.1,afterFinishInternal:function(_521){
new Effect.Move(_521.element,{x:40,y:0,duration:0.1,afterFinishInternal:function(_522){
new Effect.Move(_522.element,{x:-20,y:0,duration:0.05,afterFinishInternal:function(_523){
_523.element.undoPositioned().setStyle(_51d);
}});
}});
}});
}});
}});
}});
};
Effect.SlideDown=function(_524){
_524=$(_524).cleanWhitespace();
var _525=_524.down().getStyle("bottom");
var _526=_524.getDimensions();
return new Effect.Scale(_524,100,Object.extend({scaleContent:false,scaleX:false,scaleFrom:window.opera?0:1,scaleMode:{originalHeight:_526.height,originalWidth:_526.width},restoreAfterFinish:true,afterSetup:function(_527){
_527.element.makePositioned();
_527.element.down().makePositioned();
if(window.opera){
_527.element.setStyle({top:""});
}
_527.element.makeClipping().setStyle({height:"0px"}).show();
},afterUpdateInternal:function(_528){
_528.element.down().setStyle({bottom:(_528.dims[0]-_528.element.clientHeight)+"px"});
},afterFinishInternal:function(_529){
_529.element.undoClipping().undoPositioned();
_529.element.down().undoPositioned().setStyle({bottom:_525});
}},arguments[1]||{}));
};
Effect.SlideUp=function(_52a){
_52a=$(_52a).cleanWhitespace();
var _52b=_52a.down().getStyle("bottom");
return new Effect.Scale(_52a,window.opera?0:1,Object.extend({scaleContent:false,scaleX:false,scaleMode:"box",scaleFrom:100,restoreAfterFinish:true,beforeStartInternal:function(_52c){
_52c.element.makePositioned();
_52c.element.down().makePositioned();
if(window.opera){
_52c.element.setStyle({top:""});
}
_52c.element.makeClipping().show();
},afterUpdateInternal:function(_52d){
_52d.element.down().setStyle({bottom:(_52d.dims[0]-_52d.element.clientHeight)+"px"});
},afterFinishInternal:function(_52e){
_52e.element.hide().undoClipping().undoPositioned().setStyle({bottom:_52b});
_52e.element.down().undoPositioned();
}},arguments[1]||{}));
};
Effect.Squish=function(_52f){
return new Effect.Scale(_52f,window.opera?1:0,{restoreAfterFinish:true,beforeSetup:function(_530){
_530.element.makeClipping();
},afterFinishInternal:function(_531){
_531.element.hide().undoClipping();
}});
};
Effect.Grow=function(_532){
_532=$(_532);
var _533=Object.extend({direction:"center",moveTransition:Effect.Transitions.sinoidal,scaleTransition:Effect.Transitions.sinoidal,opacityTransition:Effect.Transitions.full},arguments[1]||{});
var _534={top:_532.style.top,left:_532.style.left,height:_532.style.height,width:_532.style.width,opacity:_532.getInlineOpacity()};
var dims=_532.getDimensions();
var _536,initialMoveY;
var _537,moveY;
switch(_533.direction){
case "top-left":
_536=initialMoveY=_537=moveY=0;
break;
case "top-right":
_536=dims.width;
initialMoveY=moveY=0;
_537=-dims.width;
break;
case "bottom-left":
_536=_537=0;
initialMoveY=dims.height;
moveY=-dims.height;
break;
case "bottom-right":
_536=dims.width;
initialMoveY=dims.height;
_537=-dims.width;
moveY=-dims.height;
break;
case "center":
_536=dims.width/2;
initialMoveY=dims.height/2;
_537=-dims.width/2;
moveY=-dims.height/2;
break;
}
return new Effect.Move(_532,{x:_536,y:initialMoveY,duration:0.01,beforeSetup:function(_538){
_538.element.hide().makeClipping().makePositioned();
},afterFinishInternal:function(_539){
new Effect.Parallel([new Effect.Opacity(_539.element,{sync:true,to:1,from:0,transition:_533.opacityTransition}),new Effect.Move(_539.element,{x:_537,y:moveY,sync:true,transition:_533.moveTransition}),new Effect.Scale(_539.element,100,{scaleMode:{originalHeight:dims.height,originalWidth:dims.width},sync:true,scaleFrom:window.opera?1:0,transition:_533.scaleTransition,restoreAfterFinish:true})],Object.extend({beforeSetup:function(_53a){
_53a.effects[0].element.setStyle({height:"0px"}).show();
},afterFinishInternal:function(_53b){
_53b.effects[0].element.undoClipping().undoPositioned().setStyle(_534);
}},_533));
}});
};
Effect.Shrink=function(_53c){
_53c=$(_53c);
var _53d=Object.extend({direction:"center",moveTransition:Effect.Transitions.sinoidal,scaleTransition:Effect.Transitions.sinoidal,opacityTransition:Effect.Transitions.none},arguments[1]||{});
var _53e={top:_53c.style.top,left:_53c.style.left,height:_53c.style.height,width:_53c.style.width,opacity:_53c.getInlineOpacity()};
var dims=_53c.getDimensions();
var _540,moveY;
switch(_53d.direction){
case "top-left":
_540=moveY=0;
break;
case "top-right":
_540=dims.width;
moveY=0;
break;
case "bottom-left":
_540=0;
moveY=dims.height;
break;
case "bottom-right":
_540=dims.width;
moveY=dims.height;
break;
case "center":
_540=dims.width/2;
moveY=dims.height/2;
break;
}
return new Effect.Parallel([new Effect.Opacity(_53c,{sync:true,to:0,from:1,transition:_53d.opacityTransition}),new Effect.Scale(_53c,window.opera?1:0,{sync:true,transition:_53d.scaleTransition,restoreAfterFinish:true}),new Effect.Move(_53c,{x:_540,y:moveY,sync:true,transition:_53d.moveTransition})],Object.extend({beforeStartInternal:function(_541){
_541.effects[0].element.makePositioned().makeClipping();
},afterFinishInternal:function(_542){
_542.effects[0].element.hide().undoClipping().undoPositioned().setStyle(_53e);
}},_53d));
};
Effect.Pulsate=function(_543){
_543=$(_543);
var _544=arguments[1]||{};
var _545=_543.getInlineOpacity();
var _546=_544.transition||Effect.Transitions.sinoidal;
var _547=function(pos){
return _546(1-Effect.Transitions.pulse(pos,_544.pulses));
};
_547.bind(_546);
return new Effect.Opacity(_543,Object.extend(Object.extend({duration:2,from:0,afterFinishInternal:function(_549){
_549.element.setStyle({opacity:_545});
}},_544),{transition:_547}));
};
Effect.Fold=function(_54a){
_54a=$(_54a);
var _54b={top:_54a.style.top,left:_54a.style.left,width:_54a.style.width,height:_54a.style.height};
_54a.makeClipping();
return new Effect.Scale(_54a,5,Object.extend({scaleContent:false,scaleX:false,afterFinishInternal:function(_54c){
new Effect.Scale(_54a,1,{scaleContent:false,scaleY:false,afterFinishInternal:function(_54d){
_54d.element.hide().undoClipping().setStyle(_54b);
}});
}},arguments[1]||{}));
};
["setOpacity","getOpacity","getInlineOpacity","forceRerendering","setContentZoom","collectTextNodes","collectTextNodesIgnoreClass"].each(function(f){
Element.Methods[f]=Element[f];
});
Element.Methods.visualEffect=function(_54f,_550,_551){
s=_550.gsub(/_/,"-").camelize();
effect_class=s.charAt(0).toUpperCase()+s.substring(1);
new Effect[effect_class](_54f,_551);
return $(_54f);
};
Element.addMethods();
}
if($Bootstrap.notLoaded("1ca237e25d5669237c775d32d1a9d273")){
if(typeof Effect=="undefined"){
throw ("dragdrop.js requires including script.aculo.us' effects.js library");
}
var Droppables={drops:[],remove:function(_552){
this.drops=this.drops.reject(function(d){
return d.element==$(_552);
});
},add:function(_554){
_554=$(_554);
var _555=Object.extend({greedy:true,hoverclass:null,tree:false},arguments[1]||{});
if(_555.containment){
_555._containers=[];
var _556=_555.containment;
if((typeof _556=="object")&&(_556.constructor==Array)){
_556.each(function(c){
_555._containers.push($(c));
});
}else{
_555._containers.push($(_556));
}
}
if(_555.accept){
_555.accept=[_555.accept].flatten();
}
Element.makePositioned(_554);
_555.element=_554;
this.drops.push(_555);
},findDeepestChild:function(_558){
deepest=_558[0];
for(i=1;i<_558.length;++i){
if(Element.isParent(_558[i].element,deepest.element)){
deepest=_558[i];
}
}
return deepest;
},isContained:function(_559,drop){
var _55b;
if(drop.tree){
_55b=_559.treeNode;
}else{
_55b=_559.parentNode;
}
return drop._containers.detect(function(c){
return _55b==c;
});
},isAffected:function(_55d,_55e,drop){
return ((drop.element!=_55e)&&((!drop._containers)||this.isContained(_55e,drop))&&((!drop.accept)||(Element.classNames(_55e).detect(function(v){
return drop.accept.include(v);
})))&&Position.within(drop.element,_55d[0],_55d[1]));
},deactivate:function(drop){
if(drop.hoverclass){
Element.removeClassName(drop.element,drop.hoverclass);
}
this.last_active=null;
},activate:function(drop){
if(drop.hoverclass){
Element.addClassName(drop.element,drop.hoverclass);
}
this.last_active=drop;
},show:function(_563,_564){
if(!this.drops.length){
return;
}
var _565=[];
if(this.last_active){
this.deactivate(this.last_active);
}
this.drops.each(function(drop){
if(Droppables.isAffected(_563,_564,drop)){
_565.push(drop);
}
});
if(_565.length>0){
drop=Droppables.findDeepestChild(_565);
Position.within(drop.element,_563[0],_563[1]);
if(drop.onHover){
drop.onHover(_564,drop.element,Position.overlap(drop.overlap,drop.element));
}
Droppables.activate(drop);
}
},fire:function(_567,_568){
if(!this.last_active){
return;
}
Position.prepare();
if(this.isAffected([Event.pointerX(_567),Event.pointerY(_567)],_568,this.last_active)){
if(this.last_active.onDrop){
this.last_active.onDrop(_568,this.last_active.element,_567);
}
}
},reset:function(){
if(this.last_active){
this.deactivate(this.last_active);
}
}};
var Draggables={drags:[],observers:[],register:function(_569){
if(this.drags.length==0){
this.eventMouseUp=this.endDrag.bindAsEventListener(this);
this.eventMouseMove=this.updateDrag.bindAsEventListener(this);
this.eventKeypress=this.keyPress.bindAsEventListener(this);
Event.observe(document,"mouseup",this.eventMouseUp);
Event.observe(document,"mousemove",this.eventMouseMove);
Event.observe(document,"keypress",this.eventKeypress);
}
this.drags.push(_569);
},unregister:function(_56a){
this.drags=this.drags.reject(function(d){
return d==_56a;
});
if(this.drags.length==0){
Event.stopObserving(document,"mouseup",this.eventMouseUp);
Event.stopObserving(document,"mousemove",this.eventMouseMove);
Event.stopObserving(document,"keypress",this.eventKeypress);
}
},activate:function(_56c){
if(_56c.options.delay){
this._timeout=setTimeout(function(){
Draggables._timeout=null;
window.focus();
Draggables.activeDraggable=_56c;
}.bind(this),_56c.options.delay);
}else{
window.focus();
this.activeDraggable=_56c;
}
},deactivate:function(){
this.activeDraggable=null;
},updateDrag:function(_56d){
if(!this.activeDraggable){
return;
}
var _56e=[Event.pointerX(_56d),Event.pointerY(_56d)];
if(this._lastPointer&&(this._lastPointer.inspect()==_56e.inspect())){
return;
}
this._lastPointer=_56e;
this.activeDraggable.updateDrag(_56d,_56e);
},endDrag:function(_56f){
if(this._timeout){
clearTimeout(this._timeout);
this._timeout=null;
}
if(!this.activeDraggable){
return;
}
this._lastPointer=null;
this.activeDraggable.endDrag(_56f);
this.activeDraggable=null;
},keyPress:function(_570){
if(this.activeDraggable){
this.activeDraggable.keyPress(_570);
}
},addObserver:function(_571){
this.observers.push(_571);
this._cacheObserverCallbacks();
},removeObserver:function(_572){
this.observers=this.observers.reject(function(o){
return o.element==_572;
});
this._cacheObserverCallbacks();
},notify:function(_574,_575,_576){
if(this[_574+"Count"]>0){
this.observers.each(function(o){
if(o[_574]){
o[_574](_574,_575,_576);
}
});
}
if(_575.options[_574]){
_575.options[_574](_575,_576);
}
},_cacheObserverCallbacks:function(){
["onStart","onEnd","onDrag"].each(function(_578){
Draggables[_578+"Count"]=Draggables.observers.select(function(o){
return o[_578];
}).length;
});
}};
var Draggable=Class.create();
Draggable._dragging={};
Draggable.prototype={initialize:function(_57a){
var _57b={handle:false,reverteffect:function(_57c,_57d,_57e){
var dur=Math.sqrt(Math.abs(_57d^2)+Math.abs(_57e^2))*0.02;
new Effect.Move(_57c,{x:-_57e,y:-_57d,duration:dur,queue:{scope:"_draggable",position:"end"}});
},endeffect:function(_580){
var _581=typeof _580._opacity=="number"?_580._opacity:1;
new Effect.Opacity(_580,{duration:0.2,from:0.7,to:_581,queue:{scope:"_draggable",position:"end"},afterFinish:function(){
Draggable._dragging[_580]=false;
}});
},zindex:1000,revert:false,scroll:false,scrollSensitivity:20,scrollSpeed:15,snap:false,delay:0};
if(!arguments[1]||typeof arguments[1].endeffect=="undefined"){
Object.extend(_57b,{starteffect:function(_582){
_582._opacity=Element.getOpacity(_582);
Draggable._dragging[_582]=true;
new Effect.Opacity(_582,{duration:0.2,from:_582._opacity,to:0.7});
}});
}
var _583=Object.extend(_57b,arguments[1]||{});
this.element=$(_57a);
if(_583.handle&&(typeof _583.handle=="string")){
this.handle=this.element.down("."+_583.handle,0);
}
if(!this.handle){
this.handle=$(_583.handle);
}
if(!this.handle){
this.handle=this.element;
}
if(_583.scroll&&!_583.scroll.scrollTo&&!_583.scroll.outerHTML){
_583.scroll=$(_583.scroll);
this._isScrollChild=Element.childOf(this.element,_583.scroll);
}
Element.makePositioned(this.element);
this.delta=this.currentDelta();
this.options=_583;
this.dragging=false;
this.eventMouseDown=this.initDrag.bindAsEventListener(this);
Event.observe(this.handle,"mousedown",this.eventMouseDown);
Draggables.register(this);
},destroy:function(){
Event.stopObserving(this.handle,"mousedown",this.eventMouseDown);
Draggables.unregister(this);
},currentDelta:function(){
return ([parseInt(Element.getStyle(this.element,"left")||"0"),parseInt(Element.getStyle(this.element,"top")||"0")]);
},initDrag:function(_584){
if(typeof Draggable._dragging[this.element]!="undefined"&&Draggable._dragging[this.element]){
return;
}
if(Event.isLeftClick(_584)){
var src=Event.element(_584);
if(src.tagName&&(src.tagName=="INPUT"||src.tagName=="SELECT"||src.tagName=="OPTION"||src.tagName=="BUTTON"||src.tagName=="TEXTAREA")){
return;
}
var _586=[Event.pointerX(_584),Event.pointerY(_584)];
var pos=Position.cumulativeOffset(this.element);
this.offset=[0,1].map(function(i){
return (_586[i]-pos[i]);
});
Draggables.activate(this);
Event.stop(_584);
}
},startDrag:function(_589){
this.dragging=true;
if(this.options.zindex){
this.originalZ=parseInt(Element.getStyle(this.element,"z-index")||0);
this.element.style.zIndex=this.options.zindex;
}
if(this.options.ghosting){
this._clone=this.element.cloneNode(true);
Position.absolutize(this.element);
this.element.parentNode.insertBefore(this._clone,this.element);
}
if(this.options.scroll){
if(this.options.scroll==window){
var _58a=this._getWindowScroll(this.options.scroll);
this.originalScrollLeft=_58a.left;
this.originalScrollTop=_58a.top;
}else{
this.originalScrollLeft=this.options.scroll.scrollLeft;
this.originalScrollTop=this.options.scroll.scrollTop;
}
}
Draggables.notify("onStart",this,_589);
if(this.options.starteffect){
this.options.starteffect(this.element);
}
},updateDrag:function(_58b,_58c){
if(!this.dragging){
this.startDrag(_58b);
}
Position.prepare();
Droppables.show(_58c,this.element);
Draggables.notify("onDrag",this,_58b);
this.draw(_58c);
if(this.options.change){
this.options.change(this);
}
if(this.options.scroll){
this.stopScrolling();
var p;
if(this.options.scroll==window){
with(this._getWindowScroll(this.options.scroll)){
p=[left,top,left+width,top+height];
}
}else{
p=Position.page(this.options.scroll);
p[0]+=this.options.scroll.scrollLeft+Position.deltaX;
p[1]+=this.options.scroll.scrollTop+Position.deltaY;
p.push(p[0]+this.options.scroll.offsetWidth);
p.push(p[1]+this.options.scroll.offsetHeight);
}
var _58e=[0,0];
if(_58c[0]<(p[0]+this.options.scrollSensitivity)){
_58e[0]=_58c[0]-(p[0]+this.options.scrollSensitivity);
}
if(_58c[1]<(p[1]+this.options.scrollSensitivity)){
_58e[1]=_58c[1]-(p[1]+this.options.scrollSensitivity);
}
if(_58c[0]>(p[2]-this.options.scrollSensitivity)){
_58e[0]=_58c[0]-(p[2]-this.options.scrollSensitivity);
}
if(_58c[1]>(p[3]-this.options.scrollSensitivity)){
_58e[1]=_58c[1]-(p[3]-this.options.scrollSensitivity);
}
this.startScrolling(_58e);
}
if(navigator.appVersion.indexOf("AppleWebKit")>0){
window.scrollBy(0,0);
}
Event.stop(_58b);
},finishDrag:function(_58f,_590){
this.dragging=false;
if(this.options.ghosting){
Position.relativize(this.element);
Element.remove(this._clone);
this._clone=null;
}
if(_590){
Droppables.fire(_58f,this.element);
}
Draggables.notify("onEnd",this,_58f);
var _591=this.options.revert;
if(_591&&typeof _591=="function"){
_591=_591(this.element);
}
var d=this.currentDelta();
if(_591&&this.options.reverteffect){
this.options.reverteffect(this.element,d[1]-this.delta[1],d[0]-this.delta[0]);
}else{
this.delta=d;
}
if(this.options.zindex){
this.element.style.zIndex=this.originalZ;
}
if(this.options.endeffect){
this.options.endeffect(this.element);
}
Draggables.deactivate(this);
Droppables.reset();
},keyPress:function(_593){
if(_593.keyCode!=Event.KEY_ESC){
return;
}
this.finishDrag(_593,false);
Event.stop(_593);
},endDrag:function(_594){
if(!this.dragging){
return;
}
this.stopScrolling();
this.finishDrag(_594,true);
Event.stop(_594);
},draw:function(_595){
var pos=Position.cumulativeOffset(this.element);
if(this.options.ghosting){
var r=Position.realOffset(this.element);
pos[0]+=r[0]-Position.deltaX;
pos[1]+=r[1]-Position.deltaY;
}
var d=this.currentDelta();
pos[0]-=d[0];
pos[1]-=d[1];
if(this.options.scroll&&(this.options.scroll!=window&&this._isScrollChild)){
pos[0]-=this.options.scroll.scrollLeft-this.originalScrollLeft;
pos[1]-=this.options.scroll.scrollTop-this.originalScrollTop;
}
var p=[0,1].map(function(i){
return (_595[i]-pos[i]-this.offset[i]);
}.bind(this));
if(this.options.snap){
if(typeof this.options.snap=="function"){
p=this.options.snap(p[0],p[1],this);
}else{
if(this.options.snap instanceof Array){
p=p.map(function(v,i){
return Math.round(v/this.options.snap[i])*this.options.snap[i];
}.bind(this));
}else{
p=p.map(function(v){
return Math.round(v/this.options.snap)*this.options.snap;
}.bind(this));
}
}
}
var _59e=this.element.style;
if((!this.options.constraint)||(this.options.constraint=="horizontal")){
_59e.left=p[0]+"px";
}
if((!this.options.constraint)||(this.options.constraint=="vertical")){
_59e.top=p[1]+"px";
}
if(_59e.visibility=="hidden"){
_59e.visibility="";
}
},stopScrolling:function(){
if(this.scrollInterval){
clearInterval(this.scrollInterval);
this.scrollInterval=null;
Draggables._lastScrollPointer=null;
}
},startScrolling:function(_59f){
if(!(_59f[0]||_59f[1])){
return;
}
this.scrollSpeed=[_59f[0]*this.options.scrollSpeed,_59f[1]*this.options.scrollSpeed];
this.lastScrolled=new Date();
this.scrollInterval=setInterval(this.scroll.bind(this),10);
},scroll:function(){
var _5a0=new Date();
var _5a1=_5a0-this.lastScrolled;
this.lastScrolled=_5a0;
if(this.options.scroll==window){
with(this._getWindowScroll(this.options.scroll)){
if(this.scrollSpeed[0]||this.scrollSpeed[1]){
var d=_5a1/1000;
this.options.scroll.scrollTo(left+d*this.scrollSpeed[0],top+d*this.scrollSpeed[1]);
}
}
}else{
this.options.scroll.scrollLeft+=this.scrollSpeed[0]*_5a1/1000;
this.options.scroll.scrollTop+=this.scrollSpeed[1]*_5a1/1000;
}
Position.prepare();
Droppables.show(Draggables._lastPointer,this.element);
Draggables.notify("onDrag",this);
if(this._isScrollChild){
Draggables._lastScrollPointer=Draggables._lastScrollPointer||$A(Draggables._lastPointer);
Draggables._lastScrollPointer[0]+=this.scrollSpeed[0]*_5a1/1000;
Draggables._lastScrollPointer[1]+=this.scrollSpeed[1]*_5a1/1000;
if(Draggables._lastScrollPointer[0]<0){
Draggables._lastScrollPointer[0]=0;
}
if(Draggables._lastScrollPointer[1]<0){
Draggables._lastScrollPointer[1]=0;
}
this.draw(Draggables._lastScrollPointer);
}
if(this.options.change){
this.options.change(this);
}
},_getWindowScroll:function(w){
var T,L,W,H;
with(w.document){
if(w.document.documentElement&&documentElement.scrollTop){
T=documentElement.scrollTop;
L=documentElement.scrollLeft;
}else{
if(w.document.body){
T=body.scrollTop;
L=body.scrollLeft;
}
}
if(w.innerWidth){
W=w.innerWidth;
H=w.innerHeight;
}else{
if(w.document.documentElement&&documentElement.clientWidth){
W=documentElement.clientWidth;
H=documentElement.clientHeight;
}else{
W=body.offsetWidth;
H=body.offsetHeight;
}
}
}
return {top:T,left:L,width:W,height:H};
}};
var SortableObserver=Class.create();
SortableObserver.prototype={initialize:function(_5a5,_5a6){
this.element=$(_5a5);
this.observer=_5a6;
this.lastValue=Sortable.serialize(this.element);
},onStart:function(){
this.lastValue=Sortable.serialize(this.element);
},onEnd:function(){
Sortable.unmark();
if(this.lastValue!=Sortable.serialize(this.element)){
this.observer(this.element);
}
}};
var Sortable={SERIALIZE_RULE:/^[^_\-](?:[A-Za-z0-9\-\_]*)[_](.*)$/,sortables:{},_findRootElement:function(_5a7){
while(_5a7.tagName!="BODY"){
if(_5a7.id&&Sortable.sortables[_5a7.id]){
return _5a7;
}
_5a7=_5a7.parentNode;
}
},options:function(_5a8){
_5a8=Sortable._findRootElement($(_5a8));
if(!_5a8){
return;
}
return Sortable.sortables[_5a8.id];
},destroy:function(_5a9){
var s=Sortable.options(_5a9);
if(s){
Draggables.removeObserver(s.element);
s.droppables.each(function(d){
Droppables.remove(d);
});
s.draggables.invoke("destroy");
delete Sortable.sortables[s.element.id];
}
},create:function(_5ac){
_5ac=$(_5ac);
var _5ad=Object.extend({element:_5ac,tag:"li",dropOnEmpty:false,tree:false,treeTag:"ul",overlap:"vertical",constraint:"vertical",containment:_5ac,handle:false,only:false,delay:0,hoverclass:null,ghosting:false,scroll:false,scrollSensitivity:20,scrollSpeed:15,format:this.SERIALIZE_RULE,onChange:Prototype.emptyFunction,onUpdate:Prototype.emptyFunction},arguments[1]||{});
this.destroy(_5ac);
var _5ae={revert:true,scroll:_5ad.scroll,scrollSpeed:_5ad.scrollSpeed,scrollSensitivity:_5ad.scrollSensitivity,delay:_5ad.delay,ghosting:_5ad.ghosting,constraint:_5ad.constraint,handle:_5ad.handle};
if(_5ad.starteffect){
_5ae.starteffect=_5ad.starteffect;
}
if(_5ad.reverteffect){
_5ae.reverteffect=_5ad.reverteffect;
}else{
if(_5ad.ghosting){
_5ae.reverteffect=function(_5af){
_5af.style.top=0;
_5af.style.left=0;
};
}
}
if(_5ad.endeffect){
_5ae.endeffect=_5ad.endeffect;
}
if(_5ad.zindex){
_5ae.zindex=_5ad.zindex;
}
var _5b0={overlap:_5ad.overlap,containment:_5ad.containment,tree:_5ad.tree,hoverclass:_5ad.hoverclass,onHover:Sortable.onHover};
var _5b1={onHover:Sortable.onEmptyHover,overlap:_5ad.overlap,containment:_5ad.containment,hoverclass:_5ad.hoverclass};
Element.cleanWhitespace(_5ac);
_5ad.draggables=[];
_5ad.droppables=[];
if(_5ad.dropOnEmpty||_5ad.tree){
Droppables.add(_5ac,_5b1);
_5ad.droppables.push(_5ac);
}
(this.findElements(_5ac,_5ad)||[]).each(function(e){
var _5b3=_5ad.handle?$(e).down("."+_5ad.handle,0):e;
_5ad.draggables.push(new Draggable(e,Object.extend(_5ae,{handle:_5b3})));
Droppables.add(e,_5b0);
if(_5ad.tree){
e.treeNode=_5ac;
}
_5ad.droppables.push(e);
});
if(_5ad.tree){
(Sortable.findTreeElements(_5ac,_5ad)||[]).each(function(e){
Droppables.add(e,_5b1);
e.treeNode=_5ac;
_5ad.droppables.push(e);
});
}
this.sortables[_5ac.id]=_5ad;
Draggables.addObserver(new SortableObserver(_5ac,_5ad.onUpdate));
},findElements:function(_5b5,_5b6){
return Element.findChildren(_5b5,_5b6.only,_5b6.tree?true:false,_5b6.tag);
},findTreeElements:function(_5b7,_5b8){
return Element.findChildren(_5b7,_5b8.only,_5b8.tree?true:false,_5b8.treeTag);
},onHover:function(_5b9,_5ba,_5bb){
if(Element.isParent(_5ba,_5b9)){
return;
}
if(_5bb>0.33&&_5bb<0.66&&Sortable.options(_5ba).tree){
return;
}else{
if(_5bb>0.5){
Sortable.mark(_5ba,"before");
if(_5ba.previousSibling!=_5b9){
var _5bc=_5b9.parentNode;
_5b9.style.visibility="hidden";
_5ba.parentNode.insertBefore(_5b9,_5ba);
if(_5ba.parentNode!=_5bc){
Sortable.options(_5bc).onChange(_5b9);
}
Sortable.options(_5ba.parentNode).onChange(_5b9);
}
}else{
Sortable.mark(_5ba,"after");
var _5bd=_5ba.nextSibling||null;
if(_5bd!=_5b9){
var _5bc=_5b9.parentNode;
_5b9.style.visibility="hidden";
_5ba.parentNode.insertBefore(_5b9,_5bd);
if(_5ba.parentNode!=_5bc){
Sortable.options(_5bc).onChange(_5b9);
}
Sortable.options(_5ba.parentNode).onChange(_5b9);
}
}
}
},onEmptyHover:function(_5be,_5bf,_5c0){
var _5c1=_5be.parentNode;
var _5c2=Sortable.options(_5bf);
if(!Element.isParent(_5bf,_5be)){
var _5c3;
var _5c4=Sortable.findElements(_5bf,{tag:_5c2.tag,only:_5c2.only});
var _5c5=null;
if(_5c4){
var _5c6=Element.offsetSize(_5bf,_5c2.overlap)*(1-_5c0);
for(_5c3=0;_5c3<_5c4.length;_5c3+=1){
if(_5c6-Element.offsetSize(_5c4[_5c3],_5c2.overlap)>=0){
_5c6-=Element.offsetSize(_5c4[_5c3],_5c2.overlap);
}else{
if(_5c6-(Element.offsetSize(_5c4[_5c3],_5c2.overlap)/2)>=0){
_5c5=_5c3+1<_5c4.length?_5c4[_5c3+1]:null;
break;
}else{
_5c5=_5c4[_5c3];
break;
}
}
}
}
_5bf.insertBefore(_5be,_5c5);
Sortable.options(_5c1).onChange(_5be);
_5c2.onChange(_5be);
}
},unmark:function(){
if(Sortable._marker){
Sortable._marker.hide();
}
},mark:function(_5c7,_5c8){
var _5c9=Sortable.options(_5c7.parentNode);
if(_5c9&&!_5c9.ghosting){
return;
}
if(!Sortable._marker){
Sortable._marker=($("dropmarker")||Element.extend(document.createElement("DIV"))).hide().addClassName("dropmarker").setStyle({position:"absolute"});
document.getElementsByTagName("body").item(0).appendChild(Sortable._marker);
}
var _5ca=Position.cumulativeOffset(_5c7);
Sortable._marker.setStyle({left:_5ca[0]+"px",top:_5ca[1]+"px"});
if(_5c8=="after"){
if(_5c9.overlap=="horizontal"){
Sortable._marker.setStyle({left:(_5ca[0]+_5c7.clientWidth)+"px"});
}else{
Sortable._marker.setStyle({top:(_5ca[1]+_5c7.clientHeight)+"px"});
}
}
Sortable._marker.show();
},_tree:function(_5cb,_5cc,_5cd){
var _5ce=Sortable.findElements(_5cb,_5cc)||[];
for(var i=0;i<_5ce.length;++i){
var _5d0=_5ce[i].id.match(_5cc.format);
if(!_5d0){
continue;
}
var _5d1={id:encodeURIComponent(_5d0?_5d0[1]:null),element:_5cb,parent:_5cd,children:[],position:_5cd.children.length,container:$(_5ce[i]).down(_5cc.treeTag)};
if(_5d1.container){
this._tree(_5d1.container,_5cc,_5d1);
}
_5cd.children.push(_5d1);
}
return _5cd;
},tree:function(_5d2){
_5d2=$(_5d2);
var _5d3=this.options(_5d2);
var _5d4=Object.extend({tag:_5d3.tag,treeTag:_5d3.treeTag,only:_5d3.only,name:_5d2.id,format:_5d3.format},arguments[1]||{});
var root={id:null,parent:null,children:[],container:_5d2,position:0};
return Sortable._tree(_5d2,_5d4,root);
},_constructIndex:function(node){
var _5d7="";
do{
if(node.id){
_5d7="["+node.position+"]"+_5d7;
}
}while((node=node.parent)!=null);
return _5d7;
},sequence:function(_5d8){
_5d8=$(_5d8);
var _5d9=Object.extend(this.options(_5d8),arguments[1]||{});
return $(this.findElements(_5d8,_5d9)||[]).map(function(item){
return item.id.match(_5d9.format)?item.id.match(_5d9.format)[1]:"";
});
},setSequence:function(_5db,_5dc){
_5db=$(_5db);
var _5dd=Object.extend(this.options(_5db),arguments[2]||{});
var _5de={};
this.findElements(_5db,_5dd).each(function(n){
if(n.id.match(_5dd.format)){
_5de[n.id.match(_5dd.format)[1]]=[n,n.parentNode];
}
n.parentNode.removeChild(n);
});
_5dc.each(function(_5e0){
var n=_5de[_5e0];
if(n){
n[1].appendChild(n[0]);
delete _5de[_5e0];
}
});
},serialize:function(_5e2){
_5e2=$(_5e2);
var _5e3=Object.extend(Sortable.options(_5e2),arguments[1]||{});
var name=encodeURIComponent((arguments[1]&&arguments[1].name)?arguments[1].name:_5e2.id);
if(_5e3.tree){
return Sortable.tree(_5e2,arguments[1]).children.map(function(item){
return [name+Sortable._constructIndex(item)+"[id]="+encodeURIComponent(item.id)].concat(item.children.map(arguments.callee));
}).flatten().join("&");
}else{
return Sortable.sequence(_5e2,arguments[1]).map(function(item){
return name+"[]="+encodeURIComponent(item);
}).join("&");
}
}};
Element.isParent=function(_5e7,_5e8){
if(!_5e7.parentNode||_5e7==_5e8){
return false;
}
if(_5e7.parentNode==_5e8){
return true;
}
return Element.isParent(_5e7.parentNode,_5e8);
};
Element.findChildren=function(_5e9,only,_5eb,_5ec){
if(!_5e9.hasChildNodes()){
return null;
}
_5ec=_5ec.toUpperCase();
if(only){
only=[only].flatten();
}
var _5ed=[];
$A(_5e9.childNodes).each(function(e){
if(e.tagName&&e.tagName.toUpperCase()==_5ec&&(!only||(Element.classNames(e).detect(function(v){
return only.include(v);
})))){
_5ed.push(e);
}
if(_5eb){
var _5f0=Element.findChildren(e,only,_5eb,_5ec);
if(_5f0){
_5ed.push(_5f0);
}
}
});
return (_5ed.length>0?_5ed.flatten():[]);
};
Element.offsetSize=function(_5f1,type){
return _5f1["offset"+((type=="vertical"||type=="height")?"Height":"Width")];
};
}
if($Bootstrap.notLoaded("4be8678e0cb882a22df9fa6e296f835b")){
if(typeof Effect=="undefined"){
throw ("controls.js requires including script.aculo.us' effects.js library");
}
var Autocompleter={};
Autocompleter.Base=function(){
};
Autocompleter.Base.prototype={baseInitialize:function(_5f3,_5f4,_5f5){
this.element=$(_5f3);
this.update=$(_5f4);
this.hasFocus=false;
this.changed=false;
this.active=false;
this.index=0;
this.entryCount=0;
if(this.setOptions){
this.setOptions(_5f5);
}else{
this.options=_5f5||{};
}
this.options.paramName=this.options.paramName||this.element.name;
this.options.tokens=this.options.tokens||[];
this.options.frequency=this.options.frequency||0.4;
this.options.minChars=this.options.minChars||1;
this.options.onShow=this.options.onShow||function(_5f6,_5f7){
if(!_5f7.style.position||_5f7.style.position=="absolute"){
_5f7.style.position="absolute";
Position.clone(_5f6,_5f7,{setHeight:false,offsetTop:_5f6.offsetHeight});
}
Effect.Appear(_5f7,{duration:0.15});
};
this.options.onHide=this.options.onHide||function(_5f8,_5f9){
new Effect.Fade(_5f9,{duration:0.15});
};
if(typeof (this.options.tokens)=="string"){
this.options.tokens=new Array(this.options.tokens);
}
this.observer=null;
this.element.setAttribute("autocomplete","off");
Element.hide(this.update);
Event.observe(this.element,"blur",this.onBlur.bindAsEventListener(this));
Event.observe(this.element,"keypress",this.onKeyPress.bindAsEventListener(this));
},show:function(){
if(Element.getStyle(this.update,"display")=="none"){
this.options.onShow(this.element,this.update);
}
if(!this.iefix&&(navigator.appVersion.indexOf("MSIE")>0)&&(navigator.userAgent.indexOf("Opera")<0)&&(Element.getStyle(this.update,"position")=="absolute")){
new Insertion.After(this.update,"<iframe id=\""+this.update.id+"_iefix\" "+"style=\"display:none;position:absolute;filter:progid:DXImageTransform.Microsoft.Alpha(opacity=0);\" "+"src=\"javascript:false;\" frameborder=\"0\" scrolling=\"no\"></iframe>");
this.iefix=$(this.update.id+"_iefix");
}
if(this.iefix){
setTimeout(this.fixIEOverlapping.bind(this),50);
}
},fixIEOverlapping:function(){
Position.clone(this.update,this.iefix,{setTop:(!this.update.style.height)});
this.iefix.style.zIndex=1;
this.update.style.zIndex=2;
Element.show(this.iefix);
},hide:function(){
this.stopIndicator();
if(Element.getStyle(this.update,"display")!="none"){
this.options.onHide(this.element,this.update);
}
if(this.iefix){
Element.hide(this.iefix);
}
},startIndicator:function(){
if(this.options.indicator){
Element.show(this.options.indicator);
}
},stopIndicator:function(){
if(this.options.indicator){
Element.hide(this.options.indicator);
}
},onKeyPress:function(_5fa){
if(this.active){
switch(_5fa.keyCode){
case Event.KEY_TAB:
case Event.KEY_RETURN:
this.selectEntry();
Event.stop(_5fa);
case Event.KEY_ESC:
this.hide();
this.active=false;
Event.stop(_5fa);
return;
case Event.KEY_LEFT:
case Event.KEY_RIGHT:
return;
case Event.KEY_UP:
this.markPrevious();
this.render();
if(navigator.appVersion.indexOf("AppleWebKit")>0){
Event.stop(_5fa);
}
return;
case Event.KEY_DOWN:
this.markNext();
this.render();
if(navigator.appVersion.indexOf("AppleWebKit")>0){
Event.stop(_5fa);
}
return;
}
}else{
if(_5fa.keyCode==Event.KEY_TAB||_5fa.keyCode==Event.KEY_RETURN||(navigator.appVersion.indexOf("AppleWebKit")>0&&_5fa.keyCode==0)){
return;
}
}
this.changed=true;
this.hasFocus=true;
if(this.observer){
clearTimeout(this.observer);
}
this.observer=setTimeout(this.onObserverEvent.bind(this),this.options.frequency*1000);
},activate:function(){
this.changed=false;
this.hasFocus=true;
this.getUpdatedChoices();
},onHover:function(_5fb){
var _5fc=Event.findElement(_5fb,"LI");
if(this.index!=_5fc.autocompleteIndex){
this.index=_5fc.autocompleteIndex;
this.render();
}
Event.stop(_5fb);
},onClick:function(_5fd){
var _5fe=Event.findElement(_5fd,"LI");
this.index=_5fe.autocompleteIndex;
this.selectEntry();
this.hide();
},onBlur:function(_5ff){
setTimeout(this.hide.bind(this),250);
this.hasFocus=false;
this.active=false;
},render:function(){
if(this.entryCount>0){
for(var i=0;i<this.entryCount;i++){
this.index==i?Element.addClassName(this.getEntry(i),"selected"):Element.removeClassName(this.getEntry(i),"selected");
}
if(this.hasFocus){
this.show();
this.active=true;
}
}else{
this.active=false;
this.hide();
}
},markPrevious:function(){
if(this.index>0){
this.index--;
}else{
this.index=this.entryCount-1;
}
this.getEntry(this.index).scrollIntoView(true);
},markNext:function(){
if(this.index<this.entryCount-1){
this.index++;
}else{
this.index=0;
}
this.getEntry(this.index).scrollIntoView(false);
},getEntry:function(_601){
return this.update.firstChild.childNodes[_601];
},getCurrentEntry:function(){
return this.getEntry(this.index);
},selectEntry:function(){
this.active=false;
this.updateElement(this.getCurrentEntry());
},updateElement:function(_602){
if(this.options.updateElement){
this.options.updateElement(_602);
return;
}
var _603="";
if(this.options.select){
var _604=document.getElementsByClassName(this.options.select,_602)||[];
if(_604.length>0){
_603=Element.collectTextNodes(_604[0],this.options.select);
}
}else{
_603=Element.collectTextNodesIgnoreClass(_602,"informal");
}
var _605=this.findLastToken();
if(_605!=-1){
var _606=this.element.value.substr(0,_605+1);
var _607=this.element.value.substr(_605+1).match(/^\s+/);
if(_607){
_606+=_607[0];
}
this.element.value=_606+_603;
}else{
this.element.value=_603;
}
this.element.focus();
if(this.options.afterUpdateElement){
this.options.afterUpdateElement(this.element,_602);
}
},updateChoices:function(_608){
if(!this.changed&&this.hasFocus){
this.update.innerHTML=_608;
Element.cleanWhitespace(this.update);
Element.cleanWhitespace(this.update.down());
if(this.update.firstChild&&this.update.down().childNodes){
this.entryCount=this.update.down().childNodes.length;
for(var i=0;i<this.entryCount;i++){
var _60a=this.getEntry(i);
_60a.autocompleteIndex=i;
this.addObservers(_60a);
}
}else{
this.entryCount=0;
}
this.stopIndicator();
this.index=0;
if(this.entryCount==1&&this.options.autoSelect){
this.selectEntry();
this.hide();
}else{
this.render();
}
}
},addObservers:function(_60b){
Event.observe(_60b,"mouseover",this.onHover.bindAsEventListener(this));
Event.observe(_60b,"click",this.onClick.bindAsEventListener(this));
},onObserverEvent:function(){
this.changed=false;
if(this.getToken().length>=this.options.minChars){
this.startIndicator();
this.getUpdatedChoices();
}else{
this.active=false;
this.hide();
}
},getToken:function(){
var _60c=this.findLastToken();
if(_60c!=-1){
var ret=this.element.value.substr(_60c+1).replace(/^\s+/,"").replace(/\s+$/,"");
}else{
var ret=this.element.value;
}
return /\n/.test(ret)?"":ret;
},findLastToken:function(){
var _60e=-1;
for(var i=0;i<this.options.tokens.length;i++){
var _610=this.element.value.lastIndexOf(this.options.tokens[i]);
if(_610>_60e){
_60e=_610;
}
}
return _60e;
}};
Ajax.Autocompleter=Class.create();
Object.extend(Object.extend(Ajax.Autocompleter.prototype,Autocompleter.Base.prototype),{initialize:function(_611,_612,url,_614){
this.baseInitialize(_611,_612,_614);
this.options.asynchronous=true;
this.options.onComplete=this.onComplete.bind(this);
this.options.defaultParams=this.options.parameters||null;
this.url=url;
},getUpdatedChoices:function(){
entry=encodeURIComponent(this.options.paramName)+"="+encodeURIComponent(this.getToken());
this.options.parameters=this.options.callback?this.options.callback(this.element,entry):entry;
if(this.options.defaultParams){
this.options.parameters+="&"+this.options.defaultParams;
}
new Ajax.Request(this.url,this.options);
},onComplete:function(_615){
this.updateChoices(_615.responseText);
}});
Autocompleter.Local=Class.create();
Autocompleter.Local.prototype=Object.extend(new Autocompleter.Base(),{initialize:function(_616,_617,_618,_619){
this.baseInitialize(_616,_617,_619);
this.options.array=_618;
},getUpdatedChoices:function(){
this.updateChoices(this.options.selector(this));
},setOptions:function(_61a){
this.options=Object.extend({choices:10,partialSearch:true,partialChars:2,ignoreCase:true,fullSearch:false,selector:function(_61b){
var ret=[];
var _61d=[];
var _61e=_61b.getToken();
var _61f=0;
for(var i=0;i<_61b.options.array.length&&ret.length<_61b.options.choices;i++){
var elem=_61b.options.array[i];
var _622=_61b.options.ignoreCase?elem.toLowerCase().indexOf(_61e.toLowerCase()):elem.indexOf(_61e);
while(_622!=-1){
if(_622==0&&elem.length!=_61e.length){
ret.push("<li><strong>"+elem.substr(0,_61e.length)+"</strong>"+elem.substr(_61e.length)+"</li>");
break;
}else{
if(_61e.length>=_61b.options.partialChars&&_61b.options.partialSearch&&_622!=-1){
if(_61b.options.fullSearch||/\s/.test(elem.substr(_622-1,1))){
_61d.push("<li>"+elem.substr(0,_622)+"<strong>"+elem.substr(_622,_61e.length)+"</strong>"+elem.substr(_622+_61e.length)+"</li>");
break;
}
}
}
_622=_61b.options.ignoreCase?elem.toLowerCase().indexOf(_61e.toLowerCase(),_622+1):elem.indexOf(_61e,_622+1);
}
}
if(_61d.length){
ret=ret.concat(_61d.slice(0,_61b.options.choices-ret.length));
}
return "<ul>"+ret.join("")+"</ul>";
}},_61a||{});
}});
Field.scrollFreeActivate=function(_623){
setTimeout(function(){
Field.activate(_623);
},1);
};
Ajax.InPlaceEditor=Class.create();
Ajax.InPlaceEditor.defaultHighlightColor="#FFFF99";
Ajax.InPlaceEditor.prototype={initialize:function(_624,url,_626){
this.url=url;
this.element=$(_624);
this.options=Object.extend({okButton:true,okText:"ok",cancelLink:true,cancelText:"cancel",savingText:"Saving...",clickToEditText:"Click to edit",okText:"ok",rows:1,onComplete:function(_627,_628){
new Effect.Highlight(_628,{startcolor:this.options.highlightcolor});
},onFailure:function(_629){
alert("Error communicating with the server: "+_629.responseText.stripTags());
},callback:function(form){
return Form.serialize(form);
},handleLineBreaks:true,loadingText:"Loading...",savingClassName:"inplaceeditor-saving",loadingClassName:"inplaceeditor-loading",formClassName:"inplaceeditor-form",highlightcolor:Ajax.InPlaceEditor.defaultHighlightColor,highlightendcolor:"#FFFFFF",externalControl:null,submitOnBlur:false,ajaxOptions:{},evalScripts:false},_626||{});
if(!this.options.formId&&this.element.id){
this.options.formId=this.element.id+"-inplaceeditor";
if($(this.options.formId)){
this.options.formId=null;
}
}
if(this.options.externalControl){
this.options.externalControl=$(this.options.externalControl);
}
this.originalBackground=Element.getStyle(this.element,"background-color");
if(!this.originalBackground){
this.originalBackground="transparent";
}
this.element.title=this.options.clickToEditText;
this.onclickListener=this.enterEditMode.bindAsEventListener(this);
this.mouseoverListener=this.enterHover.bindAsEventListener(this);
this.mouseoutListener=this.leaveHover.bindAsEventListener(this);
Event.observe(this.element,"click",this.onclickListener);
Event.observe(this.element,"mouseover",this.mouseoverListener);
Event.observe(this.element,"mouseout",this.mouseoutListener);
if(this.options.externalControl){
Event.observe(this.options.externalControl,"click",this.onclickListener);
Event.observe(this.options.externalControl,"mouseover",this.mouseoverListener);
Event.observe(this.options.externalControl,"mouseout",this.mouseoutListener);
}
},enterEditMode:function(evt){
if(this.saving){
return;
}
if(this.editing){
return;
}
this.editing=true;
this.onEnterEditMode();
if(this.options.externalControl){
Element.hide(this.options.externalControl);
}
Element.hide(this.element);
this.createForm();
this.element.parentNode.insertBefore(this.form,this.element);
if(!this.options.loadTextURL){
Field.scrollFreeActivate(this.editField);
}
if(evt){
Event.stop(evt);
}
return false;
},createForm:function(){
this.form=document.createElement("form");
this.form.id=this.options.formId;
Element.addClassName(this.form,this.options.formClassName);
this.form.onsubmit=this.onSubmit.bind(this);
this.createEditField();
if(this.options.textarea){
var br=document.createElement("br");
this.form.appendChild(br);
}
if(this.options.okButton){
okButton=document.createElement("input");
okButton.type="submit";
okButton.value=this.options.okText;
okButton.className="editor_ok_button";
this.form.appendChild(okButton);
}
if(this.options.cancelLink){
cancelLink=document.createElement("a");
cancelLink.href="#";
cancelLink.appendChild(document.createTextNode(this.options.cancelText));
cancelLink.onclick=this.onclickCancel.bind(this);
cancelLink.className="editor_cancel";
this.form.appendChild(cancelLink);
}
},hasHTMLLineBreaks:function(_62d){
if(!this.options.handleLineBreaks){
return false;
}
return _62d.match(/<br/i)||_62d.match(/<p>/i);
},convertHTMLLineBreaks:function(_62e){
return _62e.replace(/<br>/gi,"\n").replace(/<br\/>/gi,"\n").replace(/<\/p>/gi,"\n").replace(/<p>/gi,"");
},createEditField:function(){
var text;
if(this.options.loadTextURL){
text=this.options.loadingText;
}else{
text=this.getText();
}
var obj=this;
if(this.options.rows==1&&!this.hasHTMLLineBreaks(text)){
this.options.textarea=false;
var _631=document.createElement("input");
_631.obj=this;
_631.type="text";
_631.name="value";
_631.value=text;
_631.style.backgroundColor=this.options.highlightcolor;
_631.className="editor_field";
var size=this.options.size||this.options.cols||0;
if(size!=0){
_631.size=size;
}
if(this.options.submitOnBlur){
_631.onblur=this.onSubmit.bind(this);
}
this.editField=_631;
}else{
this.options.textarea=true;
var _633=document.createElement("textarea");
_633.obj=this;
_633.name="value";
_633.value=this.convertHTMLLineBreaks(text);
_633.rows=this.options.rows;
_633.cols=this.options.cols||40;
_633.className="editor_field";
if(this.options.submitOnBlur){
_633.onblur=this.onSubmit.bind(this);
}
this.editField=_633;
}
if(this.options.loadTextURL){
this.loadExternalText();
}
this.form.appendChild(this.editField);
},getText:function(){
return this.element.innerHTML;
},loadExternalText:function(){
Element.addClassName(this.form,this.options.loadingClassName);
this.editField.disabled=true;
new Ajax.Request(this.options.loadTextURL,Object.extend({asynchronous:true,onComplete:this.onLoadedExternalText.bind(this)},this.options.ajaxOptions));
},onLoadedExternalText:function(_634){
Element.removeClassName(this.form,this.options.loadingClassName);
this.editField.disabled=false;
this.editField.value=_634.responseText.stripTags();
Field.scrollFreeActivate(this.editField);
},onclickCancel:function(){
this.onComplete();
this.leaveEditMode();
return false;
},onFailure:function(_635){
this.options.onFailure(_635);
if(this.oldInnerHTML){
this.element.innerHTML=this.oldInnerHTML;
this.oldInnerHTML=null;
}
return false;
},onSubmit:function(){
var form=this.form;
var _637=this.editField.value;
this.onLoading();
if(this.options.evalScripts){
new Ajax.Request(this.url,Object.extend({parameters:this.options.callback(form,_637),onComplete:this.onComplete.bind(this),onFailure:this.onFailure.bind(this),asynchronous:true,evalScripts:true},this.options.ajaxOptions));
}else{
new Ajax.Updater({success:this.element,failure:null},this.url,Object.extend({parameters:this.options.callback(form,_637),onComplete:this.onComplete.bind(this),onFailure:this.onFailure.bind(this)},this.options.ajaxOptions));
}
if(arguments.length>1){
Event.stop(arguments[0]);
}
return false;
},onLoading:function(){
this.saving=true;
this.removeForm();
this.leaveHover();
this.showSaving();
},showSaving:function(){
this.oldInnerHTML=this.element.innerHTML;
this.element.innerHTML=this.options.savingText;
Element.addClassName(this.element,this.options.savingClassName);
this.element.style.backgroundColor=this.originalBackground;
Element.show(this.element);
},removeForm:function(){
if(this.form){
if(this.form.parentNode){
Element.remove(this.form);
}
this.form=null;
}
},enterHover:function(){
if(this.saving){
return;
}
this.element.style.backgroundColor=this.options.highlightcolor;
if(this.effect){
this.effect.cancel();
}
Element.addClassName(this.element,this.options.hoverClassName);
},leaveHover:function(){
if(this.options.backgroundColor){
this.element.style.backgroundColor=this.oldBackground;
}
Element.removeClassName(this.element,this.options.hoverClassName);
if(this.saving){
return;
}
this.effect=new Effect.Highlight(this.element,{startcolor:this.options.highlightcolor,endcolor:this.options.highlightendcolor,restorecolor:this.originalBackground});
},leaveEditMode:function(){
Element.removeClassName(this.element,this.options.savingClassName);
this.removeForm();
this.leaveHover();
this.element.style.backgroundColor=this.originalBackground;
Element.show(this.element);
if(this.options.externalControl){
Element.show(this.options.externalControl);
}
this.editing=false;
this.saving=false;
this.oldInnerHTML=null;
this.onLeaveEditMode();
},onComplete:function(_638){
this.leaveEditMode();
this.options.onComplete.bind(this)(_638,this.element);
},onEnterEditMode:function(){
},onLeaveEditMode:function(){
},dispose:function(){
if(this.oldInnerHTML){
this.element.innerHTML=this.oldInnerHTML;
}
this.leaveEditMode();
Event.stopObserving(this.element,"click",this.onclickListener);
Event.stopObserving(this.element,"mouseover",this.mouseoverListener);
Event.stopObserving(this.element,"mouseout",this.mouseoutListener);
if(this.options.externalControl){
Event.stopObserving(this.options.externalControl,"click",this.onclickListener);
Event.stopObserving(this.options.externalControl,"mouseover",this.mouseoverListener);
Event.stopObserving(this.options.externalControl,"mouseout",this.mouseoutListener);
}
}};
Ajax.InPlaceCollectionEditor=Class.create();
Object.extend(Ajax.InPlaceCollectionEditor.prototype,Ajax.InPlaceEditor.prototype);
Object.extend(Ajax.InPlaceCollectionEditor.prototype,{createEditField:function(){
if(!this.cached_selectTag){
var _639=document.createElement("select");
var _63a=this.options.collection||[];
var _63b;
_63a.each(function(e,i){
_63b=document.createElement("option");
_63b.value=(e instanceof Array)?e[0]:e;
if((typeof this.options.value=="undefined")&&((e instanceof Array)?this.element.innerHTML==e[1]:e==_63b.value)){
_63b.selected=true;
}
if(this.options.value==_63b.value){
_63b.selected=true;
}
_63b.appendChild(document.createTextNode((e instanceof Array)?e[1]:e));
_639.appendChild(_63b);
}.bind(this));
this.cached_selectTag=_639;
}
this.editField=this.cached_selectTag;
if(this.options.loadTextURL){
this.loadExternalText();
}
this.form.appendChild(this.editField);
this.options.callback=function(form,_63f){
return "value="+encodeURIComponent(_63f);
};
}});
Form.Element.DelayedObserver=Class.create();
Form.Element.DelayedObserver.prototype={initialize:function(_640,_641,_642){
this.delay=_641||0.5;
this.element=$(_640);
this.callback=_642;
this.timer=null;
this.lastValue=$F(this.element);
Event.observe(this.element,"keyup",this.delayedListener.bindAsEventListener(this));
},delayedListener:function(_643){
if(this.lastValue==$F(this.element)){
return;
}
if(this.timer){
clearTimeout(this.timer);
}
this.timer=setTimeout(this.onTimerEvent.bind(this),this.delay*1000);
this.lastValue=$F(this.element);
},onTimerEvent:function(){
this.timer=null;
this.callback(this.element,$F(this.element));
}};
}
if($Bootstrap.notLoaded("dfe68ef937305d266e0933718cc1aed5")){
function Validator(){
this._rules=[];
this.badKey="";
}
Validator.$empty=function(v){
return (v!="");
};
Validator.$integer=function(v){
return (parseInt(v)==(v-0));
};
Validator.$positiveInteger=function(v){
return Validator.$integer(v)&&parseInt(v)>0;
};
Validator.$validDate=function(v){
var d=(typeof v=="string"?new Date(v):v);
if(d=="Invalid Date"||isNaN(d)){
return false;
}
if(typeof v=="string"&&v.indexOf("/")!=-1){
var _649=parseInt(v.substr(0,v.indexOf("/")),10);
if(_649!=(d.getMonth()+1)){
return false;
}
}
return true;
};
Validator.$validEmail=function(v){
var _64b="[a-z0-9\\.\\'_\\-\\+\\=&]+";
var _64c="([a-z0-9-]+\\.)";
var _64d="([a-z0-9-]([a-z0-9-]*[a-z0-9-])?\\.)";
var _64e=new RegExp("^"+_64b+"@"+_64d+"*?"+_64c+"([a-z]{2,6})$","i");
if(_64e.test(v)){
return true;
}else{
return false;
}
};
Validator.$validURL=function(v){
var _650=/^(http|https|ftp|ftps|telnet|smtp)\:\/\/(\w+(:\w+)?@)?\w+([\.\-]\w+)*\.\w{2,4}(\:\d+)*([\/\.\-\?\&\%\#\=\:\+]\w+)*[\/\=]?$/i;
if(_650.test(v)){
return true;
}
var _651=v.indexOf("mailto:");
if(_651===0){
var _652=v.indexOf("?");
if(_652<=0){
_652=v.length;
}
var _653=v.substring(7,_652);
if(_653.length==0){
return false;
}
var _654=_653.split(",");
for(var i=0,ii=_654.length;i<ii;i++){
if(Validator.$validEmail(_654[i])==false){
return false;
}
}
return true;
}else{
return false;
}
};
Validator.$validTime=function(v){
if(String(v).trim()==""||isNaN(parseInt(v))){
return false;
}
var d=new Date("1/1/2001 "+v);
if(d=="Invalid Date"||isNaN(d)){
return false;
}
return true;
};
Validator.$validPhoneNumber=function(_658){
_658=_658.replace(/\s/g,"");
return _658.search(/^\(?[0-9]{3}\)?[-\.,]?[0-9]{3}[-\.,]?[0-9]{4}$/)!=-1;
};
Validator.prototype.addRule=function(k,v,f){
this._rules.push({"k":k,"v":v,"f":f});
};
Validator.prototype.validate=function(){
var _65c=this._rules;
for(var i=0,ii=_65c.length;i<ii;i++){
if(!_65c[i].f(_65c[i].v)){
this.badKey=_65c[i].k;
return false;
}
}
return true;
};
}
if($Bootstrap.notLoaded("0481eba56c7e3c1dc52661c9c5fd9d70")){
Keystroke=new function(){
this.alt=function(bool){
if(typeof bool=="undefined"){
return this._alt;
}else{
this._alt=bool;
}
};
this.ctrl=function(bool){
if(typeof bool=="undefined"){
return this._ctrl;
}else{
this._ctrl=bool;
}
};
this.enable=function(en){
if(typeof en=="undefined"){
return this._enabled;
}else{
if(en&&!this._set){
this._initialize();
}
this._enabled=en;
}
};
this.shift=function(bool){
if(typeof bool=="undefined"){
return this._shift;
}else{
this._shift=bool;
}
};
this.key=function(chr,bool){
if(!this._keys){
return false;
}
if(typeof bool=="undefined"){
return (typeof this._keys[chr]=="undefined"?false:this._keys[chr]);
}else{
this._keys[chr]=bool;
}
};
this._clearKeys=function(){
this.alt(false);
this.shift(false);
this.ctrl(false);
for(var _664 in this._keys){
this.key(_664,false);
}
};
this._initialize=function(){
var ks=Keystroke;
Event.observe(window.document,"keydown",ks._keydownHandler.bindAsEventListener(ks));
Event.observe(window.document,"keyup",ks._keyupHandler.bindAsEventListener(ks));
Event.observe(window,"blur",ks._clearKeys.bindAsEventListener(ks));
ks._keys=[];
this._set=true;
};
this._keydownHandler=function(e){
switch(e.keyCode){
case 16:
this.shift(true);
break;
case 17:
this.ctrl(true);
break;
case 18:
this.alt(true);
break;
case 38:
break;
case 40:
break;
case 85:
this.key("u",true);
break;
case 90:
this.key("z",true);
break;
default:
return;
break;
}
};
this._keyupHandler=function(e){
switch(e.keyCode){
case 16:
this.shift(false);
break;
case 17:
this.ctrl(false);
break;
case 18:
this.alt(false);
break;
case 38:
break;
case 40:
break;
case 85:
this.key("u",false);
break;
case 90:
this.key("z",false);
break;
default:
return;
break;
}
};
};
Keystroke._enabled=false;
}
if($Bootstrap.notLoaded("95a4129f2d6d5301c6b9ef0513dc377c")){
Framework.register("Webmail");
$DateTime=Webmail.DateTime={create:function(date,time,_66a){
var _66b=new wack.DateTime;
if($Settings.getDateFormat()==wm_Settings_DATE_INTL){
_66b.setDateOrder(wack.DateTime.DATE_INTL);
}else{
_66b.setDateOrder(wack.DateTime.DATE_AMERICAN);
}
if($Settings.getHourFormat()==wm_Settings_HOUR_24){
_66b.setHourFormat(wack.DateTime.HOUR_24);
}else{
_66b.setHourFormat(wack.DateTime.HOUR_12);
}
if(date){
_66b.setDateString(date);
}else{
if(time){
_66b.setTimeString(time);
}else{
if(_66a){
_66b.setDateTimeString(_66a);
}
}
}
return _66b;
}};
}
if($Bootstrap.notLoaded("7a45ecf2bbd3ef97667df640c8a3f7b6")){
Framework.register("Webmail");
$Cache=Webmail.Cache={_cache:null,initialize:function(){
if($Preload&&$Preload["client_cache"]){
var me=$Bootstrap.getAppWindow().$Cache;
me._cache=$Preload["client_cache"];
}
},getValue:function(key){
var me=$Bootstrap.getAppWindow().$Cache;
if(me==this){
if(me._cache&&me._cache[key]){
return me._cache[key];
}
}else{
return me.getValue(key);
}
return null;
},resetValue:function(key){
var me=$Bootstrap.getAppWindow().$Cache;
if(me==this){
if(me._cache){
me._cache[key]=null;
}
}else{
me.resetValue(key);
}
},setValue:function(key,_672){
var me=$Bootstrap.getAppWindow().$Cache;
if(me==this){
if(me._cache){
me._cache[key]=_672;
}
}else{
me.setValue(key,_672);
}
}};
}
if($Bootstrap.notLoaded("cf1b0e01d61831ace3b72b16421ad2a6")){
function CheckDrag(){
this.call=false;
}
CheckDrag._dragging=false;
CheckDrag.prototype.load=function(_674,_675){
var cd=this;
if(!window._cd_arr){
window._cd_arr=[];
Event.observe(window.document,"mouseup",CheckDrag._mouseupHandler,false);
}
window._cd_arr.push(this);
if(_675){
cd.call=_675;
}else{
cd.call=false;
}
for(var i=0,ii=_674.length;i<ii;i++){
_674[i].CheckDrag=cd;
Event.observe(_674[i],"mousedown",CheckDrag._mousedownCheckbox,false);
Event.observe(_674[i],"mouseover",CheckDrag._mouseoverCheckbox,false);
Event.observe(_674[i],"click",CheckDrag._preventCheck,false);
}
};
CheckDrag._mousedownCheckbox=function(e){
var elem=_src_elem(e,"input");
var cd=elem.CheckDrag;
window._curr_cd=cd;
cd._checkBox(elem,!elem.checked);
};
CheckDrag.prototype._checkBox=function(cbx,_67c){
var cd=this;
cbx.checked=_67c;
if(_67c){
cd._dragging="check";
if(cd.call){
cd.call(cbx,true);
}
}else{
cd._dragging="uncheck";
if(cd.call){
cd.call(cbx,false);
}
}
};
CheckDrag._mouseoverCheckbox=function(e){
var elem=_src_elem(e,"input");
var cd=elem.CheckDrag;
if(cd._dragging!=false){
if(cd._dragging=="check"&&!elem.checked){
cd._checkBox(elem,true);
}else{
if(cd._dragging=="uncheck"&&elem.checked){
cd._checkBox(elem,false);
}
}
}
};
CheckDrag._preventCheck=function(e){
var cb=_src_elem(e,"input");
if(cb.checked){
cb.checked=false;
}else{
cb.checked=true;
}
};
CheckDrag._mouseupHandler=function(e){
if(window&&window._curr_cd){
window._curr_cd._dragging=false;
}
};
CheckDrag._flushListeners=function(){
};
}
if($Bootstrap.notLoaded("f3c4544d2dfacf0e491bfaa9df8e9994")){
var dp_event_managers=null;
DatePicker=function(){
};
DatePicker.iframes=[];
DatePicker.prototype={allow_back:true,allow_forward:true,back_callback:null,forward_callback:null,block_height:14,block_width:17,date:null,day_callback:null,empty_url:null,highlight_date:true,image_dir:"images/",show_leading_days:true,show_trailing_days:true,_debug:false,_height:0,_width:0,_make_header:function(){
var _684=Element.createHtml(["<div style=\"background:#999;padding:2px 0px;margin-bottom:2px\">","</div>"].join(""));
if(this.allow_back==true){
var _685=Element.createHtml(["<div style=\"float:left;padding:2px;margin-top:1px;cursor:pointer;\">","<img src=\""+this.image_dir+"DatePicker_back.gif\" />","</div>"].join(""));
Event.observe(_685,"click",DatePickerHelper._back);
if(this.back_callback){
Event.observe(_685,"click",this.back_callback);
}
Element.append(_684,_685);
}
if(this.allow_forward==true){
var _686="float:right;padding:2px;margin-top:1px;text-align:right;cursor:pointer;";
var _687=Element.createHtml(["<div style=\"",_686,"\">","<img src=\"",this.image_dir,"DatePicker_forward.gif\" />","</div>"].join(""));
Event.observe(_687,"click",DatePickerHelper._forward);
if(this.forward_callback){
Event.observe(_687,"click",this.forward_callback);
}
Element.append(_684,_687);
}
var text=_ce("div");
text.innerHTML=this.date.format("%F %Y");
text.style.color="#FFF";
text.style.textAlign="center";
_684.appendChild(text);
return _684;
},_make_minical:function(_689){
if(!_689){
var _68a="style=\"border-bottom:1px solid #666\"";
var _689=Element.createHtml(["<table cellspacing=\"0\" cellpadding=\"2\" border=\"0\" width=\"100%\"><tbody>","<tr>","<td align=\"center\" ",_68a,">S</td>","<td align=\"center\" ",_68a,">M</td>","<td align=\"center\" ",_68a,">T</td>","<td align=\"center\" ",_68a,">W</td>","<td align=\"center\" ",_68a,">T</td>","<td align=\"center\" ",_68a,">F</td>","<td align=\"center\" ",_68a,">S</td>","</tr>","</tbody></table>"].join(""));
var _68b=_689.firstChild;
for(row=1;row<7;row++){
var _68c=Element.create("tr");
Element.append(_68b,_68c);
for(col=0;col<7;col++){
var cell=Element.create("td");
Element.setStyle(cell,{padding:"0 3px 1px 0",height:this.block_height+"px",textAlign:"right"});
Element.append(_68c,cell);
}
}
}else{
var _68b=_689.firstChild;
for(row=1;row<7;row++){
_68c=_68b.rows[row];
for(col=0;col<7;col++){
cell=_68c.getElementsByTagName("td")[col];
Element.setStyle(cell,{border:"none",margin:"0",padding:"0 3px 1px 0",height:this.block_height+"px",textAlign:"right",backgroundColor:""});
Element.update(cell,"&nbsp;");
}
}
}
var _68e=newDate(this.date.format("%Y-%m-01"));
var _68f=newDate(_68e.add(-1,1).format("%Y-%m-%d"));
if(this.show_leading_days==true){
var _690=_68e.add(-_68e.getDay()).format("%Y-%m-%d");
}else{
var _690=_68e.format("%Y-%m-%d");
}
if(this.show_trailing_days==true&&_68f.getDay()<6){
var _691=_68f.add(6-_68f.getDay()).format("%Y-%m-%d");
}else{
var _691=_68f.format("%Y-%m-%d");
}
row=1;
col=newDate(_690).getDay();
var _68c=_68b.rows[row];
var _692=newDate(_690);
var _693=newDate(_691);
var _694=(new Date).format("%Y-%m-%d");
var _695=parseInt(this.date.format("%n"));
var _696="text-decoration:none;color:#000;";
var _697="text-decoration:none;color:#ACA899;";
for(;_692<=_693;_692=_692.add(1)){
var _698=_692.format("%Y-%m-%d");
var cell=_68c.getElementsByTagName("td")[col];
month=parseInt(_698.substring(5,7).replace(/^0/,""));
day=parseInt(_698.substring(8).replace(/^0/,""));
if(_698==_694){
Element.setStyle(cell,{border:"1px solid #5487BB",textAlign:"right",marginTop:"-1px",padding:"0 2px 0 0",height:this.block_height-1+"px"});
}
if(month!=_695){
Element.update(cell,["<a id=\"mcday",_698,"\" href=\"javascript:void(0);\" ","style=\"",_697,"\">",day,"</a>"].join(""));
}else{
Element.update(cell,["<a id=\"mcday",_698,"\" href=\"javascript:void(0);\" ","style=\"",_696,"\">",day,"</a>"].join(""));
}
var link=cell.getElementsByTagName("a")[0];
link.date=_698;
if(this.day_callback){
Event.observe(link,"click",this.day_callback);
}
if(this.mousedown_callback){
Event.observe(link,"mousedown",this.mousedown_callback);
}
if(col==6){
col=0;
row++;
var _68c=_689.rows[row];
}else{
col++;
}
}
return _689;
},create:function(){
if(this.date==null){
return;
}
this._height=132;
this._width=(this.block_width*7)+10;
var _69a=Element.create("div");
_69a.cdate=this.date.format("%Y-%m-%d");
_69a.shwtrl=this.show_trailing_days;
_69a.shwld=this.show_leading_days;
_69a.block_height=this.block_height;
_69a.block_width=this.block_width;
_69a.day_callback=this.day_callback;
_69a.style.height=this._height+"px";
_69a.style.width=this._width+"px";
_69a.style.background="#FFF";
_69a.style.border="solid 1px #999999";
_69a.style.padding="1px";
_69a.style.fontSize="8pt";
_69a.style.fontFamily="Arial, Helvetica, Sans-serif";
var _69b=this._make_header();
var _69c=this._make_minical();
_69a.appendChild(_69b);
_69a.appendChild(_69c);
if(Browser.is_ie6&&this.empty_url){
var _69d=Element.create("div");
var _69e=null;
for(var i=0,ii=DatePicker.iframes.length;i<ii;i++){
if(Element.isOrphan(DatePicker.iframes[i])){
_69e=DatePicker.iframes[i];
break;
}
}
if(!_69e){
_69e=Element.createHtml("<iframe frameborder=\"0\" src=\""+this.empty_url+"\"></iframe>");
_69e.style.height=this._height+4+"px";
_69e.style.width=this._width+4+"px";
DatePicker.iframes.push(_69e);
}
_69a.style.position="relative";
_69a.style.top=(-1*parseInt(_69e.style.height,10))+"px";
Element.append(_69d,_69e,_69a);
return _69d;
}else{
return _69a;
}
}};
var DatePickerHelper={_back:function(e){
Event.stop(e);
DatePickerHelper._nav(e,-1);
},_forward:function(e){
Event.stop(e);
DatePickerHelper._nav(e,1);
},_nav:function(e,d){
var elem=Event.findElement(e,"div");
var _6a5=elem.parentNode;
var _6a6=_6a5.parentNode;
DatePickerHelper.move_cal(_6a6,d);
},move_cal:function(cont,d){
var _6a9=cont;
var _6aa=_6a9.firstChild;
var _6ab=_6a9.lastChild;
var _6ac=newDate(_6a9.cdate);
if(typeof (d)=="number"||typeof (d)=="int"){
var _6ad=newDate(_6a9.cdate).add(0,d).format("%Y-%m-%d");
}else{
var _6ad=d;
}
_6a9.cdate=_6ad;
var _6ae=new DatePicker;
_6ae.date=newDate(_6ad);
_6ae.block_height=_6a9.block_height;
_6ae.block_width=_6a9.block_width;
_6ae.show_leading_days=_6a9.shwld;
_6ae.show_trailing_days=_6a9.shwtrl;
_6ae.day_callback=_6a9.day_callback;
_6ae._make_minical(_6ab);
_6aa.lastChild.innerHTML=newDate(_6ad).format("%F %Y");
}};
}
if($Bootstrap.notLoaded("2220d41b312ef55fb6e6f44a1c0489c1")){
var Minical2=Class.create();
Minical2.prototype={block_width:17,_start_date:null,_end_date:null,_first_date:null,_last_date:null,initialize:function(_6af,_6b0){
Object.bindObservers(this);
this._options=Object.extend({date:new Date(),header_class_name:"",default_class_name:"",today_class_ame:"",highlight_class_name:"",day_callback:Prototype.emptyFunction,allow_back:true,allow_forward:true,forward_callback:Prototype.emptyFunction,back_callback:Prototype.emptyFunction,show_leading_days:true,show_trailing_days:true,back_image:"",forward_image:""},_6b0||{});
this._bold_days=[];
this._highlight_days={};
this._milliseconds_per_day=24*60*60*1000;
this.container=this._draw();
this.populate(this._options.date);
Element.append(_6af,this.container);
},boldDays:function(days){
var _6b2=arguments[1]||"bold";
for(var i=0;i<days.length;i++){
var cell=this._findDayCell(days[i]);
if(cell){
cell.style.fontWeight=_6b2;
this._bold_days.push(days[i]);
}
}
},clear:function(){
this.unsetToday();
this.unboldAllDays();
this.unhighlightAllDays();
},gotoDate:function(date){
this.clear();
this.populate(date);
},highlightDays:function(days){
for(var i=0;i<days.length;i++){
var cell=this._findDayCell(days[i]);
if(cell){
Element.addClassName(cell,this._options.highlight_class_name);
this._highlight_days[days[i]]=cell;
}
}
},populate:function(date){
var _6ba=newDate((new Date()).format("%Y-%m-%d"));
if(this.date&&this.date.getMonth()==date.getMonth()&&this.date.getFullYear()==date.getFullYear()){
this.setToday(_6ba);
return;
}
this.date=date;
this._header.lastChild.innerHTML=date.format("%F %Y");
var _6bb=wack.DateTime.getStartEndDates("month",date);
var _6bc=_6bb.start;
var _6bd=_6bb.end;
if(this._options.show_leading_days==true){
this._start_date=_6bc.add(-_6bc.getDay());
}else{
this._start_date=_6bc;
}
this._first_date=_6bc.add(-_6bc.getDay());
if(this._options.show_trailing_days==true&&_6bd.getDay()<6){
this._end_date=_6bd.add(6-_6bd.getDay());
}else{
this._end_date=_6bd;
}
this._last_date=this._first_date.add(41);
var _6be,col,end_date;
var _6bf=this._minical.firstChild.rows[1];
if(!this._options.show_leading_days){
_6be=this._first_date;
col=0;
for(;_6be<this._start_date;_6be=_6be.add(1)){
var cell=$(_6bf.getElementsByTagName("td")[col]);
this._resetCell(cell);
col++;
}
}
_6be=this._start_date;
end_date=this._end_date;
col=this._start_date.getDay();
for(;_6be<=end_date;_6be=_6be.add(1)){
var cell=$(_6bf.getElementsByTagName("td")[col]);
this._populateCell(cell,_6be);
if(col==6){
col=0;
_6bf=_6bf.nextSibling;
}else{
col++;
}
}
var _6be=this._end_date.add(1);
for(;_6be<=this._last_date;_6be=_6be.add(1)){
var cell=$(_6bf.getElementsByTagName("td")[col]);
this._resetCell(cell);
if(col==6){
col=0;
_6bf=_6bf.nextSibling;
}else{
col++;
}
}
this.setToday(_6ba);
},reset:function(){
this.gotoDate(this._options.date);
},setToday:function(date){
if(date<this._start_date||date>this._end_date){
return;
}
this.unsetToday();
this._today=date;
this._today_cell=this._findDayCell(date);
Element.addClassName(this._today_cell,this._options.today_class_name);
},unsetToday:function(){
if(this._today_cell){
Element.removeClassName(this._today_cell,this._options.today_class_name);
this._today_cell=null;
}
},unboldAllDays:function(){
for(var i=0;i<this._bold_days.length;i++){
this._findDayCell(this._bold_days[i]).style.fontWeight="";
}
this._bold_days=[];
},unhighlightAllDays:function(){
for(var day in this._highlight_days){
Element.removeClassName(this._highlight_days[day],this._options.highlight_class_name);
}
this._highlight_days={};
},_draw:function(){
this._height=132;
this._width=parseInt(this.block_width*7)+10;
var _6c4=Element.create("div");
_6c4.style.height=this._height+"px";
_6c4.style.width=this._width+"px";
_6c4.style.background="#FFF";
_6c4.style.border="solid 1px #999999";
_6c4.style.padding="1px";
_6c4.style.fontSize="8pt";
_6c4.style.fontFamily="Arial, Helvetica, Sans-serif";
this._header=this._drawHeader();
this._minical=this._drawMinical();
_6c4.appendChild(this._header);
_6c4.appendChild(this._minical);
return _6c4;
},_drawHeader:function(){
var _6c5=Element.createHtml(["<div style=\"background:#999;padding:2px 0px;margin-bottom:2px\">","</div>"].join(""));
if(this._options.allow_back==true){
var _6c6=Element.createHtml(["<div style=\"float:left;padding:2px;margin-top:1px;cursor:pointer;\">","<img src=\"",this._options.back_image,"\" />","</div>"].join(""));
Event.observe(_6c6,"click",function(e){
this.gotoDate(this.date.add(0,-1));
this._options.back_callback(e);
}.bindAsEventListener(this));
Element.append(_6c5,_6c6);
}
if(this._options.allow_forward==true){
var _6c8="float:right;padding:2px;margin-top:1px;text-align:right;cursor:pointer;";
var _6c9=Element.createHtml(["<div style=\"",_6c8,"\">","<img src=\"",this._options.forward_image,"\" />","</div>"].join(""));
Event.observe(_6c9,"click",function(e){
this.gotoDate(this.date.add(0,1));
this._options.forward_callback(e);
}.bindAsEventListener(this));
Element.append(_6c5,_6c9);
}
var text=Element.create("div");
Element.update(text,this._options.date.format("%F %Y"));
Element.setStyle(text,{color:"#FFF",textAlign:"center"});
_6c5.appendChild(text);
return _6c5;
},_drawMinical:function(){
var _6cc;
if(window.L&&L("Date.L.Sunday.Letter")!=""){
_6cc={sunday:L("Date.L.Sunday.Letter"),monday:L("Date.L.Monday.Letter"),tuesday:L("Date.L.Tuesday.Letter"),wednesday:L("Date.L.Wednesday.Letter"),thursday:L("Date.L.Thursday.Letter"),friday:L("Date.L.Friday.Letter"),saturday:L("Date.L.Saturday.Letter")};
}else{
_6cc={sunday:"S",monday:"M",tuesday:"T",wednesday:"W",thursday:"T",friday:"F",saturday:"S"};
}
var _6cd="style=\"border-bottom:1px solid #666\"";
var _6ce=Element.createHtml(["<table cellspacing=\"0\" cellpadding=\"2\" border=\"0\" width=\"100%\">","<tbody>","<tr>","<td align=\"center\" ",_6cd,">"+_6cc.sunday+"</td>","<td align=\"center\" ",_6cd,">"+_6cc.monday+"</td>","<td align=\"center\" ",_6cd,">"+_6cc.tuesday+"</td>","<td align=\"center\" ",_6cd,">"+_6cc.wednesday+"</td>","<td align=\"center\" ",_6cd,">"+_6cc.thursday+"</td>","<td align=\"center\" ",_6cd,">"+_6cc.friday+"</td>","<td align=\"center\" ",_6cd,">"+_6cc.saturday+"</td>","</tr>","</tbody>","</table>"].join(""));
var _6cf=_6ce.firstChild;
for(row=1;row<7;row++){
var _6d0=Element.create("tr");
Element.append(_6cf,_6d0);
for(col=0;col<7;col++){
var cell=Element.create("td",{className:this._options.default_class_name});
Event.observe(cell,"click",this.evDayClick);
Element.append(_6d0,cell);
}
}
return _6ce;
},_findDayCell:function(date){
if(date<this._start_date||date>this._end_date){
return;
}
var _6d3=(date-this._start_date.add(-this._start_date.getDay()))/this._milliseconds_per_day;
_6d3=Math.ceil(_6d3);
var row=parseInt(_6d3/7);
var col=date.getDay();
return this._minical.firstChild.childNodes[1+row].childNodes[col];
},_populateCell:function(cell,date){
cell.innerHTML=date.format("%j");
cell.date=date.format("%Y-%m-%d");
if(this.date.getMonth()!=date.getMonth()){
Element.setStyle(cell,{color:"#ACA899",cursor:"pointer"});
}else{
Element.setStyle(cell,{color:"#000",cursor:"pointer"});
}
},_resetCell:function(cell){
cell.update("&nbsp;");
cell.setStyle({cursor:""});
cell.date=null;
},evDayClick:null,_evDayClick:function(e){
var _6da=Event.findElement(e,"td");
if(_6da.date){
var date=newDate(_6da.date);
this._options.day_callback(date);
}
}};
}
if($Bootstrap.notLoaded("ad7a1723a8331744ea39a9a4afad25f4")){
if(typeof MoUI=="undefined"){
MoUI={};
}
MoUI.Input=Class.create();
MoUI.Input.prototype={options:{},menu:[],mo_menu:null,input_elem:null,initialize:function(_6dc){
this.options=Object.extend({background_color:"#FFF",blank_image:null,border_color:"#333",menu_callback:Prototype.emptyFunction,hover_color:"#CCC",icon_width:25,input_id:"",type:"menu",width:120},_6dc||{});
},addMenuItem:function(val,txt,img,_6e0){
this.menu.push({value:val,text:txt,image:img,active_image:_6e0||img});
},create:function(){
this.options.type=this.options.type||menu;
var elem=null;
switch(this.options.type){
case "menu":
elem=this._createMenuInput();
break;
}
return elem;
},setActive:function(_6e2){
if(Browser.is_safari){
return;
}
for(var i=0,ii=this.menu.length;i<ii;i++){
if(this.menu[i].value==_6e2){
this.container.firstChild.style.backgroundImage="url("+this.menu[i].active_image+")";
break;
}
}
this.options.menu_callback(_6e2);
},_createMenuInput:function(){
this.container=Element.create("span");
Element.setStyle(this.container,{marginLeft:"-"+this.options.icon_width+"px"});
var _6e4=this.input_elem=Element.create("input",{id:this.options.input_id});
Element.setStyle(_6e4,{height:this.options.icon_height-4+"px",width:this.options.width-this.options.icon_width+"px",paddingTop:"3px",paddingLeft:this.options.icon_width+3+"px",marginBottom:(wack.Browser.is_ie?"3px":0)});
if(Browser.is_safari){
return _6e4;
}
var icon=Element.create("img",{src:this.options.blank_image,align:"top"});
Element.setStyle(icon,{position:"relative",left:this.options.icon_width+4+"px",top:(wack.Browser.is_ie6||wack.Browser.is_ie7?"4px":"2px"),backgroundColor:"#FFF",backgroundImage:"url("+this.menu[0].active_image+")",backgroundRepeat:"no-repeat",backgroundPosition:"center center",height:this.options.icon_height+"px",width:this.options.icon_width+"px",paddingLeft:"3px",cursor:"pointer"});
Element.append(this.container,icon,_6e4);
this.evMenuIconClick=this._evMenuIconClick.bindAsEventListener(this);
Event.observe(icon,"click",this.evMenuIconClick);
this.mo_menu=new MoUI.Menu({icon_width:this.options.icon_width,width:this.options.width,onclick:this.setActive.bind(this),onhide:function(){
this.container._menu_show=false;
}.bind(this)});
this.menu.each(function(item){
this.mo_menu.addItem(item.value,item.image,item.text);
}.bind(this));
return this.container;
},_evMenuIconClick:function(e){
Event.stop(e);
if(this.container._menu_show){
this.container._menu_show=false;
this.mo_menu.hide();
return;
}
if(this.menu.length>1){
this.container._menu_show=true;
var _6e8=Position.cumulativeOffset(this.container.lastChild);
if(Browser.is_firefox){
_6e8[0]+=1;
_6e8[1]+=1;
}
this.mo_menu.show(_6e8[0]+1,_6e8[1]+this.container.lastChild.offsetHeight+1);
}
},evMenuIconClick:null,dummy:null};
}
if($Bootstrap.notLoaded("99a6cdc044b28122b11faa8c8043657a")){
if(typeof MoUI=="undefined"){
MoUI={};
}
MoUI.Menu=Class.create();
MoUI.Menu.prototype={options:{},_items:[],_menu:null,_shown:false,initialize:function(_6e9){
this.options=Object.extend({autohide:true,border_color:"#333",hover_color:"#CCC",icon_width:25,onclick:Prototype.emptyFunction,onhide:Prototype.emptyFunction,width:"auto"},_6e9||{});
},addItem:function(_6ea,img,text){
this._items.push({value:_6ea,img:img,text:text});
},hide:function(){
if(this._shown&&this._menu&&!Element.isOrphan(this._menu)){
this._shown=false;
this.options.onhide();
Element.hide(this._menu);
}
},show:function(x,y){
this._menu=this._menu||this._create();
Element.show(this._menu);
Element.setStyle(this._menu,{position:"absolute",top:y+"px",left:x+"px"});
Element.append(document.body,this._menu);
if(this.options.autohide){
this.evDocumentClick=this._evDocumentClick.bindAsEventListener(this);
Event.observe(document,"click",this.evDocumentClick);
}
this._shown=true;
},_create:function(){
var ul=Element.create("ul");
var wd=this.options.width+(this.options.width=="auto"?"":"px");
Element.setStyle(ul,{margin:0,padding:0,listStyle:"none",background:"#FFF",width:wd,border:"1px solid "+this.options.border_color});
this._items.each(function(item){
if(item.text=="sep"){
var li=ul.lastChild;
Element.setStyle(li,{borderBottom:"1px solid "+this.options.hover_color,margin:"0 0 2px 0"});
}else{
var li=Element.create("li");
li._value=item.value;
Element.update(li,item.text);
Element.setStyle(li,{background:"no-repeat 0px center",backgroundPosition:"2px 5px",padding:"6px 6px 5px "+(this.options.icon_width+6)+"px",cursor:"pointer"});
if(item.img){
li.style.backgroundImage="url("+item.img+")";
}
Element.append(ul,li);
this.evItemMouseOver=this._evItemMouseOver.bindAsEventListener(this);
this.evItemMouseOut=this._evItemMouseOut.bindAsEventListener(this);
this.evItemClick=this._evItemClick.bindAsEventListener(this);
Event.observe(li,"mouseover",this.evItemMouseOver);
Event.observe(li,"mouseout",this.evItemMouseOut);
Event.observe(li,"click",this.evItemClick);
}
li=null;
}.bind(this));
return ul;
},_evDocumentClick:function(e){
this.hide();
},evDocumentClick:null,_evItemClick:function(e){
var elem=Event.findElement(e,"li");
this.options.onclick(elem._value);
},evItemClick:null,_evItemMouseOver:function(e){
var elem=Event.findElement(e,"li");
Element.setStyle(elem,{backgroundColor:this.options.hover_color});
},evItemMouseOver:null,_evItemMouseOut:function(e){
var elem=Event.findElement(e,"li");
Element.setStyle(elem,{backgroundColor:""});
},evItemMouseOut:null,dummy:null};
}
if($Bootstrap.notLoaded("b0d7a13aa2356760f821e5fa7728734f")){
var Profiler=Class.create();
Profiler.prototype={initialize:function(obj,name){
this._object_name=name;
this._func_data=new Array();
this._max_duration={};
this._min_duration={};
this._total_calls={};
this._total_duration={};
this._win=window.open("","","width=800,height=600,scrollbars=yes");
this._timer=setInterval(this.draw.bind(this),10000);
function callMember(_6fc,func,name){
_6fc[name]=function(){
var _6ff=new Date();
var _700=func.apply(obj,$A(arguments));
var _701=new Date();
this._addFunctionCall({name:name,start:_6ff,end:_701,duration:_701-_6ff});
return _700;
}.bind(this);
}
for(var _702 in obj){
if(typeof obj[_702]=="function"){
callMember.bind(this)(obj,obj[_702],_702);
}
}
Event.observe(window,"unload",function(e){
this._win.close();
}.bind(this));
},draw:function(){
if(this._win.closed){
clearInterval(this._timer);
return;
}
var html="<h1>"+this._object_name+"</h1>";
html+=["<h3>Function Statistics</h3>","<table border='1' cellpading='2' cellspacing='0'>","<tr>","<td><strong>Function Name</strong></td>","<td><strong>Minimum Duration</strong></td>","<td><strong>Maximum Duration</strong></td>","<td><strong>Total Calls</strong></td>","<td><strong>Total Duration</strong></td>","<td><strong>Average Duration</strong></td>","</tr>"].join("");
$H(this._total_calls).each(function(pair){
var name=pair[0];
html+=["<tr>","<td>"+name+"</td><td>"+this._min_duration[name]+"</td>","<td>"+this._max_duration[name]+"</td>","<td>"+this._total_calls[name]+"</td>","<td>"+this._total_duration[name]+"</td>","<td>"+(this._total_duration[name]/this._total_calls[name])+"</td>","</tr>"].join("");
}.bind(this));
html+="</table>";
html+=["<h3>Function calls</h3>","<table border='1' cellpading='2' cellspacing='0'>","<tr>","<td><strong>Function Name</strong></td>","<td><strong>Duration</strong></td>","</tr>"].join("");
this._func_data.each(function(obj){
html+="<tr><td>"+obj.name+"</td><td>"+obj.duration+"</td></tr>";
});
html+="</table>";
this._win.document.body.innerHTML=html;
},_addFunctionCall:function(data){
if(!this._max_duration[data.name]||this._max_duration[data.name]<data.duration){
this._max_duration[data.name]=data.duration;
}
if(!this._min_duration[data.name]||this._min_duration[data.name]>data.duration){
this._min_duration[data.name]=data.duration;
}
if(!this._total_calls[data.name]){
this._total_calls[data.name]=0;
}
this._total_calls[data.name]++;
if(!this._total_duration[data.name]){
this._total_duration[data.name]=0;
}
this._total_duration[data.name]+=data.duration;
this._func_data.push(data);
}};
}
if($Bootstrap.notLoaded("15bcd01c6d498348b70ab1d7b71aad75")){
function TimePicker(){
}
TimePicker.prototype={time:null,callback:null,use_24_hour:false,render:function(){
var _709=_ce_html("<select size=\"7\"></select>");
for(i=0;i<24;i++){
var hour,merid;
if(this.use_24_hour){
if(i<10){
hour="0"+i;
}else{
hour=i;
}
merid="";
}else{
if(i==0||i==12){
hour="12";
}else{
if(i<12){
hour=i;
}else{
hour=(i-12);
}
}
merid=" "+(i<12?"am":"pm");
}
var _70b=hour+":00"+merid;
var _70c=_ce("option",{"value":_70b,"innerHTML":_70b});
var _70d=hour+":30"+merid;
var _70e=_ce("option",{"value":_70d,"innerHTML":_70d});
_709.appendChild(_70c);
_709.appendChild(_70e);
}
if(this.time){
_select(_709,this.time);
if(_709[_709.selectedIndex].value!=this.time){
var _70f=$DateTime.create(null,this.time);
var hour=parseInt(_70f.format("%H"),10);
var _710=parseInt(_70f.format("%i"),10);
var _711=(_710>=45);
var _710=((_710>=15)&&(_710<45))?30:0;
hour=_711?((hour+1)%24):hour;
_70f.setTimeString(hour+":"+_710);
_select(_709,_70f.basicTime());
}
}
if(this.callback){
Event.observe(_709,"click",this.callback);
}
if(this.mousedown_callback){
Event.observe(_709,"mousedown",this.mousedown_callback);
}
return _709;
}};
}
if($Bootstrap.notLoaded("894978cb2df619792c61699dba273e0a")){
Webmail=new function(){
this._app_width=null;
this._app_height=null;
this._left_height=null;
this._left_width=null;
this._right_width=null;
this._right_height=null;
this._calendar_enable=true;
this._titlebar_timer=null;
this._logout_url=$Preload["Custom.logout_url"];
this._extra_covers=[];
this.appWidth=function(v){
if(typeof (v)=="undefined"){
return this._app_width;
}else{
this._app_width=v;
}
};
this.appHeight=function(v){
if(typeof (v)=="undefined"){
return this._app_height;
}else{
this._app_height=v;
}
};
this.calendarEnable=function(v){
return (window.$Calendar?true:false);
};
this.disable=function(_715){
var _716=1;
if(!_715){
var _717=$("webmail_cover");
var _718=0;
}else{
var _718=999;
}
if(!_717){
_717=$UI.Alpha.newLayer("#FFF",_716);
if(!_715){
_717.id="webmail_cover";
}else{
this._extra_covers.push(_717);
}
_717.style.cursor="wait";
Element.append(document.body,_717);
}
Element.show(_717);
Element.setStyle(_717,{zIndex:_718,position:"absolute",width:"100%",height:"100%",top:"0",left:"0"});
};
this.disableCloseWarning=function(){
window.onbeforeunload=null;
};
this.enable=function(){
if(this._extra_covers.length>0){
var _719=this._extra_covers.pop();
Element.remove(_719);
}else{
var _719=$("webmail_cover");
if(_719){
Element.hide(_719);
}
}
};
this.enableCloseWarning=function(){
return;
window.onbeforeunload=function(){
return L("Webmail.Close");
};
};
this.extendSession=function(_71a){
$Data.request("Webmail.extendSession",{background:true,handle_conn_err:false,err_callback:function(){
if(!_71a){
setTimeout("Webmail.extendSession(true)",5000);
}
}});
};
this.getGlobal=function(key){
if(window._wm__globals){
return _wm__globals[key];
}else{
if(window.$Bootstrap){
var win=$Bootstrap.getAppWindow();
if(win){
return win._wm__globals[key];
}
}
}
return null;
};
this.getBaseUri=function(){
return this.getGlobal("base_uri");
};
this.getBlankUrl=function(){
if(wack.Browser.is_ie6||(wack.Browser.is_ie&&wack.Browser.is_https)){
return "misc/blank.html";
}
if(wack.Browser.is_mac&&wack.Browser.is_firefox){
return "misc/blank.html";
}
return "";
};
this.getSessionId=function(){
if(window.session_id){
return window.session_id;
}else{
return this.getGlobal("sid");
}
};
this.getSitePath=function(){
return this.getGlobal("site_path");
};
this.getUsername=function(){
return username.toLowerCase();
};
this.handleLoggedOff=function(){
$UI.clearStatus();
if(window.WEBMAIL_APP){
var _71d=function(){
window.onbeforeunload=null;
window.location="index.php";
};
}else{
var _71d=null;
}
$UI.error(L("E.LoggedOff"),_71d);
};
this.isAppWindow=function(){
if($Bootstrap.getAppWindow()==window){
return true;
}else{
return false;
}
};
this.isBeta=function(){
if(this.getGlobal("is_beta")){
return true;
}else{
return false;
}
};
this.isDemo=function(){
return this.getGlobal("is_demo");
};
this.isDev=function(){
return this.getGlobal("is_dev");
};
this.isHttps=function(){
return this.getGlobal("is_https");
};
this.leftHeight=function(v){
if(typeof (v)=="undefined"){
return this._left_height;
}else{
this._left_height=v;
}
};
this.leftWidth=function(v){
if(typeof (v)=="undefined"){
return this._left_width;
}else{
this._left_width=v;
}
};
this.loadFolderManager=function(e){
var link=Event.findElement(e,"a");
$Controller.setWorkingElement(link);
setTimeout("$Controller.loadModule(\"FolderManager\")",1);
};
this.makeSidUrl=function(url){
if(url.indexOf("?")===-1){
url+="?";
}else{
url+="&";
}
url+=CFG_SESSION_NAME+"="+this.getSessionId();
return url;
};
this.print=function(){
window.print();
};
this.resetRightScroll=function(){
$("core_right").scrollTop="0";
$("core_right").scrollLeft="0";
};
this.rightWidth=function(v){
if(typeof (v)=="undefined"){
var rw=this._right_width;
if(!wack.Browser.is_ie){
rw-=4;
}
return rw;
}else{
this._right_width=v;
}
};
this.rightHeight=function(v){
if(typeof (v)=="undefined"){
return this._right_height;
}else{
this._right_height=v;
}
};
this.sendErrorReport=function(_726){
try{
$Data.request("Webmail.sendErrorReport",{callback:Prototype.emptyFunction},_726);
}
catch(e){
}
};
this.setRightScrollEnable=function(_727){
var prop=(_727?"auto":"hidden");
Element.setStyle("core_right",{overflow:prop});
};
this.showPrintLink=function(show){
if(show){
Element.show("Webmail_print_link");
Element.show("right_sep1");
}else{
Element.hide("Webmail_print_link");
Element.hide("right_sep1");
}
};
this.updateTitlebar=function(){
var _72a="";
var _72b=$FolderList.getNewMessages(CFG_FOLDER_INBOX);
if(_72b>0){
_72a="("+_72b+") - ";
}
_72a+=username+" - Webmail";
window.document.title=_72a;
};
this.enableWindow=function(_72c,_72d){
if(_72c){
Webmail.enable();
}else{
Webmail.disable();
}
};
};
window.onerror=function(desc,page,line,chr){
if(line!=0&&desc!="Error loading script"){
alert(desc+"\n\n"+page+" (line "+line+")");
}
return true;
};
function navigateExternal(url){
url=unescape(url);
if(window.onbeforeunload){
Webmail.disableCloseWarning();
window.location=url;
Webmail.enableCloseWarning();
}else{
window.location=url;
}
}
function L(k){
if(window.__L){
var arr=window.__L;
}else{
if(opener&&opener.__L){
var arr=opener.__L;
}else{
if(parent&&parent.__L){
var arr=parent.__L;
}else{
if(window.$Bootstrap&&$Bootstrap.getAppWindow()){
var arr=$Bootstrap.getAppWindow().__L;
}else{
var arr=[];
}
}
}
}
var l=arr[k]||"";
for(i=1,ii=arguments.length;i<ii;i++){
var _736=String(arguments[i]);
l=l.replace("%s",_736);
}
return l;
}
function report_bug(){
$Dispatcher.compose("","","","","webmail_feedback@mailtrust.com");
}
}
if($Bootstrap.notLoaded("f7467925b39247046cc9631c3ea521aa")){
$JavascriptPreload=Webmail.JavascriptPreload={_groups:["combo/calendar","combo/settings","combo/dialogs","combo/contacts","combo/calendar_eventform","combo/tasks"],initialize:function(){
this._loadNext();
},loadNext:null,_loadNext:function(){
if(this._groups.length==0){
return;
}
var _737=this._groups.shift();
REQUIRE(_737,{lazy:true,callback:this.cbLoadNext.bind(this),static_domain:true});
},cbLoadNext:function(){
this._loadNext();
}};
}
if($Bootstrap.notLoaded("3070c25757f0584279999074aaefef43")){
Framework.register("Webmail");
$Controller=Webmail.Controller=new function(){
this._active_module=null;
this._active_module_key=null;
this._last_resize=0;
this._modules={};
this._module_containers={};
this._module_loads={};
this._working_elem=null;
this._resize_timer=null;
this._resize_init=true;
this.assertCompatibility=function(){
if(!Ajax.getTransport()){
window.location="p/nocompat.html";
}
};
this.initialize=function(){
this.assertCompatibility();
if($Settings.isSoundEnabled()){
setTimeout(function(){
Webmail.UI.Sounds.initialize();
},100);
}
try{
document.execCommand("BackgroundImageCache",false,true);
}
catch(e){
}
_w=window;
_d=document;
_b=_d.body;
Event.observe(window,"resize",this.resize,this);
$Cache.initialize();
$Template.initialize();
$KeyEventManager.initialize();
$JavascriptPreload.initialize();
if(wack.Browser.is_ie){
Draggable.prototype._updateDrag=Draggable.prototype.updateDrag;
Draggable.prototype.updateDrag=function(_738,_739){
$("core_hack").update("...");
this._updateDrag(_738,_739);
};
}
this._initMainMenu();
$("splash").hide();
$("core").setStyle({position:"static",top:"0"});
this.resize();
$("Dialogs_tray").show();
$$SubMenu.__preload();
$$SubMenu.__load();
this._modules["Search"]=$$Search;
this._initModule("Search");
var _73a=window.location.hash;
if(_73a&&_73a!="#"){
window.location.hash="#";
}else{
$$MainMenu.loadSection("email");
}
Webmail.Calendar.Reminders.initialize();
Webmail.Contacts.Init.initialize();
$Mail.initialize();
this.resize();
var _73b=10*60*1000;
var _73c=CFG_SESS_EXPIRES*60*1000;
setInterval("Webmail.extendSession()",_73c-_73b);
if(wack.Browser.is_ie){
window.onbeforeprint=function(){
$Dispatcher.publish("Webmail.beforePrint");
};
window.onafterprint=function(){
$Dispatcher.publish("Webmail.afterPrint");
};
}
};
this.loadModule=function(key,args,_73f){
$UI.clearStatus();
_73f=_73f||false;
if(!_73f&&key==this._active_module_key){
return false;
}
if(!this._modules[key]){
var _740=key.split(".");
var obj=Webmail.Modules;
var _742=true;
for(i=0,ii=_740.length;i<ii;i++){
if(obj[_740[i]]){
obj=obj[_740[i]];
}else{
_742=false;
break;
}
}
if(_742&&obj.exists!==false){
this._modules[key]=obj;
}else{
REQUIRE("combo/"+key.toLowerCase());
obj=Webmail.Modules;
for(i=0,ii=_740.length;i<ii;i++){
obj=obj[_740[i]];
}
this._modules[key]=obj;
}
}
var _743=function(){
$Controller.loadModule(key,args,_73f);
};
if(!this._unloadActiveModule(_743)){
return false;
}
this._initModule(key);
if(this._working_elem){
this._working_elem.style.cursor="";
}
var _744=this._module_containers[key];
var _745=this._modules[key];
var _746=Object.extend({disable_scroll:false,help_id:"",enable_print:false,enable_search:false},_745.config||{});
Webmail.setRightScrollEnable(!_746.disable_scroll);
$Help.setPage(_746.help_id);
if(_746.enable_search){
$Search.enable();
}else{
$Search.disable();
}
if(key!=$$Search.module_key){
$$Search.reset();
if(window.$$AdvSearch){
$$AdvSearch.close(true);
}
}
this._last_module_key=this._active_module_key;
this._active_module_key=key;
this._active_module=_744;
Element.show(_744);
if(_745.__load){
_745.__load(args);
}
if(_745.__resize){
var arg=(key=="MessageList"?true:null);
_745.__resize(arg);
}
return true;
};
this.backModule=function(){
if(this._last_module_key){
this.loadModule(this._last_module_key);
}
};
this.registerModule=function(key,_749){
if(!this._modules[key]){
this._modules[key]=_749;
if(_749.config&&_749.config.use_navmenu){
$$SubMenu.registerSection(key,_749);
}
}
};
this.resize=function(e){
if(e){
if(wack.Browser.is_ie&&(this._resize_timer||this._resize_init)){
this._resize_init=false;
if(this._resize_timer){
window.clearTimeout(this._resize_timer);
}
this._resize_timer=window.setTimeout("$Controller.resize.bind($Controller)()",50);
return;
}
}
$Controller._resize_init=true;
if(window.$Dialogs){
for(i=0;i<=$Dialogs.next_id;i++){
var _74b=$("Dialogs_prompt_"+i);
if(_74b&&_74b.maximized){
$Dialogs.maximize(_74b,true);
}
}
}
var wm=Webmail;
var wc=this;
var body=_ge("core_body");
var _74f=_ge("core_header");
var _750=_ge("core_footer");
var left=_ge("core_left");
var _752=_ge("core_right");
var _753=wack.Browser.getDimensions();
var _754=_753[0];
var _755=_753[1];
var _756=_74f.offsetHeight||0;
var _757=_750.offsetHeight||0;
var _758=_754-body.offsetTop-_757;
Element.setDimensions(body,{height:_758});
Webmail.appHeight(_754);
Webmail.appWidth(_755);
Webmail.leftHeight(_758);
Webmail.leftWidth(left.offsetWidth);
Webmail.rightHeight(_758-20);
Webmail.rightWidth(_755-left.offsetWidth-34);
var _759=(wack.Browser.is_ie?32:36);
Element.setDimensions(_752,{width:Webmail.rightWidth()+_759});
var _75a=$("core_left_handle");
_75a.orig_top=body.offsetTop;
Element.setStyle(_75a,{height:_758+"px",top:_75a.orig_top+"px"});
$$SubMenu.__resize();
var _75b=this._modules[this._active_module_key];
if(_75b&&_75b.__resize){
_75b.__resize();
}
};
this.setWorkingElement=function(elem){
elem=$(elem);
if(!elem){
return;
}
this._working_elem=elem;
elem.style.cursor="wait";
};
this.getCurrentModule=function(){
return this._active_module_key;
};
this._boundLeftMenu=function(_75d){
if(_75d<10){
return false;
}
if(_75d>(Webmail.appWidth()/2)){
return false;
}
return true;
};
this._initMainMenu=function(){
var _75e=$$MainMenu.__preload();
$("core_nav").append(_75e);
$$MainMenu.__load();
};
this._initModule=function(key){
if(!this._module_loads[key]){
var _760=this._modules[key].__preload();
if(_760){
Element.hide(_760);
Element.append("core_right",_760);
this._module_containers[key]=_760;
this._module_loads[key]=true;
}
}
};
this._setLeftWidth=function(_761){
Element.setStyle("core_left",{width:_761+"px"});
$Prefs.setUserPref("left_width",_761,true);
};
this._unloadActiveModule=function(_762){
if(!this._active_module_key||!this._active_module){
return true;
}
var key=this._active_module_key;
var _764=this._modules[key];
var _765=true;
if(_764.__unload){
_765=_764.__unload(_762);
}
if(_765!==false){
Element.hide(this._active_module);
}
return (_765!==false);
};
};
}
if($Bootstrap.notLoaded("38ab91240a6fe3135e55c37563626308")){
Framework.register("Webmail");
$WebmailData=$Data=Webmail.Data=new function(){
this.next_id=0;
this.iframes=[];
this.forms=[];
this._pending_batch=false;
this._batch=null;
this._batch_queue=[];
this._registered_jobs={};
this.doBatch=function(func,_767){
if(this._pending_batch){
this._batch_queue.push([func,_767]);
return;
}
var _768=new $Data.Batch(_767);
this._startBatch(_768);
func();
this._endBatch();
};
this.request=function(call,_76a){
var job=new $Data.Job(call,$A(arguments).slice(2)||[],_76a);
if(job.form_group){
job.form_group=$(job.form_group);
this._requestUpload(job.call,job.args,{callback:job.callback,errcapture:job.errcapture,form_group:job.form_group,max_filesize:job.max_filesize,reset:job.reset});
}else{
if(this._pending_batch){
this._batch.addJob(job);
}else{
var _76c=new $Data.Batch();
_76c.addJob(job);
_76c.send();
return _76c;
}
}
};
this.registerJob=function(_76d,job){
if(!this._registered_jobs[job.call]){
this._registered_jobs[job.call]={};
}
var temp=this._registered_jobs[job.call][job.call_group]||[null,null];
var _770=temp[0];
var _771=temp[1];
if(_770&&!_770.completed&&_771&&!_771.completed){
_770.abortJob(_771);
}
this._registered_jobs[job.call][job.call_group]=[_76d,job];
};
this._completeUploadRequest=function(id){
var _773=$("Data_request_iframe_"+id);
var form=$("Data_request_form_"+id);
if(!_773||!form){
return;
}
var _775=form._errcapture;
var _776=form._callback;
var _777=_773.contentWindow.response;
if(form._reset){
form.reset();
}
var _778=form.parentNode;
_778.insertBefore(form.lastChild,form);
Element.remove(form);
Element.remove(_773);
_776(_777);
};
this._getForm=function(){
var form=null;
for(var i=0,ii=this.forms.length;i<ii;i++){
if(Element.isOrphan(this.forms[i])){
form=this.forms[i];
break;
}
}
if(!form){
form=Element.createHtml("<form enctype=\"multipart/form-data\"></form>");
this.forms.push(form);
}
return form;
};
this._getIframe=function(){
var _77b=null;
for(var i=0,ii=this.iframes.length;i<ii;i++){
if(Element.isOrphan(this.iframes[i])){
_77b=this.iframes[i];
break;
}
}
if(!_77b){
_77b=Element.create("iframe");
this.iframes.push(_77b);
}
if(wack.Browser.is_safari){
_77b.style.position="absolute";
_77b.style.height=_77b.style.width="1px";
_77b.style.top=_77b.style.left="-1000px";
}else{
_77b.hide();
}
_77b.src=Webmail.getBlankUrl();
return _77b;
};
this._requestUpload=function(call,args,_77f){
_77f=Object.extend({callback:Prototype.emptyFunction,errcapture:WERR_FATAL,form_group:null,max_filesize:null,reset:false},_77f||{});
var id=this.next_id++;
var _781=this._getIframe();
var _782="Data_request_iframe_"+id;
Element.append(_77f.form_group,_781);
if(wack.Browser.is_ie){
_781.outerHTML="<iframe id=\""+_782+"\" name=\""+_782+"\" "+"src=\""+Webmail.getBlankUrl()+"\" style=\"display:none;\"></iframe>";
}else{
_781.id=_782;
_781.name=_782;
}
var form=this._getForm();
form.id="Data_request_form_"+id;
form.method="post";
form.target=_782;
form.action=Webmail.getBaseUri()+"router.php?files=1&id="+id;
form._errcapture=_77f.errcapture;
form._callback=_77f.callback;
form._reset=_77f.reset;
var _784="";
if(_77f.max_filesize){
_784="<input type='hidden' name='MAX_FILE_SIZE' "+"value=\""+_77f.max_filesize+"\" />";
}
Element.update(form,["<input type=\"hidden\" name=\"",CFG_SESSION_NAME,"\" value=\"",Webmail.getSessionId(),"\" />",_784,"<input type=\"hidden\" name=\"call\" value=\"",call,"\" />","<input type=\"hidden\" name=\"args\" value=\"\" />"].join(""));
form.lastChild.value=JSON.stringify(args);
var _785=_77f.form_group.parentNode;
_785.insertBefore(form,_77f.form_group);
Element.append(form,_77f.form_group);
form.submit();
};
this._startBatch=function(_786){
this._pending_batch=true;
this._batch=_786;
};
this._endBatch=function(_787){
this._batch.send();
this._pending_batch=false;
if(this._batch_queue.length>0){
this.doBatch.apply(this,this._batch_queue.pop());
}
};
};
}
if($Bootstrap.notLoaded("31509ea19a4179b92799319b634257d1")){
Framework.register("Webmail.Data");
Webmail.Data.Job=Class.create();
Webmail.Data.Job.prototype={aborted:false,completed:false,call:"",args:[],callback:Prototype.emptyFunction,err_callback:Prototype.emptyFunction,errcapture:null,form_group:null,call_group:null,handle_conn_err:true,reset:false,background:false,cluster:null,initialize:function(call,args,_78a){
this.call=call;
this.args=args;
this.errcapture=WERR_FATAL;
if(!_78a.request_type){
_78a.request_type=CFG_AJAX_WRITE;
}
if(_78a.request_type==CFG_AJAX_READ){
if(!_78a.request_retries){
_78a.request_retries=1;
}
}else{
_78a.request_type==CFG_AJAX_WRITE;
if(!_78a.request_retries){
_78a.request_retries=0;
}
}
Object.extend(this,_78a||{});
},abort:function(){
this.aborted=true;
this.callback=Prototype.emptyFunction;
},getCallInfo:function(){
return {call:this.call,args:this.args};
}};
}
if($Bootstrap.notLoaded("d02dc19266f6abf5cd3d0a0e7c7cfb3c")){
Framework.register("Webmail.Data");
Webmail.Data.Batch=Class.create();
Webmail.Data.Batch._background_queue=[];
Webmail.Data.Batch._pending_count=0;
Webmail.Data.Batch.prototype={aborted:false,completed:false,exception_occured:false,pending:false,callback:Prototype.emptyFunction,err_callback:Prototype.emptyFunction,handle_conn_err:null,jobs:[],resume_on_err:false,background:false,cluster:null,uid:null,retries_remaining:0,initialize:function(_78b){
this.jobs=[];
Object.extend(this,_78b||{});
},abort:function(){
this.aborted=true;
if(this.request){
this.request.transport.abort();
}
for(var i=0;i<this.jobs.length;i++){
var job=this.jobs[i];
if(!job.aborted){
job.abort();
}
}
this._done();
},abortJob:function(job){
for(var i=0;i<this.jobs.length;i++){
if(this.jobs[i]==job){
this.jobs[i].abort();
break;
}
}
if(this._getNumActiveJobs()==0){
this.abort();
}
},addJob:function(job){
if(this.jobs.length==0){
this.retries_remaining=job.request_retries;
}else{
if(job.request_retries<this.retries_remaining){
this.retries_remaining=job.request_retries;
}
}
this.jobs.push(job);
},getCalls:function(){
var _791=[];
for(var i=0,ii=this.jobs.length;i<ii;i++){
_791.push(this.jobs[i].call);
}
return _791;
},getQueryString:function(){
var _793=JSON.stringify(this.jobs.collect(function(job){
return job.getCallInfo();
}));
var _795={type:"batch",roe:this.resume_on_err,jobs:_793};
_795[CFG_SESSION_NAME]=Webmail.getSessionId();
return $H(_795).toQueryString();
},getResponse:function(){
},handleConnErr:function(){
if(this.handle_conn_err!==null){
return this.handle_conn_err;
}else{
for(var i=0;i<this.jobs.length;i++){
if(this.jobs[i].handle_conn_err){
return true;
}
}
return false;
}
},send:function(){
if(this.jobs.length==0){
this._finalize();
return;
}
for(var i=0;i<this.jobs.length;i++){
if(this.jobs[i].background){
this.background=true;
}
if(this.jobs[i].cluster!==null){
this.cluster=this.jobs[i].cluster;
}
if(this.jobs[i].call_group){
$Data.registerJob(this,this.jobs[i]);
}
}
if(!this.background){
$Data.Batch._pending_count++;
this._doSend();
return;
}
this.uid=""+(new Date).getTime()+""+Math.random();
$Data.Batch._background_queue.push(this);
if($Data.Batch._pending_count<2&&$Data.Batch._background_queue.length==1){
this._doSend();
}
},_done:function(){
this.pending=false;
if(this.background){
for(var i=0,ii=$Data.Batch._background_queue.length;i<ii;i++){
if($Data.Batch._background_queue[i].uid=this.uid){
$Data.Batch._background_queue.remove(i);
break;
}
}
}else{
$Data.Batch._pending_count--;
}
if($Data.Batch._background_queue.length>0&&$Data.Batch._pending_count<2){
var _799=$Data.Batch._background_queue[0];
if(!_799.pending){
_799._doSend();
}
}
},_doSend:function(_79a){
_79a=_79a||false;
this.pending=true;
if(_79a){
this.retries_remaining--;
}
var _79b=this.getCalls().join("/");
var url=Webmail.getBaseUri();
if(this.cluster!==null){
url=url+this.cluster+"/";
}
url=url+"router/"+_79b;
this.request=new Ajax.Request(url,{method:"post",parameters:this.getQueryString(),onSuccess:this.cbSuccess.bind(this),onFailure:this.cbFailure.bind(this),onException:this.cbException.bind(this)});
},_finalize:function(){
this.callback(this);
this.completed=true;
},_finalizeError:function(_79d){
var _79d=_79d||false;
for(var i=0;i<this.jobs.length;i++){
this.jobs[i].err_callback(_79d);
}
this.err_callback(_79d);
this.completed=true;
},_getNumActiveJobs:function(){
return this.jobs.length-this._getNumAbortedJobs();
},_getNumAbortedJobs:function(){
var _79f=0;
for(var i=0;i<this.jobs.length;i++){
if(this.jobs[i].aborted){
_79f++;
}
}
return _79f;
},_retryBatch:function(){
},cbSuccess:function(_7a1){
if(this.aborted){
return;
}
try{
var _7a2=false;
var _7a3=_7a1.responseText.length;
var _7a4=_7a1.responseText.substring(_7a3-CFG_AJAX_CONFIRMATION.length,_7a3);
if(_7a3==0||_7a4!=CFG_AJAX_CONFIRMATION){
if(this.retries_remaining>0){
this._doSend(true);
return;
}else{
_7a2=true;
}
}
this._done();
if(!_7a2){
}else{
}
var s=new Date;
var _7a6=_7a1.responseText;
var tmp=false;
if(false&&this.jobs.length==1&&this.jobs[0].call=="MessageView.getData"){
tmp=_7a6;
var pos=_7a6.indexOf("///-#-");
_7a6=_7a6.slice(0,pos);
var body=tmp.slice(pos+6);
}
eval("var res_obj = "+_7a6);
if(tmp){
res_obj[0].body=body;
}
}
catch(e){
if(this.handleConnErr()){
var _7aa="";
for(var i=0,ii=this.jobs.length;i<ii;i++){
_7aa+=this.jobs[i].call+"\n"+Debug.dump(this.jobs[i].args)+"\n";
}
var _7ac=e.name+". "+e.message+"\n----------------\nStatus: "+_7a1.status+"\n----------------\nResponse: "+_7a1.responseText+"\n----------------\nCalls: "+_7aa;
$UI.clearStatus();
Webmail.enable();
$UI.error(L("E.Unknown"),null,{technical:_7ac});
}
this._finalizeError(this.handleConnErr());
return;
}
var _7ad=false;
for(var i=0;i<res_obj.length;i++){
if(this.jobs[i].aborted){
continue;
}
if(res_obj[i]&&res_obj[i].exception){
this.exception_occured=true;
this.exception=res_obj[i].exception;
}
if(res_obj[i].exception&&((res_obj[i].level&this.jobs[i].errcapture)>0)){
try{
$UI.clearStatus();
}
catch(e){
}
if(res_obj[i].code==ERROR_LOGGED_OFF){
Webmail.handleLoggedOff();
}else{
if($UI.error){
$UI.error(res_obj[i].message);
}else{
alert("Exception: ("+res_obj[i].code+") "+res_obj[i].message);
}
}
_7ad=true;
}else{
this.jobs[i].callback(res_obj[i]);
}
this.jobs[i].completed=true;
}
this._finalize(_7ad);
},cbFailure:function(obj,_7af){
this._done();
if(this.aborted){
return;
}
$UI.clearStatus();
if(this.handleConnErr()){
var _7b0=[12029,12152].isMember(obj.status);
if(_7b0){
$UI.error(L("E.Connection"));
}else{
$UI.error(L("E.UnknownCode",obj.status));
}
}
this._finalizeError(this.handleConnErr());
},cbException:function(obj,_7b2){
this._done();
if(this.aborted){
return;
}
$UI.clearStatus();
if(_7b2.name&&_7b2.message&&_7b2.fileName&&_7b2.lineNumber){
alert(_7b2.name+": "+_7b2.message+"\n\n"+_7b2.fileName+" (line "+_7b2.lineNumber+")");
}else{
if(_7b2&&_7b2.number&&_7b2.number!=-2147418094){
alert("Unknown error:"+Debug.dump(_7b2));
}
}
this._finalizeError(true);
}};
}
if($Bootstrap.notLoaded("ae0455e2898d8483f4a3afadeaeb5d0d")){
Framework.register("Webmail");
$Prefs=Webmail.Prefs=new function(){
this._prefs={user:$Preload["Prefs.user"],server:$Preload["Prefs.server"],domain:$Preload["Prefs.domain"]};
this.get=function(key,def,_7b5){
if(!defined(_7b5)){
return (this.getUserPref(key,def));
}else{
if(typeof _7b5!="object"){
_7b5=[_7b5];
}
for(var i=0,ii=_7b5.length;i<ii;i++){
switch(_7b5[i]){
case "DOMAIN":
var res=this.getDomainPref(key,"undefined");
break;
case "SERVER":
var res=this.getServerPref(key,"undefined");
break;
case "USER":
var res=this.getUserPref(key,"undefined");
break;
default:
var res="undefined";
}
if(res!="undefined"){
return res;
}
}
return def;
}
};
this.getDomainPref=function(key,def){
if(!Webmail.isAppWindow()){
return $Bootstrap.getAppWindow().$Prefs.getDomainPref(key,def);
}
if(typeof (def)=="undefined"){
def="";
}
if(!this._prefs||!this._prefs.domain){
return def;
}
if(typeof (this._prefs.domain[key])!="undefined"&&this._prefs.domain[key]!=null){
return this._prefs.domain[key];
}
return def;
};
this.getServerPref=function(key,def){
if(!Webmail.isAppWindow()){
return $Bootstrap.getAppWindow().$Prefs.getServerPref(key,def);
}
if(typeof (def)=="undefined"){
def="";
}
if(!this._prefs||!this._prefs.server){
return def;
}
var _7bc=this._prefs.server[key];
if(typeof (_7bc)!="undefined"&&_7bc!=null){
return _7bc;
}
return def;
};
this.getUserPref=function(key,def){
if(!Webmail.isAppWindow()){
return $Bootstrap.getAppWindow().$Prefs.getUserPref(key,def);
}
if(typeof (def)=="undefined"){
def="";
}
if(!this._prefs||!this._prefs.user){
return def;
}
var _7bf=this._prefs.user;
if(typeof (_7bf[key])!="undefined"&&_7bf[key]!=null){
return _7bf[key];
}
return def;
};
this.setUserPref=function(key,_7c1,_7c2,_7c3){
if(!Webmail.isAppWindow()){
return $Bootstrap.getAppWindow().$Prefs.setUserPref(key,_7c1,_7c2);
}
if(!this._prefs.user){
this._prefs.user={};
}
if(typeof (_7c1)=="string"){
_7c1=_7c1.urlDecode();
}
this._prefs.user[key]=_7c1;
if(_7c2){
$Data.request("Prefs.set",{callback:_7c3||Prototype.emptyFunction},"",key,_7c1,"PREF_USER");
}
};
this.isAutocompleteEnabled=function(){
return $Settings.isAutocompleteEnabled();
};
this.updateUserPref=function(key,_7c5){
this.setUserPref(key,_7c5);
};
};
}
if($Bootstrap.notLoaded("ff0d685da10b709f6c010bfdf14f1887")){
$Dispatcher=Webmail.Dispatcher=new function(){
this._subscriptions={};
this._allowable_subscriptions=["Calendar.changeColor","Calendar.Events.clearCache","Calendar.Events.deleteEvent","Calendar.Events.saveEvent","Calendar.Events.removeClientEvent","Calendar.Events.updateClientEvent","Calendar.Events.inviteRespond","Calendar.Shared.SubMenu.Expand","Calendar.Shared.SubMenu.Collapse","Calendar.toggleCalendar","Calendar.updateCalendars","Calendar.beginUpdateCalendars","CalendarGroup.startGetEventOccurrencesByRange","CalendarGroup.endGetEventOccurrencesByRange","Core.RightClick","Contacts.addFreqContacts","Contacts.removeFreqContacts","Email.Folders.update","Folders.pending_call","Folders.setActive","Folders.status_change","Folders.update","Folders.newUnreadMessages","Message.change","Message.move","MessageList.page","Notes.delete","Notes.save","Settings.change.*","Tasks.deleteLists","Tasks.updateTaskLists","Webmail.afterPrint","Webmail.beforePrint"];
for(var i=0,ii=this._allowable_subscriptions.length;i<ii;i++){
this._subscriptions[this._allowable_subscriptions[i]]=[];
}
this.checkMail=function(){
$UI.showStatus(L("Mail.St.Check"));
$Mail.check(function(_7c7){
$UI.clearStatus();
});
};
this.checkExtMail=function(){
Webmail.Controller.loadModule("ExtMail");
};
this.clearActiveFolder=function(){
$$FolderManager.SubMenu.clearActiveFolder();
};
this.compose=function(_7c8,_7c9,uid,_7cb,_7cc,_7cd,_7ce,_7cf,_7d0,body){
if(!_7c9){
_7c9=wm_Compose_NEW_MSG;
}
if(_7d0){
_7d0=String(_7d0).urlDecode();
}
if(body){
body=String(body).urlDecode();
}
var _7d2={event:_7c8,action:_7c9,uid:uid,folder:_7cb,to:_7cc,cc:_7cd,bcc:_7ce,msg_arr:_7cf,subject:_7d0,msg_body:body};
Webmail.disable();
$$Compose.createPopup(_7d2,function(){
Webmail.enable();
});
};
this.getFolderIcon=function(_7d3){
return ($$SubMenu.image_root+$$SubMenu.icons.getIconFromFolder(_7d3));
};
this.loadFolder=function(_7d4){
if($MessageList.active()){
if(window.$$AdvSearch){
$$AdvSearch.close();
}
var _7d5={};
if(Keystroke.shift()){
_7d5.break_cache=true;
}
$MessageList.getMessages(_7d4,_7d5,function(_7d6){
this.publish("Folders.setActive",_7d6);
}.bind(this));
}else{
if($MessageList.folder()!=_7d4){
$MessageList.emptyList(_7d4);
}
Webmail.Controller.loadModule("MessageList",_7d4);
}
};
this.publish=function(_7d7){
var _7d8=this._subscriptions[_7d7];
if(!_7d8||_7d8.length==0){
return;
}
var args=$A(arguments).slice(1);
for(var i=0,ii=_7d8.length;i<ii;i++){
_7d8[i].apply(null,args);
}
};
this.purgeFolder=function(_7db){
this.setFolderStatus(_7db,0,0);
if($MessageList.active()){
$MessageList.emptyList(_7db);
if($MessageList.folder()==CFG_FOLDER_TRASH&&!$Settings.isPurgePermanent()){
$MessageList.refillList();
}
}
};
this.setExternalAccounts=function(_7dc){
$$Email.setExternalButton(_7dc);
};
this.setFolderStatus=function(_7dd,_7de,_7df){
$FolderList.setFolderStatus(_7dd,_7de,_7df);
};
this.setMessageRead=function(uid,_7e1,_7e2){
var mb=$$MessageList.dom.getBody();
if(mb.childNodes){
for(var i=0,ii=mb.childNodes.length;i<ii;i++){
var tr=mb.childNodes[i];
if(tr.obj.id()==uid&&tr.obj.folder()==_7e1){
tr.obj.read(_7e2);
}
}
}
};
this.setPreviewPaneClear=function(_7e6){
if($Search.active()){
$$Search.setPreviewPaneClear(_7e6);
return;
}else{
if($MessageList.active()){
$$MessageList.setPreviewPaneClear(_7e6);
return;
}
}
};
this.subscribe=function(_7e7,func){
if(!this._subscriptions[_7e7]){
var _7e9=_7e7.split(".");
_7e9.pop();
var _7ea=_7e9.join(".");
if(this._subscriptions[_7ea+".*"]){
this._subscriptions[_7e7]=[];
}else{
throw ("\""+_7e7+"\" is not a valid subscription");
return;
}
}
this._subscriptions[_7e7].push(func);
};
this.updateMessageList=function(_7eb){
if($MessageList.active()){
if($MessageList.folder()==_7eb){
$MessageList.getMessages(_7eb);
}
}
};
this.updateFolderSizes=function(){
$$FolderManager.updateSizes();
};
};
}
if($Bootstrap.notLoaded("5488c058141b5e53f3e194410f541c03")){
Framework.register("Webmail");
$Settings=Webmail.Settings=new function(){
this.get=function(_7ec,_7ed){
_7ed=_7ed||Prototype.emptyFunction;
$Data.request("Settings.get",{callback:_7ed,request_type:CFG_AJAX_READ},_7ec);
};
this.deleteInviteAfterAction=function(){
var _7ee=$Prefs.getUserPref("delete_invite_after_action","0");
if(_7ee=="1"){
return true;
}
return false;
};
this.getCalendarSharingType=function(){
return $Prefs.getDomainPref("calendar_sharing_type");
};
this.getContactsNameFormat=function(){
return $Prefs.getUserPref("contacts_personal_order",wm_Contacts_NAME_FIRST_LAST);
};
this.getComposeType=function(){
if(wack.Browser.is_safari){
return wm_Settings_COMPOSE_PLAIN;
}
var type=$Prefs.get("compose_window_type","plain");
switch(type){
case "html":
return wm_Settings_COMPOSE_HTML;
case "plain":
return wm_Settings_COMPOSE_PLAIN;
default:
return false;
}
};
this.getDateFormat=function(){
var _7f0=$Prefs.get("date_format",wm_Settings_DATE_AMERICAN,["USER","DOMAIN"]);
return _7f0;
};
this.getDefaultIdentity=function(){
var _7f1=$Prefs.get("compose_default_identity",0);
return _7f1;
};
this.getFontProperties=function(){
var _7f2=$Prefs.getUserPref("compose_font_size",CFG_COMPOSE_FONT_SIZE);
var _7f3={"8pt":1,"10pt":2,"12pt":3,"14pt":4,"18pt":5,"24pt":6,"36pt":7};
var _7f4={family:$Prefs.getUserPref("compose_font_family",CFG_COMPOSE_FONT_FAMILY),size:_7f3[_7f2]||CFG_COMPOSE_FONT_SIZE_HTML,point:_7f2};
return _7f4;
};
this.getHourFormat=function(){
var _7f5=$Prefs.get("hour_format",wm_Settings_HOUR_12,["USER","DOMAIN"]);
return _7f5;
};
this.getIdentities=function(){
var _7f6=$Cache.getValue("identities");
return _7f6;
};
this.getLanguage=function(){
return $Prefs.get("user_language","en_US",["USER","DOMAIN","SERVER"]);
};
this.getSignatures=function(){
var _7f7=$Cache.getValue("signatures");
return _7f7;
};
this.isAutocompleteEnabled=function(){
var _7f8=$Prefs.getUserPref("autocomplete_enabled","1");
var _7f9=(_7f8=="1"||_7f8=="Both");
_7f9=_7f9&&$Custom.isAutocompleteEnabled();
return _7f9;
};
this.isSoundEnabled=function(){
var _7fa=$Prefs.getUserPref("sound_enabled","1");
if(_7fa=="1"){
return true;
}
return false;
};
this.isDeletePermanent=function(set){
if(typeof set=="undefined"){
return ($Prefs.getUserPref("mail_delete_to_trash",1)==1?false:true);
}else{
$Prefs.setUserPref("mail_delete_to_trash",!set);
}
};
this.isHelpEnabled=function(){
if(Webmail.isDev()){
return true;
}
var _7fc=($Prefs.get("help_toggle",false,["SERVER","DOMAIN","USER"]));
if(_7fc==true){
return true;
}else{
return false;
}
};
this.isPurgePermanent=function(set){
if(typeof set=="undefined"){
return ($Prefs.getUserPref("mail_purge_to_trash",1)==1?false:true);
}else{
$Prefs.setUserPref("mail_purge_to_trash",!set);
}
};
this.isPurgeToTrash=function(){
return ($Prefs.getUserPref("mail_purge_to_trash",1)==1?true:false);
};
this.isSettingsEnabled=function(){
return Webmail.getGlobal("show_settings");
};
this.isSpellcheckDisabled=function(){
var _7fe=$Prefs.getUserPref("disable_browser_spellcheck",true);
if(_7fe==0){
_7fe=false;
}
return _7fe;
};
this.load=function(){
if(!this.settings_widget){
$UI.showStatus();
$Bootstrap.getAppWindow().REQUIRE("combo/settings");
this.settings_widget=$Widgets.Settings.factory();
}
this.settings_widget.show();
};
this.getNotesSort=function(){
return $Prefs.get("notes_sort",wm_Notes_SORT_SUBJECT|wm_Notes_SORT_ASC);
};
this.setComposeType=function(type){
$Prefs.setUserPref("compose_window_type",(type==wm_Settings_COMPOSE_PLAIN?"plain":"html"),true);
};
this.setContactsNameFormat=function(_800,_801){
var _802;
if(_801){
_802=true;
}else{
_802=false;
}
$Prefs.setUserPref("contacts_personal_order",_800,_802,_801);
};
this.setNotesSort=function(sort){
$Prefs.setUserPref("notes_sort",sort,true);
};
this.showFrequentContacts=function(){
var val=$Prefs.getUserPref("compose_show_frequent_contacts",0);
if(val==1){
return true;
}else{
return false;
}
};
this.usePreviewPane=function(){
return ($Prefs.getUserPref("disp_use_previewpane",1)==1?true:false);
};
this.cbChangeIdentities=null;
this._cbChangeIdentities=function(_805,_806){
$Cache.setValue("identities",_806);
};
this.cbChangeSignatures=null;
this._cbChangeSignatures=function(_807,_808){
$Cache.setValue("signatures",_808);
};
};
Object.bindCallbacks($Settings);
$Dispatcher.subscribe("Settings.change.identities",$Settings.cbChangeIdentities);
$Dispatcher.subscribe("Settings.change.signatures",$Settings.cbChangeSignatures);
}
if($Bootstrap.notLoaded("24da82c06fd8efed944b4efe7a51a8b9")){
Framework.register("Webmail");
$Custom=Webmail.Custom={header_content:$Preload["Custom.header_content"],footer_content:$Preload["Custom.footer_content"],links_title:$Preload["Custom.links_title"],allow_autocomplete:$Preload["Custom.allow_ac"],allow_blacklist:$Preload["Custom.allow_blacklist"],allow_change_password:$Preload["Custom.allow_change_password"],allow_compose_html:$Preload["Custom.compose_html"],allow_mail_forward:$Preload["Custom.allow_mail_forward"],allow_safelist:$Preload["Custom.allow_safelist"],allow_settings:$Preload["Custom.allow_settings"],allow_spam_options:$Preload["Custom.allow_spam_options"],allow_var:$Preload["Custom.allow_var"],createLinksSection:function(_809){
var _80a=Element.createHtml(["<div class=\"section\">","<div class=\"header\">","<h3>",this.links_title,"</h3>","</div>","<ul class=\"SubMenu_tree\"></ul>","</div>"].join(""));
var list=$(_80a.getElementsByTagName("ul")[0]);
for(var i=0,ii=_809.length;i<ii;i++){
var icon=_809[i].icon||"check-mail.gif";
var _80e=_809[i].display;
var _80f=Element.create("li");
_80f.update(["<img style=\"visibility:hidden;\" src=\"images/blank.gif\" />","<a href=\"javascript:void(0);\" ","style=\"background-image:url(images/",icon,");\">","<span>",_80e,"</span></a>",].join(""));
_80f.data={url:_809[i].url,popup:_809[i].popup,popup_height:_809[i].popup_height,popup_width:_809[i].popup_width};
var link=_80f.getByTag("a")[0];
Event.observe(link,"click",this.evClickLink,this);
list.append(_80f);
}
return _80a;
},getExtraLinks:function(){
return $LeftMenu.links||[];
},getFooterHeight:function(){
var _811=parseInt($Prefs.getServerPref("footer_height",0));
if(isNaN(_811)){
_811=0;
}
return _811;
},isAutocompleteEnabled:function(){
return $Bootstrap.getAppWindow().$Custom.allow_autocomplete;
},isBlacklistEnabled:function(){
return $Bootstrap.getAppWindow().$Custom.allow_blacklist;
},isChangePasswordEnabled:function(){
if($Bootstrap.getAppWindow().Webmail.isDemo()){
return false;
}
return $Bootstrap.getAppWindow().$Custom.allow_change_password;
},isComposeHtmlEnabled:function(){
return $Bootstrap.getAppWindow().$Custom.allow_compose_html;
},isMailForwardEnabled:function(){
return $Bootstrap.getAppWindow().$Custom.allow_mail_forward;
},isSafelistEnabled:function(){
return $Bootstrap.getAppWindow().$Custom.allow_safelist;
},isSettingsEnabled:function(){
return $Bootstrap.getAppWindow().$Custom.allow_settings;
},isSpamOptionsEnabled:function(){
return $Bootstrap.getAppWindow().$Custom.allow_spam_options;
},isVacationEnabled:function(){
return $Bootstrap.getAppWindow().$Custom.allow_var;
},evClickLink:function(e){
var _813=Event.findElement(e,"li");
var data=_813.data;
var url=data.url;
var _816=data.popup;
if(_816){
var _817=data.popup_height;
var _818=data.popup_width;
if(_817&&_818){
wack.Browser.popup(url,_817,_818,0,0,true,true);
}else{
window.open(url,"");
}
}
}};
}
if($Bootstrap.notLoaded("7dbf19d2a97cb1a672232ff47e272d6a")){
Framework.register("Webmail");
$UI=Webmail.UI={_status_counter:new Object(),_status_no_key:"__no_key__",_timer:null,_tab_index:1,clearStatus:function(_819){
_819=Object.extend({matching_key:null},_819||{});
if(this._timer){
window.clearTimeout(this._timer);
}
var _81a=true;
if(_819.matching_key){
var _81b=_819.matching_key;
if(this._status_counter[_81b]>0){
this._status_counter[_81b]--;
if(this._status_counter[_81b]==0){
delete this._status_counter[_81b];
}
}
for(var key in this._status_counter){
if(this._status_counter[key]>0){
_81a=false;
break;
}
}
}else{
delete this._status_counter;
this._status_counter=new Object();
}
if(_81a){
Element.hide("loading");
}
},confirm:function(_81d,_81e){
var _81f=new $DialogsPrompt(L("L.Confirm"),_81d,false,{cancel:false});
_81f.addButton(L("L.Yes"),_81e,true);
_81f.addButton(L("L.No"),Prototype.emptyFunction);
_81f.show();
},createLink:function(_820,opts){
var _822=Object.extend({class_name:false,id:false,styles:false},opts||{});
var _823="<a href=\"#\"";
if(_822.id){
_823+=" id=\""+_822.id+"\"";
}
if(_822.class_name){
_823+=" class=\""+_822.class_name+"\"";
}
if(_822.styles){
_823+=" style=\""+_822.styles+"\"";
}
if(typeof _820=="string"){
_823+=">"+_820+"</a>";
}else{
_823=Element.createHtml(_823+"></a>");
Element.append(_823,_820);
}
return _823;
},disableContainer:function(_824){
if(_824._ui_disabled==true){
return false;
}
var _825=_824.getElementsByTagName("input");
for(var i=0,ii=_825.length;i<ii;i++){
if(!_825[i].disabled){
var type=_825[i].type.toLowerCase();
if(type=="checkbox"||type=="radio"){
_825[i]._ui_disabled=true;
_825[i].disabled=true;
}
}
}
var mask=$UI.Alpha.newLayer("#FFF",50);
var _829=_824.offsetHeight;
var _82a=_824.offsetWidth;
mask.className="screen";
mask.style.height=_829+"px";
mask.style.width=_82a+"px";
mask.style.marginTop=-_829+"px";
var _82b=_824.nextSibling;
if(_82b){
_824.parentNode.insertBefore(mask,_82b);
}else{
_824.parentNode.appendChild(mask);
}
_824._ui_disabled=true;
},enableContainer:function(_82c){
if(!_82c._ui_disabled){
return;
}
var _82d=_82c.getElementsByTagName("input");
for(var i=0,ii=_82d.length;i<ii;i++){
if(_82d[i]._ui_disabled==true){
_82d[i]._ui_disabled=false;
_82d[i].disabled=false;
}
}
_82c._ui_disabled=false;
var mask=_82c.nextSibling;
Element.remove(mask);
},error:function(_830,_831,_832){
REQUIRE("combo/dialogs");
var _831=_831||Prototype.emptyFunction;
var _833=new Webmail.Dialogs.Error(_830,_831,_832);
var _834=_833.show();
return _834;
},isDisabled:function(_835){
return _835._ui_disabled;
},load:function(func,e,tag){
if(wack.Browser.is_safari_1_3){
func();
return;
}
tag=tag||false;
var elem=null;
if(e){
if(tag){
elem=Event.findElement(e,tag);
}else{
elem=Event.element(e);
}
if(elem&&elem.style){
elem.style.cursor="wait";
}
}
var _83a=function(){
Webmail.enable();
if(elem){
elem.style.cursor="";
}
};
Webmail.disable();
window.setTimeout(function(){
try{
func();
_83a();
}
catch(e){
_83a();
throw e;
}
},1);
},setTabIndexes:function(_83b){
for(var i=0,ii=_83b.length;i<ii;i++){
_83b[i].tabIndex=this._tab_index;
this._tab_index++;
}
},showStatus:function(_83d,_83e){
_83e=Object.extend({delay:null,working:true,show_message:false,matching_key:null},_83e||{});
if(_83e.delay){
var _83f=_83e.delay;
delete _83e.delay;
this._timer=window.setTimeout(function(){
$UI.showStatus(_83d,_83e);
},_83f);
return;
}
if(!_83e.working){
this.clearStatus();
return;
}
if(!_83e.show_message){
_83d=L("L.Loading");
}
var _840=$("loading");
Element.update(_840.getElementsByTagName("span")[0],_83d);
Element.show(_840);
if(_83e.matching_key){
if(this._status_counter[_83e.matching_key]){
this._status_counter[_83e.matching_key]++;
}else{
this._status_counter[_83e.matching_key]=1;
}
}else{
this._status_counter[this._status_no_key]=1;
}
}};
}
if($Bootstrap.notLoaded("54c6152bd8f5cdd3a2b6562f40b3ef04")){
Framework.register("Webmail.UI");
$UI.AddRemoveList=function AddRemoveLists(_841,_842,_843){
this._constructor=function(_844,_845,_846){
if(typeof _844=="string"){
this.containerId=_844;
this.container=document.getElementById(this.containerId);
}else{
this.container=_844;
this.containerId=this.container.id?this.container.id:"UnIdAddRemoveList";
}
this.numberOfDestinationLists=(_845)?_845:1;
this.list1DivId=this.containerId+"_List1Div";
this.list2DivId=this.containerId+"_List2Div";
this.list1Id=this.containerId+"_List1Id";
this.list2Id=this.containerId+"_List2Id";
this.list1Name=this.containerId+"_List1Name";
this.list2Name=this.containerId+"_List2Name";
this.addButtonId=this.containerId+"_AddButtonId";
this.addButtonName=this.containerId+"_AddButtonName";
this.removeButtonId=this.containerId+"_RemoveButtonId";
this.removeButtonName=this.containerId+"_RemoveButtonName";
this.captionName=this.containerId+"_CaptionName";
this.captionId=this.containerId+"_CaptionId";
this.list1=null;
this.list2=new Array();
this.addButton=new Array();
this.removeButton=new Array();
this.selectedItems=new Object();
this.itemData=new Array();
this.key="UnnamedKey";
this.changeListeners=new Array();
this.option={wording:{add:">",remove:L("L.Remove")},caption:new Array()};
Object.extend(this.option,_846||{});
this._createContent();
};
this._createContent=function(){
var _847=this.option.caption.length>1?this.option.caption[0]:"";
var _848=Element.createHtml(["<div id='",this.list1DivId,"'>","<div name='",this.captionName,"_List1' id='",this.captionId,"_List1'>",_847,"</div>","<select multiple='' name='",this.list1Name,"' id='",this.list1Id,"'>","</select>","</div>"].join(""));
this.list1=_848.getElementsByTagName("select")[0];
this.container.appendChild(_848);
for(var i=0,ii=this.numberOfDestinationLists;i<ii;i++){
var _84a=(i>0)?"_"+(i+1):"";
var _84b=(this.option.caption.length>i+1)?this.option.caption[i+1]:"";
var _84c=Element.createHtml(["<div id='",this.list2DivId,_84a,"'>","<div id='",this.list2DivId,_84a,"_Add'>","<input type='button' name='",this.addButtonName,_84a,"' id='",this.addButtonId,_84a,"' value='",this.option.wording.add,"' />","</div>","<div id='",this.list2DivId,_84a,"_List'>","<div name='",this.captionName,_84a,"' id='",this.captionId,"_List2",_84a,"'>",_84b,"</div>","<select multiple='' name='",this.list2Name,_84a,"'id='",this.list2Id,_84a,"'>","</select><br/>","<input type='button' name='",this.removeButtonName,_84a,"' id='",this.removeButtonId,_84a,"' value='",this.option.wording.remove,"' class='btn' />","</div>","</div>"].join(""));
var list=_84c.getElementsByTagName("select")[0];
var _84e=_84c.getElementsByTagName("input");
var _84f=_84e[0];
var _850=_84e[1];
this.container.appendChild(_84c);
var _851={AddRemoveLists:this,listIndex:i};
Event.observe(_850,"click",function(){
this.AddRemoveLists._evRemoveButtonClick(this.listIndex);
}.bind(_851),this);
Event.observe(_84f,"click",function(){
this.AddRemoveLists._evAddButtonClick(this.listIndex);
}.bind(_851),this);
this.list2.push(list);
this.addButton.push(_84f);
this.removeButton.push(_850);
}
};
this._evRemoveButtonClick=function(_852){
if(!_852){
_852=0;
}
for(var i=0,ii=this.list2[_852].options.length;i<ii;i++){
if(this.list2[_852].options[i].selected){
var key=this.selectedItems[this.list2[_852].options[i].value];
this.selectedItems[this.list2[_852].options[i].value]=null;
if(key!=this.key){
this.list2[_852].remove(i);
--i;
--ii;
}
}
}
Form.Select.transfer(this.list2[_852],this.list1,{sorted:false});
this._evChange();
};
this._evAddButtonClick=function(_855){
if(!_855){
_855=0;
}
for(var i=0,ii=this.list1.options.length;i<ii;i++){
if(this.list1.options[i].selected){
this.selectedItems[this.list1.options[i].value]=this.key;
}
}
Form.Select.transfer(this.list1,this.list2[_855],{sorted:false});
this._evChange();
};
this.setKey=function(key){
this.key=key;
};
this._addItems=function(_858,_859,_85a,_85b){
if(_858==-1){
_858=this.list1.length;
}
if(!this.selectedItems[_85a]){
if(_858<this.list1.length){
this.list1.options[_858].text=_859;
this.list1.options[_858].value=_85a;
this.list1.options[_858].className=_85b;
}else{
var _85c=new Option(_859,_85a);
_85c.className=_85b;
this.list1.options[_858]=_85c;
}
return _858+1;
}else{
return _858;
}
};
this._removeItemsAfter=function(_85d){
while(this.list1.length>_85d){
this.list1.remove(_85d);
}
};
this.clear=function(){
this.clearSourceList();
this.selectedItems=new Object();
};
this.clearDestinationLists=function(){
for(var i=0,ii=this.list2.length;i<ii;i++){
var _85f=this.list2[i];
Form.Select.clear(_85f);
}
};
this.clearSourceList=function(){
this.itemData=new Array();
};
this.refresh=function(){
var _860=0;
for(var i=0,ii=this.itemData.length;i<ii;i++){
var item=this.itemData[i];
_860=this._addItems(_860,item.name,item.value,item.style);
}
this._removeItemsAfter(_860);
};
this.appendItem=function(_863,_864,_865){
this.itemData.push({name:_863,value:_864,style:_865});
};
this.getChosenItems=function(_866){
if(!_866){
_866=0;
}
var out=new Array();
for(var i=0,ii=this.list2[_866].options.length;i<ii;i++){
out.push(this.list2[_866].options[i].value);
}
return out;
};
this.addChosenItems=function(_869,_86a,_86b,key,_86d){
if(!_86d){
_86d=0;
}
this.selectedItems[_86a]=key;
var _86e=new Option(_869.escapeHTML({escape_newlines:false}),_86a);
_86e.className=_86b;
Form.Select.append(this.list2[_86d],_86e);
};
this._evChange=function(){
for(var i=0,ii=this.changeListeners.length;i<ii;i++){
this.changeListeners[i]();
}
};
this.addChangeListener=function(_870){
this.changeListeners.push(_870);
};
this._constructor(_841,_842,_843);
};
}
if($Bootstrap.notLoaded("3b172c74cc31cde115942e1cd6f16bb0")){
Framework.register("Webmail.UI");
Webmail.UI.Alpha=new function(){
this.layers=[];
this.newLayer=function(_871,_872){
var _873=this.getAvailableLayer();
Element.setStyle(_873,{backgroundColor:_871,filter:"Alpha(Opacity="+_872+")",opacity:""+(_872/100)});
return _873;
};
this.getAvailableLayer=function(){
for(var i=0,ii=this.layers.length;i<ii;i++){
if(Element.isOrphan(this.layers[i])){
this.layers[i].id="";
for(var s in this.layers[i].style){
try{
this.layers[i].style[s]="";
}
catch(e){
}
}
return this.layers[i];
}
}
var _876=Element.create("div");
this.layers.push(_876);
return _876;
};
};
}
if($Bootstrap.notLoaded("4862a68741022c90e54abb11a9217ffe")){
Framework.register("Webmail.UI");
Webmail.UI.Grid=$UI_Grid=new function(){
this._hover_color=null;
this._hover_ele=null;
this._selected_class="Grid_selected_row";
this._last_clicked=false;
this._row_drag=false;
this._last_row_selected=null;
this._used_rows=[];
this._free_rows=[];
this._free_cells=[];
this._getRowCheckbox=function(row){
var _878=row.getElementsByTagName("input");
if(_878[0]){
return _878[0];
}else{
return false;
}
};
this._findCheckboxRow=function(elem){
var tag=elem.parentContainer;
while(elem.tagName&&elem.tagName!=tag){
elem=elem.parentNode;
}
if(elem){
return elem;
}
};
this.evHoverColorIn=function(e){
this._hover_ele=Event.findElement(e,"tr");
this.changeHoverColor(this._hover_ele,true);
};
this.evHoverColorOut=function(e){
this.changeHoverColor(this._hover_ele,false);
};
this.addHoverColor=function(ele){
if(!this._hover_color){
temp_hover=Element.create("div",{className:"Grid_hover_row",id:"temp_hover"});
temp_hover.style.display="none";
Element.append(document.body,temp_hover);
this._hover_color=wack.Browser.getCssProperty(temp_hover,"background-color",false);
}
Event.observe(ele,"mouseover",Webmail.UI.Grid.evHoverColorIn.bind(this));
Event.observe(ele,"mouseout",Webmail.UI.Grid.evHoverColorOut.bind(this));
};
this.addCheckDrag=function(_87e,_87f,_880,_881){
var _882;
var _883=function(_884,_885){
$UI_Grid.checkDragCallback(_884,_885);
if(typeof _881=="function"){
_881(_884,_885);
}
};
if(_87e.check_drag){
_882=_87e.check_drag;
}else{
_882=new CheckDrag;
}
for(var i=0;i<_87f.length;i++){
_87f[i].parentContainer=_880;
}
this._selected_class="Grid_selected_row";
_882.load(_87f,_883);
_87e.check_drag=_882;
};
this.checkDragCallback=function(_887,_888){
var row=this._findCheckboxRow(_887);
this.checkSelectedRow(_887,_888);
if(Keystroke.shift()&&this._last_clicked){
var _88a=row;
var _88b=false;
while(_88a.previousSibling){
_88a=_88a.previousSibling;
if(_88a==this._last_clicked){
_88b=true;
}
}
_88a=row;
if(_88b){
while(_88a.previousSibling&&_88a!=this._last_clicked){
_88a=_88a.previousSibling;
this.checkSelectedRow(this._getRowCheckbox(_88a),_888);
}
}else{
while(_88a.nextSibling&&_88a!=this._last_clicked){
_88a=_88a.nextSibling;
this.checkSelectedRow(this._getRowCheckbox(_88a),_888);
}
}
this._last_clicked=row;
}else{
this._last_clicked=row;
}
};
this.checkSelectedRow=function(_88c,_88d,_88e){
if(_88e){
_88c.parentContainer=_88e;
}
var row=this._findCheckboxRow(_88c);
_88c.checked=_88d;
if(row&&row.tagName&&row.tagName.toLowerCase()=="table"){
rows=row.getElementsByTagName("TR");
for(var i=0;i<rows.length;i++){
this.highlightSelectedRow(rows[i],_88d);
}
}else{
this.highlightSelectedRow(row,_88d);
}
return;
};
this.changeHoverColor=function(row,_892){
if(_892==true){
if($MessageList.active()){
row.style.cursor="pointer";
}
row.style.backgroundColor=this._hover_color;
}else{
row.style.backgroundColor="";
}
};
this.clearCheckedRows=function(_893){
var rows=_893.getElementsByTagName("tr");
for(var i=0;i<rows.length;i++){
rows[i].checked=false;
this.highlightSelectedRow(rows[i],false);
}
};
this.clearContent=function(grid){
var _897=grid.content_cell;
var rows=_897.rows;
for(var i=rows.length-1;i>=0;i--){
var _89a=rows[i].cells;
for(var j=_89a.length-1;j>=0;j--){
var _89c=_89a[j];
_89c.innerHTML="";
_89c.val="";
this._free_cells.push(_89c);
rows[i].removeChild(_89c);
}
_897.removeChild(rows[i]);
}
};
this.create=function(_89d,_89e,_89f){
var _8a0=Element.create("div");
var _8a1=_89d.length;
var _89e=_89e||"";
var _89f=_89f||"";
var _8a2="";
if(_89e){
_8a2="width:"+_89e+";";
}
var _8a3;
if(_89f){
_8a3="height:"+_89f+";";
}
var _8a4=Element.create("table",{className:"UI_Grid"});
var _8a4=Element.createHtml(["<table cellspacing=0 cellpadding=0 border=0 class=\"UI_Grid\" style=\""+_8a2+"\">","<thead></thead>","<tbody>","<tr>","<td colspan="+(_8a1+1)+">","<div class=\"Grid_UI_content\" style=\"width: 100%; "+_8a3+"\">","<table cellspacing=0 cellpadding=0 border=0 width=\"100%\" class=\"UI_GRID_tbl\">","<tbody></tbody>","</table>","</div>","</td>","</tr>","</tbody>","</table>"].join(""));
Element.append(_8a0,_8a4);
_8a0.sort_links=new Array();
var _8a5=this._makeRow();
Element.append(_8a4.firstChild,_8a5);
for(var i=0;i<_89d.length;i++){
var _8a7=this._makeCell();
Element.setStyle(_8a7,_89d[i].properties);
Element.append(_8a5,_8a7);
if(_89d[i].sortable){
var _8a8=Element.createHtml("<span style=\"cursor:pointer;\">"+_89d[i].display+"</span>");
}else{
var _8a8=Element.createHtml("<span>"+_89d[i].display+"</span>");
}
Element.append(_8a7,_8a8);
if(_89d[i].sortable){
var _8a9=Element.createHtml("<span style=\"margin-left: 5px; cursor: pointer;\">"+"<img src=\"images/dir-down-solid.gif\">"+"</span>");
_8a9.sort_type="asc";
_8a8.sort_type="asc";
_8a9.evCallBack=_89d[i].sortCallback;
_8a8.evCallBack=_89d[i].sortCallback;
_8a8.arrow=_8a9;
Event.observe(_8a9,"click",this.evSort.bind(this));
Event.observe(_8a8,"click",this.evSort.bind(this));
_8a9.style.display="none";
Element.append(_8a7,_8a9);
_8a0.sort_links.push(_8a9);
}
}
if(_8a0.sort_links[0]){
_8a0.sort_links[0].style.display="";
}
var _8a7=this._makeCell();
Element.setStyle(_8a7,{width:"20px"});
Element.append(_8a5,_8a7);
_8a0.content_cell=_8a4.childNodes[1].rows[0].cells[0].firstChild.firstChild.firstChild;
return _8a0;
};
this.populate=function(grid,data){
var _8ac=grid.content_cell;
for(var i=0,len=data.length;i<len;i++){
var _8ae=data[i];
var _8af=_8ae.click_ev||false;
var _8b0=this._makeRow(_8af);
_8b0.val=_8ae.val;
Element.append(_8ac,_8b0);
var cols=_8ae.cols;
for(var j=0;j<cols.length;j++){
var _8b3=cols[j].click_ev||false;
var _8b4=this._makeCell(_8b3);
_8b4.val=cols[j].val;
Element.setStyle(_8b4,cols[j].properties);
Element.append(_8b0,_8b4);
var _8b5=Element.createHtml("<div>"+cols[j].display+"</div>");
Element.append(_8b4,_8b5);
}
}
};
this.highlightSelectedRow=function(elem,_8b7){
if(_8b7&&elem.className.indexOf(this._selected_class)==-1){
Element.addClassName(elem,this._selected_class);
}else{
if(!_8b7){
Element.removeClassName(elem,this._selected_class);
}
}
return;
};
this._makeRow=function(_8b8){
var row=this._free_rows.pop();
if(!row){
row=Element.create("tr");
this.addHoverColor(row);
if(_8b8){
if(_8b8=="default"){
Event.observe(row,"mousedown",this.evRowMouseDown.bind(this));
Event.observe(row,"mouseup",this.evRowMouseUp.bind(this));
Event.observe(row,"mouseover",this.evRowMouseOver.bind(this));
}else{
Event.observe(row,"click",_8b8);
}
}
}
Element.show(row);
return row;
};
this._makeCell=function(_8ba){
var cell=this._free_cells.pop();
if(!cell){
cell=Element.create("td");
if(_8ba){
if(_8ba=="default"){
Event.observe(cell,"click",_8ba);
}else{
Event.observe(cell,"click",this.evColClick.bind(this));
}
}
}
Element.show(cell);
return cell;
};
this._removeCell=function(cell){
cell.innerHTML="";
cell.val="";
this._free_cells.push(cell);
Element.remove(cell);
};
this._removeRow=function(row){
this._free_rows.push(row);
row.checked=false;
row.val="";
this.highlightSelectedRow(row,false);
Element.remove(row);
};
this.evRowMouseDown=function(e){
this._row_drag=true;
var row=Event.findElement(e,"tr");
var _8c0=Event.findElement(e,"table");
var _8c1=e.ctrlKey;
if(!this._last_row_selected){
this._last_row_selected=row;
}
if(e.shiftKey){
var rows=_8c0.getElementsByTagName("tr");
var _8c3=this._last_row_selected.rowIndex;
var _8c4=row.rowIndex;
if(_8c3>_8c4){
var _8c5=_8c4;
var end=_8c3;
}else{
var _8c5=_8c3;
var end=_8c4;
}
var _8c7=rows[_8c3].checked;
for(var i=_8c5;i<=end;i++){
this.highlightSelectedRow(rows[i],_8c7);
rows[i].checked=_8c7;
}
}else{
if(e.ctrlKey){
this.highlightSelectedRow(row,!row.checked);
row.checked=!row.checked;
}else{
this.clearCheckedRows(_8c0);
row.checked=true;
this.highlightSelectedRow(row,true);
}
}
this._last_row_selected=row;
};
this.evRowMouseUp=function(e){
this._row_drag=false;
};
this.evRowMouseOver=function(e){
if(this._row_drag){
var row=Event.findElement(e,"tr");
if(this._last_row_selected){
var _8cc=this._last_row_selected.checked;
}else{
_8cc=true;
}
this.highlightSelectedRow(row,_8cc);
row.checked=_8cc;
this._last_row_selected=row;
}
};
this.evColClick=function(e){
var cell=Event.findElement(e,"td");
this.highlightSelectedRow(cell,!cell.checked);
cell.checked=!cell.checked;
};
this.evSort=function(e){
var tbl=Event.findElement(e,"table");
var par=tbl.parentNode;
var _8d2=par.sort_links;
for(var i=0,len=_8d2.length;i<len;i++){
_8d2[i].style.display="none";
}
var elem=Event.findElement(e,"span");
if(elem.sort_type=="asc"){
elem.sort_type="desc";
if(elem.firstChild&&elem.firstChild.src){
elem.firstChild.src="images/dir-up-solid.gif";
}
if(elem.arrow){
elem.arrow.firstChild.src="images/dir-up-solid.gif";
}
}else{
elem.sort_type="asc";
if(elem.firstChild&&elem.firstChild.src){
elem.firstChild.src="images/dir-down-solid.gif";
}
if(elem.arrow){
elem.arrow.firstChild.src="images/dir-down-solid.gif";
}
}
elem.style.display="";
if(elem.arrow){
elem.arrow.sort_type=elem.sort_type;
elem.arrow.style.display="";
}
elem.evCallBack(elem.sort_type);
};
};
}
if($Bootstrap.notLoaded("1ffbe37ff5146b4ffeeda8a06ac3f343")){
Framework.register("Webmail.UI");
function ListTextboxPair(_8d5,_8d6,_8d7){
this._constructor=function(_8d8,_8d9,_8da){
if(typeof _8d8=="string"){
this.parentId=_8d8;
this.parent=document.getElementById(this.parentId);
}else{
this.parent=_8d8;
this.parentId=(this.parent.id)?this.parent.id:"UnnamedDropdownTextboxPairId";
}
this.list=null;
this.textboxes=new Array();
this.container=null;
this.containerId=this.parentId+"_ContainerId";
this.listId=this.parentId+"_ListId";
this.textboxId=this.parentId+"_TextboxId";
this.textboxName=this.parentId+"_Textbox";
this.data=new Object();
this.initData=new Object();
this.className=new Object();
this.isMultiLineTextbox=_8da;
this.previousListIndex=0;
this.numberOfTextbox=(_8d9)?_8d9:1;
this.listChangeListeners=new Array();
this.textboxFocusListeners=new Array();
this.container=this._createContainer();
this.list=this.container.getElementsByTagName("select")[0];
var _8db=null;
if(this.isMultiLineTextbox){
_8db=this.container.getElementsByTagName("textarea");
}else{
_8db=this.container.getElementsByTagName("input");
}
this.evListChanged=this._evListChanged.bind(this);
Event.observe(this.list,"change",this.evListChanged,true);
for(i=0,ii=_8db.length;i<ii;i++){
Event.observe(_8db[i],"blur",this.evListChanged,true);
Event.observe(_8db[i],"focus",this._evTextboxFocus.bindAsEventListener(this),true);
this.textboxes.push(_8db[i]);
}
this.parent.appendChild(this.container);
};
this._createContainer=function(){
var _8dc="";
for(i=0,ii=this.numberOfTextbox;i<ii;i++){
var id=this.textboxId+"_"+(i+1);
var name=this.textboxName+"_"+(i+1);
if(this.isMultiLineTextbox){
_8dc+="<textarea id='"+id+"' name='"+name+"'></textarea>";
}else{
_8dc+="<input type='text' id='"+id+"' value='' name='"+name+"'/>";
}
}
var _8df=Element.createHtml(["<div id='",this.containerId,"'>","<select id='",this.listId,"'>","</select>",_8dc,"</div>"].join(""));
return _8df;
};
this.appendItem=function(_8e0,_8e1){
var _8e2=new Option(_8e0,_8e1);
Form.Select.append(this.list,_8e2);
this._saveCurrentItemValues(_8e1,"");
for(i=0,ii=this.textboxes.length;i<ii;i++){
this.setClassName(_8e1,i,"");
}
};
this.setClassName=function(_8e3,_8e4,_8e5){
var tmp=this.className[_8e3];
if(!tmp){
this.className[_8e3]=new Array();
}
this.className[_8e3][_8e4]=_8e5;
this._updateStyle(_8e3);
};
this._updateStyle=function(_8e7){
if(_8e7==this.getCurrentKey()){
for(var i=0,ii=this.textboxes.length;i<ii;i++){
this.textboxes[i].className=this.className[_8e7][i];
}
}
};
this._evTextboxFocus=function(e){
var _8ea=Event.findElement(e,"input");
var _8eb=0;
for(var j=0,jj=this.textboxes.length;j<jj;j++){
if(_8ea==this.textboxes[j]){
_8eb=j;
break;
}
}
for(var i=0,ii=this.textboxFocusListeners.length;i<ii;i++){
this.textboxFocusListeners[i](_8eb,_8ea);
}
};
this.setAllTextboxesMaxChars=function(_8ee){
for(var j=0,jj=this.textboxes.length;j<jj;j++){
this.textboxes[j].maxLength=_8ee;
}
};
this.setTextboxMaxChars=function(_8f0,_8f1){
this.textboxes[_8f0].maxLength=_8f1;
};
this.enableAllTextboxes=function(bool){
for(var i=0,ii=this.textboxes.length;i<ii;i++){
this.textboxes[i].disabled=!bool;
}
};
this._saveCurrentItemValues=function(_8f4,_8f5){
var tmp=new Array();
for(var i=0,ii=this.textboxes.length;i<ii;i++){
if(_8f5){
tmp.push("");
}else{
tmp.push(this.textboxes[i].value);
}
}
this.data[_8f4]=tmp;
};
this._loadCurrentItemValues=function(_8f8){
var tmp=this.data[_8f8];
if(tmp){
for(var i=0,ii=tmp.length;i<ii;i++){
this.textboxes[i].value=tmp[i];
}
}else{
for(var i=0,ii=this.textboxes.length;i<ii;i++){
this.textboxes[i].value="";
}
}
this._updateStyle(_8f8);
};
this._evListChanged=function(){
var _8fb=this.list.options[this.previousListIndex].value;
this._saveCurrentItemValues(_8fb);
var _8fc=this.getCurrentKey();
this._loadCurrentItemValues(_8fc);
this.previousListIndex=this.list.selectedIndex;
for(var i=0,ii=this.listChangeListeners.length;i<ii;i++){
this.listChangeListeners[i](_8fb,_8fc);
}
};
this.addListChangeListener=function(_8fe){
this.listChangeListeners.push(_8fe);
};
this.addTextboxFocusListener=function(_8ff){
this.textboxFocusListeners.push(_8ff);
};
this.getValues=function(){
return this.data;
};
this.getValue=function(_900,_901){
var out="";
if(this.className[_900]){
if(this.className[_900][_901]==""){
out=this.data[_900][_901];
}
}
return out;
};
this.isEmpty=function(){
var data=this.getValues();
for(var _904 in data){
for(var i=0,ii=data[_904].length;i<ii;i++){
var _906=data[_904][i];
if(this.className[_904][i]==""){
if(typeof _906=="string"&&_906.trim().length>0){
return false;
}
}
}
}
return true;
};
this.setValue=function(_907,_908,_909){
if(this.data[_907]){
this.data[_907][_908]=_909;
var _90a=this.getCurrentKey();
if(_907==_90a){
this.textboxes[_908].value=_909;
}
}
};
this.getCurrentKey=function(){
return this.list.options[this.list.selectedIndex].value;
};
this._constructor(_8d5,_8d6,_8d7);
}
}
if($Bootstrap.notLoaded("5d1d41f1eec536fe0f1eb224827382e3")){
Framework.register("Webmail.UI");
_LiveGridNameTable=new Array();
_LiveGridRefTable=new Array();
_live_grid_event_table=new Object();
$UI.CheckAllCheckboxesAjaxHandler=function(_90b){
this.liveGrid=_90b;
this.getContent=function(cell){
if(cell.innerHTML){
return cell.innerHTML;
}
switch(cell.childNodes.length){
case 0:
return "";
case 1:
return cell.firstChild.nodeValue;
default:
return cell.childNodes[1].nodeValue;
}
};
this.ajaxUpdate=function(_90d){
if(this.liveGrid.isAjaxProcessing==true){
var _90e=_90d.getElementsByTagName("error");
if(_90e.length>0){
this.liveGrid._onError(this.getContent(_90e[0]));
}else{
var ids=_90d.getElementsByTagName("id");
for(i=0,ii=ids.length;i<ii;i++){
var _910=this.getContent(ids[i]).split("^");
var data=_910[0];
var id=_910[1];
var name=_910[2];
this.liveGrid.selected_rows[id]=data;
this.liveGrid.selected_names[id]=name;
}
this.liveGrid._updateGrid();
}
this.liveGrid._onCheckAllCheckboxesAjaxComplete();
}
};
};
$UI.GetIdsAjaxHandler=function(_914){
this.live_grid=_914;
this.getContent=function(cell){
if(cell.innerHTML){
return cell.innerHTML;
}
switch(cell.childNodes.length){
case 0:
return "";
case 1:
return cell.firstChild.nodeValue;
default:
return cell.childNodes[1].nodeValue;
}
};
this.ajaxUpdate=function(_916){
var _917=_916.getElementsByTagName("error");
if(_917.length>0){
this.live_grid._onError(this.getContent(_917[0]));
}else{
var _918=_916.getAttribute("requestId");
if(_918==this.live_grid.wrapper_request_id-1){
if(this.live_grid.get_ids_timer){
clearTimeout(this.live_grid.get_ids_timer);
}
var ids=_916.getElementsByTagName("id");
for(i=0,ii=ids.length;i<ii;i++){
var _91a=this.getContent(ids[i]).split("^");
var data=_91a[0];
var id=_91a[1];
this.live_grid.selectRow(id,data);
}
this.live_grid._updateGrid();
}else{
}
}
this.live_grid._onStopLoading();
};
};
function LiveGrid(_91d,_91e,url,_920){
this._constructor=function(_921,url,_923,_924){
Object.bindObservers(this);
this.divId=_921;
this.gridName=_921;
this.tableId=this.gridName+"_data";
this.checkAllId=this.gridName+"_checkall";
this.checkboxName=this.gridName+"_chk";
this.getAllIdAjaxhandler=this.gridName+"_getAllCheckboxIds";
this.get_ids_ajax_name=this.gridName+"_getIds";
this.grid_rows=null;
this.url=url;
this.columns=_923;
this.grid=null;
this.selected_rows=new Object();
this.selected_names=new Array();
this.scrollListeners=new Array();
this.clickListeners=new Array();
this.check_listeners=new Array();
this.startLoadingListeners=new Array();
this.stopLoadingListeners=new Array();
this.errorListeners=new Array();
this.row_click_listeners=new Array();
this.row_dblclick_listeners=new Array();
this.checkAllCheckbox=null;
this.timeout=30*1000;
this.isAjaxProcessing=false;
this.checkAllCheckboxesTimeoutId=null;
this.keyword="";
this.mode="";
this.options=null;
this.clickedRowId=null;
this.resize_delay=300;
this.resize_timer=null;
this.get_ids_timer=null;
this.wrapper_request_id=1;
this.mouse_down_on_row_id=null;
this.constant={SCROLL_UP:10,SCROLL_DOWN:11};
this.options={prefetchBuffer:true,onRefreshComplete:this._updateGrid.bind(this),onscroll:this._onScrollEvent.bind(this),menuEvent:null,canSortDefault:false,requestParameters:null,canSortSpec:{type:"raw",canSort:true},columnSpecs:this._getColumnSpec(this.columns),largeBufferSize:3,canHideDefault:false,rowHighlights:false,allowColResize:false,nearLimitFactor:0.5,sortDescendImg:"images/dir-up-solid.gif",sortAscendImg:"images/dir-down-solid.gif",footerSpace:0,sortCol:0,sortDir:"desc",hdrIconsFirst:false,max_rows:0,click_selection:false,mode:"",ignored_double_click_elements:["A","INPUT"]};
Object.extend(this.options,_924||{});
this.mode=this.options.mode;
this.options.requestParameters=new Array();
this.options.requestParameters.push("name="+this.gridName);
this.options.requestParameters.push("mode="+this.mode);
this.options.requestParameters.push(CFG_SESSION_NAME+"="+Webmail.getSessionId());
this._createTable(this.divId,this.tableId,this.columns);
Rico.imgDir="./";
if(this.options.max_rows==0){
var _925=16;
var _926=50;
var _927=screen.height;
var _928=(Webmail.appHeight()-Webmail.rightHeight())+parseInt($Custom.getFooterHeight());
var _929=_927-_928-_926;
this.options.max_rows=parseInt(_929/_925);
}
this.grid=new Rico.LiveGrid(this.tableId,this.options.max_rows,1,url,this.options);
this.grid.addShowMessageListener(this._onStartLoading.bind(this));
this.grid.addClearMessageListener(this._onStopLoading.bind(this));
this.grid.addErrorMessageListener(this._onError.bind(this));
this.grid.addRowClickListener(function(_92a){
if(wack.Browser.is_safari_1_3){
_live_grid_event_table[this.gridName]=_92a;
setTimeout("_LGRowClick('"+this.gridName+"');",0);
}else{
this._evRowClick(_92a);
}
}.bindAsEventListener(this));
this.grid.addRowDblClickListener(this.evRowDblClick);
var _92b=document.getElementById(this.gridName+"_data_tab1");
var _92c=_92b.getElementsByTagName("tbody");
this.grid_rows=_92c[0].getElementsByTagName("tr");
if(!this.options.fixed_size){
Event.observe(window,"resize",this._resize.bind(this),false);
}
if(this.options.click_selection){
ajaxEngine.registerRequest(this.get_ids_ajax_name,this.url);
ajaxEngine.registerAjaxObject(this.get_ids_ajax_name,new $UI.GetIdsAjaxHandler(this));
Event.observe(_92c[0],"mousedown",this.evMouseDown,true);
Event.observe(_92c[0],"mouseup",this.evMouseUp,true);
var _92d=this.grid_rows.length;
if(_92d>10){
var _92e=function(_92f){
this._evMouseOver(_92f,this.constant.SCROLL_UP);
}.bindAsEventListener(this);
var _930=function(_931){
this._evMouseOver(_931,this.constant.SCROLL_DOWN);
}.bindAsEventListener(this);
Event.observe(this.grid_rows[0],"mouseover",_92e,true);
Event.observe(this.grid_rows[1],"mouseover",_92e,true);
Event.observe(this.grid_rows[_92d-1],"mouseover",_930,true);
Event.observe(this.grid_rows[_92d-2],"mouseover",_930,true);
}
}
_LiveGridNameTable.push(this.gridName);
_LiveGridRefTable.push(this);
checkAllCheckbox=document.getElementsByName(this.checkAllId);
if(checkAllCheckbox.length==0){
checkAllCheckbox=document.getElementsByTagName("input");
for(i=0,ii=checkAllCheckbox.length;i<ii;i++){
if(checkAllCheckbox[i]&&checkAllCheckbox[i].id==this.checkAllId){
this.checkAllCheckbox=checkAllCheckbox[i];
this.checkAllCheckbox.type="checkbox";
this.checkAllCheckbox.name=this.checkAllId;
}
}
}else{
this.checkAllCheckbox=checkAllCheckbox[1];
}
if(this.checkAllCheckbox){
Event.observe(this.checkAllCheckbox,"click",function(){
this._onCheckAllEvent(this.checkAllCheckbox.checked);
}.bind(this),this);
ajaxEngine.registerRequest(this.getAllIdAjaxhandler,this.url);
ajaxEngine.registerAjaxObject(this.getAllIdAjaxhandler,new $UI.CheckAllCheckboxesAjaxHandler(this));
}
};
this.setMode=function(mode){
this.mode=mode;
this.keyword="";
this.grid.setRequestParams("name="+this.gridName,"mode="+this.mode,CFG_SESSION_NAME+"="+Webmail.getSessionId());
this.grid.scrollToRow(0);
};
this.setWidth=function(_933){
this.grid.setWidth(_933);
};
this.filter=function(_934){
this.keyword=_934;
this.grid.setRequestParams("search="+this.keyword,"name="+this.gridName,"mode="+this.mode,CFG_SESSION_NAME+"="+Webmail.getSessionId());
this.grid.resetContentsNoFlashing();
this.clickedRowId=null;
this.grid.fetchBuffer(0);
this.uncheckAllCheckboxes();
};
this.refresh=function(){
this.clickedRowId=null;
this.uncheckAllCheckboxes();
this.grid.resetContentsNoFlashingButNotScrollToTop(false);
var _935=this.grid.getCurrentRow();
this.grid.requestContentRefresh(_935);
};
this.getCheckedCheckboxContent=function(){
return this.getSelectedContent();
};
this.getCheckedCheckboxData=function(){
return this.getSelectedData();
};
this.getCheckedCheckboxes=function(){
var out=new Array();
for(var id in this.selected_rows){
if(this.selected_rows[id]!=null&&this.selected_rows[id].length>0){
out.push(id.unescapeHTML());
}
}
return out;
};
this.checkAllCheckboxes=function(){
this._onStartLoading();
this.checkAllCheckbox.disabled=true;
this._setAjaxProcessing(true);
ajaxEngine.sendRequest(this.getAllIdAjaxhandler,"custom=getAllCheckboxIds","name="+this.gridName,"search="+this.keyword,"mode="+this.mode,"requestId="+this.wrapper_request_id,CFG_SESSION_NAME+"="+Webmail.getSessionId());
this.wrapper_request_id++;
this.checkAllCheckboxesTimeoutId=setTimeout(this._onCheckAllCheckboxesAjaxTimeout.bind(this),this.timeout);
};
this.uncheckAllCheckboxes=function(){
this.clearAllSelections();
this.checkAllCheckbox.checked=false;
this._updateGrid();
};
this.addScrollListener=function(_938){
this.scrollListeners.push(_938);
};
this.addStartLoadingListener=function(_939){
this.startLoadingListeners.push(_939);
};
this.addStopLoadingListener=function(_93a){
this.stopLoadingListeners.push(_93a);
};
this.addClickListener=function(_93b){
this.clickListeners.push(_93b);
};
this.addErrorListener=function(_93c){
this.errorListeners.push(_93c);
};
this.addRowClickListener=function(_93d){
this.row_click_listeners.push(_93d);
};
this.addRowDblClickListener=function(_93e){
this.row_dblclick_listeners.push(_93e);
};
this.addCheckListener=function(_93f){
this.check_listeners.push(_93f);
};
this._setAjaxProcessing=function(bool){
this.isAjaxProcessing=bool;
};
this._getFirstSortableColumn=function(_941){
for(i=0,ii=_941.length;i<ii;i++){
var _942=_941[i][1];
if(_942){
return i;
}
}
return 0;
};
this._getColumnSpec=function(_943){
var spec=new Array();
for(i=0,ii=_943.length;i<ii;i++){
var _945=_943[i][1];
if(_945){
spec.push("canSortSpec");
}else{
spec.push("specDefault");
}
}
return spec;
};
this._evRowClick=function(_946){
for(var i=0,ii=this.row_click_listeners.length;i<ii;i++){
this.row_click_listeners[i](_946);
}
};
this._evRowDblClick=function(_948){
var _949=Event.element(_948);
if(_949){
if(this.options.ignored_double_click_elements.indexOf(_949.tagName)==-1){
for(var i=0,ii=this.row_dblclick_listeners.length;i<ii;i++){
this.row_dblclick_listeners[i](_948);
}
}
}
};
this._evMouseOver=function(_94b,_94c){
if(this.mouse_down_on_row_id!=null){
if(_94c==this.constant.SCROLL_UP){
this.grid.scrollUp();
}else{
if(_94c==this.constant.SCROLL_DOWN){
this.grid.scrollDown();
}
}
}
};
this._evMouseDown=function(_94d){
var row=Event.findElement(_94d,"tr");
this.mouse_down_on_row_id=this._getRowId(row);
};
this._evMouseUp=function(_94f){
this._clearBrowserSelection();
var row=Event.findElement(_94f,"tr");
var _951=this.clickedRowId;
this.clickedRowId=this._getRowId(row);
if(this.options.click_selection){
if(_94f.shiftKey&&this.clickedRowId!=null){
if(this.clickedRowId){
this._ajaxGetId(_951,this.clickedRowId);
this.selectRow(this.clickedRowId,this._getRowId2(row));
}
}else{
if(_94f.ctrlKey){
this.selectRow(this.clickedRowId,this._getRowId2(row));
this._updateGrid();
}else{
if(this.clickedRowId&&this.mouse_down_on_row_id&&this.clickedRowId!=this.mouse_down_on_row_id){
this._ajaxGetId(this.mouse_down_on_row_id,this.clickedRowId);
this.selectRow(this.clickedRowId,this._getRowId2(row));
this.selectRow(this.mouse_down_on_row_id,this._getRowId2(row));
}else{
if(this.clickedRowId){
this.clearAllSelections();
this.selectRow(this.clickedRowId,this._getRowId2(row));
this._updateGrid();
}
}
}
}
}
this.mouse_down_on_row_id=null;
};
this._ajaxGetId=function(_952,_953){
this._onStartLoading();
var sort=this.grid.getCurrentSortedColumn();
ajaxEngine.sendRequest(this.get_ids_ajax_name,"custom=getIds","name="+this.gridName,"search="+this.keyword,"mode="+this.mode,"offset="+_952+"/"+_953,"requestId="+this.wrapper_request_id,sort.query_string);
if(this.get_ids_timer){
clearTimeout(this.get_ids_timer);
}
this.get_ids_timer=setTimeout(this._onGetIdsAjaxTimeout.bind(this),this.timeout);
this.wrapper_request_id++;
};
this._evChecked=function(){
for(var i=0,ii=this.check_listeners.length;i<ii;i++){
this.check_listeners[i]();
}
};
this.hightlightRow=function(_956){
this.clickedRowId=_956;
this._updateCheckboxesAndClickedRow();
};
this._getRowId=function(tr){
var _958=null;
var divs=tr.getElementsByTagName("div");
if(divs.length>2&&divs[1]){
_958=divs[1].getAttribute("rid");
}
return _958;
};
this._getRowId2=function(tr){
var _95b=null;
var divs=tr.getElementsByTagName("div");
if(divs.length>2&&divs[1]){
_95b=divs[1].getAttribute("rid2");
}
return _95b;
};
this.getSelectedContent=function(){
var out=new Array();
for(var id in this.selected_rows){
if(this.selected_rows[id]!=null&&this.selected_rows[id]!="_!"){
out.push(this.selected_names[id]);
}
}
return out;
};
this.getSelectedData=function(){
var out=new Array();
for(var id in this.selected_rows){
if(this.selected_rows[id]!=null&&this.selected_rows[id]!="_!"){
out.push(this.selected_rows[id].unescapeHTML());
}
}
return out;
};
this.getSelectedIds=function(){
var out=new Array();
for(var id in this.selected_rows){
if(this.selected_rows[id]!=null&&this.selected_rows[id]!="_!"){
out.push(id.unescapeHTML());
}
}
return out;
};
this.selectRow=function(id,data){
if(this.options.click_selection){
if(this.selected_rows[id]==null){
this.selected_rows[id]=data?data:"_!";
}else{
this.selected_rows[id]=null;
}
}else{
this.selected_rows[id]=data;
}
};
this.clearAllSelections=function(){
this.selected_rows=new Object();
this.selected_names=new Array();
};
this._onClickEvent=function(_965,_966,_967,_968){
this.hightlightRow(_967);
for(var i=0,ii=this.clickListeners.length;i<ii;i++){
this.clickListeners[i](_966,_967,_968);
}
};
this._onScrollEvent=function(){
from=this.grid.getCurrentRow()+1;
to=from+this.grid.metaData.getPageSize()-1;
total=this.grid.metaData.getTotalRows();
if(to>total){
to=total;
}
if(from>to){
from=to;
}
for(i=0,ii=this.scrollListeners.length;i<ii;i++){
this.scrollListeners[i](from,to,total);
}
};
this._onStartLoading=function(){
for(i=0,ii=this.startLoadingListeners.length;i<ii;i++){
this.startLoadingListeners[i]();
}
};
this._onStopLoading=function(){
for(i=0,ii=this.stopLoadingListeners.length;i<ii;i++){
this.stopLoadingListeners[i]();
}
};
this._onError=function(_96a){
for(i=0,ii=this.errorListeners.length;i<ii;i++){
this.errorListeners[i](_96a);
}
};
this._onCheckEvent=function(_96b,data,_96d,_96e){
if(_96e==true){
this.selected_rows[_96b]=data;
this.selected_names[_96b]=_96d;
}else{
this.selected_rows[_96b]=null;
this.selected_names[_96b]=null;
if(this.checkAllCheckbox){
this.checkAllCheckbox.checked=false;
}
}
this._updateCheckboxesAndClickedRow();
this._evChecked();
};
this._onGetIdsAjaxTimeout=function(){
this._onError("Timeout");
};
this._onCheckAllCheckboxesAjaxTimeout=function(){
this._onError("Timeout");
this.checkAllCheckbox.checked=false;
this._onCheckAllCheckboxesAjaxComplete();
};
this._onCheckAllCheckboxesAjaxComplete=function(){
this.checkAllCheckbox.disabled=false;
this._setAjaxProcessing(false);
this._onStopLoading();
clearTimeout(this.checkAllCheckboxesTimeoutId);
};
this._onCheckAllEvent=function(_96f){
if(_96f){
this.checkAllCheckboxes();
}else{
this.uncheckAllCheckboxes();
}
};
this._updateGrid=function(){
this._updateCheckboxesAndClickedRow();
};
this._updateCheckboxesAndClickedRow=function(){
for(var i=0,ii=this.grid_rows.length;i<ii;i++){
var row=this.grid_rows[i];
var _972=row.getElementsByTagName("input");
var _973=(_972.length>0)?_972[0]:null;
var _974=_973?this.selected_rows[_973.id]:null;
var _975=this._getRowId(row);
var _976=this.selected_rows[_975];
if((_976!=null&&_976.length>0)||(_974!=null&&_974.length>0)){
if(row){
Element.addClassName(row,"LiveGrid_SelectedRow");
}
if(_973){
_973.checked=true;
}
}else{
if(_973){
_973.checked=false;
}
if(row){
Element.removeClassName(row,"LiveGrid_SelectedRow");
}
}
if(this.options.click_selection==false){
if(row&&((_975&&_975==this.clickedRowId)||(_973&&_973.checked==false&&_973.id==this.clickedRowId))){
Element.addClassName(row,"LiveGrid_SelectedRow");
}
}
}
};
this._createTable=function(_977,_978,_979){
var _97a=document.createElement("table");
_97a.className="ricoLiveGrid";
_97a.id=_978;
var _97b=document.createElement("thead");
var tr=document.createElement("tr");
for(var i=0,ii=_979.length;i<ii;i++){
var _97e=_979[i][0];
var _97f=_979[i][2];
var _980=_979[i][3];
var th=document.createElement("th");
th.className=_97f;
th.id=_97f;
if(_980=="checkbox"){
var _982=document.createElement("input");
_982.type="checkbox";
_982.id=this.checkAllId;
_982.name=this.checkAllId;
this.tmp=_982;
th.appendChild(_982);
}else{
var text=document.createTextNode(_979[i][0]);
th.appendChild(text);
}
tr.appendChild(th);
}
_97b.appendChild(tr);
_97a.appendChild(_97b);
var _984=document.getElementById(_977);
_984.appendChild(_97a);
};
this._resize=function(){
if(this.resize_timer){
clearTimeout(this.resize_timer);
}
this.resize_timer=setTimeout("_getLiveGrid(\""+this.gridName+"\").grid.sizeDivs();",this.resize_delay);
};
this._clearBrowserSelection=function(){
if(window.getSelection){
var _985=window.getSelection();
if(_985&&typeof _985.removeAllRanges=="function"){
window.getSelection().removeAllRanges();
}
}else{
if(document.selection){
document.selection.empty();
}
}
};
this._constructor(_91d,_91e,url,_920);
}
function _getLiveGrid(_986){
for(i=0,ii=_LiveGridNameTable.length;i<ii;i++){
if(_LiveGridNameTable[i]==_986){
return _LiveGridRefTable[i];
}
}
return null;
}
function _LGChk(_987,_988,id,data,_98b,_98c){
Event.stopPropagation(_987);
if(wack.Browser.is_safari_1_3){
_live_grid_event_table[_988]=null;
}
if((grid=_getLiveGrid(_988))!=null){
grid._onCheckEvent(id,data,_98b,_98c);
}
}
function _LGClk(_98d,_98e,_98f,id,data){
Event.stop(_98d);
if((grid=_getLiveGrid(_98e))!=null){
grid._onClickEvent(_98d,_98f,id,data);
}else{
alert(_98e+" not found");
}
}
function _LGRowClick(_992){
if((grid=_getLiveGrid(_992))!=null){
var _993=_live_grid_event_table[_992];
if(_993!=null){
grid._evRowClick(_993);
}
}else{
alert(gridName+" not found");
}
}
}
if($Bootstrap.notLoaded("407b51635aec9edd8c2dab1a868e56f8")){
Framework.register("Webmail.UI");
function LiveTextBox(_994,_995,_996,text){
this._constructor=function(_998,_999,_99a,text){
if(typeof _998=="string"){
this.divId=_998;
this.divObj=document.getElementById(this.divId);
}else{
this.divObj=_998;
this.divId=(this.divObj.id)?this.divObj.id:"UnnamedLiveTextboxId";
}
this.name=this.divId+"_LiveTextBox_name";
this.id=this.divId+"_LiveTextBox_id";
this.className=this.divId+"_LiveTextBox_Class";
this.lastVale="";
this.timer=null;
this.timeout=_99a;
this.action=_999;
this.firstTime=true;
this.textbox=null;
this.initValue=text;
this.textbox=document.createElement("input");
this.textbox.name=this.name;
this.textbox.id=this.id;
this.textbox.className=this.className;
this.textbox.value=this.initValue;
Event.observe(this.textbox,"keyup",this._onKeyUp.bind(this),this);
Event.observe(this.textbox,"focus",function(){
if(this.firstTime){
this.textbox.value="";
}
this.firstTime=false;
}.bind(this),this);
this.divObj.appendChild(this.textbox);
};
this._doAction=function(){
if(this.action){
var _99c=this.textbox.value;
this.action(_99c);
}
};
this._onKeyUp=function(){
this.textbox.className="";
if(this.timer==null){
this.timer=setTimeout(this._doAction.bind(this),this.timeout);
}else{
if(this.timer){
clearTimeout(this.timer);
this.timer=setTimeout(this._doAction.bind(this),this.timeout);
}
}
};
this.getTextValue=function(){
return this.textbox.value;
};
this.setTextValue=function(_99d){
this.textbox.value=_99d;
this.firstTime=false;
this._doAction();
};
this.setTextboxMaxChars=function(_99e){
this.textbox.maxLength=_99e;
};
this.getTextboxElement=function(){
return this.textbox;
};
this.reset=function(){
this.textbox.className=this.className;
this.textbox.value=this.initValue;
this.firstTime=true;
};
this._constructor(_994,_995,_996,text);
}
}
if($Bootstrap.notLoaded("4fc61232b64687fd68a7e5c53764eee3")){
Framework.register("Webmail.UI");
Webmail.UI.Menu=Class.create();
Object.extend(Webmail.UI.Menu,{active_menu:null,initialized:false,initialize:function(){
if(this.intialized){
return;
}
this.initialized=true;
this.evItemClick=this._evItemClick.bindAsEventListener(this);
},_evItemClick:function(e){
var elem=Event.element(e);
var _9a1=Event.findElement(e,"li");
var data=_9a1._data;
$UI.load(function(){
(data.onclick||Prototype.emptyFunction)();
},e);
},evItemClick:null});
Webmail.UI.Menu.prototype={options:{},shown:false,_menu_container:null,initialize:function(menu,_9a4){
$UI.Menu.initialize();
this.options=Object.extend({top_element:null},_9a4||{});
var _9a5=this._menu_container=Element.create("div",{className:"UI_Menu"});
if(wack.Browser.is_ie6){
var _9a6=Element.createHtml("<iframe frameborder=\"0\" src=\""+Webmail.getBlankUrl()+"\"></iframe>");
_9a5.append(_9a6);
}
var _9a7=$UI.Alpha.newLayer("#000",40);
_9a7.className="shadow";
_9a5.append(_9a7,this.drawMenu(menu)).hide();
$(document.body).append(_9a5);
},disableItem:function(id){
this._setItemEnabled(id,false);
},drawMenu:function(data){
var list=Element.create("ul");
for(var i=0,ii=data.length;i<ii;i++){
var curr=data[i];
var _9ad=Element.create("li");
_9ad._data=curr;
_9ad.update(["<a href=\"javascript:void(0);\"><div>"+curr.text+"</div></a>","<span class=\"disabled\">",curr.text,"</span>"].join(""));
var link=_9ad.firstChild;
Event.observe(link,"click",$UI.Menu.evItemClick);
if(curr.disabled){
_9ad.addClassName("disabled");
}
if(i==0){
_9ad.addClassName("first");
}else{
if(i==(ii-1)){
_9ad.addClassName("last");
}
}
if(curr.visible===false){
_9ad.hide();
}
list.append(_9ad);
_9ad=null;
}
return list;
},enableItem:function(id){
this._setItemEnabled(id,true);
},hide:function(){
this.shown=false;
this._menu_container.hide();
$UI.Menu.active_menu=null;
},hideItem:function(id){
this._setItemVisible(id,false);
},show:function(){
this.shown=true;
this._menu_container.show();
if($UI.Menu.active_menu){
$UI.Menu.active_menu.hide();
}
$UI.Menu.active_menu=this;
this._watchDocument(true);
var _9b1;
if((_9b1=this.options.top_element)){
var _9b2=Position.cumulativeOffset(_9b1);
var _9b3=_9b1.offsetHeight;
this._menu_container.setStyle({left:_9b2[0]+"px",top:_9b2[1]+_9b3+"px"});
if(!this._menu_container.drawn){
this._menu_container.drawn=true;
var _9b4=this._menu_container.getElementsByTagName("iframe")[0];
if(_9b4){
$(_9b4).setStyle({height:this._menu_container.offsetHeight+"px"});
}
}
}
},showItem:function(id){
this._setItemVisible(id,true);
},_findItem:function(id){
var _9b7=this._menu_container.getElementsByTagName("li");
for(var i=0,ii=_9b7.length;i<ii;i++){
if(_9b7[i]._data.id==id){
return $(_9b7[i]);
}
}
return false;
},_setItemEnabled:function(id,_9ba){
var _9bb=this._findItem(id);
if(!_9bb){
return;
}
if(_9ba){
_9bb.removeClassName("disabled");
}else{
_9bb.addClassName("disabled");
}
},_setItemVisible:function(id,_9bd){
var _9be=this._findItem(id);
if(!_9be){
return;
}
if(_9bd){
_9be.show();
}else{
_9be.hide();
}
},_watchDocument:function(_9bf){
if(_9bf){
if(!this.evDocumentWatch){
this.evDocumentWatch=this._evDocumentWatch.bindAsEventListener(this);
}
Event.observe(document,"click",this.evDocumentWatch);
Event.observe(document,"blur",this.evDocumentWatch);
}else{
if(this.evDocumentWatch){
Event.stopObserving(document,"click",this.evDocumentWatch);
Event.stopObserving(document,"blur",this.evDocumentWatch);
}
}
},_evDocumentWatch:function(e){
if($UI.Menu.active_menu){
$UI.Menu.active_menu.hide();
$UI.Menu.active_menu=null;
}
this._watchDocument(false);
},evDocumentWatch:null};
}
if($Bootstrap.notLoaded("7874c68e32d27e846f192fee70705a1d")){
Framework.register("Webmail.UI");
Webmail.UI.Pager={element_pool:[],createPager:function(_9c1,_9c2,_9c3,_9c4){
_9c4=Object.extend({callback:Prototype.emptyFunction,emptytext:"",reduced_range:false,right_align:false,show_range:true},_9c4||{});
var _9c5=this._getContainer();
_9c5._start=_9c1;
_9c5._limit=_9c2;
_9c5._total=_9c3;
_9c5._callback=_9c4.callback;
var _9c1=_9c1;
if(_9c4.reduced_range!==false){
var end=Number(_9c1)+Number(_9c4.reduced_range)-1;
_9c5._reduced=_9c4.reduced_range;
}else{
_9c5._reduced=false;
var end=_9c1+_9c2-1;
}
var _9c3=_9c3;
if(end>_9c3){
end=_9c3;
}
if(_9c4.show_range){
var _9c7=(_9c3>0?L("Pager.Range",_9c1,end,_9c3):_9c4.emptytext);
_9c7=_9c7.replace(/ /g,"&nbsp;");
Element.update(_9c5._range,_9c7);
}
if(_9c3<=_9c2){
var _9c8="links one_page";
}else{
if(_9c1==1){
var _9c8="links first_page";
}else{
if(end==_9c3){
var _9c8="links last_page";
}else{
var _9c8="links";
}
}
}
_9c5._links.className=_9c8;
_9c5._range.style.width="auto";
return _9c5;
},_findContainer:function(_9c9){
while(!_9c9.pager&&_9c9!=document.body){
_9c9=_9c9.parentNode;
}
if(_9c9==document.body){
_9c9=null;
}
return _9c9;
},_getContainer:function(){
var _9ca=null;
for(var i=0,ii=this.element_pool.length;i<ii;i++){
if(Element.isOrphan(this.element_pool[i])){
_9ca=this.element_pool[i];
break;
}
}
if(!_9ca){
_9ca=Element.createHtml(["<table class=\"UI_Pager\" cellspacing=\"0\" cellpadding=\"0\" border=\"0\">","<tbody>","<tr><td>","<span class=\"range\">","</span>","<span class=\"links\">","<a href=\"javascript:void(0);\" class=\"first\">",L("Pager.First"),"</a>","<span class=\"sep\">|</span>","<a href=\"javascript:void(0);\" class=\"previous\">",L("Pager.Previous"),"</a>","<span class=\"sep\">|</span>","<a href=\"javascript:void(0);\" class=\"next\">",L("Pager.Next"),"</a>","<span class=\"sep\">|</span>","<a href=\"javascript:void(0);\" class=\"last\">",L("Pager.Last"),"</a>","</span>","</td></tr>","</tbody>","</table>"].join(""));
_9ca.pager=true;
_9ca._range=_9ca.firstChild.firstChild.firstChild.firstChild;
_9ca._links=_9ca.firstChild.firstChild.firstChild.childNodes[1];
var _9cc=_9ca.getElementsByTagName("a");
var _9cd=_9cc[0];
var prev=_9cc[1];
var next=_9cc[2];
var last=_9cc[3];
Event.observe(_9cd,"click",this.evFirst,this);
Event.observe(prev,"click",this.evPrev,this);
Event.observe(next,"click",this.evNext,this);
Event.observe(last,"click",this.evLast,this);
this.element_pool.push(_9ca);
}
return _9ca;
},_navigate:function(_9d1,_9d2,_9d3){
if(_9d1._callback){
_9d1._callback(_9d2,_9d3);
}
},evFirst:function(e){
var _9d5=this._findContainer(Event.element(e));
var _9d6=_9d5._limit;
if(_9d5._start<=1){
Event.stop(e);
return;
}
this._navigate(_9d5,1,_9d6);
},evPrev:function(e){
var _9d8=this._findContainer(Event.element(e));
var _9d9=_9d8._limit;
if(_9d8._start<=1){
Event.stop(e);
return;
}
var _9da=_9d8._start-_9d9;
if(_9da<=1){
_9da=1;
}
this._navigate(_9d8,_9da,_9d9);
},evNext:function(e){
var _9dc=this._findContainer(Event.element(e));
var _9dd=_9dc._limit;
if(_9dc._reduced){
var _9de=_9dc._start+_9dc._reduced;
}else{
var _9de=_9dc._start+_9dd;
}
if(_9de>_9dc._total){
Event.stop(e);
return;
}
this._navigate(_9dc,_9de,_9dd);
},evLast:function(e){
var _9e0=this._findContainer(Event.element(e));
var _9e1=_9e0._limit;
var _9e2=_9e0._total;
var _9e3=(parseInt(_9e2/_9e1)*_9e1)+1;
if(_9e3>_9e2){
_9e3=_9e3-_9e1;
if(_9e3>_9e2){
Event.stop(e);
return;
}
}
this._navigate(_9e0,_9e3,_9e1);
}};
}
if($Bootstrap.notLoaded("8b9f309045004594a4a46a18980f16bc")){
Framework.register("Webmail.UI");
function SimpleSubMenu(name){
this._constructor=function(name){
this.name=name;
this.containerId=this.name+"_SubMenuContainer";
this.contentId=this.name+"_SubMenuContent";
this.container=null;
this.sections=null;
this.sectionButtons=null;
this.items=null;
this.observers=null;
this._initLayout();
this._initData();
};
this.addSection=function(_9e6){
this.sections.push(_9e6);
this.items[this.sections.length-1]=new Array();
this.sectionButtons[this.sections.length-1]=new Array();
};
this.removeSection=function(_9e7){
var _9e8=this._findSection(_9e7);
this.sectionButtons[_9e8]=new Array();
this.sections[_9e8]=null;
this.items[_9e8]=new Array();
};
this.removeSectionItem=function(_9e9,_9ea){
var _9eb=this._findSection(_9e9);
for(var i=0,ii=this.items[_9eb].length;i<ii;i++){
if(this.items[_9eb][i]!=null){
if(this.items[_9eb][i].key==_9ea){
this.items[_9eb][i]=null;
}
}
}
};
this.addSectionButton=function(_9ed,_9ee,_9ef,_9f0){
var _9f1=this._findSection(_9ed);
this.sectionButtons[_9f1].push({handler:_9ee,tooltip:_9ef,style:_9f0});
};
this._findSection=function(_9f2){
var _9f3=-1;
for(i=_9f3,ii=this.sections.length;i<ii;i++){
if(this.sections[i]==_9f2){
_9f3=i;
break;
}
}
return _9f3;
};
this.addSectionItem=function(_9f4,_9f5,_9f6,_9f7,_9f8){
var _9f9=this._findSection(_9f4);
this.items[_9f9].push({key:_9f5,name:_9f6,handler:_9f7,style:_9f8});
};
this.clear=function(){
Element.remove(this.content);
this._initData();
this._initLayout();
this.create();
};
this.refresh=function(){
Element.remove(this.content);
this._initLayout();
this.create();
};
this._initLayout=function(){
if(!this.container){
this.container=Element.create("div",{className:this.subMenuContainerId});
}
if(this.observers){
for(var i=0,ii=this.observers.length;i<ii;i++){
var _9fb=this.observers[i].element;
var _9fc=this.observers[i].handler;
Event.stopObserving(_9fb,"click",_9fc,this);
}
}
this.content=Element.create("div",{className:this.contentId});
this.container.append(this.content);
};
this._initData=function(){
this.sections=new Array();
this.sectionButtons=new Array();
this.items=new Array();
this.observers=new Array();
};
this.create=function(){
for(var i=0,ii=this.sections.length;i<ii;i++){
var _9fe=this.sections[i];
if(_9fe==null){
continue;
}
var _9ff="";
for(var j=0,jj=this.sectionButtons[i].length;j<jj;j++){
var _a01=this.sectionButtons[i][j].style;
var _a02=this.sectionButtons[i][j].tooltip;
_9ff+="<img align='right' src='images/blank.gif' class='"+_a01+"' alt='"+_a02+"' title='"+_a02+"' />";
}
var _a03=Element.createHtml(["<div class='section'>","<div class='header'>",_9ff,"<h3>",_9fe,"</h3>","</div>","</div>"].join(""));
var _a04=_a03.getElementsByTagName("img");
for(var j=0,jj=this.sectionButtons[i].length;j<jj;j++){
Event.observe(_a04[j],"click",this.sectionButtons[i][j].handler,this);
}
var _a05="";
for(var j=0,jj=this.items[i].length;j<jj;j++){
if(this.items[i][j]==null){
continue;
}
var id="SubMenu_"+this.name+"_"+this.items[i][j].key;
var name=this.items[i][j].name;
var _a01=this.items[i][j].style;
if(!_a01){
_a01="";
}
_a05+="<li class='"+_a01+"'><a href='javascript:void(0);'><span id='"+id+"'>"+name+"</span></a></li>";
}
var tree=Element.createHtml(["<ul class='SubMenu_tree'>",_a05,"</ul>"].join(""));
var _a09=tree.getElementsByTagName("li");
var _a0a=0;
for(var j=0,jj=this.items[i].length;j<jj;j++){
if(this.items[i][j]==null){
continue;
}
var obj={handler:this.items[i][j].handler,subMenu:this};
var _a0c=this._evItemClick.bindAsEventListener(obj);
var _a0d=_a09[_a0a++];
Event.observe(_a0d,"click",_a0c,this);
this.observers.push({element:_a0d,handler:_a0c});
}
_a03.append(tree);
this.content.append(_a03);
}
this.container.append(this.content);
return this.container;
};
this._evItemClick=function(e){
var _a0f=this.subMenu.container.getElementsByTagName("li");
for(var i=0,ii=_a0f.length;i<ii;i++){
Element.removeClassName(_a0f[i],"active");
}
var li=Event.findElement(e,"li");
if(li){
Element.addClassName(li,"active");
}
this.handler(e);
};
this.highlightSectionItem=function(_a12){
var _a13="SubMenu_"+this.name+"_"+_a12;
var _a14=this.container.getElementsByTagName("li");
for(var i=0,ii=_a14.length;i<ii;i++){
Element.removeClassName(_a14[i],"active");
var span=_a14[i].getElementsByTagName("span");
if(span.length>0){
if(span[0].id==_a13){
Element.addClassName(_a14[i],"active");
}
}
}
};
this._constructor(name);
}
}
if($Bootstrap.notLoaded("1dabdf0e1bf40f81c578447457aad2a0")){
Framework.register("Webmail.UI");
Webmail.UI.Sounds={_soundManager:null,_isFlashInstalled:null,_inited:false,initialize:function(){
if(wack.Browser.detectFlashVersion(8,0,0)){
this.createFlash();
}else{
this.createEmbed();
}
this._inited=true;
},play:function(_a17){
if(this._inited){
if(this._isFlashInstalled){
_soundManager.stop(_a17);
_soundManager.play(_a17);
}else{
var elem=$(_a17);
try{
elem.Play();
}
catch(e){
}
}
}else{
this.initialize();
}
},createFlash:function(){
this._isFlashInstalled=true;
_soundManager=new Webmail.UI.Sounds.SoundManager(Webmail.getGlobal("local_base_uri")+CFG_SWF_PATH);
_soundManager.onload=function(){
_soundManager.createSound(CFG_SOUND_ID,Webmail.getGlobal("local_base_uri")+CFG_SOUND_PATH);
};
_soundManager.onerror=function(){
Webmail.UI.Sounds.createEmbed();
};
_soundManager.beginDelayedInit();
},createEmbed:function(){
this._isFlashInstalled=false;
var _a19=(document.body?document.body:document.getElementsByTagName("div")[0]);
var _a1a=Element.createHtml(["<div id=\"SoundEmbed\">","</div>"].join(""));
_a19.appendChild(_a1a);
_a1a.innerHTML=["<embed src=\"",Webmail.getGlobal("local_base_uri"),CFG_SOUND_PATH,"\" autostart=false width=0 height=0 id=\"",CFG_SOUND_ID,"\" enablejavascript=true>"].join("");
},SoundManager:function(_a1b,smID){
var self=this;
this.version="V2.0b.20070415";
this.url=(_a1b||"soundmanager2.swf");
this.debugMode=false;
this.useConsole=true;
this.consoleOnly=false;
this.nullURL="data/null.mp3";
this.defaultOptions={"autoLoad":true,"stream":false,"autoPlay":false,"onid3":null,"onload":null,"whileloading":null,"onplay":null,"whileplaying":null,"onstop":null,"onfinish":null,"onbeforefinish":null,"onbeforefinishtime":5000,"onbeforefinishcomplete":null,"onjustbeforefinish":null,"onjustbeforefinishtime":200,"multiShot":false,"pan":0,"volume":100};
this.allowPolling=false;
this.enabled=false;
this.o=null;
this.id=(smID||"sm2movie");
this.oMC=null;
this.sounds=[];
this.soundIDs=[];
this.isIE=(navigator.userAgent.match(/MSIE/));
this.isSafari=(navigator.userAgent.match(/safari/i));
this.debugID="soundmanager-debug";
this._debugOpen=true;
this._didAppend=false;
this._appendSuccess=false;
this._didInit=false;
this._disabled=false;
this._hasConsole=(typeof console!="undefined"&&typeof console.log!="undefined");
this._debugLevels=!self.isSafari?["debug","info","warn","error"]:["log","log","log","log"];
this.getMovie=function(smID){
return self.isIE?window[smID]:(self.isSafari?document[smID]:document.getElementById(smID));
};
this.loadFromXML=function(_a1f){
try{
self.o._loadFromXML(_a1f);
}
catch(e){
self._failSafely();
return true;
}
};
this.createSound=function(_a20){
if(!self._didInit){
throw new Error("soundManager.createSound(): Not loaded yet - wait for soundManager.onload() before calling sound-related methods");
}
if(arguments.length==2){
_a20={"id":arguments[0],"url":arguments[1]};
}
var _a21=self._mergeObjects(_a20);
self._writeDebug("soundManager.createSound(): \"<a href=\"#\" onclick=\"soundManager.play('"+_a21.id+"');return false\" title=\"play this sound\">"+_a21.id+"</a>\" ("+_a21.url+")",1);
if(self._idCheck(_a21.id,true)){
self._writeDebug("sound "+_a21.id+" already defined - exiting",2);
return false;
}
self.sounds[_a21.id]=new Webmail.UI.Sounds.SMSound(self,_a21);
self.soundIDs[self.soundIDs.length]=_a21.id;
try{
self.o._createSound(_a21.id,_a21.onjustbeforefinishtime);
}
catch(e){
self._failSafely();
return true;
}
if(_a21.autoLoad||_a21.autoPlay){
self.sounds[_a21.id].load(_a21);
}
if(_a21.autoPlay){
self.sounds[_a21.id].playState=1;
}
};
this.destroySound=function(sID){
if(!self._idCheck(sID)){
return false;
}
for(var i=self.soundIDs.length;i--;){
if(self.soundIDs[i]==sID){
delete self.soundIDs[i];
continue;
}
}
self.sounds[sID].unload();
delete self.sounds[sID];
};
this.load=function(sID,_a25){
if(!self._idCheck(sID)){
return false;
}
self.sounds[sID].load(_a25);
};
this.unload=function(sID){
if(!self._idCheck(sID)){
return false;
}
self.sounds[sID].unload();
};
this.play=function(sID,_a28){
if(!self._idCheck(sID)){
if(typeof _a28!="Object"){
_a28={url:_a28};
}
if(_a28&&_a28.url){
self._writeDebug("soundController.play(): attempting to create \""+sID+"\"",1);
_a28.id=sID;
self.createSound(_a28);
}else{
return false;
}
}
self.sounds[sID].play(_a28);
};
this.start=this.play;
this.setPosition=function(sID,_a2a){
if(!self._idCheck(sID)){
return false;
}
self.sounds[sID].setPosition(_a2a);
};
this.stop=function(sID){
if(!self._idCheck(sID)){
return false;
}
self._writeDebug("soundManager.stop("+sID+")",1);
self.sounds[sID].stop();
};
this.stopAll=function(){
self._writeDebug("soundManager.stopAll()",1);
for(var _a2c in self.sounds){
if(self.sounds[_a2c] instanceof Webmail.UI.Sounds.SMSound){
self.sounds[_a2c].stop();
}
}
};
this.pause=function(sID){
if(!self._idCheck(sID)){
return false;
}
self.sounds[sID].pause();
};
this.resume=function(sID){
if(!self._idCheck(sID)){
return false;
}
self.sounds[sID].resume();
};
this.togglePause=function(sID){
if(!self._idCheck(sID)){
return false;
}
self.sounds[sID].togglePause();
};
this.setPan=function(sID,nPan){
if(!self._idCheck(sID)){
return false;
}
self.sounds[sID].setPan(nPan);
};
this.setVolume=function(sID,nVol){
if(!self._idCheck(sID)){
return false;
}
self.sounds[sID].setVolume(nVol);
};
this.setPolling=function(_a34){
if(!self.o||!self.allowPolling){
return false;
}
self._writeDebug("soundManager.setPolling("+_a34+")");
self.o._setPolling(_a34);
};
this.disable=function(){
if(self._disabled){
return false;
}
self._disabled=true;
self._writeDebug("soundManager.disable(): Disabling all functions - future calls will return false.",1);
for(var i=self.soundIDs.length;i--;){
self._disableObject(self.sounds[self.soundIDs[i]]);
}
self.initComplete();
self._disableObject(self);
};
this.getSoundById=function(sID,_a37){
if(!sID){
throw new Error("SoundManager.getSoundById(): sID is null/undefined");
}
var _a38=self.sounds[sID];
if(!_a38&&!_a37){
self._writeDebug("\""+sID+"\" is an invalid sound ID.",2);
}
return _a38;
};
this.onload=function(){
};
this.onerror=function(){
};
this._idCheck=this.getSoundById;
this._disableObject=function(o){
for(var _a3a in o){
if(typeof o[_a3a]=="function"&&typeof o[_a3a]._protected=="undefined"){
o[_a3a]=function(){
return false;
};
}
}
_a3a=null;
};
this._failSafely=function(){
var _a3b="http://www.macromedia.com/support/documentation/en/flashplayer/help/settings_manager04.html";
var _a3c="You may need to whitelist this location/domain eg. file:///C:/ or C:/ or mysite.com, or set ALWAYS ALLOW under the Flash Player Global Security Settings page. Note that this seems to apply only to file system viewing.";
var _a3d="<a href=\""+_a3b+"\" title=\""+_a3c+"\">view/edit</a>";
var _a3e="<a href=\""+_a3b+"\" title=\"Flash Player Global Security Settings\">FPGSS</a>";
if(!self._disabled){
self._writeDebug("soundManager: JS-&gt;Flash communication failed. Possible causes: flash/browser security restrictions ("+_a3d+"), insufficient browser/plugin support, or .swf not found",2);
self._writeDebug("Verify that the movie path of <em>"+self.url+"</em> is correct (<a href=\""+self.url+"\" title=\"If you get a 404/not found, fix it!\">test link</a>)",1);
if(self._didAppend){
if(!document.domain){
self._writeDebug("Loading from local file system? (document.domain appears to be null, this URL path may need to be added to 'trusted locations' in "+_a3e+")",1);
self._writeDebug("Possible security/domain restrictions ("+_a3d+"), should work when served by http on same domain",1);
}
}
self.disable();
}
};
this._createMovie=function(smID,_a40){
if(self._didAppend&&self._appendSuccess){
return false;
}
self._didAppend=true;
var html=["<object classid=\"clsid:d27cdb6e-ae6d-11cf-96b8-444553540000\" codebase=\"https://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0\" width=\"16\" height=\"16\" id=\""+smID+"\"><param name=\"movie\" value=\""+_a40+"\"><param name=\"quality\" value=\"high\"><param name=\"allowScriptAccess\" value=\"always\" /></object>","<embed name=\""+smID+"\" id=\""+smID+"\" src=\""+_a40+"\" width=\"1\" height=\"1\" quality=\"high\" allowScriptAccess=\"always\"></embed>"];
var _a42="<div id=\""+self.debugID+"-toggle\" style=\"position:fixed;_position:absolute;right:0px;bottom:0px;_top:0px;width:1.2em;height:1.2em;line-height:1.2em;margin:2px;padding:0px;text-align:center;border:1px solid #999;cursor:pointer;background:#fff;color:#333;z-index:706\" title=\"Toggle SM2 debug console\" onclick=\"soundManager._toggleDebug()\">-</div>";
var _a43="<div id=\""+self.debugID+"\" style=\"display:"+(self.debugMode&&((!self._hasConsole||!self.useConsole)||(self.useConsole&&self._hasConsole&&!self.consoleOnly))?"block":"none")+";opacity:0.85\"></div>";
var _a44="soundManager._createMovie(): appendChild/innerHTML set failed. Serving application/xhtml+xml MIME type? Browser may be enforcing strict rules, not allowing write to innerHTML. (PS: If so, this means your commitment to XML validation is going to break stuff now, because this part isn't finished yet. ;))";
var _a45="<div style=\"position:absolute;left:-256px;top:-256px;width:1px;height:1px\" class=\"movieContainer\">"+html[self.isIE?0:1]+"</div>"+(self.debugMode&&((!self._hasConsole||!self.useConsole)||(self.useConsole&&self._hasConsole&&!self.consoleOnly))&&!document.getElementById(self.debugID)?"x"+_a43+_a42:"");
var _a46=(document.body?document.body:document.getElementsByTagName("div")[0]);
if(_a46){
self.oMC=document.createElement("div");
self.oMC.className="movieContainer";
self.oMC.style.position="absolute";
self.oMC.style.left="-256px";
self.oMC.style.width="1px";
self.oMC.style.height="1px";
try{
_a46.appendChild(self.oMC);
var _a47=self.isIE;
self.oMC.innerHTML=html[_a47?0:1];
self._appendSuccess=true;
}
catch(e){
throw new Error(_a44);
}
if(!document.getElementById(self.debugID)&&((!self._hasConsole||!self.useConsole)||(self.useConsole&&self._hasConsole&&!self.consoleOnly))){
var _a48=document.createElement("div");
_a48.id=self.debugID;
_a48.style.display=(self.debugMode?"block":"none");
if(self.debugMode){
try{
var oD=document.createElement("div");
_a46.appendChild(oD);
oD.innerHTML=_a42;
}
catch(e){
throw new Error(_a44);
}
}
_a46.appendChild(_a48);
}
_a46=null;
}
self._writeDebug("-- SoundManager 2 Version "+self.version.substr(1)+" --",1);
self._writeDebug("soundManager._createMovie(): trying to load <a href=\""+_a40+"\" title=\"Test this link (404=bad)\">"+_a40+"</a>",1);
};
this._writeDebug=function(_a4a,_a4b){
if(!self.debugMode){
return false;
}
if(self._hasConsole&&self.useConsole){
console[self._debugLevels[_a4b]||"log"](_a4a);
if(self.useConsoleOnly){
return true;
}
}
var sDID="soundmanager-debug";
try{
var o=document.getElementById(sDID);
if(!o){
return false;
}
var p=document.createElement("div");
p.innerHTML=_a4a;
o.insertBefore(p,o.firstChild);
}
catch(e){
}
o=null;
};
this._writeDebug._protected=true;
this._writeDebugAlert=function(_a4f){
alert(_a4f);
};
this._toggleDebug=function(){
var o=document.getElementById(self.debugID);
var oT=document.getElementById(self.debugID+"-toggle");
if(!o){
return false;
}
if(self._debugOpen){
oT.innerHTML="+";
o.style.display="none";
}else{
oT.innerHTML="-";
o.style.display="block";
}
self._debugOpen=!self._debugOpen;
};
this._toggleDebug._protected=true;
this._debug=function(){
self._writeDebug("soundManager._debug(): sounds by id/url:",0);
for(var i=0,j=self.soundIDs.length;i<j;i++){
self._writeDebug(self.sounds[self.soundIDs[i]].sID+" | "+self.sounds[self.soundIDs[i]].url,0);
}
};
this._mergeObjects=function(_a53,oAdd){
var o1=_a53;
var o2=(typeof oAdd=="undefined"?self.defaultOptions:oAdd);
for(var o in o2){
if(typeof o1[o]=="undefined"){
o1[o]=o2[o];
}
}
return o1;
};
this.createMovie=function(sURL){
if(sURL){
self.url=sURL;
}
self._initMovie();
};
this._initMovie=function(){
if(self.o){
return false;
}
self.o=self.getMovie(self.id);
if(!self.o){
self._createMovie(self.id,self.url);
self.o=self.getMovie(self.id);
}
if(self.o){
self._writeDebug("soundManager._initMovie(): Got "+self.o.nodeName+" element ("+(self._didAppend?"created via JS":"static HTML")+")",1);
}
};
this.initComplete=function(){
if(self._didInit){
return false;
}
self._didInit=true;
self._writeDebug("-- SoundManager 2 "+(self._disabled?"failed to load":"loaded")+" ("+(self._disabled?"security/load error":"OK")+") --",1);
if(self._disabled){
self._writeDebug("soundManager.initComplete(): calling soundManager.onerror()",1);
self.onerror.apply(window);
return false;
}
self._writeDebug("soundManager.initComplete(): calling soundManager.onload()",1);
try{
self.onload.apply(window);
}
catch(e){
self._writeDebug("soundManager.onload() threw an exception: "+e.message,2);
throw e;
}
self._writeDebug("soundManager.onload() complete",1);
};
this.init=function(){
if(window.removeEventListener){
window.removeEventListener("load",self.beginInit,false);
}else{
if(window.detachEvent){
window.detachEvent("onload",self.beginInit);
}
}
try{
self.o._externalInterfaceTest();
self._writeDebug("Flash ExternalInterface call (JS -&gt; Flash) succeeded.",1);
if(!self.allowPolling){
self._writeDebug("Polling (whileloading/whileplaying support) is disabled.",1);
}
self.setPolling(true);
self.enabled=true;
}
catch(e){
self._failSafely();
self.initComplete();
return false;
}
self.initComplete();
};
this.beginDelayedInit=function(){
setTimeout(self.beginInit,200);
};
this.beginInit=function(){
self.createMovie();
self._initMovie();
setTimeout(self.init,1000);
};
this.destruct=function(){
if(self.isSafari){
for(var i=self.soundIDs.length;i--;){
if(self.sounds[self.soundIDs[i]].readyState==1){
self.sounds[self.soundIDs[i]].unload();
}
}
}
self.disable();
};
},SMSound:function(oSM,_a5b){
var self=this;
var sm=oSM;
this.sID=_a5b.id;
this.url=_a5b.url;
this.options=sm._mergeObjects(_a5b);
this.id3={};
self.resetProperties=function(_a5e){
self.bytesLoaded=null;
self.bytesTotal=null;
self.position=null;
self.duration=null;
self.durationEstimate=null;
self.loaded=false;
self.loadSuccess=null;
self.playState=0;
self.paused=false;
self.readyState=0;
self.didBeforeFinish=false;
self.didJustBeforeFinish=false;
};
self.resetProperties();
this.load=function(_a5f){
self.loaded=false;
self.loadSuccess=null;
self.readyState=1;
self.playState=(_a5f.autoPlay||false);
var _a60=sm._mergeObjects(_a5f);
if(typeof _a60.url=="undefined"){
_a60.url=self.url;
}
try{
sm._writeDebug("loading "+_a60.url,1);
sm.o._load(self.sID,_a60.url,_a60.stream,_a60.autoPlay,_a60.whileloading?1:0);
}
catch(e){
sm._writeDebug("SMSound().load(): JS-&gt;Flash communication failed.",2);
}
};
this.unload=function(){
sm._writeDebug("SMSound().unload(): \""+self.sID+"\"");
self.setPosition(0);
sm.o._unload(self.sID,sm.nullURL);
self.resetProperties();
};
this.play=function(_a61){
if(!_a61){
_a61={};
}
if(_a61.onfinish){
self.options.onfinish=_a61.onfinish;
}
if(_a61.onbeforefinish){
self.options.onbeforefinish=_a61.onbeforefinish;
}
if(_a61.onjustbeforefinish){
self.options.onjustbeforefinish=_a61.onjustbeforefinish;
}
var _a62=sm._mergeObjects(_a61);
if(self.playState==1){
var _a63=_a62.multiShot;
if(!_a63){
sm._writeDebug("SMSound.play(): \""+self.sID+"\" already playing? (one-shot)",1);
return false;
}else{
sm._writeDebug("SMSound.play(): \""+self.sID+"\" already playing (multi-shot)",1);
}
}
if(!self.loaded){
if(self.readyState==0){
sm._writeDebug("SMSound.play(): .play() before load request. Attempting to load \""+self.sID+"\"",1);
_a62.stream=true;
_a62.autoPlay=true;
self.load(_a62);
}else{
if(self.readyState==2){
sm._writeDebug("SMSound.play(): Could not load \""+self.sID+"\" - exiting",2);
return false;
}else{
sm._writeDebug("SMSound.play(): \""+self.sID+"\" is loading - attempting to play..",1);
}
}
}else{
sm._writeDebug("SMSound.play(): \""+self.sID+"\"");
}
if(self.paused){
self.resume();
}else{
self.playState=1;
self.position=(_a62.offset||0);
if(_a62.onplay){
_a62.onplay.apply(self);
}
self.setVolume(_a62.volume);
self.setPan(_a62.pan);
if(!_a62.autoPlay){
sm.o._start(self.sID,_a62.loop||1,self.position);
}
}
};
this.start=this.play;
this.stop=function(bAll){
if(self.playState==1){
self.playState=0;
self.paused=false;
if(sm.defaultOptions.onstop){
sm.defaultOptions.onstop.apply(self);
}
sm.o._stop(self.sID);
}
};
this.setPosition=function(_a65){
sm.o._setPosition(self.sID,_a65/1000,self.paused||!self.playState);
};
this.pause=function(){
if(self.paused){
return false;
}
sm._writeDebug("SMSound.pause()");
self.paused=true;
sm.o._pause(self.sID);
};
this.resume=function(){
if(!self.paused){
return false;
}
sm._writeDebug("SMSound.resume()");
self.paused=false;
sm.o._pause(self.sID);
};
this.togglePause=function(){
sm._writeDebug("SMSound.togglePause()");
if(!self.playState){
self.play({offset:self.position/1000});
return false;
}
if(self.paused){
sm._writeDebug("SMSound.togglePause(): resuming..");
self.resume();
}else{
sm._writeDebug("SMSound.togglePause(): pausing..");
self.pause();
}
};
this.setPan=function(nPan){
if(typeof nPan=="undefined"){
nPan=0;
}
sm.o._setPan(self.sID,nPan);
self.options.pan=nPan;
};
this.setVolume=function(nVol){
if(typeof nVol=="undefined"){
nVol=100;
}
try{
sm.o._setVolume(self.sID,nVol);
}
catch(e){
}
self.options.volume=nVol;
};
this._whileloading=function(_a68,_a69,_a6a){
self.bytesLoaded=_a68;
self.bytesTotal=_a69;
self.duration=_a6a;
self.durationEstimate=parseInt((self.bytesTotal/self.bytesLoaded)*self.duration);
if(self.readyState!=3&&self.options.whileloading){
self.options.whileloading.apply(self);
}
};
this._onid3=function(_a6b,_a6c){
sm._writeDebug("SMSound()._onid3(): \""+this.sID+"\" ID3 data received.");
var _a6d=[];
for(var i=0,j=_a6b.length;i<j;i++){
_a6d[_a6b[i]]=_a6c[i];
}
self.id3=sm._mergeObjects(self.id3,_a6d);
if(self.options.onid3){
self.options.onid3.apply(self);
}
};
this._whileplaying=function(_a6f){
if(isNaN(_a6f)||_a6f==null){
return false;
}
self.position=_a6f;
if(self.playState==1){
if(self.options.whileplaying){
self.options.whileplaying.apply(self);
}
if(self.loaded&&self.options.onbeforefinish&&self.options.onbeforefinishtime&&!self.didBeforeFinish&&self.duration-self.position<=self.options.onbeforefinishtime){
sm._writeDebug("duration-position &lt;= onbeforefinishtime: "+self.duration+" - "+self.position+" &lt= "+self.options.onbeforefinishtime+" ("+(self.duration-self.position)+")");
self._onbeforefinish();
}
}
};
this._onload=function(_a70){
_a70=(_a70==1?true:false);
sm._writeDebug("SMSound._onload(): \""+self.sID+"\""+(_a70?" loaded.":" failed to load (or loaded from cache - weird bug) - [<a href=\""+self.url+"\">test URL</a>]"));
self.loaded=_a70;
self.loadSuccess=_a70;
self.readyState=_a70?3:2;
if(self.options.onload){
self.options.onload.apply(self);
}
};
this._onbeforefinish=function(){
if(!self.didBeforeFinish){
self.didBeforeFinish=true;
if(self.options.onbeforefinish){
self.options.onbeforefinish.apply(self);
}
}
};
this._onjustbeforefinish=function(_a71){
if(!self.didJustBeforeFinish){
self.didJustBeforeFinish=true;
if(self.options.onjustbeforefinish){
self.options.onjustbeforefinish.apply(self);
}
}
};
this._onfinish=function(){
sm._writeDebug("SMSound._onfinish(): \""+self.sID+"\"");
self.playState=0;
self.paused=false;
if(self.options.onfinish){
self.options.onfinish.apply(self);
}
if(self.options.onbeforefinishcomplete){
self.options.onbeforefinishcomplete.apply(self);
}
self.setPosition(0);
self.didBeforeFinish=false;
self.didJustBeforeFinish=false;
};
}};
}
if($Bootstrap.notLoaded("1f18b6d83604ff76c154c83dc07a5567")){
Framework.register("Webmail.UI");
Webmail.UI.TabPanel=Class.create();
Webmail.UI.TabPanel.prototype={_active_tab:null,_container:null,initialize:function(_a72){
Object.bindObservers(this);
Object.bindCallbacks(this);
this._container=_a72;
$Templates.setDom(_a72);
var tabs=_a72.dom("tabs").getElementsByTagName("a");
for(var i=0,ii=tabs.length;i<ii;i++){
tabs[i]._index=i;
Event.observe(tabs[i],"click",this.evTabClick);
}
var _a75=Element.createHtml("<div class=\"filler\"> </div>");
_a72.dom("tabs").appendChild(_a75);
var _a76=Element.createHtml("<div style=\"clear:both;\"></div>");
_a72.dom("tabs").appendChild(_a76);
var _a77=_a72.dom("panels").childNodes;
for(var i=0,ii=_a77.length;i<ii;i++){
_a77[i].style.display="none";
}
},removeTab:function(_a78){
var _a79=this._container.dom("panels").childNodes[_a78];
var tab=this._container.dom("tabs").getElementsByTagName("a")[_a78];
tab.style.display="none";
},selectTab:function(_a7b){
if(this._active_tab!=null){
var _a7c=this._container.dom("panels").childNodes[this._active_tab];
_a7c.style.display="none";
var _a7d=this._container.dom("tabs").getElementsByTagName("a")[this._active_tab];
Element.removeClassName(_a7d,"selected");
if(_a7d.nextSibling){
Element.removeClassName(_a7d.nextSibling,"selected_sibling");
}
}
this._active_tab=_a7b;
var _a7c=this._container.dom("panels").childNodes[_a7b];
_a7c.style.display="";
var _a7d=this._container.dom("tabs").getElementsByTagName("a")[_a7b];
Element.addClassName(_a7d,"selected");
if(_a7d.nextSibling){
Element.addClassName(_a7d.nextSibling,"selected_sibling");
}
},evTabClick:null,_evTabClick:function(e){
var tab=Event.findElement(e,"a");
this.selectTab(tab._index);
}};
}
if($Bootstrap.notLoaded("74a91631aaff7f53ab59e39c303ac4a7")){
Framework.register("Webmail.UI");
Webmail.UI.TabSet=Class.create();
Webmail.UI.TabSet.prototype={_active:null,_tabs:[],initialize:function(){
Object.bindObservers(this);
},addTab:function(tab,_a81){
this._tabs.push(tab);
_a81.style.display="none";
tab.__container=_a81;
Event.observe(tab,"click",this.evTabClick);
},selectTab:function(tab){
if(this._active){
this._active.removeClassName("selected");
this._active.__selected=false;
if(this._active.nextSibling){
this._active.nextSibling.removeClassName("next");
}
this._active.__container.style.display="none";
}
this._active=tab;
this._active.__selected=true;
tab.__container.style.display="";
Element.addClassName(tab,"selected");
if(tab.nextSibling){
Element.addClassName(tab.nextSibling,"next");
}
},evTabClick:null,_evTabClick:function(e){
var tab=Event.findElement(e,"div");
this.selectTab(tab);
}};
}
if($Bootstrap.notLoaded("663477204e52322e93a80554faa8cc8e")){
Framework.register("Webmail.UI");
Webmail.UI.Tabs={createTabset:function(tabs,_a86){
_a86=Object.extend({onclick:null,allow_reclick:false},_a86||{});
var list=Element.create("ul",{className:"UI_Tabs"});
list._options=_a86;
list._active_key=null;
for(tab in tabs){
var curr=tabs[tab];
var _a89=Element.create("li");
_a89.innerHTML="<div>"+curr.text+"</div>";
_a89._tabkey=tab;
this.evTabClick=this._evTabClick.bindAsEventListener(this);
Event.observe(_a89,"click",this.evTabClick);
if(curr.menu&&curr.menu.length>0){
var _a8a=Element.create("img");
_a8a.src="images/blank.gif";
this.evArrowClick=this._evArrowClick.bindAsEventListener(this);
Event.observe(_a8a,"click",this.evArrowClick);
_a89._menu_opts=curr.menu;
$(_a89.firstChild).append(_a8a);
}
list.append(_a89);
curr=_a89=null;
}
$(list.firstChild).addClassName("first");
return list;
},disableMenuItem:function(_a8b,_a8c,_a8d){
this._setMenuItemEnabled(_a8b,_a8c,_a8d,false);
},disableTab:function(_a8e,_a8f){
this._setTabEnabled(_a8e,_a8f,false);
},enableMenuItem:function(_a90,_a91,_a92){
this._setMenuItemEnabled(_a90,_a91,_a92,true);
},enableTab:function(_a93,_a94){
this._setTabEnabled(_a93,_a94,true);
},hideMenuItem:function(_a95,_a96,_a97){
this._setMenuItemVisible(_a95,_a96,_a97,false);
},setActiveTab:function(_a98,key){
if(_a98._active_key){
var _a9a=this._findTab(_a98,_a98._active_key);
if(_a9a){
_a9a.removeClassName("active");
if(_a9a.nextSibling){
$(_a9a.nextSibling).removeClassName("active_sibling");
}
}
}
_a98._active_key=key;
var _a9b=this._findTab(_a98,key);
if(_a9b){
_a9b.addClassName("active");
if(_a9b.nextSibling){
$(_a9b.nextSibling).addClassName("active_sibling");
}
}
},showMenuItem:function(_a9c,_a9d,_a9e){
this._setMenuItemVisible(_a9c,_a9d,_a9e,true);
},_findTab:function(_a9f,key){
var _aa1=_a9f.childNodes;
for(var i=0,ii=_aa1.length;i<ii;i++){
if(_aa1[i]._tabkey==key){
return $(_aa1[i]);
}
}
return null;
},_setMenuItemEnabled:function(_aa3,_aa4,_aa5,_aa6){
var tab=this._findTab(_aa3,_aa4);
if(!tab){
return;
}
if(_aa6){
tab._menu.enableItem(_aa5);
}else{
tab._menu.disableItem(_aa5);
}
},_setMenuItemVisible:function(_aa8,_aa9,_aaa,_aab){
var tab=this._findTab(_aa8,_aa9);
if(!tab){
return;
}
if(!tab._menu){
for(var i=0,ii=tab._menu_opts.length;i<ii;i++){
if(tab._menu_opts[i].id==_aaa){
tab._menu_opts[i].visible=_aab;
break;
}
}
return;
}
if(_aab){
tab._menu.showItem(_aaa);
}else{
tab._menu.hideItem(_aaa);
}
},_setTabEnabled:function(_aae,_aaf,_ab0){
var tab=this._findTab(_aae,_aaf);
if(!tab){
return;
}
if(_ab0){
if(wack.Browser.is_safari){
tab.removeClassName("disabled");
}else{
tab.show();
}
}else{
if(wack.Browser.is_safari){
tab.addClassName("disabled");
}else{
tab.hide();
}
}
},_evArrowClick:function(e){
var tab=Event.findElement(e,"li");
if(tab._menu_opts){
tab._menu=new $UI.Menu(tab._menu_opts,{top_element:tab});
tab._menu_opts=null;
}
if(tab._menu){
if(tab._menu.shown){
tab._menu.hide();
}else{
tab._menu.show();
}
}
Event.stop(e);
},evArrowClick:null,_evTabClick:function(e){
var tab=Event.findElement(e,"li");
var _ab6=tab.parentNode;
if(!_ab6._options.allow_reclick&&tab._tabkey==_ab6._active_key){
return;
}
$UI.load(function(){
if(_ab6._options.onclick){
_ab6._options.onclick(tab._tabkey);
}else{
this.setActiveTab(_ab6,tab._tabkey);
}
}.bind(this),e,"li");
},evTabClick:null};
}
if($Bootstrap.notLoaded("c17860433e4fb656d28007e725167c3e")){
Framework.register("Webmail.UI.Decorators");
Webmail.UI.Decorators.DefaultText=Class.create();
Webmail.UI.Decorators.DefaultText.prototype={initialize:function(_ab7,text){
_ab7.__default__=text;
_ab7.getValue=function(raw){
return $UI.Decorators.DefaultText.getValue(_ab7,raw);
};
_ab7.setValue=function(v){
$UI.Decorators.DefaultText.setValue(_ab7,v);
};
_ab7.setDefault=function(d){
$UI.Decorators.DefaultText.setDefault(_ab7,d);
};
Event.observe(_ab7,"focus",$UI.Decorators.DefaultText.evFocus);
Event.observe(_ab7,"blur",$UI.Decorators.DefaultText.evBlur);
_ab7.setValue("");
}};
wack.extend(Webmail.UI.Decorators.DefaultText,{getValue:function(_abc,raw){
if(_abc.value==_abc.__default__){
return "";
}else{
var _abe=_abc.value;
if(!raw){
_abe=_abe.replace(/\r/g,"");
}
return _abe;
}
},setDefault:function(_abf,text){
_abf.__default__=text;
_abf.setValue("");
},setValue:function(_ac1,_ac2){
if(_ac2){
_ac1.value=_ac2;
this._setStyle(_ac1,false);
}else{
_ac1.value=_ac1.__default__;
this._setStyle(_ac1,true);
}
},_setStyle:function(_ac3,_ac4){
if(_ac4){
Element.addClassName(_ac3,"defaulted");
}else{
Element.removeClassName(_ac3,"defaulted");
}
},evBlur:null,_evBlur:function(e){
var _ac6=Event.element(e);
_ac6.setValue(_ac6.value);
},evFocus:null,_evFocus:function(e){
var _ac8=Event.element(e);
if(_ac8.value==_ac8.__default__){
_ac8.value="";
this._setStyle(_ac8,false);
}
}});
Object.bindObservers(Webmail.UI.Decorators.DefaultText);
}
if($Bootstrap.notLoaded("c89d527c13e70960bf253e04724f2b6c")){
Framework.register("Webmail.UI.Decorators");
Webmail.UI.Decorators.LabelPair=Class.create();
Webmail.UI.Decorators.LabelPair.prototype={_next_id:0,_paired:[],initialize:function(){
Object.bindObservers(this);
},addButton:function(){
},addLabel:function(){
},evClickLabel:null,_evClickLabel:function(e){
}};
}
if($Bootstrap.notLoaded("0695842fcaf14b8baf8c8ad49fbe03a4")){
Framework.register("Webmail.UI.Decorators");
Webmail.UI.Decorators.RadioCheckboxes=Class.create();
Webmail.UI.Decorators.RadioCheckboxes.prototype={_next_id:0,_checkboxes:[],initialize:function(){
Object.bindObservers(this);
},addGroup:function(_aca){
this._next_id++;
for(var i=0,ii=_aca.length;i<ii;i++){
this._checkboxes.push(_aca[i]);
_aca[i]._radio_group=this._next_id;
Event.observe(_aca[i],"click",this.evCheckboxClick);
}
},evCheckboxClick:null,_evCheckboxClick:function(e){
var cbox=Event.element(e);
var _ace=cbox._radio_group;
if(!cbox.checked){
return;
}
for(var i=0,ii=this._checkboxes.length;i<ii;i++){
if(this._checkboxes[i]._radio_group!=_ace){
this._checkboxes[i].checked=false;
}
}
}};
}
if($Bootstrap.notLoaded("c9203116213a0314f2c7e04853963224")){
Framework.register("Webmail.UI.Decorators");
Webmail.UI.Decorators.TextEnter=Class.create();
Webmail.UI.Decorators.TextEnter.prototype={initialize:function(_ad0,_ad1,_ad2){
Event.observe(_ad0,"keypress",function(e){
if(e.keyCode==Event.KEY_RETURN){
Function.release(function(){
_ad1(e);
});
}
});
}};
}
if($Bootstrap.notLoaded("018383728acce658cca88f6accda3ea0")){
Framework.register("Webmail.Contacts");
Webmail.Contacts.Init={_autocomplete_data:[],_autocomplete:null,_available_modes:[],_curr_mode:null,_constants:[],initialize:function(){
this._constants=$Preload["Contacts.constants"].split(",");
var _ad4={};
_ad4[wm_Contacts_MY_CONTACTS_MODE]=L("Contacts.General.MyContacts");
if($Preload["Contacts.COMPANY_DIRECTORY_AVAILABLE"]){
_ad4[wm_Contacts_COMPANY_DIRECTORY_MODE]=L("Contacts.General.CompanyDirectory");
}
for(var mode in _ad4){
this._available_modes.push({mode:mode,mode_name:_ad4[mode]});
}
if(this.hasMode(wm_Contacts_COMPANY_DIRECTORY_MODE)==false){
$$MainMenu.hideMenuItem("contacts","company_directory");
}
},addToAutocomplete:function(name,_ad7,id,_ad9){
_ad7=_ad7||false;
var _ada=$Bootstrap.getAppWindow().Webmail.Contacts.Init._autocomplete;
if(_ada==null){
return;
}
if(id){
_ada.add(id,name,_ad9);
}else{
_ada.add(name,name,"");
}
if(!_ad7){
_ada.notify();
}
},removeFromAutocomplete:function(_adb,_adc){
_adc=_adc||false;
var _add=$Bootstrap.getAppWindow().Webmail.Contacts.Init._autocomplete;
if(_add==null){
return;
}
if(typeof _adb!="array"&&typeof _adb!="object"){
_adb=[_adb];
}
for(var i=0,ii=_adb.length;i<ii;i++){
_add.remove(_adb[i]);
}
if(!_adc){
_add.notify();
}
},getAutocompleteData:function(_adf,_ae0){
if($Bootstrap.getAppWindow()!=window){
$Bootstrap.getAppWindow().Webmail.Contacts.Init.getAutocompleteData(_adf,_ae0);
return;
}
if(this._autocomplete!=null){
_ae0(this._autocomplete.toArray(_adf));
}else{
this.reloadAutocomplete(_adf,_ae0);
}
},getAvailableModes:function(){
return this._available_modes;
},hasMode:function(mode){
var _ae2=this.getAvailableModes();
for(var i=0,ii=_ae2.length;i<ii;i++){
if(_ae2[i].mode==mode){
return true;
}
}
return false;
},reloadAutocomplete:function(_ae4,_ae5){
if(this._autocomplete){
delete this._autocomplete;
delete this._autocomplete_data;
}
this._autocomplete=new Webmail.Contacts.AutoComplete();
if(window.$Contacts){
window.$Contacts.autoComplete=this._autocomplete;
}
this._autocomplete.addChangeListener(function(){
this._autocomplete_data=this._autocomplete.toArray();
}.bind(this));
if($Prefs.isAutocompleteEnabled()){
this._getAutoCompleteData(function(_ae6){
if(_ae6.exception){
return;
}
for(var i=0,ii=_ae6.length;i<ii;i++){
var id=_ae6[i].id;
var name=_ae6[i].name;
var _aea=_ae6[i].email;
this._autocomplete.add(id,name,_aea);
}
this._autocomplete.notify();
if(_ae4){
_ae5(this._autocomplete.toArray(_ae4));
}
}.bind(this));
}
},_getAutoCompleteData:function(_aeb){
$Data.request("Contacts.getAutoCompleteData",{callback:function(_aec){
_aeb(_aec);
}.bind(this),background:true});
}};
}
if($Bootstrap.notLoaded("e4275ba7b562d36d0cf91c772c9f0ec9")){
Framework.register("Webmail.Contacts");
Webmail.Contacts.AutoComplete=function(){
this._constructor=function(){
this.changeListeners=new Array();
this.data=new Object();
this.tmp=new Object();
};
this.add=function(id,name,_aef){
if(this.tmp[name+","+_aef]==1){
return;
}
var _af0="";
var type=0;
if(_aef&&_aef.trim().length>0){
if(name){
_af0="\""+name+"\"";
}
if(_af0.length>0){
_af0+=" ";
}
_af0+="<"+_aef+">";
var _af2=id.substr(0,1);
if(_af2=="D"){
type=wm_Contacts_TYPE_PROFILE;
}else{
if(_af2=="A"){
type=wm_Contacts_TYPE_ALIAS;
}else{
type=wm_Contacts_TYPE_INDIVIDUAL;
}
}
}else{
_af0=name;
type=wm_Contacts_TYPE_GROUP;
}
if(this.data[id]==null){
this.data[id]={values:[_af0],name:name,emails:[_aef],type:type};
}else{
this.data[id].values.push(_af0);
this.data[id].emails.push(_aef);
}
this.tmp[name+","+_aef]=1;
};
this.remove=function(id){
if(this.data[id]){
var name=this.data[id].name;
var _af5=this.data[id].emails;
this.data[id]=null;
for(var i=0,ii=_af5.length;i<ii;i++){
this.tmp[name+","+_af5[i]]=0;
}
}
};
this.toArray=function(type){
var out=new Array();
if(typeof type=="number"||typeof type=="string"){
type=[type];
}
for(var i in this.data){
if(this.data[i]){
if(!type||type.indexOf(this.data[i].type)!=-1){
var _afa=this.data[i].values;
for(var j=0,jj=_afa.length;j<jj;j++){
out.push(_afa[j]);
}
}
}
}
return out;
};
this.notify=function(){
this._evChange();
};
this._evChange=function(){
for(var i=0,ii=this.changeListeners.length;i<ii;i++){
this.changeListeners[i]();
}
};
this.addChangeListener=function(_afd){
this.changeListeners.push(_afd);
};
this._constructor();
};
}
if($Bootstrap.notLoaded("5cf7e56fd0413785e929ce8dc800f4c6")){
Framework.create("Webmail.Calendar.Reminders",{_cache:false,_reminder_win:null,initialize:function(){
Object.bindCallbacks(this);
$Dispatcher.subscribe("Calendar.Events.saveEvent",this.cbUpdateReminders);
$Dispatcher.subscribe("Calendar.Events.deleteEvent",this.cbUpdateReminders);
$Dispatcher.subscribe("Calendar.Events.inviteRespond",this.cbUpdateReminders);
this._updateReminderCache("init");
new wack.BigInterval(function(){
this._updateReminderCache("interval");
}.bind(this),60*24);
setTimeout(function(){
setInterval(this._doReminders.bind(this),60000);
this._doReminders();
}.bind(this),((60-(new Date).getSeconds())%60)*1000);
},deletePopupReminderOccurrences:function(_afe,_aff){
this._clearCache();
_afe=JSON.parse(_afe);
$Data.doBatch(function(){
$Data.request("Calendar.deletePopupReminderOccurrences",{callback:_aff},_afe);
this._updateReminderCache();
}.bind(this));
},getPastPopupReminders:function(_b00,dt,src){
src=src||null;
$Data.request("Calendar.getPastPopupReminderOccurrences",{callback:_b00,handle_conn_err:false,background:true},dt,src);
},snooze:function(_b03,_b04,_b05){
_b05=_b05||Prototype.emptyFunction;
if(typeof _b03!="object"){
_b03=JSON.parse(_b03);
}
this._clearCache();
$Data.doBatch(function(){
$Data.request("Calendar.snooze",{callback:_b05},_b03,_b04);
this._updateReminderCache();
}.bind(this));
},_clearCache:function(){
this._cache=false;
},_createWindow:function(_b06){
return $Popup.create({height:270,width:420,title:L("Calendar.F.Reminder.S"),onload:function(win){
win.Calendar_POPUP_REMINDER_INTERVAL=Calendar_POPUP_REMINDER_INTERVAL;
win.REQUIRE("combo/reminder_popup");
win.Webmail.Popups.Reminder.create(_b06);
},show_loading:false});
},_doReminders:function(){
var _b08=this._getPastPopupReminders();
if(this._isPopupOpen()||_b08.length>0){
if(!this._isPopupOpen()){
this._reminder_win=this._createWindow(_b08);
}else{
try{
this._reminder_win.Webmail.Popups.Reminder.instance.populate(_b08);
}
catch(e){
}
}
}
},_getPastPopupReminders:function(){
var _b09=[];
var now=new Date();
for(var i=0;i<this._cache.length;i++){
var _b0c=newDateTime(this._cache[i].occurrence.display_dt);
if(_b0c<=now){
_b09.push(this._cache[i]);
}
}
return _b09;
},_isPopupOpen:function(){
return (this._reminder_win&&!this._reminder_win.closed);
},_updateReminderCache:function(src){
src=src||"nosrc";
var _b0e=(new Date).add(0,0,0,0,Calendar_POPUP_REMINDER_INTERVAL);
this.getPastPopupReminders(function(_b0f){
if(!_b0f.exception){
this._cache=_b0f;
}
}.bind(this),_b0e.format("%Y-%m-%d %H:%i:59"),src);
},cbUpdateReminders:null,_cbUpdateReminders:function(_b10){
if(_b10){
this._updateReminderCache();
}
}});
}
if($Bootstrap.notLoaded("ca94108028a03a1c71b1d658ac6abac7")){
Framework.register("Webmail.Locale");
if(typeof window.$Locale=="undefined"){
$Locale=Webmail.Locale;
}
Webmail.Locale.DateTime={americanDateFromInput:function(_b11){
if($Settings.getDateFormat()==wm_Settings_DATE_INTL){
return wack.DateTime.intlToAmerican(_b11);
}else{
return _b11;
}
},basicDate:function(date){
return this._formatDate(date,{intl:"%d/%m/%Y",american:"%m/%d/%Y"});
},basicTime:function(date){
return date.format(this._getTimeFormat());
},fullYear:function(date){
return date.format("%Y");
},fullDisplay:function(date,_b16){
if(_b16==true){
var _b17="";
}else{
var _b17=this._getTimeFormat();
}
return this._formatDate(date,{intl:"%l %j %M, %Y "+_b17,american:"%l %M %j, %Y "+_b17});
},fullDayDate:function(date){
return this._formatDate(date,{intl:"%l, %j %M, %Y",american:"%l, %M %j, %Y"});
},longDayDate:function(date){
return this._formatDate(date,{intl:"%l, %j %F",american:"%l, %F %j"});
},shortDayDate:function(date){
return this._formatDate(date,{intl:"%D, %j %F",american:"%D, %F %j"});
},shortDayShortDate:function(date){
return this._formatDate(date,{intl:"%D %j/%n",american:"%D %n/%j"});
},_formatDate:function(date,_b1d){
var _b1e;
if($Settings.getDateFormat()==wm_Settings_DATE_INTL){
_b1e=_b1d.intl;
}else{
_b1e=_b1d.american;
}
return date.format(_b1e);
},_getTimeFormat:function(){
if($Settings.getHourFormat()==wm_Settings_HOUR_24){
return "%H:%i";
}else{
return "%g:%i %a";
}
}};
}
if($Bootstrap.notLoaded("f3a0aa3a13ae70c291d830256b0c9301")){
Framework.register("Webmail");
$Help=Webmail.Help={POPUP_HEIGHT:600,POPUP_WIDTH:500,_type:0,_id:null,setPage:function(_b1f){
return;
var _b20=_b1f.split(":");
this._type=_b20[0]||0;
this._id=_b20[1]||"";
},show:function(){
var _b21={};
_b21[0]="getallcategories";
_b21[HELP_CONTEXT]="contextsensitive";
_b21[HELP_CATEGORY]="getcategory";
_b21[HELP_TOPIC]="getspecifictopic";
var url=Webmail.getBaseUri()+"p/help/webmail_help.php?"+"action="+_b21[this._type]+"&id="+(this._id||"");
url=Webmail.makeSidUrl(url);
wack.Browser.popup(url,this.POPUP_HEIGHT,this.POPUP_WIDTH,null,null,true,true);
}};
}
if($Bootstrap.notLoaded("9f9b7d287886d18492b7fe815ff469b5")){
Framework.register("Webmail");
$Templates=Webmail.Templates={setDom:function(elem,_b24){
elem._dom_config=_b24;
elem._dom_cache={};
if(!_b24){
this._findElements(elem);
}
elem.dom=function(key){
return $Templates._callDom(elem,key);
};
return elem;
},_callDom:function(elem,key){
if(elem._dom_cache[key]){
return elem._dom_cache[key];
}
if(typeof (elem._dom_config)=="undefined"){
return false;
}
if(typeof (elem._dom_config[key])=="string"){
this._parseDomString(elem,key);
}
if(typeof elem._dom_config[key]=="undefined"){
return false;
}
return (elem._dom_cache[key]=elem._dom_config[key](elem));
},_findElements:function(elem,root){
var ref=null;
if(!root){
if((ref=elem.getAttribute("_ref"))){
elem._dom_cache[ref]=elem;
}
}
root=root||elem;
var _b2b=elem.childNodes;
for(var i=0,ii=_b2b.length;i<ii;i++){
if(_b2b[i].getAttribute&&(ref=_b2b[i].getAttribute("_ref"))){
root._dom_cache[ref]=_b2b[i];
}
if(_b2b[i].childNodes.length>0){
this._findElements(_b2b[i],root);
}
}
},_parseDomString:function(elem,key){
var _b2f=["childNodes","firstChild","lastChild","previousSibling","nextSibling","parentNode","cells","rows"];
var _b30="";
var path=elem._dom_config[key].substr(1);
var _b32=path.split("/");
for(var i=0,ii=_b32.length;i<ii;i++){
var _b34=_b32[i].indexOf("[");
var tag="";
if(_b34==-1){
_b34=false;
tag=_b32[i];
}else{
tag=_b32[i].substring(0,_b34);
}
if(_b2f.include(tag)){
_b30+="."+tag;
}else{
if(elem._dom_config[tag]){
if(typeof (elem._dom_config[tag])=="string"){
this._parseDomString(elem,tag);
}
_b30+=".dom(\""+tag+"\")";
}else{
if(tag!=""){
_b30+=".getElementsByTagName(\""+tag+"\")";
}
}
}
if(_b34!==false){
_b30+=_b32[i].substr(_b34);
}
}
elem._dom_config[key]=new Function("elem","return elem"+_b30+";");
}};
}
if($Bootstrap.notLoaded("21ee0ac5ebc37fee676af99534149802")){
Framework.register("Webmail");
$Widget=Webmail.Widgets=Class.create();
$Widget.prototype={container:null};
}
if($Bootstrap.notLoaded("ef6b22bb0b97697f89753ac87f22f22e")){
Framework.register("Webmail");
$Widgets=Webmail.Widgets={clearStatus:function(){
$UI.clearStatus.apply($UI,arguments);
},create:function(_b36,_b37){
parent_prototype=Object.copy((_b37||$Widget).prototype);
var base=function(){
};
base.prototype=Object.extend(parent_prototype,_b36);
Object.extend(base,this.Attributes);
return base;
},load:function(_b39){
REQUIRE("widgets/"+_b39.replace(/\./g,"_"));
},error:function(){
$UI.error.apply($UI,arguments);
},showStatus:function(){
$UI.showStatus.apply($UI,arguments);
}};
$Widgets.Attributes={_cache:null,factory:function(){
if(!this._cache){
this._cache=[];
}
if(this._cache.length>0){
var _b3a=this._cache.pop();
_b3a.reset.apply(_b3a,arguments);
return _b3a;
}else{
var _b3a=new this();
_b3a.initialize.apply(_b3a,arguments);
_b3a.container.__widget__=_b3a;
return _b3a;
}
},destroy:function(_b3b){
if(!this._cache){
this._cache=[];
}
this._cache.push(_b3b);
}};
function $C(_b3c){
return _b3c.container;
}
function $W(_b3d){
if(_b3d.__widget__){
return _b3d.__widget__;
}else{
if(_b3d.container){
return _b3d;
}else{
if(_b3d.constructor==Array){
var _b3e=[];
for(var i=0;i<_b3d.length;i++){
_b3e.push($W(_b3d[i]));
}
return _b3e;
}else{
return null;
}
}
}
}
}
if($Bootstrap.notLoaded("b6fd8d6012ba24451970f9bddaf585aa")){
Framework.register("Webmail.Widgets");
$Widgets.ContextMenu=$Widgets.create({_data:null,_element:null,_menu:null,_menu_items:null,_show_menu:null,hide:function(){
this._menu.hide();
},initialize:function(elem,_b41){
Object.bindObservers(this);
Object.bindCallbacks(this);
this.options=_b41||{};
this.container={};
this._elem=elem;
Event.observe(this._elem,"contextmenu",this.evRightClick);
this._show_menu=true;
},evRightClick:null,_evRightClick:function(e){
if(Keystroke.shift()){
return;
}
if((wack.Browser.is_safari&&wack.Browser.is_mac)&&e.button==2){
return;
}
var elem=this._findClickedElement(e);
if(!elem){
return;
}
if(this._show_menu){
this._data=this._getData(elem);
if(!this._data){
return;
}
if(!this._menu){
this._menu_items=this._getMenuItems();
this._menu=$Widgets.Menu.factory(this._menu_items,{onclick:this.hide.bind(this)});
}
var _b44=$C(this._menu);
document.body.appendChild(_b44);
this._menu.show(this._menu_items);
var _b45=wack.Browser.getDimensions();
var _b46=Element.getDimensions(_b44.dom("content"));
var _b47=Event.pointerY(e);
var _b48=Event.pointerX(e);
var left=_b48;
var top=_b47;
if((_b48+_b46.width+10)>=_b45[1]){
left=_b48-_b46.width;
}
if((_b47+_b46.height+10)>=_b45[0]){
top=_b47-_b46.height;
}
_b44.style.position="absolute";
_b44.style.top=top+"px";
_b44.style.left=left+"px";
$Dispatcher.publish("Core.RightClick",this);
}
Event.stop(e);
this._show_menu=true;
}});
$Widgets.ContextMenu=wack.extend($Widgets.ContextMenu,{_inited:false,_active:null,cbSubRightClick:null,_cbSubRightClick:function(_b4b){
if(this._active!=_b4b){
this.evDocumentClick();
}
this._active=_b4b;
if(this._inited==true){
return;
}
this._inited=true;
Event.observe(document,"click",this.evDocumentClick);
},evDocumentClick:null,_evDocumentClick:function(e){
if(!this._active){
return;
}
this._active.hide();
this._active=null;
}});
Object.bindObservers($Widgets.ContextMenu);
Object.bindCallbacks($Widgets.ContextMenu);
$Dispatcher.subscribe("Core.RightClick",$Widgets.ContextMenu.cbSubRightClick);
}
if($Bootstrap.notLoaded("570cc99ae2acc8794da9dafa9ae32b21")){
Framework.register("Webmail");
$FolderList=Webmail.FolderList=new function(){
this.cache={folders:$Preload["FolderList.folders"],inbox:$Preload["FolderList.cache.inbox"]};
this._processed_regular=false;
this._pending_changes={};
this.addSetting=function(_b4d,_b4e,_b4f){
if(this.cache.folders){
for(var i=0,ii=this.cache.folders.length;i<ii;i++){
if(this.cache.folders[i].raw==_b4d){
this.cache.folders[i][_b4e]=_b4f;
return true;
}
}
}
return false;
};
this.changeFolderStatus=function(_b51,_b52,_b53){
for(var i=0,ii=this.cache.folders.length;i<ii;i++){
if(this.cache.folders[i].raw==_b51){
var _b55=this.cache.folders[i].total||0;
var _b56=this.cache.folders[i].unread||0;
var _b57=_b55+_b52;
var _b58=_b56+_b53;
if(_b57<0){
_b57=0;
}
if(_b58<0){
_b58=0;
}
this.cache.folders[i].total=_b57;
this.cache.folders[i].unread=_b58;
if(_b51==CFG_FOLDER_INBOX){
Webmail.updateTitlebar();
}
$$FolderManager.SubMenu.setFolderCounts(_b51,_b57,_b58);
$$FolderManager.setFolderCounts(_b51,_b57,_b58);
return;
}
}
};
this.compareUnread=function(_b59,_b5a){
var f1=parseInt(_b59.unread);
var f2=parseInt(_b5a.unread);
if(f1<f2){
return 1;
}else{
if(f1>f2){
return -1;
}else{
if(_b59.path<_b5a.path){
return -1;
}else{
if(_b59.path>_b5a.path){
return 1;
}else{
return 0;
}
}
}
}
};
this.createFolder=function(_b5d,_b5e,_b5f){
$UI.showStatus(L("Folders.St.Create"));
_b5d=String(_b5d);
_b5e=String(_b5e);
var _b60;
$Data.doBatch(function(){
$Data.request("FolderList.createFolder",{callback:function(_b61){
_b60=_b61;
}},_b5d,_b5e);
$FolderList.updateFolders();
},{callback:function(_b62){
if(!_b60.exception){
$FolderList.setFolderStatus(_b60,0,0);
}
if(_b5f){
_b5f(_b60);
}
$UI.clearStatus();
}});
};
this.deleteFolders=function(_b63,_b64){
if(_b63.length>0){
var _b65;
$UI.showStatus(L("Folders.St.Delete"));
$Data.doBatch(function(){
$Data.request("FolderList.deleteFolders",{callback:function(_b66){
_b65=_b66;
}},_b63);
$FolderList.updateFolders();
},{callback:function(_b67){
$UI.clearStatus();
if(_b64&&_b65){
_b64(_b65);
}
}});
}
};
this.getAllUnread=function(_b68){
var _b69=0;
var _b6a=this.cache.folders;
var _b6b=false;
for(var i=0,ii=_b6a.length;i<ii;i++){
if(_b68){
if($FolderList.isSpam(_b6a[i].raw)||$FolderList.isTrash(_b6a[i].raw)){
_b6b=true;
}
}
if(!_b6b){
_b69+=_b6a[i].unread||0;
}
_b6b=false;
}
return _b69;
};
this.getFolders=function(){
var me=$Bootstrap.getAppWindow().$FolderList;
if(me._processed_regular){
var _b6e=me.cache.folders;
}else{
var _b6e=me._processFolders(me.cache.folders);
me._processed_regular=true;
}
return _b6e.slice(0);
};
this.getIndentLevel=function(_b6f){
var _b70=_b6f;
_b6f=_b6f.replace(CFG_FOLDER_PREFIX,"");
var _b71=_b6f.split(".");
var _b72=_b71.length-1;
if(_b72<0){
_b72=0;
}
return _b72;
};
this.getName=function(_b73){
if(typeof _b73=="undefined"){
return false;
}
for(var i=0,ii=this.cache.folders.length;i<ii;i++){
if(this.cache.folders[i].raw==_b73){
var name=this.cache.folders[i].name;
if(typeof name!="undefined"){
return name;
}
}
}
switch(_b73){
case CFG_FOLDER_INBOX:
return L("Folders.N.Inbox");
break;
case CFG_FOLDER_DRAFTS:
return L("Folders.N.Drafts");
break;
case CFG_FOLDER_SENT:
return L("Folders.N.Sent");
break;
case CFG_FOLDER_SPAM:
return L("Folders.N.Spam");
break;
case CFG_FOLDER_TRASH:
return L("Folders.N.Trash");
break;
default:
var _b76=_b73.split(".").pop();
return _b76;
break;
}
};
this.getUnreadMessages=function(_b77){
return this.getNewMessages(_b77);
};
this.getNewMessages=function(_b78){
_b78=_b78.raw||_b78;
if(this.cache.folders){
for(var i=0,ii=this.cache.folders.length;i<ii;i++){
if(this.cache.folders[i].raw==_b78){
var _b7a=this.cache.folders[i].unread;
if(typeof _b7a!="undefined"){
return _b7a;
}
}
}
}
if(_b78==CFG_FOLDER_INBOX&&this.cache.inbox){
return this.cache.inbox.unread;
}
return null;
};
this.getFolderChildren=function(_b7b){
_b7b+=".";
var _b7c=new Array();
for(var i=0;i<this.cache.folders.length;i++){
var _b7e=this.cache.folders[i].raw;
if(_b7e.indexOf(_b7b)!=-1){
_b7c.push(_b7e);
}
}
return _b7c;
};
this.getDropdownOptions=function(opts){
var _b80=Object.extend({include_special:false,indent_char:"&nbsp;",tab_width:2,ret_array:false},opts||{});
var _b81=(_b80.ret_array?[]:"");
var _b82=this.getFolders();
var i=0;
for(i,ii=_b82.length;i<ii;i++){
if(!_b80.include_special&&this.isPermanentFolder(_b82[i].raw)){
continue;
}
var _b84=$FolderList.getIndentLevel(_b82[i].raw);
var _b85=String.repeat(_b80.indent_char,_b84*_b80.tab_width);
var _b86=_b85+_b82[i].name.replace("&","&amp;");
_b86=_b86.replace(/>/g,"&gt;");
_b86=_b86.replace(/</g,"&lt;");
if(_b80.ret_array){
var _b87={"text":_b86,"path":_b82[i].raw};
_b81.push(_b87);
}else{
_b81+="<option value=\""+_b82[i].raw+"\">"+_b86+"</option>";
}
}
return _b81;
};
this.getFolderSize=function(_b88){
var _b89=this.cache.folder_sizes;
if(defined(_b89)&&defined(_b89[_b88])){
return _b89[_b88];
}else{
return false;
}
};
this.getParent=function(_b8a){
var _b8b=_b8a.lastIndexOf(".");
if(_b8b==-1){
return "";
}
var _b8c=_b8a.substring(0,_b8b);
return _b8c;
};
this.getPrefetchFolderArray=function(){
var _b8d=this.getFolders();
_b8d.quicksort(this.compareUnread);
var _b8e=[];
var _b8f=0;
for(var i=0;_b8f<=CFG_FOLDER_PREFETCH_LIMIT&&i<_b8d.length;i++){
if(_b8d[i].unread<CFG_FOLDER_PREFETCH_UNREAD_LIMIT){
_b8e.push(_b8d[i].raw);
if(_b8d[i].total>0){
_b8f++;
}
}
}
return _b8e;
};
this.getSetting=function(_b91,_b92,_b93){
if(this.cache.folders){
for(var i=0,ii=this.cache.folders.length;i<ii;i++){
if(this.cache.folders[i].raw==_b91){
return this.cache.folders[i][_b92];
}
}
}
return _b93||false;
};
this.getTotalMessages=function(_b95){
_b95=_b95.raw||_b95;
if(this.cache.folders){
for(var i=0,ii=this.cache.folders.length;i<ii;i++){
if(this.cache.folders[i].raw==_b95){
var _b97=this.cache.folders[i].total;
if(typeof _b97!="undefined"){
return _b97;
}
}
}
}
if(_b95==CFG_FOLDER_INBOX&&this.cache.inbox){
return this.cache.inbox.total;
}
return null;
};
this.isDraft=function(_b98){
var _b99=CFG_FOLDER_DRAFTS;
if(_b98==_b99||this.isWithin(_b98,_b99)){
return true;
}else{
return false;
}
};
this.isSent=function(_b9a){
return (this.isWithin(_b9a,CFG_FOLDER_SENT));
};
this.isSpam=function(_b9b){
return (this.isWithin(_b9b,CFG_FOLDER_SPAM));
};
this.isPermanentFolder=function(_b9c){
var perm=[CFG_FOLDER_DRAFTS,CFG_FOLDER_SENT,CFG_FOLDER_SPAM,CFG_FOLDER_TRASH];
if(_b9c==CFG_FOLDER_INBOX){
return true;
}else{
for(var i=0,ii=perm.length;i<ii;i++){
if(_b9c==perm[i]){
return true;
}
}
}
return false;
};
this.isTrash=function(_b9f){
return (this.isWithin(_b9f,CFG_FOLDER_TRASH));
};
this.isWithin=function(_ba0,_ba1){
if(_ba0&&_ba0.substr(0,_ba1.length+1)==_ba1+"."){
return true;
}else{
if(_ba0&&_ba0==_ba1){
return true;
}else{
if(_ba1=="folders_main"&&_ba0.substring(0,CFG_FOLDER_INBOX.length)==CFG_FOLDER_INBOX){
return true;
}
return false;
}
}
};
this.moveFolders=function(_ba2,dest,_ba4){
if(_ba2.length>0){
var _ba5=$$FolderManager._getNewFolderNames(_ba2,dest);
var _ba6;
$UI.showStatus(L("Folders.St.Move"));
$Data.doBatch(function(){
$Data.request("FolderList.moveFolders",{callback:function(_ba7){
_ba6=_ba7;
}},_ba2,dest);
$FolderList.updateFolders();
},{callback:function(_ba8){
$UI.clearStatus();
if(_ba4){
if(!_ba8.exception){
for(var i=0;i<_ba5.length;i++){
$FolderList.setFolderStatus(_ba5[i].name,_ba5[i].total,_ba5[i].unread);
}
}
_ba4(_ba6);
}
}});
}
};
this.purgeFolder=function(_baa){
var _bab=!$Settings.isPurgePermanent();
$UI.showStatus(L("Folder.St.Purge"));
$Data.request("FolderList.purgeFolder",{callback:function(_bac){
if(!_bac.exception){
if(_bab&&_baa!=CFG_FOLDER_TRASH&&_baa!=CFG_FOLDER_SPAM){
var _bad=$FolderList.getTotalMessages(_baa);
var _bae=$FolderList.getUnreadMessages(_baa);
$FolderList.changeFolderStatus(CFG_FOLDER_TRASH,_bad,_bae);
}
$FolderList.setFolderStatus(_baa,0,0);
$Dispatcher.purgeFolder(_baa);
}
$UI.clearStatus();
}},_baa);
};
this.renameFolder=function(_baf,_bb0,_bb1){
var _bb2=$FolderList.getTotalMessages(_baf);
var _bb3=$FolderList.getUnreadMessages(_baf);
var _bb4=$FolderList.getFolderChildren(_baf);
_bb4.push(_baf);
var _bb5=new Array();
for(var i=0;i<_bb4.length;i++){
_bb5.push({name:_bb4[i],total:$FolderList.getTotalMessages(_bb4[i]),unread:$FolderList.getUnreadMessages(_bb4[i])});
}
var _bb7;
$UI.showStatus(L("Folders.St.Rename"));
$Data.doBatch(function(){
$Data.request("FolderList.renameFolder",{callback:function(_bb8){
_bb7=_bb8;
}},_baf,_bb0);
$FolderList.updateFolders();
},{callback:function(_bb9){
if(_bb7&&!_bb7.exception){
for(var i=0;i<_bb5.length;i++){
$FolderList.setFolderStatus(_bb5[i].name.replace(_baf,_bb7),_bb5[i].total,_bb5[i].unread);
}
}
if(_bb1){
_bb1(_bb7||_bb9);
}
$UI.clearStatus();
}});
};
this.restoreFolderStatus=function(_bbb){
for(var i=0;i<_bbb.length;i++){
this.setFolderStatus(_bbb[i].name,_bbb[i].total,_bbb[i].unread);
}
};
this.sanitizeFolderName=function(_bbd){
if(!this.validateFolderName(_bbd)){
_bbd=_bbd.replace(/["\\\/\.]+/g,"_");
}
return _bbd;
};
this.saveFolderStatus=function(_bbe){
var _bbf=new Array();
for(var i=0;i<this.cache.folders.length;i++){
var _bc1=this.cache.folders[i];
var _bc2=false;
for(var j=0;j<_bbe;j++){
if(this.cache.folders[i].length==_bbe[j]){
_bc2=true;
break;
}
}
if(!_bc2){
_bbf.push({name:_bc1.raw,total:_bc1.total,unread:_bc1.unread});
}
}
return _bbf;
};
this.setFolderStatus=function(_bc4,_bc5,_bc6){
for(var i=0,ii=this.cache.folders.length;i<ii;i++){
if(this.cache.folders[i].raw==_bc4){
if(this._pending_changes[_bc4]){
_bc5+=this._pending_changes[_bc4].total;
_bc6+=this._pending_changes[_bc4].unread;
delete (this._pending_changes[_bc4]);
}
if(_bc5<0){
_bc5=0;
}
if(_bc6<0){
_bc6=0;
}
this.cache.folders[i].total=_bc5;
var _bc8=this.cache.folders[i].unread;
this.cache.folders[i].unread=_bc6;
if(_bc4==CFG_FOLDER_INBOX){
Webmail.updateTitlebar();
}
$$FolderManager.SubMenu.setFolderCounts(_bc4,_bc5,_bc6);
$$FolderManager.setFolderCounts(_bc4,_bc5,_bc6);
return;
}
}
};
this.updateFolders=function(_bc9){
var _bca=this.saveFolderStatus(this.cache.folders["regular"]);
$Data.request("LeftMenu.getFolderList",{callback:function(_bcb){
this.cache.folders=_bcb;
this._processed_regular=false;
this.restoreFolderStatus(_bca);
$Dispatcher.publish("Email.Folders.update");
if(_bc9){
_bc9();
}
}.bind(this),request_type:CFG_AJAX_READ});
};
this.updateSizes=function(_bcc){
var _bcd=this.getFolders();
var _bce="folder_sizes";
if(!this.cache[_bce]){
this.cache[_bce]={};
}
var _bcf=[];
for(var i=0,ii=_bcd.length;i<ii;i++){
_bcf.push(String(_bcd[i].raw));
}
$UI.showStatus(L("Folders.St.Sizes"));
$Data.request("FolderList.getFolderSizes",{callback:function(_bd1){
if(!_bd1.exception){
this.cache[_bce]=_bd1;
$Dispatcher.updateFolderSizes();
if(_bcc){
_bcc(_bd1);
}
}
$UI.clearStatus();
}.bind(this),request_type:CFG_AJAX_READ},_bcf);
};
this.validateFolderName=function(_bd2){
var _bd3=/["\/\\\.\~]+/;
if(!_bd2||_bd3.test(_bd2)){
return false;
}else{
return true;
}
};
this._processFolders=function(_bd4){
return _bd4;
};
this.cbSubStatusChange=null;
this._cbSubStatusChange=function(_bd5,_bd6,_bd7){
_bd6=_bd6||0;
_bd7=_bd7||0;
if(!this._pending_changes[_bd5]){
this._pending_changes[_bd5]={total:_bd6,unread:_bd7};
}else{
this._pending_changes[_bd5].total+=_bd6;
this._pending_changes[_bd5].unread+=_bd7;
}
this.changeFolderStatus(_bd5,_bd6,_bd7);
};
this.cbSubUpdate=null;
this._cbSubUpdate=function(_bd8,_bd9,_bda){
this.setFolderStatus(_bd8,_bd9,_bda);
};
this.cbSubMessageMove=null;
this._cbSubMessageMove=function(_bdb,_bdc){
var _bdd={};
var _bde=0;
var _bdf=0;
for(var i=0,ii=_bdb.length;i<ii;i++){
if(!_bdd[_bdb[i].folder]){
_bdd[_bdb[i].folder]={total:0,unread:0};
}
if(_bdb[i].unread){
_bdd[_bdb[i].folder].unread++;
_bdf++;
}
_bdd[_bdb[i].folder].total++;
_bde++;
}
for(folder in _bdd){
$Dispatcher.publish("Folders.status_change",folder,-_bdd[folder].total,-_bdd[folder].unread);
}
if(_bdc){
$Dispatcher.publish("Folders.status_change",_bdc,_bde,_bdf);
}
};
this.cbSubOutboundCall=null;
this._cbSubOutboundCall=function(){
delete (this._pending_changes);
this._pending_changes={};
};
};
Object.bindCallbacks($FolderList);
$Dispatcher.subscribe("Folders.status_change",$FolderList.cbSubStatusChange);
$Dispatcher.subscribe("Folders.update",$FolderList.cbSubUpdate);
$Dispatcher.subscribe("Message.move",$FolderList.cbSubMessageMove);
$Dispatcher.subscribe("Folders.pending_call",$FolderList.cbSubOutboundCall);
}
if($Bootstrap.notLoaded("dc5abcbff7b9d75e4105ee9b2a212989")){
Framework.register("Webmail.Widgets");
$Widgets.ContextMenu.Folders=$Widgets.create({_findClickedElement:function(e){
var _be2=Event.findElement(e,"a");
if(!_be2||(_be2==document)){
return false;
}
if(_be2.getAttribute("isfolder")=="true"){
return _be2;
}else{
return false;
}
},_getData:function(elem){
var _be4=elem.parentNode;
var _be5=_be4._folder;
return _be5;
},_getMenuItems:function(){
var _be6=[{label:L("Folders.L.AddFolder"),callback:this.cbAddFolder},{new_section:true},{label:function(){
return L("L.Delete")+" \""+this._data.name+"\"";
}.bind(this),callback:this.cbDeleteFolder,disabled:this._isPermanent.bind(this)},{label:function(){
return L("Folders.L.Edit")+" \""+this._data.name+"\"";
}.bind(this),callback:this.cbEditFolder,disabled:this._isPermanent.bind(this)},{label:function(){
return L("Folders.Menu.Move")+" \""+this._data.name+"\"";
}.bind(this),callback:this.cbMoveFolder,disabled:this._isPermanent.bind(this)},{label:function(){
return L("Folders.L.Purge")+" \""+this._data.name+"\"";
}.bind(this),callback:this.cbPurgeFolder}];
return _be6;
},_isPermanent:function(){
return $FolderList.isPermanentFolder(this._data.raw);
},cbAddFolder:null,_cbAddFolder:function(){
$Widgets.load("Email.FolderForm");
var form=$Widgets.Email.FolderForm.factory();
form.populate(null,this._data.raw);
form.show();
},cbDeleteFolder:null,_cbDeleteFolder:function(){
if(confirm(L("Folders.Confirm.Delete"))){
var _be8=[this._data.raw];
var _be9=$FolderList.getFolderChildren(this._data.raw);
for(var i=0,ii=_be9.length;i<ii;i++){
_be8.push(_be9[i]);
}
$FolderList.deleteFolders(_be8,function(_beb){
if(_beb.exception){
$UI.error(_beb.message);
}
}.bind(this));
}
},cbEditFolder:null,_cbEditFolder:function(){
$$FolderManager.edit.showForm(this._data);
},cbMoveFolder:null,_cbMoveFolder:function(){
$Widgets.load("FolderPicker");
var _bec=$Widgets.FolderPicker.factory({callback:this.cbMoveFolderChoose});
_bec.show();
},cbMoveFolderChoose:null,_cbMoveFolderChoose:function(_bed){
var _bee=[this._data.raw];
var dest=_bed;
$FolderList.moveFolders(_bee,dest,function(_bf0){
if(_bf0.exception){
$UI.error(_bf0.message);
}
});
},cbPurgeFolder:null,_cbPurgeFolder:function(){
var raw=this._data.raw;
if($Settings.isPurgePermanent()||raw==CFG_FOLDER_TRASH||raw==CFG_FOLDER_SPAM){
var _bf2=L("Folders.Confirm.PurgeFolderPerm");
}else{
var _bf2=L("Folders.Confirm.PurgeFolder");
}
if(confirm(_bf2)){
$FolderList.purgeFolder(raw,function(_bf3){
if(_bf3.exception){
$UI.error(_bf3.message);
}
});
}
}},$Widgets.ContextMenu);
}
if($Bootstrap.notLoaded("0c4c3419edab2d0edf78ddcc85bc6659")){
Framework.register("Webmail");
Webmail.AbstractPrefetcher=wack.Class.create();
Webmail.AbstractPrefetcher.prototype={_options:{prefetch_buffer:null,interval_sleep_time:null},interval_timer:null,_list:null,_exclusion_list:null,_active:false,initialize:function(list,_bf5,_bf6){
this._exclusion_list=_bf5||new wack.List();
this._options=wack.extend({prefetch_buffer:1,interval_sleep_time:60},_bf6||{});
this._list=new wack.List();
var _bf7;
list=list||new wack.List();
while(_bf7=list.shiftTopItem()){
this.addPrefetchItem(_bf7);
}
},addPrefetchItem:function(item){
if(this._list&&!this._list.contains(item)&&!this._exclusion_list.contains(item)){
this._list.add(item);
return true;
}
return false;
},start:function(){
if(this._current_timer){
window.clearInterval(this.interval_timer);
}
this._active=true;
this.prefetchNextItems();
},stop:function(){
this._active=false;
if(this.interval_timer){
window.clearInterval(this.interval_timer);
}
},completeFetch:function(_bf9){
},prefetchNextItems:function(){
if(this._active&&!this._list.isEmpty()){
var _bfa;
var _bfb=[];
while((_bfb.length<this._options.prefetch_buffer)&&(_bfa=this._list.shiftTopItem())){
_bfb.push(_bfa);
}
this.sendRequest(_bfb,this.cbProcessFetchResponse);
}
},sendRequest:function(item,_bfd){
},cbInt_resumePrefetch:null,_cbInt_resumePrefetch:function(){
if(!this._list.isEmpty()){
window.clearInterval(this._interval_timer);
this.prefetchNextItems();
}
},cbProcessFetchResponse:null,_cbProcessFetchResponse:function(_bfe){
this.completeFetch(_bfe);
if(!this._list.isEmpty()){
setTimeout(function(){
this.prefetchNextItems();
}.bind(this),CFG_FOLDER_PREFETCH_WAIT);
}else{
this._interval_timer=window.setInterval(this.cbInt_resumePrefetch,this._options.interval_sleep_time*1000);
}
}};
}
if($Bootstrap.notLoaded("1b4cb9de4155ad7dd41e888b8bca2e31")){
Framework.register("Webmail");
$MessageList=Webmail.MessageList=new function(){
this.is_dragging=false;
this.is_loading_folder=false;
this.msg_cache=$Preload["MessageList.msg_cache"];
this._folder_path=$Preload["MessageList.folder"];
this._total=$Preload["MessageList.total"];
this._unseen=$Preload["MessageList.unseen"];
this._start=1;
this._cache={};
this.active=function(){
if($Controller._active_module_key=="MessageList"&&!this.isSearch()){
return true;
}else{
return false;
}
};
this.checkFolder=function(_bff){
if(this.active()&&this.folder()==_bff){
$MessageList.refillList();
}
};
this.deleteMessages=function(_c00,_c01,_c02,_c03){
var _c04=false;
if(_c00.folder){
_c00=[_c00];
_c04=true;
}
$Data.request("Mail.deleteMessages",{callback:function(_c05){
if(!_c05.exception){
if(!_c03){
var _c06=($Settings.isDeletePermanent()||_c02?null:CFG_FOLDER_TRASH);
$Bootstrap.getAppWindow().$Dispatcher.publish("Message.move",_c00,_c06,_c04);
}
if(_c01){
_c01(_c05);
}
$UI.clearStatus();
}else{
if(_c05.code==Mail_ERROR_QUOTA){
REQUIRE("combo/dialogs");
var _c07=new $DialogsPrompt(L("Mlist.E.Quota"),L("Mlist.E.Delete.Quota"),function(){
$UI.clearStatus();
});
_c07.addButton(L("L.Yes"),function(){
$MessageList.deleteMessages(_c00,function(_c08){
if(typeof _c08=="object"){
_c08.force=true;
}else{
_c08={};
_c08.force=true;
}
_c01(_c08);
},true);
}.bind(this));
_c07.show();
}else{
$UI.error(_c05.message+" ("+_c05.code+")",function(){
$UI.clearStatus();
});
}
}
}},_c00,_c02);
};
this.emptyList=function(_c09){
if(this.folder()==_c09){
$$MessageList.clearList();
}
};
this.flagMessages=function(_c0a,flag,_c0c){
_c0c=_c0c||Prototype.emptyFunction;
$Data.request("Mail.setFlag",{callback:function(_c0d){
var sort=$MessageList.sort();
if(sort==10||sort==11){
$MessageList.refillList();
}
_c0c(_c0d);
}},_c0a,flag);
};
this.folder=function(_c0f){
if(typeof _c0f=="undefined"){
return (this.isSearch()?this._search_path:this._folder_path);
}else{
this.isSearch()?this._search_path=_c0f:this._folder_path=_c0f;
}
};
this.forwardMessages=function(_c10){
$Dispatcher.compose(false,wm_Compose_FWD_MULTIPLE,false,false,false,false,false,_c10);
};
this.getMessages=function(_c11,_c12,_c13){
_c12=Object.extend({background:false,prefix:null,break_cache:false,ignore_errors:false,sort:-1,start:1},_c12||{});
if(this.isSearch()){
this.isSearch(false);
$$MessageList.clearList();
$$MessageList.showMessageList();
}
var _c14=[];
var _c15=false;
var _c16=false;
var _c17=false;
if(this.folder()==_c11&&this.start()==_c12.start&&_c12.sort=="-1"&&!_c12.break_cache){
if(!_c12.background){
$UI.showStatus(L("Mlist.St.GetMail"));
}
_c14=$MessageList.getFoldersCachedUids(_c11);
}else{
var _c17=true;
$$MessageList.last_clicked=false;
var _c18=this.getFullCache(_c11);
var _c19=(this.hasCache(_c11)&&_c12.start==1&&_c12.sort==-1&&!_c12.break_cache&&(_c18["sort"]==this.sort()||this.folder()!=_c11));
if(_c19){
$$MessageList.clearList();
if(_c18["unread"]<$FolderList.getUnreadMessages(_c11)){
$UI.showStatus(L("Mlist.St.GetMail"));
}
var _c1a=($FolderList.isWithin(_c11,CFG_FOLDER_SENT)||$FolderList.isWithin(_c11,CFG_FOLDER_DRAFTS));
$$MessageList.fillList(_c18["messages"],{use_to_field:_c1a});
$$MessageList.resetScroll();
_c12.sort=_c18["sort"];
this.total(_c18["total"]);
this.unseen($FolderList.getUnreadMessages(_c11));
_c14=$MessageList.getFoldersCachedUids(_c11);
_c16=true;
}else{
if(_c12.sort==-1){
$$MessageList.setPreviewPaneClear(true);
$$MessageList.current_message=false;
}
this.loadingFolder(true);
$UI.showStatus(L("Mlist.St.GetMail"));
_c15=true;
}
if(_c13){
_c13({folder:_c11,msgs:_c18["messages"],show_num:_c18["show_num"],sort:_c12.sort,start:_c12.start,total:_c18["total"],unseen:_c18["unread"]});
}
}
this.folder(_c11);
this.start(_c12.start);
this.sort(_c12.sort);
if(_c16){
$$MessageList.updateHeader();
}
if(_c17){
$$MessageList.updateDropdowns(true);
}
var _c1b=function(r){
if($Controller.getCurrentModule()!="MessageList"||$MessageList.folder()!=r["folder"]){
return;
}
if(_c15){
var uid=false;
if($MessageList.sort()!="-1"&&$$MessageList.current_message){
uid=$$MessageList.current_message.obj.getUniqueId();
}
$$MessageList.clearList(uid);
}
$MessageList.sort(r["sort"]);
$MessageList.start(r["start"]);
$MessageList.total(r["total"]);
$MessageList.unseen(r["unseen"]);
$Dispatcher.publish("Folders.update",_c11,r["total"],r["unseen"]);
$MessageList.cbGetMessages(r["msgs"]);
if(_c12.sort!="-1"&&$$MessageList.current_message){
$$MessageList.scrollToMessage($$MessageList.current_message,$$MessageList.dom.getListContainer());
}
$UI.clearStatus();
}.bind(this);
$Dispatcher.publish("Folders.pending_call");
$Data.request("MessageList.getMessages",{background:_c12.background,callback:function(_c1e){
_c1b(_c1e);
if(_c13){
_c13(_c1e);
}
}.bind(this),call_groups:"MessageList.load",handle_conn_err:!_c12.ignore_errors,request_type:CFG_AJAX_READ},_c11,_c14,_c12);
};
this.prefetchFolderMessageHeaders=function(_c1f,_c20,_c21){
_c21=_c21||Prototype.emptyFunction;
_c20=Object.extend({background:true,prefix:null,sort:-1,start:1,update:true,cluster:"prefetch"},_c20||{});
var _c22={};
if(_c20.update){
_c22=$MessageList.getFoldersCachedUids(_c1f);
}
$Data.request("MessageList.prefetchFolderMessageHeaders",{background:_c20.background,callback:_c21,call_groups:"MessageList.load",handle_conn_err:false,request_type:CFG_AJAX_READ,cluster:_c20.cluster},_c1f,_c22,_c20);
};
this.getUniqueId=function(_c23,uid){
var _c25=uid+"|"+_c23;
return _c25;
};
this.getUniqueIdParts=function(uid){
var _c27=uid.split("|");
var _c28={id:_c27[0],folder:_c27[1]};
return _c28;
};
this.isAscending=function(){
return !(this.sort()%2==0);
};
this.isSearch=function(s){
if(typeof s=="undefined"){
if(typeof this._search_status=="undefined"){
this._search_status=false;
}
return this._search_status;
}else{
this._search_status=s;
}
};
this.isUnread=function(_c2a){
var _c2b=this.getUniqueId(_c2a.folder,_c2a.id);
var _c2c=$$MessageList.getCurrentList();
if(_c2c[_c2b]){
return !_c2c[_c2b].obj.read();
}else{
if(this.isCachable(_c2a.folder)){
var _c2d=this.getCache(_c2a.folder);
if(_c2d&&_c2d[_c2b]){
return !_c2d[_c2b]["seen"];
}
}
}
return null;
};
this.loadingFolder=function(_c2e){
if(typeof _c2e=="undefined"){
return this.is_loading_folder;
}else{
this.is_loading_folder=_c2e;
}
};
this.markAsRead=function(_c2f,read,_c31){
_c31=_c31||Prototype.emptyFunction;
$Data.request("Mail.setReadStatus",{callback:_c31},_c2f,read);
};
this.moveMessages=function(_c32,_c33,_c34){
var _c35=false;
if(_c32.folder){
_c32=[_c32];
_c35=true;
}
var _c33=_c33;
$Data.request("Mail.moveMessages",{callback:function(_c36){
if(!_c36.exception){
if(_c34){
_c34(_c36);
}
$UI.clearStatus();
$Bootstrap.getAppWindow().$Dispatcher.publish("Message.move",_c32,_c33,_c35);
}else{
if(_c36.code==Mail_ERROR_QUOTA){
$UI.error(L("Mlist.E.Move.Quota"),function(){
$UI.clearStatus();
$("Search_move_dd").selectedIndex=0;
$("move_dd").selectedIndex=0;
});
}else{
$UI.error(L("E.UnknownCode",_c36.code),function(){
$UI.clearStatus();
$("Search_move_dd").selectedIndex=0;
$("move_dd").selectedIndex=0;
});
}
}
}},_c32,_c33);
};
this.moveToTrash=function(m){
var mln=$MessageList;
if(typeof m=="undefined"){
return ($Prefs.getUserPref("mail_delete_to_trash",1)==1?true:false);
}else{
mln._move_to_trash=$Prefs.setUserPref("mail_delete_to_trash",(m?1:0),false);
}
};
this.previewPane=function(p){
if(typeof p=="undefined"){
return $Settings.usePreviewPane();
}else{
$Prefs.setUserPref("disp_use_previewpane",(p?1:0),false);
if($("message_list")){
$$MessageList.usePreviewPane(p,true);
}
}
};
this.refillList=function(){
if(this.isSearch()){
return;
}
this.getMessages(this.folder(),{ignore_errors:true,start:this.start(),background:true});
};
this.reportNotSpam=function(_c3a,_c3b){
var _c3c=false;
if(_c3a.folder){
_c3a=[_c3a];
_c3c=true;
}
$Data.request("Mail.reportNotSpam",{callback:function(_c3d){
if(_c3d.exception){
$UI.clearStatus();
$UI.error(_c3d.message);
}else{
if(_c3b){
_c3b(_c3d);
}
$UI.clearStatus();
var _c3e=[];
for(var i=0,ii=_c3a.length;i<ii;i++){
if(_c3a[i].folder==CFG_FOLDER_SPAM){
_c3e.push(_c3a[i]);
}
}
if(_c3e.length>0){
$Bootstrap.getAppWindow().$Dispatcher.publish("Message.move",_c3e,CFG_FOLDER_INBOX,_c3c);
}
}
}.bind(this)},_c3a);
};
this.reportSpam=function(_c40,_c41){
_c41=_c41||Prototype.emptyFunction;
var _c42=false;
if(_c40.folder){
_c40=[_c40];
_c42=true;
}
$Data.request("Mail.reportSpam",{callback:function(_c43){
if(_c43.exception){
$UI.clearStatus();
$UI.error(_c43.message);
}else{
$UI.clearStatus();
var _c44=[];
for(var i=0,ii=_c40.length;i<ii;i++){
if(_c40[i].folder!=CFG_FOLDER_SPAM){
_c40[i].unread=false;
_c44.push(_c40[i]);
}
}
if(_c44.length>0){
$Bootstrap.getAppWindow().$Dispatcher.publish("Message.move",_c44,CFG_FOLDER_SPAM,_c42);
}
if(_c41){
_c41(_c43);
}
}
}.bind(this)},_c40);
};
this.showNum=function(s){
if(typeof s=="undefined"){
return Number($Prefs.getUserPref("mail_per_page",50));
}else{
$Prefs.setUserPref("mail_per_page",s,false);
}
};
this.sort=function(s){
if(typeof s=="undefined"){
return $FolderSettings.getSetting(this.folder(),"sort");
}else{
$FolderSettings.changeSetting(this.folder(),"sort",s);
return s;
}
};
this.start=function(s){
if(typeof s=="undefined"){
return (this._start?this._start:0);
}else{
this._start=Number(s);
}
};
this.total=function(t){
if(typeof t=="undefined"){
return (this._total);
}else{
this._total=Number(t);
}
};
this.unseen=function(u){
if(typeof u=="undefined"){
return (this._unseen?this._unseen:0);
}else{
this._unseen=Number(u);
}
};
this.zipMessages=function(_c4b,_c4c){
var _c4d=$("Mlist_zip_fetch")||Element.createHtml(["<iframe style=\"height:0;width:0;border:0;margin:0;\" id=\"Mlist_zip_fetch\" name=\"Mlist_zip_fetch\">","</iframe>"].join(""));
var _c4e=$("Mlist_zip_form")||Element.createHtml(["<form style=\"height:0;width:0;border:0;margin:0;\" action=\"archive/fetch.php\" method=\"post\" id=\"Mlist_zip_form\" target=\"Mlist_zip_fetch\">","<input type=\"hidden\" name=\"",CFG_SESSION_NAME,"\" value=\"",Webmail.getSessionId(),"\" />","<input name=\"msg_list\" type=\"hidden\" />","</form>"].join(""));
Element.append(window.document.body,_c4d,_c4e);
$("Mlist_zip_form").msg_list.value=JSON.stringify(_c4b);
$("Mlist_zip_form").submit();
return;
};
this.createCache=function(_c4f){
this._cache[_c4f]={messages:[],sort:null,total:null,unread:null};
};
this.hasCache=function(_c50){
var _c51=this.getFullCache(_c50);
if(!_c51){
return false;
}
if(_c51.messages.length==0&&_c51.sort===null&&_c51.total===null&&_c51.unread===null){
return false;
}
return true;
};
this.getCache=function(_c52){
if(this.isCachable(_c52)){
if(!this._cache[_c52]){
this.createCache(_c52);
}
return this._cache[_c52]["messages"];
}
return false;
};
this.getFoldersCachedUids=function(_c53){
if(!this._cache[_c53]){
return [];
}
var _c54=[];
for(var uid in this._cache[_c53].messages){
_c54.push(uid);
}
return _c54;
};
this.getFullCache=function(_c56){
if(this.isCachable(_c56)){
if(!this._cache[_c56]){
this.createCache(_c56);
}
return this._cache[_c56];
}
return false;
};
this.removeFromCache=function(_c57,uid){
if(this.isCachable(_c57)){
if(this._cache[_c57]){
var _c59=this.getUniqueId(_c57,uid);
delete (this._cache[_c57]["messages"][_c59]);
}
}
};
this.setCache=function(list,_c5b,_c5c){
if(!this._cache[_c5b]){
this.createCache(_c5b);
}
for(option in _c5c){
if(option=="messages"){
for(msg in this._cache[_c5b][option]){
delete (this._cache[_c5b][option][msg]);
}
}
delete (this._cache[_c5b][option]);
}
this._cache[_c5b]=Object.extend({messages:list,sort:this._cache[_c5b]["sort"],total:this._cache[_c5b]["total"],unread:this._cache[_c5b]["unread"]},_c5c||{});
return true;
};
this.isCachable=function(_c5d,_c5e){
var _c5f=[CFG_FOLDER_INBOX];
return true;
};
this.updateCachedMsg=function(_c60,uid,_c62){
var _c63=this.getUniqueId(_c60,uid);
if(!this.isCachable(_c60,_c63)){
return;
}
var _c64=this.getFullCache(_c60);
var _c65=_c64["messages"];
var _c66=false;
if(_c65[_c63]){
for(property in _c62){
if(_c65[_c63][property]!=_c62[property]){
_c65[_c63][property]=_c62[property];
_c66=true;
if(property=="read"){
if(_c62["read"]){
_c64["unread"]--;
}else{
_c64["unread"]++;
}
}
}
}
}
if(_c66){
this.setCache(_c65,_c60,{unread:_c64["unread"]});
}
};
this.cbGetMessages=null;
this._cbGetMessages=function(_c67){
if($FolderList.isSpam($MessageList.folder())){
$Search.disable();
}else{
$Search.enable();
}
var _c68=false;
if(this.start()==1&&this.isCachable(this.folder())){
_c68=this.folder();
}
var _c69=($FolderList.isWithin(this.folder(),CFG_FOLDER_SENT)||$FolderList.isWithin(this.folder(),CFG_FOLDER_DRAFTS));
$$MessageList.fillList(_c67,{cache_ref:_c68,use_to_field:_c69});
this.loadingFolder(false);
$$MessageList.updateHeader();
};
this.cbSubSettingsChange=null;
this._cbSubSettingsChange=function(_c6a){
if(this.active()){
$UI.showStatus();
this.refillList();
}
};
};
Object.bindCallbacks($MessageList);
$Dispatcher.subscribe("Settings.change.mail_per_page",$MessageList.cbSubSettingsChange);
}
if($Bootstrap.notLoaded("7ffe399b0e5d9f574ca6a2856ceb4b71")){
Framework.register("Webmail.Modules");
$$MessageList=Webmail.Modules.MessageList=new function(){
this.config={disable_scroll:true,enable_search:true};
this.current_message=null;
this.current_message_loaded=null;
this.last_clicked=false;
this.first_load=true;
this.header=null;
this.pending_resize=false;
this._enable_keystrokes=true;
this._util_bar_left=null;
this._last_r_height=null;
this._folders_to_prefetch=[];
this._folder_prefetch_timer=null;
this._extra_rows=[];
this._current_list={};
this._email_widget=null;
this._message_row_height=20;
this.__preload=function(){
Object.bindCallbacks(this);
Object.bindObservers(this);
$Dispatcher.subscribe("Folders.status_change",this.cbSubFolderStatusChange);
$Dispatcher.subscribe("Email.Folders.update",this.cbSubUpdateFolders);
$Dispatcher.subscribe("Message.change",this.cbSubMessageChange);
$Dispatcher.subscribe("Message.move",this.cbSubMessageMove);
$Dispatcher.subscribe("Settings.change.preview_pane",this.cbSubSettingsPreviewPane);
var _c6b=Element.create("div",{id:"message_list"});
var _c6c=Element.create("div",{id:"MList"});
$Widgets.ContextMenu.Messages.factory(_c6c);
var _c6d=Element.create("div",{id:"p_pane"});
var _c6e=Element.create("div",{id:"MList_handle"});
Element.append(_c6b,_c6c,_c6d,_c6e);
var _c6f=Element.createHtml(["<div class=\"p_pane_blank\" id=\"p_pane_blank\">","<div>",L("Mlist.PreviewPane"),"</div>","</div>"].join(""));
this.dom.setPreviewPane(_c6d);
this.dom.setBlankPane(_c6f);
Element.append(_c6d,_c6f);
this._p_pane_proportion=0.5;
this.init.makePreviewResizable(_c6e);
var _c70=Element.create("div",{className:"hover_msg",id:"test_div"});
_c70.style.display="none";
Element.append(_c6b,_c70);
var _c71=this.createHeader();
var _c72=this.createBody();
this.dom.setListContainer(_c72);
Element.append(_c6c,_c71,_c72);
Keystroke.enable(true);
$KeyEventManager.addKeyEvent(_c72,this.evKeyUp,Event.KEY_UP,0);
$KeyEventManager.addKeyEvent(_c72,this.evKeyDown,Event.KEY_DOWN,0);
$KeyEventManager.addKeyEvent(_c72,this.evKeyDelete,Event.KEY_DELETE,0);
if(CFG_MESSAGE_PREFETCH_ENABLE){
var _c73=new Webmail.Modules.Message.Prefetcher(null,{prefetch_buffer:CFG_MESSAGE_PREFETCH_PER_REQUEST,prefetch_interval:CFG_MESSAGE_PREFETCH_INTERVAL});
_c73.start();
}
return _c6b;
};
this.__load=function(_c74){
var _c75=false;
if(this.first_load){
$Dispatcher.setFolderStatus(_c74,$FolderList.getTotalMessages(_c74),$FolderList.getNewMessages(_c74));
_c74=-1;
this.first_load=false;
_c75=true;
}
this.header.dom("toolbar_left").append($$Email.getUtilityBar());
var _c76=true;
if(_c74!=-1){
if(typeof _c74!="undefined"){
if(_c74!=$MessageList.folder()){
$$MessageList.clearList();
}else{
this.resetScroll();
}
var _c77={};
if(Keystroke.shift()){
_c77.break_cache=true;
}
$MessageList.getMessages(_c74,_c77);
}else{
_c76=false;
this.updateHeader();
}
if($MessageList.previewPane()){
this.setPreviewPaneClear(true);
}
}
$$SubMenu.loadSection($$FolderManager.SubMenu);
if(_c76){
$Dispatcher.loadFolder($MessageList.folder());
}
$$FolderManager.SubMenu.setActiveFolder($MessageList.folder());
$$MessageList.usePreviewPane($MessageList.previewPane(),_c75);
};
this.__resize=function(_c78){
_c78=_c78||false;
this._resizeHeight(_c78);
this._resizeWidth();
if(this.dom.getBlankPane()&&this._email_widget){
this._email_widget.resize();
}
};
this.init={makePreviewResizable:function(_c79){
function snapVertical(x,y){
if(y<100){
y=100;
}
return [0,y];
}
function startResize(_c7c){
Element.addClassName(_c7c,"MList_handle_active");
Webmail.enableWindow(false);
}
function endResize(_c7d){
Element.removeClassName(_c7d,"MList_handle_active");
Webmail.enableWindow(true);
Element.setDimensions($$MessageList.dom.getPreviewPane(),{height:Webmail.rightHeight()-_c7d.offsetTop});
this._resizeHeightBar();
}
_c79.style.position="absolute";
new Draggable(_c79,{altDelta:true,snap:snapVertical,starteffect:startResize,endeffect:endResize.bind($$MessageList)});
}};
this._boundPreviewPane=function(h){
return ((h>50)&&(h<Webmail.rightHeight()-50));
};
this._reportNotSpam=function(_c7f,_c80){
var _c81=this.getCheckedRows(_c7f);
if(_c81.length==0){
return;
}
$UI.showStatus();
$MessageList.reportNotSpam(_c81,_c80);
};
this._reportSpam=function(_c82,_c83){
var _c84=this.getCheckedRows(_c82);
if(_c84.length==0){
return;
}
$UI.showStatus();
$MessageList.reportSpam(_c84,_c83);
};
this._resizeHeight=function(_c85){
var _c86=$("MList_container");
var _c87=Webmail.rightHeight()+18;
if(!_c85&&this._last_r_height==_c87){
return;
}
this._last_r_height=_c87;
if(this.usePreviewPane()){
var _c88=$("MList");
var _c89=Number(Math.round(_c87*(1-this._p_pane_proportion)));
var _c8a=_c89-_c86.offsetTop;
if(_c89>0&&parseInt(_c88.style.height)!=_c89){
_c88.style.height=_c89+"px";
}
var _c8b=_c87-_c89;
var _c8c=$$MessageList.dom.getPreviewPane();
var _c8d=$("MList_handle");
if(_c8b>0){
_c8c.style.height=_c8b+"px";
_c8d.style.top=_c89+"px";
}
}else{
var _c8a=_c87-_c86.offsetTop;
}
if(_c8a>0&&parseInt(_c86.style.height)!=_c8a){
_c86.style.height=_c8a+"px";
}
};
this._resizeHeightBar=function(){
if(this.usePreviewPane()){
this._p_pane_proportion=$$MessageList.dom.getPreviewPane().offsetHeight/Webmail.rightHeight();
}
this._resizeHeight(true);
if(this.dom.getBlankPane()&&this._email_widget){
this._email_widget.resize();
}
};
this._resizeWidth=function(){
var _c8e=wack.Browser.getDimensions()[1];
var _c8f=$("Search_widget");
var _c90=this.header.dom("toolbar_left");
var _c91=Webmail.rightWidth();
var _c92=_c91-408;
var tb=$$MessageList.dom.getBody();
if(!tb.childNodes){
return;
}
if(tb.childNodes[0]){
var _c94=tb.childNodes[0].obj._sub.offsetWidth;
if(_c94==50&&_c92<=50){
return;
}
}
if(_c92<50){
_c92=50;
}
for(var i=0,ii=tb.childNodes.length;i<ii;i++){
var tr=tb.childNodes[i];
tr.obj._sub.style.width=_c92+"px";
}
this.header.dom("subject").firstChild.style.width=_c92+"px";
if(_c8f&&_c90){
Element.setDimensions(_c8f,{width:_c8e-Position.cumulativeOffset(_c90)[0]-_c90.offsetWidth-15});
}
};
this.changeMsgCount=function(_c97,_c98,_c99,_c9a,_c9b){
if(typeof _c9a!="undefined"){
var _c9c=(_c9b?0:_c97);
$Dispatcher.publish("Folders.status_change",_c9a,-_c98,-_c9c);
}
$Dispatcher.publish("Folders.status_change",_c99,_c98,_c97);
};
this.clearCheckedMessages=function(cont){
if(!cont||!cont.childNodes||cont.childNodes.length==0){
return false;
}
for(var i=0,ii=cont.childNodes.length;i<ii;i++){
var ro=cont.childNodes[i];
if(!ro.obj.visible()){
break;
}
ro.obj.checked(false);
}
};
this.clearList=function(_ca0){
if(wack.Browser.is_firefox){
this.resetScroll();
}
var _ca1=this.getCurrentList();
var uid=_ca0||false;
for(msg_uid in _ca1){
if(!uid||msg_uid!=uid){
this.removeRow(_ca1[msg_uid]);
}
}
var body=this.dom.getBody();
for(var i=body.childNodes.length-1;i>=0;i--){
if(!uid||body.childNodes[i].obj.getUniqueId()!=uid){
this.removeRow(body.childNodes[i]);
}
}
if($MessageList.previewPane()&&!(_ca0&&_ca1[uid].obj.selected()==true)){
this.setPreviewPaneClear(true);
this.current_message=false;
}
this.header.dom("checkbox").checked=false;
if(!wack.Browser.is_firefox){
this.resetScroll();
}
};
this.createList=function(){
var m=Element.create("tbody",{id:"messages_body"});
this.dom.setBody(m);
var list=$MessageList.msg_cache;
m.check_drag=new CheckDrag;
this.fillList(list,{cache_ref:"INBOX"});
$UI.clearStatus();
return m;
};
this.createBody=function(){
var body=this.createList();
var _ca8=Element.create("div",{id:"MList_container"});
_ca8.innerHTML="<table id=\"MList_table\" cellspacing=\"0\" cellpadding=\"0\" border=\"0\"></table>";
if(_ca8.firstChild.firstChild){
_ca8.firstChild.removeChild(_ca8.firstChild.firstChild);
}
Element.append(_ca8.firstChild,body);
return _ca8;
};
this.createHeader=function(){
this.header=Element.create("div",{id:"msglist_header_div",className:"small"});
var _ca9=$FolderList.getDropdownOptions({include_special:true});
var _caa="<div class=\"toolbar\"><div class=\"toolbar_left\" _ref=\"toolbar_left\" id=\"MList_toolbar_left\"></div><div class=\"toolbar_right\" _ref=\"toolbar_right\"></div></div><div id=\"MList_action_row\" class=\"grid_action_bar\"><div class=\"left\"><img src=\"images/blank.gif\" class=\"arrow_up_rt\" /><input type=\"button\" class=\"btn\" value=\""+L("Mlist.L.Delete")+"\" _ref=\"delete\" id=\"delete_button\">"+L("Mlist.Action.Or")+"&nbsp;&nbsp;"+$$MessageList.getOptionsDropdown("Mlist_action_dd","options")+"&nbsp;&nbsp;"+L("Mlist.Action.Or")+"&nbsp;&nbsp;<select id=\"move_dd\" _ref=\"move\"><option value=\"null\">"+L("Mlist.Action.Move")+"</option><option value=\"null\">--------------------</option>"+_ca9+"</select></div><div class=\"left\"><span id=\"MList_pager\" _ref=\"pager\"></span></div><div class=\"right\" id=\"MList_page_range\" _ref=\"range\"></div><div class=\"clear\"></div></div><table border=\"0\" cellspacing=\"0\" cellpadding=\"0\" class=\"small\" width=\"100%\"><tr height=\"15px\" id=\"MList_header\" class=\"column_header_row\"><td class=\"header_check_cell\"><input type=\"checkbox\" id=\"header_checkbox\" _ref=\"checkbox\"></td><td class=\"MessageRow_priority_cell\"><img src=\"images/blank.gif\" class=\"Mlist_header_prio\" /></td><td id=\"read_header\" _ref=\"read\" class=\"MessageRow_icon_cell\"><img src=\"images/blank.gif\" _ref=\"read_icon\" class=\"Mlist_header_envelope\" /></td><td id=\"flag_header\" _ref=\"flag\" class=\"MessageRow_flag_cell\"><img src=\"images/blank.gif\" class=\"Mlist_header_flag\" /></td><td class=\"MessageRow_attach_cell\"><img src=\"images/blank.gif\" class=\"Mlist_header_attach\" /></td><td id=\"from_header\" _ref=\"from\"><div class=\"MessageRow_from_div\">"+L("Mlist.L.From")+"</div></td><td id=\"subject_header\" _ref=\"subject\"><div class=\"MessageRow_subject_div\">"+L("Mlist.L.Subject")+"</div></td><td id=\"date_header\" _ref=\"date\" class=\"MessageRow_date_cell\"><div class=\"MessageRow_date_div\">"+L("Mlist.L.Sent")+"</div></td><td id=\"size_header\" _ref=\"size\" class=\"MList_header_size_cell\"><div class=\"MessageRow_size_div\">"+L("Mlist.L.Size")+"</div></td></tr></table>";
this.header.innerHTML=_caa;
$Templates.setDom(this.header);
this._util_bar_left=$(this.header.dom("toolbar_left"));
this._util_bar_left.append($$Email.getUtilityBar());
Event.observe(this.header.dom("options"),"change",this.evClickDropdown.bind(this));
Event.observe(this.header.dom("options"),"focus",this.evDisableKeystrokes.bind(this));
Event.observe(this.header.dom("options"),"blur",this.evEnableKeystrokes.bind(this));
Event.observe(this.header.dom("move"),"change",this.evMoveDropdown.bind(this));
Event.observe(this.header.dom("move"),"focus",this.evDisableKeystrokes.bind(this));
Event.observe(this.header.dom("move"),"blur",this.evEnableKeystrokes.bind(this));
Event.observe(this.header.dom("delete"),"click",this.evClickDelete.bind(this));
Event.observe(this.header.dom("checkbox"),"click",this.evClickCheckAll.bind(this));
var _cab=["read","flag","from","subject","date","size"];
for(var i=0,ii=_cab.length;i<ii;i++){
Event.observe(this.header.dom(_cab[i]),"click",this.evClickColumnHeader);
}
this.sort_arrow=Element.createHtml("<img src=\"images/blank.gif\" />");
this.updateHeader();
return this.header;
};
this.deleteMessages=function(_cad,_cae,_caf){
_caf=_caf|false;
var _cb0=this.getCheckedRows(_cad);
if(_cb0.length==0||_cb0==false){
return;
}
$UI.showStatus(L("Mlist.S.Deleting"),true);
$MessageList.deleteMessages(_cb0,_cae,_caf);
};
this.dom={_blank_pane:false,_list_container:false,_messages_body:false,_preview_pane:false,getBlankPane:function(){
if(!this._blank_pane){
this._blank_pane=$("p_pane_blank");
}
return this._blank_pane;
},getBody:function(){
if(!this._messages_body){
this._messages_body=$("messages_body");
}
return this._messages_body;
},getListContainer:function(){
if(!this._list_container){
this._list_container=$("MList_container");
}
return this._list_container;
},getPreviewPane:function(){
if(!this._preview_pane){
this._preview_pane=$("p_pane");
}
return this._preview_pane;
},setBlankPane:function(_cb1){
this._blank_pane=_cb1;
},setBody:function(_cb2){
this._messages_body=_cb2;
},setListContainer:function(_cb3){
this._list_container=_cb3;
},setPreviewPane:function(_cb4){
this._preview_pane=_cb4;
}};
this.fetchSiblings=function(_cb5){
var _cb6=this.current_message.obj;
var _cb7=this.getCurrentObjects();
for(x=0;x<_cb7.length;x++){
if(_cb7[x].id()==_cb6.id()&&_cb7[x].folder()==_cb6.folder()){
var _cb5=x;
var _cb8=x-2;
var end=x+2;
break;
}
}
var _cba=[];
for(x=_cb8;x<=end;x++){
if(_cb7[x]){
if(!$MessageCache.isCached(_cb7[x].folder(),_cb7[x].id())){
_cba.push({folder:_cb7[x].folder(),uid:_cb7[x].id()});
}
}
}
if(_cba.length>0){
$Message.getMultiple(_cba,{for_cache:true,callback:function(_cbb){
if(!_cbb.exception){
for(var _cbc in _cbb){
$MessageCache.addToCache(_cbb[_cbc].folder,_cbb[_cbc].uid,_cbb[_cbc]);
}
}
}});
}
};
this.fillList=function(_cbd,_cbe){
if(_cbd.length==0){
_cbd={};
}
var _cbe=Object.extend({cache_ref:false,use_to_field:false},_cbe||{});
var _cbf=false;
if(_cbe.cache_ref){
var _cbf=$MessageList.getCache(_cbe.cache_ref);
}
var body=this.dom.getBody();
var _cc1=this.getCurrentList();
for(uid in _cc1){
if(_cbd&&typeof _cbd[uid]=="undefined"){
this.removeRow(_cc1[uid]);
delete _cc1[uid];
}
}
var _cc2=0;
var _cc3=[];
for(uid in _cbd){
_cc3.push(uid);
if(_cbd[uid]&&typeof _cc1[uid]=="undefined"){
var _cc4=this.getRow();
_cc4.obj.fillRow(_cbd[uid],{use_to_field:_cbe.use_to_field});
_cc1[uid]=_cc4;
if(!body.childNodes[_cc2]){
if(_cc1[uid].parentNode){
Element.remove(_cc1[uid]);
}
Element.append(body,_cc1[uid]);
}else{
if(body.childNodes[_cc2]!=_cc1[uid]){
if(_cc1[uid].parentNode){
Element.remove(_cc1[uid]);
}
body.insertBefore(_cc1[uid],body.childNodes[_cc2]);
}
}
}else{
if(_cc1[uid]){
if(body.childNodes[_cc2]&&body.childNodes[_cc2].obj.getUniqueId()!=uid){
var row=_cc1[uid];
if(row.parentNode){
Element.remove(row);
}
if(body.childNodes[_cc2]){
body.insertBefore(row,body.childNodes[_cc2]);
}else{
Element.append(body,row);
}
}
if(body.childNodes[_cc2]){
body.childNodes[_cc2].obj.showDate();
}
if(_cbf&&_cbd[uid]){
_cbd[uid]["read"]=_cc1[uid].obj.read();
}
}
}
if(_cbf&&!_cbd[uid]){
_cbd[uid]=_cbf[uid];
}
_cc2++;
}
this.setCurrentList(_cc1);
if(_cbf){
$MessageList.setCache(_cbd,_cbe.cache_ref,{sort:$MessageList.sort(),total:$MessageList.total(),unread:$MessageList.unseen()});
}
var _cc6=true;
if(this.pending_resize){
this.pending_resize=false;
this._resizeWidth();
}
};
this.findMessage=function(_cc7,uid){
var _cc9=$MessageList.getUniqueId(_cc7,uid);
var _cca=this.getCurrentList();
if(_cca&&_cca[_cc9]){
return _cca[_cc9];
}
return null;
};
this.flagMessages=function(_ccb,flag){
if(!_ccb||_ccb.childNodes.length==0){
return;
}
var _ccd=[];
for(var i=0,ii=_ccb.childNodes.length;i<ii;i++){
var tr=_ccb.childNodes[i];
if(tr.obj.checked()&&tr.obj.visible()){
if(tr.obj.checked()&&tr.obj.flag()!=flag){
_ccd.push({folder:tr.obj.folder(),id:tr.obj.id()});
tr.obj.checked(false);
tr.obj.flag(flag);
}else{
if(tr.obj.checked()){
tr.obj.checked(false);
}
}
}
}
if(_ccd.length>0){
var _cd0=Prototype.emptyFunction;
$MessageList.flagMessages(_ccd,flag,_cd0);
}
};
this.forwardMessages=function(_cd1){
var _cd2=this.getCheckedRows(_cd1);
if(_cd2.length==0){
return;
}
$MessageList.forwardMessages(_cd2);
};
this.getCheckedRows=function(cont,_cd4){
if(!cont||!cont.childNodes||cont.childNodes.length==0){
return false;
}
var _cd5=[];
for(var i=0,ii=cont.childNodes.length;i<ii;i++){
var row=cont.childNodes[i];
if(!row.obj.visible()){
break;
}
if(row.obj.checked()){
if(_cd4){
_cd5.push(row);
}else{
_cd5.push({folder:row.obj.folder(),id:row.obj.id(),unread:!row.obj.read()});
}
}
}
return _cd5;
};
this.getCurrentList=function(){
return this._current_list;
};
this.getCurrentUids=function(_cd8){
var _cd9=this.getCurrentObjects(_cd8);
var _cda=[];
for(var x=0;x<_cd9.length;x++){
_cda.push(_cd9[x].getUniqueId());
}
return _cda;
};
this.getCurrentObjects=function(_cdc){
var _cdd=[];
if(!_cdc){
var list=this.getCurrentList();
for(uid in list){
_cdd.push(list[uid].obj);
}
}else{
var body=this.dom.getBody();
for(var i=0,ii=body.childNodes.length;i<ii;i++){
_cdd.push(body.childNodes[i].obj);
}
}
return _cdd;
};
this.isCurrentMessage=function(_ce1,uid){
for(var _ce3 in this._current_list){
var key=_ce1+"|"+uid;
if(_ce3==key){
return true;
}
}
return false;
};
this.getNextMessage=function(_ce5){
if(!_ce5){
return false;
}
if(_ce5.obj&&_ce5.obj.next()&&_ce5.obj.next().obj.visible()){
return _ce5.obj.next();
}else{
if(_ce5.obj&&_ce5.obj.previous()&&_ce5.obj.previous().obj.visible()){
return _ce5.obj.previous();
}else{
return false;
}
}
};
this.getOptionsDropdown=function(id,ref){
var _ce8=["<select id=\""+id+"\" "+(ref?"_ref=\""+ref+"\"":"")+">","<option value=\"null\">"+L("Mlist.Action.Select")+"</option>","<option value=\"null\">--------------------</option>","<option value=\"forward\">"+L("Mlist.Action.Forward")+"</js></option>","<option value=\"mark_flagged\">"+L("Mlist.Action.AddFlag")+"</option>","<option value=\"mark_unflagged\">"+L("Mlist.Action.RemFlag")+"</option>","<option value=\"mark_read\">"+L("Mlist.Action.MarkRead")+"</option>","<option value=\"mark_unread\">"+L("Mlist.Action.MarkUnread")+"</option>","<option value=\"reportspam\">"+L("Mlist.Action.ReportSpam")+"</option>","<option value=\"zip\">"+L("Mlist.Action.Zip")+"</option>","</select>",].join("");
return _ce8;
};
this.getRow=function(){
if(this._extra_rows.length>0){
var row=this._extra_rows.pop();
row.obj.checked(false);
if(row.obj.selected()){
row.obj.selected(false);
}
return row;
}
this.pending_resize=true;
var _cea=$$MessageList.evClickMessage.bindAsEventListener($$MessageList);
var _ceb=new $$MessageRow({click_handler:_cea});
$UI_Grid.addCheckDrag(this.dom.getBody(),[_ceb.getCheckbox()],"TR",$$MessageRow.checkDragCallback);
return _ceb.getContainer();
};
this.handleAction=function(_cec,body,_cee){
switch(_cec){
case "null":
break;
case "mark_flagged":
this.flagMessages(body,true);
break;
case "mark_unflagged":
this.flagMessages(body,false);
break;
case "mark_read":
this.markAsRead(body,true);
break;
case "mark_unread":
this.markAsRead(body,false);
break;
case "notspam":
this._reportNotSpam(body,_cee);
break;
case "reportspam":
var _cef=this.getCheckedRows(body);
if(_cef.length==0||!confirm(L("Mlist.C.ReportSpam.P"))){
this.clearCheckedMessages(body);
break;
}
this._reportSpam(body,_cee);
break;
case "zip":
this.zipMessages(body);
break;
case "forward":
this.forwardMessages(body);
this.clearCheckedMessages(body);
break;
default:
break;
}
};
this.isUnread=function(_cf0){
var uid=_cf0.id+"|"+_cf0.folder;
var _cf2=$$MessageList.getCurrentList();
if(_cf2[uid]){
return !_cf2[uid].obj.read();
}else{
if(this.isCachable(_cf0.folder)){
var _cf3=this.getCache(_cf0.folder);
if(_cf3&&_cf3[uid]){
return !_cf3[uid]["seen"];
}
}
}
return null;
};
this.markAsRead=function(_cf4,_cf5){
if(!_cf4||_cf4.childNodes.length==0){
return;
}
var _cf6=[];
for(var i=0,ii=_cf4.childNodes.length;i<ii;i++){
var tr=_cf4.childNodes[i];
if(tr.obj.checked()&&tr.obj.visible()){
if(tr.obj.checked()&&tr.obj.read()!=_cf5){
_cf6.push({folder:tr.obj.folder(),id:tr.obj.id()});
tr.obj.checked(false);
tr.obj.read(_cf5);
}else{
if(tr.obj.checked()){
tr.obj.checked(false);
}
}
}
}
if(_cf6.length>0){
var _cf9=Prototype.emptyFunction;
$MessageList.markAsRead(_cf6,_cf5,_cf9);
var _cfa={};
for(var i=0,ii=_cf6.length;i<ii;i++){
if(!_cfa[_cf6[i]["folder"]]){
_cfa[_cf6[i]["folder"]]=1;
}else{
_cfa[_cf6[i]["folder"]]+=1;
}
}
for(folder in _cfa){
$$MessageList.changeMsgCount((_cf5?-_cfa[folder]:_cfa[folder]),0,folder);
}
}
};
this.moveMessages=function(_cfb,_cfc,_cfd,_cfe){
$UI.showStatus(L("Mlist.St.Move"));
var _cff=this.getCheckedRows(_cfc);
if(_cff==false||_cff.length==0){
if(_cfd){
_cfd.selectedIndex=0;
}
$UI.clearStatus();
return;
}
var i=0;
while(_cff[i]){
if(_cff[i].folder==_cfb){
_cff.splice(i,1);
}else{
i++;
}
}
$MessageList.moveMessages(_cff,_cfb,_cfe);
};
this.openMessage=function(tr,type,_d03){
if(!tr||!tr.obj){
return;
}
if(this.current_message&&this.current_message!=tr){
this.current_message.obj.selected(false);
}
this.current_message=tr;
this.current_message_loaded=new Date;
tr.obj.is_search=$Search.active();
if(type==$Widgets.Email.VIEW_PREVIEW){
tr.obj.selected(true);
}
var _d04=false;
if(!tr.obj.read()){
_d04=true;
tr.obj.read(true);
}
var _d05=tr.obj.folder();
var uid=tr.obj.id();
var _d07={folder:_d05,uid:uid,force_plain:Keystroke.alt(),unread:_d04};
if(type==$Widgets.Email.VIEW_PREVIEW){
if(!this._email_widget){
$Widgets.load("Email");
this._email_widget=$Widgets.Email.factory({view:$Widgets.Email.VIEW_PREVIEW});
}
$UI.showStatus();
this._email_widget.populate(wack.extend(_d07,{callback:function(_d08){
$UI.clearStatus();
if(_d08.exception){
this.current_message=null;
tr.obj.selected(false);
return;
}
if($MessageList.active()){
this.setPreviewPaneClear(false);
var _d09=this.dom.getPreviewPane();
}else{
if($Search.active()){
$$Search.setPreviewPaneClear(false);
var _d09=$("Search_ppane");
}
}
if(_d09){
_d09.append($C(this._email_widget));
}
this._email_widget.resize();
var _d0a=false;
if(_d08._from_cache){
if(this._email_widget._unread===null||this._email_widget._unread){
var cb=(_d03?function(_d0c){
$MessageList.refillList();
}:Prototype.emptyFunction);
$Mail.setReadStatus({folder:_d05,id:uid},true,cb);
_d0a=true;
this._email_widget._unread=false;
}
}
if(_d03&&!_d0a){
$MessageList.refillList();
}
}.bind(this)}));
}else{
if(type==$Widgets.Email.VIEW_FULL){
$$Message.read(_d07);
}else{
if(type==$Widgets.Email.VIEW_POPUP){
$$Message.popup(_d07);
}
}
}
};
this.removeRows=function(_d0d,_d0e,_d0f){
_d0f=_d0f||function(){
return true;
};
var i=0;
var _d11={};
if(!_d0d[0]){
_d0d=array(_d0d);
}
while(_d0e.childNodes[i]){
var row=_d0e.childNodes[i];
if(!row.obj.visible()){
break;
}
for(var j=0,jj=_d0d.length;j<jj;j++){
if((row.obj.id()==_d0d[j]["id"])&&(row.obj.folder()==_d0d[j]["folder"])){
if(_d0f(row)){
this.removeRow(row);
i--;
}else{
row.obj.checked(false);
}
break;
}
}
i++;
}
return true;
};
this.removeRow=function(row){
if(row.parentNode){
Element.remove(row);
}
if(row==this.current_message){
$$MessageList.current_message=false;
$$MessageList.setPreviewPaneClear(true);
}
var _d15=row.obj.folder();
var uid=row.obj.id();
var _d17=$MessageList.getUniqueId(_d15,uid);
if(this._current_list[_d17]){
delete (this._current_list[_d17]);
}
this._extra_rows.push(row);
$UI_Grid.changeHoverColor(row,false);
};
this.resetScroll=function(){
this.dom.getListContainer().scrollTop=0;
};
this.scrollToMessage=function(_d18,_d19){
if(!_d19){
return;
}
if(_d18.offsetTop>_d19.offsetHeight){
_d19.scrollTop=_d18.offsetTop-(this._message_row_height*3);
}
return true;
};
this.selectNextMessage=function(){
if(!this.current_message||this.current_message.obj.is_search!=$Search.active()){
return;
}
var _d1a=($Search.active()?$$Search._search_body:$("MList_container"));
var _d1b=this.current_message.obj.next();
if(!_d1b){
return;
}
if(_d1b.obj.visible()){
this.openMessage(_d1b,$Widgets.Email.VIEW_PREVIEW);
if(_d1b.offsetTop>(_d1a.scrollTop+_d1a.offsetHeight-_d1b.offsetHeight)||wack.Browser.is_safari){
var _d1c=_d1b.offsetHeight;
if(_d1b.offsetHeight==0){
_d1c=this._message_row_height;
}
_d1a.scrollTop+=_d1c;
}
}
};
this.selectPreviousMessage=function(){
if(!this.current_message||this.current_message.obj.is_search!=$Search.active()||!$MessageList.previewPane()){
return;
}
var _d1d=($Search.active()?$$Search._search_body:$("MList_container"));
var _d1e=this.current_message.obj.previous();
if(!_d1e){
return;
}
this.openMessage(_d1e,$Widgets.Email.VIEW_PREVIEW);
if(_d1e.offsetTop<_d1d.scrollTop){
var _d1f=_d1e.offsetHeight;
if(_d1e.offsetHeight==0){
_d1f=this._message_row_height;
}
_d1d.scrollTop-=_d1f;
}
};
this.setCurrentList=function(list){
if(this._current_list){
delete (this._current_list);
}
this._current_list=list;
return true;
};
this.setPreviewPaneClear=function(_d21){
var _d22=this.dom.getBlankPane();
if(_d21){
var _d23=$$MessageList.dom.getPreviewPane();
if(_d23.firstChild==_d22){
return;
}
if(_d23.firstChild){
Element.remove(_d23.firstChild);
}
Element.append(_d23,_d22);
if(this.current_message){
this.current_message.obj.selected(false);
}
this.current_message=null;
}else{
if(_d22&&_d22.parentNode==this.dom.getPreviewPane()){
Element.remove(_d22);
}
}
};
this.showMessageList=function(){
$("search_header").style.display="none";
$("search_div").style.display="none";
};
this.updateDropdowns=function(_d24){
_d24=_d24||false;
var mln=$MessageList;
if(_d24){
var _d26=$("Mlist_action_dd");
if($FolderList.isSpam($MessageList.folder())){
_d26.options[7]=new Option(L("Mlist.Action.NotSpam"),"notspam");
}else{
_d26.options[7]=new Option(L("Mlist.Action.ReportSpam"),"reportspam");
}
_d26.options[8]=new Option(L("Mlist.Action.Zip"),"zip");
}else{
var _d27=$FolderList.getDropdownOptions({include_special:true,indent_char:" ",ret_array:true});
var _d28=$("move_dd");
var _d29=$("Search_move_dd");
Element.hide(_d28);
Element.hide(_d29);
Form.Select.clear(_d28);
Form.Select.insert(_d28,{value:"null",text:L("Folders.D.Move")});
Form.Select.insert(_d28,{value:"null",text:"---------------"});
for(var i=0,ii=_d27.length;i<ii;i++){
Form.Select.insert(_d28,{value:_d27[i].path,text:_d27[i].text.replace("&amp;","&")});
}
Form.Select.clear(_d29);
Form.Select.insert(_d29,{value:"null",text:L("Folders.D.Move")});
Form.Select.insert(_d29,{value:"null",text:"---------------"});
for(var a=0,aa=_d27.length;a<aa;a++){
Form.Select.insert(_d29,{value:_d27[a].path,text:_d27[a].text.replace("&amp;","&")});
}
Element.show(_d28);
Element.show(_d29);
}
};
this.updateHeader=function(){
if(this.sort_arrow.parentNode){
Element.remove(this.sort_arrow);
}
var _d2c=$MessageList.folder();
if($FolderList.isWithin(_d2c,CFG_FOLDER_DRAFTS)){
var _d2d=L("Mlist.L.To");
var _d2e=L("Mlist.L.Saved");
}else{
if($FolderList.isWithin(_d2c,CFG_FOLDER_SENT)){
var _d2d=L("Mlist.L.To");
var _d2e=L("Mlist.L.Sent");
}else{
var _d2d=L("Mlist.L.From");
var _d2e=L("Mlist.L.Sent");
}
}
if(this.header.dom("from").firstChild.innerHTML!=_d2d){
this.header.dom("from").firstChild.innerHTML=_d2d;
}
if(this.header.dom("date").firstChild.innerHTML!=_d2e){
this.header.dom("date").firstChild.innerHTML=_d2e;
}
this.header.dom("read_icon").className="Mlist_header_envelope";
var sort=$MessageList.sort();
this.sort_arrow.className=($MessageList.isAscending()?"Mlist_header_up_arrow":"Mlist_header_down_arrow");
switch(String(sort)){
case "0":
case "1":
Element.append(this.header.dom("date").firstChild,this.sort_arrow);
break;
case "2":
case "3":
Element.append(this.header.dom("from").firstChild,this.sort_arrow);
break;
case "4":
case "5":
Element.append(this.header.dom("subject").firstChild,this.sort_arrow);
break;
case "6":
case "7":
Element.append(this.header.dom("size").firstChild,this.sort_arrow);
break;
default:
break;
}
this.updatePager();
this.updateRange();
};
this.updatePager=function(){
var _d30=$MessageList.folder();
var _d31=$FolderList.getTotalMessages(_d30);
var _d32=$MessageList.start();
var _d33=$MessageList.showNum();
while(_d32>_d31){
_d32=_d32-$MessageList.showNum();
}
var _d34=this.header.dom("pager");
if(_d34.firstChild){
Element.remove(_d34.firstChild);
}
var _d35=$UI.Pager.createPager(_d32,_d33,_d31,{callback:this.cbPage,show_range:false});
_d34.appendChild(_d35);
};
this.updateRange=function(){
var _d36=$MessageList.folder();
var _d37=$FolderList.getTotalMessages(_d36);
var _d38=$MessageList.start();
var _d39=$MessageList.showNum();
var _d3a=this.header.dom("range");
if(_d37>0){
var _d3b=L("Mlist.L.ViewRange",_d38,Math.min(_d37,_d38+_d39-1),_d37);
}else{
var _d3b="";
}
_d3a.innerHTML=_d3b;
};
this.usePreviewPane=function(v,_d3d){
var mln=$MessageList;
var ml=$$MessageList;
if(typeof v=="undefined"){
return mln.previewPane();
}else{
if(v!=$MessageList.previewPane()||_d3d){
$("MList").style.height="0px";
$("MList_handle").style.display=(v?"":"none");
ml.dom.getPreviewPane().style.display=(v?"":"none");
ml.__resize(true);
if(ml.current_message){
ml.current_message.obj.selected(false);
ml.current_message=false;
}
}
}
};
this.zipMessages=function(_d40){
var _d41=this.getCheckedRows(_d40);
if(_d41.length==0){
return;
}
if(!_d40||_d40.childNodes.length==0){
return;
}
for(var i=0,ii=_d40.childNodes.length;i<ii;i++){
var tr=_d40.childNodes[i];
if(tr.obj.checked()){
tr.obj.checked(false);
}
}
$MessageList.zipMessages(_d41);
};
this.cbPage=null;
this._cbPage=function(_d44,_d45){
this._current_start=_d44;
$MessageList.getMessages($MessageList.folder(),{start:_d44},function(_d46){
$Dispatcher.publish("MessageList.page",_d46);
}.bind(this));
};
this.cbSubMessageChange=null;
this._cbSubMessageChange=function(_d47,uid,_d49,_d4a){
if($Search.active()){
var _d4b=$$Search._body;
for(var i=0,ii=_d4b.childNodes.length;i<ii;i++){
var tr=_d4b.childNodes[i];
if(tr.obj.id()==uid&&tr.obj.folder()==_d47){
if(tr.obj[_d49]){
tr.obj[_d49](_d4a);
}
break;
}
}
}
var _d4e=this.getCurrentList();
var _d4f=$MessageList.getUniqueId(_d47,uid);
if(_d4e[_d4f]&&_d4e[_d4f].obj[_d49]){
_d4e[_d4f].obj[_d49](_d4a);
return;
}
var _d50={};
_d50[_d49]=_d4a;
$MessageList.updateCachedMsg(_d47,uid,_d50);
};
this.cbSubMessageMove=null;
this._cbSubMessageMove=function(_d51,_d52,_d53){
if(!$MessageList.active()&&!$Search.active()&&!$$Message.active()){
return;
}
if($MessageList.folder()==CFG_FOLDER_SPAM){
var _d53=false;
}
var _d54=(this._email_widget?true:false);
if(_d54){
var _d55=this._email_widget.getFolder();
var _d56=this._email_widget.getUid();
}
var _d57=null;
var _d58={};
for(var i=0,ii=_d51.length;i<ii;i++){
$MessageList.removeFromCache(_d51[i].folder,_d51[i].id);
if(this.current_message&&this.current_message.obj.is_search==$Search.active()){
if(_d54&&_d55==_d51[i].folder&&_d56==_d51[i].id){
if($MessageList.previewPane()&&_d53){
_d57=this.getNextMessage(this.current_message);
}
if(!_d57){
if($MessageList.active()){
this.setPreviewPaneClear(true);
}else{
$$Search.setPreviewPaneClear(true);
}
}
}
}
_d58[_d51[i].folder]=true;
}
if(_d52){
_d58[_d52]=true;
}
this.removeRows(_d51,this.dom.getBody());
if(_d57){
var _d5a=$MessageList.active();
this.openMessage(_d57,$Widgets.Email.VIEW_PREVIEW,_d5a);
}else{
if($MessageList.active()&&_d58[$MessageList.folder()]){
$MessageList.refillList();
}
}
};
this.cbSubFolderStatusChange=null;
this._cbSubFolderStatusChange=function(_d5b,_d5c,_d5d){
if($MessageList.active()&&$MessageList.folder()==_d5b){
this.updatePager();
this.updateRange();
}
};
this.cbSubUpdateFolders=null;
this._cbSubUpdateFolders=function(){
this.updateDropdowns();
};
this.cbSubSettingsPreviewPane=null;
this._cbSubSettingsPreviewPane=function(_d5e){
$MessageList.previewPane(_d5e);
};
this.evClickDropdown=function(e){
elem=Event.element(e);
var body=this.dom.getBody();
var _d61;
switch(elem.value){
case "notspam":
case "reportspam":
_d61=function(_d62){
$MessageList.refillList();
};
break;
}
this.handleAction(elem.value,body,_d61);
elem.selectedIndex=0;
$("header_checkbox").checked=false;
};
this.evClickCheckAll=function(e){
var cs=Event.element(e).checked;
var mb=$$MessageList.dom.getBody();
if(!mb||!mb.firstChild){
return;
}
for(var i=0,ii=mb.childNodes.length;i<ii;i++){
var tr=mb.childNodes[i];
if(!tr.obj.visible()){
return;
}
tr.obj.checked(cs);
}
};
this.evClickColumnHeader=null;
this._evClickColumnHeader=function(e){
if($MessageList.isSearch()){
return;
}
var sort=$MessageList.sort();
if(typeof sort=="undefined"||sort=="unsorted"||sort==-1){
return;
}
var elem=Event.findElement(e,"td");
switch(elem.id){
case "from_header":
sort=="3"?sort="2":sort="3";
break;
case "subject_header":
sort=="5"?sort="4":sort="5";
break;
case "date_header":
sort=="0"?sort="1":sort="0";
break;
case "size_header":
sort=="6"?sort="7":sort="6";
break;
case "read_header":
sort="8";
break;
case "flag_header":
sort="10";
break;
default:
return;
break;
}
if(this.current_message&&this.current_message.obj){
id=this.current_message.obj.id();
}else{
id=-1;
this.current_message=null;
}
$MessageList.getMessages($MessageList.folder(),{start:1,sort:sort,selected_uid:id});
};
this.evClickDelete=null;
this._evClickDelete=function(e){
var _d6c=this.dom.getBody();
this.header.dom("checkbox").checked=false;
if(Keystroke.shift()){
Keystroke.shift(false);
if(confirm(L("Mlist.Confirm.Delete"))){
this.deleteMessages(_d6c,null,true);
}
}else{
this.deleteMessages(_d6c,null);
}
};
this.evClickMessage=function(e){
if($MessageList.loadingFolder()){
return;
}
var elem=Event.findElement(e,"td");
var _d6f=elem.name;
var _d70=null;
if(!elem.tagName){
return;
}
if(_d6f=="check_cont"||_d6f=="pri_cont"||_d6f=="icon_cont"||_d6f=="flag_cont"||_d6f=="att_cont"){
return;
}
if(e.obj){
if($MessageList.previewPane()){
var type=$Widgets.Email.VIEW_PREVIEW;
}else{
var type=$Widgets.Email.VIEW_FULL;
}
var tr=e;
}else{
var tr=$$MessageRow.findContainer(elem);
if($MessageList.active()&&Event.type(e)=="dblclick"&&tr.obj.folder()==CFG_FOLDER_DRAFTS){
$Dispatcher.compose(null,wm_Compose_RESUME_DRAFT,tr.obj.id(),tr.obj.folder());
return;
}
var type;
if(Event.type(e)=="dblclick"){
type=$Widgets.Email.VIEW_POPUP;
}else{
if($MessageList.previewPane()==1){
if(this.current_message){
var msg=this.current_message.obj;
if(msg.id()==tr.obj.id()&&msg.folder()==tr.obj.folder()&&msg.is_search==$Search.active()){
return;
}
}
type=$Widgets.Email.VIEW_PREVIEW;
}else{
type=$Widgets.Email.VIEW_FULL;
}
}
}
this.openMessage(tr,type);
if(!CFG_MESSAGE_PREFETCH_ENABLE&&type==$Widgets.Email.VIEW_PREVIEW){
this.fetchSiblings();
}
};
this.evDisableKeystrokes=function(){
$$MessageList._enable_keystrokes=false;
};
this.evEnableKeystrokes=function(){
$$MessageList._enable_keystrokes=true;
};
this.evMoveDropdown=function(e){
var elem=Event.findElement(e,"select");
var _d76=elem.value;
if(_d76=="null"||_d76==$MessageList.folder()){
elem.selectedIndex=0;
return;
}
var _d77=this.dom.getBody();
this.header.dom("checkbox").checked=false;
var _d78=function(_d79){
elem.selectedIndex=0;
};
this.moveMessages(_d76,_d77,elem,_d78);
};
this._evKeyUp=function(e){
Event.stop(e);
this.selectPreviousMessage();
};
this._evKeyDown=function(e){
if(!$MessageList.previewPane()){
return;
}
Event.stop(e);
this.selectNextMessage();
};
this._evKeyDelete=function(e){
if(!this.current_message||this.current_message.obj.is_search!=$Search.active()){
return;
}
var obj=this.current_message.obj;
$UI.showStatus();
$MessageList.deleteMessages({folder:obj.folder(),id:obj.id()},function(){
$UI.clearStatus();
},false);
Event.stop(e);
};
};
}
if($Bootstrap.notLoaded("64e8984b5daa95a72df76355e7e768ae")){
Framework.register("Webmail.Modules.MessageList");
$$Keystroke=Webmail.Modules.MessageList.Keystroke=new function(){
};
$$Keystroke._active=true;
$$Keystroke._shift_down=false;
$$Keystroke.initialize=function(_d7e){
var ks=$$Keystroke;
Event.observe(_d7e,"keydown",ks.keydownHandler.bindAsEventListener(ks));
Event.observe(_d7e,"keyup",ks.keydownHandler.bindAsEventListener(ks));
this.enable=function(t){
if(typeof t=="undefined"){
return $$Keystroke._active;
}else{
$$Keystroke._active=t;
}
};
};
$$Keystroke.keydownHandler=function(e){
var ml=$$MessageList;
var ks=$$Keystroke;
if(!ks.active){
return;
}
if(e.keyCode==38){
ks._openPrev();
}
if(e.keyCode==40){
ks._openNext();
}
if(e.keyCode==16){
ks._shift_down=true;
}
if(e.keyCode==46){
if(ml.current_message){
}
}
};
$$Keystroke.keyupHandler=function(e){
if(e.keyCode==16){
ks._shift_down=false;
}
};
$$Keystroke._openPrev=function(){
if(!$$MessageList.current_message){
return;
}else{
if($$MessageList.current_message.obj.previous()){
$$MessageList.clickMessage($$MessageList.current_message.obj.previous());
}
}
};
$$Keystroke._openNext=function(){
if(!$$MessageList.current_message){
var _d85=$$MessageList.dom.getBody();
if(!_d85){
return;
}
if(_d85.firstChild&&_d85.firstChild.style.display!="none"){
$$MessageList.clickMessage(_d85.firstChild);
}else{
return;
}
}else{
var _d86=$$MessageList.current_message.obj.next();
if(_d86&&_d86.obj.visible()){
$$MessageList.clickMessage(_d86);
}else{
return;
}
}
};
}
if($Bootstrap.notLoaded("8535d8dab1fa6e3daec661eec051a345")){
Framework.register("Webmail.Modules.MessageList");
$$MessageRow=Webmail.Modules.MessageList.MessageRow=function(opts){
var _d88=Object.extend({click_handler:false},opts||{});
this._row=$$MessageRow._createRow();
this._row.obj=this;
this._row.name="container";
this._cbx=this._row.firstChild.firstChild;
this._cbx.container=this._row.firstChild;
this._pri=this._row.childNodes[1].firstChild;
this._pri.container=this._row.childNodes[1];
this._icon=this._row.childNodes[2].firstChild.firstChild;
this._icon.container=this._row.childNodes[2];
this._flag=this._row.childNodes[3].firstChild.firstChild;
this._flag.container=this._row.childNodes[3];
this._att=this._row.childNodes[4].firstChild;
this._att.container=this._row.childNodes[4];
this._from=this._row.childNodes[5].firstChild;
this._from.container=this._row.childNodes[5];
this._sub=this._row.childNodes[6].firstChild;
this._sub.container=this._row.childNodes[6];
this._folder_div=this._row.childNodes[7].firstChild;
this._date=this._row.childNodes[8].firstChild;
this._date.container=this._row.childNodes[8];
this._size=this._row.childNodes[9].firstChild;
this._size.container=this._row.childNodes[9];
$UI.Grid.addHoverColor(this._row);
if(_d88.click_handler){
Event.observe(this._row,"click",_d88.click_handler);
Event.observe(this._row,"dblclick",_d88.click_handler);
}
Event.observe(this._flag,"click",this.evToggleFlag.bindAsEventListener(this));
Event.observe(this._icon.container,"mousedown",this.evToggleRead.bindAsEventListener(this));
var _d89=$$MessageRow.makeDraggable(this._from);
var _d8a=$$MessageRow.makeDraggable(this._sub);
var _d8b=$$MessageRow.makeDraggable(this._date);
var _d8c=$$MessageRow.makeDraggable(this._size);
this._cbx.container.name="check_cont";
this._pri.container.name="pri_cont";
this._icon.container.name="icon_cont";
this._flag.container.name="flag_cont";
this._att.container.name="att_cont";
this._is_read=true;
this._flagged=false;
this._deleted=false;
this._visible=true;
this._selected=false;
this._replied=false;
this._forwarded=false;
this._folder=false;
this._from_email=false;
this._from_name=false;
this._score=false;
this._select_flag=false;
this._flag_color=false;
this._flag_list={red:"red_flag",yellow:"yellow_flag",green:"green_flag",blue:"blue_flag",purple:"purple_flag"};
};
$$MessageRow.prototype={checked:function(s){
if(typeof s=="undefined"){
return this._cbx.checked;
}else{
$UI_Grid.checkSelectedRow(this._cbx,s);
if(s){
if(!Element.hasClassName(this._row,"MessageRow_selected")){
Element.addClassName(this._row,"MessageRow_selected");
}
}else{
if(!this.selected()){
Element.removeClassName(this._row,"MessageRow_selected");
}
}
}
},emptyRow:function(){
this.visible(false);
},fillRow:function(ma,opts){
var _d90=Object.extend({use_to_field:false,show_folder:false},opts||{});
if(this.checked()){
this.checked(false);
}
Element.removeClassName(this._row,"Grid_selected_row");
if(this.selected()){
this.selected(false);
}
if(!this.visible()){
this.visible(true);
}
this.id(ma["id"]);
var pri=this._pri;
var _d92="";
var _d93=ma["priority"]||"0";
if(_d93!="0"){
_d93=_d93.slice(0,1);
}
if(_d93=="5"){
_d92="MessageRow_prio_low";
}else{
if(_d93=="1"||_d93=="2"){
_d92="MessageRow_prio_high";
}
}
if(_d92){
pri.style.visibility="";
pri.className="MessageRow_priority_image "+_d92;
}else{
pri.style.visibility="hidden";
}
if(ma["replied"]!=this.replied()){
this.replied(ma["replied"],true);
}
if(ma["forwarded"]!=this.forwarded()){
this.forwarded(ma["forwarded"],true);
}
if(ma["deleted"]!=this.deleted()){
this.deleted(ma["deleted"]);
}
if(ma["color"]){
this._flag_color=ma["color"];
}else{
this._flag_color=false;
}
this.flag(ma["flagged"],true);
this.read(ma["read"],true);
var att=this._att;
att.style.visibility=(ma["attach"]?"visible":"hidden");
if(opts.use_to_field){
var _d95=ma["to"];
}else{
var _d95=ma["from"];
}
var _d96="";
if(typeof _d95!="array"&&typeof _d95!="object"){
_d96="<span alt=\""+_d95+"\" title=\""+_d95+"\">"+_d95+"</span>";
}else{
for(var k=0,kk=_d95.length;k<kk;k++){
if(!_d95[k]["email"]){
continue;
}
var _d98=this._from_email=_d95[k]["email"];
var name=this._from_name=(_d95[k]["personal"]?_d95[k]["personal"]:_d98);
_d96+="<span alt=\""+_d98+"\"title=\""+_d98+"\">"+name+"</span>";
if(_d95[k+1]){
_d96+=", ";
}
}
}
this._from.innerHTML=_d96;
var sub=this._sub;
sub.innerHTML=ma["subject"];
this.setDateTime(ma["datetime"]);
this.showDate();
var size=this._size;
size.innerHTML=ma["size"];
this.folder(ma["folder"]);
if(opts.show_folder){
this.showFolder();
}else{
this.hideFolder();
}
if(ma["score"]){
this.score(ma["score"]);
}
},flag:function(f,_d9d){
if(typeof f=="undefined"){
return this._flagged;
}else{
this._flagged=f;
for(color in this._flag_list){
if(Element.hasClassName(this._flag,this._flag_list[color])){
Element.removeClassName(this._flag,this._flag_list[color]);
}
}
if(f){
switch(this._flag_color){
case Mail_YELLOW_FLAG:
Element.addClassName(this._flag,this._flag_list.yellow);
break;
case Mail_GREEN_FLAG:
Element.addClassName(this._flag,this._flag_list.green);
break;
case Mail_BLUE_FLAG:
Element.addClassName(this._flag,this._flag_list.blue);
break;
case Mail_PURPLE_FLAG:
Element.addClassName(this._flag,this._flag_list.purple);
break;
default:
Element.addClassName(this._flag,this._flag_list.red);
break;
}
}
if(!_d9d){
$MessageList.updateCachedMsg(this.folder(),this.id(),{color:this._flag_color,flagged:this._flagged});
}
}
},folder:function(n){
if(typeof n=="undefined"){
return this._folder;
}else{
this._folder=n;
}
},forwarded:function(f,_da0){
if(typeof f=="undefined"){
return this._forwarded;
}else{
this._forwarded=f;
if(this.read()){
var me=$$MessageRow;
if(this._replied&&f){
this._icon.className="fwd_reply";
}else{
this._icon.className=(f?"forward":"read_mail");
}
}
if(!_da0){
$MessageList.updateCachedMsg(this.folder(),this.id(),{forwarded:this._forwarded});
}
}
},from:function(){
var _da2={name:this._from_name,email:this._from_email};
return _da2;
},getCheckbox:function(){
return this._cbx;
},getContainer:function(){
return this._row;
},getUniqueId:function(){
return $MessageList.getUniqueId(this.folder(),this.id());
},hasAttachment:function(show){
if(typeof show=="undefined"){
return (this._att.style.visibility=="visible"?true:false);
}else{
if(!this.visible()){
return;
}
if(show){
this._row.style.display="";
}else{
if(!this.hasAttachment()){
if(this.checked()){
this.checked(false);
}
this._row.style.display="none";
}
}
}
},hideFolder:function(){
Element.addClassName(this._folder_div,"MessageRow_folder_hidden");
},id:function(n){
if(typeof n=="undefined"){
return this._id;
}else{
this._id=n;
}
},next:function(){
return (this._row.nextSibling?this._row.nextSibling:false);
},previous:function(){
return (this._row.previousSibling?this._row.previousSibling:false);
},read:function(r,_da6){
if(typeof r=="undefined"){
return this._is_read;
}else{
var me=$$MessageRow;
this._is_read=r;
if(r){
Element.removeClassName(this._row,"MessageRow_unread_msg");
var icon;
if(this.replied()&&this.forwarded()){
icon="fwd_reply";
}else{
if(this.replied()){
icon="reply";
}else{
if(this.forwarded()){
icon="forward";
}else{
icon="read_mail";
}
}
}
this._icon.className=icon;
}else{
Element.addClassName(this._row,"MessageRow_unread_msg");
this._icon.className="new_mail";
}
if(!_da6){
$MessageList.updateCachedMsg(this.folder(),this.id(),{read:r});
}
}
},remNode:function(){
this.visible(false);
this.checked(false);
this.selected(false);
var next=this.next();
if(next&&next.obj.visible()){
var c=this._row.parentNode;
c.removeChild(this._row);
c.appendChild(this._row);
}
$UI_Grid.changeHoverColor(this._row,false);
},replied:function(r,_dac){
if(typeof r=="undefined"){
return this._replied;
}else{
this._replied=r;
if(this.read()){
var me=$$MessageRow;
if(this._forwarded&&r){
this._icon.className="fwd_reply";
}else{
this._icon.className=(r?"reply":"read_mail");
}
}
if(!_dac){
$MessageList.updateCachedMsg(this.folder(),this.id(),{replied:this._replied});
}
}
},score:function(s){
if(typeof s=="undefined"){
return this._score;
}else{
this._score=s;
}
},selected:function(s){
if(typeof s=="undefined"){
return this._selected;
}else{
this._selected=s;
if(s){
Element.addClassName(this._row,"MessageRow_selected");
}else{
if(!this.checked()){
Element.removeClassName(this._row,"MessageRow_selected");
}
}
}
},setDateTime:function(_db0){
if(this._date_time){
delete (this._date_time);
}
this._date_time=$DateTime.create(null,null,_db0);
},showDate:function(){
if(!this._date_time){
var date="";
}else{
var date=this._date_time.getSimpleDisplay();
}
if(this._date.innerHTML!=date){
this._date.innerHTML=date;
}
},showFolder:function(){
var _db2=this.folder();
_db2=_db2.split(".");
var _db3=_db2[_db2.length-1];
if(_db3==CFG_FOLDER_INBOX){
_db3=L("Mlist.Folder.Inbox");
}
this._folder_div.innerHTML=_db3;
Element.removeClassName(this._folder_div,"MessageRow_folder_hidden");
},deleted:function(s){
if(typeof s=="undefined"){
return this._deleted;
}else{
this._deleted=s;
if(s){
Element.addClassName(this._row,"MessageRow_deleted");
}else{
Element.removeClassName(this._row,"MessageRow_deleted");
}
}
},visible:function(v){
if(typeof v=="undefined"){
return this._visible;
}else{
this._visible=v;
this._row.style.display=(v?"":"none");
}
},evSetFlag:function(e){
var elem=Event.findElement(e,"li");
var row=$$MessageRow.findContainer(elem.parentNode.parentNode.flag_row);
for(color in this._flag_list){
if(Element.hasClassName(elem,this._flag_list[color])){
switch(color){
case "green":
row.obj._flag_color=Mail_GREEN_FLAG;
break;
case "purple":
row.obj._flag_color=Mail_PURPLE_FLAG;
break;
case "blue":
row.obj._flag_color=Mail_BLUE_FLAG;
break;
case "yellow":
row.obj._flag_color=Mail_YELLOW_FLAG;
break;
default:
row.obj._flag_color=false;
break;
}
}
}
row.obj.flag(true);
$$MessageRow.open_dialog=false;
$Dialogs.unloadDialog(elem.parentNode.parentNode);
var _db9=function(){
var sort=$MessageList.sort();
if(sort==10||sort==11){
$MessageList.refillList();
}
};
$Mail.setFlag({id:row.obj.id(),folder:row.obj.folder()},true,_db9,row.obj._flag_color);
},evToggleFlag:function(e){
this.flag(!this.flag());
this._flag_color=false;
var _dbc=function(){
var sort=$MessageList.sort();
if(sort==10||sort==11){
$MessageList.refillList();
}
};
$Mail.setFlag({id:this.id(),folder:this.folder()},this.flag(),_dbc);
},evToggleRead:function(e){
if(Keystroke.key("u")){
alert("Folder: "+this.folder()+"\nUID: "+this.id());
}else{
this.read(!this.read());
var _dbf=Prototype.emptyFunction;
$Dispatcher.publish("Folders.status_change",this.folder(),0,(this.read()?-1:1));
$Mail.setReadStatus({id:this.id(),folder:this.folder()},this.read(),_dbf);
}
}};
$$MessageRow._createTemplate=function(){
var _dc0=Element.create("tr",{className:"MessageRow"});
var _dc1=Element.create("td",{className:"Grid_row_check_cell"});
var _dc2=Element.create("input",{type:"checkbox"});
Element.append(_dc1,_dc2);
var _dc3=Element.create("td",{className:"MessageRow_priority_cell"});
var _dc4=Element.create("img",{className:"MessageRow_priority_image",src:"images/blank.gif"});
_dc4.style.visibility="hidden";
Element.append(_dc3,_dc4);
var _dc5=Element.create("td",{className:"MessageRow_icon_cell"});
var _dc6=Element.create("div",{className:"MessageRow_icon_div"});
var _dc7=Element.create("img",{className:"read_envelope",src:"images/blank.gif"});
Element.append(_dc6,_dc7);
Element.append(_dc5,_dc6);
var _dc8=Element.create("td",{className:"flag_cell"});
var _dc9=Element.create("div",{className:"flag_div"});
var _dca=Element.create("img",{className:"flag_image",src:"images/blank.gif"});
Element.append(_dc9,_dca);
Element.append(_dc8,_dc9);
var _dcb=Element.create("td",{className:"MessageRow_attach_cell"});
var _dcc=Element.create("img",{className:"MessageRow_attach_image",src:"images/blank.gif"});
_dcc.style.visibility="hidden";
Element.append(_dcb,_dcc);
var _dcd=Element.create("td");
var _dce=Element.create("div",{className:"MessageRow_from_div Email_draggable"});
Element.append(_dcd,_dce);
var _dcf=Element.create("td");
var _dd0=Element.create("div",{className:"MessageRow_subject_div Email_draggable"});
Element.append(_dcf,_dd0);
var _dd1=Element.create("td");
var _dd2=Element.create("div",{className:"MessageRow_folder Email_draggable"});
Element.append(_dd1,_dd2);
var _dd3=Element.create("td",{className:"MessageRow_date_cell"});
var _dd4=Element.create("div",{className:"MessageRow_date_div Email_draggable"});
Element.append(_dd3,_dd4);
var _dd5=Element.create("td",{className:"MessageRow_size_cell"});
var _dd6=Element.create("div",{className:"MessageRow_size_div Email_draggable"});
Element.append(_dd5,_dd6);
Element.append(_dc0,_dc1,_dc3,_dc5,_dc8,_dcb,_dcd,_dcf,_dd1,_dd3,_dd5);
return _dc0;
};
$$MessageRow._createRow=function(){
if(!$$MessageRow._template){
$$MessageRow._template=$$MessageRow._createTemplate();
}
var row=$$MessageRow._template.cloneNode(true);
row.firstChild.firstChild.type="checkbox";
return row;
};
$$MessageRow.evClearDialogs=function(){
if($$MessageRow.open_dialog){
if(wack.Browser.is_linux&&wack.Browser.is_firefox&&$$MessageRow.just_opened){
$$MessageRow.just_opened=false;
return;
}
$Dialogs.unloadDialog($$MessageRow.open_dialog);
$$MessageRow.open_dialog=false;
}
};
$$MessageRow.findContainer=function(elem){
while(elem.name!="container"&&elem.nodeName.toLowerCase()!="document.body"){
elem=elem.parentNode;
}
if(elem.nodeName.toLowerCase()=="document.body"){
return false;
}
return elem;
};
$$MessageRow.checkDragCallback=function(_dd9,_dda){
var tr=$$MessageRow.findContainer(_dd9);
tr.obj.checked(_dda);
};
$$MessageRow.makeDraggable=function(elem){
var _ddd=new Draggable(elem,{delay:200,revert:true,reverteffect:function(elem,top,left){
elem.style.top=elem.style.left=0;
elem=$(elem);
elem.removeClassName("Email_drag_active");
elem.style.cursor=elem.style.position="";
Element.append(elem._parent,elem);
$MessageList.is_dragging=false;
},ghosting:true,starteffect:function(elem){
Position.includeScrollOffsets=true;
elem=$(elem);
elem.addClassName("Email_drag_active");
elem.style.cursor="move";
elem._contents=elem.innerHTML;
elem._parent=elem.parentNode;
var tr=$$MessageRow.findContainer(elem._parent);
if(tr.obj.checked()){
var msgs=$$MessageList.getCheckedRows(tr.parentNode);
var _de4=msgs.length;
elem.msgs=msgs;
}else{
_de4=0;
elem.msgs=tr.obj.id();
}
var _de5=Element.create("div");
_de5.style.zIndex=200000;
if(_de4==0||_de4==1){
_de5.innerHTML=L("Mlist.S.Move1Item");
}else{
_de5.innerHTML=L("Mlist.S.MoveItems",_de4);
}
elem.innerHTML="";
Element.append(document.body,elem);
elem.append(_de5);
$MessageList.is_dragging=true;
},endeffect:function(elem){
Position.includeScrollOffsets=false;
elem=$(elem);
elem.removeClassName("Email_drag_active");
elem.style.cursor="";
Element.append(elem._parent,elem);
elem.innerHTML=elem._contents;
elem._parent=null;
elem._contents=null;
$MessageList.is_dragging=false;
},change:function(_de7){
_de7.offset=[8,8];
}});
elem.style.position="";
};
$$MessageRow.dropMessageInFolder=function(_de8,_de9){
$$MessageList.header.dom("checkbox").checked=false;
var tr=$$MessageRow.findContainer(_de9._parent);
var _deb=tr.obj.folder();
if(_deb==_de8){
return;
}
var _dec=$$MessageList.getCheckedRows(tr.parentNode);
if((_dec.length==0)||(!tr.obj.checked())){
var _ded=tr.obj.id();
var _dee={folder:_deb,id:_ded,unread:!tr.obj.read()};
_dec=[_dee];
}
var _def=$$MessageList.dom.getBody();
$UI.showStatus(L("Mlist.St.Move"));
$MessageList.moveMessages(_dec,_de8);
};
Event.observe(window.document,"click",$$MessageRow.evClearDialogs.bindAsEventListener(this));
}
if($Bootstrap.notLoaded("47ac2d09e26b8c1c51dfb35f00b03f00")){
Framework.create("Webmail.Modules.MessageList.Prefetcher",wack.Class.create());
Webmail.Modules.MessageList.Prefetcher.prototype=wack.extend(new Webmail.AbstractPrefetcher(),{initialize:function(list,_df1,_df2,_df3){
_df3.subscribe("Folders.newUnreadMessages",this.cbSub_addPrefetchItem);
Object.bindCallbacks(this);
this._exclusion_list=_df1||new Webmail.Modules.MessageList.Prefetcher.FolderExclusionList();
this._options=Object.extend({prefetch_buffer:1,interval_sleep_time:60},_df2||{});
this._list=new Webmail.Modules.MessageList.Prefetcher.FolderList();
if(list){
var item;
while(item=list.shiftTopItem()){
if($FolderList.getTotalMessages(item)<=0){
$MessageList.setCache([],item,{sort:-1,total:0,unread:0});
}else{
this.addPrefetchItem(item);
}
}
}
},start:function(){
if(this._current_timer){
window.clearInterval(this.interval_timer);
}
this._active=true;
this.prefetchNextItems();
},stop:function(){
this._active=false;
if(this.interval_timer){
window.clearInterval(this.interval_timer);
}
},sendRequest:function(item,_df6){
if(item.length==0){
return;
}
var _df7={background:true,cluster:"prefetch",update:$MessageList.hasCache(item[0])};
$MessageList.prefetchFolderMessageHeaders(item[0],_df7,_df6);
},completeFetch:function(_df8){
if($MessageList.hasCache(_df8.folder)){
var _df9={};
var _dfa=$MessageList.getCache(_df8.folder);
var _dfb=0;
for(var uid in _dfa){
if(_dfb>50){
break;
}
if(!_df8.msgs[uid]){
_df8.msgs[uid]=_dfa[uid];
}
_dfb++;
}
}
$MessageList.setCache(_df8.msgs,_df8.folder,{sort:_df8.sort,total:_df8.total,unread:_df8.unseen});
},cbSub_addPrefetchItem:null,_cbSub_addPrefetchItem:function(item){
this.addPrefetchItem(item);
}});
}
if($Bootstrap.notLoaded("9a9272bb9a2d449d0ab6425366dd693f")){
Framework.register("Webmail.Modules.MessageList.Prefetcher");
Webmail.Modules.MessageList.Prefetcher.FolderExclusionList=Class.create();
Webmail.Modules.MessageList.Prefetcher.FolderExclusionList.prototype=wack.extend(new wack.List(),{initialize:function(){
},matches:function(item,_dff){
if(item.match(_dff)){
return true;
}
return false;
}});
}
if($Bootstrap.notLoaded("e4ff6a9898c6cd5285faaf207c4ae748")){
Framework.register("Webmail.Modules.MessageList.Prefetcher");
Webmail.Modules.MessageList.Prefetcher.FolderList=wack.Class.create();
Webmail.Modules.MessageList.Prefetcher.FolderList.prototype=wack.extend(new wack.List(),{initialize:function(){
},addItemToList:function(item,list){
if(!this.contains(item)){
list.push(item);
}
}});
}
if($Bootstrap.notLoaded("0e3cd2dd81ac715195fb39aad52da40c")){
Framework.register("Webmail.Widgets");
$Widgets.ContextMenu.Messages=$Widgets.create({fpicker:null,msg_row:null,hide:function(){
if(this.msg_row){
Element.removeClassName(this.msg_row,"Grid_hover_row");
}
this._menu.hide();
},_drawFlags:function(){
var _e02=Element.createHtml("<div class=\"flags\"><span class=\"label\">"+L("Mlist.Action.Flag")+":</span><a class=\"flag_red\" href=\"javascript:void(0);\" _ref=\"flag_red\">&nbsp;</a><a class=\"flag_green\" href=\"javascript:void(0);\" _ref=\"flag_green\">&nbsp;</a><a class=\"flag_purple\" href=\"javascript:void(0);\" _ref=\"flag_purple\">&nbsp;</a><a class=\"flag_blue\" href=\"javascript:void(0);\" _ref=\"flag_blue\">&nbsp;</a><a class=\"flag_yellow\" href=\"javascript:void(0);\" _ref=\"flag_yellow\">&nbsp;</a><a class=\"flag_grey\" href=\"javascript:void(0);\" _ref=\"flag_grey\">&nbsp;</a></div>");
Event.observe(_e02,"click",this.evSetFlag);
return _e02;
},_findClickedElement:function(e){
this.msg_row=Event.findElement(e,"tr");
if(!this.msg_row||(this.msg_row==document)||(this.msg_row.id=="MList_header")){
this.msg_row=null;
return false;
}
Element.addClassName(this.msg_row,"Grid_hover_row");
return this.msg_row;
},_getData:function(elem){
var _e05=false;
if(elem.obj.checked()){
if(this.options.search){
cont=$$Search.dom.getBody();
rows=$$Search.getCheckedRows(cont,true);
}else{
var cont=$$MessageList.dom.getBody();
var rows=$$MessageList.getCheckedRows(cont,true);
}
if(rows.length>1){
_e05=true;
}
var _e08=[];
for(var i=0,ii=rows.length;i<ii;i++){
_e08.push({id:rows[i].obj.id(),folder:rows[i].obj.folder(),from:rows[i].obj.from(),read:rows[i].obj.read(),elem:rows[i]});
}
}else{
var _e08=[{id:elem.obj.id(),folder:elem.obj.folder(),from:elem.obj.from(),read:elem.obj.read(),subject:elem.obj._sub.innerHTML,elem:elem}];
}
var data={multiple:_e05,messages:_e08};
return data;
},_getMenuItems:function(){
var _e0b=[{label:L("Message.Link.NewWindow"),callback:this.cbOpenNew,isdefault:true,disabled:this._isMultiple.bind(this)},{label:L("Message.Link.Delete"),callback:this.cbDelete},{label:L("Mlist.Action.MarkRead"),callback:this.cbMarkRead},{label:L("Mlist.Action.MarkUnread"),callback:this.cbMarkNew},{label:L("Message.Link.NotSpam"),callback:this.cbReportNotSpam,show:function(){
return $FolderList.isSpam(this._data.messages[0].folder);
}.bind(this)},{label:L("Message.Link.Spam"),callback:this.cbReportSpam,show:function(){
return !($FolderList.isSpam(this._data.messages[0].folder));
}.bind(this)},{new_section:true},{label:L("Message.Link.Reply"),callback:this.cbReply,disabled:this._isMultiple.bind(this)},{label:L("Message.Link.ReplyAll"),callback:this.cbReplyAll,disabled:this._isMultiple.bind(this)},{label:L("Message.Link.Forward"),callback:this.cbForward},{label:L("Webmail.L.Print"),callback:this.cbPrint,disabled:this._isMultiple.bind(this)},{label:L("Message.Link.QuickReply"),callback:this.cbQuickReply,disabled:this._isMultiple.bind(this)},{new_section:true},{custom:this._drawFlags(),callback:null},{label:L("Mlist.Action.AddSender")+"...",callback:this.cbAddSender,disabled:this._isMultiple.bind(this)},{label:L("Mlist.Action.Move")+"...",callback:this.cbMoveTo}];
return _e0b;
},_isMultiple:function(){
return this._data.multiple;
},cbAddSender:null,_cbAddSender:function(){
REQUIRE("combo/contacts");
var _e0c=this._data.messages[0];
var name=(_e0c.from.name?_e0c.from.name:"");
var _e0e=(_e0c.from.email?_e0c.from.email:"");
var _e0f=new $$Contacts.AddContactDialog({standard:{email:_e0e,firstname:name},custom:false});
_e0f.addErrorListener(function(msg){
$$Contacts._onError(msg,function(){
_e0f.enableDialog(true);
});
_e0f.enableDialog(false);
}.bind(this));
_e0f.show();
},cbDelete:null,_cbDelete:function(){
var _e11=[];
var _e12=this._data.messages;
for(var i=0,ii=_e12.length;i<ii;i++){
_e11.push({folder:_e12[i].folder,id:_e12[i].id});
}
$UI.showStatus();
$MessageList.deleteMessages(_e11);
},cbForward:null,_cbForward:function(){
var _e14=[];
var _e15=this._data.messages;
for(var i=0,ii=_e15.length;i<ii;i++){
_e14.push({folder:_e15[i].folder,id:_e15[i].id});
}
if(this._isMultiple()){
$MessageList.forwardMessages(_e14);
}else{
$Dispatcher.compose(null,wm_Compose_FORWARD,_e14[0].id,_e14[0].folder);
}
},cbMarkNew:null,_cbMarkNew:function(){
var _e17=[];
var _e18=this._data.messages;
for(var i=0,ii=_e18.length;i<ii;i++){
if(_e18[i].read){
_e17.push({folder:_e18[i].folder,id:_e18[i].id});
_e18[i].elem.obj.read(false);
}
}
$MessageList.markAsRead(_e17,false);
$Dispatcher.publish("Folders.status_change",_e18[0].folder,0,_e17.length);
},cbMarkRead:null,_cbMarkRead:function(){
var _e1a=[];
var _e1b=this._data.messages;
for(var i=0,ii=_e1b.length;i<ii;i++){
if(!(_e1b[i].read)){
_e1a.push({folder:_e1b[i].folder,id:_e1b[i].id});
_e1b[i].elem.obj.read(true);
}
}
$MessageList.markAsRead(_e1a,true);
$Dispatcher.publish("Folders.status_change",_e1b[0].folder,0,-_e1a.length);
},cbMoveTo:null,_cbMoveTo:function(){
$Widgets.load("FolderPicker");
var _e1d=$Widgets.FolderPicker.factory({callback:this.cbMoveToChoose});
_e1d.show();
},cbMoveToChoose:null,_cbMoveToChoose:function(_e1e){
var _e1f=[];
var _e20=this._data.messages;
for(var i=0,ii=_e20.length;i<ii;i++){
_e1f.push({folder:_e20[i].folder,id:_e20[i].id,unread:!(_e20[i].read)});
}
$UI.showStatus();
$MessageList.moveMessages(_e1f,_e1e);
},cbOpenNew:null,_cbOpenNew:function(){
var _e22=this._data.messages[0];
var _e23={folder:_e22.folder,uid:_e22.id,unread:!(_e22.read)};
$$Message.popup(_e23);
},cbPrint:null,_cbPrint:function(){
var _e24=this._data.messages[0];
var _e25=$$MessageList._email_widget;
if((_e25!=null)&&(_e25.getUid()==_e24.id)){
$$MessageList._email_widget.evPrint();
}else{
var _e26={folder:_e24.folder,uid:_e24.id,unread:!(_e24.read),printOnLoad:true};
$$Message.popup(_e26);
}
},cbQuickReply:null,_cbQuickReply:function(){
var _e27=this._data.messages[0];
$Widgets.load("Compose.QuickReply");
var _e28=$Widgets.Compose.QuickReply.factory(_e27);
_e28.show();
},cbReply:null,_cbReply:function(){
var _e29=this._data.messages[0];
$Dispatcher.compose(null,wm_Compose_REPLY,_e29.id,_e29.folder);
},cbReplyAll:null,_cbReplyAll:function(){
var _e2a=this._data.messages[0];
$Dispatcher.compose(null,wm_Compose_REPLY_ALL,_e2a.id,_e2a.folder);
},cbReportNotSpam:null,_cbReportNotSpam:function(){
var _e2b=[];
var _e2c=this._data.messages;
for(var i=0,ii=_e2c.length;i<ii;i++){
_e2b.push({folder:_e2c[i].folder,id:_e2c[i].id});
}
$UI.showStatus();
$MessageList.reportNotSpam(_e2b);
},cbReportSpam:null,_cbReportSpam:function(){
var _e2e=[];
var _e2f=this._data.messages;
for(var i=0,ii=_e2f.length;i<ii;i++){
_e2e.push({folder:_e2f[i].folder,id:_e2f[i].id});
}
var msg=(_e2f.length>1?"Mlist.C.ReportSpam.P":"Mlist.C.ReportSpam");
if(!confirm(L(msg))){
return;
}
$UI.showStatus();
$MessageList.reportSpam(_e2e);
},evSetFlag:null,_evSetFlag:function(e){
var elem=Event.findElement(e,"a");
var flag,color;
switch(elem.className){
case "flag_red":
flag=true;
color=null;
break;
case "flag_green":
flag=true;
color=Mail_GREEN_FLAG;
break;
case "flag_purple":
flag=true;
color=Mail_PURPLE_FLAG;
break;
case "flag_blue":
flag=true;
color=Mail_BLUE_FLAG;
break;
case "flag_yellow":
flag=true;
color=Mail_YELLOW_FLAG;
break;
default:
flag=false;
color=null;
break;
}
var _e35=[];
var _e36=this._data.messages;
for(var i=0,ii=_e36.length;i<ii;i++){
_e35.push({folder:_e36[i].folder,id:_e36[i].id});
_e36[i].elem.obj._flag_color=color;
_e36[i].elem.obj.flag(flag);
}
$Mail.setFlag(_e35,flag,function(){
var sort=$MessageList.sort();
if(sort==10||sort==11){
$MessageList.refillList();
}
},color);
}},$Widgets.ContextMenu);
}
if($Bootstrap.notLoaded("d3af780be29cfd4ee41efe1583586890")){
Framework.register("Webmail.Modules");
$$Message=Webmail.Modules.Message={config:{disable_scroll:true,enable_print:true,enable_search:true},_email_widget:null,_popups:[],__preload:function(){
this.container=Element.createHtml(["<div class=\"Message_container\">","<div class=\"toolbar\"></div>","<div class=\"title_bar\" style=\"overflow:hidden\">","<div class=\"title_bar_heading\" ","style=\"float:left;position:relative;padding-left:10px;width:80%;\">","</div>","<div style=\"float:right;position:relative;padding-right:10px;\">","<a href=\"javascript:void(0);\">",L("Message.ShowHeader"),"</a>","</div>","</div>","<div></div>","</div>"].join(""));
$Templates.setDom(this.container,{toolbar:"/firstChild",title_bar:"/childNodes[1]",title_left:"/title_bar/firstChild",title_right:"/title_bar/lastChild",subject:"/title_left",header_link:"/title_right/a[0]",wrapper:"/lastChild"});
var dom=this.container.dom;
Event.observe(dom("header_link"),"click",this.evToggleFullHeader);
this.container.dom("toolbar").appendChild($$Email.getUtilityBar());
this.read();
this.container.dom("wrapper").appendChild($C(this._email_widget));
return this.container;
},__load:function(_e3a){
this.container.dom("toolbar").appendChild($$Email.getUtilityBar());
if(!_e3a){
return;
}
if(this._email_widget.options){
if(this._email_widget.getFolder()==_e3a.folder&&this._email_widget.getUid()==_e3a.uid){
this._email_widget.resize();
return;
}
}
this.read(_e3a);
},__resize:function(){
if(!this.container){
return;
}
var dom=this.container.dom;
var _e3c=dom("wrapper");
var _e3d=Position.positionedOffset(_e3c)[1];
_e3c.style.display="none";
var _e3e=_e3c.parentNode.offsetHeight;
var _e3f=_e3e-_e3d;
if(_e3f<=0){
return;
}
_e3c.style.height=_e3f+"px";
_e3c.style.display="";
this._email_widget.resize();
},active:function(){
if($Controller._active_module_key=="Message"){
return true;
}else{
return false;
}
},popup:function(_e40){
this._popups.push($Popup.create({height:CFG_COMPOSE_WINDOW_HEIGHT,width:CFG_COMPOSE_WINDOW_WIDTH,onload:function(win){
win.REQUIRE("combo/email_popup");
win.$$Message._doPopup.bind(win.$$Message)(_e40);
},onresize:function(win){
if(win.$$Message){
win.$$Message.evPopupResize.bind(win.$$Message)();
}
},show_loading:true}));
},read:function(_e43){
if(!this._email_widget){
$Widgets.load("Email");
this._email_widget=$Widgets.Email.factory({onchange:this.cbEmailChange,view:$Widgets.Email.VIEW_FULL});
}
if(!_e43){
return;
}
$UI.showStatus();
this._email_widget.populate({folder:_e43.folder,uid:_e43.uid,unread:_e43.unread,callback:function(_e44){
if(_e44.exception){
return;
}
if(_e44._from_cache){
$Mail.setReadStatus({folder:_e43.folder,id:_e43.uid},true,function(){
});
}
if(!this.active()){
$Controller.loadModule("Message");
}
this.cbEmailChange();
}.bind(this)});
},_doPopup:function(_e45){
this.container=Element.createHtml(["<div class=\"Message_container\">","<div class=\"popup_titlebar\">","<a href=\"javascript:void(0);\">",L("Message.ShowHeader"),"</a>","<span class=\"sep\">|</span>","<a href=\"javascript:void(0);\">",L("Webmail.L.Print"),"</a>","</div>","<div>","</div>","</div>"].join(""));
$Templates.setDom(this.container,{wrapper:"/lastChild",title_bar:"/firstChild",header_link:"/title_bar/a[0]",print_link:"/title_bar/a[1]"});
var dom=this.container.dom;
Event.observe(dom("header_link"),"click",this.evToggleFullHeader);
Event.observe(dom("print_link"),"click",this.evPrint);
this._email_widget=$Widgets.Email.factory({view:$Widgets.Email.VIEW_POPUP});
dom("wrapper").appendChild($C(this._email_widget));
this._email_widget.populate({folder:_e45.folder,uid:_e45.uid,pid:_e45.pid,callback:function(_e47){
if(_e47.exception){
window.close();
return;
}
Element.append(document.body,this.container);
this.__resize();
if(_e45.printOnLoad==true){
this.evPrint();
}
}.bind(this)});
},cbEmailChange:null,_cbEmailChange:function(){
if(this.container){
this.container.dom("subject").innerHTML=this._email_widget.getSubject();
}
},cbSubMessageMove:null,_cbSubMessageMove:function(_e48){
for(var p=0;p<this._popups.length;p++){
var _e4a=this._popups[p];
if(_e4a&&!_e4a.closed){
var _e4b=_e4a.$$Message._email_widget.getFolder();
var uid=_e4a.$$Message._email_widget.getUid();
for(var i=0,ii=_e48.length;i<ii;i++){
if(_e48[i].folder==_e4b&&_e48[i].id==uid){
Function.release(function(){
_e4a.close();
});
this._popups.remove(p);
p--;
break;
}
}
}else{
this._popups.remove(p);
p--;
}
}
if(this.active()&&_e48[0]&&this._email_widget.getFolder()==_e48[0].folder&&this._email_widget.getUid()==_e48[0].id){
$Controller.backModule();
$$MessageList.removeRows(_e48,$$MessageList.dom.getBody());
$MessageList.refillList();
}
},cbSubUpdateFolders:null,_cbSubUpdateFolders:function(){
if(this.active()){
this._email_widget._setFolderDropdown();
}
for(var i=0,ii=this._popups.length;i<ii;i++){
var _e4f=this._popups[i];
if(_e4f&&!_e4f.closed){
_e4f.$$Message._email_widget._setFolderDropdown();
}
}
},evPrint:null,_evPrint:function(){
window.print();
},evPopupResize:null,_evPopupResize:function(){
this.__resize();
},evToggleFullHeader:null,_evToggleFullHeader:function(e){
var link=Event.findElement(e,"a");
if(link._shown){
link._shown=false;
this._email_widget.toggleFullHeader(false);
link.innerHTML=L("Message.ShowHeader");
}else{
link._shown=true;
this._email_widget.toggleFullHeader(true);
link.innerHTML=L("Message.HideHeader");
}
}};
Object.bindCallbacks($$Message);
Object.bindObservers($$Message);
$Dispatcher.subscribe("Message.move",$$Message.cbSubMessageMove);
$Dispatcher.subscribe("Email.Folders.update",$$Message.cbSubUpdateFolders);
}
if($Bootstrap.notLoaded("9f2de3a55c76bf742f037929fbcfa81c")){
Framework.register("Webmail.Modules.Message");
Framework.create("Webmail.Modules.Message.Prefetcher",wack.Class.create());
Webmail.Modules.Message.Prefetcher.prototype=wack.extend(new Webmail.AbstractPrefetcher(),{_current_folder:null,_current_request:null,initialize:function(list,_e53){
Object.bindCallbacks(this);
this._options=Object.extend({prefetch_buffer:1,interval_sleep_time:60},_e53||{});
this._list=list||new Webmail.Modules.Message.Prefetcher.MessageList();
$Dispatcher.subscribe("Folders.setActive",this.cbSub_switchActiveFolder);
$Dispatcher.subscribe("MessageList.page",this.cbSub_pageFolder);
},addMessages:function(_e54,_e55){
if(_e55){
this._list.clear();
}
var _e56={};
for(var uid in _e54.msgs){
if(_e54.msgs[uid]==false){
var _e58=$MessageList.getUniqueIdParts(uid);
}else{
var _e58=_e54.msgs[uid];
}
if(!$MessageCache.isCached(_e58.folder,_e58.id)){
_e58.uid=_e58.id;
this._list.add(_e58);
}
}
},setCurrentFolder:function(_e59){
this._current_folder=_e59;
},_cancelCurrentRequest:function(){
if(this._current_request){
this._current_request.abort();
}
},cbAddMessages:null,_cbAddMessages:function(_e5a){
this.addMessages(_e5a);
},cbSub_switchActiveFolder:null,_cbSub_switchActiveFolder:function(_e5b){
var _e5c=_e5b.folder;
if(this._current_folder!=_e5c){
this._cancelCurrentRequest();
}
this.setCurrentFolder(_e5c);
if(_e5b.total>0){
this.cbAddMessages(_e5b);
this.prefetchNextItems();
}
},cbSub_pageFolder:null,_cbSub_pageFolder:function(_e5d){
this._cancelCurrentRequest();
this.addMessages(_e5d,true);
this.prefetchNextItems();
},completeFetch:function(_e5e){
if(_e5e){
for(uid in _e5e){
$MessageCache.addToCache(_e5e[uid].folder,_e5e[uid].uid,_e5e[uid]);
}
}
},prefetchNextItems:function(){
var _e5f=[];
var _e60=false;
while((_e5f.length<this._options.prefetch_buffer)&&!_e60){
var _e61=this._list.shiftTopItem(this._current_folder);
if(_e61){
_e5f.push({folder:_e61.folder,uid:_e61.uid});
}else{
_e60=true;
}
}
if(_e5f.length>0){
this.sendRequest(_e5f,this.cbProcessFetchResponse);
}else{
this._interval_timer=window.setInterval(this.cbInt_resumePrefetch,this._options.interval_sleep_time*1000);
}
},sendRequest:function(_e62,_e63){
this._current_request=$Message.getMultiple(_e62,{callback:_e63,prefetch:true});
}});
}
if($Bootstrap.notLoaded("3c7a2c895916905e0d92babc904c2998")){
Framework.register("Webmail.Modules.Message.Prefetcher");
Webmail.Modules.Message.Prefetcher.MessageList=wack.Class.create();
Webmail.Modules.Message.Prefetcher.MessageList.prototype=wack.extend(new wack.List(),{initialize:function(){
this._list={};
},contains:function(item){
if(this._list[item.folder]){
for(var i=0;i<this._list[item.folder].length;i++){
if(this.matches(item,this._list[item.folder][i])){
return true;
}
}
}
return false;
},isEmpty:function(){
var _e66=0;
for(var _e67 in this._list){
_e66=_e66+this._list[_e67].length;
}
if(_e66==0){
return true;
}else{
return false;
}
},shiftTopItem:function(_e68){
if(this._list[_e68]){
return this._list[_e68].shift();
}
return false;
},addItemToList:function(item,list){
if(!this.contains(item)){
if(!list[item.folder]){
list[item.folder]=[];
}
list[item.folder].push(item);
}
},removeItemFromList:function(item,list){
if(list[item.folder]){
var _e6d=new Webmail.Modules.Message.Prefetcher.MessageList();
for(var x=0;x<list[item.folder].length;x++){
if(!list.matches(item,list[item.folder][x])){
_e6d.add(list[item.folder][x]);
}
}
list=_e6d;
}
},matches:function(item,_e70){
if((item.folder==_e70.folder)&&(item.uid==_e70.uid)){
return true;
}
return false;
}});
}
if($Bootstrap.notLoaded("b11abed45fdbaa843168afd9987b6c58")){
Framework.register("Webmail");
$MessageCache=Webmail.MessageCache={_cache:{},_cache_list:{},_enabled:true,_folder:null,_max_folders:2,_messages_retrieving:[],_pending_request:null,_recent_folders:[],_always_cache:{},addToCache:function(_e71,uid,data){
if(window!=$Bootstrap.getAppWindow()){
return;
}
if(!this._cache[_e71]){
this._cache[_e71]={size:0,messages:{}};
}
if(!this._cache[_e71].messages[uid]){
this._cache[_e71].size++;
}
this._cache[_e71].messages[uid]=data;
this.cleanCache();
return true;
},clearCache:function(){
this._cache={};
},cleanCache:function(){
if(window!=$Bootstrap.getAppWindow()){
return $Bootstrap.getAppWindow().MessageCache.cleanCache();
}
for(var _e74 in this._cache){
var _e75=1;
if(this._cache[_e74].size>CFG_MESSAGE_PREFETCH_LIMIT){
for(var uid in this._cache[_e74].messages){
if(!$$MessageList.isCurrentMessage(uid,_e74)){
this._removeMessage(_e74,uid);
}
if(this._cache[_e74].size<=CFG_MESSAGE_PREFETCH_LIMIT){
break;
}
}
}
}
},disableCaching:function(){
this._enabled=false;
},getCachedMsg:function(_e77,uid){
if(window!=$Bootstrap.getAppWindow()){
return $Bootstrap.getAppWindow().$MessageCache.getCachedMsg(_e77,uid);
}
if(this.isCached(_e77,uid)){
return this._cache[_e77].messages[uid];
}
return false;
},isCached:function(_e79,uid){
if(window!=$Bootstrap.getAppWindow()){
return $Bootstrap.getAppWindow().$MessageCache.isCached(_e79,uid);
}
if(this._cache[_e79]&&this._cache[_e79].messages[uid]&&!this._cache[_e79].messages[uid]["uncachable"]){
return true;
}
return false;
},isEnabled:function(){
return this._enabled;
},_removeMessage:function(_e7b,uid){
if(this.isCached(_e7b,uid)){
delete this._cache[_e7b].messages[uid];
this._cache[_e7b].size--;
}
},cbSubMessageMove:null,_cbSubMessageMove:function(_e7d){
for(var i=0,ii=_e7d.length;i<ii;i++){
this._removeMessage(_e7d[i].folder,_e7d[i].id);
}
},cbSubSettingsChange:null,_cbSubSettingsChange:function(val){
this.clearCache();
}};
$MessageCache._always_cache[CFG_FOLDER_INBOX]=true;
Object.bindCallbacks($MessageCache);
$Dispatcher.subscribe("Message.move",$MessageCache.cbSubMessageMove);
$Dispatcher.subscribe("Settings.change.allow_html_mail",$MessageCache.cbSubSettingsChange);
$Dispatcher.subscribe("Settings.change.attachments_inline",$MessageCache.cbSubSettingsChange);
}
if($Bootstrap.notLoaded("2e71437682aa35ed8be1325d85dc9b0d")){
Framework.register("Webmail.Widgets");
$Widgets.ContextMenu.EmailContact=$Widgets.create({_findClickedElement:function(e){
var link=Event.findElement(e,"a");
if(!link||link.getAttribute("_email_contact")!="true"){
return false;
}
return link;
},_getData:function(elem){
var data={name:elem.getAttribute("_name"),email:elem.getAttribute("_email")};
return data;
},_getMenuItems:function(){
var _e84=$Bootstrap.getAppWindow();
var _e85=[{label:function(){
return L("Contacts.General.SendEmail")+" ("+this._data.email+")";
}.bind(this),callback:this.cbSendEmail,isdefault:true},{label:L("Contacts.Add"),callback:this.cbAddContact,disabled:function(){
return window!=_e84;
}},{label:L("LeftMenu.L.Search"),callback:this.cbSearch,disabled:function(){
return window!=_e84;
}}];
if(Browser.is_ie){
_e85.push({label:L("Email.Menu.CopyEmail"),callback:this.cbCopyEmail});
}
return _e85;
},cbAddContact:null,_cbAddContact:function(){
REQUIRE("combo/contacts");
var _e86=new $$Contacts.AddContactDialog({standard:{email:this._data.email,firstname:this._data.name},custom:false});
_e86.addErrorListener(function(msg){
$$Contacts._onError(msg,function(){
_e86.enableDialog(true);
});
_e86.enableDialog(false);
}.bind(this));
_e86.show();
},cbCopyEmail:null,_cbCopyEmail:function(){
if(window.clipboardData&&clipboardData.setData){
clipboardData.setData("Text",this._data.email);
}
},cbSearch:null,_cbSearch:function(){
$$Search.search("simple",this._data.email);
},cbSendEmail:null,_cbSendEmail:function(){
$Widgets.Email.evAddressClick(this._data.email);
}},$Widgets.ContextMenu);
}
if($Bootstrap.notLoaded("6b3a3b445844a5975f499868426b175c")){
Framework.register("Webmail");
$Message=Webmail.Message={get:function(_e88,uid,pid,_e8b){
_e8b=wack.extend({background:false,callback:null,call_group:null,force_plain:false,get_siblings:false,use_cache:true,prefetch:false},_e8b||{});
if(_e8b.use_cache){
if(!pid&&!_e8b.force_plain&&$MessageCache.isCached(_e88,uid)){
if(_e8b.callback){
var _e8c=$MessageCache.getCachedMsg(_e88,uid);
_e8c._from_cache=true;
_e8b.callback(_e8c);
}
return;
}
}
var _e8d={background:_e8b.background,callback:function(_e8e){
if(_e8b.callback){
_e8b.callback(_e8e);
}
}.bind(this),call_group:_e8b.call_group,handle_conn_err:false};
$Data.request("MessageView.getMessage",_e8d,_e88,uid,pid||0,{force_plain:_e8b.force_plain,get_siblings:_e8b.get_siblings,prefetch:_e8b.prefetch});
},getMultiple:function(_e8f,_e90){
_e90=wack.extend({background:true,callback:null,call_group:null,first_call:false,for_caching:false,force_plain:false,get_siblings:false,use_cache:true,prefetch:false},_e90||{});
var _e91="MessageView.getMessages";
if(_e90.prefetch){
_e91="MessageView.getPrefetchMessages";
}
var _e92=$Data.request(_e91,{background:_e90.background,callback:function(_e93){
if(_e90.callback){
_e90.callback(_e93);
}
},call_group:_e90.call_group,handle_conn_err:!_e90.background,cluster:"prefetch"},_e8f,null,{first_call:_e90.first_call,for_caching:_e90.for_caching,force_plain:_e90.force_plain,get_siblings:_e90.get_siblings,prefetch:_e90.prefetch});
return _e92;
},_getFromCache:function(_e94,uid){
var _e96=this._cache[_e94][uid];
return _e96;
},_parseUidList:function(_e97){
var _e98={};
for(var i=0,ii=_e97.length;i<ii;i++){
_e98[_e97[i]]=true;
}
return _e98;
}};
Object.bindCallbacks($Message);
}
if($Bootstrap.notLoaded("214448e451692f03446949849dc3a74d")){
if(!window["Webmail"]){
Webmail={};
}
$Popup=Webmail.Popup={default_height:600,default_width:600,popup_windows:new Array(),_showing_err:false,_popup_data:{},_c:{},create:function(_e9a){
if(this._showing_err){
return null;
}
_e9a=Object.extend({height:$Popup.default_height,width:$Popup.default_width,title:"",onload:function(win){
return Prototype.emptyFunction;
},onresize:function(win){
return Prototype.emptyFunction;
},show_loading:true},_e9a||{});
var h=(new Date()).getTime();
var _e9e=$Bootstrap.getAppWindow().Webmail.getBaseUri();
var url=_e9e+"popup.html#"+h;
var win=wack.Browser.popup(url,_e9a.height,_e9a.width,0,0,true,true);
if(!win){
if(!this._showing_err){
this._showing_err=true;
alert(L("L.PopupWarning"));
this._showing_err=false;
}
return;
}
$Bootstrap.getAppWindow().$Popup._c[h]=_e9a;
win._options=_e9a;
return win;
},evWindowLoad:function(){
if(window._options.show_loading){
var _ea1=document.getElementById("loading");
_ea1.style.display="";
var _ea2=_ea1.getElementsByTagName("div")[1];
var span=_ea2.getElementsByTagName("span")[0];
span.innerHTML=$Bootstrap.getAppWindow().L("L.Loading");
}
setTimeout(function(){
var main=$Bootstrap.getAppWindow();
var _ea5=main.Webmail.getGlobal("constants");
for(var i=0,ii=_ea5.length;i<ii;i++){
window[_ea5[i]]=main[_ea5[i]];
}
var _ea7=main.wcv__vars;
for(var i=0,ii=_ea7.length;i<ii;i++){
window[_ea7[i]]=main[_ea7[i]];
}
document.body.className=main.document.body.className;
window._wm__app_win_ptr=main;
window.session_id=main.Webmail.getSessionId();
window._options.onload(window);
},1);
},evWindowResize:function(){
window._options.onresize(window);
}};
}
if($Bootstrap.notLoaded("74b49f5036301d08ef90d2b00232f6f6")){
Framework.register("Webmail");
$Compose=Webmail.Compose={getFrequentContacts:function(_ea8){
var _ea9=$Bootstrap.getAppWindow().$Compose;
if(_ea9==this){
$Data.request("Compose.getFrequentContacts",{callback:function(_eaa){
_ea8(_eaa);
},request_type:CFG_AJAX_READ});
}else{
return _ea9.getFrequentContacts(_ea8);
}
},getMessage:function(_eab,_eac,_ead,uid,_eaf,_eb0){
_eaf=_eaf||Prototype.emptyFunction;
_eb0=_eb0||false;
$Data.request("Compose.getMessage",{callback:_eac,err_callback:_eaf,request_type:CFG_AJAX_READ},_eab,_ead,uid,_eb0);
}};
}
if($Bootstrap.notLoaded("b63e1d41ba6886915384b509b5a23b1a")){
Framework.register("Webmail.Modules");
$$Compose=Webmail.Modules.Compose={_compose_widget:null,_show_close_warning:false,createPopup:function(data,_eb2){
var _eb3=null;
var _eb4=null;
$Compose.getMessage(data.action,function(_eb5){
if(_eb5.exception){
$UI.error(_eb5.message);
if(_eb3){
_eb3.close();
return;
}else{
_eb4=false;
}
}else{
_eb4=Object.extend(data,_eb5);
if(_eb3){
var _eb6=false;
try{
if(!_eb3.closed){
_eb6=true;
}
}
catch(e){
}
if(_eb6){
var a=_eb3;
a.$$Compose._populatePopup(_eb4);
}
}
}
},data.folder,data.uid,function(_eb8){
if(!_eb8){
$UI.error(L("E.Unknown"));
}
if(_eb3){
_eb3.close();
}
_eb4=false;
},data.msg_arr);
$Popup.create({height:CFG_COMPOSE_WINDOW_HEIGHT,width:CFG_COMPOSE_WINDOW_WIDTH,onload:function(win){
win.REQUIRE("combo/compose");
var b=win;
b.$$Compose._drawPopup();
if(_eb4){
var c=win;
c.$$Compose._populatePopup(_eb4);
}else{
if(_eb4===false){
win.close();
return;
}
_eb3=win;
}
},onresize:function(win){
var d=win;
if(d.$$Compose){
d.$$Compose.evPopupResize.bind(win.$$Compose)();
}
},show_loading:true});
if(_eb2){
_eb2();
}
},_drawPopup:function(){
this._compose_widget=$Widgets.Compose.factory({onclose:function(){
this._setCloseWarning(false);
window.setTimeout("window.close()",0);
}.bind(this),onchange:function(){
this._setCloseWarning(true);
}.bind(this),onsave:function(){
this._setCloseWarning(false);
}.bind(this),onfolderchange:function(_ebe,_ebf){
var _ec0=$Bootstrap.getAppWindow();
if(_ebe==CFG_FOLDER_SENT){
var _ec1=this._compose_widget._message_data;
var _ec2=_ec1.folder;
var _ec3=_ec1.uid;
if(_ec1.action==wm_Compose_REPLY||_ec1.action==wm_Compose_REPLY_ALL){
_ec0.$Dispatcher.publish("Message.change",_ec2,_ec3,"replied",true);
}else{
if(_ec1.action==wm_Compose_FORWARD){
_ec0.$Dispatcher.publish("Message.change",_ec2,_ec3,"forwarded",true);
}else{
if(_ec1.action==wm_Compose_FWD_MULTIPLE){
var att=this._compose_widget.getAttachments();
for(var i=0,ii=att.length;i<ii;i++){
if(att[i].uid&&att[i].folder){
_ec0.$Dispatcher.publish("Message.change",att[i].folder,att[i].uid,"forwarded",true);
}
}
}
}
}
}
_ec0.$Dispatcher.publish("Folders.status_change",_ebe,_ebf);
_ec0.setTimeout("$MessageList.checkFolder(\""+_ebe+"\");",1);
}.bind(this)});
Element.append(document.body,$C(this._compose_widget));
},_populatePopup:function(_ec6){
this._compose_widget.populate(_ec6);
this._compose_widget.cbResize(wack.Browser.getDimensions());
},_setCloseWarning:function(_ec7){
if(_ec7){
if(this._show_close_warning){
return;
}
this._show_close_warning=true;
window.onbeforeunload=function(){
return L("Compose.CloseWarning");
};
}else{
this._show_close_warning=false;
window.onbeforeunload=Prototype.emptyFunction;
}
},evPopupResize:function(){
if(!this._compose_widget){
return;
}
this._compose_widget.cbResize(wack.Browser.getDimensions());
}};
}
if($Bootstrap.notLoaded("3c6fb9db5593f58a75174338d4a92f82")){
wack.Parser={parseEmail:function(s){
var _ec9=[];
var _eca=s.split(/,/);
for(var i=0,ii=_eca.length;i<ii;i++){
var _ecc=_eca[i].trim();
if(_ecc.length>0){
var name="";
var _ece=_ecc;
var pos1=_ecc.indexOf("<");
if(pos1!=-1){
var pos2=_ecc.indexOf(">",pos1);
if(pos2!=-1){
name=_ecc.substring(0,pos1-1).trim();
if(name.indexOf("\"")==0){
name=name.substring(1).trim();
}
if(name.indexOf("\"")==name.length-1){
name=name.substring(0,name.length-1).trim();
}
_ece=_ecc.substring(pos1+1,pos2).trim();
}else{
name=_ecc.substring(0,pos1-1).trim();
if(name.indexOf("\"")==0){
name=name.substring(1).trim();
}
if(name.indexOf("\"")==name.length-1){
name=name.substring(0,name.length-1).trim();
}
_ece=_ecc.substring(pos1+1).trim();
}
}else{
if(_ecc.indexOf("@")==-1&&_ecc.indexOf("\"")==0&&_ecc.substring(_ecc.length-1)!="\""&&i+1<ii){
_eca[i+1]=_eca[i].trim()+", "+_eca[i+1].trim();
continue;
}else{
if(_ecc.indexOf("@")==-1){
name=_ecc;
_ece="";
if(name.indexOf("\"")==0){
name=name.substring(1).trim();
}
if(name.indexOf("\"")==name.length-1){
name=name.substring(0,name.length-1).trim();
}
}
}
}
_ec9.push({name:name,email:_ece});
}
}
return _ec9;
}};
}
if($Bootstrap.notLoaded("3af55ca339a4384f4de8714cf6c51400")){
function $Ex(e){
if(e&&!e._extended){
for(method in $Exception.Methods){
e[method]=function(){
return $Exception.Methods[method].apply(null,[this].concat($A(arguments)));
};
$Ex(e.inner_exception);
}
e._extended=true;
}
return e;
}
Framework.register("Webmail");
Framework.register("Webmail.Exception");
Webmail.Exception.Methods={find:function(e,_ed3){
do{
if(e.code==_ed3){
return e;
}
e=e.inner_exception;
}while(e);
return false;
},root:function(e){
while(e.inner_exception){
e=e.inner_exception;
}
return e;
}};
Object.extend(Webmail.Exception,Webmail.Exception.Methods);
$Exception=Webmail.Exception;
}
if($Bootstrap.notLoaded("5e7212e23997509446b5f452fe3adcd5")){
Framework.register("Webmail");
$KeyEventManager=Webmail.KeyEventManager=new function(){
this._last_clicked=null;
this._key_elements=new Array();
this._toggleClear=false;
this.initialize=function(){
Event.observe(document,"click",this.evClearLastClicked);
Event.observe(document,"keyup",this.evFindKeypressCallback);
};
this.addKeyEvent=function(ele,_ed6,_ed7,_ed8){
if(typeof (_ed7)=="undefined"){
_ed7=0;
_ed8=0;
}
if(typeof (_ed8)=="undefined"){
_ed8=0;
}
if(this._findKeyEvent(ele,_ed7,_ed8)!=-1){
return;
}
Event.stopObserving(document,"click",this.evClearLastClicked);
Event.observe(ele,"click",this.evSetLastClicked);
Event.observe(document,"click",this.evClearLastClicked);
if(ele.tagName.toLowerCase()=="input"){
Event.observe(ele,"focus",this.evSetLastClicked);
Event.observe(ele,"blur",this.evClearInputField);
}
var _ed9=this._key_elements.length;
var _eda={"element":ele.id,"callback":_ed6,"keycode":_ed7.toString(),"shift":_ed8.toString()};
this._key_elements[_ed9]=_eda;
};
this.removeKeyEvent=function(ele,_edc,_edd){
var _ede=this._findKeyEvent(ele,_edc,_edd);
if(_ede!=-1){
var _edf=this._key_elements.splice(_ede,1);
}
};
this.setLastClicked=function(ele){
if(ele&&ele.id){
this._last_clicked=ele.id;
this._toggleClear=true;
}
};
this._findKeyEvent=function(ele,_ee2,_ee3){
for(var i=0;i<this._key_elements.length;i++){
cur_event=this._key_elements[i];
if(cur_event.element==ele.id&&cur_event.keycode==_ee2&&cur_event.shift==_ee3){
return i;
}
}
return -1;
};
this._evSetLastClicked=function(e){
var elem=Event.element(e);
var _ee7=this._key_elements.length;
var _ee8=false;
this._last_clicked=null;
while(elem.tagName.toLowerCase()!="html"&&_ee8==false){
for(var i=0;i<_ee7;i++){
if(elem.id==this._key_elements[i].element){
this._last_clicked=elem.id;
this._toggleClear=true;
_ee8=true;
break;
}
}
elem=elem.parentNode;
}
};
this.evSetLastClicked=this._evSetLastClicked.bindAsEventListener(this);
this._evClearLastClicked=function(e){
if(this._toggleClear==false){
this._last_clicked=null;
}
this._toggleClear=false;
};
this.evClearLastClicked=this._evClearLastClicked.bindAsEventListener(this);
this._evClearInputField=function(e){
this._last_clicked=null;
};
this.evClearInputField=this._evClearInputField.bindAsEventListener(this);
this._evFindKeypressCallback=function(e){
var elem=$(this._last_clicked);
var _eee=0;
if(this._last_clicked){
for(var i=0;i<this._key_elements.length;i++){
cur_event=this._key_elements[i];
if(cur_event&&cur_event.element==this._last_clicked&&cur_event.keycode==e.keyCode&&_eee==cur_event.shift){
Event.stop(e);
callback_func=cur_event.callback;
callback_func(e);
}
}
}
};
this.evFindKeypressCallback=this._evFindKeypressCallback.bindAsEventListener(this);
};
}
if($Bootstrap.notLoaded("e61291a6b5d200c0ef13b5e255bf8c5d")){
Framework.register("Webmail");
$TPL=$Template=Webmail.Template={initialize:function(){
if(!defined(window._t_f)){
return;
}
for(var i=0,ii=_t_f.length;i<ii;i++){
var func="_t_f_"+_t_f[i];
if(window[func]){
window[func]();
}
}
},dom:function(id,ref){
return (window.APP||window).$TPL[id][ref];
},findRoot:function(elem){
while(elem&&!elem._tpl_root&&elem!=document.body){
elem=elem.parentNode;
}
if(!elem||elem==document.body){
return false;
}
return elem;
},getOptions:function(id){
return (window.APP||window).$Template[id]._options;
},getTemplate:function(id,vars){
vars=vars||{};
var _ef8=(window.APP||window).$("Template_"+id);
if(!_ef8){
return false;
}
var elem=$(_ef8.firstChild.cloneNode(true));
this._assignProps(elem,id);
this._assignVariables(elem,vars);
return elem;
},getVars:function(id){
return (window.APP||window).$Template[id]._vars;
},_assignProps:function(elem,id){
var _efd=this.getOptions(id);
var vars=this.getVars(id);
elem._tpl_id=id;
elem._tpl_root=true;
elem._tpl_options=_efd;
elem._tpl_vars=vars;
elem.dom=function(ref){
var p="_tpl_dom_"+ref;
if(!elem[p]){
elem[p]=$TPL.dom(id,ref)(elem);
if(!elem[p].length){
elem[p]=$(elem[p]);
}
}
return elem[p];
};
elem.populate=function(data){
$TPL.populate(this,data);
};
elem.fill=function(_f02){
$Template._assignVariables(elem,_f02);
};
},_assignVariables:function(elem,_f04){
var _f05=elem._tpl_options;
var vars=elem._tpl_vars;
var _f07=_f05.find_vars;
if(!defined(_f07)){
_f07=true;
}
_f04=_f04||{};
if(_f07){
var _f08=elem.innerHTML;
}
var key;
for(key in _f04){
if(_f07){
var _f0a=new RegExp("((<var>)|(% ))"+key+"((</var>)|( %))","gi");
_f08=_f08.replace(_f0a,_f04[key]);
}else{
if(vars[key]){
var ptr=vars[key];
if(typeof ptr=="string"){
ptr=[ptr];
}
for(var i=0,ii=ptr.length;i<ii;i++){
elem.dom(ptr[i]).update(_f04[key]);
}
}
}
}
if(_f07){
var all=new RegExp("((<var>)|(% ))[a-zA-Z_]((</var>)|( %))","gi");
_f08=_f08.replace(all,"");
elem.innerHTML=_f08;
}
},populate:function(_f0e,data){
var key;
for(key in data){
_f0e.dom(key).update(data[key]);
}
}};
}
if($Bootstrap.notLoaded("cd49c4c7444bef4debd0a1883d99a8b7")){
Framework.register("Webmail.Modules");
$$MainMenu=Webmail.Modules.MainMenu={tabs:null,tabset:null,__preload:function(){
Object.bindCallbacks(this);
$Dispatcher.subscribe("Settings.change.external",this.cbChangeExtMail);
var _f11=Element.createHtml(["<div id=\"MainMenu\">","<div class=\"left\"></div>","<div class=\"right\"></div>","</div>"].join(""));
var left=$(_f11.firstChild);
var _f13=$(_f11.lastChild);
this.tabs={"email":{text:L("MainMenu.L.Email"),module:"MessageList",module_arg:CFG_FOLDER_INBOX,menu:[{text:L("Folders.Q.Check"),onclick:function(){
$Dispatcher.checkMail();
}},{text:L("Folders.Q.Compose"),onclick:function(){
$Dispatcher.compose();
}},{id:"external",text:L("LeftMenu.L.External"),onclick:function(){
$Dispatcher.checkExtMail();
}},{text:L("Folders.Q.AddFolder"),onclick:function(){
$$FolderManager.create.showForm(false);
}},{text:L("Folders.Q.FolderManager"),onclick:function(){
$Controller.loadModule("FolderManager",false,true);
}}]},"contacts":{text:L("MainMenu.L.Contacts"),module:"Contacts",menu:[{text:L("Contacts.General.AddContact"),onclick:function(){
REQUIRE("combo/contacts");
$$Contacts.openAddContactDialog();
}},{text:L("Contacts.General.AddGroup"),onclick:function(){
REQUIRE("combo/contacts");
$$Contacts.openAddGroupDialog();
}},{text:L("Contacts.General.MyContacts"),onclick:function(){
$Controller.loadModule("Contacts",wm_Contacts_MY_CONTACTS_MODE,true);
}},{id:"company_directory",text:L("Contacts.General.CompanyDirectory"),onclick:function(){
$Controller.loadModule("Contacts",wm_Contacts_COMPANY_DIRECTORY_MODE,true);
}}]},"calendar":{text:L("MainMenu.L.Calendar"),module:"Calendar",menu:[{id:"add_event",text:L("Calendar.F.AddEvent"),onclick:function(){
REQUIRE("combo/calendar_eventform");
$$EventForm.showNew($Calendar.getPersonalCalendars()[0]);
}},{id:"manager",text:L("Calendar.L.CalendarManager"),onclick:function(){
REQUIRE("combo/calendar");
$$Calendar.showCalendarManager();
}}]},"tasks":{text:L("Tasks.L.Tasks"),combo:"tasks_combo",module:"Tasks",menu:[{text:L("Tasks.L.Add"),onclick:function(){
REQUIRE("combo/tasks");
if($Tasks.task_lists){
$$Tasks.showAddTaskForm();
}else{
var _f14=$$Tasks.showAddTaskForm.bind($$Tasks);
$Tasks.getTaskLists(_f14);
}
}},{text:L("Tasks.Manager.AddTaskList"),onclick:function(){
REQUIRE("combo/tasks");
$$Tasks.showTaskListForm();
}},{id:"test",text:L("Tasks.L.Manage"),onclick:function(){
REQUIRE("combo/tasks");
if($Tasks.task_lists){
$$Tasks.showTaskListsManager();
}else{
var _f15=$$Tasks.showTaskListsManager.bind($$Tasks);
$Tasks.getTaskLists(_f15);
}
}}]},"notes":{text:L("Notes.L.Notes"),combo:"notes_combo",module:"Notes",force_load:false,menu:[{text:L("Notes.L.Add"),onclick:function(){
$Widgets.load("Notes.Form");
var _f16=$Widgets.Notes.Form.factory();
_f16.populate({subject:"",content:""});
$Widgets.Notes.Form.createPopup(_f16);
}}]}};
if($Preload["Calendar.enabled"]===false){
delete this.tabs["calendar"];
}
if($Preload["Tasks.enabled"]===false){
delete this.tabs["tasks"];
}
if($Preload["Notes.enabled"]===false){
delete this.tabs["notes"];
}
this.tabset=$UI.Tabs.createTabset(this.tabs,{onclick:this.loadSection.bind(this),allow_reclick:true});
left.append(this.tabset);
_f13.innerHTML=[username,"<span class=\"settings\">","<span class=\"sep\">|</span>","<a href=\"javascript:void(0);\" onclick=\"$$MainMenu.loadSectionSettings()\">",L("MainMenu.L.Settings"),"</a>","</span>","<span class=\"report_bug\">","<span class=\"sep\">|</span>","<a href=\"javascript:void(0);\" onclick=\"report_bug();\">",L("Webmail.L.Report"),"</a>","</span>","<span class=\"help\">","<span class=\"sep\">|</span>","<a id=\"Webmail_help_link\" href=\"javascript:void(0);\">",L("Webmail.L.Help"),"</a>","</span>","<span class=\"sep\">|</span>","<a href=\"",Webmail._logout_url,"\">",L("logoff"),"</a>",].join("");
var _f17=_f13.getElementsByTagName("span");
var _f18=_f17[0];
var _f19=_f17[2];
var help=_f17[4];
if($Settings.isHelpEnabled()){
Event.observe(help.lastChild,"click",$Help.show.bindAsEventListener($Help));
}else{
$(help).remove();
}
if(!Webmail.isBeta()){
$(_f19).remove();
}
if(!$Settings.isSettingsEnabled()){
$(_f18).remove();
}
return _f11;
},__load:function(){
},disableMenuItem:function(_f1b,id){
$UI.Tabs.disableMenuItem(this.tabset,_f1b,id);
},disableTab:function(_f1d){
$UI.Tabs.disableTab(this.tabset,_f1d);
},enableMenuItem:function(_f1e,id){
$UI.Tabs.enableMenuItem(this.tabset,_f1e,id);
},enableTab:function(_f20){
$UI.Tabs.enableTab(this.tabset,_f20);
},hideMenuItem:function(_f21,id){
$UI.Tabs.hideMenuItem(this.tabset,_f21,id);
},loadSection:function(key){
var _f24=this.tabs[key].force_load;
if(typeof (_f24)=="undefined"){
_f24=true;
}
var load=$Controller.loadModule(this.tabs[key].module,this.tabs[key].module_arg,_f24);
if(load){
this.setActiveTab(key);
}
},loadSectionSettings:function(){
$Settings.load();
},setActiveTab:function(key){
$UI.Tabs.setActiveTab(this.tabset,key);
},showMenuItem:function(_f27,id){
$UI.Tabs.showMenuItem(this.tabset,_f27,id);
},cbChangeExtMail:null,_cbChangeExtMail:function(_f29){
$$Email.setExternalButton(_f29.length);
$Controller.resize();
}};
}
if($Bootstrap.notLoaded("5c55f9d0a13910b22b571e30a3d002d3")){
Framework.register("Webmail.Modules");
$$SubMenu=Webmail.Modules.SubMenu={image_root:"images/",stall_update:false,_active_section:null,_timer:null,_num_action_links:$Preload["Custom.num_action_links"],_num_ext_accounts:0,__preload:function(){
Object.bindCallbacks(this);
Object.bindObservers(this);
var _f2a=$Prefs.getUserPref("left_width",185);
Element.setStyle("core_left",{width:_f2a+"px"});
var _f2b=$("core_left_handle");
Element.setStyle(_f2b,{left:_f2a-1+"px"});
_f2b.orig_left=_f2a-1;
Element.append("quota_container",$$Quota.draw());
Element.append("SubMenu",this.draw());
this._makeResizable();
return;
this.checkHandle=$Dispatcher.checkMail.bind($Dispatcher);
this.checkExtHandle=$Dispatcher.checkExtMail.bind($Dispatcher);
this.composeHandle=$Dispatcher.compose.bind($Dispatcher);
Event.observe("check_link","click",this.checkHandle);
Event.observe("checkext_link","click",this.checkExtHandle);
var _f2c={};
_f2c["compose_link"]=this.composeHandle;
var list=$("left_actions").getElementsByTagName("ul")[0];
var _f2e=$LeftMenu.getActionLinks();
for(var i=0,ii=_f2e.length;i<ii;i++){
var icon=_f2e[i].icon||"check-mail.gif";
var _f31=_f2e[i].display;
var id=_f2e[i].id||"";
var link=Element.createHtml(["<li>","<a id=\"",id,"\" class=\"link\" href=\"javascript:void(0);\" ","style=\"background-image:url(images/",icon,");\">","<span>",_f31,"</span></a>","</li>"].join(""));
var _f34=link.firstChild;
if(_f2c[id]){
Event.observe(_f34,"click",_f2c[id]);
}else{
Event.observe(_f34,"click",this.evActionLink.bindAsEventListener(this));
_f34._url=_f2e[i].url;
_f34._popup=_f2e[i].popup;
_f34._popup_height=_f2e[i].popup_height;
_f34._popup_width=_f2e[i].popup_width;
}
Element.append(list,link);
}
},__load:function(){
},__resize:function(){
var _f35=$("SubMenu");
var _f36=Webmail.leftHeight();
if(wack.Browser.is_firefox){
_f36--;
}
var _f37=Webmail.leftWidth();
if(_f37<=0){
_f37=1;
}
_f35.style.height=_f36+"px";
_f35.style.width=_f37+"px";
var _f38=$("SubMenu_content");
if(_f38){
var _f39=Position.cumulativeOffset(_f38)[1]-Position.cumulativeOffset($("core_left"))[1];
var _f3a=_f36-_f39-1;
_f3a-=$("SubMenu_totals").offsetHeight;
Element.setDimensions(_f38,{width:_f37,height:_f3a});
}
if(_f3a&&this._active_section){
(this._active_section.__resize||Prototype.emptyFunction)(this._active_section.__content,_f37,_f3a);
}
},draw:function(){
var _f3b=Element.create("div");
var _f3c=Element.create("div",{id:"SubMenu_content"});
Element.append(_f3b,_f3c,this._drawTotals());
return _f3b;
},loadSection:function(_f3d){
if(!_f3d||this._active_section==_f3d){
return;
}
var _f3e=$("SubMenu_content");
if(this._active_section){
$(this._active_section.__content).hide();
}
this._active_section=_f3d;
if(!_f3d.__content){
var _f3f=_f3d.__content=_f3d.__preload();
_f3e.append(_f3f);
}
_f3e.scrollTop=0;
$(_f3d.__content).show();
if(_f3d.__load){
_f3d.__load();
}
},registerSection:function(_f40,_f41){
return;
this._sections[_f40]=Object.extend(this._sections[_f40]||{},{module:_f41});
},setExternalAccounts:function(_f42){
return;
var _f43=this._num_ext_accounts;
if(_f42<0){
_f42=0;
}
var _f44=8+(this._num_action_links*2)+((this._num_action_links+1)*18);
if(_f42==0){
this._num_ext_accounts=_f42;
Element.hide($("checkext_link").parentNode);
Element.setStyle("left_actions",{height:_f44+"px"});
}else{
if(_f43==0&&_f42>0){
this._num_ext_accounts=_f42;
Element.show($("checkext_link").parentNode);
Element.setStyle("left_actions",{height:_f44+18+"px"});
}
}
if($("core").offsetTop==0){
this.__resize();
}
},updateTotals:function(){
if(this.stall_update){
return;
}
var _f45=$FolderList.getAllUnread(true);
var _f46="";
var _f47="Email.Unread";
if(_f45==1){
_f46=L(_f47+".S");
}else{
_f46=L(_f47+".P",_f45.format());
}
var _f48=$("SubMenu_totals_email");
_f48.update(_f46);
},_drawTotals:function(){
var _f49=Element.create("div",{id:"SubMenu_totals"});
var _f4a=Element.create("ul",{className:"SubMenu_tree"});
var _f4b=Element.createHtml(["<li class=\"email\">","<a href=\"javascript:void(0);\" class=\"email\">","<span id=\"SubMenu_totals_email\">",L("Email.Unread.P",0),"</span>","</a>","</li>"].join(""));
var _f4c=_f4b.getElementsByTagName("a")[0];
_f4c._type="email";
Event.observe(_f4c,"click",this.evTotalClick);
_f4a.append(_f4b);
_f49.append(_f4a);
return _f49;
},_makeResizable:function(){
function snapHorizontal(x,y){
if(x<10){
x=10;
}
if(x>500){
x=500;
}
return [x,$("core_left_handle").orig_top];
}
function startResize(_f4f){
Element.addClassName(_f4f,"core_left_handle_active");
Webmail.enableWindow(false);
}
function endResize(_f50){
Element.removeClassName(_f50,"core_left_handle_active");
Webmail.enableWindow(true);
$Controller._setLeftWidth(_f50.offsetLeft);
$Controller.resize();
}
new Draggable("core_left_handle",{altDelta:true,snap:snapHorizontal,starteffect:startResize,endeffect:endResize});
},_evTotalClick:function(e){
var link=Event.findElement(e,"a");
var type=link._type;
if(!type){
return;
}
if(Keystroke.key("z")&&console.show){
console.show();
return;
}
$UI.load(function(){
$$MainMenu.loadSection(type);
},e);
},evTotalClick:null};
}
if($Bootstrap.notLoaded("a3b059bc4716b5859e7a9fcc2b02b060")){
Framework.register("Webmail");
$LeftMenu=Webmail.LeftMenu=new function(){
this.cache={};
this.links=$Preload["LeftMenu.action_links"];
this.findCollapsedParent=function(_f54){
var fs=$FolderSettings;
if(fs.getSetting("folders_main","collapse")){
return "folders_main";
}
var _f56=_f54.split(".");
var _f57=false;
for(var i=_f56.length,ii=1;i>ii;i--){
_f56.pop();
var temp=_f56.join(".");
if(temp==CFG_FOLDER_INBOX){
break;
}
if(fs.getSetting(temp,"collapse")){
_f57=temp;
}
}
return _f57;
};
this.getActionLinks=function(){
return this.links.slice(0);
};
this.getFoldersStatus=function(_f5a,_f5b){
var _f5b=_f5b||Prototype.emptyFunction;
var _f5c=[];
if(_f5a){
_f5c=Array.merge(_f5c,$FolderList.getFolders());
}
Webmail.Data.request("LeftMenu.getFoldersStatus",{callback:function(_f5d){
this.updateFoldersStatus(_f5d);
_f5b();
}.bind(this),handle_conn_err:false},_f5c);
};
this.setFolderCollapse=function(_f5e,_f5f){
$FolderSettings.changeSetting(_f5e,"collapse",_f5f);
if(_f5f){
this.checkTrackback(_f5e);
}else{
var fl=$FolderList;
if((fl.isDraft(_f5e)&&(fl.getTotalMessages(_f5e)>0))){
return;
}
if(!(fl.getNewMessages(_f5e)>0)){
}
}
Webmail.Data.request("LeftMenu.setFolderCollapse",{callback:function(_f61){
}.bind(this)},_f5e,_f5f);
};
this.updateFoldersStatus=function(_f62){
if(!_f62){
return;
}
$$SubMenu.stall_update=true;
for(var i=0,ii=_f62.length;i<ii;i++){
var data=_f62[i];
if($FolderList.getUnreadMessages(data.folder)<data.unread){
$Dispatcher.publish("Folder.newUnreadMessages",data.folder);
}
$FolderList.setFolderStatus(data.folder,data.total,data.unread);
}
$$SubMenu.stall_update=false;
$$SubMenu.updateTotals();
};
};
}
if($Bootstrap.notLoaded("98fecfb7bef5c137ba5f0f22d74a699f")){
Framework.register("Webmail");
$Quota=Webmail.Quota=new function(){
this.quota=$Preload["Quota.quota"];
this.usage=$Preload["Quota.usage"];
this.getQuota=function(){
return this.quota;
};
this.getUsage=function(){
return this.usage;
};
this.setUsage=function(_f65){
this.usage=_f65;
$$Quota.update();
};
};
}
if($Bootstrap.notLoaded("88c46866f16ca0bf2780327ef7125418")){
Framework.register("Webmail.Modules");
$$Quota=Webmail.Modules.Quota=new function(){
this.draw=function(){
var _f66=$Quota.getQuota().toString();
var _f67=$Quota.getUsage().toString();
if(_f66>0){
var _f68=parseInt((_f67/_f66)*100);
}else{
var _f68=0;
}
_f67=(_f67<(1*1024*1024)/10?"0.0 MB":_f67.toFilesize(1));
if(_f68>100){
_f68=100;
}
if(_f68>=75){
var _f69="alert";
}else{
var _f69="normal";
}
var _f6a=Element.createHtml(["<table><tbody><tr>","<td>",_f67.replace(" ","&nbsp;"),"</td>","<td class=\"bar\">","<div>","<img src=\"images/blank.gif\" class=\"",_f69,"\" />","</div>","</td>","<td>",_f66.toFilesize(1).replace(" ","&nbsp;"),"</td>","</tr></tbody></table>"].join(""));
var _f6b=_f6a.getElementsByTagName("img")[0];
Element.setStyle(_f6b,{width:_f68+"%",height:"8px"});
return _f6a;
};
this.update=function(){
var cont=$("quota_container");
var _f6d=cont.firstChild;
var _f6e=_f6d.rows[0].cells[0];
var _f6f=_f6d.getElementsByTagName("img")[0];
var _f70=$Quota.getUsage();
var _f71=$Quota.getQuota();
if(_f71==0){
var _f72=0;
}else{
var _f72=parseInt((_f70/_f71)*100);
}
_f70=(_f70<(1*1024*1024)/10?"0.0 MB":String(_f70).toFilesize(1));
if(_f72>100){
_f72=100;
}
if(_f72>=75){
var _f73="alert";
}else{
var _f73="normal";
}
Element.update(_f6e,_f70.replace(" ","&nbsp;"));
_f6f.className=_f73;
Element.setStyle(_f6f,{width:_f72+"%",height:"8px"});
};
};
}
if($Bootstrap.notLoaded("7e0b6c05c87df1cacf8d969a89e66d99")){
Framework.register("Webmail");
$FolderSettings=Webmail.FolderSettings=new function(){
this._default_values={};
this._default_values["collapse"]=false;
this._default_values["sort"]=0;
this.getSetting=function(_f74,_f75){
var _f76=$FolderList.getSetting(_f74,_f75,this._getDefault(_f75));
return _f76;
};
this.changeSetting=function(_f77,_f78,_f79){
return $FolderList.addSetting(_f77,_f78,_f79);
};
this.setFolderCollapse=function(_f7a,_f7b){
Webmail.Data.request("Settings.setFolderCollapse",{},_f7a,_f7b);
};
this._getDefault=function(_f7c){
return (this._default_values[_f7c]?this._default_values[_f7c]:false);
};
};
}
if($Bootstrap.notLoaded("a1ac514bfddfd013ed13ea1d1224107f")){
Framework.register("Webmail.Modules");
$$FolderManager=Webmail.Modules.FolderManager=new function(){
this.config={disable_scroll:true,use_navmenu:true,auto_submenu:true};
this.tpl={};
this.sizes={"email":-1};
this.first_load=true;
this.__preload=function(){
Object.bindCallbacks(this);
$Dispatcher.subscribe("Email.Folders.update",this.cbSubUpdateFolders);
var _f7d=$FolderList.getDropdownOptions();
var _f7e=Element.createHtml("<div id=\"folder_manager\"><div class=\"toolbar\"><div class=\"toolbar_left\"><input type=\"button\" class=\"btn2\" value=\""+L("Folders.L.AddFolder")+"\" _ref=\"create\" /><input type=\"button\" class=\"btn2\" value=\""+L("Folders.L.Sizes")+"\" _ref=\"sizes\" /></div></div><div class=\"grid_action_bar\"><div class=\"grid_action_bar_left\"><img src=\"images/blank.gif\" class=\"arrow_up_rt\" /><input type=\"button\" value=\""+L("L.Delete")+"\"class=\"delete btn\" id=\"fmanager_delete_btn\" _ref=\"delete\" />"+L("L.OR")+"<select class=\"folder_list\" id=\"fmanager_grid_dropdown\" _ref=\"dropdown\"></select></div></div><div id=\"fmanager_grid_container\" class=\"fmanager_grid_container\"><table id=\"fmanager_grid\" class=\"fmanager_grid\" cellspacing=\"0\" cellpadding=\"0\"><thead><tr class=\"column_header_row\"><td class=\"check\">&nbsp;</td><td>"+L("Folders.L.Names")+"</td><td id=\"fmanager_count_header\" class=\"count\">"+L("Folders.L.Messages")+"</td><td class=\"short\">"+L("Folders.L.Size")+"</td><td class=\"short\">"+L("Folders.L.Settings")+"</td><td class=\"short\">"+L("Folders.L.Purge")+"</td></tr></thead></table></div></div>");
$Templates.setDom(_f7e);
var dom=_f7e.dom;
var _f80=dom("create");
var _f81=dom("sizes");
var _f82=dom("delete");
var _f83=dom("dropdown");
this.createHandler=this.evCreate.bindAsEventListener(this);
this.deleteHandler=this.evDelete.bindAsEventListener(this);
this.moveHandler=this.evMove.bindAsEventListener(this);
this.sizeHandler=this.evUpdateSize.bindAsEventListener(this);
Event.observe(_f80,"click",this.createHandler);
Event.observe(_f82,"click",this.deleteHandler);
Event.observe(_f83,"change",this.moveHandler);
Event.observe(_f81,"click",this.sizeHandler);
var _f84=this._draw();
Element.append(_f7e.lastChild,_f84);
Element.setStyle(_f7e,{height:"500px"});
return _f7e;
};
this.__load=function(){
$$FolderManager.SubMenu.clearActiveFolder();
$$SubMenu.loadSection(this.SubMenu);
this._clearCheckedFolders();
if(this.first_load){
this.updateDropdowns();
this.first_load=false;
}
$("fmanager_delete_btn").disabled=false;
Element.show($("fmanager_grid_folders"));
Element.show($("fmanager_grid_dropdown"));
Element.show("fmanager_total_size");
$Help.setPage(HELP_FOLDER_MANAGER);
Element.update($("fmanager_count_header"),L("Folders.L.Messages"));
var _f85=$FolderList.getFolders();
var _f86=_f85.length;
this._setTotalSize(this.sizes["email"]);
if($("fmanager_grid_list")){
$("fmanager_grid_list").scrollTop=0;
}
this.__resize();
};
this.__resize=function(){
var _f87=Webmail.rightHeight()+20;
var _f88=Webmail.rightWidth();
if(wack.Browser.is_firefox){
Element.setDimensions($("folder_manager"),{height:_f87-2});
Element.setDimensions($("fmanager_grid_list"),{height:_f87-90});
}else{
Element.setDimensions($("folder_manager"),{height:_f87});
Element.setDimensions($("fmanager_grid_list"),{height:_f87-88});
}
name_width=_f88-535;
if(name_width<50){
name_width=50;
}
var _f89=$("fmanager_grid_container").childNodes[0].childNodes[0].childNodes[0];
var _f8a=$("fmanager_grid_list").childNodes[0].childNodes[0].childNodes[1];
_f89.childNodes[5].className="purge_non_rss";
name_width+=90;
if(_f8a){
_f8a.childNodes[1].style.width=name_width+"px";
}
_f89.childNodes[1].style.width=name_width+"px";
};
this.create={dom:{getFolderField:function(_f8b){
return this._getCreateForm(_f8b).getElementsByTagName("select")[0];
},getNameField:function(_f8c){
return this._getCreateForm(_f8c).getElementsByTagName("input")[0];
},_getCreateForm:function(_f8d){
while(_f8d.className!="fmanager_create"&&_f8d!=document.body){
_f8d=_f8d.parentNode;
}
if(_f8d==document.body){
return false;
}
return _f8d;
}},evSubmit:function(e){
var _f8f=Event.element(e);
var _f90=this.dom.getNameField(_f8f);
var _f91=this.dom.getFolderField(_f8f);
var _f92=_f90.value;
var _f93=_f91.value||CFG_FOLDER_INBOX;
var _f94=$FolderList.getFolders();
$KeyEventManager.removeKeyEvent($("fmanager_create"),13,0);
$KeyEventManager.removeKeyEvent($("fmanager_create"),27,0);
if(!$FolderList.validateFolderName(_f92)){
$UI.error(L("Folders.F.E.InvalidName"));
_f90.focus();
return;
}
$FolderList.createFolder(_f93,_f92,function(_f95){
if(_f95.exception){
$UI.error(_f95.message);
}else{
Webmail.Dialogs.unloadDialog(_f8f);
}
});
},moveToForm:function(_f96){
REQUIRE("combo/dialogs");
var form=Element.createHtml("<div class=\"fmanager_move\"><label>"+L("Folders.D.Move")+"</label>:<div class=\"folder_list\" _ref=\"folder_list\"></div><div class=\"buttons\"><input type=\"button\" class=\"btn\" value=\""+L("L.Save")+"\" _ref=\"save_btn\" /><input type=\"button\" class=\"btn\" value=\""+L("L.Cancel")+"\" _ref=\"cancel_btn\" /></div></div>");
var _f98=form.getElementsByTagName("input");
Event.observe(_f98[0],"click",this.evMoveToFolder.bindAsEventListener(this));
Event.observe(_f98[1],"click",$Dialogs.evClose.bindAsEventListener($Dialogs));
var load=$Dialogs.loadDialog(form,{disablewin:false,minimize:true,movable:true,title:L("Folders.Title.Folders")});
},showForm:function(){
REQUIRE("combo/dialogs");
var form=Element.createHtml(["<div id=\"fmanager_create\" class=\"fmanager_create\">","<label>",L("Folders.F.FolderName"),":</label>","<input type=\"text\" class=\"name\" />","<label>",L("Folders.F.Parent"),":</label>","<select>","</select>","<div class=\"buttons\">","<input type=\"button\" class=\"btn\" value=\"",L("L.Save"),"\" />","<input type=\"button\" class=\"btn\" value=\"",L("L.Cancel"),"\" />","</div>","</div>"].join(""));
var _f9b=form.getElementsByTagName("select")[0];
$$FolderManager._populateDropdown(_f9b);
var _f9c=form.getElementsByTagName("input");
var name=_f9c[0];
var ok=_f9c[1];
var _f9f=_f9c[2];
Event.observe(ok,"click",this.evSubmit.bindAsEventListener(this));
Event.observe(_f9f,"click",$Dialogs.evClose.bindAsEventListener($Dialogs));
$KeyEventManager.addKeyEvent(form,this.evSubmit.bindAsEventListener(this),13,0);
$KeyEventManager.setLastClicked(form);
var load=$Dialogs.loadDialog(form,{disablewin:false,minimize:true,movable:true,title:L("Folders.L.AddFolder")});
if(load){
try{
name.focus();
}
catch(e){
}
}
return load;
}};
this.dom={getCheckbox:function(row){
return this.getCheckboxCell(row).firstChild;
},getCheckboxCell:function(row){
return row.childNodes[0];
},getCountCell:function(row){
return row.childNodes[2];
},getEditCell:function(row){
return row.childNodes[4];
},getEditLink:function(row){
return this.getEditCell(row).firstChild;
},getNameCell:function(row){
return row.childNodes[1];
},getNameLink:function(row){
return this.getNameCell(row).firstChild;
},getPurgeCell:function(row){
return row.childNodes[5];
},getPurgeLink:function(row){
return this.getPurgeCell(row).firstChild;
},getSizeCell:function(row){
return row.childNodes[3];
},getUpdatedCell:function(row){
if(!row.childNodes[6]){
return false;
}
return row.childNodes[6];
},findRow:function(_fac){
while(!_fac._folder&&_fac!=document.body){
_fac=_fac.parentNode;
}
if(_fac==document.body){
return false;
}
return _fac;
}};
this.edit={dom:{getFolderField:function(_fad){
return this._getForm(_fad).getElementsByTagName("select")[0];
},getNameField:function(_fae){
return this._getForm(_fae).getElementsByTagName("input")[0];
},_getForm:function(_faf){
while(_faf.className!="fmanager_edit"&&_faf!=document.body){
_faf=_faf.parentNode;
}
if(_faf==document.body){
return false;
}
return _faf;
}},evSubmit:function(e){
var _fb1=Event.element(e);
var form=this.dom._getForm(_fb1);
var _fb3=form._folder.raw;
var _fb4=this.dom.getNameField(_fb1);
var _fb5=_fb4.value;
$KeyEventManager.removeKeyEvent($("fmanager_edit"),13,0);
$KeyEventManager.removeKeyEvent($("fmanager_edit"),27,0);
if(!$FolderList.validateFolderName(_fb5)){
$UI.error(L("Folders.F.E.InvalidName"));
return;
}
$FolderList.renameFolder(_fb3,_fb5,function(_fb6){
if(_fb6.exception){
$UI.error(_fb6.message);
}else{
$Dialogs.unloadDialog(_fb1);
}
});
},showForm:function(_fb7){
REQUIRE("combo/dialogs");
var form=Element.createHtml(["<div id=\"fmanager_edit\" class=\"fmanager_edit\">","<p>","<label>",L("Folders.F.FolderName"),":</label>","<input type=\"text\" class=\"name\" value=\"",_fb7.name,"\" />","</p>","<p class=\"buttons\">","<input type=\"button\" class=\"btn\" value=\"",L("L.Save"),"\" />","<input type=\"button\" class=\"btn\" value=\"",L("L.Cancel"),"\" />","</p>","</div>"].join(""));
form._folder=_fb7;
var _fb9=form.getElementsByTagName("input");
var name=_fb9[0];
var ok=_fb9[1];
var _fbc=_fb9[2];
Event.observe(ok,"click",this.evSubmit,this);
Event.observe(_fbc,"click",$Dialogs.evClose,$Dialogs);
$KeyEventManager.addKeyEvent(form,this.evSubmit.bindAsEventListener(this),13,0);
$KeyEventManager.setLastClicked(form);
var load=$Dialogs.loadDialog(form,{disablewin:false,movable:true,title:L("Folders.L.EditFolder")});
if(load){
try{
name.focus();
}
catch(e){
}
}
return load;
}};
this.getFolderClass=function(_fbe){
var _fbf="";
if(String.compare(_fbe.raw,CFG_FOLDER_INBOX,false)){
_fbf="inbox";
}else{
var _fc0={};
_fc0[CFG_FOLDER_DRAFTS]="drafts";
_fc0[CFG_FOLDER_SENT]="sent";
_fc0[CFG_FOLDER_SPAM]="spam";
_fc0[CFG_FOLDER_TRASH]="trash";
for(var s in _fc0){
if(_fbe.raw==s||$FolderList.isWithin(_fbe.raw,s)){
_fbf=_fc0[s];
break;
}
}
}
if(_fbf!=""){
_fbf="folder_"+_fbf;
}
return _fbf;
};
this.setFolderCounts=function(_fc2,_fc3,_fc4,row){
row=row||$("fmanager_row_"+_fc2);
if(!row){
return;
}
_fc3=_fc3||0;
_fc4=_fc4||0;
var _fc6="L.Message"+(_fc3==1?".S":".P");
var _fc7=this.dom.getCountCell(row);
var _fc8=_fc3.format()+"&nbsp;"+L(_fc6);
if(_fc4>0){
_fc8+=",&nbsp;<span class=\"new\">"+_fc4.format()+"&nbsp;"+L("L.New")+"</span>";
}
Element.update(_fc7,_fc8);
};
this.update=function(){
var fl=$FolderList;
var _fca=fl.getFolders();
var _fcb=0;
var grid=$("fmanager_grid");
var _fcd=$("fmanager_grid_folders");
this.updateDropdowns();
if(!_fcd){
return;
}
var rows=_fcd.getElementsByTagName("tr");
var _fcf=[];
for(var i=1,ii=rows.length;i<ii;i++){
if(Element.visible(rows[i])){
_fcf.push(rows[i]._folder.raw);
}
}
var _fd1=[];
for(var i=_fcb,ii=_fca.length;i<ii;i++){
_fd1.push(_fca[i].raw);
}
var _fd2=Array.diff(_fcf,_fd1);
var _fd3=Array.diff(_fd1,_fcf);
for(var i=0,ii=_fd2.length;i<ii;i++){
var row=$("fmanager_row_"+_fd2[i]);
if(row){
row.id="";
Element.remove(row);
Element.hide(row);
Element.append(_fcd,row);
}
}
for(var i=0,ii=_fd3.length;i<ii;i++){
for(var j=0,jj=_fca.length;j<jj;j++){
if(_fca[j].raw==_fd3[i]){
var _fd6=j;
_fd6++;
var _fd7=_fca[j];
break;
}
}
var _fd8=_fcd.lastChild;
if(Element.visible(_fd8)||_fd8==_fcd.firstChild){
var row=this._drawRow(_fcd,_fd7);
}else{
var row=_fd8;
this._populateRow(row,_fd7);
}
Element.insert(_fcd,_fd6,row);
Element.show(row);
}
if(_fcf.length==0){
this.__resize();
}
};
this.updateDropdowns=function(){
var _fd9=$("fmanager_grid_dropdown");
if(_fd9){
_fd9.style.display="none";
this._populateDropdown(_fd9);
Form.Select.insert(_fd9,{value:"-",text:L("Folders.D.Move")},{position:0});
Form.Select.insert(_fd9,{value:"-",text:"------------------"},{position:1});
_fd9.selectedIndex=0;
_fd9.style.display="";
}
};
this.updateSizes=function(){
var grid=$("fmanager_grid_folders");
var _fdb=0;
var rows=grid.getElementsByTagName("tr");
for(var i=0,ii=rows.length;i<ii;i++){
if(!Element.visible(rows[i])){
continue;
}
var _fde=rows[i]._folder;
var size=$FolderList.getFolderSize(_fde.raw);
_fdb+=size;
this._setFolderSize(rows[i],size);
}
this._setTotalSize(_fdb);
this.showTotalFolderSize(true);
};
this._clearCheckedFolders=function(){
var grid=$("fmanager_grid_folders");
var rows=grid.getElementsByTagName("tr");
for(var i=0,ii=rows.length;i<ii;i++){
var _fe3=rows[i]._folder;
if(!_fe3){
continue;
}
var _fe4=this.dom.getCheckbox(rows[i]);
$UI_Grid.checkSelectedRow(_fe4,false,_fe3.tagName);
if($FolderList.isPermanentFolder(_fe3.raw)){
_fe4.disabled=true;
}else{
_fe4.disabled=false;
}
}
};
this._draw=function(){
var _fe5=Element.createHtml("<div id=\"fmanager_grid_list\" style=\"width: 100%; overflow: scroll; overflow-x: hidden;margin: 0px; padding: 0px;\"><table id=\"fmanager_grid\" class=\"fmanager_grid\" cellspacing=\"0\" cellpadding=\"0\"><tbody id=\"fmanager_grid_folders\" _ref=\"body\"><tr style=\"display:none;\" id=\"fmanager_grid_folder_clone\"><td class=\"check\"><input type=\"checkbox\" /></td><td class=\"name\"><a href=\"javascript:void(0);\"></a></td><td class=\"count\">&nbsp;</td><td class=\"size short\">&nbsp;</td><td class=\"edit short\"><a href=\"javascript:void(0);\">"+L("Folders.L.Edit")+"</a></td><td class=\"purge purge_non_rss\"><a href=\"javascript:void(0);\">"+L("Folders.L.Purge")+"</a></td></tr></tbody><tbody class=\"fmanager_grid_size\" id=\"fmanager_grid_size\" style=\"display:none\"><tr><td class=\"check\"></td><td class=\"name\"></td><td class=\"count\" align=\"right\" style=\"border:0;\"><strong>"+L("Folders.TotalSize")+":</strong></td><td class=\"size short\" style=\"border:0\"><span id=\"fmanager_total_size\"></span></td></tr></tbody></table></div>");
$Templates.setDom(_fe5);
var _fe6=_fe5.dom("body");
var _fe7=$FolderList.getFolders();
for(var i=0,ii=_fe7.length;i<ii;i++){
var row=this._drawRow(_fe6,_fe7[i]);
Element.append(_fe6,row);
}
return _fe5;
};
this._drawRow=function(_fea,_feb){
var _fec=_fea.firstChild;
var row=_fec.cloneNode(true);
var _fee=this.dom.getCheckbox(row);
var _fef=this.dom.getNameLink(row);
var _ff0=this.dom.getEditLink(row);
var _ff1=this.dom.getPurgeLink(row);
this.checkHandler=this.evCheck.bindAsEventListener(this);
this.loadHandler=this.evFolderGo.bindAsEventListener(this);
this.editHandler=this.evEdit.bindAsEventListener(this);
this.purgeHandler=this.evPurge.bindAsEventListener(this);
Webmail.UI.Grid.addHoverColor(row);
Event.observe(_fee,"click",this.checkHandler);
Event.observe(_fef,"click",this.loadHandler);
Event.observe(_ff1,"click",this.purgeHandler);
Event.observe(_ff0,"click",this.editHandler);
this._populateRow(row,_feb);
Element.show(row);
return row;
};
this._getCheckedFolders=function(){
var grid=$("fmanager_grid_folders");
var rows=grid.getElementsByTagName("tr");
var _ff4=[];
for(var i=0,ii=rows.length;i<ii;i++){
if(!Element.visible(rows[i])){
continue;
}
var _ff6=this.dom.getCheckbox(rows[i]);
if(_ff6.checked&&rows[i]&&rows[i]._folder){
_ff4.push(rows[i]._folder.raw);
}
}
return _ff4;
};
this._getNewFolderNames=function(_ff7,dest){
var _ff9=new Array;
dest=(dest?dest:CFG_FOLDER_INBOX);
for(var i=0;i<_ff7.length;i++){
var temp=_ff7[i].split(".");
var _ffc=$FolderList.getTotalMessages(_ff7[i]);
var _ffd=$FolderList.getUnreadMessages(_ff7[i]);
var name=temp.pop();
var _fff=temp.join(".");
var _1000="";
for(var j=0;j<_ff7.length;j++){
if(_ff7[j]==_fff){
_1000=_ff9[j].name;
}
}
name=(_1000||dest)+"."+name;
_ff9[i]={"name":name,"total":_ffc,"unread":_ffd};
}
return _ff9;
};
this._populateDropdown=function(_1002,_1003,_1004){
_1004=_1004||false;
var _1005=$FolderList.getFolders();
var start=0;
var _1007={value:"",text:L("Folders.N.Email")};
Form.Select.clear(_1002);
if(!_1003){
Form.Select.insert(_1002,_1007);
var _1008=1;
}else{
var _1008=0;
}
for(var i=start,ii=_1005.length;i<ii;i++){
if(!_1004&&_1005[i].raw=="INBOX"){
continue;
}
var raw=_1005[i].raw;
var _100b=$FolderList.getIndentLevel(raw);
var _100c=String.repeat(" ",(_100b+_1008)*2)+_1005[i].name;
if(_100c.length>25){
_100c=_100c.substring(0,22)+"...";
}
_100c=_100c.replace(/>/g,"&gt;");
_100c=_100c.replace(/</g,"&lt;");
Form.Select.insert(_1002,{value:raw,text:_100c});
}
};
this._populateRow=function(row,_100e){
row.id="fmanager_row_"+_100e.raw;
row._folder=_100e;
var _100f=this.dom.getCheckbox(row);
_100f.disabled=false;
$UI_Grid.checkSelectedRow(_100f,false,row.tagName);
row.removeAttribute("alt");
row.removeAttribute("title");
if(update_cell=this.dom.getUpdatedCell(row)){
Element.update(update_cell,"- - -");
}
if($FolderList.isPermanentFolder(_100e.raw)){
_100f.disabled=true;
}
var _1010=this.dom.getNameLink(row);
_1010.className="folder";
var _1011=this.getFolderClass(_100e);
var _1012=$FolderList.getIndentLevel(_100e.raw)*18;
Element.addClassName(_1010,_1011);
Element.setStyle(_1010,{marginLeft:_1012+"px"});
Element.updateText(_1010,_100e.name,{escape_spaces:true});
var _1013=this.dom.getEditCell(row);
var _1014=this.dom.getEditLink(row);
this.editHandler=this.evEdit.bindAsEventListener(this);
if($FolderList.isPermanentFolder(_100e.raw)){
Element.update(_1013,"- - -");
if(Element.nodeName(_1014)=="a"){
Event.stopObserving(_1014,"click",this.editHandler);
}
}else{
if(Element.nodeName(_1014)!="a"){
Element.update(_1013,"<a href=\"javascript:void(0);\">Edit</a>");
Event.observe(_1013.firstChild,"click",this.editHandler);
}
}
var _1015=this.dom.getCountCell(row);
var total=$FolderList.getTotalMessages(_100e);
var _1017=$FolderList.getUnreadMessages(_100e);
if(defined(total)&&defined(_1017)&&total!=null&&_1017!=null){
this.setFolderCounts(_100e.raw,total,_1017,row);
}else{
Element.update(_1015,"&nbsp;");
}
};
this._setFolderSize=function(row,size){
var _101a=this.dom.getSizeCell(row);
size=size||0;
Element.update(_101a,size.toString().toFilesize(1)+String.repeat("&nbsp;",5));
};
this._setTotalSize=function(size){
size=size||0;
if(size<0){
this.showTotalFolderSize(false);
}else{
var _101c="fmanager_total_size";
Element.update(_101c,size.toString().toFilesize(1)+String.repeat("&nbsp;",5));
this.showTotalFolderSize(true);
}
this.sizes["email"]=size;
};
this.cbSubUpdateFolders=null;
this._cbSubUpdateFolders=function(){
this.update();
};
this.evCheck=function(e){
var _101e=Event.element(e);
var row=this.dom.findRow(_101e);
var _1020=row._folder;
var _1021=_101e.checked;
$UI_Grid.checkSelectedRow(_101e,_1021,row.tagName);
var _1022=row.nextSibling;
while(_1022&&$FolderList.isWithin(_1022._folder.raw,_1020.raw)){
if(!Element.visible(_1022)){
continue;
}
var _1023=this.dom.getCheckbox(_1022);
$UI_Grid.checkSelectedRow(_1023,_1021,row.tagName);
_1023.disabled=_1021;
_1022=_1022.nextSibling;
}
};
this.evCreate=function(e){
this.create.showForm();
};
this.evDelete=function(e){
var _1026=this._getCheckedFolders();
if(_1026.length>0){
if(confirm(L("Folders.Confirm.Delete"))){
$FolderList.deleteFolders(_1026,function(_1027){
this._clearCheckedFolders();
if(_1027.exception){
$UI.error(_1027.message);
}
}.bind(this));
}
}
};
this.evEdit=function(e){
var _1029=Event.element(e);
var row=this.dom.findRow(_1029);
var _102b=row._folder;
this.edit.showForm(_102b);
};
this.evFolderGo=function(e){
var _102d=Event.findElement(e,"tr");
var _102e=_102d._folder;
Webmail.Dispatcher.loadFolder(_102e.raw);
};
this.evMove=function(e){
var _1030=Event.element(e);
var dest=_1030.value;
var _1032=this._getCheckedFolders();
if(dest=="-"||_1032.length==0){
_1030.selectedIndex=0;
return;
}
if(_1032.length>0){
this._clearCheckedFolders();
_1030.selectedIndex=0;
$FolderList.moveFolders(_1032,dest,function(_1033){
this._clearCheckedFolders();
if(_1033.exception){
$UI.error(_1033.message);
}
}.bind(this));
}
};
this.evMoveToFolder=function(e){
},this.evPurge=function(e){
var link=Event.element(e);
var row=this.dom.findRow(link);
var _1038=row._folder.raw;
if($Settings.isPurgePermanent()||_1038==CFG_FOLDER_TRASH||_1038==CFG_FOLDER_SPAM){
var _1039=L("Folders.Confirm.PurgeFolderPerm");
}else{
var _1039=L("Folders.Confirm.PurgeFolder");
}
if(confirm(_1039)){
$FolderList.purgeFolder(_1038,function(_103a){
if(_103a.exception){
$UI.error(_103a.message);
}
});
}
};
this.evUpdateSize=function(e){
$FolderList.updateSizes();
};
this.showTotalFolderSize=function(bool){
if(bool){
Element.show($("fmanager_grid_size"));
}else{
Element.hide($("fmanager_grid_size"));
}
};
};
}
if($Bootstrap.notLoaded("b1f90c4d8e679166912dff74876c3194")){
Droppables._activate=Droppables.activate;
Droppables.activate=function(drop){
Droppables._activate(drop);
drop.onmouseover(drop);
};
Framework.register("Webmail.Modules.FolderManager");
Webmail.Modules.FolderManager.SubMenu={active_link:null,__preload:function(){
Object.bindCallbacks(this);
this.evFolderClick=this._evFolderClick.bindAsEventListener(this);
this.evFolderMouseOut=this._evFolderMouseOut.bindAsEventListener(this);
this.evHeaderClick=this._evHeaderClick.bindAsEventListener(this);
this.evPlusClick=this._evPlusClick.bindAsEventListener(this);
this.evPurgeIcon=this._evPurgeIcon.bindAsEventListener(this);
this.evToggleCollapse=this._evToggleCollapse.bindAsEventListener(this);
var _103e=Element.create("div");
_103e.append(this.draw());
$Dispatcher.subscribe("Email.Folders.update",this.cbSubUpdateFolders);
return _103e;
},__load:function(){
$$MainMenu.setActiveTab("email");
},__resize:function(elem,width,_1041){
},clearActiveFolder:function(){
if(this.active_link){
this.active_link.removeClassName("active");
}
},createFolderTree:function(_1042){
var lists=[Element.create("ul",{className:"SubMenu_tree SubMenu_tree_toggle"})];
var _1044=0;
var _1045=null;
for(var i=0,ii=_1042.length;i<ii;i++){
var _1047=_1042[i];
var _1048=$FolderList.getIndentLevel(_1047.raw);
if(_1048>_1044){
_1045.append(lists[_1048]=Element.create("ul"));
_1045.addClassName("parent");
_1045.removeClassName("leaf");
if($FolderSettings.getSetting(_1045._folder.raw,"collapse")){
_1045._collapsed=true;
_1045.addClassName("collapsed");
}
}
_1044=_1048;
_1045=null;
_1045=this._drawFolderLink(_1047);
if(!lists[_1048]){
_1048=0;
}
lists[_1048].append(_1045);
}
return lists[0];
},dom:{findUnreadContainer:function(cont){
var spans=cont.getElementsByTagName("span");
for(var i=0,ii=spans.length;i<ii;i++){
if(spans[i].className=="new"){
return $(spans[i]);
}
}
},findLink:function(cont){
return cont.getElementsByTagName("a")[0];
},findPurgeLink:function(cont){
var link=cont.getElementsByTagName("a")[1];
if(link){
link=$(link);
}
return link;
}},draw:function(){
var _104f=Element.create("div",{className:"Email_SubMenu"});
var _1050=$Custom.getExtraLinks();
if(_1050.length>0){
_104f.append($Custom.createLinksSection(_1050));
}
var _1051=$TPL.getTemplate("submenu_section",{title:L("Folders.Title.Folders"),add:L("Folders.L.AddFolder"),manage:L("Folders.Q.FolderManager")});
Event.observe(_1051.dom("title"),"click",this.evHeaderClick);
Event.observe(_1051.dom("manage"),"click",this.evHeaderClick);
Event.observe(_1051.dom("add"),"click",this.evPlusClick);
_104f.append(_1051);
var tree=this.createFolderTree($FolderList.getFolders());
tree.id="Email_folder_tree";
_1051.append(tree);
$Widgets.ContextMenu.Folders.factory(tree);
return _104f;
},purgeFolder:function(_1053){
var _1054;
if($Settings.isPurgePermanent()||$FolderList.isTrash(_1053)||$FolderList.isSpam(_1053)){
_1054=L("Folders.Confirm.PurgeFolderPerm");
}else{
_1054=L("Folders.Confirm.PurgeFolder");
}
if(confirm(_1054)){
$FolderList.purgeFolder(_1053);
}
},setActiveFolder:function(_1055){
var _1056=$("Email_flink_"+_1055);
if(_1056){
this._setActiveFolder(_1056);
}
},setFolderCounts:function(_1057,total,_1059){
if(typeof (_1057)=="string"){
var _105a=$("Email_flink_"+_1057);
}else{
var _105a=$(_1057);
_1057=_105a._folder.raw;
}
if(!_105a){
return;
}
total=total||0;
_1059=_1059||0;
this._updateTrackback(_1057,total,_1059);
$$SubMenu.updateTotals();
if($FolderList.isDraft(_1057)){
_1059=total;
}
if($FolderList.isTrash(_1057)){
_1059=0;
}
var _105b=this.dom.findUnreadContainer(_105a);
if(_105b){
_105b.innerHTML=(_1059==0?"":"("+_1059+")");
}
if($FolderList.isTrash(_1057)||$FolderList.isSpam(_1057)){
var _105c=this.dom.findPurgeLink(_105a);
if(_105c){
if(total>0){
_105c.show();
}else{
_105c.hide();
}
}
}
if(_1059>0){
_105a.addClassName("has_unread");
}else{
_105a.removeClassName("has_unread");
}
},update:function(){
var _105d=$FolderList.getFolders();
var tree=$("Email_folder_tree");
if(!tree){
return;
}
var _105f=$(tree).getElementsByTagName("li");
var _1060=[];
for(var i=0,ii=_105f.length;i<ii;i++){
_1060.push(_105f[i]._folder.raw);
}
var _1062=[];
for(var i=0,ii=_105d.length;i<ii;i++){
_1062.push(_105d[i].raw);
}
var _1063=Array.diff(_1060,_1062);
var _1064=Array.diff(_1062,_1060);
for(var i=0,ii=_1063.length;i<ii;i++){
var link=$("Email_flink_"+_1063[i]);
if(link){
var group=$(link.parentNode);
var _1067=$(group.parentNode);
var _1068=this.dom.findLink(link);
Droppables.remove(_1068);
link.innerHTML="";
Element.remove(link);
if(group.childNodes.length==0){
Element.remove(group);
_1067.removeClassName("parent");
_1067.addClassName("leaf");
}
}
}
for(var i=0,ii=_1064.length;i<ii;i++){
var _1069=$FolderList.getIndentLevel(_1064[i]);
var _106a=null;
var _106b=null;
for(var j=0,jj=_105d.length;j<jj;j++){
if(_105d[j].raw==_1064[i]){
_106a=_105d[j-1];
_106b=_105d[j];
break;
}
}
var _1067=$FolderList.getParent(_106b.raw);
var _106d=$("Email_flink_"+_1067);
if(_1067==CFG_FOLDER_INBOX){
_1067=tree;
_106d=$(_1067);
}
var _106e=this._drawFolderLink(_106b);
if(_1067==tree){
var group=tree;
}else{
var group=_106d.getElementsByTagName("ul")[0];
}
if(!group){
group=Element.create("ul");
Element.append(_106d,group);
Element.append(group,_106e);
_106d.addClassName("parent");
_106d.removeClassName("leaf");
}else{
var _106f=$("Email_flink_"+_106a.raw);
if(_106a.raw!=_1067){
if(_106f){
while(!Element.isMember(group,_106f)){
_106f=_106f.parentNode.parentNode;
}
}
}
if(_106a.raw==_1067){
group.insertBefore(_106e,group.firstChild);
}else{
if(!_106f||_106f==group.lastChild){
Element.append(group,_106e);
}else{
group.insertBefore(_106e,_106f.nextSibling);
}
}
}
}
},_drawFolderLink:function(_1070){
var _1071=Element.create("li",{id:"Email_flink_"+_1070.raw});
_1071.className="folder leaf";
var _1072="";
if($FolderList.isTrash(_1070.raw)||$FolderList.isSpam(_1070.raw)){
_1072="<a href=\"javascript: void(0);\" class=\"purge_link\">"+"<img src=\"images/blank.gif\" align=\"top\" "+"title=\""+L("Folders.L.Purge")+"\" "+"alt=\""+L("Folders.L.Purge")+"\" /></a>";
}
var _1073=_1070.name;
_1073=_1073.replace(/</g,"&lt;");
_1073=_1073.replace(/>/g,"&gt;");
_1071.innerHTML=["<span class=\"toggle\"><img src=\"images/blank.gif\" /></span>","<a href=\"javascript:void(0);\" isfolder=\"true\"><span>",_1073,"</span></a>","<span class=\"new\"></span>",_1072].join("");
var _1074=$$FolderManager.getFolderClass(_1070);
if(_1074!=""){
_1071.className+=" "+_1074;
}
var _1075=_1071.getElementsByTagName("img")[0];
Event.observe(_1075,"click",this.evToggleCollapse);
var link=this.dom.findLink(_1071);
Event.observe(link,"click",this.evFolderClick);
Event.observe(link,"mouseout",this.evFolderMouseOut);
this._makeFolderLinkDroppable(link,_1070.raw);
if(_1072!=""){
var _1077=this.dom.findPurgeLink(_1071);
Event.observe(_1077,"click",this.evPurgeIcon);
_1077.hide();
}
_1071._folder=_1070;
if(_1070.total!=undefined||_1070.unread!=undefined){
this.setFolderCounts(_1071,_1070.total,_1070.unread);
}
return _1071;
},_makeFolderLinkDroppable:function(elem,_1079){
Droppables.add(elem,{accept:"Email_draggable",hoverclass:"hovered",onDrop:function(_107a){
$$MessageRow.dropMessageInFolder(_1079,_107a);
},onmouseover:function(drop){
var link=drop.element;
var _107d=link.parentNode;
var _107e=_107d._folder.raw;
if(Draggables.activeDraggable&&!_107d._timer){
_107d._timer=setTimeout(function(){
_107d._collapsed=false;
_107d.removeClassName("collapsed");
this._toggleCollapsed(_107e,false);
}.bind(this),1250);
}
}.bind($$FolderManager.SubMenu)});
},_runTrackback:function(_107f){
var _1080=$("Email_flink_"+_107f);
if(!_1080){
return;
}
var total=_1080._children_total||0;
var _1082=_1080._children_unread||0;
if($FolderList.isDraft(_107f)){
_1082=total;
}
if(_1080._collapsed&&_1082>0){
_1080.addClassName("trackback");
}else{
_1080.removeClassName("trackback");
}
},_setActiveFolder:function(_1083){
_1083=$(_1083);
var _1084=_1083._folder.raw;
var key="active_link";
if(this[key]){
this[key].removeClassName("active");
}
_1083.addClassName("active");
this[key]=_1083;
$Dispatcher.publish("Folders.setActive",{folder:_1084});
},_toggleCollapsed:function(_1086,_1087){
this._runTrackback(_1086);
$FolderSettings.setFolderCollapse(_1086,_1087);
},_updateTrackback:function(_1088,total,_108a){
var _108b=$("Email_flink_"+_1088);
if(!_108b){
return;
}
var _108c=_108b._total||0;
var _108d=_108b._unread||0;
_108b._total=total=total||0;
_108b._unread=_108a=_108a||0;
var _108e=total-_108c;
var _108f=_108a-_108d;
var _1090=$(_108b.parentNode.parentNode);
while(_1090.nodeName=="li"||_1090.nodeName=="LI"){
_1090._children_total=(_1090._children_total||0)+_108e;
_1090._children_unread=(_1090._children_unread||0)+_108f;
this._runTrackback(_1090._folder.raw);
_1090=$(_1090.parentNode.parentNode);
}
},cbSubUpdateFolders:null,_cbSubUpdateFolders:function(){
this.update();
},_evFolderClick:function(e){
var _1092=Event.findElement(e,"li");
var _1093=_1092._folder.raw;
if(Keystroke&&Keystroke.key("z")){
this.purgeFolder(_1093);
}else{
$Dispatcher.loadFolder(_1093);
this._setActiveFolder(_1092);
}
},evFolderClick:null,_evFolderMouseOut:function(e){
var _1095=Event.findElement(e,"li");
clearTimeout(_1095._timer);
_1095._timer=null;
},evFolderMouseOut:null,_evHeaderClick:function(e){
$UI.load(function(){
$Controller.loadModule("FolderManager");
}.bind(this),e);
},evHeaderClick:null,_evPlusClick:function(e){
$$FolderManager.create.showForm(false);
},evPlusClick:null,_evPurgeIcon:function(e){
var _1099=Event.findElement(e,"li");
var _109a=_1099._folder.raw;
this.purgeFolder(_109a);
},evPurgeIcon:null,_evToggleCollapse:function(e){
var _109c=Event.findElement(e,"li");
var _109d=_109c._folder.raw;
var _109e=(_109c._collapsed?false:true);
if(_109c._collapsed){
_109c._collapsed=false;
_109c.removeClassName("collapsed");
}else{
_109c._collapsed=true;
_109c.addClassName("collapsed");
}
this._toggleCollapsed(_109d,_109e);
},evToggleCollapse:null};
}
if($Bootstrap.notLoaded("1f387194e219b178c0b8b74d891a0c0c")){
Framework.register("Webmail");
$Mail=Webmail.Mail={check_timer:null,num_external_accounts:$Preload["Mail.num_external_accounts"],_inited:false,initialize:function(){
Object.bindCallbacks(this);
var _109f=$Prefs.getUserPref("mail_auto_check",5*60);
this.setCheckTimer(_109f);
this.check(function(){
if(CFG_FOLDER_PREFETCH_ENABLE){
var _10a0=$FolderList.getPrefetchFolderArray();
var _10a1=new wack.List();
for(var x=0;x<_10a0.length;x++){
_10a1.add(_10a0[x]);
}
var _10a3=new Webmail.Modules.MessageList.Prefetcher.FolderExclusionList();
_10a3.add("INBOX.RSS*");
_10a3.add("INBOX.Trash*");
_10a3.add("INBOX.spam*");
var _10a4=new Webmail.Modules.MessageList.Prefetcher(_10a1,_10a3,{interval_sleep_time:CFG_FOLDER_PREFETCH_INTERVAL},$Dispatcher);
_10a4.start();
}
},true);
$Dispatcher.setExternalAccounts(this.num_external_accounts);
},check:function(_10a5,_10a6){
_10a6=_10a6||false;
if(this._inited&&$MessageList.active()){
var _10a7=$MessageList.folder();
var _10a8=$MessageList.start();
var _10a9=$$MessageList.getCurrentUids();
}else{
var _10a7=_10a8=_10a9=false;
}
var _10aa=_10a6;
$Dispatcher.publish("Folders.pending_call");
$Data.request("Mail.check",{callback:function(_10ab){
if(_10ab.exception){
}else{
var _10ac=_10ab.messages;
var _10ad=_10ab.folders;
var usage=_10ab.usage;
if(!this._inited){
for(var i=0,ii=_10ad.length;i<ii;i++){
if(_10ad[i].folder==CFG_FOLDER_INBOX){
_10ad.remove(i);
break;
}
}
this._inited=true;
}
var _10b0=$FolderList.getUnreadMessages(CFG_FOLDER_INBOX);
var _10b1=false;
var _10b2=0;
if($MessageList.active()){
_10b1=$MessageList.folder();
_10b2=$FolderList.getUnreadMessages(_10b1);
}
$LeftMenu.updateFoldersStatus(_10ad);
if(_10ac!=null){
if($MessageList.folder()==_10ac["folder"]){
$MessageList.total(_10ac["total"]);
$MessageList.unseen(_10ac["unseen"]);
var _10b3=($MessageList.sort()==8||$MessageList.sort()==9);
var _10b4=1000*60*5;
var diff=((new Date)-$$MessageList.current_message_loaded);
if(!_10b3||!_10aa||!$$MessageList.current_message||diff>=_10b4){
$MessageList.cbGetMessages(_10ac["msgs"]);
}
}
}
if(usage!==null){
$Quota.setUsage(usage);
}
if($Settings.isSoundEnabled()){
if($FolderList.getUnreadMessages(CFG_FOLDER_INBOX)>_10b0||(_10b1&&$FolderList.getUnreadMessages(_10b1)>_10b2)){
Webmail.UI.Sounds.play(CFG_SOUND_ID);
}
}
}
if(_10a5){
_10a5(_10ab);
}
}.bind(this),handle_conn_err:!_10a6,background:_10aa,request_type:CFG_AJAX_READ},_10a7,_10a8,_10a9);
},checkBackground:function(){
$Mail.check(null,true);
},setReadStatus:function(_10b6,_10b7,_10b8){
$Data.request("Mail.setReadStatus",{callback:_10b8,handle_conn_err:false,request_retries:1},_10b6,_10b7);
},setCheckTimer:function(_10b9){
if(_10b9=="none"){
_10b9=0;
}
window.clearTimeout(this.check_timer);
if(_10b9>0){
this.check_timer=window.setInterval($Mail.checkBackground,_10b9*1000);
}
},setFlag:function(_10ba,flag,_10bc,color){
if(typeof color=="undefined"){
var color=false;
}
$Data.request("Mail.setFlag",{callback:_10bc},_10ba,flag,color);
},cbSubSettingsChange:function(_10be){
$Mail.setCheckTimer(_10be);
}};
$Dispatcher.subscribe("Settings.change.mail_check",$Mail.cbSubSettingsChange);
}
if($Bootstrap.notLoaded("a2a8e5ed186a70f63ad600fd57f4243d")){
Framework.register("Webmail.Modules.Email");
$$Email=Webmail.Modules.Email={_util_bar:null,getUtilityBar:function(){
if(!this._util_bar){
this._util_bar=this._drawUtilityBar();
}
this.setExternalButton($Mail.num_external_accounts);
return this._util_bar;
},_drawUtilityBar:function(){
var _10bf=Element.createHtml("<span><input type=\"button\" value=\""+L("Folders.Q.Check")+"\" _ref=\"check\" /><input type=\"button\" value=\""+L("Folders.Q.Compose")+"\" _ref=\"compose\" /><input type=\"button\" value=\""+L("LeftMenu.L.External")+"\" id=\"Mail_external_btn\" _ref=\"external\"/></span>");
$Templates.setDom(_10bf);
this._ext_btn=_10bf.dom("external");
Object.bindObservers(this);
Event.observe(_10bf.dom("check"),"click",this.evCheckMail);
Event.observe(_10bf.dom("compose"),"click",this.evCompose);
Event.observe(this._ext_btn,"click",this.evCheckExternal);
return _10bf;
},setExternalButton:function(count){
$Mail.num_external_accounts=count;
if(count>0){
$$MainMenu.showMenuItem("email","external");
if(this._ext_btn){
this._ext_btn.show();
}
}else{
$$MainMenu.hideMenuItem("email","external");
if(this._ext_btn){
this._ext_btn.hide();
}
}
},_evCheckMail:function(e){
$Dispatcher.checkMail();
},_evCheckExternal:function(e){
$Dispatcher.checkExtMail();
},_evCompose:function(e){
$Dispatcher.compose();
}};
}
if($Bootstrap.notLoaded("9c7d52a526ff17f0b5892df1e42d7151")){
Framework.register("Webmail");
$Search=Webmail.Search=new function(){
this.active=function(){
return ($Controller.getCurrentModule()=="Search"?true:false);
};
this.blacklistMessages=function(_10c4,_10c5){
$Data.request("Mail.blacklistMessages",{callback:_10c5},_10c4);
};
this.disable=function(){
$$Search.toggleWidget(false);
};
this.enable=function(_10c6){
$$Search.toggleWidget(true,_10c6);
};
this.moveToTrash=function(m){
var mln=$MessageList;
if(typeof m=="undefined"){
return ($Prefs.getUserPref("mail_delete_to_trash",1)==1?true:false);
}else{
mln._move_to_trash=$Prefs.setUserPref("mail_delete_to_trash",(m?1:0),false);
}
};
this.previewPane=function(p){
var mln=$MessageList;
if(typeof p=="undefined"){
return $Settings.usePreviewPane();
}else{
$Prefs.setUserPref("disp_use_previewpane",(p?1:0),false);
$$Search.draw.previewPane(p);
}
};
this.searchAdvanced=function(_10cb,start,limit,_10ce){
start=start||0;
limit=limit||0;
$Data.request("Search.searchAdvanced",{callback:function(_10cf){
if(!_10cf.exception){
_10ce(_10cf);
}
}.bind(this)},_10cb,start,limit);
};
this.searchBasic=function(_10d0,start,limit,_10d3){
start=start||0;
limit=limit||0;
_10d3=_10d3||Prototype.emptyFunction;
Webmail.Data.request("Search.searchBasic",{callback:function(_10d4){
if(!_10d4.exception&&_10d4.results){
_10d3(_10d4);
}
}},_10d0,start,limit);
};
this.safelistMessages=function(_10d5,_10d6){
$Data.request("Mail.safelistMessages",{callback:_10d6},_10d5);
};
};
}
if($Bootstrap.notLoaded("9e17c2e535688799bf5aa077209ac486")){
Framework.register("Webmail.Modules");
$$Search=Webmail.Modules.Search=new function(){
this.config={disable_scroll:true,enable_search:true};
this.module_key="Search";
this.check_drag=new CheckDrag;
this.current_message=false;
this.basic_type="curr";
this.curr_type="";
this.criteria={};
this.matches=0;
this.start=1;
this.limit=Number(CFG_SEARCH_LIMIT);
this.shown=0;
this.basic_input=null;
this.external_search=$Preload["Search.external_search"];
this.__preload=function(){
Object.bindObservers(this);
Object.bindCallbacks(this);
$Dispatcher.subscribe("Email.Folders.update",this.cbSubUpdateFolders);
$Dispatcher.subscribe("Settings.change.preview_pane",this.cbSubSettingsPreviewPane);
var _10d7=this.create.searchWidget();
Element.append("core_right",_10d7);
this._page=Element.create("div",{id:"Search_page"});
this._list=Element.create("div",{id:"Search_list_container",className:"media_screen"});
$Widgets.ContextMenu.Messages.factory(this._list,{search:true});
this._ppane=Element.create("div",{id:"Search_ppane"});
this._ppane_handle=Element.create("div",{id:"Search_ppane_handle",className:"media_screen"});
Element.append(this._page,this._list,this._ppane,this._ppane_handle);
this._p_pane_proportion=0.5;
this._ppane_blank=this.create.previewPane();
Element.append(this._ppane,this._ppane_blank);
if(!$Search.previewPane()){
this._ppane_handle.style.display="none";
this._ppane.style.display="none";
}
var _10d8=Element.create("div",{className:"Search_hover",id:"Search_test"});
Element.hide(_10d8);
Element.append(this._page,_10d8);
var _10d9=this.create.header();
this._search_body=this.create.body();
Element.append(this._list,_10d9,this._search_body);
$KeyEventManager.addKeyEvent(this._page,this.evKeyUp,Event.KEY_UP,0);
$KeyEventManager.addKeyEvent(this._page,this.evKeyDown,Event.KEY_DOWN,0);
$KeyEventManager.addKeyEvent(this._page,this.evKeyDelete,Event.KEY_DELETE,0);
return this._page;
};
this.__load=function(){
if($Search.previewPane()){
this.setPreviewPaneClear(true);
this._ppane_handle.style.display="";
}
$Dispatcher.clearActiveFolder();
this.draw.titlebar();
};
this.__resize=function(){
this._resizeHeight();
this._resizeWidth();
};
this._boundPreviewPane=function(h){
return ((h>50)&&(h<Webmail.rightHeight()-50));
};
this._bumpResults=function(bump){
if(bump){
Element.show("Search_adv_placeholder");
}else{
Element.hide("Search_adv_placeholder");
}
this._resizeHeight();
};
this._resizeHeight=function(){
var _10dc=$("Search_container");
var _10dd=Webmail.rightHeight()+18;
var _10de=($("Search_adv_placeholder").offsetHeight||0);
_10dd-=_10de;
if($Search.previewPane()){
var _10df=Number(Math.round(_10dd*(1-this._p_pane_proportion)))+_10de;
var _10e0=_10df-_10dc.offsetTop;
if(_10df>0){
$("Search_list_container").setStyle({height:_10df+"px"});
}
var _10e1=_10dd-_10df+_10de;
var _10e2=$$Search._ppane;
var _10e3=$$Search._ppane_handle;
if(_10e1>0){
_10e2.style.height=_10e1+"px";
_10e3.style.top=_10df+"px";
}
}else{
var _10e0=_10dd-_10dc.offsetTop;
}
if(_10e0>0){
_10dc.setStyle({height:_10e0+"px"});
}
if($$MessageList._email_widget){
$$MessageList._email_widget.resize();
}
};
this._resizeHeightBar=function(){
var _10e4=Webmail.rightHeight();
var _10e5=$("Search_adv_placeholder").offsetHeight;
_10e4-=_10e5;
if($Search.previewPane()){
this._p_pane_proportion=this._ppane.offsetHeight/_10e4;
}
this._resizeHeight();
};
this._resizeWidth=function(){
var _10e6=Webmail.rightWidth();
var _10e7=_10e6-402;
var tb=$$Search.dom.getBody();
if(!tb.childNodes){
return;
}
if(tb.childNodes[0]){
var _10e9=tb.childNodes[0].obj._sub.offsetWidth;
if(_10e9==50&&_10e7<=50){
return;
}
}
if(!Element.hasClassName($("Search_folder_div"),"MessageRow_folder_hidden")){
_10e7=_10e7-$("Search_folder_div").offsetWidth;
}
if(_10e7<50){
_10e7=50;
}
for(var i=0,ii=tb.childNodes.length;i<ii;i++){
var tr=tb.childNodes[i];
tr.obj._sub.style.width=_10e7+"px";
}
$("Search_subject_header").firstChild.style.width=_10e7+"px";
var _10ec=wack.Browser.getDimensions()[1];
var _10ed=$("Search_widget");
var _10ee=$("Search_toolbar_left");
if(_10ed&&_10ee){
Element.setDimensions(_10ed,{width:_10ec-Position.cumulativeOffset(_10ee)[0]-_10ee.offsetWidth-40});
}
};
this._setColumnHeaders=function(_10ef){
var _10f0=L("Mlist.L.Sent");
var _10f1=L("Mlist.L.From");
if($FolderList.isWithin(_10ef,CFG_FOLDER_DRAFTS)){
_10f0=L("Mlist.L.Saved");
}
if($FolderList.isWithin(_10ef,CFG_FOLDER_DRAFTS)||$FolderList.isWithin(_10ef,CFG_FOLDER_SENT)){
_10f1=L("Mlist.L.To");
}
var _10f2=" <img src=\"images/blank.gif\" class=\"Mlist_header_down_arrow\" />";
_10f0+=_10f2;
Element.update("Search_date_header",_10f0);
Element.update($("Search_from_header").firstChild,_10f1);
};
this._setFolder=function(_10f3){
var _10f4=$("Search_from_header").firstChild;
if($FolderList.isWithin(_10f3,CFG_FOLDER_SENT)||$FolderList.isWithin(_10f3,CFG_FOLDER_DRAFTS)){
_10f4.innerHTML=L("Search.L.To");
}else{
_10f4.innerHTML=L("Search.L.From");
}
Form.Select.setSelected("Search_results_folders",_10f3);
};
this._showIndexWarning=function(){
REQUIRE("combo/dialogs");
var msg=new $DialogsWarning({message:L("Search.IndexWarning1")+"<br><br>"+L("Search.IndexWarning2"),title:L("Search.T.IndexWarning"),width:500});
msg.show();
$UI.clearStatus();
};
this.blacklist={call:function(){
var _10f6=$$Search.blacklist.handler.bind($$Search);
var _10f7=$$Search.getCheckedRows();
if(_10f7.length==0){
return;
}
$UI.showStatus(L("Mlist.St.Blacklist"));
$Search.blacklistMessages(_10f7,_10f6);
},external:function(_10f8){
$UI.clearStatus();
var sb=$$Search._body;
for(var i=0,ii=sb.childNodes.length;i<ii;i++){
var ro=sb.childNodes[i];
if(ro.obj.id()==_10f8["id"]&&ro.obj.folder()==_10f8["folder"]){
if(this.current_message==ro){
$Dispatcher.setPreviewPaneClear(true);
$$Search.current_message=false;
}
if(ro.obj.folder()!=CFG_FOLDER_SPAM){
$$Search.changeUnseen(0,-1,ro.obj.folder(),CFG_FOLDER_SPAM);
}else{
$$Search.changeUnseen(0,-1,ro.obj.folder());
}
ro.obj.remNode();
return;
}
}
},handler:function(_10fc){
$UI.clearStatus();
var sb=$$Search._body;
var _10fe=[];
for(var i=0,ii=sb.childNodes.length;i<ii;i++){
var ro=sb.childNodes[i];
if(!ro.obj.visible()){
break;
}
if(ro.obj.checked()){
if(ro.obj.folder()!=CFG_FOLDER_SPAM){
_10fe.push({"folder":ro.obj.folder(),"id":ro.obj.id(),"unseen":!ro.obj.read()});
if($$Search.current_message==ro){
$Dispatcher.setPreviewPaneClear(true);
}
ro.obj.remNode();
}else{
ro.obj.checked(false);
}
}
}
if(_10fe.length>0){
var _1101={};
for(var i=0,ii=_10fe.length;i<ii;i++){
if(!_1101[_10fe[i]["folder"]]){
_1101[_10fe[i]["folder"]]={"unseen":(_10fe[i]["unseen"]?1:0),"total":1};
}else{
if(_10fe[i]["unseen"]){
_1101[_10fe[i]["folder"]]["unseen"]+=1;
}
_1101[_10fe[i]["folder"]]["total"]+=1;
}
}
for(folder in _1101){
$$Search.changeUnseen(0,-_1101[folder]["total"],folder,CFG_FOLDER_SPAM);
}
}
}};
this.create={body:function(){
var _1102=Element.create("div",{id:"Search_container"});
_1102.innerHTML=["<table id=\"Search_table\" cellspacing=\"0\" cellpadding=\"0\" border=\"0\">","<tbody id=\"Search_body\"></tbody>","<tbody id=\"Search_empty\">","<tr>","<td id=\"Search_empty_content\"></td>","</tr>","</tbody>","</table>"].join("");
$$Search._body=_1102.getElementsByTagName("tbody")[0];
Element.append(_1102.firstChild,$$Search._body);
return _1102;
},header:function(){
var _1103=Element.create("div",{id:"Search_header"});
var _1104=" <img src=\"images/blank.gif\" class=\"Mlist_header_down_arrow\" />";
var _1105=["<div class=\"toolbar\">","<div class=\"toolbar_left\" id=\"Search_toolbar_left\">","<span class=\"folders\">","<span>",L("Search.L.SearchFolder"),":&nbsp;</span>","<select id=\"Search_results_folders\">",$$Search.getFolderOptions(),"</select>","</span>","<span class=\"check\">","<input type=\"checkbox\" id=\"Search_results_attachments\" />","<span>",L("Search.L.ShowAttach"),"</span>","</span>","</div>","<div class=\"toolbar_right\">","</div>","</div>","<div id=\"Search_adv_placeholder\" style=\"display:none;\">&nbsp;</div>","<div id=\"Search_actions\">","<div class=\"left\">","<img src=\"images/blank.gif\" class=\"arrow_up_rt\" />","<input type=\"button\" class=\"btn\" value=\""+L("Mlist.L.Delete")+"\" id=\"delete_button\">","&nbsp;&nbsp;"+L("Mlist.Action.Or")+"&nbsp;&nbsp;",$$Search.create.optionsDropdown(),"&nbsp;&nbsp;"+L("Mlist.Action.Or")+"&nbsp;&nbsp;","<select id=\"Search_move_dd\">","<option value=\"null\">"+L("Mlist.Action.Move")+"</option>","<option value=\"null\">--------------------</option>",$FolderList.getDropdownOptions({include_special:true}),"</select>","</div>","<div class=\"left\">","<span id=\"Search_pager\"></span>","</div>","<div class=\"right\" id=\"Search_page_range\"></div>","<div class=\"clear\"></div>","</div>","<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\" class=\"small\" width=\"100%\" style=\"margin-top:-1px\">","<tr height=\"15px\" id=\"Search_header\" class=\"column_header_row\">","<td class=\"MessageRow_check_cell\">","<input type=\"checkbox\" id=\"Search_header_checkbox\">","</td>","<td class=\"MessageRow_priority_cell\">","<img src=\"images/blank.gif\" class=\"Mlist_header_prio\" />","</td>","<td class=\"MessageRow_icon_cell\">","<img src=\"images/blank.gif\" class=\"Mlist_header_envelope\" />","</td>","<td class=\"MessageRow_flag_cell\">","<img src=\"images/blank.gif\" class=\"Mlist_header_flag\" />","</td>","<td class=\"MessageRow_attach_cell\">","<img src=\"images/blank.gif\" class=\"Mlist_header_attach\" />","</td>","<td id=\"Search_from_header\">","<div class=\"MessageRow_from_div\">",L("Search.L.From"),"</div>","</td>","<td id=\"Search_subject_header\">","<div class=\"MessageRow_subject_div\">",L("Search.L.Subject"),"</div>","</td>","<td>","<div id=\"Search_folder_div\" class=\"MessageRow_folder MessageRow_folder_hidden\">",L("Mlist.L.Folder"),"</div>","</td>","<td id=\"Search_date_header\" class=\"MessageRow_date_cell\">",L("Mlist.L.Sent")+_1104,"</td>","<td id=\"Search_size_header\" class=\"MList_header_size_cell\">",L("Search.L.Size"),"</td>","</tr>","</table>"].join("");
_1103.innerHTML=_1105;
var _1106=_1103.firstChild;
var _1107=_1106.nextSibling.nextSibling;
var _1108=_1103.lastChild;
var _1109=_1107.getElementsByTagName("input")[0];
var _110a=_1107.getElementsByTagName("select");
var _110b=_110a[0];
var _110c=_110a[1];
var _110d=_1108.getElementsByTagName("input")[0];
var _110e=_1108.rows[0];
var _110f=_110e.cells[5];
var _1110=_110f.nextSibling;
var _1111=_1110.nextSibling;
var _1112=_1111.nextSibling;
Event.observe(_110b,"change",$$Search.evChangeDropdown.bind($$Search));
Event.observe(_110c,"change",$$Search.evMoveMessages.bind($$Search));
Event.observe(_1109,"click",$$Search.evClickDelete.bind($$Search));
Event.observe(_110d,"click",$$Search.evCheckAll.bind($$Search));
var _1113=_1103.firstChild.firstChild.getElementsByTagName("input")[0];
var _1114=_1103.firstChild.firstChild.getElementsByTagName("select")[0];
this.attachHandle=$$Search.evToggleAttachments.bindAsEventListener($$Search);
this.folderHandle=$$Search.evSwitchFolder.bindAsEventListener($$Search);
Event.observe(_1113,"click",this.attachHandle);
Event.observe(_1114,"change",this.folderHandle);
return _1103;
},optionsDropdown:function(){
return $$MessageList.getOptionsDropdown("Search_action_dd");
},previewPane:function(){
var pane=Element.createHtml(["<div class=\"Search_ppane_blank\" id=\"Search_ppane_blank\">","<div>",L("Mlist.PreviewPane"),"</div>","</div>",].join(""));
return pane;
},searchWidget:function(){
var _1116=Element.createHtml(["<div id=\"Search_widget\">","<input value=\""+L("Search.L.Search")+"\" class=\"btn\" type=\"button\" />","<a href=\"javascript: void(0);\">",L("Search.L.Advanced"),"</a>","<form method=\"get\" action=\"http://www.google.com/custom\" target=\"_blank\" id=\"Search_google\"> ","<input type=\"hidden\" name=\"q\" value=\"\"></input>","<input type=\"hidden\" name=\"client\" value=\"pub-5258819546022198\"></input>","<input type=\"hidden\" name=\"forid\" value=\"1\"></input>","<input type=\"hidden\" name=\"ie\" value=\"UTF-8\"></input>","<input type=\"hidden\" name=\"oe\" value=\"UTF-8\"></input>","<input type=\"hidden\" name=\"hl\" value=\"en\"></input>","<input type=\"hidden\" name=\"sa\" value=\"Search\"></input>","<input type=\"hidden\" name=\"cof\" value=\"GALT:#008000;GL:1;DIV:#336699;VLC:663399;AH:center;BGC:FFFFFF;LBGC:FFFFFF;ALC:0000FF;LC:0000FF;T:000000;GFNT:0000FF;GIMP:0000FF;LH:50;LW:125;S:http://www.google.com;FORID:1\"></input>","</form>","</div>",].join(""));
Element.hide(_1116.getElementsByTagName("form")[0]);
var _1117=_1116.getElementsByTagName("input");
var _1118=_1116.getElementsByTagName("a")[0];
this.basicHandler=$$Search.evQuickSearch.bindAsEventListener($$Search);
this.advancedHandler=$$Search.evShowAdvanced.bindAsEventListener($$Search);
Event.observe(_1117[0],"click",this.basicHandler);
Event.observe(_1118,"click",this.advancedHandler);
var input=$$Search.basic_input=new MoUI.Input({blank_image:"images/blank.gif",border_color:"red",icon_width:20,icon_height:15,input_id:"Search_widget_text",type:"menu",width:132,menu_callback:function(v){
$$Search.basic_type=v;
$("Search_widget_text").select();
}});
input.addMenuItem("curr",L("Search.L.ThisFolder"),"images/search/this_folder.2.gif","images/search/this_folder_active.2.gif");
input.addMenuItem("all",L("Search.L.AllFolders"),"images/search/all_folders.2.gif","images/search/all_folders_active.2.gif");
if($$Search.external_search==true){
input.addMenuItem("","sep","");
input.addMenuItem("google",L("Search.L.Google"),"images/search/google.2.gif","images/search/google_active.2.gif");
}
Element.insert(_1116,0,input.create());
Event.observe(input.input_elem,"keypress",this.basicHandler);
return _1116;
}};
this.draw={checkDrag:function(cb,chkd){
},previewPane:function(v){
$$Search._list.style.height="0px";
$$Search._ppane_handle.style.display=(v?"":"none");
$$Search._ppane.style.display=(v?"":"none");
$$Search.__resize();
},results:function(_111e,_111f){
_111f=_111f||{};
$$Search.current_message=false;
if($Controller.getCurrentModule()!=$$Search.module_key){
$Controller.loadModule($$Search.module_key);
}
$UI.clearStatus();
$$Search.setPreviewPaneClear(true);
var tb=$($$Search.dom.getBody());
var _1121=[];
var i=0;
var _1123=_111e.results;
var _1124=(_111f.folder&&($FolderList.isWithin(_111f.folder,CFG_FOLDER_SENT)||$FolderList.isWithin(_111f.folder,CFG_FOLDER_DRAFTS)));
var _1125=(_111f.folder==""||_111f.folder=="all"?true:false);
var _1126=$("Search_folder_div");
if(_1125){
Element.removeClassName(_1126,"MessageRow_folder_hidden");
}else{
Element.addClassName(_1126,"MessageRow_folder_hidden");
}
$$Search._resizeWidth();
if(_1123.length>0){
$("Search_empty").hide();
tb.show();
while(_1123[i]){
if(tb.childNodes[i]){
var tr=tb.childNodes[i];
tr.obj.fillRow(_1123[i],{use_to_field:_1124,show_folder:_1125});
}else{
var _1128=$$MessageList.evClickMessage.bindAsEventListener($$MessageList);
var ro=new $$MessageRow({click_handler:_1128});
_1121.push(ro.getCheckbox());
ro.fillRow(_1123[i],{use_to_field:_1124,show_folder:_1125});
tb.appendChild(ro.getContainer());
}
i++;
}
if(i<tb.childNodes.length){
for(var ii=tb.childNodes.length;i<ii;i++){
tb.childNodes[i].obj.visible(false);
}
}
}else{
$("Search_empty").show();
$("Search_empty_content").update(L("Search.NoResults"));
tb.hide();
}
if(_1121.length>0){
$UI.Grid.addCheckDrag(tb,_1121,tb.childNodes[0].tagName,$$MessageRow.checkDragCallback);
$$Search._resizeWidth();
}
$$Search.shown=_1123.length;
$$Search.draw.titlebar(_111e.matches);
var _112b=_111f.folder;
if(!_112b){
_112b="all";
}
$$Search._setFolder(_112b);
$$Search._setColumnHeaders(_112b);
$("Search_container").scrollTop=0;
$("Search_results_attachments").checked=(_111f.attachments?true:false);
},titlebar:function(_112c){
if(typeof _112c=="undefined"){
_112c=$$Search.matches;
}
var end=$$Search.start+Number($$Search.limit)-1;
if(end>_112c){
end=_112c;
}
var range="";
if(_112c>0){
range=L("Pager.Range",$$Search.start,end,_112c);
}else{
range="0";
}
var pager=$UI.Pager.createPager($$Search.start,Number($$Search.limit),_112c,{callback:$$Search.page.bind($$Search),reduced_range:$$Search.shown,show_range:false});
var _1130=$("Search_pager");
if(_1130.childNodes.length>0){
_1130.removeChild(_1130.firstChild);
}
_1130.append(pager);
var _1131=$("Search_page_range");
if(_112c>0){
_1131.update(L("Search.Results")+": "+range);
}else{
_1131.update("");
}
}};
this.dom={getBody:function(){
return $$Search._body;
},pluginText:function(cont){
return cont.firstChild.value;
},pluginContainer:function(elem){
while(elem!=document.body&&Element.nodeName(elem)!="div"){
elem=elem.parentNode;
}
if(elem==document.body){
return null;
}
return elem;
}};
this.getFolderOptions=function(){
var _1134="";
var _1135=$FolderList.getDropdownOptions({include_special:true,ret_array:true});
for(var i=0,ii=_1135.length;i<ii;i++){
if($FolderList.isWithin(_1135[i].path,CFG_FOLDER_SPAM)){
continue;
}
_1134+="<option value=\""+_1135[i].path+"\">"+"&nbsp;&nbsp;"+_1135[i].text+"</option>";
}
var sep="<option value=\"\" class=\"sep\">"+String.repeat("&#8212;",10)+"</option>";
var _1138="<option value=\"all\">"+L("Search.L.AllFolders")+"</option>"+sep+"<option value=\"\">"+L("Folders.N.Email")+"</option>"+_1134;
return _1138;
};
this.init={makePaneResizeable:function(_1139){
function snapVertical(x,y){
if(y<100){
y=100;
}
return [0,y];
}
function startResize(_113c){
Element.addClassName(_113c,"Search_handle_active");
Webmail.enableWindow(false);
}
function endResize(_113d){
Element.removeClassName(_113d,"Search_handle_active");
Webmail.enableWindow(true);
Element.setStyle("Search_ppane",{height:Webmail.rightHeight()-_113d.offsetTop+"px"});
this._resizeHeightBar();
}
_1139.style.position="absolute";
new Draggable(_1139,{altDelta:true,snap:snapVertical,starteffect:startResize,endeffect:endResize.bind($$Search)});
}};
this.page=function(start,limit){
this.start=start;
this.refresh();
};
this.refresh=function(){
if(this.curr_type=="simple"){
var _1140=this.criteria.folder;
var terms=this.criteria.terms;
this.searchBasic(_1140,terms,null,true);
}else{
if(this.curr_type=="advanced"){
$$AdvSearch.search(true,this.criteria);
}
}
};
this.reset=function(){
$("Search_widget_text").value="";
};
this.resetRange=function(){
this.start=1;
this.criteria={};
};
this.safelist={call:function(){
var _1142=$$Search.safelist.handler.bind($$Search);
var _1143=$$Search.getCheckedRows();
if(_1143.length==0){
return;
}
$UI.showStatus(L("Mlist.St.Safelist"));
$Search.safelistMessages(_1143,_1142);
},external:function(_1144){
$UI.clearStatus();
if(_1144["folder"]!=CFG_FOLDER_SPAM){
return;
}
var sb=$$Search._body;
for(var i=0,ii=sb.childNodes.length;i<ii;i++){
var ro=sb.childNodes[i];
if(ro.obj.folder()==_1144["folder"]&&ro.obj.id()==_1144["id"]){
if($$Search.current_message==ro){
$Dispatcher.setPreviewPaneClear(true);
$$Search.current_message=false;
}
$$Search.changeUnseen((ro.obj.read()?0:-1),-1,CFG_FOLDER_SPAM,CFG_FOLDER_INBOX);
ro.obj.remNode();
}
}
},handler:function(_1148){
$UI.clearStatus();
var sb=$$Search._body;
var total=0;
var _114b=0;
for(var i=0,ii=sb.childNodes.length;i<ii;i++){
var ro=sb.childNodes[i];
if(!ro.obj.visible()){
break;
}
if(ro.obj.checked()){
if(ro.obj.folder()==CFG_FOLDER_SPAM){
total++;
if(!ro.obj.read()){
_114b++;
}
if($$Search.current_message==ro){
$Dispatcher.setPreviewPaneClear(true);
}
ro.obj.remNode();
}
ro.obj.checked(false);
}
}
if(total>0){
$$Search.changeUnseen(-_114b,-total,CFG_FOLDER_SPAM,CFG_FOLDER_INBOX);
}
}};
this.search=function(type,_114f,_1150){
if(type=="simple"){
if(!_1150){
if(this.basic_type=="all"){
_1150="all";
}else{
_1150=$MessageList.folder();
}
}
$("Search_results_attachments").checked=false;
this.searchBasic(_1150,_114f);
}
};
this.searchBasic=function(_1151,_1152,_1153,_1154){
var _1155=$("Search_header_checkbox");
_1155.checked=false;
$UI.showStatus(L("Search.St.Search"));
this._bumpResults(false);
if(!_1154){
this.resetRange();
}
if(this.basic_type=="google"){
var _1156=$("Search_google");
_1156.q.value=_1152;
_1156.submit();
$UI.clearStatus();
return;
}
if(_1151=="all"){
_1151="";
}
var _1152={folder:_1151||"",terms:_1152,attachments:($("Search_results_attachments").checked?true:false)};
this.criteria=_1152;
this.curr_type="simple";
$Search.searchBasic(_1152,this.start-1,this.limit,function(_1157){
if(_1157.exception){
$UI.clearStatus();
$UI.error(_1157.message);
}else{
this.matches=Number(_1157.matches);
if(this.matches==Search_FIRST_SEARCH){
this._showIndexWarning();
}else{
this.draw.results(_1157,this.criteria);
$("Search_widget_text").value=this.criteria.terms;
var _1158=$("Search_results_attachments");
if(Element.reallyVisible(_1158)){
this.toggleAttachments(!_1158.checked);
}
}
}
if(_1153){
_1153(_1157);
}
}.bind(this));
};
this.toggleAttachments=function(_1159){
var sb=this._body;
var i=0;
if(sb.childNodes.length==0){
return;
}
while(sb.childNodes[i]){
if(!sb.childNodes[i].obj.visible()){
break;
}
if(!sb.childNodes[i].obj.hasAttachment()){
sb.childNodes[i].obj.hasAttachment(_1159);
}
i++;
}
return;
};
this.toggleWidget=function(_115c,_115d){
if(_115c){
Element.show("Search_widget");
if(_115d){
$("Search_widget_text").value="";
}
}else{
Element.hide("Search_widget");
}
};
this.updateDropdowns=function(){
var _115e=$("Search_results_folders");
Form.Select.setInnerHTML(_115e,this.getFolderOptions());
if(window.$$AdvSearch){
$$AdvSearch._updateDropdowns();
}
};
this.cbSubUpdateFolders=null;
this._cbSubUpdateFolders=function(){
this.updateDropdowns();
};
this.cbSubSettingsPreviewPane=null;
this._cbSubSettingsPreviewPane=function(is_on){
$Search.previewPane(is_on);
};
this.evChangeDropdown=function(e){
elem=Event.element(e);
var _1161;
if(elem.value=="reportspam"){
_1161=this.refresh.bind(this);
}
$$MessageList.handleAction(elem.value,$$Search._body,_1161);
elem.selectedIndex=0;
$("Search_header_checkbox").checked=false;
};
this.evCheckAll=function(e){
var cs=Event.element(e).checked;
var sb=$$Search._body;
for(var i=0,ii=sb.childNodes.length;i<ii;i++){
var tr=sb.childNodes[i];
if(!tr.obj.visible()){
break;
}
$UI_Grid.checkSelectedRow(tr.obj._cbx,cs);
}
};
this.evClickDelete=function(e){
var _1168=function(_1169){
for(folder in _1169){
$$Search.matches-=_1169[folder]["total"];
$$Search.shown-=_1169[folder]["total"];
}
$$Search.draw.titlebar();
$("Search_header_checkbox").checked=false;
$UI.showStatus();
$$Search.refresh();
};
var _116a=this._body;
if(Keystroke.shift()){
Keystroke.shift(false);
if(confirm(L("Search.C.DeletePerm"))){
$$MessageList.deleteMessages(_116a,_1168,true);
}else{
return;
}
}else{
$$MessageList.deleteMessages(_116a,_1168,false);
}
};
this.evQuickSearch=function(e){
var elem=Event.element(e);
if(Event.key(e)==Event.KEY_RETURN||elem.type=="button"){
var cont=this.dom.pluginContainer(elem);
var text=$F("Search_widget_text");
if(text){
if(Element.reallyVisible("Search_results_folders")){
var _116f=$F("Search_results_folders");
}else{
var _116f=$MessageList.folder();
}
if(this.basic_type=="all"&&_116f!="all"){
_116f="all";
}
this.search("simple",text,_116f);
}
}
};
this.evMoveMessages=function(e){
var elem=Event.findElement(e,"select");
var _1172=elem.value;
if(_1172=="null"){
elem.selectedIndex=0;
return;
}
var _1173=$$Search._body;
var _1174=function(_1175){
for(folder in _1175){
$$Search.matches-=_1175[folder]["total"];
$$Search.shown-=_1175[folder]["total"];
}
$$Search.draw.titlebar();
elem.selectedIndex=0;
$("Search_header_checkbox").checked=false;
$UI.showStatus();
$$Search.refresh();
};
$$MessageList.moveMessages(_1172,_1173,elem,_1174);
};
this.evShowAdvanced=function(e){
var _1177=$$AdvSearch._drawDialog();
Element.show(_1177);
if(!_1177._cleared){
this._bumpResults(true);
}
var right=$("core_right");
Element.append(right,_1177);
$$AdvSearch._initDropdown();
};
this.evSwitchFolder=function(e){
var _117a=Event.element(e);
var _117b=_117a.value;
this.criteria.folder=_117b;
this.basic_input.setActive((_117b=="all"?"all":"curr"));
this.page(1,this.limit);
};
this.evToggleAttachments=function(e){
var _117d=Event.element(e);
var _117e=(_117d.checked?true:false);
if(this.criteria.attachments||this.matches>this.limit){
this.criteria.attachments=_117e;
this.page(1,this.limit);
}else{
this.toggleAttachments(!_117e);
}
};
this._evKeyDelete=function(e){
$$MessageList.evKeyDelete(e);
};
this._evKeyUp=function(e){
$$MessageList.evKeyUp(e);
};
this._evKeyDown=function(e){
$$MessageList.evKeyDown(e);
return;
};
this.getCheckedRows=function(){
var _1182=[];
var sb=$$Search._body;
for(var i=0,ii=sb.childNodes.length;i<ii;i++){
var ro=sb.childNodes[i];
if(!ro.obj.visible()){
break;
}
if(ro.obj.checked()){
_1182.push({"folder":ro.obj.folder(),"id":ro.obj.id(),"obj":ro.obj});
}
}
return _1182;
};
this.changeUnseen=function(_1186,total,start,_1189,_118a){
if(typeof _1189!="undefined"){
var _118b=(_118a?0:_1186);
$Dispatcher.publish("Folders.status_change",_1189,-total,-_118b);
}
$Dispatcher.publish("Folders.status_change",start,total,_1186);
};
this.setPreviewPaneClear=function(clear){
var _118d=this._ppane_blank;
if(clear){
var ppane=this._ppane;
if(ppane.firstChild==_118d){
return;
}
if(ppane.firstChild){
Element.remove(ppane.firstChild);
}
Element.append(ppane,_118d);
}else{
if(_118d&&_118d.parentNode==this._ppane){
Element.remove(_118d);
}
}
};
};
}
if($Bootstrap.notLoaded("2bab70d94840e1fe9ea10fef395d5ddf")){
Framework.register("Webmail.Modules.Search");
$$AdvSearch=Webmail.Modules.Search.Advanced=new function(){
_date_picker_widget:
null,this.clear=function(){
var _118f=$("Search_adv_dialog");
var _1190=this.dom.getFolderField(_118f);
var from=this.dom.getFromField(_118f);
var to=this.dom.getToField(_118f);
var _1193=this.dom.getSubjectField(_118f);
var body=this.dom.getBodyField(_118f);
var omit=this.dom.getOmitField(_118f);
var _1196=this.dom.getDateDropdown(_118f);
var _1197=this.dom.getAttachCheckbox(_118f);
this._date_picker_widget.set("");
from.value=to.value=_1193.value=body.value=omit.value="";
_1190.selectedIndex=_1196.selectedIndex=0;
_1197.checked=false;
};
this.close=function(_1198){
var _1199=$("Search_adv_dialog");
if(_1199){
$$Search._bumpResults(false);
Element.hide(_1199);
_1199._cleared=_1198;
if(_1198){
this.clear();
}
}
};
this.dom={getSection:function(_119a,index){
return this._getContent(_119a).childNodes[index-1];
},getAttachCheckbox:function(_119c){
var _119d=this.getSection(_119c,4);
return _119d.getElementsByTagName("input")[1];
},getBodyField:function(_119e){
var _119f=this.getSection(_119e,2);
return _119f.getElementsByTagName("input")[1];
},getCloseIcon:function(_11a0){
return _11a0.lastChild;
},getDateDropdown:function(_11a1){
var _11a2=this.getSection(_11a1,4);
return _11a2.getElementsByTagName("select")[0];
},getFolderField:function(_11a3){
var _11a4=this.getSection(_11a3,1);
return _11a4.getElementsByTagName("select")[0];
},getFromField:function(_11a5){
var _11a6=this.getSection(_11a5,2);
return _11a6.getElementsByTagName("input")[0];
},getHideIcon:function(_11a7){
return this.getCloseIcon(_11a7).previousSibling;
},getOmitField:function(_11a8){
var _11a9=this.getSection(_11a8,3);
return _11a9.getElementsByTagName("input")[1];
},getSubjectField:function(_11aa){
var _11ab=this.getSection(_11aa,1);
return _11ab.getElementsByTagName("input")[0];
},getToField:function(_11ac){
var _11ad=this.getSection(_11ac,3);
return _11ad.getElementsByTagName("input")[0];
},_getContainer:function(){
},_getContent:function(_11ae){
return _11ae.childNodes[1];
}};
this.search=function(_11af,_11b0){
var _11b1=$("Search_header_checkbox");
_11b1.checked=false;
$UI.showStatus(L("Search.St.Search"));
var _11b2=$("Search_adv_dialog");
if(!_11af){
$$Search.resetRange();
}
if(!_11b0){
var _11b0=this._buildCriteriaObject(_11b2);
$$Search.criteria=_11b0;
$$Search.curr_type="advanced";
}
if(!_11b0.from&&!_11b0.to&&!_11b0.subject&&!_11b0.body&&!_11b0.omit&&!_11b0.attachments){
$UI.clearStatus();
$UI.error(L("Search.E.Empty"));
return false;
}
var _11b3=null;
if(_11b0.folder!="all"){
_11b3=_11b0.folder;
}
$$Search.criteria=_11b0;
$$Search.curr_type="advanced";
$Search.searchAdvanced(_11b0,$$Search.start-1,$$Search.limit,function(_11b4){
if(_11b4.exception){
$UI.error(_11b4.message);
}else{
if(_11b4.matches==Search_FIRST_SEARCH){
$$Search._showIndexWarning();
}else{
if(Element.reallyVisible(_11b2)){
$$Search._bumpResults(true);
}
$$Search.matches=_11b4.matches;
$$Search.draw.results(_11b4,_11b0);
}
}
$UI.clearStatus();
}.bind(this));
};
this._buildCriteriaObject=function(_11b5){
var _11b6=this.dom.getFolderField(_11b5);
var from=this.dom.getFromField(_11b5);
var to=this.dom.getToField(_11b5);
var _11b9=this.dom.getSubjectField(_11b5);
var body=this.dom.getBodyField(_11b5);
var omit=this.dom.getOmitField(_11b5);
var _11bc=this.dom.getDateDropdown(_11b5);
var date=$C(this._date_picker_widget).firstChild;
var _11be=this.dom.getAttachCheckbox(_11b5);
var _11bf={folder:$F(_11b6),from:$F(from),to:$F(to),subject:$F(_11b9),body:$F(body),omit:$F(omit),date_type:$F(_11bc),date:$F(date),attachments:(_11be.checked?true:false)};
return _11bf;
};
this._drawDialog=function(){
var _11c0=$("Search_adv_dialog");
if(_11c0){
return _11c0;
}
var _this=$$Search;
var _11c2=$$Search.getFolderOptions();
var _11c3=Element.createHtml(["<div id=\"Search_adv_dialog\">","<iframe frameborder=\"0\" src=\"",Webmail.getBlankUrl(),"\"></iframe>","<div class=\"content\">","<div class=\"section\">","<label>",L("Search.L.SearchFolder"),"</label>","<select id=\"Search_adv_single_folder\" tabindex=\"1\">",_11c2,"</select>","<label>",L("Search.F.Subject"),"</label>","<input type=\"text\" class=\"txt long bottom\" tabindex=\"4\"/>","</div>","<div class=\"section\">","<label>",L("Search.F.From"),"</label>","<input type=\"text\" class=\"txt long\" tabindex=\"2\"/>","<label>",L("Search.F.Body"),"</label>","<input type=\"text\" class=\"txt long bottom\" tabindex=\"5\"/>","</div>","<div class=\"section\">","<label>",L("Search.F.To"),"</label>","<input type=\"text\" class=\"txt long\" tabindex=\"3\"/>","<label>",L("Search.F.Omit"),"</label>","<input type=\"text\" class=\"txt long bottom\" tabindex=\"6\"/>","</div>","<div class=\"bottomrow\">","<span class=\"date\">","<span>",L("Search.F.DateWithin"),"&nbsp;&nbsp;</span>","<select id=\"Search_adv_date_type\">","<option value=\"range:day\">",L("Search.F.RangeDay"),"</option>","<option value=\"range:week\">",L("Search.F.RangeWeek"),"</option>","<option value=\"range:month\">",L("Search.F.RangeMonth"),"</option>","<option value=\"curr:week\">",L("Search.F.CurrWeek"),"</option>","<option value=\"curr:month\">",L("Search.F.CurrMonth"),"</option>","<option value=\"curr:year\">",L("Search.F.CurrYear"),"</option>","</select>","&nbsp; ",L("Search.F.Of")," &nbsp;","</span>","<span class=\"attachment check\">","<input id=\"Search_adv_has_attach\" type=\"checkbox\" />","<label for=\"Search_adv_has_attach\">",L("Search.L.ShowAttach"),"</label>","</span>","<input _ref=\"search_btn\" type=\"submit\" class=\"btn search\" value=\"",L("Search.L.Search"),"\" />","</div>","</div>","<div class=\"hide\"></div>","<div class=\"close\"></div>","</div>"].join(""));
_11c3._cleared=true;
$Templates.setDom(_11c3);
$Widgets.load("DatePicker");
this._date_picker_widget=$Widgets.DatePicker.factory();
this._date_picker_widget.populate({form_name:"search_adv_date"});
Element.append(_11c3.getByTag("span")[0],$C(this._date_picker_widget));
var _11c4=this.dom.getCloseIcon(_11c3);
var _11c5=this.dom.getHideIcon(_11c3);
var _11c6=_11c3.dom("search_btn");
var _11c7=this.dom.getBodyField(_11c3);
var _11c8=this.dom.getFromField(_11c3);
var _11c9=this.dom.getFolderField(_11c3);
var _11ca=this.dom.getOmitField(_11c3);
var _11cb=this.dom.getToField(_11c3);
var _11cc=this.dom.getSubjectField(_11c3);
this.closeHandler=this.evClose.bindAsEventListener(this);
this.hideHandler=this.evHide.bindAsEventListener(this);
this.searchHandler=this.evSearch.bindAsEventListener(this);
this.keyHandler=this.evKey.bindAsEventListener(this);
Event.observe(_11c4,"click",this.closeHandler);
Event.observe(_11c5,"click",this.hideHandler);
Event.observe(_11c6,"click",this.searchHandler);
Event.observe(_11c7,"keypress",this.keyHandler);
Event.observe(_11c8,"keypress",this.keyHandler);
Event.observe(_11c9,"keypress",this.keyHandler);
Event.observe(_11ca,"keypress",this.keyHandler);
Event.observe(_11cb,"keypress",this.keyHandler);
Event.observe(_11cc,"keypress",this.keyHandler);
close_link=_11c6=null;
return _11c3;
};
this._initDropdown=function(){
var _11cd=$("Search_adv_single_folder");
if(_11cd){
if($$Search.basic_type!="all"){
var _11ce=$MessageList.folder();
Form.Select.setSelected(_11cd,_11ce);
}else{
_11cd.selectedIndex=0;
}
}
};
this._updateDropdowns=function(){
var _11cf=$("Search_adv_single_folder");
if(_11cf){
Form.Select.setInnerHTML(_11cf,$$Search.getFolderOptions());
}
};
this.evClose=function(e){
this.close(true);
};
this.evHide=function(e){
this.close(false);
};
this.evKey=function(e){
if(e.keyCode==13){
this.search();
}
};
this.evSearch=function(e){
this.search();
};
};
}
$Bootstrap.reportLoaded("js","webmail");
if ($Bootstrap.notLoaded('f2e2b2d7bcdff607a16cd360ad4d36a6')) {
/* vim: set tabstop=4 textwidth=120: */
/**
 * @fileoverview
 * js/Webmail/Widgets/Picker.js
 *
 * This widget is a base picker object.  A picker is basically an input element with an image that
 * will trigger some sort of picker object to help the user enter a value into the input element.
 *
 * CHANGELOG
 *
 * @requires	Prototype
 * @requires	Framework
 * @requires	Global
 * @requires	Webmail.Widgets
 *
 * @author		Brian Hartsock
 *
 */


Framework.create('Webmail.Widgets.Picker', $Widgets.create({

	id:			null,
	options:	null,
	_picker:	null,
	prev_val:	null,
	prevent_close_click: false,
	prevent_close_blur:	false,

	//Quick DOM accessors
	dom_input:		null,
	dom_image:		null,

	// Public functions
	// {{{ clearPicker()
	/*
	 * Close the picker.
	 *
	 */
	clearPicker: function(){

		if(this._picker){
			Element.remove(this._picker);
			this._picker = null;
		}

		//Stop observing document clicks
		Event.stopObserving(document.body, 'click', this.evDocumentClick);
	
		this.prevent_close_click = false;
		this.prevent_close_blur = false;
	},

	// }}}
	// {{{ disable()
	/*
	 * Disables the widget form elements other than the checkbox.
	 *
	 */
	disable: function(){
		this.dom_input.disabled = true;
	},
	
	// }}}
	// {{{ enable()
	/*
	 * Enables the widget form elements other than the checkbox.
	 *
	 */
	enable: function(){
		this.dom_input.disabled = false;
	},

	// }}}
	// {{{ reset()
	/*
	 * Reset the reminder widget.
	 *
	 */
	reset: function(){
		this.dom_input.name = '';
	},

	// }}}
	// {{{ set()
	/*
	 * Set the input value.  Option to format.  Always use this so we can fire the onchange event.
	 *
	 */
	set: function(value, do_not_format){
		var value = (do_not_format ? value : this._getFormattedValue(value));

		//IF new value is different
		if(this.dom_input.value != value){
			this.dom_input.value = value;
		}

		this.options.onchange(value);
	},

	// }}}

	// Private functions
	// {{{ _getFormattedValue()
	/*
	 * Formats the input value.  To be overridden if the input values need formatted, this does 
	 * nothing currently
	 *
	 * @param	{string}	value	Value to be formatted
	 * @return	{string}	Formatted value
	 */
	_getFormattedValue: function(value){
		return value;
	},

	// }}}

	// Event handlers
	// {{{ evBlurInput()
	/*
	 * Event handler for blurring from input. Used to format the value when entered by hand.
	 *
	 * @param	{event}	e	Event fired
	 */
	evBlurInput: null,
	_evBlurInput: function(e){
		this.set(this.dom_input.value);
		if (!this.prevent_close_blur) {
			this.clearPicker();
		} else {
			// blur should not close the picker (clicking on the image or picker dropdown)
			this.prevent_close_blur = false;
		}
	},

	// }}}
	// {{{ evDocumentClick()
	/*
	 * Handles the document click event.
	 *
	 */
	evDocumentClick: null,
	_evDocumentClick: function(){
		if (!this.prevent_close_click) {
			this.clearPicker();
		} else {
			// click should not close the picker (clicking on the image, input field, or picker
			// dropdown)
			this.prevent_close_click = false;
		}
	},

	// }}}
	// {{{ evMousedownImage()
	/**
	 * Called when clicking on the image associated with the picker.
	 * @param	{event}		e
	 */
	evMousedownImage: null,
	_evMousedownImage: function(e) {
		// prevent the evBlurInput function from closing the picker automatically
		this.prevent_close_blur = true;
	},
	// }}}
	// {{{ evMousedownInput()
	/**
	 * Called when clicking on the input box associated with the picker.
	 * @param	{event}		e
	 */
	evMousedownInput: null,
	_evMousedownInput: function(e) {
		// prevent the evDocumentClick function from closing the picker automatically
		this.prevent_close_click = true;
	},
	// }}}
	// {{{ evPreventClose()
	/**
	 * Event handler to prevent an automatic close when clicking on a picker.
	 * @param	{event}		e
	 */
	evPreventClose: null,
	_evPreventClose: function(e) {
	/* When clicking on a picker, three things happen in order - mousedown on the picker, blur on
	 * the input, and click on the document.  The last two automatically try to close the picker,
	 * which we want -only- if they are not clicking on the picker.  If they are, this function is
	 * called, where we set flags to prevent both from closing the picker.
	 */
		// prevent evDocumentClick from closing the picker
		this.prevent_close_click = true;
		// prevent evBlurInput from closing the picker
		this.prevent_close_blur = true;
	},
	// }}}
	// {{{ evShowPicker()
	/*
	 * Event handler called whenever the picker is requested to be shown.
	 *
	 * @param   event   e   Event that was fired (browser specific)
	 */
	evShowPicker: null,
	_evShowPicker : function(e)
	{
		Event.stop(e);

		// If there is a current picker, clear it
		if ($Widgets.Picker._current_picker) {
			$Widgets.Picker._current_picker.clearPicker();
		}

		//IF the picker is already shown, clear it
		if(this._picker){
			this.clearPicker();

		//ELSE the picker isn't being shown, hide it
		}else{
			$Widgets.Picker._current_picker = this;
			this._showPicker();
		}
	}

	// }}}
}));

$Widgets.Picker._current_picker = null;
};
$Bootstrap.applyCss("");
$Bootstrap.reportLoaded("widgets", "Picker");if ($Bootstrap.notLoaded('f19594fc578d22a4d0a0a698127fd552')) {
/* vim: set tabstop=4 textwidth=120: */
/**
 * @fileoverview
 * js/Webmail/Widgets/DatePicker.js
 *
 * This is a widget for the date picker object which consists of an input and image.  If the image
 * is clicked at minical will show up
 *
 * CHANGELOG
 *
 * @requires	Prototype
 * @requires	Framework
 * @requires	Global
 * @requires	Webmail.Widgets
 *
 * @author		Brian Hartsock
 *
 */


Framework.create('Webmail.Widgets.DatePicker', $Widgets.create({

	// {{{ initialize()
	/*
	 * Constructor.
	 */
	initialize: function(tabIndex) {
		Object.bindObservers(this);

		this.id = $Widgets.DatePicker._id++;
		this.draw(tabIndex);
	},
	// }}}

	// Public functions
	// {{{ draw()
	/*
	 * Draw the widget.
	 *
	 */
	draw: function(tabIndex) {

		var container = Element.createHtml([
			'<span>',
				'<input class="text date" type="text" ',
					'tabindex="'+tabIndex+'" ',
					'id="datepicker_'+this.id+'"/>',
				'<img class="datepicker" field="datepicker_'+this.id+'" ',
					'src="images/blank.gif" />',
			'</span>'].join(''));

		this.dom_input = $(container.firstChild);
		this.dom_image = $(container.lastChild);

		//Event handling
		this.dom_image.observe('click', this.evShowPicker);
		this.dom_image.observe('mousedown', this.evMousedownImage);
		this.dom_input.observe('mousedown', this.evMousedownInput);
		this.dom_input.observe('focus', this.evShowPicker);
		this.dom_input.observe('blur', 	this.evBlurInput);

		this.container = container;
	},
	// }}}
	// {{{ getValue()
	/**
	 * Returns the value in the datepicker input field
	 * @return	{String}
	 */
	getValue: function() {
		var value = this.dom_input.value;
		return value;
	},

	// }}}
	// {{{ populate()
	/*
	 * Populate the reminder widget.
	 *
	 * @param	{object}	options		Optional options object
	 */
	populate: function(options){

		//Set options
		this.options = Object.extend(
			{
				date:		null,
				form_name: 	null,
				onchange:	Prototype.emptyFunction
			}, options || {});

		//IF date is passed in, set it
		if(this.options.date){
			this.dom_input.value = $Locale.DateTime.basicDate(newDate(this.options.date));
		}

		if(this.options.form_name){
			this.dom_input.name = this.options.form_name;
		}
	},
	// }}}
	// {{{ setValue()
	/**
	 * Sets the raw value of the input field
	 * @param	{String}	date	Date to fill in
	 */
	setValue: function(date) {
		this.dom_input.value = date;
	},
	
	// }}}

	//Private functions
	// {{{ _drawPicker()
	/*
	 * Draws the minical for the input field.
	 *
	 */
	_drawPicker : function()
	{
		//Conviennce variable
		var field	= this.dom_input;
		var value	= $Locale.DateTime.americanDateFromInput(field.value);

		//Get date from field (don't allow invalid dates)
		var date	= wack.DateTime.isDate(value) ? 
							new Date(value) :
							new Date();

		// Create datepicker
		var datepicker			= new DatePicker();
		datepicker.empty_url	= 'misc/blank.html';
		datepicker.date			= date;
		datepicker.image_dir	= 'images/';
		datepicker.day_callback	= this.evSetDatePicker;
		datepicker.mousedown_callback = this.evPreventClose;

		// Draw datepicker
		var container		= datepicker.create();
		container.field		= field.id;

		//Find and set position of datepicker
		var dim = Element.getDimensions(field);
		var pos = Position.cumulativeOffset(field);

		Element.setStyle(container,
						{
						position:	'absolute',
						left:		(pos[0] + 1) + 'px',
						top:		((pos[1] + 1) + dim.height) + 'px',

						//Zindex must be greater than Dialog's zindex
						zIndex:		'5000'
						});

		return container;
	},
	// }}}
	// {{{ _showPicker()
	/*
	 * Displays the minical for the input field.
	 *
	 */
	_showPicker : function()
	{
		//Do nothing if the picker already exists
		if(this._picker){
			return;
		}

		// Create datepicker (if not already created)
		this._picker = this._drawPicker();
		Element.append(document.body, this._picker);

		//Conviennce variable
		var field = this.dom_input;
		
		var value	= $Locale.DateTime.americanDateFromInput(field.value);

		//Get date to highlight
		var date = wack.DateTime.isDate(value) ?
						new Date(value) :
						new Date();

		// Grey out date in field in datepicker (must be done after appended to DOM tree)
		// TODO - This is stupid.  Don't do this using an ID and do it when creating the
		//  minical
		$("mcday"+date.format("%Y-%m-%d")).parentNode.style.background = "#F0F0F0";

		//Setup body event handling
		Element.observe(document.body, 'click', this.evDocumentClick);
	},
	// }}}

	//Event handlers
	// {{{ evSetDatePicker()
	/*
	 * Event handler called whenever a date is picked from the date picker. This is form independent and requires a unique ID field.
	 *
	 * @param   event   e   Event that was fired (browser specific)
	 *
	 */
	evSetDatePicker: null,
	_evSetDatePicker: function(e)
	{
		Event.stop(e);
		
		//Grab link
		var link	= Event.findElement(e, 'a');

		//Set value of input to datepicker
		this.set($Locale.DateTime.basicDate(newDate(link.date)), true);
	
		//remove date picker
		this.clearPicker();
	}
	// }}}

}, $Widgets.Picker));

Webmail.Widgets.DatePicker._id = 0;
};
$Bootstrap.applyCss("");
$Bootstrap.reportLoaded("widgets", "DatePicker");if ($Bootstrap.notLoaded('fca5006eed33f8ce12c13802430a89fb')) {
// vim:ts=4:tw=100:
/**
 * Widget for displaying a single email
 *
 * TODO PERFORMANCE
 * 			- separate body to end of message so we dont have to eval it
 * 			- profile EVERYTHING

 * TODO grab structure and headers all in one call
 * TODO get prev/next from message list cache if possible
 */

Framework.register('Webmail.Widgets');

$Widgets.Email = $Widgets.create({

	/**
	 * Just something so we know its an email widget
	 */
	_is_email_widget: true,

	/**
	 * Root container element.
	 * @var	{Element}
	 */
	container: null,

	/**
	 * Options passed into the constructor (cannot change once instantiated)
	 * @var	{Object}
	 */
	config: {},

	/**
	 * Options passed into populate.. changes with each email loaded
	 * @var	{object}
	 */
	options: null,

	/**
	 * Last response to come back from the server.
	 * @var	{object}
	 */
	response: {},

	/**
	 * Container for expanding fields.  We store this so we can reuse it.
	 * @var	{Element}
	 */
	_expand_elem: null,
	_expand_active: false,

	/**
	 * Keeps track of whether or not we've resized before, so we can do certain things just the
	 * first time.
	 * @var	{bool}
	 */
	_resize_init: false,

	/**
	 * Whether or not we know if the message is read/unread (null if we don't know)
	 * @var	{bool}
	 */
	_unread: null,
	
	// {{{ initialize()
	/**
	 * Constructor.
	 */
	initialize: function(config) {
		Object.bindObservers(this);
		Object.bindCallbacks(this);

		this.config = Object.extend({
			onchange: Prototype.emptyFunction,
			view: $Widgets.Email.VIEW_PREVIEW
		}, config || {});

		this.draw();
		this.container.__widget__ = this;
		$Dispatcher.subscribe('Calendar.Events.inviteRespond', this.cbInviteResponse);
	},

	// }}}
	
	// public:
	// {{{ downloadAttachments()
	/**
	 * Downloads a zip file of all attachments for the current email
	 */
	downloadAttachments: function() {
		$Widgets.Email.zipAttachments(this.options.folder, this.options.uid, this.options.pid);
	},

	// }}}
	// {{{ draw()
	/**
	 * Standard draw function.
	 */
	draw: function() {
		var template = '';

		if (this.config.view == $Widgets.Email.VIEW_PREVIEW) {
			this.container = Element.createHtml('<div class="ReadMail"><div _ref="root" class="wm_root"><div class="header" _ref="header"><table cellspacing="2" _ref="hdr_tbl"><tr class="from"><td class="lbl"><div _ref="from_lbl">'+L('Message.L.From')+':</div></td><td class="val from"><div class="wrapper"><div class="content" _ref="from"></div><img src="images/blank.gif" _ref="from_save" class="save plus-green" /></div></td><td class="lbl" _ref="to_lbl">'+L('Message.L.To')+':</td><td class="val"><div class="wrapper" _ref="to_wrap"><div class="content" _ref="to"></div></div></td><td class="arrow"><img src="images/blank.gif" _ref="to_arrow" /></td></tr><tr><td class="lbl" _ref="subj_lbl">'+L('Message.L.Subject')+':</td><td class="val"><div class="wrapper"><div class="content" _ref="subject"></div></div></td><td class="lbl" _ref="cc_lbl">'+L('Message.L.Cc')+':</td><td class="val"><div class="wrapper" _ref="cc_wrap"><div class="content" _ref="cc"></div></div></td><td class="arrow"><img src="images/blank.gif" _ref="cc_arrow" /></td></tr><tr class="date"><td class="lbl">'+L('Message.L.Date')+':</td><td colspan="4" _ref="date"></td></tr></table><table cellspacing="2" _ref="attach_tbl"><tr class="attach" style="display:none;" _ref="attach_row"><td class="lbl" valign="top"><div _ref="attach_lbl">'+L('Message.L.Attach')+':</td></td><td class="attach"><div class="list_wrap"><div class="list" _ref="attach"></div></div><img src="images/blank.gif" class="save" _ref="attach_save" title="'+L('Email.Attach.SaveAll')+'" alt="'+L('Email.Attach.SaveAll')+'" /><div style="clear:both;"></div></td><td class="arrow"><img src="images/blank.gif" _ref="attach_arrow" title="'+L('Email.ViewAll')+'"alt="'+L('Email.ViewAll')+'" /></td></tr></table></div><div class="mtoolbar" _ref="toolbar"><div class="mtoolbar_left" _ref="toolbar_left">'+this._getToolbarHtml()+'</div></div><div class="body" _ref="body"><div class="contents" _ref="content"></div></div></div></div>');
		} else {
			this.container = Element.createHtml('<div class="ReadMail"><div _ref="root" class="wm_root"><div class="header" _ref="header"><table cellspacing="0"><tr><td width="60%" rowspan="2"><table cellspacing="2" _ref="hdr_tbl"><tr class="from"><td class="lbl" _ref="from_lbl">'+L('Message.L.From')+':</td><td class="val from"><div class="wrapper"><div class="content" _ref="from"></div><img src="images/blank.gif" class="save plus-green" _ref="from_save" /></div></td><td></td></tr><tr><td class="lbl" _ref="to_lbl">'+L('Message.L.To')+':</td><td class="val"><div class="wrapper" _ref="to_wrap"><div class="content" _ref="to"></div></div></td><td class="arrow"><img src="images/blank.gif" _ref="to_arrow" /></td></tr><tr style="display:none;" _ref="cc_row"><td class="lbl" _ref="cc_lbl">'+L('Message.L.Cc')+':</td><td class="val"><div class="wrapper" _ref="cc_wrap"><div class="content" _ref="cc"></div></div></td><td class="arrow"><img src="images/blank.gif" _ref="cc_arrow" /></td></tr><tr><td class="lbl">'+L('Message.L.Date')+':</td><td class="val"><div class="wrapper"><div class="content" _ref="date"></div></div></td><td></td></tr><tr class="subject"><td class="lbl" _ref="subj_lbl">'+L('Message.L.Subject')+':</td><td class="val"><div class="wrapper"><div class="content" _ref="subject"></div></div></td><td></td></tr><tr class="attach" style="display:none;" _ref="attach_row"><td class="lbl" _ref="attach_lbl" valign="top">'+L('Message.L.Attach')+':</td><td class="val attach"><div class="list_wrap"><div class="list" _ref="attach"></div></div><img src="images/blank.gif" class="save" _ref="attach_save" title="'+L('Email.Attach.SaveAll')+'" alt="'+L('Email.Attach.SaveAll')+'" /><div style="clear:both;"></div></td><td class="arrow"><img src="images/blank.gif" _ref="attach_arrow" title="'+L('Email.ViewAll')+'"alt="'+L('Email.ViewAll')+'" /></td></tr></table><a href="javascript:void(0);" class="back" _ref="back_link"></a></td><td height="100%" valign="top" class="right move_dropdown"><div _ref="move_dropdown"></div></td></tr><tr><td valign="bottom" class="right"><div class="nav_links"><a href="javascript:void(0);" _ref="prev_del_link">'+L('Mlist.Header.PrevAndDelete')+'</a><span class="sep">|</span><a href="javascript:void(0);" _ref="next_del_link">'+L('Mlist.Header.NextAndDelete')+'</a></div></td></tr></table></div><div class="header full_header" style="display:none;" _ref="full_header"></div><div class="mtoolbar" _ref="toolbar"><div class="mtoolbar_left" _ref="toolbar_left">'+this._getToolbarHtml()+'</div><div class="mtoolbar_right" _ref="toolbar_right"><a href="javascript:void(0);" _ref="prev_link">'+L('Read.L.Previous')+'</a><span class="sep">|</span><a href="javascript:void(0);" _ref="next_link">'+L('Read.L.Next')+'</a></div></div><div class="body" _ref="body"><div class="contents" _ref="content"></div></div></div></div>');
		}
		
		$Templates.setDom(this.container);

		//this used to be in css, but because IE6 doesnt properly
		//evaluate child selectors we set it here programatically
		//so we dont mess up html styles with Cascading
		if(wack.Browser.is_ie6) {
			this.container.dom('body').height = '100px';
		}

		// Set observes for user interaction
		this._setObservers();

		// Set classname
		this._setClassname();

		// Set up right clicks
		var dom = this.container.dom;
		$Widgets.ContextMenu.EmailContact.factory(dom('from'));
		$Widgets.ContextMenu.EmailContact.factory(dom('to'));
		$Widgets.ContextMenu.EmailContact.factory(dom('cc'));
	},
	
	// }}}
	// {{{ move()
	/**
	 * Moves the email of this widget to a different folder.
	 * @param	{string}	folder	Folder to move message to (UTF-7)
	 */
	move: function(folder) {
		$UI.showStatus();

		$MessageList.moveMessages(
			{folder:this.options.folder, id:this.options.uid},
			folder,
			this.cbMove
		);
	},
	
	// }}}
	// {{{ populate()
	/**
	 * Populates the widget with data
	 * @param	{Object}	options		(See default options in function)
	 */
	populate: function(options) {
		this.options = this.options || {};

		// Show possible options
		this.options = wack.extend({
			folder: null,
			uid: null,
			pid: null,
			callback: this.options.callback || null,
			force_plain: false,
			resize: true,
			unread: null
		}, options || {});

		// Setup other options
		var fetch_options = {};
		if (this.config.view != $Widgets.Email.VIEW_PREVIEW) {
			fetch_options['get_siblings'] = true;
		}
		if (this.options.force_plain) {
			fetch_options['force_plain'] = true;
		}

		var folder	= this.options.folder;
		var uid		= this.options.uid;
		var pid		= this.options.pid || 0;

		// Try to grab read status so we can change visually before the return
		if (this.options.unread != null) {
			this._unread = this.options.unread;
		} else {
			this._unread = $Bootstrap.getAppWindow().$MessageList.isUnread({
				folder: folder,
				id: uid
			});
		}
		if (this._unread) {
			$Bootstrap.getAppWindow().$Dispatcher.publish('Folders.status_change', folder, 0, -1);
		}

		// Let everyone know we're reading it
		$Bootstrap.getAppWindow().$Dispatcher.publish(
			'Message.change',
			folder,
			uid,
			'read',
			true
		);

		// Grab the message data
		$Message.get(folder, uid, pid, wack.extend(fetch_options, {
			callback: this.cbOpen,
			call_group: 'Message.read_'+this.config.view
		}));
	},
	
	// }}}
	// {{{ reset()
	/**
	 * Clears out all message specific data so populate can start fresh.
	 */
	reset: function() {
		var to_clear = [
			'from',
			'to',
			'subject',
			'cc',
			'body'
		];

		for (var i=0,ii=to_clear.length; i<ii; i++) {
			this.container.dom(to_clear[i]).innerHTML = '';
		}
	},

	// }}}
	// {{{ resize()
	/**
	 * Typical resize function.
	 */
	resize: function() {
		var dom = this.container.dom;

		// Shrink the body so we know its not stretching the container height
		// We hide the content so it doesn't cause scroll/stretch problems
		if (wack.Browser.is_ie) {
			Element.hide(dom('content'));
		}
		
		dom('body').style.height = '50px';
		dom('body').style.width = '50px';

		var container_height = this.container.offsetHeight;
		var container_width	 = this.container.offsetWidth;
		var header_height	 = dom('header').offsetHeight;
		var toolbar_height	 = dom('toolbar').offsetHeight || 0;

		// Don't resize if its hidden
		if (container_height <= 0) {
			return;
		}

		// Add full header height if applicable
		if (this.config.view != $Widgets.Email.VIEW_PREVIEW) {
			var full_header_height = dom('full_header').offsetHeight;
			if (full_header_height) {
				header_height += full_header_height;
			}
		}

		// Have to resize body to proper height so it can overflow
		var body_height = (container_height-header_height-toolbar_height);
		Element.setDimensions(dom('body'), { height: body_height });
		
		// IE7 doesn't like us resizing the width for some reason
		if (!wack.Browser.is_ie7) {
			Element.setDimensions(dom('body'), { width: this.container.offsetWidth });
		} else {
			dom('body').style.width = '';
		}

		// Reshow the content since everything is resized
		if (wack.Browser.is_ie) {
			Element.show(dom('content'));
		}

		// Init resize if we need to
		if (!this._resize_init) {
			this._resize_init = true;
			this._resizeInit();
		}

		// Safari and FF3 have issues with overflow on div's in table cells
		if (wack.Browser.is_safari || wack.Browser.is_ff3) {
			var left_lbl	= Math.max(dom('from_lbl').offsetWidth, dom('subj_lbl').offsetWidth);
			var right_lbl	= Math.max(dom('to_lbl').offsetWidth, dom('cc_lbl').offsetWidth);

			// Get total space for the values (with some room to spare)
			var value_width = parseInt((container_width - left_lbl - right_lbl - 100)/2);
			
			// We use parentNode because we need the content to be bigger so we know its overflowing
			Element.setDimensions(dom('from').parentNode, { width: value_width });
			Element.setDimensions(dom('subject').parentNode, { width: value_width });
			Element.setDimensions(dom('to').parentNode, { width: value_width });
			Element.setDimensions(dom('cc').parentNode, { width: value_width });
		}

		// Resize attachments (subtract 14 for padding and margin on the save icon)
		if (this.response.attach) {
			dom('attach').style.width = '10px';
			var attach_width	= dom('attach').parentNode.parentNode.offsetWidth - 18; //padding/margin
			var save_icon_width	= dom('attach_save').offsetWidth;
			if ((attach_width - save_icon_width) > 0) {
				// Only resize if it is a positive number
				dom('attach').style.width = attach_width - save_icon_width + 'px';
			}
		}

		// Check to see if we need to show expand arrows
		var to_check = {to_wrap:'to_arrow', cc_wrap:'cc_arrow', attach:'attach_arrow'};
		for (var field in to_check) {
			if (dom(field).scrollWidth > dom(field).offsetWidth) {
				dom(to_check[field]).style.visibility = 'visible';
			} else {
				dom(to_check[field]).style.visibility = '';
			}
		}
	},

	// }}}
	// {{{ sendInviteResponse()
	/**
	 * Sends an ical response to an invite (for ical emails only)
	 * @param	{string}	action	The action to send back
	 */
	sendInviteResponse: function(action) {
		if (!this.response.is_ical) {
			return;
		}
		
		// Update personal calendars if they aren't loaded
		$Data.doBatch(function() {
			REQUIRE('combo/calendar');
			// Make sure the calendar is loaded in root window.
			var root = $Bootstrap.getAppWindow();
			root.REQUIRE('js/calendar_data');
			
			// Check for personal calendars
			var personal = $Calendar.getPersonalCalendars();
		}.bind(this),
		{
			callback: function() {
				// Load the form
				var form = new $$Calendar.Forms.InviteAction();
				form.__load(
					this.options.folder,
					this.options.uid,
					action,
					this.response.event_exists,
					this.response.calendar_id
				);
			}.bind(this)
		});
	},

	// }}}
	// {{{ toggleFullHeader()
	/**
	 * Hides/Shows the full header.
	 * @param	{bool}	show	Whether or not to show the full header
	 */
	toggleFullHeader: function(show) {
		var dom			= this.container.dom;
		var full_header	= dom('full_header');
		var header		= dom('header');
		
		// Hiding
		if (!show) {
			Element.hide(full_header);
			Element.show(header);
			this.resize();
			return;
		}

		// If it hasn't been fetched yet, do so and draw
		if (full_header.innerHTML == '') {
			$UI.showStatus();
			$Data.request(
				'MessageView.getFullHeader',
				{callback: function(response) {
					$UI.clearStatus();

					if (response.exception) {
						$UI.error(L('Message.E.Header'));
						return;
					}

					var html = '<table cellspacing="0">';
					for (var i=0,ii=response.length; i<ii; i++) {
						var value = String(response[i].value);
						value = value.replace(/</g, '&lt;').replace(/>/g, '&gt;');

						html +=
							'<tr>' +
								'<td class="lbl" valign="top">' +
									response[i].label + ':</td>' +
								'<td class="val" valign="top">' +
									value + '</td>' +
							'</tr>';
					}

					html += '</table>';
					full_header.innerHTML = html;
					this.toggleFullHeader(true);

				}.bind(this)},
				this.options.folder,
				this.options.uid,
				this.options.pid
			);

			return;
		}

		Element.hide(header);
		Element.show(full_header);
		this.resize();
	},

	// }}}

	// accessors:
	// {{{ getFolder()
	/**
	 * Returns the folder of the message currently loaded.
	 * @return	{string}	Folder (UTF-7)
	 */
	getFolder: function() {
		return this.options.folder;
	},
	
	// }}}
	// {{{ getSubject()
	/**
	 * Returns the subject of the message currently loaded.
	 * @return	{string}	The subject, FALSE if no message is loaded
	 */
	getSubject: function() {
		if (this.response) {
			return this.response.subject;
		} else {
			return false;
		}
	},

	// }}}
	// {{{ getUid()
	/**
	 * Returns the uid of the message currently loaded.
	 * @return	{int}	UID
	 */
	getUid: function() {
		return this.options.uid;
	},
	
	// }}}

	// private:
	// {{{ _checkIcal()
	/**
	 * Checks to see if we need to send a request to update ical event
	 */
	_checkIcal: function() {
		if (!this.response.is_ical 
			|| (this.response.ical_type != 'reply'
					&& this.response.ical_type != 'cancel')) {
			return;
		}

		if (!this.response.event_exists) {
			return;
		}

		$Data.request(
			'MessageView.handleInviteResponse',
			{
				background: true,
				callback: function(response) {
					// If the guest was not on the original list
					if (response.unknown_guest == true) {
						REQUIRE('combo/dialogs');
						var prompt = new $DialogsPrompt(
							'', L('Calendar.F.GuestNotFoundAdd'),
							null, {cancel:false}
						);
						prompt.addButton(L('L.Yes'),
							function() {
								$Calendar.Events.syncGuestList(response.ical_str);
							}
						);
						prompt.addButton(L('L.No'), Prototype.emptyFunction);
						prompt.show();
					} else {
						if (this.response.ical_type == 'cancel') {
							$Dispatcher.publish('Calendar.Events.clearCache');
						}
					}
				}.bind(this)
			},
			this.options.folder,
			this.options.uid,
			this.response.ical_type
		);

	},

	// }}}
	// {{{ _checkReadReceipt()
	/**
	 * Checks a message to see if the sender requested a read receipt.
	 */
	_checkReadReceipt: function() {
		// Only show the read receipt if its not send/draft/spam
		var folder = this.options.folder;
		if ($FolderList.isDraft(folder) || $FolderList.isSent(folder) || $FolderList.isSpam(folder)) {
			return;
		}
		
		if (this.response.read_receipt) {
			var send_response = false;
			if (confirm(L('Read.C.ReadReceipt'))) {
				send_response = true;
			}

			$Data.request(
				'MessageView.markReadReceipt',
				{background:true},
				this.options.folder,
				this.options.uid,
				send_response
			);

			this.response.read_receipt = false;
		}
	},

	// }}}
	// {{{ _getToolbarHtml()
	/**
	 * Helper function to generate html for the reply/forward toolbar
	 * @return	{string}
	 */
	_getToolbarHtml: function() {
		// Toolbar items
		this._toolbar_items = {
			reply: L('Message.Link.Reply'),
			reply_all: L('Message.Link.ReplyAll'),
			forward: L('Message.Link.Forward'),
			del: L('Message.Link.Delete'),
			notspam: L('Message.Link.NotSpam'),
			spam: L('Message.Link.Spam'),
			resume: L('Message.Link.Resume'),
			resend: L('Message.Link.ReSend'),
			print: L('Webmail.L.Print')
		};

		var toolbar_html = '';
		for (var item in this._toolbar_items) {
			toolbar_html +=
				'<a href="javascript:void(0);" class="'+item+'">'+this._toolbar_items[item]+'</a>';
		}

		return toolbar_html;
	},
	
	// }}}
	// {{{ _makeAddressList()
	/**
	 * Generates a list of address for display.
	 * @param	{Array}		addresses	Array of addresses
	 * @return	{string}	HTML to show
	 */
	_makeAddressList: function(addresses) {
		var links = [];
		for (var i=0,ii=addresses.length; i<ii; i++) {
			var addr	= addresses[i];
			var name	= (addr.name || '').replace(/ /g, '&nbsp;');
			var email	= (addr.email || '');

			var display	= name || email;
			email = email.addSlashes();
			email = escape(email);

			if (name || email) {
				if (email) {
					links.push(
						'<a href="javascript:void(0);" ' +
							'class="Read_address_link" alt="'+email+'" title="'+email+'" ' +
							'_email_contact="true" _name="'+name+'" _email="'+email+'" ' +
							'onclick=\'$Widgets.Email.evAddressClick("'+email+'");\'>'+display+'</a>'
					);
				} else {
					links.push(display);
				}
			}
		}

		var html = links.join(', ');
		return html;
	},

	// }}}
	// {{{ _openSibling()
	/**
	 * Loads a sibling of the current message.
	 * @param	{string}	sibling		"prev" or "next"
	 */
	_openSibling: function(sibling) {
		$UI.showStatus();
		$Data.request(
			'MessageView.getSibling',
			{
				callback: function(response) {
					$UI.clearStatus();

					// Means there is no sibling
					if (response == -100) {
						this.container.dom(sibling+'_del_link').className =
						this.container.dom(sibling+'_link').className = 'disabled';
					} else {
						this.options.uid = response.uid;
						this.cbOpen(response);
					}
				}.bind(this),
				call_group: 'Message.read_'+this.config.view
			},
			this.options.folder,
			this.options.uid,
			sibling
		);
	},
	
	// }}}
	// {{{ _populateAttachments()
	/**
	 * Helper function for populating attachment data.
	 */
	_populateAttachments: function() {
		var dom = this.container.dom;

		if (this.response.attach) {
			var attach_html = '';

			// Get any existing links that were drawn
			var spans		= dom('attach').getElementsByTagName('span');
			var num_spans	= spans.length;

			for (var i=0,ii=this.response.attach.length; i<ii; i++) {
				var att		= this.response.attach[i];
				var link	= '';

				if (typeof(att.tid) == 'undefined') {
					att.tid = -1;
				}

				// Figure out link properties
				var url, onclick;
				if (att.is_email) {
					var params = {
						folder: this.options.folder,
						uid: this.options.uid,
						pid: att.pid
					};
					url		= "javascript:void(0);";
					onclick	= "$$Message.popup("+JSON.stringify(params)+");";
				} else {
					onclick	= "";
					url = Webmail.getBaseUri() + 'p/message/download.php?mailbox='+this.options.folder.urlEncode()+
							'&uid='+this.options.uid+'&pid='+att.pid+'&tnefid='+att.tid+ 
							'&'+CFG_SESSION_NAME+'='+Webmail.getSessionId();
				}

				// So it doesn't wrap
				att.name = att.name.replace(' ', '&nbsp;');
				var display = att.name + '&nbsp;(' + att.size + ')';

				var link_html = '<a href="'+url+'" onclick=\''+onclick+'\'>'+display+'</a>';

				// In IE the first attachment link goes over the background image and i
				// (mike) could not find any CSS workarounds.
				var image_hack = '';
				if (i == 0 && wack.Browser.is_ie) {
					image_hack = '<img src="images/blank.gif" width="0" />';
				}

				// Reuse or make a new one
				if (spans[i]) {
					var span = spans[i];
					span.innerHTML = image_hack + link_html;

					Element.show(spans[i]);
				} else {
					dom('attach').innerHTML +=
						'<span class="ReadMail_attach_item">' + image_hack + link_html + '</span>  ';
				}
			}

			// Hide any extra links
			if (num_spans > this.response.attach.length) {
				for (var i=this.response.attach.length; i<num_spans; i++) {
					Element.hide(spans[i]);
				}
			}

			Element.show(dom('attach_row'));
		} else {
			Element.hide(dom('attach_row'));
		}
			

	},

	// }}}
	// {{{ _resizeInit()
	/**
	 * Resize helper function that is called only on the first resize.
	 * This is used for some layout tricks we have to do to get around browser compat issues.
	 */
	_resizeInit: function() {
		// This only needs to be called for preview pane
		if (this.config.view != $Widgets.Email.VIEW_PREVIEW) {
			return;
		}
		
		var dom = this.container.dom;

		// We need to figure out how big to make the left label columns since they're in different
		// tables
		var from_width		= dom('from_lbl').offsetWidth;
		var attach_width	= dom('attach_lbl').offsetWidth;

		// Expand from (subject will follow) if its smaller
		if (from_width < attach_width) {
			dom('from_lbl').style.width = attach_width + 'px';
		} else {
			dom('attach_lbl').style.width = from_width + 'px';
		}
	},

	// }}}
	// {{{ _setClassname()
	/**
	 * Generates the proper classname for the container so we can control appearance via CSS easily.
	 */
	_setClassname: function() {
		var class_name = 'wm_root ';

		// Set based on view type
		if (this.config.view == $Widgets.Email.VIEW_POPUP) {
			class_name += 'view_popup';
		} else if (this.config.view == $Widgets.Email.VIEW_FULL) {
			class_name += 'view_full';
		} else {
			class_name += 'view_preview';
		}

		// Only do the rest if we have options
		if (this.options) {
			// If popup attachment
			if (this.options.pid) {
				class_name += ' attachment';
			}
			
			// Set anything folder/message specific
			if ($FolderList.isSent(this.options.folder)) {
				class_name += ' sent';
			} else if ($FolderList.isDraft(this.options.folder)) {
				class_name += ' draft';
			} else if ($FolderList.isSpam(this.options.folder)) {
				class_name += ' spam';
			}

			// Check for ical
			if (this.response.is_ical) {
				class_name += ' invite';
			}
		}

		this.container.dom('root').className = class_name;
	},

	// }}}
	// {{{ _setFolderDropdown()
	/**
	 * Fills in the options for the folder dropdown.
	 */
	_setFolderDropdown: function() {
		// Figure out options to pass when we get folders
		var folder_opts = {
			include_special: true
		};

		// We have to fill in a div like this because IE is awful
		// (http://support.microsoft.com/kb/276228)
		this.container.dom('move_dropdown').innerHTML =
			'<select onchange="$Widgets.Email.evMoveChange(this);">' +
				'<option value="">'+L('Mlist.Action.Move')+'</option>' +
				'<option value="">--------------------</option>' +
				$FolderList.getDropdownOptions(folder_opts) +
			'</select>';
	},
	
	// }}}
	// {{{ _setObservers() 
	/**
	 * Helper function that sets observers for all the elements in the widget.
	 */
	_setObservers: function() {
		var dom = this.container.dom;

		// Setup clicking arrows to expand stuff
		dom('to_arrow')._field = dom('to');
		dom('cc_arrow')._field = dom('cc');
		dom('attach_arrow')._field = dom('attach');
		dom('attach_arrow')._wrapper = dom('attach');
		Event.observe(dom('to_arrow'), 'click', this.evExpandField);
		Event.observe(dom('cc_arrow'), 'click', this.evExpandField);
		Event.observe(dom('attach_arrow'), 'click', this.evExpandField);

		// Save icon
		Event.observe(dom('from_save'), 'click', this.evSaveContact);

		// Download attachments
		Event.observe(dom('attach_save'), 'click', this.evSaveAttachments);

		// Clicking for the toolbar links
		var toolbar_funcs = {
			reply: this.evComposeLink,
			reply_all: this.evComposeLink,
			forward: this.evComposeLink,
			del: this.evDeleteClick,
			notspam: this.evReportNotSpam,
			spam: this.evReportSpam,
			resume: this.evComposeLink,
			resend: this.evComposeLink,
			print: this.evPrint
		};
		var links = dom('toolbar_left').getElementsByTagName('a');
		for (var i=0,ii=links.length; i<ii; i++) {
			Event.observe(links[i], 'click', toolbar_funcs[links[i].className]);
		}

		// Nav links
		if (this.config.view != $Widgets.Email.VIEW_PREVIEW) {
			// Prev/Next links
			Event.observe(dom('prev_link'), 'click', this.evPrevClick);
			Event.observe(dom('next_link'), 'click', this.evNextClick);
			Event.observe(dom('prev_del_link'), 'click', this.evPrevDeleteClick);
			Event.observe(dom('next_del_link'), 'click', this.evNextDeleteClick);

			// Back link
			Event.observe(dom('back_link'), 'click', this.evBack);
		}
	},

	// }}}
	// {{{ _showLoadOption()
	/**
	 * Shows the option to load plain text if the html message could not be loaded
	 */
	_showLoadOption: function(response) {
		REQUIRE('combo/dialogs');

		this._load_option_prompt = new $DialogsPrompt(
			L('Message.Option.Title'),
			L('Message.Option.Description'),
			null,
			{cancel: false}
		);

		this._load_option_prompt.addButton(L('L.Yes'), function() {
			this.options.force_plain = true;
			this.populate(this.options);
		}.bind(this));

		this._load_option_prompt.addButton(L('L.No'), function() {
			this.options.callback(response);
		}.bind(this));

		this._load_option_prompt.show();
	},

	// }}}

	// callbacks:
	// {{{ cbDelete()
	/**
	 * Called when delete is finished
	 */
	cbDelete: null,
	_cbDelete: function(response) {
		$Bootstrap.getAppWindow().$UI.clearStatus();
	},
	// }}}
	// {{{ cbInviteResponse()
    _cbInviteResponse: null,
    cbInviteResponse: function(trash, folder, id) {
		if (!folder || !id) {
			return;
		}
		
		//only delete if they have the setting and
		//its not in the trash folder
        if($Settings.deleteInviteAfterAction() && !$FolderList.isTrash(folder)) {
            $MessageList.deleteMessages(
                {
                    folder: folder,
                    id:     id,
                    unread: false
                },
                this.cbDelete,
                false
            );
        }
    },
	// }}}
	// {{{ cbMove()
	/**
	 * Called when move is finished
	 */
	cbMove: null,
	_cbMove: function(response) {
		$UI.clearStatus();
	},

	// }}}
	// {{{ cbOpen()
	/**
	 * Callback for reading a message
	 */
	cbOpen: null,
	_cbOpen: function(response) {
		if (response.exception) {
			// HTML message was too big, offer plain text version
			if (response.code == Message_TOO_LARGE_HTML) {
				this._showLoadOption(response);
				return;
			}

			$UI.error(L('Message.NotAvailable'));
		} else {
			$UI.clearStatus();
			if (response.uid != this.options.uid || response.folder != this.options.folder) {
				// this isn't the message we want.
				return;
			}

			if (!this.options.force_plain && !this.options.pid && !response._from_cache) {
				$MessageCache.addToCache(this.options.folder, this.options.uid, response);
			}
			this.response = response;
			var dom = this.container.dom;

			// Apply proper classname
			this._setClassname();

			// Easy fill in
			dom('from').innerHTML		= this._makeAddressList([response.from]);
			dom('to').innerHTML			= this._makeAddressList(response.to);
			dom('cc').innerHTML			= this._makeAddressList(response.cc);
			dom('subject').innerHTML	= response.subject;
			dom('date').innerHTML		= response.date;
			dom('content').style.display = 'none';
			dom('content').innerHTML	= response.body;
			Function.release(function() {
				dom('content').style.display = '';
			});
			dom('full_header').innerHTML = '';

			// Do the back link
			if (this.config.view == $Widgets.Email.VIEW_FULL) {
				if ($Controller._last_module_key == 'Search') {
					dom('back_link').innerHTML = '< ' + L('Message.Link.Back', L('Search.L.Search'));
				} else {
					dom('back_link').innerHTML = '< ' + 
						L('Message.Link.Back', $FolderList.getName(this.options.folder));
				}
			}

			// Attachments
			this._populateAttachments();

			// Setup prev/next links display
			if (this.config.view != $Widgets.Email.VIEW_PREVIEW) {
				dom('prev_del_link').className =
				dom('next_del_link').className =
				dom('prev_link').className =
				dom('next_link').className = '';

				// Find the message to try and get its siblings
				this._guess_siblings = false;
				if (typeof this.response.prev_uid == 'undefined') {
					var msg_row = $Bootstrap.getAppWindow().$$MessageList.findMessage(this.options.folder, this.options.uid);
					if (msg_row && msg_row.obj) {
						var prev_row = msg_row.obj.previous();
						if (prev_row) {
							var prev_msg = prev_row.obj;
							this.response.prev_uid = prev_msg.id();
						}
						
						var next_row = msg_row.obj.next();
						if (next_row) {
							var next_msg = next_row.obj;
							this.response.next_uid = next_msg.id();
						}
					} else {
						this._guess_siblings = true;
					}
				}

				// If no previous message, disable
				if (!this.response.prev_uid && !this._guess_siblings) {
					dom('prev_del_link').className =
					dom('prev_link').className = 'disabled';
				}

				// If no next message, disable
				if (!this.response.next_uid && !this._guess_siblings) {
					dom('next_del_link').className =
					dom('next_link').className = 'disabled';
				}
			}
		
			// Check for read receipt
			this._checkReadReceipt();

			// Check for ical action required
			if ($Preload['Calendar.enabled'] !== false) {
				this._checkIcal();
			}

			// If full view, and no cc, hide the row
			if (this.config.view != $Widgets.Email.VIEW_PREVIEW) {
				if (response.cc) {
					Element.show(dom('cc_row'));
				} else {
					Element.hide(dom('cc_row'));
				}
			}

			// Set folder dropdown
			if (this.config.view != $Widgets.Email.VIEW_PREVIEW) {
				this._setFolderDropdown();
			}

			// Mark as unread
			this.options.unread = false;
			this.config.onchange();

			if (dom('full_header') && dom('full_header').style.display == '') {
				// full header is already open, it should be populated
				$UI.showStatus();
				this.toggleFullHeader(true);
			}
		}

		if (this.options.callback) {
			this.options.callback(response);
		}
	},

	// }}}
	// {{{ cbReportNotSpam()
	/**
	 * Called when reporting false positives completes.
	 */
	cbReportNotSpam: null,
	_cbReportNotSpam: function(response) {
		$UI.clearStatus();
	},
	
	// }}}
	// {{{ cbReportSpam()
	/**
	 * Called when report spam is finished
	 */
	cbReportSpam: null,
	_cbReportSpam: function(response) {
		$UI.clearStatus();
	},
	
	// }}}

	// events:
	// {{{ evBack()
	/**
	 * Used only in full view for the back link
	 */
	evBack: null,
	_evBack: function(e) {
		$Controller.backModule();
	},
	
	// }}}
	// {{{ evComposeLink()
	/**
	 * Handler called when a "compose" type link from the toolbar is clicked
	 */
	evComposeLink: null,
	_evComposeLink: function(e) {
		var link = Event.findElement(e, 'a');
		var action_map = {
			reply: wm_Compose_REPLY,
			reply_all: wm_Compose_REPLY_ALL,
			forward: wm_Compose_FORWARD,
			resume: wm_Compose_RESUME_DRAFT,
			resend: wm_Compose_RESEND
		};
		$Dispatcher.compose(null, action_map[link.className], this.options.uid, this.options.folder);
	},

	// }}}
	// {{{ evDeleteClick()
	/**
	 * Called when the delete link in the toolbar is clicked
	 */
	evDeleteClick: null,
	_evDeleteClick: function(e) {
		$UI.showStatus();
		
		$MessageList.deleteMessages(
			{
				folder:	this.options.folder,
				id:		this.options.uid,
				unread:	this.options.unread || $Bootstrap.getAppWindow().$MessageList.isUnread({
					folder:	this.options.folder,
					id:		this.options.uid
				})
			},
			this.cbDelete,
			false
		);
	},

	// }}}
	// {{{ evExpandField()
	evExpandField: null,
	_evExpandField: function(e) {
		// Create expand container if it doesn't exist
		if (this._expand_elem == null) {
			this._expand_elem = Element.create('div');
			this._expand_elem.className = 'ReadMail_field_expand';
			this._expand_elem.style.display = 'none';
			this.container.append(this._expand_elem);

			$Widgets.ContextMenu.EmailContact.factory(this._expand_elem);
		} else if (this._expand_active) {
			this.evHideExpandedField();
		}

		var arrow	= Event.element(e);
		var field	= arrow._field;
		var wrapper	= arrow._wrapper || field;

		// Fill in contents
		this._expand_elem._arrow = arrow;
		this._expand_elem.innerHTML = field.innerHTML;

		// Figure out where it should float
		var top_offset = (arrow._wrapper ? 0 : 4);
		var cont_offset	= Position.positionedOffset(this.container);
		var offset		= Position.positionedOffset(wrapper);
		this._expand_elem.style.left	= offset[0] - 1 + 'px';
		this._expand_elem.style.top		= offset[1] - top_offset + cont_offset[1] + 'px';

		// We want it to stretch over the field
		if (arrow._wrapper) {
			Element.setDimensions(this._expand_elem, { width: wrapper.offsetWidth - 9});
			arrow.style.visibility = '';
		} else {
			var arrow_offset = Position.positionedOffset(arrow);
			Element.setDimensions(this._expand_elem, { width: (arrow_offset[0] + arrow.offsetWidth) - 
												offset[0] });
		}
		
		// Show the hover
		this._expand_elem.style.display = '';
		
		this._expand_active = true;
		Event.observe(document, 'click', this.evHideExpandedField);

		Event.stop(e);
	},
	
	// }}}
	// {{{ evHideExpandedField()
	/**
	 * Hides any expanded fields when the document is clicked
	 */
	evHideExpandedField: null,
	_evHideExpandedField: function(e) {
		if (!this._expand_active) {
			return;
		}
		
		this._expand_elem._arrow.style.visibility = 'visible';

		this._expand_active = false;
		this._expand_elem.style.display = 'none';
		Event.stopObserving(document, 'click', this.evHideExpandedField);
	},

	// }}}
	// {{{ evNextClick()
	/**
	 * When the "Next" link is clicked in the header
	 */
	evNextClick: null,
	_evNextClick: function(e) {
		// See if we need to guess
		if (this._guess_siblings) {
			this._openSibling('next');
			return;
		}

		// Stop if there is no next message
		if (!this.response.next_uid) {
			return;
		}
		
		// Populate
		$UI.showStatus();
		this.populate({
			folder: this.options.folder,
			uid: this.response.next_uid
		});
	},

	// }}}
	// {{{ evNextDeleteClick()
	/**
	 * Click when "next & delete" is clicked.
	 */
	evNextDeleteClick: null,
	_evNextDeleteClick: function(e) {
		// If no previous email, stop
		if (!this.response.next_uid) {
			return;
		}

		var message = {folder:this.options.folder, id:this.options.uid};

		$UI.showStatus();
		$MessageList.deleteMessages(
			message,
			function(response) {
				if (this.response.next_uid) {
					// Populate
					this.populate({
						folder: this.options.folder,
						uid: this.response.next_uid
					});
				}
				
				var destination = ($Settings.isDeletePermanent() ? null : CFG_FOLDER_TRASH);
				$Bootstrap.getAppWindow().$Dispatcher.publish('Message.move', [message], destination);
			}.bind(this),
			false,
			true
		);
	},

	// }}}
	// {{{ evPrevClick()
	/**
	 * When the "Prev" link is clicked in the header
	 */
	evPrevClick: null,
	_evPrevClick: function(e) {
		// See if we need to guess
		if (this._guess_siblings) {
			this._openSibling('prev');
			return;
		}

		// Stop if there is no previous message
		if (!this.response.prev_uid) {
			return;
		}
		
		// Populate
		$UI.showStatus();
		this.populate({
			folder: this.options.folder,
			uid: this.response.prev_uid
		});
	},

	// }}}
	// {{{ evPrevDeleteClick()
	/**
	 * Click when "previous & delete" is clicked.
	 */
	evPrevDeleteClick: null,
	_evPrevDeleteClick: function(e) {
		// If no previous email, stop
		if (!this.response.prev_uid && !this._guess_siblings) {
			return;
		}

		var message = {folder:this.options.folder, id:this.options.uid};

		$UI.showStatus();
		$MessageList.deleteMessages(
			message,
			function(response) {
				if (this.response.prev_uid) {
					// Populate
					this.populate({
						folder: this.options.folder,
						uid: this.response.prev_uid
					});
				}

				var destination = ($Settings.isDeletePermanent() ? null : CFG_FOLDER_TRASH);
				$Bootstrap.getAppWindow().$Dispatcher.publish('Message.move', [message], destination);
			}.bind(this),
			false,
			true
		);
	},

	// }}}
	// {{{ evPrint()
	/**
	 * Called when print link in the toolbar is clicked
	 */
	evPrint: null,
	_evPrint: function(e) {
		window.print();
	},

	// }}}
	// {{{ evReportNotSpam() 
	/**
	 * Called when the "Not Spam" link in the toolbar is clicked.
	 */
	evReportNotSpam: null,
	_evReportNotSpam: function(e) {
		$UI.showStatus();
		$MessageList.reportNotSpam(
			{folder: this.options.folder, id:this.options.uid},
			this.cbReportNotSpam
		);
	},

	// }}}
	// {{{ evReportSpam()
	/**
	 * Called when blacklist link from the toolbar is clicked
	 */
	evReportSpam: null,
	_evReportSpam: function(e) {
	// Show confirm prompt
		if (!confirm(L('Mlist.C.ReportSpam'))) {
			return;
		}
		
		$UI.showStatus();
		$MessageList.reportSpam(
			{folder: this.options.folder, id: this.options.uid},
			this.cbReportSpam
		);
	},
	
	// }}}
	// {{{ evSaveAttachments()
	/**
	 * Handler for the save icon for saving all attachments
	 */
	evSaveAttachments: null,
	_evSaveAttachments: function(e) {
		this.downloadAttachments();
	},

	// }}}
	// {{{ evSaveContact()
	/**
	 * Saves the from address as a contact
	 */
	evSaveContact: null,
	_evSaveContact: function(e) {
		REQUIRE('combo/contacts');

		var value	= this.response.from;
		var name	= new $Contacts.Name();
		var email	= value.email;

		name.parse(value.name);

		var add_form = new $$Contacts.AddContactDialog({
			standard: {
				email:			email,
				name_title:		name.getTitle(),
				firstname:		name.getFirstName(),
				middlename:		name.getMiddleName(),
				lastname:		name.getLastName(),
				name_suffix:	name.getSuffix()
			},
			custom: false
		});

		// Error Listener
		add_form.addErrorListener(function(msg) {
			$$Contacts._onError(msg, function() {
				add_form.enableDialog(true);
			});
			add_form.enableDialog(false);
		}.bind(this));
		
		add_form.show();
	}
	
	// }}}

});

// View constants
$Widgets.Email.VIEW_PREVIEW	= 1;
$Widgets.Email.VIEW_FULL	= 2;
$Widgets.Email.VIEW_POPUP	= 4;

// Static functions
// {{{ evAddressClick()
/**
 * Handler for when an address is clicked in the message header
 * @param	{string}	email	Email that was clicked
 */
$Widgets.Email.evAddressClick = function(email) {
	/*we recieve an ecnoded email, we decode it here so 
	* it shows up correctly in the compose Display 
	*/
	email = unescape(email);
	$Dispatcher.compose(null, null, null, null, email);
}

// }}}
// {{{ evDateLink()
/**
 * Handler for clicking dates automatically parsed when reading a message.
 */
$Widgets.Email.evDateLink = function(date, time) {
	$UI.load(function() {
		//Load the event form dependencies		
		REQUIRE('combo/calendar_eventform');
		
		//Show a new event form for the date clicked
		$$EventForm.showNew($Calendar.getPersonalCalendars()[0], date, time);
	});
};

// }}}
// {{{ evInviteResponse()
/**
 * Handler for links on an ical email
 * @param	{Element}	link	Link that was clicked
 */
$Widgets.Email.evInviteResponse = function(link) {
	var action = link.className;

	// Loop up until we find the email widget
	var elem = link;
	while (elem != document.body && elem.className != 'ReadMail') {
		elem = elem.parentNode;
	}

	if (elem == document.body) {
		return;
	}
	$W(elem).sendInviteResponse(action);
}

// }}}
// {{{ evMoveChange()
/**
 * Moves the given message.
 * @param	{Element}	select	Dropdown that was changed
 */
$Widgets.Email.evMoveChange = function(select) {
	// Find the parent container so we can get the widget
	var elem = select;
	while (elem != document.body && !elem.__widget__) {
		elem = elem.parentNode;
	}

	if (elem != document.body) {
		$W(elem).move(select.value);
	}

	select.selectedIndex = 0;
}

// }}}
// {{{ evMoveToAnchor()
/**
 * This will scroll the body to an anchor found within the email
 * @param	{Element}	link	The link that was clicked
 */
$Widgets.Email.evMoveToAnchor = function(link) {
	// Find the root container so we can get the widget
	var container;
	var elem = link;
	while (elem && elem != document.body) {
		elem = elem.parentNode;
		if (elem.__widget__ && elem.__widget__._is_email_widget) {
			container = elem;
			break;
		}
	}

	if (!container) {
		return;
	}

	var widget	= $W(container);
	var anchor	= link.getAttribute('_anchor').substr(1);
	var body	= container.dom('body');

	var links = body.getElementsByTagName('a');
	for (var i=0,ii=links.length; i<ii; i++) {
		if (links[i].name == anchor && !links[i].href) {
			var link_top	= Position.cumulativeOffset(links[i])[1];
			var body_top	= Position.cumulativeOffset(body)[1];

			body.scrollTop = (link_top - body_top);
			break;
		}
	}
}

// }}}
// {{{ zipAttachments()
/**
 * Downloads a zip file of all attachments for a message
 * @param	{string}	folder	Folder message is in (UTF-7)
 * @param	{int}		uid		UID of the message
 * @param	{int}		pid		PID of the message (for zipping attachments from email attachments)
 */
$Widgets.Email.zipAttachments = function(folder, uid, pid) {
	var hidden_style = 'height:0;width:0;margin:0;border:0;';

	// If there is no iframe, make one to post to
	if (!$Widgets.Email._zip_iframe) {
		$Widgets.Email._zip_iframe = Element.createHtml(
			'<iframe style="'+hidden_style+'" name="ReadMail_zip"></iframe>'
		);

		Element.append(document.body, $Widgets.Email._zip_iframe);
	}

	// If there is no form, make one to do the post
	if (!$Widgets.Email._zip_form) {
		var sid = Webmail.getSessionId();

		$Widgets.Email._zip_form = Element.createHtml([
			'<form style="'+hidden_style+'" action="p/message/zip_attachments.php" ',
				'method="post" target="ReadMail_zip">',
				'<input type="hidden" name="',CFG_SESSION_NAME,'" value="',sid,'" />',
				'<input type="hidden" name="folder" />',
				'<input type="hidden" name="uid" />',
				'<input type="hidden" name="pid" />',
			'</form>'
		].join(''));
		
		Element.append(document.body, $Widgets.Email._zip_form);
	}

	var form = $Widgets.Email._zip_form;
	form.folder.value	= folder;
	form.uid.value		= uid;
	form.pid.value		= pid;
	form.submit();
}

// }}}
};
$Bootstrap.applyCss("div.ReadMail{height:100%;}div.ReadMail div.header{background:"+wcv__shading_light+";border-bottom:1px solid "+wcv__shading_medium+";padding:6px 10px 6px 10px;position:relative;}div.ReadMail div.header td.val a{color:"+wcv__right_fgColor+"!important;text-decoration:none!important;}div.ReadMail div.header td.val a:hover{color:"+wcv__right_linkHoverColor+"!important;text-decoration:underline!important;}div.ReadMail div.view_preview div.header{padding-right:20px;}div.ReadMail div.header table{width:100%;}div.ReadMail div.header td.lbl{font-weight:bold;text-align:right;white-space:nowrap;}div.ReadMail div.view_preview div.header td.val{width:50%;}div.ReadMail div.view_full div.header td.val,div.ReadMail div.view_popup div.header td.val{width:100%;}div.ReadMail div.header td.val div.wrapper{margin:0;overflow:hidden;white-space:nowrap;width:100%;}div.ReadMail div.header td.val div.wrapper div.content{float:left;}div.ReadMail div.header td.arrow img{background-image: url('"+wcv__image_url+"sprites\/email.2.png');background-repeat: no-repeat;background-position: 0px -1225px;cursor:pointer;visibility:hidden;height:9px;width:9px;}div.ReadMail div.header tr.from td.from img{cursor:pointer;margin:0 0 0 6px;}div.ReadMail div.feed div.header tr.from td.val img,div.ReadMail div.sent div.header tr.from td.val img{display:none;}div.ReadMail div.header td.right{padding:0;text-align:right;}@media screen{div.ReadMail div.view_preview div.header tr.date{display:none;}div.ReadMail div.view_full div.header tr.subject{display:none;}}div.ReadMail div.attachment div.nav_links,div.ReadMail div.attachment td.move_dropdown select{display:none;}div.ReadMail div.header tr.attach td{padding:2px 0 0 0;}@media screen{div.ReadMail div.header tr.attach td.lbl{padding:7px 0 0 0;}}@media screen{div.ReadMail div.header td.attach{width:100%;}}div.ReadMail div.header td.attach img.save{background-image: url('"+wcv__image_url+"sprites\/email.2.png');background-repeat: no-repeat;background-position: 0px -1125px;cursor:pointer;height:11px;margin:6px 4px 0 4px;width:11px;}@media screen{div.ReadMail div.header td.attach div.list{background:#FFF;border:1px solid "+wcv__shading_medium+";float:left;height:16px;overflow:hidden;padding:4px 2px 2px 6px;white-space:nowrap;width:10px;}}span.ReadMail_attach_item{background-image: url('"+wcv__image_url+"sprites\/email.2.png');background-repeat: no-repeat;background-position: 0px -1025px;margin:0 12px 0 0;white-space:nowrap;}span.ReadMail_attach_item a{margin:0 0 0 13px;}div.ReadMail div.view_popup div.header a.back{display:none;}div.ReadMail_field_expand{background-color:#FFF;border:1px solid "+wcv__shading_medium+";left:0;line-height:1.7;max-height:100px;overflow:auto;padding:4px;position:absolute;top:0;white-space:normal;}div.ReadMail_field_expand a{color:"+wcv__right_fgColor+"!important;text-decoration:none!important;}div.ReadMail_field_expand a:hover{color:"+wcv__right_linkHoverColor+"!important;text-decoration:underline!important;}div.ReadMail div.full_header{max-height:300px;overflow:auto;}div.ReadMail div.full_header table{width:auto!important;}div.ReadMail div.mtoolbar{background:#FFF;border-bottom:1px solid "+wcv__shading_medium+";float:left;height:1.0em;overflow:hidden;padding:4px 0 7px 0;white-space:nowrap;width:100%;}div.ReadMail div.mtoolbar_left{float:left;padding:0 0 0 12px;}div.ReadMail div.mtoolbar_right{float:right;}div.ReadMail div.mtoolbar a{background-repeat:no-repeat;border-right:1px solid "+wcv__shading_light+";margin:0 4px;padding:0 6px 0 13px;}div.ReadMail div.mtoolbar_right a{border:0;margin:0;padding:0;}div.ReadMail div.mtoolbar a.reply{background-image: url('"+wcv__image_url+"sprites\/email.2.png');background-repeat: no-repeat;background-position: 0px -823px;}div.ReadMail div.mtoolbar a.reply_all{background-image: url('"+wcv__image_url+"sprites\/email.2.png');background-repeat: no-repeat;background-position: 0px -849px;}div.ReadMail div.mtoolbar a.forward{background-image: url('"+wcv__image_url+"sprites\/email.2.png');background-repeat: no-repeat;background-position: 0px -873px;}div.ReadMail div.mtoolbar a.del{background-image: url('"+wcv__image_url+"sprites\/email.2.png');background-repeat: no-repeat;background-position: 0px -899px;}div.ReadMail div.mtoolbar a.spam{background-image: url('"+wcv__image_url+"sprites\/email.2.png');background-repeat: no-repeat;background-position: 0px -948px;}div.ReadMail div.mtoolbar a.notspam{background-image: url('"+wcv__image_url+"sprites\/email.2.png');background-repeat: no-repeat;background-position: 0px -924px;display:none;}div.ReadMail div.mtoolbar a.resume{background-image: url('"+wcv__image_url+"sprites\/email.2.png');background-repeat: no-repeat;background-position: 0px -1248px;display:none;}div.ReadMail div.mtoolbar a.resend{background-image: url('"+wcv__image_url+"sprites\/email.2.png');background-repeat: no-repeat;background-position: 0px -973px;display:none;}div.ReadMail div.mtoolbar a.print{background-image: url('"+wcv__image_url+"sprites\/email.2.png');background-repeat: no-repeat;background-position: 0px -1000px;border:0!important;padding-left:21px;}div.ReadMail div.draft div.mtoolbar a.resume{display:inline!important;;}div.ReadMail div.sent div.mtoolbar a.resend{display:inline!important;}div.ReadMail div.feed div.mtoolbar a.reply,div.ReadMail div.feed div.mtoolbar a.reply_all,div.ReadMail div.feed div.mtoolbar a.notspam,div.ReadMail div.feed div.mtoolbar a.spam{display:none!important;}div.ReadMail div.invite div.mtoolbar a.notspam,div.ReadMail div.invite div.mtoolbar a.spam{display:none!important;}div.ReadMail div.spam div.mtoolbar a.spam{display:none!important;}div.ReadMail div.spam div.mtoolbar a.notspam{display:inline!important;}div.ReadMail div.view_popup div.mtoolbar a.print{display:none;}div.ReadMail div.view_popup div.mtoolbar a.spam{border:0;}div.ReadMail div.attachment div.mtoolbar{display:none;}div.ReadMail div.view_popup div.mtoolbar div.mtoolbar_right,div.ReadMail div.view_full div.mtoolbar div.mtoolbar_right{padding:0 10px 0 0;}div.ReadMail a.disabled,div.ReadMail a.disabled:hover{color:"+wcv__left_fgColor+"!important;cursor:text;text-decoration:none!important;}@media screen{div.ReadMail div.wm_root div.body{float:left;}div.ReadMail div.wm_root>div.body{height:100px;overflow:auto;}}div.ReadMail div.body div.contents{font-size:9pt;padding:10px 0 14px 20px;}div.ReadMail div.body div.contents span{}@media screen{div.ReadMail div.body{position:relative;}div.ReadMail div.body div.contents{margin-right:30px;}}div.ReadMail_invite a.accept{background-image: url('"+wcv__image_url+"sprites\/email.2.png');background-repeat: no-repeat;background-position: 0px -1150px;border-right:1px solid "+wcv__shading_light+";font-size:8pt;padding:0 10px 0 17px;}div.ReadMail_invite a.decline{background-image: url('"+wcv__image_url+"sprites\/email.2.png');background-repeat: no-repeat;background-position: 0px -1175px;border-right:1px solid "+wcv__shading_light+";font-size:8pt;margin:0 0 0 10px;padding:0 10px 0 16px;}div.ReadMail_invite a.tentative{background-image: url('"+wcv__image_url+"sprites\/email.2.png');background-repeat: no-repeat;background-position: 0px -1200px;font-size:8pt;margin:0 0 0 10px;padding:0 0 0 17px;}@media print{div.ReadMail div.header tr.from td.from img,div.ReadMail div.header td.arrow img,div.ReadMail div.mtoolbar,div.ReadMail div.header a.back,div.ReadMail div.header div.nav_links{display:none;}div.ReadMail div.header td.lbl{text-align:left;}div.ReadMail div.header tr.attach td.lbl{}div.ReadMail div.header tr.attach img.save{display:none;}div.ReadMail div.header tr.attach div.list_wrap{overflow:hidden;}span.ReadMail_attach_item{background:none;display:block;}span.ReadMail_attach_item a{color:black!important;margin:0 0 0 2px;}div.ReadMail,div.ReadMail div.header,div.ReadMail div.body{background-color:transparent;border:none;height:auto!important;overflow:visible!important;width:100%!important;}div.ReadMail div.body div.contents{margin:10px 0 0 0;padding:0;}div.ReadMail div.header{border-bottom:2px solid black;}*{overflow:visible!important;}}");
$Bootstrap.reportLoaded("widgets", "Email");if ($Bootstrap.notLoaded('b532266609fb2fc4d3d54220bc679fb0')) {
// vim:ts=4:tw=100:
/**
 * Widget for popup/dropdown menus
 */

Framework.register('Webmail.Widgets');

$Widgets.Menu = $Widgets.create({

	/**
	 * List of menu items
	 * @var	{Array}
	 */
	_items: [],

	/**
	 * List of submenus
	 * @var (Array)
	 */
	_submenus: [],

	/**
	 * The active submenu
	 * @var (Array)
	 */
	_active_submenu_index: null,

	/**
	 * Whether shadow has been set
	 * @var {Boolean}
	 */
	_shadow_set: false,

	// public:
	// {{{ hide()
	/**
	 * Hides the menu
	 */
	hide: function() {
		this.container.style.display = 'none';

		//hide the sub menu if were showing one
		if(this._submenus[this._active_submenu_index]) {
			
			// Reset sub_menu classes to not be hovered
			$Templates.setDom(this.container);
			var child_nodes = this.container.dom('content').childNodes;
			for(var item_count = 0; item_count < child_nodes.length; item_count ++) {
				if(child_nodes[item_count].className == 'sub_menu_hover') {
					child_nodes[item_count].className = 'sub_menu';
				}
			}
			
			this._submenus[this._active_submenu_index].hide();
		}
	},

	// }}}
	// {{{ initialize()
	/**
	 * Constructor
	 */
	initialize: function(items, options) {
		Object.bindObservers(this);

		this._submenus = [];
		this._active_submenu_index = [];

		this._items = items;
		this._options = wack.extend({
			onclick: null,
			shadow: true,
			submenu: false
		}, options||{});

		this.container = this._draw();
	},

	// }}}
	// {{{ showSubMenu()
	/**
	 * Shows a menu and move it based on the parent position
	 */
	showSubMenu: function(items, parent) {
		var parent_menu = parent.parentNode.parentNode.parentNode;
		var top = parent_menu.offsetTop + parent.offsetTop;
		var left = parent_menu.offsetLeft + parent.offsetWidth;
	
		this.container.style.display = '';
		this.container.visibility = 'hidden';

		// Get proper position based on screen constraints
		var browser_dimensions = wack.Browser.getDimensions();
		var menu_dimensions	= Element.getDimensions(this.container.dom('content'));

		var parent_dimensions;
		// Make sure its not going off the right
		if ((left + menu_dimensions.width + 10) >= browser_dimensions[1]) {
			var parent_dimensions = Element.getDimensions(parent_menu);
			left = parent_menu.offsetLeft - parent.offsetWidth;
		}

		// Make sure it does not go past bottom
		if ((top + menu_dimensions.height + 10) >= browser_dimensions[0]) {
			parent_dimensions = Element.getDimensions(parent);
			top = top - ((menu_dimensions.height - parent_dimensions.height) + 1);
		}

		// Set menu position
		this.container.style.position = 'absolute';
		this.container.style.top = top + 'px';
		this.container.style.left = left + 'px';
		this.container.style.zIndex = 100000;

		this.show(items);
	},
	// }}} 
	// {{{ show()
	/**
	 * Re-shows the menu
	 * @param	{Array}	[items]	Optionally pass items for dynamic menus
	 */
	show: function(items) {
		this.container.style.display = '';
		this.container.style.visibility = 'hidden';

		var wrapper = this.container.dom('content_wrapper');
		
		if (items) {
			var menu_frame = this.container.dom('content');
			var menu_items = menu_frame.childNodes;

			for (var i=0,ii=items.length; i<ii; i++) {

				// Check if the item needs to be hidden
				if (items[i].show) {
					if (!(items[i].show()) && !menu_items[i].__hidden) {
						menu_items[i].__hidden = true;
						Element.addClassName(menu_items[i], 'hidden');
					} else if (items[i].show() && menu_items[i].__hidden) {
						menu_items[i].__hidden = false;
						Element.removeClassName(menu_items[i], 'hidden');
					}
				}

				// Check whether to disable the item
				if (items[i].disabled && items[i].disabled()) {
					if (!menu_items[i].__disabled) {
						menu_items[i].__disabled = true;
						Element.addClassName(menu_items[i], 'disabled');
					}
				} else {
					if (menu_items[i].__disabled) {
						Element.removeClassName(menu_items[i], 'disabled');
					}
					menu_items[i].__disabled = false;
				}

				// See if label is dynamic
				if (typeof(items[i].label) == 'function') {
					menu_items[i].innerHTML = items[i].label();
				}
			}

			// Setup shadow dimensions
			var shadow = this.container.dom('shadow').childNodes[0];
			var dimensions = Element.getDimensions(wrapper);

			// Flags are messing up in IE7. Need some padding in the dialog...
			if (wack.Browser.is_ie7) {
				this.container.style.width = (dimensions.width+5) + 'px';
				dimensions = Element.getDimensions(wrapper);
			}
			shadow.style.height	= dimensions.height + 'px';
			shadow.style.width	= dimensions.width + 'px';
			this._shadow_set = true;
		}

		//need to size our iframe blocker if we're using IE6
		if(wack.Browser.is_ie6) {
			dimensions = Element.getDimensions(wrapper);
			Element.setStyle(this.container.lastChild, {
				width: dimensions.width+'px',
				height: dimensions.height+'px'});
		}
		
		
		this.container.style.visibility = '';

		// Force focus on the menu
		this.container.focus();
	},

	// }}}

	// private:
	// {{{ _draw()
	/**
	 * Draws the menu based on the items stored
	 * @return	{Element}
	 */
	_draw: function() {
		var container = Element.createHtml('<span class="Widgets_Menu"><div class="shadow" _ref="shadow"></div><div class="content" _ref="content_wrapper"><div class="minwidth"></div><div _ref="content"></div></div></span>');
		$Templates.setDom(container);
		var dom = container.dom;
		
		// Build Menu Elements
		var menu = dom('content');
		for (var i=0,ii=this._items.length; i<ii; i++) {
			if (this._items[i].new_section) {
				// New Section: Draw a horizontal line
				menu.appendChild(Element.createHtml('<div class="break"><img src="images/blank.gif" /></div>'));
			} else if (this._items[i].custom) {
				// Custom HTML instead of label
				menu.appendChild(this._items[i].custom);
			} else if (this._items[i].label) {
				// Allow dynamic labels
				if (typeof(this._items[i].label) == 'function') {
					var label = '';
				} else {
					var label = this._items[i].label;
				}

				var newItem = Element.createHtml(
					'<a href="javascript:void(0);" _index="'+i+'">' + label + '</a>'
				);

				// If there is a submenu, add a right arrow
				if(this._items[i].submenu) {
					newItem.addClassName('sub_menu');
				} 
				
				// Bold Default Items
				if (this._items[i].isdefault) {
					Element.addClassName(newItem, 'default');
				}


				//observer mouse over for submenus
				Event.observe(newItem, 'mouseover', this.evMouseOver);

				menu.appendChild(newItem);
			}
		}

		// Setup menu content
		Event.observe(dom('content'), 'click', this.evClick);
		
		
		// Add shadow if necessary
		if (this._options.shadow) {
			var filter = $UI.Alpha.newLayer('#000', 40);
			container.dom('shadow').appendChild(filter);
		}
	
		//if its ie 6 we need a fake iframe to cover over window controls(dropdowns etc.)
		if (wack.Browser.is_ie6) {
			var iframe_src = Webmail.getBaseUri()+Webmail.getBlankUrl();
			var iframe = Element.createHtml(
				'<iframe src="'+iframe_src+'" frameborder="0"></iframe>');
			Element.append(container, iframe);
		}
		
		return container;
	},

	// }}}
	// {{{ _drawSubMenu()
    _drawSubMenu: function(item) {
		//need the parent container to calculate positioning;
		var submenu = $Widgets.Menu.factory(item.submenu);
		var menu_container = $C(submenu);
		menu_container.style.position = 'absolute';
		document.body.appendChild(menu_container);

		return submenu;
	},
	// }}}
	// {{{ evMouseOver()
	/**
	 * Fired when a menu is hovered over
	 */
	evMouseOver: null,
	_evMouseOver: function(e) {
	
		if(this._submenus[this._active_submenu_index])
		{
			this._submenus[this._active_submenu_index].hide();
			
			//unset the elem.classname = '' for this index;
			var this_menu = this.container;
			$Templates.setDom(this_menu);
			var child_nodes = this_menu.dom('content').childNodes;
			for(var item_count = 0; item_count < child_nodes.length; item_count ++) {
				if(child_nodes[item_count].className == 'sub_menu_hover') {
					child_nodes[item_count].className = 'sub_menu';
				}
			}
		}

		// Make sure the element mouseover was the anchor element (menu item)
		var elem = Event.element(e);
		if (Element.nodeName(elem) != 'a') {
			return;
		}

		// Find the index and show the submenu
		var index 	= elem.getAttribute('_index');
		var item	= this._items[index];
		
		// If it's a disabled element don't go to display
		if  (elem.__disabled) {
			Event.stop(e);
			return;
		}
		
		if(item.submenu) {
		
			/*change the class of our hovered element to its hover css because we want 
			 * to keep it while on the submenu
			*/
			elem.className = 'sub_menu_hover';
			if(!this._submenus[index]) {
				this._submenus[index] = this._drawSubMenu(item);
			}

			this._active_submenu_index = index;
			
			this._submenus[index].showSubMenu(item, elem);

		}
	},
	// }}}
	// {{{ evClick()
	/**
	 * Fired when the menu is clicked
	 */
	evClick: null,
	_evClick: function(e) {
		// Make sure the element clicked was the anchor element (menu item)
		var elem = Event.element(e);
		if (Element.nodeName(elem) != 'a') {
			return;
		}

		// If it's a disabled element, don't do anything
		if (elem.__disabled) {
			Event.stop(e);
			return;
		}

		// Find the index and run the item's callback
		var index	= elem.getAttribute('_index');
		var item	= this._items[index];

		// See if theres a global callback
		if ((!item || !item.submenu) && this._options.onclick) {
			this._options.onclick();
		}

		if (item && item.callback != null) {
			item.callback();
		}
	}

	// }}}
});
};
$Bootstrap.applyCss("span.Widgets_Menu div.content{background:#FFF;border:1px solid "+wcv__shading_medium+";padding:0;position:absolute;z-index:10000;}span.Widgets_Menu div.content div.minwidth{height:1px;overflow:hidden;width:150px;}span.Widgets_Menu div.content a{color:#000!important;cursor:default;display:block;padding:3px 10px;text-decoration:none;white-space:nowrap;}span.Widgets_Menu div.content a.default{font-weight:bold;}span.Widgets_Menu div.content a.hidden{display:none;}span.Widgets_Menu div.content a:hover{background:"+wcv__shading_dark+";color:#FFF!important;cursor:pointer;text-decoration:none;}span.Widgets_Menu div.content a.sub_menu{background-image:url('"+wcv__image_url+"arrows\/right-arrow-grey.gif')!important;background-position:97% 50%!important;background-repeat:no-repeat!important;}span.Widgets_Menu div.content a.sub_menu_hover{background:"+wcv__shading_dark+";background-image:url('"+wcv__image_url+"arrows\/right-arrow-reverse.gif')!important;background-position:97% 50%!important;background-repeat:no-repeat!important;color:#FFF!important;cursor:pointer;text-decoration:none;}span.Widgets_Menu div.content a.disabled{color:#CCC!important;}span.Widgets_Menu div.content div.break{background-color:#CCC;height:1px;padding:0;margin:3px 2px;}span.Widgets_Menu div.content div.break img{height:1px;}span.Widgets_Menu div.content div.flags{margin:1px;padding:3px 10px;}span.Widgets_Menu div.content div.flags span.label{margin:0 2px 0 0;}span.Widgets_Menu div.content div.flags a{display:inline;height:5px;padding:3px 8px;width:5px;}span.Widgets_Menu div.content div.flags a:hover{background-color:"+wcv__shading_light+";}span.Widgets_Menu div.content a.flag_red,span.Widgets_Menu div.content a.flag_red:hover{background-image: url('"+wcv__image_url+"sprites\/email.2.png');background-repeat: no-repeat;background-position: 3px -495px;}span.Widgets_Menu div.content a.flag_green,span.Widgets_Menu div.content a.flag_green:hover{background-image: url('"+wcv__image_url+"sprites\/email.2.png');background-repeat: no-repeat;background-position: 3px -520px;}span.Widgets_Menu div.content a.flag_purple,span.Widgets_Menu div.content a.flag_purple:hover{background-image: url('"+wcv__image_url+"sprites\/email.2.png');background-repeat: no-repeat;background-position: 3px -545px;}span.Widgets_Menu div.content a.flag_blue,span.Widgets_Menu div.content a.flag_blue:hover{background-image: url('"+wcv__image_url+"sprites\/email.2.png');background-repeat: no-repeat;background-position: 3px -570px;}span.Widgets_Menu div.content a.flag_yellow,span.Widgets_Menu div.content a.flag_yellow:hover{background-image: url('"+wcv__image_url+"sprites\/email.2.png');background-repeat: no-repeat;background-position: 3px -595px;}span.Widgets_Menu div.content a.flag_grey,span.Widgets_Menu div.content a.flag_grey:hover{background-image: url('"+wcv__image_url+"sprites\/email.2.png');background-repeat: no-repeat;background-position: 3px -445px;}span.Widgets_Menu div.shadow{left:2px;position:absolute;top:2px;z-index:9999;}");
$Bootstrap.reportLoaded("widgets", "Menu");if ($Bootstrap.notLoaded('2e13d826d8375722336fe4c2412938a1')) {
/**
 * @fileoverview
 * Webmail/Widgets/QuickSummary.js
 * 
 * Widget for showing a quick summary of whatever was hovered.
 *
 * CHANGELOG
 * 4/3/07		created
 * 
 * @author		Steve
 */

Framework.register('Webmail.Widgets');

Webmail.Widgets.QuickSummary = Webmail.Widgets.create({

	_hovered: false,
	_options: {},
	container: null,

	// {{{ initialize()
	/**
	 * Constructor to create a new widget.
	 *
	 * @return	{null}
	 */
	initialize: function(options) {
		Object.bindObservers(this);
		Element.append(window.document.body, this._construct());
	},
	// }}}
	
// --private--
	// {{{ _construct()
	/**
	 * Creates the widget object and adds the event listener(s).
	 *
	 * @return	{element}
	 */
	_construct: function() {

		this.container = Element.createHtml(
		['<div class="widgets_quick_summary">',
			'<div class="shadow"></div>',
			'<div class="content"></div>',
		'</div>'].join(''));

		Event.observe(this.container,	'mouseout',		this.evMouseOut);
		
		Element.hide(this.container);
		
		return this.container;
	},
	// }}}
	// {{{ _dom()
	/**
	 * Subobject to return specific parts of the container.
	 */
	_dom: {
		findContent: function(cont) {
			return cont.childNodes[1];
		},
		findShadow: function(cont) {
			return cont.firstChild;
		}
	},
	// }}}
	// {{{ _getDimensions()
	/**
	 * Gets the dimensions of the container.  Should always be called after _populate().
	 *
	 * @return	{object}
	 */
	_getDimensions: function() {
		
		// make the element take up space, to get the dimensions
		Element.setStyle(this.container, {visibility: 'hidden', display: 'block'});
		var dim = Element.getDimensions(this._dom.findContent(this.container));
		
		// now that we have the dimensions, make it disappear
		Element.setStyle(this.container, {visibility: 'visible', display: 'none'});
		
		return dim;
	},
	// }}}
	// {{{ _getPosition()
	/**
	 * Gets the position based on set mouse position, container size, and browser dimensions.
	 *
	 * @return	{object}
	 */
	_getPosition: function() {
		var pos = this._options.position;

		var hov_dim 	= this._getDimensions();
		var brows_dim 	= Browser.getDimensions();

		if (pos.top - hov_dim.height > 0) { pos.top -= hov_dim.height; }
		
		if (pos.left + hov_dim.width >= brows_dim[1]) {
			pos.left -= hov_dim.width;
		}

		return pos;
	},
	// }}}
	// {{{ _hide()
	/**
	 * Hides the container.
	 *
	 * @return	{null}
	 */
	_hide: function() {
		Element.hide(this.container);		
	},
	// }}}
	// {{{ _populate()
	/**
	 * Replaces the text in the hover box.
	 *
	 * @param	{string}	message
	 * @return	{null}
	 */
	_populate: function(message) {
		this._dom.findContent(this.container).innerHTML = message.replace(/\n/g, '<br />');;
	},
	// }}}
	
// --public--	
	// {{{ close()
	/**
	 * Closes the widget and destroys it, so it can be recycled.
	 *
	 * @return	{null}
	 */
	close: function() {
		if (this._transition) {
			this._transition.cancel();
			this._transition = null;
		}
		this._options.onclose();
		this._hide();
		$Widgets.QuickSummary.destroy(this);
	},
	// }}}
	// {{{ init()
	/**
	 * Tells the widget the location of the mouse and what else to do when closing.
	 *
	 * @param	{mixed}		options		if no options are specified, will revert to defaults.
	 * @return	{null}
	 */
	init: function(options) {
		this._options = Object.extend({
			onclose: 			Prototype.emptyFunction,
			position:			{left: 0, top: 0},
			transition_time:	.4
		}, options || {});
	},
	// }}}
	// {{{ isHovered()
	/**
	 * Returns whether the container is hovered.
	 *
	 * @param	{int}	mouse_x		the x position of the mouse
	 * @param	{int}	mouse_y		the y position of the mouse
	 * @return	{bool}
	 */
	isHovered: function(mouse_x, mouse_y) {
		Position.prepare();
		return Position.withinIncludingScrolloffsets(this.container, mouse_x, mouse_y);	
	},
	// }}}
	// {{{ reset()
	/**
	 * Clears the options for the current widget.
	 *
	 * @return	{null}
	 */
	reset: function() {
		this.init();
	},
	// }}}
	// {{{ show()
	/**
	 * Determines where the box should go, and then makes it appear.
	 *
	 * @param	{string}	message			the message to show.
	 * @return	{null}
	 */
	show: function(message) {
		this._populate(message);

		// set shadow size
		var dim = this._getDimensions();
		Element.setStyle(this._dom.findShadow(this.container),
				{
					width:	dim.width + 'px',
					height:	dim.height + 'px'
				});

		// set the position of the box
		var pos = this._getPosition();
		Element.setStyle(this.container,
				{
					left:	pos.left + 'px',
					top:	pos.top + 'px'
				});

		// save the transition object if it should be cancelled mid-effect
		this._transition = Effect.Appear(this.container,
				{
					duration:		this._options.transition_time,
					afterFinish:	function() { this._transition = null; }.bind(this)
				});

	},
	// }}}

// --event listeners--
	// {{{ evMouseOut()
	/**
	 * Closes the widget if the mouse leaves the container.
	 *
	 * @return	{null}
	 */
	evMouseOut: null,
	_evMouseOut: function(e) {
		this.close();
	}
	// }}}

});

/* vim: set tabstop=4 textwidth=100: */
};
$Bootstrap.applyCss("");
$Bootstrap.reportLoaded("widgets", "QuickSummary");if ($Bootstrap.notLoaded('f2e2b2d7bcdff607a16cd360ad4d36a6')) {
/* vim: set tabstop=4 textwidth=120: */
/**
 * @fileoverview
 * js/Webmail/Widgets/Picker.js
 *
 * This widget is a base picker object.  A picker is basically an input element with an image that
 * will trigger some sort of picker object to help the user enter a value into the input element.
 *
 * CHANGELOG
 *
 * @requires	Prototype
 * @requires	Framework
 * @requires	Global
 * @requires	Webmail.Widgets
 *
 * @author		Brian Hartsock
 *
 */


Framework.create('Webmail.Widgets.Picker', $Widgets.create({

	id:			null,
	options:	null,
	_picker:	null,
	prev_val:	null,
	prevent_close_click: false,
	prevent_close_blur:	false,

	//Quick DOM accessors
	dom_input:		null,
	dom_image:		null,

	// Public functions
	// {{{ clearPicker()
	/*
	 * Close the picker.
	 *
	 */
	clearPicker: function(){

		if(this._picker){
			Element.remove(this._picker);
			this._picker = null;
		}

		//Stop observing document clicks
		Event.stopObserving(document.body, 'click', this.evDocumentClick);
	
		this.prevent_close_click = false;
		this.prevent_close_blur = false;
	},

	// }}}
	// {{{ disable()
	/*
	 * Disables the widget form elements other than the checkbox.
	 *
	 */
	disable: function(){
		this.dom_input.disabled = true;
	},
	
	// }}}
	// {{{ enable()
	/*
	 * Enables the widget form elements other than the checkbox.
	 *
	 */
	enable: function(){
		this.dom_input.disabled = false;
	},

	// }}}
	// {{{ reset()
	/*
	 * Reset the reminder widget.
	 *
	 */
	reset: function(){
		this.dom_input.name = '';
	},

	// }}}
	// {{{ set()
	/*
	 * Set the input value.  Option to format.  Always use this so we can fire the onchange event.
	 *
	 */
	set: function(value, do_not_format){
		var value = (do_not_format ? value : this._getFormattedValue(value));

		//IF new value is different
		if(this.dom_input.value != value){
			this.dom_input.value = value;
		}

		this.options.onchange(value);
	},

	// }}}

	// Private functions
	// {{{ _getFormattedValue()
	/*
	 * Formats the input value.  To be overridden if the input values need formatted, this does 
	 * nothing currently
	 *
	 * @param	{string}	value	Value to be formatted
	 * @return	{string}	Formatted value
	 */
	_getFormattedValue: function(value){
		return value;
	},

	// }}}

	// Event handlers
	// {{{ evBlurInput()
	/*
	 * Event handler for blurring from input. Used to format the value when entered by hand.
	 *
	 * @param	{event}	e	Event fired
	 */
	evBlurInput: null,
	_evBlurInput: function(e){
		this.set(this.dom_input.value);
		if (!this.prevent_close_blur) {
			this.clearPicker();
		} else {
			// blur should not close the picker (clicking on the image or picker dropdown)
			this.prevent_close_blur = false;
		}
	},

	// }}}
	// {{{ evDocumentClick()
	/*
	 * Handles the document click event.
	 *
	 */
	evDocumentClick: null,
	_evDocumentClick: function(){
		if (!this.prevent_close_click) {
			this.clearPicker();
		} else {
			// click should not close the picker (clicking on the image, input field, or picker
			// dropdown)
			this.prevent_close_click = false;
		}
	},

	// }}}
	// {{{ evMousedownImage()
	/**
	 * Called when clicking on the image associated with the picker.
	 * @param	{event}		e
	 */
	evMousedownImage: null,
	_evMousedownImage: function(e) {
		// prevent the evBlurInput function from closing the picker automatically
		this.prevent_close_blur = true;
	},
	// }}}
	// {{{ evMousedownInput()
	/**
	 * Called when clicking on the input box associated with the picker.
	 * @param	{event}		e
	 */
	evMousedownInput: null,
	_evMousedownInput: function(e) {
		// prevent the evDocumentClick function from closing the picker automatically
		this.prevent_close_click = true;
	},
	// }}}
	// {{{ evPreventClose()
	/**
	 * Event handler to prevent an automatic close when clicking on a picker.
	 * @param	{event}		e
	 */
	evPreventClose: null,
	_evPreventClose: function(e) {
	/* When clicking on a picker, three things happen in order - mousedown on the picker, blur on
	 * the input, and click on the document.  The last two automatically try to close the picker,
	 * which we want -only- if they are not clicking on the picker.  If they are, this function is
	 * called, where we set flags to prevent both from closing the picker.
	 */
		// prevent evDocumentClick from closing the picker
		this.prevent_close_click = true;
		// prevent evBlurInput from closing the picker
		this.prevent_close_blur = true;
	},
	// }}}
	// {{{ evShowPicker()
	/*
	 * Event handler called whenever the picker is requested to be shown.
	 *
	 * @param   event   e   Event that was fired (browser specific)
	 */
	evShowPicker: null,
	_evShowPicker : function(e)
	{
		Event.stop(e);

		// If there is a current picker, clear it
		if ($Widgets.Picker._current_picker) {
			$Widgets.Picker._current_picker.clearPicker();
		}

		//IF the picker is already shown, clear it
		if(this._picker){
			this.clearPicker();

		//ELSE the picker isn't being shown, hide it
		}else{
			$Widgets.Picker._current_picker = this;
			this._showPicker();
		}
	}

	// }}}
}));

$Widgets.Picker._current_picker = null;
};
$Bootstrap.applyCss("");
$Bootstrap.reportLoaded("widgets", "Picker");if ($Bootstrap.notLoaded('2315c70915ca28a74f0f576968950f38')) {
/* vim: set tabstop=4 textwidth=120: */
/**
 * @fileoverview
 * js/Webmail/Widgets/TimePicker.js
 *
 * This is a widget for the time picker object which consists of an input and image.  If the image
 * is clicked a select will show up
 *
 * CHANGELOG
 *
 * @requires	Prototype
 * @requires	Framework
 * @requires	Global
 * @requires	Webmail.Widgets
 *
 * @author		Brian Hartsock
 *
 */


Framework.create('Webmail.Widgets.TimePicker', $Widgets.create({

	// {{{ initialize()
	/*
	 * Constructor.
	 */
	initialize: function(tabIndex) {
		Object.bindObservers(this);

		this.id = $Widgets.TimePicker._id++;
		this.draw(tabIndex);
	},
	// }}}

	// Public functions
	// {{{ draw()
	/*
	 * Draw the widget.
	 *
	 */
	draw: function(tabIndex) {

		var container = Element.createHtml([
			'<span>',
				'<input class="text time" type="text" ',
					'tabindex="'+tabIndex+'" ',
					'id="timepicker_'+this.id+'"/>',
				'<img class="timepicker" field="timepicker_'+this.id+'" ',
					'src="images/blank.gif" />',
			'</span>'].join(''));

		this.dom_input = $(container.firstChild);
		this.dom_image = $(container.lastChild);

		//Event handling
		this.dom_image.observe('click', this.evShowPicker);
		this.dom_image.observe('mousedown', this.evMousedownImage);
		this.dom_input.observe('mousedown', this.evMousedownInput);
		this.dom_input.observe('focus', this.evShowPicker);
		this.dom_input.observe('blur', 	this.evBlurInput);
		Element.observe(document.body, 'click', this.evDocumentClick);

		this.container = container;
	},
	// }}}
	// {{{ format()
	/*
	 * Forces formatting on the time picker widget
	 */
	format: function() {
		this.dom_input.value = this._getFormattedValue(this.dom_input.value);
	},
	// }}}
	// {{{ getValue()
	/**
	 * Returns the raw value from the text input
	 * @return	{String}
	 */
	getValue: function() {
		var value = this.dom_input.value;
		return value;
	},
	
	// }}}
	// {{{ populate()
	/*
	 * Populate the reminder widget.
	 *
	 * @param	{object}	options		Optional options object
	 */
	populate: function( options){

		//Set options
		this.options = Object.extend(
			{
				time:		null,
				form_name: 	null,
				onchange:	Prototype.emptyFunction
			}, options || {});

		if(this.options.time){
			this.dom_input.value = this.options.time;
		}

		if(this.options.form_name){
			this.dom_input.name = this.options.form_name;
		}
	},
	// }}}
	// {{{ setValue()
	/**
	 * Sets the raw value of the input field
	 * @param	{String}	time	Time to fill in
	 */
	setValue: function(time) {
		this.dom_input.value = time;
	},
	
	// }}}
	
	//Private functions
	// {{{ _drawPicker()
	/*
	 * Draws the time picker for the input field.
	 *
	 */
	_drawPicker : function()
	{
		var field = this.dom_input;

		// Create timepicker
		var time_picker				= new TimePicker;
		time_picker.time			= field.value;
		time_picker.callback		= this.evSetTimePicker;
		time_picker.mousedown_callback = this.evPreventClose;

		if ($Settings.getHourFormat() == wm_Settings_HOUR_24) {
			time_picker.use_24_hour = true;
		}
		
		// Render timepicker and settings
		var container 		= time_picker.render();
		container.field		= field.id;
		container.size		= '7';

		//Find and set position of datepicker
		var dim = Element.getDimensions(field);
		var pos = Position.positionedOffset(field);

		Element.setStyle(container,
						{
						position:	"absolute",

						left:		pos[0] + 'px',
						top:		(pos[1] + dim.height) + 'px',
						width:		(dim.width + 20) + 'px',

						zIndex:		'5000'
						});

		return container;
	},
	// }}}
	// {{{ _getFormattedValue()
	/**
	 * Attempt to format the time value.
	 * @param	{string}	time	Time to format
	 * @return	{string}	Formatted time string
	 */
	_getFormattedValue: function(time){
		var time_obj	= null;
		// Check AM/PM from previous input. If user does not
		// specify AM/PM (typed in), then use the previous AM/PM
		// value. This is only done with 12-hour format.
		if ($Settings.getHourFormat() == wm_Settings_HOUR_12 &&
			this.prev_val && !time.match(/(am|AM|pm|PM)/) &&
			newTime(this.prev_val).getHours() > 12) {
				time_obj = $DateTime.create(null, time + ' pm');
		} else {
			time_obj = $DateTime.create(null, time);
		}

		if (time_obj.isValid()) {
			var display	= time_obj.basicTime();
		} else {
			var display = '';
		}
		return display;
	},

	// }}}
	// {{{ _showPicker()
	/*
	 * Displays the time picker for the input field.
	 *
	 */
	_showPicker : function()
	{
		// Create picker (if not already created)
		this._picker = this._drawPicker();
		this.container.append(this._picker);

		// This is needed to make Safari scroll down to the selected index.
		// There was a problem with selecting before it was added to the DOM.
		if (wack.Browser.is_safari) {
			this._picker.selectedIndex = this._picker.selectedIndex;
		}

		//Setup body event handling
		Element.observe(document.body, 'click', this.evDocumentClick);
	},
	// }}}

	//Event handlers
	// {{{ evSetTimePicker()
	/*
	 * Event handler called whenever a date is picked from the date picker. This is form independent and requires a unique ID field.
	 *
	 * @param   event   e   Event that was fired (browser specific)
	 *
	 */
	evSetTimePicker: null,
	_evSetTimePicker: function(e)
	{
		Event.stop(e);
		
		//Grab link
		var select	= Event.findElement(e, 'select');
		var time 	= $F(select)

		//Set value of input to datepicker
		this.set(time, true);
	
		//remove date picker
		this.clearPicker();
	}
	// }}}

}, $Widgets.Picker));

Webmail.Widgets.TimePicker._id = 0;
};
$Bootstrap.applyCss("");
$Bootstrap.reportLoaded("widgets", "TimePicker");
$Bootstrap.reportLoaded("combo", "webmail");