
function propEmpty(obj){for(var key in obj){if(obj.hasOwnProperty(key)){return false;}}
return true;}
function containsNum(array,num){if(!array){return false;}
for(var i=0;i<array.length;++i){if(array[i]==num){return true;}}}
var ppProvOptions=[{label:"Select...",value:""},{label:"Alberta",value:"AB"},{label:"British Columbia",value:"BC"},{label:"Manitoba",value:"MB"},{label:"New Brunswick",value:"NB"},{label:"Newfoundland and Labrador",value:"NL"},{label:"Northwest Territories",value:"NT"},{label:"Nova Scotia",value:"NS"},{label:"Nunavut",value:"NU"},{label:"Ontario",value:"ON"},{label:"Prince Edward Island",value:"PE"},{label:"Quebec",value:"QC"},{label:"Saskatchewan",value:"SK"},{label:"Yukon",value:"YT"}];function swGetPaymentOptions(){var options=[{label:"None",value:"None"},{label:"Credit Card",value:"CreditCard"},{label:"Check",value:"Check"},{label:"Cash",value:"Cash"}];return options;}
function swGetCountryDisplay(locale){var display="";if(locale.displayCountryUS.length>0){display+=locale.displayCountryUS;}
var left=display;var right="";if(locale.displayCountry.length>0){display+=" / ";display+=locale.displayCountry;right=locale.displayCountry;}
if(left==right){display=left;}
return display;}
function lcComparator(a,b){var x=a.toLowerCase();var y=b.toLowerCase();return((x<y)?-1:((x>y)?1:0));}
function labelComparator(a,b){var x=a.label.toLowerCase();var y=b.label.toLowerCase();return((x<y)?-1:((x>y)?1:0));}
function swGetCountryOptions(){var countryOptions=[];var tmpSort=[];var localeKey=null;for(localeKey in jsLocaleData){if(jsLocaleData.hasOwnProperty(localeKey)){tmpSort.push(localeKey);}}
function countryComparator(a,b){var x=jsLocaleData[a].displayCountryUS.toLowerCase();var y=jsLocaleData[b].displayCountryUS.toLowerCase();return((x<y)?-1:((x>y)?1:0));}
tmpSort.sort(countryComparator);var i=0;var option=null;for(;i<tmpSort.length;++i){localeKey=tmpSort[i];var locale=jsLocaleData[localeKey];var display=swGetCountryDisplay(locale);if(display.length!==0){countryOptions.push({label:display,value:locale.displayCountryUS});}}
return countryOptions;}
function swGetCurrencyOptions(){var currencyOptions=[];var tmpSort=[];var localeKey=null;for(localeKey in jsLocaleData){if(jsLocaleData.hasOwnProperty(localeKey)){tmpSort.push(localeKey);}}
function currencyComparator(a,b){var x=jsLocaleData[a].currencyCode.toLowerCase();var y=jsLocaleData[b].currencyCode.toLowerCase();return((x<y)?-1:((x>y)?1:0));}
tmpSort.sort(currencyComparator);var i=0;var option=null;var set={};var locale;var code;var display;for(;i<tmpSort.length;++i){localeKey=tmpSort[i];locale=jsLocaleData[localeKey];code=locale.currencyCode;if(code.length!==0){if(set.hasOwnProperty(code)){continue;}
display=code+" / "+locale.currencySymbol;currencyOptions.push({label:display,value:code});set[code]=true;}}
return currencyOptions;}
function quickIsEmailValid(email){var index=email.indexOf("@");if(index<1){return false;}
var index2=email.indexOf("\\.",index);if(index2<(index+2)){return false;}
return true;}
function getItemID(swEventComp){var key="swemItem-"+swEventComp.iCalendarID.substring(2)+"-"+
swEventComp.compID.substring(3);return key;}
function getItemURL(swEventComp){var key=getItemID(swEventComp);var keyBytes=key.toBytes();var keyBytesHex=keyBytes.map("hex",2).join("");var href=window.location.href;var index=href.indexOf("/",9);var url=href.substring(0,index)+"/em/iwp.js?i="+keyBytesHex;return url;}
function setFormattedDateTime(date,fDateTime){date.setDate(1);date.setFullYear(parseInt(fDateTime.substring(0,4),10));date.setMonth(parseInt(fDateTime.substring(4,6),10)-1);date.setDate(parseInt(fDateTime.substring(6,8),10));date.setHours(parseInt(fDateTime.substring(8,10),10));date.setMinutes(parseInt(fDateTime.substring(10,12),10));date.setSeconds(parseInt(fDateTime.substring(12,14),10));}
DlValidator.Price=function(data,aGroupingSep,aDecimalSep,aCurrencySymbol){var groupingSep=aGroupingSep||swApp.locale.groupingSeparator;var decimalSep=aDecimalSep||swApp.locale.monetaryDecimalSeparator;var currencySymbol=aCurrencySymbol||swApp.locale.currencySymbol;var noSpace=data.replace(/\s/g,"");var tmp=noSpace;var rs=new RegExp("\\"+currencySymbol);tmp=tmp.replace(rs,"");var rg=new RegExp("\\"+groupingSep,"g");tmp=tmp.replace(rg,"");var rd=new RegExp("\\"+decimalSep);tmp=tmp.replace(rd,"");var n=parseInt(tmp,10);if(isNaN(n)){throw new DlValidatorException("Value must be numeric",DlValidatorException.MISMATCH);}
if(noSpace.indexOf(decimalSep)<0){return noSpace+decimalSep+"00";}
return noSpace;}
function parsePriceInt(formattedPrice,aGroupingSep,aDecimalSep,aCurrencySymbol){var groupingSep=aGroupingSep||swApp.locale.groupingSeparator;var decimalSep=aDecimalSep||swApp.locale.monetaryDecimalSeparator;var currencySymbol=aCurrencySymbol||swApp.locale.currencySymbol;var tmp=formattedPrice.replace(/\s/g,"");var rs=new RegExp("\\"+currencySymbol);tmp=tmp.replace(rs,"");var rg=new RegExp("\\"+groupingSep,"g");tmp=tmp.replace(rg,"");var rd=new RegExp("\\"+decimalSep);tmp=tmp.replace(rd,"");var n=parseInt(tmp,10);if(isNaN(n)){throw new DlValidatorException("Value must be numeric",DlValidatorException.MISMATCH);}
return n;}
function bulkHmac(count,str){for(var i=0;i<count;++i){var b64Md5Password=b64_md5("abc123");hex_hmac_md5(b64Md5Password,json);}}
function bulkAES(count,str){var md5pwd=hex_md5("abc123");var key=md5pwd.toBytes();var aes=new DlCryptAES({key:key});for(var i=0;i<count;++i){aes.encodeBytes(str);}}
function formatPrice(aCentsValue,aGroupingSep,aDecimalSep,aCurrencySymbol){var groupingSep;var decimalSep;if(typeof swApp!="undefined"){groupingSep=aGroupingSep||swApp.locale.groupingSeparator;decimalSep=aDecimalSep||swApp.locale.monetaryDecimalSeparator;}
else{groupingSep=aGroupingSep||",";decimalSep=aDecimalSep||".";}
var centsValue=aCentsValue;if(!centsValue){centsValue=0;}
if(isNaN(centsValue)){centsValue=0;}
var cs=aCurrencySymbol||"";centsValue=Math.round(centsValue);var cents=""+centsValue;if(cents.length===0){return cs+"0"+decimalSep+"00";}
if(cents.length==1){return cs+"0"+decimalSep+"0"+cents;}
if(cents.length==2){return cs+"0"+decimalSep+cents;}
if(cents.length==3){return cs+cents.substring(0,1)+decimalSep+cents.substring(1);}
if(cents.length==4){return cs+cents.substring(0,2)+decimalSep+cents.substring(2);}
if(cents.length==5){return cs+cents.substring(0,3)+decimalSep+cents.substring(3);}
var left=cents.substring(0,cents.length-2);var leftR=left.split("").reverse().join("");var leftFixed=leftR.replace(/(\d{3})/g,"$1"+groupingSep);var leftFixedR=leftFixed.split("").reverse().join("");if(leftFixedR.indexOf(groupingSep)===0){leftFixedR=leftFixedR.substring(1);}
var z=leftFixedR+decimalSep+cents.substring(cents.length-2);return cs+z;}
function convert2Https(url){if(url.indexOf("https")===0){return url;}
return"https"+url.substring(4);}
function convert2Http(url){if(url.indexOf("http:")===0){return url;}
return"http"+url.substring(5);}
function aContains(array,test){for(var i=0;i<array.length;++i){if(array[i]==test){return true;}}
return false;}
function strValid(str){if(!str){return false;}
if(str.trim().length===0){return false;}
return true;}
function swMerge(dest,srcObj){for(var key in srcObj){if(srcObj.hasOwnProperty(key)){var value=srcObj[key];dest[key]=value;}}}
function swMergeArray(dest,src){for(var i=0;i<src.length;++i){var srcItem=src[i];if(aContains(dest,srcItem)){continue;}
dest.push(srcItem);}}
var emailTest=/^([a-zA-Z0-9_\+.\-])+@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;function isEmailValid(email){if(!emailTest.test(email)){return false;}
return true;}
function getPropKeys(obj){var result=[];if(!obj){return result;}
for(var key in obj){if(obj.hasOwnProperty(key)){result.push(key);}}
return result;}
function swPropCount(obj){var count=0;for(var key in obj){if(obj.hasOwnProperty(key)){++count;}}
return count;}
function createObjFromArray(a){var obj={};if(!a){return obj;}
for(var i=0;i<a.length;++i){var k=a[i];++i;var v=a[i];obj[k]=v;}
return obj;}
function swEval(data){if(data===null||typeof data=='undefined'){return{};}
if(!data||data.length===0){return{};}
if(data.indexOf("(")===0){try{return eval(data);}catch(ex){return eval("("+data+")");}}
else{return eval("("+data+")");}
return{};}
function swCopyItemInstances(instances,result){for(var bywday in instances){if(instances.hasOwnProperty(bywday)){var times=instances[bywday];var destTimes=result[bywday];if(!destTimes){destTimes=[];result[bywday]=destTimes;}
for(var i=0;i<times.length;++i){destTimes.push(times[i]);}}}}
function numSortAscending(a,b){return a-b;}
function sortInstanceTimes(instances){for(var bywday in instances){if(instances.hasOwnProperty(bywday)){var times=instances[bywday];times.sort(numSortAscending);}}}
function countInstances(instances){var count=0;for(var bywday in instances){if(instances.hasOwnProperty(bywday)){var times=instances[bywday];count+=times.length;}}
return count;}
function swMergeInstances(aSWItemData,item){var result={};var itemM=aSWItemData["item-map"];var mergedItemIds=item["merged-item-ids"];if(!mergedItemIds||mergedItemIds.length===0){return item["instances"];}
for(var i=0;i<mergedItemIds.length;++i){var mergedItemId=mergedItemIds[i];var mergedItem=itemM[mergedItemId];var instances=mergedItem["instances"];if(instances){swCopyItemInstances(instances,result);}}
sortInstanceTimes(result);return result;}
function gup(name){name=name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");var regexS="[\\?&]"+name+"=([^&#]*)";var regex=new RegExp(regexS);var results=regex.exec(window.location.href);if(results===null){return"";}
return results[1];}
function handleResponse(success,fail,answer){if(!answer||!answer.success||!answer.text||answer.text=="null"||answer.text=="null\n"){fail({});return;}
var response=swEval(answer.text);handleEvalResponse(success,fail,response);}
function handleEvalResponse(success,fail,response){if(response.message=="Success"||(response.ppResponse&&response.ppResponse.message=="Success")||(response.ppFinalResponse&&response.ppFinalResponse.message=="Success")){success(response);return;}
for(var key in response){if(response.hasOwnProperty(key)){var reservation=response[key];if(reservation&&reservation.success=="true"){success(response);return;}}}
fail(response);}
function buildPaypalFailedMessage(aResponse){var msg="";var response=aResponse;if(aResponse.ppResponse){response=aResponse.ppResponse;}
if(aResponse.ppFinalResponse){response=aResponse.ppFinalResponse;}
if(response.message){msg+="\n"+response.message;}
if(response.errorCode){msg+="\nError code: "+response.errorCode;}
if(response.errorShortMsg){msg+="\nShort message: "+response.errorShortMsg;}
if(response.errorLongMsg){msg+="\nError long message: "+response.errorLongMsg;}
if(response.errorSeverityCode){msg+="\nError severity code: "+response.errorSeverityCode;}
if(response.failed){msg+="\n"+response.failed;}
return msg;}
function escapeText(xmlText){return xmlText.replace(/&/g,"&amp;").replace(/</g,"&lt;");}
function escapeXmlAttribute(xml){return xml.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/\x22/g,"&quot;").replace(/\x27/g,"&apos;");}
function buildLocaleOptions(withCurrencyCodes){var localeOptions=[];var tmpSort=[];var localeKey=null;for(localeKey in jsLocaleData){if(jsLocaleData.hasOwnProperty(localeKey)){if(withCurrencyCodes){var locale=jsLocaleData[localeKey];if(!withCurrencyCodes.hasOwnProperty(locale.currencyCode)){continue;}}
tmpSort.push(localeKey);}}
function localeComparator(a,b){var x=jsLocaleData[a].displayLanguageUS.toLowerCase();var y=jsLocaleData[b].displayLanguageUS.toLowerCase();return((x<y)?-1:((x>y)?1:0));}
tmpSort.sort(localeComparator);for(var i=0;i<tmpSort.length;++i){localeKey=tmpSort[i];var localeData=jsLocaleData[localeKey];var display=localeData.displayLanguageUS;if(localeData.displayCountryUS.length>0){display+=" ";display+=localeData.displayCountryUS;}
var left=display;display+=" / "+localeData.displayLanguage;var right=localeData.displayLanguage;if(localeData.displayCountry.length>0){display+=" ";display+=localeData.displayCountry;right+=" "+localeData.displayCountry;}
if(left==right){display=left;}
localeOptions.push({label:display,value:localeKey});}
return localeOptions;}
function createMMSS(expiryMS){var now=new Date();var diff=expiryMS-now.getTime();if(diff<1){return"expired";}
var minutes=diff/(1000*60);var seconds=(diff/1000)%60;var result="";if(minutes<10){result="0";}
result+=""+Math.floor(minutes);result+=":";if(seconds<10){result+="0";}
result+=""+Math.floor(seconds);return result;}
function isReservationExpired(dlLabel){var now=new Date();var diff=dlLabel.expiryMS-now.getTime();if(diff<1){return true;}
return false;}
function emStartTimeRemaining(dlLabel,expiryMS){if(!dlLabel.expiryMS){dlLabel.expiryMS=expiryMS;}
var value=createMMSS(dlLabel.expiryMS);dlLabel.label(value);if(value=="expired"){return;}
var timeout=1000;swApp.emTimeRemainingTimerID=setTimeout(emStartTimeRemaining,timeout,dlLabel);}
function swCreateCookie(name,value,days){if(days){var date=new Date();date.setTime(date.getTime()+(days*24*60*60*1000));var expires="; expires="+date.toGMTString();}
else{var expires="";}
document.cookie=name+"="+value+expires+"; path=/";}
function swReadCookie(name){var nameEQ=name+"=";var ca=document.cookie.split(';');for(var i=0;i<ca.length;i++){var c=ca[i];while(c.charAt(0)==' '){c=c.substring(1,c.length);}
if(c.indexOf(nameEQ)==0){return c.substring(nameEQ.length,c.length);}}
return null;}
function buildSalt(email){return"swem#"+email+"!";}
function computeSalt(){return buildSalt(swApp.syncSWorld.userSettingsDTO.emailC[0]);}
function swEraseCookie(name){createCookie(name,"",-1);}
String.prototype.highlightWords=function(re){var a=[],b=[],m,pos=0,i=0;while(m=re.exec(this)){a[i++]=this.substring(pos,m.index);pos=re.lastIndex;b[i++]=m[0].htmlEscape().htmlEmbed("b","match");}
a[i++]=this.substring(pos);while(i-->=0)
a[i]=b[i]||a[i]&&a[i].htmlEscape()||"";return a.join("");};var institutionOptions=[{label:"Select...",value:"none"},{label:"001 - Bank of Montreal",value:"001"},{label:"002 - Bank of Nova Scotia",value:"002"},{label:"003 - Royal Bank of Canada",value:"003"},{label:"004 - Toronto-Dominion Bank (TD Canada Trust)",value:"004"},{label:"006 - National Bank of Canada",value:"006"},{label:"010 - CIBC And President's Choice",value:"010"},{label:"016 - HSBC Canada",value:"016"},{label:"030 - Canadian Western Bank",value:"030"},{label:"039 - Laurentian Bank of Canada",value:"039"},{label:"117 - Government of Canada",value:"117"},{label:"127 - Canada Post",value:"127"},{label:"177 - Bank of Canada",value:"177"},{label:"219 - ATB Financial",value:"219"},{label:"260 - Citibank Canada",value:"260"},{label:"290 - UBS Bank (Canada)",value:"290"},{label:"308 - Bank of China (Canada)",value:"308"},{label:"309 - Citizens Bank of Canada",value:"309"},{label:"338 - Canadian Tire Bank",value:"338"},{label:"340 - ICICI Bank",value:"340"},{label:"509 - Canada Trust (Prior to merger with TD)",value:"509"},{label:"540 - Manulife Bank",value:"540"},{label:"614 - ING Direct Canada",value:"614"},{label:"809 - Central 1 Credit Union - BC Region",value:"809"},{label:"815 - Caisses Desjardins du Québec",value:"815"},{label:"819 - Caisses populaires Desjardins du Manitoba",value:"819"},{label:"828 - Central 1 Credit Union - ON Region",value:"828"},{label:"829 - Caisses populaires Desjardins de l'Ontario",value:"829"},{label:"837 - Meridian Credit Union (formerly Hepco)",value:"837"},{label:"839 - Credit Union Heritage (Nova Scotia)",value:"839"},{label:"865 - Caisses populaires Desjardins acadiennes",value:"865"},{label:"879 - Credit Union Central of Manitoba",value:"879"},{label:"889 - Credit Union Central of Saskatchewan",value:"889"},{label:"899 - Credit Union Central Alberta",value:"899"}];var fromInstitutions=[{label:"Select...",value:"none"},{label:"003 - Royal Bank of Canada",value:"003"},{label:"004 - Toronto-Dominion Bank (TD Canada Trust)",value:"004"},{label:"Other",value:"other"}];(function(){var BASE=SwMultiSelector.inherits(DlContainer);function SwMultiSelector(args){if(args){D.setDefaults(this,args);DlContainer.call(this,args);}}
eval(Dynarch.EXPORT("SwMultiSelector"));D.DEFAULT_ARGS={_title:["title","SwSelector"],_expanded:["expanded",true],_buttons:["buttons",null]};var TITLE_CLASSES={active:"SwMultiSelector-title-active",hover:"SwMultiSelector-title-hover",checked:"SwMultiSelector-title-expanded",unchecked:"SwMultiSelector-title-collapsed",disabled:"SwMultiSelector-title-disabled"};P._createElement=function(){D.BASE._createElement.apply(this,arguments);this._titleButton=new DlAbstractButton({parent:this,label:this._title,className:"SwMultiSelector-title",classes:TITLE_CLASSES,type:DlAbstractButton.TYPE.TWOSTATE,checked:this._expanded});this._titleButton.addEventListener("onChange",this.toggle.$(this));this._topCont=new DlContainer({parent:this,className:"SwMultiSelector-topCont"});this._btnsCont=new DlContainer({parent:this._topCont,className:"SwMultiSelector-btnsCont"});this._linksBox=new DlHbox({parent:this._topCont,className:"SwMultiSelector-linksBox"});};P.getMainContainer=function(){return this._btnsCont;};P.setSendToServer=function(enabled){this._btnsCont.setData("sendToServer",enabled);};P.addButton=function(btn){this._btnsCont.appendWidget(btn);};P.setLeftLink=function(text){var btn=new DlAbstractButton({parent:this._linksBox,label:text,className:"SwMultiSelector-link"});return btn;};P.setRightLink=function(text){var btn=new DlAbstractButton({parent:this._linksBox,label:text,className:"SwMultiSelector-link"});btn.getElement().parentNode.style.textAlign="right";return btn;};P.toggle=function(){this._expanded=!this._expanded;this._topCont.display(this._expanded);this._titleButton.checked(this._expanded,true);};P.getTitleButton=function(){return this._titleButton;};})();(function(){var BASE=SwMultiSelectorButton.inherits(DlContainer);function SwMultiSelectorButton(args){if(args){D.setDefaults(this,args);DlContainer.call(this,args);}}
eval(Dynarch.EXPORT("SwMultiSelectorButton"));var HTML_TEMPLATE=String.template("<table cellspacing='0' cellpadding='0'><tr>","<td class='SwMultiSelectorButton-main'><div class='SwMultiSelectorButton-main'>$label</div></td>","<td class='SwMultiSelectorButton-menu'><div class='SwMultiSelectorButton-menu'></div></td>","</tr></table>");D.DEFAULT_ARGS={_label:["label",null],_color:["color",null],_group:["group",null],_menu:["menu",null],_value:["value",null],_checked:["checked",true]};var MAIN_CLASSES={active:"SwMultiSelectorButton-main-active",hover:"SwMultiSelectorButton-main-hover",checked:"SwMultiSelectorButton-main-1",unchecked:"SwMultiSelectorButton-main-0",disabled:"SwMultiSelectorButton-main-disabled"};var DROPDOWN_CLASSES={active:"SwMultiSelectorButton-menu-active",hover:"SwMultiSelectorButton-menu-hover",checked:"SwMultiSelectorButton-menu-1",unchecked:"SwMultiSelectorButton-menu-0",disabled:"SwMultiSelectorButton-menu-disabled"};var MENU_ALIGN={prefer:"Br",fallX1:"_r",fallX2:"_l",fallY1:"B_",fallY2:"T_"};P._createElement=function(){var html=HTML_TEMPLATE({label:this._label});D.BASE._createElement.call(this,html);var el=this.getElement();this._mainBtn=new DlAbstractButton({parent:this,element:el.rows[0].cells[0].firstChild,classes:MAIN_CLASSES,label:this._label,checked:this._checked,type:DlAbstractButton.TYPE.TWOSTATE,className:"SwMultiSelectorButton-main",group:this._group,value:this._value});this._menuBtn=new DlAbstractButton({parent:this,element:el.rows[0].cells[1].firstChild,classes:DROPDOWN_CLASSES,className:"SwMultiSelectorButton-menu",noCapture:true});this._menuBtn.addEventListener("onMouseDown",this._showMenu.$(this));this.setColor(this._color);delete this._value;delete this._group;};P.setColor=function(color){this._color=color;if(color){var rgb=DlColor.color2RGB(color);var hsv=DlColor.RGB2HSV(rgb);var darker=DlColor.darker(hsv);this._mainBtn.setStyle({backgroundColor:color,borderColor:DlColor.RGB2color(DlColor.HSV2RGB(darker))});var iCalendarID=this._mainBtn.getValue();if(!swApp.syncSWorld.userSettingsDTO.ICalendarIDColourM){swApp.syncSWorld.userSettingsDTO.ICalendarIDColourM={};}
swApp.syncSWorld.userSettingsDTO.ICalendarIDColourM[iCalendarID]=color;swApp.syncSWorld.saveUserSettingsDTO();if(this.getParent()&&this.getParent().getData("sendToServer")){var saveSettings={};var key="icalendarcolour";saveSettings[key]=iCalendarID+","+color;swApp.syncSWorld.sendRequest(saveSettings,"saveSettings");}}else{this._mainBtn.setStyle({backgroundColor:"",borderColor:""});}};P.getColor=function(){return this._color;};P._showMenu=function(ev){var p=this._getContextMenuPopup();var args={timeout:0,content:this._menu,align:MENU_ALIGN,anchor:this._menuBtn.getElement(),isContext:true,widget:this};if(this._color){args.onHide=function(){this._menuBtn.setStyle({backgroundColor:"",borderColor:""});}.$(this);this._menuBtn.setStyle({backgroundColor:this.getColor(),borderColor:"#000"});}
p.popup(args);ev._justFocusedWidget=p;};P.getValue=function(){return this._mainBtn.getValue();};P.setValue=function(val){return this._mainBtn.setValue(val);};})();function SyncSWorld(){}
SyncSWorld.prototype={clientVersion:"1149",firefoxBug:"Warning: there was a problem with your browser's offline storage.\nThe solution for some browsers (like Firefox) is:\n1. enable cookies.\n2. keep cookies until they expire. (Only this option works.)\nReason: the browser uses cookie settings to enable/disable offline storage.\nIf you just switched between HTTP and HTTPS you just need to reload the page.",swCalDateTime:null,jsLoader:null,calendarUtils:null,MODEL_VERSION:4,SYNC_NORMAL:"two-way",SYNC_REPLACE_LOCAL_DATA:"replaceLocalData",SYNC_REPLACE_SERVER_DATA:"replaceServerData",SYNC_SLOW:"slow",SW_COOKIE:"swCookie",displayNameM:null,swCalUserID:null,appName:"sw2",appBuildID:"unknown",appVersion:"unknown",username:null,sessionID:null,encryption:false,syncURL:null,SEND_REQUEST_TIMEOUT_MS:3600000,localContactsCount:0,localEventsCount:0,localContactsUpdatedNewCount:0,localEventsUpdatedNewCount:0,kPABDirectory:2,receivedItemCount:0,receivedEventCount:0,receivedEventDeleteCount:0,receivedEventConflictCount:0,sentItemCount:0,sentEventItemCount:0,request:null,requestTimer:null,autoSyncTimer:null,autoSyncTimeoutMS:3600000,isAutoSync:false,activeCompositeCalendar:null,currentlySyncingCalendar:null,xulLoaded:false,syncDone:false,syncInProgress:false,percentComplete:0,calendarSyncCount:0,contactSyncDone:false,eventSyncDone:false,nsIPrefService:null,guidLuidM:null,eventGuidLuidM:null,eventUpdateGUIDLastModifiedDateM:null,rdfService:null,localSyncAnchorM:null,localDeletedLuidM:null,progressWindow:null,timezoneService:null,inErrorState:false,syncItems:null,eventSyncItems:null,todoSyncItems:null,booksIndex:0,syncAddressBookL:[],selectedCalNameIds:[],abAvailable:false,calAvailable:false,contactPreferValueArrayM:{mail:true,xyz:true},contactDoNotSplitM:{postalAddress:true,mozillaPostalAddress2:true,homePostalAddress:true,mozillaHomePostalAddress2:true,description:true},mozPropM:{displayName:"DisplayName",givenName:"FirstName",sn:"LastName",emailSlot1:"PrimaryEmail",emailSlot2:"SecondEmail",homeurl:"WebPage2",telephoneNumber:"WorkPhone",facsimileTelephoneNumber:"FaxNumber",homePhone:"HomePhone",mobile:"CellularNumber",pager:"PagerNumber",o:"Company",departmentNumber:"Department",workurl:"WebPage1",xmozillanickname:"NickName",nsAIMid:"AimScreenName",description:"Note",postalAddress:"WorkAddress",mozillaPostalAddress2:"WorkAddress2",l:"WorkCity",st:"WorkState",postalCode:"WorkZipCode",c:"WorkCountry",homePostalAddress:"HomeAddress",mozillaHomePostalAddress2:"HomeAddress2",mozillaHomeLocalityName:"HomeCity",mozillaHomeState:"HomeState",mozillaHomePostalCode:"HomeZipCode",mozillaHomeCountryName:"HomeCountry",custom1:"Custom1",custom2:"Custom2",custom3:"Custom3",custom4:"Custom4",title:"JobTitle",xmozillausehtmlmail:"PreferMailFormat"},swContactModel:null,swEventModel:null,swEventDeletedModel:null,swTodoModel:null,swNoteModel:null,syncSWorldPrefs:null,userSettingsDTO:null,monthRecurEventM:null,swContactModelKey:"syncSWorldContactModelKey",swContactDeletedModelKey:"syncSWorldContactDeletedModelKey",swNoteModelKey:"syncSWorldNoteModelKey",swNoteDeletedModelKey:"syncSWorldNoteDeletedModelKey",syncSWorldPrefsKey:"syncSWorldPrefsKey",swUserSettingsDTOKey:"swUserSettingsDTOKey",groupIDNameMKey:"syncSWorldGroupIDNameMKey",groupIDCalUserIDSMKey:"syncSWorldGroupIDCalUserIDSMKey",inviteEmailGroupIDSMKey:"syncSWorldInviteEmailGroupIDSMKey",mayShareContactsWithMeSKey:"syncSWorldMayShareContactsWithMeSKey",mayShareContactsWithOthersSKey:"syncSWorldMayShareContactsWithOthersSKey",categoryGroupIDMKey:"syncSWorldCategoryGroupIDMKey",commandLMKey:"syncSWorldCommandLMKey",calUserIDKey:"syncSWorldCalUserIDKey",guidLuidMKey:"syncSWorldContactsGuidLuidMKey",eventGuidLuidMKey:"syncSWorldCalCompGuidLuidMKey",swEventModelKey:"syncSWorldSwEventModelKey",swEventDeletedModelKey:"syncSWorldSwEventDeletedModelKey",swTodoModelKey:"syncSWorldSwTodoModelKey",swTodoDeletedModelKey:"syncSWorldSwTodoDeletedModelKey",monthRecurEventMKey:"swMonthRecurEventMKey",calendarOptimisticVersionMKey:"calendarOptimisticVersionMKey",monthEventMOptimisticVersionMKey:"monthEventMOptimisticVersionMKey",emInvoiceMKey:"emInvoiceMKey",emItemMKey:"emItemMKey",emLocationMKey:"emLocationMKey",emEmailMKey:"emEmailMKey",swemuserMKey:"swemuserMKey",startup:function(aStoragePrefix){if(aStoragePrefix){this.storagePrefix=aStoragePrefix;}
else{this.storagePrefix="";}
var hrefLC=window.location.href.toLowerCase();if(hrefLC.indexOf("https")===0){this.storagePrefix="ssl"+this.storagePrefix;}
this.syncURL="/sw2/commandV3";var hostLC=window.location.hostname.toLowerCase();if(hostLC.indexOf("scheduleworld")>=0){this.loggingEnabled=false;}
else{this.loggingEnabled=true;}
this.loggingEnabled=true;if(typeof console=='undefined'){this.loggingEnabled=false;}
if(this.loggingEnabled){this.log("startup()");}
try{this.loadSyncSWorldPrefs();this.loadCalendarOptimisticVersionM();this.loadMonthEventMOptimisticVersionM();this.loadUserSettingsDTO();this.loadSwContactModel();this.loadSwContactDeletedModel();this.loadSwTodoModel();this.loadSwTodoDeletedModel();this.loadSwEventModel();this.loadSwEventDeletedModel();this.loadSwNoteModel();this.loadSwNoteDeletedModel();this.abAvailable=true;this.loadGroupIDNameM();this.loadGroupIDCalUserIDSM();this.loadInviteEmailGroupIDSM();this.loadCategoryGroupIDM();this.loadMonthRecurEventM();this.loadCommandLM();this.loadMayShareContactsWithMeS();this.loadMayShareContactsWithOthersS();this.loadInvoiceM();this.loadLocationM();this.loadEmailM();this.loadItemM();this.loadSwemuserM();}catch(ex){if(this.loggingEnabled){this.log("Failed loading initial data:"+ex);}}
this.calAvailable=true;this.contactAddedListeners=[];this.contactUpdatedListeners=[];this.contactDeletedListeners=[];this.contactDeleteAllListeners=[];this.todoAddedListeners=[];this.todoUpdatedListeners=[];this.todoDeletedListeners=[];this.todoDeleteAllListeners=[];this.noteAddedListeners=[];this.noteUpdatedListeners=[];this.noteDeletedListeners=[];this.noteDeleteAllListeners=[];this.eventAddedListeners=[];this.eventUpdatedListeners=[];this.eventDeletedListeners=[];this.eventDeleteAllListeners=[];this.monthRecurEventMChangedListeners=[];this.generalSettingsChangedListeners=[];if(this.syncSWorldPrefs.autoSync){this.autoSyncTimer=setTimeout(this.doAutoSync.$(this),this.autoSyncTimeoutMS);if(this.loggingEnabled){this.log("autoSync timeout(ms):"+this.autoSyncTimeoutMS);}}},doAutoSync:function(){this.log("doAutoSync()");this.isAutoSync=true;this.sync();},loggingEnabled:true,log:function(message){if(typeof dump=='function'){dump(message+"\n");}
if(typeof console=='undefined'){return;}
if(typeof console.log!='function'){return;}
console.log(message);},logError:function(message){if(typeof dump=='function'){dump(message+"\n");}
if(typeof console=='undefined'){return;}
if(typeof console.log!='function'){return;}
console.log(message);},shutdown:function(){},copySyncResult2Prefs:function(){if(!this.syncResult){return;}},saveCategories:function(categoryArray){if(!categoryArray||categoryArray.length===0){return;}
try{var newCategories=categoryArray.join(",");if(this.loggingEnabled){this.log("saved categories:"+newCategories);}}catch(ex){if(this.loggingEnabled){this.log("Failed to get calendar categories preferences:"+ex);}}},trim:function(s){return s.replace(/^\s+|\s+$/g,'');},sync:function(){if(this.syncInProgress){return;}
this.syncMode=this.SYNC_NORMAL;this.syncEvents=true;this.syncTodos=true;this.syncContacts=true;this.syncNotes=true;this.syncAll();},syncReplaceLocalData:function(){if(this.syncInProgress){return;}
this.syncMode=this.SYNC_REPLACE_LOCAL_DATA;this.resetGuidLuidM();this.syncAll();},syncAll:function(){if(this.syncInProgress){return;}
this.contactSync();this.calendarSync();},syncReplaceServerData:function(){if(this.syncInProgress){return;}
this.syncInit();this.syncItems.syncMode=this.SYNC_REPLACE_SERVER_DATA;this.resetGuidLuidM();this.syncWork();},syncSlow:function(){if(this.syncInProgress){return;}
this.syncInit();this.syncItems.syncMode=this.SYNC_SLOW;this.resetGuidLuidM();this.syncWork();},resetGuidLuidM:function(){this.guidLuidM={};},requestTimeout:function(){this.request.abort();this.log("Request timed out.");alert("Request timed out.");},handleIncomingEventSyncResult:function(answer){this.syncResult=answer;try{if(this.syncResult.failedI18nKey){var i18nErrorMessage=this.i18n(this.syncResult.failedI18nKey);if(!i18nErrorMessage){i18nErrorMessage=this.syncResult.failedI18nKey;}
this.log("Event sync failed.","Server error message:"+
i18nErrorMessage);alert("Server error:"+i18nErrorMessage);this.timeoutID=setTimeout(this.finishedEvents.$(this),100);return;}}catch(ex){this.log("handleIncomingEventSyncResult() failed"+ex);this.timeoutID=setTimeout(this.finishedEvents.$(this),100);return;}
var nextSyncAnchor=this.syncResult.nextSyncAnchor;if(this.syncResult.optimisticVersionM){if(!this.calendarOptimisticVersionM){this.calendarOptimisticVersionM={};}
for(var idICalendarID in this.syncResult.optimisticVersionM){if(this.syncResult.optimisticVersionM.hasOwnProperty(idICalendarID)){var optimisticVersion=this.syncResult.optimisticVersionM[idICalendarID];this.calendarOptimisticVersionM[idICalendarID]=optimisticVersion;this.syncSWorldPrefs.eventNextSyncAnchorM[idICalendarID]=nextSyncAnchor;if(this.iCalendarIDEventIDCache){delete this.iCalendarIDEventIDCache[idICalendarID];}
if(this.iCalendarIDTodoIDCache){delete this.iCalendarIDTodoIDCache[idICalendarID];}}}}
this.saveCalendarOptimisticVersionM(this.handleIncomingEventSyncResult2.$(this));},handleIncomingEventSyncResult2:function(){if(this.syncResult.ICalLuid2CompIDM){var found=false;for(var iCalendarID in this.syncResult.ICalLuid2CompIDM){if(this.syncResult.ICalLuid2CompIDM.hasOwnProperty(iCalendarID)){if(!iCalendarID){continue;}
var luid2CompIDM=this.syncResult.ICalLuid2CompIDM[iCalendarID];var iCalendar=this.swEventModel[iCalendarID];if(!iCalendar){iCalendar={};this.swEventModel[iCalendarID]=iCalendar;}
for(var luid in luid2CompIDM){if(luid2CompIDM.hasOwnProperty(luid)){var compID=luid2CompIDM[luid];iCalendar=this.swEventModel[iCalendarID];var event=iCalendar[luid];if(!event){iCalendar=this.swTodoModel[iCalendarID];if(!iCalendar){iCalendar={};this.swTodoModel[iCalendarID]=iCalendar;}
event=iCalendar[luid];}
found=false;if(!event){iCalendar=this.swEventModel[iCalendarID];for(var calLuid in iCalendar){if(iCalendar.hasOwnProperty(calLuid)){event=iCalendar[calLuid];if(event.hasOwnProperty("exceptions")){for(var i=0;i<event.exceptions.length;++i){var exception=event.exceptions[i];if(exception.id==luid){exception.compID=compID;found=true;break;}}}}
if(found){break;}}
if(!found){iCalendar=this.swTodoModel[iCalendarID];for(var calLuid in iCalendar){if(iCalendar.hasOwnProperty(calLuid)){event=iCalendar[calLuid];if(event.hasOwnProperty("exceptions")){for(var i=0;i<event.exceptions.length;++i){var exception=event.exceptions[i];if(exception.id==luid){exception.compID=compID;found=true;break;}}}}
if(found){break;}}}}
if(found){continue;}
if(!event){this.log("Failed to set event or todo compID.");continue;}
event.compID=compID;}}}}}
this.timeoutID=setTimeout(this.handleEventDeletes.$(this),100);},removeDeletedOnServer:function(){var deletedCount=0;this.setStatus("Deleting local contacts:");var luidL=[];for(var calUserID in this.syncResult.deletedGuidM){if(this.syncResult.deletedGuidM.hasOwnProperty(calUserID)){var guidL=this.syncResult.deletedGuidM[calUserID];for(var i=0;i<guidL.length;++i){var guid=guidL[i];if(!this.guidLuidM[guid]){continue;}
var luid=this.guidLuidM[guid];delete this.guidLuidM[guid];delete this.swContactModel[luid];luidL.push(luid);}}}
this.contactDeletedFromServer(luidL);},removeDeletedNotesOnServer:function(){var deletedCount=0;this.setStatus("Deleting local notes:");for(var i=0;i<this.syncResult.deletedGuidL.length;++i){var guid=this.syncResult.deletedGuidL[i];var luid=this.guidLuidM[guid];if(!luid){continue;}
delete this.guidLuidM[guid];delete this.swNoteModel[luid];this.noteDeletedFromServer(luid);}},removeDeletedEventsOnServer:function(){this.log("Deleting local events/todos:");if(!this.syncResult.eventDeletedGuidM){return;}
var iCalendar;for(var idICalendarID in this.syncResult.eventDeletedGuidM){if(this.syncResult.eventDeletedGuidM.hasOwnProperty(idICalendarID)){var deletedICalendar=this.syncResult.eventDeletedGuidM[idICalendarID];for(var key in deletedICalendar){if(deletedICalendar.hasOwnProperty(key)){var deletedGuid=deletedICalendar[key];var existingLuid=this.eventGuidLuidM[deletedGuid];iCalendar=null;if(existingLuid){iCalendar=this.swEventModel[idICalendarID];}
else{existingLuid=this.todoGuidLuidM[deletedGuid];iCalendar=this.swTodoModel[idICalendarID];}
if(!iCalendar){continue;}
delete iCalendar[existingLuid];}}}}},getYear:function(yyyymmdd){var index=yyyymmdd.indexOf("-");if(index<0){return-1;}
return yyyymmdd.substring(0,index);},getMonth:function(yyyymmdd){var index=yyyymmdd.indexOf("-");if(index<0){return-1;}
var index2=yyyymmdd.indexOf("-",index+1);if(index2<0){return-1;}
return yyyymmdd.substring(index+1,index2);},getDayOfMonth:function(yyyymmdd){var index=yyyymmdd.lastIndexOf("-");if(index<0){return-1;}
return yyyymmdd.substring(index+1);},addNote:function(swNote){if(this.syncItems.syncMode==this.SYNC_SLOW||this.syncItems.syncMode==this.SYNC_REPLACE_SERVER_DATA||swNote.brandNew){this.addNewNote(swNote);}
else{this.addUpdatedNote(swNote);}},addNewNote:function(note){var newNotes=this.syncItems.newNotes;if(!newNotes){newNotes=[];this.syncItems.newNotes=newNotes;}
newNotes.push(note);},addUpdatedNote:function(note){var updated=this.syncItems.updated;if(!updated){updated=[];this.syncItems.updated=updated;}
updated.push(note);},handleNewAndUpdatedNotes:function(){if(!this.syncResult.fromServerNotesM){return;}
var newOrUpdated=0;if(!this.swNoteModel){this.swNoteModel={};}
for(var guid in this.syncResult.fromServerNotesM){if(this.syncResult.fromServerNotesM.hasOwnProperty(guid)){var note=this.syncResult.fromServerNotesM[guid];var luid=this.guidLuidM[guid];note.guid=guid;if(!luid){if(note.conflict){++this.noteConflictCount;this.log("new conflict");continue;}
luid=this.getNextLUID();note.id=luid;this.swNoteModel[luid]=note;++this.noteAddedCount;this.noteAddedFromServer(note);}
else{this.swNoteModel[luid]=note;++this.noteUpdatedCount;note.id=luid;this.noteUpdatedFromServer(note);}}}
this.log("handleNewAndUpdatedNotes() finished.");},addContact:function(swContact){if(this.syncItems.syncMode==this.SYNC_SLOW||this.syncItems.syncMode==this.SYNC_REPLACE_SERVER_DATA||swContact.brandNew){this.addNewContact(swContact);}
else{this.addUpdatedContact(swContact);}},addNewContact:function(contact){var newContacts=this.syncItems.newContacts;if(!newContacts){newContacts=[];this.syncItems.newContacts=newContacts;}
newContacts.push(contact);},addUpdatedContact:function(contact){var updated=this.syncItems.updated;if(!updated){updated=[];this.syncItems.updated=updated;}
updated.push(contact);},handleNewAndUpdated:function(){this.log("handleNewAndUpdates() contacts");if(!this.syncResult.fromServerContactsM){return;}
var newOrUpdated=0;if(!this.swContactModel){this.swContactModel={};}
this.contactAddedCount=0;this.contactConflictCount=0;this.contactUpdatedCount=0;var contactAddedL=[];for(var serverCalUserKey in this.syncResult.fromServerContactsM){if(this.syncResult.fromServerContactsM.hasOwnProperty(serverCalUserKey)){var incomingCalUser=this.syncResult.fromServerContactsM[serverCalUserKey];for(var guid in incomingCalUser){if(incomingCalUser.hasOwnProperty(guid)){var contact=incomingCalUser[guid];var luid=this.guidLuidM[guid];contact.guid=guid;delete contact.brandNew;if(!luid){if(contact.conflict){++this.contactConflictCount;continue;}
luid=this.getNextLUID();contact.id=luid;this.swContactModel[luid]=contact;++this.contactAddedCount;this.contactAddedFromServer(contact);}
else{this.swContactModel[luid]=contact;++this.contactUpdatedCount;contact.id=luid;this.contactUpdatedFromServer(contact);}}}}}
this.log("handleNewAndUpdated() finished. added:"+this.contactAddedCount+", updated:"+this.contactUpdatedCount);},handleFailed:function(){},handleEventDeletes:function(){clearTimeout(this.timeoutID);this.log("Handle event deletes.");try{if(this.syncEvents||this.syncTodos){if(this.syncItemCalendar.syncMode==this.SYNC_NORMAL&&this.syncResult.eventDeletedGuidM){this.removeDeletedEventsOnServer();}}}catch(ex){this.log("handleEventDeletes() failed"+ex);this.timeoutID=setTimeout(this.finishedEvents.$(this),100);return;}
this.timeoutID=setTimeout(this.handleEventConflicts.$(this),100);},handleEventConflicts:function(){clearTimeout(this.timeoutID);this.log("Handling event conflicts.");try{this.handleEventConflictsWork();}catch(ex){this.log("handleEventConflicts() failed"+ex);this.timeoutID=setTimeout(this.finishedEvents.$(this),100);return;}
this.handleEventNewAndUpdated(true);this.handleEventNewAndUpdated(false);this.timeoutID=setTimeout(this.handleEventFailed.$(this),100);},handleEventConflictsWork:function(){if(!this.syncResult.icalLuidGuidConflictM){return;}
this.log("Event/Todo Conflicts:");},fixTZ:function(tz){if(tz=="floating"){return tz;}
if(tz=="utc"){tz="Etc/GMT";return tz;}
var zoneID=tz;var zone=swTZdata.zoneM[tz];if(!zone){var index=tz.indexOf("/",1);if(index>0){zoneID=tz.substring(index+1);zone=swTZdata.zoneM[zoneID];if(!zone){index=tz.indexOf("/",index+1);if(index>0){zoneID=tz.substring(index+1);zone=swTZdata.zoneM[zoneID];}}}}
if(!zone){if(this.loggingEnabled){this.log("syncSWorld failed to find timezone:"+tz);}
zoneID="Etc/GMT";}
return zoneID;},handleEventNewAndUpdated:function(forEvents){this.log("Handling new and updated events:"+forEvents);var calCompM;if(forEvents){calCompM=this.syncResult.fromServerEventsM;if(!this.eventGuidLuidM){this.eventGuidLuidM={};}}
else{calCompM=this.syncResult.fromServerTodoM;if(!this.todoGuidLuidM){this.todoGuidLuidM={};}}
if(!calCompM){return;}
try{var size=0;var newEvents=0;var updatedEvents=0;for(var iCalendarID in calCompM){if(calCompM.hasOwnProperty(iCalendarID)){var serverEventsM=calCompM[iCalendarID];size=0;newEvents=0;updatedEvents=0;for(var eventGuid in serverEventsM){if(serverEventsM.hasOwnProperty(eventGuid)){++size;var incomingEvent=serverEventsM[eventGuid];incomingEvent.guid=eventGuid;delete incomingEvent.start;delete incomingEvent.end;delete incomingEvent.endIsDate;delete incomingEvent.endYear;delete incomingEvent.endMonth;delete incomingEvent.endDayOfMonth;delete incomingEvent.endHourOfDay;delete incomingEvent.endMinute;delete incomingEvent.endSecond;delete incomingEvent.endTimeZone;delete incomingEvent.recurrenceId;delete incomingEvent.due;delete incomingEvent.completed;delete incomingEvent.duration;if(incomingEvent.startTimeZone){incomingEvent.startTimeZone=this.fixTZ(incomingEvent.startTimeZone);}
if(incomingEvent.dueTimeZone){incomingEvent.dueTimeZone=this.fixTZ(incomingEvent.dueTimeZone);}
if(incomingEvent.completedTimeZone){incomingEvent.completedTimeZone=this.fixTZ(incomingEvent.completedTimeZone);}
var existingLuid;if(forEvents){existingLuid=this.eventGuidLuidM[eventGuid];}
else{existingLuid=this.todoGuidLuidM[eventGuid];}
if(!existingLuid){if(incomingEvent.conflict){continue;}
if(forEvents){this.createAndSaveNewEvent(iCalendarID,incomingEvent);++newEvents;}
else{this.createAndSaveNewTodo(iCalendarID,incomingEvent);}}
else{if(forEvents){incomingEvent.id=existingLuid;this.updateEvent(iCalendarID,incomingEvent);++updatedEvents;}
else{incomingEvent.id=existingLuid;this.updateTodo(iCalendarID,incomingEvent);}}
if(incomingEvent.exceptions){for(var i=0;i<incomingEvent.exceptions.length;++i){var exception=incomingEvent.exceptions[i];if(exception.startTimeZone){exception.startTimeZone=this.fixTZ(exception.startTimeZone);}
if(exception.recurrenceIdTimeZone){exception.recurrenceIdTimeZone=this.fixTZ(exception.recurrenceIdTimeZone);}
exception.iCalendarID=iCalendarID;}}}}
this.log("item size for iCalendarID:"+iCalendarID+" = "+size);this.log("newEvents size for iCalendarID:"+iCalendarID+" = "+newEvents);this.log("updatedEvents size for iCalendarID:"+iCalendarID+" = "+updatedEvents);}}}catch(ex){this.log("handleEventNewAndUpdated() failed"+ex);this.timeoutID=setTimeout(this.finishedEvents.$(this),100);return;}},updateEvent:function(iCalendarID,swEvent){swEvent.iCalendarID=iCalendarID;var iCalendar=this.swEventModel[iCalendarID];if(!iCalendar){iCalendar={};this.swEventModel[iCalendarID]=iCalendar;}
iCalendar[swEvent.id]=swEvent;},updateTodo:function(iCalendarID,swTodo){swTodo.iCalendarID=iCalendarID;var iCalendar=this.swTodoModel[iCalendarID];if(!iCalendar){iCalendar={};this.swTodoModel[iCalendarID]=iCalendar;}
iCalendar[swTodo.id]=swTodo;},createAndSaveNewEvent:function(iCalendarID,swEvent){swEvent.id=this.getNextLUID();swEvent.iCalendarID=iCalendarID;var iCalendar=this.swEventModel[iCalendarID];if(!iCalendar){iCalendar={};this.swEventModel[iCalendarID]=iCalendar;}
iCalendar[swEvent.id]=swEvent;if(swEvent.hasOwnProperty("exceptions")){for(var i=0;i<swEvent.exceptions.length;++i){var exception=swEvent.exceptions[i];if(!exception.id){exception.id=this.getNextLUID();exception.iCalendarID=iCalendarID;if(exception.startTimeZone){exception.startTimeZone=this.fixTZ(exception.startTimeZone);}
if(exception.endTimeZone){exception.endTimeZone=this.fixTZ(exception.endTimeZone);}}}}},createAndSaveNewTodo:function(iCalendarID,swTodo){swTodo.id=this.getNextLUID();swTodo.iCalendarID=iCalendarID;var iCalendar=this.swTodoModel[iCalendarID];if(!iCalendar){iCalendar={};this.swTodoModel[iCalendarID]=iCalendar;}
iCalendar[swTodo.id]=swTodo;if(swTodo.hasOwnProperty("exceptions")){for(var i=0;i<swTodo.exceptions.length;++i){var exception=swTodo.exceptions[i];if(!exception.id){exception.id=this.getNextLUID();exception.iCalendarID=iCalendarID;if(exception.startTimeZone){exception.startTimeZone=this.fixTZ(exception.startTimeZone);}
if(exception.endTimeZone){exception.endTimeZone=this.fixTZ(exception.endTimeZone);}}}}},markEventDeleted:function(swEvent){swEvent.needsDeleting=true;},deleteEvent:function(swEvent){if(this.loggingEnabled){this.log("deleteEvent() id:"+swEvent.id);}
delete this.swEventModel[swEvent.id];for(var i=0;i<this.eventDeletedListeners.length;++i){var listenerFunc=this.eventDeletedListeners[i];listenerFunc(swEvent);}},deleteAllLocalEvents:function(iCalendarID){if(this.loggingEnabled){this.log("deleteAllLocalEvents("+iCalendarID+")");}
delete this.swEventModel[iCalendarID];this.saveSwEventModel(iCalendarID);delete swApp.syncSWorld.monthRecurEventM;swApp.syncSWorld.monthRecurEventM={};for(var i=0;i<this.eventDeleteAllListeners.length;++i){var listenerFunc=this.eventDeleteAllListeners[i];listenerFunc();}},deleteAllLocalTodos:function(iCalendarID){if(this.loggingEnabled){this.log("deleteAllLocalTodos("+iCalendarID+")");}
delete this.swTodoModel[iCalendarID];this.saveSwTodoModel(iCalendarID);delete swApp.syncSWorld.monthRecurEventM;swApp.syncSWorld.monthRecurEventM={};for(var i=0;i<this.todoDeleteAllListeners.length;++i){var listenerFunc=this.todoDeleteAllListeners[i];listenerFunc();}},contactUpdatedFromServer:function(contact){for(var i=0;i<this.contactUpdatedListeners.length;++i){var listenerFunc=this.contactUpdatedListeners[i];listenerFunc(contact);}},contactAddedFromServer:function(contact){for(var i=0;i<this.contactAddedListeners.length;++i){var listenerFunc=this.contactAddedListeners[i];listenerFunc(contact);}},noteUpdatedFromServer:function(note){if(this.loggingEnabled){this.log("noteUpdatedFromServer()");}
for(var i=0;i<this.noteUpdatedListeners.length;++i){var listenerFunc=this.noteUpdatedListeners[i];listenerFunc(note);}},noteAddedFromServer:function(note){if(this.loggingEnabled){this.log("noteAddedFromServer()");}
for(var i=0;i<this.noteAddedListeners.length;++i){var listenerFunc=this.noteAddedListeners[i];listenerFunc(note);}},markContactDeleted:function(contact){contact.needsDeleting=true;},contactDeletedFromServer:function(contactLUIDs){for(var i=0;i<this.contactDeletedListeners.length;++i){var listenerFunc=this.contactDeletedListeners[i];listenerFunc(contactLUIDs);}},noteDeletedFromServer:function(noteLUID){if(this.loggingEnabled){this.log("noteDeletedFromServer() id:"+noteLUID);}
for(var i=0;i<this.noteDeletedListeners.length;++i){var listenerFunc=this.noteDeletedListeners[i];listenerFunc(noteLUID);}},noteDeleteAll:function(note){if(this.loggingEnabled){this.log("noteDeleteAll()");}
for(var i=0;i<this.noteDeleteAllListeners.length;++i){var listenerFunc=this.noteDeleteAllListeners[i];listenerFunc();}},contactDeleteAll:function(contact){if(this.loggingEnabled){this.log("contactDeleteAll()");}
for(var i=0;i<this.contactDeleteAllListeners.length;++i){var listenerFunc=this.contactDeleteAllListeners[i];listenerFunc();}},markTodoDeleted:function(swTodo){swTodo.needsDeleting=true;},deleteTodo:function(swTodo){if(this.loggingEnabled){this.log("deleteTodo()");}
for(var i=0;i<this.todoDeletedListeners.length;++i){var listenerFunc=this.todoDeletedListeners[i];listenerFunc();}},deleteAllTodo:function(){if(this.loggingEnabled){this.log("deleteAllTodo()");}
for(var i=0;i<this.todoDeleteAllListeners.length;++i){var listenerFunc=this.todoDeleteAllListeners[i];listenerFunc(swTodo);}},handleEventFailed:function(){clearTimeout(this.timeoutID);this.timeoutID=setTimeout(this.finishedEvents.$(this),100);},finishedEvents:function(){clearTimeout(this.timeoutID);this.saveSwEventModelL=[];this.saveSwTodoModelL=[];var idICalendarID=null;if(this.syncResult){var swEventDeletedNeedsSaving=false;var swTodoDeletedNeedsSaving=false;this.saveCategories(this.syncResult.categoryS);for(idICalendarID in this.syncResult.optimisticVersionM){if(this.syncResult.optimisticVersionM.hasOwnProperty(idICalendarID)){var iCalendar=this.swEventModel[idICalendarID];if(iCalendar){for(var luid in iCalendar){if(iCalendar.hasOwnProperty(luid)){var event=iCalendar[luid];delete event.dirty;delete event.brandNew;}}}
this.saveSwEventModelL.push(idICalendarID);delete this.swEventDeletedModel[idICalendarID];swEventDeletedNeedsSaving=true;}}
for(idICalendarID in this.syncResult.optimisticVersionM){if(this.syncResult.optimisticVersionM.hasOwnProperty(idICalendarID)){var iCalendar2=this.swTodoModel[idICalendarID];if(iCalendar2){for(var luid2 in iCalendar2){if(iCalendar2.hasOwnProperty(luid2)){var todo=iCalendar2[luid2];delete todo.dirty;delete todo.brandNew;}}}
this.saveSwTodoModelL.push(idICalendarID);delete this.swTodoDeletedModel[idICalendarID];swTodoDeletedNeedsSaving=true;}}
if(swEventDeletedNeedsSaving){this.saveSwEventDeletedModel();}
if(swTodoDeletedNeedsSaving){this.saveSwTodoDeletedModel();}
this.copySyncResult2Prefs();this.saveSyncSWorldPrefs(this.finishedEvents2.$(this));return;}
else{if(this.idICalendarIDLCurrent){for(var i=0;i<this.idICalendarIDLCurrent.length;++i){this.saveSwEventModelL.push(this.idICalendarIDLCurrent[i]);this.saveSwTodoModelL.push(this.idICalendarIDLCurrent[i]);}}
else{for(idICalendarID in this.swEventModel){if(this.swEventModel.hasOwnProperty(idICalendarID)){this.saveSwEventModelL.push(idICalendarID);this.saveSwTodoModelL.push(idICalendarID);}}}}
this.finishedEvents2();},finishedEvents2:function(){var idICalendarID=this.saveSwEventModelL.pop();if(idICalendarID){this.saveSwEventModel(idICalendarID,this.finishedEvents2.$(this));return;}
idICalendarID=this.saveSwTodoModelL.pop();if(idICalendarID){this.saveSwTodoModel(idICalendarID,this.finishedEvents2.$(this));return;}
this.saveMonthRecurEventM();if(this.syncResult&&this.syncResult.userSettingsDTO){this.userSettingsDTO=this.syncResult.userSettingsDTO;this.saveUserSettingsDTO(this.finishedEvents3.$(this));}
this.notifySyncStop();},finishedEvents3:function(){if(this.syncResult&&this.syncResult.reloadBrowser){window.location.reload(true);}},handleIncomingSyncResult:function(answer){this.syncResult=answer;this.log("handleIncomingSyncResult()");if(this.syncResult.failedI18nKey){var i18nErrorMessage=this.i18n(this.syncResult.failedI18nKey);if(!i18nErrorMessage){i18nErrorMessage=this.syncResult.failedI18nKey;}
this.abortSync("Server error message:"+i18nErrorMessage);alert("Server error:"+i18nErrorMessage);return;}
var contact;var luidGuidM;var luid;if(this.syncResult.luidGuidM){for(var calUser in this.syncResult.luidGuidM){if(this.syncResult.luidGuidM.hasOwnProperty(calUser)){luidGuidM=this.syncResult.luidGuidM[calUser];for(luid in luidGuidM){if(luidGuidM.hasOwnProperty(luid)){contact=this.swContactModel[luid];if(contact){contact.guid=luidGuidM[luid];}}}}}}
if(this.syncResult.luidSwIdM){for(luid in this.syncResult.luidSwIdM){if(this.syncResult.luidSwIdM.hasOwnProperty(luid)){contact=this.swContactModel[luid];if(contact){contact.swId=this.syncResult.luidSwIdM[luid];}}}}
for(luid in this.swContactModel){if(this.swContactModel.hasOwnProperty(luid)){contact=this.swContactModel[luid];delete contact.dirty;delete contact.brandNew;delete contact.daysOld;}}
this.saveCategories(this.syncResult.categoryS);this.handleIncomingSyncResult2();},handleIncomingSyncResult2:function(){this.log("handleIncomingSyncResult2()");this.groupIDCalUserIDSM=this.syncResult.groupIDCalUserIDSM;this.saveGroupIDCalUserIDSM(this.handleIncomingSyncResult3.$(this));},handleIncomingSyncResult3:function(){this.log("handleIncomingSyncResult3()");this.groupIDNameM=this.syncResult.groupIDNameM;this.saveGroupIDNameM(this.handleIncomingSyncResult4.$(this));},handleIncomingSyncResult4:function(){this.log("handleIncomingSyncResult4()");this.inviteEmailGroupIDSM=this.syncResult.inviteEmailGroupIDSM;this.saveInviteEmailGroupIDSM(this.handleIncomingSyncResult5.$(this));},handleIncomingSyncResult5:function(){this.log("handleIncomingSyncResult5()");this.categoryGroupIDM=this.syncResult.categoryGroupIDM;this.saveCategoryGroupIDM(this.handleIncomingSyncResult6.$(this));},handleIncomingSyncResult6:function(){this.log("handleIncomingSyncResult6()");this.mayShareContactsWithMeS=this.syncResult.mayShareContactsWithMeS;this.saveMayShareContactsWithMeS(this.handleIncomingSyncResult7.$(this));},handleIncomingSyncResult7:function(){this.log("handleIncomingSyncResult7()");this.mayShareContactsWithOthersS=this.syncResult.mayShareContactsWithOthersS;this.saveMayShareContactsWithOthersS(this.handleIncomingSyncResult8.$(this));},handleIncomingSyncResult8:function(){if(this.syncResult.commandLM){if((!this.commandLM)||this.commandLM.length===0){this.commandLM=this.syncResult.commandLM;}
else{for(var i=0;i<this.syncResult.commandLM.length;++i){this.commandLM.push(this.syncResult.commandLM[i]);}}
this.saveCommandLM(this.handleContactDeletes.$(this));}
else{this.handleContactDeletes();}},handleContactDeletes:function(){this.log("handleContactDeletes()");if(this.syncItems.syncMode==this.SYNC_REPLACE_LOCAL_DATA){this.log("Deleting local cards.");this.deleteLocalContacts();}
if(this.syncItems.syncMode==this.SYNC_NORMAL&&this.syncResult.deletedGuidM){this.removeDeletedOnServer();}
this.swContactDeletedModel={};this.saveSwContactDeletedModel(this.handleContactConflicts.$(this));},handleContactConflicts:function(){clearTimeout(this.timeoutID);this.log("Handling contact conflicts.");this.timeoutID=setTimeout(this.handleContactNewAndUpdated.$(this),100);},handleContactNewAndUpdated:function(){clearTimeout(this.timeoutID);this.handleNewAndUpdated();this.timeoutID=setTimeout(this.handleContactFailed.$(this),100);},handleContactFailed:function(){clearTimeout(this.timeoutID);this.log("handleContactFailed");this.setStatus("Update contact last-modified times.");this.timeoutID=setTimeout(this.updateContactLastModified.$(this),100);this.updateContactLastModified();},updateContactLastModified:function(){clearTimeout(this.timeoutID);this.log("updateContactLastModified()");this.timeoutID=setTimeout(this.finishedContacts.$(this),100);},finishedContacts:function(){this.log("finishedContacts()");clearTimeout(this.timeoutID);this.finishedContactsStep2();},finishedContactsStep2:function(){if(this.syncResult){this.syncSWorldPrefs.contactsSyncAnchor=this.syncResult.nextSyncAnchor;}
this.saveSyncSWorldPrefs(this.finishedContactsStep3.$(this));},finishedContactsStep3:function(){this.saveSwContactModel(this.finishedContactsStep4.$(this));},finishedContactsStep4:function(){if(this.loggingEnabled){this.log("finshedContactsStep4()");}
this.timeoutID=setTimeout(this.finishedContactsFinal.$(this),100);},finishedContactsFinal:function(){clearTimeout(this.timeoutID);this.contactSyncDone=true;delete this.syncItems;if(this.syncResult){this.notifyContactSyncStop();}
else{this.notifyContactSyncStop(true);}
this.log("finshedContactsFinal()");},setStatus:function(status){this.percentComplete+=10;var progressValue=""+this.percentComplete+"%";},setStatusNum:function(statusNum){},setStatusButton:function(text){if(this.isAutoSync){this.isAutoSync=false;if(this.syncSWorldPrefs.autoSync){this.autoSyncTimer=setTimeout(this.doAutoSync.$(this),this.autoSyncTimeoutMS);}}
this.syncInProgress=false;},setStatusItemsReceived:function(num){},noteSync:function(mode){this.syncMode=mode;if(this.loggingEnabled){this.log("noteSync()");}
this.syncItems={};this.syncItems.syncMode=mode;if(!this.syncItems.syncMode){this.syncItems.syncMode=this.SYNC_NORMAL;}
this.notifySyncStart();this.touchedNotes=[];this.syncInProgress=true;this.updateLUIDLastModifiedDateM={};this.localNotesCount=0;this.localNotesUpdatedNewCount=0;this.sentItemCount=0;this.percentComplete=0;this.noteSyncDone=false;this.noteAddedCount=0;this.noteUpdatedCount=0;this.noteConflictCount=0;this.guidLuidM={};if(typeof this.syncSWorldPrefs.notesSyncAnchor=="undefined"||this.syncSWorldPrefs.notesSyncAnchor===null){this.syncSWorldPrefs.notesSyncAnchor=0;}
this.syncItems.lastSyncAnchor=this.syncSWorldPrefs.notesSyncAnchor;if(this.syncItems.syncMode==this.SYNC_REPLACE_LOCAL_DATA){this.syncItems.lastSyncAnchor="0";}
if(this.syncItems.lastSyncAnchor=="0"&&this.syncItems.syncMode==this.SYNC_NORMAL){this.syncItems.syncMode=this.SYNC_SLOW;this.resetGuidLuidM();}
if(this.syncItems.syncMode==this.SYNC_SLOW){this.syncItems.lastSyncAnchor="0";this.resetGuidLuidM();}
this.timeoutID=setTimeout(this.examineLocalNotes.$(this),100);},examineLocalNotes:function(){if(this.syncItems.syncMode!=this.SYNC_REPLACE_LOCAL_DATA){if(this.loggingEnabled){this.log("reading local notes");}
for(var luid in this.swNoteModel){if(this.swNoteModel.hasOwnProperty(luid)){var note=this.swNoteModel[luid];this.guidLuidM[note.guid]=luid;if(this.syncItems.syncMode==this.SYNC_SLOW||this.syncItems.syncMode==this.SYNC_REPLACE_SERVER_DATA){this.addNote(note);continue;}
if(note.dirty){this.addNote(note);}}}}
if(this.syncItems.syncMode==this.SYNC_NORMAL){if(this.loggingEnabled){this.log("reading local deleted notes");}
if(this.swNoteDeletedModel){var deletedIDs=[];for(var id in this.swNoteDeletedModel){if(this.swNoteDeletedModel.hasOwnProperty(id)){deletedIDs.push(id);}}
if(deletedIDs.length>0){this.syncItems.deleted=deletedIDs;}}}
this.sendRequest(this.syncItems,"noteSyncItems",this.handleIncomingNoteSyncResult.$(this),this.finishedNotes.$(this));},handleIncomingNoteSyncResult:function(answer){this.syncResult=answer;this.log("handleIncomingNoteSyncResult()");if(this.syncResult.failedI18nKey){var i18nErrorMessage=this.i18n(this.syncResult.failedI18nKey);if(!i18nErrorMessage){i18nErrorMessage=this.syncResult.failedI18nKey;}
this.abortSync("Server error message:"+i18nErrorMessage);alert("Server error:"+i18nErrorMessage);return;}
var note;var luidGuidM=this.syncResult.luidGuidM;var luid;if(luidGuidM){for(luid in luidGuidM){if(luidGuidM.hasOwnProperty(luid)){note=this.swNoteModel[luid];if(note){note.guid=luidGuidM[luid];}}}}
for(luid in this.swNoteModel){if(this.swNoteModel.hasOwnProperty(luid)){note=this.swNoteModel[luid];delete note.dirty;delete note.brandNew;}}
this.handleNoteDeletes();},handleNoteDeletes:function(){this.log("handleNoteDeletes()");if(this.syncItems.syncMode==this.SYNC_REPLACE_LOCAL_DATA){this.log("Deleting local notes.");this.deleteLocalNotes();}
if(this.syncItems.syncMode==this.SYNC_NORMAL&&this.syncResult.deletedGuidL){this.removeDeletedNotesOnServer();}
this.swNoteDeletedModel={};this.saveSwNoteDeletedModel(this.handleNoteConflicts.$(this));},handleNoteConflicts:function(){clearTimeout(this.timeoutID);this.log("Handling note conflicts.");this.timeoutID=setTimeout(this.handleNoteNewAndUpdated.$(this),100);},handleNoteNewAndUpdated:function(){clearTimeout(this.timeoutID);this.log("handleNoteNewAndUpdated()");this.handleNewAndUpdatedNotes();this.timeoutID=setTimeout(this.handleNoteFailed.$(this),100);},handleNoteFailed:function(){clearTimeout(this.timeoutID);this.log("handleNoteFailed");this.updateNoteLastModified();},updateNoteLastModified:function(){this.log("updateNoteLastModified()");this.finishedNotes();},finishedNotes:function(){this.log("finishedNotes()");this.finishedNotesStep2();},finishedNotesStep2:function(){if(this.syncResult){this.syncSWorldPrefs.notesSyncAnchor=this.syncResult.nextSyncAnchor;}
this.saveSyncSWorldPrefs(this.finishedNotesStep3.$(this));},finishedNotesStep3:function(){this.saveSwNoteModel(this.finishedNotesStep4.$(this));},finishedNotesStep4:function(){if(this.loggingEnabled){this.log("finshedNotesStep4()");}
this.timeoutID=setTimeout(this.finishedNotesFinal.$(this),100);},finishedNotesFinal:function(){clearTimeout(this.timeoutID);this.noteSyncDone=true;delete this.syncItems;if(this.syncResult){this.notifyNoteSyncStop();}
else{this.notifyNoteSyncStop(true);}
this.log("finshedNotesFinal()");},contactSync:function(mode){if(this.loggingEnabled){this.log("contactSync()");}
this.syncItems={};this.syncItems.syncMode=mode;if(!this.syncItems.syncMode){this.syncItems.syncMode=this.SYNC_NORMAL;}
this.notifySyncStart();this.touchedContacts=[];this.syncInProgress=true;this.updateLUIDLastModifiedDateM={};this.localContactsCount=0;this.localContactsUpdatedNewCount=0;this.sentItemCount=0;this.percentComplete=0;this.contactSyncDone=false;this.guidLuidM={};if(typeof this.syncSWorldPrefs.contactsSyncAnchor=="undefined"||this.syncSWorldPrefs.contactsSyncAnchor===null){this.syncSWorldPrefs.contactsSyncAnchor=0;}
this.syncItems.lastSyncAnchor=this.syncSWorldPrefs.contactsSyncAnchor;if(this.syncItems.syncMode==this.SYNC_REPLACE_LOCAL_DATA){this.syncItems.lastSyncAnchor="0";this.commandLM=[];}
if(!this.commandLM){this.commandLM=[];}
if(this.syncItems.lastSyncAnchor=="0"&&this.syncItems.syncMode==this.SYNC_NORMAL){this.syncItems.syncMode=this.SYNC_SLOW;this.resetGuidLuidM();}
if(this.syncItems.syncMode==this.SYNC_SLOW){this.syncItems.lastSyncAnchor="0";this.resetGuidLuidM();}
this.timeoutID=setTimeout(this.examineLocalContacts.$(this),100);},examineLocalContacts:function(){if(this.syncItems.syncMode!=this.SYNC_REPLACE_LOCAL_DATA){if(this.loggingEnabled){this.log("reading local contacts");}
for(var luid in this.swContactModel){if(this.swContactModel.hasOwnProperty(luid)){var contact=this.swContactModel[luid];this.guidLuidM[contact.guid]=luid;if(this.syncItems.syncMode==this.SYNC_SLOW||this.syncItems.syncMode==this.SYNC_REPLACE_SERVER_DATA){this.addContact(contact);continue;}
if(contact.dirty){this.addContact(contact);}}}}
if(this.syncItems.syncMode==this.SYNC_NORMAL){if(this.loggingEnabled){this.log("reading local deleted contacts");}
if(this.swContactDeletedModel){var deletedIDs=[];for(var id in this.swContactDeletedModel){if(this.swContactDeletedModel.hasOwnProperty(id)){deletedIDs.push(id);}}
if(deletedIDs.length>0){this.syncItems.deleted=deletedIDs;}}}
this.sendRequest(this.syncItems,"syncItems",this.handleIncomingSyncResult.$(this),this.finishedContacts.$(this));},createEventsXMLRequest:function(){clearTimeout(this.timeoutID);this.log("createEventsXMLRequest()");this.sendRequest(this.eventSyncItems,"eventSyncItems",this.handleIncomingEventSyncResult.$(this),this.finishedEvents.$(this));},sendRequest:function(sendData,docRoot,theCallback,onFailCallback,optionalTimeoutMS){if(!this.requestQueue){this.requestQueue=[];}
this.requestQueue.push({sendData:sendData,docRoot:docRoot,theCallback:theCallback,onFailCallback:onFailCallback,optionalTimeoutMS:optionalTimeoutMS});if(this.requestQueue.length==1){this._goRequest();}},_goRequest:function(){if(this.requestQueue.length>0){var req=this.requestQueue[0];var self=this;var timeoutMS=req.optionalTimeoutMS;if(!timeoutMS){timeoutMS=this.SEND_REQUEST_TIMEOUT_MS;}
this._doRequest(req.sendData,req.docRoot,function(){var currentReq=self.requestQueue[0];var x=0;try{if(currentReq&&typeof currentReq.theCallback=='function'){currentReq.theCallback.apply(this,arguments);}}catch(ex){if(swApp){swApp.log(ex);}
else{alert(ex);}}
self.requestQueue.shift();self._goRequest();},function(){swApp.syncSWorld.log("_goRequest() failed.");try{if(req&&typeof req.onFailCallback=='function'){req.onFailCallback.apply(this,arguments);}}catch(ex){if(swApp){swApp.log(ex);}
else{alert(ex);}}
self.requestQueue.shift();self._goRequest();},timeoutMS);}},_doRequestEM:function(sendData,theCallback,onFailCallback,optionalTimeoutMS){if(!this.kdfResultBytes){var dlg=new DlDialog({title:"Password Based Key Derivation Function",quitBtn:"destroy"});var cont=new DlContainer({parent:dlg});var box=new DlVbox({parent:cont,borderSpacing:10});var progress=new DlProgressBar({parent:box,min:0,max:100,label:"%d% complete"});box.addSeparator();var l=new DlLabel({parent:box,label:"This will run once per page reload."});progress.setSize({x:300});dlg.centerOnParent();dlg.show();var salt=computeSalt();var kdf=new PBKDF2(swApp.syncSWorld.password,salt,200,16);var status_callback=function(percent_done){progress.setValue(percent_done);};var result_callback=function(key){swApp.syncSWorld.kdfResultBytes=key.hexToBytes();dlg.destroy();this._doRequestEMWork(sendData,theCallback,onFailCallback,optionalTimeoutMS);}
kdf.deriveKey(status_callback,result_callback.$(this));}
else{this._doRequestEMWork(sendData,theCallback,onFailCallback,optionalTimeoutMS);}},_doRequestEMWork:function(sendData,theCallback,onFailCallback,optionalTimeoutMS){var timeout=optionalTimeoutMS|this.SEND_REQUEST_TIMEOUT_MS;sendData.caluserid=this.syncSWorldPrefs.currentCalUserID.substring(2);var json=DlJSON.encode(sendData);var swArgs={};if(swApp.syncSWorld.userSettingsDTO.swuserid){swArgs.userid=swApp.syncSWorld.userSettingsDTO.swuserid;}
else{swArgs.userid=this.syncSWorldPrefs.currentCalUserID;}
if(swArgs.userid.indexOf("id")===0){swArgs.userid=swArgs.userid.substring(2);}
var aes=new DlCryptAES({key:swApp.syncSWorld.kdfResultBytes,mode:"CTR"});aes.setTimestampIV();swArgs.iv=aes.getIV();var jsonBytes=json.toBytes();var jsonBytesHex=jsonBytes.map("hex",2).join("");var data=aes.encodeBytes(jsonBytes);var dataHex=data.map("hex",2).join("");var rpc=new DlRPC({url:this.getEMSyncURL(sendData),callback:this.handleResponse.$(this,theCallback,onFailCallback),args:swArgs,timeout:timeout,data:dataHex});rpc.call();},_doRequest:function(sendData,docRoot,theCallback,onFailCallback,optionalTimeoutMS){if(!sendData){return;}
if(sendData.em){this._doRequestEM(sendData,theCallback,onFailCallback,optionalTimeoutMS);return;}
if(!this.syncSWorldPrefs.clientNonce&&this.syncSWorldPrefs.clientNonce<1){this.syncSWorldPrefs.clientNonce=1;}
this.sendRequestData=sendData;this.sendRequestData.version=this.MODEL_VERSION;this.sendRequestData.clientNonce=this.syncSWorldPrefs.clientNonce;this.sendRequestData.deviceID=this.syncSWorldPrefs.deviceID;this.log("using sessionID:"+this.sessionID+", clientNonce:"+
this.syncSWorldPrefs.clientNonce);this.sendRequestData.password=hex_sha256(this.sessionID+
this.syncSWorldPrefs.clientNonce);this.sendRequestData.userAgent="sw2-"+"1149";this.sendRequestData.calUserVersion=this.userSettingsDTO.version;this.sendRequestDocRoot=docRoot;var xml=Sarissa.xmlize(this.sendRequestData,docRoot);var swArgs={};if(this.sendRequestData.urlArgs){swArgs=this.sendRequestData.urlArgs;}
swArgs.user=this.username;if(docRoot.indexOf("backup")===0){swArgs.routeInfo="backup";}
swArgs.cmd=docRoot;var timeout=this.SEND_REQUEST_TIMEOUT_MS;if(typeof optionalTimeoutMS!="undefined"){timeout=optionalTimeoutMS;}
var rpc=new DlRPC({url:this.getSyncURL(docRoot),callback:this.handleResponse.$(this,theCallback,onFailCallback),args:swArgs,timeout:timeout,data:xml});rpc.call();return;},getSyncURL:function(docRoot){return this.syncURL;},getEMSyncURL:function(sendData){return"/em/"+sendData.command;},handleResponse:function(onSuccessCallback,onFailCallback,answer){if(!answer||!answer.success||!answer.text||answer.text=="null"||answer.text=="null\n"){if(onFailCallback){onFailCallback();return;}
if(this.loggingEnabled){this.log(this.i18n("Communicating with the server failed."));}
return;}
var response=swEval(answer.text);if(response.calUserIDFNM&&response.currentCalUserID){this.syncSWorldPrefs.userFN=response.calUserIDFNM[response.currentCalUserID];this.syncSWorldPrefs.currentCalUserID=response.currentCalUserID;}
if(response.nextSyncAnchor){this.syncSWorldPrefs.clientNonce=response.nextSyncAnchor;}
if(response.sessionID&&response.sessionID!='null'){if(response.sessionID!=this.sessionID){this.sessionID=response.sessionID;var swCookie=this.loadObject(this.SW_COOKIE);swCookie.sessionID=response.sessionID;this.saveObject(this.SW_COOKIE,swCookie);}}
this.saveSyncSWorldPrefs(this.handleResponseStep2.$(this,onSuccessCallback,onFailCallback,response));return;},handleResponseScriptIO:function(onSuccessCallback,onFailCallback,response){if(response.nextSyncAnchor){this.syncSWorldPrefs.clientNonce=response.nextSyncAnchor;}
this.saveSyncSWorldPrefs(this.handleResponseStep2.$(this,onSuccessCallback,onFailCallback,response));return;},handleResponseStep2:function(onSuccessCallback,onFailCallback,response){if(response.nextSyncAnchor){this.syncSWorldPrefs.clientNonce=response.nextSyncAnchor;}
var rpc=null;if(response.badNonce){if(this.sendRequestData){this.sendRequestData.clientNonce=response.nextSyncAnchor;this.sendRequestData.password=hex_sha256(this.sessionID+
this.syncSWorldPrefs.clientNonce);var xml=Sarissa.xmlize(this.sendRequestData,this.sendRequestDocRoot);var swArgs={};if(this.sendRequestData.urlArgs){swArgs=this.sendRequestData.urlArgs;}
swArgs.user=this.username;if(this.sendRequestDocRoot.indexOf("backup")===0){swArgs.routeInfo="backup";}
delete this.sendRequestData;rpc=new DlRPC({url:this.getSyncURL(this.sendRequestDocRoot),callback:this.handleResponse.$(this,onSuccessCallback,onFailCallback),args:swArgs,timeout:this.SEND_REQUEST_TIMEOUT_MS,data:xml});rpc.call();}
else{if(onFailCallback){onFailCallback(response);}}
return;}
if(response.sessionExpired){this.log("createSession()");var clientNonce=1;var createSession={};createSession.username=this.username;var b64=this.encode(this.password);createSession.passwordB64=hex_sha256(b64+clientNonce);createSession.deviceID=this.syncSWorldPrefs.deviceID;createSession.clientNonce=clientNonce;var xmlCommand=Sarissa.xmlize(createSession,"createSession");var url="/sw2/commandV3";var callback=this.handleResponse.$(this,onSuccessCallback,onFailCallback);if(this.sendRequestData){callback=this.retryWithNewSession.$(this,onSuccessCallback,onFailCallback,url);}
rpc=new DlRPC({url:this.getSyncURL(this.sendRequestDocRoot),callback:callback,args:{user:this.username},data:xmlCommand});rpc.call();return;}
if(response.failedI18nKey&&response.failedI18nKey!=null){this.log("Request failed:"+response.failedI18nKey);if(onFailCallback){onFailCallback(response);}
if(swApp.isPurchasing){return;}
var lc=response.failedI18nKey.toLowerCase();if(lc.indexOf("license expired")>=0){var pc=confirm("Your license has expired.\nClick 'Ok' to purchase a new license.");if(pc){swApp.purchase();}}
if(lc.indexOf("too many contacts")>=0||lc.indexOf("maxContactsAllowed")>=0){alert("You have too many contacts on the server.");}
return;}
else{if(onSuccessCallback){onSuccessCallback(response);}}},retryWithNewSession:function(onSuccessCallback,onFailCallback,protocol,answer){if(answer.success!=true){if(onFailCallback){onFailCallback();return;}
if(this.loggingEnabled){this.log(this.i18n("Communicating with the server failed."));}
return;}
var response=swEval(answer.text);if(response.sessionID&&response.sessionID!='null'){if(response.sessionID!=this.sessionID){this.sessionID=response.sessionID;var swCookie=this.loadObject(this.SW_COOKIE);swCookie.sessionID=response.sessionID;this.saveObject(this.SW_COOKIE,swCookie);}}
if(response.nextSyncAnchor){this.syncSWorldPrefs.clientNonce=response.nextSyncAnchor;}
this.saveSyncSWorldPrefs();if(this.sendRequestData){if(response.nextSyncAnchor){this.sendRequestData.clientNonce=response.nextSyncAnchor;}
this.sendRequestData.password=hex_sha256(this.sessionID+
this.syncSWorldPrefs.clientNonce);var xml=Sarissa.xmlize(this.sendRequestData,this.sendRequestDocRoot);delete this.sendRequestData;var rpc=new DlRPC({url:protocol,callback:this.handleResponse.$(this,onSuccessCallback,onFailCallback),args:{user:this.username},data:xml});rpc.call();}},requestJSONMonths:function(request){this.sendRequest(request,"getJSONMonths",this.handleJSONMonthsResponse.$(this),this.handleJSONMonthsResponse.$(this));},removeICalendar:function(iCalendarID){for(var i=0;i<this.userSettingsDTO.ICalendarInfoL.length;++i){var iCalendarInfo=this.userSettingsDTO.ICalendarInfoL[i];if(iCalendarInfo.ICalendarID==iCalendarID){this.userSettingsDTO.ICalendarInfoL.splice(i,1);break;}}
delete this.monthRecurEventM[iCalendarID];delete this.monthEventMOptimisticVersionM[iCalendarID];delete this.calendarOptimisticVersionM[iCalendarID];delete this.swEventModel[iCalendarID];delete this.swTodoModel[iCalendarID];this.saveUserSettingsDTO(this.removeICalendarB.$(this,iCalendarID));},removeICalendarB:function(iCalendarID){this.saveMonthRecurEventM(this.removeICalendarC.$(this,iCalendarID));},removeICalendarC:function(iCalendarID){this.saveMonthEventMOptimisticVersionM(this.removeICalendarD.$(this,iCalendarID));},removeICalendarD:function(iCalendarID){this.saveCalendarOptimisticVersionM(this.removeICalendarE.$(this,iCalendarID));},removeICalendarE:function(iCalendarID){this.saveSwEventModel(this.removeICalendarF.$(this,iCalendarID));},removeICalendarF:function(iCalendarID){this.saveSwTodoModel(iCalendarID);},handleJSONMonthsResponse:function(response){if(response&&response.badICalendarIDS){for(var i=0;i<response.badICalendarIDS.length;++i){var badICalendarID=response.badICalendarIDS[i];this.removeICalendar(badICalendarID);delete response.jsonMonths.monthRecurEventM[badICalendarID];}}
if(response&&response.jsonMonths.ICalendarIDOptimisticVersionM){if(!this.monthEventMOptimisticVersionM){this.monthEventMOptimisticVersionM={};}
for(var idICalendarID in response.jsonMonths.ICalendarIDOptimisticVersionM){if(response.jsonMonths.ICalendarIDOptimisticVersionM.hasOwnProperty(idICalendarID)){var newOptimisticVersion=response.jsonMonths.ICalendarIDOptimisticVersionM[idICalendarID];var oldOptimisticVersion=this.monthEventMOptimisticVersionM[idICalendarID];if(newOptimisticVersion!=oldOptimisticVersion){if(this.loggingEnabled){this.log("monthEventMOptimisticVersion iCalendar:"+
idICalendarID+" newOptimisticVersion:"+newOptimisticVersion+", != oldOptimisticVersion:"+oldOptimisticVersion);}
if(this.monthRecurEventM){delete this.monthRecurEventM[idICalendarID];}}
this.monthEventMOptimisticVersionM[idICalendarID]=newOptimisticVersion;}}}
this.saveMonthEventMOptimisticVersionM(this.handleJSONMonthsResponseStep2.$(this,response));},handleJSONMonthsResponseStep2:function(response){if(response){for(var iCalendarID in response.jsonMonths.monthRecurEventM){if(response.jsonMonths.monthRecurEventM.hasOwnProperty(iCalendarID)){var ymCidDateM=response.jsonMonths.monthRecurEventM[iCalendarID];var existingYmCidDateM=this.monthRecurEventM[iCalendarID];if(!existingYmCidDateM){existingYmCidDateM={};this.monthRecurEventM[iCalendarID]=existingYmCidDateM;}
for(var ym2 in ymCidDateM){if(ymCidDateM.hasOwnProperty(ym2)){var incomingCidDateM=ymCidDateM[ym2];existingYmCidDateM[ym2]=incomingCidDateM;}}}}}
if(response){this.notifySyncStop();}
else{this.notifySyncStop(true);}},removeFromMonthRecurEventM:function(event,instanceYear,instanceMonth,instanceDayOfMonth,instanceHourOfDay,instanceMinute,instanceSecond,instanceTimeZone){var ymM=this.monthRecurEventM[event.iCalendarID];var gmtValue=swApp.convertTZ2GMT(instanceTimeZone,instanceYear,instanceMonth,instanceDayOfMonth,instanceHourOfDay,instanceMinute,instanceSecond);var ymKey="ym"+gmtValue.year+"-"+gmtValue.month;var cidDateLM=ymM[ymKey];if(!cidDateLM){return;}
var cidDateL=cidDateLM[event.compID];var deleteIndexes=[];for(var i=0;i<cidDateL.length;++i){var dateTimeDTO=cidDateL[i];if(instanceTimeZone==dateTimeDTO.timeZoneID){if(instanceYear==dateTimeDTO.year){if(instanceMonth==dateTimeDTO.month){if(instanceDayOfMonth==dateTimeDTO.dayOfMonth){cidDateL.removeSlice(i,i);break;}}}}
else{swApp.log("ERROR! Timezones were not the same.");}}
event.dirty=true;},getKey:function(useThisPassphrase){var encodedKey=this.encode(useThisPassphrase);var keyLarge=hex_sha256(encodedKey);var key=keyLarge.substring(0,16);return key.toString();},createDisplayName:function(nsIAbCard){var displayName="";if(nsIAbCard.firstName&&nsIAbCard.firstName.length>0){displayName=nsIAbCard.firstName;}
if(nsIAbCard.lastName&&nsIAbCard.lastName.length>0){if(displayName.length>0){displayName+=" ";}
displayName+=nsIAbCard.lastName;}
if(nsIAbCard.company&&nsIAbCard.company.length>0){if(displayName.length===0){displayName=nsIAbCard.company;}}
if(nsIAbCard.primaryEmail&&nsIAbCard.primaryEmail.length>0){if(displayName.length===0){var index=nsIAbCard.primaryEmail.indexOf("@");displayName=nsIAbCard.primaryEmail.substring(0,index);}}
return displayName;},setUserTimeZone:function(tzID){this.userSettingsDTO.timeZoneID=tzID;if(!this.userSettingsDTO.tzIDLRU){this.userSettingsDTO.tzIDLRU=[];}
for(var i=0;i<this.userSettingsDTO.tzIDLRU.length;++i){var existingTZID=this.userSettingsDTO.tzIDLRU[i];if(existingTZID==tzID){return;}}
if(this.userSettingsDTO.tzIDLRU.length>10){this.userSettingsDTO.tzIDLRU.pop();}
this.userSettingsDTO.tzIDLRU.unshift(tzID);},keyUpdated:function(key){for(var guid in this.guidLuidM){if(this.guidLuidM.hasOwnProperty(guid)){var luid=this.guidLuidM[guid];if(luid==key){return guid;}}}
return null;},ownsICalendar:function(iCalendarID){for(var i=0;i<this.userSettingsDTO.ICalendarInfoL.length;++i){var iCalendarInfo=this.userSettingsDTO.ICalendarInfoL[i];if(iCalendarInfo.ICalendarID!=iCalendarID){continue;}
if(iCalendarInfo.ownerCalUserID==this.userSettingsDTO.calUserID){return true;}}
return false;},eventSync:function(mode,iCalendarIDL){this.syncEvents=true;this.syncTodos=true;this.syncMode=mode;this.calendarSync(iCalendarIDL);},todoSync:function(mode,iCalendarIDL){this.syncEvents=true;this.syncTodos=true;this.syncMode=mode;this.calendarSync(iCalendarIDL);},eventAndTodoSync:function(mode){this.syncEvents=true;this.syncTodos=true;this.syncMode=mode;this.calendarSync();},calendarSync:function(iCalendarIDL){clearTimeout(this.timeoutID);if(this.eventSyncDone){return;}
if(this.loggingEnabled){this.log("calendarSync()");}
this.idICalendarIDLCurrent=iCalendarIDL;this.notifySyncStart();this.syncResult=null;this.receivedEventCount=0;this.localEventsUpdatedNewCount=0;this.eventSyncDone=false;this.syncInProgress=true;this.localDeletedLuidM={};this.updateLUIDLastModifiedDateM={};this.displayNameM={};if(this.inErrorState){this.eventSyncDone=true;if(this.loggingEnabled){this.log("calendarSync() inErrorState");}
return;}
this.eventSyncItems={};if(!this.syncMode){this.syncMode=this.SYNC_SLOW;}
this.eventSyncItems.defaultTimezone=this.userSettingsDTO.timeZoneID;this.eventSyncItems.appName=this.appName;var index=0;var iCalendarID=null;if(!iCalendarIDL||iCalendarIDL.length===0){iCalendarIDL=[];this.idICalendarIDLCurrent=iCalendarIDL;for(index=0;index<this.userSettingsDTO.ICalendarInfoL.length;++index){var iCalendarInfo=this.userSettingsDTO.ICalendarInfoL[index];if(this.syncMode==this.SYNC_REPLACE_SERVER_DATA&&iCalendarInfo.permission!=6){continue;}
iCalendarID=iCalendarInfo.ICalendarID;iCalendarIDL.push(iCalendarID);}}
this.eventGuidLuidM={};this.todoGuidLuidM={};for(index=0;index<iCalendarIDL.length;++index){iCalendarID=iCalendarIDL[index];this.syncItemCalendar={};this.syncItemCalendar.iCalendarID=iCalendarID;if(!this.eventSyncItems.calendars){this.eventSyncItems.calendars=[];}
this.eventSyncItems.calendars.push(this.syncItemCalendar);this.syncItemCalendar.syncMode=this.syncMode;if(this.syncItemCalendar.syncMode==this.SYNC_REPLACE_LOCAL_DATA){if(this.syncEvents){this.deleteAllLocalEvents(iCalendarID);}
if(this.syncTodos){this.deleteAllLocalTodos(iCalendarID);}
if(this.monthRecurEventM){delete this.monthRecurEventM[iCalendarID];}
this.monthEventMOptimisticVersionM[iCalendarID]=0;}
if(this.loggingEnabled){this.log("syncing calendar:"+iCalendarID);}
if(!this.syncSWorldPrefs.eventNextSyncAnchorM){this.syncSWorldPrefs.eventNextSyncAnchorM={};}
var eventSyncAnchor=this.syncSWorldPrefs.eventNextSyncAnchorM[iCalendarID];if(!eventSyncAnchor){eventSyncAnchor="0";this.syncItemCalendar.syncMode=this.SYNC_SLOW;}
this.syncItemCalendar.lastSyncAnchor=eventSyncAnchor;if(this.loggingEnabled){this.log("lastSyncAnchor:"+this.syncItemCalendar.lastSyncAnchor);}
if(this.syncItemCalendar.syncMode==this.SYNC_REPLACE_LOCAL_DATA){this.syncItemCalendar.lastSyncAnchor="0";}
var luidEventM;var eventLuid;var event;if(this.syncItemCalendar.syncMode==this.SYNC_REPLACE_SERVER_DATA){this.syncItemCalendar.lastSyncAnchor="0";var swEvent=new SwEvent();luidEventM=this.swEventModel[iCalendarID];for(eventLuid in luidEventM){if(luidEventM.hasOwnProperty(eventLuid)){event=luidEventM[eventLuid];event.guid=swEvent.createGuid(this,this.username,iCalendarID,this.clientNonce,this.deviceID,eventLuid);}}}
if(this.syncItemCalendar.syncMode==this.SYNC_SLOW){this.syncItemCalendar.lastSyncAnchor="0";}
if(this.syncItemCalendar.lastSyncAnchor=="0"&&this.syncItemCalendar.syncMode==this.SYNC_NORMAL){this.syncItemCalendar.syncMode=this.SYNC_SLOW;this.resetGuidLuidM();if(this.loggingEnabled){this.log("Doing a slow sync because the lastSyncAnchor was 0 for this calendar:"+this.syncItemCalendar.iCalendarID);}}
if(this.syncItemCalendar.syncMode!=this.SYNC_REPLACE_LOCAL_DATA){if(this.syncEvents){if(this.loggingEnabled){this.log("reading local events");}
luidEventM=this.swEventModel[iCalendarID];for(eventLuid in luidEventM){if(luidEventM.hasOwnProperty(eventLuid)){event=luidEventM[eventLuid];this.eventGuidLuidM[event.guid]=eventLuid;if(this.syncItemCalendar.syncMode==this.SYNC_SLOW||this.syncItemCalendar.syncMode==this.SYNC_REPLACE_SERVER_DATA){this.addEvent(event);continue;}
if(event.dirty){this.addEvent(event);}}}}
if(this.syncTodos){if(this.loggingEnabled){this.log("reading local todos");}
var luidTodoM=this.swTodoModel[iCalendarID];for(var todoLuid in luidTodoM){if(luidTodoM.hasOwnProperty(todoLuid)){var todo=luidTodoM[todoLuid];this.todoGuidLuidM[todo.guid]=todoLuid;if(this.syncItemCalendar.syncMode==this.SYNC_SLOW||this.syncItemCalendar.syncMode==this.SYNC_REPLACE_SERVER_DATA){this.addTodo(todo);continue;}
if(todo.dirty){this.addTodo(todo);}}}}}
if(this.syncItemCalendar.syncMode==this.SYNC_NORMAL){if(this.loggingEnabled){this.log("reading local deleted events");}
var guidDeletedL=this.swEventDeletedModel[iCalendarID];if(guidDeletedL){this.syncItemCalendar.deleteEventGuidL=guidDeletedL;}}
if(this.syncItemCalendar.syncMode==this.SYNC_NORMAL){if(this.loggingEnabled){this.log("reading local deleted todos");}
var guidDeletedTodoL=this.swTodoDeletedModel[iCalendarID];if(guidDeletedTodoL){if(this.syncItemCalendar.deleteEventGuidL){for(var i=0;i<guidDeletedTodoL.length;++i){this.syncItemCalendar.deleteEventGuidL.push(guidDeletedTodoL[i]);}}
else{this.syncItemCalendar.deleteEventGuidL=guidDeletedTodoL;}}}}
this.timeoutID=setTimeout(this.createEventsXMLRequest.$(this),100);if(this.loggingEnabled){this.log("calendarSync() finished preparing items.");}},insertTodoIntoModel:function(todo,iCalendarID,callback){var iCalendar=this.swTodoModel[iCalendarID];if(!iCalendar){iCalendar={};this.swTodoModel[iCalendarID]=iCalendar;}
iCalendar[todo.id]=todo;this.todoCacheInserted(todo);},todoCacheInserted:function(syncSWorldTodo){if(this.loggingEnabled){this.log("syncSWorld todoCacheInserted()");}
if(syncSWorldTodo.brandNew){var tmpCompID="tmpCompID"+this.getNextLUID();syncSWorldTodo.compID=tmpCompID;if(!this.iCalendarIDTodoIDCache){this.iCalendarIDTodoIDCache={};}
var todoIDTodoM=this.iCalendarIDTodoIDCache[syncSWorldTodo.iCalendarID];if(!todoIDTodoM){todoIDTodoM={};this.iCalendarIDTodoIDCache[syncSWorldTodo.iCalendarID]=todoIDTodoM;}
todoIDTodoM[syncSWorldTodo.compID]=syncSWorldTodo;}},insertEventIntoModel:function(event,iCalendarID){var iCalendar=this.swEventModel[iCalendarID];if(!iCalendar){iCalendar={};this.swEventModel[iCalendarID]=iCalendar;}
iCalendar[event.id]=event;this.eventCacheInserted(event);},removeRidEventFromModel:function(parentEvent,event,noSave){var compIDEXDates=parentEvent.compIDEXDates;if(!compIDEXDates){compIDEXDates={};parentEvent.compIDEXDates=compIDEXDates;}
var exdata={year:event.startYear,month:event.startMonth,dayOfMonth:event.startDayOfMonth,hourOfDay:parentEvent.startHourOfDay,minute:parentEvent.startMinute,second:parentEvent.startSecond,timeZone:parentEvent.startTimeZone};var key="ex"+exdata.year+"-"+exdata.month+"-"+exdata.dayOfMonth;parentEvent.compIDEXDates[key]=exdata;for(var i=0;i<parentEvent.exceptions.length;++i){var exception=parentEvent.exceptions[i];if(exception.startYear==event.startYear&&exception.startMonth==event.startMonth&&exception.startDayOfMonth==event.startDayOfMonth){parentEvent.exceptions.removeSlice(i,i);break;}}
parentEvent.dirty=true;if(noSave){return;}
this.saveSwEventModel(parentEvent.iCalendarID);},removeEventFromModel:function(calObj,dateTimeDTO,noSave){if(dateTimeDTO){var compIDEXDates=calObj.compIDEXDates;if(!compIDEXDates){compIDEXDates={};calObj.compIDEXDates=compIDEXDates;}
var exdata={year:dateTimeDTO.year,month:dateTimeDTO.month,dayOfMonth:dateTimeDTO.dayOfMonth,hourOfDay:dateTimeDTO.hourOfDay,minute:dateTimeDTO.minute,second:dateTimeDTO.second,timeZone:dateTimeDTO.timeZoneID};calObj.compIDEXDates[calObj.compID]=exdata;this.removeFromMonthRecurEventM(calObj,dateTimeDTO.year,dateTimeDTO.month,dateTimeDTO.dayOfMonth,dateTimeDTO.hourOfDay,dateTimeDTO.minute,dateTimeDTO.second,dateTimeDTO.timeZoneID);this.saveMonthRecurEventM();return;}
this.removeCalObjFromModelStepA(calObj,noSave);},removeCalObjFromModelStepA:function(aCalObj,noSave){var guidDeletedL;var iCalendar=this.swEventModel[aCalObj.iCalendarID];if(iCalendar){var calObj=iCalendar[aCalObj.id];if(calObj){guidDeletedL=this.swEventDeletedModel[calObj.iCalendarID];if(!guidDeletedL){guidDeletedL=[];this.swEventDeletedModel[calObj.iCalendarID]=guidDeletedL;}
guidDeletedL.push(calObj.guid);delete iCalendar[calObj.id];if(noSave){return;}
this.saveSwEventModel(calObj.iCalendarID,this.removeEventFromModelStepB.$(this));return;}}
iCalendar=this.swTodoModel[aCalObj.iCalendarID];if(iCalendar){calObj=iCalendar[aCalObj.id];if(calObj){guidDeletedL=this.swTodoDeletedModel[calObj.iCalendarID];if(!guidDeletedL){guidDeletedL=[];this.swTodoDeletedModel[calObj.iCalendarID]=guidDeletedL;}
guidDeletedL.push(calObj.guid);delete iCalendar[calObj.id];if(noSave){return;}
this.saveSwTodoModel(calObj.iCalendarID,this.removeTodoFromModelStepB.$(this));return;}}},removeEventFromModelStepB:function(){this.saveSwEventDeletedModel();},removeTodoFromModelStepB:function(){this.saveSwTodoDeletedModel();},getEventFromItemID:function(emItemID){var tmp=emItemID.split("-");return this.getEvent("cid"+tmp[2],"id"+tmp[1]);},getEvent:function(componentID,idICalendarID){var componentIDEventM=null;if(!this.iCalendarIDEventIDCache){componentIDEventM=this.createICalendarIDEventIDCache(idICalendarID);}
if(!componentIDEventM){componentIDEventM=this.iCalendarIDEventIDCache[idICalendarID];}
if(!componentIDEventM){componentIDEventM=this.createICalendarIDEventIDCache(idICalendarID);}
if(componentIDEventM){return componentIDEventM[componentID];}
return null;},getTodo:function(componentID,idICalendarID){var componentIDTodoM=null;if(!this.iCalendarIDTodoIDCache){componentIDTodoM=this.createICalendarIDTodoIDCache(idICalendarID);}
if(!componentIDTodoM){componentIDTodoM=this.iCalendarIDTodoIDCache[idICalendarID];}
if(!componentIDTodoM){componentIDTodoM=this.createICalendarIDTodoIDCache(idICalendarID);}
if(componentIDTodoM){return componentIDTodoM[componentID];}
return null;},createICalendarIDEventIDCache:function(iCalendarID){if(!this.iCalendarIDEventIDCache){this.iCalendarIDEventIDCache={};}
var iCalendar=this.swEventModel[iCalendarID];if(!iCalendar){return null;}
var eventIDEventM={};this.iCalendarIDEventIDCache[iCalendarID]=eventIDEventM;for(var luid in iCalendar){if(iCalendar.hasOwnProperty(luid)){var swEvent=iCalendar[luid];eventIDEventM[swEvent.compID]=swEvent;}}
return eventIDEventM;},createICalendarIDTodoIDCache:function(iCalendarID){if(!this.iCalendarIDTodoIDCache){this.iCalendarIDTodoIDCache={};}
var iCalendar=this.swTodoModel[iCalendarID];if(!iCalendar){return null;}
var todoIDTodoM={};this.iCalendarIDTodoIDCache[iCalendarID]=todoIDTodoM;for(var luid in iCalendar){if(iCalendar.hasOwnProperty(luid)){var swTodo=iCalendar[luid];todoIDTodoM[swTodo.compID]=swTodo;}}
return todoIDTodoM;},calendarHasRecurringEvents:function(iCalendarID){var iCalendar=this.swEventModel[iCalendarID];if(!iCalendar){return false;}
for(var luid in iCalendar){if(iCalendar.hasOwnProperty(luid)){var event=iCalendar[luid];if(event.freq){return true;}}}
return false;},addEvent:function(event){if(this.syncItemCalendar.syncMode==this.SYNC_SLOW||this.syncItemCalendar.syncMode==this.SYNC_REPLACE_SERVER_DATA||event.brandNew){this.addNewEvent(event);}
else{this.addUpdatedEvent(event);}},addNewEvent:function(event){var newEvents=this.syncItemCalendar.newEvents;if(!newEvents){newEvents=[];this.syncItemCalendar.newEvents=newEvents;}
newEvents.push(event);},addUpdatedEvent:function(event){var updatedEvents=this.syncItemCalendar.updatedEvents;if(!updatedEvents){updatedEvents=[];this.syncItemCalendar.updatedEvents=updatedEvents;}
updatedEvents.push(event);},addTodo:function(todo){if(this.syncItemCalendar.syncMode==this.SYNC_SLOW||this.syncItemCalendar.syncMode==this.SYNC_REPLACE_SERVER_DATA||todo.brandNew){this.addNewTodo(todo);}
else{this.addUpdatedTodo(todo);}},addNewTodo:function(todo){var newTodos=this.syncItemCalendar.newTodos;if(!newTodos){newTodos=[];this.syncItemCalendar.newTodos=newTodos;}
newTodos.push(todo);},addUpdatedTodo:function(todo){var updatedTodos=this.syncItemCalendar.updatedTodos;if(!updatedTodos){updatedTodos=[];this.syncItemCalendar.updatedTodos=updatedTodos;}
updatedTodos.push(todo);},isTimezoneUTC:function(testTZ){var utc=false;if(this.timezoneService){utc=testTZ.isUTC;}
else{if(testTZ=="UTC"||testTZ=="utc"){utc=true;}
else{utc=false;}}
return utc;},calIEventObjToObject:function(calIEventObj,swEvent){},copyCalIAttendeeIntoObject:function(calIAttendee,object){if(calIAttendee.id){object.id=calIAttendee.id;}
if(calIAttendee.commonName){object.commonName=calIAttendee.commonName;}
if(calIAttendee.rsvp){object.rsvp=calIAttendee.rsvp;}
if(calIAttendee.isOrganizer){object.isOrganizer=calIAttendee.isOrganizer;}
if(calIAttendee.role){object.role=calIAttendee.role;}
if(calIAttendee.participationStatus){object.participationStatus=calIAttendee.participationStatus;}
if(calIAttendee.userType){object.userType=calIAttendee.userType;}},BASE64:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",encode:function(input){var chr1,chr2,chr3,enc1,enc2,enc3,enc4;var utf8Input=this._utf8_encode(input);var output=[];var i=0;while(i<utf8Input.length){chr1=utf8Input[i];i+=1;chr2=utf8Input[i];i+=1;chr3=utf8Input[i];i+=1;enc1=chr1>>2;enc2=((chr1&3)<<4)|(chr2>>4);enc3=((chr2&15)<<2)|(chr3>>6);enc4=chr3&63;if(isNaN(chr2)){enc3=enc4=64;}else if(isNaN(chr3)){enc4=64;}
output.push(this.BASE64.charAt(enc1));output.push(this.BASE64.charAt(enc2));output.push(this.BASE64.charAt(enc3));output.push(this.BASE64.charAt(enc4));}
return output.join("");},_utf8_encode:function(string){var utftext=[];for(var n=0;n<string.length;n++){var c=string.charCodeAt(n);if(c<128){utftext.push(c);}
else if((c>127)&&(c<2048)){utftext.push((c>>6)|192);utftext.push((c&63)|128);}
else{utftext.push((c>>12)|224);utftext.push(((c>>6)&63)|128);utftext.push((c&63)|128);}}
return utftext;},decodeIntoBytes:function(input){var output=[];var chr1,chr2,chr3;var enc1,enc2,enc3,enc4;var i=0;while(i<input.length){enc1=this.BASE64.indexOf(input.charAt(i));i+=1;enc2=this.BASE64.indexOf(input.charAt(i));i+=1;enc3=this.BASE64.indexOf(input.charAt(i));i+=1;enc4=this.BASE64.indexOf(input.charAt(i));i+=1;chr1=(enc1<<2)|(enc2>>4);chr2=((enc2&0x0f)<<4)|(enc3>>2);chr3=((enc3&3)<<6)|enc4;if((chr1&0x80)===0x80){chr1|=0xffffff00;}
output.push(chr1);if(enc3!=64){if((chr2&0x80)===0x80){chr2|=0xffffff00;}
output.push(chr2);}
if(enc4!=64){if((chr3&0x80)===0x80){chr3|=0xffffff00;}
output.push(chr3);}}
return output;},decodeIntoString:function(input){var output=[];var chr1,chr2,chr3;var enc1,enc2,enc3,enc4;var i=0;while(i<input.length){enc1=this.BASE64.indexOf(input.charAt(i));i+=1;enc2=this.BASE64.indexOf(input.charAt(i));i+=1;enc3=this.BASE64.indexOf(input.charAt(i));i+=1;enc4=this.BASE64.indexOf(input.charAt(i));i+=1;chr1=(enc1<<2)|(enc2>>4);chr2=((enc2&15)<<4)|(enc3>>2);chr3=((enc3&3)<<6)|enc4;output.push(String.fromCharCode(chr1));if(enc3!=64){output.push(String.fromCharCode(chr2));}
if(enc4!=64){output.push(String.fromCharCode(chr3));}}
var result=this._utf8_decode(output.join(""));return result;},_utf8_decode:function(utftext){var string=[];var i=0;var c=0;var c1=0;var c2=0;while(i<utftext.length){c=utftext.charCodeAt(i);if(c<128){string.push(String.fromCharCode(c));i++;}
else if((c>191)&&(c<224)){c2=utftext.charCodeAt(i+1);string.push(String.fromCharCode(((c&31)<<6)|(c2&63)));i+=2;}
else{c2=utftext.charCodeAt(i+1);c3=utftext.charCodeAt(i+2);string.push(String.fromCharCode(((c&15)<<12)|((c2&63)<<6)|(c3&63)));i+=3;}}
return string.join("");},convertUTF8IntoByteArray:function(utftext){var result=[];var i=0;var c=0;var c1=0;var c2=0;while(i<utftext.length){c=utftext.charCodeAt(i);if(c<128){result.push(c);i++;}
else if((c>191)&&(c<224)){result.push((c>>6)|192);result.push((c&63)|128);i+=2;}
else{result.push((c>>12)|224);result.push(((c>>6)&63)|128);result.push((c&63)|128);i+=3;}}
return result;},stringFromBytes:function(utf8Codes){var string=[];var i=0;var c=0;var c1=0;var c2=0;while(i<utf8Codes.length){c=utf8Codes[i];if(c<10){++i;continue;}
if(c<128){string.push(String.fromCharCode(c));i++;}
else if((c>191)&&(c<224)){c2=utf8Codes[i+1];string.push(String.fromCharCode(((c&31)<<6)|(c2&63)));i+=2;}
else{c2=utf8Codes[i+1];c3=utf8Codes[i+2];string.push(String.fromCharCode(((c&15)<<12)|((c2&63)<<6)|(c3&63)));i+=3;}}
return string.join("");},deleteLocalContacts:function(){this.swContactModel={};this.contactDeleteAll();},deleteLocalNotes:function(){this.swNoteModel={};this.noteDeleteAll();},abortSync:function(message){this.request.abort();this.eventSyncDone=true;this.contactSyncDone=true;this.setStatusButton("Close");if(message){this.setStatus(message);}},handleSyncGMailWithSWResponse:function(){var label=this.gmailResultWindow.document.getElementById("statusID");if(label){label.setAttribute("value","Finished.");}
var base64DecodedResult=this.decodeIntoBytes(this.request.responseText);var result=this.swTEAdecrypt(base64DecodedResult,this.getKey(this.sessionID));var jsResult=swEval(result);var button=this.gmailResultWindow.document.getElementById("closeGMailResultButtonID");if(button){button.setAttribute("disabled","false");}
var message="";if(jsResult.failedI18nKey){message=this.i18n(jsResult.failedI18nKey);if(!message){message=jsResult.failedI18nKey;}}
else{message=jsResult.message;}
var progressBar=this.gmailResultWindow.document.getElementById("progressID");if(progressBar){progressBar.setAttribute("mode","determined");progressBar.setAttribute("value","100");}
var textarea=this.gmailResultWindow.document.getElementById("resultID");if(textarea){textarea.setAttribute("value",message);}},handleSyncGCalWithSWResponse:function(){var label=this.gcalResultWindow.document.getElementById("statusID");if(label){label.setAttribute("value","Finished.");}
jsResult=swEval(this.request.responseText);var button=this.gcalResultWindow.document.getElementById("closeGMailResultButtonID");if(button){button.setAttribute("disabled","false");}
var message="";if(jsResult.failedI18nKey){message=this.i18n(jsResult.failedI18nKey);if(!message){message=jsResult.failedI18nKey;}}
else{message="Sucess.";}
var progressBar=this.gcalResultWindow.document.getElementById("progressID");if(progressBar){progressBar.setAttribute("mode","determined");progressBar.setAttribute("value","100");}
var textarea=this.gcalResultWindow.document.getElementById("resultID");if(textarea){textarea.setAttribute("value",message);}},syncSWorldGMail:function(){this.gmailResultWindow=window.open("chrome://syncsw/content/gmailResult.xul","GMail Sync Result","chrome,centerscreen,width=400,height=320,alwaysRaised");if(!this.gmailResultWindow){this.log("Failed to create gmailResultWindow.");}
this.timeoutID=setTimeout(this.syncSWorldGMailWork.$(this),200);},syncSWorldGMailWork:function(){var label=this.gmailResultWindow.document.getElementById("statusID");if(label){label.setAttribute("value","Synchronizing GMail contacts with ScheduleWorld.");}},syncSWorldGCal:function(){this.gcalResultWindow=window.open("chrome://syncsw/content/gcalResult.xul","Google Calendar Sync Result","chrome,centerscreen,width=400,height=320,alwaysRaised");if(!this.gcalResultWindow){this.log("Failed to create gcalResultWindow.");}
this.timeoutID=setTimeout(this.syncSWorldGCalWork.$(this),200);},rollbackContacts:function(){},mergeContactDupes:function(){this.timeoutID=setTimeout(this.mergeContactDupesPhase1.$(this),100);},mergeContactDupesPhase1:function(){this.guidLuidM={};var removeCount=0;var mergeDisplayNameContactM={};var luidHandledM={};var textboxResult=[];var removeContactWithBadLuidL=[];for(var luid in this.swContactModel){if(this.swContactModel.hasOwnProperty(luid)){if(luidHandledM[luid]){continue;}
var contact=this.swContactModel[luid];if(!contact){continue;}
var displayName=contact.displayName;if(!displayName||displayName.length===0){luidHandledM[luid]=true;continue;}
for(var sourceLuid in this.swContactModel){if(this.swContactModel.hasOwnProperty(sourceLuid)){if(sourceLuid==luid){continue;}
if(luidHandledM[sourceLuid]){continue;}
var sourceContact=this.swContactModel[sourceLuid];if(!sourceContact){continue;}
var testDisplayName=sourceContact.displayName;if(!testDisplayName||testDisplayName.length===0){luidHandledM[sourceLuid]=true;continue;}
if(displayName!=testDisplayName){continue;}
luidHandledM[sourceLuid]=true;if(!mergeDisplayNameContactM[displayName]){textboxResult.push(displayName);}
mergeDisplayNameContactM[displayName]=contact;++removeCount;}}
luidHandledM[luid]=true;}}
var mergeDupesDialog=new DlDialog({modal:false,quitBtn:"destroy",title:"Merge Contact Duplicates",resizable:true});var layout=new DlLayout({parent:mergeDupesDialog});var textArea=new DlEntry({type:"textarea"});textboxResult.sort();textArea.setValue(textboxResult.join("\n"));var box=new DlHbox({borderSpacing:5});box.setAlign("center");var yes=new DlButton({parent:box,label:"<div style='width:5em'>"+
swApp.i18n("Merge Duplicates")+":"+removeCount+"</div>"});var no=new DlButton({parent:box,label:"<div style='width:5em'>"+
swApp.i18n("Cancel")+"</div>"});layout.packWidget(textArea,{pos:"top",fill:"*"});layout.packWidget(box,{pos:"bottom"});layout.setSize({x:400,y:300});no.addEventListener("onClick",function(){mergeDupesDialog.destroy();});yes.addEventListener("onClick",function(){mergeDupesDialog.destroy();this.mergeContactDupesWork();}.$(this));mergeDupesDialog.centerOnParent();mergeDupesDialog.show();},mergeContactDupesWork:function(){this.mergeCount=0;var removeCount=0;var luidHandledM={};var contact;var displayName;var sourceContact;var testDisplayName;var sourceLuid;var destLuid;var removeLUIDL=[];for(destLuid in this.swContactModel){if(this.swContactModel.hasOwnProperty(destLuid)){if(luidHandledM[destLuid]){continue;}
contact=this.swContactModel[destLuid];if(!contact){continue;}
displayName=contact.displayName;if(!displayName||displayName.length===0){luidHandledM[destLuid]=true;continue;}
for(sourceLuid in this.swContactModel){if(this.swContactModel.hasOwnProperty(sourceLuid)){if(sourceLuid==destLuid){continue;}
if(luidHandledM[sourceLuid]){continue;}
sourceContact=this.swContactModel[sourceLuid];if(!sourceContact){luidHandledM[sourceLuid]=true;continue;}
testDisplayName=sourceContact.displayName;if(!testDisplayName||testDisplayName.length===0){luidHandledM[sourceLuid]=true;continue;}
if(displayName!=testDisplayName){continue;}
luidHandledM[sourceLuid]=true;if(contact.readOnly=="true"&&sourceContact.readOnly=="true"){}
else if(contact.readOnly=="true"){this.copyProps(contact,sourceContact);removeLUIDL.push(destLuid);++this.mergeCount;}
else{this.copyProps(sourceContact,contact);removeLUIDL.push(sourceLuid);++this.mergeCount;}}}
luidHandledM[destLuid]=true;}}
swApp.contactCache.remove(removeLUIDL,true);for(var i=0;i<removeLUIDL.length;++i){this.clientRemoveContact(removeLUIDL[i],false,true);}
this.saveSwContactModel(this.mergeContactDupesFinishA.$(this));},mergeContactDupesFinishA:function(){this.saveSwContactDeletedModel(this.mergeContactDupesFinishB.$(this));},mergeContactDupesFinishB:function(){var resultIDL=swApp.contactCache.getIDs();swApp.contactGrid.resetIDS(resultIDL);swApp.contactGrid.displayPage(0);alert("Merge finished.\nContacts merged and then removed: "+
this.mergeCount);this.contactSync();},copyProps:function(source,dest){dest.dirty=true;var putIntoNotesL=[];var sVal;var found;var tmpDArray;var dValue;if(source.displayName=="John Parres"){var debug=true;}
for(var sProp in source){if(source.hasOwnProperty(sProp)){if(sProp=='id'){continue;}
if(sProp=='guid'){continue;}
if(sProp=='swId'){continue;}
if(sProp=='lastSync'){continue;}
if(sProp=='brandNew'){continue;}
if(sProp=='linked'){continue;}
if(sProp=='readOnly'){continue;}
var sValue=source[sProp];if(!sValue){continue;}
if(sProp=='jpegPhoto'){dest.copyMergedPhotoGuid=source.guid;}
dValue=dest[sProp];if(!dValue){if(typeof sValue.splice==='function'){dest[sProp]=sValue.concat([]);}
else{if(typeof sValue=="string"){dest[sProp]=sValue;}
else{dest[sProp]=Dynarch.makeCopy(sValue);}}
continue;}
var dArray=dValue;var sArray=sValue;if(typeof sValue.charCodeAt==='function'&&typeof dValue.charCodeAt==='function'){if(sValue==dValue){continue;}
if(sProp=='birthday'){putIntoNotes.push("Merged birthday conflict: "+sValue);continue;}
else if(sProp=='anniversary'){putIntoNotes.push("Merged anniversary conflict: "+sValue);continue;}}
var i;if(typeof sValue.charCodeAt==='function'){if(this.contactDoNotSplitM[sProp]){sArray=[sValue];}
else{sArray=sValue.split(",");}}
if(typeof sArray.join!="function"){sArray=[sArray];}
if(typeof dValue.charCodeAt==='function'){if(this.contactDoNotSplitM[sProp]){dArray=[dValue];}
else{dArray=dValue.split(",");}}
if(typeof dArray.join!="function"){dArray=[dArray];}
dest[sProp]=dArray;if(sProp=="mail"){if(sArray.value){var tmpSArray=[];tmpSArray.push(sArray);sArray=tmpSArray;}
if(dArray.value){tmpDArray=[];tmpDArray.push(dArray);dArray=tmpDArray;dest[sProp]=dArray;}
for(i=0;i<sArray.length;++i){sVal=sArray[i];if(sVal.value){sVal=sVal.value;}
found=false;for(var j=0;j<dArray.length;++j){var dVal=dArray[j];if(dVal.value){dVal=dVal.value;}
if(sVal==dVal){found=true;break;}}
if(!found){dArray.push(sVal);}}
continue;}
for(i=0;i<sArray.length;++i){sVal=sArray[i];if(dArray.indexOf(sVal)==-1){dArray.push(sVal);}}
if(this.contactPreferValueArrayM[sProp]){dest[sProp]=dArray;}
else{if(this.contactDoNotSplitM[sProp]){dest[sProp]=dArray.join(",");}
else{dest[sProp]=dArray.join(",");}}}}
if(putIntoNotesL.length>0){var description=dest.description;if(!description){description=putIntoNotesL.join("\n");}
else{description=putIntoNotesL.join("\n")+"\n"+description;}
dest.description=description;}},clientRemoveContact:function(luid,saveModels,noHooks){var contact=this.swContactModel[luid];delete this.swContactModel[luid];if(!this.swContactDeletedModel){this.swContactDeletedModel={};}
if(contact.guid){this.swContactDeletedModel[contact.guid]=true;}
if(saveModels){this.saveSwContactModel(this.clientRemoveContactStepB.$(this));}},clientRemoveContactStepB:function(){this.saveSwContactDeletedModel();},removeContactFromModel:function(contact,saveModels){this.swContactDeletedModel[contact.guid]=true;delete this.swContactModel[contact.id];if(saveModels){this.saveSwContactModel(this.removeContactFromModelStepB.$(this));}},removeContactFromModelStepB:function(){this.saveSwContactDeletedModel();},removeNoteFromModel:function(note,saveModels){this.swNoteDeletedModel[note.guid]=true;delete this.swNoteModel[note.id];if(saveModels){this.saveSwNoteModel(this.removeNoteFromModelStepB.$(this));}},removeNoteFromModelStepB:function(){this.saveSwNoteDeletedModel();},eventCacheInserted:function(syncSWorldCalComp){if(this.loggingEnabled){this.log("syncSWorld eventCacheInserted()");}
if(syncSWorldCalComp.brandNew){var tmpCompID="tmpCompID"+this.getNextLUID();syncSWorldCalComp.compID=tmpCompID;if(!this.iCalendarIDEventIDCache){this.iCalendarIDEventIDCache={};}
var eventIDEventM=this.iCalendarIDEventIDCache[syncSWorldCalComp.iCalendarID];if(!eventIDEventM){eventIDEventM={};this.iCalendarIDEventIDCache[syncSWorldCalComp.iCalendarID]=eventIDEventM;}
eventIDEventM[syncSWorldCalComp.compID]=syncSWorldCalComp;}},populateSwEventCache:function(swEventCache){},addEventAddedListener:function(aListenerFunction){this.eventAddedListeners.push(aListenerFunction);},addEventUpdatedListener:function(aListenerFunction){this.eventUpdatedListeners.push(aListenerFunction);},addEventDeletedListener:function(aListenerFunction){this.eventDeletedListeners.push(aListenerFunction);},addEventDeleteAllListener:function(aListenerFunction){this.eventDeleteAllListeners.push(aListenerFunction);},addMonthRecurEventMChangedListener:function(aListenerFunction){this.monthRecurEventMChangedListeners.push(aListenerFunction);},addGeneralSettingsChangedListener:function(aListenerFunction){this.generalSettingsChangedListeners.push(aListenerFunction);},notifyEventDeletedListeners:function(event){for(var i=0;i<this.eventDeletedListeners.length;++i){var listenerFunc=this.eventDeletedListeners[i];listenerFunc(event);}},addTodoAddedListener:function(aListenerFunction){this.todoAddedListeners.push(aListenerFunction);},addTodoUpdatedListener:function(aListenerFunction){this.todoUpdatedListeners.push(aListenerFunction);},addTodoDeletedListener:function(aListenerFunction){this.todoDeletedListeners.push(aListenerFunction);},addTodoDeleteAllListener:function(aListenerFunction){this.todoDeleteAllListeners.push(aListenerFunction);},addContactAddedListener:function(aListenerFunction){this.contactAddedListeners.push(aListenerFunction);},addContactUpdatedListener:function(aListenerFunction){this.contactUpdatedListeners.push(aListenerFunction);},addContactDeletedListener:function(aListenerFunction){this.contactDeletedListeners.push(aListenerFunction);},addContactDeleteAllListener:function(aListenerFunction){this.contactDeleteAllListeners.push(aListenerFunction);},addNoteAddedListener:function(aListenerFunction){this.noteAddedListeners.push(aListenerFunction);},addNoteUpdatedListener:function(aListenerFunction){this.noteUpdatedListeners.push(aListenerFunction);},addNoteDeletedListener:function(aListenerFunction){this.noteDeletedListeners.push(aListenerFunction);},addNoteDeleteAllListener:function(aListenerFunction){this.noteDeleteAllListeners.push(aListenerFunction);},syncStartListeners:[],syncStopListeners:[],contactSyncStartListeners:[],contactSyncStopListeners:[],noteSyncStartListeners:[],noteSyncStopListeners:[],addSyncStartListener:function(aListenerFunction){this.syncStartListeners.push(aListenerFunction);},addSyncStopListener:function(aListenerFunction){this.syncStopListeners.push(aListenerFunction);},removeSyncStopListener:function(aListenerFunction){this.syncStopListeners.remove(aListenerFunction);},notifyMonthRecurEventMChanged:function(){for(var i=0;i<this.monthRecurEventMChangedListeners.length;++i){var listenerFunc=this.monthRecurEventMChangedListeners[i];listenerFunc();}},notifyGeneralSettingsChanged:function(){for(var i=0;i<this.generalSettingsChangedListeners.length;++i){var listenerFunc=this.generalSettingsChangedListeners[i];listenerFunc();}},notifySyncStop:function(networkFailed){var mustReturn=false;for(var i=0;i<this.syncStopListeners.length;++i){var listenerFunc=this.syncStopListeners[i];mustReturn=listenerFunc(networkFailed);if(mustReturn){return;}}},notifySyncStart:function(){for(var i=0;i<this.syncStartListeners.length;++i){var listenerFunc=this.syncStartListeners[i];listenerFunc();}},addContactSyncStartListener:function(aListenerFunction){this.contactSyncStartListeners.push(aListenerFunction);},addContactSyncStopListener:function(aListenerFunction){this.contactSyncStopListeners.push(aListenerFunction);},removeContactSyncStopListener:function(aListenerFunction){this.contactSyncStopListeners.remove(aListenerFunction);},notifyContactSyncStop:function(networkFailed){for(var i=0;i<this.contactSyncStopListeners.length;++i){var listenerFunc=this.contactSyncStopListeners[i];listenerFunc(networkFailed);}},addNoteSyncStartListener:function(aListenerFunction){this.noteSyncStartListeners.push(aListenerFunction);},addNoteSyncStopListener:function(aListenerFunction){this.noteSyncStopListeners.push(aListenerFunction);},notifyNoteSyncStop:function(networkFailed){for(var i=0;i<this.noteSyncStopListeners.length;++i){var listenerFunc=this.noteSyncStopListeners[i];listenerFunc(networkFailed);}},getSwemuser:function(onSuccess,onFail){var request={};request.em=true;request.command="getSwemuser";return this.sendRequest(request,null,onSuccess,onFail);},getInvoiceMap:function(onSuccess,onFail){var request={};request.em=true;request.command="getInvoiceMap";return this.sendRequest(request,null,onSuccess,onFail);},getEmailTemplateMap:function(onSuccess,onFail){var request={};request.em=true;request.command="getEmailTemplateMap";return this.sendRequest(request,null,onSuccess,onFail);},getItem:function(item,swEventComp,onSuccess,onFail){var request={};request.em=true;request.command="getItem";var metRequirements=false;var itemId=item["item-id"];if(itemId&&itemId.length>0){metRequirements=true;request["item-id"]=itemId;}
if(!metRequirements){var compID=swEventComp.compID;if(compID&&compID.indexOf("tmp")!=0){metRequirements=true;request["icalendar-id"]=swEventComp.iCalendarID.substring(2);request["event-id"]=swEventComp.compID.substring(3);}}
if(!metRequirements){onSuccess();return;}
return this.sendRequest(request,null,onSuccess,onFail);},getAllItems:function(onSuccess,onFail){var request={};request.em=true;request.command="getSwemuserItems";request.itemVersionM={};for(var itemKey in this.itemM){if(this.itemM.hasOwnProperty(itemKey)){var item=this.itemM[itemKey];var metRequirements=false;var itemId=item["item-id"];if(itemId&&itemId.length>0){metRequirements=true;}
if(!metRequirements){continue;}
request.itemVersionM[itemKey]=item.version;}}
return this.sendRequest(request,null,onSuccess,onFail);},getSwContactModelEmailsOLD:function(){var words=[];if(this.swContactModel){for(var luid in this.swContactModel){if(this.swContactModel.hasOwnProperty(luid)){var contact=this.swContactModel[luid];var result=this.getEmail(contact.mail);var resultA=result.split(/\s*,\s*/);for(var j=0;j<resultA.length;++j){words.push(resultA[j].toLowerCase());}}}}
return words;},getSwContactModelEmails:function(){var words=[];if(this.swContactModel){for(var luid in this.swContactModel){if(this.swContactModel.hasOwnProperty(luid)){var contact=this.swContactModel[luid];var result=this.getEmail(contact.mail);if(result.length===0){continue;}
var resultA=result.split(/\s*,\s*/);for(var j=0;j<resultA.length;++j){words.push(contact.displayName+" <"+
resultA[j].toLowerCase()+">");}}}}
return words;},getEmail:function(data){if(!data){return"";}
var emailL=[];var value;if(data instanceof Array){for(i=0;i<data.length;++i){value=data[i];if(value.value){value=value.value;}
if(value.indexOf("@")>=0){emailL.push(value);}}
return emailL.join(",");}
if(data.value){return data.value;}
return data;},_TMPL_MAILTO:String.template("<a href='mailto:$email' sw2-email='$email' onclick='return swApp.xuhekiEmailCompose(this)'>$email</a>"),getMailtoURI:function(data){if(!data){return"";}
if(data instanceof Array){var emailL=[];var value;for(i=0;i<data.length;++i){value=data[i];if(value.value){value=value.value;}
if(value.indexOf("@")>=0){emailL.push(this._TMPL_MAILTO({email:value.htmlEscape()}));}}
return emailL.join(", ");}
if(data.value){data=data.value;}
return this._TMPL_MAILTO({email:data.htmlEscape()});},completionHandler:function(words,range){var val=this.getValue();var pos=val.lastIndexOfRegexp(/[;,()\s]+/g,range.start);val=val.substring(pos,range.start);if(!val||val.length<2){this.cancelCompletion();return;}
var valFixed=val?val.replace(/\s+/g," ").replace(/[^A-Za-z0-9_:+=\x2f\x2a\x20-]+/g,"").trim().split(/\s+/):null;if(valFixed&&(valFixed.length===0||!valFixed[0])){valFixed=null;}
var words_re=valFixed?new RegExp("\\b("+valFixed.join("|")+")","ig"):null;var comp=[];var index;var word;var label;var completion;val=val.toLowerCase();for(var i=0;i<words.length;++i){word=words[i].toLowerCase();if(word.indexOf(val)<0){continue;}
index=word.indexOf("<");if(index>=0){index2=word.indexOf(">");completion=word.substring(index+1,index2);label=words[i];}
else{completion=word;label=words[i];}
comp.push({label:words_re?label.highlightWords(words_re):label.htmlEscape(),completion:completion,start:pos,after:", "});}
if(comp.length>0){this.completionReady(comp);}else{this.cancelCompletion();}},i18n:function(key){var value=i18n_data[key];if(value){return value;}
return key;}};SyncSWorld.prototype.loadSyncSWorldPrefs=function(){var data=null;this.syncSWorldPrefs=this.loadObject(this.syncSWorldPrefsKey);if(this.syncSWorldPrefs.maxNextLUID){this.syncSWorldPrefs.nextLUID=this.syncSWorldPrefs.maxNextLUID;this.syncSWorldPrefs.maxNextLUID+=100;}
else{this.syncSWorldPrefs.nextLUID=100;this.syncSWorldPrefs.maxNextLUID=200;}
this.saveSyncSWorldPrefs();};SyncSWorld.prototype.saveSyncSWorldPrefs=function(callback){this.saveObject(this.syncSWorldPrefsKey,this.syncSWorldPrefs,callback);};SyncSWorld.prototype.saveSwContactModel=function(callback){this.saveObject(this.swContactModelKey,this.swContactModel,callback);};SyncSWorld.prototype.loadSwContactModel=function(){this.swContactModel=this.loadObject(this.swContactModelKey);};SyncSWorld.prototype.saveSwNoteModel=function(callback){this.saveObject(this.swNoteModelKey,this.swNoteModel,callback);};SyncSWorld.prototype.loadSwNoteModel=function(){this.swNoteModel=this.loadObject(this.swNoteModelKey);};SyncSWorld.prototype.loadSwNoteDeletedModel=function(){this.swNoteDeletedModel=this.loadObject(this.swNoteDeletedModelKey);};SyncSWorld.prototype.saveSwNoteDeletedModel=function(callback){this.saveObject(this.swNoteDeletedModelKey,this.swNoteDeletedModel,callback);};SyncSWorld.prototype.saveMonthRecurEventM=function(callback){this.saveObject(this.monthRecurEventMKey,this.monthRecurEventM,callback);};SyncSWorld.prototype.loadMonthRecurEventM=function(){this.monthRecurEventM=this.loadObject(this.monthRecurEventMKey);};SyncSWorld.prototype.saveUserSettingsDTO=function(callback){this.saveObject(this.swUserSettingsDTOKey,this.userSettingsDTO,callback);this.notifyGeneralSettingsChanged();};SyncSWorld.prototype.loadUserSettingsDTO=function(){this.userSettingsDTO=this.loadObject(this.swUserSettingsDTOKey);};SyncSWorld.prototype.saveInvoiceM=function(callback){this.saveObject(this.emInvoiceMKey,this.invoiceM,callback);};SyncSWorld.prototype.loadInvoiceM=function(){this.invoiceM=this.loadObject(this.emInvoiceMKey);};SyncSWorld.prototype.saveLocationM=function(callback){this.saveObject(this.emLocationMKey,this.locationM,callback);};SyncSWorld.prototype.loadLocationM=function(){this.locationM=this.loadObject(this.emLocationMKey);};SyncSWorld.prototype.saveEmailM=function(callback){this.saveObject(this.emEmailMKey,this.emailM,callback);};SyncSWorld.prototype.loadEmailM=function(){this.emailM=this.loadObject(this.emEmailMKey);};SyncSWorld.prototype.saveSwemuserM=function(callback){this.saveObject(this.swemuserMKey,this.swemuserM,callback);};SyncSWorld.prototype.loadSwemuserM=function(){this.swemuserM=this.loadObject(this.swemuserMKey);};SyncSWorld.prototype.saveItemM=function(callback){this.saveObject(this.emItemMKey,this.itemM,callback);};SyncSWorld.prototype.loadItemM=function(){this.itemM=this.loadObject(this.emItemMKey);};SyncSWorld.prototype.saveCalendarOptimisticVersionM=function(callback){this.saveObject(this.calendarOptimisticVersionMKey,this.calendarOptimisticVersionM,callback);};SyncSWorld.prototype.loadCalendarOptimisticVersionM=function(){this.calendarOptimisticVersionM=this.loadObject(this.calendarOptimisticVersionMKey);};SyncSWorld.prototype.saveMonthEventMOptimisticVersionM=function(callback){this.saveObject(this.monthEventMOptimisticVersionMKey,this.monthEventMOptimisticVersionM,callback);};SyncSWorld.prototype.loadMonthEventMOptimisticVersionM=function(){this.monthEventMOptimisticVersionM=this.loadObject(this.monthEventMOptimisticVersionMKey);};SyncSWorld.prototype.getNextLUID=function(){if(!this.syncSWorldPrefs.nextLUID){this.syncSWorldPrefs.nextLUID=1000;this.syncSWorldPrefs.maxNextLUID=2000;this.saveSyncSWorldPrefs();return"luid"+this.syncSWorldPrefs.nextLUID;}
++this.syncSWorldPrefs.nextLUID;if(this.syncSWorldPrefs.nextLUID>=this.syncSWorldPrefs.maxNextLUID){this.syncSWorldPrefs.maxNextLUID+=100;this.saveSyncSWorldPrefs();}
return"luid"+this.syncSWorldPrefs.nextLUID;};SyncSWorld.prototype.loadGroupIDNameM=function(){this.groupIDNameM=this.loadObject(this.groupIDNameMKey);};SyncSWorld.prototype.saveGroupIDNameM=function(callback){this.saveObject(this.groupIDNameMKey,this.groupIDNameM,callback);};SyncSWorld.prototype.loadGroupIDCalUserIDSM=function(){this.groupIDCalUserIDSM=this.loadObject(this.groupIDCalUserIDSMKey);};SyncSWorld.prototype.saveGroupIDCalUserIDSM=function(callback){this.saveObject(this.groupIDCalUserIDSMKey,this.groupIDCalUserIDSM,callback);};SyncSWorld.prototype.loadInviteEmailGroupIDSM=function(){this.inviteEmailGroupIDSM=this.loadObject(this.inviteEmailGroupIDSMKey);};SyncSWorld.prototype.saveInviteEmailGroupIDSM=function(callback){this.saveObject(this.inviteEmailGroupIDSMKey,this.inviteEmailGroupIDSM,callback);};SyncSWorld.prototype.loadMayShareContactsWithMeS=function(){this.mayShareContactsWithMeS=this.loadObject(this.mayShareContactsWithMeSKey);};SyncSWorld.prototype.saveMayShareContactsWithMeS=function(callback){this.saveObject(this.mayShareContactsWithMeSKey,this.mayShareContactsWithMeS,callback);};SyncSWorld.prototype.loadMayShareContactsWithOthersS=function(){this.mayShareContactsWithOthersS=this.loadObject(this.mayShareContactsWithOthersSKey);};SyncSWorld.prototype.saveMayShareContactsWithOthersS=function(callback){this.saveObject(this.mayShareContactsWithOthersSKey,this.mayShareContactsWithOthersS,callback);};SyncSWorld.prototype.loadCategoryGroupIDM=function(){this.categoryGroupIDM=this.loadObject(this.categoryGroupIDMKey);};SyncSWorld.prototype.saveCategoryGroupIDM=function(callback){this.saveObject(this.categoryGroupIDMKey,this.categoryGroupIDM,callback);};SyncSWorld.prototype.loadCommandLM=function(){this.commandLM=this.loadObject(this.commandLMKey);if(this.commandLM instanceof Array){}
else{this.log("* FAILED to load commandLM");this.commandLM=[];}};SyncSWorld.prototype.saveCommandLM=function(callback){this.saveObject(this.commandLMKey,this.commandLM,callback);};SyncSWorld.prototype.loadSwEventModel=function(){this.swEventModel={};var keys=this.getAllKeys();for(var i=0;i<keys.length;++i){var key=keys[i];if(key.indexOf("eventCal")!==0){continue;}
var calendar=this.loadObject(key);this.swEventModel[key.substring(8)]=calendar;}};SyncSWorld.prototype.saveSwEventModel=function(iCalendarID,callback){var value=this.swEventModel[iCalendarID];var key="eventCal"+iCalendarID;this.saveObject(key,value,callback);};SyncSWorld.prototype.loadSwEventDeletedModel=function(){this.swEventDeletedModel=this.loadObject(this.swEventDeletedModelKey);};SyncSWorld.prototype.saveSwEventDeletedModel=function(callback){this.saveObject(this.swEventDeletedModelKey,this.swEventDeletedModel,callback);};SyncSWorld.prototype.loadSwTodoDeletedModel=function(){this.swTodoDeletedModel=this.loadObject(this.swTodoDeletedModelKey);};SyncSWorld.prototype.saveSwTodoDeletedModel=function(callback){this.saveObject(this.swTodoDeletedModelKey,this.swTodoDeletedModel,callback);};SyncSWorld.prototype.loadSwContactDeletedModel=function(){this.swContactDeletedModel=this.loadObject(this.swContactDeletedModelKey);};SyncSWorld.prototype.saveSwContactDeletedModel=function(callback){this.saveObject(this.swContactDeletedModelKey,this.swContactDeletedModel,callback);};SyncSWorld.prototype.loadSwTodoModel=function(){this.swTodoModel={};var keys=this.getAllKeys();for(var i=0;i<keys.length;++i){var key=keys[i];if(key.indexOf("todoCal")!==0){continue;}
var calendar=this.loadObject(key);this.swTodoModel[key.substring(7)]=calendar;}};SyncSWorld.prototype.saveSwTodoModel=function(iCalendarID,callback){var value=this.swTodoModel[iCalendarID];var key="todoCal"+iCalendarID;this.saveObject(key,value,callback);};SyncSWorld.prototype.disableSave=false;SyncSWorld.prototype.loadObject=function(aKey){var key=this.storagePrefix+aKey;var href=window.location.href;if(href.indexOf("https:")>=0){key="https"+key;}
var result=null;var data="";var loaded=false;try{try{if(typeof globalStorage!='undefined'){data=this._loadObjectMoz(key);loaded=true;}}catch(ex1){this.log("Firefox globalStorage failed:"+ex1);}
if(!loaded){try{if(typeof localStorage!='undefined'){data=this._loadObjectHTML5(key);loaded=true;}}catch(ex2){this.log("HTML 5 localStorage failed:"+ex2);}}
if(!loaded){try{data=this._loadObjectFlash(key);}catch(ex3){}}
if(data){result=swEval(data);}
else{result={};}}catch(ex4){if(this.loggingEnabled){this.log("loadObject() key:"+key+" problem:"+ex4);}
result={};}
return result;};SyncSWorld.prototype.getStorageDomain=function(){return window.location.hostname;};SyncSWorld.prototype._loadObjectMoz=function(key){var domain=this.getStorageDomain();var storage,value;try{storage=globalStorage[domain];value=storage.getItem(key);}catch(ex1){this.log("_loadObjectMoz() failed with key:"+key+", domain:"+
domain+", error:"+ex1);}
if(typeof value=='undefined'||value===null){return null;}
var typeofValue=typeof value.value;if(typeofValue!="undefined"){return value.value;}
return value;};SyncSWorld.prototype._loadObjectHTML5=function(key){var value;try{value=localStorage.getItem(key);}catch(ex){this.log("_loadObjectHTMl5() failed with key:"+key+", domain:"+
domain+", error:"+ex);}
if(typeof value=='undefined'||value===null){return null;}
var typeofValue=typeof value.value;if(typeofValue!="undefined"){return value.value;}
return value;};SyncSWorld.prototype._loadObjectFlash=function(key){return DlFlashStore.get(key);};SyncSWorld.prototype.saveObject=function(aKey,anObj,callback){if(this.disableSave){if(typeof callback=='function'){callback();}
return;}
var key=this.storagePrefix+aKey;var href=window.location.href;if(href.indexOf("https:")>=0){key="https"+key;}
var obj=anObj;if(!obj){obj={};}
var value=null;if(is_gecko){value=obj.toSource();}
else{value=DlJSON.encode(obj);}
try{if(typeof globalStorage!='undefined'){this._saveObjectMoz(key,value);if(typeof callback=='function'){callback(true);return;}}
else if(typeof localStorage!='undefined'){this._saveObjectHTML5(key,value);if(typeof callback=='function'){callback(true);return;}}
else{if(is_ie){this._saveObjectFlash(key,value,callback);return;}}}catch(ex){var str=ex.toString().toLowerCase();if(str.indexOf("security error")>=0){alert("Error:"+ex.toString()+"\n"+this.firefoxBug);throw ex;}
else{this.log("saveObject key:"+key+" failed:"+ex);}}
if(typeof callback=='function'){callback(false);}};SyncSWorld.prototype._saveObjectMoz=function(key,value){var domain=this.getStorageDomain();var storage=globalStorage[domain];storage.setItem(key,value);};SyncSWorld.prototype._saveObjectHTML5=function(key,value){localStorage.setItem(key,value);};SyncSWorld.prototype.saveObjectIE=function(key,value){value.save(key);};SyncSWorld.prototype.initFlashStorage=function(){DlFlashUtils().addEventListener("onStorageStatus",this.flashHandler.$(this));this.initFlashStorageResult=true;};SyncSWorld.prototype.flashHandler=function(flashInfo){if(flashInfo.code!="SharedObject.Flush.Success"){this.log("Failed to save settings to flash storage.");this.wipeFlash();this.disableSave=true;}
if(this.flashCallback){this.flashCallback();}};SyncSWorld.prototype.wipeStorage=function(){var cleared=false;try{if(typeof globalStorage!='undefined'){this.wipeMoz();cleared=true;}}catch(ex){}
try{if(!cleared&&typeof localStorage!='undefined'){this.wipeHTML5();cleared=true;}}catch(ex2){}
if(!cleared){try{this.wipeFlash();}catch(ex3){}}};SyncSWorld.prototype.wipeMoz=function(callback){var store=globalStorage[this.getStorageDomain()];var keys=this.getAllKeys();this.log("storage1 key count:"+keys.length);for(var i=0;i<keys.length;++i){store.setItem(keys[i],"");store.removeItem(keys[i]);}
keys=this.getAllKeys();this.log("storage2 key count:"+keys.length);};SyncSWorld.prototype.wipeHTML5=function(callback){localStorage.clear();};SyncSWorld.prototype.wipeFlash=function(callback){var keys=DlFlashStore.getAllKeys();for(var i=0;i<keys.length;++i){var key=keys[i];DlFlashStore.remove(key);}};SyncSWorld.prototype.getAllKeys=function(){var result=[];var key;if(typeof globalStorage!='undefined'){var store=globalStorage[this.getStorageDomain()];for(key in store){if(store.hasOwnProperty(key)){var obj=store.getItem(key);if(obj){result.push(key);}}}
return result;}
else if(typeof localStorage!='undefined'){for(var i=0;i<localStorage.length;++i){key=localStorage.key(i);result.push(key);}
return result;}
else{var keys=DlFlashStore.getAllKeys();return keys;}};SyncSWorld.prototype._saveObjectFlash=function(key,value,callback){if(!this.initFlashStorageResult){this.initFlashStorage();}
try{this.flashCallback=callback;DlFlashStore.set(key,value);var result=DlFlashStore.flush(true);if(!result){throw("Flash storage flush() returned false.");}
if(this.loggingEnabled){this.log("Flash key:"+key+" saved:"+value);}
if(result=="pending"){return;}
if(typeof callback=='function'){callback();}}catch(ex){if(this.loggingEnabled){this.log("Flash key:"+key+" FAILED to save:"+ex);}
if(typeof callback=='function'){callback();}}};(function(){var DEFAULT_EVENTS=["onTitleChange"];SwMinDialog.inherits(DlDialog);function SwMinDialog(args){if(args){if(!("parent"in args)){args.parent=DEFAULT_WM;}
D.setDefaults(this,args);DlDialog.call(this,args);this.registerEvents(DEFAULT_EVENTS);}}
eval(Dynarch.EXPORT("SwMinDialog"));var DEFAULT_WM;D.setDefaultWM=function(wm){DEFAULT_WM=wm;};D.DEFAULT_ARGS={__noParentKeyBindings:["noParentKB",true],__noPropEvents:["dontBubbleEvents",/^onKey/i],_winlist:["winlist",true]};P.__patchSubclassPrototype=function(){var INSTANCE,CTOR=this.constructor;if(!CTOR.show){CTOR.show=function(){if(!INSTANCE){INSTANCE=new CTOR({});var sz=INSTANCE.initialSize;if(sz){if(sz.x<=1){INSTANCE.setPercentSize(sz.x,sz.y||sz.x);}
else{INSTANCE.setOuterSize(sz);}}}
INSTANCE.show(true);return INSTANCE;};CTOR.killInstance=CTOR.prototype.killInstance=function(){if(INSTANCE)
INSTANCE.destroy();INSTANCE=null;};}};P.setPercentSize=function(x,y){var ps=this.parent.getInnerSize();this.setSize({x:x*ps.x,y:y*ps.y});};P.initDOM=function(){D.BASE.initDOM.apply(this,arguments);if(this._winlist){this.__minBtn=new DlAbstractButton({parent:this,className:"DlDialog-MinimizeBtn",appendArgs:this.getButtonsElement(),classes:{hover:"DlDialog-MinimizeBtn-hover",active:"DlDialog-MinimizeBtn-active"}});this.__minBtn.addEventListener("onClick",this._my_minimize.$(this));this.addEventListener({onShow:this._my_onShow,onHide:this._my_onHide,onActivate:this._my_onActivate});this._my_isMinimized=false;}
this.addEventListener(["onKeyPress","onKeyDown"],DlException.stopWidgetBubbling);};P._my_minimize=function(){if(!this._my_isMinimized){this._my_isMinimized=true;this.hide();}};function winBtnClick(dlg){if(this.checked()){dlg.show();}else{dlg._my_minimize();}}
P._my_onShow=function(){if(!this._my_isMinimized){if(!this._winlist_btn){this._winlist_btn=new DlButton({parent:this.parent.sw_getTaskBar(),className:"Sw-WinListBtn",iconClass:this._iconClass,label:this.title(),type:DlButton.TYPE.TWOSTATE,tooltip:this._getWinlistTooltip.$(this)});var btn=this._winlist_btn;btn._isWinListButton=true;btn.addEventListener("onClick",winBtnClick.$(null,this));}
this._winlist_btn.display(true);}
this._winlist_btn.delClass("Sw-WinListBtn-minimized");this._my_isMinimized=false;};P._my_onActivate=function(isActive){this._winlist_btn.checked(isActive,true);};P._my_onHide=function(){if(this.destroying){this._winlist_btn.destroy();}else if(!this._my_isMinimized){this._winlist_btn.display(false);}else{this._winlist_btn.addClass("Sw-WinListBtn-minimized");this._winlist_btn.flash();}};P._getWinlistTooltip=function(){return this.title();};P.title=function(){var ret=D.BASE.title.apply(this,arguments);if(arguments.length>0){if(this._winlist_btn){this._winlist_btn.label(ret);}
if(this.hasHooks("onTitleChange")){this.callHooks("onTitleChange",ret);}}
return ret;};P.setIconClass=function(iconClass){if(this._winlist_btn){this._winlist_btn.setIconClass(iconClass);}
return D.BASE.setIconClass.call(this,iconClass);};})();var jsLocaleData={"ar-EG":{"ampm":["ص","م"],"country":"EG","currencyCode":"EGP","currencySymbol":"ج.م.","decimalSeparator":".","displayCountry":"مصر","displayCountryUS":"Egypt","displayLanguage":"العربية","displayLanguageUS":"Arabic","eras":["ق.م","م"],"groupingSeparator":",","minusSign":"-","monetaryDecimalSeparator":".","months":["يناير","فبراير","مارس","أبريل","مايو","يونيو","يوليو","أغسطس","سبتمبر","أكتوبر","نوفمبر","ديسمبر",""],"months3":["ينا","فبر","مار","أبر","ماي","يون","يول","أغس","سبت","أكت","نوف","ديس",""],"percentSign":"%","weekDays":["","الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],"weekDays3":["","ح","ن","ث","ر","خ","ج","س"],"zeroDigit":"0"},"el-GR":{"ampm":["πμ","μμ"],"country":"GR","currencyCode":"EUR","currencySymbol":"€","decimalSeparator":",","displayCountry":"Ελλάδα","displayCountryUS":"Greece","displayLanguage":"Ελληνικά","displayLanguageUS":"Greek","eras":["BC","AD"],"groupingSeparator":".","minusSign":"-","monetaryDecimalSeparator":",","months":["Ιανουάριος","Φεβρουάριος","Μάρτιος","Απρίλιος","Μάϊος","Ιούνιος","Ιούλιος","Αύγουστος","Σεπτέμβριος","Οκτώβριος","Νοέμβριος","Δεκέμβριος",""],"months3":["Ιαν","Φεβ","Μαρ","Απρ","Μαϊ","Ιουν","Ιουλ","Αυγ","Σεπ","Οκτ","Νοε","Δεκ",""],"percentSign":"%","weekDays":["","Κυριακή","Δευτέρα","Τρίτη","Τετάρτη","Πέμπτη","Παρασκευή","Σάββατο"],"weekDays3":["","Κυρ","Δευ","Τρι","Τετ","Πεμ","Παρ","Σαβ"],"zeroDigit":"0"},"es-SV":{"ampm":["AM","PM"],"country":"SV","currencyCode":"SVC","currencySymbol":"C","decimalSeparator":".","displayCountry":"El Salvador","displayCountryUS":"El Salvador","displayLanguage":"español","displayLanguageUS":"Spanish","eras":["BC","AD"],"groupingSeparator":",","minusSign":"-","monetaryDecimalSeparator":".","months":["enero","febrero","marzo","abril","mayo","junio","julio","agosto","septiembre","octubre","noviembre","diciembre",""],"months3":["ene","feb","mar","abr","may","jun","jul","ago","sep","oct","nov","dic",""],"percentSign":"%","weekDays":["","domingo","lunes","martes","miércoles","jueves","viernes","sábado"],"weekDays3":["","dom","lun","mar","mié","jue","vie","sáb"],"zeroDigit":"0"},"fr-BE":{"ampm":["AM","PM"],"country":"BE","currencyCode":"EUR","currencySymbol":"€","decimalSeparator":",","displayCountry":"Belgique","displayCountryUS":"Belgium","displayLanguage":"français","displayLanguageUS":"French","eras":["BC","ap. J.-C."],"groupingSeparator":".","minusSign":"-","monetaryDecimalSeparator":",","months":["janvier","février","mars","avril","mai","juin","juillet","août","septembre","octobre","novembre","décembre",""],"months3":["janv.","févr.","mars","avr.","mai","juin","juil.","août","sept.","oct.","nov.","déc.",""],"percentSign":"%","weekDays":["","dimanche","lundi","mardi","mercredi","jeudi","vendredi","samedi"],"weekDays3":["","dim.","lun.","mar.","mer.","jeu.","ven.","sam."],"zeroDigit":"0"},"no":{"ampm":["AM","PM"],"country":"","currencyCode":"XXX","currencySymbol":"¤","decimalSeparator":",","displayCountry":"","displayCountryUS":"","displayLanguage":"norsk","displayLanguageUS":"Norwegian","eras":["BC","AD"],"groupingSeparator":" ","minusSign":"-","monetaryDecimalSeparator":",","months":["januar","februar","mars","april","mai","juni","juli","august","september","oktober","november","desember",""],"months3":["jan","feb","mar","apr","mai","jun","jul","aug","sep","okt","nov","des",""],"percentSign":"%","weekDays":["","søndag","mandag","tirsdag","onsdag","torsdag","fredag","lørdag"],"weekDays3":["","sø","ma","ti","on","to","fr","lø"],"zeroDigit":"0"},"sl-SI":{"ampm":["AM","PM"],"country":"SI","currencyCode":"EUR","currencySymbol":"€","decimalSeparator":",","displayCountry":"Slovenija","displayCountryUS":"Slovenia","displayLanguage":"Slovenščina","displayLanguageUS":"Slovenian","eras":["pr.n.š.","po Kr."],"groupingSeparator":".","minusSign":"-","monetaryDecimalSeparator":",","months":["januar","februar","marec","april","maj","junij","julij","avgust","september","oktober","november","december",""],"months3":["jan","feb","mar","apr","maj","jun","jul","avg","sep","okt","nov","dec",""],"percentSign":"%","weekDays":["","Nedelja","Ponedeljek","Torek","Sreda","Četrtek","Petek","Sobota"],"weekDays3":["","Ned","Pon","Tor","Sre","Čet","Pet","Sob"],"zeroDigit":"0"},"es-BO":{"ampm":["AM","PM"],"country":"BO","currencyCode":"BOB","currencySymbol":"B$","decimalSeparator":",","displayCountry":"Bolivia","displayCountryUS":"Bolivia","displayLanguage":"español","displayLanguageUS":"Spanish","eras":["BC","AD"],"groupingSeparator":".","minusSign":"-","monetaryDecimalSeparator":",","months":["enero","febrero","marzo","abril","mayo","junio","julio","agosto","septiembre","octubre","noviembre","diciembre",""],"months3":["ene","feb","mar","abr","may","jun","jul","ago","sep","oct","nov","dic",""],"percentSign":"%","weekDays":["","domingo","lunes","martes","miércoles","jueves","viernes","sábado"],"weekDays3":["","dom","lun","mar","mié","jue","vie","sáb"],"zeroDigit":"0"},"ga":{"ampm":["a.m.","p.m."],"country":"","currencyCode":"XXX","currencySymbol":"¤","decimalSeparator":".","displayCountry":"","displayCountryUS":"","displayLanguage":"Gaeilge","displayLanguageUS":"Irish","eras":["RC","AD"],"groupingSeparator":",","minusSign":"-","monetaryDecimalSeparator":".","months":["Eanáir","Feabhra","Márta","Aibreán","Bealtaine","Meitheamh","Iúil","Lúnasa","Meán Fómhair","Deireadh Fómhair","Samhain","Nollaig",""],"months3":["Ean","Feabh","Márta","Aib","Beal","Meith","Iúil","Lún","MFómh","DFómh","Samh","Noll",""],"percentSign":"%","weekDays":["","Dé Domhnaigh","Dé Luain","Dé Máirt","Dé Céadaoin","Déardaoin","Dé hAoine","Dé Sathairn"],"weekDays3":["","Domh","Luan","Máirt","Céad","Déar","Aoine","Sath"],"zeroDigit":"0"},"ru-RU":{"ampm":["AM","PM"],"country":"RU","currencyCode":"RUB","currencySymbol":"руб.","decimalSeparator":",","displayCountry":"Россия","displayCountryUS":"Russia","displayLanguage":"русский","displayLanguageUS":"Russian","eras":["до н.э.","н.э."],"groupingSeparator":" ","minusSign":"-","monetaryDecimalSeparator":",","months":["Январь","Февраль","Март","Апрель","Май","Июнь","Июль","Август","Сентябрь","Октябрь","Ноябрь","Декабрь",""],"months3":["янв","фев","мар","апр","май","июн","июл","авг","сен","окт","ноя","дек",""],"percentSign":"%","weekDays":["","воскресенье","понедельник","вторник","среда","четверг","пятница","суббота"],"weekDays3":["","Вс","Пн","Вт","Ср","Чт","Пт","Сб"],"zeroDigit":"0"},"ar-DZ":{"ampm":["ص","م"],"country":"DZ","currencyCode":"DZD","currencySymbol":"د.ج.","decimalSeparator":".","displayCountry":"الجزائر","displayCountryUS":"Algeria","displayLanguage":"العربية","displayLanguageUS":"Arabic","eras":["ق.م","م"],"groupingSeparator":",","minusSign":"-","monetaryDecimalSeparator":".","months":["يناير","فبراير","مارس","أبريل","مايو","يونيو","يوليو","أغسطس","سبتمبر","أكتوبر","نوفمبر","ديسمبر",""],"months3":["ينا","فبر","مار","أبر","ماي","يون","يول","أغس","سبت","أكت","نوف","ديس",""],"percentSign":"%","weekDays":["","الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],"weekDays3":["","ح","ن","ث","ر","خ","ج","س"],"zeroDigit":"0"},"en-MT":{"ampm":["AM","PM"],"country":"MT","currencyCode":"EUR","currencySymbol":"€","decimalSeparator":".","displayCountry":"Malta","displayCountryUS":"Malta","displayLanguage":"English","displayLanguageUS":"English","eras":["BC","AD"],"groupingSeparator":",","minusSign":"-","monetaryDecimalSeparator":".","months":["January","February","March","April","May","June","July","August","September","October","November","December",""],"months3":["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec",""],"percentSign":"%","weekDays":["","Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],"weekDays3":["","Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"zeroDigit":"0"},"fi":{"ampm":["ap.","ip."],"country":"","currencyCode":"XXX","currencySymbol":"¤","decimalSeparator":",","displayCountry":"","displayCountryUS":"","displayLanguage":"suomi","displayLanguageUS":"Finnish","eras":["BC","AD"],"groupingSeparator":" ","minusSign":"-","monetaryDecimalSeparator":",","months":["tammikuu","helmikuu","maaliskuu","huhtikuu","toukokuu","kesäkuu","heinäkuu","elokuu","syyskuu","lokakuu","marraskuu","joulukuu",""],"months3":["tammi","helmi","maalis","huhti","touko","kesä","heinä","elo","syys","loka","marras","joulu",""],"percentSign":"%","weekDays":["","sunnuntai","maanantai","tiistai","keskiviikko","torstai","perjantai","lauantai"],"weekDays3":["","su","ma","ti","ke","to","pe","la"],"zeroDigit":"0"},"fr":{"ampm":["AM","PM"],"country":"","currencyCode":"XXX","currencySymbol":"¤","decimalSeparator":",","displayCountry":"","displayCountryUS":"","displayLanguage":"français","displayLanguageUS":"French","eras":["BC","ap. J.-C."],"groupingSeparator":" ","minusSign":"-","monetaryDecimalSeparator":",","months":["janvier","février","mars","avril","mai","juin","juillet","août","septembre","octobre","novembre","décembre",""],"months3":["janv.","févr.","mars","avr.","mai","juin","juil.","août","sept.","oct.","nov.","déc.",""],"percentSign":"%","weekDays":["","dimanche","lundi","mardi","mercredi","jeudi","vendredi","samedi"],"weekDays3":["","dim.","lun.","mar.","mer.","jeu.","ven.","sam."],"zeroDigit":"0"},"fr-CA":{"ampm":["AM","PM"],"country":"CA","currencyCode":"CAD","currencySymbol":"$","decimalSeparator":",","displayCountry":"Canada","displayCountryUS":"Canada","displayLanguage":"français","displayLanguageUS":"French","eras":["BC","ap. J.-C."],"groupingSeparator":" ","minusSign":"-","monetaryDecimalSeparator":",","months":["janvier","février","mars","avril","mai","juin","juillet","août","septembre","octobre","novembre","décembre",""],"months3":["janv.","févr.","mars","avr.","mai","juin","juil.","août","sept.","oct.","nov.","déc.",""],"percentSign":"%","weekDays":["","dimanche","lundi","mardi","mercredi","jeudi","vendredi","samedi"],"weekDays3":["","dim.","lun.","mar.","mer.","jeu.","ven.","sam."],"zeroDigit":"0"},"sk-SK":{"ampm":["AM","PM"],"country":"SK","currencyCode":"SKK","currencySymbol":"Sk","decimalSeparator":",","displayCountry":"Slovenská republika","displayCountryUS":"Slovakia","displayLanguage":"Slovenčina","displayLanguageUS":"Slovak","eras":["pred n.l.","n.l."],"groupingSeparator":" ","minusSign":"-","monetaryDecimalSeparator":",","months":["január","február","marec","apríl","máj","jún","júl","august","september","október","november","december",""],"months3":["jan","feb","mar","apr","máj","jún","júl","aug","sep","okt","nov","dec",""],"percentSign":"%","weekDays":["","Nedeľa","Pondelok","Utorok","Streda","Štvrtok","Piatok","Sobota"],"weekDays3":["","Ne","Po","Ut","St","Št","Pi","So"],"zeroDigit":"0"},"zh-TW":{"ampm":["上午","下午"],"country":"TW","currencyCode":"TWD","currencySymbol":"NT$","decimalSeparator":".","displayCountry":"台灣","displayCountryUS":"Taiwan","displayLanguage":"中文","displayLanguageUS":"Chinese","eras":["西元前","西元"],"groupingSeparator":",","minusSign":"-","monetaryDecimalSeparator":".","months":["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月",""],"months3":["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月",""],"percentSign":"%","weekDays":["","星期日","星期一","星期二","星期三","星期四","星期五","星期六"],"weekDays3":["","星期日","星期一","星期二","星期三","星期四","星期五","星期六"],"zeroDigit":"0"},"no-NO":{"ampm":["AM","PM"],"country":"NO","currencyCode":"NOK","currencySymbol":"kr","decimalSeparator":",","displayCountry":"Norge","displayCountryUS":"Norway","displayLanguage":"norsk","displayLanguageUS":"Norwegian","eras":["BC","AD"],"groupingSeparator":" ","minusSign":"-","monetaryDecimalSeparator":",","months":["januar","februar","mars","april","mai","juni","juli","august","september","oktober","november","desember",""],"months3":["jan","feb","mar","apr","mai","jun","jul","aug","sep","okt","nov","des",""],"percentSign":"%","weekDays":["","sundag","måndag","tysdag","onsdag","torsdag","fredag","laurdag"],"weekDays3":["","su","må","ty","on","to","fr","lau"],"zeroDigit":"0"},"es-CO":{"ampm":["AM","PM"],"country":"CO","currencyCode":"COP","currencySymbol":"$","decimalSeparator":",","displayCountry":"Colombia","displayCountryUS":"Colombia","displayLanguage":"español","displayLanguageUS":"Spanish","eras":["BC","AD"],"groupingSeparator":".","minusSign":"-","monetaryDecimalSeparator":",","months":["enero","febrero","marzo","abril","mayo","junio","julio","agosto","septiembre","octubre","noviembre","diciembre",""],"months3":["ene","feb","mar","abr","may","jun","jul","ago","sep","oct","nov","dic",""],"percentSign":"%","weekDays":["","domingo","lunes","martes","miércoles","jueves","viernes","sábado"],"weekDays3":["","dom","lun","mar","mié","jue","vie","sáb"],"zeroDigit":"0"},"en-NZ":{"ampm":["AM","PM"],"country":"NZ","currencyCode":"NZD","currencySymbol":"$","decimalSeparator":".","displayCountry":"New Zealand","displayCountryUS":"New Zealand","displayLanguage":"English","displayLanguageUS":"English","eras":["BC","AD"],"groupingSeparator":",","minusSign":"-","monetaryDecimalSeparator":".","months":["January","February","March","April","May","June","July","August","September","October","November","December",""],"months3":["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec",""],"percentSign":"%","weekDays":["","Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],"weekDays3":["","Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"zeroDigit":"0"},"lv-LV":{"ampm":["AM","PM"],"country":"LV","currencyCode":"LVL","currencySymbol":"Ls","decimalSeparator":",","displayCountry":"Latvija","displayCountryUS":"Latvia","displayLanguage":"Latviešu","displayLanguageUS":"Latvian","eras":["pmē","mē"],"groupingSeparator":" ","minusSign":"-","monetaryDecimalSeparator":",","months":["janvāris","februāris","marts","aprīlis","maijs","jūnijs","jūlijs","augusts","septembris","oktobris","novembris","decembris",""],"months3":["Jan","Feb","Mar","Apr","Maijs","Jūn","Jūl","Aug","Sep","Okt","Nov","Dec",""],"percentSign":"%","weekDays":["","svētdiena","pirmdiena","otrdiena","trešdiena","ceturtdiena","piektdiena","sestdiena"],"weekDays3":["","Sv","P","O","T","C","Pk","S"],"zeroDigit":"0"},"es-CL":{"ampm":["AM","PM"],"country":"CL","currencyCode":"CLP","currencySymbol":"Ch$","decimalSeparator":",","displayCountry":"Chile","displayCountryUS":"Chile","displayLanguage":"español","displayLanguageUS":"Spanish","eras":["BC","AD"],"groupingSeparator":".","minusSign":"-","monetaryDecimalSeparator":",","months":["enero","febrero","marzo","abril","mayo","junio","julio","agosto","septiembre","octubre","noviembre","diciembre",""],"months3":["ene","feb","mar","abr","may","jun","jul","ago","sep","oct","nov","dic",""],"percentSign":"%","weekDays":["","domingo","lunes","martes","miércoles","jueves","viernes","sábado"],"weekDays3":["","dom","lun","mar","mié","jue","vie","sáb"],"zeroDigit":"0"},"en-US":{"ampm":["AM","PM"],"country":"US","currencyCode":"USD","currencySymbol":"$","decimalSeparator":".","displayCountry":"United States","displayCountryUS":"United States","displayLanguage":"English","displayLanguageUS":"English","eras":["BC","AD"],"groupingSeparator":",","minusSign":"-","monetaryDecimalSeparator":".","months":["January","February","March","April","May","June","July","August","September","October","November","December",""],"months3":["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec",""],"percentSign":"%","weekDays":["","Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],"weekDays3":["","Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"zeroDigit":"0"},"es-CR":{"ampm":["AM","PM"],"country":"CR","currencyCode":"CRC","currencySymbol":"C","decimalSeparator":".","displayCountry":"Costa Rica","displayCountryUS":"Costa Rica","displayLanguage":"español","displayLanguageUS":"Spanish","eras":["BC","AD"],"groupingSeparator":",","minusSign":"-","monetaryDecimalSeparator":".","months":["enero","febrero","marzo","abril","mayo","junio","julio","agosto","septiembre","octubre","noviembre","diciembre",""],"months3":["ene","feb","mar","abr","may","jun","jul","ago","sep","oct","nov","dic",""],"percentSign":"%","weekDays":["","domingo","lunes","martes","miércoles","jueves","viernes","sábado"],"weekDays3":["","dom","lun","mar","mié","jue","vie","sáb"],"zeroDigit":"0"},"th-TH":{"ampm":["ก่อนเที่ยง","หลังเที่ยง"],"country":"TH","currencyCode":"THB","currencySymbol":"฿","decimalSeparator":".","displayCountry":"ประเทศไทย","displayCountryUS":"Thailand","displayLanguage":"ไทย","displayLanguageUS":"Thai","eras":["ปีก่อนคริสต์กาลที่","ค.ศ."],"groupingSeparator":",","minusSign":"-","monetaryDecimalSeparator":".","months":["มกราคม","กุมภาพันธ์","มีนาคม","เมษายน","พฤษภาคม","มิถุนายน","กรกฎาคม","สิงหาคม","กันยายน","ตุลาคม","พฤศจิกายน","ธันวาคม",""],"months3":["ม.ค.","ก.พ.","มี.ค.","เม.ย.","พ.ค.","มิ.ย.","ก.ค.","ส.ค.","ก.ย.","ต.ค.","พ.ย.","ธ.ค.",""],"percentSign":"%","weekDays":["","วันอาทิตย์","วันจันทร์","วันอังคาร","วันพุธ","วันพฤหัสบดี","วันศุกร์","วันเสาร์"],"weekDays3":["","อา.","จ.","อ.","พ.","พฤ.","ศ.","ส."],"zeroDigit":"๐"},"ca-ES":{"ampm":["AM","PM"],"country":"ES","currencyCode":"EUR","currencySymbol":"€","decimalSeparator":",","displayCountry":"Espanya","displayCountryUS":"Spain","displayLanguage":"català","displayLanguageUS":"Catalan","eras":["BC","AD"],"groupingSeparator":".","minusSign":"-","monetaryDecimalSeparator":",","months":["gener","febrer","març","abril","maig","juny","juliol","agost","setembre","octubre","novembre","desembre",""],"months3":["gen.","feb.","març","abr.","maig","juny","jul.","ag.","set.","oct.","nov.","des.",""],"percentSign":"%","weekDays":["","diumenge","dilluns","dimarts","dimecres","dijous","divendres","dissabte"],"weekDays3":["","dg.","dl.","dt.","dc.","dj.","dv.","ds."],"zeroDigit":"0"},"sr-CS":{"ampm":["AM","PM"],"country":"CS","currencyCode":"CSD","currencySymbol":"CSD","decimalSeparator":",","displayCountry":"Србија и Црна Гора","displayCountryUS":"Serbia and Montenegro","displayLanguage":"Српски","displayLanguageUS":"Serbian","eras":["п. н. е.","н. е"],"groupingSeparator":".","minusSign":"-","monetaryDecimalSeparator":",","months":["јануар","фебруар","март","април","мај","јун","јул","август","септембар","октобар","новембар","децембар",""],"months3":["јан","феб","мар","апр","мај","јун","јул","авг","сеп","окт","нов","дец",""],"percentSign":"%","weekDays":["","недеља","понедељак","уторак","среда","четвртак","петак","субота"],"weekDays3":["","нед","пон","уто","сре","чет","пет","суб"],"zeroDigit":"0"},"hu-HU":{"ampm":["DE","DU"],"country":"HU","currencyCode":"HUF","currencySymbol":"Ft","decimalSeparator":",","displayCountry":"Magyarország","displayCountryUS":"Hungary","displayLanguage":"magyar","displayLanguageUS":"Hungarian","eras":["i.e.","i.u."],"groupingSeparator":" ","minusSign":"-","monetaryDecimalSeparator":",","months":["január","február","március","április","május","június","július","augusztus","szeptember","október","november","december",""],"months3":["jan.","febr.","márc.","ápr.","máj.","jún.","júl.","aug.","szept.","okt.","nov.","dec.",""],"percentSign":"%","weekDays":["","vasárnap","hétfő","kedd","szerda","csütörtök","péntek","szombat"],"weekDays3":["","V","H","K","Sze","Cs","P","Szo"],"zeroDigit":"0"},"en-GB":{"ampm":["AM","PM"],"country":"GB","currencyCode":"GBP","currencySymbol":"£","decimalSeparator":".","displayCountry":"United Kingdom","displayCountryUS":"United Kingdom","displayLanguage":"English","displayLanguageUS":"English","eras":["BC","AD"],"groupingSeparator":",","minusSign":"-","monetaryDecimalSeparator":".","months":["January","February","March","April","May","June","July","August","September","October","November","December",""],"months3":["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec",""],"percentSign":"%","weekDays":["","Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],"weekDays3":["","Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"zeroDigit":"0"},"pl":{"ampm":["AM","PM"],"country":"","currencyCode":"XXX","currencySymbol":"¤","decimalSeparator":",","displayCountry":"","displayCountryUS":"","displayLanguage":"polski","displayLanguageUS":"Polish","eras":["p.n.e.","n.e."],"groupingSeparator":" ","minusSign":"-","monetaryDecimalSeparator":",","months":["styczeń","luty","marzec","kwiecień","maj","czerwiec","lipiec","sierpień","wrzesień","październik","listopad","grudzień",""],"months3":["sty","lut","mar","kwi","maj","cze","lip","sie","wrz","paź","lis","gru",""],"percentSign":"%","weekDays":["","niedziela","poniedziałek","wtorek","środa","czwartek","piątek","sobota"],"weekDays3":["","N","Pn","Wt","Śr","Cz","Pt","So"],"zeroDigit":"0"},"vi-VN":{"ampm":["SA","CH"],"country":"VN","currencyCode":"VND","currencySymbol":"đ","decimalSeparator":",","displayCountry":"Việt Nam","displayCountryUS":"Vietnam","displayLanguage":"Tiếng Việt","displayLanguageUS":"Vietnamese","eras":["tr. CN","sau CN"],"groupingSeparator":".","minusSign":"-","monetaryDecimalSeparator":",","months":["tháng một","tháng hai","tháng ba","tháng tư","tháng năm","tháng sáu","tháng bảy","tháng tám","tháng chín","tháng mười","tháng mười một","tháng mười hai",""],"months3":["thg 1","thg 2","thg 3","thg 4","thg 5","thg 6","thg 7","thg 8","thg 9","thg 10","thg 11","thg 12",""],"percentSign":"%","weekDays":["","Chủ nhật","Thứ hai","Thứ ba","Thứ tư","Thứ năm","Thứ sáu","Thứ bảy"],"weekDays3":["","CN","Th 2","Th 3","Th 4","Th 5","Th 6","Th 7"],"zeroDigit":"0"},"ar-OM":{"ampm":["ص","م"],"country":"OM","currencyCode":"OMR","currencySymbol":"ر.ع.","decimalSeparator":".","displayCountry":"سلطنة عمان","displayCountryUS":"Oman","displayLanguage":"العربية","displayLanguageUS":"Arabic","eras":["ق.م","م"],"groupingSeparator":",","minusSign":"-","monetaryDecimalSeparator":".","months":["يناير","فبراير","مارس","أبريل","مايو","يونيو","يوليو","أغسطس","سبتمبر","أكتوبر","نوفمبر","ديسمبر",""],"months3":["ينا","فبر","مار","أبر","ماي","يون","يول","أغس","سبت","أكت","نوف","ديس",""],"percentSign":"%","weekDays":["","الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],"weekDays3":["","ح","ن","ث","ر","خ","ج","س"],"zeroDigit":"0"},"nl-BE":{"ampm":["AM","PM"],"country":"BE","currencyCode":"EUR","currencySymbol":"€","decimalSeparator":",","displayCountry":"België","displayCountryUS":"Belgium","displayLanguage":"Nederlands","displayLanguageUS":"Dutch","eras":["v. Chr.","n. Chr."],"groupingSeparator":".","minusSign":"-","monetaryDecimalSeparator":",","months":["januari","februari","maart","april","mei","juni","juli","augustus","september","oktober","november","december",""],"months3":["jan","feb","mrt","apr","mei","jun","jul","aug","sep","okt","nov","dec",""],"percentSign":"%","weekDays":["","zondag","maandag","dinsdag","woensdag","donderdag","vrijdag","zaterdag"],"weekDays3":["","zo","ma","di","wo","do","vr","za"],"zeroDigit":"0"},"ro-RO":{"ampm":["AM","PM"],"country":"RO","currencyCode":"RON","currencySymbol":"LEI","decimalSeparator":",","displayCountry":"România","displayCountryUS":"Romania","displayLanguage":"română","displayLanguageUS":"Romanian","eras":["d.C.","î.d.C."],"groupingSeparator":".","minusSign":"-","monetaryDecimalSeparator":",","months":["ianuarie","februarie","martie","aprilie","mai","iunie","iulie","august","septembrie","octombrie","noiembrie","decembrie",""],"months3":["Ian","Feb","Mar","Apr","Mai","Iun","Iul","Aug","Sep","Oct","Nov","Dec",""],"percentSign":"%","weekDays":["","duminică","luni","marţi","miercuri","joi","vineri","sâmbătă"],"weekDays3":["","D","L","Ma","Mi","J","V","S"],"zeroDigit":"0"},"ja-JP":{"ampm":["午前","午後"],"country":"JP","currencyCode":"JPY","currencySymbol":"￥","decimalSeparator":".","displayCountry":"日本","displayCountryUS":"Japan","displayLanguage":"日本語","displayLanguageUS":"Japanese","eras":["紀元前","西暦"],"groupingSeparator":",","minusSign":"-","monetaryDecimalSeparator":".","months":["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月",""],"months3":["1","2","3","4","5","6","7","8","9","10","11","12",""],"percentSign":"%","weekDays":["","日曜日","月曜日","火曜日","水曜日","木曜日","金曜日","土曜日"],"weekDays3":["","日","月","火","水","木","金","土"],"zeroDigit":"0"},"vi":{"ampm":["SA","CH"],"country":"","currencyCode":"XXX","currencySymbol":"¤","decimalSeparator":",","displayCountry":"","displayCountryUS":"","displayLanguage":"Tiếng Việt","displayLanguageUS":"Vietnamese","eras":["tr. CN","sau CN"],"groupingSeparator":".","minusSign":"-","monetaryDecimalSeparator":",","months":["tháng một","tháng hai","tháng ba","tháng tư","tháng năm","tháng sáu","tháng bảy","tháng tám","tháng chín","tháng mười","tháng mười một","tháng mười hai",""],"months3":["thg 1","thg 2","thg 3","thg 4","thg 5","thg 6","thg 7","thg 8","thg 9","thg 10","thg 11","thg 12",""],"percentSign":"%","weekDays":["","Chủ nhật","Thứ hai","Thứ ba","Thứ tư","Thứ năm","Thứ sáu","Thứ bảy"],"weekDays3":["","CN","Th 2","Th 3","Th 4","Th 5","Th 6","Th 7"],"zeroDigit":"0"},"ar-TN":{"ampm":["ص","م"],"country":"TN","currencyCode":"TND","currencySymbol":"د.ت.","decimalSeparator":".","displayCountry":"تونس","displayCountryUS":"Tunisia","displayLanguage":"العربية","displayLanguageUS":"Arabic","eras":["ق.م","م"],"groupingSeparator":",","minusSign":"-","monetaryDecimalSeparator":".","months":["يناير","فبراير","مارس","أبريل","مايو","يونيو","يوليو","أغسطس","سبتمبر","أكتوبر","نوفمبر","ديسمبر",""],"months3":["ينا","فبر","مار","أبر","ماي","يون","يول","أغس","سبت","أكت","نوف","ديس",""],"percentSign":"%","weekDays":["","الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],"weekDays3":["","ح","ن","ث","ر","خ","ج","س"],"zeroDigit":"0"},"ar-KW":{"ampm":["ص","م"],"country":"KW","currencyCode":"KWD","currencySymbol":"د.ك.","decimalSeparator":".","displayCountry":"الكويت","displayCountryUS":"Kuwait","displayLanguage":"العربية","displayLanguageUS":"Arabic","eras":["ق.م","م"],"groupingSeparator":",","minusSign":"-","monetaryDecimalSeparator":".","months":["يناير","فبراير","مارس","أبريل","مايو","يونيو","يوليو","أغسطس","سبتمبر","أكتوبر","نوفمبر","ديسمبر",""],"months3":["ينا","فبر","مار","أبر","ماي","يون","يول","أغس","سبت","أكت","نوف","ديس",""],"percentSign":"%","weekDays":["","الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],"weekDays3":["","ح","ن","ث","ر","خ","ج","س"],"zeroDigit":"0"},"pl-PL":{"ampm":["AM","PM"],"country":"PL","currencyCode":"PLN","currencySymbol":"zł","decimalSeparator":",","displayCountry":"Polska","displayCountryUS":"Poland","displayLanguage":"polski","displayLanguageUS":"Polish","eras":["p.n.e.","n.e."],"groupingSeparator":" ","minusSign":"-","monetaryDecimalSeparator":",","months":["styczeń","luty","marzec","kwiecień","maj","czerwiec","lipiec","sierpień","wrzesień","październik","listopad","grudzień",""],"months3":["sty","lut","mar","kwi","maj","cze","lip","sie","wrz","paź","lis","gru",""],"percentSign":"%","weekDays":["","niedziela","poniedziałek","wtorek","środa","czwartek","piątek","sobota"],"weekDays3":["","N","Pn","Wt","Śr","Cz","Pt","So"],"zeroDigit":"0"},"lv":{"ampm":["AM","PM"],"country":"","currencyCode":"XXX","currencySymbol":"¤","decimalSeparator":",","displayCountry":"","displayCountryUS":"","displayLanguage":"Latviešu","displayLanguageUS":"Latvian","eras":["pmē","mē"],"groupingSeparator":" ","minusSign":"-","monetaryDecimalSeparator":",","months":["janvāris","februāris","marts","aprīlis","maijs","jūnijs","jūlijs","augusts","septembris","oktobris","novembris","decembris",""],"months3":["Jan","Feb","Mar","Apr","Maijs","Jūn","Jūl","Aug","Sep","Okt","Nov","Dec",""],"percentSign":"%","weekDays":["","svētdiena","pirmdiena","otrdiena","trešdiena","ceturtdiena","piektdiena","sestdiena"],"weekDays3":["","Sv","P","O","T","C","Pk","S"],"zeroDigit":"0"},"lt":{"ampm":["AM","PM"],"country":"","currencyCode":"XXX","currencySymbol":"¤","decimalSeparator":",","displayCountry":"","displayCountryUS":"","displayLanguage":"Lietuvių","displayLanguageUS":"Lithuanian","eras":["pr.Kr.","po.Kr."],"groupingSeparator":" ","minusSign":"-","monetaryDecimalSeparator":",","months":["Sausio","Vasario","Kovo","Balandžio","Gegužės","Birželio","Liepos","Rugpjūčio","Rugsėjo","Spalio","Lapkričio","Gruodžio",""],"months3":["Sau","Vas","Kov","Bal","Geg","Bir","Lie","Rgp","Rgs","Spa","Lap","Grd",""],"percentSign":"%","weekDays":["","Sekmadienis","Pirmadienis","Antradienis","Trečiadienis","Ketvirtadienis","Penktadienis","Šeštadienis"],"weekDays3":["","Sk","Pr","An","Tr","Kt","Pn","Št"],"zeroDigit":"0"},"en-CA":{"ampm":["AM","PM"],"country":"CA","currencyCode":"CAD","currencySymbol":"$","decimalSeparator":".","displayCountry":"Canada","displayCountryUS":"Canada","displayLanguage":"English","displayLanguageUS":"English","eras":["BC","AD"],"groupingSeparator":",","minusSign":"-","monetaryDecimalSeparator":".","months":["January","February","March","April","May","June","July","August","September","October","November","December",""],"months3":["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec",""],"percentSign":"%","weekDays":["","Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],"weekDays3":["","Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"zeroDigit":"0"},"de":{"ampm":["AM","PM"],"country":"","currencyCode":"XXX","currencySymbol":"¤","decimalSeparator":",","displayCountry":"","displayCountryUS":"","displayLanguage":"Deutsch","displayLanguageUS":"German","eras":["v. Chr.","n. Chr."],"groupingSeparator":".","minusSign":"-","monetaryDecimalSeparator":",","months":["Januar","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember",""],"months3":["Jan","Feb","Mrz","Apr","Mai","Jun","Jul","Aug","Sep","Okt","Nov","Dez",""],"percentSign":"%","weekDays":["","Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag"],"weekDays3":["","So","Mo","Di","Mi","Do","Fr","Sa"],"zeroDigit":"0"},"ar-SY":{"ampm":["ص","م"],"country":"SY","currencyCode":"SYP","currencySymbol":"ل.س.","decimalSeparator":".","displayCountry":"سوريا","displayCountryUS":"Syria","displayLanguage":"العربية","displayLanguageUS":"Arabic","eras":["ق.م","م"],"groupingSeparator":",","minusSign":"-","monetaryDecimalSeparator":".","months":["كانون الثاني","شباط","آذار","نيسان","نواران","حزير","تموز","آب","أيلول","تشرين الأول","تشرين الثاني","كانون الأول",""],"months3":["كانون الثاني","شباط","آذار","نيسان","نوار","حزيران","تموز","آب","أيلول","تشرين الأول","تشرين الثاني","كانون الأول",""],"percentSign":"%","weekDays":["","الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],"weekDays3":["","الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],"zeroDigit":"0"},"et-EE":{"ampm":["AM","PM"],"country":"EE","currencyCode":"EEK","currencySymbol":"kr","decimalSeparator":",","displayCountry":"Eesti","displayCountryUS":"Estonia","displayLanguage":"Eesti","displayLanguageUS":"Estonian","eras":["e.m.a.","m.a.j."],"groupingSeparator":" ","minusSign":"-","monetaryDecimalSeparator":",","months":["Jaanuar","Veebruar","Märts","Aprill","Mai","Juuni","Juuli","August","September","Oktoober","November","Detsember",""],"months3":["Jaan","Veebr","Märts","Apr","Mai","Juuni","Juuli","Aug","Sept","Okt","Nov","Dets",""],"percentSign":"%","weekDays":["","pühapäev","esmaspäev","teisipäev","kolmapäev","neljapäev","reede","laupäev"],"weekDays3":["","P","E","T","K","N","R","L"],"zeroDigit":"0"},"ar-LB":{"ampm":["ص","م"],"country":"LB","currencyCode":"LBP","currencySymbol":"ل.ل.","decimalSeparator":".","displayCountry":"لبنان","displayCountryUS":"Lebanon","displayLanguage":"العربية","displayLanguageUS":"Arabic","eras":["ق.م","م"],"groupingSeparator":",","minusSign":"-","monetaryDecimalSeparator":".","months":["كانون الثاني","شباط","آذار","نيسان","نوار","حزيران","تموز","آب","أيلول","تشرين الأول","تشرين الثاني","كانون الأول",""],"months3":["كانون الثاني","شباط","آذار","نيسان","نوار","حزيران","تموز","آب","أيلول","تشرين الأول","تشرين الثاني","كانون الأول",""],"percentSign":"%","weekDays":["","الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],"weekDays3":["","الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],"zeroDigit":"0"},"de-AT":{"ampm":["AM","PM"],"country":"AT","currencyCode":"EUR","currencySymbol":"€","decimalSeparator":",","displayCountry":"Österreich","displayCountryUS":"Austria","displayLanguage":"Deutsch","displayLanguageUS":"German","eras":["v. Chr.","n. Chr."],"groupingSeparator":".","minusSign":"-","monetaryDecimalSeparator":",","months":["Jänner","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember",""],"months3":["Jän","Feb","Mär","Apr","Mai","Jun","Jul","Aug","Sep","Okt","Nov","Dez",""],"percentSign":"%","weekDays":["","Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag"],"weekDays3":["","So","Mo","Di","Mi","Do","Fr","Sa"],"zeroDigit":"0"},"mk":{"ampm":["AM","PM"],"country":"","currencyCode":"XXX","currencySymbol":"¤","decimalSeparator":",","displayCountry":"","displayCountryUS":"","displayLanguage":"македонски","displayLanguageUS":"Macedonian","eras":["пр.н.е.","ае."],"groupingSeparator":".","minusSign":"-","monetaryDecimalSeparator":",","months":["јануари","февруари","март","април","мај","јуни","јули","август","септември","октомври","ноември","декември",""],"months3":["јан.","фев.","мар.","апр.","мај.","јун.","јул.","авг.","септ.","окт.","ноем.","декем.",""],"percentSign":"%","weekDays":["","недела","понеделник","вторник","среда","четврток","петок","сабота"],"weekDays3":["","нед.","пон.","вт.","сре.","чет.","пет.","саб."],"zeroDigit":"0"},"es-PR":{"ampm":["AM","PM"],"country":"PR","currencyCode":"USD","currencySymbol":"$","decimalSeparator":".","displayCountry":"Puerto Rico","displayCountryUS":"Puerto Rico","displayLanguage":"español","displayLanguageUS":"Spanish","eras":["BC","AD"],"groupingSeparator":",","minusSign":"-","monetaryDecimalSeparator":".","months":["enero","febrero","marzo","abril","mayo","junio","julio","agosto","septiembre","octubre","noviembre","diciembre",""],"months3":["ene","feb","mar","abr","may","jun","jul","ago","sep","oct","nov","dic",""],"percentSign":"%","weekDays":["","domingo","lunes","martes","miércoles","jueves","viernes","sábado"],"weekDays3":["","dom","lun","mar","mié","jue","vie","sáb"],"zeroDigit":"0"},"uk-UA":{"ampm":["AM","PM"],"country":"UA","currencyCode":"UAH","currencySymbol":"грв.","decimalSeparator":",","displayCountry":"Україна","displayCountryUS":"Ukraine","displayLanguage":"українська","displayLanguageUS":"Ukrainian","eras":["до н.е.","після н.е."],"groupingSeparator":".","minusSign":"-","monetaryDecimalSeparator":",","months":["січня","лютого","березня","квітня","травня","червня","липня","серпня","вересня","жовтня","листопада","грудня",""],"months3":["січ","лют","бер","квіт","трав","черв","лип","серп","вер","жовт","лист","груд",""],"percentSign":"%","weekDays":["","неділя","понеділок","вівторок","середа","четвер","п'ятниця","субота"],"weekDays3":["","нд","пн","вт","ср","чт","пт","сб"],"zeroDigit":"0"},"uk":{"ampm":["AM","PM"],"country":"","currencyCode":"XXX","currencySymbol":"¤","decimalSeparator":",","displayCountry":"","displayCountryUS":"","displayLanguage":"українська","displayLanguageUS":"Ukrainian","eras":["до н.е.","після н.е."],"groupingSeparator":".","minusSign":"-","monetaryDecimalSeparator":",","months":["січня","лютого","березня","квітня","травня","червня","липня","серпня","вересня","жовтня","листопада","грудня",""],"months3":["січ","лют","бер","квіт","трав","черв","лип","серп","вер","жовт","лист","груд",""],"percentSign":"%","weekDays":["","неділя","понеділок","вівторок","середа","четвер","п'ятниця","субота"],"weekDays3":["","нд","пн","вт","ср","чт","пт","сб"],"zeroDigit":"0"},"mt":{"ampm":["QN","WN"],"country":"","currencyCode":"XXX","currencySymbol":"¤","decimalSeparator":".","displayCountry":"","displayCountryUS":"","displayLanguage":"Malti","displayLanguageUS":"Maltese","eras":["QK","WK"],"groupingSeparator":",","minusSign":"-","monetaryDecimalSeparator":".","months":["Jannar","Frar","Marzu","April","Mejju","Ġunju","Lulju","Awissu","Settembru","Ottubru","Novembru","Diċembru",""],"months3":["Jan","Fra","Mar","Apr","Mej","Ġun","Lul","Awi","Set","Ott","Nov","Diċ",""],"percentSign":"%","weekDays":["","Il-Ħadd","It-Tnejn","It-Tlieta","L-Erbgħa","Il-Ħamis","Il-Ġimgħa","Is-Sibt"],"weekDays3":["","Ħad","Tne","Tli","Erb","Ħam","Ġim","Sib"],"zeroDigit":"0"},"ms":{"ampm":["AM","PM"],"country":"","currencyCode":"XXX","currencySymbol":"¤","decimalSeparator":".","displayCountry":"","displayCountryUS":"","displayLanguage":"Bahasa Melayu","displayLanguageUS":"Malay","eras":["BCE","CE"],"groupingSeparator":",","minusSign":"-","monetaryDecimalSeparator":".","months":["Januari","Februari","Mac","April","Mei","Jun","Julai","Ogos","September","Oktober","November","Disember",""],"months3":["Jan","Feb","Mac","Apr","Mei","Jun","Jul","Ogos","Sep","Okt","Nov","Dis",""],"percentSign":"%","weekDays":["","Ahad","Isnin","Selasa","Rabu","Khamis","Jumaat","Sabtu"],"weekDays3":["","Ahd","Isn","Sel","Rab","Kha","Jum","Sab"],"zeroDigit":"0"},"es-PY":{"ampm":["AM","PM"],"country":"PY","currencyCode":"PYG","currencySymbol":"G","decimalSeparator":",","displayCountry":"Paraguay","displayCountryUS":"Paraguay","displayLanguage":"español","displayLanguageUS":"Spanish","eras":["BC","AD"],"groupingSeparator":".","minusSign":"-","monetaryDecimalSeparator":",","months":["enero","febrero","marzo","abril","mayo","junio","julio","agosto","septiembre","octubre","noviembre","diciembre",""],"months3":["ene","feb","mar","abr","may","jun","jul","ago","sep","oct","nov","dic",""],"percentSign":"%","weekDays":["","domingo","lunes","martes","miércoles","jueves","viernes","sábado"],"weekDays3":["","dom","lun","mar","mié","jue","vie","sáb"],"zeroDigit":"0"},"mt-MT":{"ampm":["QN","WN"],"country":"MT","currencyCode":"EUR","currencySymbol":"€","decimalSeparator":".","displayCountry":"Malta","displayCountryUS":"Malta","displayLanguage":"Malti","displayLanguageUS":"Maltese","eras":["QK","WK"],"groupingSeparator":",","minusSign":"-","monetaryDecimalSeparator":".","months":["Jannar","Frar","Marzu","April","Mejju","Ġunju","Lulju","Awissu","Settembru","Ottubru","Novembru","Diċembru",""],"months3":["Jan","Fra","Mar","Apr","Mej","Ġun","Lul","Awi","Set","Ott","Nov","Diċ",""],"percentSign":"%","weekDays":["","Il-Ħadd","It-Tnejn","It-Tlieta","L-Erbgħa","Il-Ħamis","Il-Ġimgħa","Is-Sibt"],"weekDays3":["","Ħad","Tne","Tli","Erb","Ħam","Ġim","Sib"],"zeroDigit":"0"},"ar-LY":{"ampm":["ص","م"],"country":"LY","currencyCode":"LYD","currencySymbol":"د.ل.","decimalSeparator":".","displayCountry":"ليبيا","displayCountryUS":"Libya","displayLanguage":"العربية","displayLanguageUS":"Arabic","eras":["ق.م","م"],"groupingSeparator":",","minusSign":"-","monetaryDecimalSeparator":".","months":["يناير","فبراير","مارس","أبريل","مايو","يونيو","يوليو","أغسطس","سبتمبر","أكتوبر","نوفمبر","ديسمبر",""],"months3":["ينا","فبر","مار","أبر","ماي","يون","يول","أغس","سبت","أكت","نوف","ديس",""],"percentSign":"%","weekDays":["","الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],"weekDays3":["","ح","ن","ث","ر","خ","ج","س"],"zeroDigit":"0"},"pt-PT":{"ampm":["AM","PM"],"country":"PT","currencyCode":"EUR","currencySymbol":"€","decimalSeparator":",","displayCountry":"Portugal","displayCountryUS":"Portugal","displayLanguage":"português","displayLanguageUS":"Portuguese","eras":["BC","AD"],"groupingSeparator":".","minusSign":"-","monetaryDecimalSeparator":",","months":["Janeiro","Fevereiro","Março","Abril","Maio","Junho","Julho","Agosto","Setembro","Outubro","Novembro","Dezembro",""],"months3":["Jan","Fev","Mar","Abr","Mai","Jun","Jul","Ago","Set","Out","Nov","Dez",""],"percentSign":"%","weekDays":["","Domingo","Segunda-feira","Terça-feira","Quarta-feira","Quinta-feira","Sexta-feira","Sábado"],"weekDays3":["","Dom","Seg","Ter","Qua","Qui","Sex","Sáb"],"zeroDigit":"0"},"hr-HR":{"ampm":["AM","PM"],"country":"HR","currencyCode":"HRK","currencySymbol":"Kn","decimalSeparator":",","displayCountry":"Hrvatska","displayCountryUS":"Croatia","displayLanguage":"hrvatski","displayLanguageUS":"Croatian","eras":["BC","AD"],"groupingSeparator":".","minusSign":"-","monetaryDecimalSeparator":",","months":["siječanj","veljača","ožujak","travanj","svibanj","lipanj","srpanj","kolovoz","rujan","listopad","studeni","prosinac",""],"months3":["sij","vel","ožu","tra","svi","lip","srp","kol","ruj","lis","stu","pro",""],"percentSign":"%","weekDays":["","nedjelja","ponedjeljak","utorak","srijeda","četvrtak","petak","subota"],"weekDays3":["","ned","pon","uto","sri","čet","pet","sub"],"zeroDigit":"0"},"ar-MA":{"ampm":["ص","م"],"country":"MA","currencyCode":"MAD","currencySymbol":"د.م.","decimalSeparator":".","displayCountry":"المغرب","displayCountryUS":"Morocco","displayLanguage":"العربية","displayLanguageUS":"Arabic","eras":["ق.م","م"],"groupingSeparator":",","minusSign":"-","monetaryDecimalSeparator":".","months":["يناير","فبراير","مارس","أبريل","مايو","يونيو","يوليو","أغسطس","سبتمبر","أكتوبر","نوفمبر","ديسمبر",""],"months3":["ينا","فبر","مار","أبر","ماي","يون","يول","أغس","سبت","أكت","نوف","ديس",""],"percentSign":"%","weekDays":["","الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],"weekDays3":["","ح","ن","ث","ر","خ","ج","س"],"zeroDigit":"0"},"el":{"ampm":["πμ","μμ"],"country":"","currencyCode":"XXX","currencySymbol":"¤","decimalSeparator":",","displayCountry":"","displayCountryUS":"","displayLanguage":"Ελληνικά","displayLanguageUS":"Greek","eras":["BC","AD"],"groupingSeparator":".","minusSign":"-","monetaryDecimalSeparator":",","months":["Ιανουάριος","Φεβρουάριος","Μάρτιος","Απρίλιος","Μάϊος","Ιούνιος","Ιούλιος","Αύγουστος","Σεπτέμβριος","Οκτώβριος","Νοέμβριος","Δεκέμβριος",""],"months3":["Ιαν","Φεβ","Μαρ","Απρ","Μαϊ","Ιουν","Ιουλ","Αυγ","Σεπ","Οκτ","Νοε","Δεκ",""],"percentSign":"%","weekDays":["","Κυριακή","Δευτέρα","Τρίτη","Τετάρτη","Πέμπτη","Παρασκευή","Σάββατο"],"weekDays3":["","Κυρ","Δευ","Τρι","Τετ","Πεμ","Παρ","Σαβ"],"zeroDigit":"0"},"en-AU":{"ampm":["AM","PM"],"country":"AU","currencyCode":"AUD","currencySymbol":"$","decimalSeparator":".","displayCountry":"Australia","displayCountryUS":"Australia","displayLanguage":"English","displayLanguageUS":"English","eras":["BC","AD"],"groupingSeparator":",","minusSign":"-","monetaryDecimalSeparator":".","months":["January","February","March","April","May","June","July","August","September","October","November","December",""],"months3":["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec",""],"percentSign":"%","weekDays":["","Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],"weekDays3":["","Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"zeroDigit":"0"},"es-HN":{"ampm":["AM","PM"],"country":"HN","currencyCode":"HNL","currencySymbol":"L","decimalSeparator":".","displayCountry":"Honduras","displayCountryUS":"Honduras","displayLanguage":"español","displayLanguageUS":"Spanish","eras":["BC","AD"],"groupingSeparator":",","minusSign":"-","monetaryDecimalSeparator":".","months":["enero","febrero","marzo","abril","mayo","junio","julio","agosto","septiembre","octubre","noviembre","diciembre",""],"months3":["ene","feb","mar","abr","may","jun","jul","ago","sep","oct","nov","dic",""],"percentSign":"%","weekDays":["","domingo","lunes","martes","miércoles","jueves","viernes","sábado"],"weekDays3":["","dom","lun","mar","mié","jue","vie","sáb"],"zeroDigit":"0"},"es-AR":{"ampm":["AM","PM"],"country":"AR","currencyCode":"ARS","currencySymbol":"$","decimalSeparator":",","displayCountry":"Argentina","displayCountryUS":"Argentina","displayLanguage":"español","displayLanguageUS":"Spanish","eras":["BC","AD"],"groupingSeparator":".","minusSign":"-","monetaryDecimalSeparator":",","months":["enero","febrero","marzo","abril","mayo","junio","julio","agosto","septiembre","octubre","noviembre","diciembre",""],"months3":["ene","feb","mar","abr","may","jun","jul","ago","sep","oct","nov","dic",""],"percentSign":"%","weekDays":["","domingo","lunes","martes","miércoles","jueves","viernes","sábado"],"weekDays3":["","dom","lun","mar","mié","jue","vie","sáb"],"zeroDigit":"0"},"sr-ME":{"ampm":["AM","PM"],"country":"ME","currencyCode":"EUR","currencySymbol":"€","decimalSeparator":",","displayCountry":"Montenegro","displayCountryUS":"Montenegro","displayLanguage":"Српски","displayLanguageUS":"Serbian","eras":["п. н. е.","н. е"],"groupingSeparator":".","minusSign":"-","monetaryDecimalSeparator":",","months":["јануар","фебруар","март","април","мај","јун","јул","август","септембар","октобар","новембар","децембар",""],"months3":["јан","феб","мар","апр","мај","јун","јул","авг","сеп","окт","нов","дец",""],"percentSign":"%","weekDays":["","недеља","понедељак","уторак","среда","четвртак","петак","субота"],"weekDays3":["","нед","пон","уто","сре","чет","пет","суб"],"zeroDigit":"0"},"en":{"ampm":["AM","PM"],"country":"","currencyCode":"XXX","currencySymbol":"¤","decimalSeparator":".","displayCountry":"","displayCountryUS":"","displayLanguage":"English","displayLanguageUS":"English","eras":["BC","AD"],"groupingSeparator":",","minusSign":"-","monetaryDecimalSeparator":".","months":["January","February","March","April","May","June","July","August","September","October","November","December",""],"months3":["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec",""],"percentSign":"%","weekDays":["","Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],"weekDays3":["","Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"zeroDigit":"0"},"et":{"ampm":["AM","PM"],"country":"","currencyCode":"XXX","currencySymbol":"¤","decimalSeparator":",","displayCountry":"","displayCountryUS":"","displayLanguage":"Eesti","displayLanguageUS":"Estonian","eras":["e.m.a.","m.a.j."],"groupingSeparator":" ","minusSign":"-","monetaryDecimalSeparator":",","months":["Jaanuar","Veebruar","Märts","Aprill","Mai","Juuni","Juuli","August","September","Oktoober","November","Detsember",""],"months3":["Jaan","Veebr","Märts","Apr","Mai","Juuni","Juuli","Aug","Sept","Okt","Nov","Dets",""],"percentSign":"%","weekDays":["","pühapäev","esmaspäev","teisipäev","kolmapäev","neljapäev","reede","laupäev"],"weekDays3":["","P","E","T","K","N","R","L"],"zeroDigit":"0"},"es":{"ampm":["AM","PM"],"country":"","currencyCode":"XXX","currencySymbol":"¤","decimalSeparator":",","displayCountry":"","displayCountryUS":"","displayLanguage":"español","displayLanguageUS":"Spanish","eras":["BC","AD"],"groupingSeparator":".","minusSign":"-","monetaryDecimalSeparator":",","months":["enero","febrero","marzo","abril","mayo","junio","julio","agosto","septiembre","octubre","noviembre","diciembre",""],"months3":["ene","feb","mar","abr","may","jun","jul","ago","sep","oct","nov","dic",""],"percentSign":"%","weekDays":["","domingo","lunes","martes","miércoles","jueves","viernes","sábado"],"weekDays3":["","dom","lun","mar","mié","jue","vie","sáb"],"zeroDigit":"0"},"nl":{"ampm":["AM","PM"],"country":"","currencyCode":"XXX","currencySymbol":"¤","decimalSeparator":",","displayCountry":"","displayCountryUS":"","displayLanguage":"Nederlands","displayLanguageUS":"Dutch","eras":["v. Chr.","n. Chr."],"groupingSeparator":".","minusSign":"-","monetaryDecimalSeparator":",","months":["januari","februari","maart","april","mei","juni","juli","augustus","september","oktober","november","december",""],"months3":["jan","feb","mrt","apr","mei","jun","jul","aug","sep","okt","nov","dec",""],"percentSign":"%","weekDays":["","zondag","maandag","dinsdag","woensdag","donderdag","vrijdag","zaterdag"],"weekDays3":["","zo","ma","di","wo","do","vr","za"],"zeroDigit":"0"},"en-IE":{"ampm":["AM","PM"],"country":"IE","currencyCode":"EUR","currencySymbol":"€","decimalSeparator":".","displayCountry":"Ireland","displayCountryUS":"Ireland","displayLanguage":"English","displayLanguageUS":"English","eras":["BC","AD"],"groupingSeparator":",","minusSign":"-","monetaryDecimalSeparator":".","months":["January","February","March","April","May","June","July","August","September","October","November","December",""],"months3":["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec",""],"percentSign":"%","weekDays":["","Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],"weekDays3":["","Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"zeroDigit":"0"},"ca":{"ampm":["AM","PM"],"country":"","currencyCode":"XXX","currencySymbol":"¤","decimalSeparator":",","displayCountry":"","displayCountryUS":"","displayLanguage":"català","displayLanguageUS":"Catalan","eras":["BC","AD"],"groupingSeparator":".","minusSign":"-","monetaryDecimalSeparator":",","months":["gener","febrer","març","abril","maig","juny","juliol","agost","setembre","octubre","novembre","desembre",""],"months3":["gen.","feb.","març","abr.","maig","juny","jul.","ag.","set.","oct.","nov.","des.",""],"percentSign":"%","weekDays":["","diumenge","dilluns","dimarts","dimecres","dijous","divendres","dissabte"],"weekDays3":["","dg.","dl.","dt.","dc.","dj.","dv.","ds."],"zeroDigit":"0"},"hi-IN":{"ampm":["पूर्वाह्न","अपराह्न"],"country":"IN","currencyCode":"INR","currencySymbol":"रू","decimalSeparator":".","displayCountry":"भारत","displayCountryUS":"India","displayLanguage":"हिंदी","displayLanguageUS":"Hindi","eras":["ईसापूर्व","सन"],"groupingSeparator":",","minusSign":"-","monetaryDecimalSeparator":".","months":["जनवरी","फ़रवरी","मार्च","अप्रैल","मई","जून","जुलाई","अगस्त","सितंबर","अक्तूबर","नवंबर","दिसंबर",""],"months3":["जनवरी","फ़रवरी","मार्च","अप्रैल","मई","जून","जुलाई","अगस्त","सितंबर","अक्तूबर","नवंबर","दिसंबर",""],"percentSign":"%","weekDays":["","रविवार","सोमवार","मंगलवार","बुधवार","गुरुवार","शुक्रवार","शनिवार"],"weekDays3":["","रवि","सोम","मंगल","बुध","गुरु","शुक्र","शनि"],"zeroDigit":"०"},"tr":{"ampm":["AM","PM"],"country":"","currencyCode":"XXX","currencySymbol":"¤","decimalSeparator":",","displayCountry":"","displayCountryUS":"","displayLanguage":"Türkçe","displayLanguageUS":"Turkish","eras":["BC","AD"],"groupingSeparator":".","minusSign":"-","monetaryDecimalSeparator":",","months":["Ocak","Şubat","Mart","Nisan","Mayıs","Haziran","Temmuz","Ağustos","Eylül","Ekim","Kasım","Aralık",""],"months3":["Oca","Şub","Mar","Nis","May","Haz","Tem","Ağu","Eyl","Eki","Kas","Ara",""],"percentSign":"%","weekDays":["","Pazar","Pazartesi","Salı","Çarşamba","Perşembe","Cuma","Cumartesi"],"weekDays3":["","Paz","Pzt","Sal","Çar","Per","Cum","Cmt"],"zeroDigit":"0"},"el-CY":{"ampm":["ΠΜ","ΜΜ"],"country":"CY","currencyCode":"EUR","currencySymbol":"€","decimalSeparator":",","displayCountry":"Κύπρος","displayCountryUS":"Cyprus","displayLanguage":"Ελληνικά","displayLanguageUS":"Greek","eras":["π.Χ.","μ.Χ."],"groupingSeparator":".","minusSign":"-","monetaryDecimalSeparator":",","months":["Ιανουάριος","Φεβρουάριος","Μάρτιος","Απρίλιος","Μάιος","Ιούνιος","Ιούλιος","Αύγουστος","Σεπτέμβριος","Οκτώβριος","Νοέμβριος","Δεκέμβριος",""],"months3":["Ιαν","Φεβ","Μαρ","Απρ","Μαϊ","Ιουν","Ιουλ","Αυγ","Σεπ","Οκτ","Νοε","Δεκ",""],"percentSign":"%","weekDays":["","Κυριακή","Δευτέρα","Τρίτη","Τετάρτη","Πέμπτη","Παρασκευή","Σάββατο"],"weekDays3":["","Κυρ","Δευ","Τρι","Τετ","Πεμ","Παρ","Σαβ"],"zeroDigit":"0"},"ar-IQ":{"ampm":["ص","م"],"country":"IQ","currencyCode":"IQD","currencySymbol":"د.ع.","decimalSeparator":".","displayCountry":"العراق","displayCountryUS":"Iraq","displayLanguage":"العربية","displayLanguageUS":"Arabic","eras":["ق.م","م"],"groupingSeparator":",","minusSign":"-","monetaryDecimalSeparator":".","months":["يناير","فبراير","مارس","أبريل","مايو","يونيو","يوليو","أغسطس","سبتمبر","أكتوبر","نوفمبر","ديسمبر",""],"months3":["ينا","فبر","مار","أبر","ماي","يون","يول","أغس","سبت","أكت","نوف","ديس",""],"percentSign":"%","weekDays":["","الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],"weekDays3":["","ح","ن","ث","ر","خ","ج","س"],"zeroDigit":"0"},"de-CH":{"ampm":["AM","PM"],"country":"CH","currencyCode":"CHF","currencySymbol":"SFr.","decimalSeparator":".","displayCountry":"Schweiz","displayCountryUS":"Switzerland","displayLanguage":"Deutsch","displayLanguageUS":"German","eras":["v. Chr.","n. Chr."],"groupingSeparator":"'","minusSign":"-","monetaryDecimalSeparator":".","months":["Januar","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember",""],"months3":["Jan","Feb","Mrz","Apr","Mai","Jun","Jul","Aug","Sep","Okt","Nov","Dez",""],"percentSign":"%","weekDays":["","Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag"],"weekDays3":["","So","Mo","Di","Mi","Do","Fr","Sa"],"zeroDigit":"0"},"en-IN":{"ampm":["AM","PM"],"country":"IN","currencyCode":"INR","currencySymbol":"Rs.","decimalSeparator":".","displayCountry":"India","displayCountryUS":"India","displayLanguage":"English","displayLanguageUS":"English","eras":["BC","AD"],"groupingSeparator":",","minusSign":"-","monetaryDecimalSeparator":".","months":["January","February","March","April","May","June","July","August","September","October","November","December",""],"months3":["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec",""],"percentSign":"%","weekDays":["","Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],"weekDays3":["","Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"zeroDigit":"0"},"is-IS":{"ampm":["AM","PM"],"country":"IS","currencyCode":"ISK","currencySymbol":"kr.","decimalSeparator":",","displayCountry":"Ísland","displayCountryUS":"Iceland","displayLanguage":"íslenska","displayLanguageUS":"Icelandic","eras":["BC","AD"],"groupingSeparator":".","minusSign":"-","monetaryDecimalSeparator":",","months":["janúar","febrúar","mars","apríl","maí","júní","júlí","ágúst","september","október","nóvember","desember",""],"months3":["jan.","feb.","mar.","apr.","maí","jún.","júl.","ágú.","sep.","okt.","nóv.","des.",""],"percentSign":"%","weekDays":["","sunnudagur","mánudagur","þriðjudagur","miðvikudagur","fimmtudagur","föstudagur","laugardagur"],"weekDays3":["","sun.","mán.","þri.","mið.","fim.","fös.","lau."],"zeroDigit":"0"},"th":{"ampm":["ก่อนเที่ยง","หลังเที่ยง"],"country":"","currencyCode":"XXX","currencySymbol":"¤","decimalSeparator":".","displayCountry":"","displayCountryUS":"","displayLanguage":"ไทย","displayLanguageUS":"Thai","eras":["ปีก่อนคริสต์กาลที่","ค.ศ."],"groupingSeparator":",","minusSign":"-","monetaryDecimalSeparator":".","months":["มกราคม","กุมภาพันธ์","มีนาคม","เมษายน","พฤษภาคม","มิถุนายน","กรกฎาคม","สิงหาคม","กันยายน","ตุลาคม","พฤศจิกายน","ธันวาคม",""],"months3":["ม.ค.","ก.พ.","มี.ค.","เม.ย.","พ.ค.","มิ.ย.","ก.ค.","ส.ค.","ก.ย.","ต.ค.","พ.ย.","ธ.ค.",""],"percentSign":"%","weekDays":["","วันอาทิตย์","วันจันทร์","วันอังคาร","วันพุธ","วันพฤหัสบดี","วันศุกร์","วันเสาร์"],"weekDays3":["","อา.","จ.","อ.","พ.","พฤ.","ศ.","ส."],"zeroDigit":"0"},"es-GT":{"ampm":["AM","PM"],"country":"GT","currencyCode":"GTQ","currencySymbol":"Q","decimalSeparator":".","displayCountry":"Guatemala","displayCountryUS":"Guatemala","displayLanguage":"español","displayLanguageUS":"Spanish","eras":["BC","AD"],"groupingSeparator":",","minusSign":"-","monetaryDecimalSeparator":".","months":["enero","febrero","marzo","abril","mayo","junio","julio","agosto","septiembre","octubre","noviembre","diciembre",""],"months3":["ene","feb","mar","abr","may","jun","jul","ago","sep","oct","nov","dic",""],"percentSign":"%","weekDays":["","domingo","lunes","martes","miércoles","jueves","viernes","sábado"],"weekDays3":["","dom","lun","mar","mié","jue","vie","sáb"],"zeroDigit":"0"},"fr-FR":{"ampm":["AM","PM"],"country":"FR","currencyCode":"EUR","currencySymbol":"€","decimalSeparator":",","displayCountry":"France","displayCountryUS":"France","displayLanguage":"français","displayLanguageUS":"French","eras":["BC","ap. J.-C."],"groupingSeparator":" ","minusSign":"-","monetaryDecimalSeparator":",","months":["janvier","février","mars","avril","mai","juin","juillet","août","septembre","octobre","novembre","décembre",""],"months3":["janv.","févr.","mars","avr.","mai","juin","juil.","août","sept.","oct.","nov.","déc.",""],"percentSign":"%","weekDays":["","dimanche","lundi","mardi","mercredi","jeudi","vendredi","samedi"],"weekDays3":["","dim.","lun.","mar.","mer.","jeu.","ven.","sam."],"zeroDigit":"0"},"pt-BR":{"ampm":["AM","PM"],"country":"BR","currencyCode":"BRL","currencySymbol":"R$","decimalSeparator":",","displayCountry":"Brasil","displayCountryUS":"Brazil","displayLanguage":"português","displayLanguageUS":"Portuguese","eras":["BC","AD"],"groupingSeparator":".","minusSign":"-","monetaryDecimalSeparator":",","months":["Janeiro","Fevereiro","Março","Abril","Maio","Junho","Julho","Agosto","Setembro","Outubro","Novembro","Dezembro",""],"months3":["Jan","Fev","Mar","Abr","Mai","Jun","Jul","Ago","Set","Out","Nov","Dez",""],"percentSign":"%","weekDays":["","Domingo","Segunda-feira","Terça-feira","Quarta-feira","Quinta-feira","Sexta-feira","Sábado"],"weekDays3":["","Dom","Seg","Ter","Qua","Qui","Sex","Sáb"],"zeroDigit":"0"},"mk-MK":{"ampm":["AM","PM"],"country":"MK","currencyCode":"MKD","currencySymbol":"Den","decimalSeparator":",","displayCountry":"Македонија","displayCountryUS":"Macedonia","displayLanguage":"македонски","displayLanguageUS":"Macedonian","eras":["пр.н.е.","ае."],"groupingSeparator":".","minusSign":"-","monetaryDecimalSeparator":",","months":["јануари","февруари","март","април","мај","јуни","јули","август","септември","октомври","ноември","декември",""],"months3":["јан.","фев.","мар.","апр.","мај.","јун.","јул.","авг.","септ.","окт.","ноем.","декем.",""],"percentSign":"%","weekDays":["","недела","понеделник","вторник","среда","четврток","петок","сабота"],"weekDays3":["","нед.","пон.","вт.","сре.","чет.","пет.","саб."],"zeroDigit":"0"},"bg":{"ampm":["AM","PM"],"country":"","currencyCode":"XXX","currencySymbol":"¤","decimalSeparator":",","displayCountry":"","displayCountryUS":"","displayLanguage":"български","displayLanguageUS":"Bulgarian","eras":["пр.н.е.","н.е."],"groupingSeparator":" ","minusSign":"-","monetaryDecimalSeparator":",","months":["Януари","Февруари","Март","Април","Май","Юни","Юли","Август","Септември","Октомври","Ноември","Декември",""],"months3":["I","II","III","IV","V","VI","VII","VIII","IX","X","XI","XII",""],"percentSign":"%","weekDays":["","Неделя","Понеделник","Вторник","Сряда","Четвъртък","Петък","Събота"],"weekDays3":["","Нд","Пн","Вт","Ср","Чт","Пт","Сб"],"zeroDigit":"0"},"sv":{"ampm":["fm","em"],"country":"","currencyCode":"XXX","currencySymbol":"¤","decimalSeparator":",","displayCountry":"","displayCountryUS":"","displayLanguage":"svenska","displayLanguageUS":"Swedish","eras":["BC","AD"],"groupingSeparator":" ","minusSign":"-","monetaryDecimalSeparator":",","months":["januari","februari","mars","april","maj","juni","juli","augusti","september","oktober","november","december",""],"months3":["jan","feb","mar","apr","maj","jun","jul","aug","sep","okt","nov","dec",""],"percentSign":"%","weekDays":["","söndag","måndag","tisdag","onsdag","torsdag","fredag","lördag"],"weekDays3":["","sö","må","ti","on","to","fr","lö"],"zeroDigit":"0"},"es-PE":{"ampm":["AM","PM"],"country":"PE","currencyCode":"PEN","currencySymbol":"S\/","decimalSeparator":",","displayCountry":"Perú","displayCountryUS":"Peru","displayLanguage":"español","displayLanguageUS":"Spanish","eras":["BC","AD"],"groupingSeparator":".","minusSign":"-","monetaryDecimalSeparator":",","months":["enero","febrero","marzo","abril","mayo","junio","julio","agosto","septiembre","octubre","noviembre","diciembre",""],"months3":["ene","feb","mar","abr","may","jun","jul","ago","sep","oct","nov","dic",""],"percentSign":"%","weekDays":["","domingo","lunes","martes","miércoles","jueves","viernes","sábado"],"weekDays3":["","dom","lun","mar","mié","jue","vie","sáb"],"zeroDigit":"0"},"es-PA":{"ampm":["AM","PM"],"country":"PA","currencyCode":"PAB","currencySymbol":"B","decimalSeparator":".","displayCountry":"Panamá","displayCountryUS":"Panama","displayLanguage":"español","displayLanguageUS":"Spanish","eras":["BC","AD"],"groupingSeparator":",","minusSign":"-","monetaryDecimalSeparator":".","months":["enero","febrero","marzo","abril","mayo","junio","julio","agosto","septiembre","octubre","noviembre","diciembre",""],"months3":["ene","feb","mar","abr","may","jun","jul","ago","sep","oct","nov","dic",""],"percentSign":"%","weekDays":["","domingo","lunes","martes","miércoles","jueves","viernes","sábado"],"weekDays3":["","dom","lun","mar","mié","jue","vie","sáb"],"zeroDigit":"0"},"be":{"ampm":["AM","PM"],"country":"","currencyCode":"XXX","currencySymbol":"¤","decimalSeparator":",","displayCountry":"","displayCountryUS":"","displayLanguage":"беларускі","displayLanguageUS":"Belarusian","eras":["да н.е.","н.е."],"groupingSeparator":" ","minusSign":"-","monetaryDecimalSeparator":",","months":["студзеня","лютага","сакавіка","красавіка","мая","чрвеня","ліпеня","жніўня","верасня","кастрычніка","листапада","снежня",""],"months3":["стд","лют","скв","крс","май","чрв","лпн","жнв","врс","кст","лст","снж",""],"percentSign":"%","weekDays":["","нядзеля","панядзелак","аўторак","серада","чацвер","пятніца","субота"],"weekDays3":["","нд","пн","ат","ср","чц","пт","сб"],"zeroDigit":"0"},"sl":{"ampm":["AM","PM"],"country":"","currencyCode":"XXX","currencySymbol":"¤","decimalSeparator":",","displayCountry":"","displayCountryUS":"","displayLanguage":"Slovenščina","displayLanguageUS":"Slovenian","eras":["pr.n.š.","po Kr."],"groupingSeparator":".","minusSign":"-","monetaryDecimalSeparator":",","months":["januar","februar","marec","april","maj","junij","julij","avgust","september","oktober","november","december",""],"months3":["jan","feb","mar","apr","maj","jun","jul","avg","sep","okt","nov","dec",""],"percentSign":"%","weekDays":["","Nedelja","Ponedeljek","Torek","Sreda","Četrtek","Petek","Sobota"],"weekDays3":["","Ned","Pon","Tor","Sre","Čet","Pet","Sob"],"zeroDigit":"0"},"sq-AL":{"ampm":["PD","MD"],"country":"AL","currencyCode":"ALL","currencySymbol":"Lek","decimalSeparator":",","displayCountry":"Shqipëria","displayCountryUS":"Albania","displayLanguage":"shqipe","displayLanguageUS":"Albanian","eras":["p.e.r.","n.e.r."],"groupingSeparator":".","minusSign":"-","monetaryDecimalSeparator":",","months":["janar","shkurt","mars","prill","maj","qershor","korrik","gusht","shtator","tetor","nëntor","dhjetor",""],"months3":["Jan","Shk","Mar","Pri","Maj","Qer","Kor","Gsh","Sht","Tet","Nën","Dhj",""],"percentSign":"%","weekDays":["","e diel","e hënë","e martë","e mërkurë","e enjte","e premte","e shtunë"],"weekDays3":["","Die","Hën","Mar","Mër","Enj","Pre","Sht"],"zeroDigit":"0"},"sk":{"ampm":["AM","PM"],"country":"","currencyCode":"XXX","currencySymbol":"¤","decimalSeparator":",","displayCountry":"","displayCountryUS":"","displayLanguage":"Slovenčina","displayLanguageUS":"Slovak","eras":["pred n.l.","n.l."],"groupingSeparator":" ","minusSign":"-","monetaryDecimalSeparator":",","months":["január","február","marec","apríl","máj","jún","júl","august","september","október","november","december",""],"months3":["jan","feb","mar","apr","máj","jún","júl","aug","sep","okt","nov","dec",""],"percentSign":"%","weekDays":["","Nedeľa","Pondelok","Utorok","Streda","Štvrtok","Piatok","Sobota"],"weekDays3":["","Ne","Po","Ut","St","Št","Pi","So"],"zeroDigit":"0"},"da":{"ampm":["AM","PM"],"country":"","currencyCode":"XXX","currencySymbol":"¤","decimalSeparator":",","displayCountry":"","displayCountryUS":"","displayLanguage":"Dansk","displayLanguageUS":"Danish","eras":["BC","AD"],"groupingSeparator":".","minusSign":"-","monetaryDecimalSeparator":",","months":["januar","februar","marts","april","maj","juni","juli","august","september","oktober","november","december",""],"months3":["jan","feb","mar","apr","maj","jun","jul","aug","sep","okt","nov","dec",""],"percentSign":"%","weekDays":["","søndag","mandag","tirsdag","onsdag","torsdag","fredag","lørdag"],"weekDays3":["","sø","ma","ti","on","to","fr","lø"],"zeroDigit":"0"},"sr":{"ampm":["AM","PM"],"country":"","currencyCode":"XXX","currencySymbol":"¤","decimalSeparator":",","displayCountry":"","displayCountryUS":"","displayLanguage":"Српски","displayLanguageUS":"Serbian","eras":["п. н. е.","н. е"],"groupingSeparator":".","minusSign":"-","monetaryDecimalSeparator":",","months":["јануар","фебруар","март","април","мај","јун","јул","август","септембар","октобар","новембар","децембар",""],"months3":["јан","феб","мар","апр","мај","јун","јул","авг","сеп","окт","нов","дец",""],"percentSign":"%","weekDays":["","недеља","понедељак","уторак","среда","четвртак","петак","субота"],"weekDays3":["","нед","пон","уто","сре","чет","пет","суб"],"zeroDigit":"0"},"sr-RS":{"ampm":["AM","PM"],"country":"RS","currencyCode":"RSD","currencySymbol":"RSD","decimalSeparator":",","displayCountry":"Serbia","displayCountryUS":"Serbia","displayLanguage":"Српски","displayLanguageUS":"Serbian","eras":["п. н. е.","н. е"],"groupingSeparator":".","minusSign":"-","monetaryDecimalSeparator":",","months":["јануар","фебруар","март","април","мај","јун","јул","август","септембар","октобар","новембар","децембар",""],"months3":["јан","феб","мар","апр","мај","јун","јул","авг","сеп","окт","нов","дец",""],"percentSign":"%","weekDays":["","недеља","понедељак","уторак","среда","четвртак","петак","субота"],"weekDays3":["","нед","пон","уто","сре","чет","пет","суб"],"zeroDigit":"0"},"sq":{"ampm":["PD","MD"],"country":"","currencyCode":"XXX","currencySymbol":"¤","decimalSeparator":",","displayCountry":"","displayCountryUS":"","displayLanguage":"shqipe","displayLanguageUS":"Albanian","eras":["p.e.r.","n.e.r."],"groupingSeparator":".","minusSign":"-","monetaryDecimalSeparator":",","months":["janar","shkurt","mars","prill","maj","qershor","korrik","gusht","shtator","tetor","nëntor","dhjetor",""],"months3":["Jan","Shk","Mar","Pri","Maj","Qer","Kor","Gsh","Sht","Tet","Nën","Dhj",""],"percentSign":"%","weekDays":["","e diel","e hënë","e martë","e mërkurë","e enjte","e premte","e shtunë"],"weekDays3":["","Die","Hën","Mar","Mër","Enj","Pre","Sht"],"zeroDigit":"0"},"ko":{"ampm":["오전","오후"],"country":"","currencyCode":"XXX","currencySymbol":"¤","decimalSeparator":".","displayCountry":"","displayCountryUS":"","displayLanguage":"한국어","displayLanguageUS":"Korean","eras":["BC","AD"],"groupingSeparator":",","minusSign":"-","monetaryDecimalSeparator":".","months":["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월",""],"months3":["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월",""],"percentSign":"%","weekDays":["","일요일","월요일","화요일","수요일","목요일","금요일","토요일"],"weekDays3":["","일","월","화","수","목","금","토"],"zeroDigit":"0"},"it-CH":{"ampm":["AM","PM"],"country":"CH","currencyCode":"CHF","currencySymbol":"SFr.","decimalSeparator":".","displayCountry":"Svizzera","displayCountryUS":"Switzerland","displayLanguage":"italiano","displayLanguageUS":"Italian","eras":["BC","dopo Cristo"],"groupingSeparator":"'","minusSign":"-","monetaryDecimalSeparator":".","months":["gennaio","febbraio","marzo","aprile","maggio","giugno","luglio","agosto","settembre","ottobre","novembre","dicembre",""],"months3":["gen","feb","mar","apr","mag","giu","lug","ago","set","ott","nov","dic",""],"percentSign":"%","weekDays":["","domenica","lunedì","martedì","mercoledì","giovedì","venerdì","sabato"],"weekDays3":["","dom","lun","mar","mer","gio","ven","sab"],"zeroDigit":"0"},"en-SG":{"ampm":["AM","PM"],"country":"SG","currencyCode":"SGD","currencySymbol":"$","decimalSeparator":".","displayCountry":"Singapore","displayCountryUS":"Singapore","displayLanguage":"English","displayLanguageUS":"English","eras":["BC","AD"],"groupingSeparator":",","minusSign":"-","monetaryDecimalSeparator":".","months":["January","February","March","April","May","June","July","August","September","October","November","December",""],"months3":["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec",""],"percentSign":"%","weekDays":["","Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],"weekDays3":["","Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"zeroDigit":"0"},"zh-CN":{"ampm":["上午","下午"],"country":"CN","currencyCode":"CNY","currencySymbol":"￥","decimalSeparator":".","displayCountry":"中国","displayCountryUS":"China","displayLanguage":"中文","displayLanguageUS":"Chinese","eras":["公元前","公元"],"groupingSeparator":",","minusSign":"-","monetaryDecimalSeparator":".","months":["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月",""],"months3":["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月",""],"percentSign":"%","weekDays":["","星期日","星期一","星期二","星期三","星期四","星期五","星期六"],"weekDays3":["","星期日","星期一","星期二","星期三","星期四","星期五","星期六"],"zeroDigit":"0"},"en-ZA":{"ampm":["AM","PM"],"country":"ZA","currencyCode":"ZAR","currencySymbol":"R","decimalSeparator":".","displayCountry":"South Africa","displayCountryUS":"South Africa","displayLanguage":"English","displayLanguageUS":"English","eras":["BC","AD"],"groupingSeparator":",","minusSign":"-","monetaryDecimalSeparator":".","months":["January","February","March","April","May","June","July","August","September","October","November","December",""],"months3":["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec",""],"percentSign":"%","weekDays":["","Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],"weekDays3":["","Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"zeroDigit":"0"},"ms-MY":{"ampm":["AM","PM"],"country":"MY","currencyCode":"MYR","currencySymbol":"RM","decimalSeparator":".","displayCountry":"Malaysia","displayCountryUS":"Malaysia","displayLanguage":"Bahasa Melayu","displayLanguageUS":"Malay","eras":["BCE","CE"],"groupingSeparator":",","minusSign":"-","monetaryDecimalSeparator":".","months":["Januari","Februari","Mac","April","Mei","Jun","Julai","Ogos","September","Oktober","November","Disember",""],"months3":["Jan","Feb","Mac","Apr","Mei","Jun","Jul","Ogos","Sep","Okt","Nov","Dis",""],"percentSign":"%","weekDays":["","Ahad","Isnin","Selasa","Rabu","Khamis","Jumaat","Sabtu"],"weekDays3":["","Ahd","Isn","Sel","Rab","Kha","Jum","Sab"],"zeroDigit":"0"},"ar-JO":{"ampm":["ص","م"],"country":"JO","currencyCode":"JOD","currencySymbol":"د.أ.","decimalSeparator":".","displayCountry":"الأردن","displayCountryUS":"Jordan","displayLanguage":"العربية","displayLanguageUS":"Arabic","eras":["ق.م","م"],"groupingSeparator":",","minusSign":"-","monetaryDecimalSeparator":".","months":["كانون الثاني","شباط","آذار","نيسان","نوار","حزيران","تموز","آب","أيلول","تشرين الأول","تشرين الثاني","كانون الأول",""],"months3":["كانون الثاني","شباط","آذار","نيسان","نوار","حزيران","تموز","آب","أيلول","تشرين الأول","تشرين الثاني","كانون الأول",""],"percentSign":"%","weekDays":["","الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],"weekDays3":["","الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],"zeroDigit":"0"},"cs":{"ampm":["dop.","odp."],"country":"","currencyCode":"XXX","currencySymbol":"¤","decimalSeparator":",","displayCountry":"","displayCountryUS":"","displayLanguage":"čeština","displayLanguageUS":"Czech","eras":["př.Kr.","po Kr."],"groupingSeparator":" ","minusSign":"-","monetaryDecimalSeparator":",","months":["leden","únor","březen","duben","květen","červen","červenec","srpen","září","říjen","listopad","prosinec",""],"months3":["I","II","III","IV","V","VI","VII","VIII","IX","X","XI","XII",""],"percentSign":"%","weekDays":["","Neděle","Pondělí","Úterý","Středa","Čtvrtek","Pátek","Sobota"],"weekDays3":["","Ne","Po","Út","St","Čt","Pá","So"],"zeroDigit":"0"},"ar-SD":{"ampm":["ص","م"],"country":"SD","currencyCode":"SDG","currencySymbol":"ج.س.","decimalSeparator":".","displayCountry":"السودان","displayCountryUS":"Sudan","displayLanguage":"العربية","displayLanguageUS":"Arabic","eras":["ق.م","م"],"groupingSeparator":",","minusSign":"-","monetaryDecimalSeparator":".","months":["يناير","فبراير","مارس","أبريل","مايو","يونيو","يوليو","أغسطس","سبتمبر","أكتوبر","نوفمبر","ديسمبر",""],"months3":["ينا","فبر","مار","أبر","ماي","يون","يول","أغس","سبت","أكت","نوف","ديس",""],"percentSign":"%","weekDays":["","الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],"weekDays3":["","ح","ن","ث","ر","خ","ج","س"],"zeroDigit":"0"},"ar-SA":{"ampm":["ص","م"],"country":"SA","currencyCode":"SAR","currencySymbol":"ر.س.","decimalSeparator":".","displayCountry":"السعودية","displayCountryUS":"Saudi Arabia","displayLanguage":"العربية","displayLanguageUS":"Arabic","eras":["ق.م","م"],"groupingSeparator":",","minusSign":"-","monetaryDecimalSeparator":".","months":["يناير","فبراير","مارس","أبريل","مايو","يونيو","يوليو","أغسطس","سبتمبر","أكتوبر","نوفمبر","ديسمبر",""],"months3":["ينا","فبر","مار","أبر","ماي","يون","يول","أغس","سبت","أكت","نوف","ديس",""],"percentSign":"%","weekDays":["","الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],"weekDays3":["","ح","ن","ث","ر","خ","ج","س"],"zeroDigit":"0"},"in-ID":{"ampm":["AM","PM"],"country":"ID","currencyCode":"IDR","currencySymbol":"Rp","decimalSeparator":",","displayCountry":"Indonesia","displayCountryUS":"Indonesia","displayLanguage":"Bahasa Indonesia","displayLanguageUS":"Indonesian","eras":["BCE","CE"],"groupingSeparator":".","minusSign":"-","monetaryDecimalSeparator":",","months":["Januari","Februari","Maret","April","Mei","Juni","Juli","Agustus","September","Oktober","November","Desember",""],"months3":["Jan","Feb","Mar","Apr","Mei","Jun","Jul","Agu","Sep","Okt","Nov","Des",""],"percentSign":"%","weekDays":["","Minggu","Senin","Selasa","Rabu","Kamis","Jumat","Sabtu"],"weekDays3":["","Min","Sen","Sel","Rab","Kam","Jum","Sab"],"zeroDigit":"0"},"zh-HK":{"ampm":["上午","下午"],"country":"HK","currencyCode":"HKD","currencySymbol":"HK$","decimalSeparator":".","displayCountry":"香港","displayCountryUS":"Hong Kong","displayLanguage":"中文","displayLanguageUS":"Chinese","eras":["西元前","西元"],"groupingSeparator":",","minusSign":"-","monetaryDecimalSeparator":".","months":["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月",""],"months3":["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月",""],"percentSign":"%","weekDays":["","星期日","星期一","星期二","星期三","星期四","星期五","星期六"],"weekDays3":["","日","一","二","三","四","五","六"],"zeroDigit":"0"},"ru":{"ampm":["AM","PM"],"country":"","currencyCode":"XXX","currencySymbol":"¤","decimalSeparator":",","displayCountry":"","displayCountryUS":"","displayLanguage":"русский","displayLanguageUS":"Russian","eras":["до н.э.","н.э."],"groupingSeparator":" ","minusSign":"-","monetaryDecimalSeparator":",","months":["Январь","Февраль","Март","Апрель","Май","Июнь","Июль","Август","Сентябрь","Октябрь","Ноябрь","Декабрь",""],"months3":["янв","фев","мар","апр","май","июн","июл","авг","сен","окт","ноя","дек",""],"percentSign":"%","weekDays":["","воскресенье","понедельник","вторник","среда","четверг","пятница","суббота"],"weekDays3":["","Вс","Пн","Вт","Ср","Чт","Пт","Сб"],"zeroDigit":"0"},"es-MX":{"ampm":["AM","PM"],"country":"MX","currencyCode":"MXN","currencySymbol":"$","decimalSeparator":".","displayCountry":"México","displayCountryUS":"Mexico","displayLanguage":"español","displayLanguageUS":"Spanish","eras":["BC","AD"],"groupingSeparator":",","minusSign":"-","monetaryDecimalSeparator":".","months":["enero","febrero","marzo","abril","mayo","junio","julio","agosto","septiembre","octubre","noviembre","diciembre",""],"months3":["ene","feb","mar","abr","may","jun","jul","ago","sep","oct","nov","dic",""],"percentSign":"%","weekDays":["","domingo","lunes","martes","miércoles","jueves","viernes","sábado"],"weekDays3":["","dom","lun","mar","mié","jue","vie","sáb"],"zeroDigit":"0"},"es-UY":{"ampm":["AM","PM"],"country":"UY","currencyCode":"UYU","currencySymbol":"NU$","decimalSeparator":",","displayCountry":"Uruguay","displayCountryUS":"Uruguay","displayLanguage":"español","displayLanguageUS":"Spanish","eras":["BC","AD"],"groupingSeparator":".","minusSign":"-","monetaryDecimalSeparator":",","months":["enero","febrero","marzo","abril","mayo","junio","julio","agosto","septiembre","octubre","noviembre","diciembre",""],"months3":["ene","feb","mar","abr","may","jun","jul","ago","sep","oct","nov","dic",""],"percentSign":"%","weekDays":["","domingo","lunes","martes","miércoles","jueves","viernes","sábado"],"weekDays3":["","dom","lun","mar","mié","jue","vie","sáb"],"zeroDigit":"0"},"hr":{"ampm":["AM","PM"],"country":"","currencyCode":"XXX","currencySymbol":"¤","decimalSeparator":",","displayCountry":"","displayCountryUS":"","displayLanguage":"hrvatski","displayLanguageUS":"Croatian","eras":["BC","AD"],"groupingSeparator":".","minusSign":"-","monetaryDecimalSeparator":",","months":["siječanj","veljača","ožujak","travanj","svibanj","lipanj","srpanj","kolovoz","rujan","listopad","studeni","prosinac",""],"months3":["sij","vel","ožu","tra","svi","lip","srp","kol","ruj","lis","stu","pro",""],"percentSign":"%","weekDays":["","nedjelja","ponedjeljak","utorak","srijeda","četvrtak","petak","subota"],"weekDays3":["","ned","pon","uto","sri","čet","pet","sub"],"zeroDigit":"0"},"ro":{"ampm":["AM","PM"],"country":"","currencyCode":"XXX","currencySymbol":"¤","decimalSeparator":",","displayCountry":"","displayCountryUS":"","displayLanguage":"română","displayLanguageUS":"Romanian","eras":["d.C.","î.d.C."],"groupingSeparator":".","minusSign":"-","monetaryDecimalSeparator":",","months":["ianuarie","februarie","martie","aprilie","mai","iunie","iulie","august","septembrie","octombrie","noiembrie","decembrie",""],"months3":["Ian","Feb","Mar","Apr","Mai","Iun","Iul","Aug","Sep","Oct","Nov","Dec",""],"percentSign":"%","weekDays":["","duminică","luni","marţi","miercuri","joi","vineri","sâmbătă"],"weekDays3":["","D","L","Ma","Mi","J","V","S"],"zeroDigit":"0"},"zh":{"ampm":["上午","下午"],"country":"","currencyCode":"XXX","currencySymbol":"¤","decimalSeparator":".","displayCountry":"","displayCountryUS":"","displayLanguage":"中文","displayLanguageUS":"Chinese","eras":["公元前","公元"],"groupingSeparator":",","minusSign":"-","monetaryDecimalSeparator":".","months":["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月",""],"months3":["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月",""],"percentSign":"%","weekDays":["","星期日","星期一","星期二","星期三","星期四","星期五","星期六"],"weekDays3":["","星期日","星期一","星期二","星期三","星期四","星期五","星期六"],"zeroDigit":"0"},"cs-CZ":{"ampm":["dop.","odp."],"country":"CZ","currencyCode":"CZK","currencySymbol":"Kč","decimalSeparator":",","displayCountry":"Česká republika","displayCountryUS":"Czech Republic","displayLanguage":"čeština","displayLanguageUS":"Czech","eras":["př.Kr.","po Kr."],"groupingSeparator":" ","minusSign":"-","monetaryDecimalSeparator":",","months":["leden","únor","březen","duben","květen","červen","červenec","srpen","září","říjen","listopad","prosinec",""],"months3":["I","II","III","IV","V","VI","VII","VIII","IX","X","XI","XII",""],"percentSign":"%","weekDays":["","Neděle","Pondělí","Úterý","Středa","Čtvrtek","Pátek","Sobota"],"weekDays3":["","Ne","Po","Út","St","Čt","Pá","So"],"zeroDigit":"0"},"ga-IE":{"ampm":["a.m.","p.m."],"country":"IE","currencyCode":"EUR","currencySymbol":"€","decimalSeparator":".","displayCountry":"Éire","displayCountryUS":"Ireland","displayLanguage":"Gaeilge","displayLanguageUS":"Irish","eras":["RC","AD"],"groupingSeparator":",","minusSign":"-","monetaryDecimalSeparator":".","months":["Eanáir","Feabhra","Márta","Aibreán","Bealtaine","Meitheamh","Iúil","Lúnasa","Meán Fómhair","Deireadh Fómhair","Samhain","Nollaig",""],"months3":["Ean","Feabh","Márta","Aib","Beal","Meith","Iúil","Lún","MFómh","DFómh","Samh","Noll",""],"percentSign":"%","weekDays":["","Dé Domhnaigh","Dé Luain","Dé Máirt","Dé Céadaoin","Déardaoin","Dé hAoine","Dé Sathairn"],"weekDays3":["","Domh","Luan","Máirt","Céad","Déar","Aoine","Sath"],"zeroDigit":"0"},"nl-NL":{"ampm":["AM","PM"],"country":"NL","currencyCode":"EUR","currencySymbol":"€","decimalSeparator":",","displayCountry":"Nederland","displayCountryUS":"Netherlands","displayLanguage":"Nederlands","displayLanguageUS":"Dutch","eras":["v. Chr.","n. Chr."],"groupingSeparator":".","minusSign":"-","monetaryDecimalSeparator":",","months":["januari","februari","maart","april","mei","juni","juli","augustus","september","oktober","november","december",""],"months3":["jan","feb","mrt","apr","mei","jun","jul","aug","sep","okt","nov","dec",""],"percentSign":"%","weekDays":["","zondag","maandag","dinsdag","woensdag","donderdag","vrijdag","zaterdag"],"weekDays3":["","zo","ma","di","wo","do","vr","za"],"zeroDigit":"0"},"ar-YE":{"ampm":["ص","م"],"country":"YE","currencyCode":"YER","currencySymbol":"ر.ي.","decimalSeparator":".","displayCountry":"اليمن","displayCountryUS":"Yemen","displayLanguage":"العربية","displayLanguageUS":"Arabic","eras":["ق.م","م"],"groupingSeparator":",","minusSign":"-","monetaryDecimalSeparator":".","months":["يناير","فبراير","مارس","أبريل","مايو","يونيو","يوليو","أغسطس","سبتمبر","أكتوبر","نوفمبر","ديسمبر",""],"months3":["ينا","فبر","مار","أبر","ماي","يون","يول","أغس","سبت","أكت","نوف","ديس",""],"percentSign":"%","weekDays":["","الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],"weekDays3":["","ح","ن","ث","ر","خ","ج","س"],"zeroDigit":"0"},"hu":{"ampm":["DE","DU"],"country":"","currencyCode":"XXX","currencySymbol":"¤","decimalSeparator":",","displayCountry":"","displayCountryUS":"","displayLanguage":"magyar","displayLanguageUS":"Hungarian","eras":["i.e.","i.u."],"groupingSeparator":" ","minusSign":"-","monetaryDecimalSeparator":",","months":["január","február","március","április","május","június","július","augusztus","szeptember","október","november","december",""],"months3":["jan.","febr.","márc.","ápr.","máj.","jún.","júl.","aug.","szept.","okt.","nov.","dec.",""],"percentSign":"%","weekDays":["","vasárnap","hétfő","kedd","szerda","csütörtök","péntek","szombat"],"weekDays3":["","V","H","K","Sze","Cs","P","Szo"],"zeroDigit":"0"},"sr-BA":{"ampm":["AM","PM"],"country":"BA","currencyCode":"BAM","currencySymbol":"КМ.","decimalSeparator":",","displayCountry":"Босна и Херцеговина","displayCountryUS":"Bosnia and Herzegovina","displayLanguage":"Српски","displayLanguageUS":"Serbian","eras":["п. н. е.","н. е"],"groupingSeparator":".","minusSign":"-","monetaryDecimalSeparator":",","months":["јануар","фебруар","март","април","мај","јуни","јули","август","септембар","октобар","новембар","децембар",""],"months3":["јан","феб","мар","апр","мај","јун","јул","авг","сеп","окт","нов","дец",""],"percentSign":"%","weekDays":["","недеља","понедељак","уторак","сриједа","четвртак","петак","субота"],"weekDays3":["","нед","пон","уто","сри","чет","пет","суб"],"zeroDigit":"0"},"fi-FI":{"ampm":["ap.","ip."],"country":"FI","currencyCode":"EUR","currencySymbol":"€","decimalSeparator":",","displayCountry":"Suomi","displayCountryUS":"Finland","displayLanguage":"suomi","displayLanguageUS":"Finnish","eras":["BC","AD"],"groupingSeparator":" ","minusSign":"-","monetaryDecimalSeparator":",","months":["tammikuu","helmikuu","maaliskuu","huhtikuu","toukokuu","kesäkuu","heinäkuu","elokuu","syyskuu","lokakuu","marraskuu","joulukuu",""],"months3":["tammi","helmi","maalis","huhti","touko","kesä","heinä","elo","syys","loka","marras","joulu",""],"percentSign":"%","weekDays":["","sunnuntai","maanantai","tiistai","keskiviikko","torstai","perjantai","lauantai"],"weekDays3":["","su","ma","ti","ke","to","pe","la"],"zeroDigit":"0"},"en-PH":{"ampm":["AM","PM"],"country":"PH","currencyCode":"PHP","currencySymbol":"Php","decimalSeparator":".","displayCountry":"Philippines","displayCountryUS":"Philippines","displayLanguage":"English","displayLanguageUS":"English","eras":["BC","AD"],"groupingSeparator":",","minusSign":"-","monetaryDecimalSeparator":".","months":["January","February","March","April","May","June","July","August","September","October","November","December",""],"months3":["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec",""],"percentSign":"%","weekDays":["","Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],"weekDays3":["","Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"zeroDigit":"0"},"es-VE":{"ampm":["AM","PM"],"country":"VE","currencyCode":"VEF","currencySymbol":"BsF.","decimalSeparator":",","displayCountry":"Venezuela","displayCountryUS":"Venezuela","displayLanguage":"español","displayLanguageUS":"Spanish","eras":["BC","AD"],"groupingSeparator":".","minusSign":"-","monetaryDecimalSeparator":",","months":["enero","febrero","marzo","abril","mayo","junio","julio","agosto","septiembre","octubre","noviembre","diciembre",""],"months3":["ene","feb","mar","abr","may","jun","jul","ago","sep","oct","nov","dic",""],"percentSign":"%","weekDays":["","domingo","lunes","martes","miércoles","jueves","viernes","sábado"],"weekDays3":["","dom","lun","mar","mié","jue","vie","sáb"],"zeroDigit":"0"},"lt-LT":{"ampm":["AM","PM"],"country":"LT","currencyCode":"LTL","currencySymbol":"Lt","decimalSeparator":",","displayCountry":"Lietuva","displayCountryUS":"Lithuania","displayLanguage":"Lietuvių","displayLanguageUS":"Lithuanian","eras":["pr.Kr.","po.Kr."],"groupingSeparator":" ","minusSign":"-","monetaryDecimalSeparator":",","months":["Sausio","Vasario","Kovo","Balandžio","Gegužės","Birželio","Liepos","Rugpjūčio","Rugsėjo","Spalio","Lapkričio","Gruodžio",""],"months3":["Sau","Vas","Kov","Bal","Geg","Bir","Lie","Rgp","Rgs","Spa","Lap","Grd",""],"percentSign":"%","weekDays":["","Sekmadienis","Pirmadienis","Antradienis","Trečiadienis","Ketvirtadienis","Penktadienis","Šeštadienis"],"weekDays3":["","Sk","Pr","An","Tr","Kt","Pn","Št"],"zeroDigit":"0"},"es-NI":{"ampm":["AM","PM"],"country":"NI","currencyCode":"NIO","currencySymbol":"$C","decimalSeparator":".","displayCountry":"Nicaragua","displayCountryUS":"Nicaragua","displayLanguage":"español","displayLanguageUS":"Spanish","eras":["BC","AD"],"groupingSeparator":",","minusSign":"-","monetaryDecimalSeparator":".","months":["enero","febrero","marzo","abril","mayo","junio","julio","agosto","septiembre","octubre","noviembre","diciembre",""],"months3":["ene","feb","mar","abr","may","jun","jul","ago","sep","oct","nov","dic",""],"percentSign":"%","weekDays":["","domingo","lunes","martes","miércoles","jueves","viernes","sábado"],"weekDays3":["","dom","lun","mar","mié","jue","vie","sáb"],"zeroDigit":"0"},"ar-BH":{"ampm":["ص","م"],"country":"BH","currencyCode":"BHD","currencySymbol":"د.ب.","decimalSeparator":".","displayCountry":"البحرين","displayCountryUS":"Bahrain","displayLanguage":"العربية","displayLanguageUS":"Arabic","eras":["ق.م","م"],"groupingSeparator":",","minusSign":"-","monetaryDecimalSeparator":".","months":["يناير","فبراير","مارس","أبريل","مايو","يونيو","يوليو","أغسطس","سبتمبر","أكتوبر","نوفمبر","ديسمبر",""],"months3":["ينا","فبر","مار","أبر","ماي","يون","يول","أغس","سبت","أكت","نوف","ديس",""],"percentSign":"%","weekDays":["","الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],"weekDays3":["","ح","ن","ث","ر","خ","ج","س"],"zeroDigit":"0"},"es-ES":{"ampm":["AM","PM"],"country":"ES","currencyCode":"EUR","currencySymbol":"€","decimalSeparator":",","displayCountry":"España","displayCountryUS":"Spain","displayLanguage":"español","displayLanguageUS":"Spanish","eras":["BC","AD"],"groupingSeparator":".","minusSign":"-","monetaryDecimalSeparator":",","months":["enero","febrero","marzo","abril","mayo","junio","julio","agosto","septiembre","octubre","noviembre","diciembre",""],"months3":["ene","feb","mar","abr","may","jun","jul","ago","sep","oct","nov","dic",""],"percentSign":"%","weekDays":["","domingo","lunes","martes","miércoles","jueves","viernes","sábado"],"weekDays3":["","dom","lun","mar","mié","jue","vie","sáb"],"zeroDigit":"0"},"bg-BG":{"ampm":["AM","PM"],"country":"BG","currencyCode":"BGN","currencySymbol":"лв.","decimalSeparator":",","displayCountry":"България","displayCountryUS":"Bulgaria","displayLanguage":"български","displayLanguageUS":"Bulgarian","eras":["пр.н.е.","н.е."],"groupingSeparator":" ","minusSign":"-","monetaryDecimalSeparator":",","months":["Януари","Февруари","Март","Април","Май","Юни","Юли","Август","Септември","Октомври","Ноември","Декември",""],"months3":["I","II","III","IV","V","VI","VII","VIII","IX","X","XI","XII",""],"percentSign":"%","weekDays":["","Неделя","Понеделник","Вторник","Сряда","Четвъртък","Петък","Събота"],"weekDays3":["","Нд","Пн","Вт","Ср","Чт","Пт","Сб"],"zeroDigit":"0"},"da-DK":{"ampm":["AM","PM"],"country":"DK","currencyCode":"DKK","currencySymbol":"kr","decimalSeparator":",","displayCountry":"Danmark","displayCountryUS":"Denmark","displayLanguage":"Dansk","displayLanguageUS":"Danish","eras":["BC","AD"],"groupingSeparator":".","minusSign":"-","monetaryDecimalSeparator":",","months":["januar","februar","marts","april","maj","juni","juli","august","september","oktober","november","december",""],"months3":["jan","feb","mar","apr","maj","jun","jul","aug","sep","okt","nov","dec",""],"percentSign":"%","weekDays":["","søndag","mandag","tirsdag","onsdag","torsdag","fredag","lørdag"],"weekDays3":["","sø","ma","ti","on","to","fr","lø"],"zeroDigit":"0"},"de-LU":{"ampm":["AM","PM"],"country":"LU","currencyCode":"EUR","currencySymbol":"€","decimalSeparator":",","displayCountry":"Luxemburg","displayCountryUS":"Luxembourg","displayLanguage":"Deutsch","displayLanguageUS":"German","eras":["v. Chr.","n. Chr."],"groupingSeparator":".","minusSign":"-","monetaryDecimalSeparator":",","months":["Januar","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember",""],"months3":["Jan","Feb","Mrz","Apr","Mai","Jun","Jul","Aug","Sep","Okt","Nov","Dez",""],"percentSign":"%","weekDays":["","Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag"],"weekDays3":["","So","Mo","Di","Mi","Do","Fr","Sa"],"zeroDigit":"0"},"iw-IL":{"ampm":["AM","PM"],"country":"IL","currencyCode":"ILS","currencySymbol":"ש\"ח","decimalSeparator":".","displayCountry":"ישראל","displayCountryUS":"Israel","displayLanguage":"עברית","displayLanguageUS":"Hebrew","eras":["לסה\"נ","לפסה\"נ"],"groupingSeparator":",","minusSign":"-","monetaryDecimalSeparator":".","months":["ינואר","פברואר","מרץ","אפריל","מאי","יוני","יולי","אוגוסט","ספטמבר","אוקטובר","נובמבר","דצמבר",""],"months3":["ינו","פבר","מרץ","אפר","מאי","יונ","יול","אוג","ספט","אוק","נוב","דצמ",""],"percentSign":"%","weekDays":["","יום ראשון","יום שני","יום שלישי","יום רביעי","יום חמישי","יום שישי","שבת"],"weekDays3":["","א","ב","ג","ד","ה","ו","ש"],"zeroDigit":"0"},"fr-LU":{"ampm":["AM","PM"],"country":"LU","currencyCode":"EUR","currencySymbol":"€","decimalSeparator":",","displayCountry":"Luxembourg","displayCountryUS":"Luxembourg","displayLanguage":"français","displayLanguageUS":"French","eras":["BC","ap. J.-C."],"groupingSeparator":" ","minusSign":"-","monetaryDecimalSeparator":",","months":["janvier","février","mars","avril","mai","juin","juillet","août","septembre","octobre","novembre","décembre",""],"months3":["janv.","févr.","mars","avr.","mai","juin","juil.","août","sept.","oct.","nov.","déc.",""],"percentSign":"%","weekDays":["","dimanche","lundi","mardi","mercredi","jeudi","vendredi","samedi"],"weekDays3":["","dim.","lun.","mar.","mer.","jeu.","ven.","sam."],"zeroDigit":"0"},"is":{"ampm":["AM","PM"],"country":"","currencyCode":"XXX","currencySymbol":"¤","decimalSeparator":",","displayCountry":"","displayCountryUS":"","displayLanguage":"íslenska","displayLanguageUS":"Icelandic","eras":["BC","AD"],"groupingSeparator":".","minusSign":"-","monetaryDecimalSeparator":",","months":["janúar","febrúar","mars","apríl","maí","júní","júlí","ágúst","september","október","nóvember","desember",""],"months3":["jan.","feb.","mar.","apr.","maí","jún.","júl.","ágú.","sep.","okt.","nóv.","des.",""],"percentSign":"%","weekDays":["","sunnudagur","mánudagur","þriðjudagur","miðvikudagur","fimmtudagur","föstudagur","laugardagur"],"weekDays3":["","sun.","mán.","þri.","mið.","fim.","fös.","lau."],"zeroDigit":"0"},"it":{"ampm":["AM","PM"],"country":"","currencyCode":"XXX","currencySymbol":"¤","decimalSeparator":",","displayCountry":"","displayCountryUS":"","displayLanguage":"italiano","displayLanguageUS":"Italian","eras":["BC","dopo Cristo"],"groupingSeparator":".","minusSign":"-","monetaryDecimalSeparator":",","months":["gennaio","febbraio","marzo","aprile","maggio","giugno","luglio","agosto","settembre","ottobre","novembre","dicembre",""],"months3":["gen","feb","mar","apr","mag","giu","lug","ago","set","ott","nov","dic",""],"percentSign":"%","weekDays":["","domenica","lunedì","martedì","mercoledì","giovedì","venerdì","sabato"],"weekDays3":["","dom","lun","mar","mer","gio","ven","sab"],"zeroDigit":"0"},"iw":{"ampm":["AM","PM"],"country":"","currencyCode":"XXX","currencySymbol":"¤","decimalSeparator":".","displayCountry":"","displayCountryUS":"","displayLanguage":"עברית","displayLanguageUS":"Hebrew","eras":["לסה\"נ","לפסה\"נ"],"groupingSeparator":",","minusSign":"-","monetaryDecimalSeparator":".","months":["ינואר","פברואר","מרץ","אפריל","מאי","יוני","יולי","אוגוסט","ספטמבר","אוקטובר","נובמבר","דצמבר",""],"months3":["ינו","פבר","מרץ","אפר","מאי","יונ","יול","אוג","ספט","אוק","נוב","דצמ",""],"percentSign":"%","weekDays":["","יום ראשון","יום שני","יום שלישי","יום רביעי","יום חמישי","יום שישי","שבת"],"weekDays3":["","א","ב","ג","ד","ה","ו","ש"],"zeroDigit":"0"},"es-EC":{"ampm":["AM","PM"],"country":"EC","currencyCode":"USD","currencySymbol":"$","decimalSeparator":",","displayCountry":"Ecuador","displayCountryUS":"Ecuador","displayLanguage":"español","displayLanguageUS":"Spanish","eras":["BC","AD"],"groupingSeparator":".","minusSign":"-","monetaryDecimalSeparator":",","months":["enero","febrero","marzo","abril","mayo","junio","julio","agosto","septiembre","octubre","noviembre","diciembre",""],"months3":["ene","feb","mar","abr","may","jun","jul","ago","sep","oct","nov","dic",""],"percentSign":"%","weekDays":["","domingo","lunes","martes","miércoles","jueves","viernes","sábado"],"weekDays3":["","dom","lun","mar","mié","jue","vie","sáb"],"zeroDigit":"0"},"ar":{"ampm":["ص","م"],"country":"","currencyCode":"XXX","currencySymbol":"¤","decimalSeparator":".","displayCountry":"","displayCountryUS":"","displayLanguage":"العربية","displayLanguageUS":"Arabic","eras":["ق.م","م"],"groupingSeparator":",","minusSign":"-","monetaryDecimalSeparator":".","months":["يناير","فبراير","مارس","أبريل","مايو","يونيو","يوليو","أغسطس","سبتمبر","أكتوبر","نوفمبر","ديسمبر",""],"months3":["ينا","فبر","مار","أبر","ماي","يون","يول","أغس","سبت","أكت","نوف","ديس",""],"percentSign":"%","weekDays":["","الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],"weekDays3":["","ح","ن","ث","ر","خ","ج","س"],"zeroDigit":"0"},"in":{"ampm":["AM","PM"],"country":"","currencyCode":"XXX","currencySymbol":"¤","decimalSeparator":",","displayCountry":"","displayCountryUS":"","displayLanguage":"Bahasa Indonesia","displayLanguageUS":"Indonesian","eras":["BCE","CE"],"groupingSeparator":".","minusSign":"-","monetaryDecimalSeparator":",","months":["Januari","Februari","Maret","April","Mei","Juni","Juli","Agustus","September","Oktober","November","Desember",""],"months3":["Jan","Feb","Mar","Apr","Mei","Jun","Jul","Agu","Sep","Okt","Nov","Des",""],"percentSign":"%","weekDays":["","Minggu","Senin","Selasa","Rabu","Kamis","Jumat","Sabtu"],"weekDays3":["","Min","Sen","Sel","Rab","Kam","Jum","Sab"],"zeroDigit":"0"},"tr-TR":{"ampm":["AM","PM"],"country":"TR","currencyCode":"TRY","currencySymbol":"YTL","decimalSeparator":",","displayCountry":"Türkiye","displayCountryUS":"Turkey","displayLanguage":"Türkçe","displayLanguageUS":"Turkish","eras":["BC","AD"],"groupingSeparator":".","minusSign":"-","monetaryDecimalSeparator":",","months":["Ocak","Şubat","Mart","Nisan","Mayıs","Haziran","Temmuz","Ağustos","Eylül","Ekim","Kasım","Aralık",""],"months3":["Oca","Şub","Mar","Nis","May","Haz","Tem","Ağu","Eyl","Eki","Kas","Ara",""],"percentSign":"%","weekDays":["","Pazar","Pazartesi","Salı","Çarşamba","Perşembe","Cuma","Cumartesi"],"weekDays3":["","Paz","Pzt","Sal","Çar","Per","Cum","Cmt"],"zeroDigit":"0"},"es-DO":{"ampm":["AM","PM"],"country":"DO","currencyCode":"DOP","currencySymbol":"RD$","decimalSeparator":".","displayCountry":"República Dominicana","displayCountryUS":"Dominican Republic","displayLanguage":"español","displayLanguageUS":"Spanish","eras":["BC","AD"],"groupingSeparator":",","minusSign":"-","monetaryDecimalSeparator":".","months":["enero","febrero","marzo","abril","mayo","junio","julio","agosto","septiembre","octubre","noviembre","diciembre",""],"months3":["ene","feb","mar","abr","may","jun","jul","ago","sep","oct","nov","dic",""],"percentSign":"%","weekDays":["","domingo","lunes","martes","miércoles","jueves","viernes","sábado"],"weekDays3":["","dom","lun","mar","mié","jue","vie","sáb"],"zeroDigit":"0"},"de-DE":{"ampm":["AM","PM"],"country":"DE","currencyCode":"EUR","currencySymbol":"€","decimalSeparator":",","displayCountry":"Deutschland","displayCountryUS":"Germany","displayLanguage":"Deutsch","displayLanguageUS":"German","eras":["v. Chr.","n. Chr."],"groupingSeparator":".","minusSign":"-","monetaryDecimalSeparator":",","months":["Januar","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember",""],"months3":["Jan","Feb","Mrz","Apr","Mai","Jun","Jul","Aug","Sep","Okt","Nov","Dez",""],"percentSign":"%","weekDays":["","Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag"],"weekDays3":["","So","Mo","Di","Mi","Do","Fr","Sa"],"zeroDigit":"0"},"sv-SE":{"ampm":["fm","em"],"country":"SE","currencyCode":"SEK","currencySymbol":"kr","decimalSeparator":",","displayCountry":"Sverige","displayCountryUS":"Sweden","displayLanguage":"svenska","displayLanguageUS":"Swedish","eras":["BC","AD"],"groupingSeparator":" ","minusSign":"-","monetaryDecimalSeparator":",","months":["januari","februari","mars","april","maj","juni","juli","augusti","september","oktober","november","december",""],"months3":["jan","feb","mar","apr","maj","jun","jul","aug","sep","okt","nov","dec",""],"percentSign":"%","weekDays":["","söndag","måndag","tisdag","onsdag","torsdag","fredag","lördag"],"weekDays3":["","sö","må","ti","on","to","fr","lö"],"zeroDigit":"0"},"be-BY":{"ampm":["AM","PM"],"country":"BY","currencyCode":"BYR","currencySymbol":"Руб","decimalSeparator":",","displayCountry":"Беларусь","displayCountryUS":"Belarus","displayLanguage":"беларускі","displayLanguageUS":"Belarusian","eras":["да н.е.","н.е."],"groupingSeparator":" ","minusSign":"-","monetaryDecimalSeparator":",","months":["студзеня","лютага","сакавіка","красавіка","мая","чрвеня","ліпеня","жніўня","верасня","кастрычніка","листапада","снежня",""],"months3":["стд","лют","скв","крс","май","чрв","лпн","жнв","врс","кст","лст","снж",""],"percentSign":"%","weekDays":["","нядзеля","панядзелак","аўторак","серада","чацвер","пятніца","субота"],"weekDays3":["","нд","пн","ат","ср","чц","пт","сб"],"zeroDigit":"0"},"ar-AE":{"ampm":["ص","م"],"country":"AE","currencyCode":"AED","currencySymbol":"د.إ.","decimalSeparator":".","displayCountry":"الإمارات","displayCountryUS":"United Arab Emirates","displayLanguage":"العربية","displayLanguageUS":"Arabic","eras":["ق.م","م"],"groupingSeparator":",","minusSign":"-","monetaryDecimalSeparator":".","months":["يناير","فبراير","مارس","أبريل","مايو","يونيو","يوليو","أغسطس","سبتمبر","أكتوبر","نوفمبر","ديسمبر",""],"months3":["ينا","فبر","مار","أبر","ماي","يون","يول","أغس","سبت","أكت","نوف","ديس",""],"percentSign":"%","weekDays":["","الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],"weekDays3":["","ح","ن","ث","ر","خ","ج","س"],"zeroDigit":"0"},"ar-QA":{"ampm":["ص","م"],"country":"QA","currencyCode":"QAR","currencySymbol":"ر.ق.","decimalSeparator":".","displayCountry":"قطر","displayCountryUS":"Qatar","displayLanguage":"العربية","displayLanguageUS":"Arabic","eras":["ق.م","م"],"groupingSeparator":",","minusSign":"-","monetaryDecimalSeparator":".","months":["يناير","فبراير","مارس","أبريل","مايو","يونيو","يوليو","أغسطس","سبتمبر","أكتوبر","نوفمبر","ديسمبر",""],"months3":["ينا","فبر","مار","أبر","ماي","يون","يول","أغس","سبت","أكت","نوف","ديس",""],"percentSign":"%","weekDays":["","الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],"weekDays3":["","ح","ن","ث","ر","خ","ج","س"],"zeroDigit":"0"},"it-IT":{"ampm":["AM","PM"],"country":"IT","currencyCode":"EUR","currencySymbol":"€","decimalSeparator":",","displayCountry":"Italia","displayCountryUS":"Italy","displayLanguage":"italiano","displayLanguageUS":"Italian","eras":["BC","dopo Cristo"],"groupingSeparator":".","minusSign":"-","monetaryDecimalSeparator":",","months":["gennaio","febbraio","marzo","aprile","maggio","giugno","luglio","agosto","settembre","ottobre","novembre","dicembre",""],"months3":["gen","feb","mar","apr","mag","giu","lug","ago","set","ott","nov","dic",""],"percentSign":"%","weekDays":["","domenica","lunedì","martedì","mercoledì","giovedì","venerdì","sabato"],"weekDays3":["","dom","lun","mar","mer","gio","ven","sab"],"zeroDigit":"0"},"pt":{"ampm":["AM","PM"],"country":"","currencyCode":"XXX","currencySymbol":"¤","decimalSeparator":",","displayCountry":"","displayCountryUS":"","displayLanguage":"português","displayLanguageUS":"Portuguese","eras":["BC","AD"],"groupingSeparator":".","minusSign":"-","monetaryDecimalSeparator":",","months":["Janeiro","Fevereiro","Março","Abril","Maio","Junho","Julho","Agosto","Setembro","Outubro","Novembro","Dezembro",""],"months3":["Jan","Fev","Mar","Abr","Mai","Jun","Jul","Ago","Set","Out","Nov","Dez",""],"percentSign":"%","weekDays":["","Domingo","Segunda-feira","Terça-feira","Quarta-feira","Quinta-feira","Sexta-feira","Sábado"],"weekDays3":["","Dom","Seg","Ter","Qua","Qui","Sex","Sáb"],"zeroDigit":"0"},"fr-CH":{"ampm":["AM","PM"],"country":"CH","currencyCode":"CHF","currencySymbol":"SFr.","decimalSeparator":".","displayCountry":"Suisse","displayCountryUS":"Switzerland","displayLanguage":"français","displayLanguageUS":"French","eras":["BC","ap. J.-C."],"groupingSeparator":"'","minusSign":"-","monetaryDecimalSeparator":".","months":["janvier","février","mars","avril","mai","juin","juillet","août","septembre","octobre","novembre","décembre",""],"months3":["janv.","févr.","mars","avr.","mai","juin","juil.","août","sept.","oct.","nov.","déc.",""],"percentSign":"%","weekDays":["","dimanche","lundi","mardi","mercredi","jeudi","vendredi","samedi"],"weekDays3":["","dim.","lun.","mar.","mer.","jeu.","ven.","sam."],"zeroDigit":"0"},"zh-SG":{"ampm":["上午","下午"],"country":"SG","currencyCode":"SGD","currencySymbol":"S$","decimalSeparator":".","displayCountry":"新加坡","displayCountryUS":"Singapore","displayLanguage":"中文","displayLanguageUS":"Chinese","eras":["公元前","公元"],"groupingSeparator":",","minusSign":"-","monetaryDecimalSeparator":".","months":["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月",""],"months3":["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月",""],"percentSign":"%","weekDays":["","星期日","星期一","星期二","星期三","星期四","星期五","星期六"],"weekDays3":["","周日","周一","周二","周三","周四","周五","周六"],"zeroDigit":"0"},"es-US":{"ampm":["a.m.","p.m."],"country":"US","currencyCode":"USD","currencySymbol":"US$","decimalSeparator":".","displayCountry":"Estados Unidos","displayCountryUS":"United States","displayLanguage":"español","displayLanguageUS":"Spanish","eras":["a.C.","d.C."],"groupingSeparator":",","minusSign":"-","monetaryDecimalSeparator":".","months":["enero","febrero","marzo","abril","mayo","junio","julio","agosto","septiembre","octubre","noviembre","diciembre",""],"months3":["ene","feb","mar","abr","may","jun","jul","ago","sep","oct","nov","dic",""],"percentSign":"%","weekDays":["","domingo","lunes","martes","miércoles","jueves","viernes","sábado"],"weekDays3":["","dom","lun","mar","mié","jue","vie","sáb"],"zeroDigit":"0"},"ja":{"ampm":["午前","午後"],"country":"","currencyCode":"XXX","currencySymbol":"¤","decimalSeparator":".","displayCountry":"","displayCountryUS":"","displayLanguage":"日本語","displayLanguageUS":"Japanese","eras":["紀元前","西暦"],"groupingSeparator":",","minusSign":"-","monetaryDecimalSeparator":".","months":["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月",""],"months3":["1","2","3","4","5","6","7","8","9","10","11","12",""],"percentSign":"%","weekDays":["","日曜日","月曜日","火曜日","水曜日","木曜日","金曜日","土曜日"],"weekDays3":["","日","月","火","水","木","金","土"],"zeroDigit":"0"},"ko-KR":{"ampm":["오전","오후"],"country":"KR","currencyCode":"KRW","currencySymbol":"￦","decimalSeparator":".","displayCountry":"대한민국","displayCountryUS":"South Korea","displayLanguage":"한국어","displayLanguageUS":"Korean","eras":["BC","AD"],"groupingSeparator":",","minusSign":"-","monetaryDecimalSeparator":".","months":["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월",""],"months3":["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월",""],"percentSign":"%","weekDays":["","일요일","월요일","화요일","수요일","목요일","금요일","토요일"],"weekDays3":["","일","월","화","수","목","금","토"],"zeroDigit":"0"}};function preloadSW(){DynarchDomUtils.createElement("div",{display:"none"},null,document.body).innerHTML="../css/img/top-menu-shade.png ../css/img/purchaseBlack.png ../css/img/purchaseBlack.png ../css/img/coBlack.png ../css/img/fpBlack.png ../css/img/bnr_nowAccepting_150x40.gif ../css/img/payECheques.png ../css/img/visa_2c.jpg ../css/img/mc40.gif ../css/img/menu1.png ../css/img/icon-close.png ../css/img/icon-plus.png ../css/img/menu1.png ../css/img/menu1.png ../css/img/top-menu-shade.png ../css/img/arrow-down.gif ../css/img/arrow-right.gif ../css/img/arrow-down-small.gif ../css/img/check.gif ../css/img/resize-handle.gif ../css/img/cont-right.gif ../css/img/cont-left.gif ../css/img/cont-right.gif ../css/img/cont-left.gif ../css/img/loading.gif ../css/img/arrow-down.gif ../css/img/arrow-right.gif ../css/img/arrow-down-small.gif ../css/img/check.gif ../css/img/arrow-down.gif ../css/img/arrow-right.gif ../css/img/arrow-down-small.gif ../css/img/check.gif ../css/img/icon-close.png ../css/img/arrow-down.gif ../css/img/arrow-right.gif ../css/img/arrow-down-small.gif ../css/img/check.gif ../css/img/resize-handle.gif ../css/img/cont-right.gif ../css/img/cont-left.gif ../css/img/cont-right.gif ../css/img/cont-left.gif ../css/img/loading.gif ../css/img/arrow-down.gif ../css/img/arrow-right.gif ../css/img/arrow-down-small.gif ../css/img/check.gif ../css/img/arrow-down.gif ../css/img/arrow-right.gif ../css/img/arrow-down-small.gif ../css/img/check.gif ../css/img/menu1.png ../css/img/menu1.png ../css/img/icon-close.png ../css/img/icon-close.png ../css/img/icon-close.png ../images/button.png ../images/btn_green.png ../images/button_demo.png ../images/badge.png ../images/menu_rollover.png ../images/logo.png ../images/scheduleworld.png ../images/menu.png ../images/big_panel.png ../images/news_bar.png ../images/small_panel1.png ../images/small_panel2.png ../images/small_panel3.png ../images/menu_rollover.png ../images/16x16/help.png ../images/16x16/info.jpg ../images/spin1Black.gif ../images/48x48/Delete.png ../images/48x48/Postit.png ../images/48x48/proxy.png ../images/48x48/Duplicates48.png ../images/48x48/Downloads48.png ../images/48x48/Info.png ../images/crystal/search.png ../images/48x48/csv_text.png ../images/48x48/vcard.png ../images/crystal/date.png ../images/48x48/sync.png ../images/48x48/CheckDealie.png ../images/app/filenew.png ../images/app/fileopen.png ../images/app/filesave.png ../images/app/filesaveas.png ../images/app/fileprint.png ../images/app/editpaste.png ../images/crystal/logout16.png ../images/logo16.png ../images/logo.png ../images/scheduleworld.png ../images/crystal/karm.png ../images/crystal/cal.png ../images/crystal/personal.png ../images/crystal/personal170.png ../images/crystal/lists.png ../images/crystal/advancedsettings.png ../images/crystal/nfs_unmount.png ../images/16x16/help.png ../images/16x16/info.jpg ../images/spin1Black.gif ../images/48x48/Delete.png ../images/48x48/Postit.png ../images/48x48/proxy.png ../images/48x48/Duplicates48.png ../images/48x48/Downloads48.png ../images/48x48/Info.png ../images/crystal/search.png ../images/48x48/csv_text.png ../images/48x48/vcard.png ../images/crystal/date.png ../images/48x48/sync.png ../images/48x48/CheckDealie.png ../images/app/filenew.png ../images/app/fileopen.png ../images/app/filesave.png ../images/app/filesaveas.png ../images/app/fileprint.png ../images/app/editpaste.png ../images/crystal/logout16.png ../images/logo16.png ../images/logo.png ../images/scheduleworld.png ../images/crystal/karm.png ../images/crystal/cal.png ../images/crystal/personal.png ../images/crystal/personal170.png ../images/crystal/lists.png ../images/crystal/advancedsettings.png ../images/crystal/nfs_unmount.png ../images/64x64/RefurbishedHouse.png ../images/64x64/Calendar.png ../images/64x64/CheckDealie.png ../images/64x64/AddressBook.png ../images/64x64/Postit.png ../images/64x64/sync.png ../images/64x64/iChat64.png ../images/64x64/mail.png ../images/64x64/network_local.png ../images/64x64/UtilityManager.png ../images/logo.png ../images/logo.png ../images/logo.png ../images/crystal/personal170.png ../images/paypal/mainMenu.png ../images/paypal/sellingPreferences.png ../images/paypal/ppAccountOptional.png ../images/crystal/sharemanager.png ../images/9x9/recurringChange.gif ../images/9x9/recurring.gif ../images/kalarm.png ../images/9x9/recurringChange.gif ../images/9x9/recurring.gif ../images/kalarm.png ../images/crystal/personal170.png ../images/crystal/personal.png ../images/crystal/personal170.png".qw().map(function(img){return"<img src='"+Dynarch.getFileURL(img)+"' />";}).join("");}
var swApp=null;Array.prototype.removeSlice=function(from,to){this.splice(from,!to||1+to-from+(!(to<0^from>=0)&&(to<0||-1)*this.length));return this.length;};function SWApp(){}
function initSWApp(){if(swApp){return;}
swApp=new SWApp();swApp.init();}
function shutdown(){if(swApp){swApp.shutdown();}}
function pingIframeLoad(){var command={};command.test="ping";swApp.syncSWorld.sendRequest(command,"ping");}
window.pingIframeLoad=pingIframeLoad;function calIframeLoad(){swApp.log("calIframeLoad");var iframe=document.getElementById("upload_target");var response=iframe.contentWindow.document.body.textContent;var uploadSubmit=document.getElementById('uploadSubmit');uploadSubmit.value="Done";uploadSubmit.onclick=function(){swApp.importCalendarDialog.destroy();};var result=swEval(response);if(result===null){alert("Upload response error.");return false;}
var msg="";var needsEventSync=false;var needsTodoSync=false;var eventsUploaded=document.getElementById("eventsUploaded");var tasksUploaded=document.getElementById("tasksUploaded");eventsUploaded.style.display="";tasksUploaded.style.display="";if(result.success){swApp.syncSWorld.syncSWorldPrefs.clientNonce=result.nextSyncAnchor;msg="Success.\n";if(result.eventsImported>0){needsEventSync=true;eventsUploaded.innerHTML=""+result.eventsImported;}
if(result.todosImported>0){needsTodoSync=true;tasksUploaded.innerHTML=""+result.todosImported;}}
else{alert("Failed to upload:"+result.message);pingIframeLoad();}
if(needsEventSync&&needsTodoSync){swApp.syncSWorld.eventAndTodoSync();}
else if(needsEventSync||needsTodoSync){swApp.syncSWorld.eventSync();}
else{swApp.syncSWorld.saveSyncSWorldPrefs();}}
window.calIframeLoad=calIframeLoad;function uploadFinished(response){swApp.log("Upload finished:"+response);}
function contactIframeLoad(){swApp.log("contactIframeLoad");var iframe=document.getElementById("vcard_upload_target");var response=iframe.contentWindow.document.body.textContent;var contactUploadSubmit=document.getElementById('contactUploadSubmit');contactUploadSubmit.value="Done";contactUploadSubmit.onclick=function(){swApp.importContactsDialog.destroy();};var result=swEval(response);if(result===null){alert("Upload response error.");return false;}
var msg="";var needsContactSync=false;var contactsUploaded=document.getElementById("contactsUploaded");contactsUploaded.style.display="";if(result.success){swApp.syncSWorld.syncSWorldPrefs.clientNonce=result.nextSyncAnchor;msg="Success.\n";if(result.itemsImported>0){needsContactSync=true;contactsUploaded.innerHTML=""+result.itemsImported;}}
else{alert("Failed to upload:"+result.message);pingIframeLoad();}
if(needsContactSync){swApp.syncSWorld.contactSync();}
else{swApp.syncSWorld.saveSyncSWorldPrefs();}}
window.contactIframeLoad=contactIframeLoad;function photoIframeLoad(){swApp.log("photoIframeLoad");var iframe=document.getElementById("photo_upload_target");var response=iframe.contentWindow.document.body.textContent;var photoUploadSubmit=document.getElementById('photoUploadSubmit');photoUploadSubmit.value="Done";photoUploadSubmit.onclick=function(){swApp.importPhotoDialog.destroy();};var photoUploadInput=document.getElementById('photoUploadInput');photoUploadInput.disabled="disabled";var result=swEval(response);if(result===null){alert("Upload response error.");return false;}
var msg="";var needsContactSync=false;if(result.success){swApp.syncSWorld.syncSWorldPrefs.clientNonce=result.nextSyncAnchor;msg="Success.\n";var contact=swApp.syncSWorld.swContactModel[result.luid];if(result.jpegPhoto>0){contact.jpegPhoto=result.jpegPhoto;}
else{delete contact.jpegPhoto;}
swApp.contactListSelectionModel.clear();swApp.contactListSelectionModel.select(contact.id);swApp.syncSWorld.saveSwContactModel();}
else{alert("Failed to upload:"+result.message);pingIframeLoad();}
if(needsContactSync){}
else{swApp.syncSWorld.saveSyncSWorldPrefs();}}
window.photoIframeLoad=photoIframeLoad;var is_ie;SWApp.prototype={MMMDY:"mmm d yyyy",MDY:"m/d/yyyy",DMY:"d/m/yyyy",YMD:"yyyy-m-d",syncSWorld:null,desktop:null,top:null,leftNotebook:null,rightNotebook:null,rightNotebookEM:null,calendarContainerL:null,calendarContainerR:null,editEventContainerR:null,createCalendarContainerR:null,shareCalendarContainerR:null,subscribeCalContainerR:null,calendarViewNotebook:null,taskViewNotebook:null,tasksContainerL:null,tasksContainerR:null,contactsContainerL:null,contactsContainerR:null,notesContainerL:null,notesContainerR:null,emContainerL:null,emContainerR:null,backupContainerL:null,backupContainerREvent:null,backupContainerRTask:null,backupContainerRContact:null,backupContainerRNote:null,prefsContainerL:null,prefsContainerRGeneral:null,prefsContainerRSyncML:null,prefsContainerREvolution:null,prefsContainerRGMail:null,prefsContainerRFunambol:null,prefsContainerRSyncMLDevice:null,prefsContainerRCalendar:null,syncContainerL:null,syncContainerR:null,todayContainerL:null,todayContainerR:null,mailContainerL:null,mailContainerR:null,CALENDAR_PAGE:0,TASKS_PAGE:1,CONTACTS_PAGE:2,NOTES_PAGE:3,PREFS_PAGE:4,SYNC_PAGE_LEFT:5,TODAY_PAGE_LEFT:6,BACKUP_PAGE_LEFT:7,MAIL_PAGE_LEFT:8,EM_PAGE_LEFT:9,PREFS_GENERAL_PAGE:4,PREFS_SYNCML_PAGE:5,PREFS_EVOLUTION_PAGE:6,PREFS_GMAIL_PAGE:7,PREFS_FUNAMBOL_PAGE:8,PREFS_SYNCMLDEVICE_PAGE:9,PREFS_CALENDAR_PAGE:10,SYNC_PAGE_RIGHT:11,TODAY_PAGE_RIGHT:12,CAL_EDIT_PAGE:13,CREATE_CALENDAR_PAGE:14,SHARE_CALENDAR_PAGE:15,BACKUP_PAGE_RIGHT_EVENT:16,BACKUP_PAGE_RIGHT_TASK:17,BACKUP_PAGE_RIGHT_CONTACT:18,BACKUP_PAGE_RIGHT_NOTE:19,SUBSCRIBE_CAL_PAGE:20,MAIL_PAGE_RIGHT:21,EM_PAGE_RIGHT:22,CAL_LIST_PAGE:0,CAL_LIST_ALL_PAGE:1,CAL_DAY_PAGE:2,CAL_MONTH_PAGE:3,TASK_LIST_PAGE:0,TASK_DAY_PAGE:1,TASK_MONTH_PAGE:2,calListContainer:null,calListAllContainer:null,calDayContainer:null,calMonthContainer:null,taskListContainer:null,taskDayContainer:null,taskMonthContainer:null,contactListContainer:null,contactEditContainer:null,contactPhotoContainer:null,CON_LIST_PAGE:0,CON_EDIT_PAGE:1,CON_PHOTO_PAGE:2,toolbarNotebook:null,toolbarClasses:null,toolbarNotes:null,toolbarCalendar:null,toolbarContacts:null,toolbarTasks:null,toolbarPrefs:null,toolbarBackup:null,TOOLBAR_NOTES_PAGE:0,TOOLBAR_CALENDAR_PAGE:1,TOOLBAR_CONTACTS_PAGE:2,TOOLBAR_TASKS_PAGE:3,TOOLBAR_PREFS_PAGE:4,TOOLBAR_BACKUP_PAGE:5,firstDay:0,NO_CATEGORY:"p1j2h3g4b5m6z7z9d8e78r90rquwuwwyt",destICalendarID:"id200",formatRegex:new RegExp("%s"),dayOfWeekStr2Num:{"Sun":0,"Mon":1,"Tue":2,"Wed":3,"Thu":4,"Fri":5,"Sat":6},_monthDayMax:{0:31,1:31,2:29,3:31,4:30,5:31,6:30,7:31,8:31,9:30,10:31,11:30,12:31},getMonthDayMax:function(year,month){if(month!=2){return this._monthDayMax[month];}
if(year%4!==0){return 28;}
return 29;},GOOGLE_TIMEOUT_MS:3600000,init:function(){this.syncSWorld=new SyncSWorld();this.syncSWorld.startup();this.testObj={};this.testObj.testValue="1234";try{this.syncSWorld.saveObject("testKey",this.testObj,swApp.init2.$(this));}catch(ex){alert("Your browser is not supported because its offline storage\nservice is not available or not supported yet.\n"+ex);window.location="/sw2/index.html";}},init2:function(){var hrefLC=window.location.href.toLowerCase();try{var loadedObj=this.syncSWorld.loadObject("testKey");if(loadedObj.testValue!="1234"){throw("Offline storage failed");}}catch(ex){alert("Your browser is not supported because its offline storage\nservice is not available or not supported yet.\nCurrently supported browsers:\n1. Firefox >= 2\n2. Internet Explorer 6+7 (requires Flash)\n3. Internet Explorer 8\n4. Safari >= 4\n"+ex);if(hrefLC.indexOf("scheduleworld")>=0){window.location="/sw2/index.html";}
else{window.location="/sw2/indexDev.html";}
return;}
if(this.syncSWorld.clientVersion.indexOf("CLIENT")>=0){this.loggingEnabled=true;}
else{this.loggingEnabled=false;}
if(typeof console=='undefined'){this.loggingEnabled=false;}
if(this.loggingEnabled){this.log("SWApp.init()");}
try{var x=new DynarhLIB_preload_images();if(!is_gecko){this.log("preloadSW()");preloadSW();}}catch(ex2){this.log("preload() images/css/js failed:"+ex2);}
this.sessionValid=false;try{var now=new Date();this.swCookie=this.syncSWorld.loadObject(this.syncSWorld.SW_COOKIE);var url;if(!this.swCookie.password){this.swCookie.ttl=0;delete this.swCookie.calUserID;}
if(now.getTime()<this.swCookie.ttl){this.sessionValid=true;this.syncSWorld.username=this.swCookie.calUserID;this.syncSWorld.password=this.swCookie.password;this.syncSWorld.sessionID=this.swCookie.sessionID;this.syncSWorld.syncSWorldPrefs.sessionTTL=this.swCookie.ttl;if(!this.syncSWorld.syncSWorldPrefs.deviceID){this.syncSWorld.syncSWorldPrefs.deviceID=this.swCookie.deviceID;}
if(this.swCookie.userSettingsDTO&&this.syncSWorld.userSettingsDTO){var versionChange=false;if(versionChange){alert("Warning: overwriting your local settings with\nthe latest values from the server.");}}
if(!this.syncSWorld.userSettingsDTO||!this.syncSWorld.userSettingsDTO.ICalendarInfoL){this.syncSWorld.syncSWorldPrefs.clientNonce=this.swCookie.clientNonce;this.syncSWorld.userSettingsDTO=this.swCookie.userSettingsDTO;this.syncSWorld.saveUserSettingsDTO(this.initStep1b.$(this));return;}
try{if(this.swCookie.userSettingsDTO){this.initStep1b();}
else{this.initStep2();}}catch(exi){alert("Failed init:"+exi);}
return;}
else{if(typeof swApp.swCookie.calUserID=='undefined'){swApp.swCookie={};swApp.syncSWorld.wipeStorage();alert(swApp.syncSWorld.firefoxBug);url="indexDev.html";hrefLC=window.location.href.toLowerCase();if(hrefLC.indexOf("scheduleworld")>=0){url="index.html";}
window.location=url;return;}
if(swApp.swCookie.ttl){swApp.log("ttl expired. now:"+now.getTime()+", ttl:"+
swApp.swCookie.ttl);}
else{swApp.log("cookie ttl expired (undefined).");}
delete swApp.syncSWorld.syncSWorldPrefs.clientNonce;var clientNonce=1;var createSession={};createSession.username=swApp.swCookie.calUserID;var b64=swApp.syncSWorld.encode(swApp.swCookie.password);createSession.passwordB64=hex_sha256(b64+clientNonce);createSession.deviceID=swApp.swCookie.deviceID;createSession.clientNonce=clientNonce;var xml=Sarissa.xmlize(createSession,"createSession");url="/sw2/DevProxy/sw2/commandV3";hrefLC=window.location.href.toLowerCase();if(hrefLC.indexOf("scheduleworld")>=0){url="/sw2/commandV3";}
var rpc=new DlRPC({url:url,callback:swApp.handleNewSession.$(this),args:{user:swApp.swCookie.calUserID},data:xml});rpc.call();return;}}catch(exp){alert("SW: app.init() failed:"+exp);return;}
this.initStep2();},handleNewSession:function(answer){if(answer.success){var response=swEval(answer.text);if(response.badNonce){var url="indexDev.html";var hrefLC=window.location.href.toLowerCase();if(hrefLC.indexOf("scheduleworld")>=0){alert("Bad nonce.");url="index.html";}
window.location=url;return;}
else{swApp.swCookie.sessionID=response.sessionID;swApp.swCookie.ttl=response.ttl;swApp.swCookie.clientNonce=response.nextSyncAnchor;swApp.swCookie.userSettingsDTO=response.userSettingsDTO;this.sessionValid=true;this.syncSWorld.username=this.swCookie.calUserID;this.syncSWorld.password=this.swCookie.password;this.syncSWorld.sessionID=this.swCookie.sessionID;this.syncSWorld.syncSWorldPrefs.sessionTTL=this.swCookie.ttl;this.syncSWorld.syncSWorldPrefs.clientNonce=this.swCookie.clientNonce;this.syncSWorld.userSettingsDTO=this.swCookie.userSettingsDTO;this.syncSWorld.saveUserSettingsDTO(this.initStep1b.$(this));}}},initStep1b:function(){delete this.swCookie.userSettingsDTO;this.syncSWorld.saveObject(this.syncSWorld.SW_COOKIE,this.swCookie,this.initStep2.$(this));},initStep2:function(){var i;var hrefLC=window.location.href.toLowerCase();this.debug=true;if(hrefLC.indexOf("scheduleworld")>=0){this.debug=false;}
if(!this.sessionValid){var url="indexDev.html";if(hrefLC.indexOf("scheduleworld")>=0){alert("Invalid session.");url="index.html";}
window.location=url;}
var token=gup("token");if(token&&token.length>0){var request={};request.token=token;var successCallback=function(response){alert("Saving the Google AuthSub token succeeded.");};var failCallback=function(){alert("Saving the Google AuthSub token failed.");};swApp.syncSWorld.sendRequest(request,"saveAuthSubToken",successCallback,failCallback);}
if(swApp.syncSWorld.userSettingsDTO.language){this.userSettingsLocaleKey=swApp.syncSWorld.userSettingsDTO.language;if(swApp.syncSWorld.userSettingsDTO.country&&swApp.syncSWorld.userSettingsDTO.country.length>0){this.userSettingsLocaleKey+="-"+
swApp.syncSWorld.userSettingsDTO.country;}}
if(!this.userSettingsLocaleKey){this.userSettingsLocaleKey="en-CA";swApp.syncSWorld.userSettingsDTO.language="en-CA";}
this.locale=jsLocaleData[this.userSettingsLocaleKey];if(!this.locale){this.locale=jsLocaleData["en-CA"];}
Date._MN=this.locale.months;Date._SMN=this.locale.months3;var dayNames=this.locale.weekDays.slice(1);Date._DN=dayNames;this.shortDayNames=[];for(i=0;i<dayNames.length;++i){this.shortDayNames[i]=this.locale.weekDays3[i+1].substring(0,2);}
Date._SDN=this.shortDayNames;this.desktop=new DlDesktop({className:"DlWidget-3D",focusable:true});this.desktop.fullScreen();this.desktopLayout=new DlLayout({parent:this.desktop,className:"Sw2-DesktopLayout"});var middleCont=new DlContainer({});var middleLayout=new DlLayout({parent:middleCont});this.createTopView();if(this.loggingEnabled){this.log("SWApp.init()2");}
var macbar=new DlContainer({className:"DlMacHBar"});macbar.setStyle("textAlign","center");macbar.zIndex(10);var taskbars=[new DlContainer({parent:macbar,className:"DlToolbar SwTaskBar SwTaskBar-1"}),new DlContainer({parent:macbar,className:"DlToolbar SwTaskBar SwTaskBar-2"}),new DlContainer({parent:macbar,className:"DlToolbar SwTaskBar SwTaskBar-3"}),new DlContainer({parent:macbar,className:"DlToolbar SwTaskBar SwTaskBar-4"})];var todayIcon=new DlMacBarIcon({parent:macbar,align:"bottom",img:"images/64x64/RefurbishedHouse.png",tooltip:this.i18n("Today")});todayIcon.addEventListener("onClick",function(){swApp.todayView();});var calendarIcon=new DlMacBarIcon({parent:macbar,align:"bottom",img:"images/64x64/Calendar.png",tooltip:this.i18n("Calendar")});calendarIcon.addEventListener("onClick",function(){swApp.eventView();});var tasksIcon=new DlMacBarIcon({parent:macbar,align:"bottom",img:"images/64x64/CheckDealie.png",tooltip:this.i18n("Tasks")});tasksIcon.addEventListener("onClick",function(){swApp.taskView();});var contactsIcon=new DlMacBarIcon({parent:macbar,align:"bottom",img:"images/64x64/AddressBook.png",tooltip:this.i18n("Contacts")});contactsIcon.addEventListener("onClick",function(){swApp.contactsView();});var notesIcon=new DlMacBarIcon({parent:macbar,align:"bottom",img:"images/64x64/Postit.png",tooltip:this.i18n("Notes")});notesIcon.addEventListener("onClick",function(){swApp.notesView();});if(this.canUseXuheki()){this.mailIcon=new DlMacBarIcon({parent:macbar,align:"bottom",img:"images/64x64/mail.png"});this.mailIcon.addEventListener("onClick",function(){swApp.mailView();});}
var backupRestoreIcon=new DlMacBarIcon({parent:macbar,align:"bottom",img:"images/64x64/network_local.png",tooltip:this.i18n("Backup / Restore")});backupRestoreIcon.addEventListener("onClick",function(){swApp.backupRestoreView();});var settingsIcon=new DlMacBarIcon({parent:macbar,align:"bottom",img:"images/64x64/UtilityManager.png",tooltip:this.i18n("Settings")});settingsIcon.addEventListener("onClick",function(){swApp.prefsView();});this.leftNotebook=new DlNotebook({className:"Sw2-LeftNotebook"});this.calendarContainerL=new DlContainer({parent:this.leftNotebook,className:"Sw2-Scrollable-Y"});this.tasksContainerL=new DlContainer({parent:this.leftNotebook,className:"Sw2-Scrollable-Y"});this.contactsContainerL=new DlContainer({parent:this.leftNotebook,className:"Sw2-Scrollable-Y"});this.notesContainerL=new DlContainer({parent:this.leftNotebook,className:"Sw2-Scrollable-Y"});this.prefsContainerL=new DlContainer({parent:this.leftNotebook,className:"Sw2-Scrollable-Y"});this.syncContainerL=new DlContainer({parent:this.leftNotebook,className:"Sw2-Scrollable-Y"});this.todayContainerL=new DlContainer({parent:this.leftNotebook,className:"Sw2-Scrollable-Y"});this.backupContainerL=new DlContainer({parent:this.leftNotebook,className:"Sw2-Scrollable-Y"});this.mailContainerL=new DlContainer({parent:this.leftNotebook,className:"Sw2-Scrollable-Y"});this.emContainerL=new DlContainer({parent:this.leftNotebook,className:"Sw2-Scrollable-Y"});this.desktopResizeBar=new DlResizeBar({widget:this.leftNotebook,className:"Sw2-DesktopResizeBar"});this.rightNotebook=new DlNotebook({className:"Sw2-RightNotebook"});this.calendarContainerR=new DlContainer({parent:this.rightNotebook});this.tasksContainerR=new DlContainer({parent:this.rightNotebook});this.contactsContainerR=new DlContainer({parent:this.rightNotebook});this.notesContainerR=new DlContainer({parent:this.rightNotebook});this.prefsContainerRGeneral=new DlContainer({parent:this.rightNotebook});this.prefsContainerRSyncML=new DlContainer({parent:this.rightNotebook});this.prefsContainerREvolution=new DlContainer({parent:this.rightNotebook});this.prefsContainerRGMail=new DlContainer({parent:this.rightNotebook});this.prefsContainerRFunambol=new DlContainer({parent:this.rightNotebook});this.prefsContainerRSyncMLDevice=new DlContainer({parent:this.rightNotebook});this.prefsContainerRCalendar=new DlContainer({parent:this.rightNotebook});this.syncContainerR=new DlContainer({parent:this.rightNotebook});this.todayContainerR=new DlContainer({parent:this.rightNotebook});this.editEventContainerR=new DlContainer({parent:this.rightNotebook,scroll:true});this.createCalendarContainerR=new DlContainer({parent:this.rightNotebook});this.shareCalendarContainerR=new DlContainer({parent:this.rightNotebook,scroll:true});this.backupContainerREvent=new DlContainer({parent:this.rightNotebook});this.backupContainerRTask=new DlContainer({parent:this.rightNotebook});this.backupContainerRContact=new DlContainer({parent:this.rightNotebook});this.backupContainerRNote=new DlContainer({parent:this.rightNotebook});this.subscribeCalContainerR=new DlContainer({parent:this.rightNotebook});this.mailContainerR=new DlContainer({parent:this.rightNotebook});this.emContainerR=new DlContainer({parent:this.rightNotebook});this.desktopLayout.packWidget(this.topHboxCont,{pos:"top"});this.desktopLayout.packWidget(macbar,{pos:"bottom",overflow:"visible"});this.desktopLayout.packWidget(middleCont,{pos:"top",fill:"*"});middleLayout.packWidget(this.toolbarNotebook,{pos:"top",fill:60});var width=190;if(swApp.syncSWorld.userSettingsDTO.hasOwnProperty("leftNotebookWidth")){width=swApp.syncSWorld.userSettingsDTO.leftNotebookWidth;}
middleLayout.packWidget(this.leftNotebook,{pos:"left",fill:width,min:190,max:600});middleLayout.packWidget(this.desktopResizeBar,{pos:"left"});middleLayout.packWidget(this.rightNotebook,{pos:"right",fill:"*"});var tmp=[];for(var timeZoneID in swTZdata.zoneM){if(swTZdata.zoneM.hasOwnProperty(timeZoneID)){tmp.push(timeZoneID);}}
tmp.sort();this.tzMenuL=[];var item=null;for(i=0;i<tmp.length;++i){var valueTZ=tmp[i];var displayTZ=this.i18n(valueTZ);var tzParts=valueTZ.split('/');if(tzParts.length<2){continue;}
var baseMenuItem=null;for(var j=0;j<tzParts.length;++j){item={};item.label=tzParts[j];item.name=valueTZ;if(j===0){var found=false;for(var k=0;k<this.tzMenuL.length;++k){baseMenuItem=this.tzMenuL[k];if(baseMenuItem.label!=item.label){continue;}
found=true;break;}
if(!found){this.tzMenuL.push(item);baseMenuItem=item;}}
else if(j==1){if(!baseMenuItem.items){baseMenuItem.items=[];}
if(tzParts.length==2){baseMenuItem.items.push(item);}
else if(tzParts.length==3){var levelTwoBase=null;for(var l=0;l<baseMenuItem.items.length;++l){var testItem=baseMenuItem.items[l];if(testItem.label!=item.label){continue;}
levelTwoBase=testItem;break;}
if(!levelTwoBase){levelTwoBase={};baseMenuItem.items.push(levelTwoBase);levelTwoBase.label=item.label;levelTwoBase.items=[];}
var levelTwoItem={};levelTwoItem.label=tzParts[2];levelTwoBase.items.push(levelTwoItem);levelTwoItem.name=valueTZ;}}}}
if(!this.syncSWorld.userSettingsDTO.timeZoneID){this.syncSWorld.userSettingsDTO.timeZoneID="America/Toronto";}
if(!this.syncSWorld.userSettingsDTO.tzIDLRU){this.syncSWorld.userSettingsDTO.tzIDLRU=[];this.syncSWorld.userSettingsDTO.tzIDLRU.push(this.syncSWorld.userSettingsDTO.timeZoneID);}
if(this.syncSWorld.userSettingsDTO.tzIDLRU){var tzIDLRU=this.syncSWorld.userSettingsDTO.tzIDLRU;if(tzIDLRU&&tzIDLRU.length>0){this.tzMenuL.push("-");var tzRecent={};tzRecent.label=this.i18n("Recent");tzRecent.id="tzRecent";tzRecent.items=[];tzIDLRU.sort();for(i=0;i<tzIDLRU.length;++i){item={};item.label=tzIDLRU[i];item.name=tzIDLRU[i];tzRecent.items.push(item);}
this.tzMenuL.push(tzRecent);}}
swApp.eventView();this.desktop.callHooks("onResize");var wm=middleCont._makeWindowManager();wm.sw_getTaskBar=function(){var cont=taskbars.foreach(function(cont){if(cont.children().length<3){$RETURN(cont);}});return cont||taskbars.peek();};SwMinDialog.setDefaultWM(wm);var BUDDY_LIST_DLG=new SwMinDialog({title:"Instant Messenger",resizable:true,iconClass:"IconImBuddyList",quitBtn:"hide"});BUDDY_LIST_DLG.setContent("<div class='SW-LoadingVeil'></div>");BUDDY_LIST_DLG.setSize({x:400,y:500});BUDDY_LIST_DLG.setPos(30,50);this.contactCache=new SwContactCache({syncSWorld:this.syncSWorld,test:"test"});this.noteCache=new SwNoteCache({syncSWorld:this.syncSWorld,test:"test"});this.contactCache.initDataFromSyncSWorld();this.noteCache.initDataFromSyncSWorld();var command={};command.test="ping";swApp.syncSWorld.sendRequest(command,"ping",this.initEventSync.$(this),this.initEventSync.$(this));if(this.loggingEnabled){this.log("finished SWApp.init()");}},emCreateGETUploadURL:function(command,args){var request={};request.command=command;swMerge(request,args);var json=DlJSON.encode(request);var aes=new DlCryptAES({key:swApp.syncSWorld.kdfResultBytes,mode:"CTR"});aes.setTimestampIV();var jsonBytes=json.toBytes();var jsonBytesHex=jsonBytes.map("hex",2).join("");var data=aes.encodeBytes(jsonBytes);var dataHex=data.map("hex",2).join("");var newURL="/em/"+command+"?userid="+
swApp.syncSWorld.userSettingsDTO.swuserid+"&iv="+aes.getIV()+"&command="+dataHex;return newURL;},getUploadOnClick:function(ev){var command={};command.test="ping";var fileName=ev.id;swApp.syncSWorld.sendRequest(command,"ping",swApp.getUploadOnClickWorker(fileName));},getUploadOnClickWorker:function(fileName){var request={};request.fileName=fileName;request.clientNonce=swApp.syncSWorld.syncSWorldPrefs.clientNonce;request.deviceID=swApp.syncSWorld.syncSWorldPrefs.deviceID;request.password=hex_sha256(swApp.syncSWorld.sessionID+
swApp.syncSWorld.syncSWorldPrefs.clientNonce);var xml=Sarissa.xmlize(request,"getUpload");var newURL="/sw2/commandV3?user="+swApp.syncSWorld.username+"&command="+encodeURIComponent(xml);var windowProps='width=900,height=620,status=yes,scrollbars=1';this.purchaseWindow=window.open(newURL,"Uploaded Image",windowProps);pingIframeLoad();return false;},initEventSync:function(){this.syncSWorld.eventSync(this.syncSWorld.SYNC_NORMAL);},manageTZLRU:function(tzID){var tzIDLRU=swApp.syncSWorld.userSettingsDTO.tzIDLRU;var i=0;if(tzIDLRU&&tzIDLRU.length>0){for(i=0;i<tzIDLRU.length;++i){if(tzIDLRU[i]==tzID){return;}}}
var menu;if(swApp.tzRecentItem){menu=swApp.tzRecentItem.getMenu();var x=new DlMenuItem({parent:menu,label:tzID,name:tzID});}
if(swApp.tzRecentItemTask){menu=swApp.tzRecentItemTask.getMenu();var y=new DlMenuItem({parent:menu,label:tzID,name:tzID});}},convertGMT2TZ:function(tz,year,month,dayOfMonth,hourOfDay,minute,second){if(typeof hourOfDay=="undefined"){return this.convertGMT(tz,year,month,dayOfMonth,0,0,0,true);}
else{return this.convertGMT(tz,year,month,dayOfMonth,hourOfDay,minute,second,true);}},convertTZ2GMT:function(tz,year,month,dayOfMonth,hourOfDay,minute,second){if(typeof hourOfDay=="undefined"){return this.convertGMT(tz,year,month,dayOfMonth,0,0,0,false);}
else{return this.convertGMT(tz,year,month,dayOfMonth,hourOfDay,minute,second,false);}},getGMTResult:function(year,month,dayOfMonth,hourOfDay,minute,second){var result={};result.offsetHour=0;result.offsetMinute=0;result.offsetSecond=0;result.format="GMT";result.saveHour=0;result.saveMinute=0;result.year=year;result.month=month;result.dayOfMonth=dayOfMonth;result.hourOfDay=hourOfDay;result.minute=minute;result.second=second;return result;},convertGMT2Date:function(year,month,dayOfMonth,hourOfDay,minute,second){var date=new Date();date.setUTCDate(dayOfMonth);date.setUTCMonth(month-1);date.setUTCFullYear(year);date.setUTCHours(hourOfDay);date.setUTCMinutes(minute);date.setUTCSeconds(second);return date;},convertGMT:function(aTZ,year,month,dayOfMonth,hourOfDay,minute,second,gmt2tz){var result;var tz=aTZ;if(tz=="utc"||tz=="GMT"||tz=="Etc/GMT"){if(!gmt2tz){result=this.getGMTResult(year,month,dayOfMonth,hourOfDay,minute,second);return result;}
tz="Etc/GMT";}
else if(tz=="floating"){tz=this.syncSWorld.userSettingsDTO.timeZoneID;}
var zone=swTZdata.zoneM[tz];if(!zone){var index=tz.lastIndexOf("/");index=tz.lastIndexOf("/",index-1);if(index>0){zone=swTZdata.zoneM[tz.substring(index+1)];if(!zone){index=tz.lastIndexOf("/",index-1);if(index>0){zone=swTZdata.zoneM[tz.substring(index+1)];}}}}
if(!zone){this.log("convertGMT failed to find timezone:"+tz);zone=swTZdata.zoneM["Etc/GMT"];}
var specificZone=null;result={};for(var i=0;i<zone.length;++i){specificZone=zone[i];if(specificZone.untilYear>0&&year>specificZone.untilYear){continue;}
result.offsetHour=specificZone.offsetHour;result.offsetMinute=specificZone.offsetMinute;result.offsetSecond=specificZone.offsetSecond;result.format=specificZone.format;result.saveHour=0;result.saveMinute=0;var ruleKey=specificZone.ruleKey;if(!ruleKey||ruleKey.length<2){this._convertGMT(result,tz,year,month,dayOfMonth,hourOfDay,minute,second,gmt2tz);return result;}
var laterRule=null;var earlyRule=null;var rule=swTZdata.ruleM[ruleKey];var specificRule=null;for(var j=rule.length-1;j>=0;--j){specificRule=rule[j];var ruleYearTo=specificRule.yearTo;if(ruleYearTo==-1){ruleYearTo=specificRule.yearFrom;}
if(ruleYearTo==-2){ruleYearTo=year;}
if(specificRule.yearFrom>year){continue;}
if(ruleYearTo<year){break;}
if(!laterRule){laterRule=specificRule;continue;}
if(!earlyRule){earlyRule=specificRule;break;}}
if(!laterRule||!earlyRule){this._convertGMT(result,tz,year,month,dayOfMonth,hourOfDay,minute,second,gmt2tz);return result;}
var laterDayOfMonth=this.getDayOfMonth(year,laterRule.month,laterRule.on);var earlyDayOfMonth=this.getDayOfMonth(year,earlyRule.month,earlyRule.on);specificRule=earlyRule;if(month<earlyRule.month){specificRule=laterRule;}
else if(month==earlyRule.month){if(dayOfMonth<earlyDayOfMonth){specificRule=laterRule;}
else if(dayOfMonth==earlyDayOfMonth){if(hourOfDay<earlyRule.switchStartHour){specificRule=laterRule;}
else if(hourOfDay==earlyRule.switchStartHour){if(minute<earlyRule.switchStartMinute){specificRule=laterRule;}}}}
else{if(month>laterRule.month){specificRule=laterRule;}
else if(month==laterRule.month){if(dayOfMonth>laterDayOfMonth){specificRule=laterRule;}
else if(dayOfMonth==laterDayOfMonth){if(hourOfDay>laterRule.switchStartHour){specificRule=laterRule;}
else if(hourOfDay==laterRule.switchStartHour){if(minute>=laterRule.switchStartMinute){specificRule=laterRule;}}}}}
result.saveHour=specificRule.saveHour;result.saveMinute=specificRule.saveMinute;result.format=result.format.replace(this.formatRegex,specificRule.letter);this._convertGMT(result,tz,year,month,dayOfMonth,hourOfDay,minute,second,gmt2tz);return result;}},getDayOfMonth:function(year,aMonth,on){if(on.length<3){return on;}
var month=aMonth-1;var result=1;var i=0;var tmpDate=new Date(year,month,1,0,0,0,0);if(on=="lastSun"){var dayMax=this.getMonthDayMax(year,month);for(i=dayMax;i>=1;--i){tmpDate.setDate(i);if(tmpDate.getDay()===0){return i;}}
throw("Could not find last sunday from:"+on);}
var index=on.indexOf(">");var dayStr=on.substring(0,index);var dayOfWeek=this.dayOfWeekStr2Num[dayStr];var num=on.substring(index+2);var count=0;for(i=num;i<32;++i){tmpDate.setDate(i);if(tmpDate.getMonth()!=month){break;}
if(tmpDate.getDay()==dayOfWeek){return i;}}
throw("Could not getDayOfMonth with args -> year:"+year+", month:"+
aMonth+", on:"+on);},_convertGMT:function(result,tzData,aYear,aMonth,aDayOfMonth,aHourOfDay,aMinute,aSecond,gmt2tz){var year=aYear;var month=aMonth;var dayOfMonth=aDayOfMonth;var hourOfDay=aHourOfDay;var minute=aMinute;var second=aSecond;var offsetHour=result.offsetHour;var offsetMinute=result.offsetMinute;var offsetSecond=result.offsetSecond;var saveHour=result.saveHour;var sign=1;if(result.offsetHour<0){sign=-1;}
if(!gmt2tz){sign*=-1;offsetHour*=-1;offsetMinute*=-1;offsetSecond*=-1;saveHour*=-1;}
second+=offsetSecond;if(second>59){second=second-60;minute+=1;}
else if(second<0){minute-=1;second+=60;}
minute+=offsetMinute;if(minute>59){minute=minute-60;hourOfDay+=1;}
else if(minute<0){hourOfDay-=1;minute+=60;}
hourOfDay+=offsetHour;hourOfDay+=saveHour;if(hourOfDay>23){hourOfDay=hourOfDay-24;dayOfMonth+=1;}
else if(hourOfDay<0){dayOfMonth-=1;hourOfDay+=24;}
var dayMax=this.getMonthDayMax(year,month);if(dayOfMonth>dayMax){dayOfMonth=dayMax-dayOfMonth;month+=1;}
else if(dayOfMonth<0){month-=1;dayOfMonth+=dayMax;}
if(month>12){month=month-12;year+=1;}
else if(month<0){year-=1;month+=12;}
result.year=year;result.month=month;result.dayOfMonth=dayOfMonth;result.hourOfDay=hourOfDay;result.minute=minute;result.second=second;},createMenu:function(items,isDisabled){var disabled=false;if(isDisabled){disabled=true;}
var menu=items;if(items instanceof Array){menu=new DlVMenu({className:"Sw2-PopupMenu"});items.foreach(function(el){if(el=="-"){menu.addSeparator();}else if(el instanceof DlWidget){menu.appendWidget(el);}else{var id=el.id;if(!id){id=el.label.replace(/[^a-z0-9_\-]/gi,"");id=id.toLowerCase();}
var item=new DlMenuItem({parent:menu,id:id,label:el.label,disabled:disabled,iconClass:el.iconClass});if(el.handler){item.addEventListener("onSelect",el.handler);}
if(el.items){item.setMenu(swApp.createMenu(el.items));}}});}
return menu;},createMenuTZ:function(items,selectHandler){var menu=items;if(items instanceof Array){menu=new DlVMenu({className:"Sw2-PopupMenu"});menu.addEventListener("onSelect",selectHandler);items.foreach(function(el){if(el=="-"){menu.addSeparator();}else{var item=null;if(el.id){var id=el.id;var label=el.label;var name=el.name;item=new DlMenuItem({parent:menu,id:el.id,label:el.label,name:el.name});if(el.id=="tzRecent"){swApp.tzRecentItem=item;}
if(el.id=="tzRecentTask"){swApp.tzRecentItemTask=item;}}
else{item=new DlMenuItem({parent:menu,label:el.label,name:el.name});}
if(el.items){item.setMenu(swApp.createMenuTZ(el.items,selectHandler));}}});}
return menu;},printLabel:function(){},selectedDate:function(){},getSetCategories:function(exclusive){if(!this.contactListSelectionModel){alert("Please select some contacts first.");return;}
var selected=this.contactListSelectionModel.getArray();if(!selected||selected.length===0){alert("Please select some contacts first.");return;}
var setCategoriesDialog=new DlDialog({modal:false,quitBtn:"destroy",title:"Set Contact Categories",resizable:true});var layout=new DlLayout({parent:setCategoriesDialog});var boxTitle=new DlHbox({borderSpacing:5});boxTitle.setAlign("center");var title=new DlLabel({parent:boxTitle,label:"Ensure The Selected Contacts Have Specific Categories"});var textArea=new DlEntry({type:"textarea"});var box=new DlHbox({borderSpacing:5});box.setAlign("center");var yes=new DlButton({parent:box,label:"<div style='width:5em'>"+
swApp.i18n("Set Categories")+"</div>"});var no=new DlButton({parent:box,label:"<div style='width:5em'>"+
swApp.i18n("Cancel")+"</div>"});layout.packWidget(boxTitle,{pos:"top"});layout.packWidget(textArea,{pos:"top",fill:"*"});layout.packWidget(box,{pos:"bottom"});layout.setSize({x:400,y:300});no.addEventListener("onClick",function(){setCategoriesDialog.destroy();});yes.addEventListener("onClick",function(){var text=textArea.getValue();var categoryL;if(text.length>0){categoryL=text.split(",");}
else{categoryL=[];}
setCategoriesDialog.destroy();this.setCategories(selected,categoryL,exclusive);}.$(this));setCategoriesDialog.centerOnParent();setCategoriesDialog.show();},removeCategoriesDlg:function(){if(!this.contactListSelectionModel){alert("Please select some contacts first.");return;}
var selected=this.contactListSelectionModel.getArray();if(!selected||selected.length===0){alert("Please select some contacts first.");return;}
var removeCategoriesDialog=new DlDialog({modal:false,quitBtn:"destroy",title:"Remove Contact Categories",resizable:true});var layout=new DlLayout({parent:removeCategoriesDialog});var boxTitle=new DlVbox({borderSpacing:5});var title=new DlLabel({parent:boxTitle,label:"Removes specific categories from the selected contacts."});title=new DlLabel({parent:boxTitle,label:"(type comma separated categories into the text area)"});var textArea=new DlEntry({type:"textarea"});var box=new DlHbox({borderSpacing:5});box.setAlign("center");var yes=new DlButton({parent:box,label:"<div style='width:5em'>"+
swApp.i18n("Remove Categories")+"</div>"});var no=new DlButton({parent:box,label:"<div style='width:5em'>"+
swApp.i18n("Cancel")+"</div>"});layout.packWidget(boxTitle,{pos:"top"});layout.packWidget(textArea,{pos:"top",fill:"*"});layout.packWidget(box,{pos:"bottom"});layout.setSize({x:400,y:300});no.addEventListener("onClick",function(){removeCategoriesDialog.destroy();});yes.addEventListener("onClick",function(){var text=textArea.getValue();var categoryL;if(text.length>0){categoryL=text.split(",");}
else{categoryL=[];}
removeCategoriesDialog.destroy();swApp.removeCategories(selected,categoryL);}.$(this));removeCategoriesDialog.centerOnParent();removeCategoriesDialog.show();textArea.focus();},getLicenseI18n:function(){var licenseType;var licenseI18n=this.syncSWorld.userSettingsDTO.accountType;if(!licenseI18n){licenseI18n="F";}
if(licenseI18n=='F'){licenseType=this.i18n("Free trial")+".";}
else if(licenseI18n=='S'){licenseType=this.i18n("ScheduleWorld only - iMAP is not enabled")+".";}
else if(licenseI18n=='M'){licenseType=this.i18n("ScheduleWorld + iMAP is enabled")+".";}
else{}
return licenseType;},getSyncValidUntil:function(){var accountValidEnd=this.syncSWorld.userSettingsDTO.accountValidEnd;var end=new Date(accountValidEnd);var dateFormat=this.getDateFormat();return end.print(dateFormat);},getIMAPValidUntil:function(){var xuhekiValidEnd=this.syncSWorld.userSettingsDTO.xuhekiValidEnd;var end=new Date(xuhekiValidEnd);var dateFormat=this.getDateFormat();return end.print(dateFormat);},getLicenseStarti18n:function(){var dateFormat=this.getDateFormat();var tmpDate=new Date();var licenseStart;if(this.syncSWorld.userSettingsDTO.accountValidStart){tmpDate.setTime(this.syncSWorld.userSettingsDTO.accountValidStart);licenseStart=tmpDate.print(dateFormat);}
else{licenseStart=this.i18n("None.");}
return licenseStart;},getLicenseExpiresI18n:function(){var dateFormat=this.getDateFormat();var tmpDate=new Date();var licenseExpires;if(swApp.syncSWorld.userSettingsDTO.accountValidEnd){tmpDate.setTime(swApp.syncSWorld.userSettingsDTO.accountValidEnd);licenseExpires=tmpDate.print(dateFormat);}
else{licenseExpires=swApp.i18n("None.");}
return licenseExpires;},purchase:function(){window.open('https://www.scheduleworld.com/sw2/em/items/iwp2840018-1.html','mywindow','width=800,height=600,toolbar=yes,location=yes,directories=yes,status=yes,menubar=yes,scrollbars=yes,copyhistory=yes,resizable=yes');if(true){return;}
this.isPurchasing=true;var date=new Date();var now=date.getTime();var accountValidEnd=this.syncSWorld.userSettingsDTO.accountValidEnd;var licenseExpires=this.getLicenseExpiresI18n();var hrefLC=window.location.href.toLowerCase();var cont;var box;if(hrefLC.indexOf("http:")>=0){var questionDlg=new DlDialog({modal:false,title:"Redirect To Secure HTTPS?"});cont=new DlContainer({parent:questionDlg});cont.setSize({x:400});cont.setContent("<div style='padding: 20px'>You must switch to HTTPS so your purchase is secure.</div>");box=new DlHbox({parent:cont,borderSpacing:5});box.setAlign("center");var yes=new DlButton({parent:box,label:"<div style='width:12em'>"+
swApp.i18n("Switch to HTTPS")+"</div>"});var no=new DlButton({parent:box,label:"<div style='width:5em'>"+
swApp.i18n("Cancel")+"</div>"});yes.addEventListener("onClick",function(){questionDlg.destroy();window.location=window.location.href.replace("http:","https:");});no.addEventListener("onClick",function(){questionDlg.destroy();});questionDlg.centerOnParent();questionDlg.show();return;}
clearTimeout(swApp.syncSWorld.autoSyncTimer);var purchaseDialog=new DlDialog({modal:true,title:"Purchase ScheduleWorld Service"});cont=new DlContainer({parent:purchaseDialog,className:"bgwhite"});cont.setSize({x:360});var syncValidUntil=this.getSyncValidUntil();var imapValidUntil=this.getIMAPValidUntil();cont.setContent("<div style='padding: 5px'><img src='/sw2/images/logo.png'/><img src='/sw2/images/scheduleworld.png'/></div>"+"<div style='padding: 5px'><b>Sync license valid until:</b> "+syncValidUntil+"</div>"+"<div style='padding: 5px'><b>IMAP license valid until:</b> "+
imapValidUntil+"</div>");box=new DlHbox({parent:cont,borderSpacing:15});box.setAlign("center");var purchaseButton=new DlButton({parent:box,label:"<div style='width:5em'>"+swApp.i18n("Purchase")+"</div>"});this.childCloseCheck=function(){if(swApp.purchaseWindow.closed){swApp.syncSWorld.eventSync();}
else{setTimeout(swApp.childCloseCheck,1000);}};purchaseButton.addEventListener("onClick",function(){purchaseDialog.destroy();var windowProps='width=900,height=620,status=yes,scrollbars=1';var hrefLC=window.location.href.toLowerCase();if(hrefLC.indexOf("scheduleworld")>=0){this.purchaseWindow=window.open("/sw2/purchase.html","Purchase",windowProps);this.childCloseCheck();return;}
this.purchaseWindow=window.open("/sw2/purchaseDev.html","Purchase",windowProps);this.childCloseCheck();}.$(this));var cancel=new DlButton({parent:box,label:"<div style='width:5em'>"+
swApp.i18n("Cancel")+"</div>"});cancel.addEventListener("onClick",function(){purchaseDialog.destroy();});purchaseDialog.centerOnParent();purchaseDialog.show();},removeAccount:function(){var removeAccountDialog=new DlDialog({modal:true,title:"Delete Your ScheduleWorld Account"});var cont=new DlContainer({parent:removeAccountDialog,className:"bgwhite"});cont.setSize({x:360});cont.setContent("<div style='padding: 15px'><img src='/sw2/images/logo.png'/><img src='/sw2/images/scheduleworld.png'/></div>"+"<div style='padding: 15px'><b>Are you sure you want to delete your account?</b></div>");var box=new DlHbox({parent:cont,borderSpacing:15});var label=new DlLabel({parent:box,label:"Confirm Password:"});var entry=new DlEntry({parent:box,type:"password"});var rBox=new DlHbox({parent:cont,borderSpacing:15});var rLabel=new DlLabel({parent:rBox,label:"Reason (optional):"});var reason=new DlEntry({parent:rBox,type:"textarea",rows:5,fillParent:true,emptyText:"Please enter a reason why you want your account deleted."});box=new DlHbox({parent:cont,borderSpacing:15});box.setAlign("center");var removeAcctButton=new DlButton({parent:box,label:"<div style='width:10em'>"+swApp.i18n("Delete Account")+"</div>"});var doRemove=function(){var entryPassword=entry.getValue();if(entryPassword.length===0){alert("Missing password.");return;}
if(entryPassword!=swApp.syncSWorld.password){alert("Incorrect password.");return;}
var success=function(response){try{swApp.syncSWorld.wipeStorage();}catch(ex){alert("Failed to clear the offline cache.");}
removeAccountDialog.destroy();window.location.assign("/sw2/index.html");};var failed=function(response){alert("Failed:"+resonse);};var command={};command.urlArgs={};command.urlArgs.cmd="xuheki";command.reason=reason.getValue();swApp.syncSWorld.sendRequest(command,"removeUser",success,failed);};removeAcctButton.addEventListener("onClick",doRemove.$(this));entry.addEventListener("onKey-ENTER",function(){doRemove();}.$(this));var cancel=new DlButton({parent:box,label:"<div style='width:5em'>"+
swApp.i18n("Cancel")+"</div>"});cancel.addEventListener("onClick",function(){removeAccountDialog.destroy();});removeAccountDialog.centerOnParent();removeAccountDialog.show();},createTopView:function(){this.topHboxCont=new DlContainer({className:"Sw2-TopHboxCont"});this.topHbox=new DlHbox({className:"Sw2-TopHbox",parent:this.topHboxCont});var bar=new DlHMenu({parent:this.topHbox});var file_items=[{label:"Logout",iconClass:"IconLogout",handler:swApp.logout}];var file=new DlMenuItem({parent:bar,label:"File"});file.setMenu(swApp.createMenu(file_items));var tools_items=[{label:"Export",items:[{label:"Events and Tasks",handler:swApp.exportCalendar},"-",{label:"Contacts",handler:swApp.exportContacts,disabled:true},"-",{label:"Notes",handler:swApp.exportNotes,disabled:true}]},{label:"Import",items:[{label:"iCalendar 2.0",iconClass:"IconFileOpen",handler:swApp.importCalendar},"-",{label:"VCard Contacts",iconClass:"IconFileSave",handler:swApp.importContacts.$(this,"vcard")},{label:"LDIF Contacts",iconClass:"IconFileSave",handler:swApp.importContacts.$(this,"ldif")}]},"-",{label:"Sync",items:[{label:"Events and Tasks",items:[{label:"Normal two-way",handler:swApp._syncEventsAndTasks.$(swApp,swApp.syncSWorld.SYNC_NORMAL)},{label:"Replace local",handler:swApp._syncEventsAndTasks.$(swApp,swApp.syncSWorld.SYNC_REPLACE_LOCAL_DATA)},{label:"Replace server",handler:swApp._syncEventsAndTasks.$(swApp,swApp.syncSWorld.SYNC_REPLACE_SERVER_DATA)},{label:"Slow merge",handler:swApp._syncEventsAndTasks.$(swApp,swApp.syncSWorld.SYNC_SLOW)}]},{label:"Contacts",items:[{label:"Normal two-way",handler:swApp.syncContacts.$(swApp,swApp.syncSWorld.SYNC_NORMAL)},{label:"Replace local",handler:swApp.syncContacts.$(swApp,swApp.syncSWorld.SYNC_REPLACE_LOCAL_DATA)},{label:"Replace server",handler:swApp.syncContacts.$(swApp,swApp.syncSWorld.SYNC_REPLACE_SERVER_DATA)},{label:"Slow merge",handler:swApp.syncContacts.$(swApp,swApp.syncSWorld.SYNC_SLOW)}]},{label:"Notes",items:[{label:"Normal two-way",handler:swApp.syncNotes.$(swApp,swApp.syncSWorld.SYNC_NORMAL)},{label:"Replace local",handler:swApp.syncNotes.$(swApp,swApp.syncSWorld.SYNC_REPLACE_LOCAL_DATA)},{label:"Replace server",handler:swApp.syncNotes.$(swApp,swApp.syncSWorld.SYNC_REPLACE_SERVER_DATA)},{label:"Slow merge",handler:swApp.syncNotes.$(swApp,swApp.syncSWorld.SYNC_SLOW)}]}]},"-",{label:"Set Categories",iconClass:"IconEditPaste",handler:swApp.getSetCategories.$(swApp,false)},{label:"Set Exclusive Categories",iconClass:"IconEditPaste",handler:swApp.getSetCategories.$(swApp,true),disabled:true},{label:"Remove Categories",iconClass:"IconEditPaste",handler:swApp.removeCategoriesDlg.$(swApp,true),disabled:true},"-",{label:"Purchase",handler:swApp.purchase.$(swApp,false)},"-",{label:"Delete Account",handler:swApp.removeAccount.$(swApp,false)},"-",{label:"Browser Test",items:[{label:"Speed",handler:swApp.speedTest}]}];var tools=new DlMenuItem({parent:bar,label:"Tools"});tools.setMenu(swApp.createMenu(tools_items));var help_items=[{label:"About",iconClass:"IconLogo16",handler:swApp.helpAbout}];var help=new DlMenuItem({parent:bar,label:"Help"});help.setMenu(swApp.createMenu(help_items));this.topHbox.addFiller();this.syncSpinner=new DlButton({parent:this.topHbox,iconClass:"IconSpinner",noCapture:true});this.syncSpinner.display(false);this.syncSWorld.addSyncStartListener(this.syncStart.$(this));this.syncSWorld.addSyncStopListener(this.syncStop.$(this));this.syncSWorld.addGeneralSettingsChangedListener(this.handleGeneralSettingsChanged.$(this));this.toolbarClasses={active:"DlButton-active",hover:"DlButton-hover",checked:"DlButton-1",unchecked:"DlButton-0",empty:"DlButton-empty",disabled:"DlButton-disabled"};this.toolbarNotebook=new DlNotebook({className:"DlToolbar Sw2-ToolbarNotebook"});this.toolbarNotes=new DlHbox({parent:this.toolbarNotebook,className:"Sw2-Buttons-48x48"});this.toolbarCalendar=new DlHbox({parent:this.toolbarNotebook,className:"Sw2-Buttons-48x48"});this.toolbarContacts=new DlHbox({parent:this.toolbarNotebook,className:"Sw2-Buttons-48x48"});this.toolbarTasks=new DlHbox({parent:this.toolbarNotebook,className:"Sw2-Buttons-48x48"});this.toolbarPrefs=new DlHbox({parent:this.toolbarNotebook,className:"Sw2-Buttons-48x48"});this.toolbarBackup=new DlHbox({parent:this.toolbarNotebook,className:"Sw2-Buttons-48x48"});this.prefsSaveButton=new DlButton({parent:this.toolbarPrefs,iconClass:"IconWrite2DiskAndServer",classes:this.toolbarClasses,tooltip:this.i18n("Save Settings")});this.toolbarPrefs.addFiller();this.toolbarNotebook.showPane(0);},syncStart:function(){this.syncSpinner.display(true);},syncStop:function(){this.syncSpinner.display(false);},handleGeneralSettingsChanged:function(){},_syncEventsAndTasks:function(mode){var result;if(mode==swApp.syncSWorld.SYNC_REPLACE_SERVER_DATA){result=confirm("Replace your server events and tasks with\nyour browser's cached data?");if(!result){return;}}
if(mode==swApp.syncSWorld.SYNC_REPLACE_LOCAL_DATA){result=confirm("Replace your browser's cached events and tasks\nwith data from the server?");if(!result){return;}
var IDL=this.eventCache.getIDs();this.eventCache.remove(IDL,true,true);if(this.taskCache){IDL=this.taskCache.getIDs();this.taskCache.remove(IDL,true,true);}}
this.syncSWorld.eventAndTodoSync(mode);},_syncTodos:function(mode){this.syncSWorld.todoSync(mode);},syncContacts:function(mode){var result;if(mode==swApp.syncSWorld.SYNC_REPLACE_SERVER_DATA){result=confirm("Replace your server contacts with\nyour browser's cached data?");if(!result){return;}}
if(mode==swApp.syncSWorld.SYNC_REPLACE_LOCAL_DATA){result=confirm("Replace your browser's cached contacts\nwith data from the server?");if(!result){return;}}
this.syncSWorld.contactSync(mode);},syncNotes:function(mode){var result;if(mode==swApp.syncSWorld.SYNC_REPLACE_SERVER_DATA){result=confirm("Replace your server notes with\nyour browser's cached data?");if(!result){return;}}
if(mode==swApp.syncSWorld.SYNC_REPLACE_LOCAL_DATA){result=confirm("Replace your browser's cached notes\nwith data from the server?");if(!result){return;}}
this.syncSWorld.noteSync(mode);},logout:function(){var result=confirm("Delete all cached data?");if(!result){return;}
swApp.syncSWorld.wipeStorage();swApp.syncSWorld.disableSave=true;var url="indexDev.html";var hrefLC=window.location.href.toLowerCase();if(hrefLC.indexOf("scheduleworld")>=0){url="index.html";}
window.location=url;},helpAbout:function(){var aboutDialog=new DlDialog({modal:false,title:"About ScheduleWorld"});var syncValidUntil=swApp.getSyncValidUntil();var imapValidUntil=swApp.getIMAPValidUntil();var cont=new DlContainer({parent:aboutDialog,className:"bgwhite"});cont.setSize({x:300});cont.setContent("<div style='padding: 5px'><img src='/sw2/images/logo.png'/><img src='/sw2/images/scheduleworld.png'/></div>"+"<div style='padding: 5px'><b>Copyright 2008, 2009, 2010</b></div>"+"<div style='padding: 5px'><b>Version:</b> "+swApp.syncSWorld.clientVersion+"</div>"+"<div style='padding: 5px'><b>User ID:</b> "+swApp.syncSWorld.userSettingsDTO.calUserID+"</div>"+"<div style='padding: 5px'><b>Sync license valid until:</b> "+syncValidUntil+"</div>"+"<div style='padding: 5px'><b>IMAP license valid until:</b> "+
imapValidUntil+"</div>");var box=new DlHbox({parent:cont,borderSpacing:15});box.setAlign("center");var ok=new DlButton({parent:box,label:"<div style='width:5em'>"+
swApp.i18n("Ok")+"</div>"});ok.addEventListener("onClick",function(){aboutDialog.destroy();});aboutDialog.centerOnParent();aboutDialog.show();},importCalendar:function(){swApp.importCalendarDialog=new DlDialog({modal:false,quitBtn:"destroy",title:"Import iCalendar 2.0 Data"});var cont=new DlContainer({parent:swApp.importCalendarDialog});cont.setSize({x:300});var iCalendarID=swApp.syncSWorld.userSettingsDTO.sw2DefaultICalendarID;if(!iCalendarID){iCalendarID=swApp.eventCache.getDefaultCalendar();}
var clientNonce=swApp.syncSWorld.syncSWorldPrefs.clientNonce;var deviceID=swApp.syncSWorld.syncSWorldPrefs.deviceID;var password=hex_sha256(swApp.syncSWorld.sessionID+clientNonce);var options=[];var iCalendarInfoL=swApp.syncSWorld.userSettingsDTO.ICalendarInfoL;for(var i=0;i<iCalendarInfoL.length;++i){var iCalendarInfo=iCalendarInfoL[i];options.push({label:iCalendarInfo.name,value:iCalendarInfo.ICalendarID});}
var box2=new DlHbox({borderSpacing:5});box2.setAlign("center");var calendarSelect=new DlRadioSelect({parent:box2,options:options,value:iCalendarID});calendarSelect.addEventListener("onChange",function(oldValue,newValue){var hiddenICalendarID=document.getElementById("hiddenICalendarID");hiddenICalendarID.value=newValue.substring(2);}.$(this));cont.setContent("<form method='post' enctype='multipart/form-data' target='upload_target' action='"+"/sw2/importICalendarServlet'>"+"<iframe onload='window.calIframeLoad(); return false;' id='upload_target' name='upload_target' src='#' style='width:0;height:0;border:0px solid #fff;'></iframe>"+"<div style='padding: 5px'>Imported events and tasks will be merged into the selected calendar.</div>"+"<div id='icalSelectID'></div>"+"<input type='hidden' name='calUserID' value='"+
swApp.syncSWorld.userSettingsDTO.calUserID+"'/>"+"<input type='hidden' name='password' value='"+
password+"'/>"+"<input type='hidden' name='clientNonce' value='"+
clientNonce+"'/>"+"<input type='hidden' name='deviceID' value='"+
deviceID+"'/>"+"<input type='hidden' name='iCalendarID' id='hiddenICalendarID' value='"+
iCalendarID.substring(2)+"'/>"+"<center>"+"<input type='file' name='iCalendarFile'/>"+"<input id='uploadSubmit' type='submit' name='action' value='Upload'/>"+"</center>"+"<center>"+"Events uploaded: <label id='eventsUploaded' style='display:none'>0</label>"+"&nbsp;&nbsp;&nbsp;Tasks uploaded: <label id='tasksUploaded' style='display:none'>0</label>"+"</center>"+"</form>");var calSelContent=box2.getContentElement();var icalSelect=document.getElementById("icalSelectID");icalSelect.appendChild(calSelContent);swApp.importCalendarDialog.centerOnParent();swApp.importCalendarDialog.show();},importContacts:function(type){swApp.importContactsDialog=new DlDialog({modal:false,quitBtn:"destroy",title:"Import contact VCARD 2.1 or 3.0 Data"});var cont=new DlContainer({parent:swApp.importContactsDialog});cont.setSize({x:300});var clientNonce=swApp.syncSWorld.syncSWorldPrefs.clientNonce;var deviceID=swApp.syncSWorld.syncSWorldPrefs.deviceID;var password=hex_sha256(swApp.syncSWorld.sessionID+clientNonce);var charsetEncoding="UTF-8";cont.setContent("<form method='post' enctype='multipart/form-data' target='vcard_upload_target' action='"+"/sw2/importContactsServlet'>"+"<iframe onload='window.contactIframeLoad(); return false;' id='vcard_upload_target' name='vcard_upload_target' src='#' style='width:0;height:0;border:0px solid #fff;'></iframe>"+"<input type='hidden' name='calUserID' value='"+
swApp.syncSWorld.userSettingsDTO.calUserID+"'/>"+"<input type='hidden' name='password' value='"+
password+"'/>"+"<input type='hidden' name='clientNonce' value='"+
clientNonce+"'/>"+"<input type='hidden' name='deviceID' value='"+
deviceID+"'/>"+"<input type='hidden' name='type' value='"+
type+"'/>"+"<input type='hidden' name='charsetEncoding' value='"+
charsetEncoding+"'/>"+"<center>"+"<input type='file' name='vcardFile'/>"+"<input id='contactUploadSubmit' type='submit' name='action' value='Upload Contacts'/>"+"</center>"+"<center>"+"Contacts uploaded: <label id='contactsUploaded' style='display:none'>0</label>"+"</center>"+"</form>");swApp.importContactsDialog.centerOnParent();swApp.importContactsDialog.show();},exportCalendar:function(){var questionDlg=new DlDialog({modal:false,quitBtn:"destroy",title:"Export A Calendar"});var cont=new DlContainer({parent:questionDlg});cont.setSize({x:400});cont.setContent("<div style='padding: 20px'><b>Select the calendar you want to download.</b></div>");var options=[];if(swApp.syncSWorld.userSettingsDTO){var iCalendarInfoL=swApp.syncSWorld.userSettingsDTO.ICalendarInfoL;for(var i=0;i<iCalendarInfoL.length;++i){var iCalendarInfo=iCalendarInfoL[i];options.push({label:iCalendarInfo.name,value:iCalendarInfo.ICalendarID});}}
var box2=new DlHbox({parent:cont,borderSpacing:5});box2.setAlign("center");var calendarSelect=new DlRadioSelect({parent:box2,options:options,value:swApp.eventCache.getDefaultCalendar()});var box=new DlHbox({parent:cont,borderSpacing:5});box.setAlign("center");var yes=new DlButton({parent:box,label:"<div style='width:5em'>"+
swApp.i18n("Download")+"</div>"});var no=new DlButton({parent:box,label:"<div style='width:5em'>"+
swApp.i18n("Cancel")+"</div>"});no.addEventListener("onClick",function(){questionDlg.destroy();});yes.addEventListener("onClick",function(){questionDlg.destroy();var command={};command.iCalendarID=calendarSelect.getValue().substring(2);command.clientNonce=swApp.syncSWorld.syncSWorldPrefs.clientNonce;command.deviceID=swApp.syncSWorld.syncSWorldPrefs.deviceID;command.password=hex_sha256(swApp.syncSWorld.sessionID+
swApp.syncSWorld.syncSWorldPrefs.clientNonce);var xml=Sarissa.xmlize(command,"getICalendar");var iframeDL=document.getElementById("dl");iframeDL.onload=window.pingIframeLoad;iframeDL.src="/sw2/commandV3?user="+swApp.syncSWorld.username+"&command="+encodeURIComponent(xml);window.pingIframeLoad();});questionDlg.centerOnParent();questionDlg.show();},exportContacts:function(){var command={};command.clientNonce=swApp.syncSWorld.syncSWorldPrefs.clientNonce;command.deviceID=swApp.syncSWorld.syncSWorldPrefs.deviceID;command.password=hex_sha256(swApp.syncSWorld.sessionID+
swApp.syncSWorld.syncSWorldPrefs.clientNonce);var xml=Sarissa.xmlize(command,"getContactsVCF");var iframeDL=document.getElementById("dl");iframeDL.onload=window.pingIframeLoad;iframeDL.src="/sw2/commandV3?user="+swApp.syncSWorld.username+"&command="+encodeURIComponent(xml);window.pingIframeLoad();},getDateFormat:function(){var dateFormat="%Y/%m/%d";var sw2DateFormat=swApp.syncSWorld.userSettingsDTO.sw2DateFormat;if(sw2DateFormat=="d/m/yyyy"){dateFormat="%d/%m/%Y";}
else if(sw2DateFormat=="m/d/yyyy"){dateFormat="%m/%d/%Y";}
else if(sw2DateFormat=="yyyy-m-d"){dateFormat="%Y-%m-%d";}
else{dateFormat="%b %e, %Y";}
return dateFormat;},formatDate:function(year,month,dayOfMonth){var dateFormat=swApp.getDateFormat();var date=new Date();date.setDate(1);date.setMonth(month-1);date.setFullYear(year);date.setDate(dayOfMonth);return date.print(dateFormat);},formatHHMM:function(hours,minutes){var useAmPm=this.syncSWorld.userSettingsDTO.ampm;var sb=String.buffer();if(!useAmPm&&hours<10){sb("0");}
var displayHours=hours;if(useAmPm){if(displayHours>12){displayHours-=12;}}
sb(displayHours);sb(":");if(minutes<10){sb("0");}
sb(minutes);if(useAmPm){sb(" ");if(hours>11){sb(swApp.locale.ampm[1]);}
else{sb(swApp.locale.ampm[0]);}}
return sb.get();},recalculateEndWork:function(year,month,dayOfMonth,hourOfDay,minute,second,durationMinutes,durationHours,durationDays){var end={};end.year=year;end.month=month;end.dayOfMonth=dayOfMonth;end.hourOfDay=hourOfDay;end.minute=minute;end.second=second;end.minute+=durationMinutes;end.minute+=durationHours*60;end.minute+=durationDays*1440;if(end.minute>59){end.hourOfDay+=Math.floor(end.minute/60);end.minute=end.minute%60;if(end.hourOfDay>23){end.dayOfMonth+=Math.floor(end.hourOfDay/24);end.hourOfDay=end.hourOfDay%24;}
var dayMax=swApp.getMonthDayMax(year,month);if(end.dayOfMonth>dayMax){end.month+=Math.floor(end.dayOfMonth/dayMax);end.dayOfMonth=end.dayOfMonth%dayMax;}
if(end.month>12){end.year+=Math.floor(end.month/12);end.month=end.month%12;}}
return end;},subtractMinutes:function(year,month,dayOfMonth,hourOfDay,minute,second,durationMinutes){var result={};result.year=year;result.month=month;result.dayOfMonth=dayOfMonth;result.hourOfDay=hourOfDay;result.minute=minute;result.second=second;result.minute=minute-durationMinutes;if(result.minute>=0){return result;}
result.hourOfDay+=result.minute/60;},canSyncGoogle:function(){if(this.syncSWorld.userSettingsDTO.accountValidEnd){var now=new Date().getTime();if(now<this.syncSWorld.userSettingsDTO.accountValidEnd){return true;}}
return false;},canUseXuheki:function(){if(this.syncSWorld.userSettingsDTO.xuhekiValidEnd){var now=new Date().getTime();if(now<this.syncSWorld.userSettingsDTO.xuhekiValidEnd){return true;}}
return false;},xuhekiEmailCompose:function(link){if(this.canUseXuheki()){Mail.NeedToOperate(function(){var email=link.getAttribute("sw2-email");var contact=this.contactCache.getByEmail(email);if(contact){email=contact.getEmailWithName(email);}
Mail.compose(email);}.$(this));return false;}},changePasswordSW2EM:function(callback){var cpSuccess=function(response){if(response.swuserid){swApp.syncSWorld.userSettingsDTO.swuserid=response.swuserid;swApp.syncSWorld.userSettingsDTO.emailSalt=true;swApp.syncSWorld.saveUserSettingsDTO(callback);}};var failCallback=function(){alert("Failed to change password.");callback();};var request={};request.em=true;delete swApp.syncSWorld.userSettingsDTO.swuserid;request.command="changePasswordSW2EM";swApp.syncSWorld.sendRequest(request,null,cpSuccess.$(this),failCallback.$(this));},i18n:function(key){var value=i18n_data[key];if(value){return value;}
return key;},loggingEnabled:true,log:function(message){if(typeof dump=='function'){dump(message+"\n");}
if(typeof console=='undefined'){return;}
if(typeof console.log!='function'){return;}
console.log.apply(console,arguments);},logEX:function(ex){var message=ex;if(ex.stack){message=ex.stack;}
if(typeof dump=='function'){dump(message+"\n");}
if(typeof console=='undefined'){return;}
if(typeof console.log!='function'){return;}
console.log.apply(console,arguments);},trace:function(){},speedTest:function(){var tz="America/Toronto";var year=2008;var month=6;var dayOfMonth=15;var hourOfDay=10;var minute=0;var second=0;var start=new Date();var xx;for(xx=0;xx<15000;++xx){var result=swApp.convertTZ2GMT(tz,year,month,dayOfMonth,hourOfDay,minute,second);}
var end=new Date();alert("Time Zone calculation iterations:"+xx+", time (ms):"+
(end.getTime()-start.getTime())+"\nReference: 2.4GHz Intel 6600/FireFox 3.0 ~= 720ms - 790ms");tz="Europe/Berlin";result=swApp.convertTZ2GMT(tz,year,month,dayOfMonth,hourOfDay,minute,second);}};function printStackTrace(options){}
printStackTrace.implementation=function(){};printStackTrace.implementation.prototype={};SWApp.prototype.notesView=function(idL){document.title=this.i18n("ScheduleWorld Notes");if(!this.leftNotebook.display()){this.leftNotebook.display(true);this.desktopResizeBar.display(true);this.toolbarNotebook.display(true);this.desktopLayout.doLayout();}
var displayIDs;var children=this.notesContainerL.children();if(children&&children.length>0){if(idL&&idL.length>0){displayIDs=idL;}
else{displayIDs=this.noteCache.getIDs();}
this.noteGrid.resetIDS(displayIDs);var prev=this.noteGrid.__sortCol;if(prev){if(this.noteGrid.__sortRev){this.noteGrid._onHeadClick(this.noteGrid.getCol(prev),null);this.noteGrid._onHeadClick(this.noteGrid.getCol(prev),null);}
else{delete this.noteGrid.__sortCol;this.noteGrid._onHeadClick(this.noteGrid.getCol(prev),null);}}
this.noteGrid.displayPage(0);this.leftNotebook.showPane(this.NOTES_PAGE);this.rightNotebook.showPane(this.NOTES_PAGE);this.toolbarNotebook.showPane(this.TOOLBAR_NOTES_PAGE);return;}
var createButton=new DlButton({parent:this.toolbarNotes,iconClass:"ToolbarPostit",classes:this.toolbarClasses,tooltip:this.i18n("Quickly Create a Note")});var deleteButton=new DlButton({parent:this.toolbarNotes,iconClass:"ToolbarDelete",classes:this.toolbarClasses,tooltip:this.i18n("Delete")});var syncButton=new DlButton({parent:this.toolbarNotes,iconClass:"ToolbarSync",classes:this.toolbarClasses,tooltip:this.i18n("Sync Notes")});var searchButton=new DlButton({parent:this.toolbarNotes,iconClass:"ToolbarSearch",classes:this.toolbarClasses,tooltip:this.i18n("Search Notes")});this.toolbarNotes.addFiller();this.toolbarNotebook.showPane(this.TOOLBAR_NOTES_PAGE);createButton.addEventListener("onClick",function(){swApp.createQuickNote();});searchButton.addEventListener("onClick",function(){this.showNoteSearchDialog();}.$(this));deleteButton.addEventListener("onClick",function(){var array=this.noteListSelectionModel.getArray();if(array.length===0){return;}
if(array.length==1){this.noteCache.removeWithDialog(array[0]);}
else{this.noteCache.removeWithDialog(array);}}.$(this));syncButton.addEventListener("onClick",function(){swApp.syncSWorld.noteSync(swApp.syncSWorld.SYNC_NORMAL);});this.syncSWorld.addNoteSyncStopListener(this.noteSyncStop.$(this));var layout=new DlLayout({parent:this.notesContainerR});var top=new DlContainer({});var bottom=new DlContainer({});var bar=new DlResizeBar({widget:top,horiz:true,className:"Sw2-TopResizeBar"});var titleBoxCont=new DlContainer({className:"Sw2-MiniToolBar"});var titleBox=new DlHbox({parent:titleBoxCont});layout.packWidget(titleBoxCont,{pos:"top"});layout.packWidget(top,{pos:"top",fill:"60%",min:50});layout.packWidget(bar,{pos:"top"});layout.packWidget(bottom,{pos:"bottom",fill:"*"});var tmp=new DlLabel({label:"<b>Notes</b>",parent:titleBox});this.saveButton=new DlButton({label:"Save",parent:titleBox});this.saveButton.addEventListener("onClick",function(){var array=this.noteListSelectionModel.getArray();if(array.length==1){var luid=array[0];var swNote=this.noteCache.get(luid);swNote._data.syncSWorldNote.body=this.noteBody.getValue();swNote._data.syncSWorldNote.dirty=true;swApp.syncSWorld.noteSync();}
else{alert("Can only save if one note is selected.");}}.$(this));this.syncSWorld.addNoteAddedListener(this.noteCache.syncSWorldNoteAdded.$(this.noteCache,true));this.syncSWorld.addNoteUpdatedListener(this.noteCache.syncSWorldNoteUpdated.$(this.noteCache,true));this.syncSWorld.addNoteDeletedListener(this.noteCache.syncSWorldNoteDeleted.$(this.noteCache,true));this.syncSWorld.addNoteDeleteAllListener(this.noteCache.syncSWorldNoteDeleteAll.$(this.noteCache));this.noteListSelectionModel=new DlSelectionModel({});this.noteListSelectionModel.addEventListener(["onChange","onReset"],function(){var array=this.noteListSelectionModel.getArray();if(array.length==1){var luid=array[0];this.currentlySelected=luid;var swNote=this.noteCache.get(luid);if(swNote._data.syncSWorldNote.body){this.noteBody.setValue(swNote._data.syncSWorldNote.body.htmlEscape(),true);}
this.noteBody.disabled(false);}
else{this.noteBody.setValue("",true);this.noteBody.disabled(true);delete this.currentlySelected;}}.$(this));this.noteGrid=new SwDataGrid({parent:top,cols:this.noteCache.getColumns(),data:this.noteCache,rpp:45,virtualScrolling:true,fillParent:true,selection:this.noteListSelectionModel});this.noteGrid.resetIDS([]);if(!this.noteCache.isEmpty()){displayIDs=null;if(idL){displayIDs=idL;this.noteGrid.resetIDS(displayIDs);}
else{displayIDs=this.noteCache.getIDs();this.noteGrid.resetIDS(displayIDs);this.noteGrid._onHeadClick(this.noteGrid.getCol("subject"),null);}}
else{this.noteGrid.resetIDS([]);}
this.noteGrid.displayPage(0);var menu=new DlVMenu({});var mi1=new DlMenuItem({label:"Categories",name:"categories",parent:menu});var mi2=new DlMenuItem({label:"Color",name:"color",parent:menu});menu.addEventListener("onSelect",function(name,item,widget){var array=this.noteListSelectionModel.getArray()[0];if(array.length===0){return;}
var swNote=this.noteCache.get(this.currentlySelected);if(name=="categories"){this.editNoteCategories(swNote);}else if(name=="color"){this.editNoteColor(swNote);}}.$(this));this.noteGrid.setContextMenu(menu);var bodyLayout=new DlLayout({parent:bottom});this.noteBody=new DlEntry({disabled:true,type:"textarea"});this.noteBody.addEventListener("onChange",function(){if(!this.currentlySelected){return;}
var swNote=this.noteCache.get(this.currentlySelected);swNote._data.syncSWorldNote.body=this.noteBody.getValue();}.$(this));bodyLayout.packWidget(this.noteBody,{pos:"top",fill:"*"});var leftLayout=new DlLayout({parent:this.notesContainerL,outerSpace:5});this.leftVBox=new DlVbox({});tmp=new DlLabel({label:"<b>Notes</b>",parent:this.leftVBox});this.catCont=new DlContainer({scroll:true});this.noteCategoryGroup=DlRadioGroup.get();leftLayout.packWidget(this.leftVBox,{pos:"top",after:10});leftLayout.packWidget(this.catCont,{pos:"bottom",fill:"*"});this.leftNotebook.showPane(this.NOTES_PAGE);this.rightNotebook.showPane(this.NOTES_PAGE);this.syncSWorld.noteSync();};SWApp.prototype.notesToolbarView=function(){};SWApp.prototype.refreshNoteCategories=function(){this.noteCategoryGroup.reset();this.catCont.destroyChildWidgets();var tmp=new DlLabel({parent:this.catCont,label:"<b>"+this.i18n("Showing Categories:")+"</b>"});var luid;var note;var csCategories;var categoryS={};var categories;var i;for(luid in swApp.syncSWorld.swNoteModel){if(swApp.syncSWorld.swNoteModel.hasOwnProperty(luid)){note=swApp.syncSWorld.swNoteModel[luid];if(!note.categories){continue;}
categoryL=note.categories.split(",");for(i=0;i<categoryL.length;++i){if(categoryL[i].length>0){categoryS[categoryL[i]]=i;}}}}
i=0;for(var cat in categoryS){if(categoryS.hasOwnProperty(cat)){tmp=new DlCheckbox({parent:this.catCont,label:cat,value:cat,group:this.noteCategoryGroup,checked:true});++i;}}
tmp=new DlCheckbox({parent:this.catCont,label:"No Category",value:swApp.NO_CATEGORY,group:this.noteCategoryGroup,checked:true});this.noteCategoryGroup.maxChecked(i+1);this.noteCategoryGroup.addEventListener("onChange",function(){var selectedValueL=this.noteCategoryGroup.getValue();var values={};for(var i=0;i<selectedValueL.length;++i){values[selectedValueL[i].toLowerCase()]=i;}
var ids=this.noteCache.getIDsUsingCategories(values);this.notesView(ids);}.$(this));this.noteCategoryGroup.callHooks("onChange");};SWApp.prototype.createQuickNote=function(){var dlg=new DlDialog({title:swApp.i18n("Quickly Create A Note"),quitBtn:"destroy",resizable:true});var layout=new DlLayout({parent:dlg,outerSpace:2});var textArea=new DlEntry({type:"textarea",noWrap:true});var vbox=new DlVbox({});var categories=new DlEntry({parent:vbox,size:"30",emptyText:swApp.i18n("Comma separated categories")});var btn=new DlButton({parent:vbox,label:swApp.i18n("Create")});btn.addEventListener("onClick",function(){var text=textArea.getValue();if(!text||text.length===0){dlg.destroy();return;}
var note={};note.id=swApp.syncSWorld.getNextLUID();note.brandNew=true;note.dirty=true;note.categories=categories.getValue();note.body=text;var date=new Date();note.year=""+date.getFullYear();note.month=""+(date.getMonth()+1);note.dayOfMonth=""+date.getDate();note.hourOfDay=""+date.getHours();note.minute=""+date.getMinutes();note.second=""+date.getSeconds();swApp.syncSWorld.swNoteModel[note.id]=note;swApp.noteCache.syncSWorldNoteAdded(false,note);dlg.destroy();swApp.syncSWorld.noteSync();});layout.packWidget(vbox,{pos:"bottom",after:2});layout.packWidget(textArea,{pos:"left",fill:"*"});layout.setSize({x:300,y:200});dlg.centerOnParent();dlg.show();textArea.focus();};SWApp.prototype.copy2Note=function(destNote){};SWApp.prototype.showNoteSearchDialog=function(){var dlg=new DlDialog({title:"Search For A Note",quitBtn:"destroy"});var cont=new DlContainer({parent:dlg});cont.getElement().style.padding="20px";var fg=new DlFieldGrid({parent:cont});var tmp=fg.addField({name:"keys",label:"<b>Properties searched:</b>",widget:new DlLabel({label:"all properties."})});var summaryDlEntry=fg.addField({name:"searchText",label:"<b>Search text:</b>"});tmp=fg.addField({name:"keys",label:"",widget:new DlLabel({label:"(not case sensitive)"})});function addNote2Model(){var searchText=this.getValue();if(!searchText||searchText.length===0){return;}
var idL=swApp.noteCache.search(searchText);swApp.notesView(idL);dlg.destroy();}
summaryDlEntry.addEventListener("onKey-ENTER",addNote2Model);dlg.centerOnParent();dlg.show();summaryDlEntry.focus();};SWApp.prototype.noteSyncStop=function(){this.syncSpinner.display(false);this.refreshNoteCategories();};SWApp.prototype.editNoteCategories=function(swNote){var dlg=new DlDialog({title:"Edit Note Categories",quitBtn:"destroy"});var cont=new DlContainer({parent:dlg});cont.getElement().style.padding="20px";var tmp=new DlLabel({parent:cont,label:"(Comma separated)"});var fg=new DlFieldGrid({parent:cont});var catValue="";if(swNote.catgories){catValue=swNote.categories;}
var categoriesFG=fg.addField({name:"categories",label:"Categories:",value:catValue});function updateModel(){var categories=this.getValue();swNote.set("categories",categories);swApp.refreshNoteCategories();swApp.syncSWorld.noteSync();dlg.destroy();}
categoriesFG.addEventListener("onKey-ENTER",updateModel);dlg.centerOnParent();dlg.show();categoriesFG.focus();};SWApp.prototype.editNoteColor=function(){};(function(){var BASE=SwNote.inherits(DlRecord);function SwNote(args){if(args){DlRecord.call(this,args);}}
eval(Dynarch.EXPORT("SwNote"));D.DEFAULT_ARGS={};P.set=function(aKey,value,noHooks,setSWorldModel){var key=aKey;if(key=="id"){var val=BASE.get.call(this,key);if(val){throw("Note id is immutable and can not be changed to:"+
value);}}
this._data.syncSWorldNote[key]=value;this._data.syncSWorldNote.dirty=true;noHooks=false;return BASE.set.call(this,key,value,noHooks);};P.compareTo=function(rec,col){var a=this.get(col);if(a&&a.toLowerCase){a=a.toLowerCase();}
var b=rec.get(col);if(b&&b.toLowerCase){b=b.toLowerCase();}
return a<b?-1:a==b?0:1;};P.get=function(key){if(key=="id"){if(swApp.loggingEnabled){swApp.log("SwNote.get() id:"+this._data.id);}
return this._data.id;}
else if(key=='subject'){return this.getSubject();}
var value=this._data.syncSWorldNote[key];if(!value){value="";}
return value;};P.getSubject=function(){var body=this._data.syncSWorldNote.body;if(body){var index=body.indexOf("\n");if(index>0){var result=this._set._syncSWorld.trim(body.substring(0,index));if(result.length>80){return result.substring(0,80);}
return result;}
return body;}
return"";};P.getCreated=function(){return this._data.created;};P.recalculateCreated=function(){if(!this._data.syncSWorldNote.year){return"Missing.";}
var buffer=String.buffer();buffer(this._data.syncSWorldNote.year);buffer("-");if(this._data.syncSWorldNote.month<10){buffer("0");}
buffer(this._data.syncSWorldNote.month);buffer("-");if(this._data.syncSWorldNote.dayOfMonth<10){buffer("0");}
buffer(this._data.syncSWorldNote.dayOfMonth);this._data.created=buffer.get();};})();(function(){var BASE=SwNoteCache.inherits(DlRecordCache);function SwNoteCache(args){if(args){D.setDefaults(this,args);DlRecordCache.call(this,args);}}
eval(Dynarch.EXPORT("SwNoteCache"));D.DEFAULT_ARGS={_syncSWorld:["syncSWorld",null]};P.defaultColumns=[{id:"categories",label:"Categories",width:200},{id:"subject",label:"Subject",width:200},{id:"date",label:"Created",width:100},{id:"colorRGB",label:"Color",width:100}];P.clear=function(){var IDL=this.getIDs();if(IDL.length===0){return;}
var tmpID;this.callHooks("onDelete",IDL);for(var i=0;i<IDL.length;++i){tmpID=IDL[i];delete this._data[tmpID];}};P.getColumns=function(){if(!this.loadedColumns){var columnsKey=this.getColumnsStorageKey();this.loadedColumns=this._syncSWorld.loadObject(columnsKey);}
if(this.loadedColumns instanceof Array&&this.loadedColumns.length>0){return this.loadedColumns.slice();}
return this.defaultColumns.slice();};P.isEmpty=function(){if(!this._data){return true;}
for(var key in this._data){if(this._data.hasOwnProperty(key)){return false;}}
return true;};P.formatHTML=function(rec,col,buf){var values;if(col=="date"){buf(rec.getCreated());}
else if(col=="colorRGB"){values=rec.get(col);buf("<label style='background: "+values+"'>"+values+"</label>");}else{values=rec.get(col);if(values instanceof Array){buf(values.join(",").htmlEscape());}
else{buf(values.toString().htmlEscape());}}};P.getIDs=function(){var ids=[];for(var key in this._data){if(this._data.hasOwnProperty(key)){ids.push(key);}}
return ids;};P.initDataFromSyncSWorld=function(){var model=this._syncSWorld.swNoteModel;if(!model){return;}
for(var noteLUID in model){if(model.hasOwnProperty(noteLUID)){var noteData=model[noteLUID];this.syncSWorldNoteAdded(true,noteData);}}};P.syncSWorldNoteAdded=function(noHooks,noteObject){var swNote=new SwNote({data:{id:noteObject.id,syncSWorldNote:noteObject}});swNote.recalculateCreated();this.insert(swNote,noHooks);};P.syncSWorldNoteUpdated=function(noHooks,note){var swNote=this.get(note.id);swNote._data.syncSWorldNote=note;swNote.recalculateCreated();};P.syncSWorldNoteDeleted=function(noHooks,luid){this.removeUsingID(luid,noHooks);};P.syncSWorldNoteDeleteAll=function(){var ids=this.getIDs();this.removeUsingID(ids,true);};P.insert=function(swNote,noHooks){var where=this.getInsertPos(swNote);this._data[swNote.id()]=swNote;swNote._set=this;if(noHooks){return;}
this.applyHooks("onInsert",[swNote,where]);};P.removeUsingNote=function(swNote,noCallHooks){delete this._data[swNote.id()];if(!noCallHooks){this.callHooks("onDelete",swNote.id());}};P.removeUsingID=function(swNoteID,noCallHooks){if(swNoteID instanceof Array){for(var i=0;i<swNoteID.length;++i){var id=swNoteID[i];if(i==swNoteID.length-1){if(!noCallHooks){this.callHooks("onDelete",id);}}
delete this._data[id];}}
else{delete this._data[swNoteID];if(!noCallHooks){this.callHooks("onDelete",swNoteID);}}};P._init=function(){D.BASE._init.call(this);};P.removeWithDialog=function(id,noSyncAfterRemove){var swNote=null;var title="Delete Note";var content="";if(id instanceof Array){title="Delete Multiple Notes";var buffer=String.buffer();buffer("<textarea type='textarea' rows='8' style='width: 100%'>");for(var i=0;i<id.length;++i){swNote=this.get(id[i]);buffer(swNote.getSubject()+"\n");}
buffer("</textarea>");content=buffer.get();}
else{swNote=this.get(id);content="<div style='padding: 20px'><b>Delete note: "+
swNote.getSubject()+"</b></div>";}
var questionDlg=null;var cont=null;var box=null;var no=null;questionDlg=new DlDialog({modal:false,title:title,quitBtn:"destroy"});cont=new DlContainer({parent:questionDlg});cont.getElement().style.padding="20px";cont.setSize({x:400});cont.setContent(content);box=new DlHbox({parent:questionDlg,borderSpacing:5});box.setAlign("center");var deleteNote=new DlButton({parent:box,label:"<div style='width:9em'>"+
swApp.i18n("Delete")+"</div>"});no=new DlButton({parent:box,label:"<div style='width:5em'>"+
swApp.i18n("Cancel")+"</div>"});deleteNote.addEventListener("onClick",function(){questionDlg.destroy();if(id instanceof Array){for(var i=0;i<id.length;++i){swNote=this.get(id[i]);swApp.noteCache.removeUsingID(id[i],true);if(i==id.length-1){this._syncSWorld.removeNoteFromModel(swNote._data.syncSWorldNote,true);}
else{this._syncSWorld.removeNoteFromModel(swNote._data.syncSWorldNote,false);}}}
else{swApp.noteCache.removeUsingID(id);this._syncSWorld.removeNoteFromModel(swNote._data.syncSWorldNote,true);}
if(!noSyncAfterRemove){this._syncSWorld.noteSync(this._syncSWorld.SYNC_NORMAL);}
else{swApp.noteSyncStop();}}.$(this));no.addEventListener("onClick",function(){questionDlg.destroy();});questionDlg.centerOnParent();questionDlg.show();};P.getIDsUsingCategories=function(matchCategories){var ids=[];var categoryL;var luid;var note;var category;var csCategories;var prop;var value;var i;var aValue;for(luid in this._data){if(this._data.hasOwnProperty(luid)){note=this._data[luid]._data.syncSWorldNote;if(!note.categories||note.categories.length===0){if(matchCategories.hasOwnProperty(swApp.NO_CATEGORY)){ids.push(luid);}
continue;}
csCategories=note.categories;categoryL=csCategories.split(",");for(i=0;i<categoryL.length;++i){category=categoryL[i].toLowerCase();if(category.length===0&&matchCategories.hasOwnProperty(swApp.NO_CATEGORY)){ids.push(luid);continue;}
if(matchCategories.hasOwnProperty(category)){ids.push(luid);break;}}}}
return ids;};P.search=function(regex){var re=new RegExp(regex,"i");var ids=[];var luid;var data;var prop;var value;var i;var aValue;outer:for(luid in this._data){if(this._data.hasOwnProperty(luid)){data=this._data[luid]._data.syncSWorldNote;for(prop in data){if(data.hasOwnProperty(prop)){value=data[prop];if(typeof value.value!='undefined'){value=value.value;}
if(typeof value!='function'){var x=0;}
if(value instanceof Array){for(i=0;i<value.length;++i){aValue=value[i];if(aValue.value){if(aValue.value.search(re)>=0){ids.push(data.id);break outer;}}
else if(aValue.search(re)>=0){ids.push(data.id);break outer;}}}
else if(value&&value.search(re)>=0){ids.push(data.id);break;}}}}}
return ids;};P.getColumnsStorageKey=function(){return"noteColumnsKey";};})();SWApp.prototype.contactsView=function(){document.title=this.i18n("ScheduleWorld Contacts");if(!this.leftNotebook.display()){this.leftNotebook.display(true);this.desktopResizeBar.display(true);this.toolbarNotebook.display(true);this.desktopLayout.doLayout();}
var children=this.contactsContainerL.children();if(children&&children.length>0){this.leftNotebook.showPane(this.CONTACTS_PAGE);this.rightNotebook.showPane(this.CONTACTS_PAGE);this.toolbarNotebook.showPane(this.TOOLBAR_CONTACTS_PAGE);return;}
var createButton=new DlButton({parent:this.toolbarContacts,iconClass:"ToolbarVCard",classes:this.toolbarClasses,tooltip:this.i18n("New Contact")});var deleteButton=new DlButton({parent:this.toolbarContacts,iconClass:"ToolbarDelete",classes:this.toolbarClasses,tooltip:this.i18n("Delete")});var photoViewButton=new DlButton({parent:this.toolbarContacts,iconClass:"IconPersonal",classes:this.toolbarClasses,tooltip:this.i18n("Photo View")});var listViewButton=new DlButton({parent:this.toolbarContacts,iconClass:"IconLists",classes:this.toolbarClasses,tooltip:this.i18n("List View")});var syncButton=new DlButton({parent:this.toolbarContacts,iconClass:"ToolbarSync",classes:this.toolbarClasses,tooltip:this.i18n("Sync Contacts")});var searchButton=new DlButton({parent:this.toolbarContacts,iconClass:"ToolbarSearch",classes:this.toolbarClasses,tooltip:this.i18n("Search Contacts")});var mergeButton=new DlButton({parent:this.toolbarContacts,iconClass:"ToolbarMerge",classes:this.toolbarClasses,tooltip:this.i18n("Merge Contact Duplicates")});searchButton.addEventListener("onClick",function(){this.showContactSearchDialog();}.$(this));deleteButton.addEventListener("onClick",function(){var array=this.contactListSelectionModel.getArray();if(array.length==1){this.contactCache.removeWithDialog(array[0]);}
else{this.contactCache.removeWithDialog(array);}}.$(this));syncButton.addEventListener("onClick",function(){swApp.syncSWorld.contactSync(swApp.syncSWorld.SYNC_NORMAL);});mergeButton.addEventListener("onClick",function(){swApp.syncSWorld.mergeContactDupes();}.$(swApp.syncSWorld));this.toolbarContacts.addFiller();this.toolbarNotebook.showPane(this.TOOLBAR_CONTACTS_PAGE);createButton.addEventListener("onClick",function(){swApp.createQuickContact();});photoViewButton.addEventListener("onClick",function(){swApp.contactPhotoView();});listViewButton.addEventListener("onClick",function(){swApp.contactListView();});this.syncSWorld.addContactSyncStopListener(this.contactSyncStop.$(this));var contactsLayout=new DlLayout({parent:this.contactsContainerR});this.contactViewNotebook=new DlNotebook({name:"contactViewNotebook"});contactsLayout.packWidget(this.contactViewNotebook,{pos:"top",fill:"*"});this.contactListContainer=new DlContainer({name:"contactListContainer",parent:this.contactViewNotebook});this.contactEditContainer=new DlContainer({name:"contactEditContainer",parent:this.contactViewNotebook});this.contactPhotoContainer=new DlContainer({name:"contactPhotoContainer",parent:this.contactViewNotebook});var leftLayout=new DlLayout({parent:this.contactsContainerL,outerSpace:5});this.leftVBox=new DlVbox({});this.photoButton=new DlButton({parent:this.leftVBox,iconClass:"IconPhoto",tooltip:this.i18n("Photo")});this.photoButton.addEventListener("onClick",function(){var currentPane=this.contactViewNotebook.getCurrentPaneIndex();if(currentPane!=swApp.CON_LIST_PAGE){alert("Import photos from the list view.");return;}
var selArray=this.contactListSelectionModel.getArray();if(!selArray||selArray.length!=1){alert("You must select a contact before you can import a photo.");return;}
var contactID=selArray[0];var contact=swApp.contactCache.get(contactID);if(!contact._data.syncSWorldContact.guid){alert("You must sync this contact once before you can attach a photo.");return;}
swApp.importPhotoDialog=new DlDialog({modal:false,quitBtn:"destroy",title:"Upload Photo"});var cont=new DlContainer({parent:swApp.importPhotoDialog});cont.setSize({x:300});cont.getElement().style.padding="20px";var clientNonce=swApp.syncSWorld.syncSWorldPrefs.clientNonce;var deviceID=swApp.syncSWorld.syncSWorldPrefs.deviceID;var password=hex_sha256(swApp.syncSWorld.sessionID+clientNonce);cont.setContent("Max file size is 256KB.<br/>"+"The server scales (cubic) your image to 170x225.<br/>"+"Your image will be converted to JPEG.<br/>"+"Uploading an empty image deletes the photo."+"<form method='post' enctype='multipart/form-data' target='photo_upload_target' action='/sw2/importPhotoServlet' onSubmit='return swApp.deletePhotoConfirm();'>"+"<iframe onload='window.photoIframeLoad(); return false;' id='photo_upload_target' name='photo_upload_target' src='#' style='width:0;height:0;border:0px solid #fff;'></iframe>"+"<input type='hidden' name='calUserID' value='"+
swApp.syncSWorld.userSettingsDTO.calUserID+"'/>"+"<input type='hidden' name='password' value='"+
password+"'/>"+"<input type='hidden' name='clientNonce' value='"+
clientNonce+"'/>"+"<input type='hidden' name='deviceID' value='"+
deviceID+"'/>"+"<input type='hidden' name='guid' value='"+
contact._data.syncSWorldContact.guid+"'/>"+"<input type='hidden' name='luid' value='"+
contact._data.syncSWorldContact.id+"'/>"+"<center>"+"<input id='photoUploadInput' type='file' name='photoFile'/>"+"<input id='photoUploadSubmit' type='submit' name='action' value='Upload Photo' />"+"</center>"+"</form>");swApp.importPhotoDialog.centerOnParent();swApp.importPhotoDialog.show();}.$(this));this.catCont=new DlContainer({scroll:true});this.categoryGroup=DlRadioGroup.get();this.contactListView();leftLayout.packWidget(this.leftVBox,{pos:"top",after:10});leftLayout.packWidget(this.catCont,{pos:"bottom",fill:"*"});this.leftNotebook.showPane(this.CONTACTS_PAGE);this.rightNotebook.showPane(this.CONTACTS_PAGE);};SWApp.prototype.setCategories=function(ids,incomingCatL,exclusive){var i;var j;var existingH;var contact;var result;var cat;for(i=0;i<ids.length;++i){contact=swApp.contactCache.get(ids[i]);if(exclusive||(!contact._data.syncSWorldContact.category)){var catCopy=incomingCatL.slice();if(catCopy.length>0){contact.set("category",catCopy);}
else{delete contact._data.syncSWorldContact.category;}
continue;}
result=[];existingH={};if(contact._data.syncSWorldContact.category instanceof Array){for(j=0;j<contact._data.syncSWorldContact.category.length;++j){cat=contact._data.syncSWorldContact.category[j];existingH[cat.toLowerCase()]=j;if(!exclusive){result.push(cat);}}}
else{cat=contact._data.syncSWorldContact.category[j];if(cat){existingH[cat.toLowerCase()]=0;if(!exclusive){result.push(cat);}}}
for(j=0;j<incomingCatL.length;++j){var incomingCat=incomingCatL[j];var categoryLC=incomingCat.toLowerCase();if(!existingH.hasOwnProperty(categoryLC)){result.push(incomingCat);}}
contact.set("category",result);}
swApp.syncSWorld.contactSync(swApp.syncSWorld.SYNC_NORMAL);};SWApp.prototype.removeCategories=function(ids,removeCatL){if(!removeCatL||removeCatL.length===0){return;}
var i;var j;var removeM=removeCatL.toHash();var contact;var result;var cat;for(i=0;i<ids.length;++i){contact=swApp.contactCache.get(ids[i]);if(!contact._data.syncSWorldContact.category||contact._data.syncSWorldContact.category.length===0){continue;}
result=[];existingH={};if(contact._data.syncSWorldContact.category instanceof Array){for(j=0;j<contact._data.syncSWorldContact.category.length;++j){cat=contact._data.syncSWorldContact.category[j];if(removeM[cat]){continue;}
result.push(cat);}}
else{cat=contact._data.syncSWorldContact.category;if(cat){if(!removeM[cat]){result.push(cat);}}}
contact.set("category",result);}
swApp.syncSWorld.contactSync(swApp.syncSWorld.SYNC_NORMAL);};SWApp.prototype.deletePhotoConfirm=function(){var photoUploadInput=document.getElementById('photoUploadInput');if(!photoUploadInput){return false;}
if(photoUploadInput.value.length===0){var result=confirm("Uploading an empty image deletes the photo.\nDelete the photo?");if(result){return true;}
return false;}
return true;};SWApp.prototype.refreshCategories=function(){this.categoryGroup.reset();this.catCont.destroyChildWidgets();var luid;var count=0;for(luid in swApp.syncSWorld.swContactModel){if(swApp.syncSWorld.swContactModel.hasOwnProperty(luid)){++count;}}
var countHbox=new DlHbox({parent:this.catCont});tmp=new DlLabel({parent:countHbox,label:"<b>"+this.i18n("Contacts: ")+"</b>"});countHbox.addSpace();this.countLabel=new DlLabel({parent:countHbox,label:""+count});countHbox.addFiller();var share=new DlButton({parent:countHbox,label:this.i18n("Sharing...")});this.swContactShareDlg=new SwContactShareDlg({});var hrefLC=window.location.href.toLowerCase();share.addEventListener("onClick",this.shareContactsDialog.$(this));tmp=new DlLabel({parent:this.catCont,label:"<b>"+this.i18n("Addressbooks / Categories:")+"</b>"});var contact;var categoryS={};var categoryL;var abS={};var i;var ab;var category;for(luid in swApp.syncSWorld.swContactModel){if(swApp.syncSWorld.swContactModel.hasOwnProperty(luid)){contact=swApp.syncSWorld.swContactModel[luid];if(!contact.category){continue;}
if(contact.category instanceof Array){for(i=0;i<contact.category.length;++i){category=contact.category[i];if(!category||category.length===0){continue;}
categoryS[category]=i;}}
else{if(typeof contact.category.split!="function"){swApp.log("no split");}
tmp=contact.category.split(",");for(i=0;i<tmp.length;++i){category=tmp[i];if(!category||category.length===0){continue;}
categoryS[category]=i;}}}}
for(var cat in categoryS){if(categoryS.hasOwnProperty(cat)){ab=SwContact.getCategoryGroup(cat);abS[ab]=cat;}}
var visibleCategoryS=swApp.syncSWorld.syncSWorldPrefs.visibleCategoryS;if(!visibleCategoryS){visibleCategoryS=Dynarch.makeDeepCopy(categoryS);visibleCategoryS[swApp.NO_CATEGORY]=true;}
i=0;var checked=false;for(var ab in abS){if(abS.hasOwnProperty(ab)){var abGroupID=SwContact.getGroupID(ab);if(!abGroupID){checked=visibleCategoryS.hasOwnProperty(ab);}
else{var category=SwContact.getGroupIDCategory(abGroupID);checked=visibleCategoryS.hasOwnProperty(category);}
tmp=new DlCheckbox({parent:this.catCont,label:ab,value:ab,group:this.categoryGroup,checked:checked});++i;}}
checked=visibleCategoryS.hasOwnProperty(swApp.NO_CATEGORY);tmp=new DlCheckbox({parent:this.catCont,label:"No Addressbook/Category",value:swApp.NO_CATEGORY,group:this.categoryGroup,checked:checked});this.categoryGroup.maxChecked(i+1);this.categoryGroup.addEventListener("onChange",function(){var selectedValueL=this.categoryGroup.getValue();var values={};var visibleCategoryS={};for(var i=0;i<selectedValueL.length;++i){values[selectedValueL[i]]=i;}
var categories={};for(var ab in values){if(values.hasOwnProperty(ab)){if(ab==swApp.NO_CATEGORY){visibleCategoryS[swApp.NO_CATEGORY]=true;categories[ab]=true;continue;}
var groupID=SwContact.getGroupID(ab);if(groupID){var category=SwContact.getGroupIDCategory(groupID);categories[category]=true;visibleCategoryS[category]=true;}
else{categories[ab]=true;visibleCategoryS[ab]=true;}}}
var ids=this.contactCache.getIDsUsingCategories(categories);this.contactListView(ids,true);swApp.syncSWorld.syncSWorldPrefs.visibleCategoryS=visibleCategoryS;swApp.syncSWorld.saveSyncSWorldPrefs();}.$(this));this.contactListView();};SWApp.prototype.createQuickContact=function(){this.contactEditView();};SWApp.prototype.contactSyncStop=function(){this.syncSpinner.display(false);this.refreshCategories();};SWApp.prototype.showContactSearchDialog=function(){var dlg=new DlDialog({title:"Search For A Contact",quitBtn:"destroy"});var cont=new DlContainer({parent:dlg});cont.getElement().style.padding="20px";var fg=new DlFieldGrid({parent:cont});var tmp=fg.addField({name:"keys",label:"<b>Properties searched:</b>",widget:new DlLabel({label:"all properties."})});var summaryDlEntry=fg.addField({name:"searchText",label:"<b>Search text:</b>"});tmp=fg.addField({name:"keys",label:"",widget:new DlLabel({label:"(not case sensitive)"})});function addContact2Model(){var searchText=this.getValue();if(!searchText||searchText.length===0){return;}
var idL=swApp.contactCache.search(searchText);swApp.contactListView(idL);dlg.destroy();}
summaryDlEntry.addEventListener("onKey-ENTER",addContact2Model);dlg.centerOnParent();dlg.show();summaryDlEntry.focus();};SWApp.prototype.eventView=function(idL){document.title=this.i18n("ScheduleWorld Calendar");if(!this.leftNotebook.display()){this.leftNotebook.display(true);this.desktopResizeBar.display(true);this.toolbarNotebook.display(true);this.desktopLayout.doLayout();}
if(swApp.syncGoogCalButton){var showSyncGoogleButton=false;if(swApp.syncSWorld.userSettingsDTO.ICalendarIDGoogleCalendarDTOM){for(var key in swApp.syncSWorld.userSettingsDTO.ICalendarIDGoogleCalendarDTOM){if(swApp.syncSWorld.userSettingsDTO.ICalendarIDGoogleCalendarDTOM.hasOwnProperty(key)){showSyncGoogleButton=true;}}}
if(showSyncGoogleButton){swApp.syncGoogCalButton.display(true);}
else{swApp.syncGoogCalButton.display(false);}}
var children=this.calendarContainerL.children();if(children&&children.length>0){swApp.smallCalendar.setInfoDates(swApp.eventCache.getInfoDates());this.leftNotebook.showPane(this.CALENDAR_PAGE);this.rightNotebook.showPane(this.CALENDAR_PAGE);this.toolbarNotebook.showPane(this.TOOLBAR_CALENDAR_PAGE);swApp.csvButton.display(false);return;}
var showTodayButton=new DlButton({parent:this.toolbarCalendar,iconClass:"IconToday",classes:this.toolbarClasses,tooltip:this.i18n("Today")});this.calDeleteButton=new DlButton({parent:this.toolbarCalendar,iconClass:"ToolbarDelete",classes:this.toolbarClasses,tooltip:this.i18n("Delete")});var showXDayButton=new DlButton({parent:this.toolbarCalendar,iconClass:"ToolbarEvent",classes:this.toolbarClasses,tooltip:this.i18n("Show X Days")});var monthButton=new DlButton({parent:this.toolbarCalendar,iconClass:"IconMonth",classes:this.toolbarClasses,tooltip:this.i18n("Show Month")});var syncButton=new DlButton({parent:this.toolbarCalendar,iconClass:"ToolbarSync",classes:this.toolbarClasses,tooltip:this.i18n("Sync Calendars")});var searchButton=new DlButton({parent:this.toolbarCalendar,iconClass:"ToolbarSearch",classes:this.toolbarClasses,tooltip:this.i18n("Search Events")});this.csvButton=new DlButton({parent:this.toolbarCalendar,iconClass:"ToolbarCSV",classes:this.toolbarClasses,tooltip:this.i18n("Export To CSV")});this.csvButton.display(false);this.toolbarCalendar.addFiller();this.toolbarNotebook.showPane(this.TOOLBAR_CALENDAR_PAGE);showTodayButton.addEventListener("onClick",function(){var now=new Date();swApp.smallCalendar.setToday();});this.calDeleteButton.addEventListener("onClick",function(){var array=this.useSelectionModel.getArray();if(array.length==1){this.useEventCache.removeWithDialog(array[0],false);}
else{this.useEventCache.removeWithDialog(array,false);}});showXDayButton.addEventListener("onClick",function(){var now=new Date();swApp.swCalendar.displayDate(now,this.firstDay);swApp.calendarNDayView(7);});monthButton.addEventListener("onClick",function(){swApp.calendarMonthView();});syncButton.addEventListener("onClick",function(){swApp.syncSWorld.eventSync(swApp.syncSWorld.SYNC_NORMAL);});searchButton.addEventListener("onClick",function(){swApp.showEventSearchDialog();});var layout=new DlLayout({parent:this.calendarContainerR});var titleBoxCont=new DlContainer({className:"Sw2-MiniToolBar"});var titleBox=new DlHbox({parent:titleBoxCont});var listButton=new DlButton({label:"List Near Today",parent:titleBox});listButton.addEventListener("onClick",function(){swApp.calendarListView();});titleBox.addSpace();var listAllButton=new DlButton({label:"List All",parent:titleBox});listAllButton.addEventListener("onClick",function(){swApp.calendarListAllView();});titleBox.addSpace();var dayButton=new DlButton({label:"Day",parent:titleBox});dayButton.addEventListener("onClick",function(){swApp.calendarNDayView(1);});titleBox.addSpace();var fourDaysButton=new DlButton({label:"4 Days",parent:titleBox});fourDaysButton.addEventListener("onClick",function(){swApp.calendarNDayView(4);});titleBox.addSpace();var weekButton=new DlButton({label:"Week",parent:titleBox});weekButton.addEventListener("onClick",function(){swApp.calendarNDayView(7);});titleBox.addSpace();var showMonthButton=new DlButton({label:"Month",parent:titleBox});showMonthButton.addEventListener("onClick",function(){swApp.calendarMonthView();});titleBox.addSpace();var listAllButton=new DlButton({label:"Print",parent:titleBox});listAllButton.addEventListener("onClick",function(){swApp.calendarListPrint();});tzSelectHandler=function(selectedTZ){swApp.tzButtonMenu._mainBtn.label(selectedTZ);swApp.manageTZLRU(selectedTZ);swApp.syncSWorld.setUserTimeZone(selectedTZ);swApp.syncSWorld.saveUserSettingsDTO(tzSelectHandlerStep2.$(this,selectedTZ));};tzSelectHandlerStep2=function(selectedTZ){var displayDate=swApp.swCalendar.getDisplayDate();swApp.eventCache.setTimeZone(selectedTZ,displayDate);swApp.swCalendar.refresh();};titleBox.addSeparator("wide-separator");var userTimeZoneID=this.syncSWorld.userSettingsDTO.timeZoneID;this.tzButtonMenu=new DlButtonMenu({parent:titleBox,label:userTimeZoneID,connected:true});this.tzMenu=this.createMenuTZ(this.tzMenuL,tzSelectHandler);this.tzButtonMenu.setMenu(this.tzMenu);titleBox.addSeparator("wide-separator");this.syncGoogCalButton=new DlButtonMenu({label:"Google Sync",parent:titleBox,connected:true});var gsyncItems=[];var gcalSelectedHandler=function(idICalendarID){swApp.startGoogleSync(idICalendarID.substring(2));};if(swApp.syncSWorld.userSettingsDTO.ICalendarIDGoogleCalendarDTOM){for(var idICalendarID in swApp.syncSWorld.userSettingsDTO.ICalendarIDGoogleCalendarDTOM){if(swApp.syncSWorld.userSettingsDTO.ICalendarIDGoogleCalendarDTOM.hasOwnProperty(idICalendarID)){var gcalDTO=swApp.syncSWorld.userSettingsDTO.ICalendarIDGoogleCalendarDTOM[idICalendarID];var iCalendar=swApp.getICalendarInfo(idICalendarID);if(!iCalendar){continue;}
var item={};item.label=iCalendar.name+" :: "+gcalDTO.title;item.handler=gcalSelectedHandler.$(this,idICalendarID);gsyncItems.push(item);}}}
this.syncGoogCalButton.setMenu(swApp.createMenu(gsyncItems));titleBox.addFiller();layout.packWidget(titleBoxCont,{pos:"top"});this.calendarViewNotebook=new DlNotebook({});layout.packWidget(this.calendarViewNotebook,{pos:"bottom",fill:"*"});this.calListContainer=new DlContainer({name:"calListContainer",parent:this.calendarViewNotebook});this.calListAllContainer=new DlContainer({name:"calListAllContainer",parent:this.calendarViewNotebook});this.calDayContainer=new DlContainer({name:"calDayContainer",parent:this.calendarViewNotebook});this.calMonthContainer=new DlContainer({name:"calMonthContainer",parent:this.calendarViewNotebook});this.leftNotebook.addEventListener("onResize",function(){var z=2;var b=this.getOuterSize();if(b.x<50){return;}
swApp.syncSWorld.userSettingsDTO.leftNotebookWidth=b.x;swApp.syncSWorld.saveUserSettingsDTO();z=3;});var leftContainer=new DlContainer({parent:this.calendarContainerL});leftContainer.setStyle({padding:"5px"});var defaultStartDay=0;if(swApp.syncSWorld.userSettingsDTO.firstWeekDay=="2"){defaultStartDay=1;}
this.smallCalendar=new DlCalendar({parent:leftContainer,firstDay:defaultStartDay,fixedFirstDay:false,withMenu:true});this.smallCalendar.setStyle("width","100%");this.smallCalendar.addEventListener("onSelect",this.smallEventCalendarChangedDate);var sw2DefaultICalendarID=null;var noneSyncEnabled=true;var iCalendarInfoL=null;var iCalendarInfo=null;var i=0;if(this.syncSWorld.userSettingsDTO){if(!this.syncSWorld.userSettingsDTO.ICalendarInfoL){this.syncSWorld.userSettingsDTO.ICalendarInfoL=[];}
iCalendarInfoL=this.syncSWorld.userSettingsDTO.ICalendarInfoL;for(i=0;i<iCalendarInfoL.length;++i){iCalendarInfo=iCalendarInfoL[i];if(i===0){sw2DefaultICalendarID=iCalendarInfo.ICalendarID;}
if(iCalendarInfo.syncEnabled){sw2DefaultICalendarID=iCalendarInfo.ICalendarID;noneSyncEnabled=false;break;}}}
if(this.syncSWorld.userSettingsDTO.sw2DefaultICalendarID){sw2DefaultICalendarID=this.syncSWorld.userSettingsDTO.sw2DefaultICalendarID;}
else{this.syncSWorld.userSettingsDTO.sw2DefaultICalendarID=sw2DefaultICalendarID;this.syncSWorld.saveUserSettingsDTO(this.calendarViewStep2.$(this,noneSyncEnabled,sw2DefaultICalendarID,leftContainer));return;}
this.calendarViewStep2(noneSyncEnabled,sw2DefaultICalendarID,leftContainer);};SWApp.prototype.getICalendarInfo=function(idICalendarID){var iCalendarInfo=null;if(swApp.syncSWorld.userSettingsDTO){iCalendarInfoL=swApp.syncSWorld.userSettingsDTO.ICalendarInfoL;for(i=0;i<iCalendarInfoL.length;++i){iCalendarInfo=iCalendarInfoL[i];if(iCalendarInfo.ICalendarID==idICalendarID){return iCalendarInfo;}}}
return null;};SWApp.prototype.calendarViewStep2=function(noneSyncEnabled,sw2DefaultICalendarID,leftContainer){var colors=[];var colourObject=null;var rgbColor=null;var iCalendarInfo=null;if(this.syncSWorld.userSettingsDTO){if(!this.syncSWorld.userSettingsDTO.ICalendarIDColourM){this.syncSWorld.userSettingsDTO.ICalendarIDColourM={};}
iCalendarInfoL=this.syncSWorld.userSettingsDTO.ICalendarInfoL;for(i=0;i<iCalendarInfoL.length;++i){iCalendarInfo=iCalendarInfoL[i];if(iCalendarInfo.ownerCalUserID!=this.syncSWorld.userSettingsDTO.calUserID){continue;}
colourObject={};colourObject.id=iCalendarInfo.ICalendarID;if(noneSyncEnabled){colourObject.checked=true;iCalendarInfo.syncEnabled=true;}
else{colourObject.checked=iCalendarInfo.syncEnabled;}
colourObject.label=iCalendarInfo.name;rgbColor=this.syncSWorld.userSettingsDTO.ICalendarIDColourM[iCalendarInfo.ICalendarID];if(rgbColor){colourObject.color=rgbColor;}
else{colourObject.color=this.pickNextColour(iCalendarInfo.ICalendarID);}
colors.push(colourObject);}}
this.eventCache=new SwEventCache({timeZoneID:this.syncSWorld.userSettingsDTO.timeZoneID,defaultCalendar:sw2DefaultICalendarID,syncSWorld:this.syncSWorld});this.eventAllCache=new SwEventCache({timeZoneID:this.syncSWorld.userSettingsDTO.timeZoneID,defaultCalendar:sw2DefaultICalendarID,syncSWorld:this.syncSWorld});this.taskCache=new SwTaskCache({timeZoneID:this.syncSWorld.userSettingsDTO.timeZoneID,defaultCalendar:sw2DefaultICalendarID,syncSWorld:this.syncSWorld});this.calendarNDayView(7);this.calMultiSelector=new SwCalMultiSelector({parent:leftContainer,title:this.i18n("My Calendars (Events)"),data:this.eventCache,colors:colors});this.calMultiSelector.setStyle({marginTop:"10px"});this.calMultiSelector.setLeftLink("Share").addEventListener("onClick",function(){swApp.shareCalView();}.$(this));this.calMultiSelector.setRightLink("Create").addEventListener("onClick",function(){swApp.prefsViewCalendar();}.$(this));this.calMultiSelector.setSendToServer(true);colors=[];if(this.syncSWorld.userSettingsDTO){if(!this.syncSWorld.userSettingsDTO.ICalendarIDColourM){this.syncSWorld.userSettingsDTO.ICalendarIDColourM={};}
iCalendarInfoL=this.syncSWorld.userSettingsDTO.ICalendarInfoL;for(i=0;i<iCalendarInfoL.length;++i){iCalendarInfo=iCalendarInfoL[i];if(iCalendarInfo.ownerCalUserID==this.syncSWorld.userSettingsDTO.calUserID){continue;}
colourObject={};colourObject.id=iCalendarInfo.ICalendarID;colourObject.checked=true;colourObject.label=iCalendarInfo.name;rgbColor=this.syncSWorld.userSettingsDTO.ICalendarIDColourM[iCalendarInfo.ICalendarID];if(rgbColor){colourObject.color=rgbColor;}
else{colourObject.color=this.pickNextColour(iCalendarInfo.ICalendarID);}
colors.push(colourObject);}}
this.otherCalMultiSelector=new SwCalMultiSelector({parent:leftContainer,title:this.i18n("Other Calendars"),data:this.eventCache,colors:colors});this.otherCalMultiSelector.setStyle({marginTop:"10px"});this.otherCalMultiSelector.setRightLink("Search").addEventListener("onClick",function(){alert("Search public events not available yet.");});this.otherCalMultiSelector.setSendToServer(true);this.leftNotebook.showPane(this.CALENDAR_PAGE);this.rightNotebook.showPane(this.CALENDAR_PAGE);};SWApp.prototype.defaultColours=["#CC3333","#3366CC","#66AA00","#329262","#EE8800","#A87070","#B08B59","#DD4477","#994499","#22AA99","#D6AE00","#8C6D8C","#7083A8","#5C8D87","#898951"];SWApp.prototype.pickNextColour=function(iCalendarID){if(!this.syncSWorld.userSettingsDTO.ICalendarIDColourM){this.syncSWorld.userSettingsDTO.ICalendarIDColourM={};return this.defaultColours[0];}
var alreadyUsed=false;for(var i=0;i<this.defaultColours.length;++i){alreadyUsed=false;var possibleColour=this.defaultColours[i];var iCalendarInfoL=this.syncSWorld.userSettingsDTO.ICalendarInfoL;for(var j=0;j<iCalendarInfoL.length;++j){var iCalendarInfo=iCalendarInfoL[j];var rgbColour=this.syncSWorld.userSettingsDTO.ICalendarIDColourM[iCalendarInfo.ICalendarID];if(!rgbColour){continue;}
if(rgbColour==possibleColour){alreadyUsed=true;break;}}
if(!alreadyUsed){swApp.syncSWorld.userSettingsDTO.ICalendarIDColourM[iCalendarID]=possibleColour;swApp.syncSWorld.saveUserSettingsDTO();return possibleColour;}}
return this.defaultColours[0];};SWApp.prototype.getEventSelectedICalendarIDL=function(){var array=this.calMultiSelector._group.getValue();return array;};SWApp.prototype.smallEventCalendarRendered=function(){if(!this.date){return;}
if(!swApp.eventCache.currentYear){return;}
if(this.date.getFullYear()!=swApp.eventCache.currentYear||this.date.getMonth()+1!=swApp.eventCache.currentOneBasedMonth){swApp.eventSyncStoppedHandler();}
else{swApp.swCalendar.displayDate(this.date);}};SWApp.prototype.smallEventCalendarChangedDate=function(cleared,other,secondClick,date){if(!date){return;}
if(date.getFullYear()!=swApp.eventCache.currentYear||date.getMonth()+1!=swApp.eventCache.currentOneBasedMonth){swApp.eventSyncStoppedHandler();}
else{swApp.swCalendar.displayDate(date);}};SWApp.prototype.showEventSearchDialog=function(){var dlg=new DlDialog({title:"Search For An Event",quitBtn:"destroy"});var cont=new DlContainer({parent:dlg});cont.getElement().style.padding="20px";var fg=new DlFieldGrid({parent:cont});var tmp=fg.addField({name:"keys",label:"<b>Properties searched:</b>",widget:new DlLabel({label:"Summary, description, location."})});var summaryDlEntry=fg.addField({name:"searchText",label:"<b>Search text:</b>"});tmp=fg.addField({name:"keys",label:"",widget:new DlLabel({label:"(not case sensitive)"})});function addEvent2Model(){var searchText=this.getValue();if(!searchText||searchText.length===0){return;}
var idL=swApp.eventCache.search(searchText);swApp.calendarListView(idL);dlg.destroy();}
summaryDlEntry.addEventListener("onKey-ENTER",addEvent2Model);dlg.centerOnParent();dlg.show();summaryDlEntry.focus();};SWApp.prototype.calendarListViewRefresh=function(idL){var displayIDs;if(!this.eventGrid){return;}
this.eventGrid._data=this.eventCache;if(idL&&idL.length>0){displayIDs=idL;}
else{var visibleICalendarIDs=swApp.calMultiSelector.getVisibleICalendarIDs();displayIDs=this.eventCache.getIDs(visibleICalendarIDs);}
if(swApp.csvButton){swApp.csvButton.display(false);}
this.eventGrid.resetIDS(displayIDs);var prev=this.eventGrid.__sortCol;if(prev){if(this.eventGrid.__sortRev){this.eventGrid._onHeadClick(this.eventGrid.getCol(prev),null);this.eventGrid._onHeadClick(this.eventGrid.getCol(prev),null);}
else{delete this.eventGrid.__sortCol;this.eventGrid._onHeadClick(this.eventGrid.getCol(prev),null);}}
this.eventGrid.displayPage(0);swApp.smallCalendar.setInfoDates(this.eventCache.getInfoDates());};SWApp.prototype.calendarListView=function(idL){this.calDeleteButton.display(true);this.calDeleteButton.useEventCache=this.eventCache;this.calDeleteButton.useSelectionModel=this.eventGridSelectionModel;var children=this.calListContainer.children();if(children&&children.length>0){this.calendarListViewRefresh(idL);this.calendarViewNotebook.showPane(this.CAL_LIST_PAGE);return;}
var columns=this.eventCache.getColumns();this.eventGridSelectionModel=new DlSelectionModel({});this.calDeleteButton.useSelectionModel=this.eventGridSelectionModel;this.eventGrid=new SwDataGrid({parent:this.calListContainer,cols:columns,data:this.eventCache,fillParent:true,rpp:45,virtualScrolling:true,selection:this.eventGridSelectionModel});if(!this.eventCache.isEmpty()){displayIDs=null;if(idL){displayIDs=idL;this.eventGrid.resetIDS(displayIDs);}
else{displayIDs=this.eventCache.getIDs();this.eventGrid.resetIDS(displayIDs);this.eventGrid._onHeadClick(this.eventGrid.getCol("listViewStart"),null);}}
else{this.eventGrid.resetIDS([]);}
this.eventGrid.displayPage(0);this.eventGrid.addEventListener("onBodyDblClick",this.listViewDblClick);this.calendarViewNotebook.showPane(this.CAL_LIST_PAGE);swApp.smallCalendar.setInfoDates(this.eventCache.getInfoDates());};SWApp.prototype.listViewDblClick=function(){var sel=this._selection;var selected_ids=sel.getArray();var saveAll=true;if(selected_ids.length===0){var iCalendarID=this._data.getDefaultCalendar();var calObj={};calObj.brandNew=true;calObj.dirty=true;calObj.durationMinutes=60;calObj.title="";calObj.iCalendarID=iCalendarID;calObj.id=swApp.syncSWorld.getNextLUID();var date=new Date();var swComp=this._data.createCalComp(calObj.id,calObj,this._data.getTimeZone(),date.getFullYear(),date.getMonth()+1,date.getDate(),date.getHours(),date.getMinutes(),0);this._data.insert(swComp,true);swApp.calendarEditView(swComp,swApp.eventView,true,saveAll);return;}
var swEvent=this._data.get(selected_ids[0]);swEvent._handleWidgetClick();};SWApp.prototype.calendarListAllViewRefresh=function(){if(!this.eventAllGrid){return;}
this.eventAllCache.recalculateAll(null,null,true,true);var visibleICalendarIDs=swApp.calMultiSelector.getVisibleICalendarIDs();var displayIDs=this.eventAllCache.getIDs(visibleICalendarIDs);this.eventAllGrid._data=this.eventAllCache;this.eventAllGrid.resetIDS(displayIDs);var prev=this.eventAllGrid.__sortCol;if(prev){if(this.eventAllGrid.__sortRev){this.eventAllGrid._onHeadClick(this.eventAllGrid.getCol(prev),null);this.eventAllGrid._onHeadClick(this.eventAllGrid.getCol(prev),null);}
else{delete this.eventAllGrid.__sortCol;this.eventAllGrid._onHeadClick(this.eventAllGrid.getCol(prev),null);}}
this.eventAllGrid.displayPage(0);swApp.smallCalendar.setInfoDates(this.eventAllCache.getInfoDates());};SWApp.prototype.calendarListAllView=function(){this.calDeleteButton.display(true);this.calDeleteButton.useEventCache=this.eventAllCache;this.calDeleteButton.useSelectionModel=this.eventAllGridSelectionModel;var children=this.calListAllContainer.children();if(children&&children.length>0){this.calendarListAllViewRefresh();this.calendarViewNotebook.showPane(this.CAL_LIST_ALL_PAGE);return;}
var columns=this.eventAllCache.getColumns();this.eventAllGridSelectionModel=new DlSelectionModel({});this.calDeleteButton.useSelectionModel=this.eventAllGridSelectionModel;this.eventAllGrid=new SwDataGrid({parent:this.calListAllContainer,cols:columns,data:this.eventAllCache,fillParent:true,rpp:45,virtualScrolling:true,selection:this.eventAllGridSelectionModel});if(!this.eventAllCache.isEmpty()){var displayIDs=this.eventAllCache.getIDs();this.eventAllGrid.resetIDS(displayIDs);this.eventAllGrid._onHeadClick(this.eventAllGrid.getCol("listViewStart"),null);}
else{this.eventAllGrid.resetIDS([]);}
this.eventAllGrid.displayPage(0);this.eventAllGrid.addEventListener("onBodyDblClick",this.listViewDblClick);this.calendarViewNotebook.showPane(this.CAL_LIST_ALL_PAGE);this.calendarListAllViewRefresh();swApp.smallCalendar.setInfoDates(this.eventAllCache.getInfoDates());};SWApp.prototype.calendarListPrint=function(){if(this.calendarViewNotebook.getPane()!=this.CAL_LIST_ALL_PAGE){this.calendarListAllView();}
swApp._printTitle=swApp.syncSWorld.userSettingsDTO.firstName+" "+
swApp.syncSWorld.userSettingsDTO.lastName;swApp._printTotals=false;swApp._printStyleSheet="swprintgrid.css";swApp._printDlGrid=this.eventAllGrid;window.open("js/print/print.html");};SWApp.prototype.listViewDblClick=function(){var sel=this._selection;var selected_ids=sel.getArray();var saveAll=true;if(selected_ids.length===0){var iCalendarID=this._data.getDefaultCalendar();var calObj={};calObj.brandNew=true;calObj.dirty=true;calObj.durationMinutes=60;calObj.title="";calObj.iCalendarID=iCalendarID;calObj.id=swApp.syncSWorld.getNextLUID();var date=new Date();var swComp=this._data.createCalComp(calObj.id,calObj,this._data.getTimeZone(),date.getFullYear(),date.getMonth()+1,date.getDate(),date.getHours(),date.getMinutes(),0);this._data.insert(swComp,true);swApp.calendarEditView(swComp,swApp.eventView,true,saveAll);return;}
var swEvent=this._data.get(selected_ids[0]);swEvent._handleWidgetClick();};SWApp.prototype.calendarListViewRefresh=function(idL){var displayIDs;if(!this.eventGrid){return;}
this.eventGrid._data=this.eventCache;if(idL&&idL.length>0){displayIDs=idL;}
else{var visibleICalendarIDs=swApp.calMultiSelector.getVisibleICalendarIDs();displayIDs=this.eventCache.getIDs(visibleICalendarIDs);}
if(swApp.csvButton){swApp.csvButton.display(false);}
this.eventGrid.resetIDS(displayIDs);var prev=this.eventGrid.__sortCol;if(prev){if(this.eventGrid.__sortRev){this.eventGrid._onHeadClick(this.eventGrid.getCol(prev),null);this.eventGrid._onHeadClick(this.eventGrid.getCol(prev),null);}
else{delete this.eventGrid.__sortCol;this.eventGrid._onHeadClick(this.eventGrid.getCol(prev),null);}}
this.eventGrid.displayPage(0);swApp.smallCalendar.setInfoDates(this.eventCache.getInfoDates());};SWApp.prototype.calendarListView=function(idL){this.calDeleteButton.display(true);this.calDeleteButton.useEventCache=this.eventCache;this.calDeleteButton.useSelectionModel=this.eventGridSelectionModel;var children=this.calListContainer.children();if(children&&children.length>0){this.calendarListViewRefresh(idL);this.calendarViewNotebook.showPane(this.CAL_LIST_PAGE);return;}
var columns=this.eventCache.getColumns();this.eventGridSelectionModel=new DlSelectionModel({});this.calDeleteButton.useSelectionModel=this.eventGridSelectionModel;this.eventGrid=new SwDataGrid({parent:this.calListContainer,cols:columns,data:this.eventCache,fillParent:true,rpp:45,virtualScrolling:true,selection:this.eventGridSelectionModel});if(!this.eventCache.isEmpty()){displayIDs=null;if(idL){displayIDs=idL;this.eventGrid.resetIDS(displayIDs);}
else{displayIDs=this.eventCache.getIDs();this.eventGrid.resetIDS(displayIDs);this.eventGrid._onHeadClick(this.eventGrid.getCol("listViewStart"),null);}}
else{this.eventGrid.resetIDS([]);}
this.eventGrid.displayPage(0);this.eventGrid.addEventListener("onBodyDblClick",this.listViewDblClick);this.calendarViewNotebook.showPane(this.CAL_LIST_PAGE);swApp.smallCalendar.setInfoDates(this.eventCache.getInfoDates());};SWApp.prototype.listViewDblClick=function(){var sel=this._selection;var selected_ids=sel.getArray();var saveAll=true;if(selected_ids.length===0){var iCalendarID=this._data.getDefaultCalendar();var calObj={};calObj.brandNew=true;calObj.dirty=true;calObj.durationMinutes=60;calObj.title="";calObj.iCalendarID=iCalendarID;calObj.id=swApp.syncSWorld.getNextLUID();var date=new Date();var swComp=this._data.createCalComp(calObj.id,calObj,this._data.getTimeZone(),date.getFullYear(),date.getMonth()+1,date.getDate(),date.getHours(),date.getMinutes(),0);this._data.insert(swComp,true);swApp.calendarEditView(swComp,swApp.eventView,true,saveAll);return;}
var swEvent=this._data.get(selected_ids[0]);swEvent._handleWidgetClick();};SWApp.prototype.calendarNDayView=function(anNDays){if(anNDays){this.calendarNDays=anNDays;}
if(!this.calendarNDays){this.calendarNDays=7;}
this.calDeleteButton.display(false);if(this.swCalendar){this.swCalendar.setNDays(this.calendarNDays);this.calendarViewNotebook.showPane(this.CAL_DAY_PAGE);swApp.smallCalendar.setInfoDates(this.eventCache.getInfoDates());return;}
var layout=new DlLayout({parent:this.calDayContainer});this.swCalendar=new SwCalendar({data:this.eventCache,nDays:this.calendarNDays});this.eventCache.addEventListener("onChange",function(){swApp.smallCalendar.setInfoDates(swApp.eventCache.getInfoDates());});this.eventCache.addEventListener(["onInsert","onDelete"],function(){swApp.smallCalendar.setInfoDates(swApp.eventCache.getInfoDates());});this.syncSWorld.addSyncStopListener(this.eventSyncStoppedHandler);layout.packWidget(this.swCalendar,{pos:"right",fill:"*"});var infoDates=this.eventCache.getInfoDates();this.smallCalendar.setInfoDates(infoDates);this.smallCalendar._cal_tooltip=swApp.eventCache.getDateTooltip;var now=new Date();this.swCalendar.refresh(now,null,false);this.swCalendar.__doLayout();this.calendarViewNotebook.showPane(this.CAL_DAY_PAGE);this.swCalendar.scrollToHour(6);};SWApp.prototype.eventSyncStoppedHandler=function(networkFailed){var date=swApp.smallCalendar.date;var mustReturn=swApp.eventCache.recalculateAll(date.getFullYear(),date.getMonth()+1,networkFailed);if(mustReturn){return true;}
swApp.swCalendar.displayDate(date);if(swApp.swMonthCalendar){swApp.swMonthCalendar.displayDate(date,0);}
if(swApp.eventGrid){swApp.calendarListViewRefresh();}
if(swApp.eventAllGrid){swApp.calendarListAllViewRefresh();}
return false;};SWApp.prototype.calendarMonthView=function(){this.calDeleteButton.display(false);var children=this.calMonthContainer.children();if(children&&children.length>0){this.calendarViewNotebook.showPane(this.CAL_MONTH_PAGE);swApp.smallCalendar.setInfoDates(this.eventCache.getInfoDates());if(swApp.csvButton){swApp.csvButton.display(false);}
return;}
var layout=new DlLayout({parent:this.calMonthContainer});this.swMonthCalendar=new SwMonthCalendar({data:this.eventCache});layout.packWidget(this.swMonthCalendar,{pos:"left",fill:"*"});var dispDate=new Date();dispDate.setDate(15);dispDate.setMonth(this.eventCache.currentOneBasedMonth-1);dispDate.setFullYear(this.eventCache.currentYear);this.swMonthCalendar.displayDate(dispDate,0);this.calendarViewNotebook.showPane(this.CAL_MONTH_PAGE);};SWApp.prototype.calendarEditView=function(swEvent,backFunction,noDeleteButton,saveAll){this._saveAll=saveAll;this._swEvent=swEvent;this.calEditBackFunction=backFunction;this.noDelete=noDeleteButton;var children=this.editEventContainerR.children();if(children&&children.length>0){this._calendarEditViewRefresh(this._swEvent,saveAll);this.rightNotebook.showPane(this.CAL_EDIT_PAGE);return;}
swApp.syncSWorld.addSyncStopListener(swApp.saveItemCB);var layout=new DlLayout({parent:this.editEventContainerR,outerSpace:10});var titleBox=new DlHbox({parent:this.editEventContainerR});var back=new DlButton({label:swApp.i18n("Back"),parent:titleBox});back.addEventListener("onClick",function(){if(this.noDelete){this._swEvent._data.syncSWorldCalComp.deleted=true;this._swEvent._set.remove(this._swEvent.get("id"),true);}
if(swApp.calEditBackFunction){swApp.calEditBackFunction();}
else if(this._swEvent._objectType=="SwEvent"){swApp.calendarListView();}
else{swApp.taskListView();}}.$(this));titleBox.addSpace();this.calEditSaveButton=new DlButton({label:swApp.i18n("Save"),parent:titleBox});this.calEditSaveButton.addEventListener("onClick",function(){if(this._saveAll){try{if(this._swEvent._data.parentSWorldEvent){this._swEvent._data.parentSWorldEvent.dirty=true;}
this.saveToEvent(this._swEvent._data.syncSWorldCalComp,false);this.swAttendees.saveToEvent(this._swEvent._data.syncSWorldCalComp);this.swOptions.saveToEvent(this._swEvent._data.syncSWorldCalComp);if(this._swEvent._data.parentSWorldEvent){this._swEvent._data.parentSWorldEvent.dirty=true;}}catch(ex){alert("Failed to save.\nReason:"+ex);return;}
if(this._swEvent._objectType=="SwEvent"){var itemId=getItemID(this._swEvent._data.syncSWorldCalComp);var item=swApp.syncSWorld.itemM[itemId];if(item){swApp.emDefSaveItemSWCompProperties(item,this._swEvent._data.syncSWorldCalComp,this._swEvent);swApp.saveItemCBItem=item;}
swApp.syncSWorld.eventSync(swApp.syncSWorld.SYNC_NORMAL);}
else{swApp.syncSWorld.todoSync(swApp.syncSWorld.SYNC_NORMAL);}
if(swApp.calEditBackFunction){swApp.calEditBackFunction();}
return;}
if(!this._saveAll){var dateTime=this.calEditWhen.getStartDateTime();var swEventException=this._swEvent._set.doDropRecurMoved(this._swEvent,dateTime.year,dateTime.month,dateTime.dayOfMonth,dateTime.hourOfDay,dateTime.minute,dateTime.second,swApp.syncSWorld.userSettingsDTO.timeZoneID,false);try{this.saveToEvent(swEventException._data.syncSWorldCalComp,true);}catch(ex2){alert("Failed to save.\nReason:"+ex2);return;}
if(this._swEvent._objectType=="SwEvent"){swApp.syncSWorld.eventSync(swApp.syncSWorld.SYNC_NORMAL);}
else{swApp.syncSWorld.todoSync(swApp.syncSWorld.SYNC_NORMAL);}
if(swApp.calEditBackFunction){swApp.calEditBackFunction();}
return;}}.$(this));titleBox.addSpace();titleBox.addSeparator();titleBox.addSpace();this.calEditEMButton=new DlButton({label:swApp.i18n("Event Manager"),parent:titleBox});this.calEditEMButton.addEventListener("onClick",function(){swApp.showEM(this._swEvent);}.$(this));titleBox.addFiller();layout.packWidget(titleBox,{pos:"top"});var calEditColLayout=new SwColLayout({scroll:false});var rightContainer=new DlContainer({});var rightLayout=new DlLayout({parent:rightContainer,outerSpace:2});this.swAttendees=new SwAttendees({});this.swAttendees.setLeftLink("Email invitation text").addEventListener("onClick",function(){alert("Invitations are not handled yet.");}.$(this));this.swOptions=new SwOptions({});rightLayout.packWidget(this.swAttendees,{pos:"top",fill:"50%",after:10});rightLayout.packWidget(this.swOptions,{pos:"bottom",fill:"*"});layout.packWidget(calEditColLayout,{pos:"left",fill:"60%"});layout.packWidget(rightContainer,{pos:"right",fill:"*"});this.swAttendees.postInitDOM();this.swOptions.postInitDOM();var content=String.buffer("<col class='label7'>",this.i18n("Summary"),":</col> <col> <lcont>summary</lcont> </col>","<sep/>","<col class='label7'>",this.i18n("When"),": <br /> <span class='help'></span> </col> <col> <lcont>when</lcont> </col>","<sep/>","<col class='label7'>",this.i18n("Status"),": <br /> <span class='help'></span> </col> <col> <lcont>status</lcont> </col>","<sep/>","<col class='label7'>",this.i18n("Recurrence"),": <br /> <span class='help'>");content("</span> </col> <col> <lcont>recurrence</lcont> </col>","<sep/>","<col class='label7'>",this.i18n("Location"),": <br /> <span class='help'></span> </col> <col> <lcont>location</lcont> </col>","<sep/>","<col class='label7'>",this.i18n("Calendar"),": <br /> <span class='help'></span> </col> <col> <lcont>calendarSelect</lcont> <lcont class='help'>Changing the calendar will move the event. Event Manager events may not be moved.</lcont> </col>","<sep/>","<col class='label7'>",this.i18n("Categories"),": <br /> <span class='help'></span> </col> <col> <lcont>categories</lcont> </col>","<sep/>","<col class='label7'>",this.i18n("Description"),": <br /> <span class='help'></span> </col> <col> <lcont>description</lcont> </col>");var ids=calEditColLayout.setContent(content.get());this.calEditSummary=new DlEntry({parent:calEditColLayout,appendArgs:ids.summary,className:"SW-WideEntry",width:"28em"});this.calEditWhen=new SwWhenEntry({parent:calEditColLayout,appendArgs:ids.when,swEvent:this._swEvent});this.calEditStatus=new SwStatus({parent:calEditColLayout,appendArgs:ids.status,swEvent:this._swEvent});this.calEditRecur=new SwRecurSelector({parent:calEditColLayout,appendArgs:ids.recurrence,swEvent:this._swEvent});this.calEditWhen.addStartListener(this.calEditRecur.startListener.$(this.calEditRecur));this.calEditRecur.addFreqListener(this.calEditWhen.freqListener.$(this.calEditWhen));this.calEditLocation=new DlEntry({parent:calEditColLayout,appendArgs:ids.location,width:"28em"});this.calEditCalendarSelect=new DlRadioSelect({parent:calEditColLayout,appendArgs:ids.calendarSelect,disabled:false});this.calEditCategories=new DlEntry({parent:calEditColLayout,appendArgs:ids.categories,width:"28em"});this.calEditDescription=new DlEntry({parent:calEditColLayout,appendArgs:ids.description,width:"28em",type:"textarea",rows:"6"});this._calendarEditViewRefresh(this._swEvent,saveAll);this.rightNotebook.showPane(this.CAL_EDIT_PAGE);};SWApp.prototype.saveItemCB=function(){if(!swApp.saveItemCBItem){return;}
swApp.saveItem(swApp.saveItemCBItem,function(){swApp.saveItemCBItem=null;});};SWApp.prototype.showEM=function(swEvent){if(swEvent._data.syncSWorldCalComp.brandNew){alert("You must save the event before you can use it with Event Manager.");return;}
if(!swApp.syncSWorld.userSettingsDTO.swuserid){var createSwemuserSuccess=function(response){if(response.swuserid){swApp.syncSWorld.userSettingsDTO.swuserid=response.swuserid;delete swApp.syncSWorld.kdfResultBytes;swApp.syncSWorld.saveUserSettingsDTO(swApp.emView(swEvent));}};var failCallback=function(){alert("Unable to create your Event Manger settings.\nEvent Manager can not be used yet. Perhaps you are offline?");};var request={};request.em=true;request.command="createSwemuser";swApp.syncSWorld.sendRequest(request,null,createSwemuserSuccess.$(this),failCallback.$(this));return;}
swApp.emView(swEvent);};SWApp.prototype.saveToEvent=function(event,changedOnly){if(this.calEditSummary.getValue().length===0){throw("Missing summary.");}
event.dirty=true;event.title=this.calEditSummary.getValue();this.calEditWhen.saveToEvent(event);this.calEditStatus.saveToEvent(event);if(!changedOnly){this.calEditRecur.saveToEvent(event);}
event.location=this.calEditLocation.getValue();event.categories=this.calEditCategories.getValue();event.description=this.calEditDescription.getValue();var widget;var selectedCalID=this.calEditCalendarSelect.getValue();if(event.iCalendarID!=selectedCalID){this._swEvent._set.remove(event.id,true,false);var eventCopy=Dynarch.makeDeepCopy(event);eventCopy.id=swApp.syncSWorld.getNextLUID();delete eventCopy.guid;delete eventCopy.compID;eventCopy.dirty=true;eventCopy.brandNew=true;eventCopy.iCalendarID=selectedCalID;var calObj=this._swEvent._set.createCalComp(eventCopy.id,eventCopy,eventCopy.startTimeZone,eventCopy.startYear,eventCopy.startMonth,eventCopy.startDayOfMonth,eventCopy.startHourOfDay,eventCopy.startMinute,0);this._swEvent._set.insert(calObj,true);widget=this._swEvent._set.get(eventCopy.id);if(widget){this._swEvent._set.applyHooks("onChange",[widget]);}}
widget=this._swEvent._set.get(event.id);if(widget){this._swEvent._set.applyHooks("onChange",[widget]);}};SWApp.prototype._calendarEditViewRefresh=function(swEvent,saveAll){this._swEvent=swEvent;this.calEditWhen.refreshView(swEvent,saveAll);this.calEditStatus.refreshView(swEvent);this.calEditRecur.refreshView(swEvent);this.swOptions.refreshView(swEvent);this.swAttendees.refreshView(swEvent);var selectedValue=null;var options=[];var iCalendarInfoL=this.syncSWorld.userSettingsDTO.ICalendarInfoL;for(i=0;i<iCalendarInfoL.length;++i){iCalendarInfo=iCalendarInfoL[i];if(i===0){selectedValue=iCalendarInfo.ICalendarID;}
options.push({label:iCalendarInfo.name,value:iCalendarInfo.ICalendarID});if(this.syncSWorld.userSettingsDTO.sendNewItemsToICalendarID){if(iCalendarInfo.ICalendarID==this.syncSWorld.userSettingsDTO.sendNewItemsToICalendarID){selectedValue=iCalendarInfo.ICalendarID;}}}
if(swEvent.isReadOnly()){this.calEditSaveButton.display(false);}
else{this.calEditSaveButton.display(true);}
this.calEditCalendarSelect.setOptions(options);if(swEvent._data.syncSWorldCalComp.iCalendarID){this.calEditCalendarSelect.setValue(swEvent._data.syncSWorldCalComp.iCalendarID);}
else{this.calEditCalendarSelect.setValue(selectedValue);}
if(swEvent._data.syncSWorldCalComp.title){this.calEditSummary.setValue(swEvent._data.syncSWorldCalComp.title);}
else{this.calEditSummary.setValue("");}
if(swEvent._data.syncSWorldCalComp.location){this.calEditLocation.setValue(swEvent._data.syncSWorldCalComp.location);}
else{this.calEditLocation.setValue("");}
if(swEvent._data.syncSWorldCalComp.categories){this.calEditCategories.setValue(swEvent._data.syncSWorldCalComp.categories);}
else{this.calEditCategories.setValue("");}
if(swEvent._data.syncSWorldCalComp.description){this.calEditDescription.setValue(swEvent._data.syncSWorldCalComp.description);}
else{this.calEditDescription.setValue("");}};(function(){var BASE=SwWhenEntry.inherits(DlContainer);function SwWhenEntry(args){if(args){D.setDefaults(this,args);this._focusable=true;BASE.constructor.call(this,args);this.startListenerL=[];}
else{throw("SwWhenEntry missing args.");}}
eval(Dynarch.EXPORT("SwWhenEntry"));D.DEFAULT_ARGS={_swEvent:["swEvent",null]};P.initDOM=function(){BASE.initDOM.call(this);var date=new Date();date.setDate(1);date.setMonth(this._swEvent.getStartMonth()-1);date.setFullYear(this._swEvent.getStartYear());date.setDate(this._swEvent.getStartDayOfMonth());var dateFormat=swApp.getDateFormat();var fg=new DlFieldGrid({parent:this});var hbox=new DlHbox({});var defaultStartDay=0;if(swApp.syncSWorld.userSettingsDTO.firstWeekDay=="2"){defaultStartDay=1;}
this._startDate=new DlButtonCalendar({parent:hbox,date:date,dateFormat:dateFormat,calendar:{firstDay:defaultStartDay,fixedFirstDay:false,withMenu:true}});this._startDate.addEventListener("onSelect",function(date){this._startDate.getCalendar().setData("swclicked",true);for(var i=0;i<this.startListenerL.length;++i){this.startListenerL[i](date);}
this.recalculateEnd();this._noStart.checked(false);}.$(this));hbox.addSpace();var useAmPm=swApp.syncSWorld.userSettingsDTO.ampm;this.hoursMaxVal=12;if(!useAmPm){this.hoursMaxVal=23;}
this.hourValidator=new DlValidator(DlValidator.Number,0,this.hoursMaxVal,true,0);this.minuteValidator=new DlValidator(DlValidator.Number,0,59,true,0);function validateZeroPad(data){if(data.length===0){return"00";}
if(data.length==1){return"0"+data;}
return data;}
this.lengthValidator=new DlValidator(validateZeroPad);this.startHours=new DlEntry({parent:hbox,width:"2em",validators:[this.hourValidator]});this.startHours.addEventListener("onChange",function(){this.recalculateEnd();}.$(this));this.startSep=new DlLabel({parent:hbox,label:"<b> : </b>"});this.startMinutes=new DlEntry({parent:hbox,width:"2em",validators:[this.minuteValidator,this.lengthValidator]});this.startMinutes.addEventListener("onChange",function(){this.recalculateEnd();}.$(this));var locale=null;var userSettingsLocaleKey=swApp.syncSWorld.userSettingsDTO.language;if(swApp.syncSWorld.userSettingsDTO.country&&swApp.syncSWorld.userSettingsDTO.country.length>0){userSettingsLocaleKey+="-"+swApp.syncSWorld.userSettingsDTO.country;}
locale=jsLocaleData[userSettingsLocaleKey];var ampmGroup=DlRadioGroup.get();this.ampmVbox=new DlVbox({parent:hbox});if(!useAmPm){this.ampmVbox.display(false);}
this.amRadio=new DlRadioButton({parent:this.ampmVbox,group:ampmGroup,label:locale.ampm[0],value:"am"});this.amRadio.addEventListener("onChange",function(){this.recalculateEnd();}.$(this));this.pmRadio=new DlRadioButton({parent:this.ampmVbox,group:ampmGroup,label:locale.ampm[1],value:"pm"});this.pmRadio.addEventListener("onChange",function(){this.recalculateEnd();}.$(this));var startVbox=new DlVbox({parent:hbox});this._allDay=new DlCheckbox({parent:startVbox,label:"All day",checked:false});this._allDay.addEventListener("onChange",function(){swApp.log("_allDay onChange");var visible=true;if(this._allDay.checked()){visible=false;this.durationMinutes=1440;this.recalculateDuration();this.recalculateEnd();}
else{if(typeof durationMinutes=='undefined'||durationMinutes===null){this.durationMinutes=60;}
this.recalculateDuration();this.recalculateEnd();}
this.startHours.display(visible);this.startSep.display(visible);this.startMinutes.display(visible);this.spinnerHours.display(visible);this.hoursSep.display(visible);this.spinnerMinutes.display(visible);this.minutesSep.display(visible);if(useAmPm){this.ampmVbox.display(visible);}}.$(this));this._noStart=new DlCheckbox({parent:startVbox,label:"No Start",checked:false});this._noStart.addEventListener("onChange",function(){var visible=true;swApp.log("_noStart onChange");if(this._noStart.checked()){visible=false;}
if(this.hasFreq){visible=true;}
this._startDate.display(visible);this.startHours.display(visible);this.startSep.display(visible);this.startMinutes.display(visible);if(useAmPm){this.ampmVbox.display(visible);}
this._allDay.display(visible);this.startTZButtonMenu.display(visible);}.$(this));this.startTZButtonMenu=new DlButtonMenu({parent:hbox,label:swApp.syncSWorld.userSettingsDTO.timeZoneID,connected:true});this.startTZSelectHandler=function(selectedTZ){this.startTZButtonMenu._mainBtn.label(selectedTZ);this.startSelectedTZ=selectedTZ;};this.startTZMenu=swApp.createMenuTZ(swApp.tzMenuL,this.startTZSelectHandler.$(this));this.startTZButtonMenu.setMenu(this.startTZMenu);fg.addField({name:"start",label:"<b>Start:</b>",widget:hbox});this.durHbox=new DlHbox({});this.spinnerDays=new DlSpinner({parent:this.durHbox,minVal:0,maxVal:364,value:0});this.spinnerDays.addEventListener("onSpin",function(){this.recalculateEnd();}.$(this));this.durHbox.addSpace();this.daysSep=new DlLabel({parent:this.durHbox,label:" days "});this.durHbox.addSpace();this.spinnerHours=new DlSpinner({parent:this.durHbox,minVal:0,maxVal:23,value:0});this.spinnerHours.addEventListener("onSpin",function(){this.recalculateEnd();}.$(this));this.spinnerHours.onChange=this.recalculateEnd.$(this);this.durHbox.addSpace();this.hoursSep=new DlLabel({parent:this.durHbox,label:" hours "});this.durHbox.addSpace();this.spinnerMinutes=new DlSpinner({parent:this.durHbox,minVal:0,maxVal:60,value:0});this.spinnerMinutes.addEventListener("onSpin",function(){this.recalculateEnd();}.$(this));this.durHbox.addSpace();this.minutesSep=new DlLabel({parent:this.durHbox,label:" minutes"});this.durRet={};fg.addField({name:"duration",label:"<b>Duration:</b>",widget:this.durHbox},null,this.durRet);this.endValue=new DlLabel({label:"end value"});this.endFGRet={};this.endFG=fg.addField({name:"end",label:"<b>End:</b>",widget:this.endValue},null,this.endFGRet);this.dueHbox=new DlHbox({});this._dueDate=new DlButtonCalendar({parent:this.dueHbox,date:date,dateFormat:dateFormat,calendar:{firstDay:defaultStartDay,fixedFirstDay:false,withMenu:true}});this._dueDate.getCalendar().addEventListener("onSelect",function(){this.setData("swclicked",true);});this.dueHbox.addSpace();this.dueHours=new DlEntry({parent:this.dueHbox,width:"2em",validators:[this.hourValidator]});this.dueSep=new DlLabel({parent:this.dueHbox,label:"<b> : </b>"});this.dueMinutes=new DlEntry({parent:this.dueHbox,width:"2em",validators:[this.minuteValidator,this.lengthValidator]});var ampmGroupDue=DlRadioGroup.get();this.ampmVboxDue=new DlVbox({parent:this.dueHbox});if(!useAmPm){this.ampmVboxDue.display(false);}
this.amRadioDue=new DlRadioButton({parent:this.ampmVboxDue,group:ampmGroupDue,label:locale.ampm[0],value:"am"});this.pmRadioDue=new DlRadioButton({parent:this.ampmVboxDue,group:ampmGroupDue,label:locale.ampm[1],value:"pm"});var dueVbox=new DlVbox({parent:this.dueHbox});this._allDayDue=new DlCheckbox({parent:dueVbox,label:"All day",checked:false});this._allDayDue.addEventListener("onChange",function(){var visible=true;if(this._allDayDue.checked()){visible=false;}
this.dueHours.display(visible);this.dueSep.display(visible);this.dueMinutes.display(visible);if(useAmPm){this.ampmVboxDue.display(visible);}}.$(this));this._noDue=new DlCheckbox({parent:dueVbox,label:"No Due Date",checked:false});this._noDue.addEventListener("onChange",function(){var visible=true;if(this._noDue.checked()){visible=false;}
swApp.log("_noDue onChange visible:"+visible);this._dueDate.display(visible);this.dueHours.display(visible);this.dueSep.display(visible);this.dueMinutes.display(visible);if(useAmPm){this.ampmVboxDue.display(visible);}
this._allDayDue.display(visible);this.durRet.entry.display(!visible);}.$(this));this.dueRet={};fg.addField({name:"due",label:"<b>Due:</b>",widget:this.dueHbox},null,this.dueRet);};P.setHasFreq=function(aHasFreq){this.hasFreq=aHasFreq;};P.freqListener=function(value){if(value){this.hasFreq=true;this._noStart.checked(false);this._noStart.disabled(true);var dateSelected=this._startDate.getCalendar().getData("swclicked");if(!dateSelected){var now=new Date();now.setSeconds(0);now.setMinutes(0);now.setHours(now.getHours()+1);this._startDate.getCalendar().selectDate(now);this._startDate.getCalendar().setData("swclicked",true);}
return;}
this.hasFreq=false;this._noStart.disabled(false);};P.getStartDateTime=function(){var dateTime={};if(!this._noStart.disabled()&&this._noStart.checked()){return dateTime;}
dateTime.year=this._startDate.getCalendar().date.getFullYear();dateTime.month=this._startDate.getCalendar().date.getMonth()+1;dateTime.dayOfMonth=this._startDate.getCalendar().date.getDate();dateTime.hourOfDay=parseInt(this.startHours.getValue(),10);dateTime.minute=parseInt(this.startMinutes.getValue(),10);dateTime.second=0;return dateTime;};P.refreshView=function(swEvent,saveAll){if(swEvent){this._swEvent=swEvent;this.durationMinutes=this._swEvent._data.syncSWorldCalComp.durationMinutes;}
if(this._swEvent._data.syncSWorldCalComp.startTimeZone){this.startTZSelectHandler(this._swEvent._data.syncSWorldCalComp.startTimeZone);}
else{this.startTZSelectHandler(swApp.syncSWorld.userSettingsDTO.timeZoneID);}
var isEvent=false;if(this._swEvent._objectType=="SwEvent"){isEvent=true;}
this.dateFormat=swApp.getDateFormat();if(this._swEvent._data.syncSWorldCalComp.startIsDate){this._allDay.checked(true,false);}
else{this._allDay.checked(false,false);}
var eventDate=new Date();var taskDate=new Date();var startYear=this._swEvent.getStartYear();var startHourOfDay;var startMinute;var startMonth;if(!startYear){this._startDate.getCalendar().selectDate(eventDate);this._startDate.getCalendar().date=eventDate;this._startDate.getButton().label("None",true);this._startDate.getCalendar().setData("swclicked",false);this._noStart.checked(true,false);startHourOfDay=eventDate.getHours()+1;startMinute=0;}
else if(saveAll){this._noStart.checked(false,false);startMonth=this._swEvent._data.syncSWorldCalComp.startMonth-1;eventDate.setDate(1);eventDate.setMonth(startMonth);eventDate.setFullYear(this._swEvent._data.syncSWorldCalComp.startYear);eventDate.setDate(this._swEvent._data.syncSWorldCalComp.startDayOfMonth);this._startDate.getCalendar().selectDate(eventDate);this._startDate.getCalendar().date=eventDate;this._startDate.getButton().label(eventDate.print(this.dateFormat));this._startDate.getCalendar().setData("swclicked",true);if(this._swEvent._data.syncSWorldCalComp.startIsDate){startHourOfDay=0;startMinute=0;}
else{startHourOfDay=this._swEvent._data.syncSWorldCalComp.startHourOfDay;startMinute=this._swEvent._data.syncSWorldCalComp.startMinute;}}
else{this._noStart.checked(false,false);eventDate.setDate(1);eventDate.setMonth(this._swEvent.getStartMonth()-1);eventDate.setFullYear(this._swEvent.getStartYear());eventDate.setDate(this._swEvent.getStartDayOfMonth());this._startDate.getCalendar().selectDate(eventDate);this._startDate.getCalendar().date=eventDate;this._startDate.getButton().label(eventDate.print(this.dateFormat));this._startDate.getCalendar().setData("swclicked",true);startHourOfDay=this._swEvent.getStartHourOfDay();startMinute=this._swEvent.getStartMinute();}
var hourOfDay=parseInt(startHourOfDay,10);if(hourOfDay>11){this.amRadio.checked(false);this.pmRadio.checked(true);}
else{this.amRadio.checked(true);this.pmRadio.checked(false);}
var useAmPm=swApp.syncSWorld.userSettingsDTO.ampm;if(useAmPm){if(hourOfDay>12){this.startHours.setValue(hourOfDay-12);}
else{this.startHours.setValue(hourOfDay);}}
else{this.startHours.setValue(hourOfDay);}
this.startMinutes.setValue(startMinute);this.recalculateDuration();this.recalculateEnd();if(this._swEvent._objectType=="SwEvent"){this.endFGRet.entry.display(true);this.endFGRet.label.display(true);this.durRet.entry.display(true);this.dueRet.entry.display(false);this.dueRet.label.display(false);this._noStart.display(false);}
else{this._noStart.display(true);this.dueRet.entry.display(true);this.dueRet.label.display(true);this.endFGRet.entry.display(false);this.endFGRet.label.display(false);var dueYear=this._swEvent._data.syncSWorldCalComp.dueYear;if(!dueYear){this.durRet.entry.display(true);this._noDue.checked(true);this._dueDate.getCalendar().selectDate(taskDate);this._dueDate.getCalendar().date=taskDate;this._dueDate.getButton().label("None",true);this._dueDate.getCalendar().setData("swclicked",false);hourOfDay=0;this.dueMinutes.setValue(0);this._noDue.checked(true);}
else{this._noDue.checked(false);this.durRet.entry.display(false);taskDate.setDate(1);taskDate.setMonth(this._swEvent._data.syncSWorldCalComp.dueMonth-1);taskDate.setFullYear(this._swEvent._data.syncSWorldCalComp.dueYear);taskDate.setDate(this._swEvent._data.syncSWorldCalComp.dueDayOfMonth);this._dueDate.getCalendar().selectDate(taskDate);this._dueDate.getCalendar().date=taskDate;this._dueDate.getButton().label(taskDate.print(this.dateFormat));this._dueDate.getCalendar().setData("swclicked",true);var x=this._swEvent._data.syncSWorldCalComp.dueHourOfDay;if(this._swEvent._data.syncSWorldCalComp.dueIsDate||!x){this._swEvent._data.syncSWorldCalComp.dueIsDate=true;hourOfDay=0;this.dueMinutes.setValue(0);}
else{hourOfDay=parseInt(this._swEvent._data.syncSWorldCalComp.dueHourOfDay,10);this.dueMinutes.setValue(this._swEvent._data.syncSWorldCalComp.dueMinute);}}
if(hourOfDay>11){this.amRadioDue.checked(false);this.pmRadioDue.checked(true);}
else{this.amRadioDue.checked(true);this.pmRadioDue.checked(false);}
if(useAmPm){if(hourOfDay>12){this.dueHours.setValue(hourOfDay-12);}
else{this.dueHours.setValue(hourOfDay);}}
else{this.dueHours.setValue(hourOfDay);}
if(this._swEvent._data.syncSWorldCalComp.dueIsDate){this._allDayDue.checked(true,false);}
else{this._allDayDue.checked(false,false);}}};P.recalculateDuration=function(){if(this._swEvent._objectType=="SwTask"&&this._noDue.checked()){return;}
var days=0;var hours=0;var minutes=0;var startYear=this._swEvent.getStartYear();if(startYear){minutes+=this.durationMinutes;if(minutes>59){hours+=Math.floor(minutes/60);minutes=minutes%60;if(hours>23){days+=Math.floor(hours/24);hours=hours%24;}}}
this.spinnerDays.setValue(days);this.spinnerHours.setValue(hours);this.spinnerMinutes.setValue(minutes);};P.recalculateEnd=function(){var startYear=this._swEvent.getStartYear();if(!startYear){this.endValue.label("None");return;}
var useAmPm=swApp.syncSWorld.userSettingsDTO.ampm;var date=this._startDate.getCalendar().date;var hourOfDay=parseInt(this.startHours.getValue(),10);if(useAmPm&&this.pmRadio.checked()){if(hourOfDay<12){hourOfDay+=12;}}
var minute=parseInt(this.startMinutes.getValue(),10);var second=0;var end=swApp.recalculateEndWork(date.getFullYear(),date.getMonth()+1,date.getDate(),hourOfDay,minute,second,parseInt(this.spinnerMinutes.getValue(),10),this.spinnerHours.getValue(),this.spinnerDays.getValue());var locale=null;var userSettingsLocaleKey=swApp.syncSWorld.userSettingsDTO.language;if(swApp.syncSWorld.userSettingsDTO.country&&swApp.syncSWorld.userSettingsDTO.country.length>0){userSettingsLocaleKey+="-"+swApp.syncSWorld.userSettingsDTO.country;}
locale=jsLocaleData[userSettingsLocaleKey];date=new Date();date.setDate(1);date.setMonth(end.month-1);date.setFullYear(end.year);date.setDate(end.dayOfMonth);date.setHours(end.hourOfDay);date.setMinutes(end.minute);date.setSeconds(end.second);var endFormat=this.dateFormat+" - %H:%M ";if(useAmPm){endFormat=this.dateFormat+" - %l:%M ";}
if(this._allDay.checked()){endFormat=this.dateFormat;}
var value=date.print(endFormat);if(!this._allDay.checked()&&useAmPm){if(end.hourOfDay>11){date.setHours(end.hourOfDay-12);value=date.print(endFormat);value+=locale.ampm[1];}
else{value+=locale.ampm[0];}}
this.endValue.label(value);};P.saveToEvent=function(event){if(!this._allDay.checked()){if(!this.hourValidator.ok(this.startHours.getValue())){throw("Invalid value for the start hour:"+this.startHours.getValue());}
if(!this.minuteValidator.ok(this.startMinutes.getValue())){throw("Invalid value for the start minute:"+this.startMinutes.getValue());}}
var durationMinutes=parseInt(this.spinnerMinutes.getValue(),10);durationMinutes+=this.spinnerHours.getValue()*60;durationMinutes+=this.spinnerDays.getValue()*1440;event.durationMinutes=durationMinutes;var isTask=false;if(this.dueRet.label.display()){isTask=true;}
var noDueDate=true;if(!this._noDue.checked()){noDueDate=false;}
var dateSelectedDue=this._dueDate.getCalendar().getData("swclicked");if(!dateSelectedDue){noDueDate=true;}
if(noDueDate){delete event.dueTimeZone;delete event.dueYear;delete event.dueMonth;delete event.dueDayOfMonth;delete event.dueHourOfDay;delete event.dueMinute;delete event.dueSecond;delete event.dueIsDate;}
else{delete event.durationMinutes;if(!this.hourValidator.ok(this.dueHours.getValue())){throw("Invalid value for the due hour:"+this.dueHours.getValue());}
if(!this.minuteValidator.ok(this.dueMinutes.getValue())){throw("Invalid value for the due minute:"+this.dueMinutes.getValue());}
event.dueTimeZone=swApp.syncSWorld.userSettingsDTO.timeZoneID;var calDueDate=this._dueDate.getCalendar().date;event.dueYear=calDueDate.getFullYear();event.dueMonth=calDueDate.getMonth()+1;event.dueDayOfMonth=calDueDate.getDate();event.dueIsDate=this._allDayDue.checked();if(this._allDayDue.checked()){event.dueHourOfDay=0;event.dueMinute=0;event.dueSecond=0;}
else{event.dueHourOfDay=parseInt(this.dueHours.getValue(),10);var useAmPmDue=swApp.syncSWorld.userSettingsDTO.ampm;if(this.pmRadioDue.checked()&&useAmPmDue){if(event.dueHourOfDay<12){event.dueHourOfDay+=12;}}
event.dueMinute=this.dueMinutes.getValue();event.dueSecond=0;}}
var dateSelected=this._startDate.getCalendar().getData("swclicked");if((!dateSelected)||this._noStart.checked()){delete event.startTimeZone;delete event.startYear;delete event.startMonth;delete event.startDayOfMonth;delete event.startHourOfDay;delete event.startMinute;delete event.startSecond;delete event.startIsDate;delete event.durationMinutes;}
else{event.startTimeZone=this.startSelectedTZ;var calStartDate=this._startDate.getCalendar().date;event.startYear=calStartDate.getFullYear();event.startMonth=calStartDate.getMonth()+1;event.startDayOfMonth=calStartDate.getDate();event.startIsDate=this._allDay.checked();if(this._allDay.checked()){event.startHourOfDay=0;event.startMinute=0;event.startSecond=0;}
else{event.startHourOfDay=parseInt(this.startHours.getValue(),10);var useAmPm=swApp.syncSWorld.userSettingsDTO.ampm;if(this.pmRadio.checked()&&useAmPm){if(event.startHourOfDay<12){event.startHourOfDay+=12;}}
event.startMinute=parseInt(this.startMinutes.getValue(),10);event.startSecond=0;}
if(event.startTimeZone!=swApp.syncSWorld.userSettingsDTO.timeZoneID){var gmtStart=swApp.convertTZ2GMT(event.startTimeZone,event.startYear,event.startMonth,event.startDayOfMonth,event.startHourOfDay,event.startMinute,event.startSecond);if(typeof gmtStart=='undefined'){swApp.log("gmtStart undefined");}
var tzStart=swApp.convertGMT2TZ(swApp.syncSWorld.userSettingsDTO.timeZoneID,gmtStart.year,gmtStart.month,gmtStart.dayOfMonth,gmtStart.hourOfDay,gmtStart.minute,gmtStart.second);event.startTimeZone=swApp.syncSWorld.userSettingsDTO.timeZoneID;event.startYear=tzStart.year;event.startMonth=tzStart.month;event.startDayOfMonth=tzStart.dayOfMonth;event.startHourOfDay=tzStart.hourOfDay;event.startMinute=tzStart.minute;event.startSecond=tzStart.second;}}};P.addStartListener=function(listener){this.startListenerL.push(listener);};})();(function(){var BASE=SwRecurSelector.inherits(DlContainer);function SwRecurSelector(args){if(args){D.setDefaults(this,args);this._focusable=true;BASE.constructor.call(this,args);}
else{throw("SwRecurSelector missing args.");}}
eval(Dynarch.EXPORT("SwRecurSelector"));D.DEFAULT_ARGS={_swEvent:["swEvent",null]};P.initDOM=function(){BASE.initDOM.call(this);var userSettingsLocaleKey=swApp.syncSWorld.userSettingsDTO.language;if(swApp.syncSWorld.userSettingsDTO.country&&swApp.syncSWorld.userSettingsDTO.country.length>0){userSettingsLocaleKey+="-"+swApp.syncSWorld.userSettingsDTO.country;}
var locale=jsLocaleData[userSettingsLocaleKey];var mon2fri=" "+locale.weekDays3[2]+" - "+locale.weekDays3[6];var vbox=new DlVbox({parent:this});var freqOptions=[{label:swApp.i18n("Does not repeat"),value:"none"},{label:swApp.i18n("Daily"),value:"DAILY"},{label:swApp.i18n("Every weekday")+mon2fri,value:"everyWeekday"},{label:swApp.i18n("Weekly"),value:"WEEKLY"},{label:swApp.i18n("Monthly"),value:"MONTHLY"},{label:swApp.i18n("Yearly"),value:"YEARLY"}];this.exceptionLabel=new DlLabel({parent:vbox,label:swApp.i18n("This event is a recurrence exception.")});this.freqSelect=new DlRadioSelect({parent:vbox,options:freqOptions,value:"none"});this.freqSelect.addEventListener("onChange",function(old_val,new_val){if(old_val==new_val){return;}
if(this.freqListenerL){var hasFreq=true;if(new_val=="none"){hasFreq=false;}
for(var i=0;i<this.freqListenerL.length;++i){var listener=this.freqListenerL[i];listener(hasFreq);}}
this.freq=new_val;if(new_val=="everyWeekday"){this.freq="WEEKLY";this.bywdaylist=[2,3,4,5,6];}
else if(new_val=="WEEKLY"){this.bywdaylist=[];if(this._swEvent._data.syncSWorldCalComp.bywdaylist){this.bywdaylist=this._swEvent._data.syncSWorldCalComp.bywdaylist.slice();}
else{this.bywdaylist.push(this.startDate.getDay()+1);}}
this.refreshView();}.$(this));var tmp=vbox.addSpace();this.recurLabel=new DlLabel({parent:vbox,label:"Daily",className:"SwRecurSelector-recurLabel"});tmp=vbox.addSpace();this.xDayHbox=new DlHbox({parent:vbox});this.repeatEveryLabel=new DlLabel({parent:this.xDayHbox,label:"<b>Repeat every: </b>"});this.xDayHbox.addSpace();var one2ThirtyOptions=[];for(var i=1;i<=30;++i){var option={label:i,value:i};one2ThirtyOptions.push(option);}
this.repeatSelect=new DlRadioSelect({parent:this.xDayHbox,options:one2ThirtyOptions,value:1});this.repeatSelect.addEventListener("onChange",function(oldVal,newVal){if(newVal>1){this.repeatFreq.label(" days");}
else{this.repeatFreq.label(" day");}}.$(this));this.xDayHbox.addSpace();this.repeatFreq=new DlLabel({parent:this.xDayHbox,label:"days"});this.dayOfWeekHbox=new DlHbox({parent:vbox});var repeatGroup=DlRadioGroup.get();this.day1=new DlCheckbox({parent:this.dayOfWeekHbox,label:"S"});this.day2=new DlCheckbox({parent:this.dayOfWeekHbox,label:"M"});this.day3=new DlCheckbox({parent:this.dayOfWeekHbox,label:"T"});this.day4=new DlCheckbox({parent:this.dayOfWeekHbox,label:"W"});this.day5=new DlCheckbox({parent:this.dayOfWeekHbox,label:"T"});this.day6=new DlCheckbox({parent:this.dayOfWeekHbox,label:"F"});this.day7=new DlCheckbox({parent:this.dayOfWeekHbox,label:"S"});this.monthlyHbox=new DlHbox({parent:vbox});var repeatBy=new DlLabel({parent:this.monthlyHbox,label:"<b>"+swApp.i18n("Repeat By")+":</b>"});var monthVbox=new DlVbox({parent:this.monthlyHbox});this.monthlyGroup=DlRadioGroup.get();this.monthlyDayOfMonth=new DlRadioButton({parent:monthVbox,group:this.monthlyGroup,label:swApp.i18n("day of the month")});this.monthlyDayOfMonth.addEventListener("onCheck",function(){this.mdow.display(false);this.mdom.display(true);}.$(this));this.monthlyDayOfWeek=new DlRadioButton({parent:monthVbox,group:this.monthlyGroup,label:swApp.i18n("day of the week")});this.monthlyDayOfWeek.addEventListener("onCheck",function(){this.mdow.display(true);this.mdom.display(false);}.$(this));this.mdow=new DlHbox({parent:monthVbox});var monthLastFirstOptions=[{label:"First",value:1},{label:"Second",value:2},{label:"Third",value:3},{label:"Fourth",value:4},{label:"Fifth",value:5},{label:"Last",value:-1}];this.monthLastFirst=new DlRadioSelect({parent:this.mdow,options:monthLastFirstOptions,value:1});var dayOfWeekOptions=[];for(i=1;i<locale.weekDays.length;++i){option={label:locale.weekDays[i],value:i};dayOfWeekOptions.push(option);}
this.monthlyDayOfWeekSelect=new DlRadioSelect({parent:this.mdow,options:dayOfWeekOptions,value:1});var ofEvery=new DlLabel({parent:this.mdow,label:"of every"});this.monthSpinner=new DlSpinner({parent:this.mdow,minVal:1,maxVal:12,value:1});this.monthSpinner.setSize({x:30});var xMonths=new DlLabel({parent:this.mdow,label:"month(s)"});this.mdom=new DlHbox({parent:monthVbox});this.mdomDOM=new DlLabel({parent:this.mdom,label:"Day "});this.mdom.addSpace();this.mdomDayOfMonth=new DlLabel({parent:this.mdom,label:"1"});this.mdom.addSpace();this.mdomOfEvery=new DlLabel({parent:this.mdom,label:" of every "});this.mdom.addSpace();this.monthSpinnerDOM=new DlSpinner({parent:this.mdom,minVal:1,maxVal:12,value:1});this.monthSpinnerDOM.setSize({x:30});this.mdom.addSpace();var xMonthsDOM=new DlLabel({parent:this.mdom,label:"month(s)"});vbox.addSpace();this.yearlyHbox=new DlHbox({parent:vbox});var yearlyRepeatBy=new DlLabel({parent:this.yearlyHbox,label:"<b>"+swApp.i18n("Repeat By")+":</b>"});var yearVbox=new DlVbox({parent:this.yearlyHbox});this.yearlyGroup=DlRadioGroup.get();this.yearlyDayOfMonth=new DlRadioButton({parent:yearVbox,group:this.yearlyGroup,label:swApp.i18n("day of the month")});this.yearlyDayOfMonth.addEventListener("onCheck",function(){this.yearlyMdow.display(false);}.$(this));this.yearlyDayOfWeek=new DlRadioButton({parent:yearVbox,group:this.yearlyGroup,label:swApp.i18n("day of the week")});this.yearlyDayOfWeek.addEventListener("onCheck",function(){this.yearlyMdow.display(true);}.$(this));this.yearlyMdow=new DlHbox({parent:yearVbox});this.yearLastFirst=new DlRadioSelect({parent:this.yearlyMdow,options:monthLastFirstOptions,value:1});var yearlyDayOfWeekOptions=[];for(i=1;i<locale.weekDays.length;++i){option={label:locale.weekDays[i],value:i};yearlyDayOfWeekOptions.push(option);}
this.yearlyDayOfWeekSelect=new DlRadioSelect({parent:this.yearlyMdow,options:yearlyDayOfWeekOptions,value:1});this.yearlyMdow.addSpace();var of=new DlLabel({parent:this.yearlyMdow,label:"of"});this.yearlyMdow.addSpace();var yearlyMonthOptions=[];for(i=0;i<locale.months.length;++i){option={label:locale.months[i],value:i};yearlyMonthOptions.push(option);}
this.yearlyMonthSelect=new DlRadioSelect({parent:this.yearlyMdow,options:yearlyMonthOptions,value:0});tmp=vbox.addSpace();this.rangeHbox=new DlHbox({parent:vbox});var starts=new DlLabel({parent:this.rangeHbox,label:"<b>Starts: </b>"});var date=new Date();this.dateFormat=swApp.getDateFormat();date.setDate(1);date.setMonth(this._swEvent._data.syncSWorldCalComp.startMonth-1);date.setFullYear(this._swEvent._data.syncSWorldCalComp.startYear);date.setDate(this._swEvent._data.syncSWorldCalComp.startDayOfMonth);this.rangeStart=new DlLabel({parent:this.rangeHbox,label:date.print(this.dateFormat)});var space=this.rangeHbox.addSpace();var ends=new DlLabel({parent:this.rangeHbox,label:"<b>Ends: </b>"});var rangeVbox=new DlVbox({parent:this.rangeHbox});this.endsGroup=DlRadioGroup.get();this.never=new DlRadioButton({parent:rangeVbox,group:this.endsGroup,label:"Never"});var endAfterHbox=new DlHbox({parent:rangeVbox});this.endAfter=new DlRadioButton({parent:endAfterHbox,group:this.endsGroup,label:"End after:"});this.endAfterSpinner=new DlSpinner({parent:endAfterHbox,minVal:0,maxVal:999,value:0});this.endAfterSpinner.setSize({x:30});endAfterHbox.addSpace();this.endAfterLabel=new DlLabel({parent:endAfterHbox,label:" occurrences"});var untilHbox=new DlHbox({parent:rangeVbox,fillParent:true});this.until=new DlRadioButton({parent:untilHbox,group:this.endsGroup,label:"Until"});var defaultStartDay=0;if(swApp.syncSWorld.userSettingsDTO.firstWeekDay=="2"){defaultStartDay=1;}
this.untilTime=new DlButtonCalendar({parent:untilHbox,dateFormat:this.dateFormat,date:date,calendar:{firstDay:defaultStartDay,fixedFirstDay:false,withMenu:true}});this.untilTime.getCalendar().selectDate(date);this.untilTime.getCalendar().date=date;this.untilTime.getButton().label(date.print(this.dateFormat));};P.startListener=function(date){this.startDate=date;this.refreshStartDate();};P.refreshStartDate=function(){this.rangeStart.label(this.startDate.print(this.dateFormat));this.mdomDayOfMonth.label(this.startDate.getDate());};P.getFreqSelectValue=function(){return this.freqSelect.getValue();};P.refreshView=function(swEvent){if(swEvent&&swEvent.getStartDate()){this._swEvent=swEvent;this.startDate=new Date();this.startDate.setDate(1);this.startDate.setMonth(this._swEvent._data.syncSWorldCalComp.startMonth-1);this.startDate.setFullYear(this._swEvent._data.syncSWorldCalComp.startYear);this.startDate.setDate(this._swEvent._data.syncSWorldCalComp.startDayOfMonth);this.count=0;if(this._swEvent._data.syncSWorldCalComp.count){this.count=this._swEvent._data.syncSWorldCalComp.count;}
this.interval=1;if(this._swEvent._data.syncSWorldCalComp.interval){this.interval=this._swEvent._data.syncSWorldCalComp.interval;}
this.freq=this._swEvent._data.syncSWorldCalComp.freq;this.bywdaylist=[];if(this._swEvent._data.syncSWorldCalComp.bywdaylist){this.bywdaylist=this._swEvent._data.syncSWorldCalComp.bywdaylist.slice();}
else{this.bywdaylist.push(this.startDate.getDay()+1);}}
this.never.checked(true);var mon=false;var tue=false;var wed=false;var thu=false;var fri=false;var i=0;if(this._swEvent._data.parentSWorldEvent){this.freqSelect.display(false);this.exceptionLabel.display(true);}
else{this.freqSelect.display(true);this.exceptionLabel.display(false);}
if(!this.freq||this.freq=="none"){this.freqSelect.setValue("none");this.recurLabel.display(false);this.xDayHbox.display(false);this.dayOfWeekHbox.display(false);this.monthlyHbox.display(false);this.yearlyHbox.display(false);this.rangeHbox.display(false);delete this.bywdaylist;}
else if(this.freq=='WEEKLY'){this.freqSelect.setValue("WEEKLY",true,true);this.recurLabel.label("Weekly");this.recurLabel.display(true);this.xDayHbox.display(true);this.dayOfWeekHbox.display(true);this.monthlyHbox.display(false);this.yearlyHbox.display(false);this.rangeHbox.display(true);if(this.interval>1){this.repeatFreq.label(" weeks");}
else{this.repeatFreq.label(" week");}
this.day1.checked(false);this.day2.checked(false);this.day3.checked(false);this.day4.checked(false);this.day5.checked(false);this.day6.checked(false);this.day7.checked(false);for(i=0;i<this.bywdaylist.length;++i){if(this.bywdaylist[i]==1){this.day1.checked(true);}
else if(this.bywdaylist[i]==2){this.day2.checked(true);}
else if(this.bywdaylist[i]==3){this.day3.checked(true);}
else if(this.bywdaylist[i]==4){this.day4.checked(true);}
else if(this.bywdaylist[i]==5){this.day5.checked(true);}
else if(this.bywdaylist[i]==6){this.day6.checked(true);}
else if(this.bywdaylist[i]==7){this.day7.checked(true);}}}
else if(this.freq=='MONTHLY'){delete this.bywdaylist;this.freqSelect.setValue("MONTHLY");this.recurLabel.display(true);this.recurLabel.label("Monthly");this.xDayHbox.display(false);this.monthlyHbox.display(true);this.yearlyHbox.display(false);this.rangeHbox.display(true);if(this.interval>1){this.repeatFreq.label(" months");}
else{this.repeatFreq.label(" month");}
this.resetMonthlyHbox();}
else if(this.freq=='YEARLY'){delete this.bywdaylist;this.freqSelect.setValue("YEARLY");this.recurLabel.display(true);this.recurLabel.label("Yearly");this.xDayHbox.display(true);this.dayOfWeekHbox.display(false);this.monthlyHbox.display(false);this.yearlyHbox.display(true);this.rangeHbox.display(true);if(this.interval>1){this.repeatFreq.label(" years");}
else{this.repeatFreq.label(" year");}
this.resetYearlyHbox();}
else if(this.freq=='DAILY'){mon=false;tue=false;wed=false;thu=false;fri=false;if(this.bywdaylist){for(i=0;i<this.bywdaylist.length;++i){var bywday=this.bywdaylist[i];if(bywday==2){mon=true;}
else if(bywday==3){tue=true;}
else if(bywday==4){wed=true;}
else if(bywday==5){thu=true;}
else if(bywday==6){fri=true;}}}
if(mon&&tue&&wed&&thu&&fri){this.freqSelect.setValue("everyWeekday");this.recurLabel.label("Weekly on weekdays");}
else{this.freqSelect.setValue("DAILY");this.recurLabel.label("Daily");if(this.count>0){this.recurLabel.label("Daily, "+this.count+" times");}
else{this.recurLabel.label("Daily");}}
if(this.interval>1){this.repeatFreq.label(" days");}
else{this.repeatFreq.label(" day");}
this.recurLabel.display(true);this.xDayHbox.display(true);this.dayOfWeekHbox.display(false);this.monthlyHbox.display(false);this.yearlyHbox.display(false);this.rangeHbox.display(true);}
var untilDate=new Date();var untilChecked=false;if(this._swEvent._data.syncSWorldCalComp.untilYear){untilDate.setDate(1);untilDate.setMonth(this._swEvent._data.syncSWorldCalComp.untilMonth-1);untilDate.setYear(this._swEvent._data.syncSWorldCalComp.untilYear);untilDate.setDate(this._swEvent._data.syncSWorldCalComp.untilDayOfMonth);untilChecked=true;}
this.until.checked(untilChecked);this.untilTime.getCalendar().selectDate(untilDate);this.untilTime.getCalendar().date=untilDate;this.untilTime.getButton().label(untilDate.print(this.dateFormat));this.untilTime.display(true);this.untilTime.__doLayout();this.refreshStartDate();if(this.freq){this.repeatSelect.setValue(this.interval);if(this.count>0){this.endAfterSpinner.setValue(this.count);this.endAfter.checked(true);}
else{this.endAfterSpinner.setValue(0);}}};P.resetMonthlyHbox=function(){if(this._swEvent._data.syncSWorldCalComp.bymodaylist){this.monthlyDayOfMonth.checked(true);this.dayOfWeekHbox.display(false);this.mdomDayOfMonth.label(this.startDate.getDate());this.monthSpinnerDOM.setValue(this._swEvent._data.syncSWorldCalComp.interval);}
else{this.monthlyDayOfWeek.checked(true);if(this._swEvent._data.syncSWorldCalComp.bysetpos){this.monthLastFirst.setValue(this._swEvent._data.syncSWorldCalComp.bysetpos);}
else{this.monthLastFirst.setValue(Math.ceil(this.startDate.getDate()/7));}
if(this._swEvent._data.syncSWorldCalComp.bywdaylist&&this._swEvent._data.syncSWorldCalComp.bywdaylist.length>0){this.monthlyDayOfWeekSelect.setValue(this._swEvent._data.syncSWorldCalComp.bywdaylist[0]);}
else{this.monthlyDayOfWeekSelect.setValue(this.startDate.getDay()+1);}
if(this._swEvent._data.syncSWorldCalComp.interval){this.monthSpinner.setValue(this._swEvent._data.syncSWorldCalComp.interval);}
else{this.monthSpinner.setValue(1);}}};P.resetYearlyHbox=function(){var useDayOfMonth=true;if(this._swEvent._data.syncSWorldCalComp.bysetpos){useDayOfMonth=false;}
else if(this._swEvent._data.syncSWorldCalComp.bywdaylist&&this._swEvent._data.syncSWorldCalComp.bywdaylist.length>0){useDayOfMonth=false;}
if(useDayOfMonth){this.yearlyDayOfMonth.checked(true);}
else{this.yearlyDayOfWeek.checked(true);if(this._swEvent._data.syncSWorldCalComp.bysetpos){this.yearLastFirst.setValue(this._swEvent._data.syncSWorldCalComp.bysetpos);}
else{this.yearLastFirst.setValue(Math.ceil(this.startDate.getDate()/7));}
var weekDay=null;if(this._swEvent._data.syncSWorldCalComp.bywdaylist&&this._swEvent._data.syncSWorldCalComp.bywdaylist.length>0){weekDay=this.convertMozBywdaylist(this._swEvent._data.syncSWorldCalComp.bywdaylist[0]);this.yearLastFirst.setValue(weekDay.ordwk);}
if(weekDay){this.yearlyDayOfWeekSelect.setValue(weekDay.weekDayNum);}
else{this.yearlyDayOfWeekSelect.setValue(this.startDate.getDay()+1);}
this.yearlyMonthSelect.setValue(this.startDate.getMonth());}};P.convertMozBywdaylist=function(aMozValue){if(!aMozValue){return{};}
var mozValue=""+aMozValue;var ordwk=0;var weekDayNum=1;var index=mozValue.indexOf(",");if(index>0){ordwk=parseInt(mozValue.substring(0,index),10);index+=1;}
else{index=0;}
weekDayNum=parseInt(mozValue.substring(index),10);if(weekDayNum>7){ordwk=weekDayNum/8;weekDayNum=weekDayNum%8;}
var weekDay={};weekDay.ordwk=Math.floor(ordwk);weekDay.weekDayNum=Math.floor(weekDayNum);return weekDay;};P.removeAll=function(event){delete event.freq;delete event.bywdaylist;delete event.count;delete event.interval;};P.saveToEvent=function(event){if(this.freq=="none"){this.removeAll(event);return;}
else if(this.freq=="WEEKLY"){event.freq=this.freq;event.bywdaylist=[];if(this.day1.checked()){event.bywdaylist.push(1);}
if(this.day2.checked()){event.bywdaylist.push(2);}
if(this.day3.checked()){event.bywdaylist.push(3);}
if(this.day4.checked()){event.bywdaylist.push(4);}
if(this.day5.checked()){event.bywdaylist.push(5);}
if(this.day6.checked()){event.bywdaylist.push(6);}
if(this.day7.checked()){event.bywdaylist.push(7);}}
else if(this.freq=="DAILY"){event.freq=this.freq;delete event.bywdaylist;}
else if(this.freq=="MONTHLY"){event.freq=this.freq;if(this.monthlyDayOfMonth.checked()){delete event.bysetpos;delete event.bywdaylist;event.interval=this.monthSpinnerDOM.getValue();}
if(this.monthlyDayOfWeek.checked()){event.bysetpos=this.monthLastFirst.value();event.bywdaylist=[];event.bywdaylist.push(this.monthlyDayOfWeekSelect.value());event.interval=this.monthSpinner.getValue();}}
else if(this.freq=="YEARLY"){event.freq=this.freq;if(this.yearlyDayOfMonth.checked()){delete event.bysetpos;delete event.bywdaylist;event.bymodaylist=[];event.bymodaylist.push(this.startDate.getDate());}
if(this.yearlyDayOfWeek.checked()){event.bysetpos=this.yearLastFirst.value();event.bywdaylist=[];event.bywdaylist.push(this.yearlyDayOfWeekSelect.value());event.bymonth=this.yearlyMonthSelect.value();}}
else{event.freq=this.freq;delete event.bywdaylist;}
event.interval=this.repeatSelect.getValue();if(this.endAfter.checked()){event.count=this.endAfterSpinner.getValue();}
else{delete event.count;}
if(this.until.checked()){var untilDate=this.untilTime.getCalendar().date;event.untilTimeZone=swApp.syncSWorld.userSettingsDTO.timeZoneID;event.untilYear=untilDate.getFullYear();event.untilMonth=untilDate.getMonth()+1;event.untilDayOfMonth=untilDate.getDate();}
else{delete event.untilTimeZone;delete event.untilYear;delete event.untilMonth;delete event.untilDayOfMonth;delete event.untilHourOfDay;delete event.untilMinute;delete event.untilSecond;}};P.addFreqListener=function(aFreqListener){if(!this.freqListenerL){this.freqListenerL=[];}
this.freqListenerL.push(aFreqListener);};})();SWApp.prototype.prefsView=function(){document.title=this.i18n("ScheduleWorld Settings");var getUserSettings={};getUserSettings.test="test";if(!this.leftNotebook.display()){this.leftNotebook.display(true);this.desktopResizeBar.display(true);this.toolbarNotebook.display(true);this.desktopLayout.doLayout();}
var children=this.prefsContainerL.children();if(children&&children.length>0){this.leftNotebook.showPane(this.PREFS_PAGE);this.toolbarNotebook.showPane(this.TOOLBAR_PREFS_PAGE);swApp.rightNotebook.showPane(swApp.PREFS_GENERAL_PAGE);swApp.generalButton.checked(true);this.syncSWorld.sendRequest(getUserSettings,"getUserSettings",swApp.getUserSettingsRespHandler,swApp.getUserSettingsRespHandler);return;}
this.toolbarNotebook.showPane(this.TOOLBAR_PREFS_PAGE);var leftVBox=new DlVbox({parent:this.prefsContainerL});this.selPrefGroup=DlRadioGroup.get();swApp.generalButton=null;var item=null;var button=null;function createPrefItem(parent,type,label,value){item=new DlTreeItem({parent:parent,itemClassName:"DlTreeItem-withRadio"});button=new DlRadioButton({parent:item,label:label,value:value,group:swApp.selPrefGroup});button.type=type;if(value=="General"){swApp.generalButton=button;}
return item;}
this.prefTree=new DlTree({parent:leftVBox});var settingsItem=new DlTreeItem({parent:this.prefTree,label:"<b>"+this.i18n("Settings")+"</b>"});createPrefItem(settingsItem,"Settings",swApp.i18n("General"),"General");createPrefItem(settingsItem,"Settings",swApp.i18n("SyncML"),"SyncML");createPrefItem(settingsItem,"Settings",swApp.i18n("SyncEvolution"),"SyncEvolution");createPrefItem(settingsItem,"Settings",swApp.i18n("GMail"),"GMail");createPrefItem(settingsItem,"Settings",swApp.i18n("Funambol Clients"),"Funambol");this.syncMLTreeItem=new DlTreeItem({parent:this.prefTree,label:"<b>"+this.i18n("SyncML Devices")+"</b>"});this.calendarsTreeItem=new DlTreeItem({parent:this.prefTree,label:"<b>"+this.i18n("Calendars")+"</b>"});this.selPrefGroup.addEventListener("onChange",function(){button=swApp.selPrefGroup.getSelected()[0];var value=swApp.selPrefGroup.getValue()[0];if(button.type=="Settings"){if(value=="General"){swApp.prefsViewGeneral();}
else if(value=="SyncML"){swApp.prefsViewSyncML();}
else if(value=="SyncEvolution"){swApp.prefsViewEvolution();}
else if(value=="GMail"){swApp.prefsViewGMail();}
else if(value=="Funambol"){swApp.prefsViewFunambol();}}
else if(button.type=="SyncMLDevice"){swApp.prefsViewSyncMLDevice(value);}
else if(button.type=="Calendar"){swApp.prefsViewCalendar(value);}});this.leftNotebook.showPane(this.PREFS_PAGE);swApp.generalButton.checked(true);this.syncSWorld.sendRequest(getUserSettings,"getUserSettings",swApp.getUserSettingsRespHandler,swApp.getUserSettingsRespHandler);};SWApp.prototype.getUserSettingsRespHandler=function(response){if(response&&response.userSettingsDTO){swApp.syncSWorld.userSettingsDTO=response.userSettingsDTO;swApp.syncSWorld.saveUserSettingsDTO();}
var children=null;var i;var item;var button;if(swApp.syncSWorld.userSettingsDTO){children=swApp.syncMLTreeItem.children();for(i=0;i<children.length;++i){children[i].destroyChildWidgets();}
var syncMLDeviceDTOMap=swApp.syncSWorld.userSettingsDTO.syncMLDeviceDTOMap;for(var deviceName in syncMLDeviceDTOMap){if(syncMLDeviceDTOMap.hasOwnProperty(deviceName)){var syncMLDevice=syncMLDeviceDTOMap[deviceName];item=new DlTreeItem({parent:swApp.syncMLTreeItem,itemClassName:"DlTreeItem-withRadio"});button=new DlRadioButton({parent:item,label:"<b>"+syncMLDevice.description+"</b> ("+deviceName+")",value:deviceName,group:swApp.selPrefGroup});button.type="SyncMLDevice";}}}
if(swApp.syncSWorld.userSettingsDTO){children=swApp.calendarsTreeItem.children();for(i=0;i<children.length;++i){children[i].destroyChildWidgets();}
var iCalendarInfoL=swApp.syncSWorld.userSettingsDTO.ICalendarInfoL;for(i=0;i<iCalendarInfoL.length;++i){var iCalendarInfo=iCalendarInfoL[i];item=new DlTreeItem({parent:swApp.calendarsTreeItem,itemClassName:"DlTreeItem-withRadio"});button=new DlRadioButton({parent:item,label:iCalendarInfo.name,value:iCalendarInfo.ICalendarID,group:swApp.selPrefGroup});button.type="Calendar";}}
swApp.prefsViewGeneral();swApp.leftNotebook.showPane(swApp.PREFS_PAGE);swApp.rightNotebook.showPane(swApp.PREFS_GENERAL_PAGE);swApp.toolbarNotebook.showPane(swApp.TOOLBAR_PREFS_PAGE);if(response&&response.userSettingsDTO){swApp.syncSWorld.saveUserSettingsDTO();}
if(swApp.prefsInitDoneListener){var f=swApp.prefsInitDoneListener.$(swApp);delete swApp.prefsInitDoneListener;f();}};SWApp.prototype.prefsGeneralClickSave=function(){if(swApp.newPasswordEntry.getValue()!=swApp.newPasswordConfirmEntry.getValue()){alert(swApp.i18n("The passwords are not the same."));return;}
if(swApp.emailEntry.getValue().length===0&&swApp.emailConfirmEntry.getValue().length>0){alert(swApp.i18n("Confirmation number present but missing email."));return;}
this.savePrefsGeneral();};SWApp.prototype.prefsViewGeneral=function(){var children=this.prefsContainerRGeneral.children();var userSettingsLocaleKey=swApp.syncSWorld.userSettingsDTO.language;if(swApp.syncSWorld.userSettingsDTO.country&&swApp.syncSWorld.userSettingsDTO.country.length>0){userSettingsLocaleKey+="-"+swApp.syncSWorld.userSettingsDTO.country;}
var locale=jsLocaleData[userSettingsLocaleKey];if(children&&children.length>0){var userTimeZoneID=swApp.syncSWorld.userSettingsDTO.timeZoneID;this.prefsTZButtonMenu._mainBtn.label(userTimeZoneID);swApp.setGeneralView(userSettingsLocaleKey,locale);this.prefsSaveButton.removeAllListeners("onClick");this.prefsSaveButton.addEventListener("onClick",this.prefsGeneralClickSave.$(this));this.rightNotebook.showPane(this.PREFS_GENERAL_PAGE);return;}
var layout=new DlLayout({parent:this.prefsContainerRGeneral,outerSpace:10});var bottom=new DlContainer({});var box=new DlHbox({parent:bottom});var saveButton=new DlButton({parent:box,label:this.i18n("Save")});this.savePrefsGeneral=function(){var saveSettings={};saveSettings.ampm=swApp.useAmPmButton.checked();swApp.syncSWorld.userSettingsDTO.ampm=saveSettings.ampm;if(swApp.firstDaySun.checked()){saveSettings.firstWeekDay="1";swApp.syncSWorld.userSettingsDTO.firstWeekDay="1";}
else if(swApp.firstDayMon.checked()){saveSettings.firstWeekDay="2";swApp.syncSWorld.userSettingsDTO.firstWeekDay="2";}
saveSettings.timeZoneID=swApp.prefsTimeZoneID;swApp.syncSWorld.userSettingsDTO.timeZoneID=saveSettings.timeZoneID;var localeKey=swApp.localeRadioSelect.getValue();if(this.initialLocaleKey!=localeKey){this.localeChanged=true;}
else{this.localeChanged=true;}
var locale=jsLocaleData[localeKey];var language=localeKey;var index=localeKey.indexOf("-");if(index>0){language=localeKey.substring(0,index);}
saveSettings.locale=localeKey;swApp.syncSWorld.userSettingsDTO.language=language;swApp.syncSWorld.userSettingsDTO.country=locale.country;if(swApp.newPasswordEntry.getValue().length>0){saveSettings.newPassword=swApp.newPasswordEntry.getValue();}
saveSettings.sw2DateFormat=swApp.dateFormatRadio.getValue();swApp.syncSWorld.userSettingsDTO.sw2DateFormat=saveSettings.sw2DateFormat;if(swApp.emailEntry.getValue().length>0){saveSettings.email=swApp.emailEntry.getValue();}
if(swApp.emailConfirmEntry.getValue().length>0){saveSettings.emailConfirmation=swApp.emailConfirmEntry.getValue();}
swApp.syncSWorld.saveUserSettingsDTO();swApp.syncSWorld.sendRequest(saveSettings,"saveSettings",swApp.savedSettings());swApp.newPasswordEntry.setValue("");swApp.newPasswordConfirmEntry.setValue("");};saveButton.addEventListener("onClick",this.prefsGeneralClickSave.$(this));this.prefsSaveButton.removeAllListeners("onClick");this.prefsSaveButton.addEventListener("onClick",this.prefsGeneralClickSave.$(this));layout.packWidget(bottom,{pos:"bottom",before:10,after:10});var prefs=new SwColLayout({});layout.packWidget(prefs,{pos:"top",fill:"*"});var content=String.buffer("<col class='label'>",this.i18n("Time Format"),": <br /> <span class='help'>If you save a different value you must reload the page or view a different calendar day.</span> </col> <col> <lcont>twoFourTime</lcont> <lcont>ampm</lcont> </col>","<sep/>","<col class='label'>",this.i18n("Date Format"),":</col> <col id='$ID_dateFormatSelect'></col>","<sep/>","<col class='label'>",this.i18n("First Week Day"),": <br /> <span class='help'>If you save a different value you must reload the page.</span> </col> <col> <lcont>firstDaySun</lcont> <lcont>firstDayMon</lcont> </col>","<sep/>","<col class='label'>",this.i18n("Time Zone"),": <br /> <span class='help'>Your default time zone. Your current view time zone may be different.</span> </col> <col id='$ID_timeZone'></col>","<sep/>","<col class='label'>",this.i18n("Language / Country"),": <br /> <span class='help'>If you save a different language/country you must reload the page.</span> </col> <col id='$ID_localeSelect'></col>","<sep/>","<col class='label'>Change Password: <br /> <span class='help'>Both fields must contain the same password.</span> </col> <col> <wcont>newPassword</wcont> <wcont>newPasswordConfirm</wcont> </col>","<sep/>","<col class='label'>Change Email: <br /> <span class='help'>Step 1: enter your new email address and click 'Save'.</span> <br /> <span class='help'>Step 2: Your new email address will receive an email with a confirmation number.</span><br /> <span class='help'>Step 3: enter your confirmation number and click 'Save'.</span></col> <col> <lcont>currentEmail</lcont> <wcont>currentEmailValue</wcont> <lcont>changeEmail</lcont> <wcont>newEmail</wcont><lcont>emailConfirm</lcont><lcont>newEmailConfirm</lcont></col>");var ids=prefs.setContent(content.get());var tmp=new DlLabel({parent:prefs,appendArgs:ids.changeEmail,label:"New Email:",className:"label"});tmp=new DlLabel({parent:prefs,appendArgs:ids.emailConfirm,label:"Confirmation Number:",className:"label"});tmp=new DlLabel({parent:prefs,appendArgs:ids.currentEmail,label:"Current Email:",className:"label"});tmp=new DlLabel({parent:prefs,appendArgs:ids.currentEmailValue,label:swApp.syncSWorld.userSettingsDTO.emailC[0],className:"label"});this.ampmGroup=DlRadioGroup.get();var useAmPm=swApp.syncSWorld.userSettingsDTO.ampm;var use24=!swApp.syncSWorld.userSettingsDTO.ampm;this.use24Button=new DlRadioButton({parent:prefs,appendArgs:ids.twoFourTime,label:"tmp",checked:use24,group:this.ampmGroup});this.useAmPmButton=new DlRadioButton({parent:prefs,appendArgs:ids.ampm,label:"tmp",checked:useAmPm,group:this.ampmGroup});swApp.prefsTimeZoneID=this.syncSWorld.userSettingsDTO.timeZoneID;this.prefsTZButtonMenu=new DlButtonMenu({parent:prefs,appendArgs:ids.timeZone,label:swApp.prefsTimeZoneID,connected:true});tzSelectHandler=function(selectedTZ){swApp.prefsTZButtonMenu._mainBtn.label(selectedTZ);swApp.prefsTimeZoneID=selectedTZ;};this.prefsTZMenu=this.createMenuTZ(this.tzMenuL,tzSelectHandler);this.prefsTZButtonMenu.setMenu(this.prefsTZMenu);var localeOptions=buildLocaleOptions();this.localeRadioSelect=new DlRadioSelect({parent:prefs,appendArgs:ids.localeSelect,options:localeOptions});this.localeRadioSelect.addEventListener("onChange",function(name,item,widget){var locale=jsLocaleData[item];swApp.setGeneralView(item,locale);});this.firstWeekDayGroup=DlRadioGroup.get();this.firstDaySun=new DlRadioButton({parent:prefs,appendArgs:ids.firstDaySun,label:"tmp",group:this.firstWeekDayGroup,checked:true});this.firstDayMon=new DlRadioButton({parent:prefs,appendArgs:ids.firstDayMon,label:"tmp",group:this.firstWeekDayGroup,checked:false});this.newPasswordEntry=new DlEntry({parent:prefs,appendArgs:ids.newPassword,type:"password"});this.newPasswordConfirmEntry=new DlEntry({parent:prefs,appendArgs:ids.newPasswordConfirm,type:"password"});this.emailEntry=new DlEntry({parent:prefs,appendArgs:ids.newEmail});this.emailConfirmEntry=new DlEntry({parent:prefs,appendArgs:ids.newEmailConfirm});this.dateFormatRadio=new DlRadioSelect({parent:prefs,appendArgs:ids.dateFormatSelect});this.setGeneralView(userSettingsLocaleKey,locale);this.rightNotebook.showPane(this.PREFS_GENERAL_PAGE);};SWApp.prototype.setGeneralView=function(localeKey,locale){this.localeRadioSelect.value(localeKey);this.initialLocaleKey=localeKey;swApp.useAmPmButton.label("( "+locale.ampm[0]+" / "+locale.ampm[1]+")");swApp.use24Button.label(this.i18n("24 Hour"));var useAmPm=swApp.syncSWorld.userSettingsDTO.ampm;var use24=!swApp.syncSWorld.userSettingsDTO.ampm;this.use24Button.checked(use24);this.useAmPmButton.checked(useAmPm);var radio=swApp.dateFormatRadio;var savedValue=radio.getValue();if(!savedValue){savedValue=swApp.syncSWorld.userSettingsDTO.sw2DateFormat;if(!savedValue){savedValue="mmm d yyyy";}}
var jan=locale.months3[0];var options=[{label:"2008-12-31",value:"yyyy-m-d"},{label:"31/12/2008",value:"d/m/yyyy"},{label:"12/31/2008",value:"m/d/yyyy"},{label:jan+" 15 2008",value:"mmm d yyyy"}];radio.setOptions(options);radio.setValue(savedValue,true);var sunday=locale.weekDays[1];var monday=locale.weekDays[2];swApp.firstDaySun.label(sunday,true);swApp.firstDayMon.label(monday,true);if(swApp.syncSWorld.userSettingsDTO.firstWeekDay=="2"){swApp.firstDaySun.checked(false);swApp.firstDayMon.checked(true);}
else{swApp.firstDaySun.checked(true);swApp.firstDayMon.checked(false);}};SWApp.prototype.savedSettings=function(response){if(response&&response.reloadBrowser){window.location.reload(true);}
else{alert("General settings saved.");}};SWApp.prototype.prefsViewSyncML=function(){var children=this.prefsContainerRSyncML.children();if(children&&children.length>0){this.rightNotebook.showPane(this.PREFS_SYNCML_PAGE);return;}
var layout=new DlLayout({parent:this.prefsContainerRSyncML,outerSpace:10});var syncMLPrefs=new SwColLayout({});layout.packWidget(syncMLPrefs,{pos:"top",fill:"*"});var content=String.buffer("<col class='label'>",this.i18n("Server URL"),":</col> <col id='$ID_serverURL'></col>","<sep/>","<col class='label'>",this.i18n("*OLD* Server URL"),":</col> <col> <lcont>oldServerURL</lcont> <lcont>oldWarning</lcont></col>","<sep/>","<col class='label'>",this.i18n("Username"),": <br /> <span class='help'>You can log in with your email or your numeric ScheduleWorld ID.</span> </col> <col id='$ID_userEmail'></col>","<sep/>","<col class='label'>",this.i18n("ScheduleWorld ID"),": <br /> </col> <col id='$ID_userID'></col>","<sep/>","<col class='label'>Password:</col> <col id='$ID_password'></col>","<sep/>","<col class='label'>Calendar database (URI): </col> <col> cal </col>","<sep/>","<col class='label'>Contacts database (URI): </col> <col> card </col>","<sep/>","<col class='label'>Notes database (URI): <br /> <span class='help'>test123.</span> </col> <col> note </col>","<sep/>","<col class='label'>Tasks database (URI): <br /> <span class='help'>Note the Symbian reference below.</span> </col> <col> task </col>","<sep/>","<col class='label'>",this.i18n("Note: Symbian Devices")," </col> <col> do not have an option to sync todos/tasks because they sync todos/tasks and calendar events at the same time through the 'cal' database/URI. ScheduleWorld tries to auto detect Symbian devices and set their appropriate server property (Event and ToDo).</col>");var ids=syncMLPrefs.setContent(content.get());var tmp=new DlLabel({parent:syncMLPrefs,appendArgs:ids.serverURL,label:"http://sync.scheduleworld.com/funambol/ds"});tmp=new DlLabel({parent:syncMLPrefs,appendArgs:ids.oldServerURL,label:"http://sync.scheduleworld.com/sync4j/sync"});tmp=new DlLabel({parent:syncMLPrefs,appendArgs:ids.oldWarning,label:"<b>* Only old cell phones should use this *</b>"});var email=swApp.syncSWorld.userSettingsDTO.emailC[0];this.userEmailLabel=new DlLabel({parent:syncMLPrefs,appendArgs:ids.userEmail,label:email});this.userIDLabel=new DlLabel({parent:syncMLPrefs,appendArgs:ids.userID,label:"Not received from server yet."});this.userIDLabel.label(swApp.syncSWorld.userSettingsDTO.calUserID);tmp=new DlLabel({parent:syncMLPrefs,appendArgs:ids.password,label:"you were emailed your password."});this.rightNotebook.showPane(this.PREFS_SYNCML_PAGE);};SWApp.prototype.setPrefsViewSyncML=function(){};SWApp.prototype.prefsViewEvolution=function(){var children=this.prefsContainerREvolution.children();if(children&&children.length>0){this.rightNotebook.showPane(this.PREFS_EVOLUTION_PAGE);return;}
var layout=new DlLayout({parent:this.prefsContainerREvolution,outerSpace:10});var evolutionPrefs=new SwColLayout({});layout.packWidget(evolutionPrefs,{pos:"top",fill:"*"});var content=String.buffer("<col class='label'>",this.i18n("Server URL"),":</col> <col id='$ID_serverURL'></col>","<sep/>","<col class='label'>",this.i18n("Username"),": <br /> <span class='help'>You can log in with your email or your numeric ScheduleWorld ID.</span> </col> <col id='$ID_userEmail'></col>","<sep/>","<col class='label'>Password:</col> <col id='$ID_password'></col>","<sep/>","<col class='label'>Calendar database (URI): </col> <col><wcont>calURI</wcont> <wcont>calType</wcont> </col>","<sep/>","<col class='label'>Contacts database (URI): </col> <col><wcont>cardURI</wcont> <wcont>cardType</wcont> </col>","<sep/>","<col class='label'>Notes database (URI): <br /> <span class='help'>test123.</span> </col> <col><wcont>noteURI</wcont> <wcont>noteType</wcont> </col>","<sep/>","<col class='label'>Tasks database (URI): <br /> <span class='help'>Note the Symbian reference below.</span> </col> <col> <wcont>taskURI</wcont> <wcont>taskType</wcont> </col>","<sep/>","<col class='label'>",this.i18n("spds/sources/ical20/config.txt")," </col> <col> type = text/calendar <br /> uri = cal2 </col>","<sep/>","<col class='label'>",this.i18n("spds/sources/addressbook/config.txt")+" </col> <col> type = text/vcard <br /> uri = card3 </col>","<sep/>","<col class='label'>",this.i18n("spds/sources/itodo20/config.txt")," </col> <col> type = text/x-todo <br /> uri = task2 </col>","<sep/>","<col class='label'>",this.i18n("spds/sources/text/config.txt")," </col> <col> type = text/plain <br /> uri = note </col>","<sep/>","<col class='label'>",this.i18n("spds/syncml/config.txt"),"<br /> <span class='help'>Careful there is no extra space at the end of your username or password.</span> </col> <col> username = &lt;your username> <br /> password = &lt;your password></col>");var ids=evolutionPrefs.setContent(content.get());var tmp=new DlLabel({parent:evolutionPrefs,appendArgs:ids.serverURL,label:"http://sync.scheduleworld.com/funambol/ds"});var email=swApp.syncSWorld.userSettingsDTO.emailC[0];this.userEmailLabel=new DlLabel({parent:evolutionPrefs,appendArgs:ids.userEmail,label:email});tmp=new DlLabel({parent:evolutionPrefs,appendArgs:ids.password,label:"you were emailed your password."});tmp=new DlLabel({parent:evolutionPrefs,appendArgs:ids.calURI,label:"cal2"});tmp=new DlLabel({parent:evolutionPrefs,appendArgs:ids.calType,label:"text/calendar"});tmp=new DlLabel({parent:evolutionPrefs,appendArgs:ids.cardURI,label:"card3"});tmp=new DlLabel({parent:evolutionPrefs,appendArgs:ids.cardType,label:"text/vcard"});tmp=new DlLabel({parent:evolutionPrefs,appendArgs:ids.noteURI,label:"note"});tmp=new DlLabel({parent:evolutionPrefs,appendArgs:ids.noteType,label:"text/plain"});tmp=new DlLabel({parent:evolutionPrefs,appendArgs:ids.taskURI,label:"task2"});tmp=new DlLabel({parent:evolutionPrefs,appendArgs:ids.taskType,label:"text/x-todo"});this.rightNotebook.showPane(this.PREFS_EVOLUTION_PAGE);};SWApp.prototype.setPrefsViewEvolution=function(){};SWApp.prototype.prefsGMailClickSave=function(){var gmailUsername=swApp.gmailUsernameEntry.getValue();if(gmailUsername.length>0&&gmailUsername.indexOf("@")<0){alert(swApp.i18n("Missing email '@'."));return;}
if(gmailUsername.length>0){if(swApp.gmailPasswordEntry.getValue().length===0){alert(swApp.i18n("Missing GMail password."));return;}}
this.savePrefsGMail();};SWApp.prototype.prefsViewGMail=function(){var children=this.prefsContainerRGMail.children();if(children&&children.length>0){this.prefsSaveButton.removeAllListeners("onClick");this.prefsSaveButton.addEventListener("onClick",this.prefsGMailClickSave.$(this));this.rightNotebook.showPane(this.PREFS_GMAIL_PAGE);return;}
var layout=new DlLayout({parent:this.prefsContainerRGMail,outerSpace:10});var bottom=new DlContainer({});var box=new DlHbox({parent:bottom});var saveButton=new DlButton({parent:box,label:this.i18n("Save")});this.savePrefsGMail=function(){var saveSettings={};saveSettings.gmailUsername=swApp.gmailUsernameEntry.getValue();swApp.syncSWorld.userSettingsDTO.gmailUsername=saveSettings.gmailUsername;if(saveSettings.gmailUsername.length>0){saveSettings.gmailPassword=swApp.gmailPasswordEntry.getValue();}
swApp.syncSWorld.saveUserSettingsDTO();swApp.syncSWorld.sendRequest(saveSettings,"saveSettings",swApp.savedSettings());swApp.gmailPasswordEntry.setValue("");};saveButton.addEventListener("onClick",this.prefsGMailClickSave.$(this));this.prefsSaveButton.removeAllListeners("onClick");this.prefsSaveButton.addEventListener("onClick",this.prefsGMailClickSave.$(this));layout.packWidget(bottom,{pos:"bottom",before:10,after:10});var prefs=new SwColLayout({});layout.packWidget(prefs,{pos:"top",fill:"*"});var content=String.buffer("<col class='label'>",this.i18n("GMail Username (email)"),": <br /> <span class='help'></span> </col> <col id='$ID_gmailUsername'></col>","<sep/>","<col class='label'>GMail Password: <br /> <span class='help'></span> </col> <col> <lcont>gmailPassword</lcont> </col>","<sep/>","<col class='label'>Sync: <br /> <span class='help'>Google address format that works with Google Maps:<br />Street Address Room Number<br /> City, State, Zip </span> </col> <col> <lcont>gmailSync</lcont> <lcont>syncingContacts</lcont> </col>");var ids=prefs.setContent(content.get());var gmailUsername="";if(swApp.syncSWorld.userSettingsDTO.gmailUsername){gmailUsername=swApp.syncSWorld.userSettingsDTO.gmailUsername;}
this.gmailUsernameEntry=new DlEntry({parent:prefs,appendArgs:ids.gmailUsername,value:gmailUsername});this.gmailPasswordEntry=new DlEntry({parent:prefs,appendArgs:ids.gmailPassword,type:"password"});this.gmailSync=new DlButton({parent:prefs,appendArgs:ids.gmailSync,label:"Sync Gmail Contacts"});this.syncingContacts=new DlLabel({parent:prefs,appendArgs:ids.syncingContacts,label:"Syncing Gmail Contacts..."});this.gmailSync.addEventListener("onClick",function(){var gmailUsername=swApp.gmailUsernameEntry.getValue();if(gmailUsername.length===0||gmailUsername.indexOf("@")<0){alert(swApp.i18n("Missing GMail username (email)."));return;}
if(!swApp.syncSWorld.userSettingsDTO.gmailUsername||swApp.syncSWorld.userSettingsDTO.gmailUsername.length===0){alert(swApp.i18n("You need to save your settings first."));return;}
var syncGMailSuccess=function(response){swApp.syncingContacts.display(false);swApp.gmailSync.disabled(false);if(!response.googContactSyncCount){alert("Failed Google contact sync:\n"+
response.message);return;}
swApp.syncSWorld.contactSync();var text="Successfully synchronized Google Contacts.\n"+"Merged:"+response.googContactSyncCount.merged+"\n"+"New sent to Google:"+response.googContactSyncCount.newToGoog+"\n"+"New sent to ScheduleWorld:"+response.googContactSyncCount.newToSW;alert(text);};var failCallback=function(response){swApp.syncingContacts.display(false);swApp.gmailSync.disabled(false);if(response&&response.failedI18nKey){alert(response.failedI18nKey);}
else{alert("Failed to sync Google contacts.");}};var command={};command.value="1";swApp.syncSWorld.sendRequest(command,"gmailSync",syncGMailSuccess,failCallback,swApp.GOOGLE_TIMEOUT_MS);swApp.gmailSync.disabled(true);swApp.syncingContacts.display(true);});swApp.syncingContacts.display(false);this.rightNotebook.showPane(this.PREFS_GMAIL_PAGE);};SWApp.prototype.prefsViewFunambol=function(){var children=this.prefsContainerRFunambol.children();if(children&&children.length>0){this.rightNotebook.showPane(this.PREFS_FUNAMBOL_PAGE);return;}
var layout=new DlLayout({parent:this.prefsContainerRFunambol,outerSpace:10});var funambolPrefs=new SwColLayout({});layout.packWidget(funambolPrefs,{pos:"top",fill:"*"});var content=String.buffer("<col class='label'>",this.i18n("Server URL"),":</col> <col id='$ID_serverURL'></col>","<sep/>","<col class='label'>",this.i18n("Username"),": <br /> <span class='help'>You can log in with your email or your ScheduleWorld ID.</span> </col> <col id='$ID_userEmail'></col>","<sep/>","<col class='label'>Password:</col> <col id='$ID_password'></col>");var ids=funambolPrefs.setContent(content.get());var tmp=new DlLabel({parent:funambolPrefs,appendArgs:ids.serverURL,label:"http://sync.scheduleworld.com/funambol/ds"});var email=swApp.syncSWorld.userSettingsDTO.emailC[0];this.userEmailLabel=new DlLabel({parent:funambolPrefs,appendArgs:ids.userEmail,label:email});tmp=new DlLabel({parent:funambolPrefs,appendArgs:ids.password,label:"you were emailed your password."});this.rightNotebook.showPane(this.PREFS_FUNAMBOL_PAGE);};SWApp.prototype.syncMLDevicePhone=null;SWApp.prototype.syncMLDeviceEmail=null;SWApp.prototype.syncMLDeviceCalendars=null;SWApp.prototype.syncMLDeviceMisc=null;SWApp.prototype.TEL_WORK=1;SWApp.prototype.TEL_WORK_FAX=2;SWApp.prototype.TEL_HOME=4;SWApp.prototype.TEL_HOME_FAX=8;SWApp.prototype.TEL_CELL=16;SWApp.prototype.TEL_OTHER_VOICE=32;SWApp.prototype.TEL_OTHER_FAX=64;SWApp.prototype.TEL_PAGER=128;SWApp.prototype.TEL_ISDN=256;SWApp.prototype.TEL_CAR=512;SWApp.prototype.TEL_PREFERRED=1024;SWApp.prototype.TEL_VIDEO=2048;SWApp.prototype.TEL_VIDEO_HOME=4096;SWApp.prototype.TEL_VIDEO_WORK=8192;SWApp.prototype.prefsViewSyncMLDevice=function(syncMLDeviceID){var children=this.prefsContainerRSyncMLDevice.children();if(children&&children.length>0){this.prefsViewSyncMLDeviceRefresh(syncMLDeviceID);this.rightNotebook.showPane(this.PREFS_SYNCMLDEVICE_PAGE);this.prefsSaveButton.removeAllListeners("onClick");this.prefsSaveButton.addEventListener("onClick",this.prefsSyncMLDeviceClickSave.$(this));return;}
var syncMLDevice={};if(this.syncSWorld.userSettingsDTO.syncMLDeviceDTOMap){syncMLDevice=this.syncSWorld.userSettingsDTO.syncMLDeviceDTOMap[syncMLDeviceID];}
var rootLayout=new DlLayout({parent:this.prefsContainerRSyncMLDevice,fillParent:true});var tabs=new DlTabs({});var calendarRules=new DlContainer({});var categories=new DlContainer({});var phoneNumbers=new DlContainer({});var dateAndTime=new DlContainer({});var other=new DlContainer({});tabs.addTab(calendarRules,this.i18n("Calendar Rules"));tabs.addTab(categories,this.i18n("Categories"));tabs.addTab(phoneNumbers,this.i18n("Limit Phone/Email"));tabs.addTab(dateAndTime,this.i18n("Date and Time"));tabs.addTab(other,this.i18n("Other"));var layout=new DlLayout({parent:calendarRules,outerSpace:10});var calendarRulesPrefs=new SwColLayout({});layout.packWidget(calendarRulesPrefs,{pos:"top",fill:"*"});var bottom=new DlContainer({});var box=new DlHbox({parent:bottom});this.saveSyncMLDeviceButton=new DlButton({parent:box,label:this.i18n("Save")});this.saveSyncMLDeviceButton.addEventListener("onClick",this.prefsSyncMLDeviceClickSave.$(this));this.prefsSaveButton.removeAllListeners("onClick");this.prefsSaveButton.addEventListener("onClick",this.prefsSyncMLDeviceClickSave.$(this));rootLayout.packWidget(bottom,{pos:"bottom"});rootLayout.packWidget(tabs,{pos:"top",fill:"*"});var calContent=String.buffer("<col class='label'>"+this.i18n("Sync Calendar(s)")+": <br /> <span class='help'>The server will not allow the sync mode 'Replace server data' if more than one is selected.</span> </col> <col>");var iCalendarInfoL=this.syncSWorld.userSettingsDTO.ICalendarInfoL;var iCalendarInfo=null;var id=null;var i=0;for(i=0;i<iCalendarInfoL.length;++i){iCalendarInfo=iCalendarInfoL[i];id="ical"+iCalendarInfo.ICalendarID;calContent("<wcont>");calContent(id);calContent("</wcont> ");}
calContent("</col>","<sep/>","<col class='label'>",this.i18n("Only sync private"),": <br /> <span class='help'>Events or Tasks must be marked private to sync.</span> </col> <col id='$ID_onlySyncPrivate'></col>","<sep/>","<col class='label'>",this.i18n("Sync Historic Data"),": <br /> <span class='help'>If not checked ScheduleWorld will not send events/tasks older than yesterday. Does not apply to recurring events.</span> </col> <col id='$ID_onlySyncHistoric'></col>","<sep/>","<col class='label'>",this.i18n("Sync Future Events"),": <br /> <span class='help'>Only sync future events with a start time within the set number of months.</span> </col> <col> <lcont>syncFutureEvents</lcont> (months)</col>","<sep/>","<col class='label'>",this.i18n("Events and Todos/Tasks"),": <br /> <span class='help'>Symbian devices sync both events and todos/tasks at the same time using the 'cal' URI/Database.</span> </col> <col id='$ID_eventToDo'></col>");var calIds=calendarRulesPrefs.setContent(calContent.get());this.icalIDCBM={};var tmp=null;for(i=0;i<iCalendarInfoL.length;++i){iCalendarInfo=iCalendarInfoL[i];id="ical"+iCalendarInfo.ICalendarID;var checked=false;var syncICalendarIDs=syncMLDevice.syncICalendarIDs;if(syncICalendarIDs){for(var j=0;j<syncICalendarIDs.length;++j){syncICalendarID=syncICalendarIDs[j];if(syncICalendarID!=iCalendarInfo.ICalendarID){continue;}
checked=true;break;}}
tmp=new DlCheckbox({parent:calendarRulesPrefs,appendArgs:calIds[id],label:iCalendarInfo.name,checked:checked});this.icalIDCBM[id]=tmp;}
var syncPrivateChecked=this.syncSWorld.userSettingsDTO.onlySyncPrivate;this.onlySyncPrivateCB=new DlCheckbox({parent:calendarRulesPrefs,appendArgs:calIds.onlySyncPrivate,label:"",checked:syncPrivateChecked});var syncHistoricChecked=this.syncSWorld.userSettingsDTO.onlySyncHistoric;this.syncHistoricCheckedCB=new DlCheckbox({parent:calendarRulesPrefs,appendArgs:calIds.onlySyncHistoric,label:"",checked:syncHistoricChecked});this.syncFutureEventsEntry=new DlEntry({parent:calendarRulesPrefs,appendArgs:calIds.syncFutureEvents,value:"0"});var syncEventToDoChecked=this.syncSWorld.userSettingsDTO.eventAndToDo;this.syncEventsAndTodosCB=new DlCheckbox({parent:calendarRulesPrefs,appendArgs:calIds.eventToDo,label:"(For Symbian devices only)",checked:syncEventToDoChecked});var categoriesLayout=new DlLayout({parent:categories,outerSpace:10});var categoriesPrefs=new SwColLayout({});categoriesLayout.packWidget(categoriesPrefs,{pos:"top",fill:"*"});var catContent=String.buffer("<col class='label'>"+this.i18n("Ensure categories sent to device")+": <br /> <span class='help'>The server will ensure each outgoing item will contain the comma separated categories.</span> </col> <col> <lcont>outgoingCategories</lcont> </col>","<sep/>","<col class='label'>"+this.i18n("Only sync items with categories")+": <br /> <span class='help'>During a SyncML sync the server will only send items that have all of these comma separated categories.</span> </col> <col> <lcont>onlySyncCategories</lcont> </col>","<sep/>","<col class='label'>"+this.i18n("Do not sync items with categories")+": <br /> <span class='help'>During a SyncML sync the server will not send items that have any of these comma separated categories.</span> </col> <col> <lcont>doNotSendCategories</lcont> </col>","<sep/>","<col class='label'>"+this.i18n("Match event categories")+": <br /> <span class='help'>During a SyncML sync new items will be inserted into the first calendar that has a default category that matches the item category.</span> </col> <col> <lcont>sendNew</lcont> </col>","<sep/>","<col class='label'>"+this.i18n("Insert new items in calendar")+": <br /> <span class='help'>During a SyncML sync new items will be inserted into the specified calendar if no categories match.</span> </col> <col> <lcont>sendNew2Cal</lcont> </col>");var catIds=categoriesPrefs.setContent(catContent.get());this.outgoingCategories=new DlEntry({parent:categoriesPrefs,appendArgs:catIds.outgoingCategories,value:""});this.onlySyncCategories=new DlEntry({parent:categoriesPrefs,appendArgs:catIds.onlySyncCategories,value:""});this.doNotSendCategories=new DlEntry({parent:categoriesPrefs,appendArgs:catIds.doNotSendCategories,value:""});var sendNewChecked=this.syncSWorld.userSettingsDTO.sendNewCalItemsToMatchingCategory;this.sendNewCB=new DlCheckbox({parent:calendarRulesPrefs,appendArgs:catIds.sendNew,label:"",checked:sendNewChecked});this.sendNew2CalSelect=new DlRadioSelect({parent:categoriesPrefs,appendArgs:catIds.sendNew2Cal});var phoneLayout=new DlLayout({parent:phoneNumbers,outerSpace:10});var phonePrefs=new SwColLayout({});phoneLayout.packWidget(phonePrefs,{pos:"top",fill:"*"});var phoneContent=String.buffer("<col class='label'>"+this.i18n("Mobile device phone numbers")+": <br /> <span class='help'>Some cell phones will crash if you send them certain phone number types. The phone number types on the right will only be sent if they are selected. These settings only apply to cell phones and software that use the deprecated vcard 2.1 standard.</span> </col> <col> <wcont>work</wcont> <wcont>workFax</wcont> <wcont>home</wcont> <wcont>homeFax</wcont> <wcont>cell</wcont> <wcont>otherVoice</wcont> <wcont>otherFax</wcont> <wcont>pager</wcont> <wcont>car</wcont> <wcont>preferred</wcont> </col>","<sep/>","<col class='label'>"+this.i18n("Sync Number Of Emails")+": <br /> <span class='help'>Some devices crash when you sync more than one or two emails. Some devices also lie about how many emails they support and silently lose emails beyond one or two.</span> </col> <col> <lcont>slotNum</lcont> <lcont>slotNumMax</lcont> </col>");var phoneIds=phonePrefs.setContent(phoneContent.get());this.phoneWork=new DlCheckbox({parent:phonePrefs,appendArgs:phoneIds.work,label:"Work",checked:true});this.phoneWorkFax=new DlCheckbox({parent:phonePrefs,appendArgs:phoneIds.workFax,label:"Work Fax",checked:true});this.phoneHome=new DlCheckbox({parent:phonePrefs,appendArgs:phoneIds.home,label:"Home",checked:true});this.phoneHomeFax=new DlCheckbox({parent:phonePrefs,appendArgs:phoneIds.homeFax,label:"Home Fax",checked:true});this.phoneCell=new DlCheckbox({parent:phonePrefs,appendArgs:phoneIds.cell,label:"Cell",checked:true});this.phoneOtherVoice=new DlCheckbox({parent:phonePrefs,appendArgs:phoneIds.otherVoice,label:"Other Voice",checked:true});this.phoneOtherFax=new DlCheckbox({parent:phonePrefs,appendArgs:phoneIds.otherFax,label:"Other Fax",checked:true});this.phonePager=new DlCheckbox({parent:phonePrefs,appendArgs:phoneIds.pager,label:"Pager",checked:true});this.phoneCar=new DlCheckbox({parent:phonePrefs,appendArgs:phoneIds.car,label:"Car",checked:true});this.phonePreferred=new DlCheckbox({parent:phonePrefs,appendArgs:phoneIds.preferred,label:"Preferred",checked:true});this.slotNumEntry=new DlEntry({parent:phonePrefs,appendArgs:phoneIds.slotNum,value:syncMLDevice.syncParticipationSlotsForEmail});tmp=new DlLabel({parent:phonePrefs,appendArgs:phoneIds.slotNumMax,label:"(maximum 8)"});var dateLayout=new DlLayout({parent:dateAndTime,outerSpace:10});var dateTimePrefs=new SwColLayout({});dateLayout.packWidget(dateTimePrefs,{pos:"top",fill:"*"});var dateContent=String.buffer("<col class='label'>"+this.i18n("Device specific time zone")+": <br /> <span class='help'>Some companies use a single account with devices in different time zones.</span> </col> <col> <lcont>deviceTimeZone</lcont> </col>","<sep/>","<col class='label'>"+this.i18n("Ignores DST")+": <br /> <span class='help'>Enable this if your phone ignores daylight saving time.</span> </col> <col> <lcont>ignoresDST</lcont> </col>","<sep/>","<col class='label'>"+this.i18n("All-Day 00:00-23:59")+": <br /> <span class='help'>Enable this if your phone does not follow the standard mechanism for defining all-day events.</span> </col> <col> <lcont>allDay</lcont> </col>","<sep/>","<col class='label'>"+this.i18n("Localtime")+": <br /> <span class='help'>This sends dates/times to your device that are already in the device's time zone. You want to do this if your event start times seem to be off by the UTC offset.</span> </col> <col> <lcont>localTime</lcont> </col>","<sep/>","<col class='label'>"+this.i18n("Birthday Format yyyymmdd")+": <br /> <span class='help'>This sends birthdays/anniversaries to your phone in the format yyyymmdd. It is rare you would enable this.</span> </col> <col> <lcont>bdayISO8601</lcont> </col>","<sep/>","<col class='label'>"+this.i18n("Add DST Offset")+": <br /> <span class='help'>Adds the daylight saving offset to events in standard time. This is to work around buggy phones that handle timezones wrong.</span> </col> <col> <lcont>addDSTOffset</lcont> </col>","<sep/>");var dateIds=dateTimePrefs.setContent(dateContent.get());swApp.deviceTimeZoneID=syncMLDevice.timeZone;this.deviceTZButtonMenu=new DlButtonMenu({parent:dateTimePrefs,appendArgs:dateIds.deviceTimeZone,label:swApp.deviceTimeZoneID,connected:true});tzSelectHandler=function(selectedTZ){swApp.deviceTZButtonMenu._mainBtn.label(selectedTZ);swApp.prefsTimeZoneID=selectedTZ;};this.prefsTZMenu=this.createMenuTZ(this.tzMenuL,tzSelectHandler);this.deviceTZButtonMenu.setMenu(this.prefsTZMenu);this.ignoresDST=syncMLDevice.fixDST;this.ignoresDSTCB=new DlCheckbox({parent:dateTimePrefs,appendArgs:dateIds.ignoresDST,label:"",checked:this.ignoresDST});this.allDay=syncMLDevice.allDayMinusOne;this.allDayCB=new DlCheckbox({parent:dateTimePrefs,appendArgs:dateIds.allDay,label:"",checked:this.allDay});this.localTime=syncMLDevice.localTime;this.localTimeCB=new DlCheckbox({parent:dateTimePrefs,appendArgs:dateIds.localTime,label:"",checked:this.localTime});this.bdayISO8601=syncMLDevice.bdayISO8601;this.bdayCB=new DlCheckbox({parent:dateTimePrefs,appendArgs:dateIds.bdayISO8601,label:"",checked:this.bdayISO8601});this.addDSTOffset=syncMLDevice.addDSTOffsetDuringStandard;this.addDSTOffsetCB=new DlCheckbox({parent:dateTimePrefs,appendArgs:dateIds.addDSTOffset,label:"",checked:this.addDSTOffset});var otherLayout=new DlLayout({parent:other,outerSpace:10});var otherPrefs=new SwColLayout({});otherLayout.packWidget(otherPrefs,{pos:"top",fill:"*"});var otherContent=String.buffer("<col class='label'>"+this.i18n("Character encoding")+": <br /> <span class='help'>ScheduleWorld tries to auto detect your device's character encoding and defaults to UTF-8. Some devices still require you to put the device encoding here.</span> </col> <col> <lcont>charset</lcont> <lcont>charsetExample</lcont> </col>","<sep/>","<col class='label'>"+this.i18n("Disable encoding")+": <br /> <span class='help'>Enable this if your device has broken quoted printable encoding.</span> </col> <col> <lcont>noEncoding</lcont> </col>","<sep/>","<col class='label'>"+this.i18n("Description")+": <br /> <span class='help'>Your description of the device.</span> </col> <col> <lcont>otherDescription</lcont> </col>","<sep/>","<col class='label'>"+this.i18n("Sync Photos")+": <br /> <span class='help'>Affects devices using the deprecated vcard 2.1 standard and the Funambol BlackBerry client. Otherwise photos are always sync'd.</span> </col> <col> <lcont>syncPhotos</lcont> </col>","<sep/>","<col class='label'>"+this.i18n("Force A Slow Sync")+": <br /> <span class='help'>This forces the next sync to be a slow sync.</span> </col> <col> <lcont>forceSlowSync</lcont> </col>");var otherIds=otherPrefs.setContent(otherContent.get());this.charsetEntry=new DlEntry({parent:otherPrefs,appendArgs:otherIds.charset,value:syncMLDevice.charset});tmp=new DlLabel({parent:otherPrefs,appendArgs:otherIds.charsetExample,label:"For example: ISO-8859-1"});this.noEncodingCB=new DlCheckbox({parent:otherPrefs,appendArgs:otherIds.noEncoding,label:"",checked:syncMLDevice.noEncoding});this.description=new DlEntry({parent:otherPrefs,appendArgs:otherIds.otherDescription,value:syncMLDevice.description});this.syncPhotos=new DlCheckbox({parent:otherPrefs,appendArgs:otherIds.syncPhotos,label:"",checked:syncMLDevice.importPhoto});this.forceSlowSync=new DlCheckbox({parent:otherPrefs,appendArgs:otherIds.forceSlowSync,label:"",checked:false});this.prefsViewSyncMLDeviceRefresh(syncMLDeviceID);tabs.showPane(0);this.rightNotebook.showPane(this.PREFS_SYNCMLDEVICE_PAGE);};SWApp.prototype.prefsViewSyncMLDeviceRefresh=function(syncMLDeviceID){this.saveSyncMLDeviceButton.syncMLDeviceID=syncMLDeviceID;var device=this.syncSWorld.userSettingsDTO.syncMLDeviceDTOMap[syncMLDeviceID];var i=0;var DlCB=null;var icalid=null;for(icalid in this.icalIDCBM){if(this.icalIDCBM.hasOwnProperty(icalid)){DlCB=this.icalIDCBM[icalid];DlCB.checked(false);}}
if(device.syncICalendarIDs){for(i=0;i<device.syncICalendarIDs.length;++i){var iCalendarID=device.syncICalendarIDs[i];id="icalid"+iCalendarID;DlCB=this.icalIDCBM[id];if(DlCB){DlCB.checked(true);}}}
this.onlySyncPrivateCB.checked(device.syncOnlyPrivate);this.syncHistoricCheckedCB.checked(device.syncHistoricalData);this.syncFutureEventsEntry.setValue(device.syncNextMonths);this.syncEventsAndTodosCB.checked(device.eventAndToDo);this.outgoingCategories.setValue(device.sendCategories||"");this.onlySyncCategories.setValue(device.onlySyncCategories||"");this.doNotSendCategories.setValue(device.doNotSyncCategories||"");this.sendNewCB.checked(device.sendNewCalItemsToMatchingCategory||"");var selectedValue=null;var iCalendarInfo=null;var options=[];var iCalendarInfoL=this.syncSWorld.userSettingsDTO.ICalendarInfoL;for(i=0;i<iCalendarInfoL.length;++i){iCalendarInfo=iCalendarInfoL[i];if(i===0){selectedValue=iCalendarInfo.ICalendarID.substring(2);}
options.push({label:iCalendarInfo.name,value:iCalendarInfo.ICalendarID.substring(2)});if(device.sendNewItemsToICalendarID){if(iCalendarInfo.ICalendarID.substring(2)==device.sendNewItemsToICalendarID){selectedValue=iCalendarInfo.ICalendarID.substring(2);}}}
this.sendNew2CalSelect.setOptions(options);this.sendNew2CalSelect.setValue(selectedValue);this.phoneWork.checked(true);this.phoneWorkFax.checked(true);this.phoneHome.checked(true);this.phoneHomeFax.checked(true);this.phoneCell.checked(true);this.phoneOtherVoice.checked(true);this.phoneOtherFax.checked(true);this.phonePager.checked(true);this.phoneCar.checked(true);this.phonePreferred.checked(true);if((device.syncParticipationForTEL&this.TEL_WORK)!=this.TEL_WORK){this.phoneWork.checked(false);}
if((device.syncParticipationForTEL&this.TEL_WORK_FAX)!=this.TEL_WORK_FAX){this.phoneWorkFax.checked(false);}
if((device.syncParticipationForTEL&this.TEL_HOME)!=this.TEL_HOME){this.phoneHome.checked(false);}
if((device.syncParticipationForTEL&this.TEL_HOME_FAX)!=this.TEL_HOME_FAX){this.phoneHomeFax.checked(false);}
if((device.syncParticipationForTEL&this.TEL_CELL)!=this.TEL_CELL){this.phoneCell.checked(false);}
if((device.syncParticipationForTEL&this.TEL_OTHER_VOICE)!=this.TEL_OTHER_VOICE){this.phoneOtherVoice.checked(false);}
if((device.syncParticipationForTEL&this.TEL_OTHER_FAX)!=this.TEL_OTHER_FAX){this.phoneOtherFax.checked(false);}
if((device.syncParticipationForTEL&this.TEL_PAGER)!=this.TEL_PAGER){this.phonePager.checked(false);}
if((device.syncParticipationForTEL&this.TEL_CAR)!=this.TEL_CAR){this.phoneCar.checked(false);}
if((device.syncParticipationForTEL&this.TEL_PREFERRED)!=this.TEL_PREFERRED){this.phonePreferred.checked(false);}
this.slotNumEntry.setValue(device.syncParticipationSlotsForEmail);this.deviceTZButtonMenu._mainBtn.label(device.timeZone);this.ignoresDSTCB.checked(device.fixDST);this.allDayCB.checked(device.allDayMinusOne);this.localTimeCB.checked(device.localTime);this.bdayCB.checked(device.bdayISO8601);this.addDSTOffsetCB.checked(device.addDSTOffsetDuringStandard);if(device.charset&&device.charset.length>0){this.charsetEntry.setValue(device.charset);}
else{this.charsetEntry.setValue("UTF-8");}
this.noEncodingCB.checked(device.noEncoding);this.description.setValue(device.description);this.syncPhotos.checked(device.importPhoto);this.forceSlowSync.checked(false);};SWApp.prototype.prefsSyncMLDeviceClickSave=function(){var request={};request.syncMLDeviceID=this.saveSyncMLDeviceButton.syncMLDeviceID;var syncICalendar=[];var DlCB;for(icalid in swApp.icalIDCBM){if(swApp.icalIDCBM.hasOwnProperty(icalid)){DlCB=swApp.icalIDCBM[icalid];if(DlCB&&DlCB.checked()){syncICalendar.push(icalid.substring(6));}}}
request.syncICalendar=syncICalendar.join(",");request.syncOnlyPrivate=swApp.onlySyncPrivateCB.checked();request.syncHistoricalData=swApp.syncHistoricCheckedCB.checked();request.syncNextMonths=swApp.syncFutureEventsEntry.getValue();request.eventAndToDo=swApp.syncEventsAndTodosCB.checked();request.sendCategories=swApp.outgoingCategories.getValue();request.onlySyncCategories=swApp.onlySyncCategories.getValue();request.doNotSyncCategories=swApp.doNotSendCategories.getValue();request.inputCategoryMatch=swApp.sendNewCB.checked();request.sendNew2Calendar=swApp.sendNew2CalSelect.getValue();request.work=swApp.phoneWork.checked();request.workFax=swApp.phoneWorkFax.checked();request.home=swApp.phoneHome.checked();request.homeFax=swApp.phoneHomeFax.checked();request.cell=swApp.phoneCell.checked();request.otherVoice=swApp.phoneOtherVoice.checked();request.otherFax=swApp.phoneOtherFax.checked();request.pager=swApp.phonePager.checked();request.car=swApp.phoneCar.checked();request.pref=swApp.phonePreferred.checked();request.emailSlotNum=swApp.slotNumEntry.getValue();request.timeZoneID=swApp.deviceTZButtonMenu._mainBtn.label();request.ignoresDST=swApp.ignoresDSTCB.checked();request.allDayMinusOne=swApp.allDayCB.checked();request.localtime=swApp.localTimeCB.checked();request.bdayISO8601=swApp.bdayCB.checked();request.addDSTOffsetDuringStandard=swApp.addDSTOffsetCB.checked();request.charset=swApp.charsetEntry.getValue();request.noEncoding=swApp.noEncodingCB.checked();request.description=swApp.description.getValue();request.importPhoto=swApp.syncPhotos.checked();request.forceSlowSync=swApp.forceSlowSync.checked();var successCallback=function(response){syncMLDevice=swApp.syncSWorld.userSettingsDTO.syncMLDeviceDTOMap[swApp.saveSyncMLDeviceButton.syncMLDeviceID];syncMLDevice.syncICalendarIDs=request.syncICalendar.split(",");syncMLDevice.syncOnlyPrivate=request.syncOnlyPrivate;syncMLDevice.syncHistoricalData=request.syncHistoricalData;syncMLDevice.syncNextMonths=request.syncNextMonths;syncMLDevice.eventAndToDo=request.eventAndToDo;syncMLDevice.onlySyncCategories=request.onlySyncCategories;syncMLDevice.sendCategories=request.sendCategories;syncMLDevice.doNotSyncCategories=request.doNotSyncCategories;syncMLDevice.sendNewCalItemsToMatchingCategory=request.inputCategoryMatch;syncMLDevice.sendNewItemsToICalendarID=swApp.sendNew2CalSelect.getValue();syncMLDevice.syncParticipationForTEL=0;if(request.work){syncMLDevice.syncParticipationForTEL|=swApp.TEL_WORK;}
if(request.workFax){syncMLDevice.syncParticipationForTEL|=swApp.TEL_WORK_FAX;}
if(request.home){syncMLDevice.syncParticipationForTEL|=swApp.TEL_HOME;}
if(request.homeFax){syncMLDevice.syncParticipationForTEL|=swApp.TEL_HOME_FAX;}
if(request.cell){syncMLDevice.syncParticipationForTEL|=swApp.TEL_CELL;}
if(request.otherVoice){syncMLDevice.syncParticipationForTEL|=swApp.TEL_OTHER_VOICE;}
if(request.otherFax){syncMLDevice.syncParticipationForTEL|=swApp.TEL_OTHER_FAX;}
if(request.pager){syncMLDevice.syncParticipationForTEL|=swApp.TEL_PAGER;}
if(request.car){syncMLDevice.syncParticipationForTEL|=swApp.TEL_CAR;}
if(request.pref){syncMLDevice.syncParticipationForTEL|=swApp.TEL_PREFERRED;}
syncMLDevice.syncParticipationSlotsForEmail=request.emailSlotNum;syncMLDevice.timeZone=request.timeZoneID;syncMLDevice.fixDST=request.ignoresDST;syncMLDevice.allDayMinusOne=request.allDayMinusOne;syncMLDevice.localTime=request.localtime;syncMLDevice.bdayISO8601=request.bdayISO8601;syncMLDevice.addDSTOffsetDuringStandard=request.addDSTOffsetDuringStandard;syncMLDevice.charset=request.charset;syncMLDevice.noEncoding=request.noEncoding;syncMLDevice.description=request.description;syncMLDevice.importPhoto=request.importPhoto;syncMLDevice.forceSlowSync=request.forceSlowSync;alert("Save SyncML device '"+syncMLDevice.id+"' settings success.");swApp.syncSWorld.saveUserSettingsDTO();};var failCallback=function(){alert("Save SyncML device settings failed.");};swApp.syncSWorld.sendRequest(request,"saveSyncMLDeviceSettings",successCallback,failCallback);};SWApp.prototype.prefsCalendarClickSave=function(){this.prefsViewCalendarSaveUserSettings();var request={};if(typeof swApp.currentlyEditingIDICalendarID!='undefined'){request.iCalendarID=swApp.currentlyEditingIDICalendarID.substring(2);}
var iCalendarInfo={};if(request.iCalendarID){for(var i=0;i<swApp.syncSWorld.userSettingsDTO.ICalendarInfoL.length;++i){if(swApp.syncSWorld.userSettingsDTO.ICalendarInfoL[i].ICalendarID=='id'+request.iCalendarID){iCalendarInfo=swApp.syncSWorld.userSettingsDTO.ICalendarInfoL[i];break;}}}
request.iCalendarName=swApp.iCalendarName.getValue();iCalendarInfo.name=request.iCalendarName;request.cssColour=this.cssColourCal;request.freeBusy=swApp.freeBusyCheckbox.checked();iCalendarInfo.generateFreeBusy=request.freeBusy;iCalendarInfo.enableProtectedWebDAV=false;iCalendarInfo.enableWebDAV=false;if(swApp.webDAVDisabled.checked()){request.webDAV=1;}
if(swApp.webDAVProtected.checked()){request.webDAV=2;iCalendarInfo.enableProtectedWebDAV=true;}
if(swApp.webDAVPublic.checked()){request.webDAV=3;iCalendarInfo.enableWebDAV=true;}
iCalendarInfo.feedType=null;iCalendarInfo.generateProtectedTodoFeed=false;iCalendarInfo.generateTodoFeed=false;request.feedType=swApp.feedTypeSelect.getValue();if(request.feedType){iCalendarInfo.feedType=request.feedType;}
request.taskFeedProtected=swApp.protectedFeedCheckbox.checked();if(request.taskFeedProtected){iCalendarInfo.generateProtectedTodoFeed=true;}
else{iCalendarInfo.generateTodoFeed=true;}
iCalendarInfo.eventFeedType=null;iCalendarInfo.generateProtectedEventFeed=false;iCalendarInfo.generateEventFeed=false;request.eventFeedType=swApp.eventFeedTypeSelect.getValue();if(request.eventFeedType){iCalendarInfo.eventFeedType=request.eventFeedType;}
request.eventFeedProtected=swApp.protectedEventFeedCheckbox.checked();if(request.eventFeedProtected){iCalendarInfo.generateProtectedEventFeed=true;}
else{iCalendarInfo.generateEventFeed=true;}
request.defaultCategories=this.defaultCategories.getValue();iCalendarInfo.defaultCategories=request.defaultCategories.split(",");request.removeCategories=this.removeCategories.getValue();request.clientLoginEnabled=true;request.googleUsername=swApp.clientLoginEmail.getValue();request.clientLoginPassword=swApp.clientLoginPassword.getValue();var splitValue=swApp.calendarSelect.getValue();var index=splitValue.indexOf(" ");request.gcalURL=splitValue.substring(0,index);request.gcalTitle=splitValue.substring(index+1);request.googleAutoSync=swApp.autoSyncCheckbox.checked();if(swApp.googleTwoWay.checked()){request.googleSyncMode=0;}
else if(swApp.googleOneWayUp.checked()){request.googleSyncMode=1;}
else if(swApp.googleOneWayDown.checked()){request.googleSyncMode=2;}
else if(swApp.googleSlow.checked()){request.googleSyncMode=3;}
request.makeDefault=swApp.makeDefaultCheckbox.checked();request.toGoogleVisibility=swApp.visibilitySelect.getValue();var saveCalendarSuccess=function(response){if(this.googleSettingsChanged&&this.currentlyEditingIDICalendarID){this.googleSettingsChanged[this.currentlyEditingIDICalendarID]=false;}
if(response.hasOwnProperty("userSettingsDTO")){swApp.log("test1");}
if(response.userSettingsDTO){var iCalendarInfo=response.userSettingsDTO.ICalendarInfoL[0];var exists=false;for(var i=0;i<swApp.syncSWorld.userSettingsDTO.ICalendarInfoL.length;++i){if(swApp.syncSWorld.userSettingsDTO.ICalendarInfoL[i].ICalendarID==iCalendarInfo.ICalendarID){exists=true;break;}}
if(!exists){swApp.syncSWorld.userSettingsDTO.ICalendarInfoL.push(iCalendarInfo);colourObject={};colourObject.id=iCalendarInfo.ICalendarID;colourObject.checked=true;iCalendarInfo.syncEnabled=true;colourObject.label=iCalendarInfo.name;colourObject.color=swApp.cssColourCal;swApp.calMultiSelector.addColor(colourObject);}
swApp.eventView();}
swApp.syncSWorld.saveUserSettingsDTO(function(){alert("Save calendar settings success.");});};var failCallback=function(){swApp.syncSWorld.saveUserSettingsDTO(function(){alert("Save calendar settings failed.");});};swApp.syncSWorld.sendRequest(request,"saveCalendarSettings",saveCalendarSuccess.$(this),failCallback.$(this));};SWApp.prototype.prefsViewCalendar=function(idICalendarID){this.currentlyEditingIDICalendarID=idICalendarID;if(!this.prefsSaveButton){this.prefsInitDoneListener=this.prefsViewCalendar;this.prefsView();return;}
var children=this.prefsContainerRCalendar.children();if(children&&children.length>0){this.prefsSaveButton.removeAllListeners("onClick");this.prefsSaveButton.addEventListener("onClick",this.prefsCalendarClickSave.$(this));this.swMiniCalWizard._iCalendarID=idICalendarID;this.prefsViewCalendarRefresh(idICalendarID);this.rightNotebook.showPane(this.PREFS_CALENDAR_PAGE);return;}
this.googleSettingsChanged={};var rootLayout=new DlLayout({parent:this.prefsContainerRCalendar,fillParent:true});var tabs=new DlTabs({});var generalTab=new DlContainer({});var googleTab=new DlContainer({});var minicalTab=new DlContainer({});tabs.addTab(generalTab,"General");tabs.addTab(googleTab,"Google");tabs.addTab(minicalTab,"Public HTML Calendar");var layout=new DlLayout({parent:generalTab,outerSpace:10});var calPrefs=new SwColLayout({});layout.packWidget(calPrefs,{pos:"top",fill:"*"});var layoutGoogle=new DlLayout({parent:googleTab,outerSpace:10});var googPrefs=new SwColLayout({});layoutGoogle.packWidget(googPrefs,{pos:"top",fill:"*"});var bottom=new DlContainer({});var box=new DlHbox({parent:bottom});var saveButton=new DlButton({parent:box,label:this.i18n("Save")});saveButton.addEventListener("onClick",this.prefsCalendarClickSave.$(this));this.prefsSaveButton.removeAllListeners("onClick");this.prefsSaveButton.addEventListener("onClick",this.prefsCalendarClickSave.$(this));rootLayout.packWidget(bottom,{pos:"bottom"});rootLayout.packWidget(tabs,{pos:"top",fill:"*"});var locale=null;var userSettingsLocaleKey=swApp.syncSWorld.userSettingsDTO.language;if(swApp.syncSWorld.userSettingsDTO.country&&swApp.syncSWorld.userSettingsDTO.country.length>0){userSettingsLocaleKey+="-"+swApp.syncSWorld.userSettingsDTO.country;}
locale=jsLocaleData[userSettingsLocaleKey];var defaultStartDay=0;if(swApp.syncSWorld.userSettingsDTO.firstWeekDay=="2"){defaultStartDay=1;}
this.swMiniCalWizard=new SwMiniCal_Wizard({parent:minicalTab,fillParent:true,iCalendarID:idICalendarID,timeZone:swApp.syncSWorld.userSettingsDTO.timeZoneID,locale:locale,fdow:defaultStartDay,scroll:true});var content=String.buffer("<col class='label'>",this.i18n("Name"),":</col> <col> <lcont>iCalendarName</lcont> <lcont>iCalendarReadOnly</lcont> </col>","<sep/>","<col class='label'>",this.i18n("Creator/Owner"),":</col> <col id='$ID_creatorOwner'></col>","<sep/>","<col class='label'>Generate Free/Busy Data:</col> <col id='$ID_freeBusy'></col> ","<sep/>","<col class='label'>HTTP/WebDAV Access: <br /> <span class='help'>Allow access to your calendar on the Internet.</span> </col> <col> <wcont>webDAVDisabled</wcont> <wcont>webDAVEnableProtected</wcont> <wcont>webDAVEnablePublic</wcont> <wcont>webDAVURL</wcont> </col>","<sep/>","<col class='label'>",this.i18n("Task Feed Type"),": <br /> <span class='help'>The URL changes if the feed is password protected.</span> </col> <col> <wcont>feedTypeSelectID</wcont><wcont>protectedFeed</wcont> <wcont>feedURL</wcont> </col>","<sep/>","<col class='label'>",this.i18n("Event Feed Type"),": <br /> <span class='help'>1.rss = 1 day. 2.rss = 2 days. The (Olson) tzid parameter is optional.</span> </col> <col> <wcont>eventFeedTypeSelectID</wcont><wcont>protectedEventFeed</wcont> <wcont>eventFeedURL</wcont> </col>","<sep/>","<col class='label'>Default Categories (comma separated): <br /> <span class='help'>All events and todos will have these categories set when you click 'Save'. Events and todos added to this calendar will automatically have these categories.</span></col> <col><lcont>defaultCategories</lcont> </col>","<sep/>","<col class='label'>Remove Categories (comma separated): <br /> <span class='help'>All events and todos will have these categories removed when you click 'Save'.</span></col> <col><lcont>removeCategories</lcont> </col>","<sep/>","<col class='label'>",this.i18n("Delete Events"),": <br /> <span class='help'>Deletes all events.</span> </col> <col> <lcont>deleteEvents</lcont> </col>","<sep/>","<col class='label'>",this.i18n("Delete Tasks"),": <br /> <span class='help'>Deletes all tasks.</span> </col> <col> <lcont>deleteTodos</lcont> </col>","<sep/>","<col class='label'>",this.i18n("Update Last-Modified Times"),": <br /> <span class='help'>Updates the last-modified time for each event and todo in the calendar.</span> </col> <col> <lcont>updateEvents</lcont> </col>","<sep/>","<col class='label'>",this.i18n("Delete Event Duplicates"),": <br /> <span class='help'>Finds duplicate events and deletes them.</span> </col> <col> <lcont>deleteEventDuplicates</lcont> </col>");var ids=calPrefs.setContent(content.get());this.iCalendarName=new DlEntry({parent:calPrefs,appendArgs:ids.iCalendarName,type:"text"});this.creatorOwner=new DlLabel({parent:calPrefs,appendArgs:ids.creatorOwner,label:"You"});this.iCalendarReadOnly=new DlLabel({parent:calPrefs,appendArgs:ids.iCalendarReadOnly,label:"<b>* Read-Only *</b>"});this.updateEventsButton=new DlButton({parent:calPrefs,appendArgs:ids.updateEvents,label:this.i18n("Update Events and Tasks")});this.updateEventsButton.addEventListener("onClick",function(){var updateEventsLastModified={};updateEventsLastModified.iCalendarID=this.idICalendarID.substring(2);var updateEventsSuccess=function(){alert("Events and tasks updated. Initiating a normal event sync.");var iCalendarIDL=[];iCalendarIDL.push(this.idICalendarID);swApp.syncSWorld.eventSync(swApp.syncSWorld.SYNC_NORMAL,iCalendarIDL);};var failCallback=function(){swApp.log("updateEventsLastModified failed.");};swApp.syncSWorld.sendRequest(updateEventsLastModified,"updateEventsLastModified",updateEventsSuccess.$(this),failCallback);});this.removeEventDupesButton=new DlButton({parent:calPrefs,appendArgs:ids.deleteEventDuplicates,label:this.i18n("Delete Event Duplicates")});this.removeEventDupesButton.addEventListener("onClick",function(){var removeEventDupes={};removeEventDupes.iCalendarID=this.idICalendarID.substring(2);var removeEventDupesSuccess=function(){alert("Event duplicates removed. Initiating a normal event sync.");var iCalendarIDL=[];iCalendarIDL.push(this.idICalendarID);swApp.syncSWorld.eventSync(swApp.syncSWorld.SYNC_NORMAL,iCalendarIDL);};var failCallback=function(){swApp.log("removeEventDupes failed.");};swApp.syncSWorld.sendRequest(removeEventDupes,"removeEventDupes",removeEventDupesSuccess.$(this),failCallback);});this.deleteEventsButton=new DlButton({parent:calPrefs,appendArgs:ids.deleteEvents,label:this.i18n("Delete Events")});this.deleteEventsButton.addEventListener("onClick",function(){var iCalendarInfoL=swApp.syncSWorld.userSettingsDTO.ICalendarInfoL;var iCalendarInfo=null;for(var i=0;i<iCalendarInfoL.length;++i){if(iCalendarInfoL[i].ICalendarID==this.idICalendarID){iCalendarInfo=iCalendarInfoL[i];break;}}
var iCalendarName=iCalendarInfo.name;var questionDlg=new DlDialog({modal:false,title:"Delete confirmation - "+iCalendarName});questionDlg.idICalendarID=this.idICalendarID;var cont=new DlContainer({parent:questionDlg});cont.setSize({x:400});cont.setContent("<div style='padding: 20px'>Are you sure you want to delete all of the events in:<br/>Calendar Name : <b>"+iCalendarName+"</b><br/>Calendar ID : "+this.idICalendarID.substring(2)+"</div>");var box=new DlHbox({parent:cont,borderSpacing:5});box.setAlign("center");var yes=new DlButton({parent:box,label:"<div style='width:5em'>"+
swApp.i18n("Delete")+"</div>"});var no=new DlButton({parent:box,label:"<div style='width:5em'>"+
swApp.i18n("Cancel")+"</div>"});yes.addEventListener("onClick",function(){questionDlg.destroy();var deleteEventsRequest={};deleteEventsRequest.iCalendarID=questionDlg.idICalendarID.substring(2);var yesSuccess=function(){swApp.syncSWorld.deleteAllLocalEvents(questionDlg.idICalendarID);swApp.eventCache.clear(questionDlg.idICalendarID);var iCalendarIDL=[];iCalendarIDL.push(questionDlg.idICalendarID);alert("Events deleted.");swApp.syncSWorld.eventSync(swApp.syncSWorld.SYNC_NORMAL,iCalendarIDL);};var failCallback=function(){swApp.log("deleteEventsRequest failed.");};swApp.syncSWorld.sendRequest(deleteEventsRequest,"deleteEventsRequest",yesSuccess,failCallback);});no.addEventListener("onClick",function(){questionDlg.destroy();});questionDlg.centerOnParent();questionDlg.show();});this.deleteTodosButton=new DlButton({parent:calPrefs,appendArgs:ids.deleteTodos,label:this.i18n("Delete Tasks")});this.deleteTodosButton.addEventListener("onClick",function(){var questionDlg=new DlDialog({modal:false,title:"Delete confirmation"});questionDlg.idICalendarID=this.idICalendarID;var cont=new DlContainer({parent:questionDlg});cont.setSize({x:400});cont.setContent("<div style='padding: 20px'><b>Are you sure you want all of the tasks/todos deleted?</b></div>");var box=new DlHbox({parent:cont,borderSpacing:5});box.setAlign("center");var yes=new DlButton({parent:box,label:"<div style='width:5em'>"+
swApp.i18n("Delete")+"</div>"});var no=new DlButton({parent:box,label:"<div style='width:5em'>"+
swApp.i18n("Cancel")+"</div>"});yes.addEventListener("onClick",function(){questionDlg.destroy();if(swApp.taskCache){swApp.taskCache.clear(questionDlg.idICalendarID);}
var deleteTodosRequest={};deleteTodosRequest.iCalendarID=questionDlg.idICalendarID.substring(2);var deleteTodosSuccess=function(){alert("Tasks deleted.");var iCalendarIDL=[];iCalendarIDL.push(questionDlg.idICalendarID);swApp.syncSWorld.todoSync(swApp.syncSWorld.SYNC_NORMAL,iCalendarIDL);};var failCallback=function(){swApp.log("deleteTodosRequest failed.");};swApp.syncSWorld.sendRequest(deleteTodosRequest,"deleteTodosRequest",deleteTodosSuccess,failCallback);});no.addEventListener("onClick",function(){questionDlg.destroy();});questionDlg.centerOnParent();questionDlg.show();});this.webDAVURL=new DlLabel({parent:calPrefs,appendArgs:ids.webDAVURL,label:"url"});this.freeBusyCheckbox=new DlCheckbox({parent:calPrefs,appendArgs:ids.freeBusy,label:"",checked:false});var enableSearchIndexing=false;var webdavGroup=DlRadioGroup.get();this.webDAVDisabled=new DlRadioButton({parent:calPrefs,label:"Disabled",value:"disabled",appendArgs:ids.webDAVDisabled,checked:true,group:webdavGroup});this.webDAVProtected=new DlRadioButton({parent:calPrefs,label:"Password protected",value:"passProtected",appendArgs:ids.webDAVEnableProtected,group:webdavGroup});this.webDAVPublic=new DlRadioButton({parent:calPrefs,label:"Public",value:"public",appendArgs:ids.webDAVEnablePublic,group:webdavGroup});webdavGroup.addEventListener("onChange",function(){if(this.getValue()[0]=="passProtected"&&typeof idICalendarID!='undefined'){var webDAVURL="http://"+window.location.hostname+"/sw/webDAVDir/"+idICalendarID.substring(2)+".ics";swApp.webDAVURL.label("<a href='"+webDAVURL+"'>"+
webDAVURL+"</a>");}
else if(this.getValue()[0]=="public"&&typeof idICalendarID!='undefined'){var url="http://"+window.location.hostname+"/tg/public/"+idICalendarID.substring(2)+".ics";swApp.webDAVURL.label("<a href='"+url+"'>"+url+"</a>");}
else{swApp.webDAVURL.label("");}});var feedType=swApp.syncSWorld.userSettingsDTO.feedType;if(!feedType){feedType="None";}
this.feedTypeSelect=new DlRadioSelect({parent:calPrefs,appendArgs:ids.feedTypeSelectID,options:[{label:"None",value:"None"},{label:"RSS 0.92",value:"rss_0.92"},{label:"RSS 0.93",value:"rss_0.93"},{label:"RSS 0.94",value:"rss_0.94"},{label:"RSS 1.0",value:"rss_1.0"},{label:"RSS 2.0",value:"rss_2.0"},{label:"Atom 0.3",value:"atom_0.3"},{label:"Atom 1.0",value:"atom_1.0"}],value:feedType});this.feedTypeSelect.addEventListener("onChange",function(){var feedTypeVal=this.getValue();swApp.feedExtension=".rss";if(feedTypeVal.indexOf("rss")<0){swApp.feedExtension=".atom";}
if(feedTypeVal=='None'){swApp.setSecureFeedURL(idICalendarID,null);swApp.setFeedURL(idICalendarID,null);swApp.protectedFeedCheckbox.display(false);swApp.feedURL.display(false);return;}
swApp.protectedFeedCheckbox.display(true);swApp.feedURL.display(true);if(swApp.protectedFeedCheckbox.checked()){swApp.setSecureFeedURL(idICalendarID);}
else{swApp.setFeedURL(idICalendarID);}});this.feedURL=new DlLabel({parent:calPrefs,appendArgs:ids.feedURL,label:""});swApp.feedExtension=".rss";if(feedType.indexOf("rss")<0){swApp.feedExtension=".atom";}
if(swApp.syncSWorld.userSettingsDTO.protectedFeed){this.setSecureFeedURL(idICalendarID);}
else{this.setFeedURL(idICalendarID);}
this.protectedFeedCheckbox=new DlCheckbox({parent:calPrefs,appendArgs:ids.protectedFeed,label:"Password Protected Task Feed",checked:swApp.syncSWorld.userSettingsDTO.protectedFeed});this.protectedFeedCheckbox.addEventListener("onChange",function(){if(this.checked()){swApp.setSecureFeedURL(this.idICalendarID);}
else{swApp.setFeedURL(this.idICalendarID);}});var eventFeedType="None";this.eventFeedTypeSelect=new DlRadioSelect({parent:calPrefs,appendArgs:ids.eventFeedTypeSelectID,options:[{label:"None",value:"None"},{label:"RSS 2.0",value:"rss_2.0"},{label:"Atom 1.0",value:"atom_1.0"}],value:eventFeedType});this.eventFeedTypeSelect.addEventListener("onChange",function(){var eventFeedTypeVal=this.getValue();swApp.eventFeedExtension=".rss";if(eventFeedTypeVal.indexOf("rss")<0){swApp.eventFeedExtension=".atom";}
if(eventFeedTypeVal=='None'){swApp.setSecureEventFeedURL(idICalendarID,null);swApp.setEventFeedURL(idICalendarID,null);swApp.protectedEventFeedCheckbox.display(false);swApp.eventFeedURL.display(false);return;}
swApp.protectedEventFeedCheckbox.display(true);swApp.eventFeedURL.display(true);if(swApp.protectedEventFeedCheckbox.checked()){swApp.setSecureEventFeedURL(idICalendarID);}
else{swApp.setEventFeedURL(idICalendarID);}});this.eventFeedURL=new DlLabel({parent:calPrefs,appendArgs:ids.eventFeedURL,label:""});swApp.eventFeedExtension=".rss";if(eventFeedType.indexOf("rss")<0){swApp.eventFeedExtension=".atom";}
if(swApp.syncSWorld.userSettingsDTO.protectedEventFeed){this.setSecureEventFeedURL(idICalendarID);}
else{this.setEventFeedURL(idICalendarID);}
this.protectedEventFeedCheckbox=new DlCheckbox({parent:calPrefs,appendArgs:ids.protectedEventFeed,label:"Password Protected Event Feed",checked:swApp.syncSWorld.userSettingsDTO.protectedEventFeed});this.protectedEventFeedCheckbox.addEventListener("onChange",function(){if(this.checked()){swApp.setSecureEventFeedURL(this.idICalendarID);}
else{swApp.setEventFeedURL(this.idICalendarID);}});this.defaultCategories=new DlEntry({parent:calPrefs,appendArgs:ids.defaultCategories,type:"text"});this.removeCategories=new DlEntry({parent:calPrefs,appendArgs:ids.removeCategories,type:"text"});var googContent=String.buffer();googContent("<col class='label'>Hosted Domains / ClientLogin: <br /> <span class='help'>HTTPS authentication.</span> </col> <col> <lcont>clientLoginEmailTxt</lcont> <wcont>clientLoginEmail</wcont> <lcont>clientLoginPasswordTxt</lcont> <lcont>clientLoginPassword</lcont> </col>","<sep/>","<col class='label'>Select Google Calendar<br /> <span class='help'></span> </col> <col> <lcont>findCalendars</lcont> <lcont>calendarSelect</lcont> </col>","<sep/>","<col class='label'>Sync Google Calendar<br /> <span class='help'></span> </col> <col> <lcont>syncGoogleCalendar</lcont> <lcont>syncing</lcont></col>","<sep/>","<col class='label'>AutoSync: <br /> <span class='help'>Automatically sync with Google Calendar with every SyncML sync.</span> </col> <col> <lcont>autoSyncSyncML</lcont> </col>","<sep/>","<col class='label'>",this.i18n("Google Calendar Sync"),":  <br /> <span class='help'>All sync modes are used once and then change back to Two-Way. The change is not shown here if you are offline. NEW: Google broke 'replace Google and Slow sync modes'</span> </col> <col><wcont>gcalTwoWay</wcont><wcont>gcalSW2G</wcont><wcont>gcalG2SW</wcont><wcont>gcalSLOW</wcont></col>","<sep/>","<col class='label'>",this.i18n("Make Default"),":  <br /> <span class='help'>Send events to Google as default instead of public.</span> </col> <col> <lcont>makeDefault</lcont> </col>","<sep/>","<col class='label'>",this.i18n("Visibility"),":  <br /> <span class='help'>Set the visibility of events sent to Google.</span> </col> <col> <lcont>visibilitySelectID</lcont> </col>");var idsGoog=googPrefs.setContent(googContent.get());var requestURL="requestURL";var googleAuthGroup=DlRadioGroup.get();var googleEmail=this.i18n("Corresponding Google Username (email)");this.clientLoginEmailTxt=new DlLabel({parent:googPrefs,appendArgs:idsGoog.clientLoginEmailTxt,label:googleEmail});this.clientLoginEmail=new DlEntry({parent:googPrefs,appendArgs:idsGoog.clientLoginEmail,type:"text"});this.clientLoginEmail.addEventListener("onChange",function(){this.googleSettingsChanged[this.currentlyEditingIDICalendarID]=true;}.$(this));var clientLoginPassword=this.i18n("Google ClientLogin Password");this.clientLoginPasswordTxt=new DlLabel({parent:googPrefs,appendArgs:idsGoog.clientLoginPasswordTxt,label:clientLoginPassword});this.clientLoginPassword=new DlEntry({parent:googPrefs,appendArgs:idsGoog.clientLoginPassword,type:"password"});this.clientLoginPassword.addEventListener("onChange",function(){this.googleSettingsChanged[this.currentlyEditingIDICalendarID]=true;}.$(this));this.syncing=new DlLabel({parent:googPrefs,appendArgs:idsGoog.syncing,label:"Syncing..."});this.syncGoogleCalendar=new DlButton({parent:googPrefs,appendArgs:idsGoog.syncGoogleCalendar,label:this.i18n("Sync")});this.syncGoogleCalendar.addEventListener("onClick",function(){if(!swApp.currentlyEditingIDICalendarID){alert("You must save a new calendar before you can sync with Google.");return;}
if(swApp.googleSettingsChanged[swApp.currentlyEditingIDICalendarID]){alert("You must save your changes before syncing.");return;}
var iCalendarID=swApp.currentlyEditingIDICalendarID.substring(2);swApp.startGoogleSync(iCalendarID);});this.findCalendars=new DlButton({parent:googPrefs,appendArgs:idsGoog.findCalendars,label:this.i18n("Find Calendars")});this.findCalendars.addEventListener("onClick",function(){if(!this.currentlyEditingIDICalendarID){alert("You must first save your new calendar.");return;}
this.googleSettingsChanged[this.currentlyEditingIDICalendarID]=true;if(this.clientLoginEmail.getValue().length<2){alert("Missing / invalid ClientLogin email.");return;}
if(this.clientLoginPassword.getValue().length<2){alert("Missing / invalid ClientLogin password.");return;}
var findGoogleCalendars={};findGoogleCalendars.authSub=false;findGoogleCalendars.clientLogin=true;findGoogleCalendars.email=this.clientLoginEmail.getValue();findGoogleCalendars.googPassword=this.clientLoginPassword.getValue();findGoogleCalendars.iCalendarID=this.currentlyEditingIDICalendarID.substring(2);var findGoogleSuccess=function(response){if(response.message&&response.message!="success"){alert(response.message);return;}
alert("Find Google calendars succeeded.");if(response.currentTitle){var options=[];for(var i=0;i<response.titleL.length;++i){var option={};option.label=response.titleL[i];option.value=response.urlL[i]+" "+option.label;options.push(option);}
option={};option.label=swApp.i18n("Stop Syncing");option.value="StopAbz#!@";options.push(option);swApp.calendarSelect.setOptions(options);swApp.calendarSelect.setValue(response.currentURL+" "+
response.currentTitle);}};var failCallback=function(){swApp.log("Find Google Calendars failed.");};swApp.syncSWorld.sendRequest(findGoogleCalendars,"findGoogleCalendars",findGoogleSuccess,failCallback);}.$(this));this.clickFindCalendars=this.i18n("Click 'Find Calendars'");this.calendarSelect=new DlRadioSelect({parent:googPrefs,appendArgs:idsGoog.calendarSelect,options:[{label:this.i18n("Click 'Find Calendars'"),value:"findCalendars"}],value:"findCalendars"});this.calendarSelect.addEventListener("onChange",function(){this.googleSettingsChanged[this.currentlyEditingIDICalendarID]=true;}.$(this));this.visibilitySelect=new DlRadioSelect({parent:googPrefs,appendArgs:idsGoog.visibilitySelectID,options:[{label:this.i18n("Do Not Alter"),value:"0"},{label:this.i18n("Default"),value:"1"},{label:this.i18n("Public"),value:"2"},{label:this.i18n("Private"),value:"3"},{label:this.i18n("Confidential"),value:"4"}],value:"0"});this.visibilitySelect.addEventListener("onChange",function(){this.googleSettingsChanged[this.currentlyEditingIDICalendarID]=true;}.$(this));this.makeDefaultCheckbox=new DlCheckbox({parent:googPrefs,appendArgs:idsGoog.makeDefault,label:"",checked:false});this.makeDefaultCheckbox.addEventListener("onChange",function(){this.googleSettingsChanged[this.currentlyEditingIDICalendarID]=true;}.$(this));this.autoSyncCheckbox=new DlCheckbox({parent:googPrefs,appendArgs:idsGoog.autoSyncSyncML,label:"",checked:false});this.autoSyncCheckbox.addEventListener("onChange",function(){this.googleSettingsChanged[this.currentlyEditingIDICalendarID]=true;}.$(this));var googleGroup=DlRadioGroup.get();this.googleSyncValues=["twoWaySync","oneWayUpSync","oneWayDownSync","slowSync"];this.googleTwoWay=new DlRadioButton({parent:googPrefs,label:"Two-Way",value:this.googleSyncValues[0],appendArgs:idsGoog.gcalTwoWay,checked:true,group:googleGroup});this.googleOneWayUp=new DlRadioButton({parent:googPrefs,label:"One-Way replace Google",value:this.googleSyncValues[0],appendArgs:idsGoog.gcalSW2G,disabled:false,group:googleGroup});this.googleOneWayDown=new DlRadioButton({parent:googPrefs,label:"One-Way replace ScheduleWorld",value:this.googleSyncValues[0],appendArgs:idsGoog.gcalG2SW,group:googleGroup});this.googleSlow=new DlRadioButton({parent:googPrefs,label:"Slow (merge)",appendArgs:idsGoog.gcalSLOW,value:this.googleSyncValues[0],disabled:true,group:googleGroup});googleGroup.addEventListener("onChange",function(){this.googleSettingsChanged[this.currentlyEditingIDICalendarID]=true;}.$(this));tabs.showPane(0);this.prefsViewCalendarRefresh(idICalendarID);this.rightNotebook.showPane(this.PREFS_CALENDAR_PAGE);};SWApp.prototype.prefsViewCalendarRefresh=function(idICalendarIDView){this.updateEventsButton.idICalendarID=idICalendarIDView;this.removeEventDupesButton.idICalendarID=idICalendarIDView;this.deleteEventsButton.idICalendarID=idICalendarIDView;this.deleteTodosButton.idICalendarID=idICalendarIDView;this.protectedFeedCheckbox.idICalendarID=idICalendarIDView;this.protectedEventFeedCheckbox.idICalendarID=idICalendarIDView;this.syncing.display(false);var feedType="None";var eventFeedType="None";if(typeof idICalendarIDView=='undefined'){this.iCalendarName.setValue("");var first=swApp.syncSWorld.userSettingsDTO.firstName;var last=swApp.syncSWorld.userSettingsDTO.lastName;var email=swApp.syncSWorld.userSettingsDTO.emailC[0];this.creatorOwner.label("You: "+first+" "+last+" <"+email+">");this.cssColourCal=swApp.pickNextColour(idICalendarIDView);this.freeBusyCheckbox.checked(false);this.webDAVDisabled.checked(true);this.webDAVURL.label("");this.protectedFeedCheckbox.checked(false);this.protectedEventFeedCheckbox.checked(false);this.feedTypeSelect.value(feedType);this.eventFeedTypeSelect.value(eventFeedType);this.autoSyncCheckbox.checked(false);this.makeDefaultCheckbox.checked(false);this.syncGoogleCalendar.disabled(true);this.deleteTodosButton.disabled(true);this.deleteEventsButton.disabled(true);this.removeEventDupesButton.disabled(true);this.updateEventsButton.disabled(true);this.removeCategories.disabled(true);return;}
else{this.syncGoogleCalendar.disabled(false);this.deleteTodosButton.disabled(false);this.deleteEventsButton.disabled(false);this.removeEventDupesButton.disabled(false);this.updateEventsButton.disabled(false);this.removeCategories.disabled(false);}
this.findCalendars.iCalendarID=idICalendarIDView.substring(2);this.syncGoogleCalendar.iCalendarID=idICalendarIDView.substring(2);var iCalendarInfoL=swApp.syncSWorld.userSettingsDTO.ICalendarInfoL;var iCalendarInfo=null;for(var i=0;i<iCalendarInfoL.length;++i){if(iCalendarInfoL[i].ICalendarID==idICalendarIDView){iCalendarInfo=iCalendarInfoL[i];break;}}
this.iCalendarName.setValue(iCalendarInfo.name);if(iCalendarInfo.permission==6){this.iCalendarReadOnly.display(false);}
else{this.iCalendarReadOnly.display(true);}
var email;if(iCalendarInfo.ownerEmail){email=iCalendarInfo.ownerEmail;}
else{email=iCalendarInfo.ownerCalUserID;}
this.creatorOwner.label(email);this.cssColourCal;if(swApp.syncSWorld.userSettingsDTO.ICalendarIDColourM){this.cssColourCal=swApp.syncSWorld.userSettingsDTO.ICalendarIDColourM[iCalendarInfo.ICalendarID];}
if(!this.cssColourCal){this.cssColourCal=swApp.pickNextColour(iCalendarInfo.ICalendarID);}
if(iCalendarInfo.defaultCategories&&iCalendarInfo.defaultCategories.length>0){this.defaultCategories.setValue(iCalendarInfo.defaultCategories.join(","));}
else{this.defaultCategories.setValue("");}
this.freeBusyCheckbox.checked(iCalendarInfo.generateFreeBusy);this.freeBusyCheckbox.addEventListener("onClick",function(){if(iCalendarInfo.ICalendarID){var url="http://"+window.location.hostname+"/tg/freebusy/"+
iCalendarInfo.ICalendarID.substring(2)+".ifb";this.freeBusyCheckbox.label("<a href='"+url+"'>"+url+"</a>");}
else{this.freeBusyCheckbox.label("You need to save this calendar and reload the page.");}}.$(this));var url;if(iCalendarInfo.ICalendarID){url="http://"+window.location.hostname+"/tg/freebusy/"+
iCalendarInfo.ICalendarID.substring(2)+".ifb";this.freeBusyCheckbox.label("<a href='"+url+"'>"+url+"</a>");}
else{this.freeBusyCheckbox.label("You need to save this calendar and reload the page.");}
if(iCalendarInfo.enableProtectedWebDAV){this.webDAVProtected.checked(true);var webDAVURL="http://"+window.location.hostname+"/sw/webDAVDir/"+idICalendarIDView.substring(2)+".ics";this.webDAVURL.label("<a href='"+webDAVURL+"'>"+webDAVURL+"</a>");}
else if(iCalendarInfo.enableWebDAV){this.webDAVPublic.checked(true);url="http://"+window.location.hostname+"/tg/public/"+idICalendarIDView.substring(2)+".ics";this.webDAVURL.label("<a href='"+url+"'>"+url+"</a>");}
else{this.webDAVDisabled.checked(true);this.webDAVURL.label("");}
if(iCalendarInfo.generateProtectedTodoFeed){this.protectedFeedCheckbox.checked(true);}
else{this.protectedFeedCheckbox.checked(false);}
feedType=iCalendarInfo.feedType;if(!feedType){feedType="None";}
this.feedTypeSelect.setValue(feedType);swApp.feedExtension=".atom";if(feedType.indexOf("atom")<0){swApp.feedExtension=".rss";}
if(feedType!="None"){if(iCalendarInfo.generateProtectedTodoFeed){this.setSecureFeedURL(idICalendarIDView,swApp.feedExtension);}
else{this.setFeedURL(idICalendarIDView,swApp.feedExtension);}}
else{this.setFeedURL("");}
if(iCalendarInfo.generateProtectedEventFeed){this.protectedEventFeedCheckbox.checked(true);}
else{this.protectedEventFeedCheckbox.checked(false);}
eventFeedType=iCalendarInfo.eventFeedType;if(!eventFeedType){eventFeedType="None";}
this.eventFeedTypeSelect.setValue(eventFeedType,true);swApp.eventFeedExtension=".atom";if(eventFeedType.indexOf("atom")<0){swApp.eventFeedExtension=".rss";}
if(eventFeedType!="None"){if(iCalendarInfo.generateProtectedEventFeed){this.setSecureEventFeedURL(idICalendarIDView);}
else{this.setEventFeedURL(idICalendarIDView);}}
else{this.setEventFeedURL("");}
var googleDTO=swApp.syncSWorld.userSettingsDTO.ICalendarIDGoogleCalendarDTOM[idICalendarIDView];var optionsTitle=this.clickFindCalendars;var optionsValue="findCalendars";var autoSync=false;var clientLogin=false;var username="";var forcedEntryVisibility=0;var mapPublicToDefault=true;this.googleTwoWay.checked(true);if(googleDTO){if(googleDTO.url){var index=googleDTO.url.indexOf(" ");optionsTitle=googleDTO.url.substring(index+1);optionsValue=googleDTO.url;}
if(googleDTO.autoSync){autoSync=googleDTO.autoSync;}
if(googleDTO.clientLogin){clientLogin=googleDTO.clientLogin;}
if(googleDTO.username){username=googleDTO.username;}
if(googleDTO.forcedEntryVisibility){forcedEntryVisibility=googleDTO.forcedEntryVisibility;}
if(googleDTO.mapPublicToDefault){mapPublicToDefault=googleDTO.mapPublicToDefault;}}
if(autoSync){this.autoSyncCheckbox.checked(true);}
else{this.autoSyncCheckbox.checked(false);}
if(username){this.clientLoginEmail.setValue(username);}
else{this.clientLoginEmail.setValue("");}
this.clientLoginPassword.setValue("");var options=[{label:optionsTitle,value:optionsValue},{label:swApp.i18n("Stop Syncing"),value:"StopAbz#!@"}];this.calendarSelect.setOptions(options);this.calendarSelect.setValue(optionsValue);this.visibilitySelect.setValue(forcedEntryVisibility);if(mapPublicToDefault){this.makeDefaultCheckbox.checked(true);}
else{this.makeDefaultCheckbox.checked(false);}
this.googleSettingsChanged[this.currentlyEditingIDICalendarID]=false;};SWApp.prototype.setSecureFeedURL=function(idICalendarID){if(typeof idICalendarID=='undefined'){this.feedURL.label("Calendar not created yet.");}
else if(!swApp.feedExtension){this.feedURL.label("");}
else{var url="http://"+window.location.hostname+"/sw/todoFeedsSecure/"+idICalendarID.substring(2)+
swApp.feedExtension;this.feedURL.label("<a href='"+url+"'>"+url+"</a>");}};SWApp.prototype.setFeedURL=function(idICalendarID){if(typeof idICalendarID=='undefined'){this.feedURL.label("Calendar not created yet.");}
else if(!swApp.feedExtension){this.feedURL.label("");}
else{var url="http://"+window.location.hostname+"/tg/todoFeeds/"+idICalendarID.substring(2)+swApp.feedExtension;this.feedURL.label("<a href='"+url+"'>"+url+"</a>");}};SWApp.prototype.setSecureEventFeedURL=function(idICalendarID){if(typeof idICalendarID=='undefined'){this.eventFeedURL.label("Calendar not created yet.");}
else if(!swApp.eventFeedExtension){this.eventFeedURL.label("");}
else{var url="http://"+window.location.hostname+"/sw/eventFeedSecure/"+idICalendarID.substring(2)+"/1"+
swApp.eventFeedExtension+"?tzid=America/Toronto";this.eventFeedURL.label("<a href='"+url+"'>"+url+"</a>");}};SWApp.prototype.setEventFeedURL=function(idICalendarID){if(typeof idICalendarID=='undefined'){this.eventFeedURL.label("Calendar not created yet.");}
else if(!swApp.eventFeedExtension){this.eventFeedURL.label("");}
else{var url="http://"+window.location.hostname+"/tg/eventFeed/"+idICalendarID.substring(2)+"/1"+
swApp.eventFeedExtension+"?tzid=America/Toronto";this.eventFeedURL.label("<a href='"+url+"'>"+url+"</a>");}};SWApp.prototype.prefsViewCalendarSaveUserSettings=function(){if(!swApp.currentlyEditingIDICalendarID){return;}
var iCalendarInfo;var iCalendarIDGoogleCalendarDTOM=swApp.syncSWorld.userSettingsDTO.ICalendarIDGoogleCalendarDTOM[swApp.currentlyEditingIDICalendarID];if(!iCalendarIDGoogleCalendarDTOM){iCalendarIDGoogleCalendarDTOM={};swApp.syncSWorld.userSettingsDTO.ICalendarIDGoogleCalendarDTOM[swApp.currentlyEditingIDICalendarID]=iCalendarIDGoogleCalendarDTOM;}
for(var i=0;i<swApp.syncSWorld.userSettingsDTO.ICalendarInfoL.length;++i){if(swApp.syncSWorld.userSettingsDTO.ICalendarInfoL[i].ICalendarID==swApp.currentlyEditingIDICalendarID){iCalendarInfo=swApp.syncSWorld.userSettingsDTO.ICalendarInfoL[i];break;}}
iCalendarInfo.name=swApp.iCalendarName.getValue();iCalendarInfo.generateFreeBusy=swApp.freeBusyCheckbox.checked();if(swApp.webDAVDisabled.checked()){iCalendarInfo.enableWebDAV=false;}
if(swApp.webDAVProtected.checked()){iCalendarInfo.enableProtectedWebDAV=true;}else{iCalendarInfo.enableProtectedWebDAV=false;}
if(swApp.webDAVPublic.checked()){iCalendarInfo.enableWebDAV=true;}
iCalendarInfo.feedType=swApp.feedTypeSelect.getValue();iCalendarInfo.generateProtectedTodoFeed=swApp.protectedFeedCheckbox.checked();iCalendarInfo.eventFeedType=swApp.eventFeedTypeSelect.getValue();iCalendarInfo.generateProtectedEventFeed=swApp.protectedEventFeedCheckbox.checked();iCalendarIDGoogleCalendarDTOM.authSub=false;iCalendarIDGoogleCalendarDTOM.clientLogin=true;iCalendarIDGoogleCalendarDTOM.username=swApp.clientLoginEmail.getValue();var splitValue=swApp.calendarSelect.getValue();var index=splitValue.indexOf(" ");iCalendarIDGoogleCalendarDTOM.title=splitValue.substring(index+1);iCalendarIDGoogleCalendarDTOM.url=splitValue;iCalendarIDGoogleCalendarDTOM.autoSync=swApp.autoSyncCheckbox.checked();iCalendarIDGoogleCalendarDTOM.mapPublicToDefault=swApp.makeDefaultCheckbox.checked();iCalendarIDGoogleCalendarDTOM.forcedEntryVisibility=swApp.visibilitySelect.getValue();};SWApp.prototype.startGoogleSync=function(iCalendarID){if(!swApp.canSyncGoogle()){var pc=confirm("Your license has expired.\nClick 'Ok' to purchase a new license.");if(pc){swApp.purchase();}
return;}
var request={};request.syncGoogleCalendar=true;request.iCalendarID=iCalendarID;var googleSuccess=function(response){if(swApp.syncing){swApp.syncing.display(false);}
if(response&&response.resultL&&response.resultL.length>0){if(response.resultL[0].SWAddedS.length>0||response.resultL[0].SWFailedS.length>0||response.resultL[0].SWUpdatedS.length>0||response.resultL[0].SWDeletedS.length>0||response.resultL[0].googleAddedS.length>0||response.resultL[0].googleFailedS.length>0||response.resultL[0].googleIDDeletedS.length>0||response.resultL[0].googleUpdatedS.length>0){alert("Google sync finished.\nAdded on ScheduleWorld:"+
response.resultL[0].SWAddedS.length+"\n"+"Updated on ScheduleWorld:"+
response.resultL[0].SWUpdatedS.length+"\n"+"Deleted on ScheduleWorld:"+
response.resultL[0].SWDeletedS.length+"\n"+"Added on Google:"+
response.resultL[0].googleAddedS.length+"\n"+"Updated on Google:"+
response.resultL[0].googleUpdatedS.length+"\n"+"Deleted on Google:"+
response.resultL[0].googleIDDeletedS.length+"\n");if(swApp.googleTwoWay){swApp.googleTwoWay.checked(true);}
var iCalendarIDL=[];iCalendarIDL.push("id"+iCalendarID);swApp.syncSWorld.eventSync(swApp.syncSWorld.SYNC_NORMAL,iCalendarIDL);}
else{alert("Google sync finished. Google and ScheduleWorld were left unchanged.");}}
else{alert("Sync failed:\n"+response.message);}
if(swApp.syncGoogleCalendar){swApp.syncGoogleCalendar.disabled(false);}
swApp.syncGoogCalButton.disabled(false);};var failCallback=function(value){if(swApp.syncing){swApp.syncing.display(false);}
swApp.syncGoogCalButton.disabled(false);if(swApp.syncGoogleCalendar){swApp.syncGoogleCalendar.disabled(false);}
swApp.log("Failed to sync with Google calendar.");};swApp.syncSWorld.sendRequest(request,"syncGoogleCalendar",googleSuccess,failCallback,swApp.GOOGLE_TIMEOUT_MS);if(swApp.syncGoogleCalendar){swApp.syncGoogleCalendar.disabled(true);}
if(swApp.syncing){swApp.syncing.display(true);}};SWApp.prototype.contactEditView=function(luid){this.currentContactID=luid;this.previousContactPane=this.contactViewNotebook.getCurrentPaneIndex();var children=this.contactEditContainer.children();if(children&&children.length>0){this.tabs.showPane(2);this.contactEditRefresh(luid);this.contactViewNotebook.showPane(this.CON_EDIT_PAGE);return this;}
var titleBox=new DlHbox({parent:this.contactEditContainer});var saveBtn=new DlButton({label:"Save",parent:titleBox});titleBox.addSpace();saveBtn.addEventListener("onClick",function(){var contact;var needsOnChange=false;if(!this.currentContactID){contact={};contact.id=swApp.syncSWorld.getNextLUID();this.currentContactID=contact.id;contact.brandNew=true;swApp.syncSWorld.swContactModel[contact.id]=contact;swApp.contactCache.syncSWorldContactAdded(false,contact);}
else{contact=swApp.syncSWorld.swContactModel[this.currentContactID];if(contact.readOnly=="true"){alert("This contact was share with you in read-only mode.\nYou may not make changes to read-only contacts.");return;}
needsOnChange=true;}
contact.dirty=true;this.copy2Contact(contact);if(this.previousContactPane==this.CON_PHOTO_PAGE){swApp.contactPhotoView();}
else{swApp.contactListView();swApp.contactListSelectionModel.clear();swApp.contactListSelectionModel.select(contact.id);}
if(needsOnChange){var existing=swApp.contactCache.get(contact.id);existing.set("displayName",contact.displayName);}
swApp.syncSWorld.contactSync();}.$(this));var cancelBtn=new DlButton({label:"Cancel",parent:titleBox});cancelBtn.addEventListener("onClick",function(){if(this.previousContactPane==this.CON_PHOTO_PAGE){swApp.contactPhotoView();}
else{swApp.contactListView();}}.$(this));titleBox.addSpace();this.readOnlyLabel=new DlLabel({label:" * Read-Only *",parent:titleBox});this.readOnlyLabel.display(false);this.tabs=new DlTabs({parent:this.contactEditContainer});var phoneTab=new DlContainer({});var internetTab=new DlContainer({});var physicalTab=new DlContainer({});var sharingTab=new DlContainer({});var addressTab=new DlContainer({});this.tabs.addTab(phoneTab,"Phone numbers");this.tabs.addTab(internetTab,"Internet");this.tabs.addTab(physicalTab,"Personal");this.tabs.addTab(addressTab,"Address");this.tabs.addTab(sharingTab,"Sharing");this.tabs.showPane(2);this.tabs.setSize({x:820,y:400});var generalHBox=new DlHbox({parent:phoneTab,borderSpacing:5});var generalVBox=new DlVbox({parent:generalHBox,borderSpacing:5});this.phoneFG=new DlFieldGrid({parent:generalVBox});this.primaryPhone=this.phoneFG.addField({name:"primaryPhone",label:"Primary Phone:"});this.homePhone=this.phoneFG.addField({name:"homePhone",label:"Home Phone:"});this.telephoneNumber=this.phoneFG.addField({name:"telephoneNumber",label:"Work Phone:"});this.homeFacsimileTelephoneNumber=this.phoneFG.addField({name:"homeFacsimileTelephoneNumber",label:"Home Fax:"});this.facsimileTelephoneNumber=this.phoneFG.addField({name:"facsimileTelephoneNumber",label:"Work Fax:"});this.otherFacsimileTelephoneNumber=this.phoneFG.addField({name:"otherFacsimileTelephoneNumber",label:"Other Fax:"});this.mobile=this.phoneFG.addField({name:"mobile",label:"Mobile:"});this.pager=this.phoneFG.addField({name:"pager",label:"Pager:"});this.IPPhone=this.phoneFG.addField({name:"IPPhone",label:"IP/SIP Phone:"});this.carPhone=this.phoneFG.addField({name:"carPhone",label:"Car Phone:"});this.radio=this.phoneFG.addField({name:"radio",label:"Radio:"});var generalVBox2=new DlVbox({parent:generalHBox,borderSpacing:5});this.phoneFG2=new DlFieldGrid({parent:generalVBox2});this.assistantPhone=this.phoneFG2.addField({name:"assistantPhone",label:"Assistant Phone:"});this.callbackPhone=this.phoneFG2.addField({name:"callbackPhone",label:"Callback Phone:"});this.companyPhone=this.phoneFG2.addField({name:"companyPhone",label:"Company Phone:"});this.otherPhone=this.phoneFG2.addField({name:"otherPhone",label:"Other Phone:"});this.videoPhone=this.phoneFG2.addField({name:"videoPhone",label:"Video Phone:"});this.videoPhoneHome=this.phoneFG2.addField({name:"videoPhoneHome",label:"Home Video Phone:"});this.videoPhoneWork=this.phoneFG2.addField({name:"videoPhoneWork",label:"Work Video Phone:"});this.internationaliSDNNumber=this.phoneFG2.addField({name:"internationaliSDNNumber",label:"ISDN:"});var generalHBox2=new DlHbox({parent:internetTab,borderSpacing:5});var generalVBox3=new DlVbox({parent:generalHBox2,borderSpacing:5});this.internetFG=new DlFieldGrid({parent:generalVBox3});this.emailSlot1Ret={};this.emailSlot1=this.internetFG.addField({name:"emailSlot1",label:"EMail1:"},null,this.emailSlot1Ret);this.emailSlot2Ret={};this.emailSlot2=this.internetFG.addField({name:"emailSlot2",label:"EMail2:"},null,this.emailSlot2Ret);this.emailSlot3Ret={};this.emailSlot3=this.internetFG.addField({name:"emailSlot3",label:"EMail3:"},null,this.emailSlot3Ret);this.emailSlot4Ret={};this.emailSlot4=this.internetFG.addField({name:"emailSlot4",label:"EMail4:"},null,this.emailSlot4Ret);this.emailSlot5Ret={};this.emailSlot5=this.internetFG.addField({name:"emailSlot5",label:"EMail5:"},null,this.emailSlot5Ret);this.emailSlot6Ret={};this.emailSlot6=this.internetFG.addField({name:"emailSlot6",label:"EMail6:"},null,this.emailSlot6Ret);this.emailSlot7Ret={};this.emailSlot7=this.internetFG.addField({name:"emailSlot7",label:"EMail7:"},null,this.emailSlot7Ret);this.emailSlot8Ret={};this.emailSlot8=this.internetFG.addField({name:"emailSlot8",label:"EMail8:"},null,this.emailSlot8Ret);this.blogURL=this.internetFG.addField({name:"blogURL",label:"Blog URL:"});this.homeurl=this.internetFG.addField({name:"homeurl",label:"Home URL:"});this.workurl=this.internetFG.addField({name:"workurl",label:"Work URL:"});this.jabber=this.internetFG.addField({name:"jabber",label:"Jabber server:"});var generalVBox4=new DlVbox({parent:generalHBox2,borderSpacing:5});this.internetFG2=new DlFieldGrid({parent:generalVBox4});this.facebookId=this.internetFG2.addField({name:"facebookId",label:"Facebook ID:"});this.googletalk=this.internetFG2.addField({name:"googletalk",label:"Google Talk:"});this.icq=this.internetFG2.addField({name:"icq",label:"ICQ:"});this.yahoo=this.internetFG2.addField({name:"yahoo",label:"Yahoo:"});this.nsAIMid=this.internetFG2.addField({name:"nsAIMid",label:"AIM:"});this.skype=this.internetFG2.addField({name:"skype",label:"Skype:"});this.msn=this.internetFG2.addField({name:"msn",label:"MSN Messenger:"});this.netmeeting=this.internetFG2.addField({name:"netmeeting",label:"Net Meeting:"});this.gizmoId=this.internetFG2.addField({name:"gizmoId",label:"Gizmo"});this.twitter=this.internetFG2.addField({name:"twitter",label:"Twitter"});this.dirserver=this.internetFG2.addField({name:"dirserver",label:"LDAP Server"});this.groupwise=this.internetFG2.addField({name:"groupwise",label:"GroupWise"});var generalHBox3=new DlHbox({parent:physicalTab,borderSpacing:5});var generalVBox5=new DlVbox({parent:generalHBox3,borderSpacing:5});this.personalFG=new DlFieldGrid({parent:generalVBox5});this.displayNameRet={};this.displayName=this.personalFG.addField({name:"displayName",label:"Display Name:"},null,this.displayNameRet);var options=[{label:"- - - -",value:"none"},{label:"Mr.",value:"Mr."},{label:"Mrs.",value:"Mrs."},{label:"Miss",value:"Miss"},{label:"Dr.",value:"Dr."},{label:"Ms.",value:"Ms."},{label:"Prof.",value:"Prof."}];this.personalTitle=this.personalFG.addField({name:"personalTitle",label:"Prefix:",widget:new DlRadioSelect({options:options,value:options[0].value})});this.givenName=this.personalFG.addField({name:"givenName",label:"First:"});this.middleName1=this.personalFG.addField({name:"middleName1",label:"Middle:"});this.middleName2=this.personalFG.addField({name:"middleName2",label:"Middle:"});this.sn=this.personalFG.addField({name:"sn",label:"Last:"});var options2=[{label:"- - - -",value:"none"},{label:"I",value:"I"},{label:"II",value:"II"},{label:"III",value:"III"},{label:"Jr.",value:"Jr."},{label:"Sr.",value:"Sr."}];this.suffix=this.personalFG.addField({name:"suffix",label:"Suffix:",widget:new DlRadioSelect({options:options2,value:options2[0].value})});this.o=this.personalFG.addField({name:"o",label:"Company:"});this.businessRole=this.personalFG.addField({name:"businessRole",label:"Profession:"});this.latitude=this.personalFG.addField({name:"latitude",label:"Latitude:"});this.longitude=this.personalFG.addField({name:"longitude",label:"Longitude:"});this.tz=this.personalFG.addField({name:"tz",label:"Time Zone:"});this.category=this.personalFG.addField({name:"category",label:"Categories:"});var generalVBox6=new DlVbox({parent:generalHBox3,borderSpacing:5});this.personalFG2=new DlFieldGrid({parent:generalVBox6});this.xmozillanickname=this.personalFG2.addField({name:"xmozillanickname",label:"Nickname:"});this.spouseName=this.personalFG2.addField({name:"spouseName",label:"Spouse:"});var defaultStartDay=0;if(swApp.syncSWorld.userSettingsDTO.firstWeekDay=="2"){defaultStartDay=1;}
var bdayHbox=new DlHbox({});this.bdayCalBtn=new DlButtonCalendar({parent:bdayHbox,dateFormat:swApp.getDateFormat(),calendar:{firstDay:defaultStartDay,fixedFirstDay:false,withMenu:true}});this.bdayNoneBtn=new DlButton({parent:bdayHbox,label:"None"});this.bdayNoneBtn.addEventListener("onClick",function(){this.bdayCalBtn.date="None";this.bdayCalBtn.getButton().label("None",true);}.$(this));this.birthDate=this.personalFG2.addField({name:"birthDate",label:"Birthday:",widget:bdayHbox});var annHbox=new DlHbox({});this.annCalBtn=new DlButtonCalendar({parent:annHbox,dateFormat:swApp.getDateFormat(),calendar:{firstDay:defaultStartDay,fixedFirstDay:false,withMenu:true}});this.annNoneBtn=new DlButton({parent:annHbox,label:"None"});this.annNoneBtn.addEventListener("onClick",function(){this.annCalBtn.date="None";this.annCalBtn.getButton().label("None",true);}.$(this));this.anniversary=this.personalFG2.addField({name:"anniversary",label:"Anniversary:",widget:annHbox});this.description=this.personalFG2.addField({name:"description",label:"Description:",widget:new DlEntry({type:"textarea"})});this.title=this.personalFG2.addField({name:"title",label:"Job Title:"});this.departmentNumber=this.personalFG2.addField({name:"departmentNumber",label:"Department:"});this.physicalDeliveryOfficeName=this.personalFG2.addField({name:"physicalDeliveryOfficeName",label:"Office:"});this.managerName=this.personalFG2.addField({name:"managerName",label:"Manager:"});this.assistantName=this.personalFG2.addField({name:"assistantName",label:"Assistant:"});var generalHBox9=new DlHbox({parent:addressTab,borderSpacing:5});var generalVBox7=new DlVbox({parent:generalHBox9,borderSpacing:5});var addressTabs=new DlTabs({parent:generalVBox7});var homeAddressTab=new DlContainer({});var workAddressTab=new DlContainer({});var otherAddressTab=new DlContainer({});addressTabs.addTab(homeAddressTab,"Home Address");addressTabs.addTab(workAddressTab,"Work Address");addressTabs.addTab(otherAddressTab,"Other Address");addressTabs.showPane(0);addressTabs.setSize({x:270,y:250});var generalHBox4=new DlHbox({parent:homeAddressTab,borderSpacing:5});var generalVBox8=new DlVbox({parent:generalHBox4,borderSpacing:5});this.addressFG=new DlFieldGrid({parent:generalVBox8});this.homePostalAddress=this.addressFG.addField({name:"homePostalAddress",label:"Address:",widget:new DlEntry({type:"textarea"})});this.mozillaHomeLocalityName=this.addressFG.addField({name:"mozillaHomeLocalityName",label:"City:"});this.mozillaHomeState=this.addressFG.addField({name:"mozillaHomeState",label:"State:"});this.mozillaHomePostalCode=this.addressFG.addField({name:"mozillaHomePostalCode",label:"Postal:"});this.mozillaHomeCountryName=this.addressFG.addField({name:"mozillaHomeCountryName",label:"Country:"});this.postOfficeBox=this.addressFG.addField({name:"postOfficeBox",label:"P.O.Box:"});var generalHBox5=new DlHbox({parent:workAddressTab,borderSpacing:5});var generalVBox9=new DlVbox({parent:generalHBox5,borderSpacing:5});this.addressFG2=new DlFieldGrid({parent:generalVBox9});this.postalAddress=this.addressFG2.addField({name:"postalAddress",label:"Address:",widget:new DlEntry({type:"textarea"})});this.l=this.addressFG2.addField({name:"l",label:"City:"});this.st=this.addressFG2.addField({name:"st",label:"State:"});this.postalCode=this.addressFG2.addField({name:"postalCode",label:"Postal:"});this.c=this.addressFG2.addField({name:"c",label:"Country:"});this.workPostOfficeBox=this.addressFG2.addField({name:"workPostOfficeBox",label:"P.O.Box:"});var generalHBox6=new DlHbox({parent:otherAddressTab,borderSpacing:5});var generalVBox10=new DlVbox({parent:generalHBox6,borderSpacing:5});this.addressFG3=new DlFieldGrid({parent:generalVBox10});this.otherPostalAddress=this.addressFG3.addField({name:"otherPostalAddress",label:"Address:",widget:new DlEntry({type:"textarea"})});this.otherCity=this.addressFG3.addField({name:"otherCity",label:"City:"});this.otherRegion=this.addressFG3.addField({name:"otherRegion",label:"State:"});this.otherPostalCode=this.addressFG3.addField({name:"otherPostalCode",label:"Postal:"});this.otherCountry=this.addressFG3.addField({name:"otherCountry",label:"Country:"});this.otherPostOfficeBox=this.addressFG3.addField({name:"otherPostOfficeBox",label:"P.O.Box:"});var generalHBox7=new DlHbox({parent:sharingTab,borderSpacing:5});var generalVBox11=new DlVbox({parent:generalHBox7,borderSpacing:5});this.sharingFG=new DlFieldGrid({parent:generalVBox11});this.calCalURI=this.sharingFG.addField({name:"calCalURI",label:"calCalURI:"});this.calFBURL=this.sharingFG.addField({name:"calFBURL",label:"Free/Busy URL:"});this.calCAPURI=this.sharingFG.addField({name:"calCAPURI",label:"calCAPURI:"});this.calCalAdrURI=this.sharingFG.addField({name:"calCalAdrURI",label:"calCalAdrURI:"});this.calOtherCalURIs=this.sharingFG.addField({name:"calOtherCalURIs",label:"calOtherCalURIs:"});this.calOtherFBURLs=this.sharingFG.addField({name:"calOtherFBURLs",label:"calOtherFBURLs:"});this.calOtherCAPURIs=this.sharingFG.addField({name:"calOtherCAPURIs",label:"calOtherCAPURIs:"});this.calOtherCalAdrURIs=this.sharingFG.addField({name:"calOtherCalAdrURIs",label:"calOtherCalAdrURIs:"});var generalVBox12=new DlVbox({parent:generalHBox7,borderSpacing:5});this.sharingFG2=new DlFieldGrid({parent:generalVBox12});this.contactEditRefresh(luid);this.contactViewNotebook.showPane(this.CON_EDIT_PAGE);};SWApp.prototype.setFields=function(contact,fieldGrid,obj){for(var key in obj){if(obj.hasOwnProperty(key)){if(!this[key]){this.log("setFields() failed to find key:"+key);continue;}
var widget=this[key];if(typeof widget.setValue=='function'){if(contact&&contact.hasOwnProperty(key)){widget.setValue(contact[key]);}
else if(key.indexOf("middleName1")===0){if(contact&&contact.initials&&contact.initials.length>0){widget.setValue(contact.initials[0]);}
else{widget.setValue("");}}
else if(key.indexOf("middleName2")===0){if(contact&&contact.initials&&contact.initials.length>1){widget.setValue(contact.initials[1]);}
else{widget.setValue("");}}
else{widget.setValue("");}}}}};SWApp.prototype.contactEditRefresh=function(luid){this.readOnlyLabel.display(false);var swContact=this.contactCache.get(luid);var contact;if(swContact){contact=swContact._data.syncSWorldContact;var url=swContact.get170IconURL();var element=swApp.photoButton.getContentElement();DynarchDomUtils.setStyleProperty(element,"background-image","url("+url+")");if(swContact.get("readOnly")=="true"){this.readOnlyLabel.display(true);}}
var value;var emailObj;var index;var year;var index2;var month;var dayOfMonth;var date;var ret;var i;var fields=this.phoneFG.getField();this.setFields(contact,this.phoneFG,fields);fields=this.phoneFG2.getField();this.setFields(contact,this.phoneFG2,fields);fields=this.internetFG.getField();this.setFields(contact,this.internetFG,fields);for(i=1;i<9;++i){ret="emailSlot"+i+"Ret";this[ret].label.label("EMail"+i+":");}
if(contact&&contact.mail){var valueL=[];var key;var tmp;var mailLength=8;var slotUsed={};if(contact.mail&&typeof contact.mail==='object'&&contact.mail instanceof Array){if(contact.mail.length>8){var removed=contact.mail.splice(0,contact.mail.length-8);this.log("Removed emails:"+removed);}
var tmp;for(i=0;i<contact.mail.length;++i){emailObj=contact.mail[i];if(!(emailObj instanceof Object)){tmp=emailObj;emailObj={};emailObj.value=tmp;contact.mail[i]=emailObj;}
if(emailObj.value.indexOf("@")<0){continue;}
if(emailObj.hasOwnProperty("slot")){slotUsed["id"+emailObj.slot]=true;continue;}
else{for(j=1;j<9;++j){if(slotUsed["id"+j]){continue;}
emailObj.slot=""+j;slotUsed["id"+j]=true;break;}}}
for(i=0;i<contact.mail.length;++i){emailObj=contact.mail[i];if(emailObj.value.indexOf("@")<0){continue;}
key="emailSlot"+emailObj.slot;ret=key+"Ret";if(!this[key]){this.log("Failed to find:"+key);continue;}
if(emailObj.value){this[key].setValue(emailObj.value);this[ret].label.label("<a href='mailto:"+emailObj.value+"'>"+"Email"+emailObj.slot+":"+"</a>");}
else{this[key].setValue(emailObj.value);this[ret].label.label("<a href='mailto:"+emailObj.value+"'>"+"Email"+emailObj.slot+":"+"</a>");}}}
else{if(contact.mail.value){if(contact.mail.value.hasOwnProperty("slot")){key="emailSlot"+contact.mail.value.slot;var keyRet="emailSlot"+contact.mail.value.slot+"Ret";this[key].setValue(contact.mail.value);this[keyRet].label.label("<a href='mailto:"+
contact.mail.value+"'>"+"Email"+
contact.mail.value.slot+":</a>");}
else{this.emailSlot1.setValue(contact.mail.value);this.emailSlot1Ret.label.label("<a href='mailto:"+
contact.mail.value+"'>"+"Email1:</a>");}}
else{this.emailSlot1.setValue(contact.mail);this.emailSlot1Ret.label.label("<a href='mailto:"+
contact.mail+"'>"+"Email1:</a>");}}}
fields=this.internetFG2.getField();this.setFields(contact,this.internetFG2,fields);fields=this.personalFG.getField();this.setFields(contact,this.personalFG,fields);if(contact&&contact.personalTitle=='none'){delete contact.personalTitle;}
if(contact&&contact.suffix=='none'){delete contact.suffix;}
fields=this.personalFG2.getField();delete fields.anniversary;delete fields.birthDate;this.setFields(contact,this.personalFG2,fields);if(contact&&contact.anniversary&&contact.anniversary.length==10){index=contact.anniversary.indexOf("-");year=parseInt(contact.anniversary.substring(0,index),10);index2=contact.anniversary.indexOf("-",index+1);month=parseInt(contact.anniversary.substring(index+1,index2),10);dayOfMonth=parseInt(contact.anniversary.substring(index2+1),10);date=new Date();date.setDate(dayOfMonth);date.setMonth(month-1);date.setYear(year);this.annCalBtn.getCalendar().date=date;this.annCalBtn.getCalendar().selectDate(date);this.annCalBtn.getButton().label(date.print(this.getDateFormat()));}
else{this.annCalBtn.date="None";this.annCalBtn.getButton().label("None",true);}
if(contact&&contact.birthDate&&contact.birthDate.length==10){index=contact.birthDate.indexOf("-");year=parseInt(contact.birthDate.substring(0,index),10);index2=contact.birthDate.indexOf("-",index+1);month=parseInt(contact.birthDate.substring(index+1,index2),10);dayOfMonth=parseInt(contact.birthDate.substring(index2+1),10);date=new Date();date.setDate(dayOfMonth);date.setMonth(month-1);date.setYear(year);this.bdayCalBtn.getCalendar().date=date;this.bdayCalBtn.getCalendar().selectDate(date);this.bdayCalBtn.getButton().label(date.print(this.getDateFormat()));}
else{this.bdayCalBtn.date="None";this.bdayCalBtn.getButton().label("None",true);}
fields=this.addressFG.getField();this.setFields(contact,this.addressFG,fields);fields=this.addressFG2.getField();this.setFields(contact,this.addressFG2,fields);fields=this.addressFG3.getField();this.setFields(contact,this.addressFG3,fields);fields=this.sharingFG.getField();this.setFields(contact,this.sharingFG,fields);};SWApp.prototype.copy2Contact=function(contact){this.contactEditSetProps(contact,this.phoneFG.getValue());this.contactEditSetProps(contact,this.phoneFG2.getValue());this.saveEmails(contact,this.internetFG.getValue());this.saveInternetNoEmails(contact,this.internetFG.getValue());this.contactEditSetProps(contact,this.internetFG2.getValue());this.contactEditSetProps(contact,this.personalFG.getValue());this.contactEditSetProps(contact,this.personalFG2.getValue());this.contactEditSetProps(contact,this.addressFG.getValue());this.contactEditSetProps(contact,this.addressFG2.getValue());this.contactEditSetProps(contact,this.addressFG3.getValue());this.contactEditSetProps(contact,this.sharingFG.getValue());this.contactEditSetProps(contact,this.sharingFG2.getValue());var date=this.bdayCalBtn.getValue();if(date){contact.birthDate=date.print("%Y-%m-%d");}
else{delete contact.birthDate;}
date=this.annCalBtn.getValue();if(date){contact.anniversary=date.print("%Y-%m-%d");}
else{delete contact.anniversary;}
if(contact.personalTitle=='none'){delete contact.personalTitle;}
if(contact.suffix=='none'){delete contact.suffix;}
if(contact.category&&(!(contact.category instanceof Array))){var tmp=contact.category.split(",");if(tmp.length>1){for(var i=0;i<tmp.length;++i){tmp[i]=tmp[i].trim();}
contact.category=tmp;}}};SWApp.prototype.saveEmails=function(contact,values){delete contact.mail;contact.mail=[];var value;var email;for(var name in values){if(values.hasOwnProperty(name)){if(name.indexOf("emailSlot")!==0){continue;}
value=values[name];if(value.length!=0){email={};email.value=value;email.slot=name.substring(9);contact.mail.push(email);}}}};SWApp.prototype.saveInternetNoEmails=function(contact,values){var value;for(var name in values){if(values.hasOwnProperty(name)){if(name.indexOf("emailSlot")===0){continue;}
value=values[name];if(value.length===0){delete contact[name];}
else{contact[name]=value;}}}};SWApp.prototype.contactEditSetProps=function(contact,values){if(typeof values.middleName1!='undefined'){var initials=[];if(values.middleName1.length>0){initials.push(values.middleName1);}
if(values.middleName2.length>0){initials.push(values.middleName2);}
contact.initials=initials;}
var value;for(var name in values){if(values.hasOwnProperty(name)){if(name.indexOf("middleName")===0){continue;}
value=values[name];if(value.length===0){delete contact[name];}
else{contact[name]=value;}}}};SWApp.prototype.contactListView=function(idL,sorted){var displayIDs;var children=this.contactListContainer.children();if(children&&children.length>0){if(idL){displayIDs=idL;}
else{var visibleCategoryS=swApp.syncSWorld.syncSWorldPrefs.visibleCategoryS;displayIDs=this.contactCache.getIDsUsingCategories(visibleCategoryS);}
this.contactGrid.resetIDS(displayIDs);if(sorted){}
else{var prev=this.contactGrid.__sortCol;if(prev){if(this.contactGrid.__sortRev){this.contactGrid._onHeadClick(this.contactGrid.getCol(prev),null);this.contactGrid._onHeadClick(this.contactGrid.getCol(prev),null);}
else{delete this.contactGrid.__sortCol;this.contactGrid._onHeadClick(this.contactGrid.getCol(prev),null);}}}
if(this.currentContactID){this.contactGrid.scrollToRecord(this.currentContactID,"center");delete this.currentContactID;}
else{this.contactGrid.displayPage(0);}
this.contactViewNotebook.showPane(this.CON_LIST_PAGE);return;}
var contactListLayout=new DlLayout({parent:this.contactListContainer,fill:"*"});var contactsTop=new DlContainer({});this.syncSWorld.addContactAddedListener(this.contactCache.syncSWorldContactAdded.$(this.contactCache,true));this.syncSWorld.addContactUpdatedListener(this.contactCache.syncSWorldContactUpdated.$(this.contactCache,true));this.syncSWorld.addContactDeletedListener(this.contactCache.syncSWorldContactDeleted.$(this.contactCache,true));this.syncSWorld.addContactDeleteAllListener(this.contactCache.syncSWorldContactDeleteAll.$(this.contactCache));this.contactListSelectionModel=new DlSelectionModel({});var columns=this.contactCache.getColumns();this.contactGrid=new SwDataGrid({parent:contactsTop,cols:columns,data:this.contactCache,fillParent:true,tooltip:this.contactCache.tooltipHandler,rpp:45,virtualScrolling:true,selection:this.contactListSelectionModel});this.contactGrid.resetIDS([]);if(!this.contactCache.isEmpty()){displayIDs=null;if(idL){displayIDs=idL;this.contactGrid.resetIDS(displayIDs);}
else{var visibleCategoryS=swApp.syncSWorld.syncSWorldPrefs.visibleCategoryS;displayIDs=this.contactCache.getIDsUsingCategories(visibleCategoryS);displayIDs.sort(function(a,b){a=swApp.contactCache.get(a);b=swApp.contactCache.get(b);return a.compareTo(b,"displayName");});this.contactGrid.resetIDS(displayIDs);this.contactGrid._onHeadClick(this.contactGrid.getCol("displayName"),null);}}
else{this.contactGrid.resetIDS([]);}
this.contactGrid.displayPage(0);contactListLayout.packWidget(contactsTop,{pos:"top",fill:"100%"});this.contactGrid.addEventListener("onBodyDblClick",function(){var sel=this._selection;var selected_ids=sel.getArray();swApp.contactEditView(selected_ids[0]);});this.contactListSelectionModel.addEventListener(["onChange","onReset"],function(){var array=this.contactListSelectionModel.getArray();if(array){var url=null;if(array.length>1){url="/sw2/images/crystal/personal170.png";}
else if(array.length==1){var contact=this.contactCache.get(array[0]);url=contact.get170IconURL();}
var element=this.photoButton.getContentElement();DynarchDomUtils.setStyleProperty(element,"background-image","url("+url+")");}}.$(this));contactListLayout.doLayout();this.contactViewNotebook.showPane(this.CON_LIST_PAGE);swApp.syncSWorld.contactSync();};SWApp.prototype.contactPhotoView=function(){var children=this.contactPhotoContainer.children();if(children&&children.length>0){this.contactViewNotebook.showPane(this.CON_PHOTO_PAGE);return;}
var contactPhotoLayout=new DlLayout({parent:this.contactPhotoContainer,outerSpace:5});var swContactView=new SwContactView({data:this.contactCache});contactPhotoLayout.packWidget(swContactView,{pos:"top",fill:"*"});swContactView.showLetter('A');this.contactViewNotebook.showPane(this.CON_PHOTO_PAGE);};SWApp.prototype.syncView=function(){this.syncSWorld.calendarSync();};SWApp.prototype.todayView=function(){document.title=this.i18n("ScheduleWorld Today");if(this.leftNotebook.display()){this.leftNotebook.display(false);this.desktopResizeBar.display(false);this.toolbarNotebook.display(false);this.desktopLayout.doLayout();}
var children=this.todayContainerR.children();if(children&&children.length>0){this.refresh();this.rightNotebook.showPane(this.TODAY_PAGE_RIGHT);return;}
var layout=new DlLayout({parent:this.todayContainerR,outerSpace:5});this.today_view=new SwTodayView({});var todayComponents=this.syncSWorld.userSettingsDTO.todayViewComponentL;if(!todayComponents){todayComponents=this.getDefaultTodayComponents();}
var comp;var swComp;var widget;swApp.todaySWCompL=[];for(var i=0;i<todayComponents.length;++i){comp=todayComponents[i];if(comp.type=="sw"){if(comp.swType=="event3Days"){widget=new SwEvent3Days({swEventCache:this.eventCache});swComp=new SwTodayComponent({title:comp.title,widget:widget,column:comp.column,swType:comp.swType});this.today_view.addComponent(swComp,comp.column);swApp.todaySWCompL.push(swComp);}
else if(comp.swType=="tasksStarted"){widget=new SwTasksStarted({swTaskCache:this.taskCache});swComp=new SwTodayComponent({title:comp.title,widget:widget,column:comp.column,swType:comp.swType});this.today_view.addComponent(swComp,comp.column);swApp.todaySWCompL.push(swComp);}
else if(comp.swType=="tasksDue"){widget=new SwTasksDue({swEventCache:this.eventCache});swComp=new SwTodayComponent({title:comp.title,widget:widget,column:comp.column,swType:comp.swType});this.today_view.addComponent(swComp,comp.column);swApp.todaySWCompL.push(swComp);}
else if(comp.swType=="birthAnn"){widget=new SwBirthAnn({swEventCache:this.eventCache});swComp=new SwTodayComponent({title:comp.title,widget:widget,column:comp.column,swType:comp.swType});this.today_view.addComponent(swComp,comp.column);swApp.todaySWCompL.push(swComp);}
else{this.today_view.addComponent(new SwTodayComponent({title:comp.title,column:comp.column}),comp.column);}}
else if(comp.type=="netvibes"){this.today_view.addComponent(new SwNetvibesComponent({title:comp.title,url:comp.url,column:comp.column,id:this.getUniqueNVID()}),comp.column);}}
this.today_view.initFinished();var toolbar=new DlHbox({className:"DlToolbar"});var toggle_browser=new DlButton({label:"Toggle component browser",type:DlButton.TYPE.TWOSTATE});toggle_browser.setStyle({textAlign:"left"});var browser=new SwNetvibesBrowser({todayView:this.today_view});browser.display(false);var resizeBar=new DlResizeBar({horiz:true,widget:browser});resizeBar.display(false);toggle_browser.addEventListener("onChange",function(){browser.display(this.checked());resizeBar.display(this.checked());layout.doLayout();});layout.packWidget(toggle_browser,{pos:"top",after:5});layout.packWidget(browser,{pos:"top",fill:270,min:100});layout.packWidget(resizeBar,{pos:"top",fill:9});layout.packWidget(this.today_view,{pos:"top",fill:"*"});this.rightNotebook.showPane(this.TODAY_PAGE_RIGHT);};SWApp.prototype.getUniqueNVID=function(){if(!this.nvid){this.nvid=0;}
++this.nvid;return this.nvid;};SWApp.prototype.getDefaultTodayComponents=function(){var todayComponents=[];var swEventsToday={};swEventsToday.type="sw";swEventsToday.swType="event3Days";swEventsToday.title="Yesterday, Today and Tomorrow";swEventsToday.column=0;todayComponents.push(swEventsToday);var swTasksStarted={};swTasksStarted.type="sw";swTasksStarted.swType="tasksStarted";swTasksStarted.title="Tasks Started";swTasksStarted.column=0;todayComponents.push(swTasksStarted);var swTasksDue={};swTasksDue.type="sw";swTasksDue.swType="tasksDue";swTasksDue.title="Tasks Due In The Next 7 Days";swTasksDue.column=0;todayComponents.push(swTasksDue);var swBirthAnn={};swBirthAnn.type="sw";swBirthAnn.swType="birthAnn";swBirthAnn.title="Contacts Birthdays and Anniversaries";swBirthAnn.column=0;todayComponents.push(swBirthAnn);var dilbert={};dilbert.type="netvibes";dilbert.title="Dilbert";dilbert.url="http://znarf.h6e.net/netvibes/dilbert.uwa.html";dilbert.column=0;todayComponents.push(dilbert);var weatherChannel={};weatherChannel.type="netvibes";weatherChannel.title="Weather Channel";weatherChannel.url="http://publish.clearspring.com/current/g/netvibes/45e468a03e0bd569/clearspring.xml";weatherChannel.column=1;todayComponents.push(weatherChannel);var miniClock={};miniClock.type="netvibes";miniClock.title="Mini-Clock";miniClock.url="http://www.labpixies.com/campaigns/clock/mini_clock_nv.xml";miniClock.column=1;todayComponents.push(miniClock);var mySudoku={};mySudoku.type="netvibes";mySudoku.title="MySudoku";mySudoku.url="http://www.grantgibson.co.uk/sudoku/netvibes/";mySudoku.column=2;todayComponents.push(mySudoku);return todayComponents;};SWApp.prototype.refresh=function(){var swComp;for(var i=0;i<swApp.todaySWCompL.length;++i){swComp=swApp.todaySWCompL[i];}};SWApp.prototype.saveTodayView=function(){var componentL=[];var saveComp;var rectangles=this.today_view.getRectangles();for(var i=0;i<rectangles.components.length;++i){var component=rectangles.components[i];var comp=component.comp;saveComp={};saveComp.title=comp.title;if(saveComp.url){saveComp.url=comp.widget_url;saveComp.type="netvibes";}
else{saveComp.type="sw";saveComp.swType=comp.swType;}
if(comp._element.parentNode.className.indexOf("-a")>0){saveComp.column=0;}
else if(comp._element.parentNode.className.indexOf("-b")>0){saveComp.column=1;}
else if(comp._element.parentNode.className.indexOf("-c")>0){saveComp.column=2;}
componentL.push(saveComp);}
swApp.syncSWorld.userSettingsDTO.todayViewComponentL=componentL;swApp.syncSWorld.userSettingsDTO.version+=1;swApp.syncSWorld.saveUserSettingsDTO();var swCommand={};swCommand.todayViewComponentL=componentL;swApp.syncSWorld.sendRequest(swCommand,"saveSettings");};var chrsz=8;var hexcase=0;function safe_add(x,y){var lsw=(x&0xFFFF)+(y&0xFFFF);var msw=(x>>16)+(y>>16)+(lsw>>16);return(msw<<16)|(lsw&0xFFFF);}
function SS(X,n){return(X>>>n)|(X<<(32-n));}
function R(X,n){return(X>>>n);}
function Ch(x,y,z){return((x&y)^((~x)&z));}
function Maj(x,y,z){return((x&y)^(x&z)^(y&z));}
function Sigma0256(x){return(SS(x,2)^SS(x,13)^SS(x,22));}
function Sigma1256(x){return(SS(x,6)^SS(x,11)^SS(x,25));}
function Gamma0256(x){return(SS(x,7)^SS(x,18)^R(x,3));}
function Gamma1256(x){return(SS(x,17)^SS(x,19)^R(x,10));}
function Sigma0512(x){return(SS(x,28)^SS(x,34)^SS(x,39));}
function Sigma1512(x){return(SS(x,14)^SS(x,18)^SS(x,41));}
function Gamma0512(x){return(SS(x,1)^SS(x,8)^R(x,7));}
function Gamma1512(x){return(SS(x,19)^SS(x,61)^R(x,6));}
function core_sha256(m,l){var K=[0x428A2F98,0x71374491,0xB5C0FBCF,0xE9B5DBA5,0x3956C25B,0x59F111F1,0x923F82A4,0xAB1C5ED5,0xD807AA98,0x12835B01,0x243185BE,0x550C7DC3,0x72BE5D74,0x80DEB1FE,0x9BDC06A7,0xC19BF174,0xE49B69C1,0xEFBE4786,0xFC19DC6,0x240CA1CC,0x2DE92C6F,0x4A7484AA,0x5CB0A9DC,0x76F988DA,0x983E5152,0xA831C66D,0xB00327C8,0xBF597FC7,0xC6E00BF3,0xD5A79147,0x6CA6351,0x14292967,0x27B70A85,0x2E1B2138,0x4D2C6DFC,0x53380D13,0x650A7354,0x766A0ABB,0x81C2C92E,0x92722C85,0xA2BFE8A1,0xA81A664B,0xC24B8B70,0xC76C51A3,0xD192E819,0xD6990624,0xF40E3585,0x106AA070,0x19A4C116,0x1E376C08,0x2748774C,0x34B0BCB5,0x391C0CB3,0x4ED8AA4A,0x5B9CCA4F,0x682E6FF3,0x748F82EE,0x78A5636F,0x84C87814,0x8CC70208,0x90BEFFFA,0xA4506CEB,0xBEF9A3F7,0xC67178F2];var HASH=[0x6A09E667,0xBB67AE85,0x3C6EF372,0xA54FF53A,0x510E527F,0x9B05688C,0x1F83D9AB,0x5BE0CD19];var W=new Array(64);var a,b,c,d,e,f,g,h,i,j;var T1,T2;m[l>>5]|=0x80<<(24-l%32);m[((l+64>>9)<<4)+15]=l;for(i=0;i<m.length;i+=16){a=HASH[0];b=HASH[1];c=HASH[2];d=HASH[3];e=HASH[4];f=HASH[5];g=HASH[6];h=HASH[7];for(j=0;j<64;j++){if(j<16){W[j]=m[j+i];}
else{W[j]=safe_add(safe_add(safe_add(Gamma1256(W[j-2]),W[j-7]),Gamma0256(W[j-15])),W[j-16]);}
T1=safe_add(safe_add(safe_add(safe_add(h,Sigma1256(e)),Ch(e,f,g)),K[j]),W[j]);T2=safe_add(Sigma0256(a),Maj(a,b,c));h=g;g=f;f=e;e=safe_add(d,T1);d=c;c=b;b=a;a=safe_add(T1,T2);}
HASH[0]=safe_add(a,HASH[0]);HASH[1]=safe_add(b,HASH[1]);HASH[2]=safe_add(c,HASH[2]);HASH[3]=safe_add(d,HASH[3]);HASH[4]=safe_add(e,HASH[4]);HASH[5]=safe_add(f,HASH[5]);HASH[6]=safe_add(g,HASH[6]);HASH[7]=safe_add(h,HASH[7]);}
return HASH;}
function core_sha512(m,l){var K=[0x428a2f98d728ae22,0x7137449123ef65cd,0xb5c0fbcfec4d3b2f,0xe9b5dba58189dbbc,0x3956c25bf348b538,0x59f111f1b605d019,0x923f82a4af194f9b,0xab1c5ed5da6d8118,0xd807aa98a3030242,0x12835b0145706fbe,0x243185be4ee4b28c,0x550c7dc3d5ffb4e2,0x72be5d74f27b896f,0x80deb1fe3b1696b1,0x9bdc06a725c71235,0xc19bf174cf692694,0xe49b69c19ef14ad2,0xefbe4786384f25e3,0x0fc19dc68b8cd5b5,0x240ca1cc77ac9c65,0x2de92c6f592b0275,0x4a7484aa6ea6e483,0x5cb0a9dcbd41fbd4,0x76f988da831153b5,0x983e5152ee66dfab,0xa831c66d2db43210,0xb00327c898fb213f,0xbf597fc7beef0ee4,0xc6e00bf33da88fc2,0xd5a79147930aa725,0x06ca6351e003826f,0x142929670a0e6e70,0x27b70a8546d22ffc,0x2e1b21385c26c926,0x4d2c6dfc5ac42aed,0x53380d139d95b3df,0x650a73548baf63de,0x766a0abb3c77b2a8,0x81c2c92e47edaee6,0x92722c851482353b,0xa2bfe8a14cf10364,0xa81a664bbc423001,0xc24b8b70d0f89791,0xc76c51a30654be30,0xd192e819d6ef5218,0xd69906245565a910,0xf40e35855771202a,0x106aa07032bbd1b8,0x19a4c116b8d2d0c8,0x1e376c085141ab53,0x2748774cdf8eeb99,0x34b0bcb5e19b48a8,0x391c0cb3c5c95a63,0x4ed8aa4ae3418acb,0x5b9cca4f7763e373,0x682e6ff3d6b2b8a3,0x748f82ee5defb2fc,0x78a5636f43172f60,0x84c87814a1f0ab72,0x8cc702081a6439ec,0x90befffa23631e28,0xa4506cebde82bde9,0xbef9a3f7b2c67915,0xc67178f2e372532b,0xca273eceea26619c,0xd186b8c721c0c207,0xeada7dd6cde0eb1e,0xf57d4f7fee6ed178,0x06f067aa72176fba,0x0a637dc5a2c898a6,0x113f9804bef90dae,0x1b710b35131c471b,0x28db77f523047d84,0x32caab7b40c72493,0x3c9ebe0a15c9bebc,0x431d67c49c100d4c,0x4cc5d4becb3e42b6,0x597f299cfc657e2a,0x5fcb6fab3ad6faec,0x6c44198c4a475817];var HASH=[0x6a09e667f3bcc908,0xbb67ae8584caa73b,0x3c6ef372fe94f82b,0xa54ff53a5f1d36f1,0x510e527fade682d1,0x9b05688c2b3e6c1f,0x1f83d9abfb41bd6b,0x5be0cd19137e2179];var W=new Array(80);var a,b,c,d,e,f,g,h,i,j;var T1,T2;}
function str2binb(str){var bin=Array();var mask=(1<<chrsz)-1;for(var i=0;i<str.length*chrsz;i+=chrsz){bin[i>>5]|=(str.charCodeAt(i/chrsz)&mask)<<(24-i%32);}
return bin;}
function binb2str(bin){var str="";var mask=(1<<chrsz)-1;for(var i=0;i<bin.length*32;i+=chrsz){str+=String.fromCharCode((bin[i>>5]>>>(24-i%32))&mask);}
return str;}
function binb2hex(binarray){var hex_tab=hexcase?"0123456789ABCDEF":"0123456789abcdef";var str="";for(var i=0;i<binarray.length*4;i++){str+=hex_tab.charAt((binarray[i>>2]>>((3-i%4)*8+4))&0xF)+
hex_tab.charAt((binarray[i>>2]>>((3-i%4)*8))&0xF);}
return str;}
function binb2b64(binarray){throw Exception("b64pad unknown");}
function hex_sha256(s){return binb2hex(core_sha256(str2binb(s),s.length*chrsz));}
function b64_sha256(s){return binb2b64(core_sha256(str2binb(s),s.length*chrsz));}
function str_sha256(s){return binb2str(core_sha256(str2binb(s),s.length*chrsz));}
function Sarissa(){}
var regex=/[\u0000-\u0008\v\f\u000e-\u001f]/g;Sarissa.PARSED_OK="Document contains no parsing errors";Sarissa.PARSED_EMPTY="Document is empty";Sarissa.PARSED_UNKNOWN_ERROR="Not well-formed or other error";var _sarissa_iNsCounter=0;var _SARISSA_IEPREFIX4XSLPARAM="";var _SARISSA_HAS_DOM_IMPLEMENTATION=document.implementation&&true;var _SARISSA_HAS_DOM_CREATE_DOCUMENT=_SARISSA_HAS_DOM_IMPLEMENTATION&&document.implementation.createDocument;var _SARISSA_HAS_DOM_FEATURE=_SARISSA_HAS_DOM_IMPLEMENTATION&&document.implementation.hasFeature;var _SARISSA_IS_MOZ=_SARISSA_HAS_DOM_CREATE_DOCUMENT&&_SARISSA_HAS_DOM_FEATURE;var _SARISSA_IS_SAFARI=(navigator.userAgent&&navigator.vendor&&(navigator.userAgent.toLowerCase().indexOf("applewebkit")!=-1||navigator.vendor.indexOf("Apple")!=-1));var _SARISSA_IS_IE=document.all&&window.ActiveXObject&&navigator.userAgent.toLowerCase().indexOf("msie")>-1&&navigator.userAgent.toLowerCase().indexOf("opera")==-1;if(!window.Node||!Node.ELEMENT_NODE){Node={ELEMENT_NODE:1,ATTRIBUTE_NODE:2,TEXT_NODE:3,CDATA_SECTION_NODE:4,ENTITY_REFERENCE_NODE:5,ENTITY_NODE:6,PROCESSING_INSTRUCTION_NODE:7,COMMENT_NODE:8,DOCUMENT_NODE:9,DOCUMENT_TYPE_NODE:10,DOCUMENT_FRAGMENT_NODE:11,NOTATION_NODE:12};}
if(typeof XMLDocument=="undefined"&&typeof Document!="undefined"){XMLDocument=Document;}
if(_SARISSA_IS_IE){_SARISSA_IEPREFIX4XSLPARAM="xsl:";var _SARISSA_DOM_PROGID="";var _SARISSA_XMLHTTP_PROGID="";var _SARISSA_DOM_XMLWRITER="";Sarissa.pickRecentProgID=function(idList){var bFound=false;for(var i=0;i<idList.length&&!bFound;i++){try{var oDoc=new ActiveXObject(idList[i]);o2Store=idList[i];bFound=true;}catch(objException){}}
if(!bFound){throw"Could not retreive a valid progID of Class: "+idList[idList.length-1]+". (original exception: "+e+")";}
idList=null;return o2Store;};_SARISSA_DOM_PROGID=null;_SARISSA_THREADEDDOM_PROGID=null;_SARISSA_XSLTEMPLATE_PROGID=null;_SARISSA_XMLHTTP_PROGID=null;if(!window.XMLHttpRequest){XMLHttpRequest=function(){if(!_SARISSA_XMLHTTP_PROGID){_SARISSA_XMLHTTP_PROGID=Sarissa.pickRecentProgID(["Msxml2.XMLHTTP.6.0","MSXML2.XMLHTTP.3.0","MSXML2.XMLHTTP","Microsoft.XMLHTTP"]);}
return new ActiveXObject(_SARISSA_XMLHTTP_PROGID);};}
Sarissa.getDomDocument=function(sUri,sName){if(!_SARISSA_DOM_PROGID){_SARISSA_DOM_PROGID=Sarissa.pickRecentProgID(["Msxml2.DOMDocument.6.0","Msxml2.DOMDocument.3.0","MSXML2.DOMDocument","MSXML.DOMDocument","Microsoft.XMLDOM"]);}
var oDoc=new ActiveXObject(_SARISSA_DOM_PROGID);if(sName){var prefix="";if(sUri){if(sName.indexOf(":")>1){prefix=sName.substring(0,sName.indexOf(":"));sName=sName.substring(sName.indexOf(":")+1);}else{prefix="a"+(_sarissa_iNsCounter++);}}
if(sUri){oDoc.loadXML('<'+prefix+':'+sName+" xmlns:"+prefix+"=\""+sUri+"\""+" />");}else{oDoc.loadXML('<'+sName+" />");}}
return oDoc;};Sarissa.getParseErrorText=function(oDoc){var parseErrorText=Sarissa.PARSED_OK;if(oDoc.parseError.errorCode!==0){parseErrorText="XML Parsing Error: "+oDoc.parseError.reason+"\nLocation: "+oDoc.parseError.url+"\nLine Number "+oDoc.parseError.line+", Column "+
oDoc.parseError.linepos+":\n"+oDoc.parseError.srcText+"\n";for(var i=0;i<oDoc.parseError.linepos;i++){parseErrorText+="-";}
parseErrorText+="^\n";}
else if(oDoc.documentElement==null){parseErrorText=Sarissa.PARSED_EMPTY;}
return parseErrorText;};Sarissa.setXpathNamespaces=function(oDoc,sNsSet){oDoc.setProperty("SelectionLanguage","XPath");oDoc.setProperty("SelectionNamespaces",sNsSet);};XSLTProcessor=function(){if(!_SARISSA_XSLTEMPLATE_PROGID){_SARISSA_XSLTEMPLATE_PROGID=Sarissa.pickRecentProgID(["Msxml2.XSLTemplate.6.0","MSXML2.XSLTemplate.3.0"]);}
this.template=new ActiveXObject(_SARISSA_XSLTEMPLATE_PROGID);this.processor=null;};XSLTProcessor.prototype.importStylesheet=function(xslDoc){if(!_SARISSA_THREADEDDOM_PROGID){_SARISSA_THREADEDDOM_PROGID=Sarissa.pickRecentProgID(["MSXML2.FreeThreadedDOMDocument.6.0","MSXML2.FreeThreadedDOMDocument.3.0"]);}
xslDoc.setProperty("SelectionLanguage","XPath");xslDoc.setProperty("SelectionNamespaces","xmlns:xsl='http://www.w3.org/1999/XSL/Transform'");var converted=new ActiveXObject(_SARISSA_THREADEDDOM_PROGID);if(xslDoc.url&&xslDoc.selectSingleNode("//xsl:*[local-name() = 'import' or local-name() = 'include']")!=null){converted.async=false;if(_SARISSA_THREADEDDOM_PROGID=="MSXML2.FreeThreadedDOMDocument.6.0"){converted.setProperty("AllowDocumentFunction",true);converted.resolveExternals=true;}
converted.load(xslDoc.url);}else{converted.loadXML(xslDoc.xml);}
converted.setProperty("SelectionNamespaces","xmlns:xsl='http://www.w3.org/1999/XSL/Transform'");var output=converted.selectSingleNode("//xsl:output");this.outputMethod=output?output.getAttribute("method"):"html";this.template.stylesheet=converted;this.processor=this.template.createProcessor();this.paramsSet=[];};XSLTProcessor.prototype.transformToDocument=function(sourceDoc){if(_SARISSA_THREADEDDOM_PROGID){this.processor.input=sourceDoc;var outDoc=new ActiveXObject(_SARISSA_DOM_PROGID);this.processor.output=outDoc;this.processor.transform();return outDoc;}
else{if(!_SARISSA_DOM_XMLWRITER){_SARISSA_DOM_XMLWRITER=Sarissa.pickRecentProgID(["Msxml2.MXXMLWriter.6.0","Msxml2.MXXMLWriter.3.0","MSXML2.MXXMLWriter","MSXML.MXXMLWriter","Microsoft.XMLDOM"]);}
this.processor.input=sourceDoc;var outDoc=new ActiveXObject(_SARISSA_DOM_XMLWRITER);this.processor.output=outDoc;this.processor.transform();var oDoc=new ActiveXObject(_SARISSA_DOM_PROGID);oDoc.loadXML(outDoc.output+"");return oDoc;}};XSLTProcessor.prototype.transformToFragment=function(sourceDoc,ownerDoc){this.processor.input=sourceDoc;this.processor.transform();var s=this.processor.output;var f=ownerDoc.createDocumentFragment();if(this.outputMethod=='text'){f.appendChild(ownerDoc.createTextNode(s));}else if(ownerDoc.body&&ownerDoc.body.innerHTML){var container=ownerDoc.createElement('div');container.innerHTML=s;while(container.hasChildNodes()){f.appendChild(container.firstChild);}}
else{var oDoc=new ActiveXObject(_SARISSA_DOM_PROGID);if(s.substring(0,5)=='<?xml'){s=s.substring(s.indexOf('?>')+2);}
var xml=''.concat('<my>',s,'</my>');oDoc.loadXML(xml);var container=oDoc.documentElement;while(container.hasChildNodes()){f.appendChild(container.firstChild);}}
return f;};XSLTProcessor.prototype.setParameter=function(nsURI,name,value){if(nsURI){this.processor.addParameter(name,value,nsURI);}else{this.processor.addParameter(name,value);}
if(!this.paramsSet[""+nsURI]){this.paramsSet[""+nsURI]=[];}
this.paramsSet[""+nsURI][name]=value;};XSLTProcessor.prototype.getParameter=function(nsURI,name){nsURI=nsURI||"";if(this.paramsSet[nsURI]&&this.paramsSet[nsURI][name]){return this.paramsSet[nsURI][name];}else{return null;}};XSLTProcessor.prototype.clearParameters=function(){for(var nsURI in this.paramsSet){for(var name in this.paramsSet[nsURI]){if(nsURI){this.processor.addParameter(name,null,nsURI);}else{this.processor.addParameter(name,null);}}}
this.paramsSet=[];};}else{if(_SARISSA_HAS_DOM_CREATE_DOCUMENT){Sarissa.__handleLoad__=function(oDoc){Sarissa.__setReadyState__(oDoc,4);};_sarissa_XMLDocument_onload=function(){Sarissa.__handleLoad__(this);};Sarissa.__setReadyState__=function(oDoc,iReadyState){oDoc.readyState=iReadyState;oDoc.readystate=iReadyState;if(oDoc.onreadystatechange!=null&&typeof oDoc.onreadystatechange=="function"){oDoc.onreadystatechange();}};Sarissa.getDomDocument=function(sUri,sName){var oDoc=document.implementation.createDocument(sUri?sUri:null,sName?sName:null,null);if(!oDoc.onreadystatechange){oDoc.onreadystatechange=null;}
if(!oDoc.readyState){oDoc.readyState=0;}
oDoc.addEventListener("load",_sarissa_XMLDocument_onload,false);return oDoc;};if(window.XMLDocument){}
else if(_SARISSA_HAS_DOM_FEATURE&&window.Document&&!Document.prototype.load&&document.implementation.hasFeature('LS','3.0')){Sarissa.getDomDocument=function(sUri,sName){var oDoc=document.implementation.createDocument(sUri?sUri:null,sName?sName:null,null);return oDoc;};}
else{Sarissa.getDomDocument=function(sUri,sName){var oDoc=document.implementation.createDocument(sUri?sUri:null,sName?sName:null,null);if(oDoc&&(sUri||sName)&&!oDoc.documentElement){oDoc.appendChild(oDoc.createElementNS(sUri,sName));}
return oDoc;};}}}
if(!window.DOMParser){if(_SARISSA_IS_SAFARI){DOMParser=function(){};DOMParser.prototype.parseFromString=function(sXml,contentType){var xmlhttp=new XMLHttpRequest();xmlhttp.open("GET","data:text/xml;charset=utf-8,"+encodeURIComponent(sXml),false);xmlhttp.send(null);return xmlhttp.responseXML;};}else if(Sarissa.getDomDocument&&Sarissa.getDomDocument()&&Sarissa.getDomDocument(null,"bar").xml){DOMParser=function(){};DOMParser.prototype.parseFromString=function(sXml,contentType){var doc=Sarissa.getDomDocument();doc.loadXML(sXml);return doc;};}}
if((typeof(document.importNode)=="undefined")&&_SARISSA_IS_IE){try{document.importNode=function(oNode,bChildren){var tmp;if(oNode.nodeName=="tbody"||oNode.nodeName=="tr"){tmp=document.createElement("table");}
else if(oNode.nodeName=="td"){tmp=document.createElement("tr");}
else if(oNode.nodeName=="option"){tmp=document.createElement("select");}
else{tmp=document.createElement("div");}
if(bChildren){tmp.innerHTML=oNode.xml?oNode.xml:oNode.outerHTML;}else{tmp.innerHTML=oNode.xml?oNode.cloneNode(false).xml:oNode.cloneNode(false).outerHTML;}
return tmp.getElementsByTagName("*")[0];};}catch(e){}}
if(!Sarissa.getParseErrorText){Sarissa.getParseErrorText=function(oDoc){var parseErrorText=Sarissa.PARSED_OK;if(!oDoc.documentElement){parseErrorText=Sarissa.PARSED_EMPTY;}else if(oDoc.documentElement.tagName=="parsererror"){parseErrorText=oDoc.documentElement.firstChild.data;parseErrorText+="\n"+oDoc.documentElement.firstChild.nextSibling.firstChild.data;}else if(oDoc.getElementsByTagName("parsererror").length>0){var parsererror=oDoc.getElementsByTagName("parsererror")[0];parseErrorText=Sarissa.getText(parsererror,true)+"\n";}else if(oDoc.parseError&&oDoc.parseError.errorCode!=0){parseErrorText=Sarissa.PARSED_UNKNOWN_ERROR;}
return parseErrorText;};}
Sarissa.getText=function(oNode,deep){var s="";var nodes=oNode.childNodes;for(var i=0;i<nodes.length;i++){var node=nodes[i];var nodeType=node.nodeType;if(nodeType==Node.TEXT_NODE||nodeType==Node.CDATA_SECTION_NODE){s+=node.data;}else if(deep==true&&(nodeType==Node.ELEMENT_NODE||nodeType==Node.DOCUMENT_NODE||nodeType==Node.DOCUMENT_FRAGMENT_NODE)){s+=Sarissa.getText(node,true);}}
return s;};Sarissa.stripTags=function(s){return s.replace(/<[^>]+>/g,"");};Sarissa.clearChildNodes=function(oNode){while(oNode.firstChild){oNode.removeChild(oNode.firstChild);}};Sarissa.copyChildNodes=function(nodeFrom,nodeTo,bPreserveExisting){if((!nodeFrom)||(!nodeTo)){throw"Both source and destination nodes must be provided";}
if(!bPreserveExisting){Sarissa.clearChildNodes(nodeTo);}
var i=0;var ownerDoc=nodeTo.nodeType==Node.DOCUMENT_NODE?nodeTo:nodeTo.ownerDocument;var nodes=nodeFrom.childNodes;if(typeof(ownerDoc.importNode)!="undefined"){for(i=0;i<nodes.length;i++){nodeTo.appendChild(ownerDoc.importNode(nodes[i],true));}}else{for(i=0;i<nodes.length;i++){nodeTo.appendChild(nodes[i].cloneNode(true));}}};Sarissa.moveChildNodes=function(nodeFrom,nodeTo,bPreserveExisting){if((!nodeFrom)||(!nodeTo)){throw"Both source and destination nodes must be provided";}
if(!bPreserveExisting){Sarissa.clearChildNodes(nodeTo);}
var nodes=nodeFrom.childNodes;if(nodeFrom.ownerDocument==nodeTo.ownerDocument){while(nodeFrom.firstChild){nodeTo.appendChild(nodeFrom.firstChild);}}else{var ownerDoc=nodeTo.nodeType==Node.DOCUMENT_NODE?nodeTo:nodeTo.ownerDocument;if(typeof(ownerDoc.importNode)!="undefined"){for(var i=0;i<nodes.length;i++){nodeTo.appendChild(ownerDoc.importNode(nodes[i],true));}}else{for(var i=0;i<nodes.length;i++){nodeTo.appendChild(nodes[i].cloneNode(true));}}
Sarissa.clearChildNodes(nodeFrom);}};Sarissa.xmlize=function(anyObject,objectName,indentSpace){indentSpace=indentSpace?indentSpace:'';var s=indentSpace+'<'+objectName+'>';var isLeaf=false;if(typeof anyObject==='object'){isLeaf=false;if(anyObject==null){isLeaf=true;}
else if(typeof anyObject.charCodeAt==='function'){isLeaf=true;}
else if(typeof anyObject.toFixed==='function'){isLeaf=true;}}else{isLeaf=true;}
if(isLeaf){if(anyObject!=null){s+=Sarissa.escape(""+anyObject);}}else{s+="\n";var itemKey='';var isArrayItem=false;if(typeof anyObject.splice==='function'){isArrayItem=true;}
for(var name in anyObject){if(anyObject.hasOwnProperty(name)){s+=Sarissa.xmlize(anyObject[name],(isArrayItem?"array-item key=\""+name+"\"":name),indentSpace+"   ");}}
s+=indentSpace;}
var result=s+(objectName.indexOf(' ')!=-1?"</array-item>\n":"</"+objectName+">\n");return result;};Sarissa.escape=function(aText){var text=aText.replace(regex,"");return text.replace(/&/g,"&amp;").replace(/</g,"&lt;");};Sarissa.escapeOLD=function(sXml){return sXml.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&apos;");};Sarissa.unescape=function(sXml){return sXml.replace(/&apos;/g,"'").replace(/&quot;/g,"\"").replace(/&gt;/g,">").replace(/&lt;/g,"<").replace(/&amp;/g,"&");};(function(){SwCalendar.inherits(DlContainer);function SwCalendar(args){if(args){if(!args.displayDate){args.displayDate=new Date();}
if(!args.startDay){var defaultStartDay=0;if(swApp.syncSWorld.userSettingsDTO.firstWeekDay=="2"){defaultStartDay=1;}
args.startDay=defaultStartDay;}
D.setDefaults(this,args);DlContainer.call(this,args);}}
eval(Dynarch.EXPORT("SwCalendar",true));D.DRAG_GRANULARITY=15;D.DEFAULT_ARGS={_displayDate:["displayDate",null],_startDay:["startDay",0],_nDays:["nDays",7],_emptyWidth:["emptyWidth",10],_cache:["data",null]};P.setNDays=function(nDays){this.spinner.setValue(nDays);};P.setCache=function(cache){this._cache=cache;this._refreshHeader();this._refreshBody();};P.refresh=function(date,iCalendarIDL,askServer){if(askServer){if(!iCalendarIDL){throw("forgot iCalendarIDL");}
this._cache.recalculateAll(date.getFullYear(),date.getMonth()+1);return;}
this._refreshHeader();this._refreshBody();};P._continueRefresh=function(){this._refreshHeader();this._refreshBody();};P.getDisplayDate=function(){return this._displayDate;};P.initDOM=function(){D.BASE.initDOM.call(this);this.spinner=new DlSpinner({parent:this,className:"SwCalendar-nDays",minVal:1,maxVal:12,value:7,tooltip:"Number of days displayed"});this.spinner.setSize({x:25});this.spinner.addEventListener("onChange",function(spinner){this._nDays=parseInt(spinner.getValue(),10);this.refresh();}.$(this,this.spinner));if(is_ie){this.spinner.display(false);}
this._header=new DlContainer({parent:this,className:"SwCalendar-header"});this._body=new DlContainer({parent:this,className:"SwCalendar-body",drag:SwCalendar.getCreateDrag()});this._body.setUnselectable(null,true);this._cache.addEventListener({onInsert:this._on_cacheInsert.$(this),onDelete:this._on_cacheDelete.$(this),onChange:this._on_cacheChange.$(this)});if(this._displayDate){this.displayDate(this._displayDate);}};P._on_cacheInsert=function(ev){var tmp=null;if(ev.isStartInside(this._firstDateOnScreen,this._lastDateOnScreen)){if(ev.getDaysCoverage()>=1){tmp=new SwCalAllDayEventWidget({parent:this,event:ev,tooltip:ev.getShortTooltip.$(ev)});}else{tmp=new SwEventWidget({parent:this,event:ev,tooltip:ev.getShortTooltip.$(ev)});}}};P._on_cacheDelete=function(id){var swEvent;if(id instanceof Array){for(var i=0;i<id.length;++i){swEvent=this._cache.get(id[i]);if(swEvent){if(swEvent._widget){swEvent._widget.destroy();}}}}
else{swEvent=this._cache.get(id);if(swEvent){if(!swEvent._widget){return;}
swEvent._widget.destroy();var w=this.children().grep(function(w){if(w instanceof SwEventWidget){if(w._event._data.id!=swEvent._data.id){return true;}}
return false;}).peek();if(w){w.focus();}}}};P._on_cacheChange=function(ev){if(!ev._widget){this._on_cacheInsert(ev);}};P._getWidthPercent=function(){return 100/this._nDays;};P._getWidthPixels=function(){var table=this.getGridTableElement();var size=DynarchDomUtils.getInnerSize(table);return size.x/this._nDays;};P.getNextPos=function(){if(!this.hasOwnProperty("currentPosition")){this.currentPosition=-1;}
while(true){++this.currentPosition;if(!this.usedPositions[this.currentPosition]){this.usedPositions[this.currentPosition]=true;return this.currentPosition;}}};P._getWidthStyle=function(){return"width:"+this._getWidthPercent()+"%";};P._refreshHeader=function(){var userSettingsLocaleKey=swApp.syncSWorld.userSettingsDTO.language;if(swApp.syncSWorld.userSettingsDTO.country&&swApp.syncSWorld.userSettingsDTO.country.length>0){userSettingsLocaleKey+="-"+swApp.syncSWorld.userSettingsDTO.country;}
var locale=jsLocaleData[userSettingsLocaleKey];this._header.destroyChildWidgets();var widthStyle=this._getWidthStyle();var html=String.buffer("<table cellspacing='0' cellpadding='0' class='SwCalendar-table SwCalendar-outerHeader'><tr>","<td class='hours'></td>","<td class='content'>","<table cellspacing='0' cellpadding='0' class='SwCalendar-table SwCalendar-innerHeader'>","<tr class='SwCalendar-dayHeaders'>",("<td style='"+widthStyle+"'></td>").repeat(this._nDays),"</tr>","<tr class='SwCalendar-dayEvents'>",("<td style='"+widthStyle+"'></td>").repeat(this._nDays),"</tr>","</table>","</td></tr></table>");this._header.setContent(html.get());var table=this.getHeaderTable();var dayTds=Array.$(table.rows[0].cells);var sd=this._compStartDate();this._firstDateOnScreen=new Date(sd);this._lastDateOnScreen=new Date(this._firstDateOnScreen);this._lastDateOnScreen.setTime(this._lastDateOnScreen.getTime()+this._nDays*Date.DAY);var now=this._displayDate.getDate();var today=new Date();this._dayButtons=dayTds.map(function(td){var dayOfMonth=sd.getDate();var dayOfWeek=locale.weekDays3[sd.getDay()+1];var value=null;if(swApp.syncSWorld.userSettingsDTO.dateFormat=="yyyy-m-d"){value=dayOfWeek+", "+sd.getMonth()+"-"+
dayOfMonth;}
else if(swApp.syncSWorld.userSettingsDTO.dateFormat=="d/m/yyyy"){value=dayOfWeek+", "+dayOfMonth+"/"+
sd.getMonth();}
else if(swApp.syncSWorld.userSettingsDTO.dateFormat=="m/d/yyyy"){value=dayOfWeek+", "+sd.getMonth()+"/"+
dayOfMonth;}
else{var month=locale.months3[sd.getMonth()];value=dayOfWeek+", "+month+" "+dayOfMonth;}
var w=new DlAbstractButton({parent:this,element:td,data:new Date(sd),label:value});var date=sd.getDate();if(date==now){w.addClass("SwCalendar-head-now");}
if(sd.dateEqualsTo(today)){w.addClass("SwCalendar-head-today");}
sd.setDate(date+1);return w;},this._header);};P.getAllDayArea=function(dayOfMonth){var index=this.getDateIndex(dayOfMonth);return this.getAllDayCells()[index];};P._refreshBody=function(){this._body.destroyChildWidgets();var widthStyle=this._getWidthStyle();var html=String.buffer("<table cellspacing='0' cellpadding='0' class='SwCalendar-table SwCalendar-outerBody'><tr>");html("<td class='hours'><table class='SwCalendar-table' cellspacing='0' cellpadding='0'>");var useAmPm=swApp.syncSWorld.userSettingsDTO.ampm;var locale=null;if(useAmPm){var userSettingsLocaleKey=swApp.syncSWorld.userSettingsDTO.language;if(swApp.syncSWorld.userSettingsDTO.country&&swApp.syncSWorld.userSettingsDTO.country.length>0){userSettingsLocaleKey+="-"+swApp.syncSWorld.userSettingsDTO.country;}
locale=jsLocaleData[userSettingsLocaleKey];}
var ampm="";for(var i=0;i<24;i++){var h=i;if(useAmPm){ampm=locale.ampm[0];if(h==12){ampm=locale.ampm[1];}
else if(h===0){h=12;}
else if(h>12){h-=12;ampm=locale.ampm[1];}}
html("<tr><td><span>",h,"</span> ",ampm,"</td></tr>");}
html("</table></td>");var one_row=String.buffer("<tr class='startHour'>",("<td style='"+widthStyle+"'></td>").repeat(this._nDays),"</tr>","<tr class='halfHour'>",("<td style='"+widthStyle+"'></td>").repeat(this._nDays),"</tr>").get();html("<td class='content'><div class='SwCalendar-relDiv'>","<table cellspacing='0' cellpadding='0' class='SwCalendar-table SwCalendar-innerBody'>",one_row.repeat(24),"</table>","</div></td>");html("</tr></table>");this._body.setContent(html.get());this._refreshEventWidgets();};P.getRelDivElement=function(){return this._body.getElement().firstChild.rows[0].cells[1].firstChild;};P.getGridTableElement=function(){return this.getRelDivElement().firstChild;};P.getHoursTableElement=function(){return this._body.getElement().firstChild.rows[0].cells[0].firstChild;};P.getHeaderTable=function(){return this._header.getElement().firstChild.rows[0].cells[1].firstChild;};P.getAllDayCells=function(){return this.getHeaderTable().rows[1].cells;};P.displayDate=function(date,startDay){var d=new Date(date);this._displayDate=d;d.setHours(0);d.setMinutes(0);d.setSeconds(0);if(swApp.syncSWorld.userSettingsDTO.firstWeekDay=="2"){this._startDay=1;}
else{this._startDay=0;}
this.refresh();};P.getHourPosition=function(h){var tableElement=this.getHoursTableElement();var row=tableElement.rows[h];var cell=row.cells[0];return cell.offsetTop;};P.getHourHeight=function(){return this.getHoursTableElement().rows[0].cells[0].offsetHeight;};P.getDateIndex=function(d){return this._dateIndexes[parseInt(d,10)];};P.scrollToHour=function(h){this._body.getElement().scrollTop=this.getHourPosition(h);};P.getTimeFromPos=function(pos,granularity,usefloor,dateonly){var table=this.getGridTableElement();var body_size={x:table.offsetWidth,y:table.offsetHeight};if((pos.x<0||pos.x>body_size.x)||(!dateonly&&(pos.y<0||pos.y>body_size.y))){return null;}
var day_width=body_size.x/this._nDays;var hour_height=this.getHourHeight();var index=Math.floor(pos.x/day_width);var date=new Date(this._firstDateOnScreen);date.setDate(date.getDate()+index);var hour=0;var minute=0;if(!dateonly){hour=Math.floor(pos.y/hour_height);minute=Math.floor(((pos.y%hour_height)/hour_height).map(0,60));if(granularity){var f=usefloor?Math.floor:Math.round;minute=f(minute/granularity)*granularity;}
if(minute==60){if(hour==23){minute=59;}
else{minute=0;hour++;}}}
date.setHours(hour);date.setMinutes(minute);date.setSeconds(0);return date;};P.getTimeFromUIEvent=function(ev,granularity,usefloor,dateonly){return this.getTimeFromPos(ev.computePos(this.getGridTableElement()),granularity,usefloor,dateonly);};P.__doLayout=function(){var s=this.getSize();var h=this._header.getSize();h=s.y-h.y;this._body.setSize({y:h});var sb=DOM.getScrollbarSize(this._body.getElement());this._header.setSize({x:s.x-sb.x});if(is_ie){if(h>0){this.getHoursTableElement().style.height=h+"px";}
var width=s.x-sb.x-this.getHoursTableElement().offsetWidth;if(width>0){this.getGridTableElement().style.width=width+"px";}}};P._compStartDate=function(){var sd=new Date(this._displayDate);var n=this._nDays;while(n-->=0&&sd.getDay()!=this._startDay){sd.setDate(sd.getDate()-1);}
if(n<0){return new Date(this._displayDate);}
return sd;};P._refreshEventWidgets=function(){var date=new Date(this._firstDateOnScreen);var first=new Date(this._firstDateOnScreen);this._dateIndexes={};var renderOnce={};this._nDays.times(function(i){var a=this._cache.getDateEvents(date);a=a.mergeSort(SwEvent.cmp_sortByTime);var d=date.getDate();this._dateIndexes[d]=i;a.foreach(function(ev){this.usedPositions={};this.currentPosition=-1;var tmp=null;var daysSkipped=ev.subtractStartFromBegin(first);var numDays=ev.getDaysCoverage()-daysSkipped;if(numDays>=1){if(renderOnce[ev._data.id]){return;}
renderOnce[ev._data.id]=true;tmp=new SwCalAllDayEventWidget({parent:this,event:ev,tooltip:ev.getShortTooltip.$(ev),dayOfMonth:d,numDays:numDays});}else{tmp=new SwEventWidget({parent:this,event:ev,tooltip:ev.getShortTooltip.$(ev)});}},this);date.setDate(d+1);},this);this.__doLayout();};P._handle_focusKeys=function(ev){if(!ev.altKey&&!ev.ctrlKey){if(ev.keyCode==DlKeyboard.TAB){var w=ev.focusedWidget;w=ev.shiftKey?this.getPrevFocusWidget(w):this.getNextFocusWidget(w);if(w){w.focus();}
ev.domStop=true;DlException.stopEventBubbling();}}
this._handleKeybinding(ev);};})();(function(){SwCalAllDayEventWidget.inherits(DlAbstractButton);function SwCalAllDayEventWidget(args){if(args){D.setDefaults(this,args);args.appendArgs=args.parent.getAllDayArea(this._dayOfMonth);args.label=this._event.getShortDesc();args.drag=SwEventWidget.getMoveDrag();args.noCapture=true;DlAbstractButton.call(this,args);}
this.delClass(SwEvent.DEL_CLASS_RE,this._event.getClassName());}
eval(Dynarch.EXPORT("SwCalAllDayEventWidget",true));D.DEFAULT_ARGS={_event:["event",null],_dayOfMonth:["dayOfMonth",null],_numDays:["numDays",null],_classes:["classes",{active:"SwAllDayEvent-active",hover:"SwAllDayEvent-hover",checked:"SwAllDayEvent-1",unchecked:"SwAllDayEvent-0",empty:"SwAllDayEvent-empty",disabled:"SwAllDayEvent-disabled"}]};P._updateForStartTime=function(dayOfMonth){var td=this.parent.getAllDayArea(dayOfMonth);if(!td){return;}
td.appendChild(this.getElement());this._updateSiblings();};P._onMouseEnter=function(ev){D.BASE._onMouseEnter.call(this,ev);if(this._siblings){this._siblings.foreach(function(el){AC(el,this._classes.hover);},this);}};P._onMouseLeave=function(ev){D.BASE._onMouseLeave.call(this,ev);if(this._siblings){this._siblings.foreach(function(el){DC(el,this._classes.hover);DC(el,this._classes.active);},this);}};P._onMouseDown=function(ev){this.eventMoved=false;};P._onMouseUp=function(ev){if(this.eventMoved){return;}
this._event._handleWidgetClick(ev);};P._updateSiblings=function(){if(this._siblings){this._siblings.foreach(function(el){el._dynarch_object=null;DOM.trash(el);});this._siblings=null;}
var n=this._numDays;if(n>1){this._siblings=[];var td=this.getElement().parentNode.nextSibling;while(--n>0&&td){var el=this.getElement().cloneNode(true);el.className=this._className.join(" ");el.className+=" "+"SwEvent-Color-"+this._event._data.syncSWorldCalComp.iCalendarID;this._siblings.push(el);td.appendChild(el);td=td.nextSibling;el._dynarch_object=this;}}};P.refresh=function(){var ev=this._event;if(ev){this._updateForStartTime(this._dayOfmonth);this.label(ev.getShortDesc());this.parent.__doLayout();this.delClass(SwEvent.DEL_CLASS_RE,ev.getClassName());this._updateSiblings();}};function handleAllDayKeyPress(ev){if(ev.keyCode==DlKeyboard.DELETE){this._event._set.removeWithDialog(this._event._data.id);}}
P.initDOM=function(){D.BASE.initDOM.call(this);if(this._event){this._event._widget=this;this._updateSiblings();this.addEventListener("onKeyPress",handleAllDayKeyPress);}};})();(function(){var BASE=SwEventWidget.inherits(DlContainer);function SwEventWidget(args){if(args){args.appendArgs=args.parent.getRelDivElement();args.focusable=true;D.setDefaults(this,args);DlContainer.call(this,args);}}
eval(Dynarch.EXPORT("SwEventWidget"));var HTML=String.buffer("<div class='title'></div>","<div class='content'></div>","<div class='resize-handle'></div>").get();D.DEFAULT_ARGS={_event:["event",null]};P.getContentElement=function(){return this.getElement().childNodes[1];};P.getTitleElement=function(){var element=this.getElement();return element.firstChild;};P.getHandleElement=function(){return this.getElement().lastChild;};P._createElement=function(){D.BASE._createElement.call(this);this.getElement().innerHTML=HTML;this._resizeHandle=new DlWidget({parent:this,element:this.getHandleElement(),drag:D.getResizeDrag()});this._title=new DlWidget({parent:this,element:this.getTitleElement(),drag:D.getMoveDrag()});var domElement=this.getContentElement();DynarchDomUtils.addEvent(domElement,"mousedown",this.onMouseDown.$(this));this.addEventListener("onMouseDown",this.onMouseDown.$(this));};P.onMouseDown=function(domEvent){if(domEvent.target){if(domEvent.target.className.indexOf("DlWidget")>=0){this._event._handleWidgetClick(domEvent);DlException.stopEventBubbling();}
if(domEvent.target.className.indexOf("content")>=0){this._event._handleWidgetClick(domEvent);DynarchDomUtils.stopEvent(domEvent);}}
else if(domEvent.srcElement){if(domEvent.srcElement.className.indexOf("DlWidget")>=0){this._event._handleWidgetClick(domEvent);DlException.stopEventBubbling();}
if(domEvent.srcElement.className.indexOf("content")>=0){this._event._handleWidgetClick(domEvent);DynarchDomUtils.stopEvent(domEvent);}}};P._setListeners=function(){BASE._setListeners.call(this);};function handleKeyPress(ev){if(ev.keyCode==DlKeyboard.DELETE){this._event._set.removeWithDialog(this._event._data.id);}}
P.initDOM=function(){D.BASE.initDOM.call(this);if(this._event){this._event.addEventListener("onChange",this._on_eventChange.$(this),null,this);this._event._widget=this;this.refresh();this.addEventListener("onKeyPress",handleKeyPress);}else{this.setStyle({width:this.parent._getWidthPercent()+"%"});}};P._on_eventChange=function(){var dayOfMonth=1;if(this._event._data.dateTimeDTO){dayOfMonth=this._event._data.dateTimeDTO.dayOfMonth;}
else{dayOfMonth=this._event._data.syncSWorldCalComp.startDayOfMonth;}
var col=this.parent.getDateIndex(dayOfMonth);if(!col){this._event._widget=null;this.destroy();}else{this.refresh();}};P.refresh=function(){if(this._element.childNodes.length===0){return;}
if(this._event){this._updateContent();this._updatePosition();}};P._updatePosition=function(){var content=this.getContentElement();var contentSize=DynarchDomUtils.getInnerSize(content);var boxHeight=contentSize.y*2;var title=this._event.get("title");if(title.indexOf("OFF-ICE Competitive, Dancers & Junior")>=0){var x=1;}
var styleInfo=this._calculateStyleInfo(this._event);var dateEventL=this._event._set.getDateEventsYMD(styleInfo.year,styleInfo.month,styleInfo.dayOfMonth);dateEventL=dateEventL.mergeSort(SwEvent.cmp_sortByTime);var i;var tmpSwEvent;var maxOverlappingL=[];var overlappingL;var testOverlappingL;var testStyleInfo;if(!this._event.hasOwnProperty("position")){overlappingL=this.getOverlapping(this._event,dateEventL,styleInfo,boxHeight);for(i=0;i<overlappingL.length;++i){tmpSwEvent=overlappingL[i];if(tmpSwEvent._data.syncSWorldCalComp.id==this._event._data.syncSWorldCalComp.id){continue;}
testStyleInfo=this._calculateStyleInfo(tmpSwEvent);testOverlappingL=this.getOverlapping(tmpSwEvent,dateEventL,testStyleInfo,boxHeight);if(testOverlappingL.length>maxOverlappingL.length){maxOverlappingL=testOverlappingL;}}
this.calculatePositions(maxOverlappingL);}
this.setStyle({left:this._event.left+"px",top:styleInfo.top+"px",width:this._event.width+"px",height:styleInfo.h+"px"});};P.calculatePositions=function(maxOverlappingL){var styleInfo=this._calculateStyleInfo(this._event);if(maxOverlappingL.length===0){this._event.left=styleInfo.leftPixel;this._event.width=styleInfo.pixelWidth-this.parent._emptyWidth;this._event.postition=0;return;}
var jsMathSucks=this.parent._emptyWidth/maxOverlappingL.length;var tmpSwEvent;for(var i=0;i<maxOverlappingL.length;++i){tmpSwEvent=maxOverlappingL[i];tmpSwEvent.position=i;var width=styleInfo.pixelWidth;width=width/maxOverlappingL.length;tmpSwEvent.width=width-jsMathSucks;var tmpWidth=tmpSwEvent.width*tmpSwEvent.position;tmpSwEvent.left=styleInfo.leftPixel+tmpWidth;}};P.getOverlapping=function(swEvent,dateEventL,styleInfo,boxHeight){var overlappingL=[];var element;var i;var tmpSwEvent,otherHeight,otherTop,otherStyleInfo;for(i=0;i<dateEventL.length;++i){tmpSwEvent=dateEventL[i];if(tmpSwEvent.getDaysCoverage()>0){continue;}
if(tmpSwEvent._data.syncSWorldCalComp.id==swEvent._data.syncSWorldCalComp.id){overlappingL.push(tmpSwEvent);continue;}
if(tmpSwEvent._widget){element=tmpSwEvent._widget.getElement();}
else{element=null;}
if(element&&element.style.height.length>0){otherHeight=parseInt(element.style.height,10);otherTop=parseInt(element.style.top,10);}
else{otherStyleInfo=this._calculateStyleInfo(tmpSwEvent);otherHeight=otherStyleInfo.h;otherTop=otherStyleInfo.top;}
if(otherTop>=styleInfo.top&&otherTop<(styleInfo.top+boxHeight)){overlappingL.push(tmpSwEvent);continue;}
if(styleInfo.top>=otherTop&&styleInfo.top<(otherTop+boxHeight)){overlappingL.push(tmpSwEvent);continue;}}
return overlappingL;};P._calculateStyleInfo=function(swEvent){var result={};result.wp=this.parent._getWidthPercent();result.pixelWidth=this.parent._getWidthPixels();result.left=null;result.top=null;result.hh=null;if(swEvent._data.dateTimeDTO){result.left=result.wp*this.parent.getDateIndex(swEvent._data.dateTimeDTO.dayOfMonth);result.leftPixel=result.pixelWidth*this.parent.getDateIndex(swEvent._data.dateTimeDTO.dayOfMonth);result.top=this.parent.getHourPosition(swEvent._data.dateTimeDTO.hourOfDay);result.hh=this.parent.getHourHeight();result.top+=result.hh*swEvent._data.dateTimeDTO.minute/60;result.year=swEvent._data.dateTimeDTO.year;result.month=swEvent._data.dateTimeDTO.month;result.dayOfMonth=swEvent._data.dateTimeDTO.dayOfMonth;}
else{result.left=result.wp*this.parent.getDateIndex(swEvent._data.syncSWorldCalComp.startDayOfMonth);result.leftPixel=result.pixelWidth*this.parent.getDateIndex(swEvent._data.syncSWorldCalComp.startDayOfMonth);result.top=this.parent.getHourPosition(swEvent._data.syncSWorldCalComp.startHourOfDay);result.hh=this.parent.getHourHeight();result.top+=result.hh*swEvent._data.syncSWorldCalComp.startMinute/60;result.year=swEvent._data.syncSWorldCalComp.startYear;result.month=swEvent._data.syncSWorldCalComp.startMonth;result.dayOfMonth=swEvent._data.syncSWorldCalComp.startDayOfMonth;}
result.h=result.hh*swEvent.getDuration()/60;if(result.h<(result.hh/2)){result.h=result.hh/2;}
return result;};P._updateForDuration=function(duration){if(duration>300){var x=0;var y=0;}
var hh=this.parent.getHourHeight();var h=hh*duration/60;this.setStyle("height",h+"px");};P._updateForStartTime=function(day,hourOfDay,minute,isRecurring,parentExists,hasAlarm,moving){var wp=this.parent._getWidthPercent();var left=wp*this.parent.getDateIndex(day);var top=this.parent.getHourPosition(hourOfDay);var hh=this.parent.getHourHeight();top+=hh*minute/60;if(moving){var width=this.parent._getWidthPixels()-this.parent._emptyWidth;this.setStyle({width:width+"px"});}
this.setStyle({left:left+"%",top:top+"px"});text=hourOfDay+":";if(minute<10){text+="0";}
text+=minute;var buffer=String.buffer();if(parentExists){buffer("<img src='images/9x9/recurringChange.gif' align='left'></img>");}
else if(isRecurring){buffer("<img src='images/9x9/recurring.gif' align='left'></img>");}
if(hasAlarm){buffer("<img src='images/kalarm.png' align='left'></img>");}
buffer(" <label style=''>"+text+"</label>");this._title.setContent(buffer.get());};P._updateContent=function(){var event=this._event;var title=this.getTitleElement();var text="";if(event._data.syncSWorldCalComp.durationMinutes<45){text=event._data.startHMtitle;}
else{text=event._data.startHM;}
var freq=event._data.syncSWorldCalComp.freq;var parent=event._data.parentSWorldEvent;var hasAlarm=false;if(event._data.syncSWorldCalComp.alarms&&event._data.syncSWorldCalComp.alarms.length>0){hasAlarm=true;}
var buffer=String.buffer();if(parent){buffer("<img src='images/9x9/recurringChange.gif' align='left'></img>");}
else if(freq){buffer("<img src='images/9x9/recurring.gif' align='left'></img>");}
if(hasAlarm){buffer("<img src='images/kalarm.png' align='left'></img>");}
buffer(" <label style=''>"+text+"</label>");title.innerHTML=buffer.get();this.setContent(event.getDescription());this.delClass(SwEvent.DEL_CLASS_RE,event.getClassName());};})();(function(){SwEventWidget_ResizeDrag.inherits(DlDrag);function SwEventWidget_ResizeDrag(args){DlDrag.call(this,args);}
eval(Dynarch.EXPORT("SwEventWidget_ResizeDrag"));P.makeElementCopy=function(){this.elementCopy=null;return this.elementCopy;};P.startOK=function(widget,ev){this.evw=widget instanceof SwCalAllDayEventWidget?widget:widget.parent;if(this.evw._event){if(this.evw._event.isReadOnly()){alert("The calendar '"+this.evw._event.getCalendarName()+"' is read-only.");DlException.stopEventBubbling();return false;}}
if(!this.hasOwnProperty("startHourOfDay")){if(this.evw._event){if(this.evw._event._data.dateTimeDTO){this.startHourOfDay=this.evw._event._data.dateTimeDTO.hourOfDay;this.startMinute=this.evw._event._data.dateTimeDTO.minute;}
else{this.startHourOfDay=this.evw._event._data.syncSWorldCalComp.startHourOfDay;this.startMinute=this.evw._event._data.syncSWorldCalComp.startMinute;}}}
this.cal=this.evw.parent;this.canDrop=true;this.evw.addClass("SwEventWidget-dragging");this.mouseDiff=ev.computePos(widget);return true;};P.moving=function(widget,ev){if(!this.evw){return;}
var pos=ev.computePos(this.cal.getGridTableElement());var et=this.cal.getTimeFromPos(pos,SwCalendar.DRAG_GRANULARITY);if(!et){return;}
var h1=this.startHourOfDay,m1=this.startMinute;var h2=et.getHours(),m2=et.getMinutes();var duration=(h2-h1)*60+m2-m1;if(duration>=2*SwCalendar.DRAG_GRANULARITY){this.evw._updateForDuration(duration);this.duration=duration;}};P.doDrop=function(){this.evw._event._data.syncSWorldCalComp.dirty=true;if(this.evw._event._data.parentSWorldEvent){this.evw._event._data.parentSWorldEvent.dirty=true;}
if(this.evw._event._data.syncSWorldCalComp.freq){this.cal._cache.doDropRecurSetDuration(this.evw._event,this.duration);}
else if(this.duration){this.evw._event.set("durationMinutes",this.duration);}
if(this.evw._event._objectType=="SwEvent"){swApp.syncSWorld.eventSync(swApp.syncSWorld.SYNC_NORMAL);}
else{swApp.syncSWorld.todoSync(swApp.syncSWorld.SYNC_NORMAL);}};P.reset=function(cancelled){if(this.evw){this.evw.delClass("SwEventWidget-dragging");if(cancelled){this.evw.refresh();}}
this.evw=null;this.mouseDiff=null;D.BASE.reset.call(this,cancelled);};var INSTANCE=null;SwEventWidget.getResizeDrag=function(){if(!INSTANCE){INSTANCE=new SwEventWidget_ResizeDrag({});}
return INSTANCE;};})();(function(){SwEventWidget_MoveDrag.inherits(SwEventWidget_ResizeDrag);function SwEventWidget_MoveDrag(args){SwEventWidget_ResizeDrag.call(this,args);}
eval(Dynarch.EXPORT("SwEventWidget_MoveDrag"));P.moving=function(widget,dlEvent){var pos=dlEvent.computePos(this.cal.getGridTableElement());pos.y-=this.mouseDiff.y;var st=this.cal.getTimeFromPos(pos,SwCalendar.DRAG_GRANULARITY,null,this.evw._event.getDaysCoverage()>=1);if(!st){return;}
if(this.evw){var tmpEvent=this.evw._event;var freq=tmpEvent._data.syncSWorldCalComp.freq;var parent=tmpEvent._data.parentSWorldEvent;var hasAlarm=false;if(tmpEvent._data.syncSWorldCalComp.alarms&&tmpEvent._data.syncSWorldCalComp.alarms.length>0){hasAlarm=true;}
this.evw._updateForStartTime(st.getDate(),st.getHours(),st.getMinutes(),freq,parent,hasAlarm,true);}
this.startYear=st.getFullYear();this.startMonth=st.getMonth();this.startDayOfMonth=st.getDate();this.startHourOfDay=st.getHours();this.startMinute=st.getMinutes();if(tmpEvent&&tmpEvent._data.syncSWorldCalComp.startTimeZone){this.startTimeZone=tmpEvent._data.syncSWorldCalComp.startTimeZone;}
else{this.startTimeZone=this.cal._cache.getTimeZone();}};P.doDrop=function(widget,dlEvent){swApp.log("doDrop() moveDrag");widget.eventMoved=true;if(this.hasOwnProperty("startHourOfDay")){var ev=this.evw._event;ev._data.syncSWorldCalComp.dirty=true;if(ev._data.parentSWorldEvent){ev._data.parentSWorldEvent.dirty=true;}
if(ev._data.syncSWorldCalComp.freq){this.cal._cache.doDropRecurMoved(ev,this.startYear,this.startMonth+1,this.startDayOfMonth,this.startHourOfDay,this.startMinute,0,this.startTimeZone,false);}
else{ev.setStartTime(this.startYear,this.startMonth+1,this.startDayOfMonth,this.startHourOfDay,this.startMinute,0,this.startTimeZone,false);}
var allDay=ev.getDaysCoverage()>=1;if(allDay){this.evw.parent.__doLayout();}
if(this.evw._event._objectType=="SwEvent"){swApp.syncSWorld.eventSync(swApp.syncSWorld.SYNC_NORMAL);}
else{swApp.syncSWorld.todoSync(swApp.syncSWorld.SYNC_NORMAL);}}};var INSTANCE=null;SwEventWidget.getMoveDrag=function(){if(!INSTANCE){INSTANCE=new SwEventWidget_MoveDrag({});}
return INSTANCE;};})();(function(){SwCalendar_CreateDrag.inherits(SwEventWidget_ResizeDrag);function SwCalendar_CreateDrag(args){SwEventWidget_ResizeDrag.call(this,args);}
eval(Dynarch.EXPORT("SwCalendar_CreateDrag"));P.makeElementCopy=function(){return null;};P.startOK=function(widget,ev){this.cal=widget.parent;if(widget._event){if(widget._event.isReadOnly()){DlException.stopEventBubbling();return false;}}
var st=this.cal.getTimeFromUIEvent(ev,30,true);if(!st){return false;}
var evw=new SwEventWidget({parent:this.cal,className:"SwEvent-Color-"+
this.cal._cache.getDefaultCalendar()});this.startYear=st.getFullYear();this.startMonth=st.getMonth();this.startDayOfMonth=st.getDate();this.startHourOfDay=st.getHours();this.startMinute=st.getMinutes();this.startTimeZone=this.cal._cache.getTimeZone();evw._updateForStartTime(this.startDayOfMonth,this.startHourOfDay,this.startMinute);evw._updateForDuration(30);return D.BASE.startOK.call(this,evw._resizeHandle,ev);};P.btnEditListener=function(ev){var summaryText=this.summaryDlEntry.getValue();if(!summaryText||summaryText.length===0){alert(swApp.i18n("Missing summary."));return;}
try{this.dlg.destroy();}catch(ex){swApp.log("create dlg.destroy() failed:"+ex);}
var iCalendarID=this.calendarSelect.getValue();var eventObject={};eventObject.brandNew=true;eventObject.dirty=true;eventObject.durationMinutes=this.duration;eventObject.title=summaryText;if(eventObject.title=="Ajt"){var x=0;}
eventObject.iCalendarID=iCalendarID;eventObject.id=swApp.syncSWorld.getNextLUID();var calObj=this.cal._cache.createCalComp(eventObject.id,eventObject,this.startTimeZone,this.startYear,this.startMonth+1,this.startDayOfMonth,this.startHourOfDay,this.startMinute,0);this.cal._cache.insert(calObj,true);if(this.cal._cache._objectType=="SwEventCache"){swApp.calendarEditView(calObj,swApp.eventView,true,true);}
else{swApp.calendarEditView(calObj,swApp.taskView,true,true);}};P.createBtnListener=function(ev){var summaryText=this.summaryDlEntry.getValue();if(!summaryText||summaryText.length===0){alert(swApp.i18n("Missing summary."));return;}
try{this.dlg.destroy();}catch(ex){swApp.log("create2 dlg.destroy() failed:"+ex);}
var iCalendarID=this.calendarSelect.getValue();var eventObject={};eventObject.brandNew=true;eventObject.dirty=true;eventObject.durationMinutes=this.duration;eventObject.title=summaryText;eventObject.iCalendarID=iCalendarID;eventObject.id=swApp.syncSWorld.getNextLUID();var calObj=this.cal._cache.createCalComp(eventObject.id,eventObject,this.startTimeZone,this.startYear,this.startMonth+1,this.startDayOfMonth,this.startHourOfDay,this.startMinute,0);this.cal._cache.insert(calObj,true);if(this.cal._cache._objectType=="SwEventCache"){swApp.syncSWorld.eventSync(swApp.syncSWorld.SYNC_NORMAL);}
else{swApp.syncSWorld.todoSync(swApp.syncSWorld.SYNC_NORMAL);}};P.doDrop=function(){var title=swApp.i18n("Create An Event");var edit=swApp.i18n("Edit Event Details");var em=null;if(this.cal._cache._objectType=="SwTaskCache"){title=swApp.i18n("Create A Task");edit=swApp.i18n("Edit Task Details");}
else{em=swApp.i18n("Event Manager");}
this.dlg=new DlDialog({title:title,quitBtn:"destroy"});var cont=new DlContainer({parent:this.dlg});cont.getElement().style.padding="20px";var fg=new DlFieldGrid({parent:cont});this.summaryDlEntry=fg.addField({name:"summary",label:"<b>Summary:</b>"});var options=[];if(swApp.syncSWorld.userSettingsDTO){var iCalendarInfoL=swApp.syncSWorld.userSettingsDTO.ICalendarInfoL;for(var i=0;i<iCalendarInfoL.length;++i){var iCalendarInfo=iCalendarInfoL[i];options.push({label:iCalendarInfo.name,value:iCalendarInfo.ICalendarID});}}
this.calendarSelect=new DlRadioSelect({options:options,value:this.cal._cache.getDefaultCalendar()});fg.addField({name:"calendar",label:"<b>Calendar:</b>",widget:this.calendarSelect});var hbox=new DlHbox({parent:cont,align:"center"});hbox.setEqualWidths();var btnEdit=new DlButton({parent:hbox,label:edit});btnEdit.addEventListener("onClick",this.btnEditListener.$(this));hbox.addSpace();var btn=new DlButton({parent:hbox,label:"Create"});btn.addEventListener("onClick",this.createBtnListener.$(this));this.summaryDlEntry.addEventListener("onKey-ENTER",this.createBtnListener.$(this));this.dlg.centerOnParent();this.dlg.show();this.summaryDlEntry.focus();};P.reset=function(cancelled){this.evw.destroy();this.evw=null;D.BASE.reset.call(this,cancelled);};var INSTANCE;SwCalendar.getCreateDrag=function(){if(!INSTANCE){INSTANCE=new SwCalendar_CreateDrag({draggingClass:"SwCalendar-CreateDrag"});}
return INSTANCE;};})();(function(){SwMonthCalendar.inherits(DlContainer);function SwMonthCalendar(args){if(args){if(!args.firstDay){var defaultStartDay=0;if(swApp.syncSWorld.userSettingsDTO.firstWeekDay=="2"){defaultStartDay=1;}
args.firstDay=defaultStartDay;}
args.drag=D.getDrag();D.setDefaults(this,args);DlContainer.call(this,args);}}
eval(Dynarch.EXPORT("SwMonthCalendar",true));D.DEFAULT_ARGS={_displayDate:["displayDate",new Date()],_fdow:["firstDay",0],_cache:["data",null]};P.initDOM=function(){D.BASE.initDOM.call(this);var html=String.buffer();var userSettingsLocaleKey=swApp.syncSWorld.userSettingsDTO.language;if(swApp.syncSWorld.userSettingsDTO.country&&swApp.syncSWorld.userSettingsDTO.country.length>0){userSettingsLocaleKey+="-"+swApp.syncSWorld.userSettingsDTO.country;}
var locale=jsLocaleData[userSettingsLocaleKey];html("<div class='SwMonthCalendar-dayNames'>");for(var i=0;i<7;i++){html("<div>",locale.weekDays[((i+this._fdow)%7)+1],"</div>");}
html("</div>");html("<div class='SwMonthCalendar-content'></div>");this.setContent(html.get());this.refresh();this._cache.addEventListener(["onChange","onInsert","onDelete"],this.refresh.$(this));this.addEventListener("onClick",this._on_click);};P.setCache=function(cache){this._cache=cache;this.refresh();};P._refreshDayNames=function(){var userSettingsLocaleKey=swApp.syncSWorld.userSettingsDTO.language;if(swApp.syncSWorld.userSettingsDTO.country&&swApp.syncSWorld.userSettingsDTO.country.length>0){userSettingsLocaleKey+="-"+swApp.syncSWorld.userSettingsDTO.country;}
var locale=jsLocaleData[userSettingsLocaleKey];var html=String.buffer();for(var i=0;i<7;i++){html("<div>",locale.weekDays[((i+this._fdow)%7)+1],"</div>");}
this.getDayNamesElement().innerHTML=html.get();};P.refresh=function(){this.getBodyElement().innerHTML=this._genHTML();var id;var div;for(id in this.evm){if(this.evm.hasOwnProperty(id)){div=document.getElementById(id);if(!div){continue;}
DynarchDomUtils.addEvent(div,"click",this.click.$(this));}}
var key;for(var i=0;i<42;++i){key="eventMonth"+i;div=document.getElementById(key);if(!div){break;}
DynarchDomUtils.addEvent(div,"dblclick",this.dblclick.$(this));}};P.dblclick=function(ev){swApp.log("dblclick");var ymd=this.eventDateM[ev.currentTarget.id];var index=ymd.indexOf("-");var year=ymd.substring(0,index);var index2=ymd.indexOf("-",index+1);var month=ymd.substring(index+1,index2);var dayOfMonth=ymd.substring(index2+1);var saveAll=true;var iCalendarID=this._cache.getDefaultCalendar();var calObj={};calObj.brandNew=true;calObj.dirty=true;calObj.durationMinutes=60;calObj.title="";calObj.iCalendarID=iCalendarID;calObj.id=swApp.syncSWorld.getNextLUID();var dateOther=new Date();var swComp=this._cache.createCalComp(calObj.id,calObj,this._cache.getTimeZone(),year,month,dayOfMonth,dateOther.getHours(),dateOther.getMinutes(),0,true);this._cache.insert(swComp,true);swApp.calendarEditView(swComp,swApp.eventView,true,saveAll);return;};P.click=function(ev){var swEvent;if(ev.target){swEvent=this._cache.get(ev.target.parentNode.id.substring(3));}
else if(ev.srcElement){swEvent=this._cache.get(ev.srcElement.parentNode.id.substring(3));}
swEvent._handleWidgetClick(ev);};P.displayDate=function(date,startDay){this._displayDate=new Date(date);var d=this._displayDate;d.setHours(0);d.setMinutes(0);d.setSeconds(0);this.refresh();};P._genHTML=function(){var html=String.buffer();this.evm={};var date=new Date(this._displayDate);date.setHours(0);date.setMinutes(0);date.setSeconds(0);date.setDate(1);var day1=(date.getDay()-this._fdow)%7;if(day1<0){day1+=7;}
date.setDate(-day1);date.setDate(date.getDate()+1);var today=new Date();var crossDayCont=[];var cnt=null;cnt=date.getMonthDays(date.getMonth());var first=date.getDate();if(first!=1){cnt=cnt-first+1+this._displayDate.getMonthDays(this._displayDate.getMonth());}
if(cnt%7){cnt+=7-cnt%7;}
var monthEventID=0;var addClassName="SwMonthCalendar-dayEventsHeight-"+(cnt/7);this._firstDateOnScreen=new Date(date);this._rowsOnScreen=cnt/7;this._nDays=7;var userSettingsLocaleKey=swApp.syncSWorld.userSettingsDTO.language;if(swApp.syncSWorld.userSettingsDTO.country&&swApp.syncSWorld.userSettingsDTO.country.length>0){userSettingsLocaleKey+="-"+swApp.syncSWorld.userSettingsDTO.country;}
this.eventDateM={};var locale=jsLocaleData[userSettingsLocaleKey];while(cnt-->0){var d=date.getDate();html("<div id='eventMonth",monthEventID,"' class='SwMonthCalendar-dayEvents ",addClassName);if(Date.isWeekend(date.getDay())){html(" SwMonthCalendar-weekend");}
if(date.dateEqualsTo(today)){html(" SwMonthCalendar-today");}
if(!date.dateEqualsTo(this._displayDate,true)){html(" SwMonthCalendar-otherMonth");}
var monthName=locale.months3[date.getMonth()];html("'><div class='SwMonthCalendar-dayTitle'>",monthName+" "+date.getDate(),"</div>");this._renderDateEvents(date,html,crossDayCont);html("</div>");date.setDate(d+1);++monthEventID;var ymd=date.getFullYear()+"-"+
(date.getMonth()+1)+"-"+date.getDate();this.eventDateM["eventMonth"+monthEventID]=ymd;}
return html.get();};P._renderDateEvents=function(date,html,crossDayCont){var haveAllDay=false;var a=null;var renderOnce={};for(var i=0;i<crossDayCont.length;){a=crossDayCont[i];var ev=a[0];if(renderOnce[ev.id()]){continue;}
renderOnce[ev.id()]=true;var daysLeft=--a[1];haveAllDay=true;var cn=ev.getClassName();if(cn){cn=" "+cn;}
var key="evm"+ev.id()+"-"+i;this.evm[key]=true;html("<div class='SwMonthCalendar-event SwMonthCalendar-allDayEvent ",daysLeft===0?"SwMonthCalendar-crossDayEnd":"SwMonthCalendar-crossDayCont",cn,"' swEvent='",ev.id(),"' id='",key,"'>","<div class='body'>",ev.getShortDesc(),"</div>","</div>");if(daysLeft===0){crossDayCont.splice(i,1);}else{i++;}}
a=this._cache.getDateEvents(date);a=a.mergeSort(SwEvent.cmp_sortByTime);var evm=this.evm;a.foreach(function(ev){if(ev._data.syncSWorldCalComp.deleted){return;}
if(renderOnce[ev.id()]){return;}
renderOnce[ev.id()]=true;var isAllDay=false;var cd=ev.getDaysCoverage();var daysSkipped=ev.subtractStartFromBegin(date);var numDays=ev.getDaysCoverage()-daysSkipped;if(numDays>1){isAllDay=true;}
if(isAllDay){haveAllDay=true;}
else if(haveAllDay){haveAllDay=false;html("<div class='SwMonthCalendar-allDaySeparator'>&nbsp;</div>");}
html("<div class='SwMonthCalendar-event");if(isAllDay){html(" SwMonthCalendar-allDayEvent");}
if(isAllDay){crossDayCont.push([ev,numDays-1]);html(" SwMonthCalendar-crossDayStart");}
var cn=ev.getClassName();if(cn){html(" ",cn);}
key="evm"+ev.id();evm[key]=true;html("' swEvent='",ev.id(),"' id='",key,"'>","<div class='time'>",ev._data.startHM,"</div>","<div class='body'>",ev.getShortDesc(),"</div>","</div>");});};P.getDayNamesElement=function(){return this.getElement().firstChild;};P.getBodyElement=function(){return this.getElement().childNodes[1];};P.getDateFromPos=function(pos,more){var body=this.getBodyElement();var body_size={x:body.offsetWidth,y:body.offsetHeight};if(pos.x<0||pos.x>body_size.x||pos.y<0||pos.y>body_size.y){return null;}
var day_width=body_size.x/this._nDays;var day_height=body_size.y/this._rowsOnScreen;var row=Math.floor(pos.y/day_height);var col=Math.floor(pos.x/day_width);var date=new Date(this._firstDateOnScreen);date.setDate(date.getDate()+row*7+col);if(more){more.div=this.getBodyElement().childNodes[row*7+col];more.row=row;more.col=col;more.day=(this._fdow+col)%7;more.date=date;}
return date;};P.getDateFromUIEvent=function(ev,more){return this.getDateFromPos(ev.computePos(this.getBodyElement()),more);};P.__doLayout=function(){var s=this.getSize();var h=DOM.getOuterSize(this.getDayNamesElement().firstChild);DOM.setOuterSize(this.getDayNamesElement(),null,h.y);DOM.setOuterSize(this.getBodyElement(),null,s.y-h.y);};})();(function(){SwMonthCalendar_Drag.inherits(DlDrag);function SwMonthCalendar_Drag(args){if(args){args.draggingClass="SwMonthCalendar_Drag";DlDrag.call(this,args);}}
eval(Dynarch.EXPORT("SwMonthCalendar_Drag",true));var MODE={MOVE:1,CREATE:2};function findEvent(ev,widget){var el;if(ev.target){el=ev.target;}
else if(ev.srcElement){el=ev.srcElement;}
var stop=widget.getElement();while(el&&el!==stop&&!el.getAttribute("swEvent")){el=el.parentNode;}
return{div:el,id:el?el.getAttribute("swEvent"):null};}
P.startOK=function(widget,ev){var tmp=findEvent(ev,widget);if(tmp.id){this.mode=MODE.MOVE;this.div=tmp.div;this.eventID=tmp.id;this.widget=widget;return true;}
tmp={};var date=widget.getDateFromUIEvent(ev,tmp);if(date){this.mode=MODE.CREATE;this.start={row:tmp.row,col:tmp.col,date:date};this.widget=widget;return true;}
return false;};P.dropOK=function(widget,ev){var result=null;if(this.mode==MODE.MOVE){this.newDate=widget.getDateFromUIEvent(ev);this.canDrop=this.newDate?true:false;result=this.canDrop;return result;}else if(this.mode==MODE.CREATE){this.canDrop=this.range!==null;result=this.canDrop;return result;}};P.doDrop=function(widget){if(this.mode==MODE.MOVE){var ev=null;if(this.newDate){ev=widget._cache.get(this.eventID);ev._data.syncSWorldCalComp.dirty=true;if(ev._data.parentSWorldEvent){ev._data.parentSWorldEvent.dirty=true;}
if(ev._data.syncSWorldCalComp.freq){if(ev._data.syncSWorldCalComp.startIsDate){widget._cache.doDropRecurMoved(ev,this.newDate.getFullYear(),this.newDate.getMonth()+1,this.newDate.getDate(),0,0,0,widget._cache.getTimeZone(),false);}
else{widget._cache.doDropRecurMoved(ev,this.newDate.getFullYear(),this.newDate.getMonth()+1,this.newDate.getDate(),ev._data.syncSWorldCalComp.startHourOfDay,ev._data.syncSWorldCalComp.startMinute,ev._data.syncSWorldCalComp.startSecond,widget._cache.getTimeZone(),false);}}
else{if(ev._data.syncSWorldCalComp.startIsDate){ev.setStartTime(this.newDate.getFullYear(),this.newDate.getMonth()+1,this.newDate.getDate(),0,0,0,widget._cache.getTimeZone(),false);}
else{ev.setStartTime(this.newDate.getFullYear(),this.newDate.getMonth()+1,this.newDate.getDate(),ev._data.syncSWorldCalComp.startHourOfDay,ev._data.syncSWorldCalComp.startMinute,ev._data.syncSWorldCalComp.startSecond,widget._cache.getTimeZone(),false);}}}}else if(this.mode==MODE.CREATE&&this.NOTSUPPORTEDYET){var duration=null;var description=null;var eventObject=null;var iCalendarID=null;if(this.range){var startTime=new Date(widget._firstDateOnScreen);startTime.setDate(startTime.getDate()+this.range.start);if(this.range.end-this.range.start>0){duration=this.range.end-this.range.start+1;description=prompt("New event description ("+startTime.print("%Y-%m-%d")+", "+duration+" days)");if(description){eventObject={};eventObject.startYear=startTime.getFullYear();eventObject.startMonth=startTime.getMonth();eventObject.startDayOfMonth=startTime.getDate();eventObject.startHourOfDay=startTime.getHours();eventObject.startMinute=startTime.getMinutes();eventObject.startSecond=0;eventObject.startTimeZone=widget._cache.getTimeZone();eventObject.durationMinutes=duration;eventObject.title=description;if(eventObject.title=="Ajt"){var x=0;}
iCalendarID=widget._cache.getDefaultCalendar();eventObject.iCalendarID=iCalendarID;eventObject.id=swApp.syncSWorld.getNextLUID();eventObject.brandNew=true;ev=new SwEvent({data:{id:eventObject.id,syncSWorldCalComp:eventObject},recordSet:widget._cache});ev.reCalculateDisplayValues();widget._cache.insert(ev);}}else{duration=1;description=prompt("New event description: (e.g. 1pm Lunch with my wife)");if(description){var hour=0,minute=0;var m=/^\s*([0-9]{1,2}):?([0-9]{1,2})?\s*(am?|pm?)?\s*(.*)/i.exec(description);var allDay=true;if(m){hour=parseInt(m[1],10);if(m[3]){if(/^p/.test(m[3])){hour+=12;}}
if(hour==24){hour=0;}
if(m[2]){minute=parseInt(m[2],10);}
description=m[4];allDay=false;duration=60;}
startTime.setHours(hour);startTime.setMinutes(minute);startTime.setSeconds(0);eventObject={};eventObject.startYear=startTime.getFullYear();eventObject.startMonth=startTime.getMonth();eventObject.startDayOfMonth=startTime.getDate();eventObject.startHourOfDay=startTime.getHours();eventObject.startMinute=startTime.getMinutes();eventObject.startSecond=0;eventObject.startTimeZone=widget._cache.getTimeZone();eventObject.durationMinutes=duration;eventObject.title=description;if(eventObject.title=="Ajt"){var tmpX=0;}
iCalendarID=widget._cache.getDefaultCalendar();eventObject.iCalendarID=iCalendarID;eventObject.id=swApp.syncSWorld.getNextLUID();eventObject.brandNew=true;ev=new SwEvent({data:{id:eventObject.id,syncSWorldCalComp:eventObject},recordSet:widget._cache});ev.reCalculateDisplayValues();widget._cache.insert(ev);}}
var divs=widget.getBodyElement().childNodes;for(var i=divs.length;--i>=0;){DC(divs[i],"SwMonthCalendar-dndHover");}}}
swApp.syncSWorld.eventSync(swApp.syncSWorld.SYNC_NORMAL);};P.moving=function(widget,ev){var tmp={};var date=widget.getDateFromUIEvent(ev,tmp);if(this.mode==MODE.MOVE){if(this._oldHover&&(!date||this._oldHover!==tmp.div)){DC(this._oldHover,"SwMonthCalendar-dndHover");}
if(date){this.canDrop=true;if(this._oldHover!==tmp.div){AC(tmp.div,"SwMonthCalendar-dndHover");this._oldHover=tmp.div;}}else{this._oldHover=null;}}else if(this.mode==MODE.CREATE){var i=0;var divs=widget.getBodyElement().childNodes;if(date){this.canDrop=true;var start=this.start.row*widget._nDays+this.start.col;var end=tmp.row*widget._nDays+tmp.col;if(end<start){tmp=start;start=end;end=tmp;}
if(!this.range||this.range.start!=start||this.range.end!=end){for(i=divs.length;--i>=0;){CC(divs[i],i>=start&&i<=end,"SwMonthCalendar-dndHover");}
this.range={start:start,end:end};}}else{for(i=divs.length;--i>=0;){DC(divs[i],"SwMonthCalendar-dndHover");}
this.range=null;}}};P.makeElementCopy=function(widget,ev){if(this.mode==MODE.MOVE){var el=this.elementCopy;if(!el){this.startElPos=DOM.getPos(this.div);el=this.elementCopy=this.div.cloneNode(true);DynarchDomUtils.addClass(el,"DlWidget DlWidget-dragged-clone SwMonthCalendar-dndEvent");el.style.top=ev.pos.y+"px";el.style.left=ev.pos.x+"px";document.body.appendChild(el);el.style.width=el.offsetWidth+"px";}
return el;}};P.reset=function(){D.BASE.reset.apply(this,arguments);var widget=this.widget;var divs=widget.getBodyElement().childNodes;for(var i=divs.length;--i>=0;){DC(divs[i],"SwMonthCalendar-dndHover");}
this.widget=null;this.mode=null;this.div=null;this.newDate=null;this.eventID=null;this.start=null;this.range=null;if(this._oldHover){DC(this._oldHover,"SwMonthCalendar-dndHover");this._oldHover=null;}};var INSTANCE=null;SwMonthCalendar.getDrag=function(){if(!INSTANCE){INSTANCE=new SwMonthCalendar_Drag({});}
return INSTANCE;};})();(function(){var TMPL_SHORT_TOOLTIP=String.template("<b>$startTime &rarr; $endTime</b> — <em>$description</em>");var BASE=SwEvent.inherits(DlRecord);function SwEvent(args){if(args){DlRecord.call(this,args);this._init();}}
eval(Dynarch.EXPORT("SwEvent"));D.DEFAULT_ARGS={};D.cmp_sortByTime=function(e1,e2){var e1Year=e1.getStartYear();var e2Year=e2.getStartYear();var e1Month=e1.getStartMonth();var e2Month=e2.getStartMonth();var e1Day=e1.getStartDayOfMonth();var e2Day=e2.getStartDayOfMonth();var e1Hour=e1.getStartHourOfDay();var e2Hour=e2.getStartHourOfDay();var e1Minute=e1.getStartMinute();var e2Minute=e2.getStartMinute();var e1Second=e1.getStartSecond();var e2Second=e2.getStartSecond();return SwEvent.cmp_sortByymdhms(e1Year,e1Month,e1Day,e1Hour,e1Minute,e1Second,e2Year,e2Month,e2Day,e2Hour,e2Minute,e2Second);};D.cmp_sortByDueTime=function(e1,e2){var e1Year=e1._data.syncSWorldCalComp.dueYear;var e2Year=e2._data.syncSWorldCalComp.dueYear;var e1Month=e1._data.syncSWorldCalComp.dueMonth;var e2Month=e2._data.syncSWorldCalComp.dueMonth;var e1Day=e1._data.syncSWorldCalComp.dueDayOfMonth;var e2Day=e2._data.syncSWorldCalComp.dueDayOfMonth;var e1Hour=e1._data.syncSWorldCalComp.dueHourOfDay;var e2Hour=e2._data.syncSWorldCalComp.dueHourOfDay;var e1Minute=e1._data.syncSWorldCalComp.dueMinute;var e2Minute=e2._data.syncSWorldCalComp.dueMinute;var e1Second=e1._data.syncSWorldCalComp.dueSecond;var e2Second=e2._data.syncSWorldCalComp.dueSecond;return SwEvent.cmp_sortByymdhms(e1Year,e1Month,e1Day,e1Hour,e1Minute,e1Second,e2Year,e2Month,e2Day,e2Hour,e2Minute,e2Second);};D.cmp_sortByCompletedTime=function(e1,e2){var e1Year=e1._data.syncSWorldCalComp.completedYear;var e2Year=e2._data.syncSWorldCalComp.completedYear;var e1Month=e1._data.syncSWorldCalComp.completedMonth;var e2Month=e2._data.syncSWorldCalComp.completedMonth;var e1Day=e1._data.syncSWorldCalComp.completedDayOfMonth;var e2Day=e2._data.syncSWorldCalComp.completedDayOfMonth;var e1Hour=e1._data.syncSWorldCalComp.completedHourOfDay;var e2Hour=e2._data.syncSWorldCalComp.completedHourOfDay;var e1Minute=e1._data.syncSWorldCalComp.completedMinute;var e2Minute=e2._data.syncSWorldCalComp.completedMinute;var e1Second=e1._data.syncSWorldCalComp.completedSecond;var e2Second=e2._data.syncSWorldCalComp.completedSecond;return SwEvent.cmp_sortByymdhms(e1Year,e1Month,e1Day,e1Hour,e1Minute,e1Second,e2Year,e2Month,e2Day,e2Hour,e2Minute,e2Second);};D.cmp_sortByymdhms=function(e1Year,e1Month,e1Day,e1Hour,e1Minute,e1Second,e2Year,e2Month,e2Day,e2Hour,e2Minute,e2Second){var year=e1Year-e2Year;if(year<0){return-1;}
if(year>0){return 1;}
var month=e1Month-e2Month;if(month<0){return-1;}
if(month>0){return 1;}
var day=e1Day-e2Day;if(day<0){return-1;}
if(day>0){return 1;}
var hour=e1Hour-e2Hour;if(hour<0){return-1;}
if(hour>0){return 1;}
var minute=e1Minute-e2Minute;if(minute<0){return-1;}
if(minute>0){return 1;}
var second=e1Second-e2Second;if(second<0){return-1;}
if(second>0){return 1;}
return 0;};P.getColor=function(){return this._data.syncSWorldCalComp.iCalendarID;};D.DEL_CLASS_RE=/SwEvent-Color-[a-z0-9_\-]+/ig;P.getClassName=function(){return"SwEvent-Color-"+this._data.syncSWorldCalComp.iCalendarID;};P.validProperties=["rrules","attendees","dateTime","durationMinutes","due","completed","percentComplete","title","priority","privacy","status","description","url","alarmOffset","alarmRelated","location","attendeeItem","categories","exceptions","recurrenceId"];P.compareTo=function(rec,col){var a;var b;if(col=="listViewStart"){return D.cmp_sortByTime(this,rec);}
else if(col=="due"){return D.cmp_sortByDueTime(this,rec);}
else if(col=="completed"){return D.cmp_sortByCompletedTime(this,rec);}
else{a=this.get(col);if(a&&a.toLowerCase){a=a.toLowerCase();}
b=rec.get(col);if(b&&b.toLowerCase){b=b.toLowerCase();}}
return a<b?-1:a==b?0:1;};P.get=function(aKey){var key=aKey;if(key=="duration"){key="durationMinutes";}
else if(key=="id"){if(swApp.loggingEnabled){swApp.log(this._objectType+"get() id:"+this._data.id);}
return this._data.id;}
else if(key=="startDate"){if(!this._data.startDateStr){if(swApp.loggingEnabled){swApp.log(this._objectType+"missing _data.startDateStr");}}
return this._data.startDateStr;}
else if(key=="startTime"){if(!this._data.startDateStr){if(swApp.loggingEnabled){swApp.log(this._objectType+"missing _data.startDateStr");}}
return this._data.startDateStr||"";}
else if(key=="listViewStart"){return this._data.listViewStart||"";}
else if(key=="calendarName"){var iCalendarID=this._data.syncSWorldCalComp.iCalendarID;var iCalendarInfoL=swApp.syncSWorld.userSettingsDTO.ICalendarInfoL;for(var i=0;i<iCalendarInfoL.length;++i){var iCalendarInfo=iCalendarInfoL[i];if(iCalendarID==iCalendarInfo.ICalendarID){return iCalendarInfo.name;}}}
else if(key=="recurring"){if(this._data.syncSWorldCalComp.hasOwnProperty("freq")){value=this._data.syncSWorldCalComp.freq;if(strValid(value)){return"true";}
else{return"false";}}}
if(this._data.syncSWorldCalComp.hasOwnProperty(key)){value=""+this._data.syncSWorldCalComp[key];}
else{value="";}
return value;};P.lightClone=function(){var syncSWorldCalComp={};swMerge(syncSWorldCalComp,this._data.syncSWorldCalComp);delete syncSWorldCalComp.guid;delete syncSWorldCalComp.compID;delete syncSWorldCalComp.id;var data={};data.syncSWorldCalComp=syncSWorldCalComp;var clone=new SwEvent({data:data});return clone;};P.set=function(aKey,value,noHooks,setSWorldModel){var key=aKey;if(key=="duration"){key="durationMinutes";}
if(key=="id"){var val=BASE.get.call(this,key);if(val){throw("Event id is immutable and can not be changed to:"+
value);}}
else if(key=="startTime"){swApp.log(this._objectType+"set startTime warning.");}
this._data.syncSWorldCalComp[key]=value;this._data.syncSWorldCalComp.dirty=true;if(key=="durationMinutes"){this.calculateDisplayDuration(value);}
noHooks=false;return BASE.set.call(this,key,value,noHooks);};P.getException=function(year,month,dayOfMonth,timeZoneID){var swe=swEvent._data.syncSWorldCalComp;if(!swe.exceptions){return null;}
for(var i=0;i<swe.exceptions.length;++i){var exception=swe.exceptions[i];if(exception.timeZoneID!=timeZoneID){}
if(exception.startYear!=year){continue;}
if(exception.startMonth!=month){continue;}
if(exception.startDayOfMonth!=dayOfMonth){continue;}
return exception;}};P.isReadOnly=function(){var iCalendarID=this._data.syncSWorldCalComp.iCalendarID;var iCalendarInfoL=swApp.syncSWorld.userSettingsDTO.ICalendarInfoL;for(var i=0;i<iCalendarInfoL.length;++i){var iCalendarInfo=iCalendarInfoL[i];if(iCalendarInfo.ownerCalUserID==swApp.syncSWorld.userSettingsDTO.calUserID){return false;}
if(iCalendarID==iCalendarInfo.ICalendarID){if(iCalendarInfo.permission==6){return false;}
return true;}}
return true;};P.getCalendarName=function(){var iCalendarID=this._data.syncSWorldCalComp.iCalendarID;var iCalendarInfoL=swApp.syncSWorld.userSettingsDTO.ICalendarInfoL;for(var i=0;i<iCalendarInfoL.length;++i){var iCalendarInfo=iCalendarInfoL[i];if(iCalendarID==iCalendarInfo.ICalendarID){return iCalendarInfo.name;}}
return"No name";};P.getStartTime=function(){return this._data.startDateStr;};P.getStartYear=function(){if(this._data.dateTimeDTO){return this._data.dateTimeDTO.year;}
return this._data.syncSWorldCalComp.startYear;};P.getStartMonth=function(){if(this._data.dateTimeDTO){return this._data.dateTimeDTO.month;}
return this._data.syncSWorldCalComp.startMonth;};P.getStartDayOfMonth=function(){if(this._data.dateTimeDTO){return this._data.dateTimeDTO.dayOfMonth;}
return this._data.syncSWorldCalComp.startDayOfMonth;};P.getStartHourOfDay=function(){if(this._data.dateTimeDTO){if(typeof this._data.dateTimeDTO.hourOfDay=='undefined'){return 0;}
return this._data.dateTimeDTO.hourOfDay;}
if(typeof this._data.syncSWorldCalComp.startHourOfDay=='undefined'){return 0;}
return this._data.syncSWorldCalComp.startHourOfDay;};P.getStartMinute=function(){if(this._data.dateTimeDTO){if(typeof this._data.dateTimeDTO.minute=='undefined'){return 0;}
return this._data.dateTimeDTO.minute;}
if(typeof this._data.syncSWorldCalComp.startMinute=='undefined'){return 0;}
return this._data.syncSWorldCalComp.startMinute;};P.getStartSecond=function(){if(this._data.dateTimeDTO){if(typeof this._data.dateTimeDTO.second=='undefined'){return 0;}
return this._data.dateTimeDTO.second;}
if(typeof this._data.syncSWorldCalComp.startSecond=='undefined'){return 0;}
return this._data.syncSWorldCalComp.startSecond;};P.getUntilDate=function(){var untilDate=new Date();var calComp=this._swEvent._data.syncSWorldCalComp;if(!calComp.hasOwnProperty("untilTimeZone")){return;}
var gmt=swApp.convertTZ2GMT(calComp.untilTimeZone,calComp.untilYear,calComp.untilMonth,calComp.untilDayOfMonth,23,59,59);untilDate.setUTCMilliseconds(0);untilDate.setUTCSeconds(gmt.second);untilDate.setUTCMinutes(gmt.minute);untilDate.setUTCHours(gmt.hourOfDay);untilDate.setUTCDate(gmt.dayOfMonth);untilDate.setMonth(gmt.month-1);untilDate.setYear(gmt.year);};P.getEndValues=function(){var tzID=this._data.syncSWorldCalComp.startTimeZone;if(this._data.dateTimeDTO){tzID=this._data.dateTimeDTO.timeZoneID;}
var gmtStart=null;if(this._data.dateTimeDTO){if(tzID=='floating'){gmtStart={};gmtStart.year=this._data.dateTimeDTO.year;gmtStart.month=this._data.dateTimeDTO.month;gmtStart.dayOfMonth=this._data.dateTimeDTO.dayOfMonth;gmtStart.hourOfDay=this._data.dateTimeDTO.hourOfDay;gmtStart.minute=this._data.dateTimeDTO.minute;gmtStart.second=this._data.dateTimeDTO.second;}
else{gmtStart=swApp.convertTZ2GMT(tzID,this._data.dateTimeDTO.year,this._data.dateTimeDTO.month,this._data.dateTimeDTO.dayOfMonth,this._data.dateTimeDTO.hourOfDay,this._data.dateTimeDTO.minute,this._data.dateTimeDTO.second);}}
else{if(tzID=='floating'){gmtStart={};gmtStart.year=this._data.syncSWorldCalComp.startYear;gmtStart.month=this._data.syncSWorldCalComp.startMonth;gmtStart.dayOfMonth=this._data.syncSWorldCalComp.startDayOfMonth;gmtStart.hourOfDay=this._data.syncSWorldCalComp.startHourOfDay;gmtStart.minute=this._data.syncSWorldCalComp.startMinute;gmtStart.second=this._data.syncSWorldCalComp.startSecond;}
else{gmtStart=swApp.convertTZ2GMT(tzID,this._data.syncSWorldCalComp.startYear,this._data.syncSWorldCalComp.startMonth,this._data.syncSWorldCalComp.startDayOfMonth,this._data.syncSWorldCalComp.startHourOfDay,this._data.syncSWorldCalComp.startMinute,this._data.syncSWorldCalComp.startSecond);}}
var eventEnd=swApp.recalculateEndWork(gmtStart.year,gmtStart.month,gmtStart.dayOfMonth,gmtStart.hourOfDay,parseInt(gmtStart.minute,10),gmtStart.second,this._data.syncSWorldCalComp.durationMinutes,0,0);if(tzID=='floating'){return eventEnd;}
var end=swApp.convertGMT2TZ(tzID,eventEnd.year,eventEnd.month,eventEnd.dayOfMonth,eventEnd.hourOfDay,eventEnd.minute,eventEnd.second);return end;};P.getStartMinusMinutes=function(minutes){var availableEndTime=this.getStartJSDate();var ms=availableEndTime.getTime();ms-=minutes*60*1000;availableEndTime.setTime(ms);return availableEndTime;};P.getStartJSDate=function(){var gmt;gmt=swApp.convertTZ2GMT(this._data.syncSWorldCalComp.startTimeZone,this._data.syncSWorldCalComp.startYear,this._data.syncSWorldCalComp.startMonth,this._data.syncSWorldCalComp.startDayOfMonth,this._data.syncSWorldCalComp.startHourOfDay,this._data.syncSWorldCalComp.startMinute,this._data.syncSWorldCalComp.startSecond);var jsDate=new Date();jsDate.setUTCDate(gmt.dayOfMonth);jsDate.setUTCMonth(gmt.month-1);jsDate.setUTCFullYear(gmt.year);jsDate.setUTCHours(gmt.hourOfDay);jsDate.setUTCMinutes(gmt.minute);jsDate.setUTCSeconds(gmt.second);jsDate.setUTCMilliseconds(0);return jsDate;};P.setStartTime=function(year,month,day,hourOfDay,minute,second,timeZone,noHooks){if(this._data.dateTimeDTO){this._data.dateTimeDTO.year=year;this._data.dateTimeDTO.month=month;this._data.dateTimeDTO.dayOfMonth=day;this._data.dateTimeDTO.hourOfDay=hourOfDay;this._data.dateTimeDTO.minute=minute;this._data.dateTimeDTO.second=second;this._data.dateTimeDTO.timeZoneID=timeZone;}
else{this._data.syncSWorldCalComp.startYear=year;this._data.syncSWorldCalComp.startMonth=month;this._data.syncSWorldCalComp.startDayOfMonth=day;this._data.syncSWorldCalComp.startHourOfDay=hourOfDay;this._data.syncSWorldCalComp.startMinute=minute;this._data.syncSWorldCalComp.startSecond=second;this._data.syncSWorldCalComp.startTimeZone=timeZone;}
this.calculateDisplayValues(timeZone,year,month,day,hourOfDay,minute,second,this._data.syncSWorldCalComp.durationMinutes,noHooks);};P.reCalculateDisplayValues=function(){this.calculateDisplayValues(this._data.syncSWorldCalComp.startTimeZone,this._data.syncSWorldCalComp.startYear,this._data.syncSWorldCalComp.startMonth,this._data.syncSWorldCalComp.startDayOfMonth,this._data.syncSWorldCalComp.startHourOfDay,this._data.syncSWorldCalComp.startMinute,this._data.syncSWorldCalComp.startSecond,this._data.syncSWorldCalComp.durationMinutes);};P.calculateDisplayValues=function(dispTZ,dispYear,dispMonth,dispDayOfMonth,aDispHourOfDay,aDispMinute,aDispSecond,durationMinutes,noHooks){var anHourOfDay=parseInt(aDispHourOfDay,10);if(isNaN(anHourOfDay)){anHourOfDay=0;}
dispHourOfDay=anHourOfDay;if(swApp.syncSWorld.userSettingsDTO.ampm){if(dispHourOfDay>12){dispHourOfDay-=12;}}
var aMinute=parseInt(aDispMinute,10);if(isNaN(aMinute)){aMinute=0;}
var dispMinute=aMinute;var dispSecond=parseInt(aDispSecond,10);if(!aDispSecond){dispSecond=0;}
this._data.startDateStr=dispYear+'-'+dispMonth+'-'+dispDayOfMonth;this._data.startInfoDateStr=dispYear+'-';if(dispMonth<10){this._data.startInfoDateStr+="0";}
this._data.startInfoDateStr+=dispMonth+'-';if(dispDayOfMonth<10){this._data.startInfoDateStr+="0";}
this._data.startInfoDateStr+=dispDayOfMonth;this._data.startHM=swApp.formatHHMM(anHourOfDay,aMinute);if(dispHourOfDay===0&&dispMinute===0){this._data.listViewStart=swApp.formatDate(dispYear,dispMonth,dispDayOfMonth);}
else{this._data.listViewStart=swApp.formatDate(dispYear,dispMonth,dispDayOfMonth)+" "+this._data.startHM;}
this._data.startHMtitle=this._data.startHM+" "+"<label style=''>"+this._data.syncSWorldCalComp.title+"</label>";this.calculateDisplayDuration(durationMinutes);if(noHooks){return;}
BASE.set.call(this,"startTime",this._data.startDateStr,false);};P.calculateDisplayDuration=function(durationMinutes){var days=Math.floor(durationMinutes/(60*24));var daysR=durationMinutes%(60*24);var hours=Math.floor(daysR/60);var minutes=daysR%60;this._data.displayDuration="";if(days>0){if(days==1){this._data.displayDuration+=days+" day ";}
else{this._data.displayDuration+=days+" days ";}}
if(hours>0){if(hours==1){this._data.displayDuration+=hours+" hour ";}
else{this._data.displayDuration+=hours+" hours ";}}
if(minutes>0){this._data.displayDuration+=minutes+" minutes";}
if(days===0&&hours===0&&minutes===0){this._data.displayDuration+="0 minutes";}
return this._data.displayDuration;};P.subtractStartFromBegin=function(aBeginDate){var beginDate=new Date(aBeginDate);var days=0;var tmpYear;var tmpMonth;var tmpDayOfMonth;if(this._data.dateTimeDTO){tmpYear=this._data.dateTimeDTO.year;tmpMonth=this._data.dateTimeDTO.month;tmpDayOfMonth=this._data.dateTimeDTO.dayOfMonth;}
else{tmpYear=this._data.syncSWorldCalComp.startYear;tmpMonth=this._data.syncSWorldCalComp.startMonth;tmpDayOfMonth=this._data.syncSWorldCalComp.startDayOfMonth;}
while(true){if(beginDate.getFullYear()==tmpYear){if(beginDate.getMonth()+1==tmpMonth){if(beginDate.getDate()==tmpDayOfMonth){break;}}}
beginDate.setDate(beginDate.getDate()-1);++days;if(days>32){days=0;break;}}
return days;};P.getStartDate=function(dayOffset){if(!this._data.syncSWorldCalComp.startYear){return null;}
if(!dayOffset||dayOffset===0){return this._data.startDateStr;}
var minuteOffset=dayOffset*24*60;var eventOffset;if(this._data.dateTimeDTO){eventOffset=swApp.recalculateEndWork(this._data.dateTimeDTO.year,this._data.dateTimeDTO.month,this._data.dateTimeDTO.dayOfMonth,this._data.dateTimeDTO.hourOfDay,parseInt(this._data.dateTimeDTO.minute,10),this._data.dateTimeDTO.second,minuteOffset,0,0);}
else{eventOffset=swApp.recalculateEndWork(this._data.syncSWorldCalComp.startYear,this._data.syncSWorldCalComp.startMonth,this._data.syncSWorldCalComp.startDayOfMonth,this._data.syncSWorldCalComp.startHourOfDay,parseInt(this._data.syncSWorldCalComp.startMinute,10),this._data.syncSWorldCalComp.startSecond,minuteOffset,0,0);}
var result=""+eventOffset.year+"-"+eventOffset.month+"-";result+=eventOffset.dayOfMonth;return result;};P.getStartInfoDate=function(dayOffset){if(!dayOffset||dayOffset===0){return this._data.startInfoDateStr;}
var minuteOffset=dayOffset*24*60;var eventOffset;if(this._data.dateTimeDTO){eventOffset=swApp.recalculateEndWork(this._data.dateTimeDTO.year,this._data.dateTimeDTO.month,this._data.dateTimeDTO.dayOfMonth,this._data.dateTimeDTO.hourOfDay,parseInt(this._data.dateTimeDTO.minute,10),this._data.dateTimeDTO.second,minuteOffset,0,0);}
else{eventOffset=swApp.recalculateEndWork(this._data.syncSWorldCalComp.startYear,this._data.syncSWorldCalComp.startMonth,this._data.syncSWorldCalComp.startDayOfMonth,this._data.syncSWorldCalComp.startHourOfDay,parseInt(this._data.syncSWorldCalComp.startMinute,10),this._data.syncSWorldCalComp.startSecond,minuteOffset,0,0);}
var result=""+eventOffset.year+"-";if(eventOffset.month<10){result+="0";}
result+=eventOffset.month+"-";if(eventOffset.dayOfMonth<10){result+="0";}
result+=eventOffset.dayOfMonth;return result;};P.getDuration=function(){return this.get("durationMinutes");};P.getDescription=function(){return this.get("title");};P.getDaysCoverage=function(){var startHourOfDay=0;if(this._data.dateTimeDTO){startHourOfDay=this._data.dateTimeDTO.hourOfDay;}
else{startHourOfDay=this._data.syncSWorldCalComp.startHourOfDay;}
if(!startHourOfDay){startHourOfDay=0;}
var durationMinutes=this._data.syncSWorldCalComp.durationMinutes;if(durationMinutes==0){return 1;}
var days=(((durationMinutes/60)+startHourOfDay)/24);if(days<1){days=0;}
else{days=Math.ceil(days);}
if(this._objectType=="SwTask"){if(this._data.syncSWorldCalComp.startIsDate&&days<1){days=1;}}
return days;};P.getShortDesc=function(){return this.get("title");};P._init=function(){if(!this._data.syncSWorldCalComp.guid){this._data.syncSWorldCalComp.guid=this.createGuid(swApp.syncSWorld.username,this._data.syncSWorldCalComp.iCalendarID,swApp.syncSWorld.clientNonce,swApp.syncSWorld.deviceID,this._data.id);}};P.createGuid=function(username,iCalendarID,clientNonce,deviceID,id){var random=Math.ceil(1000000*Math.random());var now=new Date();var guid=username+iCalendarID+clientNonce+id+
deviceID+random+now.getTime();return b64_md5(guid);};P._on_change=function(ev,key,val,old){};P.isStartInside=function(firstDate,lastDate){if(!this._data.syncSWorldCalComp.startYear){return false;}
if(this._data.dateTimeDTO){var dtDTO=this._data.dateTimeDTO;if(dtDTO.year>lastDate.getFullYear()){return false;}
if(dtDTO.year==lastDate.getFullYear()){if(dtDTO.month>lastDate.getMonth()+1){return false;}
if(dtDTO.month==lastDate.getMonth()+1){if(dtDTO.dayOfMonth>lastDate.getDate()){return false;}
if(dtDTO.dayOfMonth==lastDate.getDate()){if(dtDTO.hourOfDay>lastDate.getHours()){return false;}
if(dtDTO.hourOfDay==lastDate.getHours()){if(dtDTO.minute>lastDate.getMinutes()){return false;}
if(dtDTO.minute==lastDate.getMinutes()){if(dtDTO.second>=lastDate.getSeconds()){return false;}}}}}}
if(dtDTO.year<firstDate.getFullYear()){return false;}
if(dtDTO.year==firstDate.getFullYear()){if(dtDTO.month<firstDate.getMonth()+1){return false;}
if(dtDTO.month==firstDate.getMonth()+1){if(dtDTO.dayOfMonth<firstDate.getDate()){return false;}
if(dtDTO.dayOfMonth==firstDate.getDate()){if(dtDTO.hourOfDay<firstDate.getHours()){return false;}
if(dtDTO.hourOfDay==firstDate.getHours()){if(dtDTO.minute<firstDate.getMinutes()){return false;}
if(dtDTO.minute==firstDate.getMinutes()){if(dtDTO.second<firstDate.getSeconds()){return false;}}}}}}
return true;}
else{var eventObj=this._data.syncSWorldCalComp;if(eventObj.startYear>lastDate.getFullYear()){return false;}
if(eventObj.startYear==lastDate.getFullYear()){if(eventObj.startMonth>lastDate.getMonth()+1){return false;}
if(eventObj.startMonth==lastDate.getMonth()+1){if(eventObj.startDayOfMonth>lastDate.getDate()){return false;}
if(eventObj.startDayOfMonth==lastDate.getDate()){if(eventObj.startHourOfDay>lastDate.getHours()){return false;}
if(eventObj.startHourOfDay==lastDate.getHours()){if(eventObj.startMinute>lastDate.getMinutes()){return false;}
if(eventObj.startMinute==lastDate.getMinutes()){if(eventObj.startSecond>=lastDate.getSeconds()){return false;}}}}}}
var eventEnd=swApp.recalculateEndWork(eventObj.startYear,eventObj.startMonth,eventObj.startDayOfMonth,eventObj.startHourOfDay,parseInt(eventObj.startMinute,10),eventObj.startSecond,eventObj.durationMinutes,0,0);if(eventEnd.year<firstDate.getFullYear()){return false;}
if(eventEnd.year==firstDate.getFullYear()){if(eventEnd.month<firstDate.getMonth()+1){return false;}
if(eventEnd.month==firstDate.getMonth()+1){if(eventEnd.dayOfMonth<firstDate.getDate()){return false;}
if(eventEnd.dayOfMonth==firstDate.getDate()){if(eventEnd.hourOfDay<firstDate.getHours()){return false;}
if(eventEnd.hourOfDay==firstDate.getHours()){if(eventEnd.minute<firstDate.getMinutes()){return false;}
if(eventEnd.minute==firstDate.getMinutes()){if(eventEnd.second<firstDate.getSeconds()){return false;}}}}}}
return true;}};P.getShortTooltip=function(){var description=this.getDescription();if(!description){description="";}
var start=this._data.startHM+" ";var end=this._data.displayDuration;return TMPL_SHORT_TOOLTIP({startTime:start,endTime:end,description:description});};P._handleWidgetClick=function(domEvent){var swEvent=this;var eventObj=swEvent._data.syncSWorldCalComp;var delText="Delete Event";var title=swApp.i18n("Event - "+eventObj.title);var edit=swApp.i18n("Edit Event Details");if(this._objectType=="SwTask"){title=swApp.i18n("Task - "+eventObj.title);edit=swApp.i18n("Edit Task Details");delText="Delete Task";}
var dlg=new DlDialog({title:title,quitBtn:"destroy"});var cont=new DlContainer({parent:dlg});function btnEditAll(saveAll){dlg.destroy();if(this._objectType=="SwEvent"){swApp.calendarEditView(this,swApp.eventView,false,saveAll);}
else{swApp.calendarEditView(this,swApp.taskView,false,saveAll);}}
function btnDelete(){dlg.destroy();this._set.removeWithDialog(this._data.id);}
function btnCancel(){dlg.destroy();}
if(swEvent._data.syncSWorldCalComp.freq){cont.setSize({x:440});cont.setContent("<div style='padding: 20px'><b>Edit this instance, or all instances?</b></div>");var box=new DlHbox({parent:cont,borderSpacing:5});box.setAlign("center");var onlyThis=new DlButton({parent:box,label:"<div style='width:9em'>"+
swApp.i18n("Only this instance")+"</div>"});onlyThis.addEventListener("onClick",btnEditAll.$(this,false));var all=new DlButton({parent:box,label:"<div style='width:8em'>"+swApp.i18n("All instances")+"</div>"});all.addEventListener("onClick",btnEditAll.$(this,true));var no=new DlButton({parent:box,label:"<div style='width:5em'>"+swApp.i18n("Cancel")+"</div>"});no.addEventListener("onClick",btnCancel);box.addFiller();var btnDel=new DlButton({parent:box,label:delText});btnDel.addEventListener("onClick",btnDelete.$(this));}
else{cont.setSize({x:260});cont.getElement().style.padding="20px";var fg=new DlFieldGrid({parent:cont});var start="";if(swEvent._data.startHM){start=swEvent._data.startHM+" &rarr; "+
swEvent._data.displayDuration;}
var summaryDlEntry=fg.addField({name:"start",label:"<b>Starts:</b>",widget:new DlLabel({label:start})});var btnEdit=new DlButton({parent:cont,label:edit});btnEdit.addEventListener("onClick",btnEditAll.$(this,true));var btn=new DlButton({parent:cont,label:delText});btn.addEventListener("onClick",btnDelete.$(this));}
dlg.centerOnParent();dlg.show();};})();(function(){var BASE=SwEventCache.inherits(DlRecordCache);function SwEventCache(args){if(args){D.setDefaults(this,args);this._byDate={};this._cacheInfoDates={};this.getDateTooltip=this.getDateTooltip.$(this);DlRecordCache.call(this,args);}}
eval(Dynarch.EXPORT("SwEventCache"));D.DEFAULT_ARGS={_timeZoneID:["timeZoneID",null],_defaultCalendar:["defaultCalendar","default"],_syncSWorld:["syncSWorld",null]};P.defaultColumns=[{id:"calendarName",label:"Calendar",width:200},{id:"title",label:"Subject",width:200},{id:"categories",label:"Categories",width:200},{id:"listViewStart",label:"Start",width:130},{id:"durationMinutes",label:"Duration H:MM",width:100},{id:"location",label:"Location",width:100},{id:"priority",label:"Priority",width:100,visible:false},{id:"privacy",label:"Privacy",width:100,visible:false},{id:"status",label:"Status",width:100,visible:false},{id:"description",label:"Description",width:100,visible:false},{id:"url",label:"URL",width:100,visible:false},{id:"alarmOffset",label:"Alarm Offset",width:100,visible:false},{id:"alarmRelated",label:"Alarm Related",width:100,visible:false},{id:"emInstances",label:"EM Instances",width:100,visible:false},{id:"recurring",label:"Recurring",width:100,visible:true},{id:"recurrenceException",label:"Recurrence Exception",width:100,visible:false}];P.getColumns=function(){if(!this.loadedColumns){var columnsKey=this.getColumnsStorageKey();this.loadedColumns=this._syncSWorld.loadObject(columnsKey);}
if(this.loadedColumns instanceof Array&&this.loadedColumns.length>0){return this.loadedColumns.slice();}
return this.defaultColumns.slice();};P.getDefaultCalendar=function(){return this._defaultCalendar;};P.setTimeZone=function(tzID,displayDate){if(this._timeZoneID==tzID){return;}
this._timeZoneID=tzID;this.recalculateAll(displayDate.getFullYear(),displayDate.getMonth()+1);};P.getTimeZone=function(){return this._timeZoneID;};P.get=function(id){var value=BASE.get.call(this,id);if(!value){if(swApp.loggingEnabled){swApp.log(this._objectType+" get() id:"+id+" value was undefined.");}}
return value;};P.set=function(key,value,noHooks,setSWorldModel){return BASE.set.call(this,key,value,noHooks);};P.getIDs=function(iCalendarID){var ids=[];for(var luid in this._data){if(this._data.hasOwnProperty(luid)){if(luid.indexOf("luid")<0){continue;}
var swEvent=this.get(luid);if(iCalendarID instanceof Array){if(iCalendarID.contains(swEvent._data.syncSWorldCalComp.iCalendarID)){ids.push(luid);}}
else if(iCalendarID){if(swEvent._data.syncSWorldCalComp.iCalendarID==iCalendarID){ids.push(luid);}}
else{ids.push(luid);}}}
return ids;};P.getSize=function(iCalendarID){var size=0;var failed=0;var swItemModel=null;if(this._objectType=="SwEventCache"){swItemModel=this._syncSWorld.swEventModel[iCalendarID];}
else if(this._objectType=="SwTaskCache"){swItemModel=this._syncSWorld.swTodoModel[iCalendarID];}
for(var luid in swItemModel){if(swItemModel.hasOwnProperty(luid)){++size;}}
return size;};P.getSizeBROKEN=function(iCalendarID){var size=0;var failed=0;for(var luid in this._data){if(this._data.hasOwnProperty(luid)){if(luid.indexOf("luid")<0){continue;}
var swEvent=this.get(luid);if(swEvent._data.syncSWorldCalComp.iCalendarID==iCalendarID){++size;}
else{++failed;}}}
return size;};P.search=function(regex){var re=new RegExp(regex,"i");var ids=[];for(var luid in this._data){if(this._data.hasOwnProperty(luid)){if(luid.indexOf("luid")<0){continue;}
var data=this._data[luid]._data;if(data.syncSWorldCalComp.title&&data.syncSWorldCalComp.title.search(re)>=0){ids.push(data.id);}
else if(data.syncSWorldCalComp.description&&data.syncSWorldCalComp.description.search(re)>=0){ids.push(data.id);}
else if(data.syncSWorldCalComp.location&&data.syncSWorldCalComp.location.search(re)>=0){ids.push(data.id);}}}
return ids;};P.formatHTML=function(rec,col,buf){if(col=="durationMinutes"){var duration=rec.get("durationMinutes");var hours=parseInt(duration/60,10);var minutes=duration%60;if(minutes<10){buf(hours,':0',minutes);}
else{buf(hours,':',minutes);}}else if(col=="title"){buf(rec.get("title").htmlEscape().bold());}else if(col=="emInstances"){var itemM=swApp.syncSWorld.itemM;if(!propEmpty(itemM)){var itemId=getItemID(rec._data.syncSWorldCalComp);var item=itemM[itemId];if(item){if(rec._data.syncSWorldCalComp.freq&&item.instances){buf(""+countInstances(item.instances));}
else{buf("1");}}
else{buf("0");}}}else if(col=="recurring"){if(rec._data.syncSWorldCalComp.freq){buf("true");}
else{buf("false");}}else if(col=="recurrenceException"){if(rec._data.parentSWorldEvent){buf("true");}
else{buf("false");}}else{var value=rec.get(col)||"";buf(value.toString().htmlEscape());}};P.isEmpty=function(){if(!this._data){return true;}
for(var key in this._data){if(this._data.hasOwnProperty(key)){return false;}}
return true;};P.clear=function(){var IDL=this.getIDs();if(IDL.length===0){return;}
var tmpID;var swEvent;this.callHooks("onDelete",IDL);for(var i=0;i<IDL.length;++i){tmpID=IDL[i];delete this._data[tmpID];}
this._byDate={};this._cacheInfoDates={};};P.getCalModel=function(){return this._syncSWorld.swEventModel;};P.recalculateAll=function(year,month,networkFailed,createRecurParent){var calModel=this.getCalModel();this.currentYear=year;this.currentOneBasedMonth=month;this.clear();var icals={};var needMonthEventM=false;var needNextMonthEventM=false;var needPreviousMonthEventM=false;var refreshSwEventModelICals={};var monthEventMOptimisticVersion=null;var iCalendarID=null;var calOptimisticVersion=null;for(iCalendarID in this._syncSWorld.calendarOptimisticVersionM){if(this._syncSWorld.calendarOptimisticVersionM.hasOwnProperty(iCalendarID)){calOptimisticVersion=this._syncSWorld.calendarOptimisticVersionM[iCalendarID];monthEventMOptimisticVersion=this._syncSWorld.monthEventMOptimisticVersionM[iCalendarID];if(typeof monthEventMOptimisticVersion=='undefined'){monthEventMOptimisticVersion=-1;}
if(calOptimisticVersion==monthEventMOptimisticVersion){continue;}
if(monthEventMOptimisticVersion<calOptimisticVersion){icals[iCalendarID]=true;needMonthEventM=true;needNextMonthEventM=true;continue;}
if(monthEventMOptimisticVersion>calOptimisticVersion){refreshSwEventModelICals[iCalendarID]=true;this._syncSWorld.monthEventMOptimisticVersionM[iCalendarID]=-1;continue;}}}
var ymTest;if(year!==null&&month!==null){ymTest="ym"+year+"-"+month;var nextYear=year;var nextMonth=month+1;if(nextMonth>12){nextMonth=1;nextYear+=1;}
var ymTestNext="ym"+nextYear+"-"+nextMonth;var previousYear=year;var previousMonth=month-1;if(previousMonth<1){previousMonth=12;previousYear-=1;}
var ymTestPrevious="ym"+previousYear+"-"+previousMonth;for(var idICalendarID in this._syncSWorld.monthEventMOptimisticVersionM){if(this._syncSWorld.monthEventMOptimisticVersionM.hasOwnProperty(idICalendarID)){monthEventMOptimisticVersion=this._syncSWorld.monthEventMOptimisticVersionM[idICalendarID];calOptimisticVersion=this._syncSWorld.calendarOptimisticVersionM[idICalendarID];if(typeof calOptimisticVersion=='undefined'){calOptimisticVersion=-1;}
if(monthEventMOptimisticVersion<calOptimisticVersion){icals[idICalendarID]=true;needMonthEventM=true;needNextMonthEventM=true;needPreviousMonthEventM=true;continue;}
if(monthEventMOptimisticVersion>calOptimisticVersion){refreshSwEventModelICals[idICalendarID]=true;continue;}
var existingYmCidDateM=this._syncSWorld.monthRecurEventM[idICalendarID];if(!existingYmCidDateM){icals[idICalendarID]=true;needMonthEventM=true;needNextMonthEventM=true;needPreviousMonthEventM=true;}
if(existingYmCidDateM&&(!existingYmCidDateM.hasOwnProperty(ymTest))){icals[idICalendarID]=true;needMonthEventM=true;}
if(existingYmCidDateM&&(!existingYmCidDateM.hasOwnProperty(ymTestNext))){icals[idICalendarID]=true;needNextMonthEventM=true;}
if(existingYmCidDateM&&(!existingYmCidDateM.hasOwnProperty(ymTestPrevious))){icals[idICalendarID]=true;needPreviousMonthEventM=true;}}}
if(!networkFailed){var icalIDL=Array.hashKeys(refreshSwEventModelICals);if(icalIDL&&icalIDL.length>0){this._syncSWorld.eventAndTodoSync(this._syncSWorld.SYNC_NORMAL,icalIDL);return true;}}
if((!networkFailed)&&(needMonthEventM||needNextMonthEventM||needPreviousMonthEventM)){var getJSONMonthsRequest={};getJSONMonthsRequest.yearMonth=[];if(needMonthEventM){var yearMonths={};getJSONMonthsRequest.yearMonth.push(yearMonths);yearMonths.year=year;yearMonths.months=month;yearMonths.icals="";}
if(needNextMonthEventM){var nextYearMonths={};getJSONMonthsRequest.yearMonth.push(nextYearMonths);nextYearMonths.year=nextYear;nextYearMonths.months=nextMonth;nextYearMonths.icals="";}
if(needPreviousMonthEventM){var previousYearMonths={};getJSONMonthsRequest.yearMonth.push(previousYearMonths);previousYearMonths.year=previousYear;previousYearMonths.months=previousMonth;previousYearMonths.icals="";}
for(iCalendarID in icals){if(icals.hasOwnProperty(iCalendarID)){if(needMonthEventM){if(yearMonths.icals.length>0){yearMonths.icals+=",";}
yearMonths.icals+=iCalendarID;}
if(needNextMonthEventM){if(nextYearMonths.icals.length>0){nextYearMonths.icals+=",";}
nextYearMonths.icals+=iCalendarID;}
if(needPreviousMonthEventM){if(previousYearMonths.icals.length>0){previousYearMonths.icals+=",";}
previousYearMonths.icals+=iCalendarID;}}}
this._syncSWorld.requestJSONMonths(getJSONMonthsRequest);return true;}
var monthRecurEventM=this._syncSWorld.monthRecurEventM;var index=0;var dateTimeDTO=null;var i=0;for(var mreICalendarID in monthRecurEventM){if(monthRecurEventM.hasOwnProperty(mreICalendarID)){var ymCidDateM=monthRecurEventM[mreICalendarID];this._createYMSwEvents(ymCidDateM,mreICalendarID,year,month,true);this._createYMSwEvents(ymCidDateM,mreICalendarID,nextYear,nextMonth,true);this._createYMSwEvents(ymCidDateM,mreICalendarID,previousYear,previousMonth,true);}}}
var forceCreate=false;if(this._objectType=="SwEventCache"){calModel=this._syncSWorld.swEventModel;}
else if(this._objectType=="SwTaskCache"){calModel=this._syncSWorld.swTodoModel;forceCreate=true;}
if(year==null&&month==null){forceCreate=true;}
for(var sweICalendarID in calModel){if(calModel.hasOwnProperty(sweICalendarID)){var iCalendar=calModel[sweICalendarID];for(var luid in iCalendar){if(iCalendar.hasOwnProperty(luid)){var event=iCalendar[luid];this._createNonRecurSwEvent(event,year,month,true,forceCreate,createRecurParent);if(!forceCreate){this._createNonRecurSwEvent(event,nextYear,nextMonth,true,forceCreate,createRecurParent);}
if(!forceCreate){this._createNonRecurSwEvent(event,previousYear,previousMonth,true,forceCreate,createRecurParent);}}}}}
if(this._objectType=="SwTaskCache"){if(swApp.smallCalendarTask){swApp.smallCalendarTask.setInfoDates(this.getInfoDates());}}
else{swApp.smallCalendar.setInfoDates(this.getInfoDates());}};P._createNonRecurSwEvent=function(event,year,month,noHooks,forceCreate,createRecurParent){if(event.freq){if(event.hasOwnProperty("exceptions")){for(i=0;i<event.exceptions.length;++i){var exception=event.exceptions[i];if(year&&exception.startYear!=year&&!forceCreate){continue;}
if(month&&exception.startMonth!=month&&!forceCreate){continue;}
delete exception.start;delete exception.end;delete exception.endIsDate;delete exception.endYear;delete exception.endMonth;delete exception.endDayOfMonth;delete exception.endHourOfDay;delete exception.endMinute;delete exception.endSecond;delete exception.endTimeZone;var swEvent=this._createCalComp(exception,noHooks);swEvent._data.parentSWorldEvent=event;}}
if(createRecurParent){this._createCalComp(event,noHooks);}
return;}
if(year&&event.startYear!=year&&!forceCreate){return;}
if(month&&event.startMonth!=month&&!forceCreate){return;}
this._createCalComp(event,noHooks);};P._createYMSwEvents=function(ymCidDateM,mreICalendarID,year,month,noHooks){var ymKey="ym"+year+"-"+month;var cidDateM=ymCidDateM[ymKey];if(!cidDateM){return;}
for(var compID in cidDateM){if(cidDateM.hasOwnProperty(compID)){var dateTimeDTOL=cidDateM[compID];if(!dateTimeDTOL){continue;}
var eventObject;if(this._objectType=="SwEventCache"){eventObject=this._syncSWorld.getEvent(compID,mreICalendarID);}
else if(this._objectType=="SwTaskCache"){eventObject=this._syncSWorld.getTodo(compID,mreICalendarID);}
if(!eventObject){continue;}
for(i=0;i<dateTimeDTOL.length;++i){dateTimeDTO=dateTimeDTOL[i];this._createCalCompWithDTO(eventObject,dateTimeDTO,noHooks);}}}};P.createCalObject=function(id,syncSWorldCalComp){var swEvent=new SwEvent({data:{id:id,syncSWorldCalComp:syncSWorldCalComp},recordSet:this});return swEvent;};P.createCalComp=function(id,syncSWorldCalComp,tzID,year,month,dayOfMonth,hourOfDay,minute,second,noHooks){var swEvent=this.createCalObject(id,syncSWorldCalComp);if(!tzID){return swEvent;}
if(tzID!=this._timeZoneID&&(!syncSWorldCalComp.startIsDate)&&tzID!='floating'){var gmtStart=swApp.convertTZ2GMT(tzID,year,month,dayOfMonth,hourOfDay,minute,second);if(typeof gmtStart=='undefined'){swApp.log("gmtStart undefined");}
var tzStart=swApp.convertGMT2TZ(this._timeZoneID,gmtStart.year,gmtStart.month,gmtStart.dayOfMonth,gmtStart.hourOfDay,gmtStart.minute,gmtStart.second);swEvent.setStartTime(tzStart.year,tzStart.month,tzStart.dayOfMonth,tzStart.hourOfDay,tzStart.minute,tzStart.second,this._timeZoneID,noHooks);}
else{swEvent.setStartTime(year,month,dayOfMonth,hourOfDay,minute,second,this._timeZoneID,noHooks);}
if(syncSWorldCalComp.hasOwnProperty("dueYear")){if(tzID!=this._timeZoneID&&(!syncSWorldCalComp.dueIsDate)&&tzID!='floating'){var gmtDue=swApp.convertTZ2GMT(tzID,syncSWorldCalComp.dueYear,syncSWorldCalComp.dueMonth,syncSWorldCalComp.dueDayOfMonth,syncSWorldCalComp.dueHourOfDay,syncSWorldCalComp.dueMinute,syncSWorldCalComp.dueSecond);if(typeof gmtDue=='undefined'){swApp.log("gmtDue undefined");}
var tzDue=swApp.convertGMT2TZ(this._timeZoneID,gmtDue.year,gmtDue.month,gmtDue.dayOfMonth,gmtDue.hourOfDay,gmtDue.minute,gmtDue.second);swEvent.setDue(tzDue.year,tzDue.month,tzDue.dayOfMonth,tzDue.hourOfDay,tzDue.minute,tzDue.second,this._timeZoneID,noHooks);}
else{swEvent.setDue(syncSWorldCalComp.dueYear,syncSWorldCalComp.dueMonth,syncSWorldCalComp.dueDayOfMonth,syncSWorldCalComp.dueHourOfDay,syncSWorldCalComp.dueMinute,syncSWorldCalComp.dueSecond,this._timeZoneID,noHooks);}}
if(syncSWorldCalComp.hasOwnProperty("completedYear")){if(tzID!=this._timeZoneID&&(!syncSWorldCalComp.completedIsDate)&&tzID!='floating'){var gmtCompleted=swApp.convertTZ2GMT(tzID,syncSWorldCalComp.completedYear,syncSWorldCalComp.completedMonth,syncSWorldCalComp.completedDayOfMonth,syncSWorldCalComp.completedHourOfDay,syncSWorldCalComp.completedMinute,syncSWorldCalComp.completedSecond);if(typeof gmtCompleted=='undefined'){swApp.log("gmtCompleted undefined");}
var tzCompleted=swApp.convertGMT2TZ(this._timeZoneID,gmtCompleted.year,gmtCompleted.month,gmtCompleted.dayOfMonth,gmtCompleted.hourOfDay,gmtCompleted.minute,gmtCompleted.second);swEvent.setCompleted(tzCompleted.year,tzCompleted.month,tzCompleted.dayOfMonth,tzCompleted.hourOfDay,tzCompleted.minute,tzCompleted.second,this._timeZoneID,noHooks);}
else{swEvent.setCompleted(syncSWorldCalComp.completedYear,syncSWorldCalComp.completedMonth,syncSWorldCalComp.completedDayOfMonth,syncSWorldCalComp.completedHourOfDay,syncSWorldCalComp.completedMinute,syncSWorldCalComp.completedSecond,this._timeZoneID,noHooks);}}
swEvent._data.startTime=swEvent._data.startDateStr;return swEvent;};P._createCalCompWithDTO=function(eventObject,dateTimeDTO,noHooks){var id=eventObject.id+"-"+dateTimeDTO.year+"-"+
dateTimeDTO.month+"-"+dateTimeDTO.dayOfMonth;var swEvent=null;if(dateTimeDTO.timeZoneID.indexOf(this._timeZoneID)===0&&dateTimeDTO.timeZoneID.length==this._timeZoneID.length){}
else if(!eventObject.startIsDate&&dateTimeDTO.timeZoneID!='floating'){var gmtStart=swApp.convertTZ2GMT(dateTimeDTO.timeZoneID,dateTimeDTO.year,dateTimeDTO.month,dateTimeDTO.dayOfMonth,dateTimeDTO.hourOfDay,dateTimeDTO.minute,dateTimeDTO.second);var tzStart=swApp.convertGMT2TZ(this._timeZoneID,gmtStart.year,gmtStart.month,gmtStart.dayOfMonth,gmtStart.hourOfDay,gmtStart.minute,gmtStart.second);dateTimeDTO.timeZoneID=this._timeZoneID;dateTimeDTO.year=tzStart.year;dateTimeDTO.month=tzStart.month;dateTimeDTO.dayOfMonth=tzStart.dayOfMonth;dateTimeDTO.hourOfDay=tzStart.hourOfDay;dateTimeDTO.minute=tzStart.minute;dateTimeDTO.second=tzStart.second;}
swEvent=this.createCalObject(id,eventObject);swEvent._data.dateTimeDTO=dateTimeDTO;swEvent.calculateDisplayValues(dateTimeDTO.timeZoneID,dateTimeDTO.year,dateTimeDTO.month,dateTimeDTO.dayOfMonth,dateTimeDTO.hourOfDay,dateTimeDTO.minute,dateTimeDTO.second,eventObject.durationMinutes,true);swEvent._data.startTime=swEvent._data.startDateStr;this.insertNoSWorld(swEvent,noHooks);return swEvent;};P._createCalComp=function(eventObject,noHooks){var swEvent=this.createCalComp(eventObject.id,eventObject,eventObject.startTimeZone,eventObject.startYear,eventObject.startMonth,eventObject.startDayOfMonth,eventObject.startHourOfDay,eventObject.startMinute,eventObject.startSecond,noHooks);this.insertNoSWorld(swEvent,noHooks);return swEvent;};P.getDateEvents=function(date){var year=null;var month=null;var day=null;var key=null;if(date instanceof Date){year=date.getFullYear();month=date.getMonth()+1;day=date.getDate();key=year+'-'+month+'-'+day;}
else{var yIndex=date.indexOf("-");var mIndex=date.indexOf("-",yIndex+1);year=date.substring(0,yIndex);month=parseInt(date.substring(yIndex+1,mIndex),10);day=parseInt(date.substring(mIndex+1),10);key=year+'-'+month+'-'+day;}
return this._byDate[key]||[];};P.getDateEventsYMD=function(year,month,dayOfMonth){var key=year+'-'+parseInt(month,10)+'-'+
parseInt(dayOfMonth,10);return this._byDate[key]||[];};P.HA=function(obj,key,val){var a=obj[key]||(obj[key]=[]);a.pushUnique(val);};P._cacheByDate=function(swEvent,date){if(!date){date=swEvent.getStartDate();}
if(!date){return;}
var infoDate;var days=swEvent.getDaysCoverage();if(days===0){days=1;}
for(var i=0;i<days;++i){date=swEvent.getStartDate(i);this.HA(this._byDate,date,swEvent);infoDate=swEvent.getStartInfoDate(i);this._cacheInfoDates[infoDate]=infoDate;}};P.insert=function(swEvent,noHooks){this._syncSWorld.insertEventIntoModel(swEvent._data.syncSWorldCalComp,swEvent._data.syncSWorldCalComp.iCalendarID);this.insertNoSWorld(swEvent,noHooks);};P.insertNoSWorld=function(swEvent,noHooks){this._cacheByDate(swEvent);this._data[swEvent.id()]=swEvent;swEvent._set=this;if(noHooks){return;}
var where=this.getInsertPos(swEvent);this.applyHooks("onInsert",[swEvent,where]);};P.removeAllBelongingToCal=function(iCalendarID){var idL=this.getIDs();for(var i=0;i<idL.length;++i){var id=idL[i];var swEvent=this.get(id);if(swEvent._data.syncSWorldCalComp.iCalendarID!=iCalendarID){continue;}
this.remove(id,true);}};P.remove=function(id,removeAll,doNotUseSWModel){var swEvent;var tmpID;var itemM=swApp.syncSWorld.itemM;if(id instanceof Array){if(id.length===0){return;}
var failedM={};for(var i=0;i<id.length;++i){tmpID=id[i];swEvent=this.get(tmpID);var emItemID=getItemID(swEvent._data.syncSWorldCalComp);if(itemM){if(itemM.hasOwnProperty(emItemID)){failedM[swEvent._data.syncSWorldCalComp.title]=true;}}}
var failedL=getPropKeys(failedM);failedL.sort();if(failedL.length>0){var msg=failedL.join("\n");alert("Items managed by the Event Manager service will not be deleted.\nEvents managed by the Event Manager:\n"+msg);return;}
var noSave=true;for(i=0;i<id.length;++i){tmpID=id[i];swEvent=this.get(tmpID);this.callHooks("onDelete",tmpID);this._removeByDate(swEvent);if(!doNotUseSWModel){if(i==id.length-1){noSave=false;}
if(swEvent._data.parentSWorldEvent){if(removeAll){this._syncSWorld.removeEventFromModel(swEvent._data.syncSWorldCalComp,null,noSave);}
else{this._syncSWorld.removeRidEventFromModel(swEvent._data.parentSWorldEvent,swEvent._data.syncSWorldCalComp);}}
else{if(removeAll){this._syncSWorld.removeEventFromModel(swEvent._data.syncSWorldCalComp,null,noSave);}
else{this._syncSWorld.removeEventFromModel(swEvent._data.syncSWorldCalComp,swEvent._data.dateTimeDTO,noSave);}}}}}
else{swEvent=this.get(id);var emItemID=getItemID(swEvent._data.syncSWorldCalComp);if(itemM){if(itemM.hasOwnProperty(emItemID)){alert("Items managed by the Event Manager service will not be deleted.");return;}}
this.callHooks("onDelete",id);delete this._data[id];this._removeByDate(swEvent);if(!doNotUseSWModel){if(swEvent._data.parentSWorldEvent){if(removeAll){this._syncSWorld.removeEventFromModel(swEvent._data.syncSWorldCalComp);}
else{this._syncSWorld.removeRidEventFromModel(swEvent._data.parentSWorldEvent,swEvent._data.syncSWorldCalComp);}}
else{if(removeAll){this._syncSWorld.removeEventFromModel(swEvent._data.syncSWorldCalComp);}
else{this._syncSWorld.removeEventFromModel(swEvent._data.syncSWorldCalComp,swEvent._data.dateTimeDTO);}}}}};P.removeWithDialog=function(id,noSyncAfterRemove){var swEvent;var title="Delete Event";var content="";var questionDlg;var cont;var box;var no;var i;var deleteEvent;if(id instanceof Array){title="Delete Multiple Events";if(this._objectType=="SwTaskCache"){title="Delete Multiple Tasks";}
var buffer=String.buffer();buffer("<textarea type='textarea' rows='8' style='width: 100%'>");for(i=0;i<id.length;++i){swEvent=this.get(id[i]);buffer(swEvent._data.syncSWorldCalComp.title+"\n");}
buffer("</textarea>");content=buffer.get();questionDlg=new DlDialog({modal:false,title:title});cont=new DlContainer({parent:questionDlg});cont.setSize({x:400});cont.setContent(content);box=new DlHbox({parent:cont,borderSpacing:5});box.setAlign("center");deleteEvent=new DlButton({parent:box,label:"<div style='width:11em'>"+
swApp.i18n(title)+"</div>"});no=new DlButton({parent:box,label:"<div style='width:5em'>"+
swApp.i18n("Cancel")+"</div>"});var iCalendarIDS={};for(i=0;i<id.length;++i){swEvent=this.get(id[i]);iCalendarIDS[swEvent._data.syncSWorldCalComp.iCalendarID]=true;}
deleteEvent.addEventListener("onClick",function(){questionDlg.destroy();this.remove(id,true);if(!noSyncAfterRemove){var iCalendarIDL=[];for(var key in iCalendarIDS){if(iCalendarIDS.hasOwnProperty(key)){iCalendarIDL.push(key);}}
this._syncSWorld.eventAndTodoSync(this._syncSWorld.SYNC_NORMAL,iCalendarIDL);}}.$(this));no.addEventListener("onClick",function(){questionDlg.destroy();});}
else{swEvent=this.get(id);if(swEvent._data.syncSWorldCalComp.freq){var delText="All instances of this event";var delRecTitle="Delete Recurring Event";if(this._objectType=="SwTaskCache"){delRecTitle="Delete Recurring Task";delText="All instances of this task";}
questionDlg=new DlDialog({modal:false,title:delRecTitle});cont=new DlContainer({parent:questionDlg});cont.setSize({x:440});cont.setContent("<div style='padding: 20px'><b>Would you like to delete only this instance, or all instances?</b></div>");box=new DlHbox({parent:cont,borderSpacing:5});box.setAlign("center");var onlyThis=new DlButton({parent:box,label:"<div style='width:10em'>"+
swApp.i18n("Only this instance")+"</div>"});var all=new DlButton({parent:box,label:"<div style='width:14em'>"+
swApp.i18n(delText)+"</div>"});no=new DlButton({parent:box,label:"<div style='width:6em'>"+
swApp.i18n("Cancel")+"</div>"});onlyThis.addEventListener("onClick",function(){questionDlg.destroy();this.remove(swEvent._data.id);if(!noSyncAfterRemove){var iCalendarIDL=[swEvent._data.syncSWorldCalComp.iCalendarID];this._syncSWorld.eventAndTodoSync(this._syncSWorld.SYNC_NORMAL,iCalendarIDL);}}.$(this));all.addEventListener("onClick",function(){questionDlg.destroy();this.remove(swEvent._data.id,true);if(!noSyncAfterRemove){var iCalendarIDL=[swEvent._data.syncSWorldCalComp.iCalendarID];this._syncSWorld.eventAndTodoSync(this._syncSWorld.SYNC_NORMAL,iCalendarIDL);}}.$(this));no.addEventListener("onClick",function(){questionDlg.destroy();});}
else{var delTitle="Delete Event";var item="event";if(this._objectType=="SwTaskCache"){delTitle="Delete Task";item="task";}
questionDlg=new DlDialog({modal:false,title:delTitle});cont=new DlContainer({parent:questionDlg});cont.setSize({x:400});cont.setContent("<div style='padding: 20px'><b>Delete "+
item+": "+
swEvent._data.syncSWorldCalComp.title+"</b></div>");box=new DlHbox({parent:cont,borderSpacing:5});box.setAlign("center");deleteEvent=new DlButton({parent:box,label:"<div style='width:9em'>"+
swApp.i18n(delTitle)+"</div>"});no=new DlButton({parent:box,label:"<div style='width:5em'>"+
swApp.i18n("Cancel")+"</div>"});deleteEvent.addEventListener("onClick",function(){questionDlg.destroy();this.remove(swEvent._data.id);if(!noSyncAfterRemove){var iCalendarIDL=[swEvent._data.syncSWorldCalComp.iCalendarID];this._syncSWorld.eventAndTodoSync(this._syncSWorld.SYNC_NORMAL,iCalendarIDL);}}.$(this));no.addEventListener("onClick",function(){questionDlg.destroy();});}}
questionDlg.centerOnParent();questionDlg.show();};P.getInfoDates=function(){return this._cacheInfoDates;};P._init=function(){this.addEventListener("onChange",this._onEventChange);D.BASE._init.call(this);for(var i in this._data){if(this._data.hasOwnProperty(i)){var swEvent=this._data[i];this._cacheByDate(swEvent);}}};P._onEventChange=function(swEvent,key,val,old){if(val==old){return;}
if(key=="startTime"){this._removeByDate(swEvent,old);this._cacheByDate(swEvent,val);}
else{}
if(swApp.loggingEnabled){swApp.log(this._objectType+" key:"+key+" changed() id:"+
swEvent._data.id);}};P.getDateTooltip=function(date){if(!date){return;}
var a=this.getDateEvents(date);if(a.length>0){a=a.mergeSort(SwEvent.cmp_sortByTime);return a.map("getShortTooltip").join("<br />");}};P._removeByDate=function(swEvent,date){if(!date){date=swEvent.getStartDate();}
if(!date){return;}
var days=swEvent.getDaysCoverage();if(days===0){days=1;}
var removeInfoDate;for(var j=0;j<days;++j){date=swEvent.getStartDate(j);removeInfoDate=swEvent.getStartInfoDate(j);var swEventL=this._byDate[date];if(swEventL){for(var i=0;i<swEventL.length;++i){var existingSwEvent=swEventL[i];if(!existingSwEvent){continue;}
if(existingSwEvent._data.id==swEvent._data.id){swEventL.removeSlice(i,i);break;}}
if(swEventL.length===0){delete this._byDate[date];delete this._cacheInfoDates[removeInfoDate];}}}};P.doDropRecurMoved=function(swEvent,year,month,dayOfMonth,hourOfDay,minute,second,timeZone,noHooks){var swe=swEvent._data.syncSWorldCalComp;if(!swe.exceptions){swe.exceptions=[];}
swe.dirty=true;this.remove(swEvent._data.id,false,true);var dto=swEvent._data.dateTimeDTO;this._syncSWorld.removeFromMonthRecurEventM(swe,dto.year,dto.month,dto.dayOfMonth,dto.hourOfDay,dto.minute,dto.second,dto.timeZoneID);var exception={};swe.exceptions.push(exception);exception.iCalendarID=swEvent._data.syncSWorldCalComp.iCalendarID;exception.id=this._syncSWorld.getNextLUID();exception.brandNew=true;exception.dirty=true;exception.recurrenceIdIsDate=false;exception.startYear=year;exception.startMonth=month;exception.startDayOfMonth=dayOfMonth;exception.startHourOfDay=hourOfDay;exception.startMinute=minute;exception.startSecond=second;exception.startTimeZone=timeZone;exception.durationMinutes=swEvent._data.syncSWorldCalComp.durationMinutes;exception.title=swEvent._data.syncSWorldCalComp.title;exception.recurrenceIdYear=dto.year;exception.recurrenceIdMonth=dto.month;exception.recurrenceIdDayOfMonth=dto.dayOfMonth;exception.recurrenceIdHourOfDay=dto.hourOfDay;exception.recurrenceIdMinute=dto.minute;exception.recurrenceIdSecond=dto.second;exception.recurrenceIdTimeZone=dto.timeZoneID;var newSwEvent=this._createCalComp(exception,noHooks);newSwEvent._data.parentSWorldEvent=swe;return newSwEvent;};P.doDropRecurSetDuration=function(swEvent,durationMinutes){var newSwEvent=null;if(swEvent._data.dateTimeDTO){var dt=swEvent._data.dateTimeDTO;newSwEvent=this.doDropRecurMoved(swEvent,dt.year,dt.month,dt.dayOfMonth,dt.hourOfDay,dt.minute,dt.second,dt.timeZoneID,false);}
else{var ev=swEvent._data.syncSWorldCalComp;newSwEvent=this.doDropRecurMoved(swEvent,ev.startYear,ev.startMonth,ev.startDayOfMonth,ev.startHourOfDay,ev.startMinute,ev.startSecond,ev.startTimeZone,false);}
newSwEvent.set("durationMinutes",durationMinutes);};P.getColumnsStorageKey=function(){return"eventColumnsKey";};P.getUsingUID=function(uid){for(var sweICalendarID in this._syncSWorld.swEventModel){if(this._syncSWorld.swEventModel.hasOwnProperty(sweICalendarID)){var iCalendar=this._syncSWorld.swEventModel[sweICalendarID];for(var luid in iCalendar){if(iCalendar.hasOwnProperty(luid)){var event=iCalendar[luid];if(event.uid==uid){return event;}}}}}
return null;};})();(function(){var TMPL_SHORT_TOOLTIP=String.template("<b>$startTime &rarr; $endTime</b> — <em>$description</em>");var BASE=SwTask.inherits(SwEvent);function SwTask(args){if(args){SwEvent.call(this,args);}}
eval(Dynarch.EXPORT("SwTask"));D.DEFAULT_ARGS={};P.todoValidProperties=["due","completed","percentComplete"];P.get=function(aKey){var key=aKey;if(key=="due"&&this._data.syncSWorldCalComp.hasOwnProperty("dueYear")){if(this._data.dueInfoDateStr){return this._data.dueInfoDateStr;}
else{this.calculateDueDisplayValues(this._data.syncSWorldCalComp.dueTimeZone,this._data.syncSWorldCalComp.dueYear,this._data.syncSWorldCalComp.dueMonth,this._data.syncSWorldCalComp.dueDayOfMonth,this._data.syncSWorldCalComp.dueHourOfDay,this._data.syncSWorldCalComp.dueMinute,this._data.syncSWorldCalComp.dueSecond,true);return this._data.dueInfoDateStr;}}
else if(key=="completed"&&this._data.syncSWorldCalComp.hasOwnProperty("completedYear")){if(this._data.completedInfoDateStr&&this._data.completedInfoDateStr.length>0){return this._data.completedInfoDateStr;}
this.calculateCompletedDisplayValues(this._data.syncSWorldCalComp.completedTimeZone,this._data.syncSWorldCalComp.completedYear,this._data.syncSWorldCalComp.completedMonth,this._data.syncSWorldCalComp.completedDayOfMonth,this._data.syncSWorldCalComp.completedHourOfDay,this._data.syncSWorldCalComp.completedMinute,this._data.syncSWorldCalComp.completedSecond,true);return this._data.completedInfoDateStr;}
return BASE.get.call(this,aKey);};P.setDue=function(year,month,day,hourOfDay,minute,second,timeZone,noHooks,isAllDay){this._data.syncSWorldCalComp.dueYear=year;this._data.syncSWorldCalComp.dueMonth=month;this._data.syncSWorldCalComp.dueDayOfMonth=day;if(isAllDay){this._data.syncSWorldCalComp.dueIsDate=true;this._data.syncSWorldCalComp.dueHourOfDay=0;this._data.syncSWorldCalComp.dueMinute=0;this._data.syncSWorldCalComp.dueSecond=0;}
else{delete this._data.syncSWorldCalComp.dueIsDate;this._data.syncSWorldCalComp.dueHourOfDay=hourOfDay;this._data.syncSWorldCalComp.dueMinute=minute;this._data.syncSWorldCalComp.dueSecond=second;}
this._data.syncSWorldCalComp.dueTimeZone=timeZone;this.calculateDueDisplayValues(timeZone,year,month,day,hourOfDay,minute,second,noHooks);};P.calculateDueDisplayValues=function(dispTZ,dispYear,dispMonth,dispDayOfMonth,aDispHourOfDay,aDispMinute,aDispSecond,durationMinutes,noHooks){var anHourOfDay=parseInt(aDispHourOfDay,10);if(isNaN(anHourOfDay)){anHourOfDay=0;}
dispHourOfDay=anHourOfDay;if(swApp.syncSWorld.userSettingsDTO.ampm){if(dispHourOfDay>12){dispHourOfDay-=12;}}
var aMinute=parseInt(aDispMinute,10);if(isNaN(aMinute)){aMinute=0;}
var dispMinute=aMinute;var dispSecond=parseInt(aDispSecond,10);if(!aDispSecond){dispSecond=0;}
if(dispHourOfDay===0&&dispMinute===0){this._data.dueInfoDateStr=swApp.formatDate(dispYear,dispMonth,dispDayOfMonth);}
else{this._data.dueInfoDateStr=swApp.formatDate(dispYear,dispMonth,dispDayOfMonth)+" "+this._data.startHM;}};P.calculateDueDisplayValuesOLD=function(dispTZ,dispYear,dispMonth,dispDayOfMonth,aDispHourOfDay,aDispMinute,aDispSecond,durationMinutes,noHooks){var dispHourOfDay=parseInt(aDispHourOfDay,10);if(!aDispHourOfDay){dispHourOfDay=0;}
var dispMinute=parseInt(aDispMinute,10);if(!aDispMinute){dispMinute=0;}
var dispSecond=parseInt(aDispSecond,10);if(!aDispSecond){dispSecond=0;}
if(swApp.syncSWorld.userSettingsDTO.ampm){if(dispHourOfDay>12){dispHourOfDay-=12;}}
this._data.dueInfoDateStr=dispYear+'-';if(dispMonth<10){this._data.dueInfoDateStr+="0";}
this._data.dueInfoDateStr+=dispMonth+'-';if(dispDayOfMonth<10){this._data.dueInfoDateStr+="0";}
this._data.dueInfoDateStr+=dispDayOfMonth;};P.setCompleted=function(year,month,day,hourOfDay,minute,second,timeZone,noHooks){this._data.syncSWorldCalComp.completedYear=year;this._data.syncSWorldCalComp.completedMonth=month;this._data.syncSWorldCalComp.completedDayOfMonth=day;this._data.syncSWorldCalComp.completedHourOfDay=hourOfDay;this._data.syncSWorldCalComp.completedMinute=minute;this._data.syncSWorldCalComp.completedSecond=second;this._data.syncSWorldCalComp.completedTimeZone=timeZone;this.calculateCompletedDisplayValues(timeZone,year,month,day,hourOfDay,minute,second,noHooks);};P.calculateCompletedDisplayValues=function(dispTZ,dispYear,dispMonth,dispDayOfMonth,aDispHourOfDay,aDispMinute,aDispSecond,durationMinutes,noHooks){var anHourOfDay=parseInt(aDispHourOfDay,10);if(isNaN(anHourOfDay)){anHourOfDay=0;}
dispHourOfDay=anHourOfDay;if(swApp.syncSWorld.userSettingsDTO.ampm){if(dispHourOfDay>12){dispHourOfDay-=12;}}
var aMinute=parseInt(aDispMinute,10);if(isNaN(aMinute)){aMinute=0;}
var dispMinute=aMinute;var dispSecond=parseInt(aDispSecond,10);if(!aDispSecond){dispSecond=0;}
if(dispHourOfDay===0&&dispMinute===0){this._data.completedInfoDateStr=swApp.formatDate(dispYear,dispMonth,dispDayOfMonth);}
else{this._data.completedInfoDateStr=swApp.formatDate(dispYear,dispMonth,dispDayOfMonth)+" "+this._data.startHM;}};})();(function(){var BASE=SwTaskCache.inherits(SwEventCache);function SwTaskCache(args){if(args){SwEventCache.call(this,args);}}
eval(Dynarch.EXPORT("SwTaskCache"));D.DEFAULT_ARGS={_timeZoneID:["timeZoneID",null],_defaultCalendar:["defaultCalendar","default"]};P.defaultColumns=[{id:"calendarName",label:"Calendar",width:200},{id:"title",label:"Subject",width:200},{id:"categories",label:"Categories",width:200},{id:"listViewStart",label:"Start",width:130},{id:"due",label:"Due",width:130},{id:"completed",label:"Completed",width:130},{id:"percentComplete",label:"Percent Complete",width:100},{id:"location",label:"Location",width:100},{id:"priority",label:"Priority",width:100,visible:false},{id:"privacy",label:"Privacy",width:100,visible:false},{id:"status",label:"Status",width:100,visible:false},{id:"description",label:"Description",width:100,visible:false},{id:"url",label:"URL",width:100,visible:false},{id:"alarmOffset",label:"Alarm Offset",width:100,visible:false},{id:"alarmRelated",label:"Alarm Related",width:100,visible:false}];P.createCalObject=function(id,syncSWorldTask){var swTask=new SwTask({data:{id:id,syncSWorldCalComp:syncSWorldTask},recordSet:this});return swTask;};P.getCalModel=function(){return swApp.syncSWorld.swTodoModel;};P.insert=function(rec,noHooks){swApp.syncSWorld.insertTodoIntoModel(rec._data.syncSWorldCalComp,rec._data.syncSWorldCalComp.iCalendarID);if(swApp.loggingEnabled){swApp.log(this._objectType+" insert() id:"+
rec._data.id);}
this.insertNoSWorld(rec,noHooks);};P.getColumnsStorageKey=function(){return"taskColumnsKey";};P.getUsingUID=function(uid){for(var swtICalendarID in this._syncSWorld.swTodoModel){if(this._syncSWorld.swTodoModel.hasOwnProperty(swtICalendarID)){var iCalendar=this._syncSWorld.swTodoModel[swtICalendarID];for(var luid in iCalendar){if(iCalendar.hasOwnProperty(luid)){var todo=iCalendar[luid];if(todo.uid==uid){return todo;}}}}}
return null;};P.getLuidMStartsWith=function(luid){var result={};for(var k in this._data){if(k.indexOf(luid)!==0){continue;}
result[k]=this._data[k];}
return result;};P.getIDsUsingFilter=function(filter){var idL=[];var testStartDate=new Date();var testEndDate=new Date();if(filter=='next7Days'){testEndDate.setDate(testEndDate.getDate()+7);}
var taskObject={};taskObject.startYear=testStartDate.getFullYear();taskObject.startMonth=testStartDate.getMonth()+1;taskObject.startDayOfMonth=testStartDate.getDate();taskObject.startHourOfDay=0;taskObject.startMinute=0;taskObject.startSecond=0;taskObject.startTimeZone=swApp.taskCache.getTimeZone();taskObject.id=swApp.syncSWorld.getNextLUID();taskObject.brandNew=true;var startSwTodo=new SwTask({data:{id:taskObject.id,syncSWorldCalComp:taskObject}});taskObjectEnd={};taskObjectEnd.startYear=testEndDate.getFullYear();taskObjectEnd.startMonth=testEndDate.getMonth()+1;taskObjectEnd.startDayOfMonth=testEndDate.getDate();taskObjectEnd.startHourOfDay=23;taskObjectEnd.startMinute=59;taskObjectEnd.startSecond=59;taskObjectEnd.startTimeZone=swApp.taskCache.getTimeZone();taskObjectEnd.id=swApp.syncSWorld.getNextLUID();taskObjectEnd.brandNew=true;var endSwTodo=new SwTask({data:{id:taskObjectEnd.id,syncSWorldCalComp:taskObjectEnd}});var swTodo,swTodoM;for(var swtICalendarID in this._syncSWorld.swTodoModel){if(this._syncSWorld.swTodoModel.hasOwnProperty(swtICalendarID)){var iCalendar=this._syncSWorld.swTodoModel[swtICalendarID];for(var luid in iCalendar){if(iCalendar.hasOwnProperty(luid)){var todo=iCalendar[luid];swTodo=this.get(luid);if(swTodo){swTodoM={};swTodoM[luid]=swTodo;}
else{swTodoM=this.getLuidMStartsWith(luid);}
if(!swTodoM||propEmpty(swTodoM)){continue;}
for(var allLuid in swTodoM){if(swTodoM.hasOwnProperty(allLuid)){swTodo=swTodoM[allLuid];if(filter=='all'){idL.push(allLuid);continue;}
if(filter=='completed'&&(todo.percentComplete==100||todo.completedYear)){idL.push(allLuid);continue;}
if(filter=='incomplete'&&((!todo.percentComplete)||(todo.percentComplete!=100))&&(!todo.completedYear)){idL.push(allLuid);continue;}
if(filter=='notStarted'&&!todo.startYear&&(!todo.percentComplete||todo.percentComplete==0)){idL.push(allLuid);continue;}
if(filter=='notStarted'&&todo.startYear&&(!todo.percentComplete||todo.percentComplete==0)){var cmp=SwEvent.cmp_sortByTime(swTodo,startSwTodo);if(cmp>0){idL.push(allLuid);continue;}
continue;}
if(filter=='next7Days'||filter=='today'){if(!swTodo._data.syncSWorldCalComp.startYear){continue;}
var cmp=SwEvent.cmp_sortByTime(swTodo,startSwTodo);if(cmp<0){continue;}
cmp=SwEvent.cmp_sortByTime(swTodo,endSwTodo);if(cmp==1){continue;}
idL.push(allLuid);continue;}
if(filter=='overdue'&&todo.dueYear&&(todo.percentComplete!=100)&&(!todo.completedYear)){var cmp=SwEvent.cmp_sortByymdhms(todo.dueYear,todo.dueMonth,todo.dueDayOfMonth,todo.dueHourOfDay,todo.dueMinute,todo.dueSecond,taskObject.startYear,taskObject.startMonth,taskObject.startDayOfMonth,taskObject.startHour,taskObject.startMinute,taskObject.startSecond);if(cmp>0){continue;}
idL.push(allLuid);continue;}
if(filter=='hideFuture'){if(!swTodo._data.syncSWorldCalComp.startYear){idL.push(allLuid);continue;}
var cmp=SwEvent.cmp_sortByTime(swTodo,startSwTodo);if(cmp<0){idL.push(allLuid);continue;}}}}}}}}
return idL;};})();(function(){var BASE=SwAttendees.inherits(DlContainer);function SwAttendees(args){if(args){D.setDefaults(this,args);this._focusable=true;BASE.constructor.call(this,args);this.startListenerL=[];}}
eval(Dynarch.EXPORT("SwAttendees"));D.DEFAULT_ARGS={_title:["title","Attendees"],_expanded:["expanded",true],_buttons:["buttons",null],_swEvent:["swEvent",null]};var TITLE_CLASSES={active:"SwAttendees-title-active",hover:"SwAttendees-title-hover",checked:"SwAttendees-title-expanded",unchecked:"SwAttendees-title-collapsed",disabled:"SwAttendees-title-disabled"};P.initDOM=function(){BASE.initDOM.call(this);this._titleButton=new DlAbstractButton({parent:this,label:this._title,className:"SwAttendees-title",classes:TITLE_CLASSES,type:DlAbstractButton.TYPE.TWOSTATE,checked:this._expanded});this._titleButton.addEventListener("onChange",this.toggle.$(this));this._topCont=new DlContainer({parent:this,className:"SwAttendees-topCont"});this._mainCont=new DlContainer({parent:this._topCont,className:"SwAttendees-mainCont"});this._csEmailsLabel=new DlLabel({parent:this._mainCont,label:"Emails of invitees (separated by a comma)"});this._csEmails=new DlCompletionEntry({parent:this._mainCont,width:"99%",type:"textarea",rows:"4",className:"maxWidth"});var words=swApp.syncSWorld.getSwContactModelEmails();words.sort();this._csEmails.addEventListener("onCompletion",swApp.syncSWorld.completionHandler.$(this._csEmails,words));this._invitees=new SwColLayout({parent:this._mainCont});var content=String.buffer("<col class='label7'>","Invitees can",": <br /> <span class='help'>&nbsp;</span> </col> <col> <wcont>inviteOthers</wcont> <wcont>seeOtherInvitees</wcont> </col>");this.iIDs=this._invitees.setContent(content.get());this._linksBox=new DlHbox({parent:this._topCont,className:"SwAttendees-linksBox"});};P.postInitDOM=function(){this.inviteOthers=new DlCheckbox({parent:this._invitees,appendArgs:this.iIDs.inviteOthers,label:"Invite Others",checked:true});this.seeOtherInvitees=new DlCheckbox({parent:this._invitees,appendArgs:this.iIDs.seeOtherInvitees,label:"See Other Invitees",checked:true});};P.getMainContainer=function(){return this._mainCont;};P.setLeftLink=function(text){var btn=new DlAbstractButton({parent:this._linksBox,label:text,className:"SwAttendees-link"});return btn;};P.setRightLink=function(text){var btn=new DlAbstractButton({parent:this._linksBox,label:text,className:"SwAttendees-link"});btn.getElement().parentNode.style.textAlign="right";return btn;};P.toggle=function(){this._expanded=!this._expanded;this._topCont.display(this._expanded);this._titleButton.checked(this._expanded,true);};P.refreshView=function(swEvent){if(swEvent._data.syncSWorldCalComp.attendees){var value=String.buffer();for(var i=0;i<swEvent._data.syncSWorldCalComp.attendees.length;++i){var attendee=swEvent._data.syncSWorldCalComp.attendees[i];value(attendee.id);if(i<(swEvent._data.syncSWorldCalComp.attendees.length+1)){value(",");}}
this._csEmails.setValue(value.get());}};P.saveToEvent=function(event){var text=this._csEmails.getValue();var emailL=text.split(",");var emailH=emailL.toHash();var email;var found={};var attendee;if(event.attendees){for(var i=0;i<event.attendees.length;++i){attendee=event.attendees[i];if(emailH.hasOwnProperty(attendee.id)){found[attendee.id]=attendee;delete emailH[attendee.id];}}}
event.attendees=[];for(var id in found){if(found.hasOwnProperty(id)){email=found[id];if(email.length>0){event.attendees.push(found[id]);}}}
for(email in emailH){if(emailH.hasOwnProperty(email)){if(email.length===0){continue;}
attendee={};attendee.id=email;attendee.rsvp=true;event.attendees.push(attendee);}}
event.inviteOthers=this.inviteOthers.checked();event.seeOtherInvitees=this.seeOtherInvitees.checked();};})();(function(){var BASE=SwOptions.inherits(DlContainer);function SwOptions(args){if(args){D.setDefaults(this,args);this._focusable=true;BASE.constructor.call(this,args);this.startListenerL=[];}}
eval(Dynarch.EXPORT("SwOptions"));D.DEFAULT_ARGS={_title:["title","Options"],_expanded:["expanded",true],_buttons:["buttons",null],_swEvent:["swEvent",null]};var TITLE_CLASSES={active:"SwOptions-title-active",hover:"SwOptions-title-hover",checked:"SwOptions-title-expanded",unchecked:"SwOptions-title-collapsed",disabled:"SwOptions-title-disabled"};P.initDOM=function(){BASE.initDOM.call(this);this._titleButton=new DlAbstractButton({parent:this,label:this._title,className:"SwOptions-title",classes:TITLE_CLASSES,type:DlAbstractButton.TYPE.TWOSTATE,checked:this._expanded});this._titleButton.addEventListener("onChange",this.toggle.$(this));this._topCont=new DlContainer({parent:this,className:"SwOptions-topCont"});this._mainCont=new DlContainer({parent:this._topCont,className:"SwOptions-mainCont"});var vbox=new DlVbox({parent:this._mainCont});this._reminder=new DlLabel({parent:vbox,label:"<b>Alarm / Reminder</b> (SMS and Audio are exclusive)"});this.reminderVbox=new DlVbox({parent:vbox});this._noRemindersSet=new DlLabel({parent:this.reminderVbox,label:"No reminders set",className:"SwOptions-help"});this._addReminder=new DlLabel({parent:vbox,label:"Add an alarm/reminder",className:"SwOptions-link"});this._addReminder.addEventListener("onClick",this.createReminder.$(this));this._sep1=new DlContainer({parent:vbox});var showMe=new DlHbox({parent:vbox});this.showMeLabel=new DlLabel({parent:showMe,label:"<b>Show me as</b>"});var showMeGroup=DlRadioGroup.get();this._available=new DlRadioButton({parent:showMe,group:showMeGroup,label:"Available",checked:false});this._busy=new DlRadioButton({parent:showMe,group:showMeGroup,label:"Busy",checked:true});this._privacy=new SwColLayout({parent:vbox});var content=String.buffer("<sep/>","<col class='label5'>","Privacy","</col><col> <wcont>This event is</wcont> <wcont>publicDl</wcont> <wcont>confidentialDl</wcont> <wcont>privateDl</wcont> </col>","<sep/>");this.iIDs=this._privacy.setContent(content.get());this._linksBox=new DlHbox({parent:this._topCont,className:"SwOptions-linksBox"});};P.createReminder=function(ev,alarm){var childNum=this.reminderVbox.children().length;if(childNum===4){alert("Only 3 reminders are allowed (one of each type).");return;}
if(childNum===3){this._addReminder.display(false);}
this._noRemindersSet.display(false);var w=new DlHbox({});var swOptionsReminder=new SwOptionsReminder({parent:w,alarm:alarm});swOptionsReminder.refreshView();var removeLabel=new DlLabel({parent:w,label:"remove",className:"SwOptions-link"});removeLabel.setData("removeWidget",w);removeLabel.addEventListener("onClick",function(){this._addReminder.display(true);var w=removeLabel.getData("removeWidget");this.reminderVbox.removeWidget(w);w.destroyChildWidgets();w.destroy();if(this.reminderVbox.children().length===1){this._noRemindersSet.display(true);}}.$(this));this.reminderVbox.appendWidget(w);};P.postInitDOM=function(){var privacyGroup=DlRadioGroup.get();this.confidentialDl=new DlRadioButton({parent:this._privacy,appendArgs:this.iIDs.confidentialDl,label:"Confidential",group:privacyGroup,checked:true});this.privateDl=new DlRadioButton({parent:this._privacy,appendArgs:this.iIDs.privateDl,label:"Private",group:privacyGroup,checked:true});this.publicDl=new DlRadioButton({parent:this._privacy,appendArgs:this.iIDs.publicDl,label:"Public",group:privacyGroup,checked:true});var html=String.buffer("<table class='SwColLayout-topTable'>","<tr/><tr class='SwColLayout-separator'><td colspan='2'><div>&nbsp;</div></td></tr><tr/></table>");var sep=DynarchDomUtils.createFromHtml(html.get());this._sep1.getContentElement().appendChild(sep);};P.getMainContainer=function(){return this._mainCont;};P.setLeftLink=function(text){var btn=new DlAbstractButton({parent:this._linksBox,label:text,className:"SwOptions-link"});return btn;};P.setRightLink=function(text){var btn=new DlAbstractButton({parent:this._linksBox,label:text,className:"SwOptions-link"});btn.getElement().parentNode.style.textAlign="right";return btn;};P.toggle=function(){this._expanded=!this._expanded;this._topCont.display(this._expanded);this._titleButton.checked(this._expanded,true);};P.refreshView=function(swEvent){var i;var childrenL=this.reminderVbox.children();for(i=0;i<childrenL.length;++i){var child=childrenL[i];if(child.getWidgetId()==this._noRemindersSet.getWidgetId()){continue;}
this.reminderVbox.removeWidget(child);child.destroy();if(childrenL.length==1){break;}
i=0;}
this._noRemindersSet.display(true);this._addReminder.display(true);if(swEvent._data.syncSWorldCalComp.alarms){for(i=0;i<swEvent._data.syncSWorldCalComp.alarms.length;++i){var alarm=swEvent._data.syncSWorldCalComp.alarms[i];this.createReminder(null,alarm);}}
if(swEvent._data.syncSWorldCalComp.timeTransparency=="OPAQUE"){this._available.checked(false);this._busy.checked(true);}
else if(swEvent._data.syncSWorldCalComp.timeTransparency=="TRANSPARENT"){this._available.checked(true);this._busy.checked(false);}
else{this._available.checked(false);this._busy.checked(true);}
if(swEvent._data.syncSWorldCalComp.privacy=="PUBLIC"){this.confidentialDl.checked(false);this.privateDl.checked(false);this.publicDl.checked(true);}
else if(swEvent._data.syncSWorldCalComp.privacy=="PRIVATE"){this.confidentialDl.checked(false);this.privateDl.checked(true);this.publicDl.checked(false);}
else if(swEvent._data.syncSWorldCalComp.privacy=="CONFIDENTIAL"){this.confidentialDl.checked(true);this.privateDl.checked(false);this.publicDl.checked(false);}
else{this.confidentialDl.checked(true);this.privateDl.checked(false);this.publicDl.checked(false);}};P.saveToEvent=function(event){var alarmType={};var i;var j;var children=this.reminderVbox.children();var child;var hBoxChildren;var hChild;for(i=0;i<children.length;++i){child=children[i];if(child instanceof DlHbox){hBoxChildren=child.children();for(j=0;j<hBoxChildren.length;++j){hChild=hBoxChildren[j];if(hChild instanceof SwOptionsReminder){if(alarmType.hasOwnProperty(hChild.getType())){throw("Only one 'audio', 'email', or 'Google SMS' alarm type is allowed.");}
if(hChild.getType()!="display"){alarmType[hChild.getType()]=true;}}}}}
if(this._available.checked()){event.timeTransparency="TRANSPARENT";}
else{event.timeTransparency="OPAQUE";}
if(this.publicDl.checked()){event.privacy="PUBLIC";}
else if(this.privateDl.checked()){event.privacy="PRIVATE";}
else if(this.confidentialDl.checked()){event.privacy="CONFIDENTIAL";}
var savedAlarms=event.alarms;event.alarms=[];children=this.reminderVbox.children();for(i=0;i<children.length;++i){child=children[i];if(child instanceof DlHbox){hBoxChildren=child.children();for(j=0;j<hBoxChildren.length;++j){hChild=hBoxChildren[j];if(hChild instanceof SwOptionsReminder){hChild.saveToEvent(event,savedAlarms);}}}}};})();(function(){var BASE=SwOptionsReminder.inherits(DlContainer);function SwOptionsReminder(args){if(args){D.setDefaults(this,args);this._focusable=true;BASE.constructor.call(this,args);this.startListenerL=[];}}
eval(Dynarch.EXPORT("SwOptionsReminder"));D.DEFAULT_ARGS={_alarm:["alarm",null]};P.initDOM=function(){BASE.initDOM.call(this);var hbox=new DlHbox({parent:this});this.typeOptions=[{label:"Display",value:"display"},{label:"Audio",value:"audio"},{label:"Email",value:"email"},{label:"Google SMS",value:"googleSMS"}];this.typeSelect=new DlRadioSelect({parent:hbox,options:this.typeOptions,value:"display"});hbox.addSpace();this.numValidator=new DlValidator(DlValidator.Number,0,99,true,0);this.numEntry=new DlEntry({parent:hbox,value:"10",validators:[this.numValidator],width:"2em"});hbox.addSpace();this.durationOptions=[{label:"minutes",value:"minutes"},{label:"hours",value:"hours"},{label:"days",value:"days"},{label:"weeks",value:"weeks"}];this.durationSelect=new DlRadioSelect({parent:hbox,options:this.durationOptions,value:"minutes"});hbox.addSpace();};P.getType=function(){return this.typeSelect.getValue();};P.refreshView=function(){if(!this._alarm){this.typeSelect.setValue("display");this.numEntry.setValue(10);this.durationSelect.setValue("minutes");return;}
this.typeSelect.setValue(this._alarm.type);if(this._alarm.durationWeek){this.numEntry.setValue(this._alarm.durationWeek);this.durationSelect.setValue("weeks");}
else if(this._alarm.durationDay){this.numEntry.setValue(this._alarm.durationDay);this.durationSelect.setValue("days");}
else if(this._alarm.durationHour){this.numEntry.setValue(this._alarm.durationHour);this.durationSelect.setValue("hours");}
else if(this._alarm.durationMinute){this.numEntry.setValue(this._alarm.durationMinute);this.durationSelect.setValue("minutes");}};P.saveToEvent=function(event,savedAlarms){var savedAlarm;if(this._alarm){for(var i=0;i<savedAlarms.length;++i){savedAlarm=savedAlarms[i];if(this._alarm.compID&&(this._alarm.compID===savedAlarm.compID)){this.copyTo(savedAlarm,event.iCalendarID);event.alarms.push(savedAlarm);return;}}}
var alarm={};this.copyTo(alarm,event.iCalendarID);event.alarms.push(alarm);};P.copyTo=function(destAlarm,iCalendarID){destAlarm.type=this.typeSelect.getValue();var dur=this.durationSelect.getValue();if(dur=="weeks"){destAlarm.durationWeek=this.numEntry.getValue();}
else{delete destAlarm.durationWeek;}
if(dur=="days"){destAlarm.durationDay=this.numEntry.getValue();}
else{delete destAlarm.durationDay;}
if(dur=="hours"){destAlarm.durationHour=this.numEntry.getValue();}
else{delete destAlarm.durationHour;}
if(dur=="minutes"){destAlarm.durationMinute=this.numEntry.getValue();}
else{delete destAlarm.durationMinute;}
if(destAlarm.type=="email"){var iCalendarInfo;var emailL=[];for(var i=0;i<swApp.syncSWorld.userSettingsDTO.ICalendarInfoL.length;++i){iCalendarInfo=swApp.syncSWorld.userSettingsDTO.ICalendarInfoL[i];if(iCalendarInfo.ICalendarID==iCalendarID){destAlarm.emails=iCalendarInfo.ownerEmail;break;}}}};})();(function(){var BASE=SwContact.inherits(DlRecord);function SwContact(args){if(args){DlRecord.call(this,args);}}
eval(Dynarch.EXPORT("SwContact"));D.DEFAULT_ARGS={};P.belongsToGroupID=function(groupID){if(!swApp.syncSWorld.groupIDCalUserIDSM){return false;}
var calUserIDs=swApp.syncSWorld.groupIDCalUserIDSM[groupID];if(!calUserIDs){return false;}
var calUserID=parseInt(this._data.syncSWorldContact.swId,10);var result=containsNum(calUserIDs,calUserID);if(result===true){return true;}
result=containsNum(calUserIDs,calUserID*-1);if(result===true){return true;}
return false;};P.canWriteGroupID=function(groupID){if(!swApp.syncSWorld.groupIDCalUserIDSM){return false;}
var calUserIDs=swApp.syncSWorld.groupIDCalUserIDSM[groupID];if(!calUserIDs){return false;}
var calUserID=parseInt(this._data.syncSWorldContact.swId,10);var result=containsNum(calUserIDs,calUserID);if(result===true){return true;}
return false;};D.getGroupName=function(groupID){if(!swApp.syncSWorld.groupIDNameM){return null;}
return swApp.syncSWorld.groupIDNameM[groupID];};D.getGroupID=function(groupName){var groupIDNameM=swApp.syncSWorld.groupIDNameM;if(!groupIDNameM){return null;}
for(var groupID in groupIDNameM){if(groupIDNameM.hasOwnProperty(groupID)){var existingGroupName=groupIDNameM[groupID];if(existingGroupName==groupName){return groupID;}}}
return null;};D.getAllGroups=function(){return swApp.syncSWorld.groupIDNameM;};D.setGroupID=function(groupID,groupName){swApp.syncSWorld.groupIDNameM[groupID]=groupName;swApp.syncSWorld.saveGroupIDNameM();};D.setCategoryGroupID=function(category,groupID){var delCategories=[];var tmpGroupID;for(var categoryKey in swApp.syncSWorld.categoryGroupIDM){if(swApp.syncSWorld.categoryGroupIDM.hasOwnProperty(categoryKey)){tmpGroupID=swApp.syncSWorld.categoryGroupIDM[categoryKey];if(groupID==tmpGroupID){delCategories.push(categoryKey);}}}
var i=0;for(i=0;i<delCategories.length;++i){delete swApp.syncSWorld.categoryGroupIDM[delCategories[i]];}
swApp.syncSWorld.categoryGroupIDM[category]=groupID;swApp.syncSWorld.saveCategoryGroupIDM();};D.setGroupIDCalUserIDS=function(groupID,swIds){var idL=swIds.split(",");var idOnlyL=[];var swId;for(var i=0;i<idL.length;++i){swId=idL[i];if(swId.indexOf("@")>0){continue;}
if(swId&&swId.length>0){idOnlyL.push(swId);}}
if(!swApp.syncSWorld.groupIDCalUserIDSM){swApp.syncSWorld.groupIDCalUserIDSM={};}
swApp.syncSWorld.groupIDCalUserIDSM[groupID]=idOnlyL;swApp.syncSWorld.saveGroupIDCalUserIDSM();};D.removeGroupID=function(groupID){delete swApp.syncSWorld.groupIDNameM[groupID];swApp.syncSWorld.saveGroupIDNameM();};D.addGroupSwIds=function(groupID,contactSwIds){};D.getAllGroupNames=function(){var groupIDNameM=swApp.syncSWorld.groupIDNameM;var groupNames=[];if(!groupIDNameM){return groupNames;}
for(var groupID in groupIDNameM){if(groupIDNameM.hasOwnProperty(groupID)){groupNames.push(groupIDNameM[groupID]);}}
return groupNames;};D.getGroupUserIDs=function(groupID){if(!swApp.syncSWorld.groupIDCalUserIDSM){return[];}
var calUserIDs=swApp.syncSWorld.groupIDCalUserIDSM[groupID];if(calUserIDs){return calUserIDs;}
return[];};D.isSwIdInGroup=function(swId,group){var groupID=this.getGroupID(group);if(!swApp.syncSWorld.groupIDCalUserIDSM){return false;}
var calUserIDs=swApp.syncSWorld.groupIDCalUserIDSM[groupID];if(calUserIDs){if(containsNum(calUserIDs,swId)===true){return true;}
else if(containsNum(calUserIDs,(Math.abs(swId)))===true){return true;}}
return false;};D.addSwIdToGroupID=function(swId,groupID){if(!swApp.syncSWorld.groupIDCalUserIDSM){swApp.syncSWorld.groupIDCalUserIDSM={};}
var calUserIDs=swApp.syncSWorld.groupIDCalUserIDSM[groupID];if(!calUserIDs){calUserIDs=[];swApp.syncSWorld.groupIDCalUserIDSM[groupID]=calUserIDs;}
calUserIDs.push(swId);};D.getInviteGroupIDs=function(email){if(!swApp.syncSWorld.inviteEmailGroupIDSM){return[];}
var calUserIDs=swApp.syncSWorld.inviteEmailGroupIDSM[groupID];if(calUserIDs){return calUserIDs;}
return[];};D.getCategoryGroupID=function(category){if(!swApp.syncSWorld.categoryGroupIDM){return null;}
var groupID=swApp.syncSWorld.categoryGroupIDM[category];return groupID||null;};D.getCategoryGroup=function(category){if(!swApp.syncSWorld.categoryGroupIDM){return category;}
var groupID=swApp.syncSWorld.categoryGroupIDM[category];if(groupID){var group=swApp.syncSWorld.groupIDNameM[groupID];if(group&&group.length>0){return group;}}
return category;};D.getGroupIDCategory=function(testGroupID){if(!swApp.syncSWorld.categoryGroupIDM){return SwContact.getGroupName(testGroupID);}
var groupID;for(var category in swApp.syncSWorld.categoryGroupIDM){if(swApp.syncSWorld.categoryGroupIDM.hasOwnProperty(category)){groupID=swApp.syncSWorld.categoryGroupIDM[category];if(groupID==testGroupID){return category;}}}
return SwContact.getGroupName(testGroupID);};P.set=function(aKey,value,noHooks,setSWorldModel){var key=aKey;if(key=="id"){var val=BASE.get.call(this,key);if(val){throw("Contact id is immutable and can not be changed to:"+
value);}}
this._data.syncSWorldContact[key]=value;this._data.syncSWorldContact.dirty=true;noHooks=false;return BASE.set.call(this,key,value,noHooks);};P.get=function(key){if(key=="id"){return this._data.id;}
if(key=="mail"){return this._set._syncSWorld.getEmail(this._data.syncSWorldContact.mail);}
if(key=="mailto"){return this._set._syncSWorld.getMailtoURI(this._data.syncSWorldContact.mail);}
var value=this._data.syncSWorldContact[key];if(!value){value="";}
return value;};P.hasEmail=function(anEmail){var allEmails=this._set._syncSWorld.getEmail(this._data.syncSWorldContact.mail).toLowerCase();var emailTest=anEmail.toLowerCase();if(allEmails.indexOf(emailTest)<0){return false;}
return true;};P.compareTo=function(rec,col){var a=this.get(col);if(a&&a.toLowerCase){a=a.toLowerCase();}
var b=rec.get(col);if(b&&b.toLowerCase){b=b.toLowerCase();}
return a<b?-1:a==b?0:1;};P.getFullName=function(){var initials=this.get("initials");var result=String.buffer();var givenName=this.get("givenName");if(givenName){result(givenName);result(" ");}
if(initials&&initials.length>0){result(initials[0]);result(" ");}
if(initials&&initials.length>1){result(initials[1]);result(" ");}
var sn=this.get("sn");if(sn){result(sn);}
return result.get();};P.getTitle=function(){return this.get("displayName");};P.getEmail=function(){return this.get("mail");};P.getMailToURI=function(){return this.get("mailto");};P.getEmailWithName=function(email){if(email==null){email=0;}
if(typeof email=="number"){email=this.getEmailArray()[email];}
var name=this.getTitle()||getFullName();name=name.trim();if(name){email=name+" <"+email+">";}
return email;};P.getFullAddress=P.getEmailWithName;P.getEmailArray=function(){var mail=this._data.syncSWorldContact.mail;if(!mail){return[];}
if(mail instanceof Array){return mail.map(function(v){if(v.value){v=v.value;}
if(v.indexOf("@")<0){$CONTINUE();}
return v;});}
if(mail.value){mail=mail.value;}
return[mail];};P.getPhone=function(){var phoneProps=["primaryPhone","mobile","telephoneNumber","assistantPhone","companyPhone","homePhone","IPPhone","otherPhone","carPhone"];for(var i=0;i<phoneProps.length;++i){var phone=this.get(phoneProps[i]);if(phone&&typeof phone.htmlEscape=='function'){return"<a href='callto://"+phone.htmlEscape()+"'>"+phone.htmlEscape()+"</a>";}}
return"";};P.isSWUser=function(){if(this._data.syncSWorldContact.hasOwnProperty("swId")){return true;}
return false;};P.getSWID=function(){if(this._data.syncSWorldContact.hasOwnProperty("swId")){return this._data.syncSWorldContact.swId;}
return null;};P.get170IconURL=function(){var url=null;if(this._data.syncSWorldContact.jpegPhoto){url="/sw2/get170?c="+
this._data.syncSWorldContact.guid+"&lm="+this._data.syncSWorldContact.jpegPhoto;}
else{url="/sw2/images/crystal/personal170.png";}
return url;};P.getIconURL=function(){if(!this._data.syncSWorldContact.jpegPhoto){return"/sw2/images/crystal/personal.png";}
var url="/sw2/get48?c="+
this._data.syncSWorldContact.guid+"&lm="+this._data.syncSWorldContact.jpegPhoto;return url;};P.setCallto=function(buf,values){if(!values){return;}
var valueL=values.split(",");var value;for(var i=0;i<valueL.length;++i){if(i>0){buf(",");}
value=valueL[i].htmlEscape();buf("<a href='callto://"+value+"'>"+value+"</a>");}};P.getHTML=function(col,buf){var value;if(col=="mail"){value=this.get("mail").htmlEscape();buf(value);}else if(col=="mailto"){value=this.get(col).toString();buf(value);}else if(col=="telephoneNumber"){value=this.get(col).toString().htmlEscape();this.setCallto(buf,value);}else if(col=="homePhone"){value=this.get(col).toString().htmlEscape();this.setCallto(buf,value);}else if(col=="assistantPhone"){value=this.get(col).toString().htmlEscape();this.setCallto(buf,value);}else if(col=="callbackPhone"){value=this.get(col).toString().htmlEscape();this.setCallto(buf,value);}else if(col=="carPhone"){value=this.get(col).toString().htmlEscape();this.setCallto(buf,value);}else if(col=="companyPhone"){value=this.get(col).toString().htmlEscape();this.setCallto(buf,value);}else if(col=="otherPhone"){value=this.get(col).toString().htmlEscape();this.setCallto(buf,value);}else if(col=="primaryPhone"){value=this.get(col).toString().htmlEscape();this.setCallto(buf,value);}else if(col=="mobile"){value=this.get(col).toString().htmlEscape();this.setCallto(buf,value);}else if(col=="linked"){value="N";var linked=this.get(col);if(linked&&linked.length>0){value="Y";}
buf(value);}else if(col=="perm"){value="R/W";if(this.get("readOnly")=="true"){value="R/O";}
buf(value);}else{value=this.get(col);if(value instanceof Array){value=value.join(",").htmlEscape();buf(value);}
else{value=value.toString().htmlEscape();buf(value);}}};})();(function(){var BASE=SwContactCache.inherits(DlRecordCache);function SwContactCache(args){if(args){D.setDefaults(this,args);DlRecordCache.call(this,args);}}
eval(Dynarch.EXPORT("SwContactCache"));D.DEFAULT_ARGS={_syncSWorld:["syncSWorld",null]};P.defaultColumns=[{id:"nsAIMid",label:"AIM",width:100,visible:false},{id:"anniversary",label:"Anniversary",width:100,visible:false},{id:"assistantName",label:"Assistant",width:100,visible:false},{id:"assistantPhone",label:"Assistant Phone",width:100,visible:false},{id:"birthDate",label:"Birthday",width:100,visible:false},{id:"blogURL",label:"Blog URL",width:100,visible:false},{id:"calCalURI",label:"calCalURI",width:100,visible:false},{id:"calFBURL",label:"calFBURL",width:100,visible:false},{id:"calCAPURI",label:"calCAPURI",width:100,visible:false},{id:"calCalAdrURI",label:"calCalAdrURI",width:100,visible:false},{id:"calOtherCalURIs",label:"calOtherCalURIs",width:100,visible:false},{id:"calOtherFBURLs",label:"calOtherFBURLs",width:100,visible:false},{id:"calOtherCAPRUIs",label:"calOtherCAPRUIs",width:100,visible:false},{id:"calOtherCalAdrURIs",label:"calOtherCalAdrURIs",width:100,visible:false},{id:"callbackPhone",label:"Callback",width:100,visible:false},{id:"carPhone",label:"Car Phone",width:100,visible:false},{id:"category",label:"Categories",width:100},{id:"o",label:"Company",width:100,visible:false},{id:"companyPhone",label:"Company Phone",width:100,visible:false},{id:"departmentNumber",label:"Department",width:100,visible:false},{id:"description",label:"Description",width:100,visible:false},{id:"displayName",label:"Display Name",width:150},{id:"mailto",label:"Email",width:200},{id:"facebookId",label:"Facebook Id",width:100,visible:false},{id:"givenName",label:"First Name",width:100},{id:"gizmoId",label:"Gizmo",width:100,visible:false},{id:"googletalk",label:"Google Talk",width:100,visible:false},{id:"groupwise",label:"GroupWise",width:100,visible:false},{id:"mozillaHomeLocalityName",label:"Home City",width:100,visible:false},{id:"mozillaHomeCountryName",label:"Home Country",width:100,visible:false},{id:"homeFacsimileTelephoneNumber",label:"Home Fax",width:100,visible:false},{id:"homePhone",label:"Home Phone",width:100},{id:"postOfficeBox",label:"Home PO Box",width:100,visible:false},{id:"mozillaHomePostalCode",label:"Home Postal",width:100,visible:false},{id:"mozillaHomeState",label:"Home State",width:100,visible:false},{id:"homePostalAddress",label:"Home Street",width:100,visible:false},{id:"mozillaHomePostalAddress2",label:"Home Street2",width:100,visible:false},{id:"homeurl",label:"Home URL",width:100,visible:false},{id:"icq",label:"ICQ",width:100,visible:false},{id:"IPPhone",label:"VoIP (IP/SIP) Phone",width:100,visible:false},{id:"internationaliSDNNumber",label:"ISDN",width:100,visible:false},{id:"jabber",label:"Jabber Server",width:100,visible:false},{id:"sn",label:"Last Name",width:100},{id:"lastSync",label:"Last Modified",width:100,visible:false},{id:"dirserver",label:"LDAP Server",width:100,visible:false},{id:"linked",label:"Link",width:30,visible:false},{id:"initials",label:"Middle",width:100,visible:false},{id:"managerName",label:"Manager Name",width:100,visible:false},{id:"mobile",label:"Mobile Phone",width:100,visible:false},{id:"msn",label:"MSN Messenger",width:100,visible:false},{id:"netmeeting",label:"NetMeeting",width:100,visible:false},{id:"xmozillanickname",label:"Nickname",width:100,visible:false},{id:"physicalDeliveryOfficeName",label:"Office",width:100,visible:false},{id:"otherCity",label:"Other City",width:100,visible:false},{id:"otherCountry",label:"Other Country",width:100,visible:false},{id:"otherFacsimileTelephoneNumber",label:"Other Fax",width:100,visible:false},{id:"otherPhone",label:"Other Phone",width:100,visible:false},{id:"otherPostOfficeBox",label:"Other PO Box",width:100,visible:false},{id:"otherPostalCode",label:"Other Postal",width:100,visible:false},{id:"otherRegion",label:"Other State",width:100,visible:false},{id:"otherPostalAddress",label:"Other Street",width:100,visible:false},{id:"pager",label:"Pager",width:100,visible:false},{id:"perm",label:"Perm",width:40,visible:false},{id:"jpegPhoto",label:"Photo",width:100,visible:false},{id:"personalTitle",label:"Prefix",width:100,visible:false},{id:"primaryPhone",label:"Primary Phone",width:100,visible:false},{id:"businessRole",label:"Profession",width:100,visible:false},{id:"radio",label:"Radio",width:100,visible:false},{id:"skype",label:"Skype",width:100,visible:false},{id:"spouseName",label:"Spouse",width:100,visible:false},{id:"suffix",label:"Suffix",width:100,visible:false},{id:"swId",label:"SW Id",width:100,visible:false},{id:"title",label:"Title",width:100,visible:false},{id:"twitter",label:"Twitter",width:100,visible:false},{id:"tz",label:"Time Zone",width:100,visible:false},{id:"c",label:"Work Country",width:100,visible:false},{id:"l",label:"Work City",width:100,visible:false},{id:"facsimileTelephoneNumber",label:"Work Fax",width:100,visible:false},{id:"telephoneNumber",label:"Work Phone",width:100},{id:"postalCode",label:"Work Postal",width:100,visible:false},{id:"st",label:"Work State",width:100,visible:false},{id:"postalAddress",label:"Work Street",width:100,visible:false},{id:"workurl",label:"Work URL",width:100,visible:false},{id:"yahoo",label:"Yahoo",width:100,visible:false}];P.getColumns=function(){if(!this.loadedColumns){var columnsKey=this.getColumnsStorageKey();this.loadedColumns=this._syncSWorld.loadObject(columnsKey);}
if(this.loadedColumns instanceof Array&&this.loadedColumns.length>0){return this.loadedColumns.slice();}
return this.defaultColumns.slice();};P.clear=function(){var IDL=this.getIDs();if(IDL.length===0){return;}
var tmpID;this.callHooks("onDelete",IDL);for(var i=0;i<IDL.length;++i){tmpID=IDL[i];delete this._data[tmpID];}};P.getByLetter=function(letter){var a=[];var re=new RegExp("^"+letter,"i");var reNotWord=new RegExp("^\\W");for(var i in this._data){if(this._data.hasOwnProperty(i)){var c=this._data[i];var val=c.get("sn");if(!val){val=c.get("givenName");}
if(!val){val=c.get("displayName");}
if(!val){continue;}
if(letter=="!"){if(reNotWord.test(val)){a.push(c);}}
else if(re.test(val)){a.push(c);}}}
return a;};P.swIDs2Luids=function(swIds){if(swIds instanceof Array){swIds=swIds.toHash(true);}
var swIDL=[];var recL=this.getAllRecords();if(recL){for(var swId in swIds){if(swIds.hasOwnProperty(swId)){var absSwId=Math.abs(swId);for(var i=0;i<recL.length;++i){var rec=recL[i];if(rec.getSWID()==absSwId){swIDL.push(rec.get("id"));}}}}}
return swIDL;};P.getSwIDs=function(contactLuids){var swIds=[];for(var i=0;i<contactLuids.length;++i){var contact=this.get(contactLuids[i]);if(contact.hasOwnProperty("swId")){swIds.push(contact.swId);}
else{swIds.push(contact.getEmail());}}
return swIds;};P.getByEmail=function(email){email=email.toLowerCase();for(var i in this._data){var rec=this._data[i];if(rec.getEmail().toLowerCase().indexOf(email)>=0){return rec;}}};P.isEmpty=function(){if(!this._data){return true;}
for(var key in this._data){if(this._data.hasOwnProperty(key)){return false;}}
return true;};P.formatHTML=function(rec,col,buf){return rec.getHTML(col,buf);};P.getIDs=function(){var ids=[];for(var key in this._data){if(this._data.hasOwnProperty(key)){ids.push(key);}}
return ids;};P.initDataFromSyncSWorld=function(){var model=this._syncSWorld.swContactModel;if(!model){return;}
for(var contactLUID in model){if(model.hasOwnProperty(contactLUID)){var contactData=model[contactLUID];this.syncSWorldContactAdded(true,contactData);}}};P.syncSWorldContactAdded=function(noHooks,contactObject){var swContact=new SwContact({data:{id:contactObject.id,syncSWorldContact:contactObject}});this.insert(swContact,noHooks);};P.syncSWorldContactUpdated=function(noHooks,contact){var swContact=this.get(contact.id);swContact._data.syncSWorldContact=contact;};P.syncSWorldContactDeleted=function(noHooks,luid){this.removeUsingID(luid,noHooks);};P.syncSWorldContactDeleteAll=function(){var ids=this.getIDs();this.removeUsingID(ids,true);};P.insert=function(swContact,noHooks){this._data[swContact.id()]=swContact;swContact._set=this;if(noHooks){return;}
var where=this.getInsertPos(swContact);this.applyHooks("onInsert",[swContact,where]);};P.removeUsingContact=function(swContact,noCallHooks){delete this._data[swContact.id()];if(!noCallHooks){this.callHooks("onDelete",swContact.id());}};P.removeUsingID=function(swContactID,noCallHooks){this.remove(swContactID);};P.removeUsingIDOLD=function(swContactID,noCallHooks){if(swContactID instanceof Array){for(var i=0;i<swContactID.length;++i){var id=swContactID[i];if(i==swContactID.length-1){if(!noCallHooks){this.callHooks("onDelete",id);}
else{delete this._data[id];}}
else{delete this._data[id];}}}
else{delete this._data[swContactID];if(!noCallHooks){this.callHooks("onDelete",swContactID);}}};P._init=function(){D.BASE._init.call(this);};P.removeWithDialog=function(id,noSyncAfterRemove){var swContact=null;var title="Delete Contact";var content="";if(id instanceof Array){title="Delete Multiple Contacts";var buffer=String.buffer();buffer("<textarea type='textarea' rows='8' style='width: 100%'>");for(var i=0;i<id.length;++i){swContact=this.get(id[i]);buffer(swContact._data.syncSWorldContact.displayName+"\n");}
buffer("</textarea>");content=buffer.get();}
else{swContact=this.get(id);content="<div style='padding: 20px'><b>Delete contact: "+
swContact._data.syncSWorldContact.displayName+"</b></div>";}
var questionDlg=null;var cont=null;var box=null;var no=null;questionDlg=new DlDialog({modal:false,title:title,quitBtn:"destroy"});cont=new DlContainer({parent:questionDlg});cont.getElement().style.padding="20px";cont.setSize({x:400});cont.setContent(content);box=new DlHbox({parent:questionDlg,borderSpacing:5});box.setAlign("center");var deleteContact=new DlButton({parent:box,label:swApp.i18n("Delete").fixedWidth("9em")});var no=new DlButton({parent:box,label:swApp.i18n("Cancel").fixedWidth("5em")});deleteContact.addEventListener("onClick",function(){questionDlg.destroy();if(id instanceof Array){for(var i=0;i<id.length;++i){swContact=this.get(id[i]);if(i==id.length-1){this._syncSWorld.removeContactFromModel(swContact._data.syncSWorldContact,true);}
else{this._syncSWorld.removeContactFromModel(swContact._data.syncSWorldContact,false);}}}
else{this._syncSWorld.removeContactFromModel(swContact._data.syncSWorldContact,true);}
swApp.contactCache.removeUsingID(id);if(!noSyncAfterRemove){this._syncSWorld.contactSync(this._syncSWorld.SYNC_NORMAL);}
else{swApp.contactSyncStop();}}.$(this));no.addEventListener("onClick",function(){questionDlg.destroy();});questionDlg.centerOnParent();questionDlg.show();};P.getIDsUsingGroupIDs=function(groupIDs){var luids=[];if(!groupIDs||groupIDs.length===0){return this.getIDs();}
var matchCategories={};for(var i=0;i<groupIDs.length;++i){var groupID=groupIDs[i];var category=SwContact.getGroupIDCategory(groupID);matchCategories[category]=true;}
return this.getIDsUsingCategories(matchCategories);};P.getIDsUsingCategories=function(aMatchCategories){var ids=[];if(!aMatchCategories){return this.getIDs();}
var matchCategories={};for(var key in aMatchCategories){if(aMatchCategories.hasOwnProperty(key)){matchCategories[key.toLowerCase()]=true;}}
var categoryL;var luid;var contact;var category;var prop;var value;var i;var aValue;outer:for(luid in this._data){if(this._data.hasOwnProperty(luid)){contact=this._data[luid]._data.syncSWorldContact;if(!contact.category){if(matchCategories.hasOwnProperty(swApp.NO_CATEGORY)){ids.push(luid);}
continue;}
if(!(contact.category instanceof Array)){var tmp=contact.category.split(",");if(tmp.length>1){contact.category=tmp;}}
if(contact.category instanceof Array){for(i=0;i<contact.category.length;++i){category=contact.category[i].toLowerCase();if(matchCategories.hasOwnProperty(category)){ids.push(luid);break;}}}
else{category=contact.category.toLowerCase();if(matchCategories.hasOwnProperty(category)){ids.push(luid);}}}}
var sortCol="displayName";var descending=true;var prev=swApp.contactGrid.__sortCol;if(prev){sortCol=prev;if(swApp.contactGrid.__sortRev){descending=false;}}
ids.sort(function(a,b){a=swApp.contactCache.get(a);b=swApp.contactCache.get(b);return a.compareTo(b,sortCol);});return ids;};P.getContactsWithSWId=function(){var ids=[];for(luid in this._data){if(this._data.hasOwnProperty(luid)){data=this._data[luid]._data.syncSWorldContact;if(data.hasOwnProperty("swId")){ids.push(data.id);}}}
return ids;};P.ensureHaveContactsWithSwIDs=function(calUserIDS,callback){if(!calUserIDS){return;}
var missingContactIDs=[];for(var i=0;i<calUserIDS.length;++i){var swContact=this.getContactUsingSwId(calUserIDS[i]);if(!swContact){missingContactIDs.push(calUserIDS[i]);}}
if(missingContactIDs.length===0){callback(calUserIDS);return;}
var command={};command.calUserIDs=missingContactIDs.join(",");swApp.syncSWorld.addContactSyncStopListener(callback);swApp.syncSWorld.sendRequest(command,"createContacts",swApp.syncSWorld.contactSync());};P.getContactLuidsWithEmail=function(){var ids=[];for(luid in this._data){if(this._data.hasOwnProperty(luid)){data=this._data[luid]._data.syncSWorldContact;if(data.hasOwnProperty("mail")){ids.push(data.id);}}}
return ids;};P.getContactLuidsWithEmailOrSWId=function(){var ids=[];for(luid in this._data){if(this._data.hasOwnProperty(luid)){data=this._data[luid]._data.syncSWorldContact;if(data.hasOwnProperty("swId")){ids.push(data.id);}
else if(data.hasOwnProperty("mail")){ids.push(data.id);}}}
return ids;};P.getContactLuidsWithSWId=function(){var ids=[];for(luid in this._data){if(this._data.hasOwnProperty(luid)){data=this._data[luid]._data.syncSWorldContact;if(data.hasOwnProperty("swId")){ids.push(data.id);}}}
return ids;};P.getContactUsingSwId=function(swId){var data;for(luid in this._data){if(this._data.hasOwnProperty(luid)){data=this._data[luid]._data.syncSWorldContact;if(data.hasOwnProperty("swId")){var contactSwId=data.swId;if(contactSwId==swId){return data;}}}}
return null;};P.getRecordUsingSwId=function(swId){var data;var rec;for(luid in this._data){if(this._data.hasOwnProperty(luid)){rec=this._data[luid];data=rec._data.syncSWorldContact;if(data.hasOwnProperty("swId")){var contactSwId=data.swId;if(contactSwId==swId){return rec;}}}}
return null;};P.search=function(re,searchProps){if(!(re instanceof RegExp)){re=new RegExp(re,"i");}
var ids=[];var luid;var data;var prop;var value;var i;var aValue;for(luid in this._data){if(this._data.hasOwnProperty(luid)){data=this._data[luid]._data.syncSWorldContact;outer:for(prop in data){if(data.hasOwnProperty(prop)){if(searchProps){if(!searchProps[prop]){continue;}}
value=data[prop];if(typeof value.value!='undefined'){value=value.value;}
if(value instanceof Array){for(i=0;i<value.length;++i){aValue=value[i];if(aValue.value){if(aValue.value.search(re)>=0){ids.push(data.id);break outer;}}
else if(aValue.search(re)>=0){ids.push(data.id);break outer;}}}
else if(value&&value.search(re)>=0){ids.push(data.id);break;}}}}}
return ids;};P.getColumnsStorageKey=function(){return"contactColumnsKey";};P.tooltipHandler=function(cel){if(!cel){return;}
if(cel.col_id=="linked"){var rec=this._data.get(cel.id);if(rec){var linked=rec.get("linked");if(!linked){return;}
var response="<b>Linked with:</b><br/>";var swIdContact=linked.split(",");for(var i=0;i<swIdContact.length;++i){var swId=swIdContact[i];++i;var contactID=swIdContact[i];var contact=this._data.getContactUsingSwId(swId);if(contact){response+=contact.displayName+" / "+swId;}
else{if(swApp.syncSWorld.syncSWorldPrefs.currentCalUserID=="id"+swId){response+=swApp.syncSWorld.syncSWorldPrefs.userFN
+" / "+swId+" (you)";}
else{response+="Not cached"+" / "+swId;}}
response+="<br/>";}
return response;}}
if(cel.col_id=="perm"){var rec=this._data.get(cel.id);if(rec){var perm=rec.get("readOnly");if(perm=="true"){return"Read-Only";}
else{return"Read-Write";}}}};P.sort=function(ids,col,prev,rev,callback,obj){var a;if(col==prev&&rev!==null){a=ids.reverse();}else{var luid;for(var i=0;i<ids.length;++i){luid=ids[i];var str=this.getItemString(col,luid);str.luid=luid;ids[i]=str;}
ids.sort();for(var i=0;i<ids.length;++i){ids[i]=ids[i].luid;}}
callback.call(obj,ids);};P.getItemString=function(col,luid){var a1;var tmp=this._data[luid];if(col=="mailto"){col="mail";}
if(tmp){a1=tmp._data.syncSWorldContact[col];if(a1){if(a1.toLowerCase){a1=a1.toLowerCase();}
else if(col=="mail"){a1=tmp._set._syncSWorld.getEmail(a1).toLowerCase();}}
if(!a1||a1.length===0){a1="\ufff0"+tmp._data.syncSWorldContact.displayName.toLowerCase();}}
else{a1="";swApp.log("tmp null for luid:"+luid);}
return new String(a1);};P.sortWithMap=function(ids,col,prev,rev,callback,obj){var emailCache={};var a;if(col==prev&&rev!==null){a=ids.reverse();}else{ids.sort(function(a,b){var a1=emailCache[a];var b1=emailCache[b];if(!a1){var tmp=swApp.contactCache._data[a];if(col=="mailto"){col="mail";}
if(tmp){a1=tmp._data.syncSWorldContact[col];if(a1){if(a1.toLowerCase){a1=a1.toLowerCase();}
else if(col=="mail"){a1=tmp._set._syncSWorld.getEmail(a1).toLowerCase();}}}
if(!a1||a1.length===0){a1="\ufff0"+tmp._data.syncSWorldContact.displayName.toLowerCase();}
emailCache[a]=a1;}
if(!b1){tmp=swApp.contactCache._data[b];if(tmp){b1=tmp._data.syncSWorldContact[col];if(b1){if(b1.toLowerCase){b1=b1.toLowerCase();}
else if(col=="mail"){b1=tmp._set._syncSWorld.getEmail(b1).toLowerCase();}}}
if(!b1||b1.length===0){b1="\ufff0"+tmp._data.syncSWorldContact.displayName.toLowerCase();}
emailCache[b]=b1;}
return a1<b1?-1:a1==b1?0:1;},rev);}
callback.call(obj,ids);};P._onHeadClick=function(col,btn){if(col.isSortable()){col=col.id();var prev=this.__sortCol||null;var rev=null;if(col==prev){rev=true;if(this.__sortRev)
rev=!rev;}
this.__sortRev=rev;this._data.sort(this._records.array,col,prev,rev,function(ids){this.resetIDS(ids);this.refreshDisplay();this.setSortColumn(col,rev);},this);}};})();(function(){var BASE=SwContactView.inherits(DlContainer);function SwContactView(args){if(args){D.setDefaults(this,args);DlContainer.call(this,args);}}
eval(Dynarch.EXPORT("SwContactView",true));D.DEFAULT_ARGS={_cache:["data",null]};P.initDOM=function(){D.BASE.initDOM.call(this);var layout=new DlLayout({parent:this});var tmp=new DlContainer({});var box=new DlHbox({parent:tmp,borderSpacing:1,className:"SwContactView-letterBox"});this._letterGroup=DlRadioGroup.get();var tmpButton=null;for(var i=0;i<26;++i){var letter=String.fromCharCode(65+i);tmpButton=new DlButton({parent:box,label:letter,type:DlButton.TYPE.TWOSTATE,value:letter,group:this._letterGroup});}
tmpButton=new DlButton({parent:box,label:"!",type:DlButton.TYPE.TWOSTATE,value:"!",group:this._letterGroup});layout.packWidget(tmp,{pos:"top"});layout.packWidget(new DlContainer({className:"SW-Separator"}),{pos:"top"});this._body=new DlContainer({className:"SwContactView-body",scroll:true});layout.packWidget(this._body,{pos:"bottom",fill:"*",after:10});this._letterGroup.addEventListener("onChange",this._on_letterChange.$(this));};P.showLetter=function(letter){this._letterGroup.setValue([letter],true);};P._on_letterChange=function(){this._body.destroyChildWidgets();var letter=this._letterGroup.getValue()[0];var a=this._cache.getByLetter(letter);a.foreach(function(contact){var tmp=new SwContactWidget({parent:this._body,contact:contact});},this);};})();(function(){var TMPL=String.template("<div class='SwContactWidget-fullName'>${getFullName()}</div>","<div class='SwContactWidget-body'>","<table cellspacing='0' cellpadding='5'><tr>","<td><img src='${getIconURL()}' /></td>","<td>","<div class='SwContactWidget-title'>${getTitle()}</div>","<div class='SwContactWidget-email'>${getMailToURI()}</div>","<div class='SwContactWidget-phone'>${getPhone()}</div>","</td></tr></table>","</div>");var BASE=SwContactWidget.inherits(DlContainer);function SwContactWidget(args){if(args){D.setDefaults(this,args);DlContainer.call(this,args);}}
eval(Dynarch.EXPORT("SwContactWidget",true));D.DEFAULT_ARGS={_contact:["contact",null]};P.initDOM=function(){D.BASE.initDOM.call(this);this.setContent(TMPL(this._contact));this.addEventListener({onMouseEnter:this._on_mouseEnter.$(this),onDblClick:this._on_DblClick.$(this),onMouseLeave:this._on_mouseLeave.$(this)});};P._on_DblClick=function(ev){this.ignoreMouseLeave=true;var contact=this._contact;var luid=this._contact._data.id;swApp.contactEditView(luid);};P._on_mouseEnter=function(){this.addClass("SwContactWidget-hover");var url=this._contact.get170IconURL();var element=swApp.photoButton.getContentElement();DynarchDomUtils.setStyleProperty(element,"background-image","url("+url+")");};P._on_mouseLeave=function(){if(this.ignoreMouseLeave){return;}
this.delClass("SwContactWidget-hover");var url="/sw2/images/crystal/personal170.png";var element=swApp.photoButton.getContentElement();DynarchDomUtils.setStyleProperty(element,"background-image","url("+url+")");};})();(function(){var BASE=SwCalMultiSelector.inherits(SwMultiSelector);function SwCalMultiSelector(args){if(args){D.setDefaults(this,args);SwMultiSelector.call(this,args);}}
eval(Dynarch.EXPORT("SwCalMultiSelector"));D.DEFAULT_ARGS={_cache:["data",null],_colors:["colors",null],_css:["css",null]};function makeSelMenu(){var btn=this.args.widget;var selector=btn.userData.selector;var menu=selector.getData("menu");if(!menu){menu=new DlVMenu({});var label=new DlLabel({parent:menu,tagName:"div"});label.setStyle({fontWeight:"bold",textAlign:"center",marginBottom:"10px"});menu.setData("label",label);var itemCount=new DlLabel({parent:menu,tagName:"div"});itemCount.setStyle({fontWeight:"bold",textAlign:"center",marginBottom:"10px"});menu.setData("itemCount",itemCount);var tmp=new DlCheckbox({parent:menu,label:"Show only this calendar"});menu.setData("showOnlyThis",tmp);tmp.addEventListener("onChange",function(){var menu=this.parent;var selector=menu.getData("selector");var btn=menu.getData("button");if(this.checked()){selector._group.setValue([btn.getValue()],true);}else{selector._group.checkAll(true,true);}});tmp=new DlCheckbox({parent:menu,label:"Default for new events"});tmp.addEventListener("onClick",function(){var menu=this.parent;this.checked(true,true);var selector=menu.getData("selector"),btn=menu.getData("button");var iCalendarID=btn.getValue();selector._cache._defaultCalendar=iCalendarID;selector._setDefaultBtn(btn);swApp.syncSWorld.userSettingsDTO.sw2DefaultICalendarID=iCalendarID;swApp.syncSWorld.saveUserSettingsDTO();});menu.setData("defaultCal",tmp);selector.setData("menu",menu);var cp=new DlColorPickerHSV({parent:menu});cp.addEventListener("onSelect",function(rgb,hsv){var menu=this.parent;var color="#"+DlColor.RGB2hex(rgb);var btn=menu.getData("button");menu.getData("selector")._setColor(btn,rgb,hsv,color);var style={backgroundColor:color};menu.setStyle(style);menu.parent.setStyle(style);btn._menuBtn.setStyle(style);});cp.setStyle({margin:"10px"});menu.setData("colorpicker",cp);deleteThis=new DlMenuItem({parent:menu,label:"Delete this calendar"});deleteThis.addEventListener("onSelect",function(){DlPopup.clearAllPopups();var reallyDelete=confirm("Please confirm you want to delete this calendar.\nNOTE: all backups of this calendar will also be deleted!");if(!reallyDelete){return;}
var menu=this.parent;var iCalendarID=menu.getData("button").getValue();menu.getData("button").destroy();var command={};command.iCalendarID=iCalendarID;swApp.syncSWorld.sendRequest(command,"deleteCalendar");swApp.eventCache.removeAllBelongingToCal(iCalendarID);if(swApp.taskCache){swApp.taskCache.removeAllBelongingToCal(iCalendarID);}
swApp.syncSWorld.removeICalendar(iCalendarID);});deleteThis.setStyle({textAlign:"center"});stopViewing=new DlMenuItem({parent:menu,label:"Stop viewing shared calendar"});stopViewing.addEventListener("onSelect",function(){DlPopup.clearAllPopups();var menu=this.parent;var iCalendarID=menu.getData("button").getValue();menu.getData("button").destroy();var command={};command.iCalendarID=iCalendarID;swApp.syncSWorld.sendRequest(command,"stopViewingSharedCalendar");swApp.eventCache.removeAllBelongingToCal(iCalendarID);swApp.taskCache.removeAllBelongingToCal(iCalendarID);swApp.syncSWorld.removeICalendar(iCalendarID);});stopViewing.setStyle({textAlign:"center"});menu.setStyle({padding:"10px"});var iCalendarID=btn.getValue();if(!swApp.syncSWorld.ownsICalendar(iCalendarID)){}
else{stopViewing.display(false);}}
menu.setData("selector",selector);menu.setData("button",btn);menu.setData("currentVal",selector._group.getValue());var val=selector._group.getValue();menu.getData("showOnlyThis").checked(val.length==1&&val[0]==btn.getValue(),true);menu.getData("defaultCal").checked(selector._cache._defaultCalendar==btn.getValue(),true);var color=btn.getColor();var iCalendarID=btn.getValue();var size=selector._cache.getSize(iCalendarID);if(selector._cache._objectType=="SwEventCache"){menu.getData("itemCount").setLabel("Events: "+size);}
else{menu.getData("itemCount").setLabel("Tasks: "+size);}
menu.getData("label").setLabel(btn._label);this.setStyle({backgroundColor:color||""});menu.setStyle({backgroundColor:color||""});if(color){var hsv=DlColor.RGB2HSV(DlColor.color2RGB(color));menu.getData("colorpicker").setHSV(hsv);}
return menu;}
P._setColor=function(btn,rgb,hsv,color){this._css.modifyRule(btn.userData.light_rule,{"backgroundColor":color});var darker=DlColor.RGB2color(DlColor.HSV2RGB(DlColor.darker(hsv)));this._css.modifyRule(btn.userData.dark_rule,{"backgroundColor":darker});btn.setColor(color);};P._setDefaultBtn=function(btn){if(!this._defaultBtn||this._defaultBtn!=btn){if(this._defaultBtn){this._defaultBtn.delClass("SwMultiSelectorButton-default");}
btn.addClass("SwMultiSelectorButton-default");this._defaultBtn=btn;}};P.addColor=function(c){var cn=".SwEvent-Color-"+c.id;var light_rule=this._css.insertRule(cn+","+cn+" .body",{"background-color":c.color});var darker=DlColor.RGB2color(DlColor.HSV2RGB(DlColor.darker(DlColor.RGB2HSV(DlColor.color2RGB(c.color)))));var dark_rule=this._css.insertRule(cn+" .title,"+cn+" .resize-handle",{"background-color":darker});this._css.modifyRule(light_rule,{display:c.checked?"":"none"});var btn=new SwMultiSelectorButton({label:c.label||c.id,color:c.color,checked:c.checked,menu:makeSelMenu,group:this._group,value:c.id,data:{light_rule:light_rule,dark_rule:dark_rule,selector:this}});if(c.id==this._cache._defaultCalendar){btn.addClass("SwMultiSelectorButton-default");this._defaultBtn=btn;}
btn.prefsChangedHandler=function(){var x=0;var y=1;var z=this._mainBtn._label;var w=this._mainBtn._value;var iCalendarInfoL=swApp.syncSWorld.userSettingsDTO.ICalendarInfoL;for(var i=0;i<iCalendarInfoL.length;++i){var iCalendarInfo=iCalendarInfoL[i];if(iCalendarInfo.ICalendarID==this._mainBtn._value){this._mainBtn.label(iCalendarInfo.name);break;}}};swApp.syncSWorld.addGeneralSettingsChangedListener(btn.prefsChangedHandler.$(btn));this.addButton(btn);btn.addEventListener("onDestroy",function(btn){this._css.deleteRule(btn.userData.light_rule);this._css.deleteRule(btn.userData.dark_rule);}.$(this,btn));};P.getVisibleICalendarIDs=function(){var result=[];this._group.getButtons().foreach(function(btn){var checked=btn.checked();if(checked){var btnICalendarID=btn._value;result.push(btnICalendarID);}});return result;};P._createElement=function(){D.BASE._createElement.apply(this,arguments);if(!this._css){this._css=new DlStyleSheet();}
this._group=DlRadioGroup.get();this._group.maxChecked(null);this._colors.foreach(this.addColor,this);this._colors=null;this._group.addEventListener("onChange",function(){this._group.getButtons().foreach(function(btn){var checked=btn.checked();btn=btn.parent;this._css.modifyRule(btn.userData.light_rule,{display:checked?"":"none"});var iCalendarInfoL=swApp.syncSWorld.userSettingsDTO.ICalendarInfoL;for(var i=0;i<iCalendarInfoL.length;++i){var iCalendarInfo=iCalendarInfoL[i];if(iCalendarInfo.ICalendarID==btn._mainBtn._value){if(iCalendarInfo.syncEnabled!=checked){iCalendarInfo.syncEnabled=checked;swApp.syncSWorld.saveUserSettingsDTO();}
break;}}},this);swApp.calendarListViewRefresh();swApp.calendarListAllViewRefresh();}.$(this));};})();(function(){SwContactShareDlg.inherits(SwMinDialog);function SwContactShareDlg(args){if(args){if(!args.title){args.title=swApp.i18n("Share contacts");}
args.quitBtn=true;args.resizable=true;D.setDefaults(this,args);SwMinDialog.call(this,args);}}
eval(Dynarch.EXPORT("SwContactShareDlg"));P.initialSize={x:750,y:550};P.initDOM=function(){D.BASE.initDOM.apply(this,arguments);var body=this._createGroups();this.tabs=new DlTabs({tabPos:"top"});var page1=new DlContainer({});var page2=new DlContainer({});this.tabs.addTab(page1,"Exported Contacts");this.tabs.addTab(page2,"Incoming / Shared Contacts And Invitations");var box=new DlHbox({borderSpacing:2});box.addFiller();var okBtn=new DlButton({focusable:true,parent:box,label:swApp.i18n("Save").fixedWidth("7em")});var ok=this.ok.$(this);okBtn.addEventListener("onClick",ok);var cancelBtn=new DlButton({focusable:true,parent:box,label:swApp.i18n("Close").fixedWidth("7em")});var cancel=this.cancel.$(this);cancelBtn.addEventListener("onClick",cancel);this.addEventListener("onQuitBtn",cancel);var box2=new DlHbox({});var autoShare=new DlLabel({parent:box2,label:swApp.i18n("Addressbook Category:")});this.autoShareCategories=new DlCompletionEntry({parent:box2,emptyText:"The server will automatically share new contacts that have this category.",disabled:false});this.autoShareCategories.addEventListener("onCompletion",function(){this.dirty=true;this.autoShareCategories.cancelCompletion();}.$(this));this.autoShareCategories.getElement().parentNode.style.width="100%";this.autoShareCategories.getElement().style.width="100%";this.autoShareCategories.getInputElement().style.width="98%";var groupID=this.abGroupIDSelect.getValue();var category=SwContact.getGroupIDCategory(groupID);if(!category||category.length===0){var groupName=SwContact.getGroupName(groupID);category=groupName;}
this.autoShareCategories.setValue(category);var layout=new DlLayout({outerSpace:5});layout.packWidget(body,{pos:"top",fill:"*"});layout.packWidget(box2,{pos:"bottom",after:5});page1.setContent(layout);page2.setContent(this.createPage2());var layoutRoot=new DlLayout({outerSpace:2});layoutRoot.packWidget(this.tabs,{pos:"top",fill:"*"});layoutRoot.packWidget(box,{pos:"bottom"});this.setContent(layoutRoot);this.tabs.showPane(0);};P.createPage2=function(){var layout=new DlLayout({});var bodyLayout=new DlLayout({});var leftVbox=new DlVbox({fillParent:true});var xLayout=new DlLayout({parent:leftVbox});var leftTitleH=new DlHbox({fillParent:true});leftTitleH.setAlign("center");var leftTitle=new DlLabel({label:"Granted Permission To Share With You:",parent:leftTitleH,fillParent:true});leftTitle.setStyle({fontWeight:"bold",textAlign:"center",marginBottom:"10px"});this.leftSelectionModelP2=new DlSelectionModel({multiple:false});this.leftGroupUserGridP2=new DlDataGrid({cols:getCurrentlyImportingColumns(),selection:this.leftSelectionModelP2});var leftGrid=this.leftGroupUserGridP2;bodyLayout.packWidget(leftVbox,{pos:"left",fill:"50%",after:10});var rightVbox=new DlVbox({fillParent:true});var x2Layout=new DlLayout({parent:rightVbox});var rightTitleH=new DlHbox({fillParent:true});rightTitleH.setAlign("center");var rightTitle=new DlLabel({label:"Currently Inviting You To Share:",parent:rightTitleH,fillParent:true});rightTitle.setStyle({fontWeight:"bold",textAlign:"center",marginBottom:"10px"});this.rightSelectionModelP2=new DlSelectionModel({multiple:false});this.rightGroupUserGridP2=new DlDataGrid({parent:rightVbox,cols:getCurrentlyInvitingColumns(),selection:this.rightSelectionModelP2});var rightGrid=this.rightGroupUserGridP2;var bottomRight=new DlHbox({});this.acceptSharing=new DlButton({parent:bottomRight,label:"Accept Request"});this.acceptSharing.setStyle({padding:"4px"});this.acceptSharing.addEventListener("onClick",function(){var selectedL=this.rightSelectionModelP2.getArray();if(!selectedL||selectedL.length===0){ConfirmDialog.ask({text:"You must first select someone who has invited you to share."});return;}
var cacheCurrentlyImporting=this.cacheMayShareWithMe;var cache=this.cacheCurrentlyInviting;var contactRec=cache.get(selectedL[0]);var displayName=contactRec.get("displayName");var command=contactRec.get("sharingCommand");ConfirmDialog.ask({text:displayName+" will now have permission to share contacts with you.<br/>All shared contacts are actually linked together so if one person<br/>edits a contact then all linked contacts are also instantly updated.<br/>"+
displayName+" has requested to share contacts<br/>with the category: "+command.category,okLabel:"Accept Sharing",onOK:function(){var success=function(response){alert("You have successfully accepted the sharing\nrequest from: "+displayName);try{cache.remove(contactRec.id());cacheCurrentlyImporting.syncSWorldContactAdded(false,contactRec._data.syncSWorldContact);}catch(ex){swApp.log("grid manipulation failed:"+ex);}
for(var i=0;i<swApp.syncSWorld.commandLM.length;++i){var tmpCommand=swApp.syncSWorld.commandLM[i];if(tmpCommand.requestor==command.requestor){swApp.syncSWorld.commandLM.splice(i);swApp.syncSWorld.saveCommandLM(swApp.syncSWorld.contactSync.$(swApp.syncSWorld));return;}}};var fail=function(response){if(response.failedI18nKey=="You have already accepted the request."){success(response);}
else{alert("Your 'Accept Sharing' request failed:\n"+
response.failedI18nKey);}};var netCommand={};var index=command.requestor.indexOf(",");netCommand.ownerCalUserID=command.requestor.substring(0,index);netCommand.ownerContactID=command.requestor.substring(index+1);netCommand.recipientContactID=command.id;swApp.syncSWorld.sendRequest(netCommand,"recipientAcceptSharing",success,fail);}});}.$(this));this.denySharing=new DlButton({parent:bottomRight,label:"Deny Request"});this.denySharing.setStyle({padding:"4px"});this.denySharing.addEventListener("onClick",function(){var selectedL=this.rightSelectionModelP2.getArray();if(!selectedL||selectedL.length===0){ConfirmDialog.ask({text:"You must first select someone who has invited you to share."});return;}
var cache=this.cacheCurrentlyInviting;var contactRec=cache.get(selectedL[0]);var displayName=contactRec.get("displayName");var command=contactRec.get("sharingCommand");ConfirmDialog.ask({text:displayName+" will be denied permission to share contacts with you.",okLabel:"Deny Sharing",onOK:function(){var success=function(response){alert("You have successfully denied the sharing\nrequest from: "+displayName);cache.remove(contactRec.id());if(swApp.syncSWorld.commandLM){for(var i=0;i<swApp.syncSWorld.commandLM.length;++i){var tmpCommand=swApp.syncSWorld.commandLM[i];if(tmpCommand.requestor!=command.requestor){continue;}
swApp.syncSWorld.commandLM.splice(i);swApp.syncSWorld.saveCommandLM();return;}}};var fail=function(response){alert("Your 'Deny Sharing' action failed:\n"+
response.failedI18nKey);};var netCommand={};var index=command.requestor.indexOf(",");netCommand.ownerCalUserID=command.requestor.substring(0,index);netCommand.ownerContactID=command.requestor.substring(index+1);netCommand.recipientContactID=command.id;swApp.syncSWorld.sendRequest(netCommand,"recipientDenySharing",success,fail);}});}.$(this));x2Layout.packWidget(rightTitleH,{pos:"top"});x2Layout.packWidget(bottomRight,{pos:"bottom"});x2Layout.packWidget(rightGrid,{pos:"left",fill:"*"});bodyLayout.packWidget(rightVbox,{pos:"right",fill:"*"});var bottomLeft=new DlHbox({});this.stopSharing=new DlButton({parent:bottomLeft,label:"Stop Sharing"});this.stopSharing.setStyle({padding:"4px"});this.stopSharing.addEventListener("onClick",function(){var selectedL=this.leftSelectionModelP2.getArray();if(!selectedL||selectedL.length===0){ConfirmDialog.ask({text:"You must first select someone you want to stop sharing with."});return;}
var contactRec=this.cacheMayShareWithMe.get(selectedL[0]);var displayName=contactRec.get("displayName");var cache=this.cacheMayShareWithMe;ConfirmDialog.ask({text:displayName+" will no longer have permission to share contacts with you.<br/>All contact links between the two of you will be severed.<br/>You will retain copies of the contacts that were linked.",okLabel:"Stop Sharing",onOK:function(){var success=function(response){alert("You are no longer sharing with "+displayName);cache.remove(contactRec.id());swApp.syncSWorld.mayShareContactsWithMeS.remove(contactRec.get("swId"));swApp.syncSWorld.saveMayShareContactsWithMeS(swApp.syncSWorld.contactSync.$(swApp.syncSWorld));};var fail=function(response){alert("Your 'Stop Sharing' request failed:\n"+
response.failedI18nKey);};var command={};command.calUserID=contactRec._data.syncSWorldContact.swId;swApp.syncSWorld.sendRequest(command,"recipientStopSharing",success,fail);}});}.$(this));layout.packWidget(bodyLayout,{pos:"bottom",fill:"*"});xLayout.packWidget(leftTitleH,{pos:"top"});xLayout.packWidget(bottomLeft,{pos:"bottom"});xLayout.packWidget(leftGrid,{pos:"bottom",fill:"*"});return layout;};P._createCacheCurrentlyInviting=function(){var calUserIDL=[];var commandL=[];if(swApp.syncSWorld.commandLM){for(var i=0;i<swApp.syncSWorld.commandLM.length;++i){var command=swApp.syncSWorld.commandLM[i];if(command.DOC_ROOT!="recipientSharingRequest"){continue;}
var index=command.requestor.indexOf(",");calUserIDL.push(command.requestor.substring(0,index));commandL.push(command);}}
swApp.contactCache.ensureHaveContactsWithSwIDs(calUserIDL,this._createCacheCurrentlyInvitingWork.$(this,commandL));};P._createCacheCurrentlyInvitingWork=function(commandL){swApp.syncSWorld.removeContactSyncStopListener(swApp.swContactShareDlg._createCacheCurrentlyInvitingWork);this.cacheCurrentlyInviting=new SwContactCache({syncSWorld:swApp.syncSWorld,test:"test"});var command;var index;if(commandL.length>0){for(var i=0;i<commandL.length;++i){command=commandL[i];index=command.requestor.indexOf(",");var swContact=swApp.contactCache.getContactUsingSwId(command.requestor.substring(0,index));if(swContact){swContact.sharingCommand=command;this.cacheCurrentlyInviting.syncSWorldContactAdded(true,swContact);}}}
this.rightGroupUserGridP2.setCache(this.cacheCurrentlyInviting);var ids=this.cacheCurrentlyInviting.getAllIds();if(!ids){ids=[];}
this.rightGroupUserGridP2.resetIDS(ids);this.rightGroupUserGridP2.displayPage(0);};P.createCacheMayShareWithMe=function(calUserIDL){swApp.contactCache.ensureHaveContactsWithSwIDs(calUserIDL,this._createCacheMayShareWithMe.$(this,calUserIDL));};P._createCacheMayShareWithMe=function(calUserIDL){swApp.syncSWorld.removeContactSyncStopListener(swApp.swContactShareDlg._createCacheMayShareWithMe);this.cacheMayShareWithMe=new SwContactCache({syncSWorld:swApp.syncSWorld,data:[],test:"test"});if(calUserIDL){for(var i=0;i<calUserIDL.length;++i){var swContact=swApp.contactCache.getContactUsingSwId(calUserIDL[i]);if(swContact){this.cacheMayShareWithMe.syncSWorldContactAdded(true,swContact);}}}
this.leftGroupUserGridP2.setCache(this.cacheMayShareWithMe);var ids=this.cacheMayShareWithMe.getAllIds();if(ids&&ids.length>0){this.leftGroupUserGridP2.resetIDS(ids);this.leftGroupUserGridP2.displayPage(0);}
else{this.leftGroupUserGridP2.resetIDS([]);}};P.cancel=function(){this.hide();};P.ok=function(){if(this.added||this.deleted){this.hide();return;}
var groupID=this.abGroupIDSelect.getValue();var groupName=SwContact.getGroupName(groupID);var setGroup={};setGroup.autoShare="true";setGroup.category=this.autoShareCategories.getValue();if(setGroup.category.indexOf(",")>=0){alert("Only one 'Category' is allowed. (Do not use commas ',').\nValue:"+setGroup.category);return;}
setGroup.groupName=groupName;setGroup.swIds=this.cacheLeft._getUserIDs(setGroup.category);var swIds=setGroup.swIds.split(",");for(var i=0;i<swIds.length;++i){SwContact.addSwIdToGroupID(swIds[i],groupID);}
var success=function(response){SwContact.setCategoryGroupID(setGroup.category,groupID);SwContact.setGroupIDCalUserIDS(groupID,setGroup.swIds);alert("Sharing definitions saved.");};var failed=function(response){alert("Sharing definitions failed to save:\n"+
response.failedI18nKey);};swApp.syncSWorld.sendRequest(setGroup,"setGroup",success.$(this),failed);this.hide();};P._createGroups=function(){var layout=new DlLayout({});var top=new DlVbox({});var toolbar=new DlHbox({parent:top});var label=new DlLabel({parent:toolbar,label:swApp.i18n("Addressbook:")});toolbar.addSpace();var allGroups=SwContact.getAllGroups();var options=[];for(var i in allGroups){if(allGroups.hasOwnProperty(i)){options.push({label:allGroups[i],value:i});}}
this.defaultGroup=options.length>0?options[0].value:null;this.abGroupIDSelect=new DlRadioSelect({parent:toolbar,options:options,value:this.defaultGroup,label:""});this.abGroupIDSelect.addEventListener("onChange",function(oldGroupID,newGroupID){if(oldGroupID==newGroupID){return;}
var oldGroupName=SwContact.getGroupName(oldGroupID);var groupName=SwContact.getGroupName(newGroupID);if(this.dirty){var ok=confirm("You have made changes to the category "+
oldGroupName+".\n"+"Click 'Ok' to lose your changes.");if(!ok){this.abGroupIDSelect.setValue(oldGroupID,true,true);return;}}
delete this.dirty;this.replaceLeftUsers(newGroupID);}.$(this));toolbar.addSeparator("wide-separator");var addBtn=new DlButton({focusable:true,parent:toolbar,label:swApp.i18n("New Addressbook")});toolbar.addSpace();var delBtn=new DlButton({focusable:true,parent:toolbar,label:swApp.i18n("Remove Addressbook")});delBtn.addEventListener("onClick",this._delGroup.$(this));addBtn.addEventListener("onClick",this._addGroup.$(this));toolbar.addFiller();var bodyLayout=new DlLayout({});var leftVbox=new DlVbox({fillParent:true});var xLayout=new DlLayout({parent:leftVbox});var leftTitleH=new DlHbox({fillParent:true});leftTitleH.setAlign("center");var leftTitle=new DlLabel({label:"People Linked With The Addressbook",parent:leftTitleH,fillParent:true});leftTitle.setStyle({fontWeight:"bold",textAlign:"center",marginBottom:"10px"});this.leftSelectionModel=new DlSelectionModel({});this.leftGroupUserGrid=new DlDataGrid({cols:getLeftColumns(),selection:this.leftSelectionModel});var leftGrid=this.leftGroupUserGrid;bodyLayout.packWidget(leftVbox,{pos:"left",fill:"50%"});var vbox=new DlVbox({});var vvbox=new DlVbox({parent:vbox,borderSpacing:2});var addUserBtn=new DlButton({focusable:true,parent:vvbox,label:"« R/W"});addUserBtn.addEventListener("onClick",function(){var contactLuids=this.rightSelectionModel.getArray();if(contactLuids.length===0){alert("Please select a contact you can share with (Right grid).");return;}
var groupID=this.abGroupIDSelect.getValue();this.addLeftUsers(groupID,contactLuids,true);}.$(this));var addUserBtnRO=new DlButton({focusable:true,parent:vvbox,label:"« R/O"});addUserBtnRO.addEventListener("onClick",function(){var contactLuids=this.rightSelectionModel.getArray();if(contactLuids.length===0){alert("Please select a contact you can share with (Right grid).");return;}
var groupID=this.abGroupIDSelect.getValue();this.addLeftUsers(groupID,contactLuids,false);}.$(this));var removeUserBtn=new DlButton({focusable:true,parent:vvbox,label:"Del »"});removeUserBtn.addEventListener("onClick",function(){var array=this.leftSelectionModel.getArray();if(array.length===0){return;}
var contactID;var contact;for(var i=0;i<array.length;++i){contactID=array[i];contact=this.cacheLeft.get(contactID);if(contact.requiresInvitationEmail){this.cacheLeft.removeContactID(contactID);this.dirty=true;return;}
this.cacheLeft.removeContactID(contactID);var ids=this.cacheLeft.getIDs();this.leftGroupUserGrid.resetIDS(ids);this.leftGroupUserGrid.displayPage(0);this.dirty=true;}}.$(this));bodyLayout.packWidget(vbox,{pos:"left"});var rightVbox=new DlVbox({fillParent:true});var x2Layout=new DlLayout({parent:rightVbox});var rightTitleH=new DlHbox({fillParent:true});rightTitleH.setAlign("center");var rightTitle=new DlLabel({label:"ScheduleWorld Users In Your Contacts",parent:rightTitleH,fillParent:true});rightTitle.setStyle({fontWeight:"bold",textAlign:"center",marginBottom:"10px"});this.rightSelectionModel=new DlSelectionModel({});this.rightGroupUserGrid=new DlDataGrid({parent:rightVbox,cols:getRightColumns(),selection:this.rightSelectionModel});var rightGrid=this.rightGroupUserGrid;x2Layout.packWidget(rightTitleH,{pos:"top"});x2Layout.packWidget(rightGrid,{pos:"bottom",fill:"*"});bodyLayout.packWidget(rightVbox,{pos:"right",fill:"*"});layout.packWidget(top,{pos:"top",after:5});layout.packWidget(bodyLayout,{pos:"bottom",fill:"*"});xLayout.packWidget(leftTitleH,{pos:"top"});xLayout.packWidget(leftGrid,{pos:"bottom",fill:"*"});return layout;};P.replaceLeftUsers=function(newGroupID,contactSwIds){var groupSwIds=contactSwIds;if(!groupSwIds){groupSwIds=SwContact.getGroupUserIDs(newGroupID);}
else{this.dirty=true;}
swApp.contactCache.ensureHaveContactsWithSwIDs(groupSwIds,this._replaceLeftUsers.$(this,newGroupID,contactSwIds));};P._replaceLeftUsers=function(newGroupID,contactSwIds){swApp.syncSWorld.removeContactSyncStopListener(swApp.swContactShareDlg._replaceLeftUsers);var groupSwIds=contactSwIds;if(!groupSwIds){groupSwIds=SwContact.getGroupUserIDs(newGroupID);}
else{this.dirty=true;}
this.cacheLeft.includeFromMainCache(groupSwIds);var groupName=SwContact.getGroupName(newGroupID);swApp.log("abGroupIDSelect:"+newGroupID+", groupName:"+groupName+", group users:"+DlJSON.encode(groupSwIds));this.cacheLeft.clearContactIDs();var userSwId;var contact;for(var i=0;i<groupSwIds.length;++i){userSwId=Math.abs(groupSwIds[i]);contact=this.cacheLeft.getContactUsingSwId(userSwId);if(!contact){continue;}
this.cacheLeft.addContactID(contact.id);}
var ids=this.cacheLeft.getIDs();this.leftGroupUserGrid.resetIDS(ids);this.leftGroupUserGrid.displayPage(0);var category=SwContact.getGroupIDCategory(newGroupID);if(!category||category.length===0){category=groupName;}
this.autoShareCategories.setValue(category);};P.addLeftUsers=function(newGroupID,contactLuids,readWrite){this.dirty=true;var groupName=SwContact.getGroupName(newGroupID);swApp.log("addLeftUsers:"+newGroupID+", adding users:"+DlJSON.encode(contactLuids));var swContact;for(var i=0;i<contactLuids.length;++i){swContact=this.cacheLeft.get(contactLuids[i]);if(!swContact){continue;}
var added=this.cacheLeft.addContactID(swContact.id());if(!added){continue;}
var swId=parseInt(swContact.get("swId"),10);if(readWrite==true){swContact._data.syncSWorldContact.shareReadWrite="true";}
else{swContact._data.syncSWorldContact.shareReadWrite="false";}}
var ids=this.cacheLeft.getIDs();this.leftGroupUserGrid.resetIDS(ids);this.leftGroupUserGrid.displayPage(0);var category=SwContact.getGroupIDCategory(newGroupID);if(!category||category.length===0){category=groupName;}
this.autoShareCategories.setValue(category);};P.init=function(){this.dirty=false;var allGroups=SwContact.getAllGroups();var options=[];for(var i in allGroups){if(allGroups.hasOwnProperty(i)){options.push({label:allGroups[i],value:i});}}
this.defaultGroup=options.length>0?options[0].value:null;this.abGroupIDSelect.setOptions(options);this.abGroupIDSelect.setValue(this.defaultGroup);this.cacheLeft=new INTERNAL_FilterContactsCacheLeft(this.defaultGroup,false);this.leftGroupUserGrid.setCache(this.cacheLeft);this.replaceLeftUsers(this.defaultGroup);this.cacheRight=new INTERNAL_FilterContactsCacheRight(this.defaultGroup,false);this.rightGroupUserGrid.setCache(this.cacheRight);var idsRight=this.cacheRight.getIDs();if(idsRight&&idsRight.length>0){this.rightGroupUserGrid.resetIDS(idsRight);this.rightGroupUserGrid.displayPage(0);}
this.createCacheMayShareWithMe(swApp.syncSWorld.mayShareContactsWithMeS);this._createCacheCurrentlyInviting();};P._addGroup=function(){var dlg=this._addGroupDialog;if(!dlg){dlg=this._addGroupDialog=new DlDialog({parent:this,quitBtn:"hide",title:swApp.i18n("New Addressbook"),modal:true});var fg=new DlFieldGrid({parent:dlg});var nameFieldRet={};var nameField=fg.addField({name:"name",label:"Addressbook Name:"},null,nameFieldRet);var categoryRet={};fg.addField({name:"category",label:"Addressbook Category:"},null,categoryRet);fg.addSeparator();dlg.nameFieldEntry=nameFieldRet.entry;dlg.categoryEntry=categoryRet.entry;var box=new DlHbox({parent:dlg,borderSpacing:2});box.addFiller();var ok=new DlButton({parent:box,focusable:true,label:"OK".fixedWidth("5em")});var cancel=new DlButton({parent:box,focusable:true,label:"Cancel".fixedWidth("5em")});cancel.addEventListener("onClick",dlg.hide.$(dlg));ok.addEventListener("onClick",function(){var values=fg.getValues();var name=values.name;var category=values.category;if(!name||name.length===0){alert("Name must not be null.");return;}
if(!category||category.length===0){alert("Category must not be null.");return;}
if(name.indexOf(",")<0&&category.indexOf(",")<0){if(this._do_addGroup(name,category)){dlg.hide();}}
else{alert("The addressbook and category must not use the comma ','.");}}.$(this));dlg._focusedWidget=nameField;dlg.show(true);}else{dlg.nameFieldEntry.clear();dlg.categoryEntry.clear();dlg.show();}};P._do_addGroup=function(abName,category){var groupID=SwContact.getGroupID(abName);if(groupID){alert("Addressbook '"+abName+"' already exists.");return false;}
var command={};command.groupName=abName;command.category=category;var success=function(response){alert("Addressbook successfully added.");groupID=response.keyValueM.groupID;this.abGroupIDSelect.addOption({label:abName,value:groupID});SwContact.setGroupID(groupID,abName);SwContact.setCategoryGroupID(category,groupID);return true;};var failed=function(response){alert("Adding addressbook failed:"+response.failedI18nKey);return false;};swApp.syncSWorld.sendRequest(command,"addGroup",success.$(this),failed);return true;};P._delGroup=function(){var groupID=this.abGroupIDSelect.getValue();var groupName=SwContact.getGroupName(groupID);calUserIDs=SwContact.getGroupUserIDs(groupID);if(calUserIDs.length>0){alert("You must stop sharing with everyone in this group first.");return;}
ConfirmDialog.ask({parent:this,text:"Are you sure you want to remove the addressbook \""+groupName+"\"?",okLabel:swApp.i18n("Yes"),cancelLabel:swApp.i18n("No"),onOK:this._do_delGroup.$(this,groupName)});};P._do_delGroup=function(abName){var command={};command.groupName=abName;var success=function(response){alert("Addressbook '"+abName+"' successfully removed.");groupID=response.keyValueM.groupID;var newOptions=[];var newSelected=null;var options=this.abGroupIDSelect._options;for(var i=0;i<options.length;++i){var option=options[i];if(option.label==abName){continue;}
newOptions.push(option);if(!newSelected){newSelected=option;this.abGroupIDSelect.setValue(option.value);}}
this.abGroupIDSelect.setOptions(newOptions);SwContact.removeGroupID(groupID);return true;};var failed=function(response){alert("Removing group '"+aGroupname+"' failed:"+
response.failedI18nKey);return false;};swApp.syncSWorld.sendRequest(command,"removeGroup",success.$(this),failed);};P._invite=function(){var dlg=this._inviteDlg;if(!dlg){dlg=this._inviteDlg=new DlDialog({parent:this,quitBtn:"hide",title:swApp.i18n("Invite other folks"),resizable:true,modal:true});var layout=new DlLayout({parent:dlg,outerSpace:5});var info=new DlWidget({});info.setContent([swApp.i18n("Enter one or more email addresses."),swApp.i18n("An invitation to join ScheduleWorld and share your contacts will be sent to each of them.")].join("<br />"));dlg.entry=new DlCompletionEntry({type:"textarea",smart:false,noTab:true});var entry=dlg.entry;entry.addEventListener("onCompletion",Mail.contacts_cache.autocomplete);var box=new DlHbox({});box.addFiller();var ok=new DlButton({parent:box,focusable:true,label:swApp.i18n("OK").fixedWidth("5em")});ok.addEventListener("onClick",function(){this._do_invite(entry.getValue());dlg.hide();}.$(this));box.addSpace();var tmp=new DlButton({parent:box,focusable:true,label:swApp.i18n("Cancel").fixedWidth("5em")}).addEventListener("onClick",dlg.hide.$(dlg));layout.packWidget(info,{pos:"top",after:5});layout.packWidget(box,{pos:"bottom",after:5});layout.packWidget(entry,{pos:"top",fill:"*"});layout.setSize({x:600,y:300});dlg._focusedWidget=entry;dlg.show(true);}else{dlg.entry.clear();dlg.show();}};P._do_invite=function(val){alert("FIXME: _do_invite\n"+val);var emailL=val.split(",");for(var i=0;i<emailL.length;++i){contact={};contact.id=swApp.syncSWorld.getNextLUID();contact.brandNew=true;contact.dirty=true;contact.mail=emailL[i];contact.displayName="Invited via email.";contact.requiresInvitationEmail=true;this.cacheLeft[contact.id]=contact;this.cacheLeft.syncSWorldContactAdded(false,contact);}};SWApp.prototype.shareContactsDialog=function(){SwContactShareDlg.show().init();};function getCurrentlyImportingColumns(){var columns=[];columns.push({id:"displayName",label:"Display Name",width:157,visible:true});columns.push({id:"mail",label:"Email",width:200,visible:true});return columns;}
function getLeftColumns(){var columns=[];columns.push({id:"displayName",label:"Display Name",width:100,visible:true});columns.push({id:"mail",label:"Email",width:150,visible:true});columns.push({id:"shareReadWrite",label:"Shared",width:70,visible:true});return columns;}
function getRightColumns(){var columns=[];columns.push({id:"displayName",label:"Display Name",width:143,visible:true});columns.push({id:"mail",label:"Email",width:174,visible:true});return columns;}
function getCurrentlyInvitingColumns(){var columns=[];columns.push({id:"displayName",label:"Display Name",width:143,visible:true});columns.push({id:"mail",label:"Email",width:174,visible:true});columns.push({id:"perm",label:"Perm",width:37,visible:true});return columns;}
var INTERNAL_FilterContactsCacheLeft=(function(){D.inherits(SwContactCache);function D(group,reverse){this.group=group;this.reverse=reverse;SwContactCache.call(this,{syncSWorld:swApp.syncSWorld});this.initDataFromSyncSWorld();var groupUserIDs=SwContact.getGroupUserIDs(this.group);this.contactIDs=this.swIDs2Luids(groupUserIDs);}
D.prototype.includeFromMainCache=function(calUserIDs){var model=swApp.syncSWorld.swContactModel;if(!model){return;}
for(var contactLUID in model){if(model.hasOwnProperty(contactLUID)){var contactData=model[contactLUID];if(!contactData.swId){continue;}
for(var i=0;i<calUserIDs.length;++i){if(contactData.swId==calUserIDs[i]){this.syncSWorldContactAdded(true,contactData);}}}}
this.contactIDs=this.swIDs2Luids(calUserIDs);};D.prototype.formatHTML=function(rec,col,buf){if(col=="shareReadWrite"){var groupID=swApp.swContactShareDlg.abGroupIDSelect.getValue();if(rec.belongsToGroupID(groupID)){var swId=rec.get("swId");if(containsNum(swApp.syncSWorld.mayShareContactsWithOthersS,swId)){if(rec.canWriteGroupID(groupID)){buf("R/W");}
else{buf("R/O");}}
else{if(rec.canWriteGroupID(groupID)){buf("Invite R/W");}
else{buf("Invite R/O");}}}
else{if(rec._data.syncSWorldContact.shareReadWrite=="true"){buf("Invite R/W");}
else{buf("Invite R/O");}}}
else{buf(rec.get(col).htmlEscape());}};D.prototype.getIDs=function(){return this.contactIDs;};D.prototype.addContactID=function(id){for(var i=0;i<this.contactIDs.length;++i){if(this.contactIDs[i]==id){return false;}}
this.contactIDs.push(id);return true;};D.prototype.removeContactID=function(id){this.contactIDs.remove(id);};D.prototype.clearContactIDs=function(){this.contactIDs=[];};D.prototype._getUserIDs=function(group){var groupID=SwContact.getGroupID(group);var csIDs=[];var readWrite=false;var prepend="";for(var i=0;i<this.contactIDs.length;++i){var rec=this.get(this.contactIDs[i]);var swId=rec._data.syncSWorldContact.swId;if(rec.belongsToGroupID(groupID)){if(containsNum(swApp.syncSWorld.mayShareContactsWithOthersS,swId)){if(rec.canWriteGroupID(groupID)){prepend="";}
else{prepend="-";}}
else{if(rec.canWriteGroupID(groupID)){prepend="";}
else{prepend="-";}}}
else{if(rec._data.syncSWorldContact.shareReadWrite=="true"){prepend="";}
else{prepend="-";}}
if(rec._data.syncSWorldContact.swId){csIDs.push(prepend+rec._data.syncSWorldContact.swId);}
else{csIDs.push(prepend+rec.getEmail());}}
return csIDs.join(",");};return D;})();var INTERNAL_FilterContactsCacheRight=(function(){D.inherits(SwContactCache);function D(group,reverse){this.group=group;this.reverse=reverse;SwContactCache.call(this,{syncSWorld:swApp.syncSWorld});this.initDataFromSyncSWorld();}
D.prototype.getIDs=function(){var idM=swApp.contactCache.getContactLuidsWithSWId().toHash();var idL=Array.hashKeys(idM);return idL;};return D;})();})();(function(){SwColLayout.inherits(DlContainer);function SwColLayout(args){if(args){D.setDefaults(this,args);DlContainer.call(this,args);}}
eval(Dynarch.EXPORT("SwColLayout"));D.DEFAULT_ARGS={_scrollBars:["scroll",true],_fillParent:["fillParent",true]};P.setContent=function(lines){if(!(lines instanceof Array)){lines=lines.replace(/^\s+/,"").replace(/\s+$/,"");lines=lines.split(/\s*<sep\s*\x2f?>\s*/);}
var html=String.buffer("<table class='SwColLayout-topTable'>");var ids={};var maxcols=0;function make_ids(s,id){return ids[id]||(ids[id]=Dynarch.ID("SwColLayout"));}
function make_wcont(s,type,id){id=ids[id]||(ids[id]=Dynarch.ID("SwColLayout"));return"<div class='"+type+"' id='"+id+"'></div>";}
lines.foreach(function(line,i){if(i>0){html("<tr class='SwColLayout-separator'><td colspan='$maxcols'><div>&nbsp;</div></td></tr>");}
var cols=0;line=line.replace(/<col([^>]*)>((.|\n)*?)<\x2fcol>/g,function(s,attr,cont){cols++;attr=attr.replace(/\$ID_([a-zA-Z0-9_\-]+)/g,make_ids);cont=cont.replace(/\$ID_([a-zA-Z0-9_\-]+)/g,make_ids);cont=cont.replace(/<([wlr]cont)>\s*(.*?)\s*<\x2f\1>/g,make_wcont);return String.buffer("<td",attr,">",cont,"</td>").get();});maxcols=Math.max(maxcols,cols);html("<tr>",line,"</tr>");},lines);html("</table>");html=String.template(html.get())({maxcols:maxcols});D.BASE.setContent.call(this,html);return ids;};})();(function(){var BASE=DlRPC.inherits(DlEventProxy);function DlRPC(args){if(args){DlEventProxy.call(this);DlRPC.setDefaults(this,args);this.registerEvents(DEFAULT_EVENTS);if(!this.method){this.method=this.data!=null?"POST":"GET";}
this._timeoutID=0;}}
eval(Dynarch.EXPORT("DlRPC"));var DEFAULT_EVENTS=["onStart","onStop","onTimeout"];D.DEFAULT_ARGS={url:["url",null],args:["args",null],callback:["callback",null],method:["method",null],data:["data",null],timeout:["timeout",null]};function onState(req){if(req.readyState==4){delete req['onreadystatechange'];this._request=null;if(this._timeoutID){clearTimeout(this._timeoutID);this._timeoutID=null;}
var args={success:req.status==200,status:req.status,timeout:false,xml:req.responseXML,text:req.responseText};DlSystem().applyHooks("on-rpc-stop",[this,args,req]);this.applyHooks("onStop",[this,args,req]);req.abort();if(this.callback){this.callback(args);}}}
function onTimeout(req){this._request=null;req.abort();DlSystem().applyHooks("on-rpc-timeout",[this,req]);this.applyHooks("onTimeout",[this,req]);if(this.callback){this.callback({success:false,timeout:true});}}
P.call=function(newArgs){if(newArgs!=null){Dynarch.merge(this,newArgs);}
var req,urlargs=false,i;if(window.XMLHttpRequest){req=new XMLHttpRequest();}else if(window.ActiveXObject){req=new ActiveXObject("Microsoft.XMLHTTP");}else{throw"Browser does not support XMLHttpRequest";}
this._request=req;req.onreadystatechange=onState.$(this,req);var args=this.args;if(args){urlargs=[];for(i in args){urlargs.push(escape(i)+"="+escape(args[i]));}
if(urlargs.length==0){urlargs=false;}
else{urlargs=urlargs.join("&");}}
var url=this.url;switch(this.method){case"POST":var data=this.data;if(urlargs&&data){url+="?"+urlargs;}
req.open("POST",url,true);if(!data){req.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=UTF-8");this._start(urlargs);}else{if(typeof data!="string"){data=DlJSON.encode(data);req.setRequestHeader("Content-Type","text/javascript; charset=UTF-8");}
this._start(data);}
break;case"GET":if(urlargs){url+="?"+urlargs;}
req.open("GET",url,true);this._start(null);break;}};P._start=function(data){if(this.timeout){this._timeoutID=onTimeout.delayed(this.timeout,this,this._request);}
else{this._timeoutID=0;}
DlSystem().applyHooks("on-rpc-start",[this]);this.applyHooks("onStart",[this]);this._request.send(data);};})();SWApp.prototype.shareCalView=function(){if(this.shareCalendarContainerR.children(null).length>0){this.shareCalendarContainerR.destroyChildWidgets();}
var layout=new DlLayout({parent:this.shareCalendarContainerR,outerSpace:20});var vbox=new DlVbox({});var hbox=new DlHbox({parent:vbox});var img=new DlLabel({parent:hbox,label:"<img src='images/crystal/sharemanager.png' align='left'></img>"});hbox.addSpace();hbox.addSpace();hbox.addSpace();var title=new DlLabel({parent:hbox,label:"<b>Share Calendars</b>",className:"shareCalView-title"});vbox.addSpace();vbox.addSeparator();var shareFunction=function(){var email=this.getData("newEntry").getValue().trim();if(email.length<4){alert("Invalid email:"+email);return;}
if(email.indexOf("@")<1){alert("Invalid email:"+email);return;}
if(email.indexOf(" ")>0){alert("Only one email at a time.");return;}
var userEmail;for(var i=0;i<swApp.syncSWorld.userSettingsDTO.emailC.length;++i){userEmail=swApp.syncSWorld.userSettingsDTO.emailC[i];if(userEmail==email){alert("There is no need to share with yourself.");return;}}
var questionDlg=new DlDialog({modal:false,title:"Grant Sharing Privileges"});var cont=new DlContainer({parent:questionDlg});cont.setSize({x:400});var calendarName=this.getData("calendarName");cont.setContent("<div style='padding: 20px'><b>Share '"+
calendarName+"' with "+email+"?</b></div>");var box=new DlHbox({parent:cont,borderSpacing:5});box.setAlign("center");var dlgConfirmShareButton=new DlButton({parent:box,label:"<div style='width:9em'>"+
swApp.i18n("Share")+"</div>"});var cancelButton=new DlButton({parent:box,label:"<div style='width:5em'>"+swApp.i18n("Cancel")+"</div>"});var success=function(response){var iCalendarInfo=this.getData("iCalendarInfo");if(!iCalendarInfo.emailModeM){iCalendarInfo.emailModeM={};}
var email=this.getData("newEntry").getValue();var mode=this.getData("modeSelect").getValue();iCalendarInfo.emailModeM[email]=mode;swApp.syncSWorld.saveUserSettingsDTO();alert("Share calendar succeeded.");swApp.shareCalView();};var failed=function(response){alert("Share calendar failed.");};dlgConfirmShareButton.addEventListener("onClick",function(){questionDlg.destroy();var command={};command.iCalendarID=this.getData("iCalendarID");command.recipientEmail=this.getData("newEntry").getValue();command.mode=this.getData("modeSelect").getValue();swApp.syncSWorld.sendRequest(command,"shareCalendar",success.$(this),failed);}.$(this));cancelButton.addEventListener("onClick",function(){questionDlg.destroy();});questionDlg.centerOnParent();questionDlg.show();};var options=[{label:swApp.i18n("read/write"),value:6},{label:swApp.i18n("read-only"),value:4}];var words=swApp.syncSWorld.getSwContactModelEmails();words.sort();var tmp=null;var enterEmail=swApp.i18n("Enter email address");var iCalendarInfoL=swApp.syncSWorld.userSettingsDTO.ICalendarInfoL;for(var i=0;i<iCalendarInfoL.length;++i){var iCalendarInfo=iCalendarInfoL[i];tmp=new DlLabel({parent:vbox,label:iCalendarInfo.name,className:"shareCalView-calname"});vbox.addSpace();var tmpHbox=new DlHbox({parent:vbox});var newEntry=new DlCompletionEntry({parent:tmpHbox,emptyText:enterEmail,width:"30em"});newEntry.addEventListener("onCompletion",swApp.syncSWorld.completionHandler.$(newEntry,words));tmpHbox.addSpace();tmpHbox.addSpace();var grantPermissionSelect=new DlRadioSelect({parent:tmpHbox,options:options,value:6});tmpHbox.addSpace();var grantSharingButton=new DlButton({parent:tmpHbox,label:swApp.i18n("Grant Sharing")});grantSharingButton.setData("calendarName",iCalendarInfo.name);grantSharingButton.setData("iCalendarID",iCalendarInfo.ICalendarID);grantSharingButton.setData("modeSelect",grantPermissionSelect);grantSharingButton.setData("newEntry",newEntry);grantSharingButton.setData("iCalendarInfo",iCalendarInfo);grantSharingButton.addEventListener("onClick",shareFunction.$(grantSharingButton));for(var email in iCalendarInfo.emailModeM){if(iCalendarInfo.emailModeM.hasOwnProperty(email)){var mode=iCalendarInfo.emailModeM[email];var swShareCal=new SwShareCal({parent:vbox,email:email,permission:mode,options:options,iCalendarInfo:iCalendarInfo});}}
vbox.addSpace();vbox.addSeparator();}
layout.packWidget(vbox,{pos:"top"});this.rightNotebook.showPane(this.SHARE_CALENDAR_PAGE);};(function(){var BASE=SwShareCal.inherits(DlContainer);function SwShareCal(args){if(args){D.setDefaults(this,args);this._focusable=true;BASE.constructor.call(this,args);}
else{throw("SwShareCal() missing args.");}}
eval(Dynarch.EXPORT("SwShareCal"));D.DEFAULT_ARGS={_email:["email",""],_iCalendarInfo:["iCalendarInfo",""],_permission:["permission",4],_options:["options",null]};P.initDOM=function(){BASE.initDOM.call(this);var hbox=new DlHbox({parent:this});this._emailEntry=new DlEntry({parent:hbox,label:this._email,width:"30em",value:this._email,disabled:true});hbox.addSpace();hbox.addSpace();var permLabel="read/write";if(this._permission==4){permLabel="read-only";}
this._permissionLabel=new DlLabel({parent:hbox,label:permLabel});hbox.addSpace();hbox.addSpace();this._sharingButton=new DlButton({parent:hbox,label:swApp.i18n("Revoke Sharing")});this._sharingButton.addEventListener("onClick",function(){var questionDlg=new DlDialog({modal:false,title:"Revoke Sharing Privileges"});var cont=new DlContainer({parent:questionDlg});cont.setSize({x:400});cont.setContent("<div style='padding: 20px'><b>Stop sharing '"+this._iCalendarInfo.name+"' with "+this._email+"?</b></div>");var box=new DlHbox({parent:cont,borderSpacing:5});box.setAlign("center");var stopSharingButton=new DlButton({parent:box,label:"<div style='width:9em'>"+
swApp.i18n("Stop Sharing")+"</div>"});var cancelButton=new DlButton({parent:box,label:"<div style='width:5em'>"+swApp.i18n("Cancel")+"</div>"});var success=function(response){this.display(false);var email=this._emailEntry.getValue();delete this._iCalendarInfo.emailModeM[email];swApp.syncSWorld.saveUserSettingsDTO();alert("stopSharingCalendar succeeded.");};var failed=function(response){alert("stopSharingCalendar failed.");};stopSharingButton.addEventListener("onClick",function(){questionDlg.destroy();var command={};command.iCalendarID=this._iCalendarInfo.ICalendarID;command.recipientEmail=this._email;swApp.syncSWorld.sendRequest(command,"stopSharingCalendar",success.$(this),failed);}.$(this));cancelButton.addEventListener("onClick",function(){questionDlg.destroy();});questionDlg.centerOnParent();questionDlg.show();}.$(this));};})();(function(){var BASE=SwDataGrid.inherits(DlDataGrid);function SwDataGrid(args){if(args){DlDataGrid.call(this,args);}}
eval(Dynarch.EXPORT("SwDataGrid"));D.DEFAULT_ARGS={};P.setColWidth=function(col,w){BASE.setColWidth.call(this,col,w);var columnsCopy=this._data.getColumns();var prefsCol=columnsCopy[col.index];if(prefsCol){prefsCol.width=w;swApp.syncSWorld.saveObject(this._data.getColumnsStorageKey(),columnsCopy);}};P.setColVisible=function(col,v){BASE.setColVisible.call(this,col,v);var columnsCopy=this._data.getColumns();var prefsCol=columnsCopy[col.index];if(prefsCol){prefsCol.visible=v;swApp.syncSWorld.saveObject(this._data.getColumnsStorageKey(),columnsCopy);}};P.getRecordIDs=function(){return this._records.array.slice();};P.getMappedIndex=function(src,dest,columnsCopy){var index=0;for(var j=0;j<columnsCopy.length;++j){var col=columnsCopy[j];if(col.visible==false){continue;}
if(col.id==src._field_id){src.mappedIndex=index;}
if(col.id==dest._field_id){dest.mappedIndex=index;}
++index;}};P.reorderColumn=function(src,dest,after){var columnsCopy=this._data.getColumns();this.getMappedIndex(src,dest,columnsCopy);this._reorderColumnOrig(src,dest,after);var srcCopy;var preMoveSrcIndex;for(var i=0;i<columnsCopy.length;++i){srcCopy=columnsCopy[i];if(srcCopy.id==src._field_id){preMoveSrcIndex=i;break;}}
columnsCopy.splice(preMoveSrcIndex,1);columnsCopy.splice(src.index<dest.index?dest.index-1:dest.index,0,srcCopy);var columnsStorageKey=this._data.getColumnsStorageKey();swApp.syncSWorld.saveObject(columnsStorageKey,columnsCopy);};P._reorderColumnOrig=function(src,dest,after){try{var si=src.index;var di=dest.index;if(after)
di++;var a=this._cols;a.splice(si,1);a.splice(si<di?di-1:di,0,src);for(var i=0;i<a.length;++i)
a[i].index=i;var srcTmp;var destTmp;for(var i=this.getRowsContainer().firstChild;i;i=i.nextSibling){var cells=i.firstChild.rows[0].cells;srcTmp=cells[src.mappedIndex];if(!srcTmp){continue;}
destTmp=cells[dest.mappedIndex];srcTmp.parentNode.insertBefore(srcTmp,destTmp||null);}
var cells=this.getHeaderRow().cells;srcTmp=cells[si];destTmp=cells[di];srcTmp.parentNode.insertBefore(srcTmp,destTmp||null);this._computeColPos();}catch(ex){swApp.logEX(ex);}};})();(function(){var BASE=SwStatus.inherits(DlContainer);function SwStatus(args){if(args){D.setDefaults(this,args);BASE.constructor.call(this,args);}
else{swApp.log("SwStatus missing args.");throw("SwStatus missing args.");}}
eval(Dynarch.EXPORT("SwStatus"));D.DEFAULT_ARGS={_swEvent:["swEvent",null]};P.statusOptionsEvent=[{label:"Not Specified",value:"notSpecified"},{label:"Tentative",value:"TENTATIVE"},{label:"Confirmed",value:"CONFIRMED"},{label:"Cancelled",value:"CANCELLED"}];P.statusOptionsTask=[{label:"Not Specified",value:"notSpecified"},{label:"Needs Action",value:"NEEDS-ACTION"},{label:"In Process",value:"IN-PROCESS"},{label:"Completed On",value:"COMPLETED"},{label:"Cancelled",value:"CANCELLED"}];P.initDOM=function(){BASE.initDOM.call(this);var hbox=new DlHbox({parent:this});this.statusSelect=new DlRadioSelect({parent:hbox});this.statusSelect.addEventListener("onChange",function(old_val,new_val){if(old_val==new_val){return;}
if(new_val=="COMPLETED"){this._completedDate.disabled(false);this.spinnerComplete.setValue(100);}
else{this._completedDate.disabled(true);var val=this.spinnerComplete.getValue();if(val==100){this.spinnerComplete.setValue(75);}}}.$(this));hbox.addSpace();var date=new Date();var defaultStartDay=0;if(swApp.syncSWorld.userSettingsDTO.firstWeekDay=="2"){defaultStartDay=1;}
var dateFormat=swApp.getDateFormat();this._completedDate=new DlButtonCalendar({parent:hbox,date:date,dateFormat:dateFormat,calendar:{firstDay:defaultStartDay,fixedFirstDay:false,withMenu:true}});hbox.addSpace();this.spinnerComplete=new DlSpinner({parent:hbox,minVal:0,maxVal:100,value:0});this.spinnerComplete.addEventListener("onSpin",function(){var val=this.spinnerComplete.getValue();if(val==100){this.statusSelect.setValue("COMPLETED");}
else{val=this.statusSelect.getValue();if(val=="COMPLETED"){this.statusSelect.setValue("IN-PROCESS");}}}.$(this));hbox.addSpace();this.completeLabel=new DlLabel({parent:hbox,label:" % complete"});};P.refreshView=function(swEvent){if(swEvent){this._swEvent=swEvent;}
var isEvent=false;if(this._swEvent._objectType=="SwEvent"){this.statusSelect.setOptions(this.statusOptionsEvent);isEvent=true;this._completedDate.disabled(true);this.spinnerComplete.disabled(true);this.completeLabel.disabled(true);}
else{this.statusSelect.setOptions(this.statusOptionsTask);this._completedDate.disabled(false);this.spinnerComplete.disabled(false);this.completeLabel.disabled(false);}
this.statusSelect.setValue("notSpecified");if(this._swEvent._data.syncSWorldCalComp.status){this.statusSelect.setValue(this._swEvent._data.syncSWorldCalComp.status);}
if(this._swEvent._data.syncSWorldCalComp.completedYear){this.spinnerComplete.setValue(100);this.statusSelect.setValue("COMPLETED");}
else if(this._swEvent._data.syncSWorldCalComp.percentComplete){var spinnerValue=parseInt(this._swEvent._data.syncSWorldCalComp.percentComplete,10);this.spinnerComplete.setValue(spinnerValue);if(spinnerValue==100){this.statusSelect.setValue("COMPLETED");}
else if(spinnerValue===0){this.statusSelect.setValue("notSpecified");}
else{this.statusSelect.setValue("IN-PROCESS");}}
else{this.spinnerComplete.setValue(0);}
this.dateFormat=swApp.getDateFormat();var eventDate=new Date();var completedYear=this._swEvent._data.syncSWorldCalComp.completedYear;var completedMonth=this._swEvent._data.syncSWorldCalComp.completedMonth;var completedDayOfMonth=this._swEvent._data.syncSWorldCalComp.completedDayOfMonth;if(completedYear){eventDate.setDate(1);eventDate.setMonth(completedMonth-1);eventDate.setFullYear(completedYear);eventDate.setDate(completedDayOfMonth);}
this._completedDate.getCalendar().selectDate(eventDate);this._completedDate.getCalendar().date=eventDate;this._completedDate.getButton().label(eventDate.print(this.dateFormat));};P.saveToEvent=function(event){var percentComplete=this.spinnerComplete.getValue();if(this._swEvent._objectType=="SwTask"){if(percentComplete>0){event.percentComplete=percentComplete;}
else{delete event.percentComplete;}}
if(this.statusSelect.getValue()=="notSpecified"){delete event.status;}
else{event.status=this.statusSelect.getValue();}
if(this.statusSelect.getValue()=="COMPLETED"){var date=this._completedDate.getCalendar().date;event.completedTimeZone=swApp.syncSWorld.userSettingsDTO.timeZoneID;event.completedYear=date.getFullYear();event.completedMonth=date.getMonth()+1;event.completedDayOfMonth=date.getDate();event.completedHourOfDay=date.getHours();event.completedMinute=date.getMinutes();event.completedSecond=date.getSeconds();event.completedIsDate=true;}};})();SWApp.prototype.taskView=function(idL){document.title=this.i18n("ScheduleWorld Tasks");if(!this.leftNotebook.display()){this.leftNotebook.display(true);this.desktopResizeBar.display(true);this.toolbarNotebook.display(true);this.desktopLayout.doLayout();}
var children=this.tasksContainerL.children();if(children&&children.length>0){this.leftNotebook.showPane(this.TASKS_PAGE);this.rightNotebook.showPane(this.TASKS_PAGE);this.toolbarNotebook.showPane(this.TOOLBAR_TASKS_PAGE);return;}
this.createTaskButton=new DlButton({parent:this.toolbarTasks,iconClass:"ToolbarTodo",classes:this.toolbarClasses,tooltip:this.i18n("Create Task")});var showTodayButton=new DlButton({parent:this.toolbarTasks,iconClass:"IconToday",classes:this.toolbarClasses,tooltip:this.i18n("Today")});this.taskDeleteButton=new DlButton({parent:this.toolbarTasks,iconClass:"ToolbarDelete",classes:this.toolbarClasses,tooltip:this.i18n("Delete")});var showXDayButton=new DlButton({parent:this.toolbarTasks,iconClass:"ToolbarEvent",classes:this.toolbarClasses,tooltip:this.i18n("Show X Days")});var monthButton=new DlButton({parent:this.toolbarTasks,iconClass:"IconMonth",classes:this.toolbarClasses,tooltip:this.i18n("Show Month")});var syncButton=new DlButton({parent:this.toolbarTasks,iconClass:"ToolbarSync",classes:this.toolbarClasses,tooltip:this.i18n("Sync Calendars")});var searchButton=new DlButton({parent:this.toolbarTasks,iconClass:"ToolbarSearch",classes:this.toolbarClasses,tooltip:this.i18n("Search Tasks")});this.toolbarTasks.addFiller();this.toolbarNotebook.showPane(this.TOOLBAR_TASKS_PAGE);showTodayButton.addEventListener("onClick",function(){var now=new Date();swApp.smallCalendarTask.setToday();});this.taskDeleteButton.addEventListener("onClick",function(){var array=this.taskGridSelectionModel.getArray();if(!array||array.length===0){return;}
if(array.length==1){this.taskCache.removeWithDialog(array[0]);}
else{this.taskCache.removeWithDialog(array);}}.$(this));showXDayButton.addEventListener("onClick",function(){var now=new Date();swApp.swCalendarTask.displayDate(now,this.firstDay);swApp.taskNDayView(7);});monthButton.addEventListener("onClick",function(){swApp.taskMonthView();});syncButton.addEventListener("onClick",function(){swApp.syncSWorld.todoSync(swApp.syncSWorld.SYNC_NORMAL);});searchButton.addEventListener("onClick",function(){swApp.showTaskSearchDialog();});var layout=new DlLayout({parent:this.tasksContainerR});var titleBoxCont=new DlContainer({className:"Sw2-MiniToolBar"});var titleBox=new DlHbox({parent:titleBoxCont});var listButton=new DlButton({label:"List",parent:titleBox});listButton.addEventListener("onClick",function(){swApp.taskListView();});titleBox.addSpace();var dayButton=new DlButton({label:"Day",parent:titleBox});dayButton.addEventListener("onClick",function(){swApp.taskNDayView(1);});titleBox.addSpace();var fourDaysButton=new DlButton({label:"4 Days",parent:titleBox});fourDaysButton.addEventListener("onClick",function(){swApp.taskNDayView(4);});titleBox.addSpace();var weekButton=new DlButton({label:"Week",parent:titleBox});weekButton.addEventListener("onClick",function(){swApp.taskNDayView(7);});titleBox.addSpace();var showMonthButton=new DlButton({label:"Month",parent:titleBox});showMonthButton.addEventListener("onClick",function(){swApp.taskMonthView();});titleBox.addSpace();var printButton=new DlButton({label:"Print",parent:titleBox});printButton.addEventListener("onClick",function(){swApp.taskListPrint();});tzSelectHandlerTask=function(selectedTZ){swApp.tzButtonMenuTask._mainBtn.label(selectedTZ);swApp.manageTZLRU(selectedTZ);swApp.syncSWorld.setUserTimeZone(selectedTZ);swApp.syncSWorld.saveUserSettingsDTO(tzSelectHandlerTaskStep2.$(this,selectedTZ));};tzSelectHandlerTaskStep2=function(selectedTZ){var displayDate=swApp.swCalendarTask.getDisplayDate();swApp.taskCache.setTimeZone(selectedTZ,displayDate);swApp.swCalendarTask.refresh();};titleBox.addSeparator("wide-separator");var userTimeZoneID=this.syncSWorld.userSettingsDTO.timeZoneID;this.tzButtonMenuTask=new DlButtonMenu({parent:titleBox,label:userTimeZoneID,connected:true});this.tzMenuTask=this.createMenuTZ(this.tzMenuL,tzSelectHandlerTask);this.tzButtonMenuTask.setMenu(this.tzMenuTask);titleBox.addFiller();layout.packWidget(titleBoxCont,{pos:"top"});this.taskViewNotebook=new DlNotebook({name:"taskViewNotebook"});layout.packWidget(this.taskViewNotebook,{pos:"bottom",fill:"*"});this.taskListContainer=new DlContainer({name:"taskListContainer",parent:this.taskViewNotebook});this.taskDayContainer=new DlContainer({name:"taskDayContainer",parent:this.taskViewNotebook});this.taskMonthContainer=new DlContainer({name:"taskMonthContainer",parent:this.taskViewNotebook});var leftContainer=new DlContainer({parent:this.tasksContainerL});leftContainer.setStyle({padding:"5px"});var defaultStartDay=0;if(swApp.syncSWorld.userSettingsDTO.firstWeekDay=="2"){defaultStartDay=1;}
this.smallCalendarTask=new DlCalendar({parent:leftContainer,firstDay:defaultStartDay,fixedFirstDay:false,withMenu:true});this.smallCalendarTask.setStyle("width","100%");this.smallCalendarTask.addEventListener("onSelect",this.smallTaskCalendarChangedDate);this.smallCalendarTask.addEventListener("onRendered",this.smallTaskCalendarRendered);var sw2DefaultICalendarID=null;var noneSyncEnabled=true;var iCalendarInfoL=null;var iCalendarInfo=null;var i=0;if(this.syncSWorld.userSettingsDTO){iCalendarInfoL=this.syncSWorld.userSettingsDTO.ICalendarInfoL;for(i=0;i<iCalendarInfoL.length;++i){iCalendarInfo=iCalendarInfoL[i];if(i===0){sw2DefaultICalendarID=iCalendarInfo.ICalendarID;}
if(iCalendarInfo.syncEnabled){sw2DefaultICalendarID=iCalendarInfo.ICalendarID;noneSyncEnabled=false;break;}}}
if(this.syncSWorld.userSettingsDTO.sw2DefaultICalendarID){sw2DefaultICalendarID=this.syncSWorld.userSettingsDTO.sw2DefaultICalendarID;}
else{this.syncSWorld.userSettingsDTO.sw2DefaultICalendarID=sw2DefaultICalendarID;this.syncSWorld.saveUserSettingsDTO(this.taskViewStep2.$(this,noneSyncEnabled,sw2DefaultICalendarID,leftContainer));return;}
this.taskViewStep2(noneSyncEnabled,sw2DefaultICalendarID,leftContainer);};SWApp.prototype.taskViewStep2=function(noneSyncEnabled,sw2DefaultICalendarID,leftContainer){var colors=[];var colourObject=null;var rgbColor=null;var iCalendarInfo=null;if(this.syncSWorld.userSettingsDTO){if(!this.syncSWorld.userSettingsDTO.ICalendarIDColourM){this.syncSWorld.userSettingsDTO.ICalendarIDColourM={};}
iCalendarInfoL=this.syncSWorld.userSettingsDTO.ICalendarInfoL;for(i=0;i<iCalendarInfoL.length;++i){iCalendarInfo=iCalendarInfoL[i];if(iCalendarInfo.ownerCalUserID!=this.syncSWorld.userSettingsDTO.calUserID){continue;}
colourObject={};colourObject.id=iCalendarInfo.ICalendarID;if(noneSyncEnabled){colourObject.checked=true;iCalendarInfo.syncEnabled=true;}
else{colourObject.checked=iCalendarInfo.syncEnabled;}
colourObject.label=iCalendarInfo.name;rgbColor=this.syncSWorld.userSettingsDTO.ICalendarIDColourM[iCalendarInfo.ICalendarID];if(rgbColor){colourObject.color=rgbColor;}
else{colourObject.color=this.pickNextColour(iCalendarInfo.ICalendarID);}
colors.push(colourObject);}}
this.taskMultiSelector=new SwCalMultiSelector({parent:leftContainer,title:this.i18n("My Calendars (Tasks)"),data:this.taskCache,colors:colors});this.taskMultiSelector.setStyle({marginTop:"10px"});this.taskMultiSelector.setLeftLink("Share").addEventListener("onClick",function(){swApp.shareCalView();}.$(this));this.taskMultiSelector.setRightLink("Create").addEventListener("onClick",function(){swApp.prefsViewCalendar();}.$(this));this.taskMultiSelector.setSendToServer(true);colors=[];if(this.syncSWorld.userSettingsDTO){if(!this.syncSWorld.userSettingsDTO.ICalendarIDColourM){this.syncSWorld.userSettingsDTO.ICalendarIDColourM={};}
iCalendarInfoL=this.syncSWorld.userSettingsDTO.ICalendarInfoL;for(i=0;i<iCalendarInfoL.length;++i){iCalendarInfo=iCalendarInfoL[i];if(iCalendarInfo.ownerCalUserID==this.syncSWorld.userSettingsDTO.calUserID){continue;}
colourObject={};colourObject.id=iCalendarInfo.ICalendarID;colourObject.checked=true;colourObject.label=iCalendarInfo.name;rgbColor=this.syncSWorld.userSettingsDTO.ICalendarIDColourM[iCalendarInfo.ICalendarID];if(rgbColor){colourObject.color=rgbColor;}
else{colourObject.color=this.pickNextColour(iCalendarInfo.ICalendarID);}
colors.push(colourObject);}}
this.otherTaskMultiSelector=new SwCalMultiSelector({parent:leftContainer,title:this.i18n("Other Calendars"),data:this.taskCache,colors:colors});this.otherTaskMultiSelector.setStyle({marginTop:"10px"});this.otherTaskMultiSelector.setRightLink("Search").addEventListener("onClick",function(){alert("Search public tasks not available yet.");});this.otherTaskMultiSelector.setSendToServer(true);this.taskNDayView(7);this.filterCont=new DlContainer({parent:leftContainer,scroll:true});this.filterCont.setStyle({padding:"5px"});this.filterGroup=DlRadioGroup.get();this.filterGroup.maxChecked(1);this.filterGroup.addEventListener("onChange",function(){var selectedValueL=this.filterGroup.getValue();for(var i=0;i<selectedValueL.length;++i){var selected=selectedValueL[i];var ids=swApp.taskCache.getIDsUsingFilter(selected);this.taskListView(ids,true);return;}}.$(this));this.allCB=new DlRadioButton({parent:this.filterCont,label:"All",value:"all",group:this.filterGroup,checked:true});this.todayCB=new DlRadioButton({parent:this.filterCont,label:"Today",value:"today",group:this.filterGroup,checked:false});this.next7DaysCB=new DlRadioButton({parent:this.filterCont,label:"Next Seven Days",value:"next7Days",group:this.filterGroup,checked:false});this.notStartedCB=new DlRadioButton({parent:this.filterCont,label:"Not Started Tasks",value:"notStarted",group:this.filterGroup,checked:false});this.overdueCB=new DlRadioButton({parent:this.filterCont,label:"Overdue Tasks",value:"overdue",group:this.filterGroup,checked:false});this.completedCB=new DlRadioButton({parent:this.filterCont,label:"Completed Tasks",value:"completed",group:this.filterGroup,checked:false});this.incompleteCB=new DlRadioButton({parent:this.filterCont,label:"Incomplete Tasks",value:"incomplete",group:this.filterGroup,checked:false});this.hideFutureCB=new DlRadioButton({parent:this.filterCont,label:"Hide Future Tasks",value:"hideFuture",group:this.filterGroup,checked:false});this.leftNotebook.showPane(this.TASKS_PAGE);this.rightNotebook.showPane(this.TASKS_PAGE);this.syncSWorld.todoSync(swApp.syncSWorld.SYNC_NORMAL);};SWApp.prototype.defaultColours=["#CC3333","#3366CC","#66AA00","#329262","#EE8800","#A87070","#B08B59","#DD4477","#994499","#22AA99","#D6AE00","#8C6D8C","#7083A8","#5C8D87","#898951"];SWApp.prototype.pickNextColour=function(iCalendarID){if(!this.syncSWorld.userSettingsDTO.ICalendarIDColourM){this.syncSWorld.userSettingsDTO.ICalendarIDColourM={};return this.defaultColours[0];}
var alreadyUsed=false;for(var i=0;i<this.defaultColours.length;++i){alreadyUsed=false;var possibleColour=this.defaultColours[i];var iCalendarInfoL=this.syncSWorld.userSettingsDTO.ICalendarInfoL;for(var j=0;j<iCalendarInfoL.length;++j){var iCalendarInfo=iCalendarInfoL[j];var rgbColour=this.syncSWorld.userSettingsDTO.ICalendarIDColourM[iCalendarInfo.ICalendarID];if(!rgbColour){continue;}
if(rgbColour==possibleColour){alreadyUsed=true;break;}}
if(!alreadyUsed){if(iCalendarID){swApp.syncSWorld.userSettingsDTO.ICalendarIDColourM[iCalendarID]=possibleColour;swApp.syncSWorld.saveUserSettingsDTO();}
return possibleColour;}}
return this.defaultColours[0];};SWApp.prototype.getTaskSelectedICalendarIDL=function(){var array=this.taskMultiSelector._group.getValue();return array;};SWApp.prototype.smallTaskCalendarRendered=function(){if(!this.date){return;}
if(!swApp.taskCache.currentYear){return;}
if(this.date.getFullYear()!=swApp.taskCache.currentYear||this.date.getMonth()+1!=swApp.taskCache.currentOneBasedMonth){swApp.taskSyncStoppedHandler();}
else{swApp.swCalendarTask.displayDate(this.date);}};SWApp.prototype.smallTaskCalendarChangedDate=function(cleared,other,secondClick,date){if(!date){return;}
if(date.getFullYear()!=swApp.taskCache.currentYear||date.getMonth()+1!=swApp.taskCache.currentOneBasedMonth){swApp.taskSyncStoppedHandler();}
else{swApp.swCalendarTask.displayDate(date);}};SWApp.prototype.showTaskSearchDialog=function(){var dlg=new DlDialog({title:"Search For A Task",quitBtn:"destroy"});var cont=new DlContainer({parent:dlg});cont.getElement().style.padding="20px";var fg=new DlFieldGrid({parent:cont});var tmp=fg.addField({name:"keys",label:"<b>Properties searched:</b>",widget:new DlLabel({label:"Summary, description, location."})});var summaryDlEntry=fg.addField({name:"searchText",label:"<b>Search text:</b>"});tmp=fg.addField({name:"keys",label:"",widget:new DlLabel({label:"(not case sensitive)"})});function addTask2Model(){var searchText=this.getValue();if(!searchText||searchText.length===0){return;}
var idL=swApp.taskCache.search(searchText);swApp.taskListView(idL);dlg.destroy();}
summaryDlEntry.addEventListener("onKey-ENTER",addTask2Model);dlg.centerOnParent();dlg.show();summaryDlEntry.focus();};SWApp.prototype.taskListView=function(idL){this.taskDeleteButton.display(true);var displayIDs;var children=this.taskListContainer.children();if(children&&children.length>0){if(idL&&idL.length>0){displayIDs=idL;}
else{var selectedValueL=this.filterGroup.getValue();if(selectedValueL&&selectedValueL.length>0){var selected=selectedValueL[0];var displayIDs=swApp.taskCache.getIDsUsingFilter(selected);}
else{displayIDs=this.taskCache.getIDs();}}
this.taskGrid.resetIDS(displayIDs);var prev=this.taskGrid.__sortCol;if(prev){if(this.taskGrid.__sortRev){this.taskGrid._onHeadClick(this.taskGrid.getCol(prev),null);this.taskGrid._onHeadClick(this.taskGrid.getCol(prev),null);}
else{delete this.taskGrid.__sortCol;this.taskGrid._onHeadClick(this.taskGrid.getCol(prev),null);}}
this.taskGrid.displayPage(0);this.taskViewNotebook.showPane(this.TASK_LIST_PAGE);return;}
columns=this.taskCache.getColumns();this.taskGridSelectionModel=new DlSelectionModel({});this.taskGrid=new SwDataGrid({parent:this.taskListContainer,cols:columns,data:this.taskCache,fillParent:true,rpp:45,virtualScrolling:true,selection:this.taskGridSelectionModel});if(!this.taskCache.isEmpty()){displayIDs=null;if(idL){displayIDs=idL;this.taskGrid.resetIDS(displayIDs);}
else{displayIDs=this.taskCache.getIDs();this.taskGrid.resetIDS(displayIDs);this.taskGrid._onHeadClick(this.taskGrid.getCol("title"),null);}}
else{this.taskGrid.resetIDS([]);}
this.taskGrid.displayPage(0);this.taskGrid.addEventListener("onBodyDblClick",this.taskListViewDblClick);this.createTaskButton.addEventListener("onClick",this.createNewTask.$(this.taskGrid));this.taskViewNotebook.showPane(this.TASK_LIST_PAGE);};SWApp.prototype.taskListPrint=function(){if(this.taskViewNotebook.getPane()!=this.TASK_LIST_PAGE){this.taskListView();}
swApp._printTitle=swApp.syncSWorld.userSettingsDTO.firstName+" "+
swApp.syncSWorld.userSettingsDTO.lastName;swApp._printTotals=false;swApp._printStyleSheet="swprintgrid.css";swApp._printDlGrid=this.taskGrid;window.open("js/print/print.html");};SWApp.prototype.createNewTask=function(){var iCalendarID=this._data.getDefaultCalendar();var calObj={};calObj.brandNew=true;calObj.dirty=true;calObj.durationMinutes=60;calObj.title="";calObj.iCalendarID=iCalendarID;calObj.id=swApp.syncSWorld.getNextLUID();var calComp=this._data.createCalComp(calObj.id,calObj);this._data.insert(calComp,true);var saveAll=true;swApp.calendarEditView(calComp,swApp.taskView,true,saveAll);};SWApp.prototype.taskListViewDblClick=function(){var sel=this._selection;var selected_ids;if(sel){selected_ids=sel.getArray();}
if(!selected_ids||selected_ids.length===0){swApp.createNewTask.apply(this);return;}
var swTask=this._data.get(selected_ids[0]);swTask._handleWidgetClick();};SWApp.prototype.taskNDayView=function(anNDays){if(anNDays){this.taskNDays=anNDays;}
if(!this.taskNDays){this.taskNDays=7;}
this.taskDeleteButton.display(false);if(this.swCalendarTask){this.swCalendarTask.setNDays(this.taskNDays);this.taskViewNotebook.showPane(this.TASK_DAY_PAGE);return;}
var layout=new DlLayout({parent:this.taskDayContainer});this.swCalendarTask=new SwCalendar({data:this.taskCache,nDays:this.taskNDays});this.taskCache.addEventListener("onChange",function(){swApp.smallCalendarTask.setInfoDates(swApp.taskCache.getInfoDates());});this.taskCache.addEventListener(["onInsert","onDelete"],function(){swApp.smallCalendarTask.setInfoDates(swApp.taskCache.getInfoDates());});this.syncSWorld.addSyncStopListener(this.taskSyncStoppedHandler.$(this));layout.packWidget(this.swCalendarTask,{pos:"right",fill:"*"});var infoDates=this.taskCache.getInfoDates();this.smallCalendarTask.setInfoDates(infoDates);this.smallCalendarTask._cal_tooltip=swApp.taskCache.getDateTooltip;var now=new Date();this.swCalendarTask.refresh(now,null,false);this.swCalendarTask.__doLayout();this.taskViewNotebook.showPane(this.TASK_DAY_PAGE);this.swCalendarTask.scrollToHour(6);};SWApp.prototype.taskSyncStoppedHandler=function(networkFailed){var date=swApp.smallCalendarTask.date;var mustReturn=swApp.taskCache.recalculateAll(date.getFullYear(),date.getMonth()+1,networkFailed);if(mustReturn){return true;}
swApp.swCalendarTask.displayDate(date);if(swApp.swMonthCalendarTask){swApp.swMonthCalendarTask.displayDate(date,0);}
swApp.taskListView();swApp.smallCalendarTask.setInfoDates(swApp.taskCache.getInfoDates());return false;};SWApp.prototype.taskMonthView=function(){this.taskDeleteButton.display(false);var children=this.taskMonthContainer.children();if(children&&children.length>0){this.taskViewNotebook.showPane(this.TASK_MONTH_PAGE);return;}
var layout=new DlLayout({parent:this.taskMonthContainer});this.swMonthCalendarTask=new SwMonthCalendar({data:this.taskCache});layout.packWidget(this.swMonthCalendarTask,{pos:"left",fill:"*"});var dispDate=new Date();dispDate.setDate(15);dispDate.setMonth(this.taskCache.currentOneBasedMonth-1);dispDate.setFullYear(this.taskCache.currentYear);this.swMonthCalendarTask.displayDate(dispDate,0);this.taskViewNotebook.showPane(this.TASK_MONTH_PAGE);};SWApp.prototype.backupRestoreView=function(){document.title=this.i18n("ScheduleWorld Backup / Restore");if(!this.leftNotebook.display()){this.leftNotebook.display(true);this.desktopResizeBar.display(true);this.toolbarNotebook.display(true);this.desktopLayout.doLayout();}
var children=this.backupContainerL.children();if(children&&children.length>0){this.leftNotebook.showPane(this.BACKUP_PAGE_LEFT);this.rightNotebook.showPane(this.backupCurrentRightPaneIndex);this.toolbarNotebook.showPane(this.TOOLBAR_BACKUP_PAGE);return;}
this.restoreButton=new DlButton({parent:this.toolbarBackup,iconClass:"ToolbarRestore",classes:this.toolbarClasses,tooltip:this.i18n("Restore Selected Items")});this.restoreButton.addEventListener("onClick",function(){var array;var forEvents=false;var isCalendar=false;var isContact=false;var isNote=false;if(this.rightNotebook.getCurrentPaneIndex()==this.BACKUP_PAGE_RIGHT_EVENT){forEvents=true;isCalendar=true;array=this.backupEventGridSelectionModel.getArray();}
if(this.rightNotebook.getCurrentPaneIndex()==this.BACKUP_PAGE_RIGHT_TASK){isCalendar=true;array=this.backupTaskGridSelectionModel.getArray();}
if(this.rightNotebook.getCurrentPaneIndex()==this.BACKUP_PAGE_RIGHT_NOTE){isNote=true;array=this.backupNoteGridSelectionModel.getArray();}
var title=swApp.i18n("Restore Events");if(!forEvents){title=swApp.i18n("Restore Tasks");}
if(this.rightNotebook.getCurrentPaneIndex()==this.BACKUP_PAGE_RIGHT_CONTACT){title=swApp.i18n("Restore Contacts");isContact=true;array=this.backupContactGridSelectionModel.getArray();}
if(array.length===0){alert("No items are selected.");return;}
var dlg=new DlDialog({title:title,quitBtn:"destroy"});var cont=new DlContainer({parent:dlg});cont.getElement().style.padding="20px";var fg=new DlFieldGrid({parent:cont});var restoreCount=fg.addField({name:"restoreCount",label:"<b>Number of items:</b>",widget:new DlLabel({label:array.length})});if(isCalendar){var options=[];if(swApp.syncSWorld.userSettingsDTO){var iCalendarInfoL=swApp.syncSWorld.userSettingsDTO.ICalendarInfoL;for(var i=0;i<iCalendarInfoL.length;++i){var iCalendarInfo=iCalendarInfoL[i];options.push({label:iCalendarInfo.name,value:iCalendarInfo.ICalendarID});}}
var calendarSelect=new DlRadioSelect({options:options,value:swApp.eventCache.getDefaultCalendar()});fg.addField({name:"calendar",label:"<b>Destination Calendar:</b>",widget:calendarSelect});}
var btn=new DlButton({parent:cont,label:"Restore"});var btnListener=function(ev){dlg.destroy();var sourceModel;var i;var luid;var item;var itemCopy;if(isCalendar){var iCalendarID=calendarSelect.getValue();if(forEvents){sourceModel=this.backupCacheEvent._syncSWorld.swEventModel[this.backupCacheEvent.getDefaultCalendar()];}
else{sourceModel=this.backupCacheTodo._syncSWorld.swTodoModel[this.backupCacheTodo.getDefaultCalendar()];}
var swEvent=new SwEvent();for(i=0;i<array.length;++i){luid=array[i];item=sourceModel[luid];if(!item){continue;}
itemCopy=Dynarch.makeDeepCopy(item);delete itemCopy.compID;itemCopy.guid=swEvent.createGuid(swApp.syncSWorld,swApp.syncSWorld.username,iCalendarID,swApp.syncSWorld.clientNonce,swApp.syncSWorld.deviceID,luid);itemCopy.dirty=true;itemCopy.brandNew=true;if(forEvents){swApp.syncSWorld.createAndSaveNewEvent(iCalendarID,itemCopy);swApp.syncSWorld.eventCacheInserted(itemCopy);}
else{swApp.syncSWorld.createAndSaveNewTodo(iCalendarID,itemCopy);swApp.syncSWorld.todoCacheInserted(itemCopy);}}
var command={};command.test="ping";swApp.syncSWorld.sendRequest(command,"ping",function(){swApp.syncSWorld.eventAndTodoSync(swApp.syncSWorld.SYNC_NORMAL);});}
else if(isContact){sourceModel=this.backupCacheContact._syncSWorld.swContactModel;for(i=0;i<array.length;++i){luid=array[i];item=sourceModel[luid];itemCopy=Dynarch.makeDeepCopy(item);itemCopy.guid;itemCopy.dirty=true;itemCopy.brandNew=true;itemCopy.daysOld=this.backupCacheContact._syncSWorld.daysOld;var destLuid=swApp.syncSWorld.getNextLUID();itemCopy.id=destLuid;swApp.syncSWorld.swContactModel[destLuid]=itemCopy;swApp.syncSWorld.contactAddedFromServer(itemCopy);}
var command={};command.test="ping";swApp.syncSWorld.sendRequest(command,"ping",function(){swApp.syncSWorld.contactSync(swApp.syncSWorld.SYNC_NORMAL);});}
else if(isNote){sourceModel=this.backupCacheNote._syncSWorld.swNoteModel;for(i=0;i<array.length;++i){luid=array[i];item=sourceModel[luid];itemCopy=Dynarch.makeDeepCopy(item);delete itemCopy.guid;itemCopy.dirty=true;itemCopy.brandNew=true;var destLuid=swApp.syncSWorld.getNextLUID();itemCopy.id=destLuid;swApp.syncSWorld.swNoteModel[destLuid]=itemCopy;swApp.syncSWorld.noteAddedFromServer(itemCopy);}
var command={};command.test="ping";swApp.syncSWorld.sendRequest(command,"ping",function(){swApp.syncSWorld.noteSync(swApp.syncSWorld.SYNC_NORMAL);});}};btn.addEventListener("onClick",btnListener.$(this));dlg.centerOnParent();dlg.show();}.$(this));this.syncSWorldCache={};this.toolbarNotes.addFiller();this.toolbarNotebook.showPane(this.TOOLBAR_BACKUP_PAGE);this.backupCacheEvent=new SwEventCache({timeZoneID:swApp.syncSWorld.userSettingsDTO.timeZoneID});this.backupEventGridSelectionModel=new DlSelectionModel({});this.backupEventGrid=new SwDataGrid({parent:this.backupContainerREvent,data:this.backupCacheEvent,cols:swApp.eventCache.getColumns(),rpp:45,virtualScrolling:true,fillParent:true,selection:this.backupEventGridSelectionModel});this.backupCacheTodo=new SwTaskCache({timeZoneID:swApp.syncSWorld.userSettingsDTO.timeZoneID});this.backupTaskGridSelectionModel=new DlSelectionModel({});this.backupTaskGrid=new SwDataGrid({parent:this.backupContainerRTask,data:this.backupCacheTodo,cols:swApp.taskCache.getColumns(),rpp:45,virtualScrolling:true,fillParent:true,selection:this.backupTaskGridSelectionModel});this.backupCacheContact=new SwContactCache({timeZoneID:swApp.syncSWorld.userSettingsDTO.timeZoneID});this.backupContactGridSelectionModel=new DlSelectionModel({});this.backupContactGrid=new SwDataGrid({parent:this.backupContainerRContact,data:this.backupCacheContact,cols:swApp.contactCache.getColumns(),rpp:45,virtualScrolling:true,fillParent:true,selection:this.backupContactGridSelectionModel});this.backupCacheNote=new SwNoteCache({timeZoneID:swApp.syncSWorld.userSettingsDTO.timeZoneID});this.backupNoteGridSelectionModel=new DlSelectionModel({});this.backupNoteGrid=new SwDataGrid({parent:this.backupContainerRNote,data:this.backupCacheNote,cols:swApp.noteCache.getColumns(),rpp:45,virtualScrolling:true,fillParent:true,selection:this.backupNoteGridSelectionModel});var leftLayout=new DlLayout({parent:this.backupContainerL,outerSpace:5});leftVBox=new DlVbox({});this.backupTreeGroup=DlRadioGroup.get();swApp.backupButton=null;swApp.backupTree=new DlTree({parent:leftVBox});swApp.backupTreeRoot=this.createBackupItem(swApp.backupTree,"root",this.i18n("Backups By Previous Days"),"root");swApp.backupTreeRoot.setTree(this.deferredCreateSystem.$(this));this.backupTreeGroup.addEventListener("onChange",function(){var value=swApp.backupTreeGroup.getValue()[0];swApp.log("Selected value: "+value);button=swApp.backupTreeGroup.getSelected()[0];var index;var daysOld;var iCalendarID;var forEvents;var syncSWorld;var command;if(button.type=="Personal"){swApp.log("Personal");if(value=="Events"||value=="Tasks"){}
else if(value=="Contacts"){}
else if(value=="Notes"){}}
else if(button.type=="System Backups"){swApp.log("System Backups");}
else if(button.type=="events"){index=value.indexOf("-");daysOld=value.substring(0,index);idICalendarID="id"+value.substring(index+1);swApp.log("Show events view for value:"+value);swApp.rightNotebook.showPane(swApp.BACKUP_PAGE_RIGHT_EVENT);this.backupCurrentRightPaneIndex=swApp.BACKUP_PAGE_RIGHT_EVENT;syncSWorld=this.getSyncSWorld(daysOld);if(this.objectHasProperties(syncSWorld.swEventModel)&&this.objectHasProperties(syncSWorld.swEventModel[idICalendarID])){this.renderEvents(syncSWorld,idICalendarID);return;}
forEvents=true;command={};command.iCalendarID=idICalendarID.substring(2);command.daysOld=daysOld;command.forEvents=forEvents;swApp.syncSWorld.sendRequest(command,"backupGetEvents",swApp.receiveSystemBackup.$(this,forEvents,idICalendarID),swApp.receiveSystemBackupFailed.$(this));}
else if(button.type=="tasks"){swApp.log("Show tasks view for value:"+value);swApp.rightNotebook.showPane(swApp.BACKUP_PAGE_RIGHT_TASK);this.backupCurrentRightPaneIndex=swApp.BACKUP_PAGE_RIGHT_TASK;index=value.indexOf("-");daysOld=value.substring(0,index);idICalendarID="id"+value.substring(index+1);swApp.log("Show tasks view for value:"+value);syncSWorld=this.getSyncSWorld(daysOld);if(this.objectHasProperties(syncSWorld.swTodoModel)&&this.objectHasProperties(syncSWorld.swTodoModel[idICalendarID])){this.renderTodos(syncSWorld,idICalendarID);return;}
forEvents=false;command={};command.iCalendarID=idICalendarID.substring(2);command.daysOld=daysOld;command.forEvents=forEvents;swApp.syncSWorld.sendRequest(command,"backupGetEvents",swApp.receiveSystemBackup.$(this,forEvents,idICalendarID),swApp.receiveSystemBackupFailed.$(this));}
else if(button.type=="contacts"){swApp.log("Show contacts view for value:"+value);daysOld=parseInt(value,10);command={};command.daysOld=daysOld;command.syncMode=swApp.syncSWorld.SYNC_REPLACE_LOCAL_DATA;command.lastSyncAnchor="0";syncSWorld=this.getSyncSWorld(daysOld);syncSWorld.sendRequest(command,"backupGetContacts",swApp.receiveBackupContacts.$(this),swApp.receiveBackupContactsFailed.$(this));}
else if(button.type=="notes"){swApp.log("Show notes view for value:"+value);daysOld=parseInt(value,10);command={};command.daysOld=daysOld;command.syncMode=swApp.syncSWorld.SYNC_REPLACE_LOCAL_DATA;command.lastSyncAnchor="0";syncSWorld=this.getSyncSWorld(daysOld);syncSWorld.sendRequest(command,"backupGetNotes",swApp.receiveBackupNotes.$(this),swApp.receiveBackupNotesFailed.$(this));}
else if(button.type=="day"){index=value.indexOf("-");var day=parseInt(value.substring(index+1),10);swApp.log("System Backups day:"+day);}}.$(this));leftLayout.packWidget(leftVBox,{pos:"top",after:10});this.leftNotebook.showPane(this.BACKUP_PAGE_LEFT);this.rightNotebook.showPane(this.BACKUP_PAGE_RIGHT_EVENT);this.backupCurrentRightPaneIndex=swApp.BACKUP_PAGE_RIGHT_EVENT;swApp.backupTreeRoot.expand(true);};SWApp.prototype.deferredCreateSystem=function(continuation,dlTreeItemSource){swApp.log("system deferred create");var request={};request.type="system";swApp.syncSWorld.sendRequest(request,"backupGetAvailable",this.backupGetAvailable.$(this,continuation,dlTreeItemSource),this.getBackupAvailableFailed.$(this));};SWApp.prototype.deferredCreate=function(continuation,dlTreeItemSource){swApp.log("expand");var daysOld=parseInt(dlTreeItemSource.getData("daysOld"),10);var request={};request.daysOld=daysOld;request.type="system";swApp.syncSWorld.sendRequest(request,"backupGetInfo",this.handleSystemBackupInfo.$(this,continuation,dlTreeItemSource),this.getSystemBackupInfoFailed.$(this));};SWApp.prototype.objectHasProperties=function(obj){for(var i in obj){if(obj.hasOwnProperty(i)){return true;}}
return false;};SWApp.prototype.createBackupItem=function(parent,type,label,value){var item=null;var button=null;if(parent){item=new DlTreeItem({parent:parent,itemClassName:"DlTreeItem-withRadio"});}
else{item=new DlTreeItem({itemClassName:"DlTreeItem-withRadio"});}
button=new DlRadioButton({parent:item,label:label,value:value,group:swApp.backupTreeGroup});button.type=type;if(value=="General"){swApp.backupButton=button;}
return item;};SWApp.prototype.handleSystemBackupInfo=function(continuation,dlTreeItemSource,response){var tree=new DlTree({});var x=1;var y=0;var daysOld=dlTreeItemSource.getData("daysOld");for(var iCalendarID in response.ICalendarBackupInfoM){if(response.ICalendarBackupInfoM.hasOwnProperty(iCalendarID)){var backupInfo=response.ICalendarBackupInfoM[iCalendarID];var key=daysOld+"-"+iCalendarID;this.createBackupItem(tree,"events",backupInfo.calendarName+" - Events",key);this.createBackupItem(tree,"tasks",backupInfo.calendarName+" - Tasks",key);}}
key=daysOld;this.createBackupItem(tree,"contacts","Contacts",key);this.createBackupItem(tree,"notes","Notes",key);continuation(tree);};SWApp.prototype.getSystemBackupInfoFailed=function(response){alert("Could not get backup info for selected day.");};SWApp.prototype.backupGetAvailable=function(continuation,dlTreeItemSource,response){if(!response.backupAvailableResponseL||response.backupAvailableResponseL.length===0){return;}
var tree=new DlTree({});var bar;var gmtDate;var userDate;var dayItem;var key;var label;var tmpDate;var dateFormat=swApp.getDateFormat();for(var i=0;i<response.backupAvailableResponseL.length;++i){bar=response.backupAvailableResponseL[i];gmtDate=swApp.convertTZ2GMT(bar.timeZoneID,bar.year,bar.month,bar.dayOfMonth,bar.hourOfDay,bar.minute,bar.second);userDate=swApp.convertGMT2TZ(swApp.syncSWorld.userSettingsDTO.timeZoneID,gmtDate.year,gmtDate.month,gmtDate.dayOfMonth,gmtDate.hourOfDay,gmtDate.minute,gmtDate.second);key=""+bar.daysOld;tmpDate=new Date(userDate.year,userDate.month-1,userDate.dayOfMonth,userDate.hourOfDay,userDate.minute,userDate.second);label=""+bar.daysOld+" - "+tmpDate.print(dateFormat)+" "+
tmpDate.getHours()+":";if(tmpDate.getMinutes()<10){label+="0";}
label+=tmpDate.getMinutes()+" "+
swApp.syncSWorld.userSettingsDTO.timeZoneID;dayItem=this.createBackupItem(tree,"System Backups",label,key);dayItem.setTree(this.deferredCreate.$(this));dayItem.setData("daysOld",bar.daysOld);}
continuation(tree);swApp.backupTreeRoot.addEventListener("onCollapse",function(){swApp.log("collapse system backups");var request={};request.type="system";swApp.syncSWorld.sendRequest(request,"backupGetAvailable",this.backupGetAvailableAdd.$(this),this.getBackupAvailableFailed.$(this));}.$(this));};SWApp.prototype.hasExistingBar=function(backupAvailableResponse){var childL=swApp.backupTreeRoot.children();for(var i=0;i<childL.length;++i){var child=childL[i];if(child._objectType!="DlTree"){continue;}
for(j=0;j<child._widgets.length;++j){var widget=child._widgets[j];var userData=widget.getData("daysOld");if(typeof userData=="undefined"||userData===null){continue;}
if(userData==backupAvailableResponse.daysOld){return true;}}}
return false;};SWApp.prototype.backupGetAvailableAdd=function(response){if(!response.backupAvailableResponseL||response.backupAvailableResponseL.length===0){return;}
var bar;var gmtDate;var userDate;var dayItem;var key;var label;var tmpDate;var dateFormat=swApp.getDateFormat();for(var i=0;i<response.backupAvailableResponseL.length;++i){bar=response.backupAvailableResponseL[i];if(this.hasExistingBar(bar)){continue;}
gmtDate=swApp.convertTZ2GMT(bar.timeZoneID,bar.year,bar.month,bar.dayOfMonth,bar.hourOfDay,bar.minute,bar.second);userDate=swApp.convertGMT2TZ(swApp.syncSWorld.userSettingsDTO.timeZoneID,gmtDate.year,gmtDate.month,gmtDate.dayOfMonth,gmtDate.hourOfDay,gmtDate.minute,gmtDate.second);key=""+bar.daysOld;tmpDate=new Date(userDate.year,userDate.month-1,userDate.dayOfMonth,userDate.hourOfDay,userDate.minute,userDate.second);label=""+bar.daysOld+" - "+tmpDate.print(dateFormat)+" "+
tmpDate.getHours()+":";if(tmpDate.getMinutes()<10){label+="0";}
label+=tmpDate.getMinutes()+" "+
swApp.syncSWorld.userSettingsDTO.timeZoneID;dayItem=this.createBackupItem(this.backupTreeRoot,"System Backups",label,key);this.backupTreeRoot.appendWidget(dayItem,bar.daysOld);dayItem.setTree(this.deferredCreate.$(this));dayItem.setData("daysOld",bar.daysOld);}};SWApp.prototype.getBackupAvailableFailed=function(response){if(response&&response.message){alert("Could not get available backup info:\n"+response.message);return;}
alert("The backup databases are being regenerated.\nPlease try again later.");};SWApp.prototype.getSyncSWorld=function(daysOld){var syncSWorld=this.syncSWorldCache[daysOld];if(syncSWorld){return syncSWorld;}
syncSWorld=new SyncSWorld();syncSWorld.startup(""+daysOld);syncSWorld.daysOld=daysOld;syncSWorld.username=swApp.syncSWorld.username;syncSWorld.password=swApp.syncSWorld.password;syncSWorld.syncSWorldPrefs.deviceID=swApp.syncSWorld.syncSWorldPrefs.deviceID;this.syncSWorldCache[daysOld]=syncSWorld;return syncSWorld;};SWApp.prototype.receiveBackupContacts=function(response){if(!response.syncResult){alert("Temporarily unable to retrieve backup.");return;}
var syncSWorld=this.getSyncSWorld(response.daysOld);syncSWorld.syncResult=response.syncResult;syncSWorld.swContactModel={};syncSWorld.guidLuidM={};if(syncSWorld.syncResult){for(var serverCalUserKey in syncSWorld.syncResult.fromServerContactsM){if(syncSWorld.syncResult.fromServerContactsM.hasOwnProperty(serverCalUserKey)){var incomingCalUser=syncSWorld.syncResult.fromServerContactsM[serverCalUserKey];for(var guid in incomingCalUser){if(incomingCalUser.hasOwnProperty(guid)){var contact=incomingCalUser[guid];contact.daysOld=response.daysOld;}}}}}
syncSWorld.handleNewAndUpdated();this.renderContacts(syncSWorld);};SWApp.prototype.receiveBackupContactsFailed=function(response){var msg=null;if(response.message){msg=response.message;}
else if(response.failedI18nKey){msg=response.failedI18nKey;}
alert("Could not get contacts backup:\n"+msg);};SWApp.prototype.receiveBackupNotes=function(response){if(!response.syncResult){alert("Temporarily unable to retrieve backup.");return;}
var syncSWorld=this.getSyncSWorld(response.daysOld);syncSWorld.syncResult=response.syncResult;syncSWorld.swNoteModel={};syncSWorld.guidLuidM={};syncSWorld.handleNewAndUpdatedNotes(response.syncResult);this.renderNotes(syncSWorld);};SWApp.prototype.receiveBackupNotesFailed=function(response){var msg=null;if(response.message){msg=response.message;}
else if(response.failedI18nKey){msg=response.failedI18nKey;}
alert("Could not get notes backup:\n"+msg);};SWApp.prototype.receiveSystemBackup=function(forEvents,idICalendarID,response){var syncSWorld=this.getSyncSWorld(response.daysOld);if(!response.eventSyncResult){alert("Temporarily unable to retrieve backup.");return;}
syncSWorld.syncResult=response.eventSyncResult;if(!syncSWorld.swEventModel){syncSWorld.swEventModel={};}
if(!syncSWorld.swTodoModel){syncSWorld.swTodoModel={};}
if(forEvents){syncSWorld.swEventModel[idICalendarID]={};}
else{syncSWorld.swTodoModel[idICalendarID]={};}
syncSWorld.handleEventNewAndUpdated(forEvents);if(forEvents){this.renderEvents(syncSWorld,idICalendarID);}
else{this.renderTodos(syncSWorld,idICalendarID);}};SWApp.prototype.renderEvents=function(syncSWorld,idICalendarID){this.backupCacheEvent.clear();this.backupCacheEvent._syncSWorld=syncSWorld;this.backupCacheEvent._defaultCalendar=idICalendarID;var year=null;var month=null;this.backupCacheEvent.recalculateAll(year,month,true,true);var displayIDs=this.backupCacheEvent.getIDs(idICalendarID);this.backupEventGrid.resetIDS(displayIDs);this.backupEventGrid.displayPage(0);};SWApp.prototype.renderTodos=function(syncSWorld,idICalendarID){this.backupCacheTodo.clear();this.backupCacheTodo._syncSWorld=syncSWorld;this.backupCacheTodo._defaultCalendar=idICalendarID;var year=null;var month=null;this.backupCacheTodo.recalculateAll(year,month,true,true);var displayIDs=this.backupCacheTodo.getIDs(idICalendarID);this.backupTaskGrid.resetIDS(displayIDs);this.backupTaskGrid.displayPage(0);};SWApp.prototype.renderContacts=function(syncSWorld){swApp.log("renderContacts()");this.backupCacheContact._syncSWorld=syncSWorld;this.backupCacheContact.clear();this.backupCacheContact.initDataFromSyncSWorld();swApp.rightNotebook.showPane(swApp.BACKUP_PAGE_RIGHT_CONTACT);this.backupCurrentRightPaneIndex=swApp.BACKUP_PAGE_RIGHT_CONTACT;var displayIDs=this.backupCacheContact.getIDs();this.backupContactGrid.resetIDS(displayIDs);this.backupContactGrid.displayPage(0);};SWApp.prototype.renderNotes=function(syncSWorld){swApp.log("renderNotes()");this.backupCacheNote._syncSWorld=syncSWorld;this.backupCacheNote.clear();this.backupCacheNote.initDataFromSyncSWorld();swApp.rightNotebook.showPane(swApp.BACKUP_PAGE_RIGHT_NOTE);this.backupCurrentRightPaneIndex=swApp.BACKUP_PAGE_RIGHT_NOTE;var displayIDs=this.backupCacheNote.getIDs();this.backupNoteGrid.resetIDS(displayIDs);this.backupNoteGrid.displayPage(0);};SWApp.prototype.receiveSystemBackupFailed=function(response){};SWApp.prototype.refreshBackupsContactsPersonal=function(){};SWApp.prototype.refreshBackupsNotesPersonal=function(){};(function(){var BASE=SwBackup.inherits(DlRecord);function SwBackup(args){if(args){DlRecord.call(this,args);}}
eval(Dynarch.EXPORT("SwBackup"));D.DEFAULT_ARGS={};})();(function(){var BASE=SwBackupCache.inherits(DlRecordCache);function SwBackupCache(args){if(args){D.setDefaults(this,args);DlRecordCache.call(this,args);}}
eval(Dynarch.EXPORT("SwBackupCache"));D.DEFAULT_ARGS={};P.defaultColumns=[{id:"calendar",label:"Calendar",width:300},{id:"lastBackup",label:"Last Backup",width:200},{id:"label",label:"Backup Label",width:200},{id:"items",label:"Items",width:100}];P.getColumns=function(){if(!this.loadedColumns){var columnsKey=this.getColumnsStorageKey();this.loadedColumns=swApp.syncSWorld.loadObject(columnsKey);}
if(this.loadedColumns instanceof Array&&this.loadedColumns.length>0){if(this.defaultColumns.length!=this.loadedColumns.length){return this.defaultColumns.slice();}
return this.loadedColumns.slice();}
return this.defaultColumns.slice();};P.getIDs=function(){var ids=this._data.map("id");return ids;};P.isEmpty=function(){if(!this._data){return true;}
for(var key in this._data){if(this._data.hasOwnProperty(key)){return false;}}
return true;};P.formatHTML=function(rec,col,buf){var values;if(col=="date"){buf(rec.getCreated());}
else if(col=="colorRGB"){values=rec.get(col);buf("<label style='background: "+values+"'>"+values+"</label>");}else{values=rec.get(col);if(values instanceof Array){buf(values.join(",").htmlEscape());}
else{buf(values.toString().htmlEscape());}}};P.getIDs=function(){var ids=[];for(var key in this._data){if(this._data.hasOwnProperty(key)){ids.push(key);}}
return ids;};P.initDataFromSyncSWorld=function(syncSWorld){var model=syncSWorld.swBackupModel;if(!model){return;}
for(var backupLUID in model){if(model.hasOwnProperty(backupLUID)){var backupData=model[backupLUID];this.syncSWorldBackupAdded(true,backupData);}}};P.insert=function(swBackup,noHooks){var where=this.getInsertPos(swBackup);this._data[swBackup.id()]=swBackup;swBackup._set=this;if(noHooks){return;}
this.applyHooks("onInsert",[swBackup,where]);};P.removeUsingBackup=function(swBackup,noCallHooks){delete this._data[swBackup.id()];if(!noCallHooks){this.callHooks("onDelete",swBackup.id());}};P.removeUsingID=function(swBackupID,noCallHooks){if(swBackupID instanceof Array){for(var i=0;i<swBackupID.length;++i){var id=swBackupID[i];delete this._data[id];if(i==swBackupID.length-1){if(!noCallHooks){this.callHooks("onDelete",id);}}}}
else{delete this._data[swBackupID];if(!noCallHooks){this.callHooks("onDelete",swBackupID);}}};P._init=function(){D.BASE._init.call(this);};P.removeWithDialog=function(id,noSyncAfterRemove){var swBackup=null;var title="Delete Backup";var content="";if(id instanceof Array){title="Delete Multiple Backups";var buffer=String.buffer();buffer("<textarea type='textarea' rows='8' style='width: 100%'>");for(var i=0;i<id.length;++i){swBackup=this.get(id[i]);buffer(swBackup.getSubject()+"\n");}
buffer("</textarea>");content=buffer.get();}
else{swBackup=this.get(id);content="<div style='padding: 20px'><b>Delete backup: "+
swBackup.getSubject()+"</b></div>";}
var questionDlg=null;var cont=null;var box=null;var no=null;questionDlg=new DlDialog({modal:false,title:title,quitBtn:"destroy"});cont=new DlContainer({parent:questionDlg});cont.getElement().style.padding="20px";cont.setSize({x:400});cont.setContent(content);box=new DlHbox({parent:questionDlg,borderSpacing:5});box.setAlign("center");var deleteBackup=new DlButton({parent:box,label:"<div style='width:9em'>"+
swApp.i18n("Delete")+"</div>"});no=new DlButton({parent:box,label:"<div style='width:5em'>"+
swApp.i18n("Cancel")+"</div>"});deleteBackup.addEventListener("onClick",function(){questionDlg.destroy();if(id instanceof Array){for(var i=0;i<id.length;++i){swBackup=this.get(id[i]);swApp.backupCache.removeUsingID(id[i],true);if(i==id.length-1){swApp.syncSWorld.removeBackupFromModel(swBackup._data.syncSWorldBackup,true);}
else{swApp.syncSWorld.removeBackupFromModel(swBackup._data.syncSWorldBackup,false);}}}
else{swApp.backupCache.removeUsingID(id);swApp.syncSWorld.removeBackupFromModel(swBackup._data.syncSWorldBackup,true);}
if(!noSyncAfterRemove){swApp.syncSWorld.backupSync(swApp.syncSWorld.SYNC_NORMAL);}
else{swApp.backupSyncStop();}}.$(this));no.addEventListener("onClick",function(){questionDlg.destroy();});questionDlg.centerOnParent();questionDlg.show();};P.getColumnsStorageKey=function(){return"backupColumnsKey";};})();if(typeof UWA=='undefined'){UWA={};}
UWA.iFrameMessaging=function(){};UWA.iFrameMessaging.prototype={_options:{},init:function(options){var _this=this;if(typeof options!='object'||!options.eventHandler){return;}
this._options=options;if(typeof document.postMessage==='function'||typeof window.postMessage==='function'){window.addEventListener('message',function(msg){var origin=msg.origin;if(origin){origin=origin.split('//')[1];}else{origin=msg.domain;}
_this.dispatch(msg.data,origin,'postMessage');},false);}},dispatch:function(msg,msgOrigin,msgCommType){var options=this._options;msgOrigin=unescape(msgOrigin);if(typeof options.trustedOrigin=='undefined'||msgOrigin==options.trustedOrigin){var msgDecoded=this.decodeJson(msg);if(msgDecoded){msgDecoded.commType=msgCommType;options.eventHandler(msgDecoded);}}else{throw new Error('Origin '+msgOrigin+' is not trusted.');}},decodeJson:function(json){var ret=false;if((/^[,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t]*$/).test(unescape(json).replace(/\\./g,'@').replace(/"[^"\\\n\r]*"/g,''))){ret=eval('('+unescape(json)+')');}
return ret;}};var TMPL_BG_IMAGE=String.template('url("$url") no-repeat 50% 50%');(function(){SwTodayComponent.inherits(DlContainer);function SwTodayComponent(args){if(args){if(!("drag"in args)){args.drag=SwTodayComponent.getMoveDrag();}
D.setDefaults(this,args);DlContainer.call(this,args);}}
eval(Dynarch.EXPORT("SwTodayComponent",true));D.DEFAULT_ARGS={title:["title",null],widget:["widget",null],swType:["swType",null],column:["column",null]};var TMPL=String.template("<div class='SwTodayComponent-title'>","<div class='SwTodayComponent-closeBtn'></div>","<div class='SwTodayComponent-favicon'></div>","<div>$title</div></div>","<div class='SwTodayComponent-body'></div>");P.initDOM=function(){D.BASE.initDOM.apply(this,arguments);this.getElement().innerHTML=TMPL({title:this.title,id:this.id});if(this.widget){this.setContent(this.widget);}
else{this.setContent("<p>Component body here</p>");}
this.getCloseElement().onmousedown=this._on_closeClicked.$(this);};P._on_closeClicked=function(){this.dismissAnimated();};P.dismissAnimated=function(){var anim=new DlAnimation();var h=this.getSize().y;anim.el=this.getElement();anim.addEventListener({onUpdate:function(){this.el.style.marginTop=-this.getPos().map(0,h)+"px";DOM.setOpacity(this.el,this.getPos().map(1,0));},onStop:function(){this.destroy();}.$(this)});anim.start(10,50,"accel_ab");};P.getContentElement=function(){return this.getElement().childNodes[1];};P.getColumnElement=function(){return this.getElement().parentNode;};P.getTitleBarElement=function(){return this.getElement().firstChild;};P.getCloseElement=function(){return this.getTitleBarElement().childNodes[0];};P.getIconElement=function(){return this.getTitleBarElement().childNodes[1];};P.getTitleElement=function(){return this.getTitleBarElement().childNodes[2];};P.getNextComponentElement=function(){return this.getElement().nextSibling;};P.setIcon=function(url){this.condClass(url,"SwTodayComponent-withIcon");this.getIconElement().style.background=url?TMPL_BG_IMAGE({url:url}):"";};P.canBeDroppedTo=function(col,comp){if(this===comp){return false;}
if(col==null){col=comp.getColumnElement();}
if(comp==null){return col!==this.getColumnElement()||this.getNextComponentElement()!=null;}
return comp.getElement()!==this.getNextComponentElement();};})();(function(){SwTodayComponent_MoveDrag.inherits(DlDrag);function SwTodayComponent_MoveDrag(args){DlDrag.call(this,args);}
eval(Dynarch.EXPORT("SwTodayComponent_MoveDrag",1));P.startOK=function(widget,ev){if(DlEvent.latestMouseDownEvent.target===widget.getTitleElement()){ev.domStop=true;var page=widget.parent;this.page=page;this.targets=page.getRectangles();this.comp=widget;DlDialog.activateEventStopper(true);return true;}};P.dropOK=function(widget,ev){ev.domStop=true;this.canDrop=true;return this.canDrop;};P.makeElementCopy=function(widget,ev){var el=this.elementCopy;if(!el){el=this.elementCopy=CE("div",null,{className:"DlWidget SwTodayComponent SwTodayComponent-dragged-clone"});el.style.top=ev.pos.y+"px";el.style.left=ev.pos.x+"px";document.body.appendChild(el);el.innerHTML=widget.title;}
return el;};P.moving=function(widget,ev){ev.domStop=true;var pos=ev.computePos(this.page);function find_rect(o){return o.rect.containsPoint(pos);}
var target=this.targets.components.grep_first(find_rect);if(target&&target===this.lastpos){return;}
this.lastpos=target;if(target&&!widget.canBeDroppedTo(null,target.comp)){this.trashMarker();return;}
var m;if(target){m=this.getMarker();var el=target.comp.getElement();el.parentNode.insertBefore(m,el);}else{var col=this.targets.columns.grep_first(find_rect);if(col&&widget.canBeDroppedTo(col.el,null)){m=this.getMarker();col.el.appendChild(m);}else{this.trashMarker();}}};P.doDrop=function(){if(this.marker){this.comp.opacity(0.3);if(this.anim){this.anim.stop();}
var anim=new DlAnimation();anim.el=this.comp;anim.addEventListener({onUpdate:function(){this.el.opacity(this.getPos().map(0.3,1));},onStop:function(){this.el.opacity("");}});anim.start(10,25,"accel_ab");DOM.swapNodes(this.comp.getElement(),this.marker);this.trashMarker();this.notifySwap(this.comp.getElement(),this.marker);}else{this.reset(true);}};P.notifySwap=function(compElement,marker){swApp.log("notifySwap():");swApp.saveTodayView();};P.getMarker=function(){if(!this.marker){this.marker=CE("div",{height:"0px"},{className:"SwTodayComponent SwTodayComponent-marker"});var h=this.comp.getSize().y;var anim=new DlAnimation();this.anim=anim;anim.el=this.marker;anim.addEventListener({onUpdate:function(){this.el.style.height=this.getPos().map(0,h-2)+"px";},onStop:function(){this.anim=null;}.$(this)});anim.start(10,70,"accel_ab");}
return this.marker;};P.trashMarker=function(){if(this.marker){var anim=new DlAnimation();anim.el=this.marker;var h=parseInt(this.marker.style.height,10);this.marker=null;anim.addEventListener({onUpdate:function(){this.el.style.height=this.getPos().map(h,0)+"px";},onStop:function(){DOM.trash(this.el);}});anim.start(10,70,"accel_b");}};P.reset=function(){this.page=null;this.targets=null;this.lastpos=null;this.comp=null;this.trashMarker();DlDialog.activateEventStopper(false);D.BASE.reset.apply(this,arguments);};var INSTANCE=null;SwTodayComponent.getMoveDrag=function(){return INSTANCE||(INSTANCE=new SwTodayComponent_MoveDrag({}));};})();SwComponents={search:function(query){var results=[SwComponents._components[0]];return this._return(results);},getAll:function(){return SwComponents._return(SwComponents._components);},_return:function(items){return{thumbnailWidth:64,thumbnailHeight:48,items:items};}};function getTodayWidget(){var cont=new DlContainer({});cont.setStyle({padding:"20px"});cont.setContent("this is <b>birthdays!</b>");return cont;}
(function(){TasksTestComponent.inherits(SwTodayComponent);function TasksTestComponent(args){args.title="This is TASKS";SwTodayComponent.call(this,args);}
eval(Dynarch.EXPORT("TasksTestComponent"));P.initDOM=function(){D.BASE.initDOM.apply(this,arguments);var cont=new DlContainer({parent:this});cont.setStyle({padding:"20px"});var tmp=new DlCalendar({parent:cont});var button=new DlButton({parent:cont,label:"Tasks"});this.setIcon("http://scheduleworld.com/sw2/images/logo16.png");};})();SwComponents._components=[{id:"sw-birthdays",title:"Birthdays",_widget:getTodayWidget,thumbnail:"css/icons/addressbook.png"},{id:"sw-tasks",title:"Tasks",_constructor:TasksTestComponent,thumbnail:"css/icons/addressbook.png"},{id:"sw-etc",title:"Etc",thumbnail:"css/icons/addressbook.png"}];(function(){SwTodayView.inherits(DlContainer);function SwTodayView(args){if(args){D.setDefaults(this,args);DlContainer.call(this,args);}}
eval(Dynarch.EXPORT("SwTodayView"));D.DEFAULT_ARGS={_n_cols:["n_cols",3],_layoutClass:["layout","3-col"]};P.initDOM=function(){this.initPhase=true;D.BASE.initDOM.apply(this,arguments);var html=String.buffer("<div class='SwTodayView-rel SwTodayLayout-",this._layoutClass,"'>");this._n_cols.times(function(i){html("<div class='SwTodayView-column SwTodayView-col-",String.fromCharCode(97+i),"'></div>");});html("</div>");this.setContent(html.get());};P.getColElement=function(col){return this.getElement().firstChild.childNodes[col];};P._getColDivs=function(){return Array.$(this.getElement().firstChild.childNodes);};P.addComponent=function(comp,col){col=this.getColElement(col);this.appendWidget(comp,col);swApp.log("addComponent()");if(this.initPhase){return;}
swApp.saveTodayView();};P.initFinished=function(){this.initPhase=false;};P.getRectangles=function(){return{components:this.children().map(function(comp){var rect=new DlRect(comp.getOffsetPos(),comp.getSize());rect.y-=5;rect.h+=10;return{comp:comp,rect:rect};}),columns:this._getColDivs().map(function(el){return{el:el,rect:new DlRect(el.offsetLeft,el.offsetTop,el.offsetWidth,el.offsetHeight)};})};};})();UWA.MessageHandler=new UWA.iFrameMessaging();UWA.MessageHandler.init({'eventHandler':function(message){var id=message.id;switch(message.action){case'resizeHeight':var frame=document.getElementById('frame_'+id);if(frame){frame.setAttribute('height',message.value);}
break;case'setIcon':var frame=document.getElementById("frame_"+id);if(frame){var comp=DlWidget.getFromElement(frame.parentNode.parentNode);comp.setIcon(message.value);}
break;default:break;}},'trustedOrigin':'nvmodules.netvibes.com'});SwNetvibes={url:String.template("/NETVIBES/$method"),html_proxy:"/ifproxy.html",call:function(args,callback,method){if(!callback){callback=args.callback;delete args["callback"];}
if(!("format"in args)){args.format="json";}
var rpc=new DlRPC({url:SwNetvibes.url({method:method}),callback:SwNetvibes._response_handler.$C(callback),args:args,method:"GET"});rpc.call();},search:function(args,callback){return SwNetvibes.call(args,callback,"search");},categories:function(callback){return SwNetvibes.call({},callback,"categories");},_response_handler:function(callback,data){data=data.text.decodeJSON(true);callback(data);}};(function(){SwNetvibesBrowser.inherits(DlLayout);function SwNetvibesBrowser(args){if(args){D.setDefaults(this,args);DlLayout.call(this,args);}}
eval(Dynarch.EXPORT("SwNetvibesBrowser",true));D.DEFAULT_ARGS={todayView:["todayView",null]};P.initDOM=function(){D.BASE.initDOM.apply(this,arguments);var left=new DlContainer({scroll:true});var box=new DlVbox({parent:left,borderSpacing:2});this.searchEntry=new DlEntry({parent:box,emptyText:"Search Netvibes"});box.addSeparator("wide-separator");this.searchEntry.addEventListener("onKey-ENTER",function(){this.categoriesGroup.setValue([]);this._netvibesSearch(this.searchEntry.getValue(),null);}.$(this));this.packWidget(left,{pos:"left"});this.categoriesGroup=DlRadioGroup.get();this.widgetsGroup=DlRadioGroup.get();var tmp=new DlRadioButton({parent:box,value:"SW",label:"ScheduleWorld",group:this.categoriesGroup});SwNetvibes.categories(function(data){data.categories.foreach(function(cat){tmp=new DlRadioButton({parent:box,value:cat.id,label:cat.label,group:this.categoriesGroup,data:cat});},this);}.$(this));this.widgetsGroup.addEventListener("onChange",this._on_widgetChange.$(this));this.iconListView=new DlIconListView({scroll:true});var lv=this.iconListView;this.packWidget(lv,{pos:"right",after:3,fill:"*"});this.categoriesGroup.addEventListener("onChange",this._on_categoryChange.$(this));};P._displayWidgets=function(data){this._showSearchVeil(false);this.iconListView.destroyChildWidgets();var width=parseInt(data.thumbnailWidth,10)+8;var height=parseInt(data.thumbnailHeight,10)+8;data.items.foreach(function(item){var w=new DlIconListItem({className:"SwNetvibesWidget",parent:this.iconListView,label:item.title,data:item,value:item.id,group:this.widgetsGroup,iconSize:{x:width,y:height},itemSize:{x:width,y:null},itemSpacing:6});w.getIconCell().style.background=TMPL_BG_IMAGE({url:item.thumbnail});},this);};P._showSearchVeil=function(visible){if(!this._loadingVeil){this._loadingVeil=new DlWidget({parent:this.iconListView,className:"SW-LoadingVeil"});this._loadingVeil.display(visible);}else{if(this._loadingVeil.display(visible)){this.iconListView.appendWidget(this._loadingVeil);}else{this.iconListView.removeWidget(this._loadingVeil);}}};P._netvibesSearch=function(query,category){this._showSearchVeil(true);var args={thumbwidth:64,thumbheight:48};if(query!=null){args.query=query;}
if(category!=null){args.category=category;}
if(!args.limit){var size=this.iconListView.getInnerSize();args.limit=Math.floor(size.x/78)*Math.floor(size.y/76);}
SwNetvibes.search(args,function(data){if(query){var tmp=SwComponents.search(query);data.items=tmp.items.concat(data.items);}
this._displayWidgets(data);}.$(this));};P._showSwComponents=function(){this._showSearchVeil(true);this._displayWidgets(SwComponents.getAll());};P._on_categoryChange=function(){var cat=this.categoriesGroup.getValue()[0];if(cat){if(cat=="SW"){this._showSwComponents();}else{this._netvibesSearch(null,cat);}}};P._on_widgetChange=function(){var val=this.widgetsGroup.getValue()[0];if(val){var btn=this.widgetsGroup.getByValue(val);var data=btn.userData;var comp;if(!data.link){if(data._widget){comp=new SwTodayComponent({title:data.title,widget:data._widget,data:data});}else if(data._constructor){comp=new data._constructor({title:data.title,data:data});}}else{comp=new SwNetvibesComponent({url:data.link,id:data.id,title:data.title,data:data});}
if(comp){this.todayView.addComponent(comp,0);}}};})();(function(){SwNetvibesComponent.inherits(SwTodayComponent);function SwNetvibesComponent(args){if(args){D.setDefaults(this,args);SwTodayComponent.call(this,args);}}
eval(Dynarch.EXPORT("SwNetvibesComponent"));var TMPL_IFRAME=String.template("<iframe id='frame_$id' scrolling='no' frameborder='0' ","height='300' width='100%' ","src='http://nvmodules.netvibes.com/widget/frame/","?uwaUrl=$url","&id=$id","&ifproxyUrl=$proxy'></iframe>");var TMPL_ICON_URL=String.template("http://cdn.netvibes.com/proxy/favIcon.php?url=$url");D.DEFAULT_ARGS={widget_url:["url",null],widget_id:["id",null]};P.initDOM=function(){D.BASE.initDOM.apply(this,arguments);this.setContent(TMPL_IFRAME({id:this.id+"-"+this.widget_id,url:encodeURIComponent(this.widget_url),proxy:SwNetvibes.html_proxy}));};P.setIcon=function(url){return D.BASE.setIcon.call(this,TMPL_ICON_URL({url:encodeURIComponent(url)}));};})();(function(){var BASE=SwEvent3Days.inherits(DlContainer);function SwEvent3Days(args){if(args){D.setDefaults(this,args);DlContainer.call(this,args);}}
eval(Dynarch.EXPORT("SwEvent3Days",true));D.DEFAULT_ARGS={_swEventCache:["swEventCache",null]};P.initDOM=function(){BASE.initDOM.call(this);swApp.syncSWorld.addSyncStopListener(this.syncStop.$(this));this.refresh();};P.syncStop=function(){this.refresh();};P.refresh=function(){this.destroyChildWidgets();var date=new Date();date.setDate(date.getDate()-1);var vbox=new DlVbox({parent:this});for(var i=0;i<3;++i){this._findDateEvents(vbox,date);date.setDate(date.getDate()+1);}};P._findDateEvents=function(vbox,date){var tmp;var label;var dateFormat=swApp.getDateFormat();var dateEvents=this._swEventCache.getDateEvents(date);if(!dateEvents||dateEvents.length===0){label=date.print(dateFormat)+" - none.";tmp=new DlLabel({parent:vbox,label:label});return;}
var swEvent;for(var i=0;i<dateEvents.length;++i){swEvent=dateEvents[i];label=date.print(dateFormat)+" - "+swEvent.get("title");tmp=new DlLabel({parent:vbox,label:label});}};})();(function(){var BASE=SwBirthAnn.inherits(DlContainer);function SwBirthAnn(args){if(args){D.setDefaults(this,args);DlContainer.call(this,args);}}
eval(Dynarch.EXPORT("SwBirthAnn",true));D.DEFAULT_ARGS={_swEventCache:["swEventCache",null]};P.initDOM=function(){BASE.initDOM.call(this);swApp.syncSWorld.addSyncStopListener(this.syncStop.$(this));this.refresh();};P.syncStop=function(){this.refresh();};P.refresh=function(){this.destroyChildWidgets();};})();(function(){var BASE=SwTasksDue.inherits(DlContainer);function SwTasksDue(args){if(args){D.setDefaults(this,args);DlContainer.call(this,args);}}
eval(Dynarch.EXPORT("SwTasksDue",true));D.DEFAULT_ARGS={_swEventCache:["swEventCache",null]};P.initDOM=function(){BASE.initDOM.call(this);swApp.syncSWorld.addSyncStopListener(this.syncStop.$(this));this.refresh();};P.syncStop=function(){this.refresh();};P.refresh=function(){this.destroyChildWidgets();};})();(function(){var BASE=SwTasksStarted.inherits(DlContainer);function SwTasksStarted(args){if(args){D.setDefaults(this,args);DlContainer.call(this,args);}}
eval(Dynarch.EXPORT("SwTasksStarted",true));D.DEFAULT_ARGS={_swTaskCache:["swTaskCache",null]};P.initDOM=function(){BASE.initDOM.call(this);swApp.syncSWorld.addSyncStopListener(this.syncStop.$(this));this.refresh();};P.syncStop=function(){this.refresh();};P.refresh=function(){this.destroyChildWidgets();var task;var taskID;var start;var tmp;var label;var dateFormat=swApp.getDateFormat();var vbox=new DlVbox({parent:this});var taskIDs=this._swTaskCache.getIDs();for(var i=0;i<taskIDs.length;++i){taskID=taskIDs[i];task=this._swTaskCache.get(taskID);start=task.get("listViewStart");if(!start){continue;}
label=start+" - "+task.get("title");tmp=new DlLabel({parent:vbox,label:label});}};})();(function(){var TODAY=new Date(),TODAY_YEAR=TODAY.getFullYear(),TODAY_MONTH=TODAY.getMonth(),TODAY_DATE=TODAY.getDate(),DAY=24*60*60*1000,DEFAULTS={fdow:window.swMiniCal_fdow||0,month:TODAY.getMonth(),year:TODAY.getFullYear(),target:null,events:{},req_url:"/sw2/commandV3",req_iCalendarID:window.swMiniCal_iCalendarID,req_tz:window.swMiniCal_timeZone||"America/Toronto",req_locale:window.swMiniCal_locale||"en"},SCRIPT_ID=0,ID=0,UA=navigator.userAgent,is_opera=/opera/i.test(UA),is_ie=/msie/i.test(UA)&&!is_opera&&!/mac_powerpc/i.test(UA),is_ie5=is_ie&&/msie 5\.[^5]/i.test(UA),is_ie6=is_ie&&/msie 6/i.test(UA),is_ie7=is_ie&&/msie 7/i.test(UA),ie_box_model=is_ie&&document.compatMode&&document.compatMode=="BackCompat",is_mac_ie=/msie.*mac/i.test(UA),is_khtml=/Konqueror|Safari|KHTML/i.test(UA),is_safari=/Safari/i.test(UA),is_safari3=is_safari&&/Version\/3/i.test(UA),is_konqueror=is_khtml&&!is_safari3,is_gecko=/gecko/i.test(UA)&&!is_khtml&&!is_opera&&!is_ie,is_w3=!is_ie,WHEEL_EVENT=is_gecko?"DOMMouseScroll":"mousewheel",LANG={gotoday:"Go Today",noevents:"No events on %b %e",eventson:"Events on %b %e%^:",event:"<b>$start</b> $summary",emptyTooltip:"<center><a href='http://www.scheduleworld.com/'>Schedule World</a></center>",mn:["January","February","March","April","May","June","July","August","September","October","November","December"],smn:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dn:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"],sdn:["Su","Mo","Tu","We","Th","Fr","Sa","Su"]};window.SwMiniCal=function(args){for(var i in DEFAULTS){if(DEFAULTS.hasOwnProperty(i)){this[i]=args&&i in args?args[i]:DEFAULTS[i];}}
this._init();};var D=window.SwMiniCal;var P=D.prototype;var ALL={};function $L(id){return window.SwMiniCal_Lang&&window.SwMiniCal_Lang[id]||LANG[id];}
function getWeekNumber(d){d=new Date(d.getFullYear(),d.getMonth(),d.getDate(),0,0,0);var dow=d.getDay();d.setDate(d.getDate()-(dow+6)%7+3);var ms=d.valueOf();d.setMonth(0);d.setDate(4);return Math.round((ms-d.valueOf())/(7*864e5))+1;}
function getDayOfYear(now){now=new Date(now.getFullYear(),now.getMonth(),now.getDate(),0,0,0);var then=new Date(now.getFullYear(),0,0,0,0,0);var time=now-then;return Math.floor(time/DAY);}
function printDate(date,str){var m=date.getMonth();var d=date.getDate();var y=date.getFullYear();var wn=getWeekNumber(date);var w=date.getDay();var s={};var hr=date.getHours();var pm=(hr>=12);var ir=(pm)?(hr-12):hr;var dy=getDayOfYear(date);if(ir===0){ir=12;}
var min=date.getMinutes();var sec=date.getSeconds();s["%a"]=$L("sdn")[w+1];s["%A"]=$L("dn")[w+1];s["%b"]=$L("smn")[m];s["%B"]=$L("mn")[m];s["%d"]=(d<10)?("0"+d):d;s["%e"]=d;s["%H"]=(hr<10)?("0"+hr):hr;s["%I"]=(ir<10)?("0"+ir):ir;s["%j"]=(dy<100)?((dy<10)?("00"+dy):("0"+dy)):dy;s["%k"]=hr;s["%l"]=ir;s["%m"]=(m<9)?("0"+(1+m)):(1+m);s["%M"]=(min<10)?("0"+min):min;s["%n"]="\n";s["%p"]=pm?"PM":"AM";s["%P"]=pm?"pm":"am";s["%s"]=Math.floor(date.getTime()/1000);s["%S"]=(sec<10)?("0"+sec):sec;s["%t"]="\t";s["%U"]=s["%W"]=s["%V"]=(wn<10)?("0"+wn):wn;s["%u"]=w+1;s["%w"]=w;s["%y"]=(''+y).substr(2,2);s["%Y"]=y;s["%^"]=y!=TODAY_YEAR?" "+y:"";s["%%"]="%";var re=/%./g;var test=function(par){return par in s?s[par]:par;};return str.replace(re,test);}
function $Array(obj,start){if(start==null){start=0;}
var a,i,j;try{a=Array.prototype.slice.call(obj,start);}catch(ex){a=new Array(obj.length-start);for(i=start,j=0;i<obj.length;++i,++j){a[j]=obj[i];}}
return a;}
function closure(f,obj){var args=$Array(arguments,2);if(obj==null){return function(){return f.apply(this,args.concat($Array(arguments)));};}
else{return function(){return f.apply(obj,args.concat($Array(arguments)));};}}
function template(format,props){return format.replace(/(.?)\$(\{.*?\}|[a-zA-Z0-9_]+)/g,function(s,p1,p2){if(p1.charAt(0)=="\\"){return s.substr(1);}
if(p2.charAt(0)=="{"){p2=p2.substr(1,p2.length-2);}
eval("p2 = props."+p2);return p1+p2;});}
function setSelectValue(sel,val){if(sel.value!=val){sel.value=val;var options=sel.getElementsByTagName("option"),i=0,el;while((el=options[i++])){el.selected=(el.value==val);}}}
function addEvent(el,evname,func){if(el instanceof Array){for(var i=el.length;--i>=0;){addEvent(el[i],evname,func);}}
else if(el.addEventListener){el.addEventListener(evname,func,true);}
else if(el.attachEvent){el.attachEvent("on"+evname,func);}
else{el["on"+evname]=func;}}
function getCalendarHTML(){var html=["<table cellspacing='0' cellpadding='0' class='cal'>","<tr class='daynames'>"];var i;var sdn=$L("sdn");for(i=0;i<7;++i){html.push("<td class='dayname'>",sdn[1+((i+this.fdow)%7)],"</td>");}
html.push("</tr>");var date=new Date(this.year,this.month,1,12,0,0);var day1=(date.getDay()-this.fdow)%7;if(day1<0){day1+=7;}
date.setDate(-day1);date.setDate(date.getDate()+1);for(i=0;i<6;++i){html.push("<tr>");for(var j=0;j<7;++j){var d=date.getDate(),m=date.getMonth(),y=date.getFullYear(),ev="_"+y+"_"+(m+1)+"_"+d;html.push("<td date='",ev,"' class='day");if(m!=this.month){html.push(" otherday");}
if(y==TODAY_YEAR&&m==TODAY_MONTH&&d==TODAY_DATE){html.push(" today");}
ev=this.events[ev];if(ev){html.push(" hasevent");}
html.push((i+j)&1?" odd":" even","'>",d<10?"&nbsp;"+d:d,"</td>");date.setDate(d+1);}
html.push("</tr>");}
html.push("</table>");return html.join("");}
function getNavHtml(){var html=["<div class='controls'>","<div nav='-1' class='button prev-mon'></div><div nav='1' class='button next-mon'></div>","<div nav='-2' class='button prev-year'></div><div nav='2' class='button next-year'></div>","<table align='center' cellspacing='0' cellpadding='0'><tr><td>","<select autocomplete='off' id='$id-months' class='SwMiniCal-months'>"];var mn=$L("mn");for(var i=0;i<mn.length;++i){html.push("<option value='",i,"'>",mn[i],"</option>");}
html.push("</select>");html.push("<input autocomplete='off' id='$id-year' size='3' value='",TODAY_YEAR,"' />");html.push("</td></tr></table>");html.push("</div>");return html;}
function $HEAD(){return document.getElementsByTagName("head")[0];}
D.setup=function(args){return new D(args);};D.stopEvent=function(ev){if(is_ie){ev.cancelBubble=true;ev.returnValue=false;}else{ev.preventDefault();if(typeof ev.preventBubble=='function'){ev.preventBubble();}
ev.stopPropagation();}
window.swStopEventPropagate=true;return false;};D.dataReady=function(args){if(args.message=="Success"){var script=document.getElementById(args.widgetID);var data=script.data;var self=ALL[data.calendar];$HEAD().removeChild(script);var mon="_"+data.year+"_"+data.month+"_";for(var i in self.events){if(i.indexOf(mon)===0){delete self.events[i];}}
self.mergeEvents(args.startMiniEventM);}
else{alert(args.failedI18nKey);}};P._init=function(){this._id=++ID;ALL[this.id()]=this;var el=document.createElement("div");el.className="SwMiniCal";var html=getNavHtml();html.push("<div id='$id-body' class='body'>","</div>","<div id='$id-tooltip' class='tooltip'>","<div class='tooltip-content'>","<div class='tooltip-title'></div>","<div class='tooltip-body'></div>","<div id='$id-today' class='button-today'></div>","</div>","</div>");html=template(html.join(""),{id:this.id()});el.innerHTML=html;this._element=el;var parent=this.target;if(typeof parent=="string"){parent=document.getElementById(parent);}
parent.appendChild(el);delete this.target;this.getSelect().onchange=this.getSelect().onclick=closure(onMonthChange,this);this.getInput().onchange=closure(onYearChange,this);this._element.onmousedown=closure(onMouseDown,this);addEvent([this.getBody(),this.getSelect()],WHEEL_EVENT,closure(onMouseWheel,this,"month"));addEvent(this.getInput(),WHEEL_EVENT,closure(onMouseWheel,this,"year"));addEvent([this.getBody(),this.getTodayBtn(),this.getTooltip()],"mouseover",closure(onMouseOver,this));this.getTodayBtn().onmousedown=closure(this.gotoFN,this,TODAY_MONTH,TODAY_YEAR);this.gotoFN(this.month,this.year,true);this.onMonthChange(this,this.month,this.year);};P.destroy=function(){var el=this._element;if(el.paretNode){el.paretNode.removeChild(el);}
this._element=null;delete ALL[this.id()];};P.resetEvents=function(){this.events={};this.redraw();};P.mergeEvents=function(more){for(var date in more){if(more[date]==null){delete this.events[date];}
else{this.events[date]=more[date];}}
this.redraw();};P.getEvents=function(){return this.events;};P.onMonthChange=function(cal,month,year){if(this.req_url){var script=document.createElement("script");script.id=this.id()+"-script-"+(++SCRIPT_ID);month=parseInt(month,10)+1;year=parseInt(year,10);script.data={calendar:this.id(),year:year,month:month};var args={command:"<getMiniCalendarData></getMiniCalendarData>",jsCallback:"SwMiniCal.dataReady",iCalendarID:this.req_iCalendarID,tz:this.req_tz,locale:this.req_locale,wid:script.id,year:year,month:month};var url=[];for(var i in args){if(args.hasOwnProperty(i)){url.push(encodeURIComponent(i)+"="+
encodeURIComponent(args[i]));}}
url=url.join("&");script.src=this.req_url+"?"+url;$HEAD().appendChild(script);}};P.gotoFN=function(month,year,force){if(month<0){month+=12;year--;}else if(month>11){month-=12;year++;}
if(force||month!=this.month||year!=this.year){this.month=month;this.year=year;this.getBody().innerHTML=getCalendarHTML.call(this);setSelectValue(this.getSelect(),month);this.getInput().value=year;this.getTodayBtn().style.display=month==TODAY_MONTH&&year==TODAY_YEAR?"none":"";if(!force){this.onMonthChange(this,month,year);}}};P.id=function(what){var id="SwMiniCal-"+this._id;if(what){id=document.getElementById(id+"-"+what);}
return id;};P.getSelect=function(){return this.id("months");};P.getInput=function(){return this.id("year");};P.getBody=function(){return this.id("body");};P.getTooltip=function(){return this.id("tooltip");};P.getTodayBtn=function(){return this.id("today");};P.redraw=function(){var monthID="SwMiniCal-"+this._id+"-months";var oldSelect=document.getElementById(monthID);while(oldSelect.childNodes.length>0){oldSelect.removeChild(oldSelect.childNodes[0]);}
var html=[];var mn=$L("mn");for(var i=0;i<mn.length;++i){html.push("<option value='",i,"'>",mn[i],"</option>");}
html=template(html.join(""),{});oldSelect.innerHTML=html;this.gotoFN(this.month,this.year,true);};P.setTooltipTitle=function(text){this._ttEmpty=false;this.getTooltip().firstChild.firstChild.innerHTML=text;};P.setTooltipContent=function(text){var el=this.getTooltip().firstChild.childNodes[1];el.innerHTML=text;el.style.display=/\S/.test(text)?"":"none";};function onMonthChange(){this.gotoFN(parseInt(this.getSelect().value,10),parseInt(this.getInput().value,10));}
function onYearChange(){this.gotoFN(parseInt(this.getSelect().value,10),parseInt(this.getInput().value,10));}
function onMouseDown(ev){ev=ev||window.event;D.stopEvent(ev);var target=ev.target||ev.srcElement;if(target.hasAttribute("nav")){onNavMouseDown.call(this,ev,target.getAttribute("nav"));return false;}
target.tagName.toLowerCase()=="input";return false;}
function onNavMouseDown(ev,nav){switch(parseInt(nav,10)){case-2:this.gotoFN(this.month,this.year-1);break;case-1:this.gotoFN(this.month-1,this.year);break;case 1:this.gotoFN(this.month+1,this.year);break;case 2:this.gotoFN(this.month,this.year+1);break;}
return false;}
function onMouseWheel(what,ev){ev=ev||window.event;var delta;if(ev.wheelDelta){delta=ev.wheelDelta/120;}else if(ev.detail){delta=-ev.detail/3;}
if(what=="year"){delta*=2;}
onNavMouseDown.call(this,ev,-delta);}
function onMouseOver(ev){ev=ev||window.event;var target=ev.target||ev.srcElement;if(target.hasAttribute("date")){return onDateMouseOver.call(this,ev,target.getAttribute("date"));}
if(target.className=="button-today"){return this.setTooltipTitle($L("gotoday"));}
if(!this._ttEmpty){this.setTooltipTitle($L("emptyTooltip"));this.setTooltipContent("");this._ttEmpty=true;}}
function onDateMouseOver(ev,date){var events=this.events[date];date=date.substr(1).split(/_/);date=new Date(parseInt(date[0],10),parseInt(date[1],10)-1,parseInt(date[2],10),0,0,0);if(events){this.setTooltipTitle(printDate(date,$L("eventson")));var tooltip=[];for(var i=0;i<events.length;++i){tooltip.push(template($L("event"),events[i]));}
this.setTooltipContent(tooltip.join("<br/>"));}else{this.setTooltipTitle(printDate(date,$L("noevents")));this.setTooltipContent("");}}})();(function(){SwMiniCal_Wizard.inherits(DlContainer);function SwMiniCal_Wizard(args){if(args){D.setDefaults(this,args);DlContainer.call(this,args);}}
eval(Dynarch.EXPORT("SwMiniCal_Wizard",true));D.DEFAULT_ARGS={_iCalendarID:["iCalendarID",null],_timeZone:["timeZone",null],_locale:["locale",null],_fdow:["fdow",0]};var TMPL_DATE=String.template("_${getFullYear()}_${getMonth()+1}_${getDate()}");var SELECTORS={head_bg:".SwMiniCal, .SwMiniCal .tooltip .tooltip-content, .SwMiniCal select, .SwMiniCal input",head_bg_hover:"div.SwMiniCal:hover, div.SwMiniCal:hover .tooltip .tooltip-content, div.SwMiniCal:hover select, div.SwMiniCal:hover input",cal_bg:".SwMiniCal .body table.cal",cal_bg_hover:"div.SwMiniCal:hover .body table.cal",border:".SwMiniCal, .SwMiniCal .tooltip .tooltip-content",border_hover:"div.SwMiniCal:hover, div.SwMiniCal:hover .tooltip .tooltip-content, .SwMiniCal select:hover, .SwMiniCal input:hover, .SwMiniCal select:focus, .SwMiniCal input:focus",dayname:".SwMiniCal table.cal td.dayname",dayname_hover:"div.SwMiniCal:hover table.cal td.dayname",day:".SwMiniCal .day",day_hover:".SwMiniCal td.day:hover",today:".SwMiniCal .today",otherday:".SwMiniCal .otherday"};P.initDOM=function(){D.BASE.initDOM.apply(this,arguments);var layout=new DlLayout({parent:this,outerSpace:10,fillParent:true});var events={};var date=new Date();date.setDate(date.getDate()-4);events[TMPL_DATE(date)]=[{start:"9:00a",summary:"This was 4 days ago."}];date.setDate(date.getDate()+5);events[TMPL_DATE(date)]=[{start:"9:00a",summary:"Tomorrow never dies."}];var left=new DlContainer({});var vbox=new DlVbox({parent:left});var tmp=new DlLabel({parent:vbox,borderSpacing:2,label:"Embed this mini calendar in<br/>your web site.<br/>It provides a live view<br/>of this calendar!"});vbox.addSpace();var cal_cont=new DlWidget({parent:vbox});var fields_cont=new DlContainer({});var el=DOM.trash();this.calendar=SwMiniCal.setup({target:el,req_url:null,events:events,fdow:this._fdow,req_iCalendarID:this._iCalendarID,req_tz:this._timeZone,req_locale:this._locale});var cal=this.calendar;cal_cont.getElement().appendChild(cal._element);var buttons=new DlHbox({parent:vbox,borderSpacing:5});var btn=new DlButton({parent:buttons,label:"Get code"});btn.addEventListener("onClick",function(){var code=this.getHTMLCode();var parent=this.getParentDialog()||this;var dlg=new DlDialog({parent:parent,title:"Calendar code",resizable:true,quitBtn:"destroy",modal:true});var layout=new DlLayout({parent:dlg,outerSpace:5});var label1=new DlWidget({});label1.setContent("Put the following code in your document's &lt;HEAD&gt; tag:".bold());var entry1=new DlEntry({parent:dlg,type:"textarea",readonly:true,value:code});entry1.getInputElement().style.fontFamily="monospace";layout.packWidget(label1,{pos:"top",after:5});layout.packWidget(entry1,{pos:"top",fill:"60%"});var label2=new DlWidget({});label2.setContent("Add the following where you want to insert a calendar:".bold());var entry2=new DlEntry({parent:dlg,type:"textarea",readonly:true,value:this.getCreateCode()});entry2.getInputElement().style.fontFamily="monospace";layout.packWidget(label2,{pos:"top",before:5,after:5});layout.packWidget(entry2,{pos:"top",fill:"*"});var ps=parent.getInnerSize();dlg.setSize({x:0.8*ps.x,y:0.8*ps.y});dlg.show(true);}.$(this));layout.packWidget(left,{pos:"left",after:10});layout.packWidget(fields_cont,{pos:"left",fill:"*"});layout.setSize({x:600,y:600});this.style=new DlStyleSheet();var style=this.style;this.addEventListener("onDestroy",function(){this.style.destroy();this.style=null;this.cssRules=null;}.$(this));this.cssRules={};var cssRules=this.cssRules;this.textCssRules={};for(var i in SELECTORS){if(SELECTORS.hasOwnProperty(i)){try{cssRules[i]=style.insertRule(SELECTORS[i],"");}catch(ex){}}}
this.createOptions(fields_cont);this.createColors(fields_cont);};var CP;function getColorPicker(){return CP||(CP=new NiceColorPicker({}));}
P.createOptions=function(cont){var fs=new DlFieldset({parent:cont,label:"General options"});var fg=new DlFieldGrid({parent:fs,align:"center"});swApp.minicalTimeZoneID=swApp.syncSWorld.userSettingsDTO.timeZoneID;swApp.minicalTZButtonMenu=new DlButtonMenu({label:swApp.minicalTimeZoneID,connected:true});tzSelectHandler=function(selectedTZ){swApp.minicalTZButtonMenu._mainBtn.label(selectedTZ);swApp.minicalTimeZoneID=selectedTZ;};swApp.minicalTZMenu=swApp.createMenuTZ(swApp.tzMenuL,tzSelectHandler);swApp.minicalTZButtonMenu.setMenu(swApp.minicalTZMenu);fg.addField({label:"Timezone:",widget:swApp.minicalTZButtonMenu});var localeOptions=[];var tmpSort=[];var localeKey=null;for(localeKey in jsLocaleData){if(jsLocaleData.hasOwnProperty(localeKey)){tmpSort.push(localeKey);}}
function localeComparator(a,b){var x=jsLocaleData[a].displayLanguageUS.toLowerCase();var y=jsLocaleData[b].displayLanguageUS.toLowerCase();return((x<y)?-1:((x>y)?1:0));}
tmpSort.sort(localeComparator);for(var i=0;i<tmpSort.length;++i){localeKey=tmpSort[i];var localeData=jsLocaleData[localeKey];var display=localeData.displayLanguageUS;if(localeData.displayCountryUS.length>0){display+=" ";display+=localeData.displayCountryUS;}
var left=display;display+=" / "+localeData.displayLanguage;var right=localeData.displayLanguage;if(localeData.displayCountry.length>0){display+=" ";display+=localeData.displayCountry;right+=" "+localeData.displayCountry;}
if(left==right){display=left;}
localeOptions.push({label:display,value:localeKey});}
this.localeRadioSelect=new DlRadioSelect({options:localeOptions});this.localeRadioSelect.addEventListener("onChange",function(name,item,widget){swApp.log("minical locale changed:"+item);var locale=jsLocaleData[item];var newDN=[];var newSDN=[];var newMN=[];var newSMN=[];var i;for(i=1;i<8;++i){newDN.push(locale.weekDays[i]);}
for(i=1;i<8;++i){newSDN.push(locale.weekDays3[i]);}
for(i=0;i<12;++i){newMN.push(locale.months[i]);}
for(i=0;i<12;++i){newSMN.push(locale.months3[i]);}
window.SwMiniCal_Lang={};window.SwMiniCal_Lang.dn=newDN;window.SwMiniCal_Lang.sdn=newSDN;window.SwMiniCal_Lang.mn=newMN;window.SwMiniCal_Lang.smn=newSMN;this.calendar.redraw();}.$(this));var userSettingsLocaleKey=swApp.syncSWorld.userSettingsDTO.language;if(swApp.syncSWorld.userSettingsDTO.country&&swApp.syncSWorld.userSettingsDTO.country.length>0){userSettingsLocaleKey+="-"+swApp.syncSWorld.userSettingsDTO.country;}
this.localeRadioSelect.value(userSettingsLocaleKey);fg.addField({label:"Locale:",widget:this.localeRadioSelect});var options=[];options.push({value:0,label:Date.getDayName(0,false)});options.push({value:1,label:Date.getDayName(1,false)});this.fdowSelect=new DlRadioSelect({options:options,value:this._fdow});fg.addField({label:"First day of week:",widget:this.fdowSelect});this.fdowSelect.addEventListener("onChange",function(){this.calendar.fdow=this.fdowSelect.getValue();this.calendar.redraw();}.$(this));};P.createColors=function(cont){var fs=new DlFieldset({parent:cont,label:"Colors"});var table=new DlTable({parent:fs,align:"center"});var head=table.addRow();table.addCell(head);var cell=table.addCell(head);cell.setContent("Normal");cell.setStyle({width:"4em",textAlign:"center"});cell=table.addCell(head);cell.setContent("Hover");cell.setStyle({width:"4em",textAlign:"center"});var createRow=function(id,label,opts){var row=table.addRow();var c1=table.addCell(row);c1.setStyle({textAlign:"right"});c1.setContent(label);var c2=table.addCell(row);var color=new DlButtonColorPicker({parent:c2,connected:true});color.getElement().align="center";color.setColorPicker(getColorPicker());color.addEventListener("onSelect",function(rgb,hsv,color){opts.rules.foreach(applyRule.$(this,color));}.$(this));var c3=table.addCell(row);if(opts.hoverRules){var hoverColor=new DlButtonColorPicker({parent:c3,connected:true});hoverColor.getElement().align="center";hoverColor.setColorPicker(getColorPicker());hoverColor.addEventListener("onSelect",function(rgb,hsv,color){opts.hoverRules.foreach(applyRule.$(this,color));}.$(this));}
var c4=table.addCell(row);var btn=new DlButton({label:"« Reset",parent:c4});btn.addEventListener("onClick",function(){color._events_cp.onSelect(0,0,"",0);if(hoverColor){hoverColor._events_cp.onSelect(0,0,"",0);}});function applyRule(color,id){var r=this.cssRules[id];var changes={};changes[opts.what]=color;this.style.modifyRule(r,changes);var txt=this.textCssRules[SELECTORS[id]];if(!this.textCssRules[SELECTORS[id]]){txt=this.textCssRules[SELECTORS[id]]={};}
if(color){txt[opts.what]=color;}
else{delete txt[opts.what];}}}.$(this);function addSep(){var row=table.addRow();var cell=table.addCell(row);cell.getElement().colSpan=4;cell.setContent("<div class='Dl-Horizontal-Separator wide-separator'></div>");}
addSep();createRow("headBG","Header background:",{rules:"head_bg".qw(),hoverRules:"head_bg_hover".qw(),what:"backgroundColor"});createRow("headFG","Header text color:",{rules:"head_bg".qw(),hoverRules:"head_bg_hover".qw(),what:"color"});createRow("daynamesBG","Day names background:",{rules:"dayname".qw(),hoverRules:"dayname_hover".qw(),what:"backgroundColor"});createRow("daynamesFG","Day names text color:",{rules:"dayname".qw(),hoverRules:"dayname_hover".qw(),what:"color"});createRow("BG","Calendar Background:",{rules:"cal_bg".qw(),hoverRules:"cal_bg_hover".qw(),what:"backgroundColor"});createRow("FG","Calendar text color:",{rules:"cal_bg".qw(),hoverRules:"cal_bg_hover".qw(),what:"color"});createRow("border","Border color:",{rules:"border".qw(),hoverRules:"border_hover".qw(),what:"borderColor"});addSep();createRow("dayBG","Date background:",{rules:"day".qw(),hoverRules:"day_hover".qw(),what:"backgroundColor"});createRow("dayFG","Date text color:",{rules:"day".qw(),hoverRules:"day_hover".qw(),what:"color"});createRow("todayFG","Today text color:",{rules:"today".qw(),what:"color"});createRow("otherdayFG","Other month text color:",{rules:"otherday".qw(),what:"color"});};P.dumpCSS=function(){var dashLower=function(s){return"-"+s.toLowerCase();};var buf=String.buffer();for(var i in this.textCssRules){if(this.textCssRules.hasOwnProperty(i)){var rule=this.textCssRules[i];if(!Object.isEmpty(rule)){buf("  ",i," {\n");for(var what in rule){if(rule.hasOwnProperty(what)){var key=what.replace(/[A-Z]/g,dashLower);buf("    ",key,": ",rule[what],";\n");}}
buf("  }\n");}}}
return buf.get();};P._getLoaderScriptURL=function(){return"http://"+window.location.hostname+"/sw2/js/minical/getMiniCal.js";};P.getHTMLCode=function(){var code=String.buffer();code("<script type=\"text/javascript\">//<![CDATA[\n");code("  window.swMiniCal_timeZone = \"",swApp.minicalTimeZoneID,"\";\n");code("  window.swMiniCal_locale = \"",this.localeRadioSelect.value(),"\";\n");code("  window.swMiniCal_fdow = ",this.fdowSelect.getValue(),";\n");code("  window.swMiniCal_iCalendarID = ",this._iCalendarID.substring(2),";\n");code("//]]></script>\n");code("<script type='text/javascript' src=\"",this._getLoaderScriptURL(),"\"></script>\n");var css=this.dumpCSS().trim(true);if(/\S/.test(css)){code("<style type=\"text/css\">\n",css,"\n</style>\n");}
return code.get();};P.getCreateCode=function(){var code=String.buffer();code("<div id=\"calendarContainer\" style=\"width: 200px;\"></div>\n","<script type=\"text/javascript\">\n","  SwMiniCal.setup({ target: \"calendarContainer\" })\n","</script>");return code.get();};})();(function(){var DEFAULT_EVENTS=["onSelect","onHover","onHoverOut","onHueChange"];NiceColorPicker.inherits(DlContainer);function NiceColorPicker(args){if(args){args.className="DlWidget-3D";DlContainer.call(this,args);this.registerEvents(DEFAULT_EVENTS);this._updateCP=updateCP.clearingTimeout(25,this);this._init();}}
eval(Dynarch.EXPORT("NiceColorPicker"));function validateHexRgb(data){if(data.length!=3&&data.length!=6){throw new DlValidatorException("Must have 3 or 6 hex characters");}
if(!/^[0-9a-f]*$/i.test(data)){throw new DlValidatorException("Must be a hexadecimal RRGGBB value");}
if(data.length==3){data=data.charAt(0).repeat(2)+
data.charAt(1).repeat(2)+
data.charAt(2).repeat(2);}
return data.toUpperCase();}
function new_byteSpinner(key){return new DlSpinner({size:3,value:255,minVal:0,maxVal:255,accessKey:key});}
var TOOLTIP_TEMPLATE=String.template("<table>","<tr>","<td rowspan='4' style='background:#${hex}; width: 3em'></td>","<td style='text-align:right'>Red:</td><td>${bytes[0]}</td></tr>","<tr><td style='text-align:right'>Green:</td><td>${bytes[1]}</td></tr>","<tr><td style='text-align:right'>Blue:</td><td>${bytes[2]}</td></tr>","<tr><td style='text-align:right'>Hex:</td><td>#${hex}</td></tr>","</table>","You can drag this color","<br />into your history.");function tooltipCallback(){var rgb=this.args.widget.userData;return TOOLTIP_TEMPLATE({bytes:DlColor.RGB2bytes(rgb),hex:DlColor.RGB2hex(rgb)});}
var DRAG;function new_colorHistWidget(parent){if(!DRAG){DRAG=new ColorDrag({});}
var w=new DlWidget({parent:parent,drag:DRAG,tooltip:tooltipCallback,data:[1,1,1]});w.setStyle({border:"1px solid",borderColor:"#333 #ddd #ddd #333",background:"white"});return w;}
P._init=function(){var top_box=new DlVbox({parent:this,borderSpacing:5});var box1=new DlHbox({parent:top_box});this._selectedColor=new_colorHistWidget(top_box);this._selectedColor.setStyle({padding:"2px 0",height:"18px",textAlign:"center"});this._selectedColor.setUnselectable();this._selectedColor.addEventListener("onClick",onSelectedColorClick.$(this));top_box.addSeparator();var history_box=new DlHbox({parent:top_box,align:"center"});top_box.addSeparator();var btn_box=new DlHbox({parent:top_box});this._cp=new DlColorPickerHSV({parent:box1});var grid=new DlFieldGrid({parent:box1});grid.setStyle({marginLeft:"5px"});this._redEntry=new_byteSpinner("ALT 'r'");grid.addField({label:"<u>R</u>ed:",widget:this._redEntry});this._greenEntry=new_byteSpinner("ALT 'g'");grid.addField({label:"<u>G</u>reen:",widget:this._greenEntry});this._blueEntry=new_byteSpinner("ALT 'b'");grid.addField({label:"<u>B</u>lue:",widget:this._blueEntry});grid.addSeparator();this._hexEntry=new DlEntry({size:6,value:"FFFFFF",data:"X",accessKey:"ALT 'x'",validators:[new DlValidator(validateHexRgb)]});grid.addField({label:"HE<u>X</u>:",widget:this._hexEntry});var listener=onEntryChange.$(null,this);this._redEntry.addEventListener("onChange",listener);this._greenEntry.addEventListener("onChange",listener);this._blueEntry.addEventListener("onChange",listener);this._hexEntry.addEventListener("onChange",listener);this._historyWidgets=[];var history=this._historyWidgets;var count=10;count.times(function(i){var b=new_colorHistWidget(history_box);b._acceptsColorDrop=true;b.setStyle({width:"18px",height:"18px"});b.addEventListener("onClick",onHistClick.$(this,b));history.push(b);if(i>0){b.setStyle("marginLeft","5px");}},this);this._color=[1,1,1];this._cp.addEventListener({onSelect:onCpSelect.$(this),onHover:onCpHover.$(this),onHoverOut:onCpHoverOut.$(this),onHueChange:onCpHueChange.$(this)});btn_box.addFiller();var ok=new DlButton({parent:btn_box,label:"OK".fixedWidth("5em"),focusable:true});ok.addEventListener("onClick",okClicked.$(this));btn_box.addSpace();var cancel=new DlButton({parent:btn_box,label:"Cancel".fixedWidth("5em"),focusable:true});cancel.addEventListener("onClick",cancelClicked.$(this));};P._updateEntries=function(rgb){var bytes=DlColor.RGB2bytes(rgb);this._redEntry.setValue(bytes[0],true);this._greenEntry.setValue(bytes[1],true);this._blueEntry.setValue(bytes[2],true);this._hexEntry.setValue(DlColor.RGB2hex(rgb),true);this._selectedColor.setStyle({background:DlColor.RGB2color(rgb)});this._selectedColor.userData=rgb;};P.setRGB=function(rgb,nohooks){this._color=rgb;var color=DlColor.RGB2color(rgb);this._updateEntries(rgb);var hsv=DlColor.RGB2HSV(rgb);this._cp.setHSV(hsv);if(!nohooks){this.callHooks("onSelect",rgb,hsv,color);}};P.setHSV=function(hsv){var rgb=DlColor.HSV2RGB(hsv);return this.setRGB(rgb,true);};function onCpSelect(rgb,hsv,cssColor){this.setRGB(rgb,true);this._selectedColor.flash();}
function onCpHover(rgb,hsv,cssColor){this._updateEntries(rgb);}
function onCpHoverOut(){this._updateEntries(this._color);}
function onCpHueChange(hue){var hsv=DlColor.RGB2HSV(this._color);hsv[0]=hue;var rgb=DlColor.HSV2RGB(hsv);this._color=rgb;this._updateEntries(rgb,true);}
function onEntryChange(ncp){var rgb;if(this.userData=="X"){rgb=DlColor.color2RGB("#"+this.getValue());}else{rgb=[ncp._redEntry.getValue()/255,ncp._greenEntry.getValue()/255,ncp._blueEntry.getValue()/255];}
ncp._updateEntries(rgb);var hsv=DlColor.RGB2HSV(rgb);ncp._updateCP(hsv);}
function onHistClick(b){this.setRGB(b.userData);}
function okClicked(){this.setRGB(this._selectedColor.userData);}
function onSelectedColorClick(){this.setRGB(this._selectedColor.userData);}
function cancelClicked(){DlPopup.clearAllPopups();}
function updateCP(hsv){this._cp.setHSV(hsv);}
ColorDrag.inherits(DlDrag);function ColorDrag(args){DlDrag.call(this,args);}
ColorDrag.inject({dropOK:function(source,ev,target){this.canDrop=false;if(target){this.canDrop=target._acceptsColorDrop;if(this.canDrop){this.target=target;}}
return this.canDrop;},doDrop:function(source,ev){this.target.setStyle("background",DlColor.RGB2color(source.userData));this.target.userData=source.userData;},makeElementCopy:function(widget,ev){var el=DlDrag.prototype.makeElementCopy.call(this,widget,ev);el.innerHTML="";el.style.width="18px";el.style.height="18px";}});})();var keyStr="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";function encode64(input){var output="";var chr1,chr2,chr3;var enc1,enc2,enc3,enc4;var i=0;do{chr1=input.charCodeAt(i++);chr2=input.charCodeAt(i++);chr3=input.charCodeAt(i++);enc1=chr1>>2;enc2=((chr1&3)<<4)|(chr2>>4);enc3=((chr2&15)<<2)|(chr3>>6);enc4=chr3&63;if(isNaN(chr2)){enc3=enc4=64;}else if(isNaN(chr3)){enc4=64;}
output=output+keyStr.charAt(enc1)+keyStr.charAt(enc2)+
keyStr.charAt(enc3)+keyStr.charAt(enc4);}while(i<input.length);return output;}
function decode64(input){var output="";var chr1,chr2,chr3;var enc1,enc2,enc3,enc4;var i=0;input=input.replace(/[^A-Za-z0-9\+\/\=]/g,"");do{enc1=keyStr.indexOf(input.charAt(i++));enc2=keyStr.indexOf(input.charAt(i++));enc3=keyStr.indexOf(input.charAt(i++));enc4=keyStr.indexOf(input.charAt(i++));chr1=(enc1<<2)|(enc2>>4);chr2=((enc2&15)<<4)|(enc3>>2);chr3=((enc3&3)<<6)|enc4;output=output+String.fromCharCode(chr1);if(enc3!=64){output=output+String.fromCharCode(chr2);}
if(enc4!=64){output=output+String.fromCharCode(chr3);}}while(i<input.length);return output;}
var hexcase=0;var b64pad="=";var chrsz=8;function hex_md5(s){return binl2hex(core_md5(str2binl(s),s.length*chrsz));}
function b64_md5(s){return binl2b64(core_md5(str2binl(s),s.length*chrsz));}
function str_md5(s){return binl2str(core_md5(str2binl(s),s.length*chrsz));}
function hex_hmac_md5(key,data){return binl2hex(core_hmac_md5(key,data));}
function b64_hmac_md5(key,data){return binl2b64(core_hmac_md5(key,data));}
function str_hmac_md5(key,data){return binl2str(core_hmac_md5(key,data));}
function md5_vm_test()
{return hex_md5("abc")=="900150983cd24fb0d6963f7d28e17f72";}
function core_md5(x,len)
{x[len>>5]|=0x80<<((len)%32);x[(((len+64)>>>9)<<4)+14]=len;var a=1732584193;var b=-271733879;var c=-1732584194;var d=271733878;var olda,oldb,oldc,oldd;for(var i=0;i<x.length;i+=16)
{olda=a;oldb=b;oldc=c;oldd=d;a=md5_ff(a,b,c,d,x[i+0],7,-680876936);d=md5_ff(d,a,b,c,x[i+1],12,-389564586);c=md5_ff(c,d,a,b,x[i+2],17,606105819);b=md5_ff(b,c,d,a,x[i+3],22,-1044525330);a=md5_ff(a,b,c,d,x[i+4],7,-176418897);d=md5_ff(d,a,b,c,x[i+5],12,1200080426);c=md5_ff(c,d,a,b,x[i+6],17,-1473231341);b=md5_ff(b,c,d,a,x[i+7],22,-45705983);a=md5_ff(a,b,c,d,x[i+8],7,1770035416);d=md5_ff(d,a,b,c,x[i+9],12,-1958414417);c=md5_ff(c,d,a,b,x[i+10],17,-42063);b=md5_ff(b,c,d,a,x[i+11],22,-1990404162);a=md5_ff(a,b,c,d,x[i+12],7,1804603682);d=md5_ff(d,a,b,c,x[i+13],12,-40341101);c=md5_ff(c,d,a,b,x[i+14],17,-1502002290);b=md5_ff(b,c,d,a,x[i+15],22,1236535329);a=md5_gg(a,b,c,d,x[i+1],5,-165796510);d=md5_gg(d,a,b,c,x[i+6],9,-1069501632);c=md5_gg(c,d,a,b,x[i+11],14,643717713);b=md5_gg(b,c,d,a,x[i+0],20,-373897302);a=md5_gg(a,b,c,d,x[i+5],5,-701558691);d=md5_gg(d,a,b,c,x[i+10],9,38016083);c=md5_gg(c,d,a,b,x[i+15],14,-660478335);b=md5_gg(b,c,d,a,x[i+4],20,-405537848);a=md5_gg(a,b,c,d,x[i+9],5,568446438);d=md5_gg(d,a,b,c,x[i+14],9,-1019803690);c=md5_gg(c,d,a,b,x[i+3],14,-187363961);b=md5_gg(b,c,d,a,x[i+8],20,1163531501);a=md5_gg(a,b,c,d,x[i+13],5,-1444681467);d=md5_gg(d,a,b,c,x[i+2],9,-51403784);c=md5_gg(c,d,a,b,x[i+7],14,1735328473);b=md5_gg(b,c,d,a,x[i+12],20,-1926607734);a=md5_hh(a,b,c,d,x[i+5],4,-378558);d=md5_hh(d,a,b,c,x[i+8],11,-2022574463);c=md5_hh(c,d,a,b,x[i+11],16,1839030562);b=md5_hh(b,c,d,a,x[i+14],23,-35309556);a=md5_hh(a,b,c,d,x[i+1],4,-1530992060);d=md5_hh(d,a,b,c,x[i+4],11,1272893353);c=md5_hh(c,d,a,b,x[i+7],16,-155497632);b=md5_hh(b,c,d,a,x[i+10],23,-1094730640);a=md5_hh(a,b,c,d,x[i+13],4,681279174);d=md5_hh(d,a,b,c,x[i+0],11,-358537222);c=md5_hh(c,d,a,b,x[i+3],16,-722521979);b=md5_hh(b,c,d,a,x[i+6],23,76029189);a=md5_hh(a,b,c,d,x[i+9],4,-640364487);d=md5_hh(d,a,b,c,x[i+12],11,-421815835);c=md5_hh(c,d,a,b,x[i+15],16,530742520);b=md5_hh(b,c,d,a,x[i+2],23,-995338651);a=md5_ii(a,b,c,d,x[i+0],6,-198630844);d=md5_ii(d,a,b,c,x[i+7],10,1126891415);c=md5_ii(c,d,a,b,x[i+14],15,-1416354905);b=md5_ii(b,c,d,a,x[i+5],21,-57434055);a=md5_ii(a,b,c,d,x[i+12],6,1700485571);d=md5_ii(d,a,b,c,x[i+3],10,-1894986606);c=md5_ii(c,d,a,b,x[i+10],15,-1051523);b=md5_ii(b,c,d,a,x[i+1],21,-2054922799);a=md5_ii(a,b,c,d,x[i+8],6,1873313359);d=md5_ii(d,a,b,c,x[i+15],10,-30611744);c=md5_ii(c,d,a,b,x[i+6],15,-1560198380);b=md5_ii(b,c,d,a,x[i+13],21,1309151649);a=md5_ii(a,b,c,d,x[i+4],6,-145523070);d=md5_ii(d,a,b,c,x[i+11],10,-1120210379);c=md5_ii(c,d,a,b,x[i+2],15,718787259);b=md5_ii(b,c,d,a,x[i+9],21,-343485551);a=safe_add(a,olda);b=safe_add(b,oldb);c=safe_add(c,oldc);d=safe_add(d,oldd);}
return[a,b,c,d];}
function md5_cmn(q,a,b,x,s,t)
{return safe_add(bit_rol(safe_add(safe_add(a,q),safe_add(x,t)),s),b);}
function md5_ff(a,b,c,d,x,s,t)
{return md5_cmn((b&c)|((~b)&d),a,b,x,s,t);}
function md5_gg(a,b,c,d,x,s,t)
{return md5_cmn((b&d)|(c&(~d)),a,b,x,s,t);}
function md5_hh(a,b,c,d,x,s,t)
{return md5_cmn(b^c^d,a,b,x,s,t);}
function md5_ii(a,b,c,d,x,s,t)
{return md5_cmn(c^(b|(~d)),a,b,x,s,t);}
function core_hmac_md5(key,data)
{var bkey=str2binl(key);if(bkey.length>16){bkey=core_md5(bkey,key.length*chrsz);}
var ipad=new Array(16),opad=new Array(16);for(var i=0;i<16;i++)
{ipad[i]=bkey[i]^0x36363636;opad[i]=bkey[i]^0x5C5C5C5C;}
var hash=core_md5(ipad.concat(str2binl(data)),512+data.length*chrsz);return core_md5(opad.concat(hash),512+128);}
function safe_add(x,y)
{var lsw=(x&0xFFFF)+(y&0xFFFF);var msw=(x>>16)+(y>>16)+(lsw>>16);return(msw<<16)|(lsw&0xFFFF);}
function bit_rol(num,cnt)
{return(num<<cnt)|(num>>>(32-cnt));}
function str2binl(str)
{var bin=[];var mask=(1<<chrsz)-1;for(var i=0;i<str.length*chrsz;i+=chrsz)
{bin[i>>5]|=(str.charCodeAt(i/chrsz)&mask)<<(i%32);}
return bin;}
function binl2str(bin)
{var str="";var mask=(1<<chrsz)-1;for(var i=0;i<bin.length*32;i+=chrsz)
{str+=String.fromCharCode((bin[i>>5]>>>(i%32))&mask);}
return str;}
function binl2hex(binarray)
{var hex_tab=hexcase?"0123456789ABCDEF":"0123456789abcdef";var str="";for(var i=0;i<binarray.length*4;i++)
{str+=hex_tab.charAt((binarray[i>>2]>>((i%4)*8+4))&0xF)+
hex_tab.charAt((binarray[i>>2]>>((i%4)*8))&0xF);}
return str;}
function binl2b64(binarray)
{var tab="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";var str="";var triplet,j;for(var i=0;i<binarray.length*4;i+=3)
{triplet=(((binarray[i>>2]>>8*(i%4))&0xFF)<<16)|(((binarray[i+1>>2]>>8*((i+1)%4))&0xFF)<<8)|((binarray[i+2>>2]>>8*((i+2)%4))&0xFF);for(j=0;j<4;j++)
{if(i*8+j*6>binarray.length*32){str+=b64pad;}
else{str+=tab.charAt((triplet>>6*(3-j))&0x3F);}}}
return str;}
var hexcase=0;var b64pad="=";var chrsz=8;function hex_sha1(s){return binb2hex(core_sha1(str2binb(s),s.length*chrsz));}
function b64_sha1(s){return binb2b64(core_sha1(str2binb(s),s.length*chrsz));}
function str_sha1(s){return binb2str(core_sha1(str2binb(s),s.length*chrsz));}
function hex_hmac_sha1(key,data){return binb2hex(core_hmac_sha1(key,data));}
function b64_hmac_sha1(key,data){return binb2b64(core_hmac_sha1(key,data));}
function str_hmac_sha1(key,data){return binb2str(core_hmac_sha1(key,data));}
function sha1_vm_test()
{return hex_sha1("abc")=="a9993e364706816aba3e25717850c26c9cd0d89d";}
function core_sha1(x,len)
{x[len>>5]|=0x80<<(24-len%32);x[((len+64>>9)<<4)+15]=len;var w=new Array(80);var a=1732584193;var b=-271733879;var c=-1732584194;var d=271733878;var e=-1009589776;var i,j,t,olda,oldb,oldc,oldd,olde;for(i=0;i<x.length;i+=16)
{olda=a;oldb=b;oldc=c;oldd=d;olde=e;for(j=0;j<80;j++)
{if(j<16){w[j]=x[i+j];}
else{w[j]=rol(w[j-3]^w[j-8]^w[j-14]^w[j-16],1);}
t=safe_add(safe_add(rol(a,5),sha1_ft(j,b,c,d)),safe_add(safe_add(e,w[j]),sha1_kt(j)));e=d;d=c;c=rol(b,30);b=a;a=t;}
a=safe_add(a,olda);b=safe_add(b,oldb);c=safe_add(c,oldc);d=safe_add(d,oldd);e=safe_add(e,olde);}
return[a,b,c,d,e];}
function sha1_ft(t,b,c,d)
{if(t<20){return(b&c)|((~b)&d);}
if(t<40){return b^c^d;}
if(t<60){return(b&c)|(b&d)|(c&d);}
return b^c^d;}
function sha1_kt(t)
{return(t<20)?1518500249:(t<40)?1859775393:(t<60)?-1894007588:-899497514;}
function core_hmac_sha1(key,data)
{var bkey=str2binb(key);if(bkey.length>16){bkey=core_sha1(bkey,key.length*chrsz);}
var ipad=new Array(16),opad=new Array(16);for(var i=0;i<16;i++)
{ipad[i]=bkey[i]^0x36363636;opad[i]=bkey[i]^0x5C5C5C5C;}
var hash=core_sha1(ipad.concat(str2binb(data)),512+data.length*chrsz);return core_sha1(opad.concat(hash),512+160);}
function safe_add(x,y)
{var lsw=(x&0xFFFF)+(y&0xFFFF);var msw=(x>>16)+(y>>16)+(lsw>>16);return(msw<<16)|(lsw&0xFFFF);}
function rol(num,cnt)
{return(num<<cnt)|(num>>>(32-cnt));}
function str2binb(str)
{var bin=[];var mask=(1<<chrsz)-1;for(var i=0;i<str.length*chrsz;i+=chrsz)
{bin[i>>5]|=(str.charCodeAt(i/chrsz)&mask)<<(32-chrsz-i%32);}
return bin;}
function binb2str(bin)
{var str="";var mask=(1<<chrsz)-1;for(var i=0;i<bin.length*32;i+=chrsz)
{str+=String.fromCharCode((bin[i>>5]>>>(32-chrsz-i%32))&mask);}
return str;}
function binb2hex(binarray)
{var hex_tab=hexcase?"0123456789ABCDEF":"0123456789abcdef";var str="";for(var i=0;i<binarray.length*4;i++)
{str+=hex_tab.charAt((binarray[i>>2]>>((3-i%4)*8+4))&0xF)+
hex_tab.charAt((binarray[i>>2]>>((3-i%4)*8))&0xF);}
return str;}
function binb2b64(binarray)
{var tab="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";var str="";var triplet,j;for(var i=0;i<binarray.length*4;i+=3)
{triplet=(((binarray[i>>2]>>8*(3-i%4))&0xFF)<<16)|(((binarray[i+1>>2]>>8*(3-(i+1)%4))&0xFF)<<8)|((binarray[i+2>>2]>>8*(3-(i+2)%4))&0xFF);for(j=0;j<4;j++)
{if(i*8+j*6>binarray.length*32){str+=b64pad;}
else{str+=tab.charAt((triplet>>6*(3-j))&0x3F);}}}
return str;}
if(!Function.prototype.bind){Function.prototype.bind=function(obj)
{var func=this;return function(){return func.apply(obj,arguments);};};}
if(!Function.prototype.prependArg){Function.prototype.prependArg=function(arg)
{var func=this;return function(){var newargs=[arg];for(var i=0;i<arguments.length;i++)
newargs.push(arguments[i]);return func.apply(this,newargs);};};}
if(!Array.prototype.indexOf)
{Array.prototype.indexOf=function(elt)
{var len=this.length;var from=Number(arguments[1])||0;from=(from<0)?Math.ceil(from):Math.floor(from);if(from<0)
from+=len;for(;from<len;from++){if(from in this&&this[from]===elt)
return from;}
return-1;};}
function $build(name,attrs){return new Strophe.Builder(name,attrs);}
function $iq(attrs){return new Strophe.Builder("iq",attrs);}
function $pres(attrs){return new Strophe.Builder("presence",attrs);}
Strophe={NS:{HTTPBIND:"http://jabber.org/protocol/httpbind",BOSH:"urn:xmpp:xbosh",CLIENT:"jabber:client",AUTH:"jabber:iq:auth",ROSTER:"jabber:iq:roster",PROFILE:"jabber:iq:profile",DISCO_INFO:"http://jabber.org/protocol/disco#info",DISCO_ITEMS:"http://jabber.org/protocol/disco#items",MUC:"http://jabber.org/protocol/muc",SASL:"urn:ietf:params:xml:ns:xmpp-sasl",STREAM:"http://etherx.jabber.org/streams",BIND:"urn:ietf:params:xml:ns:xmpp-bind",SESSION:"urn:ietf:params:xml:ns:xmpp-session",VERSION:"jabber:iq:version"},Status:{ERROR:0,CONNECTING:1,CONNFAIL:2,AUTHENTICATING:3,AUTHFAIL:4,CONNECTED:5,DISCONNECTED:6,DISCONNECTING:7},LogLevel:{DEBUG:0,INFO:1,WARN:2,ERROR:3,FATAL:4},ElementType:{NORMAL:1,TEXT:3},TIMEOUT:70,SECONDARY_TIMEOUT:7,forEachChild:function(elem,elemName,func)
{var i,childNode;for(i=0;i<elem.childNodes.length;i++){childNode=elem.childNodes[i];if(childNode.nodeType==Strophe.ElementType.NORMAL&&(!elemName||this.isTagEqual(childNode,elemName))){func(childNode);}}},isTagEqual:function(el,name)
{return el.tagName.toLowerCase()==name.toLowerCase();},xmlElement:function(name)
{if(!name){return null;}
var node=null;if(window.ActiveXObject){node=new ActiveXObject("Microsoft.XMLDOM").createElement(name);}else{node=document.createElement(name);}
if(node.tagName!=name)
node.setAttribute("_realname",name);var a,i;for(a=1;a<arguments.length;a++){if(!arguments[a]){continue;}
if(typeof(arguments[a])=="string"||typeof(arguments[a])=="number"){node.appendChild(Strophe.xmlTextNode(arguments[a]));}else if(typeof(arguments[a])=="object"&&typeof(arguments[a]['sort'])=="function"){for(i=0;i<arguments[a].length;i++){if(typeof(arguments[a][i])=="object"&&typeof(arguments[a][i]['sort'])=="function"){node.setAttribute(arguments[a][i][0],arguments[a][i][1]);}}}}
return node;},xmlTextNode:function(text)
{if(window.ActiveXObject){return new ActiveXObject("Microsoft.XMLDOM").createTextNode(text);}else{return document.createTextNode(text);}},getText:function(elem)
{if(!elem)return null;var str="";if(elem.childNodes.length===0&&elem.nodeType==Strophe.ElementType.TEXT){str+=elem.nodeValue;}
for(var i=0;i<elem.childNodes.length;i++){if(elem.childNodes[i].nodeType==Strophe.ElementType.TEXT){str+=elem.childNodes[i].nodeValue;}}
return str;},copyElement:function(elem)
{var i,el;if(elem.nodeType==Strophe.ElementType.NORMAL){el=Strophe.xmlElement(elem.tagName);for(i=0;i<elem.attributes.length;i++){el.setAttribute(elem.attributes[i].nodeName.toLowerCase(),elem.attributes[i].value);}
for(i=0;i<elem.childNodes.length;i++){el.appendChild(Strophe.copyElement(elem.childNodes[i]));}}else if(elem.nodeType==Strophe.ElementType.TEXT){el=Strophe.xmlTextNode(elem.nodeValue);}
return el;},escapeJid:function(jid)
{var user=jid.split("@");if(user.length==1)
return jid;var host=user.splice(user.length-1,1)[0];user=user.join("@").replace(/^\s+|\s+$/g,'').replace(/\\/g,"\\5c").replace(/ /g,"\\20").replace(/\"/g,"\\22").replace(/\&/g,"\\26").replace(/\'/g,"\\27").replace(/\//g,"\\2f").replace(/:/g,"\\3a").replace(/</g,"\\3c").replace(/>/g,"\\3e").replace(/@/g,"\\40");return[user,host].join("@");},unescapeJid:function(jid)
{return jid.replace(/\\20/g," ").replace(/\\22/g,'"').replace(/\\26/g,"&").replace(/\\27/g,"'").replace(/\\2f/g,"/").replace(/\\3a/g,":").replace(/\\3c/g,"<").replace(/\\3e/g,">").replace(/\\40/g,"@").replace(/\\5c/g,"\\");},getNodeFromJid:function(jid)
{if(jid.indexOf("@")<0)
return null;return Strophe.escapeJid(jid).split("@")[0];},getDomainFromJid:function(jid)
{var bare=Strophe.escapeJid(Strophe.getBareJidFromJid(jid));if(bare.indexOf("@")<0)
return bare;else
return bare.split("@")[1];},getResourceFromJid:function(jid)
{var s=Strophe.escapeJid(jid).split("/");if(s.length<2)return null;return s[1];},getBareJidFromJid:function(jid)
{return this.escapeJid(jid).split("/")[0];},log:function(level,msg)
{return;},debug:function(msg)
{this.log(this.LogLevel.DEBUG,msg);},info:function(msg)
{this.log(this.LogLevel.INFO,msg);},warn:function(msg)
{this.log(this.LogLevel.WARN,msg);},error:function(msg)
{this.log(this.LogLevel.ERROR,msg);},fatal:function(msg)
{this.log(this.LogLevel.FATAL,msg);},serialize:function(elem)
{var result;if(!elem)return null;var nodeName=elem.nodeName;var i,child;if(elem.getAttribute("_realname")){nodeName=elem.getAttribute("_realname");}
result="<"+nodeName;for(i=0;i<elem.attributes.length;i++){if(elem.attributes[i].nodeName!="_realname"){result+=" "+elem.attributes[i].nodeName.toLowerCase()+"='"+elem.attributes[i].value.replace("'","&#39;").replace("&","&#x26;")+"'";}}
if(elem.childNodes.length>0){result+=">";for(i=0;i<elem.childNodes.length;i++){child=elem.childNodes[i];if(child.nodeType==Strophe.ElementType.NORMAL){result+=Strophe.serialize(child);}else if(child.nodeType==Strophe.ElementType.TEXT){result+=child.nodeValue;}}
result+="</"+nodeName+">";}else{result+="/>";}
return result;},_requestId:0};Strophe.Builder=function(name,attrs)
{this.nodeTree=this._makeNode(name,attrs);this.node=this.nodeTree;};Strophe.Builder.prototype={tree:function()
{return this.nodeTree;},toString:function()
{return Strophe.serialize(this.nodeTree);},up:function()
{this.node=this.node.parentNode;return this;},attrs:function(moreattrs)
{for(var k in moreattrs)
this.node.setAttribute(k,moreattrs[k]);return this;},c:function(name,attrs)
{var child=this._makeNode(name,attrs);this.node.appendChild(child);this.node=child;return this;},cnode:function(elem)
{this.node.appendChild(elem);this.node=elem;return this;},t:function(text)
{var child=Strophe.xmlTextNode(text);this.node.appendChild(child);return this;},_makeNode:function(name,attrs)
{var node=Strophe.xmlElement(name);for(var k in attrs)
node.setAttribute(k,attrs[k]);return node;}};Strophe.Handler=function(handler,ns,name,type,id,from)
{this.handler=handler;this.ns=ns;this.name=name;this.type=type;this.id=id;this.from=from;this.user=true;};Strophe.Handler.prototype={isMatch:function(elem)
{var nsMatch,i;nsMatch=false;if(!this.ns){nsMatch=true;}else{var self=this;Strophe.forEachChild(elem,null,function(elem){if(elem.getAttribute("xmlns")==self.ns)
nsMatch=true;});nsMatch=nsMatch||elem.getAttribute("xmlns")==this.ns;}
if(nsMatch&&(!this.name||Strophe.isTagEqual(elem,this.name))&&(!this.type||elem.getAttribute("type")==this.type)&&(!this.id||elem.getAttribute("id")==this.id)&&(!this.from||elem.getAttribute("from")==this.from)){return true;}
return false;},run:function(elem)
{var result=null;try{result=this.handler(elem);}catch(e){if(e.sourceURL){Strophe.fatal("error: "+this.handler+" "+e.sourceURL+":"+
e.line+" - "+e.name+": "+e.message);}else if(e.fileName){if(typeof(console)!="undefined"){console.trace();console.error(this.handler," - error - ",e,e.message);}
Strophe.fatal("error: "+this.handler+" "+
e.fileName+":"+e.lineNumber+" - "+
e.name+": "+e.message);}else{Strophe.fatal("error: "+this.handler);}
throw e;}
return result;},toString:function()
{return"{Handler: "+this.handler+"("+this.name+","+
this.id+","+this.ns+")}";}};Strophe.TimedHandler=function(period,handler)
{this.period=period;this.handler=handler;this.lastCalled=new Date().getTime();this.user=true;};Strophe.TimedHandler.prototype={run:function()
{this.lastCalled=new Date().getTime();return this.handler();},reset:function()
{this.lastCalled=new Date().getTime();},toString:function()
{return"{TimedHandler: "+this.handler+"("+this.period+")}";}};Strophe.Request=function(data,func,rid,sends)
{this.id=++Strophe._requestId;this.data=data;this.origFunc=func;this.func=func;this.rid=rid;this.date=NaN;this.sends=sends||0;this.abort=false;this.dead=null;this.age=function(){if(!this.date)return 0;var now=new Date();return(now-this.date)/1000;};this.timeDead=function(){if(!this.dead)return 0;var now=new Date();return(now-this.dead)/1000;};this.xhr=this._newXHR();};Strophe.Request.prototype={getResponse:function()
{var node=null;if(this.xhr.responseXML&&this.xhr.responseXML.documentElement){node=this.xhr.responseXML.documentElement;if(node.tagName=="parsererror"){Strophe.error("invalid response received");Strophe.error("responseText: "+this.xhr.responseText);Strophe.error("responseXML: "+
Strophe.serialize(this.xhr.responseXML));throw"parsererror";}}else if(this.xhr.responseText){Strophe.error("invalid response received");Strophe.error("responseText: "+this.xhr.responseText);Strophe.error("responseXML: "+
Strophe.serialize(this.xhr.responseXML));}
return node;},_newXHR:function()
{var xhr=null;if(window.XMLHttpRequest){xhr=new XMLHttpRequest();if(xhr.overrideMimeType){xhr.overrideMimeType("text/xml");}}else if(window.ActiveXObject){xhr=new ActiveXObject("Microsoft.XMLHTTP");}
xhr.onreadystatechange=this.func.prependArg(this);return xhr;}};Strophe.Connection=function(service)
{this.service=service;this.jid="";this.rid=Math.floor(Math.random()*4294967295);this.sid=null;this.streamId=null;this.do_session=false;this.do_bind=false;this.timedHandlers=[];this.handlers=[];this.removeTimeds=[];this.removeHandlers=[];this.addTimeds=[];this.addHandlers=[];this._idleTimeout=null;this._disconnectTimeout=null;this.authenticated=false;this.disconnecting=false;this.connected=false;this.errors=0;this.paused=false;this.window=5;this._data=[];this._requests=[];this._uniqueId=Math.round(Math.random()*10000);this._sasl_success_handler=null;this._sasl_failure_handler=null;this._sasl_challenge_handler=null;this._idleTimeout=setTimeout(this._onIdle.bind(this),100);};Strophe.Connection.prototype={reset:function()
{this.rid=Math.floor(Math.random()*4294967295);this.sid=null;this.streamId=null;this.do_session=false;this.do_bind=false;this.timedHandlers=[];this.handlers=[];this.removeTimeds=[];this.removeHandlers=[];this.addTimeds=[];this.addHandlers=[];this.authenticated=false;this.disconnecting=false;this.connected=false;this.errors=0;this._requests=[];this._uniqueId=Math.round(Math.random()*10000);},pause:function()
{this.paused=true;},resume:function()
{this.paused=false;},getUniqueId:function(suffix)
{if(typeof(suffix)=="string"||typeof(suffix)=="number"){return++this._uniqueId+":"+suffix;}else{return++this._uniqueId+"";}},connect:function(jid,pass,callback,wait,hold,wind)
{this.jid=jid;this.pass=pass;this.connect_callback=callback;this.disconnecting=false;this.connected=false;this.authenticated=false;this.errors=0;if(!wait)wait=60;if(!hold)hold=1;if(wind)this.window=wind;this.domain=Strophe.getDomainFromJid(this.jid);var body=this._buildBody().attrs({to:this.domain,"xml:lang":"en",wait:wait,hold:hold,window:this.window,content:"text/xml; charset=utf-8",ver:"1.6","xmpp:version":"1.0","xmlns:xmpp":Strophe.NS.BOSH});this.connect_callback(Strophe.Status.CONNECTING,null);this._requests.push(new Strophe.Request(body.toString(),this._onRequestStateChange.bind(this).prependArg(this._connect_cb.bind(this)),body.tree().getAttribute("rid")));this._throttledRequestHandler();},attach:function(jid,sid,rid,callback)
{this.jid=jid;this.sid=sid;this.rid=rid;this.connect_callback=callback;this.domain=Strophe.getDomainFromJid(this.jid);this.authenticated=true;this.connected=true;},rawInput:function(data)
{return;},rawOutput:function(data)
{return;},send:function(elem)
{if(elem!==null&&typeof(elem["sort"])=="function"){for(var i=0;i<elem.length;i++){this._data.push(elem[i]);}}else{this._data.push(elem);}
this._throttledRequestHandler();clearTimeout(this._idleTimeout);this._idleTimeout=setTimeout(this._onIdle.bind(this),100);},_sendRestart:function()
{this._data.push("restart");this._throttledRequestHandler();clearTimeout(this._idleTimeout);this._idleTimeout=setTimeout(this._onIdle.bind(this),100);},addTimedHandler:function(period,handler)
{var thand=new Strophe.TimedHandler(period,handler);this.addTimeds.push(thand);return thand;},deleteTimedHandler:function(handRef)
{this.removeTimeds.push(handRef);},addHandler:function(handler,ns,name,type,id,from)
{var hand=new Strophe.Handler(handler,ns,name,type,id,from);this.addHandlers.push(hand);return hand;},deleteHandler:function(handRef)
{this.removeHandlers.push(handRef);},disconnect:function()
{Strophe.info("disconnect was called");if(this.connected){this._disconnectTimeout=this._addSysTimedHandler(3000,this._onDisconnectTimeout.bind(this));this._sendTerminate();}},_buildBody:function()
{var bodyWrap=$build('body',{rid:this.rid++,xmlns:Strophe.NS.HTTPBIND});if(this.sid!==null){bodyWrap.attrs({sid:this.sid});}
return bodyWrap;},_removeRequest:function(req)
{Strophe.debug("removing request");var i;for(i=this._requests.length-1;i>=0;i--){if(req==this._requests[i]){this._requests.splice(i,1);}}
req.xhr.onreadystatechange=function(){};this._throttledRequestHandler();},_restartRequest:function(i)
{var req=this._requests[i];if(req.dead===null){req.dead=new Date();}
this._processRequest(i);},_processRequest:function(i)
{var req=this._requests[i];var reqStatus=-1;try{if(req.xhr.readyState==4){reqStatus=req.xhr.status;}}catch(e){Strophe.error("caught an error in _requests["+i+"], reqStatus: "+reqStatus);}
if(typeof(reqStatus)=="undefined"){reqStatus=-1;}
var now=new Date();var time_elapsed=req.age();var primaryTimeout=(!isNaN(time_elapsed)&&time_elapsed>Strophe.TIMEOUT);var secondaryTimeout=(req.dead!==null&&req.timeDead()>Strophe.SECONDARY_TIMEOUT);var requestCompletedWithServerError=(req.xhr.readyState==4&&(reqStatus<1||reqStatus>=500));var oldreq;if(primaryTimeout||secondaryTimeout||requestCompletedWithServerError){if(secondaryTimeout){Strophe.error("Request "+
this._requests[i].id+" timed out (secondary), restarting");}
req.abort=true;req.xhr.abort();oldreq=req;this._requests[i]=new Strophe.Request(req.data,req.origFunc,req.rid,req.sends);req=this._requests[i];}
if(req.xhr.readyState===0){Strophe.debug("request id "+req.id+"."+req.sends+" posting");req.date=new Date();try{req.xhr.open("POST",this.service,true);}catch(e){Strophe.error("XHR open failed.");if(!this.connected)
this.connect_callback(Strophe.Status.CONNFAIL,"bad-service");this.disconnect();return;}
var sendFunc=function(){req.xhr.send(req.data);};if(req.sends>1){var backoff=Math.pow(req.sends,3)*1000;setTimeout(sendFunc,backoff);}else{sendFunc();}
req.sends++;this.rawOutput(req.data);}else{Strophe.debug("_throttledRequestHandler: "+
(i===0?"first":"second")+" request has readyState of "+
req.xhr.readyState);}},_throttledRequestHandler:function()
{if(!this._requests){Strophe.debug("_throttledRequestHandler called with "+"undefined requests");}else{Strophe.debug("_throttledRequestHandler called with "+
this._requests.length+" requests");}
if(!this._requests||this._requests.length===0){return;}
if(this._requests.length>0){this._processRequest(0);}
if(this._requests.length>1&&Math.abs(this._requests[0].rid-
this._requests[1].rid)<this.window-1){this._processRequest(1);}},_onRequestStateChange:function(func,req)
{Strophe.debug("request id "+req.id+"."+req.sends+" state changed to "+
req.xhr.readyState);if(req.abort){req.abort=false;return;}
var reqStatus;if(req.xhr.readyState==4){reqStatus=0;try{reqStatus=req.xhr.status;}catch(e){}
if(typeof(reqStatus)=="undefined"){reqStatus=0;}
if(this.disconnecting){if(reqStatus>=400){this._hitError(reqStatus);return;}}
var reqIs0=(this._requests[0]==req);var reqIs1=(this._requests[1]==req);if((reqStatus>0&&reqStatus<500)||req.sends>5){this._removeRequest(req);Strophe.debug("request id "+
req.id+" should now be removed");}
if(reqStatus==200){if(reqIs1||(reqIs0&&this._requests.length>0&&this._requests[0].age()>Strophe.SECONDARY_TIMEOUT)){this._restartRequest(0);}
Strophe.debug("request id "+
req.id+"."+
req.sends+" got 200");func(req);this.errors=0;}else{Strophe.error("request id "+
req.id+"."+
req.sends+" error "+reqStatus+" happened");if(reqStatus===0||(reqStatus>=400&&reqStatus<600)||reqStatus>=12000){this._hitError(reqStatus);if(reqStatus>=400&&reqStatus<500){this.connect_callback(Strophe.Status.DISCONNECTING,null);this._doDisconnect();}}}
if(!((reqStatus>0&&reqStatus<10000)||req.sends>5)){this._throttledRequestHandler();}}},_hitError:function(reqStatus)
{this.errors++;Strophe.warn("request errored, status: "+reqStatus+", number of errors: "+this.errors);if(this.errors>4){this._onDisconnectTimeout();}},_doDisconnect:function()
{Strophe.info("_doDisconnect was called");this.authenticated=false;this.disconnecting=false;this.sid=null;this.streamId=null;this.rid=Math.floor(Math.random()*4294967295);if(this.connected){this.connect_callback(Strophe.Status.DISCONNECTED,null);this.connected=false;}
this.handlers=[];this.timedHandlers=[];this.removeTimeds=[];this.removeHandlers=[];this.addTimeds=[];this.addHandlers=[];},_dataRecv:function(req)
{try{var elem=req.getResponse();}catch(e){if(e!="parsererror")throw e;this.connect_callback(Strophe.Status.DISCONNECTING,"strophe-parsererror");this.disconnect();}
if(elem===null)return;if(this.disconnecting&&this._requests.length==0){this.deleteTimedHandler(this._disconnectTimeout);this._disconnectTimeout=null;this._doDisconnect();}
this.rawInput(Strophe.serialize(elem));var typ=elem.getAttribute("type");var cond,conflict;if(typ!==null&&typ=="terminate"){cond=elem.getAttribute("condition");conflict=elem.getElementsByTagName("conflict");if(cond!==null){if(cond=="remote-stream-error"&&conflict.length>0){cond="conflict";}
this.connect_callback(Strophe.Status.CONNFAIL,cond);}else{this.connect_callback(Strophe.Status.CONNFAIL,"unknown");}
this.connect_callback(Strophe.Status.DISCONNECTING,null);this.disconnect();return;}
var i,hand;while(this.removeHandlers.length>0){hand=this.removeHandlers.pop();i=this.handlers.indexOf(hand);if(i>=0)
this.handlers.splice(i,1);}
while(this.addHandlers.length>0){this.handlers.push(this.addHandlers.pop());}
var self=this;Strophe.forEachChild(elem,null,function(child){var i,newList;newList=self.handlers;self.handlers=[];for(i=0;i<newList.length;i++){var hand=newList[i];if(hand.isMatch(child)&&(self.authenticated||!hand.user)){if(hand.run(child)){self.handlers.push(hand);}}else{self.handlers.push(hand);}}});},_sendTerminate:function()
{Strophe.info("_sendTerminate was called");var body=this._buildBody().attrs({type:"terminate"});var presence,i;if(this.authenticated){body.c('presence',{xmlns:Strophe.NS.CLIENT,type:'unavailable'});}
this.disconnecting=true;var req=new Strophe.Request(body.toString(),this._onRequestStateChange.bind(this).prependArg(this._dataRecv.bind(this)),body.tree().getAttribute("rid"));var r;while(this._requests.length>0){r=this._requests.pop();r.xhr.abort();r.abort=true;}
this._requests.push(req);this._throttledRequestHandler();},_connect_cb:function(req)
{Strophe.info("_connect_cb was called");this.connected=true;var bodyWrap=req.getResponse();if(!bodyWrap)return;this.rawInput(Strophe.serialize(bodyWrap));var typ=bodyWrap.getAttribute("type");var cond,conflict;if(typ!==null&&typ=="terminate"){cond=bodyWrap.getAttribute("condition");conflict=bodyWrap.getElementsByTagName("conflict");if(cond!==null){if(cond=="remote-stream-error"&&conflict.length>0){cond="conflict";}
this.connect_callback(Strophe.Status.CONNFAIL,cond);}else{this.connect_callback(Strophe.Status.CONNFAIL,"unknown");}
return;}
this.sid=bodyWrap.getAttribute("sid");this.stream_id=bodyWrap.getAttribute("authid");var do_sasl_plain=false;var do_sasl_digest_md5=false;var do_sasl_anonymous=false;var mechanisms=bodyWrap.getElementsByTagName("mechanism");var i,mech,auth_str,hashed_auth_str;if(mechanisms.length>0){for(i=0;i<mechanisms.length;i++){mech=Strophe.getText(mechanisms[i]);if(mech=='DIGEST-MD5'){do_sasl_digest_md5=true;}else if(mech=='PLAIN'){do_sasl_plain=true;}else if(mech=='ANONYMOUS'){do_sasl_anonymous=true;}}}
if(Strophe.getNodeFromJid(this.jid)===null&&do_sasl_anonymous){this.connect_callback(Strophe.Status.AUTHENTICATING,null);this._sasl_success_handler=this._addSysHandler(this._sasl_success_cb.bind(this),null,"success",null,null);this._sasl_failure_handler=this._addSysHandler(this._sasl_failure_cb.bind(this),null,"failure",null,null);this.send($build("auth",{xmlns:Strophe.NS.SASL,mechanism:"ANONYMOUS"}).tree());}else if(Strophe.getNodeFromJid(this.jid)===null){this.connect_callback(Strophe.Status.CONNFAIL,null);this.disconnect();}else if(do_sasl_digest_md5){this.connect_callback(Strophe.Status.AUTHENTICATING,null);this._sasl_challenge_handler=this._addSysHandler(this._sasl_challenge1_cb.bind(this),null,"challenge",null,null);this._sasl_failure_handler=this._addSysHandler(this._sasl_failure_cb.bind(this),null,"failure",null,null);this.send($build("auth",{xmlns:Strophe.NS.SASL,mechanism:"DIGEST-MD5"}).tree());}else if(do_sasl_plain){auth_str=Strophe.escapeJid(Strophe.getBareJidFromJid(this.jid));auth_str=auth_str+"\u0000";auth_str=auth_str+Strophe.getNodeFromJid(this.jid);auth_str=auth_str+"\u0000";auth_str=auth_str+this.pass;this.connect_callback(Strophe.Status.AUTHENTICATING,null);this._sasl_success_handler=this._addSysHandler(this._sasl_success_cb.bind(this),null,"success",null,null);this._sasl_failure_handler=this._addSysHandler(this._sasl_failure_cb.bind(this),null,"failure",null,null);hashed_auth_str=encode64(auth_str);this.send($build("auth",{xmlns:Strophe.NS.SASL,mechanism:"PLAIN"}).t(hashed_auth_str).tree());}else{this.connect_callback(Strophe.Status.AUTHENTICATING,null);this._addSysHandler(this._auth1_cb.bind(this),null,null,null,"_auth_1");this.send($iq({type:"get",to:this.domain,id:"_auth_1"}).c("query",{xmlns:Strophe.NS.AUTH}).c("username",{}).t(Strophe.getNodeFromJid(this.jid)).tree());}},_sasl_challenge1_cb:function(elem)
{var attribMatch=/([a-z]+)=("[^"]+"|[^,"]+)(?:,|$)/;var challenge=decode64(Strophe.getText(elem));var cnonce=hex_md5(Math.random()*1234567890);var realm="";var host=null;var nonce="";var qop="";var matches;this.deleteHandler(this._sasl_failure_handler);while(challenge.match(attribMatch)){matches=challenge.match(attribMatch);challenge=challenge.replace(matches[0],"");matches[2]=matches[2].replace(/^"(.+)"$/,"$1");switch(matches[1]){case"realm":realm=matches[2];break;case"nonce":nonce=matches[2];break;case"qop":qop=matches[2];break;case"host":host=matches[2];break;}}
var digest_uri="xmpp/"+realm;if(host!==null){digest_uri=digest_uri+"/"+host;}
var A1=str_md5(Strophe.getNodeFromJid(this.jid)+":"+realm+":"+this.pass)+":"+nonce+":"+cnonce;var A2='AUTHENTICATE:'+digest_uri;var responseText="";responseText+='username="'+
Strophe.getNodeFromJid(this.jid)+'",';responseText+='realm="'+realm+'",';responseText+='nonce="'+nonce+'",';responseText+='cnonce="'+cnonce+'",';responseText+='nc="00000001",';responseText+='qop="auth",';responseText+='digest-uri="'+digest_uri+'",';responseText+='response="'+hex_md5(hex_md5(A1)+":"+
nonce+":00000001:"+
cnonce+":auth:"+
hex_md5(A2))+'",';responseText+='charset="utf-8"';this._sasl_challenge_handler=this._addSysHandler(this._sasl_challenge2_cb.bind(this),null,"challenge",null,null);this._sasl_success_handler=this._addSysHandler(this._sasl_success_cb.bind(this),null,"success",null,null);this._sasl_failure_handler=this._addSysHandler(this._sasl_failure_cb.bind(this),null,"failure",null,null);this.send($build('response',{xmlns:Strophe.NS.SASL}).t(encode64(responseText)).tree());return false;},_sasl_challenge2_cb:function(elem)
{this.deleteHandler(this._sasl_success_handler);this.deleteHandler(this._sasl_failure_handler);this._sasl_success_handler=this._addSysHandler(this._sasl_success_cb.bind(this),null,"success",null,null);this._sasl_failure_handler=this._addSysHandler(this._sasl_failure_cb.bind(this),null,"failure",null,null);this.send($build('response',{xmlns:Strophe.NS.SASL}).tree());return false;},_auth1_cb:function(elem)
{var use_digest=false;var check_query,check_digest;if(elem.getAttribute("type")=="result"){check_query=elem.childNodes[0];if(check_query){check_digest=check_query.getElementsByTagName("digest")[0];if(check_digest){use_digest=true;}}}
var iq=$iq({type:"set",id:"_auth_2"}).c('query',{xmlns:Strophe.NS.AUTH}).c('username',{}).t(Strophe.getNodeFromJid(this.jid));if(use_digest){iq.up().c("digest",{}).t(hex_sha1(this.stream_id+this.pass));}else{iq.up().c('password',{}).t(this.pass);}
if(!Strophe.getResourceFromJid(this.jid)){this.jid=Strophe.getBareJidFromJid(this.jid)+'/strophe';}
iq.up().c('resource',{}).t(Strophe.getResourceFromJid(this.jid));this._addSysHandler(this._auth2_cb.bind(this),null,null,null,"_auth_2");this.send(iq.tree());return false;},_sasl_success_cb:function(elem)
{Strophe.info("SASL authentication succeeded.");this.deleteHandler(this._sasl_failure_handler);this._sasl_failure_handler=null;if(this._sasl_challenge_handler){this.deleteHandler(this._sasl_challenge_handler);this._sasl_challenge_handler=null;}
this._addSysHandler(this._sasl_auth1_cb.bind(this),null,"stream:features",null,null);this._sendRestart();return false;},_sasl_auth1_cb:function(elem)
{var i,child;for(i=0;i<elem.childNodes.length;i++){child=elem.childNodes[i];if(child.nodeName=='bind'){this.do_bind=true;}
if(child.nodeName=='session'){this.do_session=true;}}
if(!this.do_bind){this.connect_callback(Strophe.Status.AUTHFAIL,null);return false;}else{this._addSysHandler(this._sasl_bind_cb.bind(this),null,null,null,"_bind_auth_2");var resource=Strophe.getResourceFromJid(this.jid);if(resource)
this.send($iq({type:"set",id:"_bind_auth_2"}).c('bind',{xmlns:Strophe.NS.BIND}).c('resource',{}).t(resource).tree());else
this.send($iq({type:"set",id:"_bind_auth_2"}).c('bind',{xmlns:Strophe.NS.BIND}).tree());}
return false;},_sasl_bind_cb:function(elem)
{if(elem.getAttribute("type")=="error"){Strophe.info("SASL binding failed.");this.connect_callback(Strophe.Status.AUTHFAIL,null);return false;}
var bind=elem.getElementsByTagName("bind");var jidNode;if(bind.length>0){jidNode=bind[0].getElementsByTagName("jid");if(jidNode.length>0){this.jid=Strophe.getText(jidNode[0]);if(this.do_session){this._addSysHandler(this._sasl_session_cb.bind(this),null,null,null,"_session_auth_2");this.send($iq({type:"set",id:"_session_auth_2"}).c('session',{xmlns:Strophe.NS.SESSION}).tree());}}}else{Strophe.info("SASL binding failed.");this.connect_callback(Strophe.Status.AUTHFAIL,null);return false;}},_sasl_session_cb:function(elem)
{if(elem.getAttribute("type")=="result"){this.authenticated=true;this.connect_callback(Strophe.Status.CONNECTED,null);}else if(elem.getAttribute("type")=="error"){Strophe.info("Session creation failed.");this.connect_callback(Strophe.Status.AUTHFAIL,null);return false;}
return false;},_sasl_failure_cb:function(elem)
{if(this._sasl_success_handler){this.deleteHandler(this._sasl_success_handler);this._sasl_success_handler=null;}
if(this._sasl_challenge_handler){this.deleteHandler(this._sasl_challenge_handler);this._sasl_challenge_handler=null;}
this.connect_callback(Strophe.Status.AUTHFAIL,null);return false;},_auth2_cb:function(elem)
{if(elem.getAttribute("type")=="result"){this.authenticated=true;this.connect_callback(Strophe.Status.CONNECTED,null);}else if(elem.getAttribute("type")=="error"){this.connect_callback(Strophe.Status.AUTHFAIL,null);this.disconnect();}
return false;},_addSysTimedHandler:function(period,handler)
{var thand=new Strophe.TimedHandler(period,handler);thand.user=false;this.addTimeds.push(thand);return thand;},_addSysHandler:function(handler,ns,name,type,id)
{var hand=new Strophe.Handler(handler,ns,name,type,id);hand.user=false;this.addHandlers.push(hand);return hand;},_onDisconnectTimeout:function()
{Strophe.info("_onDisconnectTimeout was called");var req;while(this._requests.length>0){req=this._requests.pop();req.xhr.abort();req.abort=true;}
this._doDisconnect();return false;},_onIdle:function()
{var i,thand,since,newList;while(this.removeTimeds.length>0){thand=this.removeTimeds.pop();i=this.timedHandlers.indexOf(thand);if(i>=0)
this.timedHandlers.splice(i,1);}
while(this.addTimeds.length>0){this.timedHandlers.push(this.addTimeds.pop());}
var now=new Date().getTime();newList=[];for(i=0;i<this.timedHandlers.length;i++){thand=this.timedHandlers[i];if(this.authenticated||!thand.user){since=thand.lastCalled+thand.period;if(since-now<=0){if(thand.run()){newList.push(thand);}}else{newList.push(thand);}}}
this.timedHandlers=newList;var body,time_elapsed;if(this.authenticated&&this._requests.length===0&&this._data.length===0&&!this.disconnecting){Strophe.info("no requests during idle cycle, sending "+"blank request");this.send(null);}else{if(this._requests.length<2&&this._data.length>0&&!this.paused){body=this._buildBody();for(i=0;i<this._data.length;i++){if(this._data[i]!==null){if(this._data[i]==="restart"){body.attrs({to:this.domain,"xml:lang":"en","xmpp:restart":"true","xmlns:xmpp":Strophe.NS.BOSH})}else{body.cnode(this._data[i]).up();}}}
delete this._data;this._data=[];this._requests.push(new Strophe.Request(body.toString(),this._onRequestStateChange.bind(this).prependArg(this._dataRecv.bind(this)),body.tree().getAttribute("rid")));this._processRequest(this._requests.length-1);}
if(this._requests.length>0){time_elapsed=this._requests[0].age();if(this._requests[0].dead!==null){if(this._requests[0].timeDead()>Strophe.SECONDARY_TIMEOUT){this._throttledRequestHandler();}}
if(time_elapsed>Strophe.TIMEOUT){Strophe.warn("Request "+
this._requests[0].id+" timed out, over "+Strophe.TIMEOUT+" seconds since last activity");this._throttledRequestHandler();}}}
clearTimeout(this._idleTimeout);this._idleTimeout=setTimeout(this._onIdle.bind(this),100);}};function SwIMRoster(){this.roster={};this.groups={};this.addContact=function(jid,subscription,name,groups){var contact={jid:jid,subscription:subscription,name:name,groups:groups};var jid_lower=jid.toLowerCase();if(this.roster[jid_lower]){this.roster[jid_lower]['contact']=contact;}else{this.roster[jid_lower]={contact:contact};}
groups=groups?groups:[''];for(var g=0;g<groups.length;g++){if(!this.groups[groups[g]]){this.groups[groups[g]]={};}
this.groups[groups[g]][jid_lower]=jid_lower;}};this.getContact=function(jid){if(this.roster[jid.toLowerCase()]){return this.roster[jid.toLowerCase()]['contact'];}};this.setPresence=function(fulljid,priority,show,status){var barejid=Strophe.getBareJidFromJid(fulljid);var resource=Strophe.getResourceFromJid(fulljid);var jid_lower=barejid.toLowerCase();if(show!='unavailable'){if(!this.roster[jid_lower]){this.addContact(barejid,'not-in-roster');}
var presence={resource:resource,priority:priority,show:show,status:status};if(!this.roster[jid_lower]['presence']){this.roster[jid_lower]['presence']={};}
this.roster[jid_lower]['presence'][resource]=presence;}else if(this.roster[jid_lower]&&this.roster[jid_lower]['presence']&&this.roster[jid_lower]['presence'][resource]){delete this.roster[jid_lower]['presence'][resource];}};this.getPresence=function(fulljid){var jid=Strophe.getBareJidFromJid(fulljid);var current=null;if(this.roster[jid.toLowerCase()]&&this.roster[jid.toLowerCase()]['presence']){var jidPresence=this.roster[jid.toLowerCase()]['presence'];for(var resource in jidPresence){if(jidPresence.hasOwnProperty(resource)){var presence=jidPresence[resource];if(current==null){current=presence;}else{if(presence['priority']>current['priority']&&((presence['show']=="chat"||presence['show']=="available")||(current['show']!="chat"||current['show']!="available"))){current=presence;}}}}}
return current;};}
window.SwXmpp={NS_REGISTER:"jabber:iq:register",NS_GATEWAY_REGISTER:"jabber:iq:gateway:register",PRESENCE:{AVAILABLE:null,AWAY:"away",XA:"xa",DND:"dnd",OFFLINE:"unavailable"},PRESENCE_TEXT:{AVAILABLE:"Available",AWAY:"Away",XA:"Extended away",DND:"Do not disturb",OFFLINE:"Unavailable"},getPresenceIcon:function(show){return"IconImPresence-"+(show||"available");},getGatewayIcon:function(gw,greyed){var name="IconImService-";if(greyed){name+="gray-";}
return name+gw;}};(function(){SwXmppBuddy.inherits(DlRecord);function SwXmppBuddy(args){if(args){args.data._presence=SwXmpp.PRESENCE.OFFLINE;DlRecord.call(this,args);}}
eval(Dynarch.EXPORT("SwXmppBuddy"));P.getLabel=function(){return this.get("name")||this.getBareJID();};P.getBareJID=function(){return Strophe.getBareJidFromJid(this.get("jid"));};P.getPresence=function(){return this.get("_presence");};P.setPresence=function(show){this.set("_presence",show);};P.getPresenceIcon=function(){return SwXmpp.getPresenceIcon(this.getPresence());};P.getName=function(){return this.get("name")||Strophe.getNodeFromJid(this.id());};P.getGroups=function(){return this.get("groups")||[];};P.isAvailable=function(){return this.getPresence()!=SwXmpp.PRESENCE.OFFLINE;};D.FILTERS={BY_NAME:function(query,buddy){return buddy.getName().toLowerCase().indexOf(query.toLowerCase())>=0;},OFFLINE:function(buddy){return buddy.isAvailable();}};})();(function(){SwXmppRoster.inherits(DlRecordCache);function SwXmppRoster(args){if(args){DlRecordCache.call(this,args);this._groups={};}}
eval(Dynarch.EXPORT("SwXmppRoster"));function groups_add(hash,val,key){var a=hash[key]||(hash[key]=[]);a.pushUnique(val);}
function groups_remove(hash,val,key){var a=hash[key];if(a){a.remove(val);}}
P._updateBuddy=function(item_data){var rec=this.get(item_data.id);var must_remove=item_data.subscription=="remove";if(!rec){if(!must_remove){rec=new SwXmppBuddy({data:item_data});this.insert(rec);rec.getGroups().foreach(groups_add.$C(this._groups,rec.id()));}}else{if(must_remove){this.remove(rec.id());rec.getGroups().foreach(groups_remove.$C(this._groups,rec.id()));}else{rec.getGroups().foreach(groups_remove.$C(this._groups,rec.id()));Object.merge(rec._data,item_data);rec.getGroups().foreach(groups_add.$C(this._groups,rec.id()));rec.callHooks("onChange",rec);this.callHooks("onChange",rec);}}};P.getGroups=function(){return Array.hashKeys(this._groups);};P.getFilteredRecords=function(filters){var a=this.getAllRecords();if(filters&&filters.length>0){a=a.grep(function(buddy){for(var i=filters.length;--i>=0;){if(!filters[i](buddy)){return false;}}
return true;});}
return a;};})();(function(){var DEFAULT_EVENTS=["onMessage","onServerMessage","onJoin","onLeave"];SwXmppConversation.inherits(DlEventProxy);function SwXmppConversation(args){if(args){D.setDefaults(this,args);DlEventProxy.call(this,args);this.registerEvents(DEFAULT_EVENTS);if(!this.id){this.id=hex_md5(this.myJid+new Date().getTime());}
this.messages=[];this.history=[];}}
eval(Dynarch.EXPORT("SwXmppConversation"));D.DEFAULT_ARGS={id:["id",null],client:["client",null],participants:["participants",null]};var ALL={};D.get=function(id){return ALL[id];};P.addMessage=function(msg,nohooks){msg._fromMe=msg.from==this.client.jid();this.messages.push(msg);if(!nohooks){this.callHooks("onMessage",msg);}};P.sendMessage=function(body){var to=this.participants[0].id();this.client.sendMessage(to,body.htmlEscape(),this.id);this.addMessage({from:this.client.jid(),to:to,body:body});};})();(function(){var DEFAULT_EVENTS=["onConnect","onDisconnect","onMessage","onSubscribeRequest","onRoster","onVersion","onDiscoInfo","onGatewayInfo","onDiscoItems"];SwXmppClient.inherits(DlEventProxy);function SwXmppClient(args){if(args){D.setDefaults(this,args);DlEventProxy.call(this,args);this.registerEvents(DEFAULT_EVENTS);this._chatWindows={};this._gateways={};this._reqID=0;}}
eval(Dynarch.EXPORT("SwXmppClient"));D.DEFAULT_ARGS={_service_url:["url","/sw2/http-bind/"],_jid:["jid",null],_password:["password",null],roster:["roster",null],_logger:["logger",null]};P.nextRequestId=function(){return"SwXmppClient"+(++this._reqID);};P.jid=function(){return this._xmppCon.jid;};P.sid=function(){return this._xmppCon.sid;};P.domain=function(){return Strophe.getDomainFromJid(this.jid());};P.connect=function(rawInputLogger,rawOutputLogger){this._xmppCon=new Strophe.Connection(this._service_url);var xmppCon=this._xmppCon;if(rawInputLogger){xmppCon.rawInput=rawInputLogger;}
if(rawOutputLogger){xmppCon.rawOutput=rawOutputLogger;}
xmppCon.connect(this._jid,this._password,this._on_connect.$(this));};P.disconnect=function(){this._xmppCon.disconnect();};P.log=function(msg){if(this._logger===false){return;}
if(this._logger){this._logger(msg);}
else if(typeof console=='undefined'){print(msg);}
else if(typeof console.log=='undefined'){print(msg);}
else{console.log(msg);}};P.fetchRoster=function(){var el=new Strophe.Builder("iq",{type:"get"}).c("query",{xmlns:Strophe.NS.ROSTER}).tree();this._xmppCon.send(el);};P.setPresence=function(args){if(!args){args={};}
var pres=args.pres;var status=args.status;var to=args.to;var priority=args.priority;if(!to){this._currentPresence=Object.makeCopy({pres:pres,status:status,priority:priority});}
if(!to&&this._gateways){for(var i in this._gateways){if(this._gateways.hasOwnProperty(i)){var g=this._gateways[i];if(g.registered){var tmp=Object.makeCopy(args);tmp.to=g.jid;this.setPresence(tmp);}}}}
args={};if(to){args.to=to;}
if(pres==SwXmpp.PRESENCE.OFFLINE){args.type=SwXmpp.PRESENCE.OFFLINE;pres=null;status=null;}
var el=new Strophe.Builder("presence",args);if(priority!=null){el.c("priority").t(priority);el.up();}
if(pres){el.c("show").t(pres);el.up();}
if(status){el.c("status").t(status);el.up();}
el=el.tree();this._xmppCon.send(el);};P.setSamePresence=function(args){var cp=Object.makeCopy(this._currentPresence)||{};Object.merge(cp,args);this.setPresence(cp);};P.createRoom=function(roomName,ownerUserName){if(!roomName){throw("createRoom() missing roomName");}
if(!ownerUserName){throw("createRoom() missing nickName");}
var el=new Strophe.Builder("presence",{to:Strophe.escapeJid(roomName+"@conference.quad.home2.mark/"+
ownerUserName)});el.c("x",{xmlns:Strophe.NS.MUC});el=el.tree();this._xmppCon.send(el);};P.getRoomConfig=function(roomJID){var index=roomJID.indexOf("/");var reqConfig=new Strophe.Builder("iq",{type:"get",to:roomJID.substring(0,index),id:this.sid()}).c("query",{xmlns:Strophe.NS.MUC+"#owner"}).tree();this._xmppCon.send(reqConfig);};P.registerTransport=function(x,y){var reqConfig=new Strophe.Builder("iq",{type:"get",to:roomJID.substring(0,index),id:this.sid()}).c("query",{xmlns:Strophe.NS.MUC+"#owner"}).tree();this._xmppCon.send(reqConfig);};P.getDiscoInfo=function(to){var reqConfig=new Strophe.Builder("iq",{type:"get",to:to}).c("query",{xmlns:Strophe.NS.DISCO_INFO}).tree();this._xmppCon.send(reqConfig);};P.getDiscoItems=function(to){var reqConfig=new Strophe.Builder("iq",{type:"get",to:to||this.domain()}).c("query",{xmlns:Strophe.NS.DISCO_ITEMS}).tree();this._xmppCon.send(reqConfig);};P.removeBuddy=function(jid){var el=new Strophe.Builder("iq",{type:"set"}).c("query",{xmlns:Strophe.NS.ROSTER}).c("item",{jid:jid,subscription:"remove"});this._xmppCon.send(el.tree());};P.addBuddy=function(jid,groups,alias){var req_id=this.nextRequestId();if(typeof groups=="string"){groups=groups.trim().split(/\s*,\s*/);}
if(!alias){alias=Strophe.getNodeFromJid(jid);}
var el=new Strophe.Builder("iq",{type:"set",id:req_id}).c("query",{xmlns:Strophe.NS.ROSTER}).c("item",{jid:jid,name:alias});if(groups){groups.foreach(function(g){this.c("group").t(g).up();},el);}
this._xmppCon.addHandler(function(){this.subscribe(jid);return false;}.$(this),null,"iq","result",req_id,null);this._xmppCon.send(el.tree());};P.subscribe=function(to){var el=new Strophe.Builder("presence",{to:to,type:"subscribe"});this._xmppCon.send(el.tree());};P.allowSubscribe=function(to){var el=new Strophe.Builder("presence",{to:to,type:"subscribed"});this._xmppCon.send(el.tree());};P.denySubscribe=function(to){var el=new Strophe.Builder("presence",{to:to,type:"unsubscribed"});this._xmppCon.send(el.tree());};P.unsubscribe=function(to){var el=new Strophe.Builder("presence",{to:to,type:"unsubscribe"});this._xmppCon.send(el.tree());};P.gatewayRegister=function(gw_jid,user,pass,nick){var req_id=this.nextRequestId();var el=new Strophe.Builder("iq",{to:gw_jid,type:"set",id:req_id,from:this.jid()}).c("query",{xmlns:SwXmpp.NS_REGISTER});el.c("username").t(user).up();el.c("nickname").t(nick||"").up();el.c("password").t(pass).up();el.c("x",{xmlns:SwXmpp.NS_GATEWAY_REGISTER});this._xmppCon.addHandler(function(){this.setSamePresence();this.getDiscoInfo(gw_jid);return false;}.$(this),null,"iq","result",req_id,null);this._xmppCon.send(el.tree());};P.gatewayRemove=function(gw_jid){var req_id=this.nextRequestId();var el=new Strophe.Builder("iq",{to:gw_jid,type:"set",id:req_id}).c("query",{xmlns:SwXmpp.NS_REGISTER}).c("remove");this._xmppCon.addHandler(function(){this.getDiscoInfo(gw_jid);return false;}.$(this),null,"iq","result",req_id,null);this._xmppCon.send(el.tree());};P.sendMessage=function(to,body,thread,type){var el=new Strophe.Builder("message",{from:this.jid(),to:to||this.jid(),type:type||"chat"});if(body){el.c("body").t(body);el.up();}
if(!thread){thread=hex_md5(this.jid()+to+new Date().getTime());}
el.c("thread").t(thread);this._xmppCon.send(el.tree());return thread;};P.getChatWindow=function(buddy){var dlg=this._chatWindows[buddy.id()];if(!dlg){dlg=new SwMinDialog({title:buddy.getName(),resizable:true,quitBtn:"destroy",iconClass:buddy.getPresenceIcon()});var conv=new SwXmppConversation({participants:[buddy],client:this});var chat=new SwChatView({parent:dlg,conversation:conv,fillParent:true});dlg._focusedWidget=chat.entry;dlg.conversation=conv;dlg.chatView=chat;this._chatWindows[buddy.id()]=dlg;dlg.addEventListener("onDestroy",function(){delete this._chatWindows[buddy.id()];}.$(this));buddy.addEventListener("onChange",function(buddy,what,oldVal,newVal){dlg.setIconClass(buddy.getPresenceIcon());},null,dlg);dlg.show(true);}else{dlg.show();}
return dlg;};P.getGateway=function(gw_jid){return this._gateways[gw_jid];};P.getAllGateways=function(){return Array.hashValues(this._gateways);};P._on_connect=function(status){switch(status){case Strophe.Status.CONNECTING:break;case Strophe.Status.CONNFAIL:break;case Strophe.Status.DISCONNECTING:break;case Strophe.Status.DISCONNECTED:this.callHooks("onDisconnect");break;case Strophe.Status.CONNECTED:this._setupXmppListeners();this.callHooks("onConnect");break;}};P._genericConnectHandler=function(){this.fetchRoster();this.getDiscoItems();};P._setupXmppListeners=function(){this._xmppCon.addHandler(this._on_version.$(this),Strophe.NS.VERSION,"iq",null,null,null);this._xmppCon.addHandler(this._on_roster.$(this),Strophe.NS.ROSTER,"iq",null,null,null);this._xmppCon.addHandler(this._on_presence.$(this),null,"presence",null,null,null);this._xmppCon.addHandler(this._on_message.$(this),null,"message",null,null,null);this._xmppCon.addHandler(this._on_discoInfo.$(this),Strophe.NS.DISCO_INFO,"iq",null,null,null);this._xmppCon.addHandler(this._on_discoItems.$(this),Strophe.NS.DISCO_ITEMS,"iq",null,null,null);};P._on_version=function(ret){ret=xml_to_object(ret);this.log(ret);if(ret.type=="get"){var reply=new Strophe.Builder("iq",{type:"result",to:ret.from,from:ret.to,id:ret.id}).c("query",{name:"ScheduleWorld",version:1,os:window.navigator.userAgent}).tree();this._xmppCon.send(reply);}
return true;};P._on_roster=function(ret){ret=xml_to_object(ret);var is_new_roster=!this.roster;if(is_new_roster){this.roster=new SwXmppRoster({});}
if(ret.query.items){ret.query.items.foreach(function(item_data){item_data.id=item_data.jid;this.roster._updateBuddy(item_data);},this);}
if(is_new_roster){this.callHooks("onRoster",this.roster);}
return true;};P._on_presence=function(ret){ret=xml_to_object(ret);var buddy=this.roster.get(Strophe.getBareJidFromJid(ret.from));switch(ret.type){case"subscribe":this.callHooks("onSubscribeRequest",buddy||ret.from);break;case"unavailable":if(buddy){buddy.set("_presence",SwXmpp.PRESENCE.OFFLINE);}
break;case"unsubscribe":break;default:if(buddy){buddy.set("_presence",ret.show);}
break;}
return true;};P._on_message=function(data){ret=xml_to_object(data);if(ret.html){ret.html=DlHtmlUtils.getHTML(data.getElementsByTagName("html")[0].getElementsByTagName("body")[0]);}
if(ret.type&&ret.type=="chat"){if("body"in ret){this.callHooks("onMessage",ret);}else{}}
return true;};P._on_discoInfo=function(data){ret=xml_to_object(data);if(ret.type&&ret.type=="result"){var identity=ret.query.identity;if(identity.category=="gateway"&&identity.type!='irc'){var name=identity.name;var type=identity.type;var features={};var gw_jid=ret.from;ret.query.features.foreach(function(f){features[f["var"]]=true;});this._gateways[gw_jid]={jid:gw_jid,name:name,type:type,features:features,registered:features["jabber:iq:registered"]||false};var gate=this._gateways[gw_jid];this.callHooks("onGatewayInfo",gate);var pres=this._currentPresence?Object.makeCopy(this._currentPresence):{};if(gate.registered){this.setPresence(pres);}}
this.callHooks("onDiscoInfo",ret.query);}
return true;};P._on_discoItems=function(data){ret=xml_to_object(data);if(ret.type&&ret.type=="result"){this.callHooks("onDiscoItems",ret.query.items);ret.query.items.foreach(function(el){if(!/^(pubsub\.|conference|proxy\.)/.test(el.jid)){this.getDiscoInfo(el.jid);}},this);}
return true;};var XMPP_KNOWN_TAGS={item:{list:"items"},feature:{list:"features"},group:{list:"groups"},presence:{list:"presences"}};function set_or_push(hash,attr,val){var type=XMPP_KNOWN_TAGS[attr];if(type&&type.list){attr=type.list;if(!(attr in hash)){hash[attr]=[];}}
if(attr in hash){if(hash[attr]instanceof Array){hash[attr].push(val);}else{hash[attr]=[hash[attr],val];}}else{hash[attr]=val;}}
function xml_to_object(el){var ret={};Array.$(el.attributes).foreach(function(attr){set_or_push(ret,attr.nodeName,attr.nodeValue);});Array.$(el.childNodes).foreach(function(el){var tag=el.tagName;if(el.nodeType==1){if(el.childNodes.length==1&&el.firstChild.nodeType==3){set_or_push(ret,tag,el.firstChild.data);}else{set_or_push(ret,tag,xml_to_object(el));}}});return ret;}
window.xml_to_object=xml_to_object;})();(function(){var TMPL_SUBSCRIBE_REQUEST=String.template("<b>Authorize buddy?</b><br />","<u>$name</u> wants to add you to his or her buddy list.");SwBuddyList.inherits(DlContainer);function SwBuddyList(args){if(args){if(!args.roster){args.roster=args.client.roster;}
D.setDefaults(this,args);DlContainer.call(this,args);}}
eval(Dynarch.EXPORT("SwBuddyList"));D.DEFAULT_ARGS={roster:["roster",null],client:["client",null]};P.initDOM=function(){D.BASE.initDOM.apply(this,arguments);var layout=new DlLayout({parent:this});this._getBuddyCtxtMenu=_fetchBuddyCtxtMenu.$(null,this);var header=new DlContainer({className:"SwBuddyList-header DlToolbar"});var header_box=new DlVbox({parent:header,borderSpacing:3});header_box.setStyle("width","100%");var hbox=new DlHbox({parent:header_box});this._createPresenceButton(hbox);hbox.addFiller();var label=new DlLabel({parent:hbox,label:this.client.jid().bold()});header_box.addSeparator();this._toolbarBox=new DlHbox({parent:header_box});var toolbar=this._toolbarBox;this._createToolbar(toolbar);toolbar.addFiller();var tabs_cont=new DlContainer({className:"SwBuddyList-tabsCont"});var tabs=new DlTabs({parent:tabs_cont,tabPos:"bottom",fillParent:true});var tree_cont=new DlContainer({scroll:true,className:"SwBuddyList-tree"});this.tree=new DlTree({parent:tree_cont});this._initTree();tabs.addTab(tree_cont,"Contacts");tabs.getTabButton(0).setIconClass("IconImContacts");var conf_cont=new DlContainer({className:"SwBuddyList-tree"});tabs.addTab(conf_cont,"Conferences");layout.packWidget(header,{pos:"top"});layout.packWidget(tabs_cont,{pos:"top",fill:"*"});tabs.showPane(0);this._gatewayButtons={};this.roster.addEventListener({onChange:this._on_rosterChangeItem.$(this),onDelete:this._on_rosterDeleteItem.$(this),onInsert:this._on_rosterInsertItem.$(this)},null,this);this.client.addEventListener({onGatewayInfo:this._on_gatewayInfo.$(this),onSubscribeRequest:this._on_subscribeRequest.$(this)},null,this);};P.getBuddyItems=function(buddy){if(buddy instanceof SwXmppBuddy){buddy=buddy.id();}
return this.buddiesRadioGroup.getButtons().grep(function(b){if(buddy==b.userData){return true;}}).map("parent");};P._on_rosterChangeItem=function(buddy,what,oldVal,newVal){if(what=="_presence"){this.getBuddyItems(buddy).map("setIconClass",buddy.getPresenceIcon());}else if(!what){this.getBuddyItems(buddy).map(function(item){item.radio.setLabel(buddy.get("name"));});}
this._applyBuddyFilters(buddy);};P._on_rosterInsertItem=function(buddy){this._addBuddy(buddy);};P._on_rosterDeleteItem=function(buddy_ids){if(!(buddy_ids instanceof Array))
buddy_ids=[buddy_ids];buddy_ids.foreach(function(id){this.getBuddyItems(id).foreach(function(item){delete this.allItems[item.radio.value()];item.destroy();},this);},this);this.hideEmptyGroups();};P._createPresenceButton=function(parent){var btn=new DlButtonMenu({parent:parent,label:"Available",iconClass:window.SwXmpp.getPresenceIcon(),connected:true});var menu=new DlVMenu({});btn.setMenu(menu);var tmp;for(var i in window.SwXmpp.PRESENCE){if(window.SwXmpp.PRESENCE.hasOwnProperty(i)){var presence=window.SwXmpp.PRESENCE[i];var text=window.SwXmpp.PRESENCE_TEXT[i];tmp=new DlMenuItem({parent:menu,name:i,iconClass:window.SwXmpp.getPresenceIcon(presence),label:text});}}
menu.addEventListener("onSelect",function(serp){var pres=window.SwXmpp.PRESENCE[serp];this.client.setPresence({pres:pres});btn.getButton().setIconClass(window.SwXmpp.getPresenceIcon(pres));btn.getButton().setLabel(window.SwXmpp.PRESENCE_TEXT[serp]);}.$(this));};P._createToolbar=function(toolbar){var addBtn=new DlButton({parent:toolbar,iconClass:"IconImPerson",tooltip:"Add buddy"});addBtn.addEventListener("onClick",function(){this._getAddBuddyDlg();}.$(this));var filters=new DlButtonMenu({parent:toolbar,label:"Filter",connected:true});var menu=new DlVMenu({borderSpacing:5});filters.setMenu(menu);var showAll=new DlMenuItem({parent:menu,label:"Show all (reset filter)"});menu.addSeparator();var hideOffline=new DlCheckbox({parent:menu,label:"Hide offline buddies"});menu.addSeparator();var searchEntry=new DlEntry({parent:menu,emptyText:"Search..."});this._filterFunctions={offline:SwXmppBuddy.FILTERS.OFFLINE,by_name:function(buddy){return SwXmppBuddy.FILTERS.BY_NAME(searchEntry.getValue(),buddy);}};this.filters=null;showAll.addEventListener("onClick",function(){this.filters=null;searchEntry.clear();hideOffline.checked(false,true);this._updateFilteredTree();}.$(this));hideOffline.addEventListener("onChange",function(){var f=this._filterFunctions.offline;if(hideOffline.checked()){this._addFilter(f);}else{this._delFilter(f);}}.$(this));searchEntry.addEventListener("onKey-ENTER",function(){var f=this._filterFunctions.by_name;if(/\S/.test(searchEntry.getValue())){this._addFilter(f);}else{this._delFilter(f);}}.$(this));};P._addFilter=function(f){if(!this.filters){this.filters=[];}
this.filters.pushUnique(f);this._updateFilteredTree();};P._delFilter=function(f){if(this.filters){this.filters.remove(f);if(this.filters.length===0){this.filters=null;}}
this._updateFilteredTree();};P._updateFilteredTree=function(){DlPopup.clearAllPopups();this.buddiesRadioGroup.getButtons().foreach(doFilterButton,this);this.hideEmptyGroups();};function doFilterButton(b){if(b.userData){var buddy=this.roster.get(b.userData);var show=true;if(this.filters&&this.filters.length){this.filters.foreach(function(f){if(!f(buddy)){show=false;$BREAK();}});}
b.parent.display(show);}}
P._applyBuddyFilters=function(buddy_jid){this.getBuddyItems(buddy_jid).foreach(function(b){doFilterButton.call(this,b.radio);},this);};P.hideEmptyGroups=function(){for(var i in this.groupItems){if(this.groupItems.hasOwnProperty(i)){var item=this.groupItems[i];var subitems=item._tree?item._tree.children():null;var hide=true;if(subitems){subitems.foreach(function(item){if(item.display()){hide=false;$BREAK();}});}
item.display(!hide);}}};P._on_gatewayInfo=function(gate){var btn=this._gatewayButtons[gate.jid];var icon;if(gate.jid.indexOf("gtalk")===0){icon=window.SwXmpp.getGatewayIcon("gtalk",!gate.registered);}
else{icon=window.SwXmpp.getGatewayIcon(gate.type,!gate.registered);}
if(!btn){btn=new DlButton({parent:this._toolbarBox,iconClass:icon,tooltip:gate.name});this._gatewayButtons[gate.jid]=btn;btn.addEventListener("onClick",this._on_gatewayButtonClick.$(this,gate.jid,btn));}else{btn.setIconClass(icon);}};P._on_gatewayButtonClick=function(gw_jid,button){var gw=this.client.getGateway(gw_jid);if(gw.registered){this._getDisconnectGatewayDlg(gw);}else{this._getConnectGatewayDlg(gw);}};P._on_subscribeRequest=function(buddy){var buddy_name=buddy instanceof SwXmppBuddy?buddy.getName():buddy;var buddy_jid=buddy instanceof SwXmppBuddy?buddy.id():buddy;var cont=new DlContainer({});var box=new DlVbox({parent:cont,borderSpacing:10});box.getElement().align="center";var text=new DlWidget({parent:box});text.setContent(TMPL_SUBSCRIBE_REQUEST({name:buddy_name.htmlEscape()}));box.addSeparator();var bbox=new DlHbox({parent:box});bbox.addFiller();var tmp=new DlButton({parent:bbox,label:"Allow".fixedWidth("5em")}).addEventListener("onClick",function(){this.client.allowSubscribe(buddy_jid);if(!(buddy instanceof SwXmppBuddy)){var tmp=buddy_jid.split(/@/);var gw=tmp[1];if(gw==this.client.domain()){gw=false;}
this._getAddBuddyDlg(tmp[0],gw);}
cont.dismiss();}.$(this));bbox.addSpace();tmp=new DlButton({parent:bbox,label:"Deny".fixedWidth("5em")}).addEventListener("onClick",function(){this.client.denySubscribe(buddy_jid);cont.dismiss();}.$(this));this._showNotification(cont);};P._showNotification=function(widget){var notf=new DlContainer({className:"DlWidget-3D SwBuddyList-notification",parent:this});notf.appendWidget(widget);widget.dismiss=this._hideNotification.$(this,notf);var anim=new DlAnimation();var h=notf.getSize().y;anim.addEventListener({onUpdate:function(t){var m=DlAnimation.easing.accel_b(t);notf.setStyle({marginTop:m.map(0,-h)+"px"});notf.opacity(m);},onStop:function(t){notf.addClass("SwBuddyList-notificationDone");notf.opacity("");notf.setStyle({marginTop:0});}});anim.start(20,50);};P._hideNotification=function(notf){var anim=new DlAnimation();var h=notf.getSize().y;notf.delClass("SwBuddyList-notificationDone");notf.setStyle({marginTop:-h+"px"});anim.addEventListener({onUpdate:function(t){var m=DlAnimation.easing.accel_a(t);notf.setStyle({marginTop:m.map(-h,0)+"px"});notf.opacity(1-t);},onStop:function(){notf.destroy();}});anim.start(10,50);};P._getDisconnectGatewayDlg=function(gw){var dlg=new DlDialog({title:"Confirm",quitBtn:"destroy",parent:this.getParentDialog(),modal:true});var vbox=new DlVbox({parent:dlg,borderSpacing:10,fillParent:true});var w=new DlWidget({parent:vbox});w.setContent("Disconnect from "+gw.name+"?");vbox.addSeparator();var bbox=new DlHbox({parent:vbox});bbox.addFiller();var tmp=new DlButton({focusable:true,parent:bbox,label:"OK".fixedWidth("5em")}).addEventListener("onClick",function(){this.client.gatewayRemove(gw.jid);dlg.destroy();}.$(this));bbox.addSpace();var cancel=new DlButton({focusable:true,parent:bbox,label:"Cancel".fixedWidth("5em")});cancel.addEventListener("onClick",dlg.destroy.$(dlg));dlg.setSize({x:300});dlg._focusedWidget=cancel;dlg.show(true);};P._getConnectGatewayDlg=function(gw){var dlg=new DlDialog({title:"Connect to "+gw.name,quitBtn:"destroy",parent:this.getParentDialog(),modal:true});var vbox=new DlVbox({parent:dlg,borderSpacing:10,fillParent:true});var fg=new DlFieldGrid({parent:vbox,align:"center"});fg.addField({name:"user",label:"User:"});fg.addField({name:"pass",label:"Password:",type:"password"});vbox.addSeparator();var bbox=new DlHbox({parent:vbox});bbox.addFiller();var tmp=new DlButton({focusable:true,parent:bbox,label:"OK".fixedWidth("5em")}).addEventListener("onClick",function(){var val=fg.getValues();this.client.gatewayRegister(gw.jid,val.user,val.pass);dlg.destroy();}.$(this));bbox.addSpace();tmp=new DlButton({focusable:true,parent:bbox,label:"Cancel".fixedWidth("5em")}).addEventListener("onClick",dlg.destroy.$(dlg));dlg.setSize({x:300});dlg._focusedWidget=fg.getField("user");dlg.show(true);};function makeNetworkSelect(selVal){var gws=this.client.getAllGateways(),val;var options=gws.map(function(gw,i){if(gw.registered){val=gw.jid;}
return{label:gw.name,value:gw.jid};});if(!val){val=gws[0].jid;}
return new DlRadioSelect({options:options,value:selVal||val});}
P._getAddBuddyDlg=function(jid,gw,group){var dlg=new DlDialog({title:"Add buddy",quitBtn:"destroy",parent:this.getParentDialog(),modal:true});var vbox=new DlVbox({parent:dlg,borderSpacing:10,fillParent:true});var fg=new DlFieldGrid({parent:vbox,align:"center"});if(this.client.getAllGateways().length>0){var publicCheckbox=new DlCheckbox({focusable:true,label:"User is on a public network",checked:!!gw});fg.addField({name:"use_gw",widget:publicCheckbox});networkSelect=makeNetworkSelect.call(this,gw);networkSelect.enabled(publicCheckbox.checked());publicCheckbox.addEventListener("onChange",function(){networkSelect.enabled(this.checked());});fg.addField({name:"gateway",label:"Network",widget:networkSelect});fg.addSeparator();}
fg.addField({name:"user",label:"Buddy's username:",value:jid||""});fg.addField({name:"alias",label:"Alias (optional):"});var groupsEntry=new DlComboBox({options:this.roster.getGroups(),value:group||""});fg.addField({name:"groups",label:"Groups:",widget:groupsEntry});vbox.addSeparator();var bbox=new DlHbox({parent:vbox});bbox.addFiller();var tmp=new DlButton({focusable:true,parent:bbox,label:"OK".fixedWidth("5em")}).addEventListener("onClick",function(){var val=fg.getValues();var domain=val.use_gw?val.gateway:this.client.domain();var jid=val.user+"@"+domain;var groups=val.groups.trim();if(!/\S/.test(groups)){groups=null;}
this.client.addBuddy(jid,groups,val.alias);dlg.destroy();}.$(this));bbox.addSpace();tmp=new DlButton({focusable:true,parent:bbox,label:"Cancel".fixedWidth("5em")}).addEventListener("onClick",dlg.destroy.$(dlg));dlg._focusedWidget=fg.getField("user");dlg.show(true);};P._initTree=function(){this.groupItems={};this.allItems={};this.buddiesRadioGroup=DlRadioGroup.get();this.roster.getFilteredRecords(this.filters).foreach(this._addBuddy,this);};P._addBuddy=function(buddy){var groups=buddy.get("groups");if(!groups||groups.length===0){groups=["Buddies"];}
groups.foreach(function(g){var gitem=this.groupItems[g];if(!gitem){gitem=new DlTreeItem({parent:this.tree,itemClassName:"SwGroupItem DlTreeItem-withRadio",iconClass:"IconImGroup"});this.groupItems[g]=gitem;gitem.radio=new DlRadioButton({parent:gitem,label:g,value:g,group:this.buddiesRadioGroup});}
var id=g+"%"+buddy.id();var bitem=this.allItems[id];if(!bitem){bitem=new DlTreeItem({parent:gitem,itemClassName:"DlTreeItem-withRadio",iconClass:buddy.getPresenceIcon(),contextMenu:this._getBuddyCtxtMenu,data:buddy.id()});this.allItems[id]=bitem;bitem.radio=new DlRadioButton({parent:bitem,label:buddy.getLabel(),value:id,group:this.buddiesRadioGroup,data:buddy.id()});var item=bitem.radio;item.addEventListener("onClick",function(){this.client.getChatWindow(buddy);}.$(this));}},this);this._applyBuddyFilters(buddy.id());};var BUDDY_CTXT_MENU=null;function _fetchBuddyCtxtMenu(obj){var menu=BUDDY_CTXT_MENU;if(!menu){menu=new DlVMenu({});BUDDY_CTXT_MENU=menu;var item=new DlMenuItem({name:"remove",parent:menu,label:"Remove buddy"});var jid,self,client;menu.contextMenuOnPopup=function(args){jid=args.widget.userData;self=menu.activeBuddyList;client=self.client;};menu.addEventListener("onSelect",function(name){switch(name){case"remove":client.removeBuddy(jid);break;}});}
menu.activeBuddyList=obj;return menu;}})();(function(){var TMPL_MESSAGE=String.template("<div class='message'>","<div class='time'>$time</div>","<div class='from'>$from</div>","<div class='body'>$body</div>","</div>");var TMPL_MY_MESSAGE=String.template("<div class='message from-me'>","<div class='time'>$time</div>","<div class='from'>$from</div>","<div class='body'>$body</div>","</div>");SwChatView.inherits(DlContainer);function SwChatView(args){if(args){D.setDefaults(this,args);DlContainer.call(this,args);}}
eval(Dynarch.EXPORT("SwChatView",true));D.DEFAULT_ARGS={conv:["conversation",null]};P.initDOM=function(){D.BASE.initDOM.apply(this,arguments);var layout=new DlLayout({parent:this,fillParent:true,outerSpace:3});this.displayArea=new DlContainer({scroll:true,className:"SwImConversation"});this.entry=new DlEntry({type:"textarea"});layout.packWidget(this.entry,{pos:"bottom"});layout.packWidget(new DlResizeBar({widget:this.entry,horiz:true,invert:true}),{pos:"bottom"});layout.packWidget(this.displayArea,{pos:"top",fill:"*"});this.setSize({x:400,y:300});this.entry.addEventListener("onKey-ENTER",function(ev){if(!ev.shiftKey){var val=this.entry.getValue();if(/\S/.test(val)){this.conv.sendMessage(val);}
this.entry.clear();ev.domStop=true;}}.$(this));this.conv.addEventListener("onMessage",this.addMessage.$(this),null,this);};P.addMessage=function(msg){var tmpl=msg._fromMe?TMPL_MY_MESSAGE:TMPL_MESSAGE;var time=msg.time||new Date().print("%l:%M %P");var div=DOM.createFromHtml(tmpl({from:msg.from.htmlEscape(),to:msg.to.htmlEscape(),time:time,body:msg.html||msg.body.htmlEscape()}));var disp=this.displayArea.getElement();disp.appendChild(div);disp.scrollTop=div.offsetTop;};})();SWApp.prototype.mailView=function(){document.title=this.i18n("ScheduleWorld IMAP");if(this.leftNotebook.display()){this.leftNotebook.display(false);this.desktopResizeBar.display(false);this.toolbarNotebook.display(false);this.desktopLayout.doLayout();}
if(!this.mailStarted){if(this.canUseXuheki()){var cont=new DlContainer({parent:this.mailContainerR,fillParent:true});Mail.Start(cont);}
else{throw("You need to purchase the mail client.");}
this.mailStarted=true;}
Mail.NeedToOperate();this.rightNotebook.showPane(this.MAIL_PAGE_RIGHT);};var PAYPAL_IMAGE="https://fpdbs.paypal.com/dynamicimageweb?cmd=_dynamic-image";var PAYPAL_API_SERVER="https://api-3t.paypal.com/nvp";SWApp.prototype.emView=function(swEvent){this.swEventComp=swEvent._data.syncSWorldCalComp;this.emSwEvent=swEvent;document.title=this.i18n("ScheduleWorld Event Manager");if(!this.leftNotebook.display()){this.leftNotebook.display(true);this.desktopResizeBar.display(true);this.toolbarNotebook.display(false);this.desktopLayout.doLayout();}
var displayIDs;var button;var children=this.emContainerL.children();if(children&&children.length>0){button=this.emGroup.getByValue("Properties");var isChecked=button.checked();if(isChecked){button.checked(false,true);}
button.checked(true);this.leftNotebook.showPane(this.EM_PAGE_LEFT);this.rightNotebook.showPane(this.EM_PAGE_RIGHT);return;}
this.rightNotebookEM=new DlNotebook({parent:this.emContainerR,fillParent:true});this.emContainerRDefinitions=new DlContainer({parent:this.rightNotebookEM,scroll:true});this.emContainerRCreateSurvey=new DlContainer({parent:this.rightNotebookEM});this.emContainerRWalkThrough=new DlContainer({parent:this.rightNotebookEM});this.emContainerRPublish=new DlContainer({parent:this.rightNotebookEM,scroll:true});this.emContainerRCustomerAdd=new DlContainer({parent:this.rightNotebookEM,scroll:true});this.emContainerRCustomerSurvey=new DlContainer({parent:this.rightNotebookEM});this.emContainerRCustomerRefund=new DlContainer({parent:this.rightNotebookEM});this.emContainerRCustomerEmail=new DlContainer({parent:this.rightNotebookEM});this.emContainerRCustomerReports=new DlContainer({parent:this.rightNotebookEM});this.emContainerREditInvoice=new DlContainer({parent:this.rightNotebookEM});this.emContainerPPEM=new DlContainer({parent:this.rightNotebookEM,scroll:true});this.emContainerPPEM.getElement().style.padding="20px";this.emContainerPPPEM=new DlContainer({parent:this.rightNotebookEM,scroll:true});this.emContainerPPPEM.getElement().style.padding="20px";this.emContainerRTotalBuyers=new DlContainer({parent:this.rightNotebookEM});this.emContainerRTotalAttendees=new DlContainer({parent:this.rightNotebookEM});this.emContainerWPS=new DlContainer({parent:this.rightNotebookEM,scroll:true});this.emContainerWPS.getElement().style.padding="20px";this.emContainerRItemBuyers=new DlContainer({parent:this.rightNotebookEM});this.emContainerCEC=new DlContainer({parent:this.rightNotebookEM,scroll:true});this.emContainerCEC.getElement().style.padding="20px";this.EM_DEF_PAGE=0;this.EM_DEF_CREATE_SURVEY=1;this.EM_DEF_WALK_THROUGH=2;this.EM_DEF_PUBLISH=3;this.EM_CUST_ADD_PAGE=4;this.EM_CUST_SURVEY_PAGE=5;this.EM_CUST_REFUND_PAGE=6;this.EM_CUST_EMAIL_PAGE=7;this.EM_CUST_REPORTS_PAGE=8;this.EM_DEF_CREATE_INVOICE=9;this.EM_DEF_PPEM=10;this.EM_DEF_PPPEM=11;this.EM_DEF_TOTAL_BUYERS=12;this.EM_DEF_TOTAL_ATTENDEES=13;this.EM_DEF_WPS=14;this.EM_DEF_ITEM_BUYERS=15;this.EM_DEF_CEC=16;this.rightNotebookEM.showPane(this.EM_DEF_PAGE);var leftVBox=new DlVbox({parent:this.emContainerL});this.emGroup=DlRadioGroup.get();var item=null;this.createEMItem=function(parent,type,label,value,group){item=new DlTreeItem({parent:parent,itemClassName:"DlTreeItem-withRadio"});button=new DlRadioButton({parent:item,label:label,value:value,group:group});button.type=type;return item;};this.emTree=new DlTree({parent:leftVBox});this.settingsItem=new DlTreeItem({parent:this.emTree,label:"<b>"+this.i18n("Event")+"</b>"});this.emPropertiesItem=this.createEMItem(this.settingsItem,"Item",swApp.i18n("Properties"),"Properties",swApp.emGroup);this.createEMItem(this.settingsItem,"Item",swApp.i18n("Survey Questions"),"Survey Questions",swApp.emGroup);this.createEMItem(this.settingsItem,"Item",swApp.i18n("Publish"),"Publish",swApp.emGroup);this.invoicesTreeItem=new DlTreeItem({parent:this.emTree,label:"<b>"+this.i18n("Invoices")+"</b>"});this.locationsTreeItem=new DlTreeItem({parent:this.emTree,label:"<b>"+this.i18n("Locations")+"/"+
this.i18n("Venues")+"</b>"});this.packageDealsTreeItem=new DlTreeItem({parent:this.emTree,label:"<b>"+this.i18n("Package Deals")+"</b>"});this.packagesTreeItem=new DlTreeItem({parent:this.emTree,label:"<b>"+this.i18n("Reports")+"</b>"});this.createEMItem(this.packagesTreeItem,"Reports",swApp.i18n("All Buyers/Attendees"),"All Buyers/Attendees",swApp.emGroup);this.createEMItem(this.packagesTreeItem,"Reports",swApp.i18n("Item Buyers/Attendees"),"Item Buyers/Attendees",swApp.emGroup);this.processingItem=new DlTreeItem({parent:this.emTree,label:"<b>"+this.i18n("Payment Providers")+"</b>"});this.createEMItem(this.processingItem,"Payment Providers",swApp.i18n("Web Payments Standard"),"WPS",swApp.emGroup);if(swApp.debug){this.createEMItem(this.processingItem,"Payment Providers",swApp.i18n("Canadian e-Cheques"),"CEC",swApp.emGroup);}
this.emGroup.addEventListener("onChange",function(){button=swApp.emGroup.getSelected()[0];if(!button){return;}
var value=swApp.emGroup.getValue()[0];if(button.type=="Item"){if(value=="Properties"){swApp.emViewDefinitions();}
if(value=="Survey Questions"){swApp.emCreateSurvey(this.swEventComp);}
if(value=="Walk Through"){swApp.emViewWalkThrough(this.swEventComp);}
if(value=="Publish"){swApp.emViewPublish(this.swEventComp);}}
else if(button.type=="Customers"){if(value=="Add Manually"){swApp.emCustomerAdd(this.swEventComp);}}
else if(button.type=="Invoices"){if(value=="InvoicesCreate"){swApp.emEditInvoice(this.emSwEvent,null);this.emInvoiceLabelE.focus();}
else{swApp.emEditInvoice(this.emSwEvent,value,button);this.emInvoiceLabelE.focus();}
this.emGroup.unCheckAll();}
else if(button.type=="Locations"){if(value=="LocationsCreate"){swApp.emCreateLocation();}
else{swApp.emCreateLocation(value,button);}
this.emGroup.unCheckAll();}
else if(button.type=="PackageDeals"){if(value=="PackageDealsCreate"){swApp.emCreatePackageDeal();}
else{swApp.emCreatePackageDeal(value,button);}
this.emGroup.unCheckAll();}
else if(button.type=="Email"){if(value=="EmailTemplatesCreate"){swApp.emCreateEmailTemplate();}
else{swApp.emCreateEmailTemplate(value);}}
else if(button.type=="Reports"){if(value=="All Buyers/Attendees"){swApp.emViewTotalBuyers();}
if(value=="Item Buyers/Attendees"){swApp.emViewItemBuyers(this.swEventComp);}}
else if(button.type=="Payment Providers"){if(value=="CEC"){swApp.emCEC();}
else if(value=="WPS"){swApp.emWPS();}}}.$(this));this.leftNotebook.showPane(this.EM_PAGE_LEFT);this.rightNotebook.showPane(this.EM_PAGE_RIGHT);button=this.emGroup.getByValue("Properties");button.checked(true);};SWApp.prototype.emCreateLocation=function(locationId,button){var dlg=new DlDialog({title:"Create A Location",resizable:true,quitBtn:"destroy"});var id=locationId;if(!locationId){id=SwLocation.createID();}
var swLocation=new SwLocation({parent:dlg,scroll:true,button:button,id:id});swLocation.setSize({x:480,y:320});swLocation.getElement().style.padding="20px";if(locationId){swLocation.refreshView(locationId);}
dlg.centerOnParent();dlg.show();swLocation.label.focus();};SWApp.prototype.emCreatePackageDeal=function(packageDealId,button){var title="Create A Package Deal";if(packageDealId){title="Update A Package Deal";}
var dlg=new DlDialog({title:title,resizable:true,quitBtn:"destroy"});var id=packageDealId;if(!packageDealId){id=SwPackageDeal.createID();}
var swPackageDeal=new SwPackageDeal({parent:dlg,outerSpace:10,id:id,button:button});swPackageDeal.setSize({x:480,y:320});if(packageDealId){swPackageDeal.refreshView(packageDealId);}
dlg.centerOnParent();dlg.show();swPackageDeal.label.focus();};SWApp.prototype.emRefreshInvoices=function(treeItem,group,skipCreate,skipInvoiceKey){swApp.log("emRefreshInvoices()");var i;var children=treeItem.children();for(i=0;i<children.length;++i){treeItem.removeWidget(children[i]);}
if(!skipCreate){swApp.emInvoicesCreate=swApp.createEMItem(treeItem,"Invoices",swApp.i18n("Create"),"InvoicesCreate",group);}
var invoiceM=swApp.syncSWorld.invoiceM;var label,invoice;var invoices=[];for(var invoiceKey in invoiceM){if(invoiceM.hasOwnProperty(invoiceKey)){invoice=invoiceM[invoiceKey];if(!invoice){continue;}
if(skipInvoiceKey&&skipInvoiceKey==invoiceKey){continue;}
invoice.invoiceKey=invoiceKey;invoices.push(invoice);}}
invoices.sort(labelComparator);for(i=0;i<invoices.length;++i){invoice=invoices[i];if(!invoice.label||invoice.label.length===0){label="Missing label";}
else{label=invoice.label;}
swApp.createEMItem(treeItem,"Invoices",label,invoice.invoiceKey,group);}};SWApp.prototype.emRefreshLocations=function(){swApp.log("emRefreshLocations()");var children=swApp.locationsTreeItem.children();var location,i;for(i=0;i<children.length;++i){swApp.locationsTreeItem.removeWidget(children[i]);}
swApp.emLocationsCreate=swApp.createEMItem(swApp.locationsTreeItem,"Locations",swApp.i18n("Create"),"LocationsCreate",swApp.emGroup);var swuser=swApp.syncSWorld.swemuserM[swApp.syncSWorld.userSettingsDTO.swuserid];var locationM=swuser["location-map"];if(!locationM){locationM={};swuser["location-map"]=locationM;}
var locations=[];for(var locationKey in locationM){if(locationM.hasOwnProperty(locationKey)){location=locationM[locationKey];if(!location){continue;}
location.locationKey=locationKey;if(!location.label){location.label=location.locationKey;}
locations.push(location);}}
locations.sort(labelComparator);for(i=0;i<locations.length;++i){location=locations[i];swApp.createEMItem(swApp.locationsTreeItem,"Locations",location.label,location.locationKey,swApp.emGroup);}};SWApp.prototype.emRefreshPackageDeals=function(){swApp.log("emRefreshPackageDeals()");var children=swApp.packageDealsTreeItem.children();var packageDeal,i;for(i=0;i<children.length;++i){swApp.packageDealsTreeItem.removeWidget(children[i]);}
swApp.emPackageDealsCreate=swApp.createEMItem(swApp.packageDealsTreeItem,"PackageDeals",swApp.i18n("Create"),"PackageDealsCreate",swApp.emGroup);var swuser=swApp.syncSWorld.swemuserM[swApp.syncSWorld.userSettingsDTO.swuserid];var packageDealsM=swuser["package-deal-map"];if(!packageDealsM){packageDealsM={};swuser["package-deal-map"]=packageDealsM;}
var packageDeals=[];for(var packageDealsKey in packageDealsM){if(packageDealsM.hasOwnProperty(packageDealsKey)){packageDeal=packageDealsM[packageDealsKey];if(!packageDeal){continue;}
if(!packageDeal.label){packageDeal.label=packageDealsKey;}
packageDeal.id=packageDealsKey;packageDeals.push(packageDeal);}}
packageDeals.sort(labelComparator);for(i=0;i<packageDeals.length;++i){packageDeal=packageDeals[i];if(!packageDeal){continue;}
swApp.createEMItem(swApp.packageDealsTreeItem,"PackageDeals",packageDeal.label,packageDeal.id,swApp.emGroup);}};SWApp.prototype.emRefreshEmailTemplates=function(){swApp.log("emRefreshEmails()");var children=swApp.emailTreeItem.children();for(var i=0;i<children.length;++i){swApp.emailTreeItem.removeWidget(children[i]);}
swApp.emEmailTemplatesCreate=swApp.createEMItem(swApp.emailTreeItem,"Email Templates",swApp.i18n("Create"),"EmailTemplatesCreate",swApp.emGroup);var emailTemplateM=swApp.syncSWorld.emailM;for(var emailTemplateKey in emailTemplateM){if(emailTemplateM.hasOwnProperty(emailTemplateKey)){var emailTemplate=emailTemplateM[emailTemplateKey];if(!emailTemplate){continue;}
swApp.createEMItem(swApp.emailTreeItem,"Email Templates",emailTemplateKey,emailTemplateKey,swApp.emGroup);}}};SWApp.prototype.emViewDefinitions=function(){var failed=function(response){if(response&&response.failed){swApp.log("getSwemuser() failed:"+response.failed);}
else{swApp.log("getSwemuser() failed.");}
swApp.emViewDefinitions2();};swApp.syncSWorld.getSwemuser(handleEvalResponse.$(this,this.emViewDefinitions2,failed));};SWApp.prototype.emViewDefinitions2=function(response){if(response){swApp.syncSWorld.swemuserM[swApp.syncSWorld.userSettingsDTO.swuserid]=response.swuser;swApp.emRefreshLocations();swApp.emRefreshPackageDeals();swApp.syncSWorld.saveSwemuserM(swApp.emViewGetInvoiceMap.$(swApp));}
else{swApp.emViewGetInvoiceMap();}};SWApp.prototype.emViewGetInvoiceMap=function(){var failed=function(response){if(response&&response.failed){swApp.log("getInvoiceMap() failed:"+response.failed);}
else{swApp.log("getInvoiceMap() failed.");}
swApp.emGetInvoiceMapResponse();};swApp.syncSWorld.getInvoiceMap(handleEvalResponse.$(this,swApp.emGetInvoiceMapResponse,failed));};SWApp.prototype.emGetInvoiceMapResponse=function(response){if(response&&response.invoiceM){var invoiceM=response.invoiceM;for(var invoiceKey in invoiceM){if(invoiceM.hasOwnProperty(invoiceKey)){var invoice=invoiceM[invoiceKey];if(!invoice){continue;}
invoice.id=invoiceKey;swApp.syncSWorld.invoiceM[invoiceKey]=invoice;}}
swApp.emRefreshInvoices(swApp.invoicesTreeItem,swApp.emGroup);swApp.syncSWorld.saveInvoiceM(swApp.emViewGetAllItems.$(swApp));}
else{swApp.emViewGetAllItems();}};SWApp.prototype.emViewGetEmailTemplateM=function(){var failed=function(response){if(response&&response.failed){swApp.log("getEmailTemplateMap() failed:"+response.failed);}
else{swApp.log("getEmailTemplateMap() failed.");}
swApp.emGetEmailTemplateMapResponse();};swApp.syncSWorld.getEmailTemplateMap(this.emGetEmailTemplateMapResponse.$(this),failed);};SWApp.prototype.emGetEmailTemplateMapResponse=function(response){if(response){for(var emailTemplateKey in response){if(response.hasOwnProperty(emailTemplateKey)){var emailTemplate=response[emailTemplateKey];if(!emailTemplate){continue;}
emailTemplate.id=emailTemplateKey;swApp.syncSWorld.emailM[emailTemplateKey]=emailTemplate;}}
swApp.emRefreshEmailTemplates();swApp.syncSWorld.saveEmailM(this.emViewGetAllItems.$(swApp));}
else{this.emViewGetAllItems();}};SWApp.prototype.emViewGetAllItems=function(){swApp.log("emViewGetAllItems()");var failed=function(response){if(response&&response.failed){swApp.log("getAllItems() failed:"+response.failed);}
else{swApp.log("getAllItems() failed.");}
swApp.emGetAllItemsResponse();};swApp.syncSWorld.getAllItems(handleEvalResponse.$(this,this.emGetAllItemsResponse,failed));};SWApp.prototype.emGetAllItemsResponse=function(response){if(response&&response.itemM){swApp.log("received itemM.");for(var itemId in response.itemM){if(response.itemM.hasOwnProperty(itemId)){var responseItem=response.itemM[itemId];responseItem["item-id"]=itemId;swApp.syncSWorld.itemM[itemId]=responseItem;}}}
swApp.emViewDefinitions6();};SWApp.prototype.emViewGetItem=function(){swApp.log("emViewGetItem()");var failed=function(response){if(response){swApp.log("getItem() failed:"+DlJSON.encode(response));}
else{swApp.log("getItem() failed.");}
swApp.emGetItemResponse();};var itemId=getItemID(swApp.swEventComp);var item=swApp.syncSWorld.itemM[itemId];if(!item){item={};item.version=1;}
swApp.syncSWorld.getItem(item,this.swEventComp,this.emGetItemResponse.$(this),failed);};SWApp.prototype.emGetItemResponse=function(response){if(response&&response.hasOwnProperty("failed")){swApp.log("Failed emGetItemResponse:"+response.failed);return;}
if(response&&response["item-id"]){swApp.log("received item:"+DlJSON.encode(response));var itemId=response["item-id"];var itemIdSS=getItemID(swApp.swEventComp);var existingItem=swApp.syncSWorld.itemM[itemId];if(existingItem&&existingItem.version){if(response.version>existingItem.version){existingItem=response;swApp.syncSWorld.itemM[itemId]=existingItem;swApp.syncSWorld.saveItemM(swApp.emViewDefinitions6.$(swApp));return;}
swApp.log("Ignored old server item");}
else{swApp.syncSWorld.itemM[itemId]=response;swApp.syncSWorld.saveItemM(swApp.emViewDefinitions6.$(swApp));return;}}
swApp.emViewDefinitions6();};SWApp.prototype.saveItem=function(item,extraCallback){var callBack=function(){var onSuccess=function(response){var serverItem=response["an-item"];var serverItemId=response["item-id"];serverItem["item-id"]=serverItemId;swApp.syncSWorld.itemM[serverItemId]=serverItem;swApp.syncSWorld.saveItemM(function(){alert("Properties for the '"+response["an-item"].label+"' saved successfully.");if(extraCallback){extraCallback();}});};var onFail=function(response){alert("Save failed.");};item.em=true;if(item.hasOwnProperty("item-id")){item.command="updateItem";}
else{item.command="createItem";item["icalendar-id"]=swApp.swEventComp.iCalendarID.substring(2);item["event-id"]=swApp.swEventComp.compID.substring(3);}
swApp.syncSWorld.sendRequest(item,null,onSuccess,onFail);};swApp.syncSWorld.saveItemM(callBack);};SWApp.prototype.emViewDefinitions6=function(){try{var itemId=getItemID(this.swEventComp);var item=swApp.syncSWorld.itemM[itemId];if(!item){item={};item.version=1;swApp.syncSWorld.itemM[itemId]=item;}
var children=this.emContainerRDefinitions.children();if(children&&children.length>0){this.refreshViewDefinitions(item);this.rightNotebookEM.showPane(this.EM_DEF_PAGE);return;}
this.emDefLayout=new DlLayout({parent:this.emContainerRDefinitions,outerSpace:10});var bottom=new DlContainer({});var titleBox=new DlHbox({parent:bottom});titleBox.setEqualWidths();var back=new DlButton({label:swApp.i18n("Back"),parent:titleBox});back.addEventListener("onClick",function(){this.leftNotebook.showPane(this.CALENDAR_PAGE);this.toolbarNotebook.showPane(this.TOOLBAR_CALENDAR_PAGE);this.toolbarNotebook.display(true);this.rightNotebook.showPane(this.CAL_EDIT_PAGE);}.$(this));titleBox.addSpace();this.emSaveButton=new DlButton({label:swApp.i18n("Save"),parent:titleBox});this.emSaveButton.addEventListener("onClick",function(){var itemId=getItemID(this.swEventComp);var item=swApp.syncSWorld.itemM[itemId];if(!item){item={};item.version=1;swApp.syncSWorld.itemM[itemId]=item;}
if(!item.label){var c=confirm("You are asking the 'Event Manager' service to\nmanage this event. You will no longer be able to:\n1. Use SyncML to update or remove this event.\n2. Use Thunderbird (syncSW.xpi) to update or remove this event.");if(!c){return;}}
this.emDefSaveItemProperties(item);this.saveItem(item);}.$(this));if(this.debug){titleBox.addSpace();titleBox.addSeparator();titleBox.addSpace();this.emPropsDebugButton=new DlButton({parent:titleBox,label:swApp.i18n("Debug")});this.emPropsDebugButton.addEventListener("onClick",function(){var item={};this.emDefSaveItemProperties(item);swApp.log("item:"+DlJSON.encode(item));}.$(this));}
titleBox.addFiller();this.emDefLayout.packWidget(bottom,{pos:"top",after:10});var prefs=new SwColLayout({});this.emDefLayout.packWidget(prefs,{pos:"left",fill:"*"});var content=String.buffer("<col class='label'>",this.i18n("A customer is a "),": <br /> <span class='help'>Select or type your own.</span> </col> <col><lcont>customerISA</lcont></col>","<sep/>","<col class='label'>Type: <br /> <span class='help'></span> </col> <col><lcont>itemType</lcont> <lcont>eventName</lcont> </col>","<sep/>","<col class='label'>This event is called a: <br /> <span class='help'>Select or type your own.</span> </col> <col><lcont>eventCalled</lcont> </col>","<sep/>","<col class='label'>Hosted By<br /> <span class='help'>The person or organization that is hosting the event.</span> </col> <col> <lcont>hostedByLabel</lcont> </col>","<sep/>","<col class='label'>Host Description<br /> <span class='help'>One or two sentences describing the host.</span> </col> <col> <lcont>hostedByDescHTML</lcont> </col>","<sep/>","<col class='label'>Host Contact Email<br /> <span class='help'>The email people should use to contact the host.</span> </col> <col> <lcont>hostedByEmail</lcont> </col>","<sep/>","<col class='label'>Host Web Site<br /> <span class='help'>The web site people should visit to learn more about the host.</span> </col> <col> <lcont>hostedByWWW</lcont> </col>","<sep/>","<col class='label'>Host Mailing Address<br /> <span class='help'>The receipt page and email require this.</span> </col> <col> <lcont>hostMailingAddress</lcont> </col>","<sep/>","<col class='label'>Host Branding Image URL<br /> <span class='help'>A URL that points to an image placed at the top right of the public purchase page.</span> </col> <col> <lcont>hostBrandingImageURL</lcont> </col>","<sep/>","<col class='label'>Use Max Width For Purchase<br /> <span class='help'>You know the purchase widget is going to be extra wide.</span> </col> <col> <lcont>maxWidthForPurchaseCB</lcont> </col>","<sep/>","<col class='label'>Top div height in pixels<br /> <span class='help'>This can help eliminate whitespace.</span> </col> <col> <lcont>topDivHeight</lcont> </col>","<sep/>","<col class='label'>Hide Start-To-End<br /> <span class='help'>Sometimes it does not make sense to show start-end dates.</span> </col> <col> <lcont>hideStartToEnd</lcont> </col>","<sep/>","<col class='label'>Show Tax Columns In Summary<br /> <span class='help'>Makes the invoice clearer if you have multiple items with different taxes.</span> </col> <col> <lcont>showTaxColumnsInSummaryCB</lcont> </col>","<sep/>","<col class='label'>Description<br /> <span class='help'>Detailed information others would find useful.</span> </col> <col> <lcont>description</lcont> </col>","<sep/>","<col class='label'>Instructions<br /> <span class='help'>What to bring, how to get there, contact info, etc.</span> </col> <col> <lcont>instructions</lcont> </col>","<sep/>","<col class='label'>Legal Agreement<br /> <span class='help'>The purchasor must accept this agreement for the purchase to succeed.</span> </col> <col> <lcont>legalAgreement</lcont> </col>","<sep/>","<col class='label'>Invoices<br /> <span class='help'></span> </col> <col> <lcont>invoices</lcont> <lcont>invoices2</lcont> <wcont>invoices3</wcont> </col>","<sep/>","<col class='label'>Included Items<br /> <span class='help'>Treat this item as a container. Only included items are for sale. Selected (Sel) means the item is selected for purchase by default.</span> </col> <col> <wcont>includedItems</wcont> </col>","<sep/>","<col class='label'>Package Deals<br /> <span class='help'>For example: purchase two, get the second at half price.</span> </col> <col> <lcont>packageDeals</lcont> <lcont>packageDeals2</lcont></col>","<sep/>","<col class='label'>Merged Items<br /> <span class='help'>Used to group multiple events/items. F.E. A Football practice event contains events for Tue and Wed. The buyer can purchase one item instead of separate items on different days of the week.</span> </col> <col> <wcont>mergedItems</wcont> </col>","<sep/>","<col class='label'>Enable Prorated Payment<br /> <span class='help'>A parent buying lessons half-way through the season will pay 50% of the price.</span> </col> <col> <lcont>proratedCB</lcont> </col>","<sep/>","<col class='label'>Purchase Note<br /> <span class='help'>HTML that provides helpful info about the purchase.</span> </col> <col> <wcont>purchaseNote</wcont> </col>","<sep/>","<col class='label'>Locations<br /> <span class='help'></span> </col> <col> <lcont>locations</lcont> <lcont>locations2</lcont></col>","<sep/>","<col class='label'>Currency<br /> <span class='help'>Currency, symbol, decimal separator etc.</span> </col> <col> <lcont>moneyLocale</lcont> <lcont>moneyLocale2</lcont> </col>","<sep/>","<col class='label'>Dynamic Taxes<br /> <span class='help'>( Beta - do not enable.)</span> </col> <col> <lcont>dynamicTaxes</lcont> <lcont>dynamicTaxes2</lcont> </col>","<sep/>","<col class='label'>Refund Policy<br /> <span class='help'>An HTML description of the refund policy for this event.</span> </col> <col> <wcont>refundPolicy</wcont> </col>","<sep/>");var ids=prefs.setContent(content.get());this.purchaseNoteE=new DlEntry({parent:prefs,value:"",appendArgs:ids.purchaseNote,type:"textarea",rows:2,size:60});this.dynamicTaxes=new DlCheckbox({parent:prefs,appendArgs:ids.dynamicTaxes,label:"Dynamically calculates what taxes to apply based on the buyer and seller locations."});this.refundPolicyE=new DlEntry({parent:prefs,value:"",appendArgs:ids.refundPolicy,type:"textarea",rows:2,size:60});var hboxCustomerISA=new DlHbox({parent:prefs,appendArgs:ids.customerISA});var customerISA="Attendee";this.customerISAEntry=new DlEntry({parent:hboxCustomerISA,value:customerISA,size:40});var customerOptions=[{label:"Attendee",value:"Attendee"},{label:"Student",value:"Student"},{label:"Musician",value:"Musician"},{label:"Soccer Player",value:"Soccer Player"}];hboxCustomerISA.addSpace();this.customerISAList=new DlRadioSelect({parent:hboxCustomerISA,options:customerOptions,value:customerISA});this.customerISAList.addEventListener("onChange",function(oldVal,newVal){if(oldVal==newVal){return;}
this.customerISAEntry.setValue(newVal);}.$(this));var typeOptions=[{label:"Event",value:"Event"},{label:"Physical Item",value:"Physical Item"},{label:"Membership",value:"Membership"}];this.typeList=new DlRadioSelect({parent:prefs,appendArgs:ids.itemType,options:typeOptions,value:"Event"});this.typeList.addEventListener("onChange",function(oldVal,newVal){if(oldVal==newVal){return;}
this.settingsItem.__label=newVal;this.settingsItem.setContent("<b>"+this.settingsItem.__label+"</b>");}.$(this));this.eventName=new DlLabel({parent:prefs,appendArgs:ids.eventName,label:"Event Summary"});var hboxEventCalled=new DlHbox({parent:prefs,appendArgs:ids.eventCalled});var eventCalled="Ticket";this.eventCalledEntry=new DlEntry({parent:hboxEventCalled,value:eventCalled,size:40});var eventCalledOptions=[{label:"Ticket",value:"Ticket"},{label:"Registration",value:"Registration"},{label:"Class",value:"Class"},{label:"Session",value:"Session"},{label:"Yoga Class",value:"Yoga Class"},{label:"Music Lessons",value:"Music Lessons"},{label:"Soccer Camp",value:"Soccer Camp"}];hboxEventCalled.addSpace();this.eventCalledList=new DlRadioSelect({parent:hboxEventCalled,options:eventCalledOptions,value:eventCalled});this.eventCalledList.addEventListener("onChange",function(old_val,new_val){if(old_val==new_val){return;}
this.eventCalledEntry.setValue(new_val||"");}.$(this));this.hostedByLabelEntry=new DlEntry({parent:prefs,appendArgs:ids.hostedByLabel,size:40});this.hostedByDescHTMLEntry=new DlEntry({parent:prefs,type:"textarea",appendArgs:ids.hostedByDescHTML,size:40,rows:4});this.hostedByEmailEntry=new DlEntry({parent:prefs,appendArgs:ids.hostedByEmail,size:40});this.hostedByWWWEntry=new DlEntry({parent:prefs,appendArgs:ids.hostedByWWW,size:40});this.hostMailingAddressEntry=new DlEntry({parent:prefs,type:"textarea",appendArgs:ids.hostMailingAddress,size:40,rows:4});this.hostBrandingImageURLEntry=new DlEntry({parent:prefs,appendArgs:ids.hostBrandingImageURL,size:40});this.maxWidthForPurchaseCB=new DlCheckbox({parent:prefs,appendArgs:ids.maxWidthForPurchaseCB});this.hideStartToEnd=new DlCheckbox({parent:prefs,appendArgs:ids.hideStartToEnd});this.topDivHeight=new DlEntry({parent:prefs,appendArgs:ids.topDivHeight});this.showTaxColumnsInSummaryCB=new DlCheckbox({parent:prefs,appendArgs:ids.showTaxColumnsInSummaryCB});this.proratedCB=new DlCheckbox({parent:prefs,appendArgs:ids.proratedCB,label:"Affects this item only."});this.description=new DlButton({parent:prefs,appendArgs:ids.description,label:"Edit Description"});this.description.addEventListener("onClick",function(){var htmlText=swApp.emPropDescHTML;if(!htmlText){htmlText="";}
SWRTE.showRTE("Description",htmlText,function(){swApp.emPropDescHTML=this.html.replace(/&#xa0;/g," ").replace(/\u00a0/g," ");swApp.emPropDescMD=this.markdown;});}.$(this));this.instructions=new DlButton({parent:prefs,appendArgs:ids.instructions,label:"Edit Instructions"});this.instructions.addEventListener("onClick",function(){var htmlText=swApp.emPropInstHTML;if(!htmlText){htmlText="";}
SWRTE.showRTE("Instructions",htmlText,function(){swApp.emPropInstHTML=this.html.replace(/&#xa0;/g," ").replace(/\u00a0/g," ");swApp.emPropInstMD=this.markdown;});}.$(this));this.legalAgreement=new DlButton({parent:prefs,appendArgs:ids.legalAgreement,label:"Edit Legal Agreement"});this.legalAgreement.addEventListener("onClick",function(){var htmlText=swApp.emPropLegalAgreementHTML;if(!htmlText){htmlText="";}
SWRTE.showRTE("Legal Agreement",htmlText,function(){swApp.emPropLegalAgreementHTML=this.html.replace(/&#xa0;/g," ").replace(/\u00a0/g," ");swApp.emPropLegalAgreementMD=this.markdown;});}.$(this));var invoicesOpt=this.createInvoicesOpt();this.invoices=new DlRadioSelect({parent:prefs,options:invoicesOpt,value:"Select",appendArgs:ids.invoices});this.invoices.addEventListener("onChange",function(oldVal,selectedInvoiceKey){if(oldVal==selectedInvoiceKey){return;}
var invoice=swApp.syncSWorld.invoiceM[selectedInvoiceKey];this.addInvoice(invoice.label,selectedInvoiceKey);if(selectedInvoiceKey!="Select"){this.invoices.setValue("Select",true,true);}}.$(this));this.emInvoiceVbox=new DlVbox({parent:prefs,appendArgs:ids.invoices2});var swuser=swApp.syncSWorld.swemuserM[swApp.syncSWorld.userSettingsDTO.swuserid];this.miVbox=new DlVbox({parent:prefs,appendArgs:ids.mergedItems});this.mergedItems=new DlRadioSelect({parent:this.miVbox});this.mergedItems.addEventListener("onChange",function(oldVal,selectedKey){try{if(oldVal==selectedKey){return;}
var item=swApp.syncSWorld.itemM[selectedKey];var swEvent=this.getSwEvent(selectedKey);if(!swEvent){return;}
var data={};data.value=swEvent.title;data.id=selectedKey;this.emMergedCache.insert(new DlRecord({data:data,recordSet:this.emMergedCache}));setTimeout(function(){var options=swApp.createIncludedItemsOpt(swApp.emMergedCache);swApp.mergedItems.setOptions(options);},50);}catch(ex){swApp.logEX(ex);}}.$(this));this.mSelectionModel=new DlSelectionModel({});var columns=[{id:"value",label:"Merged Item",width:150,fill:true}];var records=[];this.emMergedCache=new DlRecordCache({data:records});this.emMergedDataGrid=new DlDataGrid({parent:this.miVbox,fillParent:true,cols:columns,data:this.emMergedCache,selection:this.mSelectionModel});this.emMergedDataGrid.resetIDS([]);this.emMergedDataGrid.displayPage(0);this.emMergedDataGrid.__doLayout();var viRemove=new DlButton({parent:this.miVbox,label:"Remove"});viRemove.addEventListener("onClick",function(){var array=this.mSelectionModel.getArray();if(!array||array.length===0){return;}
array.foreach(this.emMergedCache.remove,this.emMergedCache);var cache=this.emMergedCache;var swkvGrid=this.emMergedDataGrid;var fn=function(){var options=swApp.createIncludedItemsOpt(cache);swApp.mergedItems.setOptions(options);var displayIDs=swApp.emMergedCache.getAllIds();swApp.emMergedDataGrid.resetIDS(displayIDs);swApp.emMergedDataGrid.displayPage(0);};setTimeout(fn,50);}.$(this));this.iiVbox=new DlVbox({parent:prefs,appendArgs:ids.includedItems});this.includedItems=new DlRadioSelect({parent:this.iiVbox});this.includedItems.addEventListener("onChange",function(oldVal,selectedKey){if(oldVal==selectedKey){return;}
var item=swApp.syncSWorld.itemM[selectedKey];var swEvent=this.getSwEvent(selectedKey);if(!swEvent){return;}
var data={};data.value=swEvent.title;data.id=selectedKey;this.emIncludedItemsVbox.keyValueCache.insert(new SwKeyValue({data:data,recordSet:this.emIncludedItemsVbox.keyValueCache}));setTimeout(function(){var options=swApp.createIncludedItemsOpt(swApp.emIncludedItemsVbox.keyValueCache);swApp.includedItems.setOptions(options);},50);}.$(this));records=[];this.emIncludedItemsVbox=new SwKeyValueGrid({parent:this.iiVbox,fillParent:true,updateIncludedItemsRS:true});var el=this.emIncludedItemsVbox.getElement();var p=el.parentNode.parentNode.parentNode.parentNode.parentNode;this.emMergedDataGrid.setSize({x:p.clientWidth,y:140});this.emIncludedItemsVbox.setSize({x:p.clientWidth,y:140});this.emIncludedItemsVbox.swInitGrid(records);this.emIncludedItemsVbox.__doLayout();prefs.addEventListener("onResize",function(){var width=p.clientWidth;swApp.emIncludedItemsVbox.setSize({x:width,y:140});var x="1";});var locationsOpt=this.createLocationsOpt();this.locations=new DlRadioSelect({parent:prefs,options:locationsOpt,value:"Select",appendArgs:ids.locations});this.locations.addEventListener("onChange",function(oldVal,selectedLocationKey){if(oldVal==selectedLocationKey){return;}
var swuser=swApp.syncSWorld.swemuserM[swApp.syncSWorld.userSettingsDTO.swuserid];var locationM=swuser["location-map"];var location=locationM[selectedLocationKey];if(!location){swApp.log("selectedLocationKey not found:"+selectedLocationKey);return;}
var label=location.label;if(!label){label=selectedLocationKey;}
this.addLocation(label,selectedLocationKey);if(selectedLocationKey!="Select"){this.locations.setValue("Select",true,true);}}.$(this));this.emLocationVbox=new DlVbox({parent:prefs,appendArgs:ids.locations2});var packageDealOpt=this.createPackageDealsOpt();this.packageDeals=new DlRadioSelect({parent:prefs,options:packageDealOpt,value:"Select",appendArgs:ids.packageDeals});this.packageDeals.addEventListener("onChange",function(oldVal,selectedPackageDealKey){if(oldVal==selectedPackageDealKey){return;}
var packageDealM=swuser["package-deal-map"];var packageDeal=packageDealM[selectedPackageDealKey];if(!packageDeal){return;}
var label=packageDeal.label;if(!label){label=selectedPackageDealKey;}
this.addPackageDeal(label,selectedPackageDealKey);if(selectedPackageDealKey!="Select"){this.packageDeals.setValue("Select",true,true);}}.$(this));this.emPackageDealsVbox=new DlVbox({parent:prefs,appendArgs:ids.packageDeals2});var supportedCurrencyCodes={"USD":1,"AUD":1,"GBP":1,CAD:1,CZK:1,DKK:1,EUR:1,HKD:1,HUF:1,ILS:1,JPY:1,MXN:1,NZD:1,NOK:1,PHP:1,PLN:1,SGD:1,SEK:1,CHF:1,TWD:1,THB:1};var moneyLocaleOptions=buildLocaleOptions(supportedCurrencyCodes);this.moneyLocaleRS=new DlRadioSelect({parent:prefs,appendArgs:ids.moneyLocale,options:moneyLocaleOptions});this.moneyLocaleRS.addEventListener("onChange",function(name,value){swApp.log("locale changed:"+value);if(!value){return;}
var moneyLocale=jsLocaleData[value];var fp=formatPrice(100000,moneyLocale.groupingSeparator,moneyLocale.monetaryDecimalSeparator,moneyLocale.currencySymbol);if(this.moneyLocaleL){this.moneyLocaleL.label(fp+" "+moneyLocale.currencyCode);}}.$(this));this.moneyLocaleRS.value(swApp.userSettingsLocaleKey);var moneyLocale=jsLocaleData[swApp.userSettingsLocaleKey];var fp=formatPrice(100000,moneyLocale.groupingSeparator,moneyLocale.monetaryDecimalSeparator,moneyLocale.currencySymbol);this.moneyLocaleL=new DlLabel({parent:prefs,appendArgs:ids.moneyLocale2,label:"Example: "+fp+" "+moneyLocale.currencyCode});this.refreshViewDefinitions(item);this.rightNotebookEM.showPane(this.EM_DEF_PAGE);swApp.emContainerRDefinitions.callHooks("onResize");}catch(ex){swApp.log(ex.stack);}};SWApp.prototype.createInvoicesOpt=function(){var invoicesOpt=[{label:swApp.i18n("Select"),value:"Select"}];var invoiceM=swApp.syncSWorld.invoiceM;if(invoiceM){for(var invoiceKey in invoiceM){if(invoiceM.hasOwnProperty(invoiceKey)){var invoice=invoiceM[invoiceKey];if(!invoice){continue;}
invoicesOpt.push({label:invoice.label,value:invoiceKey});}}}
invoicesOpt.sort(labelComparator);return invoicesOpt;};SWApp.prototype.addInvoice=function(invoiceLabel,invoiceId){var label;for(i=0;i<this.emInvoiceVbox._widgets.length;++i){var children=this.emInvoiceVbox._widgets[i]._widgets;label=children[0];if(label.value()==invoiceId){return;}}
var invoiceM=swApp.syncSWorld.invoiceM;if(!invoiceM){return;}
var invoice=invoiceM[invoiceId];if(!invoice){return;}
var invHbox=new DlHbox({parent:this.emInvoiceVbox});label=new DlLabel({parent:invHbox,label:invoice.label,value:invoiceId});invHbox.addSpace();invHbox.addFiller();var delLocB=new DlButton({parent:invHbox,label:"Del"});delLocB.parentHbox=invHbox;delLocB.parentVbox=this.emInvoiceVbox;delLocB.addEventListener("onClick",function(){this.parentVbox.removeWidget(this.parentHbox);});};SWApp.prototype.getSwEvent=function(itemId){var index=itemId.indexOf("-");var index2=itemId.indexOf("-",index+1);var iCalendarID="id"+itemId.substring(index+1,index2);var compID="cid"+itemId.substring(index2+1);return swApp.syncSWorld.getEvent(compID,iCalendarID);};SWApp.prototype.createIncludedItemsOpt=function(cache){var ignoreItemId=getItemID(swApp.swEventComp);var index=ignoreItemId.indexOf("-",9);var iCalendarID=parseInt(ignoreItemId.substring(9,index));var includedItemsOpt=[{label:swApp.i18n("Select"),value:"Select"}];var swuser=swApp.syncSWorld.swemuserM[swApp.syncSWorld.userSettingsDTO.swuserid];var sortTitle=[],itemICalendarID;for(var itemId in swApp.syncSWorld.itemM){if(swApp.syncSWorld.itemM.hasOwnProperty(itemId)){if(itemId==ignoreItemId){continue;}
if(cache&&cache.get(itemId)){continue;}
index=itemId.indexOf("-",9);itemICalendarID=parseInt(itemId.substring(9,index));if(iCalendarID!=itemICalendarID){continue;}
var item=swApp.syncSWorld.itemM[itemId];var swEvent=this.getSwEvent(itemId);if(!swEvent){continue;}
includedItemsOpt.push({label:swEvent.title,value:itemId});}}
includedItemsOpt.sort(labelComparator);return includedItemsOpt;};SWApp.prototype.createLocationsOpt=function(){var locationsOpt=[{label:swApp.i18n("Select"),value:"Select"}];var swuser=swApp.syncSWorld.swemuserM[swApp.syncSWorld.userSettingsDTO.swuserid];var locationM=swuser["location-map"];if(locationM){for(var locationKey in locationM){if(locationM.hasOwnProperty(locationKey)){var location=locationM[locationKey];if(!location){continue;}
locationsOpt.push({label:location.label,value:locationKey});}}}
locationsOpt.sort(labelComparator);return locationsOpt;};SWApp.prototype.createPackageDealsOpt=function(){var packageDealsOpt=[{label:swApp.i18n("Select"),value:"Select"}];var swuser=swApp.syncSWorld.swemuserM[swApp.syncSWorld.userSettingsDTO.swuserid];var packageDealM=swuser["package-deal-map"];if(packageDealM){for(var packageDealKey in packageDealM){if(packageDealM.hasOwnProperty(packageDealKey)){var packageDeal=packageDealM[packageDealKey];if(!packageDeal){continue;}
var label=packageDeal.label;if(!label){label=packageDealKey;}
packageDealsOpt.push({label:label,value:packageDealKey});}}}
packageDealsOpt.sort(labelComparator);return packageDealsOpt;};SWApp.prototype.addLocation=function(locationLabel,locationId){var label;for(i=0;i<this.emLocationVbox._widgets.length;++i){var children=this.emLocationVbox._widgets[i]._widgets;label=children[0];if(label.value()==locationId){return;}}
var swuser=swApp.syncSWorld.swemuserM[swApp.syncSWorld.userSettingsDTO.swuserid];var locationM=swuser["location-map"];if(!locationM){return;}
var location=locationM[locationId];if(!location){return;}
label=location.label;if(!label){label=locationId;}
var invHbox=new DlHbox({parent:this.emLocationVbox});label=new DlLabel({parent:invHbox,label:label,value:locationId});invHbox.addSpace();invHbox.addFiller();var delLocB=new DlButton({parent:invHbox,label:"Del"});delLocB.parentHbox=invHbox;delLocB.parentVbox=this.emLocationVbox;delLocB.addEventListener("onClick",function(){this.parentVbox.removeWidget(this.parentHbox);});};SWApp.prototype.addPackageDeal=function(packageDealLabel,packageDealId){var label;for(i=0;i<this.emPackageDealsVbox._widgets.length;++i){var children=this.emPackageDealsVbox._widgets[i]._widgets;label=children[0];if(label.value()==packageDealId){return;}}
var swuser=swApp.syncSWorld.swemuserM[swApp.syncSWorld.userSettingsDTO.swuserid];var packageDealM=swuser["package-deal-map"];if(!packageDealM){return;}
var packageDeal=packageDealM[packageDealId];if(!packageDeal){return;}
var invHbox=new DlHbox({parent:this.emPackageDealsVbox});label=new DlLabel({parent:invHbox,label:packageDealLabel,value:packageDealId});invHbox.addSpace();invHbox.addFiller();var delLocB=new DlButton({parent:invHbox,label:"Del"});delLocB.parentHbox=invHbox;delLocB.parentVbox=this.emPackageDealsVbox;delLocB.addEventListener("onClick",function(){this.parentVbox.removeWidget(this.parentHbox);});};SWApp.prototype.refreshViewDefinitions=function(item){var invoicesOpt=this.createInvoicesOpt();this.invoices.setOptions(invoicesOpt);var locationsOpt=this.createLocationsOpt();this.locations.setOptions(locationsOpt);var packageDealsOpt=this.createPackageDealsOpt();this.packageDeals.setOptions(packageDealsOpt);this.emInvoiceVbox.destroyChildWidgets();this.emIncludedItemsVbox.clear();this.emIncludedItemsVbox.__doLayout();this.emLocationVbox.destroyChildWidgets();this.emPackageDealsVbox.destroyChildWidgets();if(!item||!item["customer-is-a"]){var includedItemsOpt=this.createIncludedItemsOpt();this.includedItems.setOptions(includedItemsOpt);this.includedItems.setValue("Select");var mergedItemsOpt=this.createIncludedItemsOpt();this.mergedItems.setOptions(mergedItemsOpt);this.mergedItems.setValue("Select");this.customerISAEntry.setValue("Attendee");this.typeList.setValue("Event");this.eventName.label("");this.eventCalledEntry.setValue("Ticket");this.hostedByLabelEntry.setValue("");this.hostedByDescHTMLEntry.setValue("");this.hostedByEmailEntry.setValue("");this.hostedByWWWEntry.setValue("");this.hostMailingAddressEntry.setValue("");this.hostBrandingImageURLEntry.setValue("");swApp.emPropDescHTML="";swApp.emPropDescMD="";swApp.emPropInstHTML="";swApp.emPropInstMD="";swApp.emPropLegalAgreementHTML="";swApp.emPropLegalAgreementMD="";this.purchaseNoteE.setValue("");this.refundPolicyE.setValue("");return;}
this.customerISAEntry.setValue(item["customer-is-a"]);this.typeList.setValue(item["item-type"]);this.eventName.label(this.swEventComp.title);this.eventCalledEntry.setValue(item.label||"");this.hostedByLabelEntry.setValue(item["hosted-by-label"]||"");this.hostedByDescHTMLEntry.setValue(item["hosted-by-desc-html"]||"");this.hostedByEmailEntry.setValue(item["hosted-by-email"]||"");this.hostedByWWWEntry.setValue(item["hosted-by-www"]||"");this.hostMailingAddressEntry.setValue(item["host-mailing-address"]||"");this.hostBrandingImageURLEntry.setValue(item["host-branding-image-url"]||"");this.maxWidthForPurchaseCB.checked(item["max-width-for-purchase"]);this.hideStartToEnd.checked(item["hide-start-to-end"]);this.topDivHeight.setValue(item["top-div-height"]||"");this.showTaxColumnsInSummaryCB.checked(item["show-tax-columns-in-summary"]);this.proratedCB.checked(item["prorated"]);this.dynamicTaxes.checked(item["dynamic-taxes"]);swApp.emPropDescHTML=item["description-html"]||"";swApp.emPropDescMD=item["description-markdown"]||"";swApp.emPropInstHTML=item["instructions-html"]||"";swApp.emPropInstMD=item["instructions-markdown"]||"";swApp.emPropLegalAgreementHTML=item["legal-agreement-html"]||"";swApp.emPropLegalAgreementMD=item["legal-agreement-markdown"]||"";var invoiceM=swApp.syncSWorld.invoiceM;var i;for(i=0;i<item["invoice-ids"].length;++i){var invoice=invoiceM[item["invoice-ids"][i]];if(!invoice||!invoice.label||!invoice.id){continue;}
this.addInvoice(invoice.label,invoice.id);}
var swuser=swApp.syncSWorld.swemuserM[swApp.syncSWorld.userSettingsDTO.swuserid];var includedItemIds=item["included-item-ids"];var includedItemOrder=item["included-item-order"];var dataM=[];if(includedItemIds){if(!includedItemOrder){includedItemOrder=getPropKeys(includedItemIds);}
for(var i=0;i<includedItemOrder.length;++i){var includedItemId=includedItemOrder[i];var anItem=swApp.syncSWorld.itemM[includedItemId];if(!anItem){continue;}
var itemData=includedItemIds[includedItemId];var swEvent=this.getSwEvent(includedItemId);var data={};data.value=swEvent.title;data.id=includedItemId;data.req=itemData.req;data.questions=itemData.questions;data.items=itemData.items;dataM.push(new SwKeyValue({data:data,recordSet:this.emIncludedItemsVbox.keyValueCache}));}
this.emIncludedItemsVbox.clear(dataM);this.emIncludedItemsVbox.__doLayout();}
var includedItemsOpt=this.createIncludedItemsOpt(this.emIncludedItemsVbox.keyValueCache);this.includedItems.setOptions(includedItemsOpt);this.includedItems.setValue("Select");var displayIDs=this.emMergedCache.getAllIds();if(displayIDs&&displayIDs.length>0){this.emMergedCache.remove(displayIDs);this.emMergedDataGrid.resetIDS([]);this.emMergedDataGrid.displayPage(0);}
var mergedItemIds=item["merged-item-ids"];var dataM=[];if(mergedItemIds){for(var i=0;i<mergedItemIds.length;++i){var mergedItemId=mergedItemIds[i];var anItem=swApp.syncSWorld.itemM[mergedItemId];if(!anItem){continue;}
var swEvent=this.getSwEvent(mergedItemId);var data={};data.value=swEvent.title;data.id=mergedItemId;dataM.push(new DlRecord({data:data,recordSet:this.emMergedCache}));}
if(dataM&&dataM.length>0){this.emMergedCache=new DlRecordCache({data:dataM});this.emMergedDataGrid.setCache(this.emMergedCache);var displayIDs=this.emMergedCache.getAllIds();this.emMergedDataGrid.resetIDS(displayIDs);this.emMergedDataGrid.displayPage(0);}
this.emMergedDataGrid.__doLayout();}
var mergedItemsOpt=this.createIncludedItemsOpt(this.emMergedCache);this.mergedItems.setOptions(mergedItemsOpt);this.mergedItems.setValue("Select");var label;var locationM=swuser["location-map"];var locationIds=item["location-ids"];if(locationIds){for(i=0;i<locationIds.length;++i){var locationId=locationIds[i];var location=locationM[locationId];if(!location){continue;}
label=location.label;if(!label){label=locationId;}
this.addLocation(label,locationId);}}
var packageDealM=swuser["package-deal-map"];var packageDealIds=item["package-deal-ids"];if(packageDealIds){for(i=0;i<packageDealIds.length;++i){var packageDealId=packageDealIds[i];var packageDeal=packageDealM[packageDealId];if(!packageDeal){continue;}
label=packageDeal.label;if(!label){label=packageDealId;}
this.addPackageDeal(label,packageDealId);}}
this.moneyLocaleRS.setValue(item["money-locale"]);var purchaseNote=item["purchase-note"]||"";this.purchaseNoteE.setValue(purchaseNote);this.refundPolicyE.setValue(item["refund-policy"]);};SWApp.prototype.emDefSaveItemSWCompProperties=function(dest,swEventComp,emSwEvent){dest.bywdaylist=swEventComp.bywdaylist;var date=new Date();date.setSeconds(0);date.setMinutes(emSwEvent.getStartMinute());date.setHours(emSwEvent.getStartHourOfDay());date.setDate(1);date.setMonth(emSwEvent._data.syncSWorldCalComp.startMonth-1);date.setFullYear(emSwEvent._data.syncSWorldCalComp.startYear);date.setDate(emSwEvent._data.syncSWorldCalComp.startDayOfMonth);var dateFormat=swApp.getDateFormat();dest.start=date.print(dateFormat);dest.startWeekDaysIdx=date.getDay()+1;dest.startMonthsIdx=date.getMonth();dest.startYear=parseInt(emSwEvent._data.syncSWorldCalComp.startYear,10);if(isNaN(dest.startYear)){dest.startYear=0;}
dest.startDayOfMonth=parseInt(emSwEvent._data.syncSWorldCalComp.startDayOfMonth,10);if(isNaN(dest.startDayOfMonth)){dest.startDayOfMonth=0;}
dest.startHourOfDay=parseInt(emSwEvent._data.syncSWorldCalComp.startHourOfDay,10);if(isNaN(dest.startHourOfDay)){dest.startHourOfDay=0;}
dest.startMinute=parseInt(emSwEvent._data.syncSWorldCalComp.startMinute,10);if(isNaN(dest.startMinute)){dest.startMinute=0;}
var durationMinutes=emSwEvent.getDuration();dest.fmtDuration=emSwEvent.calculateDisplayDuration(durationMinutes);var endValues=emSwEvent.getEndValues();dest.endHourOfDay=parseInt(endValues.hourOfDay,10);if(isNaN(dest.endHourOfDay)){dest.endHourOfDay=0;}
dest.endMinute=parseInt(endValues.minute,10);if(isNaN(dest.endMinute)){dest.endMinute=0;}
dest["days-coverage"]=emSwEvent.getDaysCoverage();var untilDate=new Date();dest.until="";if(swEventComp.hasOwnProperty("untilYear")){untilDate.setDate(swEventComp.untilDayOfMonth);untilDate.setMonth(swEventComp.untilMonth-1);untilDate.setYear(swEventComp.untilYear);dest.until=untilDate.print(dateFormat);dest.untilWeekDaysIdx=untilDate.getDay()+1;dest.untilMonthsIdx=untilDate.getMonth();dest.untilYear=swEventComp.untilYear;dest.untilDayOfMonth=swEventComp.untilDayOfMonth;}
else{if(swEventComp.freq=="DAILY"||swEventComp.freq=="WEEKLY"||swEventComp.freq=="MONTHLY"||swEventComp.freq=="YEARLY"){delete dest.until;delete dest.untilWeekDaysIdx;delete dest.untilMonthsIdx;delete dest.untilYear;delete dest.untilDayOfMonth;dest.requiresUntil=true;}
else{untilDate.setDate(endValues.dayOfMonth);untilDate.setMonth(endValues.month-1);untilDate.setYear(endValues.year);dest.until=untilDate.print(dateFormat);dest.untilWeekDaysIdx=untilDate.getDay()+1;dest.untilMonthsIdx=endValues.month-1;dest.untilYear=endValues.year;dest.untilDayOfMonth=endValues.dayOfMonth;}}
dest.startTZ=swEventComp.startTimeZone;dest.eventTitle=swEventComp.title;};SWApp.prototype.emDefSaveItemProperties=function(dest){try{this.emDefSaveItemSWCompProperties(dest,this.swEventComp,this.emSwEvent);dest["customer-is-a"]=this.customerISAEntry.getValue();dest["item-type"]=this.typeList.getValue();dest.label=this.eventCalledEntry.getValue();dest["hosted-by-label"]=this.hostedByLabelEntry.getValue();dest["hosted-by-desc-html"]=this.hostedByDescHTMLEntry.getValue();dest["hosted-by-email"]=this.hostedByEmailEntry.getValue();dest["hosted-by-www"]=this.hostedByWWWEntry.getValue();dest["host-mailing-address"]=this.hostMailingAddressEntry.getValue();dest["host-branding-image-url"]=this.hostBrandingImageURLEntry.getValue();dest["max-width-for-purchase"]=this.maxWidthForPurchaseCB.checked();dest["hide-start-to-end"]=this.hideStartToEnd.checked();dest["top-div-height"]=this.topDivHeight.getValue();dest["show-tax-columns-in-summary"]=this.showTaxColumnsInSummaryCB.checked();dest["prorated"]=this.proratedCB.checked();dest["dynamic-taxes"]=this.dynamicTaxes.checked();dest["description-html"]=swApp.emPropDescHTML;dest["description-markdown"]=swApp.emPropDescMD;dest["instructions-html"]=swApp.emPropInstHTML;dest["instructions-markdown"]=swApp.emPropInstMD;dest["legal-agreement-html"]=swApp.emPropLegalAgreementHTML;dest["legal-agreement-markdown"]=swApp.emPropLegalAgreementMD;var invoiceIds=[];dest["invoice-ids"]=invoiceIds;var children;var child;for(i=0;i<this.emInvoiceVbox._widgets.length;++i){children=this.emInvoiceVbox._widgets[i]._widgets;child=children[0];invoiceIds.push(child.value());}
var includedItemIds=this.emIncludedItemsVbox.keyValueGrid._records.array;var includedItems={};var testSet={};for(i=0;i<includedItemIds.length;++i){var id=includedItemIds[i];var item=swApp.syncSWorld.itemM[id];if(testSet.hasOwnProperty(item.label)){alert("Error: there are multiple included items that have the\nsame label:"+item.label+"\nSuggestion: put a number at the end of the label. For example:\n1. Competitive Dance 1\n2. Competitive Dance 2");return;}
var record=this.emIncludedItemsVbox.keyValueCache.get(id);var itemData={};itemData.req=record.get("req");itemData.questions=record.get("questions");itemData.items=record.get("items");includedItems[id]=itemData;}
dest["included-item-ids"]=includedItems;dest["included-item-order"]=includedItemIds;var mergedItemIds=this.emMergedDataGrid._records.array;var mergedItems=[];var testSet={};for(i=0;i<mergedItemIds.length;++i){var id=mergedItemIds[i];var item=swApp.syncSWorld.itemM[id];if(testSet.hasOwnProperty(item.label)){alert("Error: there are multiple merged items that have the\nsame label:"+item.label+"\nSuggestion: put a number at the end of the label. For example:\n1. Competitive Dance 1\n2. Competitive Dance 2");return;}
var record=this.emMergedCache.get(id);mergedItems.push(id);}
dest["merged-item-ids"]=mergedItems;var locationIds=[];dest["location-ids"]=locationIds;for(i=0;i<this.emLocationVbox._widgets.length;++i){children=this.emLocationVbox._widgets[i]._widgets;child=children[0];locationIds.push(child.value());}
var packageDealIds=[];dest["package-deal-ids"]=packageDealIds;for(i=0;i<this.emPackageDealsVbox._widgets.length;++i){children=this.emPackageDealsVbox._widgets[i]._widgets;child=children[0];packageDealIds.push(child.value());}
dest["money-locale"]=this.moneyLocaleRS.value();dest["purchase-note"]=this.purchaseNoteE.getValue();var refundPolicy=this.refundPolicyE.getValue();if(strValid(refundPolicy)){refundPolicy=refundPolicy.replace(/\u00a0/g," ");}
dest["refund-policy"]=refundPolicy;}catch(ex){swApp.log(ex.stack);}};var SWRTE=function(){var rte;var dlg;var text;var html;var markdown;var saveCallback;return{getHTML:function(){return html;},getText:function(){return text;},getMarkdown:function(){return markdown;},showRTE:function(aTitle,htmlText,aSaveCallback){this.text="";this.html=htmlText;this.markdown="";this.saveCallback=aSaveCallback;this.dlg=new DlDialog({title:aTitle,resizable:true,quitBtn:"destroy"});var layout=new DlLayout({parent:this.dlg});this.rte=new DlRteFrame({});var toolbar=new DlContainer({className:"DlToolbar"});toolbar.getElement().style.padding="3px";var hbox=new DlHbox({parent:toolbar});var block_options=[{label:"Heading 1",value:"h1"},{label:"Heading 2",value:"h2"},{label:"Heading 3",value:"h3"},{label:"Heading 4",value:"h4"},null,{label:"Body text",value:"p"},{label:"Preformatted",value:"pre"},null,{label:"Address",value:"address"}];var block_select=new DlRadioSelect({parent:hbox,options:block_options,value:"p",tooltip:"Format block",iconClass:"IconFormatBlock"});block_select.addEventListener("onChange",function(){SWRTE.rte.execCommand("formatblock",this.getValue());});hbox.addSpace();hbox.addSeparator();hbox.addSpace();var INLINE_GROUP=DlRadioGroup.get();INLINE_GROUP.maxChecked(null);["Bold","Italic","Underline","Strike"].foreach(function(name){var tmp=new DlButton({parent:hbox,type:DlButton.TYPE.TWOSTATE,value:name.toLowerCase(),tooltip:name,iconClass:"Icon"+name,group:INLINE_GROUP});});INLINE_GROUP.addEventListener("onChange",function(btn){SWRTE.rte.execCommand(btn.getValue());});hbox.addSpace();hbox.addSeparator();hbox.addSpace();var ALIGN_GROUP=DlRadioGroup.get();["Left","Center","Right","Full"].foreach(function(name){tmp=new DlButton({parent:hbox,type:DlButton.TYPE.TWOSTATE,value:"justify"+name.toLowerCase(),tooltip:"Align "+name,iconClass:"IconAlign"+name,group:ALIGN_GROUP});});ALIGN_GROUP.addEventListener("onChange",function(btn){SWRTE.rte.execCommand(btn.getValue());});hbox.addSpace();hbox.addSeparator();hbox.addSpace();var removeFormat=new DlButton({parent:hbox,tooltip:"Remove Formatting",iconClass:"IconStop"});removeFormat.addEventListener("onClick",function(){SWRTE.rte.execCommand("removeformat");});hbox.addSpace();hbox.addSeparator();var save=new DlButton({parent:hbox,tooltip:"Save Changes",label:"Save"});save.addEventListener("onClick",function(){SWRTE.text=SWRTE.rte.getText();SWRTE.html=SWRTE.rte.getHTML();SWRTE.markdown=SWRTE.rte.getHTML().html_to_text();SWRTE.dlg.destroy();SWRTE.saveCallback();});hbox.addSeparator();hbox.addSpace();hbox.addFiller();var html=new DlButton({label:"HTML",parent:hbox,tooltip:"Display the HTML"});html.addEventListener("onClick",function(){var dlg2=new DlDialog({title:"HTML",parent:SWRTE.dlg,modal:true,resizable:true,quitBtn:"destroy"});var entry=new DlEntry({type:"textarea",parent:dlg2,fillParent:true});entry.setValue(SWRTE.rte.getHTML());entry.setSize({x:400,y:300});dlg2.centerOnParent();dlg2.show();entry.focus();dlg2.addEventListener("onDestroy",function(){SWRTE.rte.setHTML(entry.getValue());SWRTE.rte.focus();});});hbox.addSpace();hbox.addSeparator();hbox.addSpace();var cp=(typeof NiceColorPicker=="function"?new NiceColorPicker({}):new DlColorPickerHSV({}));var textColor=new DlButtonColorPicker({parent:hbox,connected:true,tooltip:"Text color",label:"FG"});textColor.setColorPicker(cp);textColor.addEventListener("onSelect",function(rgb,hsv,color){SWRTE.rte.execCommand("forecolor",color);});hbox.addSpace();var backColor=new DlButtonColorPicker({parent:hbox,connected:true,tooltip:"Background color",label:"BG"});backColor.setColorPicker(cp);backColor.addEventListener("onSelect",function(rgb,hsv,color){SWRTE.rte.execCommand("backcolor",color);});layout.packWidget(toolbar,{pos:"top"});layout.packWidget(this.rte,{pos:"top",fill:"*"});layout.setSize({x:650,y:450});this.rte.initDesignMode(function(){SWRTE.rte.loadStyle("css/xuheki/editor.css?"+new Date().getTime());SWRTE.rte.setHTML(htmlText);SWRTE.rte.focus();});this.dlg.centerOnParent();this.dlg.show();this.rte.addEventListener("onUpdate",function(){var getCommandState=SWRTE.rte.queryCommandState.$(SWRTE.rte);var val=["bold","underline","italic","strike"];val=val.grep(getCommandState);INLINE_GROUP.setValue(val);val=["justifyleft","justifyright","justifycenter","justifyfull"];val=val.grep(getCommandState);ALIGN_GROUP.setValue(val);block_select.setValue(SWRTE.rte.queryCommandValue("formatblock"),null,true);});}};}();SWApp.prototype.getSurveyColumns=function(){var columns=[{id:"question",label:"Question",fill:true}];return columns;};SWApp.prototype.getSurveyColumnsRight=function(){var columns=[{id:"question",label:"Question",fill:true},{id:"required",label:"Required",width:80}];return columns;};SWApp.prototype.emCreateSurvey=function(aSwEventComp){this.swEventComp=aSwEventComp;var failed=function(response){if(response&&response.failed){swApp.log("getSwemuser() failed:"+response.failed);}
else{swApp.log("getSwemuser() failed.");}
swApp.emCreateSurvey3();};swApp.syncSWorld.getSwemuser(handleEvalResponse.$(this,swApp.emCreateSurvey2,failed));};SWApp.prototype.emCreateSurvey2=function(response){if(response&&response.swuser){swApp.syncSWorld.swemuserM[swApp.syncSWorld.userSettingsDTO.swuserid]=response.swuser;swApp.emRefreshLocations();swApp.emRefreshPackageDeals();swApp.syncSWorld.saveSwemuserM(swApp.emCreateSurvey3.$(swApp));}
else{swApp.emCreateSurvey3();}};SWApp.prototype.emCreateSurvey3=function(){try{var children=this.emContainerRCreateSurvey.children();if(children&&children.length>0){this.refreshCreateSurvey();this.rightNotebookEM.showPane(this.EM_DEF_CREATE_SURVEY);return;}
this.emContainerRCreateSurvey.getElement().style.padding="10px";var titleBox=new DlHbox({});titleBox.setEqualWidths();var back=new DlButton({label:swApp.i18n("Back"),parent:titleBox});back.addEventListener("onClick",function(){this.leftNotebook.showPane(this.CALENDAR_PAGE);this.toolbarNotebook.showPane(this.TOOLBAR_CALENDAR_PAGE);this.toolbarNotebook.display(true);this.rightNotebook.showPane(this.CAL_EDIT_PAGE);}.$(this));this.emsqSaveButton=new DlButton({label:swApp.i18n("Save"),parent:titleBox});this.emsqSaveButton.addEventListener("onClick",function(){var itemId=getItemID(this.swEventComp);var item=swApp.syncSWorld.itemM[itemId];if(!item){item={};item.version=1;swApp.syncSWorld.itemM[itemId]=item;}
this.saveItemProperties(item);var callBack=function(){var onFail=function(response){alert("Save failed.");};var onSuccess=function(response){var serverItem=response["an-item"];var serverItemId=response["item-id"];serverItem["item-id"]=serverItemId;swApp.syncSWorld.itemM[serverItemId]=serverItem;swApp.emItemCreating=false;swApp.syncSWorld.saveItemM(function(){alert("Survey questions saved successfully.");});};item.em=true;if(item.hasOwnProperty("item-id")){item.command="updateItem";}
else{item.command="createItem";item["icalendar-id"]=swApp.swEventComp.iCalendarID.substring(2);item["event-id"]=swApp.swEventComp.compID.substring(3);}
swApp.syncSWorld.sendRequest(item,null,onSuccess,onFail);};swApp.syncSWorld.saveItemM(callBack);}.$(this));titleBox.addSpace();if(swApp.debug){titleBox.addSpace();titleBox.addSeparator();titleBox.addSpace();this.emsqPropsDebugButton=new DlButton({parent:titleBox,label:swApp.i18n("Debug")});this.emsqPropsDebugButton.addEventListener("onClick",function(){var itemId=getItemID(this.swEventComp);var item=swApp.syncSWorld.itemM[itemId];if(!item){item={};item.version=1;}
this.saveItemProperties(item);swApp.log("item:"+DlJSON.encode(item));}.$(this));}
titleBox.addSpace();var noteLabel=new DlLabel({parent:titleBox,label:swApp.i18n("<b>Note:</b> The service already requests the first name, last name, and email.")});titleBox.addFiller();var layout=new DlLayout({parent:this.emContainerRCreateSurvey});var left=new DlContainer({});var leftLayout=new DlLayout({parent:left});var lthbox=new DlHbox({align:"center"});var lt=new DlLabel({parent:lthbox,label:"<b>All Survey Questions</b>"});this.leftSelectionModel=new DlSelectionModel({multiple:true});var data=[];this.emAllSurveyCache=new DlRecordCache({data:data});this.leftGrid=new DlDataGrid({cols:this.getSurveyColumns(),data:this.emAllSurveyCache,selection:this.leftSelectionModel});this.leftGrid.resetIDS([]);var lhbox=new DlHbox({});var editButton=new DlButton({parent:lhbox,label:"Edit"});editButton.addEventListener("onClick",function(){var array=this.leftSelectionModel.getArray();if(!array||array.length!=1){alert("You must first select a single question to edit.");return;}
var id=array[0];var dlg=new DlDialog({title:"Update Survey Question",resizable:true,quitBtn:"destroy"});var swSurvey=new SwSurvey({parent:dlg,scroll:true,swEvent:swApp.swEventComp,originalQuestion:id,id:id});swSurvey.setSize({x:540,y:320});swSurvey.refreshView(id);dlg.centerOnParent();dlg.show();swSurvey.questionE.focus();}.$(this));lhbox.addSpace();var createButton=new DlButton({parent:lhbox,label:"Create"});createButton.addEventListener("onClick",function(){var dlg=new DlDialog({title:"Create Survey Questions",resizable:true,quitBtn:"destroy"});var swSurvey=new SwSurvey({parent:dlg,scroll:true,swEvent:swApp.swEventComp,id:SwSurvey.createID()});swSurvey.setSize({x:540,y:320});dlg.centerOnParent();dlg.show();swSurvey.questionE.focus();});lhbox.addSpace();var removeButton=new DlButton({parent:lhbox,label:"Remove"});removeButton.addEventListener("onClick",function(){var array=this.leftSelectionModel.getArray();if(!array||array.length!=1){alert("You must first select a single question to remove.");return;}
var surveyId=array[0];for(var itemId in swApp.syncSWorld.itemM){if(swApp.syncSWorld.itemM.hasOwnProperty(itemId)){var item=swApp.syncSWorld.itemM[itemId];if(item){var surveyIds=item["survey-ids"];if(surveyIds){for(var i=0;i<surveyIds.length;++i){if(surveyIds[i]==surveyId){alert("This question is in use.\nItem:"+
item.label);return;}
++i;}}}}}
var request={};request.command="removeSurvey";request.em=true;request["survey-id"]=surveyId;var onSuccess=function(response){if(!response){alert("Failed to remove survey question.");return;}
if(response.hasOwnProperty("failed")){alert("Failed to remove survey question:"+response.failed);return;}
var swuser=swApp.syncSWorld.swemuserM[swApp.syncSWorld.userSettingsDTO.swuserid];var surveyM=swuser["survey-map"];if(!surveyM){return;}
delete surveyM[response["survey-id"]];this.emAllSurveyCache.remove(response["survey-id"]);this.emRSurveyCache.remove(response["survey-id"]);swApp.syncSWorld.saveSwemuserM(function(){alert("Survey question removed.");});};var onFail=function(response){alert("Failed to remove survey question.");};swApp.syncSWorld.sendRequest(request,null,onSuccess.$(this),onFail);}.$(this));lhbox.addFiller();var UseButton=new DlButton({parent:lhbox,label:"Use"});UseButton.addEventListener("onClick",function(){var array=this.leftSelectionModel.getArray();if(!array||array.length===0){alert("You must first select some questions to use.");return;}
var swuser=swApp.syncSWorld.swemuserM[swApp.syncSWorld.userSettingsDTO.swuserid];if(!swuser){return;}
var surveyM=swuser["survey-map"];if(!surveyM){return;}
for(var i=0;i<array.length;++i){var question=array[i];var exists=this.emRSurveyCache.get(question);if(exists){continue;}
var survey=Dynarch.makeCopy(surveyM[question]);survey.id=question;if(typeof survey.required=="undefined"||survey.required===null){survey.required=false;}
if(!survey.question){survey.question=question;}
var rightRecord=new DlRecord({data:survey});this.emRSurveyCache.insert(rightRecord);}}.$(this));leftLayout.packWidget(lthbox,{pos:"top",fill:30});leftLayout.packWidget(lhbox,{pos:"bottom",fill:30});leftLayout.packWidget(this.leftGrid,{pos:"left",fill:"*"});var right=new DlContainer({});var rightLayout=new DlLayout({parent:right});var rthbox=new DlHbox({align:"center"});var rt=new DlLabel({parent:rthbox,label:"<b>"+swApp.eventCalledEntry.getValue()+" Survey Questions</b>"});this.emsqSelectionModel=new DlSelectionModel({multiple:true});var rdata=[];this.emRSurveyCache=new DlRecordCache({data:rdata});this.emsqRightGrid=new DlDataGrid({cols:this.getSurveyColumnsRight(),data:this.emRSurveyCache,selection:this.emsqSelectionModel});this.emsqRightGrid.resetIDS([]);var rhbox=new DlHbox({});rhbox.addFiller();var requiredButton=new DlButton({parent:rhbox,label:"Required"});requiredButton.addEventListener("onClick",function(){var array=swApp.emsqSelectionModel.getArray();if(!array||array.length===0){alert("You must first select a question.");return;}
for(var i=0;i<array.length;++i){var id=array[i];var rec=this.emRSurveyCache.get(id);var required=rec.get("required");if(required){rec.set("required",false);}
else{rec.set("required",true);}}}.$(this));rhbox.addSpace();var upButton=new DlButton({parent:rhbox,label:"Up"});upButton.addEventListener("onClick",function(){var array=swApp.emsqSelectionModel.getArray();if(!array||array.length===0){alert("You must first select a question to move up.");return;}
if(array.length>1){alert("Only one item may be moved up at a time.");return;}
var id=array[0];swApp.emcsUpButton(id);}.$(this));rhbox.addSpace();var downButton=new DlButton({parent:rhbox,label:"Down"});downButton.addEventListener("onClick",function(){var array=swApp.emsqSelectionModel.getArray();if(!array||array.length===0){alert("You must first select a question to move down.");return;}
if(array.length>1){alert("Only one item may be moved down at a time.");return;}
var id=array[0];swApp.emcsDownButton(id);}.$(this));rhbox.addSpace();rhbox.addSeparator();rhbox.addSpace();var stopUsingButton=new DlButton({parent:rhbox,label:"Stop Using"});stopUsingButton.addEventListener("onClick",function(){var array=swApp.emsqSelectionModel.getArray();if(!array||array.length===0){alert("You must first select a question to stop using.");return;}
for(var i=0;i<array.length;++i){var id=array[i];swApp.emcsStopUsingButton(id);}}.$(this));rightLayout.packWidget(rthbox,{pos:"top",fill:30});rightLayout.packWidget(rhbox,{pos:"bottom",fill:30});rightLayout.packWidget(this.emsqRightGrid,{pos:"left",fill:"*"});layout.packWidget(titleBox,{pos:"top",fill:20});layout.packWidget(left,{pos:"left",fill:"40%",after:10});layout.packWidget(right,{pos:"right",fill:"*"});this.refreshCreateSurvey();this.rightNotebookEM.showPane(this.EM_DEF_CREATE_SURVEY);}catch(ex){swApp.log("emCreateSurvey() failed:"+ex);}};SWApp.prototype.emcsStopUsingButton=function(id){this.emRSurveyCache.remove(id);var itemId=getItemID(this.swEventComp);var item=swApp.syncSWorld.itemM[itemId];if(!item){alert("Could not find item.");return;}};SWApp.prototype.emcsDownButton=function(id){var ids=this.emsqRightGrid._records.array;var newIDs=[];var found=false;for(var i=0;i<ids.length;++i){var existID=ids[i];if(existID!=id){newIDs.push(existID);continue;}
if(i+1<ids.length){++i;newIDs.push(ids[i]);}
newIDs.push(id);}
this.emsqRightGrid.resetIDS(newIDs);this.emsqRightGrid.displayPage(0);};SWApp.prototype.emcsUpButton=function(id){var ids=this.emsqRightGrid._records.array;var newIDs=[];var found=false;for(var i=0;i<ids.length;++i){if(i+1<ids.length){if(ids[i+1]==id){newIDs.push(id);newIDs.push(ids[i]);++i;continue;}}
var existID=ids[i];newIDs.push(existID);}
this.emsqRightGrid.resetIDS(newIDs);this.emsqRightGrid.displayPage(0);};SWApp.prototype.refreshCreateSurvey=function(){var rIds=this.emRSurveyCache.getAllIds();this.emRSurveyCache.remove(rIds);var swuser=swApp.syncSWorld.swemuserM[swApp.syncSWorld.userSettingsDTO.swuserid];if(!swuser){return;}
var surveyM=swuser["survey-map"];if(!surveyM){return;}
var ids=this.emAllSurveyCache.getAllIds();if(ids.length>0){this.emAllSurveyCache.remove(ids);}
var survey=null;for(var surveyKey in surveyM){if(surveyM.hasOwnProperty(surveyKey)){survey=Dynarch.makeCopy(surveyM[surveyKey]);survey.id=surveyKey;if(!survey.question){survey.question=survey.id;}
this.emAllSurveyCache.insert(new DlRecord({data:survey}));}}
var itemId=getItemID(this.swEventComp);var item=swApp.syncSWorld.itemM[itemId];var surveyIdRequiredL=item["survey-ids"];if(surveyIdRequiredL&&surveyIdRequiredL.length>0){var surveyIds=[];var i;for(i=0;i<surveyIdRequiredL.length;++i){surveyIds.push(surveyIdRequiredL[i]);++i;}
if(surveyIds.length>0){this.emRSurveyCache.remove(surveyIds);}
for(i=0;i<surveyIdRequiredL.length;++i){var surveyId=surveyIdRequiredL[i];survey=surveyM[surveyId];if(!survey){continue;}
var cloneSurvey=Dynarch.makeCopy(survey);cloneSurvey.id=surveyId;++i;var required=surveyIdRequiredL[i];cloneSurvey.required=required;if(typeof cloneSurvey.required=="undefined"||cloneSurvey.required===null){cloneSurvey.required=false;}
if(!cloneSurvey.question){cloneSurvey.question=surveyId;}
this.emRSurveyCache.insert(new DlRecord({data:cloneSurvey}));}}};SWApp.prototype.saveItemProperties=function(item){var ids=this.emsqRightGrid._records.array;var idRequiredL=[];for(var i=0;i<ids.length;++i){var id=ids[i];idRequiredL.push(id);var rec=this.emRSurveyCache.get(id);if(rec.get("required")){idRequiredL.push(true);}
else{idRequiredL.push(false);}}
item["survey-ids"]=idRequiredL;};SWApp.prototype.getInvoiceColumns=function(){var columns=[{id:"label",label:"Question",fill:true},{id:"order",label:"Order",width:40}];return columns;};SWApp.prototype.getInvoiceQuestionsIds=function(data){var result=[];for(var i=0;i<data.length;++i){result.push(data[i].id);}
return result;};SWApp.prototype.emEditInvoice=function(swEvent,invoiceId,button){this.emEditSwEvent=swEvent;this.emEditInvoiceId=invoiceId;this.emEditInvoiceButton=button;var children=this.emContainerREditInvoice.children();if(children&&children.length>0){this.emRefreshInvoice(swEvent,invoiceId,button);return;}
var layout=new DlLayout({parent:this.emContainerREditInvoice,outerSpace:10});var contSave=function(){var onSuccess=function(response){var invoice;if(response.luid){invoice=swApp.syncSWorld.invoiceM[response.luid];}
else{invoice=swApp.syncSWorld.invoiceM[response.id];}
var brandNew=true;if(invoice.id){brandNew=false;}
swMerge(invoice,response);var createdItem;if(brandNew){createdItem=swApp.createEMItem(swApp.invoicesTreeItem,"Invoices",invoice.label,invoice.id,swApp.emGroup);delete swApp.syncSWorld.invoiceM[response.luid];swApp.syncSWorld.invoiceM[invoice.id]=invoice;alert("Invoice created.");}
else{alert("Invoice updated.");}
if(this.emEditInvoiceButton){this.emEditInvoiceButton.label(invoice.label);}
if(createdItem){try{var g=swApp.emGroup.getByValue(invoice.id);g.checked(true);}catch(ex){swApp.log("failed to select invoice:"+invoice.id+". Reason:"+ex);}}
else{swApp.syncSWorld.saveInvoiceM();}};var onFail=function(response){swApp.log("onFail:"+DlJSON.encode(response));};var invoice=swApp.syncSWorld.invoiceM[this.emEditInvoiceId];invoice.em=true;invoice.luid=this.emEditInvoiceId;if(!invoice.id){invoice.command="createInvoice";}
else{invoice.command="updateInvoice";}
swApp.syncSWorld.sendRequest(invoice,null,onSuccess.$(this),onFail);};var topHbox=new DlHbox({});var back=new DlButton({label:swApp.i18n("Back"),parent:topHbox});back.addEventListener("onClick",function(){this.leftNotebook.showPane(this.CALENDAR_PAGE);this.toolbarNotebook.showPane(this.TOOLBAR_CALENDAR_PAGE);this.toolbarNotebook.display(true);this.rightNotebook.showPane(this.CAL_EDIT_PAGE);}.$(this));topHbox.addSpace();this.ciSaveButton=new DlButton({parent:topHbox,label:swApp.i18n("Save")});this.ciSaveButton.addEventListener("onClick",function(){var editedValues=this.getInvoiceValues();if(!editedValues){return;}
if(editedValues.label.length===0){alert("You must specify the label.");return;}
var existingInvoice;var invoiceM=swApp.syncSWorld.invoiceM;for(var invoiceId in invoiceM){if(invoiceM.hasOwnProperty(invoiceId)){if(invoiceId==this.emEditInvoiceId){continue;}
existingInvoice=invoiceM[invoiceId];if(existingInvoice.label==editedValues.label){alert("This label is not unique:"+editedValues.label);return;}}}
existingInvoice=invoiceM[this.emEditInvoiceId];if(existingInvoice){editedValues.id=existingInvoice.id;editedValues.version=existingInvoice.version;}
invoiceM[this.emEditInvoiceId]=editedValues;swApp.syncSWorld.saveInvoiceM(contSave.$(this));}.$(this));topHbox.addSpace();topHbox.addSeparator();topHbox.addSpace();this.ciDeleteButton=new DlButton({parent:topHbox,label:swApp.i18n("Delete")});this.ciDeleteButton.addEventListener("onClick",function(){swApp.log("delete invoice id:"+swApp.emEditInvoiceId);var invoiceM=swApp.syncSWorld.invoiceM;var inv=invoiceM[swApp.emEditInvoiceId];if(inv.brandNew||!inv.id||inv.id.indexOf("luid")===0){delete invoiceM[swApp.emEditInvoiceId];var button=swApp.emGroup.getSelected()[0];var treeItem=button.getParent();var parent=treeItem.getParent();parent.removeWidget(treeItem);try{var g=swApp.emGroup.getByValue("InvoicesCreate");g.checked(true);}catch(ex){swApp.log("failed to select invoice:"+"Invoices -> Create");}
swApp.log("saveInvoiceM()2");swApp.syncSWorld.saveInvoiceM();return;}
swApp.log("saveInvoiceM()1");var onFail=function(response){alert("Failed to remove the invoice on the server.");};var onSuccess=function(response){if(!response||!response.success||response.success!="true"){onFail(response);return;}
delete invoiceM[swApp.emEditInvoiceId];var button=swApp.emGroup.getSelected()[0];var treeItem=button.getParent();var parent=treeItem.getParent();parent.removeWidget(treeItem);alert("Successfully removed the invoice on the server.");try{var g=swApp.emGroup.getByValue("InvoicesCreate");g.checked(true);swApp.syncSWorld.saveInvoiceM();}catch(ex){swApp.log("failed to select invoice:"+"Invoices -> Create");}};var request={};request.em=true;request.command="removeInvoice";request.id=swApp.emEditInvoiceId;swApp.syncSWorld.sendRequest(request,null,onSuccess,onFail);}.$(this));if(this.debug){topHbox.addSpace();topHbox.addSeparator();topHbox.addSpace();this.ciDebugButton=new DlButton({parent:topHbox,label:swApp.i18n("Debug")});this.ciDebugButton.addEventListener("onClick",function(){swApp.log("invoice:"+DlJSON.encode(swApp.getInvoiceValues()));}.$(this));}
topHbox.addFiller();var left=new DlContainer({});this.emciLfg=new DlFieldGrid({parent:left});this.emInvoiceLabelE=new DlEntry({size:28});this.emciLfg.addField({name:"label",label:"<b>Label:</b>",widget:this.emInvoiceLabelE});var descE=new DlEntry({size:28});this.emciLfg.addField({name:"description",label:"<b>Description:</b>",widget:descE});var value="";this.emLastModified=new DlLabel({label:value});this.emciLfg.addField({name:"lastModified",label:"<b>Last Modified:</b>",widget:this.emLastModified});var priceValidator=new DlValidator(DlValidator.Price,swApp.locale.groupingSeparator,swApp.locale.monetaryDecimalSeparator,swApp.locale.currencySymbol);this.emPrice=new DlEntry({className:"EMEntryRight",value:"0.00",validators:[priceValidator]});this.emciLfg.addField({name:"price",label:"<b>Price:</b>",widget:this.emPrice});var corpHbox=new DlHbox({});this.isSellerCanadian=new DlCheckbox({parent:corpHbox,label:"",checked:false});this.isSellerCanadian.addEventListener("onChange",function(){if(this.checked()){swApp.tax1InvEntry.display(false);swApp.tax1InvPercent.display(false);swApp.tax2InvEntry.display(false);swApp.tax2InvPercent.display(false);swApp.tax1Handled4U.display(true);swApp.tax2Handled4U.display(true);}
else{swApp.tax1InvEntry.display(true);swApp.tax1InvPercent.display(true);swApp.tax2InvEntry.display(true);swApp.tax2InvPercent.display(true);swApp.tax1Handled4U.display(false);swApp.tax2Handled4U.display(false);}});corpHbox.addSpace();var taxValidator=new DlValidator(DlValidator.Number,0,99,false);var tax1Hbox=new DlHbox({});var tax1Name=new DlLabel({parent:tax1Hbox,label:"Name:"});this.tax1InvEntry=new DlEntry({parent:tax1Hbox});tax1Hbox.addSpace();this.tax1InvPercent=new DlEntry({parent:tax1Hbox,className:"EMEntryRight",value:"0",validators:[taxValidator],size:4});tax1Hbox.addSpace();var tax1Label=new DlLabel({parent:tax1Hbox,label:swApp.locale.percentSign});tax1Hbox.addSpace();this.tax1Handled4U=new DlLabel({parent:tax1Hbox,label:"(Handled for you.)"});this.tax1Handled4U.display(false);this.emciLfg.addField({name:"tax1",label:"<b>Tax 1:</b>",widget:tax1Hbox});var tax2Hbox=new DlHbox({});var tax2Name=new DlLabel({parent:tax2Hbox,label:"Name:"});this.tax2InvEntry=new DlEntry({parent:tax2Hbox});tax2Hbox.addSpace();this.tax2InvPercent=new DlEntry({parent:tax2Hbox,className:"EMEntryRight",value:"0",validators:[taxValidator],size:4});tax2Hbox.addSpace();var tax2Label=new DlLabel({parent:tax2Hbox,label:swApp.locale.percentSign});tax2Hbox.addSpace();this.tax2Handled4U=new DlLabel({parent:tax2Hbox,label:"(Handled for you.)"});this.tax2Handled4U.display(false);this.emciLfg.addField({name:"tax2",label:"<b>Tax 2:</b>",widget:tax2Hbox});var swEventCopy=swEvent.lightClone();var now=new Date();swEventCopy._data.syncSWorldCalComp.startYear=now.getFullYear();swEventCopy._data.syncSWorldCalComp.startMonth=now.getMonth()+1;swEventCopy._data.syncSWorldCalComp.startDayOfMonth=now.getDate();swEventCopy._data.syncSWorldCalComp.startHourOfDay=now.getHours();swEventCopy._data.syncSWorldCalComp.startMinute=now.getMinutes();swEventCopy._data.syncSWorldCalComp.startSecond=now.getSeconds();this.emStartTime=new SwDateSelect({swEvent:swEventCopy});this.emciLfg.addField({name:"startTime",label:"<b>Sale Starts:</b>",widget:this.emStartTime});this.emStartTime.refreshView(swEventCopy,true);this.chooseAvailability=new DlHbox({});this.emEndAvailabilityGroup=DlRadioGroup.get();var r1=new DlRadioButton({parent:this.chooseAvailability,label:"By Date",value:"By Date",checked:false,group:this.emEndAvailabilityGroup});var r2=new DlRadioButton({parent:this.chooseAvailability,label:"Before Event Start",value:"Before Event Start",checked:true,group:this.emEndAvailabilityGroup});this.emEndAvailabilityGroup.addEventListener("onChange",function(){var value=this.emEndAvailabilityGroup.getValue()[0];if(value=="Before Event Start"){this.emEndTime.display(false);this.emEndBeforeTime.display(true);this.emEndBeforeTimeRet.label.display(true);this.emEndBeforeTimeRet.entry.display(true);this.emEndTimeRet.label.display(false);this.emEndTimeRet.entry.display(false);}
else{this.emEndTime.display(true);this.emEndBeforeTime.display(false);this.emEndBeforeTimeRet.label.display(false);this.emEndBeforeTimeRet.entry.display(false);this.emEndTimeRet.label.display(true);this.emEndTimeRet.entry.display(true);}}.$(this));this.emciLfg.addField({name:"Choose Availability",label:"<b>Sale Ends:</b>",widget:this.chooseAvailability});var swEventEndCopy=swEvent.lightClone();this.emEndTime=new SwDateSelect({swEvent:swEventEndCopy});this.emEndTimeRet={};this.emciLfg.addField({name:"endByDate",label:"<b>Sale Ends By Date:</b>",widget:this.emEndTime},null,this.emEndTimeRet);this.emEndTime.refreshView(swEventEndCopy,true);this.emEndTime.display(false);var swEventEndBeforeCopy=swEvent.lightClone();this.emEndBeforeTime=new SwDHMSelect({swEvent:swEventEndBeforeCopy});this.emEndBeforeTimeRet={};this.emciLfg.addField({name:"endBeforeStart",label:"<b>Sale Ends Before<br/>Event Start:</b>",widget:this.emEndBeforeTime},null,this.emEndBeforeTimeRet);this.emEndBeforeTime.refreshView(swEventEndBeforeCopy,true);this.splitPaymentsCB=new DlCheckbox({checked:false});this.splitPaymentsCB.addEventListener("onChange",function(){if(this.splitPaymentsCB.checked()){this.emSwSplitPaymentsRet.label.display(true);this.emSwSplitPaymentsRet.entry.display(true);}
else{this.emSwSplitPaymentsRet.label.display(false);this.emSwSplitPaymentsRet.entry.display(false);}}.$(this));var invoice=swApp.syncSWorld.invoiceM[invoiceId];this.emAddRemoveCB=function(formattedPrice){this.emSwSplitPaymentsRet.label.label("<b>Payments of: "+
formattedPrice+"</b>");};this.emSwSplitPayments=new SwSplitPayments({priceEntry:this.emPrice,invoice:invoice,addRemoveCB:this.emAddRemoveCB.$(this)});this.emSwSplitPaymentsRet={};this.emciLfg.addField({name:"notUsed",label:"<b>Payments of: "+"tbd"+"</b>",widget:this.emSwSplitPayments},null,this.emSwSplitPaymentsRet);this.emSwSplitPayments.refreshView(invoice);this.emSwSplitPaymentsRet.label.display(false);this.emSwSplitPaymentsRet.entry.display(false);var right=new DlContainer({});this.emciRfg=new DlFieldGrid({parent:right});this.invStatusLabel=new DlLabel({});this.emciRfg.addField({name:"status",label:"<b>Status:</b>",widget:this.invStatusLabel});this.emFeeGroup=DlRadioGroup.get();this.feeAbsorb=new DlRadioButton({label:"",checked:false,group:this.emFeeGroup});this.emciRfg.addField({name:"fee-absorb",label:"<b>Absorb the Fee:</b>",widget:this.feeAbsorb});this.feePassOnToCust=new DlRadioButton({label:"",checked:true,group:this.emFeeGroup});this.emciRfg.addField({name:"fee-pass-on-to-customer",label:"<b>Customer Pays Fee:</b>",widget:this.feePassOnToCust});var qaHbox=new DlHbox({});qaHbox.getValue=function(){return swApp.spinQuantityAvailable.getValue();};this.spinQuantityAvailable=new DlSpinner({parent:qaHbox,minVal:0});qaHbox.addSpace();var tmp=new DlLabel({parent:qaHbox,label:"(0 = unlimited)"});this.emciRfg.addField({name:"quantity-available",label:"<b>Quantity Available:</b>",widget:qaHbox});this.spinQuantityAvailable.addEventListener("onSpin",function(){var val=this.spinQuantityAvailable.getValue();if(val=="0"){if(this.waitingListEnabledCB.checked()){alert("Since there is an unlimited quantity available\nthere is no need for a waiting list.");this.waitingListEnabledCB.checked(false);}}}.$(this));this.imHbox=new DlHbox({});this.imHbox.getValue=function(){return swApp.maxItemsPerCust.getValue();};this.maxItemsPerCust=new DlSpinner({parent:this.imHbox,minVal:0});this.imHbox.addSpace();tmp=new DlLabel({parent:this.imHbox,label:"(0 = unlimited)"});this.emciRfg.addField({name:"max-items-per-person",label:"<b>Max Per Customer:</b>",widget:this.imHbox});this.notAnEventCB=new DlCheckbox({label:"",checked:true});this.emciRfg.addField({name:"not-an-event",label:"<b>Not An Event:</b>",widget:this.notAnEventCB});var wleHbox=new DlHbox({});this.waitingListEnabledCB=new DlCheckbox({parent:wleHbox,label:"",checked:true});var wleLabel=new DlLabel({parent:wleHbox,label:"<a href='#'>Learn more...</a>"});wleLabel.addEventListener("onClick",function(){var dlg=new DlDialog({title:"Waiting List Information",quitBtn:"destroy",resizable:true});var wleLayout=new DlLayout({parent:dlg});wleLayout.setSize({x:512,y:220});swApp.emLearnMoreWL(wleLayout);dlg.centerOnParent();dlg.show();}.$(this));this.emciRfg.addField({name:"waitinglist-enabled",label:"<b>Waiting List Enabled:</b>",widget:wleHbox});this.waitingListEnabledCB.addEventListener("onChange",function(){if(this.waitingListEnabledCB.checked()){var maxAvailable=this.spinQuantityAvailable.getValue();if(maxAvailable=="0"){alert("Since there is an unlimited quantity available\nthere is no need for a waiting list.");this.waitingListEnabledCB.checked(false);return;}}
else{}}.$(this));this.emWLGroup=DlRadioGroup.get();this.waitingListFirstResponderWinsCBRet={};this.waitingListFirstResponderWinsCB=new DlRadioButton({label:"",checked:true,group:this.emWLGroup});this.emciRfg.addField({name:"waitinglist-first-responder-wins",label:"<b>First Responder Wins (Auto-Notify):</b>",widget:this.waitingListFirstResponderWinsCB},null,this.waitingListFirstResponderWinsCBRet);this.waitingListFirstResponderWinsCBRet.label.display(false);this.waitingListFirstResponderWinsCBRet.entry.display(false);var ttrHbox=new DlHbox({});this.waitingListTimeToRespondCBRet={};this.waitingListTimeToRespondCB=new DlRadioButton({parent:ttrHbox,label:"",checked:false,group:this.emWLGroup});var swEventTTR=swEvent.lightClone();this.timeToRespondDHM=new SwDHMSelect({parent:ttrHbox,swEvent:swEventTTR});this.emciRfg.addField({name:"waitinglist-time-to-respond",label:"<b>Time To Respond (Auto-Notify):</b>",widget:ttrHbox},null,this.waitingListTimeToRespondCBRet);this.waitingListTimeToRespondCBRet.label.display(false);this.waitingListTimeToRespondCBRet.entry.display(false);this.invTab=new DlTabs({});var bLayout=new DlLayout({scroll:true});layout.packWidget(topHbox,{pos:"top",after:10});layout.packWidget(this.invTab,{pos:"bottom",fill:"*"});bLayout.packWidget(left,{pos:"left",fill:"50%"});bLayout.packWidget(right,{pos:"right",fill:"*"});var invoiceIds;if(invoiceId){invoiceIds=[invoiceId];}
this.invTab.addTab(bLayout,"Properties");this.invTab.showPane(0);this.emRefreshInvoice(swEvent,invoiceId);};SWApp.prototype.emRefreshInvoice=function(swEvent,invoiceId){swApp.log("invoiceId:"+invoiceId);var children=this.emContainerREditInvoice.children();if(!children||children.length===0){this.emEditInvoice(swEvent,invoiceId,false);return;}
this.rightNotebookEM.showPane(this.EM_DEF_CREATE_INVOICE);this.emEditSwEvent=swEvent;this.emEditInvoiceId=invoiceId;if(!swApp.syncSWorld.invoiceM){swApp.syncSWorld.invoiceM={};}
var invoice;if(invoiceId){invoice=swApp.syncSWorld.invoiceM[invoiceId];}
if(!invoice){invoice={};invoice.brandNew=true;invoice.luid=swApp.syncSWorld.getNextLUID();invoice.label="";invoice.description="";invoice.status="";invoice.price="";invoice["tax1-name"]="";invoice["tax1-percent"]=0;invoice["tax2-name"]="";invoice["tax2-percent"]=0;invoice["end-before-start"]=0;invoice["payment-option-pay-at-door"]=false;invoice["payment-option-cheque"]=false;invoice["quantity-available"]=0;invoice["fee-pass-on-to-customer"]=true;invoice["isa-donation"]=false;invoice["max-items-per-person"]=0;invoice["waitinglist-enabled"]=false;invoice["waitinglist-auto-add"]=false;invoice["waitinglist-auto-notify"]=false;invoice["waitinglist-time-to-respond"]=false;invoice["waitinglist-first-responder-wins"]=false;invoice["waitinglist-auto-purchase-allowed"]=false;this.emEditInvoiceId=invoice.luid;}
this.emciLfg.setValue({label:invoice.label});this.emciLfg.setValue({description:invoice.description});var lastModified;if(invoice.brandNew){lastModified="N/A";this.emLastModified.label(lastModified);}
else{if(!invoice["last-modified"]){this.emLastModified.label("N/A");}
else{lastModified=new Date(invoice["last-modified"]);swApp.log("utc last-modified:"+lastModified.toUTCString());var lmDate=swApp.convertGMT2Date(lastModified.getUTCFullYear(),lastModified.getUTCMonth()+1,lastModified.getUTCDate(),lastModified.getUTCHours(),lastModified.getUTCMinutes(),lastModified.getUTCSeconds());var dateFormat=swApp.getDateFormat();var useAmPm=swApp.syncSWorld.userSettingsDTO.ampm;var formatLM;if(useAmPm){formatLM=lmDate.print(dateFormat+" %l:%M %p");}
else{formatLM=lmDate.print(dateFormat+" %H:%M");}
this.emLastModified.label(formatLM);}}
if(invoice.price){this.emPrice.setValue(formatPrice(invoice.price));}
else{this.emPrice.setValue("0.00");}
if(invoice["tax1-name"]){this.tax1InvEntry.setValue(invoice["tax1-name"]);}
else{this.tax1InvEntry.setValue("");}
if(invoice["tax1-percent"]){this.tax1InvPercent.setValue(invoice["tax1-percent"]);}
else{this.tax1InvPercent.setValue("0");}
if(invoice["tax2-name"]){this.tax2InvEntry.setValue(invoice["tax2-name"]);}
else{this.tax2InvEntry.setValue("");}
if(invoice["tax2-percent"]){this.tax2InvPercent.setValue(invoice["tax2-percent"]);}
else{this.tax2InvPercent.setValue("0");}
var availableStartTime=new Date();if(invoice.hasOwnProperty("start-time")){var startTime=invoice["start-time"];if(typeof startTime=='number'){availableStartTime=new Date(startTime);}else{setFormattedDateTime(availableStartTime,startTime);}}
var swEventCopy=swEvent.lightClone();swEventCopy._data.syncSWorldCalComp.startYear=availableStartTime.getFullYear();swEventCopy._data.syncSWorldCalComp.startMonth=availableStartTime.getMonth()+1;swEventCopy._data.syncSWorldCalComp.startDayOfMonth=availableStartTime.getDate();swEventCopy._data.syncSWorldCalComp.startHourOfDay=availableStartTime.getHours();swEventCopy._data.syncSWorldCalComp.startMinute=availableStartTime.getMinutes();swEventCopy._data.syncSWorldCalComp.startSecond=availableStartTime.getSeconds();this.emStartTime.refreshView(swEventCopy,true);var durationMinutes;var availableEndTime;var typeEBS=typeof invoice["end-before-start"];if(invoice.hasOwnProperty("end-before-start")&&(invoice["end-before-start"]!=null)){this.emEndAvailabilityGroup.setValue("Before Event Start",true);durationMinutes=invoice["end-before-start"];this.emEndBeforeTime.setDurationMinutes(durationMinutes);availableEndTime=swEvent.getStartMinusMinutes(durationMinutes);}
else if(invoice.hasOwnProperty("end-by-date")&&(invoice["end-by-date"]!==null)){this.emEndBeforeTime.setDurationMinutes(0);this.emEndAvailabilityGroup.setValue("By Date",true);var endByDate=invoice["end-by-date"];if(typeof endByDate=='number'){availableEndTime=new Date(endByDate);}else{setFormattedDateTime(availableEndTime,endByDate);}
swEventCopy=swEvent.lightClone();swEventCopy._data.syncSWorldCalComp.startYear=availableEndTime.getFullYear();swEventCopy._data.syncSWorldCalComp.startMonth=availableEndTime.getMonth()+1;swEventCopy._data.syncSWorldCalComp.startDayOfMonth=availableEndTime.getDate();swEventCopy._data.syncSWorldCalComp.startHourOfDay=availableEndTime.getHours();swEventCopy._data.syncSWorldCalComp.startMinute=availableEndTime.getMinutes();swEventCopy._data.syncSWorldCalComp.startSecond=availableEndTime.getSeconds();this.emEndTime.refreshView(swEventCopy,true);}
else{this.emEndAvailabilityGroup.setValue("Before Event Start",true);durationMinutes=0;this.emEndBeforeTime.setDurationMinutes(durationMinutes);availableEndTime=swEvent.getStartMinusMinutes(durationMinutes);}
this.splitPaymentsCB.checked(false);var splitPayments=invoice["split-payments"];if(splitPayments&&splitPayments.length>0){this.splitPaymentsCB.checked(true);}
this.emSwSplitPayments.refreshView(invoice);var statusLabel;statusLabel=this.getStatusLabel(availableStartTime,availableEndTime);this.invStatusLabel.label(statusLabel);if(invoice.hasOwnProperty("quantity-available")){this.spinQuantityAvailable.setValue(invoice["quantity-available"]);}
else{this.spinQuantityAvailable.setValue(0);}
if(invoice["fee-absorb"]){this.feeAbsorb.checked(true);}
else{this.feePassOnToCust.checked(true);}
this.emciRfg.setValue({feePercentage:invoice["fee-percentage"]});this.emciRfg.setValue({feePerInvoice:invoice["fee-per-invoice"]});this.emciRfg.setValue({feePerInvoiceMax:invoice["fee-per-invoice-max"]});if(invoice["max-items-per-person"]){this.maxItemsPerCust.setValue(invoice["max-items-per-person"]);}
else{this.maxItemsPerCust.setValue(0);}
this.notAnEventCB.checked(invoice["not-an-event"]);this.waitingListEnabledCB.checked(invoice["waitinglist-enabled"]);var maxAvailable=this.spinQuantityAvailable.getValue();if(maxAvailable===0){this.waitingListEnabledCB.checked(false);}};SWApp.prototype.getStatusLabel=function(availableStartTime,availableEndTime){var ret="";var now=new Date();var nowTime=now.getTime();if(nowTime<availableStartTime.getTime()){ret="Not Yet For Sale";}
else if(nowTime>availableEndTime.getTime()){ret="Sale Over";}
else{ret="On Sale";}
return"<b>"+ret+"</b>";};SWApp.prototype.getInvoiceValues=function(){var values=this.emciLfg.getValues();var valuesR=this.emciRfg.getValues();swMerge(values,valuesR);delete values.lastModified;delete values.status;values["start-time"]=this.emStartTime.getEMStart().getTime();var value=this.emEndAvailabilityGroup.getValue()[0];if(value=="Before Event Start"){values["end-before-start"]=this.emEndBeforeTime.getDurationMinutes();}
else{values["end-by-date"]=this.emEndTime.getEMStart().getTime();}
values["quantity-available"]=parseInt(values["quantity-available"],10);values["max-items-per-person"]=parseInt(values["max-items-per-person"],10);values.price=parsePriceInt(values.price);values["canadian-corp"]=this.isSellerCanadian.checked();values["seller-region"]="";values["tax1-name"]=this.tax1InvEntry.getValue().toUpperCase().trim();values["tax2-name"]=this.tax2InvEntry.getValue().toUpperCase().trim();values["tax1-percent"]=parseFloat(this.tax1InvPercent.getValue());values["tax2-percent"]=parseFloat(this.tax2InvPercent.getValue());if(this.tax1InvPercent.getValue()!="0.00"&&this.tax1InvPercent.getValue()!="0"&&values["tax1-name"].length===0){alert("Tax 1 has a percentage but no name.");return;}
if(this.tax2InvPercent.getValue()!="0.00"&&this.tax2InvPercent.getValue()!="0"&&values["tax2-name"].length===0){alert("Tax 2 has a percentage but no name.");return;}
var spValues=this.emSwSplitPayments.getValues();swMerge(values,spValues);if(this.waitingListEnabledCB.checked()){values["waitinglist-enabled"]=true;}
else{values["waitinglist-enabled"]=false;}
if(this.waitingListTimeToRespondCB.checked()){var durationMinutes=this.timeToRespondDHM.getDurationMinutes();values["waitinglist-time-to-respond"]=durationMinutes;}
else{delete values["waitinglist-time-to-respond"];}
return values;};SWApp.prototype.emCustomerAdd=function(swEventComp){this.swEventComp=swEventComp;var itemId=getItemID(this.swEventComp);var item=swApp.syncSWorld.itemM[itemId];if(!item){alert("You must first save the item.");return;}
var swuser=swApp.syncSWorld.swemuserM[swApp.syncSWorld.userSettingsDTO.swuserid];if(!swuser){alert("Missing swuser.");return;}
var invoiceIds=item["invoice-ids"];if(!invoiceIds||invoiceIds.length==0){alert("You must first specify the invoice(s) in Event -> Properties.");return;}
var children=this.emContainerRCustomerAdd.children();this.emContainerRCustomerAdd.destroyChildWidgets();this.emCAVbox=new DlVbox({parent:this.emContainerRCustomerAdd,borderSpacing:15});var title="<h1>Add "+item["customer-is-a"]+" Manually</h1>";this.emPurchase=new EmPurchase({parent:this.emCAVbox,title:title,item:item});var lfg=new DlFieldGrid({parent:this.emCAVbox});var paymentOptions=swGetPaymentOptions();this.paymentSelect=new DlRadioSelect({options:paymentOptions,value:"None"});lfg.addField({name:"paymentType",label:"Payment Type:",widget:this.paymentSelect});this.textareaNote=new DlEntry({type:"textarea",size:60});lfg.addField({name:"notes",label:"Notes:",widget:this.textareaNote});var plural=item.label;if(plural.charAt(plural.length-1)!="s"){plural+="(s)";}
tmp=new DlButton({parent:this.emCAVbox,label:"Reserve '"+
item.label+"' item(s)."});tmp.addEventListener("onClick",function(){var invoiceM=swApp.syncSWorld.invoiceM;var request={};request.reserveItems={};var paymentType=this.paymentSelect.getValue();var purchaseValues=this.emPurchase.getValues();var totalQuantity=0;var reservationRequired=false;for(var key in purchaseValues){if(purchaseValues.hasOwnProperty(key)){var purchaseValue=purchaseValues[key];if(purchaseValue.quantity===0){continue;}
totalQuantity+=purchaseValue.quantity;if(purchaseValue.price!="0.00"){if(paymentType=="None"){alert("You must select a payment type.");return;}}
if(purchaseValue.reservationRequired){reservationRequired=true;request.reserveItems[key]=purchaseValue;}}}
if(totalQuantity===0){alert("All quantity values are zero.\nPlease increase a quantity and try again.");return;}
var onFail=function(response){alert("The reservation request failed.");};if(reservationRequired){request.em=true;request.command="reserveItems";swApp.syncSWorld.sendRequest(request,null,this.emCustomerAddPart2.$(this),onFail);}
else{this.emCustomerAddPart2();}}.$(this));this.rightNotebookEM.showPane(this.EM_CUST_ADD_PAGE);};SWApp.prototype.emCustomerAddPart2=function(response){var purchaseValues=this.emPurchase.getValues();var itemId=getItemID(this.swEventComp);var item=swApp.syncSWorld.itemM[itemId];if(!item.hasOwnProperty("item-id")){alert("You must publish the item first.");return;}
var now=new Date();var systemMS=now.getTime();var expiryTTLSeconds=900;var expiryMS;var tmp;var errorMsgs=[];var invoiceId;if(response){if(response.hasOwnProperty("failed")){var msg="Failed to reserve:\n"+response.failed;alert(msg);return;}
for(invoiceId in response){if(response.hasOwnProperty(invoiceId)){var reservationResult=response[invoiceId];if(reservationResult.success!="true"){var reason="";if(reservationResult.failed){reason=reservationResult.failed;}
if(reservationResult["waiting-list"]){reason+=" You have been added to the waiting list.";}
errorMsgs.push(reason);continue;}
expiryTTLSeconds=reservationResult["expiry-ttl-seconds"];expiryMS=systemMS+(expiryTTLSeconds*1000);}}}
if(errorMsgs.length>0){var msg="Failed to reserve a '"+item.label+"':\n";msg+=errorMsgs.join("\n");alert(msg);return;}
this.emCAVbox.display(false);this.emCAFVbox=new DlVbox({parent:this.emContainerRCustomerAdd,borderSpacing:15});var summaryTitle="Purchase Summary";this.emPurchaseSummary=new EmPurchase({parent:this.emCAFVbox,title:summaryTitle,item:item,purchaseValues:purchaseValues});if(response){tmp=new DlLabel({parent:this.emCAFVbox,label:"You have been granted "+createMMSS(expiryMS)+" to complete this registration."});var dlHbox=new DlHbox({parent:this.emCAFVbox});tmp=new DlLabel({parent:dlHbox,label:"Time Remaining: "});dlHbox.addSpace();this.timeRemaining=new DlLabel({parent:dlHbox,label:"15:00"});emStartTimeRemaining(this.timeRemaining,expiryMS);}
tmp=new DlLabel({parent:this.emCAFVbox,label:"<h2>Buyer</h2>"});this.emBuyer=new EmPerson({parent:this.emCAFVbox,first:"First Name: *",last:"Last Name: *",email:"Email Address: *"});this.emItemRecipientL=[];var count=1;var invoiceM=swApp.syncSWorld.invoiceM;var invoice;var itemRecipient;for(var key in purchaseValues){if(purchaseValues.hasOwnProperty(key)){var purchaseValue=purchaseValues[key];if(purchaseValue.quantity==0){continue;}
invoiceId=purchaseValue["invoice-id"];for(var j=0;j<purchaseValue.quantity;++j){itemRecipient={};itemRecipient["invoice-id"]=invoiceId;itemRecipient["item-id"]=itemId;itemRecipient.price=purchaseValue.price;invoice=invoiceM[invoiceId];if(purchaseValues.length==1){tmp=new DlLabel({parent:this.emCAFVbox,label:"<h3>"+
count+". "+item["customer-is-a"]+"</h3>"});}
else{tmp=new DlLabel({parent:this.emCAFVbox,label:"<h3>"+
count+". "+item["customer-is-a"]+" ("+
invoice.label+")</h3>"});}
itemRecipient.emPerson=new EmPerson({parent:this.emCAFVbox,first:"First Name: *",last:"Last Name: *",email:"Email Address: *",emBuyer:this.emBuyer});if(response){var reserveResponse=response[j];if(reserveResponse){itemRecipient["reservation-id"]=reserveResponse["reservation-id"];}}
itemRecipient["recipient-index"]=j;this.emItemRecipientL.push(itemRecipient);++count;}}}
this.emCAFVbox.addSpace();this.emSendConfirmPurchaseCB=new DlCheckbox({parent:this.emCAFVbox,label:"<b>Optional:</b> send purchase confirmation email to buyer."});var fpHbox=new DlHbox({parent:this.emCAFVbox});this.finalizePurchaseB=new DlButton({parent:fpHbox,label:"Finalize Purchase ("+this.paymentSelect.getValue()+")"});this.finalizePurchaseB.addEventListener("onClick",function(){if(this.timeRemaining){if(isReservationExpired(this.timeRemaining.label())){alert("Your item reservations have expired.\nPlease cancel this purchase and try again.");return;}}
clearTimeout(swApp.emTimeRemainingTimerID);if(this.timeRemaining){this.timeRemaining.expiryMS=0;this.timeRemaining.label("Done.");}
var paymentType=this.paymentSelect.getValue();if(paymentType=="CreditCard"){this.emCAFVbox.display(false);this.emCAPVbox=new DlVbox({parent:this.emContainerRCustomerAdd,borderSpacing:15});var summaryPurchaseValues=this.emPurchaseSummary._purchaseValues;this.swCC=new SwCC({parent:this.emCAPVbox,purchaseValues:summaryPurchaseValues,totalCents:this.emPurchaseSummary.getTotalCents(),firstName:swApp.emBuyer.getFirst(),lastName:swApp.emBuyer.getLast(),backButtonCallback:function(){swApp.emCAPVbox.display(false);swApp.emCAFVbox.display(true);}});}
else{var request=swApp.buildPurchaseRequest();request.amt=this.emPurchaseSummary.getTotalCents();var successCallbackCC=function(ccResponse){if(ccResponse.success=="true"){swApp.log("Payment successful.");alert("Payment successful.\nThank you.");}
else{if(ccResponse.failed){alert("Purchase failed:"+ccResponse.failed);}
else{alert("Purchase failed.");}}}
var failCallbackCC=function(ccResponse){if(ccResponse&&ccResponse.failed){alert("Purchase failed:\n"+ccResponse.failed);return;}
else{alert("Purchase failed.");}};this.finalizePurchaseB.disabled(true);this.fpCancel.display(false);swApp.syncSWorld.sendRequest(request,null,successCallbackCC.$(this),failCallbackCC.$(this));}}.$(this));fpHbox.addSpace();this.fpCancel=new DlButton({parent:fpHbox,label:"Cancel"});this.fpCancel.addEventListener("onClick",function(){swApp.emCAVbox.display(true);swApp.emCAFVbox.display(false);}.$(this));};SWApp.prototype.buildPurchaseRequest=function(){var request={};var invalid=swApp.emBuyer.getInvalid();if(invalid){alert("Please use a valid buyer '"+invalid+"'.");return;}
var email=swApp.emBuyer.getEmail();request.recipients={};var recipient;for(var i=0;i<this.emItemRecipientL.length;++i){recipient={};itemRecipient=this.emItemRecipientL[i];var emPerson=itemRecipient.emPerson;invalid=emPerson.getInvalid();if(invalid){alert("The '"+item["customer-is-a"]+"' #"+(i+1)+" has an invalid '"+invalid+"'.");return;}
recipient.index=itemRecipient["recipient-index"];recipient["reservation-id"]=itemRecipient["reservation-id"];recipient.first=emPerson.getFirst();recipient.last=emPerson.getLast();recipient.email=emPerson.getEmail();recipient["invoice-id"]=itemRecipient["invoice-id"];recipient["item-id"]=itemRecipient["item-id"];request.recipients[i]=recipient;}
request.em=true;request.command="purchaseItems";request["payment-type"]=this.paymentSelect.getValue();request.note=this.textareaNote.getValue();request.buyerFirst=swApp.emBuyer.getFirst();request.buyerLast=swApp.emBuyer.getLast();request.buyerEmail=swApp.emBuyer.getEmail();request.sendPurchaseConfirmEmail=this.emSendConfirmPurchaseCB.checked();return request;};SWApp.prototype.refreshCustomerAdd=function(swuser,item){};(function(){var BASE=SwSurvey.inherits(DlLayout);function SwSurvey(args){if(args){D.setDefaults(this,args);this._focusable=true;BASE.constructor.call(this,args);}
else{throw("SwSurvey missing args.");}}
eval(Dynarch.EXPORT("SwSurvey"));D.DEFAULT_ARGS={_swEvent:["swEvent",null],_id:["id",null]};D.createID=function(){var swuserid=swApp.syncSWorld.userSettingsDTO.swuserid;var swuser=swApp.syncSWorld.swemuserM[swuserid];var index=swuserid.indexOf("-");var surveyM=swuser["survey-map"];for(var i=0;i<99999;++i){var id="sid-"+swuserid.substring(index+1)+"-"+i;if(!surveyM||!surveyM.hasOwnProperty(id)){return id;}}};P.initDOM=function(){BASE.initDOM.call(this);this.swInitDOM();};P.swInitDOM=function(){this.left=new DlContainer({});this.fs=new DlFieldGrid({parent:this.left});var qLayout=new DlHbox({});this.qRet={};this.questionE=new DlEntry({parent:qLayout,value:"",size:40,type:"textarea",rows:1});this.fs.addField({label:"<b>Question:</b>",widget:qLayout},null,this.qRet);var typeOptions=[{label:swApp.i18n("Text"),value:"a-text"},{label:swApp.i18n("Text - Globally Unique"),value:"a-text-unique"},{label:swApp.i18n("Text - Globally Unique (fuzzy match)"),value:"a-text-fuzzy1"},{label:swApp.i18n("Binary Picture or Document"),value:"an-image"},{label:swApp.i18n("Checkbox (Yes/No)"),value:"a-checkbox"}];this.typeSelect=new DlRadioSelect({options:typeOptions,value:"a-number"});this.typeSelect.addEventListener("onChange",function(oldVal,newVal){if(oldVal==newVal){return;}
if(newVal=="a-text"||newVal=='a-checkbox'||newVal=="a-text-unique"||newVal=="a-text-fuzzy1"||newVal=="an-image"){this.emChoicesRet.label.display(false);this.emChoicesRet.entry.display(false);this.emAddChoiceRet.label.display(false);this.emAddChoiceRet.entry.display(false);this.emChoiceTitleRet.label.display(false);this.emChoiceTitleRet.entry.display(false);this.emNumValidatorRet.label.display(false);this.emNumValidatorRet.entry.display(false);this.emNumHintRet.label.display(false);this.emNumHintRet.entry.display(false);this.emRadioGroupRet.label.display(false);this.emRadioGroupRet.entry.display(false);}
else if(newVal=="a-radio-buttons"){this.emChoicesRet.label.display(false);this.emChoicesRet.entry.display(false);this.emAddChoiceRet.label.display(false);this.emAddChoiceRet.entry.display(false);this.emChoiceTitleRet.label.display(false);this.emChoiceTitleRet.entry.display(false);this.emNumValidatorRet.label.display(false);this.emNumValidatorRet.entry.display(false);this.emNumHintRet.label.display(false);this.emNumHintRet.entry.display(false);this.emRadioGroupRet.entry.display(true);this.emRadioGroupRet.label.display(true);}
else if(newVal=="a-number"){this.emChoicesRet.label.display(false);this.emChoicesRet.entry.display(false);this.emAddChoiceRet.label.display(false);this.emAddChoiceRet.entry.display(false);this.emChoiceTitleRet.label.display(false);this.emChoiceTitleRet.entry.display(false);this.emNumValidatorRet.label.display(true);this.emNumValidatorRet.entry.display(true);this.emNumHintRet.label.display(true);this.emNumHintRet.entry.display(true);this.emRadioGroupRet.label.display(false);this.emRadioGroupRet.entry.display(false);}
else if(newVal=="a-choice"){this.emChoicesRet.label.display(true);this.emChoicesRet.entry.display(true);this.emAddChoiceRet.label.display(true);this.emAddChoiceRet.entry.display(true);this.emChoiceTitleRet.label.display(true);this.emChoiceTitleRet.entry.display(true);this.emNumValidatorRet.label.display(false);this.emNumValidatorRet.entry.display(false);this.emNumHintRet.label.display(false);this.emNumHintRet.entry.display(false);this.emRadioGroupRet.label.display(false);this.emRadioGroupRet.entry.display(false);}}.$(this));this.fs.addField({name:"type",label:"<b>Answer Type:</b>",widget:this.typeSelect});this.numValHbox=new DlHbox({});var tmp=new DlLabel({parent:this.numValHbox,label:"min:"});this.numValSpinMin=new DlSpinner({parent:this.numValHbox,minVal:0});this.numValHbox.addSpace();tmp=new DlLabel({parent:this.numValHbox,label:"max:"});this.numValSpinMax=new DlSpinner({parent:this.numValHbox,minVal:0});this.emNumValidatorRet={};this.fs.addField({label:" ",widget:this.numValHbox},null,this.emNumValidatorRet);this.emNumHintRet={};this.numHintHbox=new DlHbox({});tmp=new DlLabel({parent:this.numHintHbox,label:"A max of 0 means unlimited."});this.fs.addField({label:" ",widget:this.numHintHbox},null,this.emNumHintRet);this.emRadioGroupRet={};this.emRadioGroupEntry=new DlEntry({size:40,rows:1,value:""});this.fs.addField({name:"radio-group",label:"<b>Radio Group:</b>",widget:this.emRadioGroupEntry},null,this.emRadioGroupRet);this.emChoiceTitleRet={};this.emChoiceEntry=new DlEntry({size:40,rows:1,value:"",type:"textarea"});this.fs.addField({name:"choice-question",label:"<b>Choice Question:</b>",widget:this.emChoiceEntry},null,this.emChoiceTitleRet);var addChoiceC=new DlContainer({});var addChoiceB=new DlButton({parent:addChoiceC,label:"Add Choice"});addChoiceB.addEventListener("onClick",function(){this.addChoice("",1);}.$(this));this.emAddChoiceRet={};this.fs.addField({name:"addChoice",label:" ",widget:addChoiceC},null,this.emAddChoiceRet);this.emAddChoiceVbox=new DlVbox({});this.emChoicesRet={};this.fs.addField({name:"addChoiceBox",label:"<b>Choice/Max Allowed:</b>",widget:this.emAddChoiceVbox},null,this.emChoicesRet);var bottomC=new DlContainer({});var hboxb=new DlHbox({parent:bottomC});hboxb.setAlign("center");var saveButton=new DlButton({parent:hboxb,accessKey:"ALT 's'",label:"<div style='width: 3em'>Save</div>"});saveButton.addEventListener("onClick",function(){this.save();}.$(this));var cancelButton=new DlButton({parent:hboxb,label:"<div style='width: 3em'>Cancel</div>"});cancelButton.addEventListener("onClick",function(){this.parent.destroy();}.$(this));var debugButton=new DlButton({parent:hboxb,label:"<div style='width: 3em'>Debug</div>"});debugButton.addEventListener("onClick",function(){var values=this.getValues();}.$(this));this.packWidget(bottomC,{pos:"bottom",fill:30});this.packWidget(this.left,{pos:"left",fill:"*"});this.typeSelect.setValue("a-text");var locale=null;var userSettingsLocaleKey=swApp.syncSWorld.userSettingsDTO.language;if(swApp.syncSWorld.userSettingsDTO.country&&swApp.syncSWorld.userSettingsDTO.country.length>0){userSettingsLocaleKey+="-"+swApp.syncSWorld.userSettingsDTO.country;}
locale=jsLocaleData[userSettingsLocaleKey];var ampm=locale.ampm[0];this.eventSetup();};P.eventSetup=function(){this.addEventListener("onResize",function(){var thisEl=this.getElement();var div=thisEl.parentNode;var left=strValid(thisEl.style.paddingLeft)?parseInt(thisEl.style.paddingLeft,10):0;var right=strValid(thisEl.style.paddingRight)?parseInt(thisEl.style.paddingRight,10):0;var width=div.offsetWidth-left-right-10;var el=this.qRet.c1.getContentElement();var leftWidth=el.clientWidth;this.questionE.setSize({x:width-leftWidth});}.$(this));};P.addChoice=function(choiceEntry,spinVal){for(i=0;i<this.emAddChoiceVbox._widgets.length;++i){children=this.emAddChoiceVbox._widgets[i]._widgets;var entry=children[0];if(entry.getValue()==choiceEntry){return;}}
var addChoiceHbox=new DlHbox({parent:this.emAddChoiceVbox});var addChoiceEntry=new DlEntry({parent:addChoiceHbox,size:30,type:"textarea",rows:1});addChoiceHbox.addSpace();var addChoiceSpin=new DlSpinner({parent:addChoiceHbox,minVal:0});addChoiceHbox.addSpace();var delChoiceB=new DlButton({parent:addChoiceHbox,label:"Del"});delChoiceB.swParentHbox=addChoiceHbox;delChoiceB.swParentVbox=this.emAddChoiceVbox;delChoiceB.addEventListener("onClick",function(){this.swParentVbox.removeWidget(this.swParentHbox);});addChoiceEntry.setValue(choiceEntry);addChoiceSpin.setValue(spinVal);};P.refreshView=function(surveyId){var swuser=swApp.syncSWorld.swemuserM[swApp.syncSWorld.userSettingsDTO.swuserid];if(!swuser){return;}
var survey=null;var debug1=swuser.hasOwnProperty("survey-map");var surveyM=swuser["survey-map"];if(surveyM){survey=surveyM[surveyId];}
if(!survey){survey={};survey.question="";survey["choice-question"]="";survey["display-order"]=1;this.typeSelect.setValue("a-text");}
else{this.typeSelect.setValue(survey.type);if(survey.type=="a-number"){this.numValSpinMin.setValue(survey.min);this.numValSpinMax.setValue(survey.max);}
else if(survey.type=="a-choice"){var i=0;if(survey.hasOwnProperty("choices")){for(i=0;i<survey.choices.length;++i){var entryVal=survey.choices[i];i+=1;var spinVal=survey.choices[i];this.addChoice(entryVal,spinVal);}}}
else if(survey.type=="a-text"){}
else if(survey.type=="a-text-unique"){}
else if(survey.type=="a-text-fuzzy1"){}
else if(survey.type=="an-image"){}}
this.fs.setValues(survey);this.questionE.setValue(survey.question);};P.save=function(){var swuser=swApp.syncSWorld.swemuserM[swApp.syncSWorld.userSettingsDTO.swuserid];var survey=this.getValues();if(survey.question.length===0){alert("You must pose a question.");return;}
var surveyM=swuser["survey-map"];if(!surveyM){surveyM={};swuser["survey-map"]=surveyM;}
surveyM[this._id]=survey;var saveSwemuserCB=function(){var setSurveyFail=function(response){alert("Set survey failed.");};var setSurveySuccess=function(response){parent.destroy();var record=swApp.emAllSurveyCache.get(survey.id);if(record){swApp.emAllSurveyCache.remove(survey.id);}
record=new DlRecord({data:survey});swApp.emAllSurveyCache.insert(record);record=swApp.emRSurveyCache.get(survey.id);if(record){swApp.emRSurveyCache.remove(survey.id);survey.required=record.get("required");var record2=new DlRecord({data:Dynarch.makeDeepCopy(survey)});swApp.emRSurveyCache.insert(record2);}
alert("Set survey succeeded.");};survey.em=true;survey.command="setSurvey";survey.id=this._id;swApp.syncSWorld.sendRequest(survey,null,setSurveySuccess.$(this),setSurveyFail);};var parent=this.parent;swApp.syncSWorld.saveSwemuserM(saveSwemuserCB.$(this));};P.getValues=function(){var values=this.fs.getValues();delete values.addChoice;delete values.addChoiceBox;var choices=[];var children;var i=0;if(values.type=="a-choice"){for(i=0;i<this.emAddChoiceVbox._widgets.length;++i){children=this.emAddChoiceVbox._widgets[i]._widgets;var entry=children[0];var spin=children[1];choices.push(entry.getValue());choices.push(spin.getValue());}}
values.choices=choices;if(values.type=="a-number"){values.min=this.numValSpinMin.getValue();values.max=this.numValSpinMax.getValue();delete values["choice-question"];delete values.choices;}
if(values.type=="a-text"){delete values["choice-question"];delete values.choices;}
if(values.type=="a-text-unique"){delete values["choice-question"];delete values.choices;}
if(values.type=="a-text-fuzzy1"){delete values["choice-question"];delete values.choices;}
if(values.type=="an-image"){delete values["choice-question"];delete values.choices;}
if(values.type=="a-checkbox"){delete values["choice-question"];delete values.choices;}
if(values.type=="a-radio-buttons"){delete values["choice-question"];delete values.choices;}
values.question=this.questionE.getValue();delete values.originalQuestion;return values;};})();(function(){var BASE=SwLocation.inherits(DlLayout);function SwLocation(args){if(args){D.setDefaults(this,args);this._focusable=true;BASE.constructor.call(this,args);}
else{throw("SwLocation missing args.");}}
eval(Dynarch.EXPORT("SwLocation"));D.DEFAULT_ARGS={_swEvent:["swEvent",null],_id:["id",null],_button:["button",null]};P.initDOM=function(){BASE.initDOM.call(this);this.swInitDOM();};D.createID=function(){var swuserid=swApp.syncSWorld.userSettingsDTO.swuserid;var swuser=swApp.syncSWorld.swemuserM[swuserid];var index=swuserid.indexOf("-");var locationM=swuser["location-map"];for(var i=0;i<999999;++i){var id="lid-"+swuserid.substring(index+1)+"-"+i;if(!locationM.hasOwnProperty(id)){return id;}}};P.swInitDOM=function(){var locale=null;var userSettingsLocaleKey=swApp.syncSWorld.userSettingsDTO.language;if(swApp.syncSWorld.userSettingsDTO.country&&swApp.syncSWorld.userSettingsDTO.country.length>0){userSettingsLocaleKey+="-"+swApp.syncSWorld.userSettingsDTO.country;}
locale=jsLocaleData[userSettingsLocaleKey];var vbox=new DlVbox({borderSpacing:10});this.fs=new DlFieldGrid({parent:vbox});this.label=new DlEntry({size:40});this.fs.addField({name:"label",label:"Label:",widget:this.label});var countryOptions=swGetCountryOptions();this.countrySelect=new DlRadioSelect({options:countryOptions,value:locale.displayCountryUS});this.fs.addField({name:"country",label:"Country:",widget:this.countrySelect});var labelA1=new DlEntry({size:40});this.fs.addField({name:"address1",label:"Address 1:",widget:labelA1});var labelA2=new DlEntry({size:40});this.fs.addField({name:"address2",label:"Address 2:",widget:labelA2});var labelC=new DlEntry({size:40});this.fs.addField({name:"city",label:"City:",widget:labelC});var labelS=new DlEntry({size:40});this.fs.addField({name:"state",label:"State/Province:",widget:labelS});var labelP=new DlEntry({size:40});this.fs.addField({name:"postal",label:"ZIP/Postal:",widget:labelP});var hboxb=new DlHbox({parent:vbox,align:"center"});var saveButton=new DlButton({parent:hboxb,label:"Save"});saveButton.addEventListener("onClick",function(){this.save();}.$(this));hboxb.addSpace();var cancelButton=new DlButton({parent:hboxb,label:"Cancel"});cancelButton.addEventListener("onClick",function(){swApp.emLocationsCreate.expand(false);this.parent.destroy();}.$(this));if(swApp.debug){hboxb.addSpace();hboxb.addSeparator();hboxb.addSpace();var debugButton=new DlButton({parent:hboxb,label:"Debug"});debugButton.addEventListener("onClick",function(){var values=this.getValues();}.$(this));}
this.packWidget(vbox,{pos:"left",fill:"*"});};P.save=function(){var swuser=swApp.syncSWorld.swemuserM[swApp.syncSWorld.userSettingsDTO.swuserid];var location=this.getValues();if(location.label.length===0){alert("You must set a label.");return;}
var locationM=swuser["location-map"];if(!locationM){locationM={};swuser["location-map"]=locationM;}
var parent=this.parent;var callBack=function(){var onSuccess=function(response){swApp.emLocationsCreate.expand(false);alert("Location saved successfully.");parent.destroy();};var onFail=function(response){swApp.emLocationsCreate.expand(false);alert("Failed to save the location.");parent.destroy();};location.em=true;location.command="setLocation";location.id=this._id;swApp.syncSWorld.sendRequest(location,null,onSuccess,onFail);};var creating=true;if(locationM.hasOwnProperty(this._id)){creating=false;}
locationM[this._id]=location;if(creating){createdItem=swApp.createEMItem(swApp.locationsTreeItem,"Locations",location.label,this._id,swApp.emGroup);}
else{this._button.label(location.label);}
swApp.syncSWorld.saveSwemuserM(callBack.$(this));};P.refreshView=function(locationId){var swuser=swApp.syncSWorld.swemuserM[swApp.syncSWorld.userSettingsDTO.swuserid];if(!swuser){return;}
var location=null;var debug1=swuser.hasOwnProperty("location-map");var locationM=swuser["location-map"];if(locationM){location=locationM[locationId];}
if(!location){location={};location.country="";location.address1="";location.address2="";location.city="";location.state="";location.postal="";location["show-google-map"]="";location["show-yahoo-map"]="";location["show-mapquest-map"]="";location["show-bing-map"]="";}
this.fs.setValue({label:location.label});this.countrySelect.setValue(location.country);this.fs.setValue({address1:location.address1});this.fs.setValue({address2:location.address2});this.fs.setValue({city:location.city});this.fs.setValue({state:location.state});this.fs.setValue({postal:location.postal});this.fs.setValue({"show-google-map":location["show-google-map"]});this.fs.setValue({"show-yahoo-map":location["show-yahoo-map"]});this.fs.setValue({"show-mapquest-map":location["show-mapquest-map"]});this.fs.setValue({"show-bing-map":location["show-bing-map"]});};P.getValues=function(){var values=this.fs.getValues();if(values.label.length===0){alert("You must specify a label");return;}
return values;};})();(function(){var BASE=EmPurchase.inherits(DlContainer);function EmPurchase(args){if(args){if(!args.item){throw("EmPurchase missing item arg.");}
D.setDefaults(this,args);this._focusable=true;BASE.constructor.call(this,args);}
else{throw("EmPurchase missing args.");}}
eval(Dynarch.EXPORT("EmPurchase"));D.DEFAULT_ARGS={_title:["title",null],_item:["item",null],_purchaseValues:["purchaseValues",null]};P.initDOM=function(){BASE.initDOM.call(this);this.emInitDOM();};P.emInitDOM=function(){var vbox=new DlVbox({parent:this});if(!this._item){throw("EmPurchase emInitDOM missing item arg.");}
var title=new DlLabel({parent:vbox,label:"<h1>"+this._title+"</h1>"});var layout=new DlLayout({parent:this,outerSpace:10,className:"outerPurchaseLayout"});this.left=new DlLayout({});var right=new DlContainer({});layout.packWidget(this.left,{pos:"left",fill:"*"});layout.packWidget(right,{pos:"right",fill:400});this.taxLayout=new DlLayout({});this.left.packWidget(this.taxLayout,{pos:"right",fill:"200"});this.tax1C=new DlContainer({});this.tax2C=new DlContainer({});this.taxLayout.packWidget(this.tax1C,{pos:"left",fill:"100"});this.taxLayout.packWidget(this.tax2C,{pos:"right",fill:"100"});var tax1Hbox=new DlHbox({parent:this.tax1C});tax1Hbox.setAlign("center");this.tax1HLabel=new DlLabel({parent:tax1Hbox,label:"tax1",className:"em-header"});var tax2Hbox=new DlHbox({parent:this.tax2C});tax2Hbox.setAlign("center");this.tax2HLabel=new DlLabel({parent:tax2Hbox,label:"tax2",className:"em-header"});this.leftLabelVbox=new DlContainer({});this.left.packWidget(this.leftLabelVbox,{pos:"left",fill:"*"});var invHbox=new DlHbox({parent:this.leftLabelVbox});invHbox.addSpace();var label="Ticket";if(this._item.label){label=this._item.label.toUpperCase();}
this.label1=new DlLabel({parent:invHbox,label:label,className:"em-header"});var layoutR1=new DlLayout({parent:right});this.left1=new DlContainer({});var right1=new DlContainer({});layoutR1.packWidget(this.left1,{pos:"left",fill:"49%",after:10});layoutR1.packWidget(right1,{pos:"right",fill:"*"});var layoutR=new DlLayout({parent:right1});this.leftQ=new DlContainer({});this.rightAP=new DlContainer({});layoutR.packWidget(this.leftQ,{pos:"left",fill:"49%",after:10});layoutR.packWidget(this.rightAP,{pos:"right",fill:"*"});var apHbox=new DlHbox({parent:this.rightAP});apHbox.setAlign("center");this.label5=new DlLabel({parent:apHbox,label:"PAID (PRE-TAX)",className:"em-header"});var qHbox=new DlHbox({parent:this.leftQ});qHbox.setAlign("center");this.label4=new DlLabel({parent:qHbox,label:"QUANTITY",className:"em-header"});var layoutSP=new DlLayout({parent:this.left1});this.leftSP=new DlContainer({});this.rightSP=new DlContainer({});layoutSP.packWidget(this.leftSP,{pos:"left",fill:"49%",after:10});layoutSP.packWidget(this.rightSP,{pos:"right",fill:"*"});var soldHbox=new DlHbox({parent:this.leftSP});soldHbox.setAlign("center");this.label2=new DlLabel({parent:soldHbox,label:"SOLD",className:"em-header"});var priceHbox=new DlHbox({parent:this.rightSP});priceHbox.setAlign("center");this.label3=new DlLabel({parent:priceHbox,label:"PRICE",className:"em-header"});layout.setSize({x:800,y:200});this.priceValidator=new DlValidator(DlValidator.Price,swApp.locale.groupingSeparator,swApp.locale.monetaryDecimalSeparator,swApp.locale.currencySymbol);this.refreshView();};P.refreshView=function(){if(this._purchaseValues){this.refreshSummaryView();return;}
var invoiceIds=this._item["invoice-ids"];if(!invoiceIds){invoiceIds=[];}
var refreshSold=function(response){if(response&&response.hasOwnProperty("failed")){alert("Could not get count of invoices purchased:\n"+
response.failed);return;}
for(var invoiceId in response){if(response.hasOwnProperty(invoiceId)){var count=response[invoiceId];if(!count){count=0;}
var label=invoiceIdSoldLabelM[invoiceId];if(label){label.label(""+count+"/");}}}};var invoiceIdSoldLabelM={};var request={};request.em=true;request.command="getPurchaseCount";request["invoice-ids"]=invoiceIds;swApp.syncSWorld.sendRequest(request,null,refreshSold);this.quantitySpinners=[];this.priceEntries=[];var invHbox;var apHbox;var qHbox;var soldHbox;var priceHbox;var tmp;var invoiceM=swApp.syncSWorld.invoiceM;var locale=null;var userSettingsLocaleKey=swApp.syncSWorld.userSettingsDTO.language;if(swApp.syncSWorld.userSettingsDTO.country&&swApp.syncSWorld.userSettingsDTO.country.length>0){userSettingsLocaleKey+="-"+
swApp.syncSWorld.userSettingsDTO.country;}
locale=jsLocaleData[userSettingsLocaleKey];var sep=locale.groupingSeparator;var taxNames=this.setTaxNames(invoiceIds);var tax1Added;var tax2Added;var invoice;var tax1Name;var tax2Name;var taxNum;var percent;for(var i=0;i<invoiceIds.length;++i){invoice=invoiceM[invoiceIds[i]];invHbox=new DlHbox({parent:this.leftLabelVbox,className:"em-row"});invHbox.addSpace();tmp=new DlLabel({parent:invHbox,label:invoice.label});tax1Added=false;tax2Added=false;tax1Name=invoice["tax1-name"];percent=invoice["tax1-percent"];taxNum=taxNames[tax1Name];if(taxNum==1){this.addTax1Val(percent,locale);tax1Added=true;}
else if(taxNum==2){this.addTax2Val(percent,locale);tax2Added=true;}
tax2Name=invoice["tax2-name"];percent=invoice["tax2-percent"];taxNum=taxNames[tax2Name];if(taxNum==1){this.addTax1Val(percent,locale);tax1Added=true;}
else if(taxNum==2){this.addTax2Val(percent,locale);tax2Added=true;}
if(!tax1Added){this.addTax1Val(null);}
if(!tax2Added){this.addTax2Val(null);}
soldHbox=new DlHbox({parent:this.leftSP,className:"em-row"});soldHbox.setAlign("center");var soldAvailable="tbd"+"/";invoiceIdSoldLabelM[invoiceIds[i]]=new DlLabel({parent:soldHbox,label:soldAvailable});var qAvailable=invoice["quantity-available"];if(qAvailable=="0"){qAvailable="∞";tmp=new DlLabel({parent:soldHbox,label:qAvailable,className:"em-font24"});}
else{tmp=new DlLabel({parent:soldHbox,label:qAvailable});}
this.rightSP.display(true);priceHbox=new DlHbox({parent:this.rightSP,className:"em-row"});priceHbox.setAlign("center");var priceF=formatPrice(invoice.price,swApp.locale.groupingSeparator,swApp.locale.monetaryDecimalSeparator|swApp.locale.decimalSeparator);var priceCurrency=priceF+" "+invoice.currency;tmp=new DlLabel({parent:priceHbox,label:priceCurrency});qHbox=new DlHbox({parent:this.leftQ,className:"em-rowH"});qHbox.setAlign("center");this.quantitySpinners.push(new DlSpinner({parent:qHbox,minVal:0,maxVal:364,value:0}));apHbox=new DlHbox({parent:this.rightAP,className:"EMEntryRightH"});apHbox.setAlign("center");this.priceEntries.push(new DlEntry({parent:apHbox,size:8,value:priceF,validators:[this.priceValidator]}));}};P.setTaxNames=function(invoiceIds){var invoiceM=swApp.syncSWorld.invoiceM;var taxNames={};var invoice;var showTax1=false;var showTax2=false;for(var i=0;i<invoiceIds.length;++i){invoice=invoiceM[invoiceIds[i]];if(!invoice){throw("No invoice for invoiceId:"+invoiceIds[i]);}
var tax1Name=invoice["tax1-name"];if(tax1Name&&tax1Name.length>0){showTax1=true;taxNames[tax1Name]=1;}
var tax2Name=invoice["tax2-name"];if(tax2Name&&tax2Name.length>0){showTax2=true;taxNames[tax2Name]=2;}}
if(showTax1){this.tax1C.display(true);}
else{this.tax1C.display(false);}
if(showTax2){this.tax2C.display(true);}
else{this.tax2C.display(false);}
if(showTax1||showTax2){this.taxLayout.display(true);}
else{this.taxLayout.display(false);}
var keys=getPropKeys(taxNames);if(keys.length>2){alert("You have more than 2 unique tax names:"+keys.join(","));return;}
var taxNum;var taxName;for(var i=0;i<keys.length;++i){taxName=keys[i];taxNum=taxNames[taxName];if(taxNum==1){this.tax1HLabel.label(taxName);}
if(taxNum==2){this.tax2HLabel.label(taxName);}}
return taxNames;};P.addTax1Val=function(percent,locale){var tax1Hbox=new DlHbox({parent:this.tax1C,className:"em-row"});if(!percent){return;}
tax1Hbox.setAlign("center");var tax1Amount=percent+locale.percentSign;var tmp=new DlLabel({parent:tax1Hbox,label:tax1Amount});};P.addTax2Val=function(percent,locale){var tax2Hbox=new DlHbox({parent:this.tax2C,className:"em-row"});if(!percent){return;}
tax2Hbox.setAlign("center");var tax2Amount=percent+locale.percentSign;var tmp=new DlLabel({parent:tax2Hbox,label:tax2Amount});};P.refreshSummaryView=function(){this.label2.label("PRICE");this.rightSP.display(false);this.label4.label("QUANTITY");this.label5.label("TOTAL");var locale=null;var userSettingsLocaleKey=swApp.syncSWorld.userSettingsDTO.language;if(swApp.syncSWorld.userSettingsDTO.country&&swApp.syncSWorld.userSettingsDTO.country.length>0){userSettingsLocaleKey+="-"+swApp.syncSWorld.userSettingsDTO.country;}
locale=jsLocaleData[userSettingsLocaleKey];var sep=locale.groupingSeparator;var invoiceM=swApp.syncSWorld.invoiceM;var invoiceIds=[];for(var index in this._purchaseValues){if(this._purchaseValues.hasOwnProperty(index)){var purchaseValue=this._purchaseValues[index];if(purchaseValue.quantity==0){continue;}
var invoice=invoiceM[purchaseValue["invoice-id"]];if(!invoice){throw("No invoice for invoice-id:"+
purchaseValue["invoice-id"]);}
invoiceIds.push(purchaseValue["invoice-id"]);}}
var taxNames=this.setTaxNames(invoiceIds);var invHbox;var apHbox;var qHbox;var soldHbox;var priceHbox;var tmp;this.totalCents=0;var tax1Added;var tax2Added;var tax1Name;var tax2Name;var taxNum;var tax1Total=0;var tax2Total=0;var finalTax1Name;var finalTax2Name;var percent;var lineCents;for(var index in this._purchaseValues){if(this._purchaseValues.hasOwnProperty(index)){var purchaseValue=this._purchaseValues[index];var invoice=invoiceM[purchaseValue["invoice-id"]];if(!invoice){throw("No invoice for invoice-id:"+
purchaseValue["invoice-id"]);}
if(purchaseValue.quantity==0){continue;}
invHbox=new DlHbox({parent:this.leftLabelVbox,className:"em-row"});invHbox.addSpace();tmp=new DlLabel({parent:invHbox,label:invoice.label});tax1Added=false;tax2Added=false;tax1Name=invoice["tax1-name"];percent=invoice["tax1-percent"];taxNum=taxNames[tax1Name];if(taxNum==1){this.addTax1Val(percent,locale);tax1Added=true;finalTax1Name=tax1Name;}
else if(taxNum==2){this.addTax2Val(percent,locale);tax2Added=true;finalTax2Name=tax2Name;}
tax2Name=invoice["tax2-name"];percent=invoice["tax2-percent"];taxNum=taxNames[tax2Name];if(taxNum==1){this.addTax1Val(percent,locale);tax1Added=true;finalTax1Name=tax1Name;}
else if(taxNum==2){this.addTax2Val(percent,locale);tax2Added=true;finalTax2Name=tax2Name;}
if(!tax1Added){this.addTax1Val(null);}
if(!tax2Added){this.addTax2Val(null);}
priceHbox=new DlHbox({parent:this.leftSP,className:"em-row"});priceHbox.setAlign("center");var priceCurrency=purchaseValue.price+" "+invoice.currency;tmp=new DlLabel({parent:priceHbox,label:priceCurrency});qHbox=new DlHbox({parent:this.leftQ,className:"em-row"});qHbox.setAlign("center");tmp=new DlLabel({parent:qHbox,label:""+purchaseValue.quantity});var str=purchaseValue.price.replace(/\./,"");var str=str.replace(/\,/,"");var cents=parseInt(str,10)*purchaseValue.quantity;this.totalCents+=cents;if(tax1Added){percent=parseFloat(invoice["tax1-percent"])/100;tax1Cents=cents*percent;tax1Total+=tax1Cents;}
if(tax2Added){percent=parseFloat(invoice["tax2-percent"])/100;tax2Cents=cents*percent;tax2Total+=tax2Cents;}
apHbox=new DlHbox({parent:this.rightAP,className:"em-row"});apHbox.setAlign("center");tmp=new DlLabel({parent:apHbox,label:formatPrice(cents,swApp.locale.groupingSeparator,swApp.locale.monetaryDecimalSeparator|swApp.locale.decimalSeparator)});}}
tax1Total=Math.round(tax1Total);tax2Total=Math.round(tax2Total);if(tax1Added){var tt1Hbox=new DlHbox({parent:this.leftQ,className:"em-row"});tt1Hbox.setAlign("center");tmp=new DlLabel({parent:tt1Hbox,label:"<b>TOTAL "+
finalTax1Name+":</b>"});var t1rHbox=new DlHbox({parent:this.rightAP,className:"em-row"});t1rHbox.setAlign("center");tmp=new DlLabel({parent:t1rHbox,label:"<b>"+
formatPrice(""+tax1Total,swApp.locale.groupingSeparator,swApp.locale.monetaryDecimalSeparator|swApp.locale.decimalSeparator)+"</b>"});}
if(tax2Added){var tt2Hbox=new DlHbox({parent:this.leftQ,className:"em-row"});tt2Hbox.setAlign("center");tmp=new DlLabel({parent:tt2Hbox,label:"<b>TOTAL "+
finalTax2Name+":</b>"});var t2rHbox=new DlHbox({parent:this.rightAP,className:"em-row"});t2rHbox.setAlign("center");tmp=new DlLabel({parent:t2rHbox,label:"<b>"+
formatPrice(""+tax2Total,swApp.locale.groupingSeparator,swApp.locale.monetaryDecimalSeparator|swApp.locale.decimalSeparator)+"</b>"});}
var feeCents=(this.totalCents*.020)+99;if(feeCents>999){feeCents=999;}
feeCents=Math.round(feeCents);this.totalCents=Math.round(this.totalCents);var feeHbox=new DlHbox({parent:this.leftQ,className:"em-row"});feeHbox.setAlign("center");tmp=new DlLabel({parent:feeHbox,label:"<b>FEE:</b>"});var feevHbox=new DlHbox({parent:this.rightAP,className:"em-row"});feevHbox.setAlign("center");tmp=new DlLabel({parent:feevHbox,label:"<b>"+
formatPrice(feeCents,swApp.locale.groupingSeparator,swApp.locale.monetaryDecimalSeparator|swApp.locale.decimalSeparator)+"</b>"});var tdHbox=new DlHbox({parent:this.leftQ,className:"em-row"});tdHbox.setAlign("center");tmp=new DlLabel({parent:tdHbox,label:"<b>TOTAL DUE:</b>"});this.totalCents=this.totalCents+tax1Total+tax2Total+feeCents;var total=formatPrice(this.totalCents,swApp.locale.groupingSeparator,swApp.locale.monetaryDecimalSeparator|swApp.locale.decimalSeparator);var tHbox=new DlHbox({parent:this.rightAP,className:"em-row"});tHbox.setAlign("center");tmp=new DlLabel({parent:tHbox,label:"<b>"+
locale.currencySymbol+" "+total+" "+
locale.currencyCode+"</b>"});};P.getTotalCents=function(){return this.totalCents;};P.getValues=function(){var values={};var invoiceM=swApp.syncSWorld.invoiceM;var invoiceIds=this._item["invoice-ids"];if(!invoiceIds){invoiceIds=[];}
for(var i=0;i<invoiceIds.length;++i){var invoice=invoiceM[invoiceIds[i]];var spinner=this.quantitySpinners[i];var entry=this.priceEntries[i];var result={};result["invoice-id"]=invoiceIds[i];result.quantity=parseInt(spinner.getValue(),10);result.price=entry.getValue();if(invoice["quantity-available"]>0){result.reservationRequired=true;}
else{result.reservationRequired=false;}
result["item-id"]=this._item["item-id"];values[i]=result;}
return values;};})();(function(){var BASE=EmPerson.inherits(DlContainer);function EmPerson(args){if(args){D.setDefaults(this,args);this._focusable=true;BASE.constructor.call(this,args);}
else{throw("EmPerson missing args.");}}
eval(Dynarch.EXPORT("EmPerson"));D.DEFAULT_ARGS={_surveyIds:["surveyIds",null],_surveyIdMap:["surveyIdMap",null],_fieldValues:["fieldValues",null],_first:["first",null],_last:["last",null],_email:["email",null],_emBuyer:["emBuyer",null],_emFinalize:["emFinalize",null],_key:["key",null],_width:["width",800]};P.initDOM=function(){BASE.initDOM.call(this);this.hbox=new DlHbox({parent:this});this.hc1=new DlContainer({parent:this.hbox});this.hbox.addSpace();this.hc2=new DlContainer({parent:this.hbox});this.fg=new DlFieldGrid({parent:this.hc1,align:"left"});if(this._emBuyer){var w=new DlButton({label:"Copy Buyer Values"});w.addEventListener("onClick",function(){this.fg.setValues(this._emBuyer.getValues());}.$(this));this.fg.addField({name:"ignoreMe",label:"",widget:w});}
this.firstRet={};this.firstWid=new DlCompletionEntry({});this.firstWid.addEventListener("onCompletion",this._emFinalize.fnCompletionHandler.$(this.firstWid,this));this.firstWid.addEventListener("onChange",this._emFinalize.fnChangeHandler.$(this.firstWid,this._emFinalize,this));this.fg.addField({name:"first",label:this._first,widget:this.firstWid},null,this.firstRet);if(this._emFinalize){this.firstRet.entry.addEventListener("onChange",this._emFinalize.emPersonUpdated.$(this._emFinalize,this));}
this.lastRet={};this.fg.addField({name:"last",label:this._last},null,this.lastRet);if(this._emFinalize){this.lastRet.entry.addEventListener("onChange",this._emFinalize.emPersonUpdated.$(this._emFinalize,this));}
this.emailRet={};this.fg.addField({name:"email",label:this._email},null,this.emailRet);if(this._emFinalize){this.emailRet.entry.addEventListener("onChange",this._emFinalize.emPersonUpdated.$(this._emFinalize,this));}
if(!this._surveyIds||this._surveyIds.length===0){return;}
this.addFieldValues();this.resizeFG(this._width);};P.resizeFG=function(containerWidth){var width=(containerWidth-60)/2;DynarchDomUtils.setInnerSize(this.hc1._element,width);if(this.fgR){DynarchDomUtils.setInnerSize(this.hc2._element,width);}};P.addFieldValues=function(){if(this._fieldValues){this.emailRet.entry.setValue(this._fieldValues.email,true);this.firstRet.entry.setValue(this._fieldValues.first,true);this.lastRet.entry.setValue(this._fieldValues.last,true);}
this.fgR=new DlFieldGrid({parent:this.hc2});this.surveyRets={};var attribNum=3+(this._surveyIds.length/2);var leftMax=Math.ceil(attribNum/2);var leftCount=4;var rightCount=0;var useFG;for(var i=0;i<this._surveyIds.length;++i,++leftCount){if(leftCount<leftMax){useFG=this.fg;}
else{useFG=this.fgR;++rightCount;}
var surveyId=this._surveyIds[i];++i;var required=this._surveyIds[i];var survey=this._surveyIdMap[surveyId];if(!survey){continue;}
if(survey.question=="email"||survey.question=="first"||survey.question=="last"){continue;}
var label=survey.question+":";if(required){label+=" *";}
if(survey.type=="a-text"||survey.type=="a-text-unique"||survey.type=="a-text-fuzzy1"){var ret={};var value;if(this._fieldValues){value=this._fieldValues[surveyId];}
if(!value){value="";}
var swLabel=new DlLabel({label:label,className:"EmPerson-survey-label"});var wid=new DlCompletionEntry({});wid.addEventListener("onCompletion",this._emFinalize.fnCompletionHandler.$(wid,this));wid.addEventListener("onChange",this._emFinalize.fnChangeHandler.$(wid,this._emFinalize,this));useFG.addField({name:surveyId,label:swLabel,value:value},null,ret);this.surveyRets[surveyId]=ret;ret.label._className.remove("DlAbstractButton");DynarchDomUtils.delClass(swLabel.getContentElement(),"DlAbstractButton");DynarchDomUtils.delClass(swLabel._element.childNodes[0],"DlButton-Label");}
else if(survey.type=="an-image"){var ret={};var value;if(this._fieldValues){value=this._fieldValues[surveyId];}
if(!value){value="";}
var swLabel=new DlLabel({label:label,className:"EmPerson-survey-label"});var upHbox=new DlHbox({});var params={};var upload=new DlUploadEntry({url:"/em/uploadSurveyAnImage",files:["file"],params:params,parent:upHbox});var upDone=new DlLabel({parent:upHbox,label:"1MB Max."});upHbox.getValue=function(){var upLabel=this.children(1);return upLabel.getData("StoreLocation");};params.labelID=upDone.getWidgetId();useFG.addField({name:surveyId,label:swLabel,value:value,widget:upHbox},null,ret);this.surveyRets[surveyId]=ret;ret.label._className.remove("DlAbstractButton");DynarchDomUtils.delClass(swLabel.getContentElement(),"DlAbstractButton");DynarchDomUtils.delClass(swLabel._element.childNodes[0],"DlButton-Label");upload.init();upload.addEventListener({onChange:function(field,name,value){field.style.visibility="hidden";this.submit();},onUploadEnd:function(args){for(var i=0;i<args.length;++i){var arg=args[i];if(arg.ok){var label=DlWidget.getById(arg.ok.labelID);label.label("Done.");label.setData("StoreLocation",arg.ok.StoreLocation);}}}.$(this)});}
else if(survey.type=="a-checkbox"){var ret={};var value;if(this._fieldValues){value=this._fieldValues[surveyId];}
if(!value){value="";}
var swLabel=new DlLabel({label:label,className:"EmPerson-survey-label"});var cb=new DlCheckbox({});useFG.addField({name:surveyId,label:swLabel,value:value,widget:cb},null,ret);this.surveyRets[surveyId]=ret;ret.label._className.remove("DlAbstractButton");DynarchDomUtils.delClass(swLabel.getContentElement(),"DlAbstractButton");DynarchDomUtils.delClass(swLabel._element.childNodes[0],"DlButton-Label");}
else if(survey.type=="a-number"){var numValSpin=new DlSpinner({minVal:0});numValSpin.setValue(survey.min);numValSpin.setValue(survey.max);var ret={};var value;if(this._fieldValues){value=this._fieldValues[surveyId];}
if(!value){value="";}
var swLabel=new DlLabel({label:label,className:"EmPerson-survey-label"});useFG.addField({name:surveyId,label:swLabel,value:value,widget:numValSpin},null,ret);this.surveyRets[surveyId]=ret;ret.label._className.remove("DlAbstractButton");DynarchDomUtils.delClass(swLabel.getContentElement(),"DlAbstractButton");DynarchDomUtils.delClass(swLabel._element.childNodes[0],"DlButton-Label");}
else if(survey.type=="a-choice"){}
else if(survey.type=="a-radio-buttons"){}}
if(leftCount!=rightCount){this.fgR.addField({name:"empty",label:" ",widget:new DlLabel({label:" "})});}};P.makeReadOnly=function(){this.firstRet.entry.readonly(true);this.lastRet.entry.readonly(true);this.emailRet.entry.readonly(true);if(this.surveyRets){for(var surveyId in this.surveyRets){if(this.surveyRets.hasOwnProperty(surveyId)){var ret=this.surveyRets[surveyId];ret.entry.readonly(true);}}}};P.setValues=function(map,data){for(var key in map){if(map.hasOwnProperty(key)){this.setValue(map[key],data[key]);}}};P.copyRecipientValues=function(srcEmPerson){var srcValues=srcEmPerson.getValues();delete srcValues.empty;for(var k in srcValues){if(srcValues.hasOwnProperty(k)){this.setValue(k,srcValues[k]);}}};P.setValue=function(k,v){if(k=="first"){this.firstRet.entry.setValue(v,true);return;}
else if(k=="last"){this.lastRet.entry.setValue(v,true);return;}
else if(k=="email"){this.emailRet.entry.setValue(v,true);return;}
var fgValues=this.fg.getValues();if(fgValues.hasOwnProperty(k)){this.setFGValue(this.fg,k,v);return;}
if(!this.fgR){return;}
var fgRValues=this.fgR.getValues();if(fgRValues.hasOwnProperty(k)){this.setFGValue(this.fgR,k,v);return;}};P.setFGValue=function(fg,k,v){var w=fg.getField(k);if(w&&w.setValue instanceof Function){if(w instanceof DlAbstractButton&&w._checkTwoState(true)){w.checked(typeof v=="string"?v!="0":!!v);}else{w.setValue(v);}}};P.refreshView=function(swEvent,saveAll){};P.getEmail=function(){var values=this.fg.getValues();return values.email;};P.getFirst=function(){var values=this.fg.getValues();return values.first;};P.getLast=function(){var values=this.fg.getValues();return values.last;};P.getInvalid=function(){if(!isEmailValid(this.getEmail())){return"Email";}
if(this.getFirst().trim().length===0){return"First Name";}
if(this.getLast().trim().length===0){return"Last Name";}
if(!this.fgR){return;}
var fgValues=this.fg.getValues();var fgRValues=this.fgR.getValues();if(!this._surveyIds||this._surveyIds.length===0){return;}
for(var i=0;i<this._surveyIds.length;++i){var surveyId=this._surveyIds[i];++i;var required=this._surveyIds[i];if(!required){continue;}
var value=fgValues[surveyId];if(typeof value!='undefined'){if(value.trim().length===0){return surveyId;}
continue;}
value=fgRValues[surveyId];if(typeof value!='undefined'){if(value.trim().length===0){return surveyId;}}}};P.getValues=function(){var result=this.fg.getValues();if(this.fgR){var rvalues=this.fgR.getValues();swMerge(result,rvalues);}
delete result.empty;return result;};P.saveToTODOTODO=function(x){};})();(function(){var BASE=SwDateSelect.inherits(DlContainer);function SwDateSelect(args){if(args){D.setDefaults(this,args);this._focusable=true;BASE.constructor.call(this,args);this.startListenerL=[];}
else{throw("SwDateSelect missing args.");}}
eval(Dynarch.EXPORT("SwDateSelect"));D.DEFAULT_ARGS={_swEvent:["swEvent",null],_showTZ:["showTZ",false],_showNoStart:["showNoStart",false]};P.initDOM=function(){BASE.initDOM.call(this);var date=new Date();if(this._swEvent){date.setDate(1);date.setMonth(this._swEvent.getStartMonth()-1);date.setFullYear(this._swEvent.getStartYear());date.setDate(this._swEvent.getStartDayOfMonth());}
var dateFormat=swApp.getDateFormat();var hbox=new DlHbox({parent:this});var defaultStartDay=0;if(swApp.syncSWorld.userSettingsDTO.firstWeekDay=="2"){defaultStartDay=1;}
this._startDate=new DlButtonCalendar({parent:hbox,date:date,dateFormat:dateFormat,calendar:{firstDay:defaultStartDay,fixedFirstDay:false,withMenu:true}});this._startDate.addEventListener("onSelect",function(date){this._startDate.getCalendar().setData("swclicked",true);for(var i=0;i<this.startListenerL.length;++i){this.startListenerL[i](date);}
this._noStart.checked(false);}.$(this));hbox.addSpace();var useAmPm=swApp.syncSWorld.userSettingsDTO.ampm;this.hoursMaxVal=12;if(!useAmPm){this.hoursMaxVal=23;}
this.hourValidator=new DlValidator(DlValidator.Number,0,this.hoursMaxVal,true,0);this.minuteValidator=new DlValidator(DlValidator.Number,0,59,true,0);function validateZeroPad(data){if(data.length===0){return"00";}
if(data.length==1){return"0"+data;}
return data;}
this.lengthValidator=new DlValidator(validateZeroPad);this.startHours=new DlEntry({parent:hbox,width:"2em",validators:[this.hourValidator]});this.startHours.addEventListener("onChange",function(){}.$(this));this.startSep=new DlLabel({parent:hbox,label:"<b> : </b>"});this.startMinutes=new DlEntry({parent:hbox,width:"2em",validators:[this.minuteValidator,this.lengthValidator]});this.startMinutes.addEventListener("onChange",function(){}.$(this));var locale=null;var userSettingsLocaleKey=swApp.syncSWorld.userSettingsDTO.language;if(swApp.syncSWorld.userSettingsDTO.country&&swApp.syncSWorld.userSettingsDTO.country.length>0){userSettingsLocaleKey+="-"+swApp.syncSWorld.userSettingsDTO.country;}
locale=jsLocaleData[userSettingsLocaleKey];var ampmGroup=DlRadioGroup.get();this.ampmVbox=new DlVbox({parent:hbox});this.amRadio=new DlRadioButton({parent:this.ampmVbox,group:ampmGroup,label:locale.ampm[0],value:"am"});this.amRadio.addEventListener("onChange",function(){}.$(this));this.pmRadio=new DlRadioButton({parent:this.ampmVbox,group:ampmGroup,label:locale.ampm[1],value:"pm"});this.pmRadio.addEventListener("onChange",function(){}.$(this));var startVbox=new DlVbox({parent:hbox});this._allDay=new DlCheckbox({parent:startVbox,label:"All day",checked:false});this._allDay.addEventListener("onChange",function(){swApp.log("_allDay onChange");var visible=true;if(this._allDay.checked()){visible=false;this.durationMinutes=1440;}
else{this.durationMinutes=60;}
this.startHours.display(visible);this.startSep.display(visible);this.startMinutes.display(visible);this.ampmVbox.display(visible);}.$(this));this._noStart=new DlCheckbox({parent:startVbox,label:"No Start",checked:false});this._noStart.addEventListener("onChange",function(){var visible=true;swApp.log("_noStart onChange");if(this._noStart.checked()){visible=false;}
if(this.hasFreq){visible=true;}
this._startDate.display(visible);this.startHours.display(visible);this.startSep.display(visible);this.startMinutes.display(visible);this.ampmVbox.display(visible);this._allDay.display(visible);this.startTZButtonMenu.display(visible);}.$(this));this.startTZButtonMenu=new DlButtonMenu({parent:hbox,label:swApp.syncSWorld.userSettingsDTO.timeZoneID,connected:true});this.startTZSelectHandler=function(selectedTZ){this.startTZButtonMenu._mainBtn.label(selectedTZ);this.startSelectedTZ=selectedTZ;};this.startTZMenu=swApp.createMenuTZ(swApp.tzMenuL,this.startTZSelectHandler.$(this));this.startTZButtonMenu.setMenu(this.startTZMenu);if(!this._showTZ){this.startTZButtonMenu.display(false);}
if(!this._showNoStart){this._allDay.display(false);this._noStart.display(false);}};P.setHasFreq=function(aHasFreq){this.hasFreq=aHasFreq;};P.freqListener=function(value){if(value){this.hasFreq=true;this._noStart.checked(false);this._noStart.disabled(true);var dateSelected=this._startDate.getCalendar().getData("swclicked");if(!dateSelected){var now=new Date();now.setSeconds(0);now.setMinutes(0);now.setHours(now.getHours()+1);this._startDate.getCalendar().selectDate(now);this._startDate.getCalendar().setData("swclicked",true);}
return;}
this.hasFreq=false;this._noStart.disabled(false);};P.getStartDateTime=function(){var dateTime={};if(!this._noStart.disabled()&&this._noStart.checked()){return dateTime;}
dateTime.year=this._startDate.getCalendar().date.getFullYear();dateTime.month=this._startDate.getCalendar().date.getMonth()+1;dateTime.dayOfMonth=this._startDate.getCalendar().date.getDate();dateTime.hourOfDay=parseInt(this.startHours.getValue(),10);dateTime.minute=parseInt(this.startMinutes.getValue(),10);dateTime.second=0;dateTime.timeZoneID=this._swEvent._data.syncSWorldCalComp.startTimeZone;return dateTime;};P.getEMStartMS=function(){var clone=new Date(this._startDate.getCalendar().date.getTime());clone.setHours(0);clone.setMinutes(0);clone.setSeconds(0);clone.setMilliseconds(0);return clone.getTime();};P.getEMStart=function(){var dateTime=this.getStartDateTime();var gmtStart=swApp.convertTZ2GMT(dateTime.timeZoneID,dateTime.year,dateTime.month,dateTime.dayOfMonth,dateTime.hourOfDay,dateTime.minute,dateTime.second);var date=new Date();date.setUTCHours(gmtStart.hourOfDay,gmtStart.minute,gmtStart.second,0);date.setUTCDate(gmtStart.dayOfMonth);date.setUTCMonth(gmtStart.month-1);date.setUTCFullYear(gmtStart.year);return date;};P.refreshView=function(swEvent,saveAll){if(swEvent){this._swEvent=swEvent;this.durationMinutes=this._swEvent._data.syncSWorldCalComp.durationMinutes;}
if(this._swEvent._data.syncSWorldCalComp.startTimeZone){this.startTZSelectHandler(this._swEvent._data.syncSWorldCalComp.startTimeZone);}
else{this.startTZSelectHandler(swApp.syncSWorld.userSettingsDTO.timeZoneID);}
var isEvent=false;if(this._swEvent._objectType=="SwEvent"){isEvent=true;}
this.dateFormat=swApp.getDateFormat();if(this._swEvent._data.syncSWorldCalComp.startIsDate){this._allDay.checked(true,false);}
else{this._allDay.checked(false,false);}
var eventDate=new Date();var taskDate=new Date();var startYear=this._swEvent.getStartYear();var startHourOfDay;var startMinute;var startMonth;if(!startYear){this._startDate.getCalendar().selectDate(eventDate);this._startDate.getCalendar().date=eventDate;this._startDate.getButton().label("None",true);this._startDate.getCalendar().setData("swclicked",false);this._noStart.checked(true,false);startHourOfDay=eventDate.getHours()+1;startMinute=0;}
else if(saveAll){this._noStart.checked(false,false);startMonth=this._swEvent._data.syncSWorldCalComp.startMonth-1;eventDate.setDate(1);eventDate.setMonth(startMonth);eventDate.setFullYear(this._swEvent._data.syncSWorldCalComp.startYear);eventDate.setDate(this._swEvent._data.syncSWorldCalComp.startDayOfMonth);this._startDate.getCalendar().selectDate(eventDate);this._startDate.getCalendar().date=eventDate;this._startDate.getButton().label(eventDate.print(this.dateFormat));this._startDate.getCalendar().setData("swclicked",true);if(this._swEvent._data.syncSWorldCalComp.startIsDate){startHourOfDay=0;startMinute=0;}
else{startHourOfDay=this._swEvent._data.syncSWorldCalComp.startHourOfDay;startMinute=this._swEvent._data.syncSWorldCalComp.startMinute;}}
else{this._noStart.checked(false,false);eventDate.setDate(1);eventDate.setMonth(this._swEvent.getStartMonth()-1);eventDate.setFullYear(this._swEvent.getStartYear());eventDate.setDate(this._swEvent.getStartDayOfMonth());this._startDate.getCalendar().selectDate(eventDate);this._startDate.getCalendar().date=eventDate;this._startDate.getButton().label(eventDate.print(this.dateFormat));this._startDate.getCalendar().setData("swclicked",true);startHourOfDay=this._swEvent.getStartHourOfDay();startMinute=this._swEvent.getStartMinute();}
var hourOfDay=parseInt(startHourOfDay,10);if(hourOfDay>11){this.amRadio.checked(false);this.pmRadio.checked(true);}
else{this.amRadio.checked(true);this.pmRadio.checked(false);}
var useAmPm=swApp.syncSWorld.userSettingsDTO.ampm;if(useAmPm){if(hourOfDay>11){this.startHours.setValue(hourOfDay-12);}
else{this.startHours.setValue(hourOfDay);}}
else{this.startHours.setValue(hourOfDay);}
this.startMinutes.setValue(startMinute);if(this._swEvent._objectType=="SwEvent"){this._noStart.display(false);}
else{this._noStart.display(true);}};P.saveToEvent=function(event){if(!this._allDay.checked()){if(!this.hourValidator.ok(this.startHours.getValue())){throw("Invalid value for the start hour:"+this.startHours.getValue());}
if(!this.minuteValidator.ok(this.startMinutes.getValue())){throw("Invalid value for the start minute:"+this.startMinutes.getValue());}}
var dateSelected=this._startDate.getCalendar().getData("swclicked");if((!dateSelected)||this._noStart.checked()){delete event.startTimeZone;delete event.startYear;delete event.startMonth;delete event.startDayOfMonth;delete event.startHourOfDay;delete event.startMinute;delete event.startSecond;delete event.startIsDate;delete event.durationMinutes;}
else{event.startTimeZone=this.startSelectedTZ;var calStartDate=this._startDate.getCalendar().date;event.startYear=calStartDate.getFullYear();event.startMonth=calStartDate.getMonth()+1;event.startDayOfMonth=calStartDate.getDate();event.startIsDate=this._allDay.checked();if(this._allDay.checked()){event.startHourOfDay=0;event.startMinute=0;event.startSecond=0;}
else{event.startHourOfDay=parseInt(this.startHours.getValue(),10);var useAmPm=swApp.syncSWorld.userSettingsDTO.ampm;if(this.pmRadio.checked()&&useAmPm){if(event.startHourOfDay<12){event.startHourOfDay+=12;}}
event.startMinute=this.startMinutes.getValue();event.startSecond=0;}
if(event.startTimeZone!=swApp.syncSWorld.userSettingsDTO.timeZoneID){var gmtStart=swApp.convertTZ2GMT(event.startTimeZone,event.startYear,event.startMonth,event.startDayOfMonth,event.startHourOfDay,event.startMinute,event.startSecond);if(typeof gmtStart=='undefined'){swApp.log("gmtStart undefined");}
var tzStart=swApp.convertGMT2TZ(swApp.syncSWorld.userSettingsDTO.timeZoneID,gmtStart.year,gmtStart.month,gmtStart.dayOfMonth,gmtStart.hourOfDay,gmtStart.minute,gmtStart.second);event.startTimeZone=swApp.syncSWorld.userSettingsDTO.timeZoneID;event.startYear=tzStart.year;event.startMonth=tzStart.month;event.startDayOfMonth=tzStart.dayOfMonth;event.startHourOfDay=tzStart.hourOfDay;event.startMinute=tzStart.minute;event.startSecond=tzStart.second;}}};P.addStartListener=function(listener){this.startListenerL.push(listener);};})();(function(){var BASE=SwDHMSelect.inherits(DlContainer);function SwDHMSelect(args){if(args){D.setDefaults(this,args);this._focusable=true;BASE.constructor.call(this,args);this.startListenerL=[];}
else{throw("SwDHMSelect missing args.");}}
eval(Dynarch.EXPORT("SwDHMSelect"));D.DEFAULT_ARGS={_swEvent:["swEvent",null]};P.initDOM=function(){BASE.initDOM.call(this);this.durHbox=new DlHbox({parent:this});this.spinnerDays=new DlSpinner({parent:this.durHbox,minVal:0,maxVal:99,value:0,size:2});this.spinnerDays.addEventListener("onSpin",function(){}.$(this));this.durHbox.addSpace();this.daysSep=new DlLabel({parent:this.durHbox,label:" days "});this.durHbox.addSpace();this.spinnerHours=new DlSpinner({parent:this.durHbox,minVal:0,maxVal:23,value:0,size:2});this.spinnerHours.addEventListener("onSpin",function(){}.$(this));this.durHbox.addSpace();this.hoursSep=new DlLabel({parent:this.durHbox,label:" hours "});this.durHbox.addSpace();this.spinnerMinutes=new DlSpinner({parent:this.durHbox,minVal:0,maxVal:59,value:0,size:2});this.spinnerMinutes.addEventListener("onSpin",function(){}.$(this));this.durHbox.addSpace();this.minutesSep=new DlLabel({parent:this.durHbox,label:" minutes"});};P.setHasFreq=function(aHasFreq){this.hasFreq=aHasFreq;};P.getStartDateTime=function(){var dateTime={};if(!this._noStart.disabled()&&this._noStart.checked()){return dateTime;}
dateTime.year=this._startDate.getCalendar().date.getFullYear();dateTime.month=this._startDate.getCalendar().date.getMonth()+1;dateTime.dayOfMonth=this._startDate.getCalendar().date.getDate();dateTime.hourOfDay=parseInt(this.startHours.getValue(),10);dateTime.minute=parseInt(this.startMinutes.getValue(),10);dateTime.second=0;return dateTime;};P.setDurationMinutes=function(dm){this.durationMinutes=dm;this.recalculateDuration();};P.refreshView=function(swEvent,saveAll){if(swEvent){this._swEvent=swEvent;this.durationMinutes=this._swEvent._data.syncSWorldCalComp.durationMinutes;}
this.recalculateDuration();};P.recalculateDuration=function(){if(this._swEvent._objectType=="SwTask"&&this._noDue.checked()){return;}
var days=0;var hours=0;var minutes=0;var startYear=this._swEvent.getStartYear();if(startYear){minutes+=this.durationMinutes;if(minutes>59){hours+=Math.floor(minutes/60);minutes=minutes%60;if(hours>23){days+=Math.floor(hours/24);hours=hours%24;}}}
this.spinnerDays.setValue(days);this.spinnerHours.setValue(hours);this.spinnerMinutes.setValue(minutes);};P.saveToEvent=function(event){var durationMinutes=this.getDurationMinutes();event.durationMinutes=durationMinutes;};P.getDurationMinutes=function(){var durationMinutes=parseInt(this.spinnerMinutes.getValue(),10);durationMinutes+=this.spinnerHours.getValue()*60;durationMinutes+=this.spinnerDays.getValue()*1440;return durationMinutes;};P.addStartListener=function(listener){this.startListenerL.push(listener);};})();function PBKDF2(password,salt,num_iterations,num_bytes)
{var m_bpassword=str2binb(password);var m_salt=salt;var m_total_iterations=num_iterations;var m_iterations_in_chunk=10;var m_iterations_done=0;var m_key_length=num_bytes;var m_hash_length=20;var m_total_blocks=Math.ceil(m_key_length/m_hash_length);var m_current_block=1;var m_ipad=new Array(16);var m_opad=new Array(16);var m_buffer=new Array(0x0,0x0,0x0,0x0,0x0);var m_key="";var m_result_func;var m_status_func;if(m_bpassword.length>16)m_bpassword=core_sha1(m_bpassword,password.length*chrsz);for(var i=0;i<16;++i)
{m_ipad[i]=m_bpassword[i]^0x36363636;m_opad[i]=m_bpassword[i]^0x5C5C5C5C;}
this.deriveKey=function(status_callback,result_callback)
{m_status_func=status_callback;m_result_func=result_callback;var this_object=this;setTimeout(function(){this_object.do_PBKDF2_iterations()},0);}
this.do_PBKDF2_iterations=function()
{var iterations=m_iterations_in_chunk;if(m_total_iterations-m_iterations_done<m_iterations_in_chunk)
iterations=m_total_iterations-m_iterations_done;for(var i=0;i<iterations;++i)
{if(m_iterations_done==0)
{var salt_block=m_salt+
String.fromCharCode(m_current_block>>24&0xF)+
String.fromCharCode(m_current_block>>16&0xF)+
String.fromCharCode(m_current_block>>8&0xF)+
String.fromCharCode(m_current_block&0xF);m_hash=core_sha1(m_ipad.concat(str2binb(salt_block)),512+salt_block.length*8);m_hash=core_sha1(m_opad.concat(m_hash),512+160);}
else
{m_hash=core_sha1(m_ipad.concat(m_hash),512+m_hash.length*32);m_hash=core_sha1(m_opad.concat(m_hash),512+160);}
for(var j=0;j<m_hash.length;++j)
m_buffer[j]^=m_hash[j];m_iterations_done++;}
m_status_func((m_current_block-1+m_iterations_done/m_total_iterations)/m_total_blocks*100);if(m_iterations_done<m_total_iterations)
{var this_object=this;setTimeout(function(){this_object.do_PBKDF2_iterations()},0);}
else
{if(m_current_block<m_total_blocks)
{m_key+=binb2hex(m_buffer);m_current_block++;m_buffer=new Array(0x0,0x0,0x0,0x0,0x0);m_iterations_done=0;var this_object=this;setTimeout(function(){this_object.do_PBKDF2_iterations()},0);}
else
{var tmp=binb2hex(m_buffer);m_key+=tmp.substr(0,(m_key_length-(m_total_blocks-1)*m_hash_length)*2);m_result_func(m_key);}}}}
SWApp.prototype.emPPPayPal=function(){var swuser=swApp.syncSWorld.swemuserM[swApp.syncSWorld.userSettingsDTO.swuserid];var children=this.emContainerPPPEM.children();if(children&&children.length>0){this.refreshPPPEM(swuser);this.rightNotebookEM.showPane(this.EM_DEF_PPPEM);return;}
var vbox=new DlVbox({parent:this.emContainerPPPEM});var hbox=new DlHbox({parent:vbox});var htmlCont=new DlContainer({parent:hbox});htmlCont.setContent(["<h1>PayPal - Web Payments Pro</h1>","<p><span style='font-size: medium; font-weight: bold;'>What is Web Payments Pro?</span></p>","<p><span style='font-size: small;'>PayPal Website Payments Pro is an all-in-one solution that allows you to accept credit cards and PayPal. Buyers can enter their credit card numbers directly on your site.</span></p>","<p><span style='font-size: medium; font-weight: bold;'>How do you get your money?</span></p>","<p><span style='font-size: small;'>The buyer funds go directly into your account. You send our fees to us within 30 days after your event has started.</span></p>","<p><span style='font-size: medium; font-weight: bold;'>What are the Event Manager fees?</span></p>","<p><span style='font-size: small;'>There are no setup fees and no monthly fees. The fee is 2.0% up to a maximum of $9.99 per transaction.</span></p>","<p><span style='font-size: medium; font-weight: bold;'>Additional Benefits for Website Payments Pro</span></p>","<p><span style='font-size: small;'>","<ul><b>All in one</b>","<li>Includes the features of an internet merchant account and gateway in one solution.</li>","<li>All your reports, statements, billing information, and support are in one spot.</li>","<li>One phone number to get help 24/7 for all your payment needs.</li>","</ul>","<ul><b>Fraud protection</b>","<li>PayPal includes some of the industry's best automatic fraud screening technology.</li>","<li>Eligible transactions are covered against unauthorized payments, charge-backs, and reversals through PayPal's Seller Protection Policy.</li>","</ul>","<ul><b>Affordable pricing</b>","<li>No setup or cancellation fees.</li>","<li>Just $30 per month plus low per-transaction fees, typically from 2.2% to 2.9% plus $0.30, depending on how much revenue you take in each month. The higher your volume, the lower your rate.</li>","</ul>","</span></p>","<p><span style='font-size: medium; font-weight: bold;'>What are my currency options?</span></p>","<p><span style='font-size: small;'>Credit card payments (Feb 23, 2010) in USD, AUD, CAD, EUR, GBP, JPY, NZD, PLN, SGD, and SEK.</span></p>","<p><span style='font-size: small;'>PayPal payments (Feb 23, 2010) in USD, AUD, GBP, CAD, CZK, DKK, EUR, HKD, HUF, ILS, JPY, MXN, NZD, NOK, PHP, PLN, SGD, SEK, CHF, TWD, and THB.</span></p>","<p><span style='font-size: medium; font-weight: bold;'>How do I configure my PayPal profile to make this work?</span></p>","<p><span style='font-size: small;'>We have created a 'HOWTO' called:<a href='/sw2/s5/s5-paypal-wpp.html' target='_blank'>Website Payments Pro Configuration</a></span></p>",""].join(""));var sbHbox=new DlHbox({parent:this.emContainerPPPEM});this.emPPSave=new DlButton({parent:sbHbox,label:"Save"});this.emPPSave.addEventListener("onClick",function(){var email=this.ppEmail.getValue();if(!isEmailValid(email)){alert("The PayPal email is not valid.");return;}
var onSuccess=function(response){if(response&&response.hasOwnProperty("failed")){alert("Save failed:\n"+response.failed);return;}
alert("Save successfull.");swApp.syncSWorld.swemuserM[swApp.syncSWorld.userSettingsDTO.swuserid]=response.swuser;swApp.syncSWorld.saveSwemuserM();};var onFail=function(response){alert("Save failed.");};var swuser=swApp.syncSWorld.swemuserM[swApp.syncSWorld.userSettingsDTO.swuserid];var request={};request.em=true;request.command="updateSwemuser";request.processor="wpp";request["paypal-merchant-email"]=this.ppEmail.getValue();swuser["payment-provider"]=this.currentProvider.getValue();swApp.syncSWorld.sendRequest(request,null,handleEvalResponse.$(this,onSuccess.$(this),onFail));}.$(this));sbHbox.addSpace();this.emPPBack=new DlButton({parent:sbHbox,label:"Back"});sbHbox.addFiller();this.emPPBack.addEventListener("onClick",function(){this.leftNotebook.showPane(this.CALENDAR_PAGE);this.toolbarNotebook.showPane(this.TOOLBAR_CALENDAR_PAGE);this.toolbarNotebook.display(true);this.rightNotebook.showPane(this.CAL_EDIT_PAGE);}.$(this));var prefs=new SwColLayout({parent:this.emContainerPPPEM});var content=String.buffer("<col class='label'>",this.i18n("PayPal Merchant ID (Email)"),": <br /> <span class='help'>You must have a PayPal account with Web Payments Pro enabled.</span> </col> <col><wcont>ppEmail</wcont></col>","<sep/>","<col class='label'>",this.i18n("Payment Provider"),": <br /> <span class='help'>Your currently configured payment provider.</span> </col> <col><wcont>currentProvider</wcont></col>","<sep/>","<col class='label'>",this.i18n("PayPal Merchant Quick Signup"),": <br /><span class='help'>Please use this link to sign up with PayPal. ScheduleWorld receives a referral bonus when you do this. You can also use this link to upgrade your personal PayPal account.</span> </col> <col><wcont>ppMerSignup</wcont></col>","<sep/>");var ids=prefs.setContent(content.get());this.ppEmail=new DlEntry({parent:prefs,appendArgs:ids.ppEmail,size:40});var providerOptions=[{label:"None",value:"none"},{label:"Web Payments Standard",value:"WPS"},{label:"Web Payments Pro",value:"WPP"}];this.currentProvider=new DlRadioSelect({parent:prefs,value:"none",appendArgs:ids.currentProvider,options:providerOptions});this.ppMerSignup=new DlLabel({parent:prefs,appendArgs:ids.ppMerSignup,label:"<a href='https://www.paypal.com/ca/mrb/pal=W6HEGC3GSEDSU'>PayPal Merchant Signup</a>"});this.refreshPPPEM(swuser);this.rightNotebookEM.showPane(this.EM_DEF_PPPEM);};SWApp.prototype.refreshPPPEM=function(swuser){var ppme=swuser["paypal-merchant-email"];if(!strValid(ppme)){ppme="";}
this.ppEmail.setValue(ppme);var provider=swuser["payment-provider"];if(!strValid(provider)){provider="none";}
this.currentProvider.setValue(provider);};SWApp.prototype.emWPS=function(){var swuser=swApp.syncSWorld.swemuserM[swApp.syncSWorld.userSettingsDTO.swuserid];var children=this.emContainerWPS.children();if(children&&children.length>0){this.refreshWPS(swuser);this.rightNotebookEM.showPane(this.EM_DEF_WPS);return;}
var vbox=new DlVbox({parent:this.emContainerWPS});var hbox=new DlHbox({parent:vbox});var htmlCont=new DlContainer({parent:hbox});htmlCont.setContent(["<h1>PayPal - Web Payments Standard</h1>","<p><span style='font-size: medium; font-weight: bold;'>What is Web Payments Standard?</span></p>","<p><span style='font-size: small;'>PayPal Website Payments Standard is a fast, affordable way to start accepting credit cards and PayPal payments online. Your buyers pay on secure PayPal pages, but do not need a PayPal account to pay you.</span></p>","<p><span style='font-size: medium; font-weight: bold;'>How do you get your money?</span></p>","<p><span style='font-size: small;'>The buyer funds go directly into your account. You send our fees to us within 30 days after your event has started.</span></p>","<p><span style='font-size: medium; font-weight: bold;'>What are the Event Manager fees?</span></p>","<p><span style='font-size: small;'>There are no setup fees and no monthly fees. The fee is 2.0% up to a maximum of $9.99 per transaction.</span></p>","<p><span style='font-size: medium; font-weight: bold;'>PayPal Benefits</span></p>","<p><span style='font-size: small;'>","<ul><b>Easy to manage</b>","<li>PayPal sends automatic order confirmation email messasges to both you and your customers.</li>","<li>Get simple sales activity and accounting reports that you can export to Intuit QuickBooks or Microsoft Excel.</li>","<li>Sell internationally with automatic currency conversion.</li>","</ul>","<ul><b>Fraud protection</b>","<li>PayPal includes some of the industry's best automatic fraud screening technology.</li>","<li>Eligible transactions are covered against unauthorized payments, charge-backs, and reversals through PayPal's Seller Protection Policy.</li>","<li>You don't need to store or transmit sensitive payment data, because your customers pay on secure pages hosted by PayPal.</li>","</ul>","<ul><b>Affordable pricing</b>","<li>You don't pay a thing until you get paid - no setup fees, monthly fees, or cancellation fees.</li>","<li>Low per-transaction fees typically range from 1.9% to 2.9% plus $0.30, depending on how much revenue you take in each month. The higher your volume, the lower your rate.</li>","</ul>","</span></p>","<p><span style='font-size: medium; font-weight: bold;'>Which Free PayPal Account Do I Need?</span></p>","<p><span style='font-size: small;'>Premium or Business will work.</span></p>","<p><span style='font-size: medium; font-weight: bold;'>How Do I Set Up A New Free PayPal Account?</span></p>","<p><span style='font-size: small;'>1. open <a href='https://www.paypal.com/ca/mrb/pal=W6HEGC3GSEDSU'>Go to PayPal</a> in a new window/tab.</span></p>","<p><span style='font-size: small;'>2. click 'Sign Up Today!'.</span></p>","<p><span style='font-size: small;'>3. click 'Get Started' for 'Business'.</span></p>","<p><span style='font-size: small;'>4. select Payment Solution == Website Payments Standard.</span></p>","<p><span style='font-size: small;'>5. fill out the forms and complete the process...</span></p>","<p><span style='font-size: small;'>6. add a bank account to become a verified member so you can transfer funds from PayPal to your bank. This may take a few business days.</span></p>","<p><span style='font-size: medium; font-weight: bold;'>How Do I Upgrade My Personal Account To Premium or Business?</span></p>","<p><span style='font-size: small;'>1. open <a href='https://www.paypal.com/ca/mrb/pal=W6HEGC3GSEDSU'>Go to PayPal</a> in a new window/tab.</span></p>","<p><span style='font-size: small;'>2. click 'Sign Up Today'.</span></p>","<p><span style='font-size: small;'>3. click 'Upgrade now'.</span></p>","<p><span style='font-size: small;'>4. click 'Upgrade Now'.</span></p>","<p><span style='font-size: small;'>5. enter your existing PayPal email/password and click 'Continue'.</span></p>","<p><span style='font-size: small;'>6. fill out the forms and complete the process...</span></p>","<p><span style='font-size: small;'>7. make sure you have added a bank account to become a verified member so you can transfer funds from PayPal to your bank. This may take a few business days.</span></p>","<p><span style='font-size: medium; font-weight: bold;'>How do I configure my PayPal profile to make this work?</span></p>","<p><span style='font-size: small;'>You must configure PayPal to allow your customers to pay using credit cards:</span></p>","<ol><li>Log in to PayPal and select <b>Profile</b>.<br/>","<img src='images/paypal/mainMenu.png'></img></li><br/>","<li>Select <b>Website Payment Preferences</b>.<br/>","<img src='images/paypal/sellingPreferences.png'></img></li><br/>","<li>Scroll down to <b>PayPal Account Optional</b> and select <b>On</b>.<br/>","<img src='images/paypal/ppAccountOptional.png'></img></li>",""].join(""));var sbHbox=new DlHbox({parent:this.emContainerWPS});this.wpsSave=new DlButton({parent:sbHbox,label:"Save"});this.wpsSave.addEventListener("onClick",function(){var email=this.wpsEmail.getValue();if(!isEmailValid(email)){alert("The PayPal email is not valid.");return;}
var onSuccess=function(response){if(response&&response.hasOwnProperty("failed")){alert("Save failed:\n"+response.failed);return;}
alert("Save successfull.");swApp.syncSWorld.swemuserM[swApp.syncSWorld.userSettingsDTO.swuserid]=response.swuser;swApp.syncSWorld.saveSwemuserM();};var onFail=function(response){alert("Save failed.");};var swuser=swApp.syncSWorld.swemuserM[swApp.syncSWorld.userSettingsDTO.swuserid];var request={};request.em=true;request.command="updateSwemuser";request["paypal-merchant-email"]=this.wpsEmail.getValue();request["can-gst"]=this.wpsCanGST.checked();swApp.syncSWorld.sendRequest(request,null,handleEvalResponse.$(this,onSuccess.$(this),onFail));}.$(this));sbHbox.addSpace();this.wpsBack=new DlButton({parent:sbHbox,label:"Back"});sbHbox.addFiller();this.wpsBack.addEventListener("onClick",function(){this.leftNotebook.showPane(this.CALENDAR_PAGE);this.toolbarNotebook.showPane(this.TOOLBAR_CALENDAR_PAGE);this.toolbarNotebook.display(true);this.rightNotebook.showPane(this.CAL_EDIT_PAGE);}.$(this));var prefs=new SwColLayout({parent:this.emContainerWPS});var content=String.buffer("<col class='label'>",this.i18n("Canadian GST"),": <br /> <span class='help'>You must select this if you are registered to collect Canadian GST.</span> </col> <col><wcont>wpsCanGST</wcont></col>","<sep/>","<col class='label'>",this.i18n("PayPal Merchant ID (Email)"),": <br /> <span class='help'>You must have a PayPal account.</span> </col> <col><wcont>wpsEmail</wcont></col>");var ids=prefs.setContent(content.get());this.wpsCanGST=new DlCheckbox({parent:prefs,appendArgs:ids.wpsCanGST,label:"(For fee tax calculations)"});this.wpsEmail=new DlEntry({parent:prefs,appendArgs:ids.wpsEmail,size:40});this.refreshWPS(swuser);this.rightNotebookEM.showPane(this.EM_DEF_WPS);};SWApp.prototype.refreshWPS=function(swuser){var ppme=swuser["paypal-merchant-email"];if(!strValid(ppme)){ppme="";}
this.wpsEmail.setValue(ppme);var canGST=swuser["can-gst"];if(canGST){this.wpsCanGST.checked(true);}
else{this.wpsCanGST.checked(false);}};SWApp.prototype.emCEC=function(){var swuser=swApp.syncSWorld.swemuserM[swApp.syncSWorld.userSettingsDTO.swuserid];var children=this.emContainerCEC.children();if(children&&children.length>0){this.refreshCEC(swuser);this.rightNotebookEM.showPane(this.EM_DEF_CEC);return;}
var vbox=new DlVbox({parent:this.emContainerCEC});var hbox=new DlHbox({parent:vbox});var htmlCont=new DlContainer({parent:hbox});htmlCont.setContent(["<h1>Canadian e-Cheques</h1>","<p><span style='font-size: medium; font-weight: bold;'>Question?</span></p>","<p><span style='font-size: small;'>Answer.</span></p>","<p><span style='font-size: medium; font-weight: bold;'>How do you get your money?</span></p>","<p><span style='font-size: small;'>Answer.</span></p>","<p><span style='font-size: medium; font-weight: bold;'>What are the Event Manager fees?</span></p>","<p><span style='font-size: small;'>There are no setup fees and no monthly fees. The fee is 0.99 + 2.5% up to a maximum of $3.98 per transaction.</span></p>","<p><span style='font-size: medium; font-weight: bold;'>eCheque Benefits</span></p>","<p><span style='font-size: small;'>","<ul><b>Easy to manage</b>","<li>A.</li>","<li>B.</li>","<li>C.</li>","</ul>","<ul><b>Fraud protection</b>","<li>A.</li>","<li>B.</li>","<li>C.</li>","</ul>","<ul><b>Affordable pricing</b>","<li>A.</li>","<li>B.</li>","</ul>","</span></p>","<p><span style='font-size: medium; font-weight: bold;'>Question?</span></p>","<p><span style='font-size: small;'>Answer.</span></p>",""].join(""));var sbHbox=new DlHbox({parent:this.emContainerCEC});this.cecSave=new DlButton({parent:sbHbox,label:"Save"});this.cecSave.addEventListener("onClick",function(){var vals=this.cecFG.getValues();if(!vals.branch||vals.branch.length!=5){alert("The branch is not valid.");return;}
if(!vals.institution||vals.institution=='none'){alert("The institution is not valid.");return;}
if(!vals.account||vals.account.length<3){alert("The account is not valid.");return;}
var onSuccess=function(response){if(response&&response.hasOwnProperty("failed")){alert("Save failed:\n"+response.failed);return;}
alert("Save successfull.");swApp.syncSWorld.swemuserM[swApp.syncSWorld.userSettingsDTO.swuserid]=response.swuser;swApp.syncSWorld.saveSwemuserM();};var onFail=function(response){alert("Save failed.");};var swuser=swApp.syncSWorld.swemuserM[swApp.syncSWorld.userSettingsDTO.swuserid];var request={};request.em=true;request.command="updateSwemuser";request["cec-branch"]=vals.branch;request["cec-institution"]=vals.institution;request["cec-account"]=vals.account;request["can-gst"]=this.cecCanGST.checked();swApp.syncSWorld.sendRequest(request,null,handleEvalResponse.$(this,onSuccess.$(this),onFail));}.$(this));sbHbox.addSpace();this.cecBack=new DlButton({parent:sbHbox,label:"Back"});sbHbox.addFiller();this.cecBack.addEventListener("onClick",function(){this.leftNotebook.showPane(this.CALENDAR_PAGE);this.toolbarNotebook.showPane(this.TOOLBAR_CALENDAR_PAGE);this.toolbarNotebook.display(true);this.rightNotebook.showPane(this.CAL_EDIT_PAGE);}.$(this));var prefs=new SwColLayout({parent:this.emContainerCEC});var content=String.buffer("<col class='label'>",this.i18n("Canadian GST"),": <br /> <span class='help'>You must select this if you are registered to collect Canadian GST.</span> </col> <col><wcont>cecCanGST</wcont></col>","<sep/>","<col class='label'>",this.i18n("Chequing Account"),": <br /> <span class='help'>We deposit your money into this account. <a href='http://en.wikipedia.org/wiki/File:CanadianChequeSample.png'>This cheque</a> has branch 00005, institution 123, account 1234567.</span> </col> <col><wcont>cecFG</wcont></col>");var ids=prefs.setContent(content.get());this.cecCanGST=new DlCheckbox({parent:prefs,appendArgs:ids.cecCanGST,label:"(For fee tax calculations)"});this.cecFG=new DlFieldGrid({parent:prefs,appendArgs:ids.cecFG});this.branchValidator=new DlValidator(DlValidator.Number,0,99999,true,0);this.cecFG.addField({name:"branch",label:"<b>Branch (5 Digits):</b>"});this.institutionSelect=new DlRadioSelect({options:institutionOptions,value:"none"});this.cecFG.addField({name:"institution",label:"<b>Institution:</b>",widget:this.institutionSelect});this.accountValidator=new DlValidator(DlValidator.Number,0,9999999999,true,0);this.cecFG.addField({name:"account",label:"<b>Account Number:</b>",widget:new DlEntry({validators:[this.accountValidator]})});this.refreshCEC(swuser);this.rightNotebookEM.showPane(this.EM_DEF_CEC);};SWApp.prototype.refreshCEC=function(swuser){var fgVals={};var branch=swuser["cec-branch"];if(!strValid(branch)){branch="";}
fgVals.branch=branch;var institution=swuser["cec-institution"];if(!strValid(institution)){institution="";}
fgVals.institution=institution;var account=swuser["cec-account"];if(!strValid(account)){account="";}
fgVals.account=account;this.cecFG.setValues(fgVals);var canGST=swuser["can-gst"];if(canGST){this.cecCanGST.checked(true);}
else{this.cecCanGST.checked(false);}};(function(){var BASE=SwSplitPayments.inherits(DlContainer);function SwSplitPayments(args){if(args){D.setDefaults(this,args);this._focusable=true;BASE.constructor.call(this,args);}
else{throw("SwSplitPayments missing args.");}}
eval(Dynarch.EXPORT("SwSplitPayments"));D.DEFAULT_ARGS={_priceEntry:["priceEntry",null],_invoice:["invoice",null],_addRemoveCB:["addRemoveCB",null]};P.initDOM=function(){BASE.initDOM.call(this);this.paymentCount=0;this.swInitDOM();};P.refreshPrice=function(){var price=this.getPriceCents();if(this.paymentCount>0){price=price/this.paymentCount;}
var fp=formatPrice(price,swApp.locale.groupingSeparator,swApp.locale.monetaryDecimalSeparator|swApp.locale.decimalSeparator);this._addRemoveCB(fp);};P.priceChanged=function(){this.refreshPrice();};P.swInitDOM=function(){var date=new Date();var dateFormat=swApp.getDateFormat();this._priceEntry.addEventListener("onChange",this.priceChanged.$(this));var defaultStartDay=0;if(swApp.syncSWorld.userSettingsDTO.firstWeekDay=="2"){defaultStartDay=1;}
var tmpHbox=new DlHbox({parent:this});this.buttonCal=new DlButtonCalendar({parent:tmpHbox,fillParent:true,date:date,dateFormat:dateFormat,calendar:{firstDay:defaultStartDay,fixedFirstDay:false,withMenu:true}});this.buttonCal.addEventListener("onSelect",function(date){this.buttonCal.getCalendar().setData("swclicked",true);var sHbox=new DlHbox({parent:this.vbox});var label=new DlLabel({parent:sHbox,label:date.print(dateFormat)});label.dayOfMonth=date.getDate();label.month=date.getMonth()+1;label.year=date.getFullYear();sHbox.addSpace();sHbox.addFiller();this.addPrice();var delB=new DlButton({parent:sHbox,label:"Del"});delB.parentHbox=sHbox;delB.parentVbox=this.vbox;delB.sspThis=this;delB.addEventListener("onClick",function(){swApp.log("remove specific instance");this.parentVbox.removeWidget(this.parentHbox);this.sspThis.removePrice();});}.$(this));tmpHbox.addSpace();var tmp=new DlLabel({parent:tmpHbox,label:"(select payment dates)"});this.vbox=new DlVbox({parent:this});};P.getPriceCents=function(){var val=this._priceEntry.getValue();var price=val.replace(/\./,"");price=price.replace(/\,/,"");return price;};P.addPrice=function(){if(this.refreshing){return;}
++this.paymentCount;var price=this.getPriceCents();if(this.paymentCount>0){price=price/this.paymentCount;}
var fp=formatPrice(price,swApp.locale.groupingSeparator,swApp.locale.monetaryDecimalSeparator|swApp.locale.decimalSeparator);this._addRemoveCB(fp);};P.removePrice=function(){if(this.refreshing){return;}
--this.paymentCount;var price=this.getPriceCents();if(this.paymentCount>0){price=price/this.paymentCount;}
var fp=formatPrice(price,swApp.locale.groupingSeparator,swApp.locale.monetaryDecimalSeparator|swApp.locale.decimalSeparator);this._addRemoveCB(fp);};P.refreshView=function(invoice){if(invoice){this._invoice=invoice;}
this.paymentCount=0;this.refreshing=true;var date=new Date();var dateFormat=swApp.getDateFormat();this.buttonCal.getCalendar().selectDate(date);this.buttonCal.getCalendar().date=date;this.buttonCal.getButton().label(date.print(dateFormat),true);this.buttonCal.getCalendar().setData("swclicked",false);this.vbox.destroyChildWidgets();if(!invoice){this.refreshing=false;this.refreshPrice();return;}
var splitPayments=invoice["split-payments"];if(!splitPayments){this.refreshing=false;this.refreshPrice();return;}
var spre=/(\d*)-(\d*)-(\d*)/;for(var i=0;i<splitPayments.length;++i){var splitPayment=splitPayments[i];var results=spre.exec(splitPayment);date.setDate(1);date.setMonth(results[2]-1);date.setFullYear(results[1]);date.setDate(results[3]);var sHbox=new DlHbox({parent:this.vbox});var label=new DlLabel({parent:sHbox,label:date.print(dateFormat)});label.dayOfMonth=results[3];label.month=results[2]-1;label.year=results[1];sHbox.addFiller();var delB=new DlButton({parent:sHbox,label:"Del"});delB.parentHbox=sHbox;delB.parentVbox=this.vbox;delB.addEventListener("onClick",this.delBOnClick);++this.paymentCount;}
this.refreshPrice();this.refreshing=false;};P.delBOnClick=function(){swApp.log("remove specific instance");this.parentVbox.removeWidget(this.parentHbox);};P.save=function(){};P.getValues=function(){var values={};var splitPayments=[];values["split-payments"]=splitPayments;for(var i=0;i<this.vbox._widgets.length;++i){var children=this.vbox._widgets[i]._widgets;var label=children[0];if(label.dayOfMonth){swApp.log("dayOfMonth:"+label.dayOfMonth);var value=""+label.year+"-"+label.month+"-"+
label.dayOfMonth;splitPayments.push(value);}}
return values;};})();SWApp.prototype.emLearnMoreWL=function(layout){var cont=new DlContainer({scroll:true});cont.getElement().style.padding="20px";cont.setContent(["<p><span style='font-size: medium; font-weight: bold;'>Waiting List Enabled.</span></p>","<p><span style='font-size: small;'>Enables or disables all waiting list features for this invoice.</span></p>","<p><span style='font-size: small;'>If the number of orders has exceeded the quantity available:</span></p>","<p><span style='font-size: small;'>customers are asked if they wish to be added to the waiting list or not.</span></p>",""].join(""));layout.packWidget(cont,{pos:"left",fill:"*"});};(function(){var BASE=SwPurchase.inherits(DlRecord);function SwPurchase(args){if(args){DlRecord.call(this,args);}}
eval(Dynarch.EXPORT("SwPurchase"));D.DEFAULT_ARGS={};P.numCompare2=function(a,b){return a<b?-1:a==b?0:1;};P.compareInvoices=function(rec,col){var buf=String.buffer();rec._set.formatHTML(this,col,buf);var buf2=String.buffer();rec._set.formatHTML(rec,col,buf2);var a=buf.get();var b=buf2.get();return a<b?-1:a==b?0:1;};P.compareTo=function(rec,col){if(col.indexOf("swemInvoice-")===0){return this.compareInvoices(rec,col);}
var a=this.get(col);var a1;if(typeof a=='undefined'||a===null){a1=0;}
else{a1=parseInt(a,10);}
var b=rec.get(col);var b1;if(!isNaN(a1)){if(typeof b=='undefined'||b===null){b1=0;}
else{b1=parseInt(b,10);}
if(!isNaN(b1)){return this.numCompare2(a1,b1);}}
if(typeof a=='undefined'||a===null){a="";}
if(typeof b=='undefined'||b===null){b="";}
if(a.toLowerCase){a=a.toLowerCase();}
if(b.toLowerCase){b=b.toLowerCase();}
return a<b?-1:a==b?0:1;};P.contains=function(key){return this._data.hasOwnProperty(key);};P.get=function(key){var v=this._data[key];return v;};})();(function(){var BASE=SwPurchaseCache.inherits(DlRecordCache);function SwPurchaseCache(args){if(args){D.setDefaults(this,args);DlRecordCache.call(this,args);}
var swuserid=swApp.syncSWorld.userSettingsDTO.swuserid;var swuser=swApp.syncSWorld.swemuserM[swuserid];this.surveyM=swuser["survey-map"];}
eval(Dynarch.EXPORT("SwPurchaseCache"));D.DEFAULT_ARGS={_type:["buyer",null],_locale:["locale",null],_itemId:["itemId",null],_isRecipients:["isRecipients",null],_csvDateAmt:["csvDateAmt",null],_taxNames:["taxNames",null]};P.defaultColumns=[{id:"date",label:"Date",width:80},{id:"amt",label:"Total Price",width:100,visible:true},{id:"price",label:"Price",width:100,visible:true},{id:"tax1",label:"Tax1",width:100,visible:true},{id:"tax2",label:"Tax2",width:100,visible:true},{id:"fee",label:"Fee",width:80},{id:"payment-type",label:"Type",width:80,visible:false},{id:"payment_status",label:"Payment Status",width:100,visible:true},{id:"swemFraud-reason",label:"Fraud Reason",width:100,visible:true},{id:"buyerEmail",label:"Buyer Email",width:180},{id:"buyerFirst",label:"Buyer First Name",width:180},{id:"buyerLast",label:"Buyer Last Name",width:180},{id:"note",label:"Note",width:80}];P.recipientDefaultColumns=[{id:"price",label:"Price",width:100,visible:false},{id:"tax1",label:"Tax1",width:100,visible:false},{id:"tax2",label:"Tax2",width:100,visible:false},{id:"email",label:"Attendee Email",width:180,fill:true},{id:"first",label:"First Name",width:180},{id:"last",label:"Last Name",width:180},{id:"buyerEmail",label:"Buyer Email",width:180,visible:false},{id:"buyerFirst",label:"Buyer First",width:180,visible:false},{id:"buyerLast",label:"Buyer Last",width:180,visible:false}];P.getColumnsStorageKey=function(){if(this._isRecipients){return"columnsKeyR-"+this._itemId;}
else{return"columnsKey-"+this._itemId;}};P.getDefaultColumn=function(k,defaults){for(var i=0;i<defaults.length;++i){var col=defaults[i];if(col.id==k){return col;}}
return null;};P.createColumnsFromInvoiceColumns=function(invoiceColumns,defaults){var columns=defaults.slice();for(var k in invoiceColumns){if(invoiceColumns.hasOwnProperty(k)){if(k=="cancelURL"){continue;}
var column=this.getDefaultColumn(k,defaults);if(!column){column={};column.id=k;column.label=invoiceColumns[k];column.width=100;if(k=="id"){column.visible=false;}
if(k=="sendPurchaseConfirmEmail"){column.visible=false;}
if(column.width<20){column.width=100;}
columns.push(column);}}}
return columns;};P.getColumns=function(invoiceColumns){delete this.loadedColumns
if(!this.loadedColumns){if(invoiceColumns){if(!propEmpty(invoiceColumns)){if(this._isRecipients){this.loadedColumns=this.createColumnsFromInvoiceColumns(invoiceColumns,this.recipientDefaultColumns);}
else{this.loadedColumns=this.createColumnsFromInvoiceColumns(invoiceColumns,this.defaultColumns);}}}}
if(!this.loadedColumns&&this._isRecipients){this.loadedColumns=this.recipientDefaultColumns.slice();}
if(!this.loadedColumns){this.loadedColumns=this.defaultColumns.slice();}
if(this._taxNames){var keys=getPropKeys(this._taxNames);for(var i=0;i<keys.length;++i){if(this._isRecipients){this.setTaxColumn("tax"+(i+1),keys[i],false);}
else{this.setTaxColumn("tax"+(i+1),keys[i],true);}}}
return this.loadedColumns.slice();};P.setTaxColumn=function(taxID,taxName,visible){for(var i=0;i<this.loadedColumns.length;++i){var column=this.loadedColumns[i];if(column.id==taxID){this[taxID]=taxName;if(column.label=="Tax1"||column.label=="Tax2"){column.label=taxName;column.visible=visible;}
break;}}};P.formatHTML=function(rec,col,buf){var recDate;var refDate;var invoiceM;var invoice;var recipients;var recipient;var priceCents;var date;var dates;var dateFormat;var taxName;var tax1Cents;var tax2Cents;var amt;var value;var i;if(col=="date"){recDate=rec.get("date");if(recDate){dateFormat=swApp.getDateFormat();date=new Date(recDate);buf(date.print(dateFormat));}}else if(col=="amt"){buf(swApp.locale.currencySymbol);buf(formatPrice(parseInt(rec.get("amt"),10),swApp.locale.groupingSeparator,swApp.locale.monetaryDecimalSeparator|swApp.locale.decimalSeparator));}else if(col=="price"){invoiceM=swApp.syncSWorld.invoiceM;priceCents=0;if(this._isRecipients){invoice=invoiceM[rec.get("invoice-id")];priceCents=invoice.price;}
else{recipients=rec.get("recipients");if(recipients){dates={};for(var index in recipients){if(recipients.hasOwnProperty(index)){recipient=recipients[index];invoice=invoiceM[recipient["invoice-id"]];if(!invoice){continue;}
priceCents+=invoice.price;}}}}
buf(swApp.locale.currencySymbol);buf(formatPrice(priceCents,swApp.locale.groupingSeparator,swApp.locale.monetaryDecimalSeparator|swApp.locale.decimalSeparator));}else if(col=="fee"){buf(swApp.locale.currencySymbol);buf(formatPrice(parseInt(rec.get("fee"),10),swApp.locale.groupingSeparator,swApp.locale.monetaryDecimalSeparator|swApp.locale.decimalSeparator));}else if(col=="tax1"){taxName=this.tax1;if(!taxName){return;}
var taxCents=this.getTax(taxName,rec);this.getTaxIntoBuf(taxCents,buf)}else if(col=="tax2"){taxName=this.tax2;if(!taxName){return;}
var taxCents=this.getTax(taxName,rec);this.getTaxIntoBuf(taxCents,buf)}else if(col=="refund-amount"){amt=rec.get("refund-amount");if(amt){buf(swApp.locale.currencySymbol);buf(formatPrice(amt,swApp.locale.groupingSeparator,swApp.locale.monetaryDecimalSeparator|swApp.locale.decimalSeparator));}}else if(col=="refund-date"){refDate=rec.get(col);if(refDate){dateFormat=swApp.getDateFormat();date=new Date(refDate);buf(date.print(dateFormat));}
else{recipients=rec.get("recipients");if(recipients){dates={};for(var index in recipients){if(recipients.hasOwnProperty(index)){recipient=recipients[index];refDate=recipient["refund-date"];if(!refDate){continue;}
dateFormat=swApp.getDateFormat();date=new Date(refDate);dates[date.print(dateFormat)]=true;}}}
var needsComma=false;for(var k in dates){if(dates.hasOwnProperty(k)){if(needsComma){buf(",");}
buf(k);needsComma=true;}}}}else if(col=="item-id"){var item=swApp.syncSWorld.itemM[rec.get(col)];if(item&&item.label){buf(item.label.htmlEscape());}}else if(col=="invoice-id"){invoice=swApp.syncSWorld.invoiceM[rec.get(col)];if(invoice&&invoice.label){buf(invoice.label.htmlEscape());}}else if(col.indexOf("surveyData-")===0){var surveyDataM=rec.get("surveyDataM");value="";var survey;if(surveyDataM){k=col.substring(11);value=surveyDataM[k];if(value===null||typeof value=='undefined'){value="";}
else{survey=this.surveyM[k];}}
if(this._isRecipients){if(survey&&survey.type=="an-image"){var utmp="<a href='#' id='"+value+"' onclick='return swApp.getUploadOnClick(this);'"+"/>Image</a>";buf(utmp.toString());}
else{buf(value.toString().htmlEscape());}}}else if(col.indexOf("swemInvoice-")===0){value=rec.get(col)||"";if(this._isRecipients){if(!value){buf("0");}
else{buf(value.toString().htmlEscape());}}}else{try{value=rec.get(col)||"";buf(value.toString().htmlEscape());}catch(ex){swApp.log("problem with col:"+col+" -> "+ex);}}};P.getTaxCents=function(invoice,useTaxName){if(!invoice){return 0;}
var taxName=invoice["tax1-name"];var taxPercent=0;if(taxName!=useTaxName){taxName=invoice["tax2-name"];if(taxName!=useTaxName){}
else{taxPercent=invoice["tax2-percent"];}}
else{taxPercent=invoice["tax1-percent"];}
if(taxPercent){var percent=parseFloat(taxPercent)/100;var taxCents=invoice.price*percent;return taxCents;}
return 0;};P.getTax=function(useTaxName,rec){var invoiceM=swApp.syncSWorld.invoiceM;var invoice;var taxCents=0;var taxPercent;var taxName;var percent;var priceCents;if(this._isRecipients){invoice=invoiceM[rec.get("invoice-id")];taxCents=this.getTaxCents(invoice,useTaxName);}
else{var recipients=rec.get("recipients");if(recipients){for(var index in recipients){if(recipients.hasOwnProperty(index)){var recipient=recipients[index];invoice=invoiceM[recipient["invoice-id"]];if(invoice){taxCents+=this.getTaxCents(invoice,useTaxName);}}}}}
return taxCents;};P.getTaxIntoBuf=function(taxCents,buf){buf(swApp.locale.currencySymbol);buf(formatPrice(taxCents,swApp.locale.groupingSeparator,swApp.locale.monetaryDecimalSeparator|swApp.locale.decimalSeparator));};P.isEmpty=function(){if(!this._data){return true;}
for(var key in this._data){if(this._data.hasOwnProperty(key)){return false;}}
return true;};P.getRecordCount=function(){if(!this._data){return 0;}
var count=0;var refundDate;for(var key in this._data){if(this._data.hasOwnProperty(key)){var rec=this._data[key];if(this._isRecipients){refundDate=rec.get("refund-date");if(refundDate){continue;}
++count;continue;}
var recipients=rec.get("recipients");if(!recipients){continue;}
var foundRefundDate=false;for(var index in recipients){if(recipients.hasOwnProperty(index)){var recipient=recipients[index];refundDate=recipient["refund-date"];if(refundDate){foundRefundDate=true;break;}}}
if(foundRefundDate){continue;}
++count;}}
return count;};P.getTotalCents=function(){if(!this._data){return 0;}
if(this._isRecipients){return"0";}
var invoiceM=swApp.syncSWorld.invoiceM;var totalCents=0;for(var key in this._data){if(this._data.hasOwnProperty(key)){var rec=this._data[key];var amt=rec.get("amt");if(!amt){continue;}
var refundAmount=rec.get("refund-amount");if(refundAmount){totalCents-=refundAmount;}
totalCents+=amt;}}
return totalCents;};P.getCSVData=function(){return _csvData;};P.getCSVDateAmt=function(){return this._csvDateAmt;};})();(function(){var BASE=SwPurchaseGrid.inherits(DlContainer);function SwPurchaseGrid(args){if(args){D.setDefaults(this,args);this._focusable=true;BASE.constructor.call(this,args);}
else{throw("SwPurchaseGrid missing args.");}}
eval(Dynarch.EXPORT("SwPurchaseGrid"));D.DEFAULT_ARGS={_itemId:["itemId",null],_buyerChart:["buyerChart",null],_recipientGrid:["recipientGrid",null],_waitingList:["waitingList",null],_resizeCont:["resizeCont",null]};P.skipPaymentProps={recipients:true,ppFinalResponse:true,ppResponse:true,feeAmt:true,message:true,transactionID:true,paymentStatus:true,"publish-version":true,"base-item-id":true,redirectURL:true,token:true,"validate-result":true,reserveItems:true,"swuser-id":true,"purchase-id":true,"ipn-params":true};P.initDOM=function(){BASE.initDOM.call(this);this.swInitDOM();};P.swInitDOM=function(){this.initLabel=new DlLabel({parent:this,label:"No data available yet..."});this.getItemPurchaseData(this._itemId);};P.printClick=function(){swApp._printTitle="test title";swApp._printTotals=true;swApp._printStyleSheet="swprintgrid.css";swApp._printDlGrid=this.buyerListGrid;window.open("js/print/print.html");};D.parseTaxNames=function(recipient,taxNames,taxPrefix){var invoiceM=swApp.syncSWorld.invoiceM;var invoice=invoiceM[recipient["invoice-id"]];var taxNameP=taxNames[invoice[taxPrefix+"-name"]];var taxName=invoice[taxPrefix+"-name"];if(taxNameP&&taxNameP.length>0){var recipientP=invoice[taxPrefix+"-percent"];if(taxNameP){if(taxNameP!=recipientP){alert("ERROR: you have multiple invoices defined\nwith the same tax name set to different percentages.\nTax name:"+
taxName+": value 1:"+
taxNameP+", value 2:"+recipientP);return;}
return;}}
if(taxName&&taxName.length>0){taxNames[taxName]=invoice[taxPrefix+"-percent"];}};P.requestSuccess=function(response){try{if(response&&response.hasOwnProperty("failed")){this.requestFail(response);return;}
if(!this.initLabel.destroyed){this.initLabel.label("Processing data...");}
var columns={};var records=[];var ids=[];var recipientRecords=[];var firstPass={};var taxNames={};var fdate;var invoiceM=swApp.syncSWorld.invoiceM;for(var purchaseId in response.data){if(response.data.hasOwnProperty(purchaseId)){var purchase=response.data[purchaseId];if(!purchase){continue;}
purchase.id=purchaseId;var record=new SwPurchase({data:purchase});records.push(record);for(var k in purchase){if(purchase.hasOwnProperty(k)){if(this.skipPaymentProps.hasOwnProperty(k)){continue;}
columns[k]=k;}}
var recipients=purchase.recipients;for(index in recipients){if(recipients.hasOwnProperty(index)){var recipient=purchase.recipients[index];if(this._waitingList){if(!recipient.wl){continue;}}
else{if(recipient.wl){continue;}}
recipientRecords.push(new SwPurchase({data:recipient}));D.parseTaxNames(recipient,taxNames,"tax1");D.parseTaxNames(recipient,taxNames,"tax2");}}
if(swPropCount(taxNames)>2){var tn=getPropKeys(taxNames);alert("The system was not designed to handle more than 2 taxes.\nYou are using:"+tn.join(","));return;}
var pdate=purchase.date;var refundDate=purchase["refund-date"];var dateData;var valid=false;if(purchase.payment_status=="Completed"){valid=true;}
if(purchase.payment_status=="Canceled_Reversal"){valid=true;}
if(pdate&&!refundDate&&valid){var amt=purchase.amt;if(amt){var date=new Date(pdate);var month=date.getMonth()+1;if(month<10){month="0"+month;}
var dayOfMonth=date.getDate();if(dayOfMonth<10){dayOfMonth="0"+dayOfMonth;}
fdate=""+date.getFullYear()+"-"+
month+"-"+dayOfMonth;dateData=firstPass[fdate];if(dateData){if(!dateData.hasOwnProperty("tmpAmt")){dateData.tmpAmt=0;}
dateData.tmpAmt=dateData.tmpAmt+amt;if(!dateData.hasOwnProperty("fee")){dateData.fee=0;}
dateData.fee=dateData.fee+purchase.fee;}
else{dateData={};firstPass[fdate]=dateData;dateData.tmpAmt=amt;dateData.fee=purchase.fee;}}}}}
var csvDateAmt=String.buffer();if(!propEmpty(firstPass)){var secondPassKeys=getPropKeys(firstPass);secondPassKeys.sort();csvDateAmt("Date,Amount\n");for(var i=0;i<secondPassKeys.length;++i){fdate=secondPassKeys[i];csvDateAmt(fdate);csvDateAmt(",");var fAmt=parseFloat(firstPass[fdate].tmpAmt)/100;csvDateAmt(fAmt);csvDateAmt("\n");}}
if(this._invoiceIds){for(i=0;i<this._invoiceIds.length;++i){var invoiceId=this._invoiceIds[i];var invoice=invoiceM[invoiceId];columns[invoiceId]=invoice.label;}}
this.destroyChildWidgets();var baseItemId;for(var k in response.data){if(response.data.hasOwnProperty(k)){var purchase=response.data[k];baseItemId=purchase["base-item-id"];}}
this.swInitGrid(records,columns,csvDateAmt.get(),taxNames,baseItemId);if(this._recipientGrid){this._recipientGrid.parsePurchaseData(response.data,taxNames,this._invoiceIds);}
this._resizeCont.callHooks("onResize");}catch(ex){swApp.logEX(ex);}};P.requestFail=function(response){var message="Failed to get event purchase data";if(response&&response.hasOwnProperty("failed")){message+=":\n"+response.failed;}
else{message+=".";}
alert(message);};P.getItemPurchaseData=function(itemId){var request={};request.em=true;if(itemId){request["item-id"]=itemId;}
request.command="getItemPurchaseData";if(!this.initLabel.destroyed){this.initLabel.label("Requesting data...");}
swApp.syncSWorld.sendRequest(request,null,this.requestSuccess.$(this),this.requestFail);};P.clear=function(invoiceId){if(!this.purchaseCache){return;}
if(invoiceId){this._invoiceIds=[invoiceId];}
var displayIDs=this.purchaseCache.getAllIds();this.purchaseCache.remove(displayIDs);this.buyerListGrid.resetIDS([]);this.buyerListGrid.displayPage(0);};P.swInitGrid=function(records,invoiceColumns,csvDateAmt,taxNames,itemId){this.purchaseCache=new SwPurchaseCache({data:records,invoiceIds:this._invoiceIds,csvDateAmt:csvDateAmt,taxNames:taxNames,itemId:itemId});var columns=this.purchaseCache.getColumns(invoiceColumns);this.selectionModel=new DlSelectionModel({});this.buyerListGrid=new SwDataGrid({parent:this,cols:columns,data:this.purchaseCache,fillParent:true,rpp:45,virtualScrolling:true,selection:this.selectionModel});if(!this.purchaseCache.isEmpty()){var displayIDs=this.purchaseCache.getAllIds();this.buyerListGrid.resetIDS(displayIDs);this.buyerListGrid._onHeadClick(this.buyerListGrid.getCol("date"),null);}
else{this.buyerListGrid.resetIDS([]);}
this.buyerListGrid.displayPage(0);this.buyerListGrid.addEventListener("onBodyDblClick",this.dblClick.$(this));if(this._buyerChart){this._buyerChart.setSwPurchaseCache(this.purchaseCache);}};P.maybeRefresh=function(newIndex,oldIndex){var x=newIndex;var y=oldIndex;if(newIndex==1){this.getItemPurchaseData();}
if(newIndex==5){if(this._waitingList){this._waitingList.getWaitingListData();}}
if(newIndex!=1&&newIndex!=3){swApp.totalAmountLabel.display(false);swApp.totalAmountValue.display(false);swApp.totalItemsLabel.display(false);swApp.totalItemsValue.display(false);}
else if(this.purchaseCache){var totalCents=this.purchaseCache.getTotalCents();var formattedPrice=swApp.locale.currencySymbol;formattedPrice+=formatPrice(totalCents,swApp.locale.groupingSeparator,swApp.locale.monetaryDecimalSeparator|swApp.locale.decimalSeparator);swApp.totalAmountValue.label(formattedPrice);if(newIndex==1){swApp.totalItemsValue.label(""+this.purchaseCache.getRecordCount());}
else{swApp.totalItemsValue.label(""+this._recipientGrid.recipientCache.getRecordCount());}
if(newIndex==1){swApp.totalAmountLabel.display(true);swApp.totalAmountValue.display(true);}
else{swApp.totalAmountLabel.display(false);swApp.totalAmountValue.display(false);}
swApp.totalItemsLabel.display(true);swApp.totalItemsValue.display(true);}};P.refresh=function(){var displayIDs=this.purchaseCache.getAllIds();this.buyerListGrid.resetIDS(displayIDs);var prev=this.buyerListGrid.__sortCol;if(prev){if(this.buyerListGrid.__sortRev){this.buyerListGrid._onHeadClick(this.buyerListGrid.getCol(prev),null);this.buyerListGrid._onHeadClick(this.buyerListGrid.getCol(prev),null);}
else{delete this.buyerListGrid.__sortCol;this.buyerListGrid._onHeadClick(this.buyerListGrid.getCol(prev),null);}}
this.buyerListGrid.displayPage(0);};P.refundClick=function(){var sel=this.buyerListGrid._selection;var selected_ids=sel.getArray();if(selected_ids.length===0){alert("You must first select the purchase to refund.");return;}
var purchaseRowText=[];for(var i=0;i<selected_ids.length;++i){var purchase=this.purchaseCache.get(selected_ids[i]);var row=String.buffer();row(swApp.locale.currencySymbol);row(formatPrice(parseInt(purchase.get("amt"),10),swApp.locale.groupingSeparator,swApp.locale.monetaryDecimalSeparator|swApp.locale.decimalSeparator));row(" : ");row(purchase.get("buyerEmail"));row(" - ");row(purchase.get("buyerFirst"));row(" ");row(purchase.get("buyerLast"));purchaseRowText.push(row.get());}
var title;if(selected_ids.length==1){title="Refund 1 Purchase";}
else{title="Refund "+selected_ids.length+" Purchases";}
var dlg=new DlDialog({modal:false,quitBtn:"destroy",title:title,resizable:true});var layout=new DlLayout({parent:dlg});var textArea=new DlEntry({type:"textarea"});purchaseRowText.sort();textArea.setValue(purchaseRowText.join("\n"));var box=new DlHbox({borderSpacing:5});box.setAlign("center");var yes=new DlButton({parent:box,label:"<div style='width:5em'>"+
swApp.i18n("Refund")+": "+selected_ids.length+"</div>"});var no=new DlButton({parent:box,label:"<div style='width:5em'>"+
swApp.i18n("Cancel")+"</div>"});layout.packWidget(textArea,{pos:"top",fill:"*"});layout.packWidget(box,{pos:"bottom"});layout.setSize({x:400,y:300});no.addEventListener("onClick",function(){dlg.destroy();});yes.addEventListener("onClick",function(){dlg.destroy();}.$(this));dlg.centerOnParent();dlg.show();};P.dblClick=function(){var sel=this.buyerListGrid._selection;var selected_ids=sel.getArray();if(selected_ids.length===0){return;}
var purchase=this.purchaseCache.get(selected_ids[0]);};})();(function(){var BASE=SwDygraph.inherits(DlContainer);function SwDygraph(args){if(args){D.setDefaults(this,args);this._focusable=true;BASE.constructor.call(this,args);}
else{throw("SwDygraph missing args.");}}
eval(Dynarch.EXPORT("SwDygraph"));D.DEFAULT_ARGS={};P.initDOM=function(){BASE.initDOM.call(this);this.swInitDOM();};P.swInitDOM=function(){this.addEventListener("onResize",this.onResize.clearingTimeout(750));};P.onResize=function(){swApp.log("SwDygraph onResize()");this.destroyChildWidgets();delete this.dygraph;this.refresh();};P.setSwPurchaseCache=function(c){this._swPurchaseCache=c;};P.clear=function(){this.destroyChildWidgets();delete this.dygraph;};P.refresh=function(){if(!this._swPurchaseCache){return;}
swApp.log("creating dygraph");var element=this.getContentElement();var csvData=this._swPurchaseCache.getCSVDateAmt();if(!csvData){return;}
swApp.log("csvData:"+csvData);var options={};options.wilsonInterval=false;Dygraph.dateString_=this.formatDate;this.dateFormat=swApp.getDateFormat();this.dygraph=new Dygraph(element,csvData,options);};P.formatDate=function(millis,unusedSelf){var d=new Date(millis);return d.print(swApp.getDateFormat());};})();(function(){var BASE=SwRecipientGrid.inherits(DlContainer);function SwRecipientGrid(args){if(args){D.setDefaults(this,args);this._focusable=true;BASE.constructor.call(this,args);}
else{throw("SwRecipientGrid missing args.");}}
eval(Dynarch.EXPORT("SwRecipientGrid"));D.DEFAULT_ARGS={};P.initDOM=function(){BASE.initDOM.call(this);this.swInitDOM();};P.swInitDOM=function(){this.initLabel=new DlLabel({parent:this,label:"No data available yet..."});};P.clear=function(invoiceId){if(!this.recipientCache){return;}
var displayIDs=this.recipientCache.getAllIds();this.recipientCache.remove(displayIDs);this.dataGrid.resetIDS([]);this.dataGrid.displayPage(0);};P.parsePurchaseData=function(response,aTaxNames,invoiceIds){var taxNames=aTaxNames;if(!taxNames){taxNames={};}
var skipColumn={first:true,last:true,email:true};var invoiceM=swApp.syncSWorld.invoiceM;var swuserid=swApp.syncSWorld.userSettingsDTO.swuserid;var swuser=swApp.syncSWorld.swemuserM[swuserid];var surveyM=swuser["survey-map"];var recipientRecords=[];var columns={};var baseItemId,k,v,wd;var newColumns={};for(var purchaseId in response){if(response.hasOwnProperty(purchaseId)){var purchase=response[purchaseId];var existingRecipient;for(var index in purchase.recipients){if(purchase.recipients.hasOwnProperty(index)){var recipient=purchase.recipients[index];var surveyDataM=createObjFromArray(recipient["survey-data"]);for(k in surveyDataM){if(surveyDataM.hasOwnProperty(k)){if(skipColumn.hasOwnProperty(k)){continue;}
var survey=surveyM[k];if(!survey){swApp.log("Skipped survey with key:"+k);continue;}
newColumns["surveyData-"+k]=survey.question;recipient.surveyDataM=surveyDataM;}}
recipient.id=purchaseId+"-"+index;recipient["purchase-id"]=purchaseId;recipient.email=surveyDataM.email;recipient.first=surveyDataM.first;recipient.last=surveyDataM.last;recipient.buyerEmail=purchase.buyerEmail;recipient.buyerFirst=purchase.buyerFirst;recipient.buyerLast=purchase.buyerLast;recipientRecords.push(new SwPurchase({data:recipient}));k=recipient["invoice-id"];if(recipient.hasOwnProperty("bywday")){if(recipient.bywday!==null){k+="-"+recipient.bywday;}}
recipient[k]=1;this.addColumn(newColumns,recipient);if(!aTaxNames){SwPurchaseGrid.parseTaxNames(recipient,taxNames,"tax1");SwPurchaseGrid.parseTaxNames(recipient,taxNames,"tax2");}}}}}
for(k in newColumns){if(newColumns.hasOwnProperty(k)){columns[k]=newColumns[k];}}
this.destroyChildWidgets();this.swInitGrid(recipientRecords,taxNames,columns);};P.addColumn=function(newColumns,recipient){var invoiceM=swApp.syncSWorld.invoiceM;var invoiceId=recipient["invoice-id"];var invoice=invoiceM[invoiceId];var label=invoice.label;var bywday="w";var k=invoiceId;if(recipient.hasOwnProperty("bywday")&&recipient.bywday!==null){bywday=recipient.bywday;bywday=parseInt(bywday,10);k+="-"+bywday;var wd=swApp.locale.weekDays3[bywday];label=label+" ("+wd+")";}
newColumns[k]=label;};P.skipKeys={"email":false,"first":false,"last":false,"invoice-id":false,"refund-date":false,"reservation-id":false,"item-id":false};P.mergeVal=function(left,right){if(!isNaN(left)&&!isNaN(right)){return parseInt(left,10)+parseInt(right,10);}
if(left!=right){return""+left+","+right;}
return left;};P.mergeRecipients=function(recipient,existingRecipient){var k=recipient["invoice-id"];if(recipient.hasOwnProperty("bywday")){if(recipient.bywday!==null){k+="-"+recipient.bywday;}}
var invoiceCount=existingRecipient[k];if(!invoiceCount){invoiceCount=0;}
++invoiceCount;existingRecipient[k]=invoiceCount;return existingRecipient;};P.swInitGrid=function(recipientRecords,taxNames,invoiceColumns){this.recipientCache=new SwPurchaseCache({data:recipientRecords,isRecipients:true,taxNames:taxNames});var columns=this.recipientCache.getColumns(invoiceColumns);this.selectionModel=new DlSelectionModel({});this.dataGrid=new SwDataGrid({parent:this,cols:columns,data:this.recipientCache,fillParent:true,rpp:45,virtualScrolling:true,selection:this.selectionModel});if(!this.recipientCache.isEmpty()){var displayIDs=this.recipientCache.getAllIds();this.dataGrid.resetIDS(displayIDs);}
else{this.dataGrid.resetIDS([]);}
this.dataGrid.displayPage(0);this.dataGrid.addEventListener("onBodyDblClick",this.dblClick.$(this));this.refresh();};P.refresh=function(){var displayIDs=this.recipientCache.getAllIds();this.dataGrid.resetIDS(displayIDs);var prev=this.dataGrid.__sortCol;if(prev){if(this.dataGrid.__sortRev){this.dataGrid._onHeadClick(this.dataGrid.getCol(prev),null);this.dataGrid._onHeadClick(this.dataGrid.getCol(prev),null);}
else{delete this.dataGrid.__sortCol;this.dataGrid._onHeadClick(this.dataGrid.getCol(prev),null);}}
this.dataGrid.displayPage(0);};P.refundClick=function(){var sel=this.dataGrid._selection;var selected_ids=sel.getArray();if(selected_ids.length===0){alert("Please select the items you would like to refund.");return;}
var recipientRowText=[];var percent;var invoiceM=swApp.syncSWorld.invoiceM;for(var i=0;i<selected_ids.length;++i){var recipient=this.recipientCache.get(selected_ids[i]);var row=String.buffer(""+(i+1));row(". ");row(swApp.locale.currencySymbol);var invoice=invoiceM[recipient.get("invoice-id")];var priceCents=invoice.price;var tax1Cents=0;var tax1Percent=invoice["tax1-percent"];if(tax1Percent){percent=parseFloat(tax1Percent)/100;tax1Cents=priceCents*percent;}
var tax2Cents=0;var tax2Percent=invoice["tax2-percent"];if(tax2Percent){percent=parseFloat(tax2Percent)/100;tax2Cents=priceCents*percent;}
var amt=priceCents+tax1Cents+tax2Cents;row(formatPrice(amt,swApp.locale.groupingSeparator,swApp.locale.monetaryDecimalSeparator|swApp.locale.decimalSeparator));if(tax1Cents>0||tax2Cents>0){row(" (");row(formatPrice(priceCents,swApp.locale.groupingSeparator,swApp.locale.monetaryDecimalSeparator|swApp.locale.decimalSeparator));if(tax1Cents>0){row(" + ");row(invoice["tax1-name"]);row(": ");row(formatPrice(tax1Cents,swApp.locale.groupingSeparator,swApp.locale.monetaryDecimalSeparator|swApp.locale.decimalSeparator));}
if(tax2Cents>0){row(" + ");row(invoice["tax2-name"]);row(": ");row(formatPrice(tax2Cents,swApp.locale.groupingSeparator,swApp.locale.monetaryDecimalSeparator|swApp.locale.decimalSeparator));}
row(" )");}
row(" , Buyer: ");row(recipient.get("buyerEmail"));row(" - ");row(recipient.get("buyerFirst"));row(" ");row(recipient.get("buyerLast"));row(" , Attendee: ");row(recipient.get("email"));row(" - ");row(recipient.get("first"));row(" ");row(recipient.get("last"));recipientRowText.push(row.get());}
var title;if(selected_ids.length==1){title="Refund 1 Specific Item";}
else{title="Refund "+selected_ids.length+" Specific Items";}
var dlg=new DlDialog({modal:false,quitBtn:"destroy",title:title,resizable:true});var layout=new DlLayout({parent:dlg});var textArea=new DlEntry({type:"textarea",readonly:true});recipientRowText.sort();textArea.setValue(recipientRowText.join("\n"));var box=new DlHbox({borderSpacing:5});box.setAlign("center");var yes=new DlButton({parent:box,label:"<div style='width:5em'>"+
swApp.i18n("Refund")+": "+selected_ids.length+"</div>"});var no=new DlButton({parent:box,label:"<div style='width:5em'>"+
swApp.i18n("Cancel")+"</div>"});layout.packWidget(textArea,{pos:"top",fill:"*"});layout.packWidget(box,{pos:"bottom"});layout.setSize({x:600,y:300});no.addEventListener("onClick",function(){dlg.destroy();});yes.addEventListener("onClick",function(){dlg.destroy();var map={};var dash;var purchaseId;var index;for(var i=0;i<selected_ids.length;++i){var recipient=this.recipientCache.get(selected_ids[i]);var id=recipient.get("id");dash=id.lastIndexOf("-");purchaseId=id.substring(0,dash);index=parseInt(id.substring(dash+1),10);var vec=map[purchaseId];if(!vec){vec=[];map[purchaseId]=vec;}
vec.push(index);}
var request={};request.em=true;request.command="refundRecipients";request["purchase-id-index-list"]=map;swApp.syncSWorld.sendRequest(request,null,this.refundRecipientSuccess,this.refundRecipientFail);}.$(this));dlg.centerOnParent();dlg.show();};P.refundRecipientSuccess=function(response){var x=1;this.reloadRemoteData();};P.reloadRemoteData=function(){swApp.buyerChart.clear();swApp.attendeeList.clear();swApp.buyerList.clear();if(swApp.totalBuyerChart){swApp.totalBuyerChart.clear();}
if(swApp.emRecipientGridTB){swApp.emRecipientGridTB.clear();}
if(swApp.emPurchaseGridTB){swApp.emPurchaseGridTB.clear();}
swApp.buyerList.getItemPurchaseData();};P.refundRecipientFail=function(response){var y=2;};P.dblClick=function(){var sel=this.dataGrid._selection;var selected_ids=sel.getArray();if(selected_ids.length===0){return;}
var purchase=this.recipientCache.get(selected_ids[0]);};P.printClick=function(){swApp._printTitle="test title";swApp._printTotals=true;swApp._printStyleSheet="swprintgrid.css";swApp._printDlGrid=this.dataGrid;window.open("js/print/print.html");};P.switchInvoiceClick=function(){var sel=this.dataGrid._selection;var selected_ids=sel.getArray();if(selected_ids.length===0){alert("Please make a single selection first.");return;}
if(selected_ids.length!=1){alert("You may only switch invoices one item at a time.");return;}
var recipient=this.recipientCache.get(selected_ids[0]);var title="Switch Invoice";var dlg=new DlDialog({modal:false,quitBtn:"destroy",title:title,resizable:true});var layout=new DlLayout({parent:dlg,outerSpace:10});var top=new DlLabel({label:"<b>Switching:</b> "+
recipient.get("first")+" "+recipient.get("last")+" ( "+
recipient.get("email")+" )"});var tree=new DlTree({});var invoicesTreeItem=new DlTreeItem({parent:tree,label:"<b>"+swApp.i18n("To Invoice:")+"</b>"});var group=DlRadioGroup.get();swApp.emRefreshInvoices(invoicesTreeItem,group,true,recipient.get("invoice-id"));var box=new DlHbox({borderSpacing:5});box.setAlign("center");var yes=new DlButton({parent:box,label:"<div style='width:5em'>"+
swApp.i18n("Switch Invoice")+"</div>"});var no=new DlButton({parent:box,label:"<div style='width:5em'>"+
swApp.i18n("Cancel")+"</div>"});layout.packWidget(top,{pos:"top"});layout.packWidget(box,{pos:"bottom"});layout.packWidget(tree,{pos:"top",fill:"*"});layout.setSize({x:400,y:300});no.addEventListener("onClick",function(){dlg.destroy();});yes.addEventListener("onClick",function(){var selected=group.getValue();if(selected.length===0){alert("Please select an invoice.");return;}
if(selected.length!=1){alert("Please select a single invoice.");return;}
dlg.destroy();var request={};request.em=true;request.command="switchInvoice";request["purchase-id"]=recipient.get("purchase-id");request["source-invoice-id"]=recipient.get("invoice-id");request["dest-invoice-id"]=selected[0];swApp.syncSWorld.sendRequest(request,null,this.switchSuccess.$(this),this.switchFail);}.$(this));dlg.centerOnParent();dlg.show();};P.switchSuccess=function(response){if(response.hasOwnProperty("failed")){this.switchFail(response);return;}
this.reloadRemoteData();};P.switchFail=function(response){if(response&&response.failed){alert("Switch failed:"+failed);return;}
alert("Switch failed.");};})();(function(){var BASE=SwWaitingListGrid.inherits(DlContainer);function SwWaitingListGrid(args){if(args){D.setDefaults(this,args);this._focusable=true;BASE.constructor.call(this,args);}
else{throw("SwWaitingListGrid missing args.");}}
eval(Dynarch.EXPORT("SwWaitingListGrid"));D.DEFAULT_ARGS={_itemIds:["itemIds",null]};P.initDOM=function(){BASE.initDOM.call(this);this.swInitDOM();};P.swInitDOM=function(){this.initLabel=new DlLabel({parent:this,label:"No data available yet..."});this.getWaitingListData();};P.requestSuccess=function(response){if(response&&response.hasOwnProperty("failed")){this.requestFail(response);return;}
var records=[];for(var itemId in response){if(response.hasOwnProperty(itemId)){var itemData=response[itemId];for(var wlid in itemData){if(itemData.hasOwnProperty(wlid)){var wl=itemData[wlid];wl.id=wlid;var wlData=new SwWaitingList({data:wl});records.push(wlData);}}}}
this.destroyChildWidgets();this.swInitGrid(records);swApp.emContainerREditInvoice.callHooks("onResize");};P.requestFail=function(response){var message="Failed to get waiting list data";if(response&&response.hasOwnProperty("failed")){message+=":\n"+response.failed;}
else{message+=".";}
alert(message);var records=[];this.swInitGrid(records);};P.getWaitingListData=function(){var request={};request.em=true;request.command="getWaitingListData";request["item-ids"]=this._itemIds;swApp.syncSWorld.sendRequest(request,null,this.requestSuccess.$(this),this.requestFail);};P.clear=function(){if(!this.waitingListCache){return;}
var displayIDs=this.waitingListCache.getAllIds();this.waitingListCache.remove(displayIDs);this.waitingListGrid.resetIDS([]);this.waitingListGrid.displayPage(0);};P.swInitGrid=function(records){this.waitingListCache=new SwWaitingListCache({data:records,itemIds:this._itemIds});var columns=this.waitingListCache.getColumns();this.selectionModel=new DlSelectionModel({});this.waitingListGrid=new SwDataGrid({parent:this,cols:columns,data:this.waitingListCache,fillParent:true,rpp:45,virtualScrolling:true,selection:this.selectionModel});if(!this.waitingListCache.isEmpty()){var displayIDs=this.waitingListCache.getAllIds();this.waitingListGrid.resetIDS(displayIDs);this.waitingListGrid._onHeadClick(this.waitingListGrid.getCol("email"),null);}
else{this.waitingListGrid.resetIDS([]);}
this.waitingListGrid.displayPage(0);this.waitingListGrid.addEventListener("onBodyDblClick",this.dblClick.$(this));this.refresh();};P.refresh=function(){var displayIDs=this.waitingListCache.getAllIds();this.waitingListGrid.resetIDS(displayIDs);var prev=this.waitingListGrid.__sortCol;if(prev){if(this.waitingListGrid.__sortRev){this.waitingListGrid._onHeadClick(this.waitingListGrid.getCol(prev),null);this.waitingListGrid._onHeadClick(this.waitingListGrid.getCol(prev),null);}
else{delete this.waitingListGrid.__sortCol;this.waitingListGrid._onHeadClick(this.waitingListGrid.getCol(prev),null);}}
this.waitingListGrid.displayPage(0);};P.dblClick=function(){var sel=this.waitingListGrid._selection;var selected_ids=sel.getArray();if(selected_ids.length===0){return;}
var wl=this.waitingListCache.get(selected_ids[0]);};})();(function(){var BASE=SwWaitingList.inherits(DlRecord);function SwWaitingList(args){if(args){DlRecord.call(this,args);}}
eval(Dynarch.EXPORT("SwWaitingList"));D.DEFAULT_ARGS={};P.numCompareTo=function(rec,col){var a=this.get(col);if(!a){a=0;}
var b=rec.get(col);if(!b){b=0;}
return a<b?-1:a==b?0:1;};P.numCompare2=function(a,b){if(!a){a=0;}
if(!b){b=0;}
return a<b?-1:a==b?0:1;};P.compareTo=function(rec,col){var a=this.get(col);var b;if(typeof a=='number'){return this.numCompare2(a,rec.get(col));}
if(!a){b=rec.get(col);if(typeof b=='number'){return this.numCompare2(0,b);}
else{a="";}}
if(!b){b="";}
if(a&&a.toLowerCase){a=a.toLowerCase();}
b=rec.get(col);if(b&&b.toLowerCase){b=b.toLowerCase();}
return a<b?-1:a==b?0:1;};P.contains=function(key){return this._data.hasOwnProperty(key);};P.get=function(key){var v=this._data[key];return v;};})();(function(){var BASE=SwWaitingListCache.inherits(DlRecordCache);function SwWaitingListCache(args){if(args){D.setDefaults(this,args);DlRecordCache.call(this,args);}}
eval(Dynarch.EXPORT("SwWaitingListCache"));D.DEFAULT_ARGS={_itemIds:["itemIds",null]};P.defaultColumns=[{id:"email",label:"Email",width:180,fill:true},{id:"first",label:"First Name",width:180},{id:"last",label:"Last Name",width:180},{id:"since",label:"Waiting Since",width:180}];P.getColumnsStorageKey=function(){return"wlColumnsKey-"+this._itemIds[0];};P.createColumnsFromInvoiceColumns=function(invoiceColumns){var columns=[];for(var k in invoiceColumns){if(invoiceColumns.hasOwnProperty(k)){var column={};column.id=k;column.label=k;columns.push(column);}}
return columns;};P.getColumns=function(invoiceColumns){if(!this.loadedColumns){var columnsKey=this.getColumnsStorageKey();this.loadedColumns=swApp.syncSWorld.loadObject(columnsKey);}
if(this.loadedColumns instanceof Array&&this.loadedColumns.length>0){return this.loadedColumns.slice();}
if(invoiceColumns&&swPropCount(invoiceColumns>0)){return this.createColumnsFromInvoiceColumns(invoiceColumns);}
if(this._isRecipients){return this.recipientDefaultColumns.slice();}
else{return this.defaultColumns.slice();}};P.formatHTML=function(rec,col,buf){if(col=="since"){var recDate=rec.get(col);if(recDate){var dateFormat=swApp.getDateFormat();var date=new Date(parseInt(recDate,10));buf(date.print(dateFormat));var useAmPm=swApp.syncSWorld.userSettingsDTO.ampm;buf(" ");if(useAmPm){var am=true;var hour=date.getHours();if(hour>11){am=false;}
if(hour>12){hour-=12;}
buf(hour);buf(":");buf(date.getMinutes());if(am){buf(swApp.locale.ampm[0]);}
else{buf(swApp.locale.ampm[1]);}}
else{buf(date.getHours());buf(":");buf(date.getMinutes());}}}else{var value=rec.get(col)||"";buf(value.toString().htmlEscape());}};P.isEmpty=function(){if(!this._data){return true;}
for(var key in this._data){if(this._data.hasOwnProperty(key)){return false;}}
return true;};P.getCSVData=function(){return _csvData;};P.getCSVDateAmt=function(){return this._csvDateAmt;};})();SWApp.prototype.emViewTotalBuyers=function(){if(swApp.csvButton){swApp.csvButton.display(true);}
var children=this.emContainerRTotalBuyers.children();if(children&&children.length>0){this.emUpdateTotalBuyers();this.rightNotebookEM.showPane(this.EM_DEF_TOTAL_BUYERS);return;}
this.emContainerRTotalBuyers.getElement().style.padding="10px";this.emTBLayout=new DlLayout({parent:this.emContainerRTotalBuyers});this.emCreateTotalBuyers();};SWApp.prototype.emCreateTotalBuyers=function(){if(!swApp.syncSWorld.invoiceM){swApp.syncSWorld.invoiceM={};}
var invoiceIds=getPropKeys(swApp.syncSWorld.invoiceM);this.totalBuyerChart=new SwDygraph({});this.emRecipientGridTB=new SwRecipientGrid({invoiceIds:invoiceIds});this.emPurchaseGridTB=new SwPurchaseGrid({buyerChart:this.totalBuyerChart,recipientGrid:this.emRecipientGridTB,resizeCont:this.emContainerRTotalBuyers});this.tbTabs=new DlTabs({});this.tbTabs.addTab(this.emPurchaseGridTB,"All Buyers");this.tbTabs.addTab(this.totalBuyerChart,"All Buyers Chart");this.tbTabs.addTab(this.emRecipientGridTB,"All Attendees");this.tbTabs.showPane(0);this.emTBLayout.packWidget(this.tbTabs,{pos:"bottom",fill:"*"});this.rightNotebookEM.showPane(this.EM_DEF_TOTAL_BUYERS);};SWApp.prototype.emUpdateTotalBuyers=function(){this.emPurchaseGridTB.getItemPurchaseData();};function htmlEscapeValues(templateArgs){var htmlEscapedArgs={};for(var key in templateArgs){if(templateArgs.hasOwnProperty(key)){var v=templateArgs[key];if(v){htmlEscapedArgs[key]=v.htmlEscape();}}}
return htmlEscapedArgs;}
var END_HTML=["  </table>"," </div>"," <div id='footer'>","  <p>http://www.ScheduleWorld.com/</p>"," </div>"];var TMPL_END_HTML=String.template(END_HTML.join("\n"));SWApp.prototype.getVisibleColumnIdLabels=function(dlGrid){var columnIdLabels={};for(var i=0;i<dlGrid._cols.length;++i){var col=dlGrid._cols[i];if(col._isVisible){if(this.isTH(col.id())){columnIdLabels[col.id()]=col.getLabel();}}}
for(var i=0;i<dlGrid._cols.length;++i){var col=dlGrid._cols[i];if(col._isVisible){if(!this.isTH(col.id())){columnIdLabels[col.id()]=col.getLabel();}}}
return columnIdLabels;};SWApp.prototype.createTop=function(recordCache,columnIdLabels,title,caption){var top=String.buffer(" <h2 id='title'>",title,"</h2>"," <div id=\"thetable\">","  <table width=\"100%\">","   <caption id='caption'>",caption,"</caption>","   <thead>","    <tr>");for(var columnId in columnIdLabels){if(columnIdLabels.hasOwnProperty(columnId)){var label=columnIdLabels[columnId];top("<th scope=\"col\">",label,"</th>");}}
top("</tr></thead>\n");top("<!-- end top -->\n");return top.get();};SWApp.prototype.isTH=function(columnId){if(columnId=="email"||columnId=="first"||columnId=="last"||columnId=="date"||columnId=="refund-date"||columnId=="note"||columnId=="type"||columnId=="sendPurchaseConfirmEmail"||columnId=="buyerEmail"||columnId=="buyerFirst"||columnId=="buyerLast"){return true;}};SWApp.prototype.createRows=function(dlGrid,columnIdLabels,printTotals){var rows=String.buffer("<tbody>\n");var recordCache=dlGrid._data;var tdTotals={};var ids=dlGrid.getRecordIDs();var ids2=recordCache.getAllIds();swApp.log("ids:"+ids.toSource());swApp.log("ids2:"+ids2.toSource());var klass="odd";var colspan=0;var val;var invoiceM=swApp.syncSWorld.invoiceM;var invoice;var recipients;var dates;var rec;var taxName;for(var i=0;i<ids.length;++i){var record=recordCache.get(ids[i]);rows("<!-- row -->\n");var args={};args.ROW_CLASS=klass;if(klass=="even"){klass="odd";}
else{klass="even";}
rows("<tr class=\"",klass,"\">\n")
var first=true;colspan=0;for(var columnId in columnIdLabels){if(columnIdLabels.hasOwnProperty(columnId)){if(this.isTH(columnId)){++colspan;if(first){first=false;rows(" <th scope=\"row\">");}
else{rows(" <th>");}
recordCache.formatHTML(record,columnId,rows);rows("</th>\n");}
else{rows(" <td>");recordCache.formatHTML(record,columnId,rows);rows("</td>\n");var total=tdTotals[columnId];if(!total){total=0;}
if(columnId=='price'){val=0;if(recordCache._isRecipients){invoice=invoiceM[record.get("invoice-id")];val=invoice.price;}
else{recipients=record.get("recipients");if(recipients){dates={};for(var index in recipients){if(recipients.hasOwnProperty(index)){rec=recipients[index];invoice=invoiceM[rec["invoice-id"]];val+=invoice.price;}}}}}else if(columnId=="tax1"){val=0;taxName=recordCache.tax1;if(taxName){val=recordCache.getTax(taxName,record);}}else if(columnId=="tax2"){val=0;taxName=recordCache.tax2;if(taxName){val=recordCache.getTaxCents(taxName,record);}}else if(columnId.indexOf("swemInvoice-")===0){if(recordCache._isRecipients){val=record.get(columnId);if(!val){val=0;}}
else{var count=0;var invoiceId=columnId;recipients=record.get("recipients");if(recipients){for(var index in recipients){if(recipients.hasOwnProperty(index)){var recipient=recipients[index];var iid=recipient["invoice-id"];if(iid==invoiceId){++count;}}}}
val=count;}}else{val=record.get(columnId);}
if(isNaN(val)){}
else{if(printTotals){total+=parseInt(val,10);tdTotals[columnId]=total;}}}}}
rows(" </tr>\n");}
rows("<!-- end rows, start totals-->\n");var total_text="Totals";rows("   </body>\n");if(printTotals){rows("   <tfoot>\n","    <tr>\n","     <th id='totals' scope='row' colspan='",colspan,"'>",total_text,"</th>\n");var index=0;for(var k in columnIdLabels){if(columnIdLabels.hasOwnProperty(k)){++index;if(index<=colspan){continue;}
var total=tdTotals[k];if(typeof total=='undefined'||total==null){rows("<th></th>\n");continue;}
if(k=="fee"||k=="amt"||k=="tax1"||k=="tax2"||k=="refund-amount"||k=="price"){var formattedPrice=swApp.locale.currencySymbol;formattedPrice+=formatPrice(total,swApp.locale.groupingSeparator,swApp.locale.monetaryDecimalSeparator|swApp.locale.decimalSeparator);rows("<th>",formattedPrice,"</th>\n");}
else{rows("<th>",total,"</th>\n");}}}
rows("     </tr>\n","   </tfoot>\n");}
return rows.get();};SWApp.prototype.adjustHTMLTitle=function(aDocument){var input=aDocument.getElementById("titleI");var label=aDocument.getElementById("title");label.innerHTML=input.value;};SWApp.prototype.adjustHTMLCaption=function(aDocument){var input=aDocument.getElementById("captionI");var label=aDocument.getElementById("caption");label.innerHTML=input.value;};SWApp.prototype.adjustHTMLTotals=function(aDocument){var input=aDocument.getElementById("totalsI");var label=aDocument.getElementById("totals");label.innerHTML=input.value;};SWApp.prototype._getGrid2HtmlInfo=function(title,caption,aTotals,printTotals){var totals=aTotals||"Totals";var sb=String.buffer();sb("<b>This area does not appear in the printed media!</b><br/><br/>\n");sb("<div> \n");sb(" <label style='float: left; width: 6em;' for='titleI'>Title: </label>\n");sb(" <input type='text' id='titleI' size='60' onchange='window.opener.swApp.adjustHTMLTitle(document);' value='",title,"'/>\n");sb("</div>\n");sb("<div> \n");sb(" <label style='float: left; width: 6em;' for='captionI'>Caption: </label>\n");sb(" <input type='text' id='captionI' size='60' onchange='window.opener.swApp.adjustHTMLCaption(document);' value='",caption,"'/>\n");sb("</div>\n");if(printTotals){sb("<div> \n");sb(" <label style='float: left; width: 6em;' for='totalsI'>Totals: </label>\n");sb(" <input type='text' id='totalsI' size='60' onchange='window.opener.swApp.adjustHTMLTotals(document);' value='",totals,"'/>\n");sb("</div>\n");}
sb("<br/>\n");sb("<b>Tip:</b> You can right-click any grid column header in the web application and hide/show columns.<br/>\n");sb("<b>Tip:</b> Use the browser's 'Print Preview' feature to make sure your columns fit on the printed page. If some columns are getting cut off try using your browser's 'zoom out' (CTRL -) until the horizonal scroll bar dissappears.");sb("<div><button onclick='if (window.print()) { window.close(); }'>Print</button>\n");sb("<button onclick='window.close();'>Cancel and Return</button></div>");return sb.get();};SWApp.prototype._printContinue=function(doc){var title=swApp._printTitle;var caption="";var totals="Totals";doc.getElementById("information").innerHTML=this._getGrid2HtmlInfo(title,caption,totals,swApp._printTotals);var columnIdLabels=this.getVisibleColumnIdLabels(swApp._printDlGrid);if(swApp._printTotals){var columnTotals=[];for(var columnId in columnIdLabels){if(columnIdLabels.hasOwnProperty(columnId)){if(this.isTH(columnId)){continue;}
columnTotals.push(""+i);}}}
var top=this.createTop(swApp._printDlGrid,columnIdLabels,title,caption);var rows=this.createRows(swApp._printDlGrid,columnIdLabels,swApp._printTotals);var end=TMPL_END_HTML();var html=String.buffer(top);html(rows);html(end);doc.getElementById("dest").innerHTML=html.get();};(function(){var BASE=SwPackageDeal.inherits(DlLayout);function SwPackageDeal(args){if(args){D.setDefaults(this,args);this._focusable=true;BASE.constructor.call(this,args);}
else{throw("SwPackageDeal missing args.");}}
eval(Dynarch.EXPORT("SwPackageDeal"));D.DEFAULT_ARGS={_id:["id",null],_allPackageDeals:["allPackageDeals",null],_button:["button",null]};P.initDOM=function(){BASE.initDOM.call(this);this.swInitDOM();};D.createID=function(){var swuserid=swApp.syncSWorld.userSettingsDTO.swuserid;var swuser=swApp.syncSWorld.swemuserM[swuserid];var index=swuserid.indexOf("-");var packageDealM=swuser["package-deal-map"];for(var i=0;i<999999;++i){var id="pdid-"+swuserid.substring(index+1)+"-"+i;if(!packageDealM.hasOwnProperty(id)){return id;}}};P.addCountPrice=function(aCount,aPriceCents){for(i=0;i<this.addVbox._widgets.length;++i){children=this.addVbox._widgets[i]._widgets;if(!children){continue;}
var count=children[0];if(count.getValue()==aCount){return;}}
var countPriceHbox=new DlHbox({parent:this.addVbox});var countSpinner=new DlSpinner({parent:countPriceHbox,minVal:1,maxVal:999,value:0});countPriceHbox.addSpace();var addPrice=new DlEntry({parent:countPriceHbox,className:"EMEntryRight",value:"0.00",validators:[this.priceValidator]});countPriceHbox.addSpace();var delChoiceB=new DlButton({parent:countPriceHbox,label:"Del"});delChoiceB.swParentHbox=countPriceHbox;delChoiceB.swParentVbox=this.addVbox;delChoiceB.addEventListener("onClick",function(){this.swParentVbox.removeWidget(this.swParentHbox);});countSpinner.setValue(aCount);addPrice.setValue(formatPrice(aPriceCents,swApp.locale.groupingSeparator,swApp.locale.monetaryDecimalSeparator,swApp.locale.currencySymbol));};P.swInitDOM=function(){this.priceValidator=new DlValidator(DlValidator.Price,swApp.locale.groupingSeparator,swApp.locale.monetaryDecimalSeparator,swApp.locale.currencySymbol);var vbox=new DlContainer({fillParent:true,scroll:true});this.fs=new DlFieldGrid({parent:vbox});this.label=new DlEntry({size:40});this.fs.addField({name:"label",label:"<b>Label:</b>",widget:this.label});this.overflowPrice=new DlEntry({size:16,className:"EMEntryRight",value:"0.00",validators:[this.priceValidator]});this.fs.addField({name:"overflowPrice",label:"<b>Overflow Price:</b>",widget:this.overflowPrice});this.addVbox=new DlVbox({});var addB=new DlButton({parent:this.addVbox,label:"Add Count / Deal Price:"});addB.addEventListener("onClick",function(){this.addCountPrice(1,0);}.$(this));this.fs.addField({label:"<b>Count / Deal Price</b>",widget:this.addVbox});var hboxb=new DlHbox({align:"center"});var saveButton=new DlButton({parent:hboxb,label:"Save"});saveButton.addEventListener("onClick",function(){this.save();}.$(this));hboxb.addSpace();var cancelButton=new DlButton({parent:hboxb,label:"Cancel"});cancelButton.addEventListener("onClick",function(){swApp.emPackageDealsCreate.expand(false);this.parent.destroy();}.$(this));if(swApp.debug){hboxb.addSpace();hboxb.addSeparator();hboxb.addSpace();var debugButton=new DlButton({parent:hboxb,label:"Debug"});debugButton.addEventListener("onClick",function(){var values=this.getValues();}.$(this));}
this.renderInvoices();this.packWidget(hboxb,{pos:"bottom",fill:40});this.packWidget(vbox,{pos:"left",fill:"*"});};P.renderInvoices=function(){this.itemInvoiceCBs=[];var labelCBM={};var labelL=[];var disable=false,item,itemId,includedItems,i,cb;itemId=getItemID(swApp.swEventComp);item=swApp.syncSWorld.itemM[itemId];var includedItemIds=item["included-item-ids"];var includedItemOrder=item["included-item-order"];var itemIds=[];itemIds.push(itemId);if(includedItemIds){for(var k in includedItemIds){if(includedItemIds.hasOwnProperty(k)){itemIds.push(k);}}}
var noteL=new DlLabel({label:"<b>This and included items + their invoices:</b>"});this.fs.addField({label:" ",value:"",widget:noteL});for(i=0;i<itemIds.length;++i){var anItemId=itemIds[i];var anItem=swApp.syncSWorld.itemM[anItemId];if(!anItem){continue;}
var swEvent=swApp.getSwEvent(anItemId);var invoiceIds=anItem["invoice-ids"]||[];for(var j=0;j<invoiceIds.length;++j){var invoiceId=invoiceIds[j];var invoice=swApp.syncSWorld.invoiceM[invoiceId];if(!invoice){continue;}
var label=swEvent.title+" / "+invoice.label;labelL.push(label);var itemInvoice=anItemId+","+invoiceId;cb=new DlCheckbox({label:label,value:itemInvoice});labelCBM[label]=cb;this.itemInvoiceCBs.push(cb);}}
labelL.sort(lcComparator);for(i=0;i<labelL.length;++i){cb=labelCBM[labelL[i]];this.fs.addField({label:"<b>Item/Invoice:</b>",widget:cb});}};P.getValues=function(){var values=this.fs.getValues();if(values.label.length===0){alert("You must specify a label");return;}
values["overflow-price"]=parsePriceInt(values.overflowPrice);delete values.overflowPrice;var countPriceM={};var i;for(i=0;i<this.addVbox._widgets.length;++i){var children=this.addVbox._widgets[i]._widgets;if(!children){continue;}
var countSpin=children[0];var priceEntry=children[1];var formattedPrice=priceEntry.getValue();var price=parsePriceInt(formattedPrice);countPriceM[parseInt(countSpin.getValue(),10)]=price;}
values["count-price-map"]=countPriceM;values["item-invoice-ids"]=[];for(i=0;i<this.itemInvoiceCBs.length;++i){var cb=this.itemInvoiceCBs[i];if(cb.checked()){values["item-invoice-ids"].push(cb.getValue());}}
return values;};P.getLargestCount=function(packageDeal){var count=0;var countPriceMap=packageDeal["count-price-map"];for(var k in countPriceMap){if(countPriceMap.hasOwnProperty(k)){if(count<k){count=k;}}}
return count;};P.overflowGTZero=function(packageDeal,largestCount){var bywdayS={};var itemInvoiceRE=/(.*),(.*)/;itemIdInvoiceIds=packageDeal["item-invoice-ids"];prorated=null;for(j=0;j<itemIdInvoiceIds.length;++j){itemInvoice=itemIdInvoiceIds[j];reResult=itemInvoiceRE.exec(itemInvoice);itemId=reResult[1];testItem=swApp.syncSWorld.itemM[itemId];var bywdaylist=testItem.bywdaylist;if(bywdaylist){for(var i=0;i<bywdaylist.length;++i){bywdayS[bywdaylist[i]]=true;}}}
if(swPropCount(bywdayS)==largestCount){return false;}
return swPropCount(bywdayS);};P.save=function(){var swuser=swApp.syncSWorld.swemuserM[swApp.syncSWorld.userSettingsDTO.swuserid];var packageDeal=this.getValues();if(packageDeal.label.length===0){alert("You must set a label.");return;}
var packageDealM=swuser["package-deal-map"];if(!packageDealM){packageDealM={};swuser["package-deal-map"]=packageDealM;}
var count=this.getLargestCount(packageDeal);if(count>0){var overflow=packageDeal["overflow-price"];if(overflow==0){var aggregateBywday=this.overflowGTZero(packageDeal,count);if(aggregateBywday!==false){var msg=["ERROR: the overflow price must not be zero.","The overflow price is used when the buyer purchases","more than the largest count.","The largest count for this package deal is "+count+"."];if(aggregateBywday>0){msg.push("The buyer can select "+aggregateBywday+" items.");}
alert(msg.join("\n"));return;}}}
var parent=this.parent;var callBack=function(){var onSuccess=function(response){swApp.emPackageDealsCreate.expand(false);alert("Package deal saved successfully.");parent.destroy();};var onFail=function(response){swApp.emPackageDealsCreate.expand(false);alert("Failed to save the package deal.");parent.destroy();};packageDeal.em=true;packageDeal.command="setPackageDeal";packageDeal.id=this._id;swApp.syncSWorld.sendRequest(packageDeal,null,onSuccess,onFail);};var creating=true;if(packageDealM.hasOwnProperty(this._id)){creating=false;}
packageDealM[this._id]=packageDeal;if(creating){createdItem=swApp.createEMItem(swApp.packageDealsTreeItem,"PackageDeals",packageDeal.label,this._id,swApp.emGroup);}
else{if(this._button){this._button.label(packageDeal.label);}}
swApp.syncSWorld.saveSwemuserM(callBack.$(this));};P.refreshView=function(packageDealId){var swuser=swApp.syncSWorld.swemuserM[swApp.syncSWorld.userSettingsDTO.swuserid];if(!swuser){return;}
var packageDeal=null;var debug1=swuser.hasOwnProperty("package-deal-map");var packageDealM=swuser["package-deal-map"];if(packageDealM){packageDeal=packageDealM[packageDealId];}
if(!packageDeal){packageDeal={};}
else{var countPriceM=packageDeal["count-price-map"];if(countPriceM){for(var count in countPriceM){if(countPriceM.hasOwnProperty(count)){var price=countPriceM[count];this.addCountPrice(count,price);}}}
var i,cb;for(i=0;i<this.itemInvoiceCBs.length;++i){cb=this.itemInvoiceCBs[i];cb.checked(false);}
var itemInvoiceIds=packageDeal["item-invoice-ids"];if(itemInvoiceIds){for(var j=0;j<itemInvoiceIds.length;++j){var itemInvoiceId=itemInvoiceIds[j];for(i=0;i<this.itemInvoiceCBs.length;++i){cb=this.itemInvoiceCBs[i];if(this.cmpItemInvoice(itemInvoiceId,cb.getValue())){cb.checked(true);}}}}}
var label=packageDeal.label;if(!label){label=packageDealId;}
this.fs.setValue({label:label});this.overflowPrice.setValue(formatPrice(packageDeal["overflow-price"]));};P.cmpItemInvoice=function(a,b){if(a==b){return true;}
return false;};})();var TMPL_BG_IMAGE=String.template('url("$url") no-repeat 50% 50%');(function(){EmDescEtc.inherits(DlContainer);function EmDescEtc(args){if(args){D.setDefaults(this,args);DlContainer.call(this,args);}}
eval(Dynarch.EXPORT("EmDescEtc",true));D.DEFAULT_ARGS={showAttendees:["showAttendees",false],initHostedByHidden:["initHostedByHidden",true],initLocationHidden:["initLocationHidden",true],bodyC:["bodyC",null]};P.setBodyC=function(bc){this.bodyC=bc;var baseItemId=swItemData["base-item-id"];var itemM=swItemData["item-map"];var baseItem=itemM[baseItemId];this.bodyC.getContentElement().innerHTML=baseItem["description-html"];};P.initDOM=function(){D.BASE.initDOM.apply(this,arguments);var btn="nocloseBtn";var TMPL=String.template("<div class='EmDescEtc-title'>","<div class='SwTitleComponent-",btn,"'></div>","<div class='menu'>","<ul id='navlist'>","<li><a href='javascript:;'>Description</a></li>","<li><a href='javascript:;'>Instructions</a></li>","<li><a href='javascript:;'>Attendees</a></li>","<li><a href='javascript:;'>Hosted By</a></li>","<li><a href='javascript:;'>Location</a></li>","<li><a href='javascript:;'>Location</a></li>","<li><a href='javascript:;'>Location</a></li>","</ul>","</div></div>");this.getElement().innerHTML=TMPL({});var closeElement=this.getSwTitleButtonElement();closeElement.onmousedown=this._on_closeClicked.$(this);var descElement=this.getDescElement();descElement.onmousedown=this._on_descClicked.$(this);var baseItemId=swItemData["base-item-id"];var itemM=swItemData["item-map"];this.baseItem=itemM[baseItemId];var descriptionHTML=this.baseItem["description-html"];if(!strValid(descriptionHTML)){this.hideElement(descElement);}
var instElement=this.getInstElement();var instructionsHTML=this.baseItem["instructions-html"];instElement.onmousedown=this._on_instClicked.$(this);if(!strValid(instructionsHTML)){this.hideElement(instElement);}
var attElement=this.getAttendeesElement();attElement.onmousedown=this._on_attClicked.$(this);if(!this.showAttendees){this.hideElement(attElement);}
var hbElement=this.getHostedByElement();hbElement.onmousedown=this._on_hostedByClicked.$(this);this.hideElement(hbElement);var locationElement=this.getLocationElement();locationElement.onmousedown=this._on_locationClicked.$(this);this.hideElement(locationElement);locationElement=this.getLocationElement2();locationElement.onmousedown=this._on_location2Clicked.$(this);this.hideElement(locationElement);locationElement=this.getLocationElement3();locationElement.onmousedown=this._on_location3Clicked.$(this);this.hideElement(locationElement);if(this.bodyC){this.bodyC.getContentElement().innerHTML=this.baseItem["description-html"];}
this.emWhereL=[];};P.setHostedBy=function(emHostedBy){this.emHostedBy=emHostedBy;this.showMenuElement(this.getHostedByElement());};P.addLocation=function(emWhere){var x=1;if(this.emWhereL.length>2){return;}
this.emWhereL.push(emWhere);if(this.emWhereL.length==1){this.showMenuElement(this.getLocationElement());}
else if(this.emWhereL.length==2){this.showMenuElement(this.getLocationElement2());}
else if(this.emWhereL.length==3){this.showMenuElement(this.getLocationElement3());}};P.hideElement=function(el){DynarchDomUtils.setStyleProperty(el,"display","none");};P.showMenuElement=function(el){DynarchDomUtils.setStyleProperty(el,"display","inline");};P.getEmDescEtcElement=function(){var element=this.getElement();return element.firstChild;};P.getSwTitleButtonElement=function(){return this.getEmDescEtcElement().childNodes[0];};P.getMenuElement=function(){return this.getEmDescEtcElement().childNodes[1];};P.getNavlistElement=function(){var me=this.getMenuElement();return me.childNodes[0];};P.getDescElement=function(){var nle=this.getNavlistElement();return nle.childNodes[0];};P.getInstElement=function(){return this.getNavlistElement().childNodes[1];};P.getAttendeesElement=function(){return this.getNavlistElement().childNodes[2];};P.getHostedByElement=function(){return this.getNavlistElement().childNodes[3];};P.getLocationElement=function(){return this.getNavlistElement().childNodes[4];};P.getLocationElement2=function(){return this.getNavlistElement().childNodes[5];};P.getLocationElement3=function(){return this.getNavlistElement().childNodes[6];};P.setLocation=function(aLocation){this.location=aLocation;};P._on_descClicked=function(){this.hideBodyChildren();this.bodyC.getContentElement().innerHTML=this.baseItem["description-html"];this.scroll2Bottom();};P.scroll2Bottom=function(){var el=this.getElement();el=el.parentNode.parentNode.parentNode.parentNode.parentNode;el.scrollTop=el.scrollHeight-el.clientHeight;};P.hideBodyChildren=function(){var children=this.bodyC.children();if(!children){return;}
for(var i=0;i<children.length;++i){var child=children[i];child.display(false);}};P._on_instClicked=function(){this.hideBodyChildren();this.bodyC.getContentElement().innerHTML=this.baseItem["instructions-html"];this.scroll2Bottom();};P._on_attClicked=function(){this.hideBodyChildren();if(!this.attendeeGrid){this.bodyC.getContentElement().innerHTML="Downloading attendees...";this.invoiceIds=[];for(var invoiceId in swItemData.invoices){if(swItemData.invoices.hasOwnProperty(invoiceId)){this.invoiceIds.push(invoiceId);}}
var request={};request.em=true;request.command="getInvoicePurchaseData";request["invoice-ids"]=this.invoiceIds;request["item-ids"]=this.itemIds;request["bywdays"]=this.bywdays;}
else{}
this.scroll2Bottom();};P.getInvPDSuccess=function(response){var taxNames={};};P.getInvPDFail=function(response){alert("Get attendees failed");};P._on_hostedByClicked=function(){var html=this.emHostedBy.getHTML();this.hideBodyChildren();this.bodyC.getContentElement().innerHTML=html;this.scroll2Bottom();};P._on_locationClicked=function(){var emWhere=this.emWhereL[0];var html=emWhere.getHTML();this.hideBodyChildren();this.bodyC.getContentElement().innerHTML=html;this.scroll2Bottom();};P._on_location2Clicked=function(){var emWhere=this.emWhereL[1];var html=emWhere.getHTML();this.hideBodyChildren();this.bodyC.getContentElement().innerHTML=html;this.scroll2Bottom();};P._on_location3Clicked=function(){var emWhere=this.emWhereL[2];var html=emWhere.getHTML();this.hideBodyChildren();this.bodyC.getContentElement().innerHTML=html;this.scroll2Bottom();};P._on_closeClicked=function(){};P.dismissAnimated=function(onStopFN){var anim=new DlAnimation();var elem=this.getContentElement();var h=this.widget.getSize().y;anim.el=elem;anim.addEventListener({onUpdate:function(){this.el.style.marginTop=-this.getPos().map(0,h)+"px";DOM.setOpacity(this.el,this.getPos().map(1,0));},onStop:function(){this.widget.display(false);elem.style.marginTop=0;onStopFN();}.$(this)});anim.start(10,50,"accel_ab");};})();(function(){var BASE=EmFinalize.inherits(DlContainer);function EmFinalize(args){if(args){if(!args.swItemData){throw("EmFinalize missing swItemData.");}
D.setDefaults(this,args);BASE.constructor.call(this,args);}
else{throw("EmFinalize missing args.");}}
eval(Dynarch.EXPORT("EmFinalize"));D.DEFAULT_ARGS={_swItemData:["swItemData",null],_emPurchaseDL:["emPurchaseDL",null],_prefs:["prefs",{}]};D.fnWords=[];P.initDOM=function(){BASE.initDOM.call(this);this.emInitDOM();};P.emInitDOM=function(){this.vbox=new DlVbox({parent:this});this.vbox.getElement().style.paddingLeft="30px";var baseItemId=swItemData["base-item-id"];var itemM=swItemData["item-map"];this.baseItem=itemM[baseItemId];this.renderView();};P.isReservationRequired=function(allSelectedAreRequired){if(!this._prefs.selectedCells){return false;}
var required=false;var reserveItems={};var itemM=this._swItemData["item-map"];var invoices=this._swItemData.invoices;var index=0;for(var i=0;i<this._prefs.selectedCells.length;++i){var selectedCell=this._prefs.selectedCells[i];var item=itemM[selectedCell.itemId];var result={};var invoiceId=selectedCell.invoiceId;var invoice=invoices[invoiceId];if(!invoice){continue;}
var qa=0;if(allSelectedAreRequired){result.reservationRequired=true;required=true;}
else if(invoice.hasOwnProperty("quantity-available")){qa=invoice["quantity-available"];if(qa>0){result.reservationRequired=true;required=true;}}
result["invoice-id"]=invoiceId;result["item-id"]=selectedCell.itemId;result.quantity=1;if(selectedCell.widget&&selectedCell.widget=='quantity'){if(selectedCell.wid){var el=document.getElementById(selectedCell.wid);result.quantity=parseInt(el.value,10);}}
if(selectedCell.hasOwnProperty("bywday")){result.bywday=selectedCell.bywday;}
else{result.bywday="w";}
result.price=selectedCell.value*result.quantity;reserveItems[index]=result;++index;}
if(required){return reserveItems;}
return null;};P.reserveItems=function(){this.reserveItems=this.isReservationRequired();if(!this.reserveItems){this.renderView();return;}
var onFail=function(response){alert("The reservation request failed.");};var request={};request.reserveItems=this.reserveItems;request.em=true;request.command="reserveItems";var json=DlJSON.encode(request);var rpc=new DlRPC({url:"/em/"+request.command,callback:handleResponse.$(this,this.reserveItemsPart2.$(this),onFail),timeout:60000,data:json});rpc.call();};P.reserveItemsPart2=function(response){if(response){this.reservationResponse=response;tmp=new DlLabel({parent:this.vbox,label:"You have been granted "+createMMSS(expiryMS)+" to complete this registration."});var dlHbox=new DlHbox({parent:this.vbox});tmp=new DlLabel({parent:dlHbox,label:"Time Remaining: "});dlHbox.addSpace();this.timeRemaining=new DlLabel({parent:dlHbox,label:"15:00"});emStartTimeRemaining(this.timeRemaining,expiryMS);}
this.renderView();};P.createDefaultOptions=function(surveyIds){var initValues;if(surveyIds){initValues=[{label:"-----",value:"none"}];}
else{initValues=[{label:"-----",value:"none"},{label:"Buyer",value:"2$-_buyer"}];}
return initValues;};P.td=function(sb,left,right,surveys){var id=left.substring(0,left.length-1);var survey=surveys[id];if(survey){if(survey.type=="a-text"){sb("<td align='right'><b>",left,"</b></td><td >",right,"</td>");}
else if(survey.type=="a-text-unique"){sb("<td align='right'><b>",left,"</b></td><td >",right,"</td>");}
else if(survey.type=="a-text-fuzzy1"){sb("<td align='right'><b>",left,"</b></td><td >",right,"</td>");}
else if(survey.type=="an-image"){sb("<td align='right'><b>",left,"</b></td><td >",right,"</td>");}
else if(survey.type=="a-checkbox"){sb("<td align='right'><b>",left,"</b></td><td >",""+right,"</td>");}
else if(survey.type=="a-number"){}
else if(survey.type=="a-choice"){}
else if(survey.type=="a-radio-buttons"){}}
else{sb("<td align='right'><b>",left,"</b></td><td >",right,"</td>");}};P.row=function(sb,left,right,aLeft2,aRight2,surveys){var left2=aLeft2;var right2=aRight2;if(typeof left2=='undefined'||left2===null){left2="&nbsp;";right2="&nbsp;";}
sb("<tr>");this.td(sb,left,right,surveys);this.td(sb,left2,right2,surveys);sb("</tr>\n");};P.push=function(useFG,leftA,rightA,label,value){if(useFG=="left"){leftA.push(label,value);}
else{rightA.push(label,value);}};P.getSurveyDataM=function(surveyDataL){var attribM={};for(var j=0;j<surveyDataL.length;++j){var k=surveyDataL[j];++j;var v=surveyDataL[j];attribM[k]=v;}
return attribM;};P.showRecipient=function(sb,recipientNum,recipient,item,invoice,aSurveys,aSurveyIds){var leftA=[];var rightA=[];var surveyIds=aSurveyIds||[];var surveys=aSurveys||{};var attribNum=3+(surveyIds.length/2);var leftMax=Math.ceil(attribNum/2);var attribM=this.getSurveyDataM(recipient["survey-data"]);var leftCount=4;var rightCount=0;var useFG;for(var i=0;i<surveyIds.length;++i){if(leftCount<=leftMax){useFG="left";++leftCount;}
else{useFG="right";++rightCount;}
var surveyId=surveyIds[i];++i;var required=surveyIds[i];var survey=surveys[surveyId];if(!survey){continue;}
var label=survey.question+":";var value=attribM[surveyId];if(!attribM.hasOwnProperty(surveyId)){value="&nbsp;";}
this.push(useFG,leftA,rightA,label,value);}
if(leftCount!=rightCount){rightA.push("&nbsp;","&nbsp;");}
this.row(sb,"First Name:",attribM.first,rightA[0],rightA[1],surveys);this.row(sb,"Last Name:",attribM.last,rightA[2],rightA[3],surveys);this.row(sb,"Email:",attribM.email,rightA[4],rightA[5],surveys);for(i=0;i<leftA.length;++i){var a=leftA[i];var c=rightA[6+i++];var b=leftA[i];var d=rightA[6+i];this.row(sb,a,b,c,d,surveys);}};P.renderReceipt=function(receiptData){if(receiptData["payment-type"]=="WPS"){var receivedIPNs=receiptData["received-ipns"];if(!swIWP.cecInstitution&&receiptData.amt!=0){if(!receivedIPNs||receivedIPNs.length===0){var sb=String.buffer();sb("<b>WARNING! We are still waiting for PayPal to send us the details of your transaction. Please refresh your browser in a few seconds.</b><br/><br/>\n");sb("<div id='footer'>");sb(" <center>http://www.ScheduleWorld.com/</center>");sb("</div>");document.body.innerHTML=sb.get();return;}}}
this.renderReceiptWork(receiptData);};P.renderReceiptWork=function(receiptData){var head=document.getElementsByTagName('head')[0];var link=document.createElement('link');link.rel='stylesheet';link.type='text/css';link.media='all';link.href='../css/xuheki/print.css';head.appendChild(link);var sb=String.buffer();sb("<div id='information'>");var prMsg="<b>This is your printable receipt.</b><br/><br/>\n";if(receiptData["payment-type"]=="eChequeCA"){var x=false;if(!x){prMsg="<b>This is your printable receipt. It will update once you have completed your payment.</b><br/><br/>\n";}}
sb(prMsg);var recipientCount=0;for(var recipientNum in receiptData.recipients){if(receiptData.recipients.hasOwnProperty(recipientNum)){++recipientCount;}}
var baseItemId=this._swItemData["base-item-id"];var buyerProv=receiptData.buyerProv;var sellerProv=this._swItemData["seller-region"];var tzid=this.baseItem.startTZ;var itemM=this._swItemData["item-map"];var invoices=this._swItemData.invoices;var preSelectedIDs=[];var rssAvailable=false;var recipient,i,invoice,href,compID,iCalendarID,bywdaylist;var icalCompIDBywdayL=[];var weekDayL=[];var rssURL=String.buffer();rssURL("<ul>");for(i=0;i<recipientCount;++i){recipient=receiptData.recipients[i];var itemId=recipient["item-id"];var index=itemId.indexOf("-");itemId=itemId.substring(index+1);index=itemId.indexOf("-");compID=itemId.substring(index+1);iCalendarID=itemId.substring(0,index);var invoiceId=recipient["invoice-id"];index=invoiceId.indexOf("-");invoiceIdNum=invoiceId.substring(index+1);preSelectedIDs.push(itemId,invoiceIdNum,recipient.bywday);invoice=invoices[invoiceId];if(!invoice){continue;}
if(typeof recipient.bywday=='undefined'||recipient.bywday===null){continue;}
var compIDBywday="s"+compID+"s"+recipient.bywday;icalCompIDBywdayL.push(compIDBywday);href=convert2Http(window.location.href);index=href.indexOf("/",9);var url=href.substring(0,index)+"/tg/eventFeed/"+iCalendarID+"/60.rss?tzid="+tzid+"&compIDBywday="+compIDBywday;link=document.createElement('link');link.rel='alternate';link.type='application/rss+xml';link.href=url;var weekDay=jsLocaleData[this.baseItem["money-locale"]].weekDays[recipient.bywday];link.title=invoice.label+"("+weekDay+")";head.appendChild(link);weekDayL.push(weekDay);rssAvailable=true;var attribM=this.getSurveyDataM(recipient["survey-data"]);rssURL("<li>",attribM.first," ",attribM.last,":");rssURL("<a href='",url,"'><img style='vertical-align: middle;' src='/sw2/images/rssimg.png'/></a>");rssURL("&nbsp;");var icalurl=href.substring(0,index)+"/em/getICalendarSubset?id="+
iCalendarID+"&compIDBywday="+compIDBywday;rssURL("<a href='",icalurl,"'><img style='vertical-align: middle;' src='/sw2/images/crystal/cal16.png'/>&nbsp;<b>iCalendar</b></a>");rssURL(" (",jsLocaleData[this.baseItem["money-locale"]].weekDays[recipient.bywday],")");rssURL("</li>");}
if(rssAvailable){if(recipientCount>1){url=href.substring(0,index)+"/tg/eventFeed/"+iCalendarID+"/60.rss?tzid="+tzid+"&compIDBywday="+icalCompIDBywdayL.join("");link=document.createElement('link');link.rel='alternate';link.type='application/rss+xml';link.href=url;link.title=invoice.label+"("+weekDayL.join()+")";head.appendChild(link);rssURL("<li>All:");rssURL("<a href='",url,"'><img style='vertical-align: middle;' src='/sw2/images/rssimg.png'/></a>");rssURL("&nbsp;");icalurl=href.substring(0,index)+"/em/getICalendarSubset?id="+iCalendarID+"&compIDBywday="+icalCompIDBywdayL.join("");rssURL("<a href='",icalurl,"'><img style='vertical-align: middle;' src='/sw2/images/crystal/cal16.png'/>&nbsp;<b>iCalendar</b></a>");rssURL(" (",weekDayL.join(),")");rssURL("</li>");}}
rssURL("</ul>");if(rssAvailable){if(recipientCount==1){sb("<b>The ");}
else{sb("<b>Each ");}
sb("event you purchased has corresponding RSS (click the RSS icon to subscribe) and iCalendar schedules. These let you view the schedule(s) you purchased in your browser, facebook and on your phone.</b><br/>\n");sb("A good RSS client for your phone: <a href='http://www.google.com/support/mobile/bin/answer.py?hl=en&answer=174819'><label style='text-decoration: underline; cursor: pointer;'>Google Reader</label></a>. You can use your browser to <a href='http://www.google.com/reader/view/#overview-page'><label style='text-decoration: underline; cursor: pointer;'>edit your RSS subscriptions</label></a>.");sb(rssURL.get());}
sb(" <div><button onclick='window.print();'>Print</button>\n");sb("(<b>This yellow area does not appear in the printed media.)</b>\n");sb(" </div>");sb("</div>");sb("<br/>");sb("<table><tbody><tr>\n");sb("<td valign='top' style='padding-left: 1em;'>\n");var swXlate1Prefs={showSessionNum:false,delayAddingEvents:true,noTitleBar:false,priceCellFN:swXlate1.cellOnlyPrice,preSelectedIDs:preSelectedIDs,ppConfirmPurchase:"nonNullValueForReceipt",noFooter:true,showingReceipt:true,receiptRecipients:receiptData.recipients,noButtons:true,prependTitle:"Order Completed Successfully: ",locale:"en-CA",calculateTime:swXlate1.timeAmPm,calculateStartTime:swXlate1.startTimeAmPm,calculateEndTime:swXlate1.endTimeAmPm,priceHeaderFN:swXlate1.headerPriceBywdays};if(buyerProv){swXlate1Prefs.buyerProv=buyerProv;}
sb("<div id='empurchase'></div>");sb("</td></tr></tbody></table>\n");var paymentType=receiptData["payment-type"]||"PayPal";if(paymentType=="eChequeCA"){if(receiptData.amt!=0){var x=false;if(!x){swXlate1Prefs.prependTitle="Order Pending Cheque Clearance: ";}}}
if(paymentType=="PayPal"){if(receiptData.amt!=0){sb("<div style='padding-left: 1em;'>\n");var receivedIPNs=receiptData["received-ipns"];if(!receivedIPNs||receivedIPNs.length===0){sb("<h2>PayPal (Still waiting for PayPal. Refresh your browser in a few seconds.)</h2>");sb("Transaction ID: ","PayPal has not sent this yet.","<br/>");sb("Payment Status: ","PayPal has not sent this yet.","<br/>");sb("Payment Date: ","PayPal has not sent this yet.","<br/>");}
else{sb("<h2>PayPal</h2>");for(i=0;i<receivedIPNs.length;++i){var ipn=receivedIPNs[i];sb("Transaction ID: ",ipn.txn_id,"<br/>");sb("Payment Status: ",ipn.payment_status,"<br/>");sb("Payment Date: ",ipn.payment_date,"<br/>");}}
sb("</div>\n");}}
if(paymentType=="eChequeCA"){if(receiptData.amt!=0){sb("<div style='padding-left: 1em;'>\n");var x=false;if(!x){sb("<h2>Your e-cheque has not cleared yet.</h2>");sb("<h2>To complete your registration you must:<br/>1. Log in to your bank website.<br/>2. Pay a bill using 'Event Manager' as the vendor.<br/>3. Use your 'Customer Number' found on the receipt page.<br/>4. Pay the total amount owed as shown on this page.</h2>");sb("Transaction ID: ","Not available yet.","<br/>");sb("Payment Status: ","Not available yet.","<br/>");sb("Payment Date: ","Not available yet.","<br/>");}
else{sb("<h2>Canadian e-Cheques</h2>");}
sb("</div>\n");}}
sb("<div style='padding-left: 1em;'>\n");sb("<h2>Event Manager</h2>");sb("Transaction ID: ",receiptData["purchase-id"]);sb("</div>\n");sb("<div style='padding-left: 1em;'>\n");sb("<h2>Seller</h2>");sb(this.baseItem["hosted-by-label"],"<br/>");var html=this.baseItem["host-mailing-address"];html=html.replace(/\n/g,"<br/>");sb(html);sb("</div>\n");sb("<br/>");var swuserId=receiptData["swuser-id"];index=swuserId.indexOf("-");var customerNumber=swuserId.substring(index+1);var buyerInfo={"First Name":receiptData.buyerFirst,"Last Name":receiptData.buyerLast,"Email":receiptData.buyerEmail,"Customer Number":customerNumber,"Country":receiptData.country};if(strValid(receiptData.country)){if(receiptData.country=="US"){buyerInfo.State=receiptData.state;}
else if(receiptData.country=="CA"){buyerInfo.Province=receiptData.state;}
else{buyerInfo["State/Province"]=receiptData.state;}}
buyerInfo["Address 1"]=receiptData.streetAddr;buyerInfo["Address 2"]=receiptData.streetAddr2;buyerInfo.City=receiptData.city;if(strValid(receiptData.postal)){if(receiptData.country=="US"){buyerInfo.ZIP=receiptData.postal;}
else if(receiptData.country=="CA"){buyerInfo["Postal Code"]=receiptData.postal;}
else{buyerInfo["ZIP/Postal Code"]=receiptData.postal;}}
sb("<br/>");sb("<table style='padding-left: 1em;'> <thead>\n");sb("<tr><th align='left' colspan='2'>Buyer</th></tr>\n");sb("</thead>");sb("<tbody>\n");for(var k in buyerInfo){if(buyerInfo.hasOwnProperty(k)){if(strValid(buyerInfo[k])){sb("<tr><td align='right'>",k,":</td><td >",buyerInfo[k],"</td></tr>\n");}}}
sb("</tbody> </table>\n");var surveyIds=this.baseItem["survey-ids"];for(i=0;i<recipientCount;++i){sb("<br/>");sb("<table> <thead>\n");recipient=receiptData.recipients[i];var item=itemM[recipient["item-id"]];invoice=invoices[recipient["invoice-id"]];if(!invoice){continue;}
var title="<b>"+(i+1)+". "+
item["customer-is-a"]+" ("+invoice.label+")</b>";sb("<tr><th align='center' colspan='4'>",title,"</th></tr>\n");sb("</thead>");sb("<tbody>\n");this.showRecipient(sb,i,recipient,item,invoice,this._swItemData.surveys,surveyIds);sb("</tbody> </table>\n");}
sb("<div id='footer'>");sb(" <center>http://www.ScheduleWorld.com/</center>");sb("</div>");document.body.innerHTML=sb.get();swXlate1.init(swXlate1Prefs,jsLocaleData);var data3=swXlate1.createData(swItemData);var targetEL=document.getElementById("empurchase");this.emPurchase=EMPurchase.init(targetEL,data3,swXlate1Prefs,swItemData);this.emPurchase.enableTaxes(buyerProv);this.btnClose=document.getElementById(this.emPurchase.id+"-btn-close");this.btnClose.style.display="none";var clickableCells=this.emPurchase.getCells(null,function(cell){return cell.widget==="clickable"||cell.widget==="quantity";});for(var j=0;j<clickableCells.length;++j){var confirmCell=clickableCells[j];if(confirmCell&&typeof confirmCell.setSelected=='function'&&swIWP.containsItemInvoiceBywday(confirmCell.itemId,confirmCell.invoiceId,confirmCell.bywday,swXlate1Prefs.preSelectedIDs)){confirmCell.setSelected(true);}
if(confirmCell&&confirmCell.widget&&confirmCell.widget=='quantity'){if(confirmCell.wid){var el=document.getElementById(confirmCell.wid);var quantity=swIWP.getQuantity(confirmCell.itemId,confirmCell.invoiceId,swXlate1Prefs.preSelectedIDs);el.value=quantity;if(typeof el.onclick=='function'){el.onclick();}
else if(typeof el.onchange=='function'){el.onchange();}
el.disabled=true;}}}
this.emPurchase.options.gpcResponse=this._prefs.gpcResponse;swXlate1.gpcSuccess.call(this.emPurchase);this.emPurchase.recompute();this.resize(this.emPurchase.id);if(is_gecko){document.body.style.overflow="visible";document.documentElement.style.overflow="visible";}
else{document.body.style.overflow="auto";document.documentElement.style.overflow="auto";}};P.resize=function(id){var leftWidth=this.emPurchase.target.clientWidth;var emPurchaseDiv=this.emPurchase.target;var emTable=document.getElementById(id+"-table");if(emTable){var parent=emTable.parentNode;var pb=DynarchDomUtils.getPaddingAndBorder(parent);var pb2=DynarchDomUtils.getPaddingAndBorder(emPurchaseDiv);DynarchDomUtils.setInnerSize(emTable,leftWidth-pb.x-pb2.x);}};P.fnCompletionHandler=function(emPerson,range){var words=D.fnWords;var val=this.getValue();var pos=val.lastIndexOfRegexp(/[;,()\s]+/g,range.start);val=val.substring(pos,range.start);if(!val||val.length<2){this.cancelCompletion();return;}
var valFixed=val?val.replace(/\s+/g," ").replace(/[^A-Za-z0-9_:+=\x2f\x2a\x20-]+/g,"").trim().split(/\s+/):null;if(valFixed&&(valFixed.length===0||!valFixed[0])){valFixed=null;}
if(!valFixed){valFixed=[];}
var words_re=valFixed?new RegExp("\\b("+valFixed.join("|")+")","ig"):null;var comp=[];var index;var word,wordLC;var label;var completion;val=val.toLowerCase();for(var i=0;i<words.length;++i){word=words[i];wordLC=word.toLowerCase();if(wordLC.indexOf(val)<0){continue;}
completion=word;label=word;comp.push({label:words_re?label.highlightWords(words_re):label.htmlEscape(),completion:completion,start:pos,after:""});}
if(comp.length>0){this.completionReady(comp);}else{this.cancelCompletion();}};P.getAllFirstNames=function(){var x=1;var words={};var first=this.emBuyer.getFirst().trim();if(first.length>2){words[first]=true;}
for(var i=0;i<this.emItemRecipientL.length;++i){var itemRecipient=this.emItemRecipientL[i];var emPerson=itemRecipient.emPerson;first=emPerson.getFirst().trim();if(first.length>2){words[first]=true;}}
return getPropKeys(words);};P.fnChangeHandler=function(emFinalize,emPerson){D.fnWords=emFinalize.getAllFirstNames();var value=this.getValue();var first=emFinalize.emBuyer.getFirst().trim();if(first==value){emPerson.copyRecipientValues(emFinalize.emBuyer);}
for(var i=0;i<emFinalize.emItemRecipientL.length;++i){var itemRecipient=emFinalize.emItemRecipientL[i];var emPersonSrc=itemRecipient.emPerson;if(emPerson.id==emPersonSrc.id){continue;}
first=emPersonSrc.getFirst().trim();if(first==value){emPerson.copyRecipientValues(emPersonSrc);}}};P.renderView=function(){this.receiptCont=new DlContainer({parent:this.vbox,display:false});this.emBuyerLabel=new DlLabel({parent:this.vbox,label:"<h2>Buyer</h2>"});this.emBuyer=new EmPerson({parent:this.vbox,first:"First Name: *",last:"Last Name: *",email:"Email Address: *",emFinalize:this});if(this._prefs.ppConfirmPurchase){this.emBuyerLabel.display(false);this.emBuyer.display(false);}
if(!this._prefs.selectedCells){return;}
this.emItemRecipientL=[];var count=1;var invoice;var itemRecipient;var itemM=this._swItemData["item-map"];var invoices=this._swItemData.invoices;var index=0;var copyValuesRS;var sameValuesRS;var surveys=this._swItemData.surveys;var surveyIds=this.baseItem["survey-ids"];var tmp;var emFinalizeWidth=this.getContentElement().clientWidth;for(var key=0;key<this._prefs.selectedCells.length;++key){var selectedCell=this._prefs.selectedCells[key];var quantity=1;if(selectedCell.widget&&selectedCell.widget=='quantity'){if(selectedCell.wid){var el=document.getElementById(selectedCell.wid);quantity=parseInt(el.value,10);}}
for(var q=0;q<quantity;++q){var item=itemM[selectedCell.itemId];var invoiceIds=item["invoice-ids"];var result={};var invoiceId=selectedCell.invoiceId;invoice=invoices[invoiceId];if(!invoice){continue;}
itemRecipient={};itemRecipient["invoice-id"]=invoiceId;itemRecipient["item-id"]=selectedCell.itemId;itemRecipient.bywday=selectedCell.bywday;itemRecipient.price=selectedCell.value;var hbox=new DlHbox({parent:this.vbox});tmp=new DlLabel({parent:hbox,label:"<b>"+
count+". "+item["customer-is-a"]+" ("+
invoice.label+")</b>"});hbox.addSpace();tmp=new DlLabel({parent:hbox,label:" - "});hbox.addSpace();var copyUseVbox=new DlVbox({parent:hbox});var cHbox=new DlHbox({parent:copyUseVbox});tmp=new DlLabel({parent:cHbox,label:"Copy values from:"});copyValuesRS=new DlRadioSelect({parent:cHbox,options:this.createDefaultOptions(),value:"none"});itemRecipient.copyValuesRS=copyValuesRS;itemRecipient.copyValuesL=tmp;copyValuesRS.addEventListener("onChange",this.emPersonCopyValuesSelected.$(this,itemRecipient));if(this._prefs.selectedCells.length==1&&quantity==1){}
else{var uHbox=new DlHbox({parent:copyUseVbox});tmp=new DlLabel({parent:uHbox,label:"Use same values as:"});sameValuesRS=new DlRadioSelect({parent:uHbox,options:this.createDefaultOptions(surveyIds),value:"none"});itemRecipient.sameValuesRS=sameValuesRS;sameValuesRS.addEventListener("onChange",this.emPersonSameValuesSelected.$(this,itemRecipient));}
itemRecipient.emPerson=new EmPerson({parent:this.vbox,first:"First Name: *",last:"Last Name: *",email:"Email Address: *",emFinalize:this,key:count,surveyIds:surveyIds,surveyIdMap:surveys,width:emFinalizeWidth});if(this.reservationResponse){var reserveResponse=this.reservationResponse[j];if(reserveResponse){itemRecipient["reservation-id"]=reserveResponse["reservation-id"];}}
itemRecipient["recipient-index"]=count;this.emItemRecipientL.push(itemRecipient);++count;}}
this.vbox.addSpace();};P.renderRecipients=function(receiptData){var itemM=this._swItemData["item-map"];var invoices=this._swItemData.invoices;var map={"first":"first","last":"last","email":"email"};var surveyIds=this.baseItem["survey-ids"];for(var recipientNum in receiptData.recipients){if(receiptData.recipients.hasOwnProperty(recipientNum)){var recipient=receiptData.recipients[recipientNum];var item=itemM[recipient["item-id"]];var invoice=invoices[recipient["invoice-id"]];if(!invoice){continue;}
var tmp=new DlLabel({parent:this.vbox,label:"<b>"+
(parseInt(recipientNum,10)+1)+". "+item["customer-is-a"]+" ("+invoice.label+")</b>"});var receiptEmPerson=new EmPerson({parent:this.vbox,first:"First Name: *",last:"Last Name: *",email:"Email Address: *",emFinalize:this,key:recipientNum,fieldValues:recipient,surveyIdMap:this._swItemData.surveys,surveyIds:surveyIds});receiptEmPerson.makeReadOnly();}}};P.wpsReserveRequest=function(request,emPurchaseDLSummary){request.em=true;request.command="wpsReserveItems";request["payment-type"]="PayPal";request.cancelURL=convert2Https(window.location.toString());var index=request.cancelURL.indexOf("?");if(index>0){request.cancelURL=request.cancelURL.substring(0,index);}
var hrefLC=window.location.href.toLowerCase();request.allItemsDesc=this.baseItem.eventTitle;request.currencyCode=jsLocaleData[this.baseItem["money-locale"]].currencyCode;request["swuser-id"]=this._swItemData["swuser-id"];var dlg=new DlDialog({title:"Waiting for PayPal...",modal:true});var cont=new DlContainer({parent:dlg});cont.getElement().style.padding="20px";var l=new DlLabel({parent:cont,label:"You have 30 minutes to complete the PayPal purchase.\nWaiting for PayPal..."});var ppAMT=formatPrice(request.amt,"",".","");var fail=function(ccResponse){dlg.destroy();var msg="Purchase failed.\n";if(ccResponse.hasOwnProperty("failed")){msg+=ccResponse.failed;}
for(var invoiceId in ccResponse){if(ccResponse.hasOwnProperty(invoiceId)){var result=ccResponse[invoiceId];if(!result){return;}
if(!result.hasOwnProperty("failed")){continue;}
msg+=result.failed+"\n";var invoices=this._swItemData.invoices;var invoice=invoices[invoiceId];var waitingList=result["waiting-list"];if(strValid(waitingList)){var index=waitingList.lastIndexOf("-");msg+="You have been added to the waiting list at position "+waitingList.substring(index+1)+".\n";}}}
alert(msg);};var success=function(reserveResponse){if(request.amt===0){this.renderReceipt(reserveResponse.reservation);return;}
this.wpsSale(request,reserveResponse);};var json=DlJSON.encode(request);var rpc=new DlRPC({url:"/em/"+request.command,callback:handleResponse.$(this,success.$(this),fail.$(this)),timeout:60000,data:json});rpc.call();dlg.centerOnParent();dlg.show();};P.cecPrepare=function(request,emPurchaseDLSummary){var recurringCustomer=true;if(recurringCustomer){var dlgPAD=new DlDialog({title:"Pre-Authorized Agreement",modal:true});var cont=new DlContainer({parent:dlgPAD});cont.getElement().style.padding="20px";var padTA=new DlEntry({parent:cont,type:"textarea",value:cecPAD.join("\n"),rows:8,size:60,readonly:true});var okCB=new DlCheckbox({parent:cont,label:cecPADCB.join("<br/>")});var padH=new DlHbox({parent:cont});var iAgree=new DlButton({parent:padH,label:"I Agree"});iAgree.addEventListener("onclick",function(){if(!okCB.checked()){alert("You must click the checkbox to show you understand\nand acknowledge and agree to participate in the PAD plan.");return;}
dlgPAD.destroy();this.cecGetAccountInfo(request,emPurchaseDLSummary);}.$(this));var cancel=new DlButton({parent:padH,label:"Cancel"});cancel.addEventListener("onclick",function(){dlgPAD.destroy();});dlgPAD.centerOnParent();dlgPAD.show();}
else{this.cecReserveRequest(request,emPurchaseDLSummary);}};P.cecReserveRequest=function(request,emPurchaseDLSummary,cecVals){request.em=true;request.command="cecReserveItems";request["payment-type"]="eChequeCA";request.cancelURL=convert2Https(window.location.toString());if(cecVals){swMerge(request,cecVals);}
request.cancelURL=convert2Https(window.location.toString());var index=request.cancelURL.indexOf("?");if(index>0){request.cancelURL=request.cancelURL.substring(0,index);}
var hrefLC=window.location.href.toLowerCase();request.allItemsDesc=this.baseItem.eventTitle;request.currencyCode=jsLocaleData[this.baseItem["money-locale"]].currencyCode;request["swuser-id"]=this._swItemData["swuser-id"];var dlg=new DlDialog({title:"Waiting for Event Manager...",modal:true});var cont=new DlContainer({parent:dlg});cont.getElement().style.padding="20px";var l=new DlLabel({parent:cont,label:"Waiting for Event Manager..."});var ppAMT=formatPrice(request.amt,"",".","");var fail=function(ccResponse){dlg.destroy();var msg="Purchase failed.\n";if(ccResponse.hasOwnProperty("failed")){msg+=ccResponse.failed;}
for(var invoiceId in ccResponse){if(ccResponse.hasOwnProperty(invoiceId)){var result=ccResponse[invoiceId];if(!result){return;}
if(!result.hasOwnProperty("failed")){continue;}
msg+=result.failed+"\n";var invoices=this._swItemData.invoices;var invoice=invoices[invoiceId];var waitingList=result["waiting-list"];if(strValid(waitingList)){var index=waitingList.lastIndexOf("-");msg+="You have been added to the waiting list at position "+waitingList.substring(index+1)+".\n";}}}
alert(msg);};var success=function(reserveResponse){dlg.destroy();if(swIWP.cecInstitution!='other'){var msg="To complete your registration you must:\n\n1. Log in to your bank website.\n2. Pay a bill using 'Event Manager' as the vendor.\n3. Use your 'Customer Number' found on the receipt page.\n4. Pay the full amount owed as shown on the receipt page.\n\nYour receipt will be shown when you click 'OK'.\nIf this is your first time using Event Manager your\nusername and password have been emailed to you.";alert(msg);}
else{alert("Your registration is almost complete.\nYou need to mail a cheque to the seller for the amount owed shown\non the receipt page.\nThe receipt page will shown when you click 'OK'.\nYou will be emailed when the seller receives your\ncheque and changes your purchase status to 'Completed'.");}
if(request.amt===0){this.renderReceipt(reserveResponse.reservation);return;}
var swemRequest=reserveResponse["reserve-request-id"];swIWP.initRenderReceipt(swemRequest);};var json=DlJSON.encode(request);var rpc=new DlRPC({url:"/em/"+request.command,callback:handleResponse.$(this,success.$(this),fail.$(this)),timeout:60000,data:json});rpc.call();dlg.centerOnParent();dlg.show();};P.cecGetAccountInfo=function(request,emPurchaseDLSummary){var dlgAccount=new DlDialog({title:"Account Information",modal:true});var cont=new DlContainer({parent:dlgAccount});cont.getElement().style.padding="20px";var fg=new DlFieldGrid({parent:cont});var buyerName="First"+" "+"Last";var buyerNameE=fg.addField({name:"name",label:"Buyer Name:",widget:new DlLabel({label:buyerName})});var emailE=fg.addField({name:"email",label:"Email",widget:new DlLabel({label:"fixme@a.com"})});var phoneE=fg.addField({name:"phone",label:" Phone"});var address1E=fg.addField({name:"address1",label:" Address"});var address2E=fg.addField({name:"address2",label:" Address"});var cityE=fg.addField({name:"city",label:" City"});var provinceE=fg.addField({name:"province",label:" Province"});var postalE=fg.addField({name:"postal",label:" Postal Code"});fg.addField({name:"none",label:"(Example Cheque)",widget:new DlLabel({label:"<a target='_blank' href='http://en.wikipedia.org/wiki/File:CanadianChequeSample.png'>This cheque</a> has branch 00005, institution 123 and account 1234567."})});fg.addField({name:"branch",label:"<b>Branch (5 Digits) *</b>"});fg.addField({name:"missingInst",label:"",widget:new DlLabel({label:"Your institution (bank) is not supported? Select 'Other'."})});this.institutionSelect=new DlRadioSelect({options:fromInstitutions,value:"none"});fg.addField({name:"institution",label:"<b>Institution *</b>",widget:this.institutionSelect});accountValidator=new DlValidator(DlValidator.Number,0,9999999999,true,0);fg.addField({name:"account",label:"<b>Account Number *</b>",widget:new DlEntry({validators:[accountValidator]})});var accHbox=new DlHbox({parent:cont});var payB=new DlButton({parent:accHbox,label:"Pay"});payB.addEventListener("onclick",function(){var vals=fg.getValues();if(!vals.branch||vals.branch.length!=5){alert("The branch is not valid.");return;}
if(!vals.institution||vals.institution=='none'){alert("The institution is not valid.");return;}
if(!vals.account||vals.account.length<3){alert("The account is not valid.");return;}
swIWP.cecBranch=vals.branch;swIWP.cecInstitution=vals.institution;swIWP.cecAccount=vals.account;this.cecReserveRequest(request,emPurchaseDLSummary,vals);dlgAccount.destroy();}.$(this));var cancelB=new DlButton({parent:accHbox,label:"Cancel"});cancelB.addEventListener("onclick",function(){dlgAccount.destroy();});swIWP.cecBranch=null;swIWP.cecInstitution=null;swIWP.cecAccount=null;dlgAccount.centerOnParent();dlgAccount.show();phoneE.focus();};P.getMailMsg=function(){var sb=String.buffer();sb("<h3>You Must Mail A Cheque</h3>","","");return sb.get();};P.cecSale=function(request,reserveResponse){var reservationId=reserveResponse["reserve-request-id"];var recurringCustomer=true;if(recurringCustomer){var msg=["Your purchase has been initiated successfully.","You will be emailed when the cheque clears in 4 business days."];alert(msg.join("\n"));this.renderReceipt(reserveResponse.reservation);return;}};P.wpsSale=function(request,ppResponse){var reservationId=ppResponse["reserve-request-id"];var hrefLC=window.location.href.toLowerCase();var url;var ipnURL;if(hrefLC.indexOf("scheduleworld")>=0){url="https://www.paypal.com/cgi-bin/webscr";ipnURL="https://www.ScheduleWorld.com/em/ppIPN";}
else{url="https://www.beta-sandbox.paypal.com/cgi-bin/webscr";ipnURL="http://99.241.2.109:8383/em/ppIPN";}
var args={};args.amount_1=formatPrice(request.amt,"",".","");args.business=this._swItemData["paypal-merchant-email"];args.item_name_1=request.allItemsDesc;args.upload="1";args.currency_code=jsLocaleData[this.baseItem["money-locale"]].currencyCode;args.cmd="_cart";args.charset="utf-8";args.paymentaction="sale";args.bn="ScheduleWorld_app_WPS_CA";args.cancel_return=request.cancelURL;if(args.cancel_return.length>1024){delete args.cancel_return;}
args.notify_url=ipnURL;args.invoice=reservationId;args.rm="0";args["return"]=request.cancelURL;args.cbt="Show A Detailed Printable Receipt";args.first_name=request.buyerFirst;args.last_name=request.buyerLast;var form=document.createElement("form");form.setAttribute("method","POST");form.setAttribute("action",url);for(var key in args){if(args.hasOwnProperty(key)){var hiddenField=document.createElement("input");hiddenField.setAttribute("type","hidden");hiddenField.setAttribute("name",key);hiddenField.setAttribute("value",args[key]);form.appendChild(hiddenField);}}
document.body.appendChild(form);form.submit();document.body.removeChild(form);};P.initPaypalPayment=function(request,emPurchaseDLSummary){request.amt=emPurchaseDLSummary._prefs.totalCents;if(request.amt>1000000){var price=formatPrice(1000000);alert("Paypal does not allow transactions > "+price+"\n in any currency.");return;}
if(this._swItemData["payment-provider"]=="WPS"){this.wpsReserveRequest(request,emPurchaseDLSummary);return;}
if(this._swItemData["payment-provider"]=="CEC"){this.cecPrepare(request,emPurchaseDLSummary);return;}
request.em=true;request.command="iwpPurchaseItems";request["payment-type"]="PayPal";request.cancelURL=convert2Https(window.location.toString());request.allItemsDesc=this.baseItem.eventTitle;request.currencyCode=jsLocaleData[this.baseItem["money-locale"]].currencyCode;request["swuser-id"]=this._swItemData["swuser-id"];var dlg=new DlDialog({title:"Waiting for PayPal...",modal:true});var cont=new DlContainer({parent:dlg});cont.getElement().style.padding="20px";var l=new DlLabel({parent:cont,label:"You have 30 minutes to complete the PayPal purchase.\nWaiting for PayPal..."});var fail=function(ccResponse){dlg.destroy();var msg="Purchase failed.\n";msg+=buildPaypalFailedMessage(ccResponse);alert(msg);};var success=function(ccResponse){window.location=ccResponse.ppResponse.redirectURL;};var json=DlJSON.encode(request);var rpc=new DlRPC({url:"/em/"+request.command,callback:handleResponse.$(this,success,fail),timeout:60000,data:json});rpc.call();dlg.centerOnParent();dlg.show();};P.initSecurePayment=function(paymentType){if(this.timeRemaining){if(isReservationExpired(this.timeRemaining.label())){alert("Your item reservations have expired.\nPlease cancel this purchase and try again.");return;}}
if(this.timeRemaining){this.timeRemaining.expiryMS=0;this.timeRemaining.label("Done.");}};P.copyRecipientValues=function(srcEmPerson,destEmPerson){destEmPerson.setValues(srcEmPerson);};P.emPersonCopyValuesSelected=function(destItemRecipient,oldVal,newVal){var copyValuesRS=destItemRecipient.copyValuesRS;copyValuesRS.setValue("none",true,true);var destEmPerson=destItemRecipient.emPerson;var srcEmPerson;if(newVal=="2$-_buyer"){srcEmPerson=this.emBuyer;destEmPerson.copyRecipientValues(srcEmPerson);this.emPersonUpdated(oldVal,newVal);return;}
var key=newVal;for(var i=0;i<this.emItemRecipientL.length;++i){var itemRecipient=this.emItemRecipientL[i];if(key!=itemRecipient["recipient-index"]){continue;}
srcEmPerson=itemRecipient.emPerson;destEmPerson.copyRecipientValues(srcEmPerson);break;}
this.emPersonUpdated(oldVal,newVal);};P.emPersonSameValuesSelected=function(destItemRecipient,oldVal,newVal){var destEmPerson=destItemRecipient.emPerson;if(newVal=="none"){destEmPerson.display(true);destItemRecipient.sameValuesRS.setValue("none",true,true);destItemRecipient.copyValuesL.display(true);destItemRecipient.copyValuesRS.display(true);}
else{destEmPerson.display(false);destItemRecipient.copyValuesL.display(false);destItemRecipient.copyValuesRS.display(false);}
if(oldVal=="none"){for(var i=0;i<this.emItemRecipientL.length;++i){var itemRecipient=this.emItemRecipientL[i];if(itemRecipient["recipient-index"]==destItemRecipient["recipient-index"]){continue;}
var sameValuesRS=itemRecipient.sameValuesRS;if(sameValuesRS){var selected=sameValuesRS.getValue();if(selected==destItemRecipient["recipient-index"]){sameValuesRS.setValue("none");}}}
this.emPersonUpdated();}};P.emPersonUpdated=function(oldVal,newVal){for(var i=0;i<this.emItemRecipientL.length;++i){var itemRecipient=this.emItemRecipientL[i];var copyOptions=this.createRSModel(itemRecipient.emPerson,true);var sameOptions=this.createRSModel(itemRecipient.emPerson,false);var copyValuesRS=itemRecipient.copyValuesRS;var selected=copyValuesRS.getValue();copyValuesRS.setOptions(copyOptions);var sameValuesRS=itemRecipient.sameValuesRS;if(sameValuesRS){selected=sameValuesRS.getValue();sameValuesRS.setOptions(sameOptions);var n=parseInt(selected,10);if(!isNaN(n)){sameValuesRS.setValue(selected,true,true);}}}};P.createOptionLabel=function(first,last,email,key){var label="<b>("+key+")</b> "+first;if(last.length>0){label+=" ";label+=last;}
if(email.length>0){label+=" ";label+="&lt;"+email+">";}
return label;};P.createRSModel=function(anEmPerson,includeBuyer){var surveyIds=this.baseItem["survey-ids"];var options;if(includeBuyer||!surveyIds){options=[{label:"-----",value:"none"},{label:"Buyer",value:"2$-_buyer"}];}
else{options=[{label:"-----",value:"none"}];}
for(var i=0;i<this.emItemRecipientL.length;++i){var itemRecipient=this.emItemRecipientL[i];if(anEmPerson._key==itemRecipient["recipient-index"]){continue;}
var emPerson=itemRecipient.emPerson;var values=emPerson.getValues();if(values.first.length===0&&values.last.length===0&&values.email.length===0){continue;}
var sameValuesRS=itemRecipient.sameValuesRS;if(sameValuesRS){var selected=sameValuesRS.getValue();if(selected!="none"){continue;}}
var option={};option.label=this.createOptionLabel(values.first,values.last,values.email,emPerson._key);option.value=emPerson._key;options.push(option);}
return options;};P.addOptions=function(srcEmPerson,destEmPerson){};P.ppClick=function(emPurchaseDLSummary,laFG){if(this.purchaseStarted){alert("The payment process has already started.\nScheduleWorld is currently waiting for a response from PayPal.");return;}
var legalAgreement=this.baseItem["legal-agreement-html"];if(legalAgreement&&strValid(legalAgreement)){var laValues=laFG.getValues();if(!laValues.legalAgreementCB){alert("You must first accept the legal agreement.");return;}}
var paymentRequest=this.validate();if(!paymentRequest){return;}
this.initPaypalPayment(paymentRequest,emPurchaseDLSummary);};P.cecClick=function(emPurchaseDLSummary,laFG){if(this.purchaseStarted){alert("The payment process has already started.");return;}
var legalAgreement=this.baseItem["legal-agreement-html"];if(legalAgreement&&strValid(legalAgreement)){var laValues=laFG.getValues();if(!laValues.legalAgreementCB){alert("You must first accept the legal agreement.");return;}}
var paymentRequest=this.validate();if(!paymentRequest){return;}
this.initPaypalPayment(paymentRequest,emPurchaseDLSummary);};P.validate=function(){var paymentRequest={};var missing=this.emBuyer.getInvalid();if(missing){alert("The buyer has an invalid '"+missing+"'.");return false;}
paymentRequest.buyerFirst=this.emBuyer.getFirst();paymentRequest.buyerLast=this.emBuyer.getLast();paymentRequest.buyerEmail=this.emBuyer.getEmail();if(this._prefs.buyerProv){paymentRequest.buyerProv=this._prefs.buyerProv;paymentRequest.sellerProv=this._prefs.sellerProv;}
paymentRequest["base-item-id"]=this._swItemData["base-item-id"];paymentRequest["publish-version"]=this._swItemData["publish-version"];paymentRequest.recipients={};var itemM=this._swItemData["item-map"];var invoices=this._swItemData.invoices;var recipient;for(var i=0;i<this.emItemRecipientL.length;++i){var itemRecipient=this.emItemRecipientL[i];recipient={};var emPerson=itemRecipient.emPerson;recipient.index=itemRecipient["recipient-index"];var sameValuesRS=itemRecipient.sameValuesRS;var selected="none";if(sameValuesRS){selected=sameValuesRS.getValue();}
if(selected=="none"){this.emPerson2Recipient(emPerson,recipient);}
else{this.setRecipientAttribs(recipient,selected);}
recipient["invoice-id"]=itemRecipient["invoice-id"];recipient.bywday=itemRecipient.bywday;recipient["item-id"]=itemRecipient["item-id"];paymentRequest.recipients[i]=recipient;if(selected!="none"){continue;}
missing=emPerson.getInvalid();if(missing){var count=itemRecipient["recipient-index"];var invoiceId=itemRecipient["invoice-id"];var invoice=invoices[invoiceId];if(!invoice){alert("No invoice:"+invoiceId);return false;}
var itemId=itemRecipient["item-id"];var item=itemM[itemId];var label=""+count+". "+item["customer-is-a"]+" ("+
invoice.label+")";alert("Invalid '"+missing+"' for:\n"+label);return false;}
var wlItemId="wl-"+recipient["item-id"]+"-"+
recipient["invoice-id"];if(this._prefs.wl&&this._prefs.wl.hasOwnProperty(wlItemId)){recipient.wl=true;}}
return paymentRequest;};P.setRecipientAttribs=function(recipient,key){if(key=="2$-_buyer"){this.emPerson2Recipient(this.emBuyer,recipient);return;}
for(var i=0;i<this.emItemRecipientL.length;++i){var itemRecipient=this.emItemRecipientL[i];if(itemRecipient["recipient-index"]!=key){continue;}
var emPerson=itemRecipient.emPerson;this.emPerson2Recipient(emPerson,recipient);}};P.emPerson2Recipient=function(emPerson,recipient){var values=emPerson.getValues();var kv=[];recipient["survey-data"]=kv;for(var k in values){if(values.hasOwnProperty(k)){kv.push(k);kv.push(values[k]);}}};P.resizeWidth=function(){var el=this.getContentElement();if(!el){return;}
var emFinalizeWidth=this.getContentElement().clientWidth;for(var i=0;i<this.emItemRecipientL.length;++i){var itemRecipient=this.emItemRecipientL[i];var emPerson=itemRecipient.emPerson;emPerson.resizeFG(emFinalizeWidth);}};})();var TMPL_BG_IMAGE=String.template('url("$url") no-repeat 50% 50%');(function(){EmHostedBy.inherits(DlContainer);function EmHostedBy(args){if(args){D.setDefaults(this,args);DlContainer.call(this,args);}}
eval(Dynarch.EXPORT("EmHostedBy",true));D.DEFAULT_ARGS={swItemData:["swItemData",null]};P.initDOM=function(){D.BASE.initDOM.apply(this,arguments);if(this.swItemData){var baseItemId=this.swItemData["base-item-id"];var itemM=this.swItemData["item-map"];var baseItem=itemM[baseItemId];var html=this.getHTML(baseItem);this.getElement().innerHTML=html;}};P.getHTML=function(item){if(this.html){return this.html;}
var sb=String.buffer("<div class='EmHostedBy-label'>$label</div>","<div class='EmHostedBy-contactHost'>$description</div>","<div class='EmHostedBy-contactHost'>$contactHost</div>","<div class='EmHostedBy-contactHost'><a href='$hostWWW'>$hostA</a></div>");var contact="";var hostedByEmail=item["hosted-by-email"];if(hostedByEmail){contact="<a href='mailto:"+hostedByEmail+"'>Email the Host</a>";}
var TMPL=String.template(sb.get());var hostWWW="javascript:;";var hostA="";if(strValid(item["hosted-by-www"])){hostWWW=escapeXmlAttribute(item["hosted-by-www"]);hostA=escapeText(item["hosted-by-www"]);}
var html=TMPL({label:item["hosted-by-label"],hostWWW:hostWWW,hostA:hostA,description:item["hosted-by-desc-html"],viewOther:"View other "+item["hosted-by-label"]+" events",contactHost:contact,subscribeRSS:"Subscribe to receive notifications of future events by this Host"});this.html=html;return html;};P.getNextComponentElement=function(){return this.getElement().nextSibling;};})();(function(){var BASE=EmPurchaseDL.inherits(DlContainer);function EmPurchaseDL(args){if(args){if(!args.swItemData){throw("EmPurchaseDL missing swItemData.");}
D.setDefaults(this,args);BASE.constructor.call(this,args);}
else{throw("EmPurchaseDL missing args.");}}
eval(Dynarch.EXPORT("EmPurchaseDL"));D.DEFAULT_ARGS={_swItemData:["swItemData",null],_prefs:["prefs",{}],_showPurchaseButton:["showPurchaseButton",true],_purchaseValues:["purchaseValues",null],_titleComponent:["titleComponent",null],_buttonClickFN:["buttonClickFN",null]};P.initDOM=function(){BASE.initDOM.call(this);this.emInitDOM();};P.emInitDOM=function(){this._prefs.emid=this.id.substring(8);this.data3=swXlate1.createData(this._swItemData,this._prefs);this._titleComponent.setTitleText(this.data3.title);var target=this.getContentElement();if(this._prefs.ppConfirmPurchase){this._buttonClickFN=this.finalizePurchase.$(this);}
this.emPurchase=EMPurchase.init(target,this.data3,this._prefs,this._swItemData,this._buttonClickFN);};P.finalizePurchase=function(){var request={};request.em=true;request.command="finalizePaypalPayment";request.token=gup("token");request.PayerID=gup("PayerID");request.ppConfirmPurchase=gup("ppConfirmPurchase");request.amt=this._prefs.totalCents;var dlg=new DlDialog({title:"Waiting for PayPal...",modal:true});var cont=new DlContainer({parent:dlg});cont.getElement().style.padding="20px";var l=new DlLabel({parent:cont,label:"You have 30 minutes to complete the PayPal purchase.\nWaiting for PayPal..."});var fail=function(response){dlg.destroy();var msg="Finalize payment failed.\n";msg+=buildPaypalFailedMessage(response);alert(msg);};var success=function(response){dlg.destroy();this.receiptRenderFN(response);};var json=DlJSON.encode(request);var rpc=new DlRPC({url:"/em/"+request.command,callback:handleResponse.$(this,success.$(this),fail.$(this)),timeout:60000,data:json});rpc.call();dlg.centerOnParent();dlg.show();};P.addEvents=function(){this.emPurchase.addEvents();};P.canPurchaseWithCheque=function(){for(var invoiceId in this._swItemData.invoices){if(this._swItemData.invoices.hasOwnProperty(invoiceId)){var invoice=this._swItemData.invoices[invoiceId];if(!invoice){continue;}
if(invoice["payment-option-cheque"]){return true;}}}
return false;};P.refreshView=function(){if(this._purchaseValues){this.refreshSummaryView();return;}
var invoiceIdSoldLabelM={};};P.setTaxNames=function(){var taxNames={};var invoice;var showTax1=false;var showTax2=false;var i;for(var invoiceId in this._swItemData.invoices){if(this._swItemData.invoices.hasOwnProperty(invoiceId)){invoice=this._swItemData.invoices[invoiceId];if(!invoice){continue;}
var tax1Name=invoice["tax1-name"];if(tax1Name&&tax1Name.length>0){showTax1=true;taxNames[tax1Name]=1;}
var tax2Name=invoice["tax2-name"];if(tax2Name&&tax2Name.length>0){showTax2=true;taxNames[tax2Name]=2;}}}
if(showTax1){}
else{}
if(showTax2){}
else{}
if(showTax1||showTax2){}
else{}
var keys=getPropKeys(taxNames);if(keys.length>2){alert("You have more than 2 unique tax names:"+keys.join(","));return;}
var taxNum;var taxName;for(i=0;i<keys.length;++i){taxName=keys[i];taxNum=taxNames[taxName];if(taxNum==1){}
if(taxNum==2){}}
return taxNames;};P.refreshSummaryView=function(){this.totalCents=Math.round(this.totalCents);};P.getTotalCents=function(){return this.totalCents;};P.getValues=function(){var values={};return values;};})();function EMPurchase(){this.CONSTRUCT.apply(this,arguments);}
(function(D,P){var UA=navigator.userAgent,is_opera=/opera/i.test(UA),is_khtml=/Konqueror|Safari|KHTML/i.test(UA),is_ie=/msie/i.test(UA)&&!is_opera&&!(/mac_powerpc/i.test(UA)),is_ie6=is_ie&&/msie 6/i.test(UA),is_gecko=/gecko/i.test(UA)&&!is_khtml&&!is_opera&&!is_ie;var C="EMPurchase";D.ID=0;var TMPL_BODY=template('<div class="$C" id="$id">','<div class="$C-titlebar" id="$id-titlebar"><div class="$C-title" id="$id-title">$title</div><div class="$C-btn-close" id="$id-btn-close"></div></div>','<div class="$C-content" id="$id-content"><div class="$C-content-main" id="$id-content-main">$content</div><div class="$C-content-bottom">$bottom</div></div>','</div>');var TMPL_BODY_NO_TITLE=template('<div class="$C" id="$id">','<div class="$C-content" id="$id-content"><div class="$C-content-main" id="$id-content-main">$content</div><div class="$C-content-bottom">$bottom</div></div>','</div>');var TMPL_TABLE=template('<table class="$C-table" id="$id-table" cellspacing="0" cellpadding="0"> $header $body $footer </table>');var TMPL_SEPARATOR=template('<tbody class="$C-table-separator"><tr><td colspan="100"></td></tr></tbody>');var TMPL_SEPARATOR2=template('<tbody class="$C-table-separator2"><tr><td colspan="100"><div>&nbsp;</div></td></tr></tbody>');var TMPL_WIDGET_INPUT=template('<input id="$wid" value="$value" class="$C-type-$type" onchange="EMPurchase.recompute(this)" />');var TMPL_WIDGET_QUANTITY='<select id="$wid" class="$C-type-$type" onchange="EMPurchase.recompute(this)" >';var TMPL_WIDGET_PROV='<select id="$wid" class="$C-type-$type" onchange="EMPurchase.enableTaxes(this, this.value)" >';var TMPL_WIDGET_PROV_CONT=template('<table class="$C-widget-$type" cellspacing="0" cellpadding="0"><tr><td style="border-top: 0px; padding-top: 0px;">$widget</td></tr></table>');var TMPL_WIDGET_CONT=template('<table class="$C-widget-$type" cellspacing="0" cellpadding="0"><tr><td>$widget</td></tr></table>');D.recompute=function(anEl){var el=anEl;while(el.parentNode&&!el.EMPurchase){el=el.parentNode;}
if(el){el.EMPurchase.recompute(this.taxNames);var id=anEl.id;var availId=id.replace("field","available");var availEl=document.getElementById(availId+"-w");if(!availEl){return;}
var prev=parseInt(availEl.firstChild.innerHTML,10);var sel=parseInt(anEl.value,10);var getK=/.*-swemItem-(.*)-swemInvoice(.*)/;var kResult=getK.exec(availId);var k=kResult[1]+kResult[2]+"-w";var purchaseCount=el.EMPurchase.options.gpcResponse.data;var used=purchaseCount[k];if(isNaN(used)){used=0;}
var invoices=el.EMPurchase.swItemData.invoices;var invoice=invoices["swemInvoice"+kResult[2]];var invAvail=invoice["quantity-available"];if(invAvail==0){return;}
var avail=invAvail-used-sel;var itemM=el.EMPurchase.swItemData["item-map"];var swItem=itemM["swemItem-"+kResult[1]];if(swItem.prorated){var instancesLeft=swXlate1.instanceCountLeft(swItem);if(instancesLeft===0){avail=instancesLeft;}}
if(avail<0){avail=0;}
availEl.firstChild.innerHTML=""+avail;}};D.enableTaxes=function(el,buyerProv){while(el.parentNode&&!el.EMPurchase){el=el.parentNode;}
if(el){el.EMPurchase.enableTaxes(buyerProv);el.EMPurchase.recompute(this.taxNames);}};P.setMCClick=function(fn){this.mcClick=fn;};P.setVisaClick=function(fn){this.visaClick=fn;};P.setPPClick=function(fn){this.ppClick=fn;};P.setCECClick=function(fn){this.cecClick=fn;};P.addEvents=function(){if(!this.options.noTitleBar){addEvent(this.el("btn-close"),"mousedown",curry(this._btnClose,this));}
this.resetContentListeners();this.recompute();this.purchaseButton=null;if(!this.options.noButtons){if(this.options.noFooter){this.purchaseButton=document.getElementById(this.id+"-changeOrderButton");var mcButton=document.getElementById(this.id+"-mcFinalizeButton");if(mcButton){mcButton.onclick=this.mcClick;}
var visaButton=document.getElementById(this.id+"-visaFinalizeButton");if(visaButton){visaButton.onclick=this.visaClick;}
var ppButton=document.getElementById(this.id+"-ppFinalizeButton");if(ppButton){ppButton.onclick=this.ppClick;}
var cecButton=document.getElementById(this.id+"-cecFinalizeButton");if(cecButton){cecButton.onclick=this.cecClick;}}
else{this.purchaseButton=document.getElementById(this.id+"-purchaseButton");}}
if(this.purchaseButton){this.purchaseButton.onclick=this.buttonClickFN;}};P.CONSTRUCT=function(target,data,options,swItemData,buttonClickFN){this.options=options;this.swItemData=swItemData;if(!this.options){this.options={};}
this.data=data;if(options.initialID){D.ID=options.initialID;}
this.id=C+(++D.ID);this.target=target;this.buttonClickFN=buttonClickFN;var useTmpl=TMPL_BODY;if(options&&options.noTitleBar){useTmpl=TMPL_BODY_NO_TITLE;}
var html=this.tmpl(useTmpl,{title:data.title,content:this.buildContent(data),bottom:this.buildBottom(data)});data.html=html;target.innerHTML=html;target.EMPurchase=this;if(!options.delayAddingEvents){this.addEvents();}
if(this.swItemData["dynamic-item-taxes"]){this.hideTaxes();}};P.resetContentListeners=function(){for(var id in this.clickables){if(this.clickables.hasOwnProperty(id)){var td=$(id);addEvent(td,"mousedown",curry(this.onCellClick,this,this.clickables[id]));}}};P.onCellClick=function(cell,ev){ev=ev||window.event;if(cell.onclick){cell.onclick.call(this,cell);return stopEvent(ev);}};P.tmpl=function(tmpl,args){if(!args){args={};}
args.C=C;args.id=this.id;return tmpl.call(args);};P.buildContent=function(data){this.fields={};this.exprs={};for(var i=1;i<100;i+=10){this._exprId=i+1;if(!document.getElementById(this._getExprId())){break;}}
this.clickables={};this._clickId=0;var header=this.buildHeader(data);var body=this.buildBody(data);var footer=this.buildFooter(data);return this.tmpl(TMPL_TABLE,{header:header||"",body:body||"",footer:footer||""});};P._getExprId=function(id){var anId;for(var i=0;i<100;++i){anId=this.id+"-expr-"+(id||++this._exprId);var existing=document.getElementById(anId);if(!existing){break;}}
return anId;};P._setExpression=function(cell){var id=this._getExprId();this.exprs[id]=cell;var x=document.getElementById(id);if(cell.hasOwnProperty("taxName")){if(!this.taxNames){this.taxNames={};}
this.taxNames[cell.taxName]=id;}
return"<span id='"+id+"'></span>";};P._getClickId=function(rowNum,cellCol){return this.id+"-click-"+rowNum+"-"+cellCol;};P._setClickable=function(cell){var id=this._getClickId(cell.rowNum,cell.clickableCol);this.clickables[id]=cell;cell.tdid=id;cell.selected=false;cell.className=(cell.className?cell.className+" ":"")+C+"-cell-clickable";cell.setSelected=function(sel,swItemData,prefs){if(!swItemData){this.selected=sel;condClass(sel,$(id),C+"-cell-selected");return;}
var invoices=swItemData.invoices;var v,invoice,k,purchaseCount;v="";if(cell.hasOwnProperty("bywday")){k=cell.itemId.substring(9)+"-"+
cell.invoiceId.substring(12)+"-"+cell.bywday;}
else{k=cell.itemId.substring(9)+"-"+
cell.invoiceId.substring(12)+"-w";}
purchaseCount=prefs.purchaseCount[k];if(typeof purchaseCount=='undefined'){purchaseCount=0;}
else{purchaseCount=parseInt(purchaseCount,10);}
invoice=invoices[cell.invoiceId];var quantityAvailable=invoice["quantity-available"];quantityAvailable=parseInt(quantityAvailable,10);var left=quantityAvailable-purchaseCount;var swItem=swItemData["item-map"][cell.itemId];if(swItem.prorated){var instancesLeft=swXlate1.instanceCountLeft(swItem);if(instancesLeft===0){left=instancesLeft;}}
if(quantityAvailable>0&&left<1&&sel){if(invoice["waitinglist-enabled"]){var tmp=confirm("Sold out.\nDo you wish to be placed on the waiting list?");if(tmp){cell.wl=true;}
else{cell.wl=false;}}
else{alert("Sold out.");}
return;}
if(sel){++purchaseCount;--left;}
else{--purchaseCount;++left;}
prefs.purchaseCount[k]=purchaseCount;v=cell.display;if(quantityAvailable>0){var index=v.indexOf("(");if(index>0){v=v.substring(0,index)+"("+left+")";}
else{v+=" ("+left+")";}}
cell.display=v;var el=document.getElementById(cell.tdid);el.lastChild.innerHTML=v;this.selected=sel;condClass(sel,$(id),C+"-cell-selected");};return id;};P._setSelectable=function(cell){var id=this._getClickId(cell.rowNum,cell.clickableCol);this.clickables[id]=cell;cell.tdid=id;cell.selected=false;cell.setSelected=function(sel){this.selected=sel;};return id;};P._buildHeaderFooter=function(html,data){foreach(data,curry(this.buildCell,this,curry(html.push,html),null));};P.buildHeader=function(data){if(data.header){var html=["<thead><tr>"];this._buildHeaderFooter(html,data.header);html.push("</tr></thead>",this.tmpl(TMPL_SEPARATOR));return html.join("");}};P.buildFooter=function(data){if(data.footer){var html=[this.tmpl(TMPL_SEPARATOR),"<tfoot>"];var insertedFooterNote=false;if(data.footerFee){insertedFooterNote=true;html.push("<tr>");if(data.footerNote){this._buildHeaderFooter(html,data.footerNote);}
this._buildHeaderFooter(html,data.footerFee);html.push("</tr>");}
if(data.sellerCanadian){html.push("<tr>");this._buildHeaderFooter(html,data.sellerCanadian);html.push("</tr>");}
if(data.tax1){html.push("<tr>");this._buildHeaderFooter(html,data.tax1);html.push("</tr>");}
if(data.tax2){html.push("<tr>");this._buildHeaderFooter(html,data.tax2);html.push("</tr>");}
html.push("<tr>");if(!insertedFooterNote){if(data.footerNote){this._buildHeaderFooter(html,data.footerNote);}}
this._buildHeaderFooter(html,data.footer);html.push("</tr>");html.push("</tfoot>");return html.join("");}};P.buildBody=function(data){if(data.body){var html=[];foreach(data.body,curry(function(row){var tmp=[];this.buildRow(curry(tmp.push,tmp),row);if(tmp.length>0){html.push(tmp.join(""));}},this));return html.join(this.tmpl(TMPL_SEPARATOR2));}};P.buildCell=function(html,invoice,cell){html("<td");var text="";if(cell!=null){var colspan,rowspan,className;if(typeof cell=="string"){var m=/\{([0-9]+)\}/.exec(cell);if(m){cell=cell.substr(0,m.index);colspan=m[1];}
text=cell;}else{cell.invoice=invoice;text=this.buildWidget(invoice,cell);if(cell.tdid){html(" id='",cell.tdid,"'");}
colspan=cell.colspan;rowspan=cell.rowspan;className=cell.className;}
if(className){html(" class='",className,"'");}
if(colspan){html(" colspan='",colspan,"'");}
if(rowspan){html(" rowspan='",rowspan,"'");}
if(className=="EMPurchase-cell-clickable"){html("><label class='EMPurchase-cell-clickable-l'>",text,"</label></td>");}
else{html(">",text,"</td>");}}
else{html(">",text,"</td>");}};P.buildRow=function(html,row){if(row.multi){var render=false;var multiShowLength=0;foreach(row.multi,curry(function(line){if(!this.options.receiptRecipients||swXlate1.containsItemInvoice(line.includedItemId,line.invoiceId,this.options.receiptRecipients)){render=true;++multiShowLength;}},this));if(render){html("<tbody>");var rowNum=0;foreach(row.multi,curry(function(line){if(!this.options.receiptRecipients||swXlate1.containsItemInvoice(line.includedItemId,line.invoiceId,this.options.receiptRecipients)){if(multiShowLength>2&&rowNum%2==1){html("<tr class='EMPurchase-odd-row-highlight'>");}
else{html("<tr>");}
foreach(line.data,curry(this.buildCell,this,html,row));html("</tr>");++rowNum;}},this));html("</tbody>");}}else{if(!this.options.receiptRecipients||swXlate1.containsItemInvoice(row.includedItemId,row.invoiceId,this.options.receiptRecipients)){html("<tbody>");html("<tr>");foreach(row.data,curry(this.buildCell,this,html,row));html("</tr>");html("</tbody>");}}};P.buildWidget=function(invoice,cell){switch(cell.widget){case"input":var wid=this.id+"-field-"+cell.invoiceId;var a=this.fields[cell.name]||(this.fields[cell.name]={});a[invoice.id]=wid;return this.tmpl(TMPL_WIDGET_CONT,{type:cell.widget,widget:this.tmpl(TMPL_WIDGET_INPUT,{wid:wid,type:cell.type,value:cell.value})});case"quantity":var wid=this.id+"-field-"+cell.itemId+"-"+
cell.invoiceId;cell.wid=wid;var a=this.fields[cell.name]||(this.fields[cell.name]={});a[invoice.id]=wid;var swInvoice=this.swItemData.invoices[cell.invoiceId];var maxItemsPerPerson=swInvoice["max-items-per-person"];maxItemsPerPerson=parseInt(maxItemsPerPerson,10);var optionCount=20;if(maxItemsPerPerson>0&&maxItemsPerPerson<20){optionCount=maxItemsPerPerson+1;}
var swItem=this.swItemData["item-map"][cell.itemId];if(swItem.prorated){var instancesLeft=swXlate1.instanceCountLeft(swItem);if(instancesLeft===0){optionCount=1;}}
if(optionCount>20){optionCount=20;}
var opts=String.buffer(TMPL_WIDGET_QUANTITY);for(var i=0;i<optionCount;++i){opts("<option value='",i,"'>",i,"</option>\n");}
opts("</select>\n");return this.tmpl(TMPL_WIDGET_CONT,{type:cell.widget,widget:this.tmpl(template(opts.get()),{wid:wid,type:cell.type,value:cell.value})});case"selectProvince":var wid=this.id+"-selectProvince";cell.wid=wid;var a=this.fields[cell.name]||(this.fields[cell.name]={});var opts=String.buffer(TMPL_WIDGET_PROV);opts("<option selected='yes' value=''>Select...</option>\n");opts("<option value='none'>None</option>\n");opts("<option value='AB'>Alberta</option>\n");opts("<option value='BC'>British Columbia</option>\n");opts("<option value='MB'>Manitoba</option>\n");opts("<option value='NB'>New Brunswick</option>\n");opts("<option value='NL'>Newfoundland and Labrador</option>\n");opts("<option value='NT'>Northwest Territories</option>\n");opts("<option value='NS'>Nova Scotia</option>\n");opts("<option value='NU'>Nunavut</option>\n");opts("<option value='ON'>Ontario</option>\n");opts("<option value='PE'>Prince Edward Island</option>\n");opts("<option value='QC'>Quebec</option>\n");opts("<option value='SK'>Saskatchewan</option>\n");opts("<option value='YT'>Yukon</option>\n");opts("</select>\n");return this.tmpl(TMPL_WIDGET_PROV_CONT,{type:cell.widget,widget:this.tmpl(template(opts.get()),{wid:wid,type:cell.type,value:cell.value})});case"available":var bywday="w";if(cell.hasOwnProperty("bywday")){bywday=cell.bywday;}
var id=this.id+"-available-"+cell.itemId+"-"+
cell.invoiceId+"-"+bywday;var swItem=this.swItemData["item-map"][cell.itemId];if(swItem.prorated){var instancesLeft=swXlate1.instanceCountLeft(swItem);if(instancesLeft===0){cell.value=instancesLeft;}}
var label="<label id='"+id+"'>"+cell.value+"</label>";return label;case"selectable":this._setSelectable(cell);return cell.display||cell.value;case"function":return this._setExpression(cell);case"clickable":this._setClickable(cell);return cell.display||cell.value;default:return cell.display||cell.value;}};P.recompute=function(){for(var id in this.exprs){if(this.exprs.hasOwnProperty(id)){var cell=this.exprs[id];var el=$(id);var val=cell.compute.call(this,cell);setValue(el,val);}}};P.hideTaxes=function(){for(k in this.taxNames){if(this.taxNames.hasOwnProperty(k)){var id=this.taxNames[k];var el=document.getElementById(id);el.parentNode.parentNode.style.display="none";}}
this.swItemData.taxesHidden=true;};P.clearExistingTaxes=function(taxCells){var k,i,taxCell,replaced={};for(k in this.taxNames){if(this.taxNames.hasOwnProperty(k)){for(i=0;i<taxCells.length;++i){taxCell=taxCells[i];taxCell.taxPercent=0;}}}};P.getTaxCells=function(){var k,taxCells=[];if(this.data.footer){for(k in this.data){if(this.data.hasOwnProperty(k)){var v=this.data[k];if(k.indexOf("tax")===0){taxCells.push(v[1]);}}}}
return taxCells;};P.enableTaxes=function(buyerProv){swXlate1.prefs.taxTotals={};this.options.buyerProv=buyerProv;var k,newTaxName,newTaxPercent;var taxCells=this.getTaxCells();this.clearExistingTaxes(taxCells);var cdnTaxNames=swXlate1.getCDNTaxnames("ON",buyerProv);if(!buyerProv||buyerProv=="none"){if(this.swItemData["can-gst"]){this.hideTaxes();}
this.options.cdnTaxNames={};}
else{if(this.swItemData["can-gst"]){for(k in this.taxNames){if(this.taxNames.hasOwnProperty(k)){var id=this.taxNames[k];var el=document.getElementById(id);if(el){el.parentNode.parentNode.style.display="";this.swItemData.taxesHidden=false;}}}}
if(getPropKeys(cdnTaxNames).length===0){return;}
this.options.cdnTaxNames=cdnTaxNames;if(!this.swItemData["dynamic-item-taxes"]){return;}
var replaced={};var found=false,oldTax;for(k in this.taxNames){if(this.taxNames.hasOwnProperty(k)){var id=this.taxNames[k];var el=document.getElementById(id);el.parentNode.parentNode.style.display="none";}}
for(newTaxName in cdnTaxNames){if(cdnTaxNames.hasOwnProperty(newTaxName)){newTaxPercent=cdnTaxNames[newTaxName];found=false;for(k in this.taxNames){if(this.taxNames.hasOwnProperty(k)){if(found){break;}
var id=this.taxNames[k];var el=document.getElementById(id);var nameEl=el.parentNode.parentNode.firstChild.firstChild;var index=nameEl.innerHTML.indexOf(" ");var index2=nameEl.innerHTML.indexOf(" ",index+1);if(index2<0){oldTax=nameEl.innerHTML.substring(index+1);}
else{oldTax=nameEl.innerHTML.substring(index+1,index2);}
for(var i=0;i<taxCells.length;++i){var taxCell=taxCells[i];index=taxCell.taxName.indexOf(" ");index2=taxCell.taxName.indexOf(" ",index+1);if(index2<0){cellTaxName=taxCell.taxName.substring(index+1);}
else{cellTaxName=taxCell.taxName.substring(index+1,index2);}
if(replaced.hasOwnProperty(cellTaxName)){continue;}
if(cellTaxName==oldTax){replaced[newTaxName]=true;taxCell.taxName=newTaxName;taxCell.taxPercent=newTaxPercent;nameEl.innerHTML=newTaxPercent+"% "+
newTaxName+" :";el.parentNode.parentNode.style.display="";found=true;break;}}}}}}}};P.getFields=function(name){return this.fields[name];};P.buildBottom=function(data){if(this.options.noButtons){return"&nbsp;";}
else{if(this.options.noFooter){if(this.swItemData["payment-provider"]=="WPS"){return"<table cellspacing='0' cellpadding='0' width='100%'><tr><td width='100%'></td>"+"<td><div id='"+this.id+"-changeOrderButton' class='EMPurchase-btn-change-order'></div></td>"+"<td><div id='"+this.id+"-ppFinalizeButton' class='EMPurchase-btn-pp-finalize-wps'></div></td>"+"</tr></table>";}
else if(this.swItemData["payment-provider"]=="CEC"){return"<table cellspacing='0' cellpadding='0' width='100%'><tr><td width='100%'></td>"+"<td><div id='"+this.id+"-changeOrderButton' class='EMPurchase-btn-change-order'></div></td>"+"<td><div id='"+this.id+"-cecFinalizeButton' class='EMPurchase-btn-finalize-cec'></div></td>"+"</tr></table>";}
return"<table cellspacing='0' cellpadding='0' width='100%'><tr><td width='100%'></td>"+"<td><div id='"+this.id+"-changeOrderButton' class='EMPurchase-btn-change-order'></div></td>"+"<td><div id='"+this.id+"-mcFinalizeButton' class='EMPurchase-btn-mc-finalize'></div></td>"+"<td><div id='"+this.id+"-visaFinalizeButton' class='EMPurchase-btn-visa-finalize'></div></td>"+"<td><div id='"+this.id+"-ppFinalizeButton' class='EMPurchase-btn-pp-finalize'></div></td>"+"</tr></table>";}
else if(this.options.ppConfirmPurchase){return"<table cellspacing='0' cellpadding='0' width='100%'><tr><td width='100%'></td><td><div id='"+this.id+"-purchaseButton' class='EMPurchase-btn-finalize-payment'></div></td></tr></table>";}
else{return"<table cellspacing='0' cellpadding='0' width='100%'><tr><td><div id='"+this.id+"-purchaseButton' class='EMPurchase-btn-purchase'></div></td></tr></table>";}}};P.el=function(what){return $(what?this.id+"-"+what:this.id);};D.init=function(target,data,options,swItemData,buttonClickFN){return new D(target,data,options,swItemData,buttonClickFN);};P._btnClose=function(ev){ev=ev||window.event;this.toggleContent();return stopEvent(ev);};P.toggleContent=function(){var cont=this.el("content");this.hidden=!this.hidden;condClass(this.hidden,this.el(),C+"-closed");this.hidden?this.hide():this.show();};P._animate=function(init,fini){if(this.anim){this.anim.stop();}
var self=this,cont=this.el("content"),top=this.el();addClass(top,C+"-animating");this.anim=animation({onUpdate:function(t,map){t=easing.accel_ab(t);cont.style.marginTop=map(t,init,fini)+"px";},onStop:function(t){delClass(top,C+"-animating");if(t==1){self.anim=null;}}});};P.hide=function(){var cont=this.el("content");this._animate(parseInt(cont.style.marginTop,10)||0,-cont.offsetHeight);};P.show=function(){var cont=this.el("content");this._animate(parseInt(cont.style.marginTop,10)||0,0);};P.getCells=function(aRow,filter){var a=[];if(aRow==null){var body=this.data.body;for(var i=0;i<body.length;++i){a.push.apply(a,this.getCells(body[i],filter));}
return a;}else{function addCells(data){for(var i=0;i<data.length;++i){var cell=data[i];if(cell&&(!filter||filter(cell)))
a.push(cell);}}
if(aRow.multi){foreach(aRow.multi,function(row){addCells(row.data);});}else{addCells(aRow.data);}}
return a;};function setValue(el,value){if(/^input|select|textarea$/i.test(el.tagName)){el.value=value;}else{el.innerHTML=value;}}
function DEF(a,d,i,r){r={};for(i in d)if(d.hasOwnProperty(i))r[i]=d[i];for(i in a)if(a.hasOwnProperty(i))r[i]=a[i];return r;};function curry(f,obj){var args=Array$(arguments,2);return(obj==undefined?function(){return f.apply(this,args.concat(Array$(arguments)));}:function(){return f.apply(obj,args.concat(Array$(arguments)));});}
function Array$(obj,start){if(start==null){start=0;}
var a;var i;var j;try{a=Array.prototype.slice.call(obj,start);}catch(ex){a=new Array(obj.length-start);for(i=start,j=0;i<obj.length;++i,++j){a[j]=obj[i];}}
return a;}
function template(){var format=Array$(arguments).join("");return function(props){if(!props){props=this;}
return format.replace(/(.?)\$(\{.*?\}|[a-zA-Z0-9_]+)/g,function(s,p1,p2){if(p1.charAt(0)=="\\"){return s.substr(1);}
if(p2.charAt(0)=="{"){p2=p2.substr(1,p2.length-2);}
return p1+props[p2];});};}
function addEvent(el,evname,func,capture){if(el instanceof Array){for(var i=el.length;--i>=0;){addEvent(el[i],evname,func,capture);}}
else if(typeof evname=="object"){for(var i in evname){if(evname.hasOwnProperty(i)){addEvent(el,i,evname[i],func);}}}
else if(el.addEventListener){el.addEventListener(evname,func,is_ie?true:!!capture);}
else if(el.attachEvent){el.attachEvent("on"+evname,func);}
else{el["on"+evname]=func;}}
function removeEvent(el,evname,func,capture){if(el instanceof Array){for(var i=el.length;--i>=0;){removeEvent(el[i],evname,func);}}
else if(typeof evname=="object"){for(var i in evname){if(evname.hasOwnProperty(i)){removeEvent(el,i,evname[i],func);}}}
else if(el.removeEventListener){el.removeEventListener(evname,func,is_ie?true:!!capture);}
else if(el.detachEvent){el.detachEvent("on"+evname,func);}
else{el["on"+evname]=null;}}
function stopEvent(ev){ev=ev||window.event;if(is_ie){ev.cancelBubble=true;ev.returnValue=false;}else{ev.preventDefault();ev.stopPropagation();}
return false;}
function delClass(el,className,addClass){if(el){var cls=el.className.replace(/^\s+|\s+$/,"").split(/\x20/),ar=[],i;for(i=cls.length;i>0;){if(cls[--i]!=className){ar.push(cls[i]);}}
if(addClass){ar.push(addClass);}
el.className=ar.join(" ");}
return addClass;}
function addClass(el,className){return delClass(el,className,className);}
function condClass(cond,el,className){if(el instanceof Array){for(var i=el.length;--i>=0;){condClass(cond,el[i],className);}}else{delClass(el,className,cond?className:null);}
return cond;}
function animation(args,timer,i){args=DEF(args,{fps:40,len:20,onUpdate:Noop,onStop:Noop});if(is_ie){args.len=Math.round(args.len/2);}
function map(t,a,b,rev){return rev?b+t*(a-b):a+t*(b-a);}
function start(){if(timer){stop();}
i=0;timer=setInterval(update,1000/args.fps);}
function stop(){if(timer){clearInterval(timer);timer=null;}
args.onStop(i/args.len,map);}
function update(){var n=args.len;args.onUpdate(i/n,map);if(i==n){stop();}
++i;}
start();return{start:start,stop:stop,update:update,args:args,map:map};}
var easing={elastic_b:function(x){return 1-Math.cos(-x*5.5*Math.PI)/Math.pow(2,7*x);},magnetic:function(x){return 1-Math.cos(x*x*x*10.5*Math.PI)/Math.exp(4*x);},accel_b:function(x){x=1-x;return 1-x*x*x*x;},accel_a:function(x){return x*x*x;},accel_ab:function(x){x=1-x;return 1-Math.sin(x*x*Math.PI/2);},accel_ab2:function(x){return(x/=0.5)<1?1/2*x*x:-1/2*((--x)*(x-2)-1);},brakes:function(x){x=1-x;return 1-Math.sin(x*x*Math.PI);},shake:function(t){return t<0.5?-Math.cos(t*11*Math.PI)*t*t:(t=1-t,Math.cos(t*11*Math.PI)*t*t)}};function opacity(el,o){if(o===""){is_ie?el.style.filter="":el.style.opacity="";}
else{if(o!=null){is_ie?el.style.filter="alpha(opacity="+o*100+")":el.style.opacity=o;}
else if(!is_ie){o=parseFloat(el.style.opacity);}
else if(/alpha\(opacity=([0-9.])+\)/.test(el.style.opacity))
o=parseFloat(RegExp.$1)/100;}
return o;};function display(el,v){var s=el.style;if(v!=null){s.display=v?"":"none";}
return s.display!="none";};function evPos(ev,d){var x=is_ie?ev.clientX+document.body.scrollLeft:ev.pageX;var y=is_ie?ev.clientY+document.body.scrollTop:ev.pageY;if(d){x-=d.x;y-=d.y;}
return{x:x,y:y};};function getPos(el){var
SL=0,ST=0,is_div=/^div$/i.test(el.tagName),r,tmp;if(is_div&&el.scrollLeft)
SL=el.scrollLeft;if(is_div&&el.scrollTop)
ST=el.scrollTop;r={x:el.offsetLeft-SL,y:el.offsetTop-ST};if(el.offsetParent){tmp=getPos(el.offsetParent);r.x+=tmp.x;r.y+=tmp.y;}
return r;};function getViewport(){var h=document.documentElement,b=document.body;return{x:h.scrollLeft||b.scrollLeft,y:h.scrollTop||b.scrollTop,w:h.clientWidth||window.innerWidth||b.clientWidth,h:h.clientHeight||window.innerHeight||b.clientHeight};};function foreach(a,f,i){for(i=0;i<a.length;++i)
f(a[i]);};var Noop=new Function();function $(el){return el.charAt?document.getElementById(el):el;};})(EMPurchase,EMPurchase.prototype);var TMPL_BG_IMAGE=String.template('url("$url") no-repeat 50% 50%');(function(){EmWhere.inherits(DlContainer);function EmWhere(args){if(args){D.setDefaults(this,args);DlContainer.call(this,args);}}
eval(Dynarch.EXPORT("EmWhere",true));D.DEFAULT_ARGS={location:["location",null],label:["label",null]};P.initDOM=function(){D.BASE.initDOM.apply(this,arguments);this.getElement().innerHTML=this.getHTML();};P.getHTML=function(){if(this.html){return this.html;}
var googleURL=String.buffer("http://maps.google.com/maps?q=to");var yahooURL=String.buffer("http://maps.yahoo.com/maps_result?q1=");var mapquestURL=String.buffer("http://www.mapquest.com/maps?");var microsoftURL=String.buffer("http://www.bing.com/maps/?where1=");var sb=String.buffer("<div class='EmWhere-label'>$label</div>");var added=false;if(strValid(this.location.address1)){sb("<div class='EmWhere-addr'>$address1</div>");googleURL(encodeURIComponent(" "+this.location.address1));yahooURL(encodeURIComponent(" "+this.location.address1));microsoftURL(encodeURIComponent(this.location.address1));mapquestURL("&address="+encodeURIComponent(this.location.address1));added=true;}
if(strValid(this.location.address2)){sb("<div class='EmWhere-addr'>$address2</div>");googleURL(encodeURIComponent(" "+this.location.address2));yahooURL(encodeURIComponent(" "+this.location.address2));mapquestURL(encodeURIComponent(" "+this.location.address2));microsoftURL(encodeURIComponent(this.location.address2));added=true;}
var needState=true;if(strValid(this.location.city)){if(strValid(this.location.state)){sb("<div class='EmWhere-addr'>$city, $state</div>");needState=false;googleURL(encodeURIComponent(" "+this.location.city));googleURL(encodeURIComponent(" "+this.location.state));yahooURL(encodeURIComponent(" "+this.location.city));yahooURL(encodeURIComponent(" "+this.location.state));microsoftURL(encodeURIComponent(" "+this.location.city));microsoftURL(encodeURIComponent(" "+this.location.state));if(added){mapquestURL("&state=");}
else{mapquestURL("state=");added=true;}
mapquestURL(encodeURIComponent(this.location.state));mapquestURL("&city="+encodeURIComponent(this.location.city));}
else{sb("<div class='EmWhere-addr'>$city</div>");googleURL(encodeURIComponent(" "+this.location.city));yahooURL(encodeURIComponent(" "+this.location.city));microsoftURL(encodeURIComponent(" "+this.location.city));if(added){mapquestURL("&city=");}
else{mapquestURL("city=");added=true;}
mapquestURL(encodeURIComponent(this.location.city));}}
if(needState&&strValid(this.location.state)){sb("<div class='EmWhere-addr'>$state</div>");googleURL(encodeURIComponent(" "+this.location.state));yahooURL(encodeURIComponent(" "+this.location.state));microsoftURL(encodeURIComponent(" "+this.location.state));if(added){mapquestURL("&state=");}
else{mapquestURL("state=");added=true;}
mapquestURL(encodeURIComponent(this.location.state));}
var needCountry=true;if(strValid(this.location.postal)){if(strValid(this.location.country)){sb("<div class='EmWhere-addr'>$postal $country</div>");needCountry=false;googleURL(encodeURIComponent(" "+this.location.postal));googleURL(encodeURIComponent(" "+this.location.country));yahooURL(encodeURIComponent(" "+this.location.postal));yahooURL(encodeURIComponent(" "+this.location.country));microsoftURL(encodeURIComponent(" "+this.location.postal));microsoftURL(encodeURIComponent(" "+this.location.country));if(added){mapquestURL("&postal=");}
else{mapquestURL("postal=");added=true;}
mapquestURL(encodeURIComponent(this.location.postal));}
else{sb("<div class='EmWhere-addr'>$postal</div>");googleURL(encodeURIComponent(" "+this.location.postal));yahooURL(encodeURIComponent(" "+this.location.postal));microsoftURL(encodeURIComponent(" "+this.location.postal));}}
if(strValid(this.location.country)){if(this.location.country.toLowerCase()=="canada"){mapquestURL(encodeURIComponent("&country=CA"));}}
if(needCountry&&strValid(this.location.country)){sb("<div class='EmWhere-addr'>$country</div>");googleURL(encodeURIComponent(" "+this.location.country));yahooURL(encodeURIComponent(" "+this.location.country));microsoftURL(encodeURIComponent(" "+this.location.country));}
sb("<div class='EmWhere-other-maps'></div>");sb("<div class='EmWhere-other-links'><b>Maps:</b> <a target='_blank' href='"+
googleURL.get()+"'>Google</a> | <a target='_blank' href='"+
yahooURL.get()+"'>Yahoo</a> | <a target='_blank' href='"+
mapquestURL.get()+"'>Mapquest</a> | <a target='_blank' href='"+
microsoftURL.get()+"'>Microsoft</a></div>");var TMPL=String.template(sb.get());var html=TMPL({label:this.label,otherMaps:"Other Maps:",address1:this.location.address1,address2:this.location.address2,city:this.location.city,state:this.location.state,postal:this.location.postal,country:this.location.country});this.html=html;return html;};P.getNextComponentElement=function(){return this.getElement().nextSibling;};})();var swIWP={};(function(){var desktop;var TMPL_TOP_LEFT_NO_DATE=String.template("<div class='SwIWP-top-title' id='SwIWP-top-title'>$title</div>","<div class='SwIWP-top-when'>$location</div>");var TMPL_TOP_LEFT=String.template("<div class='SwIWP-top-title' id='SwIWP-top-title'>$title</div>","<div class='SwIWP-top-when'>$start</div>","<div class='SwIWP-top-to'>- To -</div>","<div class='SwIWP-top-when'>$end</div>","<div class='SwIWP-top-when'>$location</div>");var TMPL_TOP_RIGHT=String.template("<div class='SwIWP-host-img'><img src='$url' alt='$hostName'></img></div>");swIWP.enableDesktopOverflow=function(){var el=this.left.getElement();el.style.overflow="";el=desktop.getElement();el.style.overflow="auto";this.bottom.display(false);};swIWP.init=function(aPrefs,aJSLocaleData){this.prefs={summaryElementId:"em-purchase-summary",delayAddingEvents:true,noTitleBar:true,priceCellFN:swXlate1.cellOnlyPrice,showTaxColumns:false,locale:"en-US",calculateTime:swXlate1.timeAmPm,calculateStartTime:swXlate1.startTimeAmPm,calculateEndTime:swXlate1.endTimeAmPm,priceHeaderFN:swXlate1.headerPriceBywdays};if(aPrefs){swMerge(this.prefs,aPrefs);}
swXlate1.init(this.prefs,aJSLocaleData);this.locale=aJSLocaleData[this.prefs.locale];this.prefs.swLocale=this.locale;desktop=new DlDesktop({className:"DlWidget-3D"});desktop.fullScreen();this.layout=new DlLayout({parent:desktop,outerSpace:15});this.top=new DlContainer({});this.left=new DlContainer({scroll:true});this.right=new DlContainer({});this.bottomC=new DlContainer({fillParent:true});this.bottom=new DlHbox({parent:this.bottomC,align:"center"});var baseItemId=swItemData["base-item-id"];var itemM=swItemData["item-map"];var baseItem=itemM[baseItemId];var topDivHeight=parseInt(baseItem["top-div-height"],10);if(isNaN(topDivHeight)){topDivHeight=150;}
this.layout.packWidget(this.top,{pos:"top",fill:topDivHeight,after:10});this.layout.packWidget(this.bottomC,{pos:"bottom",fill:20,after:10});this.layout.packWidget(this.left,{pos:"left",fill:"*"});this.layout.packWidget(this.right,{pos:"right",after:10,fill:300});var topLayout=new DlLayout({parent:this.top});this.topLeft=new DlContainer({});this.topRight=new DlContainer({});topLayout.packWidget(this.topLeft,{pos:"left",after:10,fill:"50%"});topLayout.packWidget(this.topRight,{pos:"right",fill:"*"});desktop.callHooks("onResize");};swIWP.containsItemInvoiceBywday=function(itemId,invoiceId,bywday,preSelectedIDs){if(typeof bywday=='undefined'){return false;}
var index=itemId.indexOf("-");var shortItemId=itemId.substring(index+1);index=invoiceId.indexOf("-");var shortInvoiceId=invoiceId.substring(index+1);for(var i=0;i<preSelectedIDs.length;++i){if(preSelectedIDs[i]!=shortItemId){i+=2;continue;}
i+=1;if(preSelectedIDs[i]!=shortInvoiceId){i+=1;continue;}
i+=1;if(preSelectedIDs[i]==bywday){return true;}}
return false;};swIWP.getQuantity=function(itemId,invoiceId,preSelectedIDs){var quantity=0;var index=itemId.indexOf("-");var shortItemId=itemId.substring(index+1);index=invoiceId.indexOf("-");var shortInvoiceId=invoiceId.substring(index+1);for(var i=0;i<preSelectedIDs.length;++i){if(preSelectedIDs[i]!=shortItemId){i+=2;continue;}
i+=1;if(preSelectedIDs[i]!=shortInvoiceId){i+=1;continue;}
i+=1;++quantity;}
return quantity;};swIWP.initRenderReceipt=function(reservationId){var loginDlg=new DlDialog({title:"Username / Password",quitBtn:"destroy"});var cont=new DlContainer({parent:loginDlg});cont.getElement().style.padding="20px";var fg=new DlFieldGrid({parent:cont});var usernameDlEntry=fg.addField({name:"Username",label:"<b>Username:</b>"});var passwdEntry=new DlEntry({type:"password"});fg.addField({name:"Password",label:"<b>Password:</b>",widget:passwdEntry});var cs=new DlLabel({label:"(case sensitive)"});cs.getValue=function(){return"";}
tmp=fg.addField({name:"keys",label:"",widget:cs});var loginBox=new DlHbox({parent:loginDlg,borderSpacing:5});loginBox.setAlign("center");var login=new DlButton({parent:loginBox,label:"Login".fixedWidth("9em")});var loginClick=function(aLoginDialog,aFieldGrid,aReservationId){swIWP.lcFG=aFieldGrid;swIWP.lcDlg=aLoginDialog;swIWP.rid=aReservationId;var fn=function(){var u=swIWP.lcFG.getField("Username");var p=swIWP.lcFG.getField("Password");var username=u.getValue();var password=p.getValue();swIWP.lcDlg.destroy();swIWP.calcPbkdf2(username,password,swIWP.rid);}
return fn;};login.addEventListener("onClick",loginClick(loginDlg,fg,reservationId));loginDlg.centerOnParent();loginDlg.show();usernameDlEntry.focus();};swIWP.calcPbkdf2=function(username,password,reservationId){var dlg=new DlDialog({title:"Password Based Key Derivation Function",quitBtn:"destroy"});var cont=new DlContainer({parent:dlg});var box=new DlVbox({parent:cont,borderSpacing:10});var progress=new DlProgressBar({parent:box,min:0,max:100,label:"%d% complete"});box.addSeparator();progress.setSize({x:300});dlg.centerOnParent();dlg.show();var salt=buildSalt(username);var kdf=new PBKDF2(password,salt,200,16);var status_callback=function(percent_done){progress.setValue(percent_done);};var result_callback=function(key){swIWP.kdfResultBytes=key.hexToBytes();dlg.destroy();swIWP.initRenderReceiptWork(reservationId,username,key);}
kdf.deriveKey(status_callback,result_callback.$(this));};swIWP.initRenderReceiptWork=function(reservationId,username,password){var request={};request.em=true;request.command="getPurchaseFromReservationId";request.username=username;request.password=password;request["reservation-id"]=reservationId;var emFinalize=new EmFinalize({parent:this.summaryCont,swItemData:swItemData,prefs:this.prefs,emPurchaseDL:this.emPurchaseDL});var fail=function(response){var msg=response.failed||"General failure.";alert("Failed to get data from the Event Manager service:\n"+msg);swIWP.initRenderReceipt(reservationId);};var json=DlJSON.encode(request);var rpc=new DlRPC({url:"/em/"+request.command,callback:handleResponse.$(this,emFinalize.renderReceipt.$(emFinalize),fail),timeout:60000,data:json});rpc.call();};swIWP.showConfirm=function(){var clickableCells=this.emPurchaseDL.emPurchase.getCells(null,function(cell){return cell.widget==="quantity"||cell.widget==="clickable";});var needDisable=[];for(var j=0;j<clickableCells.length;++j){var confirmCell=clickableCells[j];if(swIWP.containsItemInvoiceBywday(confirmCell.itemId,confirmCell.invoiceId,confirmCell.bywday,this.prefs.preSelectedIDs)){confirmCell.setSelected(true);}
if(confirmCell.widget=='quantity'){var el=document.getElementById(confirmCell.wid);var quantity=swIWP.getQuantity(confirmCell.itemId,confirmCell.invoiceId,this.prefs.preSelectedIDs);el.value=quantity;if(typeof el.onclick=='function'){el.onclick();}
else if(typeof el.onchange=='function'){el.onchange();}
needDisable.push(el);}}
this.emPurchaseDL.emPurchase.recompute();for(j=0;j<needDisable.length;++j){needDisable[j].disabled=true;}
var emFinalize=new EmFinalize({parent:this.summaryCont,swItemData:swItemData,prefs:this.prefs,emPurchaseDL:this.emPurchaseDL});this.emPurchaseDL.receiptRenderFN=emFinalize.renderReceipt.$(emFinalize);this.summaryCont.display(true);swXlate1.prefs.ignoreDayClickHandler=true;};swIWP.alignBuyer=function(emFinalize){var emBuyer=emFinalize.emBuyer;var max=0;var bwidth=emBuyer.firstRet.c1._element.clientWidth;var emItemRecipientL=emFinalize.emItemRecipientL;for(var i=0;i<emItemRecipientL.length;++i){var emItemRecipient=emItemRecipientL[i];var w=emItemRecipient.emPerson.firstRet.c1._element.clientWidth;if(w>max){max=w;}}
var diff=max-bwidth;DynarchDomUtils.setStyleProperty(emBuyer.hbox.getContentElement(),"margin-left",diff+"px");};swIWP.render=function(){try{this.renderTopLeft();this.renderTopRight();this.renderFooter();this.renderLeft();this.renderRight();}catch(ex){if(is_gecko){alert("render() failed:"+ex+"\n"+ex.stack);}
else{alert("render() failed:"+ex);}}};swIWP.resize=function(){this.layout.callHooks("onResize");};swIWP.getStart=function(item){var start=this.locale.weekDays[item.startWeekDaysIdx];start+=" ";start+=this.locale.months[item.startMonthsIdx];start+=" ";start+=item.startDayOfMonth;start+=", ";start+=item.startYear;if(item["days-coverage"]<1){start+=" at ";start+=this.prefs.calculateStartTime(item);start+=" (";start+=item.startTZ;start+=")";}
return start;};swIWP.getEnd=function(item){var end="";var untilWeekDaysIdx,untilMonthsIdx,untilDayOfMonth,untilYear;if(item.hasOwnProperty("untilYear")&&item.untilYear){untilYear=item.untilYear;untilMonthsIdx=item.untilMonthsIdx;untilDayOfMonth=item.untilDayOfMonth;untilWeekDaysIdx=item.untilWeekDaysIdx;}
else if(item.hasOwnProperty("instances")){var instances=item.instances;if(instances&&instances["-1"]){var lastInstance=instances["-1"];var last=new Date(lastInstance);untilWeekDaysIdx=last.getDay();untilMonthsIdx=last.getMonth();untilDayOfMonth=last.getDate();untilYear=last.getFullYear();}}
if(untilWeekDaysIdx){end+=this.locale.weekDays[untilWeekDaysIdx];end+=" ";}
if(untilMonthsIdx){end+=this.locale.months[untilMonthsIdx];end+=" ";}
if(untilDayOfMonth){end+=untilDayOfMonth;end+=", ";}
if(untilYear){end+=untilYear;}
if(item["days-coverage"]<1){end+=" at ";end+=this.prefs.calculateEndTime(item);}
return end;};swIWP.getLocation=function(item,locations){var location="";var locationIds=item["location-ids"];if(locationIds){for(var i=0;i<locationIds.length;++i){var locationId=locationIds[i];var locationObj=locations[locationId];if(!locationObj){continue;}
if(location.length>0){location+="<br/>";}
location+=locationObj.label;var extra="";if(strValid(locationObj.address1)){extra=locationObj.address1;}
if(strValid(locationObj.city)){extra+=" "+locationObj.city;}
if(extra.length>0){location+=" - "+extra;}}}
return location;};swIWP.renderTopLeft=function(){var baseItemId=swItemData["base-item-id"];var itemM=swItemData["item-map"];var baseItem=itemM[baseItemId];var title=baseItem.eventTitle;var start=this.getStart(baseItem);var end=this.getEnd(baseItem);var location=this.getLocation(baseItem,swItemData.locations);var add2calendar="Add to my calendar";if(baseItem["hide-start-to-end"]){this.topLeft.getElement().innerHTML=TMPL_TOP_LEFT_NO_DATE({title:title,add2calendar:add2calendar,location:"<br/>"+location});}
else{this.topLeft.getElement().innerHTML=TMPL_TOP_LEFT({title:title,start:start,end:end,add2calendar:add2calendar,location:"<br/>"+location});}};swIWP.renderTopRight=function(){var baseItemId=swItemData["base-item-id"];var itemM=swItemData["item-map"];var baseItem=itemM[baseItemId];var hostName=baseItem["hosted-by-label"];if(!strValid(hostName)){hostName="&nbsp;";}
this.topRight.getElement().innerHTML=TMPL_TOP_RIGHT({url:baseItem["host-branding-image-url"],hostName:baseItem["host-branding-image-url"]});};swIWP.renderFooter=function(){var message="Publish and charge for your events with the <a href='http://www.ScheduleWorld.com/em/index.html'>ScheduleWorld <b>Event Manager</b> service</a>!";var text=new DlLabel({parent:this.bottom,label:message,className:"Em-IWP-Footer"});};swIWP.setCSS=function(){swIWP.styleSheet=new DlStyleSheet();};swIWP.setBWDBorder=function(){swIWP.bwdayL=this.styleSheet.insertRule(".EMPurchase-cell-clickable-l",{"border-bottom":"solid 1px","border-color":"#aaa","cursor":"pointer"});};swIWP.removeBWDBorder=function(){swIWP.styleSheet.deleteRule(this.bwdayL);};swIWP.renderLeft=function(){try{swIWP.setCSS();swIWP.setBWDBorder();this.vbox=new DlVbox({parent:this.left,fillParent:false,className:"EMPurchase-fullWidthVBox"});var baseItemId=swItemData["base-item-id"];var itemM=swItemData["item-map"];var baseItem=itemM[baseItemId];this.emPurchaseTC=new SwTitleComponent({parent:this.vbox,titleText:baseItem.label,justShowHideWidget:true,showMin:false,startTZ:baseItem.startTZ});this.purchaseCont=new DlContainer({parent:this.vbox,fillParent:true});this.summaryCont=new DlContainer({parent:this.vbox,display:false});this.ccInfoCont=new DlContainer({parent:this.vbox,display:false});var clickPurchaseButton=swIWP.showSummary.$(this);this.emPurchaseDL=new EmPurchaseDL({swItemData:swItemData,prefs:this.prefs,parent:this.purchaseCont,buttonClickFN:clickPurchaseButton,titleComponent:this.emPurchaseTC});this.emPurchaseTC.setWidget(this.emPurchaseDL);if(!this.prefs.noButtons){this.emPurchaseDL.addEvents();}
this.emDescEtc=new EmDescEtc({showAttendees:false,parent:this.vbox});this.bottomBodyC=new DlContainer({parent:this.vbox,className:"SwIWP-BottomC"});this.emDescEtc.setBodyC(this.bottomBodyC);if(!this.listenerAdded){this.left.addEventListener("onResize",function(){var leftWidth=this.left.getContentElement().clientWidth;if(this.laCont&&this.laCont.userData){var emPurchaseDLSummaryE=this.laCont.userData.getContentElement();var empWidth=emPurchaseDLSummaryE.clientWidth;var div=this.laFGRet.c1.getContentElement();var laLeftWidth=div.clientWidth;var laContE=this.laCont.getContentElement();var width=leftWidth-laLeftWidth-10;DynarchDomUtils.setInnerSize(laContE,width);}
if(this.raCont){var raContE=this.raCont.getContentElement();var rdiv=this.raRet.c1.getContentElement();if(rdiv){var raLeftWidth=rdiv.clientWidth;var width=leftWidth-raLeftWidth-10;DynarchDomUtils.setInnerSize(raContE,width);}}
if(this.emFinalize){this.emFinalize.resizeWidth();}
this.resizeEmPurchase(this.emPurchaseDL.emPurchase.id);if(this.emPurchaseDLSummary){this.resizeEmPurchase(this.emPurchaseDLSummary.emPurchase.id);}}.$(this));this.left.callHooks("onResize");this.listenerAdded=true;}
var selected_cells=this.emPurchaseDL.emPurchase.getCells(null,function(cell){if(cell.widget==="quantity"||cell.widget==="clickable"){if(cell.required){return true;}}});for(var i=0;i<selected_cells.length;++i){var selectedCell=selected_cells[i];if(selectedCell.widget=="clickable"){selectedCell.setSelected(true);}
else if(selectedCell.widget=="quantity"){var el=document.getElementById(selectedCell.wid);if(el){el.value=1;if(typeof el.onclick=='function'){el.onclick();}
else if(typeof el.onchange=='function'){el.onchange();}}}}
this.emPurchaseDL.emPurchase.recompute();swXlate1.getPurchaseCount.call(this.emPurchaseDL.emPurchase);}catch(ex){if(is_gecko){alert("renderLeft failed:"+ex+"\n"+ex.stack);}
else{alert("renderLeft failed:"+ex);}}};swIWP.changeOrder=function(){this.summaryCont.display(false);swXlate1.prefs.ignoreDayClickHandler=false;this.purchaseCont.display(true);this.emPurchaseDL._titleComponent.setTitleText(this.emPurchaseDL.emPurchase.data.title);this.summaryCont.destroyChildWidgets();swIWP.setBWDBorder();};swIWP.createKeepRowIDs=function(selected_cells){var result={};for(var i=0;i<selected_cells.length;++i){result[selected_cells[i].rowNum]=true;}
return result;};swIWP.createReceiptRecipients=function(selected_cells){var result={};for(var i=0;i<selected_cells.length;++i){var o={};o["item-id"]=selected_cells[i].itemId;o["invoice-id"]=selected_cells[i].invoiceId;result[""+i]=o;}
return result;};swIWP.showSummary=function(){var id=this.emPurchaseDL.emPurchase.id+"-selectProvince";var selectB=document.getElementById(id);if(selectB&&selectB.selectedIndex===0){alert("Please select a Canadian province (or 'None').");return;}
swIWP.removeBWDBorder();var selected_cells=this.emPurchaseDL.emPurchase.getCells(null,function(cell){if(cell.widget==="quantity"){var el=document.getElementById(cell.wid);var quantity=parseInt(el.value,10);if(quantity>0){return true;}
return false;}
return cell.widget==="clickable"&&cell.selected;});if(selected_cells.length===0){alert("Please select something to purchase first.");return;}
this.purchaseCont.display(false);var summaryPrefs={};swMerge(summaryPrefs,this.prefs);summaryPrefs.selectedCells=selected_cells;summaryPrefs.receiptRecipients=swIWP.createReceiptRecipients(selected_cells);summaryPrefs.noFooter=true;summaryPrefs.prependTitle="<b>Order Summary:</b>";summaryPrefs["payment-provider"]=swItemData["payment-provider"];swXlate1.init(summaryPrefs,jsLocaleData);this.summaryCont.display(true);swXlate1.prefs.ignoreDayClickHandler=true;this.emPurchaseDLSummary=new EmPurchaseDL({swItemData:swItemData,prefs:summaryPrefs,parent:this.summaryCont,buttonClickFN:swIWP.changeOrder.$(this),titleComponent:this.emPurchaseDL._titleComponent});this.emPurchaseDLSummary.emPurchase.enableTaxes(summaryPrefs.buyerProv);var baseItemId=swItemData["base-item-id"];var itemM=swItemData["item-map"];var baseItem=itemM[baseItemId];var refundPolicy=baseItem["refund-policy"];var legalAgreement=baseItem["legal-agreement-html"];this.laFG=null;if((refundPolicy&&strValid(refundPolicy))||(legalAgreement&&strValid(legalAgreement))){this.laFG=new DlFieldGrid({parent:this.summaryCont});}
if(refundPolicy&&strValid(refundPolicy)){this.raRet={};this.raCont=new DlContainer({scroll:true,className:"SwIWP-legal"});var tmp=this.laFG.addField({name:"refundPolicy",label:"<b>Refund Policy:</b>",widget:this.raCont},null,this.raRet);this.raCont.getContentElement().innerHTML=refundPolicy;var size=this.raCont.getSize();if(size.y>80){this.raCont.setSize({x:size.x,y:80});}
else{this.raCont.setSize({x:size.x,y:size.y});}}
var trimmedLA="";if(legalAgreement){trimmedLA=legalAgreement.replace(/<br \/>/g,"");}
summaryPrefs.needLegalAck=false;if(legalAgreement&&trimmedLA.length>0){summaryPrefs.needLegalAck=true;this.laCont=new DlLayout({data:this.emPurchaseDLSummary,scroll:true,className:"SwIWP-legal"});this.laFGRet={};tmp=this.laFG.addField({name:"legalAgreement",label:"<b>Legal Agreement:</b>",widget:this.laCont},null,this.laFGRet);this.laCont.setSize({x:400});tmp=this.laFG.addField({name:"legalAgreementCB",label:"",widget:new DlCheckbox({label:"I have read and agree with the terms of the legal agreement."})});this.laContInside=new DlContainer({});this.laCont.packWidget(this.laContInside,{pos:"left",fill:"*"});var laciE=this.laContInside._element;laciE.innerHTML=legalAgreement;var size=this.laContInside.getSize();if(size.y>80){this.laCont.setSize({x:size.x,y:80});}
else{this.laCont.setSize({x:size.x,y:size.y});}}
this.emFinalize=new EmFinalize({parent:this.summaryCont,swItemData:swItemData,prefs:summaryPrefs});this.emPurchaseDLSummary.emPurchase.setMCClick(this.mcClick.$(this,this.emPurchaseDLSummary,this.emFinalize,null));this.emPurchaseDLSummary.emPurchase.setVisaClick(this.visaClick.$(this,this.emPurchaseDLSummary,this.emFinalize));this.emPurchaseDLSummary.emPurchase.setPPClick(this.emFinalize.ppClick.$(this.emFinalize,this.emPurchaseDLSummary,this.laFG));this.emPurchaseDLSummary.emPurchase.setCECClick(this.emFinalize.cecClick.$(this.emFinalize,this.emPurchaseDLSummary,this.laFG));if(!summaryPrefs.noButtons){this.emPurchaseDLSummary.addEvents();}
swXlate1.gpcSuccess.call(this.emPurchaseDLSummary.emPurchase);var summaryClickableCells=this.emPurchaseDLSummary.emPurchase.getCells(null,function(cell){return cell.widget==="quantity"||cell.widget==="clickable";});var purchaseTdid,summaryTdid;for(var i=0;i<selected_cells.length;++i){var selectedCell=selected_cells[i];purchaseTdid=null;if(selectedCell.tdid){purchaseTdid=selectedCell.tdid.substring(selectedCell.tdid.indexOf("-")+1);}
else if(selectedCell.wid){purchaseTdid=selectedCell.wid.substring(selectedCell.wid.indexOf("-")+1);}
for(var j=0;j<summaryClickableCells.length;++j){var summaryCell=summaryClickableCells[j];summaryTdid=null;if(summaryCell.tdid){summaryTdid=summaryCell.tdid.substring(summaryCell.tdid.indexOf("-")+1);}
else if(summaryCell.wid){summaryTdid=summaryCell.wid.substring(summaryCell.wid.indexOf("-")+1);}
if(summaryTdid==purchaseTdid){if(summaryCell.tdid){summaryCell.setSelected(true);}
else{var el=document.getElementById(selectedCell.wid);if(el){var quantity=parseInt(el.value,10);if(isNaN(quantity)){quantity=0;}
var sel=document.getElementById(summaryCell.wid);if(sel){sel.value=quantity;if(typeof sel.onclick=='function'){sel.onclick();}
else if(typeof sel.onchange=='function'){sel.onchange();}
sel.disabled=true;}}}}}}
this.emPurchaseDLSummary.emPurchase.recompute();this.left.callHooks("onResize");this.alignBuyer(this.emFinalize);};swIWP.resizeEmPurchase=function(id){var leftWidth=this.left.getContentElement().clientWidth;var emPurchaseDiv=document.getElementById(id);if(!emPurchaseDiv){return;}
var emTable=document.getElementById(id+"-table");if(emTable){var parent=emTable.parentNode;var pb=DynarchDomUtils.getPaddingAndBorder(parent);var pb2=DynarchDomUtils.getPaddingAndBorder(emPurchaseDiv);DynarchDomUtils.setInnerSize(emTable,leftWidth-pb.x-pb2.x);}};swIWP.visaClick=function(emPurchaseDLSummary,emFinalize){swIWP.mcClick(emPurchaseDLSummary,emFinalize,"Visa");};swIWP.mcClick=function(emPurchaseDLSummary,emFinalize,ccType){var laValues=this.laFG.getValues();if(laValues.legalAgreement){if(!laValues.legalAgreementCB){alert("You must first accept the legal agreement.");return;}}
if(!emFinalize.validate()){return;}
this.emPurchaseTC.setTitleText("Credit Card Purchase");this.summaryCont.display(false);swXlate1.prefs.ignoreDayClickHandler=false;this.ccInfoCont.display(true);if(!this.emCC){this.emCC=new EmCC({parent:this.ccInfoCont,ccType:"MasterCard",emFinalize:emFinalize,ccChangeOrderFN:this.ccChangeOrder.$(this)});}
if(ccType){this.emCC.ccSelect.value(ccType);}
else{this.emCC.ccSelect.value("MasterCard");}
this.emCC.setFirst(emFinalize.emBuyer.getFirst());this.emCC.setLast(emFinalize.emBuyer.getLast());var totalCents=this.emPurchaseDLSummary._prefs.totalCents;var formattedPrice=totalCents;this.emCC.setAmountLabel(formattedPrice);};swIWP.ccChangeOrder=function(){this.ccInfoCont.display(false);this.summaryCont.display(true);swXlate1.prefs.ignoreDayClickHandler=true;this.emPurchaseTC.setTitleText("Order Summary");};swIWP.showWhere=function(emWhere){this.emDescEtc.addLocation(emWhere);this.decRightItemCount();};swIWP.showHostedBy=function(emHostedBy){this.emDescEtc.setHostedBy(emHostedBy);this.decRightItemCount();};swIWP.decRightItemCount=function(){this.rightItemCount-=1;if(this.rightItemCount<1){this.right.display(false);this.resize();}};swIWP.renderRight=function(){this.rightItemCount=0;var baseItemId=swItemData["base-item-id"];var itemM=swItemData["item-map"];var baseItem=itemM[baseItemId];var locationIds=baseItem["location-ids"];if(locationIds){this.whereL=[];for(var i=0;i<locationIds.length;++i){var locationId=locationIds[i];var location=swItemData.locations[locationId];var whereC=new EmWhere({location:location,label:location.label});this.whereL.push(whereC);if(baseItem["max-width-for-purchase"]){this.showWhere(whereC);continue;}
var whereTC=new SwTitleComponent({parent:this.right,titleText:"Where",widget:whereC,hideAll:true,showFN:this.showWhere.$(this,whereC)});this.rightItemCount+=1;}}
if(strValid(baseItem["hosted-by-label"])||strValid(baseItem["hosted-by-www"])||strValid(baseItem["hosted-by-desc-html"])){var hostedC=new EmHostedBy({swItemData:swItemData});if(baseItem["max-width-for-purchase"]){this.showHostedBy(hostedC);return;}
if(locationIds&&locationIds.length>0){var tmp=new DlLabel({parent:this.right,label:"<br/>"});}
var hosted=new SwTitleComponent({parent:this.right,titleText:"Hosted By",widget:hostedC,hideAll:true,showFN:this.showHostedBy.$(this,hostedC)});this.rightItemCount+=1;}};})();function initIWP(prefs){var ppConfirmPurchase=gup("ppConfirmPurchase");var ids;if(ppConfirmPurchase){ids=gup("ids");if(ids){prefs.ppConfirmPurchase=ppConfirmPurchase;prefs.preSelectedIDs=ids.substring(1).split("s");prefs.noFooter=false;prefs.prependTitle="<b id='confirmOrderID'>Confirm Order: </b>";}}
swIWP.init(prefs,jsLocaleData);if(swItemData["payment-provider"]=="WPS"){var invoice=gup("invoice");if(invoice){swIWP.initRenderReceipt(invoice);return;}}
if(swItemData["payment-provider"]=="CEC"){var invoice=gup("invoice");if(invoice){swIWP.initRenderReceipt(invoice);return;}}
swIWP.render();if(ids){swIWP.showConfirm();}}
var TMPL_BG_IMAGE=String.template('url("$url") no-repeat 50% 50%');(function(){SwTitleComponent.inherits(DlContainer);function SwTitleComponent(args){if(args){D.setDefaults(this,args);DlContainer.call(this,args);}}
eval(Dynarch.EXPORT("SwTitleComponent",true));D.DEFAULT_ARGS={titleText:["titleText",""],titleTextDIV:["titleTextDIV","<div class='SwTitleComponent-titleText'>$titleText</div>"],widget:["widget",null],justShowHideWidget:["justShowHideWidget",false],showMin:["showMin",true],swType:["swType",null],showFN:["showFN",null],startTZ:["startTZ",null],closeSize:["closeSize",null],hideAll:["hideAll",false],column:["column",null]};P.initDOM=function(){D.BASE.initDOM.apply(this,arguments);var btn="nocloseBtn";if(this.showMin){btn="closeBtn";}
if(!this.startTZ){this.startTZ="";}
else{this.startTZ="Time Zone: "+this.startTZ;}
var TMPL=String.template("<div class='SwTitleComponent-title'>","<div class='SwTitleComponent-tz'>",this.startTZ,"</div>","<div class='SwTitleComponent-",btn,"'></div>",this.titleTextDIV,"</div>","<div class='SwTitleComponent-body'></div>");this.getElement().innerHTML=TMPL({titleText:this.titleText});if(this.widget){if(!this.justShowHideWidget){this.setContent(this.widget);}}
if(this.showMin){var closeElement=this.getCloseElement();closeElement.onmousedown=this._on_closeClicked.$(this);}};P.setWidget=function(w){this.widget=w;};P.setTitleText=function(text){var textElement=this.getSwTitleElement();textElement.innerHTML=text;};P._on_closeClicked=function(){if(this.hideAll){this.display(false);if(this.showFN){this.showFN();}}
if(this.widget.display()){this.dismissAnimated();}
else{this.widget.display(true);DOM.setOpacity(this.getContentElement(),1);}};P.dismissAnimated=function(onStopFN){var anim=new DlAnimation();var elem=this.getContentElement();var h=this.widget.getSize().y;anim.el=elem;anim.addEventListener({onUpdate:function(){this.el.style.marginTop=-this.getPos().map(0,h)+"px";DOM.setOpacity(this.el,this.getPos().map(1,0));},onStop:function(){this.widget.display(false);elem.style.marginTop=0;if(onStopFN){onStopFN();}}.$(this)});anim.start(10,50,"accel_ab");};P.getContentElement=function(){return this.getElement().childNodes[1];};P.getColumnElement=function(){return this.getElement().parentNode;};P.getSwTitleBarElement=function(){return this.getElement().firstChild;};P.getTZElement=function(){return this.getSwTitleBarElement().childNodes[0];};P.getCloseElement=function(){return this.getSwTitleBarElement().childNodes[1];};P.getSwTitleElement=function(){return this.getSwTitleBarElement().childNodes[2];};P.getNextComponentElement=function(){return this.getElement().nextSibling;};})();var swXlate1={};(function(){swXlate1.cdnHSTProvM={1271884935000:{AB:false,BC:false,MB:false,NB:13,NL:13,NT:false,NS:13,NU:false,ON:false,PE:false,QC:false,SK:false,YT:false},1277956800000:{AB:false,BC:12,MB:false,NB:13,NL:13,NT:false,NS:15,NU:false,ON:13,PE:false,QC:false,SK:false,YT:false}};swXlate1.cdnPstM={1271884935000:{AB:false,BC:7,MB:7,NB:8,NL:8,NT:false,NS:8,NU:false,ON:8,PE:10,QC:7.5,SK:5,YT:false},1293858000000:{AB:false,BC:7,MB:7,NB:8,NL:8,NT:false,NS:8,NU:false,ON:8,PE:10,QC:8.5,SK:5,YT:false},1325394000000:{AB:false,BC:7,MB:7,NB:8,NL:8,NT:false,NS:8,NU:false,ON:8,PE:10,QC:9.5,SK:5,YT:false}};swXlate1.getPST=function(timeInMillis){var maxTime=0;var pst;for(var k in swXlate1.cdnPstM){if(swXlate1.cdnPstM.hasOwnProperty(k)){if(k>timeInMillis){continue;}
if(maxTime>k){continue;}
maxTime=k;pst=swXlate1.cdnPstM[k];}}
return pst;};swXlate1.getCDNTaxnames=function(sellerProv,buyerProv){var taxNames={};if(!buyerProv){return taxNames;}
var now=new Date();var time=now.getTime();var maxTime=0;var hstProvM;for(var k in swXlate1.cdnHSTProvM){if(swXlate1.cdnHSTProvM.hasOwnProperty(k)){if(k>now){continue;}
if(maxTime>k){continue;}
maxTime=k;hstProvM=swXlate1.cdnHSTProvM[k];}}
var sellerHST=hstProvM[sellerProv];var buyerHST=hstProvM[buyerProv];var pstM=swXlate1.getPST(time);if(sellerHST&&buyerHST){taxNames.HST=buyerHST;}
else if(!buyerHST){var buyerPST=pstM[buyerProv];if(buyerPST){if(buyerProv=="BC"||buyerProv=="MB"){taxNames.PST=buyerPST;}
if(sellerProv==buyerProv){taxNames.PST=buyerPST;if(buyerProv=="QC"||buyerProv=="PE"){taxNames.PST+=taxNames.PST*.05;}}}
taxNames.GST=5;}
else if(!sellerHST&&buyerHST){taxNames.HST=buyerHST;}
return taxNames;};swXlate1.dayClickHandler=function(cell){if(swXlate1.prefs.ignoreDayClickHandler){return;}
cell.setSelected(!cell.selected,this.swItemData,swXlate1.prefs);this.recompute();};swXlate1.packageClickHandler=function(cell){var cells=this.getCells(cell.invoice,function(cell){return cell.widget==="clickable"&&cell.type!="package"&&cell.selected;});for(var i=0;i<cells.length;++i){cells[i].setSelected(false);}
cell.setSelected(!cell.selected);this.recompute();};swXlate1.getPackageDeal=function(invoiceId,itemId){if(!invoiceId||!itemId){return;}
var packageDeals=this.swItemData["package-deals"];var packageDealIds=getPropKeys(packageDeals);var usedPackageDeal=false;var rowspan=1;var pdItemInvoiceIds;if(packageDealIds.length===0){return;}
var result={};var itemInvoiceRE=/(.*),(.*)/;for(var pdKey in packageDeals){if(packageDeals.hasOwnProperty(pdKey)){var packageDeal=packageDeals[pdKey];if(packageDeal.hasOwnProperty("item-invoice-ids")){pdItemInvoiceIds=packageDeal["item-invoice-ids"];}
if(!pdItemInvoiceIds){continue;}
var foundInvoice=false;for(var pdi=0;pdi<pdItemInvoiceIds.length;++pdi){var pdItemInvoiceId=pdItemInvoiceIds[pdi];var result=itemInvoiceRE.exec(pdItemInvoiceId);if(result[1]==itemId&&result[2]==invoiceId){result.packageDeal=packageDeal;result.pdKey=pdKey;return result;}}}}};swXlate1.getSelectedQuantity=function(selected_cells){var quantity=0;for(var i=0;i<selected_cells.length;++i){var cell=selected_cells[i];if(cell.widget==="quantity"){if(cell.wid){var el=document.getElementById(cell.wid);if(el){quantity+=parseInt(el.value,10);}}}
else{quantity+=1;}}
return quantity;};swXlate1.getQuantity=function(cell){var quantity=0;if(cell.wid){var el=document.getElementById(cell.wid);if(el){quantity+=parseInt(el.value,10);}}
return quantity;};swXlate1.computeRightTotalCents=function(total_cell,optFilter){var stdFilter=function(cell){if(cell.wl){return false;}
if(cell.widget==="quantity"&&swXlate1.getQuantity(cell)>0){return true;}
if(cell.widget==="clickable"&&cell.selected){return true;}
return false;};var selected_cells;if(optFilter){selected_cells=this.getCells(total_cell.invoice,optFilter);}
else{selected_cells=this.getCells(total_cell.invoice,stdFilter);}
var packageDeal,pdKey;var gpdResult=swXlate1.getPackageDeal(total_cell.invoiceId,total_cell.itemId);if(gpdResult){packageDeal=gpdResult.packageDeal;pdKey=gpdResult.pdKey;}
var i,k,tax1Percent=0,tax2Percent=0,useInvoice;var tax1Name,tax2Name;var invoices=swXlate1.swItemData.invoices;for(i=0;i<selected_cells.length;++i){var selected=selected_cells[i];var invoiceId=selected.invoiceId;var invoice=invoices[invoiceId];if(swXlate1.swItemData["dynamic-item-taxes"]){if(this.options.cdnTaxNames){var keys=getPropKeys(this.options.cdnTaxNames);tax1Name=keys[0];tax1Percent=this.options.cdnTaxNames[keys[0]];if(keys.length==2){tax2Percent=this.options.cdnTaxNames[keys[1]];tax2Name=keys[1];}
useInvoice=invoice;break;}}
else{var tax1P=invoice["tax1-percent"];tax1Name=invoice["tax1-name"];if(tax1P>0){tax1Percent=tax1P;useInvoice=invoice;}
var tax2P=invoice["tax2-percent"];if(tax2P>0){tax2Name=invoice["tax2-name"];tax2Percent=tax2P;useInvoice=invoice;}
if(useInvoice){break;}}}
if(packageDeal){var selectedQuantity=swXlate1.getSelectedQuantity(selected_cells);if(selectedQuantity===0){return 0;}
var countPriceMap=packageDeal["count-price-map"];var biggestCount=0;var potentialPrice;if(countPriceMap){for(var countKey in countPriceMap){if(countPriceMap.hasOwnProperty(countKey)){var count=parseInt(countKey,10);if(count>biggestCount){biggestCount=count;}
if(count==selectedQuantity){potentialPrice=countPriceMap[countKey];if(swXlate1.prefs.proCountM){var map=swXlate1.prefs.proCountM[pdKey];if(map){potentialPrice=map[countKey];}}
total_cell.value=potentialPrice;if(useInvoice){swXlate1.addTaxFromTotal(total_cell,tax1Percent,tax2Percent,tax1Name,tax2Name,total_cell.value);}
return potentialPrice;}}}
var biggestCountNum=parseInt(biggestCount,10);if(selectedQuantity>biggestCountNum&&packageDeal.hasOwnProperty("overflow-price")){potentialPrice=countPriceMap[biggestCount];if(swXlate1.prefs.proCountM){var map=swXlate1.prefs.proCountM[pdKey];if(map){potentialPrice=map[biggestCount];}}
var overflowPrice=packageDeal["overflow-price"];if(swXlate1.prefs.proCountM){var map=swXlate1.prefs.proCountM[pdKey];if(map){overflowPrice=map[-1];}}
potentialPrice+=(selectedQuantity-biggestCountNum)*overflowPrice;total_cell.value=potentialPrice;if(useInvoice){swXlate1.addTaxFromTotal(total_cell,tax1Percent,tax2Percent,tax1Name,tax2Name,total_cell.value);}
return potentialPrice;}
if(typeof potentialPrice=='undefined'){if(invoice){potentialPrice=invoice.price*selectedQuantity;}}
var itemId=total_cell.itemId;var itemM=swXlate1.swItemData["item-map"];var item=itemM[itemId];var count=0,proratedTotal=0;for(var i=0;i<selected_cells.length;++i){var selItemId=selected_cells[i].itemId;var selItem=itemM[selItemId];count+=swXlate1.getInstanceCount(selItem,selected_cells[i].bywday);proratedTotal+=selected_cells[i].value;}
proratedTotal=Math.round(proratedTotal);total_cell.value=proratedTotal;if(useInvoice){swXlate1.addTaxFromTotal(total_cell,tax1Percent,tax2Percent,tax1Name,tax2Name,total_cell.value);}
return proratedTotal;}}
for(i=0,sum=0;i<selected_cells.length;++i){var cell=selected_cells[i];var quantity=1;if(cell.hasOwnProperty("name")){if(cell.name=='quantity'){if(cell.wid){var el=document.getElementById(cell.wid);quantity=parseInt(el.value,10);}
else{quantity=0;}}
else{quantity=1;}}
var cellTotal=(cell.value*quantity);sum+=cellTotal;}
sum=Math.round(sum);total_cell.value=sum;if(useInvoice){swXlate1.addTaxFromTotal(total_cell,tax1Percent,tax2Percent,tax1Name,tax2Name,sum);}
else{total_cell.tax1Value=0;total_cell.tax2Value=0;}
return sum;};swXlate1.instanceListCount=function(nowMS,instanceL){var count=0;for(var i=0;i<instanceL.length;++i){var instance=instanceL[i];if(instance>=nowMS){++count;}}
return count;};swXlate1.instanceCountLeft=function(item,bywday){var now=new Date();var nowMS=now.getTime();var count=0;var itemInstances=swMergeInstances(swXlate1.swItemData,item);for(var k in itemInstances){if(itemInstances.hasOwnProperty(k)){if(k<0){continue;}
var instanceL=itemInstances[k];if(isNaN(bywday)){count+=swXlate1.instanceListCount(nowMS,instanceL);}
else{if(k==bywday){count+=swXlate1.instanceListCount(nowMS,instanceL);}}}}
return count;};swXlate1.getInstanceCount=function(item,bywday){var count=0;var itemInstances=swMergeInstances(swXlate1.swItemData,item);for(var k in itemInstances){if(itemInstances.hasOwnProperty(k)){var instBywday=parseInt(k,10);if(instBywday<0){continue;}
var instanceL=itemInstances[instBywday];if(isNaN(bywday)){count=count+instanceL.length;}
else{if(instBywday==bywday){count=count+instanceL.length;}}}}
return count;};swXlate1.prorate=function(invoice,item,bywday){var price=invoice.price;response={};var itemInstances=swMergeInstances(swXlate1.swItemData,item);if(!itemInstances||swPropCount(itemInstances)===0){response.price=price;return response;}
if(invoice["not-an-event"]){response.price=price;return response;}
var instanceCount=swXlate1.getInstanceCount(item,bywday);response.instanceCount=instanceCount;var unitPrice=0;if(instanceCount!=0){unitPrice=price/instanceCount;}
var unitsLeft=swXlate1.instanceCountLeft(item,bywday);response.unitsLeft=unitsLeft;response.price=unitPrice*unitsLeft;response.prorated=true;return response;};swXlate1.addTaxFromTotal=function(total_cell,tax1Percent,tax2Percent,tax1Name,tax2Name,total){total_cell.tax1Name=tax1Name;total_cell.tax2Name=tax2Name;if(tax1Percent>0){total_cell.tax1Value=total*(tax1Percent/100);}
else{total_cell.tax1Value=0;}
if(tax2Percent>0){total_cell.tax2Value=total*(tax2Percent/100);}
else{total_cell.tax2Value=0;}};swXlate1.computeRightTotal=function(total_cell){var totalCents=swXlate1.computeRightTotalCents.call(this,total_cell);return formatPrice(totalCents,swXlate1.prefs.swGroupingSep,swXlate1.prefs.swDecimalSep,swXlate1.prefs.swCurrencySymbol);};swXlate1.getTaxNamePercentM=function(swItemData){var taxNames={};var invoices=swItemData.invoices;for(var k in invoices){if(invoices.hasOwnProperty(k)){var invoice=invoices[k];if(swItemData["dynamic-item-taxes"]){continue;}
var tax1Name=invoice["tax1-name"];if(tax1Name&&tax1Name.length>0){taxNames[tax1Name]=invoice["tax1-percent"];}
var tax2Name=invoice["tax2-name"];if(tax2Name&&tax2Name.length>0){taxNames[tax2Name]=invoice["tax2-percent"];}}}
return taxNames;};swXlate1.computeTax=function(total_cell){var taxCents=0;if(this.swItemData.taxesHidden){return taxCents;}
var a=this.getCells(null,function(cell){return cell.compute===swXlate1.computeRightTotal;});var taxNamePercentM=swXlate1.getTaxNamePercentM(this.swItemData);for(var i=0,taxCents=0;i<a.length;++i){var acell=a[i];if(!acell.invoice){continue;}
if(acell.tax1Name==total_cell.taxName){var v=swXlate1.computeRightTotalCents.call(this,acell);if(!isNaN(v)){if(this.swItemData["dynamic-item-taxes"]&&this.options.cdnTaxNames&&this.options.cdnTaxNames.hasOwnProperty(acell.tax1Name)){taxCents+=v*(this.options.cdnTaxNames[acell.tax1Name]/100);}
else{var percent=taxNamePercentM[acell.tax1Name]||0;taxCents+=(v*(percent/100));}}}
else if(acell.tax2Name==total_cell.taxName){var v=swXlate1.computeRightTotalCents.call(this,acell);if(!isNaN(v)){if(this.swItemData["dynamic-item-taxes"]&&this.options.cdnTaxNames&&this.options.cdnTaxNames.hasOwnProperty(acell.tax2Name)){taxCents+=v*(this.options.cdnTaxNames[acell.tax2Name]/100);}
else{var percent=taxNamePercentM[acell.tax2Name]||0;taxCents+=(v*(percent/100));}}}}
taxCents=Math.round(taxCents);swXlate1.prefs.taxTotals[total_cell.taxName]=taxCents;return formatPrice(taxCents,swXlate1.prefs.swGroupingSep,swXlate1.prefs.swDecimalSep,swXlate1.prefs.swCurrencySymbol);};swXlate1.computeTaxRow=function(total_cell){var taxCents=swXlate1.computeTaxCentsRow.call(this,total_cell);return formatPrice(taxCents,swXlate1.prefs.swGroupingSep,swXlate1.prefs.swDecimalSep,swXlate1.prefs.swCurrencySymbol);};swXlate1.computeTaxCentsRow=function(total_cell){var optFilter=function(cell){if(cell.wl){return false;}
var invoiceId=total_cell.invoiceId;if(cell.widget==="quantity"){if(cell.wid){var el=document.getElementById(cell.wid);var quantity=parseInt(el.value,10);if(quantity>0){return cell.invoiceId==invoiceId;}}
return false;}
return cell.widget==="clickable"&&cell.selected&&cell.invoiceId==invoiceId;};var totalCents=swXlate1.computeRightTotalCents.call(this,total_cell,optFilter);var percent=parseFloat(total_cell.taxPercent)/100;var taxCents=totalCents*percent;return taxCents;};swXlate1.computeGrandTotal=function(total_cell){var totalCents=swXlate1.computeGrandTotalCents.call(this,total_cell);for(var taxName in swXlate1.prefs.taxTotals){if(swXlate1.prefs.taxTotals.hasOwnProperty(taxName)){var tax=swXlate1.prefs.taxTotals[taxName];totalCents+=tax;}}
var fee=swXlate1.computeTotalFeeCents.call(this,total_cell);totalCents+=fee;this.options.totalCents=Math.round(totalCents);return formatPrice(this.options.totalCents,swXlate1.prefs.swGroupingSep,swXlate1.prefs.swDecimalSep,swXlate1.prefs.swCurrencySymbol);};swXlate1.computeGrandTotalCents=function(total_cell){var a=this.getCells(null,function(cell){var useCell=(cell.compute===swXlate1.computeRightTotal);return useCell;});for(var i=0,sum=0;i<a.length;++i){var acell=a[i];if(!acell.invoice){continue;}
var v=swXlate1.computeRightTotalCents.call(this,acell);if(!isNaN(v)){sum+=v;}}
total_cell.value=sum;return sum;};swXlate1.computeTotalFee=function(total_cell){var totalCents=swXlate1.computeTotalFeeCents.call(this,total_cell);swXlate1.prefs.totalFee=totalCents;return formatPrice(totalCents,swXlate1.prefs.swGroupingSep,swXlate1.prefs.swDecimalSep,swXlate1.prefs.swCurrencySymbol);};swXlate1.computeTotalFeeCents=function(total_cell){if(this.swItemData["fee-absorb"]){return 0;}
var sum=swXlate1.computeGrandTotalCents.call(this,total_cell);if(sum===0){this.options.fee=0;}
else{this.options.fee=199;}
var taxNamePercentM=swXlate1.getTaxNamePercentM(this.swItemData);var feeCents=this.options.fee,feeTax=0,usedTaxNames=[];for(var k in this.options.cdnTaxNames){if(this.options.cdnTaxNames.hasOwnProperty(k)){feeTax+=feeCents*(this.options.cdnTaxNames[k]/100);usedTaxNames.push(k);}}
feeCents+=feeTax;var el=document.getElementById(this.options.emid+"-fee");if(el){if(usedTaxNames.length>0){var v="(Includes "+usedTaxNames.join("/")+") Convenience Fee ";}
else{var v="(Not taxed) Convenience Fee ";}
el.innerHTML=v;}
this.options.fee=Math.round(feeCents);return this.options.fee;};swXlate1.createRow2explain=function(desc){var row={};row.id="1";var rdata=[];row.data=rdata;if(this.prefs.showSessionNum){rdata.push("1");}
rdata.push(desc);return row;};swXlate1.createRow=function(row,rowNum,invoiceId,invoice,item,includedItemId,includedItem,taxNames){if(!row){return;}
row.id=""+rowNum;var rdata=[];row.data=rdata;row.invoiceId=invoiceId;row.includedItemId=includedItemId;if(this.prefs.showSessionNum){rdata.push(""+rowNum);}
var desc={};desc.widget="label";var invoiceIds=includedItem["invoice-ids"];if(invoiceIds&&invoiceIds.length==1){desc.display=escapeText(includedItem.eventTitle);if(includedItem.hasOwnProperty("included-item-order")){var tmpIncItemOrder=includedItem["included-item-order"];if(tmpIncItemOrder.length>0){desc.display=escapeText(invoice.label);}}}
else if(invoiceIds&&invoiceIds.length>1){desc.display=escapeText(invoice.label);}
desc.className="EMPurchase-widget-left";if(this.prefs.emid){desc.tdid=this.prefs.emid+"-desc-"+rowNum;}
else{desc.tdid="static-desc-"+rowNum;}
rdata.push(desc);var includedItemIds=item["included-item-ids"];var includedItemOrder=item["included-item-order"];var required=false;if(includedItemIds){itemData=includedItemIds[includedItemId];if(itemData){required=itemData.req;}}
var totalFullPrice=0,totalProratedPrice=0;var clickableCol=0;if(item.bywdaylist&&item.bywdaylist.length>1){var usedRequired=false;for(var i=0;i<item.bywdaylist.length;++i){var itemBywday=item.bywdaylist[i];++clickableCol;if(includedItem&&includedItem.bywdaylist){var found=false;for(var j=0;j<includedItem.bywdaylist.length;++j){var bywday=includedItem.bywdaylist[j];if(bywday==itemBywday){found=true;break;}}
if(!found){rdata.push(null);continue;}
var day={};day.clickableCol=clickableCol;day.widget="clickable";day.bywday=bywday;day.rowNum=rowNum;day.itemId=includedItemId;day.invoiceId=invoiceId;if(!usedRequired){day.required=required;}
swXlate1.incFullTotalRow(rowNum,invoice.price);var price=invoice.price;if(this.prefs.prorated){var proResp=swXlate1.prorate(invoice,includedItem,bywday);price=proResp.price;swXlate1.incProratedRow(rowNum,price);day.display=this.prefs.priceCellFN(bywday,price,proResp.prorated,proResp.instanceCount,proResp.unitsLeft);}
else{day.display=this.prefs.priceCellFN(bywday,price);}
day.value=price;if(this.prefs.selectedCells||this.prefs.hasOwnProperty("ppConfirmPurchase")){}
else{day.onclick=this.dayClickHandler;}
if(this.prefs.available=="bywday"){day.needsAvailable=true;}
rdata.push(day);usedRequired=true;}
else{rdata.push(null);}}}
var bywdayCount=0;if(item.bywdaylist&&item.bywdaylist.length>1){bywdayCount=item.bywdaylist.length;}
var price=invoice.price;if(bywdayCount===0){swXlate1.incFullTotalRow(rowNum,invoice.price);if(this.prefs.prorated){var proResp=swXlate1.prorate(invoice,includedItem);price=proResp.price;totalProratedPrice+=price;swXlate1.incProratedRow(rowNum,price);}
var fprice=formatPrice(price,swXlate1.prefs.swGroupingSep,swXlate1.prefs.swDecimalSep,swXlate1.prefs.swCurrencySymbol);if(includedItem.prorated){var instanceCount=swXlate1.getInstanceCount(includedItem);var unitsLeft=swXlate1.instanceCountLeft(includedItem);if(typeof instanceCount!='undefined'){fprice="("+unitsLeft+"/"+instanceCount+") * "+
fprice;}
else{fprice="* "+fprice;}}
rdata.push(fprice);var itemData;var quantity={widget:"quantity",name:"quantity",type:"number",value:price,rowNum:rowNum,clickableCol:clickableCol,price:price,itemId:includedItemId,invoiceId:invoiceId,required:required};rdata.push(quantity);}
if(includedItemOrder){if(includedItemOrder.length>0){if(!invoice["not-an-event"]){rdata.push(this.prefs.calculateTime(includedItem));}
else{rdata.push("");}}}
if(this.prefs.available=="col"){var available={widget:"available",name:"available",type:"number",value:"...",rowNum:rowNum,needsAvailable:true,quantityCell:quantity,itemId:includedItemId,invoiceId:invoiceId};rdata.push(available);}
var packageDeals=this.swItemData["package-deals"];var packageDealIds=getPropKeys(packageDeals);var usedPackageDeal=false;var rowspan=1;var foundInvoice,packageDeal,pdInvoiceId,countPriceM,count;var pdItemInvoiceIds;var itemInvoiceRE=/(.*),(.*)/;if(packageDealIds.length>0){for(var pdKey in packageDeals){if(packageDeals.hasOwnProperty(pdKey)){packageDeal=packageDeals[pdKey];if(packageDeal.hasOwnProperty("item-invoice-ids")){pdItemInvoiceIds=packageDeal["item-invoice-ids"];}
if(!pdItemInvoiceIds){continue;}
foundInvoice=false;for(var i=0;i<pdItemInvoiceIds.length;++i){var pdItemInvoiceId=pdItemInvoiceIds[i];var result=itemInvoiceRE.exec(pdItemInvoiceId);if(result[1]==includedItemId&&result[2]==invoiceId){if(swXlate1.shownPDM[pdKey]){return;}
foundInvoice=true;break;}}
if(!foundInvoice){pdItemInvoiceIds=null;continue;}
usedPackageDeal=true;rowspan=pdItemInvoiceIds.length;var result=swXlate1.getPackagePrice(packageDeal,pdKey);var pdCell={};pdCell.rowspan=rowspan;pdCell.display=result.display;pdCell.value=result.notUsedPrice;pdCell.type="package";rdata.push(pdCell);if(includedItem.prorated){if(!swXlate1.prefs.proratePD){swXlate1.prefs.proratePD={};}
swXlate1.prefs.proratePD[pdKey]=pdCell;swXlate1.addPDItems(pdKey,rowNum,rowspan);}
break;}}}
if(packageDealIds.length>0&&!usedPackageDeal){rdata.push(null);}
if(swXlate1.prefs.hasOwnProperty("selectedCells")||swXlate1.prefs.hasOwnProperty("ppConfirmPurchase")){var baseItemId=this.swItemData["base-item-id"];var itemM=this.swItemData["item-map"];var baseItem=itemM[baseItemId];if(baseItem["show-tax-columns-in-summary"]){swXlate1.addTax(rdata,taxNames,rowspan,invoiceId,invoice,includedItemId);}}
var total={};total.rowspan=rowspan;total.widget="function";total.price_total=true;total.compute=swXlate1.computeRightTotal;total.className="EMPurchase-table-width70";total.invoiceId=invoiceId;total.itemId=includedItemId;total.required=required;rdata.push(total);if(!usedPackageDeal){pdItemInvoiceIds=null;}
var createRowResult={};createRowResult.pdItemInvoiceIds=pdItemInvoiceIds;createRowResult.pdKey=pdKey;return createRowResult;};swXlate1.addPDItems=function(pdKey,rowNum,rowspan){var rowNums;if(!this.prefs.pdItems){this.prefs.pdItems={};}
rowNums=this.prefs.pdItems[pdKey];if(!rowNums){rowNums=[];this.prefs.pdItems[pdKey]=rowNums;}
for(var x=0;x<rowspan;++x){rowNums.push(rowNum+x);}};swXlate1.getPackagePrice=function(packageDeal,pdKey){countPriceM=packageDeal["count-price-map"];var display="";var notUsedPrice;var biggestCount=0;for(var countKey in countPriceM){if(countPriceM.hasOwnProperty(countKey)){var count=parseInt(countKey,10);if(count>biggestCount){biggestCount=count;}
var price=countPriceM[countKey];if(swXlate1.prefs.proCountM){var map=swXlate1.prefs.proCountM[pdKey];if(map){price=map[countKey];}}
notUsedPrice=price;display+=formatPrice(price,swXlate1.prefs.swGroupingSep,swXlate1.prefs.swDecimalSep,swXlate1.prefs.swCurrencySymbol)+" for "+count+"<br/>";}}
var overflowPrice=packageDeal["overflow-price"];if(overflowPrice){if(swXlate1.prefs.proCountM){var map=swXlate1.prefs.proCountM[pdKey];if(map){overflowPrice=map[-1];}}
var fPrice=formatPrice(overflowPrice,swXlate1.prefs.swGroupingSep,swXlate1.prefs.swDecimalSep,swXlate1.prefs.swCurrencySymbol);display+="> "+biggestCount+" = "+fPrice+" each";}
var result={};result.display=display;result.notUsedPrice=notUsedPrice;return result;};swXlate1.incProratedRow=function(rowNum,aProratedPrice){var proratedPrice=Math.round(aProratedPrice);if(!this.prefs.pdTotalProrated){this.prefs.pdTotalProrated={};}
var pdProratedPrice=0;if(this.prefs.pdTotalProrated.hasOwnProperty(rowNum)){pdProratedPrice=this.prefs.pdTotalProrated[rowNum];}
pdProratedPrice+=proratedPrice;this.prefs.pdTotalProrated[rowNum]=pdProratedPrice;if(!this.prefs.pdProratedPrices){this.prefs.pdProratedPrices={};}
var prices=this.prefs.pdProratedPrices[rowNum];if(!prices){prices=[];this.prefs.pdProratedPrices[rowNum]=prices;}
prices.push(proratedPrice);};swXlate1.incFullTotalRow=function(rowNum,price){if(!this.prefs.pdTotalFull){this.prefs.pdTotalFull={};}
var pdTotalPrice=0;if(this.prefs.pdTotalFull.hasOwnProperty(rowNum)){pdTotalPrice=this.prefs.pdTotalFull[rowNum];}
pdTotalPrice+=price;this.prefs.pdTotalFull[rowNum]=pdTotalPrice;if(!this.prefs.pdFullPrices){this.prefs.pdFullPrices={};}
var prices=this.prefs.pdFullPrices[rowNum];if(!prices){prices=[];this.prefs.pdFullPrices[rowNum]=prices;}
prices.push(price);};swXlate1.addTax=function(rdata,taxNames,rowspan,invoiceId,invoice,includedItemId){var tax;var taxAdded=false;var taxName;for(taxName in taxNames){if(invoice["tax1-name"]==taxName){tax={};tax.widget="function";tax.compute=swXlate1.computeTaxRow;tax.rowspan=rowspan;tax.taxName=taxName;tax.taxPercent=invoice["tax1-percent"];tax.itemId=includedItemId;tax.invoiceId=invoiceId;tax.className="EMPurchase-table-width32";rdata.push(tax);taxAdded=true;break;}}
if(!taxAdded){tax={};tax.rowspan=rowspan;tax.display="0.00";tax.className="EMPurchase-table-width32";tax.value=0;rdata.push(tax);}
taxAdded=false;for(taxName in taxNames){if(invoice["tax2-name"]==taxName){tax={};tax.widget="function";tax.compute=swXlate1.computeTaxRow;tax.rowspan=rowspan;tax.taxName=taxName;tax.taxPercent=invoice["tax2-percent"];tax.itemId=includedItemId;tax.invoiceId=invoiceId;tax.className="EMPurchase-table-width32";rdata.push(tax);taxAdded=true;break;}}
if(!taxAdded){if(swPropCount(taxNames)==2){tax={};tax.rowspan=rowspan;tax.display="0.00";tax.value=0;tax.className="EMPurchase-table-width32";rdata.push(tax);}}};swXlate1.init=function(aPrefs,aJSLocaleData){this.prefs=aPrefs;this.prefs.swLocale=aJSLocaleData[aPrefs.locale];this.prefs.taxTotals={};};swXlate1.getMoneyLocale=function(aSWItemData){var baseItemId=aSWItemData["base-item-id"];var itemM=aSWItemData["item-map"];var baseItem=itemM[baseItemId];return jsLocaleData[baseItem["money-locale"]];};swXlate1.gpcFail=function(response){};swXlate1.gpcSuccess=function(aResponse){var response=aResponse;if(!response){if(this.options){response=this.options.gpcResponse;}}
else{this.options.gpcResponse=response;}
if(!response||!response.hasOwnProperty("message")||response.message!="Success"){swXlate1.gpcFail(response);return;}
swXlate1.prefs.purchaseCount=response.data;var a=this.getCells(null,function(cell){return cell.needsAvailable;});var invoices=this.swItemData.invoices;var v,invoice,k,purchaseCount;for(var i=0;i<a.length;++i){v="";var cell=a[i];if(this.options.keepRowIDs){if(!this.options.keepRowIDs[cell.rowNum]){continue;}}
if(cell.hasOwnProperty("bywday")){k=cell.itemId.substring(9)+"-"+
cell.invoiceId.substring(12)+"-"+cell.bywday;}
else{k=cell.itemId.substring(9)+"-"+
cell.invoiceId.substring(12)+"-w";}
purchaseCount=response.data[k];if(typeof purchaseCount=='undefined'){purchaseCount=0;}
else{purchaseCount=parseInt(purchaseCount,10);}
invoice=invoices[cell.invoiceId];var quantityAvailable=invoice["quantity-available"];quantityAvailable=parseInt(quantityAvailable,10);var left=quantityAvailable-purchaseCount;var swItem=this.swItemData["item-map"][cell.itemId];if(swItem.prorated){var instancesLeft=swXlate1.instanceCountLeft(swItem);if(instancesLeft===0){left=instancesLeft;}}
var waitingListEnabled=invoice["waitinglist-enabled"];var maxItemsPerPerson=parseInt(invoice["max-items-per-person"],10);if(isNaN(maxItemsPerPerson)){maxItemsPerPerson=0;}
if(this.options.available=="bywday"){v=cell.display;if(quantityAvailable>0){v+=" ("+left+")";}
else{v="<label>"+v+"</label>";}
cell.display=v;var el=document.getElementById(cell.tdid);if(el){el.lastChild.innerHTML=v;}
else{}}
else if(this.options.available=="col"){var bywday="w";if(cell.hasOwnProperty("bywday")){bywday=cell.bywday;}
var id=this.id+"-available-"+cell.itemId+"-"+
cell.invoiceId+"-"+bywday;var el=document.getElementById(id);var label;if(quantityAvailable>0){label="<label id='"+id+"'>"+left+"</label>";var max=left+1;if(left<1&&waitingListEnabled){max=20;if(maxItemsPerPerson>0&&maxItemsPerPerson<20){max=maxItemsPerPerson;}
var del=document.getElementById(this.options.emid+"-desc-"+cell.rowNum);var old=del.innerHTML;del.innerHTML="<b>(Waiting List) </b>"+old;cell.quantityCell.wl=true;if(!this.options.wl){this.options.wl={};}
var wlItemId="wl-"+cell.itemId+"-"+cell.invoiceId;this.options.wl[wlItemId]=true;}
else if(left<1&&!waitingListEnabled){var del=document.getElementById(this.options.emid+"-desc-"+cell.rowNum);if(del){var old=del.innerHTML;del.innerHTML="<b>(Sold Out) </b>"+old;}}
if(max<20){var qid=this.id+"-field-"+cell.itemId+"-"+
cell.invoiceId;var qtd=document.getElementById(qid);if(qtd){var length=qtd.options.length;for(var j=max;j<length;++j){qtd.options[max]=null;}}}}
else{label="<label id='"+id+"' style='font-size: large;'>∞</label>";}
if(el){el.innerHTML=label;}}}};swXlate1.getPurchaseCount=function(){if(this.options.available!="col"&&this.options.available!="bywday"){return;}
var request={};request.em=true;request["item-id"]=this.swItemData["base-item-id"];request.command="getPurchaseCount";var json=DlJSON.encode(request);var rpc=new DlRPC({url:"/em/"+request.command,callback:handleResponse.$(this,swXlate1.gpcSuccess.$(this),swXlate1.gpcFail),timeout:60000,data:json});rpc.call();};swXlate1.validateStartTime=function(invoice){var startTime=invoice["start-time"];var now=new Date();var start=new Date(startTime);if(now.getTime()<start.getTime()){if(this.prefs){this.prefs.validateSaleMsg="Not available yet.";}
return false;}
return true;};swXlate1.validateEndByDate=function(invoice){var endByDate=invoice["end-by-date"];var now=new Date();if(endByDate){var end=new Date(endByDate);if(now.getTime()>end.getTime()){if(this.prefs){this.prefs.validateSaleMsg="No longer available.";}
return false;}}
return true;};swXlate1.validateSaleWindow=function(item,invoice){if(this.prefs.showingReceipt){return true;}
var eventStartMS=item["event-start-ms"];var endBeforeStart=invoice["end-before-start"];var valid=swXlate1.validateStartTime(invoice);if(!valid){return false;}
var valid=swXlate1.validateEndByDate(invoice);if(!valid){return false;}
var now=new Date();if(invoice.hasOwnProperty("end-before-start")&&endBeforeStart!==null){var test=eventStartMS-(endBeforeStart*60*1000);if(now.getTime()>test){this.prefs.validateSaleMsg="No longer available.";return false;}}
return true;};swXlate1.createData=function(aSWItemData,prefs){try{if(prefs){this.prefs=prefs;}
this.swItemData=aSWItemData;var data={};var baseItemId=this.swItemData["base-item-id"];var itemM=this.swItemData["item-map"];var baseItem=itemM[baseItemId];var dynamicItemTaxes=this.swItemData["dynamic-item-taxes"];var item=baseItem;var invoices=this.swItemData.invoices;var moneyLocale=swXlate1.getMoneyLocale(aSWItemData);this.prefs.swGroupingSep=moneyLocale.groupingSeparator;this.prefs.swDecimalSep=moneyLocale.monetaryDecimalSeparator;this.prefs.swCurrencySymbol=moneyLocale.currencySymbol;this.prefs.swCurrencyCode=moneyLocale.currencyCode;data.title="";if(this.prefs.prependTitle){data.title=this.prefs.prependTitle;data.title+=" ";}
data.title+=item.label;data.header=[];var includedItemOrder=item["included-item-order"];var lastIndex=0;if(includedItemOrder){if(includedItemOrder.length>0){if(!this.prefs.showingReceipt){this.prefs.showSessionNum=true;data.header.push("Session");lastIndex=1;}}}
var desc={};desc.display="Description";desc.widget="label";desc.className="EMPurchase-widget-left";data.header.push(desc);var bywdayCount=0;if(item.bywdaylist&&item.bywdaylist.length>1){bywdayCount=item.bywdaylist.length;}
this.prefs.priceHeaderFN(data.header,item.bywdaylist);lastIndex+=bywdayCount;if(bywdayCount===0){data.header.push("Price");++lastIndex;data.header.push("Quantity");++lastIndex;if(this.prefs.available!="none"){this.prefs.available="col";}}
else{if(this.prefs.available!="none"){this.prefs.available="bywday";}}
if(includedItemOrder&&includedItemOrder.length>0){data.header.push("Time");++lastIndex;}
var rowNum=0;var itemM=this.swItemData["item-map"];var allItemIds=this.swItemData["all-item-ids"];this.usedItemInvoiceIds={};var taxNames;var row,aRowNum,invoice,i,index,invoiceIds,multi,multiObj;var includedItemId,includedItem,sellerRegion;var needsQuantityAvailable=false;for(var ii=0;ii<allItemIds.length;++ii){if(taxNames&&swPropCount(taxNames)==2){break;}
includedItemId=allItemIds[ii];includedItem=itemM[includedItemId];if(includedItem.prorated){this.prefs.prorated=true;}
invoiceIds=includedItem["invoice-ids"];if(!invoiceIds||invoiceIds.length===0){continue;}
for(i=0;i<invoiceIds.length;++i){invoice=this.swItemData.invoices[invoiceIds[i]];if(!invoice){continue;}
if(invoice.hasOwnProperty("quantity-available")){if(parseInt(invoice["quantity-available"],10)>0){needsQuantityAvailable=true;}}
sellerRegion=invoice["seller-region"];if(dynamicItemTaxes){taxNames={};taxNames["tax1"]=0;taxNames["tax2"]=0;}
else{if(!taxNames){taxNames={};}
var tax1Name=invoice["tax1-name"];if(tax1Name&&tax1Name.length>0){taxNames[tax1Name]=invoice["tax1-percent"];}
var tax2Name=invoice["tax2-name"];if(tax2Name&&tax2Name.length>0){taxNames[tax2Name]=invoice["tax2-percent"];}}
if(swPropCount(taxNames)==2){break;}}}
if(!taxNames){taxNames={};}
if(this.prefs.available=="col"){if(needsQuantityAvailable){data.header.push("Available");++lastIndex;}
else{this.prefs.available="none";}}
if(this.prefs.prorated){desc.display+="<label style='float: right;'>( * = Prorated Price)</label>";}
var packageDeals=this.swItemData["package-deals"];var packageDealIds=getPropKeys(packageDeals);if(packageDealIds.length>0){data.header.push("Package Price");++lastIndex;}
var taxName;if(this.prefs.hasOwnProperty("selectedCells")||this.prefs.hasOwnProperty("ppConfirmPurchase")){if(baseItem["show-tax-columns-in-summary"]){for(taxName in taxNames){if(taxNames.hasOwnProperty(taxName)){data.header.push(taxName);++lastIndex;}}}}
var total={};total.display="Total";total.widget="label";total.className="EMPurchase-type-number";data.header.push(total);++lastIndex;if(strValid(item["purchase-note"])){data.footerNote=[];data.footerNote.push("<div style='text-align:left'>"+
item["purchase-note"]+"</div>{"+(lastIndex-2)+"}");}
if(!this.prefs.noFooter){if(this.swItemData["can-gst"]){data.sellerCanadian=[];data.sellerCanadian.push("<div style='text-align:right'>Province you are living in (for fee/item tax)"+":</div>{"+(lastIndex-1)+"}");data.sellerCanadian.push({widget:"selectProvince",type:"province",colspan:2});}}
var width=lastIndex;if(!this.swItemData["fee-absorb"]){data.footerFee=[];if(data.footerNote){width=2;}
data.footerFee.push("<div style='text-align:right' id='"+
this.prefs.emid+"-fee'>Convenience Fee "
+":</div>{"+width+"}");data.footerFee.push({widget:"function",isFee:true,compute:swXlate1.computeTotalFee});}
var ti=1;var tar;for(taxName in taxNames){if(taxNames.hasOwnProperty(taxName)){tar=[];data["tax"+ti]=tar;tar.push("<div style='text-align:right'>"+taxNames[taxName]+"% "+taxName+" "+":</div>{"+lastIndex+"}");tar.push({widget:"function",compute:swXlate1.computeTax,taxPercent:taxNames[taxName],taxName:taxName});++ti;}}
data.footer=[];width=lastIndex;if(data.footerNote&&this.swItemData["fee-absorb"]){width=2;}
data.footer.push("<div style='text-align:right'>Total ("+
this.prefs.swCurrencyCode+"):</div>{"+width+"}");data.footer.push({widget:"function",compute:swXlate1.computeGrandTotal});data.body=[];var addToBody=false;var invoiceId,tmpItemId,tmpItem,tmpInvoiceIds,tmpInvoiceId,tmpInvoice,i3,pdItemInvoiceIds,createRowResult;swXlate1.shownPDM={};for(ii=0;ii<allItemIds.length;++ii){includedItemId=allItemIds[ii];includedItem=itemM[includedItemId];includedItem=itemM[includedItemId];invoiceIds=includedItem["invoice-ids"];if(!invoiceIds||invoiceIds.length===0){continue;}
doMulti=false;multiObj=null;for(var invoiceI=0;invoiceI<invoiceIds.length;++invoiceI){invoiceId=invoiceIds[invoiceI];invoice=this.swItemData.invoices[invoiceId];if(!invoice){continue;}
row={};var valid=swXlate1.validateSaleWindow(includedItem,invoice);if(swXlate1.rowAlreadyUsed(includedItemId,invoiceId)){valid=false;}
aRowNum=99999;if(valid){++rowNum;aRowNum=rowNum;}
createRowResult=swXlate1.createRow(row,aRowNum,invoiceId,invoice,item,includedItemId,includedItem,taxNames);if(createRowResult){pdItemInvoiceIds=createRowResult.pdItemInvoiceIds;}
else{pdItemInvoiceIds=null;}
if(pdItemInvoiceIds&&pdItemInvoiceIds.length>1){addToBody=false;multiObj={};multiObj.id=""+rowNum;multi=[];multiObj.multi=multi;if(valid){var k=includedItemId+"-"+invoiceId;this.usedItemInvoiceIds[k]=true;multi.push(row);addToBody=true;if(createRowResult){if(this.prefs.receiptRecipients){if(swXlate1.containsItemInvoice(includedItemId,invoiceId,this.prefs.receiptRecipients)){swXlate1.shownPDM[createRowResult.pdKey]=true;}}
else{swXlate1.shownPDM[createRowResult.pdKey]=true;}}}
var itemInvoiceRE=/(.*),(.*)/;for(i=0;i<pdItemInvoiceIds.length;++i){var itemInvoiceId=pdItemInvoiceIds[i];var result=itemInvoiceRE.exec(itemInvoiceId);var tmpItemId=result[1];var tmpInvoiceId=result[2];if(swXlate1.rowAlreadyUsed(tmpItemId,tmpInvoiceId)){continue;}
tmpItem=itemM[tmpItemId];tmpInvoice=this.swItemData.invoices[tmpInvoiceId];if(!tmpInvoice){continue;}
row={};valid=swXlate1.validateSaleWindow(tmpItem,tmpInvoice);if(valid){++rowNum;createRowResult=swXlate1.createRow(row,rowNum,tmpInvoiceId,tmpInvoice,item,tmpItemId,tmpItem,taxNames);var k=tmpItemId+"-"+tmpInvoiceId;this.usedItemInvoiceIds[k]=true;multi.push(row);if(createRowResult){if(this.prefs.receiptRecipients){if(swXlate1.containsItemInvoice(includedItemId,invoiceId,this.prefs.receiptRecipients)){swXlate1.shownPDM[createRowResult.pdKey]=true;}}
else{swXlate1.shownPDM[createRowResult.pdKey]=true;}}
addToBody=true;}}
if(addToBody){data.body.push(multiObj);}
continue;}
if(valid){var k=includedItemId+"-"+invoiceId;this.usedItemInvoiceIds[k]=true;data.body.push(row);}}}
if(rowNum==0){row=swXlate1.createRow2explain(this.prefs.validateSaleMsg);data.body.push(row);delete data.footer;}
if(this.prefs.prorated){swXlate1.proratePDCells();}
return data;}catch(ex){if(is_gecko){alert("createData() failed:"+ex+ex.stack);}
else{alert("createData() failed:"+ex);}}};swXlate1.containsItemInvoice=function(itemId,invoiceId,recipients){for(var i in recipients){if(recipients.hasOwnProperty(i)){var recipient=recipients[i];if(itemId==recipient["item-id"]&&invoiceId==recipient["invoice-id"]){return true;}}}
return false;};swXlate1.proratePDCells=function(){var full,prorated;swXlate1.prefs.proCountM={};var packageDeals=this.swItemData["package-deals"];for(var pdKey in swXlate1.prefs.proratePD){if(swXlate1.prefs.proratePD.hasOwnProperty(pdKey)){var packageDeal=packageDeals[pdKey];var biggestCount=0;var firstFullPrice,firstProPrice;var countPriceM=packageDeal["count-price-map"];for(var countKey in countPriceM){if(countPriceM.hasOwnProperty(countKey)){var count=parseInt(countKey,10);if(count>biggestCount){biggestCount=count;}
var price=countPriceM[count];var rowNums=swXlate1.prefs.pdItems[pdKey];var fullTotal=0,pdTotal=0,index=0;for(var i=0;i<rowNums.length;++i){var rowNum=rowNums[i];var values=this.prefs.pdFullPrices[rowNum];var proValues=this.prefs.pdProratedPrices[rowNum];for(var j=0;j<values.length;++j){if(typeof firstFullPrice=='undefined'){firstFullPrice=values[j];}
if(typeof firstProPrice=='undefined'){firstProPrice=proValues[j];}
fullTotal+=values[j];pdTotal+=proValues[j];++index;if(index==count){break;}}
if(index==count){break;}}
var ratio=price/fullTotal;var pdProPrice=pdTotal*ratio;var map=swXlate1.prefs.proCountM[pdKey];if(!map){map={};swXlate1.prefs.proCountM[pdKey]=map;}
map[countKey]=pdProPrice;}}
if(packageDeal.hasOwnProperty("overflow-price")){var overflowPrice=packageDeal["overflow-price"];var overflowRatio=overflowPrice/firstFullPrice;var map=swXlate1.prefs.proCountM[pdKey];map[-1]=overflowRatio*firstProPrice;}
var pdCell=swXlate1.prefs.proratePD[pdKey];var result=swXlate1.getPackagePrice(packageDeal,pdKey);pdCell.display=result.display;pdCell.value=result.notUsedPrice;}}};swXlate1.preselectedItemAndInvoice=function(prefs,itemId,invoiceId){var index=itemId.indexOf("-");var shortItemId=itemId.substring(index+1);index=invoiceId.indexOf("-");var shortInvoiceId=invoiceId.substring(index+1);var preSelectedIDs=prefs.preSelectedIDs;for(var i=0;i<preSelectedIDs.length;++i){if(preSelectedIDs[i]==shortItemId){i+=1;if(preSelectedIDs[i]==shortInvoiceId){return true;}}
i+=1;}
return false;};swXlate1.rowAlreadyUsed=function(includedItemId,invoiceId,setUsed){var k=includedItemId+"-"+invoiceId;if(this.usedItemInvoiceIds.hasOwnProperty(k)){return true;}
return false;};swXlate1.canAddRow=function(includedItemId,invoiceId){if(this.rowAlreadyUsed(includedItemId,invoiceId,true)){return false;}
return true;if(this.prefs.hasOwnProperty("ppConfirmPurchase")){if(swXlate1.preselectedItemAndInvoice(this.prefs,includedItemId,invoiceId)){return true;}
return false;}
if(!this.prefs.hasOwnProperty("selectedCells")){return true;}
for(var i=0;i<this.prefs.selectedCells.length;++i){var selectedCell=this.prefs.selectedCells[i];if(selectedCell.itemId==includedItemId){if(selectedCell.invoiceId==invoiceId){return true;}}}
return false;};swXlate1.cellDayAndPrice=function(bywday,price){return swXlate1.prefs.swLocale.weekDays3[bywday]+"<br/>"+
formatPrice(price,swXlate1.prefs.swGroupingSep,swXlate1.prefs.swDecimalSep,swXlate1.prefs.swCurrencySymbol);};swXlate1.cellOnlyPrice=function(bywday,price,prorated,instanceCount,unitsLeft){var fprice=formatPrice(price,swXlate1.prefs.swGroupingSep,swXlate1.prefs.swDecimalSep,swXlate1.prefs.swCurrencySymbol);if(prorated){if(typeof instanceCount!='undefined'){return"("+unitsLeft+"/"+instanceCount+") * "+fprice;}
return"* "+fprice;}
return fprice;};swXlate1.headerPriceText=function(dataHeader,bywdaylist){var bywdayCount=0;if(bywdaylist&&bywdaylist.length>1){bywdayCount=bywdaylist.length;dataHeader.push("Days Available & Applicable Fee{"+bywdayCount+"}");}
return bywdayCount;};swXlate1.headerPriceBywdays=function(dataHeader,bywdaylist){if(bywdaylist&&bywdaylist.length>1){for(var i=0;i<bywdaylist.length;++i){var bywday=bywdaylist[i];var cell=swXlate1.prefs.swLocale.weekDays3[bywday];dataHeader.push(cell);}}
return"Price{1}";};swXlate1.startTime24h=function(item){var sm=parseInt(item.startMinute,10);if(sm<10){sm="0"+sm;}
return""+item.startHourOfDay+":"+sm;};swXlate1.endTime24h=function(item){var em=parseInt(item.endMinute,10);if(em<10){em="0"+em;}
return""+item.endHourOfDay+":"+em;};swXlate1.time24h=function(item){var sm=parseInt(item.startMinute,10);if(sm<10){sm="0"+sm;}
var em=parseInt(item.endMinute,10);if(em<10){em="0"+em;}
return""+
item.startHourOfDay+":"+
sm+" - "+
item.endHourOfDay+":"+
em;};swXlate1.startTimeAmPm=function(item){var sam=swXlate1.prefs.swLocale.ampm[0];var sh=item.startHourOfDay;if(sh>11){sam=swXlate1.prefs.swLocale.ampm[1];}
if(sh>12){sh-=12;}
var sm=parseInt(item.startMinute,10);if(sm<10){sm="0"+sm;}
return""+
sh+":"+
sm+sam;};swXlate1.endTimeAmPm=function(item){var eh=item.endHourOfDay;var eam=swXlate1.prefs.swLocale.ampm[0];if(eh>11){eam=swXlate1.prefs.swLocale.ampm[1];}
if(eh>12){eh-=12;}
var em=parseInt(item.endMinute,10);if(em<10){em="0"+em;}
return""+
eh+":"+
em+eam;};swXlate1.timeAmPm=function(item){return swXlate1.startTimeAmPm(item)+" - "+
swXlate1.endTimeAmPm(item);};})();(function(){function DlCryptAES(args){D.setDefaults(this,args);expandKey.call(this,this._key);this._mode=MODES[this._mode.toUpperCase()];this._rounds=ROUNDS[this._key.length];if(!this._iv)this._iv=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];};eval(Dynarch.EXPORT("DlCryptAES"));D.DEFAULT_ARGS={_key:["key",null],_mode:["mode","ECB"],_iv:["iv",null]};var SBOX=[99,124,119,123,242,107,111,197,48,1,103,43,254,215,171,118,202,130,201,125,250,89,71,240,173,212,162,175,156,164,114,192,183,253,147,38,54,63,247,204,52,165,229,241,113,216,49,21,4,199,35,195,24,150,5,154,7,18,128,226,235,39,178,117,9,131,44,26,27,110,90,160,82,59,214,179,41,227,47,132,83,209,0,237,32,252,177,91,106,203,190,57,74,76,88,207,208,239,170,251,67,77,51,133,69,249,2,127,80,60,159,168,81,163,64,143,146,157,56,245,188,182,218,33,16,255,243,210,205,12,19,236,95,151,68,23,196,167,126,61,100,93,25,115,96,129,79,220,34,42,144,136,70,238,184,20,222,94,11,219,224,50,58,10,73,6,36,92,194,211,172,98,145,149,228,121,231,200,55,109,141,213,78,169,108,86,244,234,101,122,174,8,186,120,37,46,28,166,180,198,232,221,116,31,75,189,139,138,112,62,181,102,72,3,246,14,97,53,87,185,134,193,29,158,225,248,152,17,105,217,142,148,155,30,135,233,206,85,40,223,140,161,137,13,191,230,66,104,65,153,45,15,176,84,187,22];var R_SBOX=[82,9,106,213,48,54,165,56,191,64,163,158,129,243,215,251,124,227,57,130,155,47,255,135,52,142,67,68,196,222,233,203,84,123,148,50,166,194,35,61,238,76,149,11,66,250,195,78,8,46,161,102,40,217,36,178,118,91,162,73,109,139,209,37,114,248,246,100,134,104,152,22,212,164,92,204,93,101,182,146,108,112,72,80,253,237,185,218,94,21,70,87,167,141,157,132,144,216,171,0,140,188,211,10,247,228,88,5,184,179,69,6,208,44,30,143,202,63,15,2,193,175,189,3,1,19,138,107,58,145,17,65,79,103,220,234,151,242,207,206,240,180,230,115,150,172,116,34,231,173,53,133,226,249,55,232,28,117,223,110,71,241,26,113,29,41,197,137,111,183,98,14,170,24,190,27,252,86,62,75,198,210,121,32,154,219,192,254,120,205,90,244,31,221,168,51,136,7,199,49,177,18,16,89,39,128,236,95,96,81,127,169,25,181,74,13,45,229,122,159,147,201,156,239,160,224,59,77,174,42,245,176,200,235,187,60,131,83,153,97,23,43,4,126,186,119,214,38,225,105,20,99,85,33,12,125];var LOGTABLE=[0,0,25,1,50,2,26,198,75,199,27,104,51,238,223,3,100,4,224,14,52,141,129,239,76,113,8,200,248,105,28,193,125,194,29,181,249,185,39,106,77,228,166,114,154,201,9,120,101,47,138,5,33,15,225,36,18,240,130,69,53,147,218,142,150,143,219,189,54,208,206,148,19,92,210,241,64,70,131,56,102,221,253,48,191,6,139,98,179,37,226,152,34,136,145,16,126,110,72,195,163,182,30,66,58,107,40,84,250,133,61,186,43,121,10,21,155,159,94,202,78,212,172,229,243,115,167,87,175,88,168,80,244,234,214,116,79,174,233,213,231,230,173,232,44,215,117,122,235,22,11,245,89,203,95,176,156,169,81,160,127,12,246,111,23,196,73,236,216,67,31,45,164,118,123,183,204,187,62,90,251,96,177,134,59,82,161,108,170,85,41,157,151,178,135,144,97,190,220,252,188,149,207,205,55,63,91,209,83,57,132,60,65,162,109,71,20,42,158,93,86,242,211,171,68,17,146,217,35,32,46,137,180,124,184,38,119,153,227,165,103,74,237,222,197,49,254,24,13,99,140,128,192,247,112,7];var ALOGTABLE=[1,3,5,15,17,51,85,255,26,46,114,150,161,248,19,53,95,225,56,72,216,115,149,164,247,2,6,10,30,34,102,170,229,52,92,228,55,89,235,38,106,190,217,112,144,171,230,49,83,245,4,12,20,60,68,204,79,209,104,184,211,110,178,205,76,212,103,169,224,59,77,215,98,166,241,8,24,40,120,136,131,158,185,208,107,189,220,127,129,152,179,206,73,219,118,154,181,196,87,249,16,48,80,240,11,29,39,105,187,214,97,163,254,25,43,125,135,146,173,236,47,113,147,174,233,32,96,160,251,22,58,78,210,109,183,194,93,231,50,86,250,21,63,65,195,94,226,61,71,201,64,192,91,237,44,116,156,191,218,117,159,186,213,100,172,239,42,126,130,157,188,223,122,142,137,128,155,182,193,88,232,35,101,175,234,37,111,177,200,67,197,84,252,31,33,99,165,244,7,9,27,45,119,153,176,203,70,202,69,207,74,222,121,139,134,145,168,227,62,66,198,81,243,14,18,54,90,238,41,123,141,140,143,138,133,148,167,242,13,23,57,75,221,124,132,151,162,253,28,36,108,180,199,82,246,1];var DTBL=[0xa56363c6,0x847c7cf8,0x997777ee,0x8d7b7bf6,0x0df2f2ff,0xbd6b6bd6,0xb16f6fde,0x54c5c591,0x50303060,0x03010102,0xa96767ce,0x7d2b2b56,0x19fefee7,0x62d7d7b5,0xe6abab4d,0x9a7676ec,0x45caca8f,0x9d82821f,0x40c9c989,0x877d7dfa,0x15fafaef,0xeb5959b2,0xc947478e,0x0bf0f0fb,0xecadad41,0x67d4d4b3,0xfda2a25f,0xeaafaf45,0xbf9c9c23,0xf7a4a453,0x967272e4,0x5bc0c09b,0xc2b7b775,0x1cfdfde1,0xae93933d,0x6a26264c,0x5a36366c,0x413f3f7e,0x02f7f7f5,0x4fcccc83,0x5c343468,0xf4a5a551,0x34e5e5d1,0x08f1f1f9,0x937171e2,0x73d8d8ab,0x53313162,0x3f15152a,0x0c040408,0x52c7c795,0x65232346,0x5ec3c39d,0x28181830,0xa1969637,0x0f05050a,0xb59a9a2f,0x0907070e,0x36121224,0x9b80801b,0x3de2e2df,0x26ebebcd,0x6927274e,0xcdb2b27f,0x9f7575ea,0x1b090912,0x9e83831d,0x742c2c58,0x2e1a1a34,0x2d1b1b36,0xb26e6edc,0xee5a5ab4,0xfba0a05b,0xf65252a4,0x4d3b3b76,0x61d6d6b7,0xceb3b37d,0x7b292952,0x3ee3e3dd,0x712f2f5e,0x97848413,0xf55353a6,0x68d1d1b9,0x00000000,0x2cededc1,0x60202040,0x1ffcfce3,0xc8b1b179,0xed5b5bb6,0xbe6a6ad4,0x46cbcb8d,0xd9bebe67,0x4b393972,0xde4a4a94,0xd44c4c98,0xe85858b0,0x4acfcf85,0x6bd0d0bb,0x2aefefc5,0xe5aaaa4f,0x16fbfbed,0xc5434386,0xd74d4d9a,0x55333366,0x94858511,0xcf45458a,0x10f9f9e9,0x06020204,0x817f7ffe,0xf05050a0,0x443c3c78,0xba9f9f25,0xe3a8a84b,0xf35151a2,0xfea3a35d,0xc0404080,0x8a8f8f05,0xad92923f,0xbc9d9d21,0x48383870,0x04f5f5f1,0xdfbcbc63,0xc1b6b677,0x75dadaaf,0x63212142,0x30101020,0x1affffe5,0x0ef3f3fd,0x6dd2d2bf,0x4ccdcd81,0x140c0c18,0x35131326,0x2fececc3,0xe15f5fbe,0xa2979735,0xcc444488,0x3917172e,0x57c4c493,0xf2a7a755,0x827e7efc,0x473d3d7a,0xac6464c8,0xe75d5dba,0x2b191932,0x957373e6,0xa06060c0,0x98818119,0xd14f4f9e,0x7fdcdca3,0x66222244,0x7e2a2a54,0xab90903b,0x8388880b,0xca46468c,0x29eeeec7,0xd3b8b86b,0x3c141428,0x79dedea7,0xe25e5ebc,0x1d0b0b16,0x76dbdbad,0x3be0e0db,0x56323264,0x4e3a3a74,0x1e0a0a14,0xdb494992,0x0a06060c,0x6c242448,0xe45c5cb8,0x5dc2c29f,0x6ed3d3bd,0xefacac43,0xa66262c4,0xa8919139,0xa4959531,0x37e4e4d3,0x8b7979f2,0x32e7e7d5,0x43c8c88b,0x5937376e,0xb76d6dda,0x8c8d8d01,0x64d5d5b1,0xd24e4e9c,0xe0a9a949,0xb46c6cd8,0xfa5656ac,0x07f4f4f3,0x25eaeacf,0xaf6565ca,0x8e7a7af4,0xe9aeae47,0x18080810,0xd5baba6f,0x887878f0,0x6f25254a,0x722e2e5c,0x241c1c38,0xf1a6a657,0xc7b4b473,0x51c6c697,0x23e8e8cb,0x7cdddda1,0x9c7474e8,0x211f1f3e,0xdd4b4b96,0xdcbdbd61,0x868b8b0d,0x858a8a0f,0x907070e0,0x423e3e7c,0xc4b5b571,0xaa6666cc,0xd8484890,0x05030306,0x01f6f6f7,0x120e0e1c,0xa36161c2,0x5f35356a,0xf95757ae,0xd0b9b969,0x91868617,0x58c1c199,0x271d1d3a,0xb99e9e27,0x38e1e1d9,0x13f8f8eb,0xb398982b,0x33111122,0xbb6969d2,0x70d9d9a9,0x898e8e07,0xa7949433,0xb69b9b2d,0x221e1e3c,0x92878715,0x20e9e9c9,0x49cece87,0xff5555aa,0x78282850,0x7adfdfa5,0x8f8c8c03,0xf8a1a159,0x80898909,0x170d0d1a,0xdabfbf65,0x31e6e6d7,0xc6424284,0xb86868d0,0xc3414182,0xb0999929,0x772d2d5a,0x110f0f1e,0xcbb0b07b,0xfc5454a8,0xd6bbbb6d,0x3a16162c];var ITBL=[0x50a7f451,0x5365417e,0xc3a4171a,0x965e273a,0xcb6bab3b,0xf1459d1f,0xab58faac,0x9303e34b,0x55fa3020,0xf66d76ad,0x9176cc88,0x254c02f5,0xfcd7e54f,0xd7cb2ac5,0x80443526,0x8fa362b5,0x495ab1de,0x671bba25,0x980eea45,0xe1c0fe5d,0x02752fc3,0x12f04c81,0xa397468d,0xc6f9d36b,0xe75f8f03,0x959c9215,0xeb7a6dbf,0xda595295,0x2d83bed4,0xd3217458,0x2969e049,0x44c8c98e,0x6a89c275,0x78798ef4,0x6b3e5899,0xdd71b927,0xb64fe1be,0x17ad88f0,0x66ac20c9,0xb43ace7d,0x184adf63,0x82311ae5,0x60335197,0x457f5362,0xe07764b1,0x84ae6bbb,0x1ca081fe,0x942b08f9,0x58684870,0x19fd458f,0x876cde94,0xb7f87b52,0x23d373ab,0xe2024b72,0x578f1fe3,0x2aab5566,0x0728ebb2,0x03c2b52f,0x9a7bc586,0xa50837d3,0xf2872830,0xb2a5bf23,0xba6a0302,0x5c8216ed,0x2b1ccf8a,0x92b479a7,0xf0f207f3,0xa1e2694e,0xcdf4da65,0xd5be0506,0x1f6234d1,0x8afea6c4,0x9d532e34,0xa055f3a2,0x32e18a05,0x75ebf6a4,0x39ec830b,0xaaef6040,0x069f715e,0x51106ebd,0xf98a213e,0x3d06dd96,0xae053edd,0x46bde64d,0xb58d5491,0x055dc471,0x6fd40604,0xff155060,0x24fb9819,0x97e9bdd6,0xcc434089,0x779ed967,0xbd42e8b0,0x888b8907,0x385b19e7,0xdbeec879,0x470a7ca1,0xe90f427c,0xc91e84f8,0x00000000,0x83868009,0x48ed2b32,0xac70111e,0x4e725a6c,0xfbff0efd,0x5638850f,0x1ed5ae3d,0x27392d36,0x64d90f0a,0x21a65c68,0xd1545b9b,0x3a2e3624,0xb1670a0c,0x0fe75793,0xd296eeb4,0x9e919b1b,0x4fc5c080,0xa220dc61,0x694b775a,0x161a121c,0x0aba93e2,0xe52aa0c0,0x43e0223c,0x1d171b12,0x0b0d090e,0xadc78bf2,0xb9a8b62d,0xc8a91e14,0x8519f157,0x4c0775af,0xbbdd99ee,0xfd607fa3,0x9f2601f7,0xbcf5725c,0xc53b6644,0x347efb5b,0x7629438b,0xdcc623cb,0x68fcedb6,0x63f1e4b8,0xcadc31d7,0x10856342,0x40229713,0x2011c684,0x7d244a85,0xf83dbbd2,0x1132f9ae,0x6da129c7,0x4b2f9e1d,0xf330b2dc,0xec52860d,0xd0e3c177,0x6c16b32b,0x99b970a9,0xfa489411,0x2264e947,0xc48cfca8,0x1a3ff0a0,0xd82c7d56,0xef903322,0xc74e4987,0xc1d138d9,0xfea2ca8c,0x360bd498,0xcf81f5a6,0x28de7aa5,0x268eb7da,0xa4bfad3f,0xe49d3a2c,0x0d927850,0x9bcc5f6a,0x62467e54,0xc2138df6,0xe8b8d890,0x5ef7392e,0xf5afc382,0xbe805d9f,0x7c93d069,0xa92dd56f,0xb31225cf,0x3b99acc8,0xa77d1810,0x6e639ce8,0x7bbb3bdb,0x097826cd,0xf418596e,0x01b79aec,0xa89a4f83,0x656e95e6,0x7ee6ffaa,0x08cfbc21,0xe6e815ef,0xd99be7ba,0xce366f4a,0xd4099fea,0xd67cb029,0xafb2a431,0x31233f2a,0x3094a5c6,0xc066a235,0x37bc4e74,0xa6ca82fc,0xb0d090e0,0x15d8a733,0x4a9804f1,0xf7daec41,0x0e50cd7f,0x2ff69117,0x8dd64d76,0x4db0ef43,0x544daacc,0xdf0496e4,0xe3b5d19e,0x1b886a4c,0xb81f2cc1,0x7f516546,0x04ea5e9d,0x5d358c01,0x737487fa,0x2e410bfb,0x5a1d67b3,0x52d2db92,0x335610e9,0x1347d66d,0x8c61d79a,0x7a0ca137,0x8e14f859,0x893c13eb,0xee27a9ce,0x35c961b7,0xede51ce1,0x3cb1477a,0x59dfd29c,0x3f73f255,0x79ce1418,0xbf37c773,0xeacdf753,0x5baafd5f,0x146f3ddf,0x86db4478,0x81f3afca,0x3ec468b9,0x2c342438,0x5f40a3c2,0x72c31d16,0x0c25e2bc,0x8b493c28,0x41950dff,0x7101a839,0xdeb30c08,0x9ce4b4d8,0x90c15664,0x6184cb7b,0x70b632d5,0x745c6c48,0x4257b8d0];var IDX=[[0,1,2,3],[1,2,3,0],[2,3,0,1],[3,0,1,2]];var R_IDX=[[0,1,2,3],[3,0,1,2],[2,3,0,1],[1,2,3,0]];var ROUNDS={16:10,24:12,32:14};var ESIZE={16:16*11,24:16*13,32:16*15};function RR(w){return(w>>>8)|((w&0xFF)<<24)};function RL(w){return(w<<8)|((w>>>24)&0xFF)};function SB(w,b){return b[w&0xFF]|(b[(w>>>8)&0xFF]<<8)|(b[(w>>>16)&0xFF]<<16)|(b[(w>>>24)&0xFF]<<24)};function xtime(a){var b=(a&0x80)?0x1b:0;a<<=1;a^=b;return a;};function mul(a,b){return a&&b?ALOGTABLE[(LOGTABLE[a]+LOGTABLE[b])%255]:0;};function invMixColumn(a,b,p){var c=[[],[],[],[]],i,j;for(j=0;j<4;++j){for(i=0;i<4;++i){c[j][i]=mul(0xe,(a[j+p]>>>(i<<3))&0xff)^mul(0xb,(a[j+p]>>>(((i+1)&3)<<3))&0xff)^mul(0xd,(a[j+p]>>>(((i+2)&3)<<3))&0xff)^mul(0x9,(a[j+p]>>>(((i+3)&3)<<3))&0xff);}}for(i=0;i<4;++i){b[i+p]=0;for(j=0;j<4;++j)b[i+p]|=c[i][j]<<(j<<3);}};function packBytes(a){var b=[],n=a.length/4;for(var i=0;i<n;++i){b[i]=a[i<<2]|(a[(i<<2)+1]<<8)|(a[(i<<2)+2]<<16)|(a[(i<<2)+3]<<24);}return b;};function unpackBytes(b){var n=b.length,a=new Array(n*4),j=0,c;for(var i=0;i<n;++i){c=b[i];a[j++]=c&0xFF;a[j++]=(c>>>8)&0xFF;a[j++]=(c>>>16)&0xFF;a[j++]=(c>>>24)&0xFF;}return a;};function expandKey(k){var a=packBytes(k);var nk=k.length/4;var i,tmp;var rcon=1;var esize=ESIZE[k.length]/4;for(i=nk;i<esize;++i){tmp=a[i-1];if(i%nk==0){tmp=SB(RR(tmp),SBOX)^rcon;rcon=xtime(rcon)&0xFF;}else if(nk>6&&(i%nk)==4){tmp=SB(tmp,SBOX);}a[i]=a[i-nk]^tmp;}var b=[];for(i=0;i<4;++i){b[i]=a[i];b[esize-4+i]=a[esize-4+i];}for(i=4;i<esize-4;i+=4)invMixColumn(a,b,i);this._exk=a;this._rexk=b;};function addRoundKey(s,d,key,k){k<<=2;for(var j=4;--j>=0;)d[j]=s[j]^key[k|j];};function cypher(a){var key=this._exk,n=this._rounds;a=packBytes(a);addRoundKey(a,a,key,0);var t=[];for(var r=1;r<n;++r){for(var j=0;j<4;++j){t[j]=DTBL[a[j]&0xFF]^RL(DTBL[(a[IDX[1][j]]>>>8)&0xFF]^RL(DTBL[(a[IDX[2][j]]>>>16)&0xFF]^RL(DTBL[(a[IDX[3][j]]>>>24)&0xFF])));}addRoundKey(t,a,key,r);}for(j=0;j<4;++j){t[j]=SB(((a[j]&0xFF)|(a[IDX[1][j]]&0xFF00)|(a[IDX[2][j]]&0xFF0000)|(a[IDX[3][j]]&0xFF000000)),SBOX);}addRoundKey(t,a,key,n);return unpackBytes(a);};function r_cypher(a){var key=this._rexk,n=this._rounds;a=packBytes(a);addRoundKey(a,a,key,n);var t=[];for(var r=n;--r>0;){for(var j=0;j<4;++j){t[j]=ITBL[a[j]&0xFF]^RL(ITBL[(a[R_IDX[1][j]]>>>8)&0xFF]^RL(ITBL[(a[R_IDX[2][j]]>>>16)&0xFF]^RL(ITBL[(a[R_IDX[3][j]]>>>24)&0xFF])));}addRoundKey(t,a,key,r);}for(j=0;j<4;++j){t[j]=SB(((a[j]&0xFF)|(a[R_IDX[1][j]]&0xFF00)|(a[R_IDX[2][j]]&0xFF0000)|(a[R_IDX[3][j]]&0xFF000000)),R_SBOX);}addRoundKey(t,a,key,0);return unpackBytes(a);};P.encodeBytes=function(input){return this._mode[0].call(this,input);};P.decodeBytes=function(input){return this._mode[1].call(this,input);};P.encodeText=function(str){str=str.length+":"+str;var input=str.toBytes(),diff=input.length%16;while(diff++<16)input.push(32);return this.encodeBytes(input);};P.decodeText=function(input){var str=this.decodeBytes(input).bytesToString(),pos=str.indexOf(":"),len=parseInt(str.substr(0,pos));return str.substr(pos+1).substr(0,len);};P.setIV=function(iv){this._iv=iv};P.getIV=function(){return this._iv};P.setTimestampIV=function(){this.setIV(new Date().getTime().hex(16).hexToBytes().concat([0,0,0,0,0,0,0,0]));};function _runBytesECB(input,decode){decode=decode?r_cypher:cypher;var output=[];for(var k=0;k<input.length;k+=16){var state=input.slice(k,k+16);state=decode.call(this,state);output.push.apply(output,state);}return output;};function _encodeECB(input){return _runBytesECB.call(this,input,false)};function _decodeECB(input){return _runBytesECB.call(this,input,true)};function _runBytesCTR(input){var cb=this._iv.slice(0),k,i,output=[],n=input.length,tmp;for(k=0;k<n;k+=16){tmp=cb.slice(0);tmp=cypher.call(this,tmp);for(i=16;--i>=0&&!(cb[i]=((cb[i]+1)&0xFF));){}for(i=16;--i>=0;)output[i+k]=tmp[i]^input[i+k];}return output;};function _encodeCBC(input){var cb=this._iv.slice(0),k,i,output=[],n=input.length;for(k=0;k<n;k+=16){for(i=16;--i>=0;)cb[i]^=input[i+k];cb=cypher.call(this,cb);for(i=16;--i>=0;)output[i+k]=cb[i];}return output;};function _decodeCBC(input){var cb=input.slice(0,16),k,i,output=[],n=input.length;cb=r_cypher.call(this,cb);for(i=16;--i>=0;)output[i]=cb[i]^this._iv[i];for(k=16;k<n;k+=16){cb=input.slice(k,k+16);cb=r_cypher.call(this,cb);for(i=16;--i>=0;)output[i+k]=cb[i]^input[k-16+i];}return output;};function _encodeCFB(input){var cb=this._iv.slice(0),k,i,output=[],n=input.length;for(k=0;k<n;k+=16){cb=cypher.call(this,cb);for(i=16;--i>=0;)cb[i]^=input[i+k];output.push.apply(output,cb);}return output;};function _decodeCFB(input){var cb=this._iv.slice(0),k,i,output=[],n=input.length;for(k=0;k<n;k+=16){cb=cypher.call(this,cb);for(i=16;--i>=0;)output[i+k]=cb[i]^input[i+k];cb=input.slice(k,k+16);}return output;};function _runBytesOFB(input){var cb=this._iv.slice(0),k,i,output=[],n=input.length;for(k=0;k<n;k+=16){cb=cypher.call(this,cb);for(i=16;--i>=0;)output[i+k]=cb[i]^input[i+k];}return output;};var MODES={"ECB":[_encodeECB,_decodeECB],"CBC":[_encodeCBC,_decodeCBC],"CFB":[_encodeCFB,_decodeCFB],"OFB":[_runBytesOFB,_runBytesOFB],"CTR":[_runBytesCTR,_runBytesCTR]};})();(function(){var BASE=SwKeyValueGrid.inherits(DlContainer);function SwKeyValueGrid(args){if(args){D.setDefaults(this,args);this._focusable=true;BASE.constructor.call(this,args);}
else{throw("SwKeyValueGrid missing args.");}}
eval(Dynarch.EXPORT("SwKeyValueGrid"));D.DEFAULT_ARGS={updateIncludedItemsRS:["updateIncludedItemsRS",null],updateMergedItemsRS:["updateMergedItemsRS",null]};P.initDOM=function(){BASE.initDOM.call(this);this.swInitDOM();};P.swInitDOM=function(){};P.clear=function(data){if(!this.keyValueCache){return;}
var displayIDs=this.keyValueCache.getAllIds();this.keyValueCache.remove(displayIDs);this.keyValueGrid.resetIDS([]);this.keyValueGrid.displayPage(0);if(data&&data.length>0){this.keyValueCache=new SwKeyValueCache({data:data});this.keyValueGrid.setCache(this.keyValueCache);var displayIDs=this.keyValueCache.getAllIds();this.keyValueGrid.resetIDS(displayIDs);this.keyValueGrid.displayPage(0);}};P.swInitGrid=function(records){this.keyValueCache=new SwKeyValueCache({data:records});var layout=new DlLayout({parent:this});var bottom=new DlHbox({});var upB=new DlButton({parent:bottom,label:"Up"});upB.addEventListener("onClick",function(){var array=this.selectionModel.getArray();if(!array||array.length===0){return;}
if(array.length!=1){alert("Only move one up at a time.");return;}
this.up(array[0]);}.$(this));bottom.addSpace();var downB=new DlButton({parent:bottom,label:"Down"});downB.addEventListener("onClick",function(){var array=this.selectionModel.getArray();if(!array||array.length===0){return;}
if(array.length!=1){alert("Only move one down at a time.");return;}
this.down(array[0]);}.$(this));bottom.addSpace();var delB=new DlButton({parent:bottom,label:"Remove"});delB.addEventListener("onClick",function(){var array=this.selectionModel.getArray();if(!array||array.length===0){return;}
array.foreach(this.keyValueCache.remove,this.keyValueCache);var doUpdate=this.updateIncludedItemsRS;var cache=this.keyValueCache;var swkvGrid=this;if(doUpdate){var fn=function(){var options=swApp.createIncludedItemsOpt(cache);swApp.includedItems.setOptions(options);swkvGrid.refresh();};setTimeout(fn,50);}
doUpdate=this.updateMergedItemsRS;if(doUpdate){var fn=function(){var options=swApp.createIncludedItemsOpt(cache);swApp.mergedItems.setOptions(options);swkvGrid.refresh();};setTimeout(fn,50);}}.$(this));bottom.addSpace();var reqB=new DlButton({parent:bottom,label:"Selected"});reqB.addEventListener("onClick",function(){var array=this.selectionModel.getArray();if(!array||array.length!=1){return;}
var id=array[0];var record=this.keyValueCache.get(id);if(record.get("req")){record.set("req",false);}
else{record.set("req",true);}}.$(this));bottom.addSpace();var linkqB=new DlButton({parent:bottom,label:"Link Question",disabled:true});linkqB.addEventListener("onClick",function(){var array=this.selectionModel.getArray();if(!array||array.length===0){return;}}.$(this));bottom.addSpace();var linkiB=new DlButton({parent:bottom,label:"Link Item",disabled:true});linkiB.addEventListener("onClick",function(){var array=this.selectionModel.getArray();if(!array||array.length===0){return;}}.$(this));layout.packWidget(bottom,{pos:"bottom",fill:30});var columns=this.keyValueCache.getColumns();this.selectionModel=new DlSelectionModel({});this.keyValueGrid=new DlDataGrid({cols:columns,data:this.keyValueCache,fillParent:true,rpp:45,virtualScrolling:true,selection:this.selectionModel});if(!this.keyValueCache.isEmpty()){var displayIDs=this.keyValueCache.getAllIds();this.keyValueGrid.resetIDS(displayIDs);}
else{this.keyValueGrid.resetIDS([]);}
this.keyValueGrid.displayPage(0);layout.packWidget(this.keyValueGrid,{pos:"left",fill:"*"});this.refresh();};P.refresh=function(){var displayIDs=this.keyValueCache.getAllIds();this.keyValueGrid.resetIDS(displayIDs);this.keyValueGrid.displayPage(0);};P.dblClick=function(){var sel=this.keyValueGrid._selection;var selected_ids=sel.getArray();if(selected_ids.length===0){return;}
var wl=this.keyValueCache.get(selected_ids[0]);};P.down=function(id){var ids=this.keyValueGrid._records.array;var newIDs=[];var found=false;for(var i=0;i<ids.length;++i){var existID=ids[i];if(existID!=id){newIDs.push(existID);continue;}
if(i+1<ids.length){++i;newIDs.push(ids[i]);}
newIDs.push(id);}
this.keyValueGrid.resetIDS(newIDs);this.keyValueGrid.displayPage(0);this.keyValueGrid.scrollToRecord(id);};P.up=function(id){var ids=this.keyValueGrid._records.array;var newIDs=[];var found=false;for(var i=0;i<ids.length;++i){if(i+1<ids.length){if(ids[i+1]==id){newIDs.push(id);newIDs.push(ids[i]);++i;continue;}}
var existID=ids[i];newIDs.push(existID);}
this.keyValueGrid.resetIDS(newIDs);this.keyValueGrid.displayPage(0);this.keyValueGrid.scrollToRecord(id);};})();(function(){var BASE=SwKeyValue.inherits(DlRecord);function SwKeyValue(args){if(args){DlRecord.call(this,args);}}
eval(Dynarch.EXPORT("SwKeyValue"));D.DEFAULT_ARGS={};P.contains=function(key){return this._data.hasOwnProperty(key);};})();(function(){var BASE=SwKeyValueCache.inherits(DlRecordCache);function SwKeyValueCache(args){if(args){D.setDefaults(this,args);DlRecordCache.call(this,args);}}
eval(Dynarch.EXPORT("SwKeyValueCache"));D.DEFAULT_ARGS={};P.getColumnsStorageKey=function(){return"kvCache";};P.getColumns=function(){return[{id:"value",label:"Included Items",width:140,fill:true},{id:"req",label:"Sel",width:40,fill:null},{id:"questions",label:"Link Questions",width:140,fill:null},{id:"items",label:"Link Items",width:140,fill:null}];};P.formatHTML=function(rec,col,buf){var value=rec.get(col)||"";buf(value.toString().htmlEscape());};P.isEmpty=function(){if(!this._data){return true;}
for(var key in this._data){if(this._data.hasOwnProperty(key)){return false;}}
return true;};})();SWApp.prototype.emViewItemBuyers=function(swEventComp){if(swApp.csvButton){swApp.csvButton.display(true);}
var swuser=swApp.syncSWorld.swemuserM[swApp.syncSWorld.userSettingsDTO.swuserid];this.emPublishItemId=getItemID(swEventComp);var item=swApp.syncSWorld.itemM[this.emPublishItemId];if(!item||!item.hasOwnProperty("item-id")){alert("You need to edit/save some properties first.");this.emPropertiesItem.toggle();return;}
var children=this.emContainerRItemBuyers.children();if(children&&children.length>0){if(this.emPublishItemId==this.emViewItemBuyersItemId){this.emUpdateItemBuyers(this.emPublishItemId);this.rightNotebookEM.showPane(this.EM_DEF_ITEM_BUYERS);return;}
else{this.emCreateItemBuyers();return;}}
this.emContainerRItemBuyers.getElement().style.padding="10px";this.emTBLayout=new DlLayout({parent:this.emContainerRItemBuyers});this.emCreateItemBuyers();};SWApp.prototype.emCreateItemBuyers=function(){try{this.emViewItemBuyersItemId=null;var layoutChildren=this.emTBLayout.children();if(layoutChildren&&layoutChildren.length>0){this.emTBLayout.destroyChildWidgets();}
this.itemBuyerChart=new SwDygraph({});this.emItemRecipientGridTB=new SwRecipientGrid({});var itemId=getItemID(swApp.swEventComp);this.emItemPurchaseGridTB=new SwPurchaseGrid({itemId:itemId,buyerChart:this.itemBuyerChart,recipientGrid:this.emItemRecipientGridTB,resizeCont:this.emContainerRItemBuyers});var itemIds=[itemId];this.emItemWaitingListGridTB=new SwWaitingListGrid({itemIds:itemIds});this.tbItemTabs=new DlTabs({});this.tbItemTabs.addTab(this.emItemPurchaseGridTB,"Item Buyers");this.tbItemTabs.addTab(this.itemBuyerChart,"Item Buyers Chart");this.tbItemTabs.addTab(this.emItemRecipientGridTB,"Item Attendees");this.tbItemTabs.addTab(this.emItemWaitingListGridTB,"Item Waiting List");this.tbItemTabs.showPane(0);this.emTBLayout.packWidget(this.tbItemTabs,{pos:"bottom",fill:"*"});this.rightNotebookEM.showPane(this.EM_DEF_ITEM_BUYERS);this.emViewItemBuyersItemId=this.emPublishItemId;swApp.csvButton.addEventListener("onClick",function(){if(swApp.rightNotebookEM.getCurrentPaneIndex()==swApp.EM_DEF_ITEM_BUYERS){swApp.csvButtonItem();}
else if(swApp.rightNotebookEM.getCurrentPaneIndex()==swApp.EM_DEF_TOTAL_BUYERS){swApp.csvButtonTotal();}}.$(this));}catch(ex){swApp.logEX(ex);}};SWApp.prototype.csvButtonTotal=function(){var allIds;var args={};var tabIdx=this.tbTabs.getCurrentPaneIndex();if(tabIdx===0){allIds=this.emPurchaseGridTB.purchaseCache.getAllIds();if(allIds===0){alert("No data.");return;}
args["cols"]=swApp.getGridCols(this.emPurchaseGridTB.buyerListGrid);args.type="buyer";}
else if(tabIdx===2){allIds=this.emRecipientGridTB.recipientCache.getAllIds();if(allIds===0){alert("No data.");return;}
args["cols"]=swApp.getGridCols(this.emRecipientGridTB.dataGrid);args.type="recipient";}
else{alert("No CSV data for this view yet.");return;}
var url=swApp.emCreateGETUploadURL("getItemPurchaseDataCSV",args);swApp.csvButtonWindow=window.open(url);swApp.csvButtonCloseCheck();};SWApp.prototype.csvButtonItem=function(){var allIds;var args={};args["item-id"]=this.emViewItemBuyersItemId;var tabIdx=this.tbItemTabs.getCurrentPaneIndex();if(tabIdx===0){allIds=this.emItemPurchaseGridTB.purchaseCache.getAllIds();if(allIds===0){alert("No data.");return;}
args["cols"]=swApp.getGridCols(this.emItemPurchaseGridTB.buyerListGrid);args.type="buyer";}
else if(tabIdx===2){allIds=this.emItemRecipientGridTB.recipientCache.getAllIds();if(allIds===0){alert("No data.");return;}
args["cols"]=swApp.getGridCols(this.emItemRecipientGridTB.dataGrid);args.type="recipient";}
else if(tabIdx===3){allIds=this.emItemWaitingListGridTB.waitingListCache.getAllIds();if(allIds===0){alert("No data.");return;}
args["cols"]=swApp.getGridCols(this.emItemWaitingListGridTB.waitingListGrid);args.type="waitingList";}
else{alert("No CSV data for this view yet.");return;}
var url=swApp.emCreateGETUploadURL("getItemPurchaseDataCSV",args);swApp.csvButtonWindow=window.open(url);swApp.csvButtonCloseCheck();};SWApp.prototype.csvButtonCloseCheck=function(){if(swApp.csvButtonWindow.closed){var command={};command.test="ping";swApp.syncSWorld.sendRequest(command,"ping");}
else{setTimeout(swApp.csvButtonCloseCheck,1000);}};SWApp.prototype.getGridCols=function(dlGrid){var cols=dlGrid._cols;var resultL=[];for(var i=0;i<cols.length;++i){var col=cols[i];if(col.isVisible()){resultL.push(col.id());}}
return resultL;};SWApp.prototype.emUpdateItemBuyers=function(itemId){this.emItemPurchaseGridTB.getItemPurchaseData(itemId);};SWApp.prototype.emViewPublish=function(swEventComp){var swXlate1Prefs=null;var swuser=swApp.syncSWorld.swemuserM[swApp.syncSWorld.userSettingsDTO.swuserid];this.emPublishItemId=getItemID(swEventComp);this.swEventComp=swEventComp;var item=swApp.syncSWorld.itemM[this.emPublishItemId];if(!item||!item.hasOwnProperty("item-id")){alert("You need to edit/save some properties first.");this.emPropertiesItem.toggle();return;}
var children=this.emContainerRPublish.children();if(children&&children.length>0){this.refreshViewPublish(swuser,item,swEventComp);this.rightNotebookEM.showPane(this.EM_DEF_PUBLISH);return;}
this.publishTitle=new DlLabel({parent:this.emContainerRPublish,label:"<h1>Publish "+item["item-type"]+"</h1>"});this.publishFG=new DlFieldGrid({parent:this.emContainerRPublish});this.descCB=new DlCheckbox({disabled:true});this.publishFG.addField({name:"description",label:"<b>Description:</b>",widget:this.descCB});this.instCB=new DlCheckbox({disabled:true});this.publishFG.addField({name:"instructions",label:"<b>Instructions:</b>",widget:this.instCB});this.surveyQuestions=new DlLabel({label:"0"});this.publishFG.addField({name:"surveyQuestions",label:"<b>Survey Questions:</b>",widget:this.surveyQuestions});this.invoicesUsed=new DlLabel({label:"0"});this.publishFG.addField({name:"invoicesUsed",label:"<b>Invoices Used:</b>",widget:this.invoicesUsed});this.invoicesWithTax1=new DlLabel({label:"0"});this.publishFG.addField({name:"invoicesWithTax1",label:"<b>Invoices With Tax 1:</b>",widget:this.invoicesWithTax1});this.invoicesWithTax2=new DlLabel({label:"0"});this.publishFG.addField({name:"invoicesWithTax2",label:"<b>Invoices With Tax 2:</b>",widget:this.invoicesWithTax2});this.pubIncludedItems=new DlLabel({label:"0"});this.publishFG.addField({name:"pubIncludedItems",label:"<b>Included Items:</b>",widget:this.pubIncludedItems});var prefs=new SwColLayout({parent:this.emContainerRPublish});var content=String.buffer();if(swApp.debug){content("<col class='label'>Payment Provider<br /> <span class='help'>How the user pays you.</span> </col> <col> <lcont>paymentProvider</lcont> </col>","<sep/>");}
content("<col class='label'>Publish!<br /> <span class='help'>Creates or updates a static web page for your '"+item["item-type"]+"'. Existing buyer receipts will still show the values used at the moment the purchase was made. New purchases using cached old information will fail (this is rare, and the buyer is asked to refresh the page and try again).</span> </col> <col> <lcont>publish</lcont> <wcont>publishURL</wcont> </col>","<sep/>","<col class='label'>Stop Publishing!<br /> <span class='help'>Deletes the static web page.</span> </col> <col> <lcont>stopPublishing</lcont> </col>");var ids=prefs.setContent(content.get());if(swApp.debug){var providerHbox=new DlHbox({parent:prefs,appendArgs:ids.paymentProvider});this.providerGroup=DlRadioGroup.get();this.providerCEC=new DlRadioButton({parent:providerHbox,label:"Canadian e-Cheques",value:"CEC",checked:true,group:this.providerGroup});this.providerWPS=new DlRadioButton({parent:providerHbox,label:"Web Payments Standard",value:"WPS",checked:false,group:this.providerGroup});}
var url=this.getIWPURL();this.publishURL=new DlLabel({parent:prefs,label:url,appendArgs:ids.publish});this.emPublish=new DlButton({parent:prefs,label:"Publish",appendArgs:ids.publish});this.emPublish.itemId=this.emPublishItemId;this.emPublish.addEventListener("onClick",function(){swuser=swApp.syncSWorld.swemuserM[swApp.syncSWorld.userSettingsDTO.swuserid];if(!swuser["accepted-eula"]){this.acceptEMTOS(swuser);return;}
var item=swApp.syncSWorld.itemM[swApp.emPublishItemId];var testResult=this.doesFailItemConstraints(swApp.emPublishItemId,item);if(testResult.fail){alert("Unable to publish:\n"+testResult.fail);return;}
var onSuccess=function(response){alert("Published Successfully.\nThe purchase widget can be embedded in web sites and\nthe published web page is active.");};var onFail=function(response){alert("The 'Publish' request failed.");};var request={};request.em=true;request["dynamic-item-taxes"]=testResult.dynamicItemTaxes;request["seller-region"]=testResult.sellerRegion;request["fee-absorb"]=testResult["fee-absorb"];if(swApp.debug){request["payment-provider"]=this.providerGroup.getValue()[0];}
else{request["payment-provider"]="WPS";}
swIWP.locale=swApp.locale;request.staticLocaleKey=swApp.userSettingsLocaleKey;var locations=swuser["location-map"];request.staticLocation=swIWP.getLocation(item,locations);var emHostedBy=new EmHostedBy({});request.staticHostedBy=emHostedBy.getHTML(emHostedBy.getHTML(item));swXlate1Prefs={delayAddingEvents:true,noTitleBar:true,priceCellFN:swXlate1.cellOnlyPrice,locale:swApp.userSettingsLocaleKey,calculateTime:swXlate1.timeAmPm,calculateStartTime:swXlate1.startTimeAmPm,calculateEndTime:swXlate1.endTimeAmPm,priceHeaderFN:swXlate1.headerPriceBywdays};swXlate1Prefs.swLocale=swApp.locale;swXlate1.init(swXlate1Prefs,jsLocaleData);swIWP.prefs=swXlate1Prefs;request.staticStart=swIWP.getStart(item);request.staticEnd=swIWP.getEnd(item);var swItemData=this.createSwItemData(swuser,swApp.emPublishItemId,item);var tableData=swXlate1.createData(swItemData);var data;delete tableData.footer;for(var i=0;i<tableData.body.length;++i){var b=tableData.body[i];if(b.multi){for(var n=0;n<b.multi.length;++n){var mult=b.multi[n];data=mult.data;this.cleanupRow(data);}}
else{data=b.data;this.cleanupRow(data);}}
var tmpCont=new DlContainer({});var target=tmpCont.getContentElement();swXlate1Prefs.initialID=999;this.emPurchase=EMPurchase.init(target,tableData,swXlate1Prefs,swItemData);var html=target.innerHTML;request.tableHTML=tableData.html;request.command="publishItem";request["item-id"]=this.emPublishItemId;swApp.syncSWorld.sendRequest(request,null,handleEvalResponse.$(this,onSuccess,onFail),onFail);}.$(this));this.emStopPublish=new DlButton({parent:prefs,label:"Stop Publishing",appendArgs:ids.stopPublishing});this.emStopPublish.itemId=this.emPublishItemId;this.emStopPublish.addEventListener("onClick",function(){var onSuccess=function(response){alert("The 'Stop Publishing' request succeeded.\nThe purchase widget will show 'not available' and\nthe published web page will return 'Not Found' (404).");};var onFail=function(response){alert("The 'Stop Publishing' request failed.");};var result=confirm("Please confirm you wish to stop publishing.\nNOTE: It may be worthwhile to keep your page published\nbecause of how search engine page ranking works.\nThe more links to your website the better your page rank will be.");if(!result){return;}
var request={};request.em=true;request.command="stopPublishingItem";request["item-id"]=this.emPublishItemId;swApp.syncSWorld.sendRequest(request,null,handleEvalResponse.$(this,onSuccess,onFail),onFail);}.$(this));this.refreshViewPublish(swuser,item,swEventComp);this.rightNotebookEM.showPane(this.EM_DEF_PUBLISH);};SWApp.prototype.acceptEMTOS=function(swuser){var dlg=new DlDialog({title:"Terms Of Service",modal:true,quitBtn:"destroy",resizable:true});var wleLayout=new DlLayout({parent:dlg,outerSpace:20});var top=new DlEntry({type:"textarea",rows:6});var vbox=new DlVbox({});var left=new DlCheckbox({parent:vbox,label:"I accept the terms of service."});var okCancel=new DlHbox({parent:vbox});okCancel.setAlign("center");var yes=new DlButton({parent:okCancel,label:"<div style='width:5em'>"+
swApp.i18n("OK")+"</div>"});okCancel.addSpace();var no=new DlButton({parent:okCancel,label:"<div style='width:5em'>"+
swApp.i18n("Cancel")+"</div>"});wleLayout.packWidget(top,{pos:"top",fill:"*",after:5});wleLayout.packWidget(vbox,{pos:"bottom"});wleLayout.setSize({x:400,y:240});no.addEventListener("onClick",function(){dlg.destroy();});yes.addEventListener("onClick",function(){if(!left.checked()){alert("You must accept the terms of service.");return;}
var onFail=function(response){alert("Updating your settings failed.");return;};var onSuccess=function(response){swApp.syncSWorld.swemuserM[swApp.syncSWorld.userSettingsDTO.swuserid]=response.swuser;swApp.syncSWorld.saveSwemuserM();alert("Your settings have been updated.\nYou may now publish.");dlg.destroy();};var request={};request.em=true;request.command="updateSwemuser";request["accepted-eula"]=true;swApp.syncSWorld.sendRequest(request,null,handleEvalResponse.$(this,onSuccess.$(this),onFail));});this.getTOS=function(answer){if(!answer.success){alert(swApp.i18n("Failed to get terms-of-service.txt."));return;}
top.setValue(answer.text);dlg.centerOnParent();dlg.show();};var url="/em/terms-of-service.txt";var rpc=new DlRPC({url:url,callback:this.getTOS.$(this)});rpc.call();};SWApp.prototype.getIWPURL=function(){var idx=this.emPublishItemId.indexOf("-");var shortId=this.emPublishItemId.substring(idx+1);var url=window.location.protocol+"//"+window.location.hostname+"/sw2/em/items/iwp"+shortId+".html";return"<a href='"+url+"' target='_blank'>"+url+"</a>";};SWApp.prototype.recurLengthCheck=function(event){var MAX_LENGTH=1000*60*60*24*31*13;var failMsg="Event summary: "+event.title+"\n"+"recurs for more than one year.\nThis is not allowed.\n"+"If you have a use case for > 1 year\nplease email it to support@ScheduleWorld.com.";if(event.freq=="DAILY"||event.freq=="WEEKLY"||event.freq=="YEARLY"||event.freq=="MONTHLY"){if(!event.hasOwnProperty("count")&&!event.hasOwnProperty("untilYear")){return failMsg;}
var start=new Date();start.setDate(1);start.setMonth(event.startMonth-1);start.setFullYear(event.startYear);start.setDate(event.startDayOfMonth);var startMS=start.getTime();if(event.hasOwnProperty("untilYear")){var until=new Date();until.setDate(1);until.setMonth(event.untilMonth-1);until.setFullYear(event.untilYear);until.setDate(event.untilDayOfMonth);if(until.getTime()-startMS>MAX_LENGTH){return failMsg;}}}};SWApp.prototype.printYMD=function(year,month,dayOfMonth){var date=new Date();date.setDate(1);date.setMonth(month);date.setFullYear(year);date.setDate(dayOfMonth);return date.print("%B %e, %Y");};SWApp.prototype.printYMDHM=function(year,month,dayOfMonth,hour,min){var date=new Date();date.setDate(1);date.setMonth(month);date.setFullYear(year);date.setDate(dayOfMonth);return date.print("%B %e, %Y")+" "+hour+":"+min;};SWApp.prototype.doesFailItemConstraints=function(itemID,item){var result={};event=swApp.syncSWorld.getEventFromItemID(itemID);var resp=this.recurLengthCheck(event);if(resp){result.fail=resp;return result;}
var itemM=swApp.syncSWorld.itemM;var anItem,includedItemIds,swEventComp,usedInvoiceIdInvoice={};for(var anItemID in itemM){if(itemM.hasOwnProperty(anItemID)){anItem=itemM[anItemID];if(!anItem){continue;}
if(anItemID==itemID){continue;}
resp=this.recurLengthCheck(event);if(resp){result.fail=resp;return result;}
includedItemIds=anItem["included-item-ids"];if(!includedItemIds){continue;}
includedItemIds=getPropKeys(includedItemIds);if(aContains(includedItemIds,itemID)){swEventComp=swApp.syncSWorld.getEventFromItemID(anItemID);var msg="You are not allowed to publish this item because\nthis item is included by another item (the main event).\n";if(strValid(swEventComp.title)){msg+="The item you probably want to publish is:\n"+swEventComp.title;}
result.fail=msg;return result;}}}
includedItemIds=item["included-item-ids"];var includedItemIdsKeys;if(includedItemIds){var includedItemIdsKeys=getPropKeys(includedItemIds);if(includedItemIdsKeys.length===0){if(!item["invoice-ids"]||item["invoice-ids"].length===0){result.fail="missing invoice. (Properties -> Invoices)";return result;}}}
var baseUntilYear=item.untilYear;var baseUntilMonth=item.untilMonthsIdx;var baseUntilDayOfMonth=item.untilDayOfMonth;var baseUntilWeekDay=item.untilWeekDaysIdx;var hasCost=false,invoiceCount=0,isSellerCanadian,sellerRegion;var firstSellerInvoice;var invoiceM=swApp.syncSWorld.invoiceM;var j,invoiceId,invoiceIds,invoice,includedItemCount=0,event;if(includedItemIds){includedItemCount=includedItemIdsKeys.length;for(var k in includedItemIds){if(includedItemIds.hasOwnProperty(k)){var includedItemId=k;var includedItem=itemM[includedItemId];if(!includedItem){result.fail="You seem to be missing item-id:"+
includedItemId+".\nTry selecting Event -> Properties. This will\n"+"download all of your items from the server,\n"+"then try to publish again.";return result;}
if(!includedItem["invoice-ids"]||includedItem["invoice-ids"].length===0){swEventComp=swApp.syncSWorld.getEventFromItemID(includedItemId);result.fail="the included item '"+swEventComp.title+"' is missing an invoice.\n(Properties -> Invoices for each included item)";return result;}
event=swApp.syncSWorld.getEventFromItemID(includedItemId);var ymd;if(baseUntilYear!=includedItem.untilYear){ymd="year";}
else if(baseUntilMonth!=includedItem.untilMonthsIdx){ymd="month";}
else if(baseUntilDayOfMonth!=includedItem.untilDayOfMonth){ymd="day of the month";}
else if(baseUntilWeekDay!=includedItem.untilWeekDaysIdx){ymd="week day";}
if(ymd&&includedItem.freq){var warning="An included item has a different recurrence end "+ymd+".\nBase/publishing item: "+swApp.printYMD(baseUntilYear,baseUntilMonth,baseUntilDayOfMonth)+"\nIncluded item '"+
event.title+"': "+
swApp.printYMDHM(includedItem.startYear,includedItem.startMonthsIdx,includedItem.startDayOfMonth,includedItem.startHourOfDay,includedItem.startMinute)
+" -> "+
swApp.printYMD(includedItem.untilYear,includedItem.untilMonthsIdx,includedItem.untilDayOfMonth);ymd=null;alert(warning);}
invoiceIds=includedItem["invoice-ids"]||[];invoiceCount+=invoiceIds.length;for(j=0;j<invoiceIds.length;++j){invoiceId=invoiceIds[j];invoice=invoiceM[invoiceId];usedInvoiceIdInvoice[invoiceId]=invoice;if(invoice.hasOwnProperty("price")&&invoice.price>0){hasCost=true;}}}}}
invoiceIds=item["invoice-ids"];if(invoiceIds){invoiceCount+=invoiceIds.length;for(j=0;j<invoiceIds.length;++j){invoiceId=invoiceIds[j];invoice=invoiceM[invoiceId];usedInvoiceIdInvoice[invoiceId]=invoice;if(invoice.hasOwnProperty("price")&&invoice.price>0){hasCost=true;}}}
var swuser=swApp.syncSWorld.swemuserM[swApp.syncSWorld.userSettingsDTO.swuserid];if(hasCost){var paymentProvider=swuser["payment-provider"];if(!paymentProvider||paymentProvider=="none"){result.fail="You are publishing something that has a cost so\nyou must configure a 'Payment Provider'.";return result;}}
if(!strValid(item["host-mailing-address"])){result.fail="You must provide the 'Host Mailing Address'.\n(Found in the 'Event Properties' view)";return result;}
if(!strValid(item["hosted-by-label"])){result.fail="You must provide the 'Hosted By' info.\n(Found in the 'Event Properties' view)";return result;}
var packageDealM=swuser["package-deal-map"];var packageDealIds=item["package-deal-ids"];var tax1Name,tax2Name,tax1Percent,tax2Percent,testItem;var prorated,itemIdInvoiceIds,itemInvoice,reResult,firstItemId;var itemInvoiceRE=/(.*),(.*)/;if(packageDealIds){for(i=0;i<packageDealIds.length;++i){var packageDealId=packageDealIds[i];var packageDeal=packageDealM[packageDealId];itemIdInvoiceIds=packageDeal["item-invoice-ids"]||[];prorated=null;for(j=0;j<itemIdInvoiceIds.length;++j){itemInvoice=itemIdInvoiceIds[j];reResult=itemInvoiceRE.exec(itemInvoice);itemId=reResult[1];invoiceId=reResult[2];invoice=invoiceM[invoiceId];testItem=itemM[itemId];if(typeof tax1Name=='undefined'){tax1Name=invoice["tax1-name"];tax1Percent=invoice["tax1-percent"];}
else{if(tax1Name!=invoice["tax1-name"]){result.fail="All package deal events must have the same tax settings.\nPackage deal:"+packageDealId+", invoice: "+invoice.label+"\n"+", tax 1 name was: '"+invoice["tax1-name"]+"'\nwhich is different from: '"+tax1Name+"'.";return result;}
if(tax1Percent!=invoice["tax1-percent"]){result.fail="All package deal events must have the same tax settings.\nPackage deal:"+packageDealId+", invoice: "+invoice.label+"\n"+", tax 1 percentage was:"+invoice["tax1-percent"]+"\nwhich is different from:"+tax1Percent;return result;}}
if(typeof tax2Name=='undefined'){tax2Name=invoice["tax2-name"];tax2Percent=invoice["tax2-percent"];}
else{if(tax2Name!=invoice["tax2-name"]){result.fail="All package deal events must have the same tax settings.\nPackage deal:"+packageDealId+", invoice: "+invoice.label+"\n"+", tax 2 name was: '"+invoice["tax2-name"]+"'\nwhich is different from: '"+tax2Name+"'.";return result;}
if(tax2Percent!=invoice["tax2-percent"]){result.fail="All package deal events must have the same tax settings.\nPackage deal:"+packageDealId+", invoice: "+invoice.label+"\n"+", tax 2 percentage was:"+invoice["tax2-percent"]+"\nwhich is different from:"+tax2Percent;return result;}}
if(prorated===null){prorated=(testItem.prorated||false);firstItemId=itemId;}
else{var incProrated=testItem.prorated;if(incProrated===null){incProrated=false;}
if((prorated||false)!=(incProrated||false)){var event1=swApp.syncSWorld.getEventFromItemID(firstItemId);var event2=swApp.syncSWorld.getEventFromItemID(itemId);result.fail="Items that show up in the same package deal must\nhave the same prorated setting.\n"+event1.title+": "+(prorated||"false")+"\n"+event2.title+": "+(incProrated||"false");return result;}}
if(prorated){if(testItem.bywdaylist&&!testItem.instances){var event2=swApp.syncSWorld.getEventFromItemID(itemId);result.fail="Prorated item '"+event2.title+"'\nis missing instances data.\nSolution: "+"open the event's Event Manager 'Properties' view\n"
+"and click 'Save'.";return result;}}}}}
if(invoiceCount===0){return"You forgot to select an invoice.";}
var absorbFee,invAbsorbFee,origInvoice;for(var k in usedInvoiceIdInvoice){if(usedInvoiceIdInvoice.hasOwnProperty(k)){invoice=usedInvoiceIdInvoice[k];invAbsorbFee=invoice["fee-absorb"];if(typeof absorbFee=='undefined'){absorbFee=invAbsorbFee;origInvoice=invoice;continue;}
if(absorbFee!=invAbsorbFee){result.fail="Invoice '"+origInvoice.label+"' has 'Absorb the Fee': "+absorbFee+"\nbut invoice '"+invoice.label+"' has: "+
invAbsorbFee;return result;}}}
for(var k in usedInvoiceIdInvoice){if(usedInvoiceIdInvoice.hasOwnProperty(k)){invoice=usedInvoiceIdInvoice[k];if(!swXlate1.validateStartTime(invoice)){alert("Warning: the invoice '"+invoice.label+"'\n will not show because the current time is\noutside its sale window (invoice start time).");}
if(!swXlate1.validateEndByDate(invoice)){alert("Warning: the invoice '"+invoice.label+"'\n will not show because the current time is\noutside its sale window (invoice end by date).");}}}
tax1Percent=null;tax1Name=null;tax2Percent=null;tax2Name=null;var invTax1Name,invTax2Name;for(var k in usedInvoiceIdInvoice){if(usedInvoiceIdInvoice.hasOwnProperty(k)){invoice=usedInvoiceIdInvoice[k];if(tax1Name==null){tax1Name=invoice["tax1-name"];tax1Percent=invoice["tax1-percent"];}
else{invTax1Name=invoice["tax1-name"];if(invTax1Name&&invTax1Name.length>0&&tax1Name&&tax1Name.length>0){if(tax1Name!=invTax1Name){result.fail="All invoices must have the same tax1 settings.\n"+", invoice: "+invoice.label+"\n"+", tax 1 name was: '"+invoice["tax1-name"]+"'\nwhich is different from: '"+tax1Name+"'.";return result;}
if(tax1Percent!=invoice["tax1-percent"]){result.fail="All invoices must have the same tax1 settings.\n"+", invoice: "+invoice.label+"\n"+", tax 1 percentage was:"+invoice["tax1-percent"]+"\nwhich is different from:"+tax1Percent;return result;}}}
if(tax2Name==null){tax2Name=invoice["tax2-name"];tax2Percent=invoice["tax2-percent"];}
else{invTax2Name=invoice["tax2-name"];if(invTax2Name&&invTax2Name.length>0&&tax2Name&&tax2Name.length>0){if(tax2Name!=invTax2Name){result.fail="All invoices must have the same tax2 settings.\n"+", invoice: "+invoice.label+"\n"+", tax 2 name was: '"+invoice["tax2-name"]+"'\nwhich is different from: '"+tax2Name+"'.";return result;}
if(tax2Percent!=invoice["tax2-percent"]){result.fail="All invoices must have the same tax2 settings.\n"+", invoice: "+invoice.label+"\n"+", tax 2 percentage was:"+invoice["tax2-percent"]+"\nwhich is different from:"+tax2Percent;return result;}}}}}
var wlEnabled,wle,warned=false;for(var k in usedInvoiceIdInvoice){if(usedInvoiceIdInvoice.hasOwnProperty(k)){invoice=usedInvoiceIdInvoice[k];wle=invoice["waitinglist-enabled"];if(typeof wlEnabled=='undefined'){wlEnabled=wle;origInvoice=invoice;continue;}
if(wlEnabled!=wle){warned=true;alert("Friendly warning: (publish will still succeed)\nThe waiting "+"list for '"+origInvoice.label+"' is "+wlEnabled+"\nbut '"+invoice.label+"' is "+wle+".\n"+"This may not be what you wanted.");}}}
if(isSellerCanadian){if(!swuser["can-gst"]){result.fail="You have some invoices set to use the\n"+"'Enable Auto Canadian Taxes' option but you have not\n"+"enabled 'Canadian GST' in the 'Payment Providers' section.";return result;}}
result.sellerRegion=sellerRegion;result["fee-absorb"]=absorbFee;return result;};SWApp.prototype.cleanupRow=function(data){for(var j=0;j<data.length;++j){var column=data[j];if(!column){continue;}
if(typeof column=="object"){if(column.hasOwnProperty("onclick")){column.onclick="";}
if(column.hasOwnProperty("compute")){column.compute="";}}}};SWApp.prototype.createSwItemData=function(swuser,itemId,item){var swItemData={};swItemData.invoices=swApp.syncSWorld.invoiceM;swItemData.surveys=swuser["survey-map"];swItemData.locations=swuser["location-map"];var i;var packageDealM=swuser["package-deal-map"];var pdM={};swItemData["package-deals"]=pdM;var packageDealIDs=item["package-deal-ids"];if(packageDealIDs){for(i=0;i<packageDealIDs.length;++i){var id=packageDealIDs[i];var packageDeal=packageDealM[id];if(packageDeal){pdM[id]=packageDeal;}}}
swItemData["base-item-id"]=itemId;swItemData["item-map"]=swApp.syncSWorld.itemM;var ids=[];swItemData["all-item-ids"]=ids;ids.push(itemId);var includedItemIds=item["included-item-ids"];if(includedItemIds){includedItemIds=getPropKeys(includedItemIds);for(i=0;i<includedItemIds.length;++i){var iid=includedItemIds[i];ids.push(iid);}}
return swItemData;};SWApp.prototype.getItemInvoiceNum=function(item){var num=0;var invoiceIds=item["invoice-ids"];if(invoiceIds){num=invoiceIds.length;}
var includedItemIds=item["included-item-ids"];if(includedItemIds){includedItemIds=getPropKeys(includedItemIds);for(var i=0;i<includedItemIds.length;++i){var includedItem=swApp.syncSWorld.itemM[includedItemIds[i]];if(includedItem){invoiceIds=includedItem["invoice-ids"];if(invoiceIds){num+=invoiceIds.length;}}}}
return num;};SWApp.prototype.getInvoicesWithTaxNum=function(item,taxNum){var result={};var i;var invoiceIds=item["invoice-ids"];var invoiceId;var invoice;var taxName;if(invoiceIds){for(i=0;i<invoiceIds.length;++i){invoiceId=invoiceIds[i];invoice=swApp.syncSWorld.invoiceM[invoiceId];if(invoice.hasOwnProperty("tax"+taxNum+"-name")){taxName=invoice["tax"+taxNum+"-name"].trim();if(taxName.length>0){result[invoiceId+"-"+taxName]=invoice["tax"+taxNum+"-percent"];}}}}
var includedItemIds=item["included-item-ids"];if(includedItemIds){includedItemIds=getPropKeys(includedItemIds);for(i=0;i<includedItemIds.length;++i){var includedItem=swApp.syncSWorld.itemM[includedItemIds[i]];if(includedItem){invoiceIds=includedItem["invoice-ids"];if(invoiceIds){for(var j=0;j<invoiceIds.length;++j){invoiceId=invoiceIds[j];invoice=swApp.syncSWorld.invoiceM[invoiceId];if(invoice&&invoice.hasOwnProperty("tax"+taxNum+"-name")){taxName=invoice["tax"+taxNum+"-name"].trim();if(taxName.length>0){result[invoiceId+"-"+taxName]=invoice["tax"+taxNum+"-percent"];}}}}}}}
return result;};SWApp.prototype.getIncludedItemsNum=function(item){var num=0;var includedItemIds=item["included-item-ids"];if(includedItemIds){includedItemIds=getPropKeys(includedItemIds);num=includedItemIds.length;}
return num;};SWApp.prototype.refreshViewPublish=function(swuser,item,swEventComp){if(strValid(swEventComp.title)){this.publishTitle.label("<h1>Publish "+item["item-type"]+": "+
swEventComp.title+"</h1>");}
else{this.publishTitle.label("<h1>Publish "+item["item-type"]+"</h1>");}
this.emPublishItemId=getItemID(swEventComp);this.emPublish.itemId=this.emPublishItemId;this.emStopPublish.itemId=this.emPublishItemId;var desc=item["description-html"]||"";if(desc.length>0){this.descCB.checked(true);}
var instr=item["instructions-html"]||"";if(instr.length>0){this.instCB.checked(true);}
var surveyIds=item["survey-ids"];var num=0;if(surveyIds){num=surveyIds.length/2;}
this.surveyQuestions.label(""+num);this.invoicesUsed.label(""+this.getItemInvoiceNum(item));var invoicesWithTax1=this.getInvoicesWithTaxNum(item,1);var keys=getPropKeys(invoicesWithTax1);this.invoicesWithTax1.label(""+keys.length);var invoicesWithTax2=this.getInvoicesWithTaxNum(item,2);keys=getPropKeys(invoicesWithTax2);this.invoicesWithTax2.label(""+keys.length);this.pubIncludedItems.label(""+this.getIncludedItemsNum(item));if(this.providerGroup){if(item["payment-provider"]=="CEC"){this.providerGroup.setValue(["CEC"]);}
else{this.providerGroup.setValue(["WPS"]);}}
var url=this.getIWPURL();this.publishURL.label(url);};TFLANG={};document.write("<scr"+"ipt src='js/xuheki/lang/en"+(window.BUILD_TIMESTAMP?"-"+window.BUILD_TIMESTAMP:"")+".js'></scr"+"ipt>");TFLANG.DEFAULT="en";function $msg(id){var suffix="";var pos=id.indexOf("&");if(pos!=-1){suffix=id.substr(pos+1);id=id.substr(0,pos);}
var txt=TFLANG[TFLANG.DEFAULT][id];if(arguments.length>1){var args=arguments;txt=txt.replace(/\$\{([0-9]+)\}/g,function(s,p){return args[p];});}
if(suffix)
txt+=suffix;return txt;}
function _$msgIFS(txt,prop){return txt.replace(/<!--(IF|UNLESS)\s*(.*?)\s*-->\s*(.*?)\s*<!--END-->/g,function(str,type,cond,text){var val=eval(cond);if(type!="IF")
val=!val;return val?text:"";});}
function $msgProps(id,prop){var txt=_$msgIFS($msg(id),prop);return txt.replace(/\$\{([^:\}]+)(:[^\}]+)?\}/g,function(str,p1,p2){var n=prop[p1];if(!p2)
return n;var p=p2.substr(1).split(/\s*\|\s*/);if(n>=p.length)
str=p[p.length-1];else
str=p[n];return str.replace(/##?/g,function(s){return s.length==2?"#":n;});});}
function $msgBold(id){return["<b>",$msg(id),"</b>"].join("");}
function $msgNR(id){var txt=$msg(id),args=arguments;return txt.replace(/\$\{([0-9]+):([^}]+)}/g,function(str,n,p){n=args[n];p=p.split(/\s*\|\s*/);if(n>=p.length)
str=p[p.length-1];else
str=p[n];return str.replace(/##?/g,function(s){return s.length==2?"#":n;});});}
TFLANG["en"]={"Seen":"Seen","NRecordsSaved":"${1:No records|One record|# records} saved","SaveThisContact":"Save this contact","October":"October","token-tooltip-email-nocontact":"<div class=\x22title\x22>Not in contacts:</div> <div style=\x22text-align: center\x22><tt>${email}</tt></div>","IMAPHost":"IMAP server host","DisplayExternalImages":"There are links to external images — click here to display them","Password":"Password","info-tryingToSaveServer":"Trying to contact server...","info-MatchAllMessages":"Apply the actions for all messages","SentFolder":"Sent folder","FilterSaved":"Filter saved","Content-Type":"Content-Type","progress-indexXedni":"<table class=\x22description\x22> <tr> <td class=\x22label\x22>Server:</td><td>${server}</td> </tr> <!-- <tr> --> <!-- <td class=\x22label\x22>Folder:</td><td>${folder}</td> --> <!-- </tr> --> </table>","SaveDraft":"Save draft","ShowRelated":"Show related","EditAsNew":"Edit as new","AddRule":"Add rule","-SelectTest-":"—— select test ——","info-AddedSieveScript":"Created new Sieve script (${name}).<br/> Remember to activate it!","Send":"Send","IsAfter":"Is after","UpdateIndex":"Update index","Filters":"Filters","skin-cyan-ds":"Cyan desaturated","Wednesday":"Wednesday","NoMailTo":"No mail to ${partner}","MessageHasXAttachments":"this message has ${1:|one attachment|# attachments}","SaveAllCollected":"Save all collected","MailTo":"Mail to","DefaultEditorMode":"Default editor mode","User":"User","Filter":"Filter","err-CantParseSieveScript":"<div style='width:20em'>Cannot load this Sieve script. It wasn't generated by Xuheki.<br/><br/> If you want Xuheki to manage this script, please click the button below. It will overwrite the existing content when you'll save it. Otherwise you can edit the script directly in the “Sieve script” tab.</div>","IsAddress!":"Address isn't","CreateSubfolder":"Create subfolder","ClearCacheOnLogout":"Clear cache on logout","RedirectToAddress":"Redirect to address","info-BounceMessage":"<b>Send this message exactly as is to various recipients.</b><br/> Enter one or more email addresses, one per line.","Tu":"Tu","MatchAllMessages":"All messages","Bounce":"Bounce","Write":"Write","ContactsCollected":"Contacts <b>(${1:all saved|one new|# new})</b>","ClickToScrollToAttachments":"Click to scroll to attachments area","Addresses":"Addresses","CC":"CC","ColorTheme":"Color theme","UID":"UID","SendMessage":"Send message","err-MustSelectFolder":"Please select a folder","ShowRelatedMessages":"Display all related messages","SavedToDrafts":"Saved draft message","GoSearch":"Go search!","UseSSL":"Use SSL","IsBefore":"Is before","Underline":"Underline","MatchAddress!":"Address doesn't match","TakeOver":"Take over","TrashFolder":"Trash folder","StopProcessingIfFilterMatch":"Stop processing further filters if this one matched","Email":"Email","AddFilter":"Add filter","HasManageSieve":"Use MANAGESIEVE","MissingFoldersAutocreated":"(missing folders will be automatically created)","err-MustEnterEmail":"Please enter email address","ReplyAll":"Reply all","EventReplySubject":"Event Invitation Reply: ${summary}","progress-fetchingData":"Fetching ${n:0|one message|# messages} (%d%)","Aug":"Aug","Compose":"Compose","NP_files":"<!--IF prop.count > prop.psize--> ${start}..${stop} of <!--END--> ${count:no files|One file|# files}","StartsWith":"Begins with","EndsWith":"Ends with","skin-cyan":"Cyan","MessageSent":"Message sent","Jul":"Jul","err-cantConnectToIMAP":"Cannot connect to IMAP host","Identities":"Identities","DeleteFolder":"Delete folder","IndexMail":"Index mail","Feb":"Feb","AlignCenter":"Align Center","Warning":"Warning","IndexingMail":"Indexing mail","MailFrom":"Mail from","Activate":"Activate","TestConnection":"Test connection","CustomHeader":"Custom header","Close":"Close","Strike":"Strike","err-MustSelectTest":"Please select test type","mail-message-drop-to-folder":"<b>Move ${count:|one message|# messages}</b><br/> from: ${server} / ${folder}<br/> to: ${to_server} / ${to_folder}","September":"September","err-invalidEmail":"Invalid email address","Match":"Match","ToOrCC":"To or CC","Size":"Size","Actions":"Actions","Logout":"Logout","DraftsFolder":"Drafts folder","ShowCC":"Show CC","NoRelatedContacts":"No related contacts were found","AlignRight":"Align Right","Body":"Body","MatchAddress":"Address matches","Delete":"Delete","EditFilters":"Edit filters","MoveToFolder":"Move to folder","Date":"Date","RemoveFormatting":"Remove formatting","April":"April","err-FolderAlreadyExists":"Folder already exists.","EventAcceptedBody":"${from} has accepted your event invitation.\n\nEvent description\n-----------------\n${desc}","PlainText":"Plain text","popup-CreateFolder":"<div style=\x22margin: 0 1em\x22> <p><b>Create new folder</b></p> <p> Please use only letters, digits or space. </p> <p><span/></p> </div>","Address":"Address","FilterRules":"Filter rules","-SieveDisabledFilter":"This filter is disabled","ServerEmail":"Email address for this server","token-tooltip-ximg":"Click to load external image:<br/> ${data}","Signature":"Signature","SievePort":"MANAGESIEVE Port","KeepInInbox":"Keep in your INBOX","TextMode":"Plain text mode","status-selection":"${total:no messages|one message|# messages}${sel:|, one selected|, # selected}","ServerProperties":"Server properties","ChangePassword":"Change password","skin-green":"Green","Sep":"Sep","info-spamReported":"Reported ${1:no message|one message|# messages} as SPAM","Is":"Is","n/a":"n/a","err-wrongOldPassword":"Wrong current password","PopupMessage":"Popup message","ShowDesktop":"Show desktop","March":"March","info-yourPasswordWasChanged":"Your password was changed","Autosaved":"Autosaved","Server":"Server","Expunge":"Expunge","warning-DeleteSieveScript":"<div style='width:20em'><p> Are you sure you want to remove this Sieve script (&quot;${name}&quot;)? You can't undo this action. </p></div>","BackgroundColor":"Background color","Attachments":"Attachments","_date_firstDayOfWeek":"1","PGP-encryptionSigning":"PGP (Encryption / signing)","StartsWith!":"Doesn't begin with","Su":"Su","Nov":"Nov","ThisFilterIsEnabled":"This filter is enabled","NotJunk":"Not spam","DeleteSelected":"Delete selected","EndsWith!":"Doesn't end with","IncludePlainText":"Include text part","info-newMail":"<!--IF prop.diff_unseen > 0--> ${diff_unseen:No|One new message|# new messages} in ${folders_unseen:no|one folder|# folders} <!--END--><!--IF prop.diff_unseen == 0--> No new mail <!--END-->","MatchAnyOf":"Any rule","AvailableScripts":"Available scripts","err-passwordTooShort":"Password too short","MatchAllOf":"All rules","Enabled":"Enabled","Ready":"Ready","info-MatchAnyOf":"Apply the actions if at least one rule matches","ReduceIndentation":"Reduce indentation","MoveUp":"Move up","err-OnlyLettersAndDigits":"Please use only letters, digits or space.","RemoveFilter":"Remove filter","We":"We","To":"To","Contacts":"Contacts","XuhekiPreferences":"Xuheki Preferences","SieveScript":"Sieve script","Mark":"Mark","Tuesday":"Tuesday","NP_emails":"<!--IF prop.count > prop.psize--> ${start}..${stop} of <!--END--> ${count:no emails|One email|# emails}","BounceMessage":"Bounce message","July":"July","June":"June","Search":"Search","Mar":"Mar","info-about":"<div style='width:28em'><div class=\x22about\x22> <p><b>Xuheki Webmail</b> <br/>version ${version} | ${build}</p> <p> Author: Mihai Bazon<br/> © Dynarch-Web srl 2008. All rights reserved. <br/>Visit <a href=\x22http://www.xuheki.com/\x22 target=\x22_blank\x22>www.xuheki.com</a> for details. </p> </div></div>","Dec":"Dec","Thursday":"Thursday","info-connectedSuccessfully":"Successfully connected!","skin-red-ds":"Red desaturated","NoMailFrom":"No mail from ${partner}","Jan":"Jan","info-notSpam":"${1:no message|one message|# messages} declared NOT SPAM","Monday":"Monday","IsAddress":"Address is","AttcTo":"Files to","EnterHeaderName":"Enter header name","mail-message-dragging":"<b>Selected ${count:|one message|# messages}</b><br/> server: ${server}<br/> folder: ${folder}","err-cantAuthenticateToIMAP":"Authentication failed","ChangeYourPassword":"Change your password","RichText(HTML)":"Rich text (HTML)","AlignLeft":"Align Left","mail-message-drop-to-attachments":"<b>Attach ${count:|one message|# messages}</b><br/> from: ${server} / ${folder}","MoveDown":"Move down","CreateFolder":"Create folder","Identity":"Identity","ShowMIME":"View message source","Cancel":"Cancel","SaveNew":"Save as new","IMAPPassword":"IMAP password","skin-blue":"Blue","Matches!":"Doesn't match","Yes":"Yes","skin-yellow-ds":"Yellow desaturated","HtmlMode":"Rich text mode","InboxFolder":"INBOX folder","Apr":"Apr","Host":"Host","skin-default":"DynarchLIB Default","BCC":"BCC","Days":"Days","PrefersPlainText":"Prefers plain text","Autoreply":"Auto-reply","Emails":"Emails","Preview":"Preview","Print":"Print","February":"February","WontRemoveLastItem":"Can't remove the last item","No":"No","Junk":"Spam","ManageSieveServer":"ManageSieve server","ViewAttachedMessage":"View message","ConfirmNewPassword":"Confirm password","Default":"Default","IsBefore!":"Is not before","ViewMessage":"mail","Friday":"Friday","BulletList":"Bullet list","SearchFolder":"Search folder","SpamFolder":"SPAM folder","SaveSelected":"Update selected","NewMail":"New mail","skin-green-ds":"Green desaturated","skin-yellow":"Yellow","AddServer":"Add server","FirstName":"First name","next":"next »","MoveToTrash":"Move to Trash","RemoveServer":"Remove server","Contains":"Contains","December":"December","Remove":"Remove","Forward":"Forward","DisplayName":"Display name","RemoveRule":"Remove rule","AvailableFilters":"Available filters","Th":"Th","Oct":"Oct","DefaultForServer":"Default identity for this server","xedni-contactInfo":"<table style=\x22width:100%\x22> <tr> <td style=\x22border-bottom: 1px solid #999\x22><b>${name}</b></td> <td style=\x22width: 10px; height: 54px\x22 rowspan=\x222\x22><img src=\x22${img}\x22/></td> </tr> <tr> <td>Phone: ${phone}</td> </tr> </table>","nosubject":"(no subject)","Italic":"Italic","Edit":"Edit","GetMail":"Get mail","NumberedList":"Numbered list","Save":"Save","OpenInOwnWindow":"Popup this message","Heading":"Heading","Rules":"Rules","Mo":"Mo","Jun":"Jun","err-ScriptAlreadyExists":"Script &quot;${name}&quot; already exists.","GoToday":"Go Today","Filename":"Filename","warning-DeleteServer":"<div style='width:20em'><p> <span class=\x22warning\x22>Are you sure you want to remove this email server (${server}) from Xuheki?</span> </p></div>","Port":"Port","IsAfter!":"Is not after","About":"About","From":"From","ReindexingMessages":"Reindexed %v of ${1:|one message|# messages}","NRecordsDeleted":"${1:No records|One record|# records} deleted","Contains!":"Doesn't contain","Bold":"Bold","err-invalidField":"Invalid value for this field","NameNewScript":"Name new script","AddAttachment":"Add attachment","Sunday":"Sunday","ShowOriginal":"Show original","Related":"Related","skin-magenta-ds":"Magenta desaturated","ServerName":"Server name","err-missingField":"This field is required","EmptyTrash":"Empty trash","err-MustSelectServer":"Please select one server/folder first.","AttcFrom":"Files from","Preformatted":"Preformatted","info-ManageSieveDlg":"<div style=\x22width: 25em; padding: 5px\x22> Xuheki allows you to configure your mail filters based on <a href=\x22http://en.wikipedia.org/wiki/Sieve_%28mail_filtering_language%29\x22 target=\x22_blank\x22>Sieve scripts</a>. You need to have a MANAGESIEVE server installed and provide the credentials below. <a href=\x22http://en.wikipedia.org/wiki/Secure_Sockets_Layer\x22 target=\x22_blank\x22 title=\x22Transport Layer Security\x22>TLS</a> is used automatically if available. <p/> If you leave the password field blank, we will try the same password as for the IMAP account. </div>","NewPassword":"New password","January":"January","composer-attc-dragging":"Drop to composer: ${name}<br/> ${type}","August":"August","PrintSelectedMessages":"Print selected messages","Sa":"Sa","ReplyTo":"Reply to","NoAttcFrom":"No attachments from ${partner}","LastName":"Last name","Revert":"Revert","NoneSelected":"None selected","Is!":"Is not","Matches":"Matches","NoAttcTo":"No attachments to ${partner}","err-passwordConfirmMismatch":"Confirm field doesn't match new password","progress-indexXedni-folder":"Folder: <b>${folder}</b>","skin-ds":"Default desaturated","EditMessage":"Edit message","error-in-filter":"Error in filter ${name}:<br/> “${error}”","progress-indexXedni-folderPercent":"Folder: <b>${folder}</b> %d%","BodyText":"Body text","AddIMAPServer":"Add an IMAP server","Contact":"Contact","info-MatchAllOf":"Apply the actions if all the given rules are met","Folder":"Folder","OK":"OK","IMAPUser":"IMAP user","CurrentPassword":"Current password","UseForRecipients":"Use for recipients","November":"November","-SieveScriptPreamble":"Sieve script generated by Xuheki Webmail (www.xuheki.com)","Guess":"Guess","Add":"Add","Subject":"Subject","May":"May","DeleteThisContact":"Delete this contact","skin-grey":"Grey","TextColor":"Text color","ShowBCC":"Show BCC","Discard":"Discard","skin-red":"Red","Flagged":"Flagged","skin-magenta":"Magenta","warning-firebug":"You appear to be running Firebug.<br/> This will drastically slow down the application.<br/> You have been warned.","warning-DeleteFolder":"<div style='width:20em'><p class=\x22warning\x22> All messages in this folder and any subfolders will be lost permanently! </p> <p> <b>Server:</b> <span class=\x22warning\x22>${server}</span><br/> <b>Folder:</b> <span class=\x22warning\x22>${folder}</span> </p> <p><b>Are you sure you want to continue?</b></p></div>","Reply":"Reply","err-MustNotBeEmpty":"The value must not be empty.","token-tooltip-email-contact":"<!--IF prop.tmp--> <div class=\x22title\x22>Auto-collected contact:</div> <!--END--> <table class=\x22description\x22 align=\x22center\x22> <tr> <td class=\x22label top\x22> <img src=\x22${icon}\x22/> </td> <td> <table cellspacing=\x220\x22 cellpadding=\x220\x22> <tr> <td class=\x22label\x22>Full name:</td><td>${name}</td> </tr> <tr> <td class=\x22label\x22>Phone:</td><td>${phone}</td> </tr> <tr> <td class=\x22label top\x22>Emails:</td><td><tt>${emails}</tt></td> </tr> </table> </td> </tr> </table>","RebuildIndex":"Rebuild index","Fr":"Fr","Update":"Update","Preferences":"Preferences","prev":"« prev","Sender":"Sender","IncreaseIndentation":"Increase indentation","ShowReplyTo":"Show Reply To","Saturday":"Saturday","SaveServer":"Save server","skin-blue-ds":"Blue desaturated","AlignFull":"Align Full (justify)","Deleted":"Deleted","info-print":"<b>This area does not appear in the printed media!</b><br/> You selected to print ${n:nothing|one message|# messages}.<br/><br/> <table> <!--IF prop.n > 1--> <tr> <td> <input type=\x22checkbox\x22 id=\x22f_pageBreaks\x22 onclick=\x22enablePageBreaks(this.checked)\x22/> </td> <td><label for=\x22f_pageBreaks\x22>Page break between messages</label></td> </tr> <!--END--> <tr> <td> <input type=\x22checkbox\x22 id=\x22f_noLogo\x22 onclick=\x22hideLogo(this.checked)\x22/> </td> <td><label for=\x22f_noLogo\x22>Hide “Powered by Xuheki” (lame)</label></td> </tr> </table> <table><tr> <td><button onclick=\x22if (window.print()) { window.close() }\x22>Print</button></td> <td><button onclick=\x22window.close()\x22>Return to Xuheki</button></td> </tr></table>","Description":"Description","UnnamedFilter":"Unnamed filter"};DlTEXTS={goToday:$msg("GoToday"),_date_monthNames:"January February March April May June July August September October November December".qw().map($msg),_date_shortMonthNames:"Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec".qw().map($msg),_date_dayNames:"Sunday Monday Tuesday Wednesday Thursday Friday Saturday Sunday".qw().map($msg),_date_shortDayNames:"Su Mo Tu We Th Fr Sa Su".qw().map($msg),_date_firstDayOfWeek:parseInt($msg("_date_firstDayOfWeek"),10)};Date._MN=DlTEXTS._date_monthNames;Date._SMN=DlTEXTS._date_shortMonthNames;Date._DN=DlTEXTS._date_dayNames;Date._SDN=DlTEXTS._date_shortDayNames;Date._FDOW=DlTEXTS._date_firstDayOfWeek;ConfirmDialog={DEFAULT_ARGS:{title:["title",$msg("Warning")],icon:["icon","Icon-Dlg-Warning"],modal:["modal",true],text:["text",null],body:["body",null],onOK:["onOK",null],onCancel:["onCancel",null],okLabel:["okLabel",$msg("OK")],cancelLabel:["cancelLabel",$msg("Cancel")],__quitBtn:["quitBtn","destroy"]},ask:function(args){Dynarch.setDefaults.call(args,ConfirmDialog.DEFAULT_ARGS,args);var dlg=new DlDialog({title:args.title,parent:args.parent,noShadows:args.noShadows,className:"TFConfirm-Dialog",modal:args.modal});var vbox=new DlVbox({parent:dlg});var hbox=new DlHbox({parent:vbox,borderSpacing:5});var td=hbox.createCellElement();td.className="TFDialog-Icon";td.innerHTML="<div class='TFDialog-Icon "+args.icon+"'>&nbsp</div>";var td=hbox.createCellElement();td.className="TFConfirmDialog-Text";td.innerHTML=args.text;if(args.body)
hbox.appendWidget(args.body,td);vbox.addSeparator();var btnbox=new DlHbox({parent:vbox,borderSpacing:4});btnbox.addFiller();var ok=new DlButton({focusable:true,label:args.okLabel.fixedWidth("7em"),parent:btnbox});var cancel=new DlButton({focusable:true,label:args.cancelLabel.fixedWidth("7em"),parent:btnbox});ok.addEventListener("onClick",ConfirmDialog.onCancel.$(dlg,args.onOK));cancel.addEventListener("onClick",ConfirmDialog.onCancel.$(dlg,args.onCancel));dlg._focusedWidget=ok;dlg.show(true);},onCancel:function(cont){if(cont){cont(this);}
this.destroy();}};window.XHK_VERSION='0.4';Mail={NOOP_POLL_TIMEOUT:30*1000,GETMAIL_POLL_TIMEOUT:300*1000,AUTOSAVE_TIMEOUT:10*1000,mime_handlers:{},getURL:function(url){return XHK_URL_PREFIX+url;}};if(!window.XHK_URL_PREFIX)
window.XHK_URL_PREFIX="/xuheki";{function Mail_DisplayImage(part,dest_id){var tr=document.getElementById(dest_id);while(tr.firstChild)
DynarchDomUtils.trash(tr.lastChild);var td=document.createElement("td");tr.appendChild(td);td.colSpan=20;td.innerHTML="<a onclick='if (!this.swURL)this.swURL=this.href;this.href=swApp.syncSWorld.xuhekiGetDocRequestURL(this.swURL);'"+" target='_blank' href='"+part.attachment_url+"'>"+"<img style='border: 2px solid red' width='200' src='"+
swApp.syncSWorld.xuhekiGetDocRequestURL(part.attachment_url)+"' /></a>";};Mail.mime_handlers["image/png"]=Mail_DisplayImage;Mail.mime_handlers["image/jpg"]=Mail_DisplayImage;Mail.mime_handlers["image/jpeg"]=Mail_DisplayImage;Mail.mime_handlers["image/gif"]=Mail_DisplayImage;}
{var TMPL_VCARD=String.template("<div class='vcard-attachment'>$name <tt>&lt;","<a dynarchToken='email' href='mailto:$email' data='$email' class='DynarchMail-token DynarchMail-token-email'>$email</a>","&gt;</tt> | <a href='#' onclick='return Mail.vcard_addToContacts(\"$id\")'>add to contacts</a></div>");var VCARD_CONTENTS={};Mail.vcard_addToContacts=function(id){var vcard=VCARD_CONTENTS[id];alert("FIXME: add VCard to Contacts\n\n"+vcard);return false;};function Mail_DisplayVCard(part,dest_id){var name;var email;if(/^FN:(.*)$/m.test(part.content)){name=RegExp.$1;}
else if(/^N:(.*?);(.*?);/m.test(part.content)){var first=RegExp.$2;var last=RegExp.$1;if(first&&first.length>0){name=first;if(last&&last.length>0){name+=" ";}}
if(last&&last.length>0){name+=last;}}
else if(/^ORG:(.*)/m.test(part.content)){var org=RegExp.$1;if(org&&org.length>0){name=org;}}
if(/^EMAIL.*?:(.*)$/m.test(part.content)){email=RegExp.$1;}
if(email&&(!name||name.length===0)){name=email;}
if(name&&email){var tr=document.getElementById(dest_id);while(tr.firstChild)
DynarchDomUtils.trash(tr.lastChild);var td=document.createElement("td");tr.appendChild(td);td.colSpan=20;VCARD_CONTENTS[part.id]=part.content;td.innerHTML=TMPL_VCARD({name:name.htmlEscape(),email:email.htmlEscape(),id:part.id});}}
Mail.mime_handlers["text/vcard"]=Mail_DisplayVCard;Mail.mime_handlers["text/x-vcard"]=Mail_DisplayVCard;}
Mail.MSG_FLAGS={XXIMG:1};(function(){var INIT_CONTENT=is_gecko?"<p><br/></p>":"";Mail.initEditor=function(content){this.loadStyle("css/xuheki/editor.css?"+new Date().getTime());this.setHTML(content||INIT_CONTENT);};eval(DynarchDomUtils.importCommonVars());var BLOCK_OPTIONS=[{label:$msg("Heading"),value:"h4"},{label:$msg("BodyText"),value:"p"},{label:$msg("Preformatted"),value:"pre"},{label:$msg("Address"),value:"address"}];function handleKeyPress(ev){var qdiv=null;if(ev.keyCode==13&&!ev.shiftKey){if(ev.ctrlKey&&this.ctrlEnterHandler){this.ctrlEnterHandler();ev.domStop=true;DlException.stopEventBubbling();}
var i,sel,range,r2,df,p,qdiv=null,p=this.getAllAncestors();for(i=0;i<p.length;++i)
if(/(^|\s+)DynarchMail-original-message(\s+|$)/.test(p[i].className))
qdiv=p[i];}
if(qdiv){sel=this.getSelection();range=this.getRange(sel);if(!is_ie){sel.removeAllRanges();r2=range.cloneRange();r2.setEndAfter(qdiv);var node=range.endContainer;var offs=range.endOffset;var tmp=node.childNodes[offs];if(tmp&&/^br$/i.test(tmp.tagName))
tmp.parentNode.removeChild(tmp);df=r2.extractContents();p=this.getIframeDoc().createElement("p");p.appendChild(this.getIframeDoc().createElement("br"));df.insertBefore(p,df.firstChild);tmp=p.nextSibling;tmp.normalize();while(tmp.firstChild)
tmp=tmp.firstChild;if(tmp.nodeType==3){if(!/\S/.test(tmp.data)){node=tmp.parentNode;node.removeChild(tmp);tmp=node;}}else{while(tmp&&!/^img$/i.test(tmp.tagName)){if(tmp.firstChild)
break;node=tmp.parentNode;node.removeChild(tmp);tmp=node;}}
qdiv.parentNode.insertBefore(df,qdiv.nextSibling);range.selectNodeContents(p);range.collapse(true);sel.addRange(range);}else{r2=range.duplicate();r2.moveToElementText(qdiv);r2.setEndPoint("StartToStart",range);var txt=r2.htmlText.replace(/\s*<p>\s*<\x2fp>\s*/i,'');r2.pasteHTML('');p=this.getIframeDoc().createElement("p");p.innerHTML="&nbsp;<br />";qdiv.parentNode.insertBefore(p,qdiv.nextSibling);var tmp=qdiv.cloneNode(true);tmp.innerHTML=txt;qdiv.parentNode.insertBefore(tmp,p.nextSibling);range.moveToElementText(p);range.moveEnd('character',-1);range.pasteHTML('');range.select();}
if(this.autoCommands){for(var i in this.autoCommands)
this.execCommand(i,this.autoCommands[i]);}
ev.domStop=true;DlException.stopEventBubbling();}else{DlRteFrame.prototype._onKeypress.apply(this,arguments);}};Mail.makeEditor=function(parent,tabIndex,mode,ctrlEnterHandler,appendArgs){var events=new DlEventProxy();events.registerEvents("onModeChange".qw());var layout;if(appendArgs){layout=new DlLayout({parent:parent,appendArgs:appendArgs});}
else{layout=new DlLayout({parent:parent});}
var notebook=new DlNotebook({className:"MailEditor"});var rte=new DlRteFrame({parent:notebook,tabIndex:tabIndex,useParagraphs:true});rte.autoCommands={};rte._onKeypress=handleKeyPress;rte.setValue=rte.setHTML;rte.getValue=rte.getHTML;var entry=new DlEntry({parent:notebook,tabIndex:tabIndex,type:"textarea"});DlTextUtils.emacsipateTextarea(entry.getInputElement());var toolbar=new DlContainer({className:"DlToolbar"});toolbar.setStyle({padding:"3px"});var topbox=new DlHbox({parent:toolbar});var hbox=new DlHbox({parent:topbox});var block_select=new DlRadioSelect({parent:hbox,options:BLOCK_OPTIONS,value:"p",tooltip:"Block / paragraph style",iconClass:"IconParaStyle"});block_select.addEventListener("onChange",function(){var val=this.getValue(),cls;if(/^_/.test(val)){cls=val.substr(1);var pre=rte.getAncestorsHash().pre;if(!pre){rte.execCommand("formatblock","pre");pre=rte.getAncestorsHash().pre;}
DC(pre,/DynarchLIB-Syntax(-[^\s]+)?/g);AC(pre,"DynarchLIB-Syntax");AC(pre,"DynarchLIB-Syntax-"+cls);}else{rte.execCommand("formatblock",val);}});hbox.addSpace();function genericHandler(){rte.execCommand(this.getValue());};function genericBtn(cmd,icon,tooltip){new DlButton({parent:hbox,value:cmd,iconClass:icon,tooltip:tooltip}).addEventListener("onClick",genericHandler);};genericBtn("unorderedlist","IconListBullet",$msg("BulletList"));genericBtn("orderedlist","IconListEnum",$msg("NumberedList"));hbox.addSeparator("wide-separator");genericBtn("indent","IconTextIndent",$msg("IncreaseIndentation"));genericBtn("outdent","IconTextRemoveIndent",$msg("ReduceIndentation"));hbox.addSeparator("wide-separator");var INLINE_GROUP=DlRadioGroup.get();INLINE_GROUP.maxChecked(null);["Bold","Italic","Underline","Strike"].foreach(function(name){new DlButton({parent:hbox,type:DlButton.TYPE.TWOSTATE,value:name.toLowerCase(),tooltip:$msg(name),iconClass:"Icon"+name,group:INLINE_GROUP});});INLINE_GROUP.addEventListener("onChange",function(btn){rte.execCommand(btn.getValue());});hbox.addSeparator("wide-separator");var ALIGN_GROUP=DlRadioGroup.get();["Left","Center","Right","Full"].foreach(function(name){new DlButton({parent:hbox,type:DlButton.TYPE.TWOSTATE,value:"justify"+name.toLowerCase(),tooltip:$msg("Align"+name),iconClass:"IconAlign"+name,group:ALIGN_GROUP});});ALIGN_GROUP.addEventListener("onChange",function(btn){rte.execCommand(btn.getValue());});hbox.addSeparator("wide-separator");var cp=new DlColorPickerHSV({});var textColor=new DlButtonColorPicker({parent:hbox,connected:true,tooltip:$msg("TextColor"),label:"FG"});textColor.setColorPicker(cp);textColor.addEventListener("onSelect",function(rgb,hsv,color){rte.execCommand("forecolor",color);rte.autoCommands.forecolor=color;});hbox.addSpace();var backColor=new DlButtonColorPicker({parent:hbox,connected:true,tooltip:$msg("BackgroundColor"),label:"BG"});backColor.setColorPicker(cp);backColor.addEventListener("onSelect",function(rgb,hsv,color){rte.execCommand("backcolor",color);rte.autoCommands.backcolor=color;});hbox.addSeparator("wide-separator");genericBtn("removeformat","IconStop",$msg("RemoveFormatting"));layout.packWidget(toolbar,{pos:"top"});layout.packWidget(notebook,{pos:"left",fill:"*"});rte.addEventListener("onUpdate",function(){var getCommandState=rte.queryCommandState.$(rte);var val=["bold","underline","italic","strike"];val=val.grep(getCommandState);INLINE_GROUP.setValue(val);val=["justifyleft","justifyright","justifycenter","justifyfull"];val=val.grep(getCommandState);ALIGN_GROUP.setValue(val);var block=rte.queryCommandValue("formatblock");block_select.setValue(block,null,true);if(/^pre$/i.test(block)){var ah=rte.getAncestorsHash();var pre=ah.pre,syntax;if(/DynarchLIB-Syntax-([^\s]+)/i.test(pre.className))
syntax=RegExp.$1;if(syntax)
block_select.setValue("_"+syntax,null,true);}});topbox.addFiller();var btn=new DlButton({parent:topbox,label:$msg("TextMode")});$ACL(btn,notebook.nextPane.$(notebook));notebook.addEventListener("onChange",function(index){hbox.disabled(index!=0);var idx=notebook.getCurrentPaneIndex();btn.setLabel($msg(idx==0?"TextMode":"HtmlMode"));events.callHooks("onModeChange",getMode());});notebook.showPane(mode!="text"?0:1);function getMode(){return notebook.getCurrentPaneIndex()==0?"html":"text";};function getActiveEntry(){return getMode()=="html"?rte:entry;};function getContent(){return getActiveEntry().getValue();};function setContent(content){getActiveEntry().setValue(content);};if(ctrlEnterHandler){rte.ctrlEnterHandler=ctrlEnterHandler;entry.ctrlEnterHandler=ctrlEnterHandler;entry.addEventListener("onKey-ENTER",function(ev){if(ev.ctrlKey&&!ev.shiftKey&&this.ctrlEnterHandler)
this.ctrlEnterHandler();});}
return{rte:rte,entry:entry,layout:layout,notebook:notebook,events:events,getWidget:getActiveEntry,getMode:getMode,getContent:getContent,setContent:setContent};};})();MSG={};(function(){var _CONT;var VISIBLE=false;var POPPING_UP=false;var POPPING_DOWN=false;var DOM=DynarchDomUtils;var TIMEOUT=2000;var E1=DlAnimation.easing.accel_b;var E2=function(x){with(Math){return 1-cos(x*3*PI/2)/exp(3*x)}};var E3=DlAnimation.easing.accel_ab;var CONT_ANIM;function getCont(){if(!_CONT){_CONT=new DlContainer({className:"DlMessages"});_CONT.setStyle({visibility:"hidden"});_CONT.opacity(0);_CONT.addEventListener("onClick",MSG.popdown);document.body.appendChild(_CONT.getElement());}
return _CONT;};function center(){var ws=DOM.getWindowSize();var s=getCont().getSize();var x=(ws.x-s.x)/2;var y=(ws.y-s.y)/3;getCont().setPos(x,y*2);};function popup(){if(VISIBLE||POPPING_UP)
return;if(POPPING_DOWN)
POPPING_DOWN.stop();getCont().visibility(true);var a=new DlAnimation();POPPING_UP=a;a.addEventListener({onUpdate:function(t){getCont().opacity(E1(t));},onStop:function(){VISIBLE=true;POPPING_UP=false;}});a.start(50,100);};MSG.popdown=function(){if(!VISIBLE||POPPING_DOWN)
return;if(POPPING_UP)
POPPING_UP.stop();var a=new DlAnimation();POPPING_DOWN=a;var y=getCont().getPos().y;a.addEventListener({onUpdate:function(t){getCont().opacity(E1(t).map(1,0));getCont().setPos(null,E3(t).map(y,y-20));},onStop:function(){VISIBLE=false;getCont().visibility(false);getCont().destroyChildWidgets();POPPING_DOWN=false;}});a.start(50,70);};var CONT=[];var CONT_TIMER=null;var HOW_MANY=0;function _tcont(f,timeout){CONT.push(f);if(!CONT_TIMER){HOW_MANY=0;CONT_TIMER=_execCont.delayed(timeout||TIMEOUT);}else{HOW_MANY++;}};function _execCont(){CONT.shift()();if(CONT.length==0){CONT_TIMER=null;}else{var t=TIMEOUT-HOW_MANY*500;if(t<=1000)
t=1000;CONT_TIMER=_execCont.delayed(t);}};function _addMsg(type,text,timeout){var w=new DlWidget({className:"DlMessage DlMessage-"+type,parent:getCont()});w.setContent(text);_tcont(_delMsg.$C(w),timeout);};function _delMsg(w){if(!w||getCont().children().length<=1)
MSG.popdown();else{var a=new DlAnimation(),h=w.getSize().y;a.addEventListener({onUpdate:function(t){w.opacity(E1(t).map(1,0));w.setStyle({marginTop:E2(t).map(0,-h)+"px"});},onStop:function(){w.destroy();}});a.start(50,100);}};MSG.addMsg=function(type,text,timeout){_addMsg(type,text,timeout);center();popup();};})();(function(){var request_id=0;var call_stack=[];var pending={};var JSON_URL=Mail.getURL("/json");var JSON_LOGIN_URL=Mail.getURL("/json/login");Notifications.inherits(DlEventProxy);function Notifications(){DlEventProxy.call(this);this.registerEvents(["onNotify"]);this.addEventListener("onNotify",this._onNotify);}
Object.merge(Notifications.prototype,{listen:function(ev,callback,phase,object){ev="onNotf_"+ev;if(!this.__eventHooks[ev]){this.registerEvents([ev]);}
this.addEventListener(ev,callback,phase,object);},listenOnce:function(ev,callback){var f=function(){callback.apply(this,arguments);this.unlisten(f);}.$(this);this.listen(f);},unlisten:function(ev,callback){this.removeEventListener("onNotf_"+ev,callback);},_onNotify:function(ev){ev="onNotf_"+ev;if(this.hasHooks(ev)){this.applyHooks(ev,Array.$(arguments));}},notify:function(ev){ev="onNotf_"+ev;if(!this.__eventHooks[ev]){this.registerEvents([ev]);}
this.applyHooks(ev,Array.$(arguments,1));}});window.MailNotifications=new Notifications();var NOTF=window.MailNotifications;window.XuhekiRPC=function(){XuhekiRPC_push.apply(this,arguments);XuhekiRPC.go();};var XuhekiRPC=window.XuhekiRPC;window.XuhekiRPC_push=function(callback,method){var args=Array.$(arguments,2);var pos=method.indexOf(".");var scope=null;if(pos>=0){scope=method.substr(0,pos);method=method.substr(pos+1);}
args.splice(0,0,++request_id,scope,method);call_stack.push(args);pending[request_id]=callback;return XuhekiRPC;};XuhekiRPC.go=function(){if(call_stack.length>0){var host=window.location.hostname.toLowerCase();if(host.indexOf("quad")>=0||host.indexOf("scheduleworld")>=0){swApp.syncSWorld.xuhekiPutRequest(JSON_URL,{a:call_stack},rpc_callback);}
else{var tmp=new DlRPC({url:JSON_URL,callback:rpc_callback,data:{a:call_stack}}).call();}
call_stack=[];}};function notify(n){NOTF.notify(n.n_type,n);}
function rpc_callback(ret){if(ret.success||ret.message=='Success'){var text;var useRet;try{var data;if(ret.success){text=ret.text;data=ret.text.decodeJSON(true);useRet=ret;}
else{text=ret.keyValueM.responseData;var index=text.indexOf("{");data=DlJSON.decode(text.substring(index));useRet=ret.keyValueM.responseData;}}catch(ex){if(window.console&&console.log){console.log(ex);}
dlconsole.log("Error: %s",ex.htmlEscape());dlconsole.log("Incoming data: %s",text.htmlEscape());}
data.a.foreach(function(useRet){if(useRet.r){var callback=pending[useRet.r];delete pending[useRet.r];if(callback){callback(useRet.a);}}
if(useRet.n&&useRet.n.length>0){useRet.n.foreach(notify);}});}else{throw DlJSON.encode(ret);}}
SyncSWorld.prototype._xuheki_queue_request=function(request,command,theCallback,onFailCallback,optionalTimeoutMS){this.sendRequest(request,command,theCallback,onFailCallback,optionalTimeoutMS);};SyncSWorld.prototype.xuhekiGetRequest=function(url,theCallback,onFailCallback,optionalTimeoutMS){var request={};request.type="GET";request.url=url;this._xuheki_queue_request(request,"xuheki",theCallback,onFailCallback,optionalTimeoutMS);};SyncSWorld.prototype.xuhekiPutRequest=function(url,data,theCallback,onFailCallback,optionalTimeoutMS){var request={};request.type="PUT";request.url=url;request.data=this.encode(DlJSON.encode(data));this._xuheki_queue_request(request,"xuheki",theCallback,onFailCallback,optionalTimeoutMS);};SyncSWorld.prototype.xuhekiGetTextCalendarRequest=function(url,theCallback,onFailCallback,optionalTimeoutMS){var request={};request.type="GETTextCalendar";request.url=url;this._xuheki_queue_request(request,"xuheki",theCallback,onFailCallback,optionalTimeoutMS);};SyncSWorld.prototype.xuhekiParseTextCalendarRequest=function(textCalendarData,theCallback,onFailCallback,optionalTimeoutMS){var request={};request.type="ParseTextCalendar";request.textCalendarData=textCalendarData;this._xuheki_queue_request(request,"xuheki",theCallback,onFailCallback,optionalTimeoutMS);};SyncSWorld.prototype.xuhekiCalendarRequest=function(action,args,theCallback,onFailCallback,optionalTimeoutMS){var request={type:"CalendarAction",action:action,args:args};this._xuheki_queue_request(request,"xuheki",theCallback,onFailCallback,optionalTimeoutMS);};SyncSWorld.prototype.xuhekiGetDocRequestURL=function(url){if(!this.mishoo_devel()){if(url.indexOf("http")===0){var index=url.indexOf('/',9);url=url.substring(index);}
var request={};request.type="GETDOC";request.url=url;request.clientNonce=this.syncSWorldPrefs.clientNonce;request.deviceID=this.syncSWorldPrefs.deviceID;request.password=hex_sha256(this.sessionID+
this.syncSWorldPrefs.clientNonce);var xml=Sarissa.xmlize(request,"xuhekiGET");var newURL="/sw2/commandV3?user="+this.username+"&cmd=xuheki&command="+encodeURIComponent(xml);return newURL;}
else{return url;}};SyncSWorld.prototype.mishoo_devel=function(){var host=window.location.hostname.toLowerCase();if(host.indexOf("quad")>=0||host.indexOf("scheduleworld")>=0){return false;}
return true;};})();(function(){MailObjectCache.inherits(DlRecordCache);function MailObjectCache(args){if(args){D.setDefaults(this,args);DlRecordCache.call(this,args);}};eval(Dynarch.EXPORT("MailObjectCache"));D.DEFAULT_ARGS={object_type:["object_type",null],requests:["requests",null],search_fields:["search_fields",null]};P.search=function(token){var ret={};token=token.toLowerCase().trim().split(/\s+/);token.foreach(function(token){for(var i in this._data)
this.search_fields.foreach(function(f){var v=this.get(f);if(v&&String(v).toLowerCase().indexOf(token)>=0){if(!ret[this.id()])
ret[this.id()]=1;else
ret[this.id()]++;$BREAK();}},this._data[i]);},this);var a=[];for(var i in ret)
if(ret[i]==token.length)
a.push(this.get(i));return a;};P.fetch_all=function(){XuhekiRPC_push(function(ret){ret.foreach(function(data){var rec=new this.object_type({data:data,recordSet:this});this.insert(rec);},this);}.$(this),this.requests.fetch_all);};P.save=function(a,callback,obj){a.foreach(function(data){var rec=this.get(data.id);if(rec&&rec._isNew){data._tmpId=data.id;delete data["id"];}},this);XuhekiRPC(function(ret){ret.foreach(function(data){if(data._tmpId){var rec=this.get(data._tmpId);delete this._data[data._tmpId];delete data["_tmpId"];Object.merge(rec._data,data);this._data[data.id]=rec;delete rec["_isNew"];}else{var rec=this.get(data.id);if(!rec){rec=new this.object_type({data:data,recordSet:this});this._data[data.id]=rec;}else{Object.merge(rec._data,data);}}},this);this.callHooks("onRefresh");if(callback)
callback.call(obj,ret);}.$(this),this.requests.save,a);};P.remove=function(a,callback,obj){XuhekiRPC(function(ret){a.foreach(function(id){delete this._data[id];},this);this.callHooks("onRefresh");if(callback)
callback.call(obj,ret);}.$(this),this.requests.remove,a);};P.getRecClass=function(rec){if(rec._isNew)
return"MailGeneric-NewRecord";};})();(function(){MailMessage.inherits(DlRecord);function MailMessage(args){if(args){DlRecord.call(this,args);}};eval(Dynarch.EXPORT("MailMessage"));P.get=function(col){if(col=="-icon")
return"";if(this._loading&&col!="id")
return". . .";var ret=D.BASE.get.call(this,col);if(ret==null)
ret="—";return ret;};P.flags_manip=function(add,flag){if(add)
this.set("flags",this.get("flags")+" "+flag);else{var flags=this.get("flags").split(/\s+/);flags.remove(flag);this.set("flags",flags.join(" "));}};})();(function(){MailFolder.inherits(DlRecord);function MailFolder(args){if(args){D.setDefaults(this,args);DlRecord.call(this,args);this.messages.addEventListener({onChange:this._messages_onChange.$(this)});}};eval(Dynarch.EXPORT("MailFolder"));D.DEFAULT_ARGS={server:["server",null],messages:["messages",null]};P.getFullId=function(){return this.server.id()+"-"+this.id();};P.getName=function(){var a=this.get("id").split(this.server.separator_re);return a.peek();};P.getParentId=function(){var a=this.get("id").split(this.server.separator_re);var path=null;if(a.length>1){path=a.slice(0,a.length-1).join(this.server.get("separator"));}
return path;};P.expunge=function(callback,obj){XuhekiRPC(function(ret){if(ret&&ret.done!=-1)
this.messages.fetch_all_ids(callback,obj);else if(callback)
callback.call(obj);}.$(this),"mail.expunge",this.server.id(),this.id());};P._messages_onChange=function(msg,what,newVal,oldVal){if(what=="flags"){var oSeen=oldVal?oldVal.indexOf("\\Seen"):-1;var nSeen=newVal.indexOf("\\Seen");var unseen=this.get("unseen");if(oSeen<0&&nSeen>=0){this.set("unseen",Math.max(unseen-1,0));}
if(oSeen>=0&&nSeen<0){this.set("unseen",unseen+1);}}};})();(function(){MailServer.inherits(DlRecord);function MailServer(args){if(args){D.setDefaults(this,args);DlRecord.call(this,args);this.folders=new MailFolderCache({server_id:this.id(),server:this});}};eval(Dynarch.EXPORT("MailServer"));D.DEFAULT_ARGS={folders:["folders",null]};P.refresh_folders=function(callback,obj){XuhekiRPC(function(ret){var folders=this.folders;var status=ret.status;ret.deleted.foreach(folders.remove.$(folders));var diff_unseen=0;var folders_unseen=0;for(var id in status){var s=status[id];var f=folders.get(id);if(!f){f=this._add_folder(id,s);folders.callHooks("onInsert",f,false,f.get("order"));}else{var old_unseen=f.get("unseen"),old_messages=f.get("total");f.set("unseen",s.UNSEEN);f.set("total",s.MESSAGES);if(s.UNSEEN>old_unseen){diff_unseen+=s.UNSEEN-old_unseen;folders_unseen++;}}}
if(callback)
callback.call(obj,diff_unseen,folders_unseen);}.$(this),"mail.get_folders",this.id());};P.fetch_folders=function(callback,obj){XuhekiRPC(function(ret){this._data.separator=ret.sep;this.separator_re=new RegExp("\\"+this.get("separator")+"+","i");var status=ret.status;var all=[];ret.folders.foreach(function(f){f=this._add_folder(f,status[f]);all.push(f);},this);if(callback)
callback.call(obj,all);all.foreach(function(f){this.folders.callHooks("onInsert",f,true,f.get("order"));},this);}.$(this),"mail.get_folders",this.id());};P._add_folder=function(f,s){var mailcache=new MailCache({server_id:this.id(),folder_id:f});f=new MailFolder({server:this,recordSet:this.folders,messages:mailcache,data:{id:f,unseen:s?s.UNSEEN:null,total:s?s.MESSAGES:null}});this.folders._data[f.id().toLowerCase()]=f;return f;};P.create_folder=function(name){XuhekiRPC(function(ret){var all=[];for(var i in ret)
all.push(this._add_folder(i,ret[i]));all.foreach(function(f){this.folders.callHooks("onInsert",f,false,f.get("order"));},this);}.$(this),"mail.create_folder",this.id(),name);};P.delete_folder=function(name){XuhekiRPC(function(ret){if(ret.done=="OK"){this.folders.remove(name);}}.$(this),"mail.delete_folder",this.id(),name);};P.getName=function(){return this.get("name")||(this.get("user")+"@"+this.get("host"));};P.isOwnEmail=function(email){return Mail.ident_cache.getByServer(this.id()).grep_first(function(rec){return rec.get("email")==email;});};})();(function(){MailCache.inherits(DlRecordCache);function MailCache(args){if(args){D.setDefaults(this,args);DlRecordCache.call(this,args);MailNotifications.listen("mail",this._handleNotification.$(this),null,this);}};eval(Dynarch.EXPORT("MailCache"));D.DEFAULT_ARGS={_server_id:["server_id",null],_folder_id:["folder_id",null]};D.arrayToHash=function(a,hash,keys){keys=keys.qw();a.foreach(function(val,i){this[keys[i]]=val;},hash);};P._handleNotification=function(notf){if(notf.server==this._server_id&&notf.folder==this._folder_id){if(notf.uid){var msg=this.get(notf.uid);if(notf.destroyed){this.remove(notf.uid);}else if(msg){if(notf.flags){msg.set("flags",notf.flags.join(" "));}}}if(notf.messages){this.fetch_new_ids();}}};P.fetch_new_ids=function(callback,obj,nogo){var max=this.maxID||this.ids&&this.ids.max()||1;(nogo?XuhekiRPC_push:XuhekiRPC)(function(ret){var new_ids=ret.map(function(m){var id=m[0];var rec=new MailMessage({recordSet:this,data:{id:id}});this._data[id]=rec;D.arrayToHash(m,rec._data,"id date size subject to from reply_to has_attachments flags");this.callHooks("onChange",rec,"flags",rec.get("flags"),"\\Seen");return id;},this);if(new_ids.length>0){this.maxID=new_ids.max();this.ids.splice.apply(this.ids,[this.ids.length,0].concat(new_ids));this.callHooks("onRefresh",this.ids,"renew");}
if(callback)
callback.call(obj,this.ids,new_ids);}.$(this),"mail.get_new_message_ids",this._server_id,this._folder_id,max);};P.fetch_all_ids=function(callback,obj){this.callHooks("onRefresh",null,"start");XuhekiRPC(function(ids){if(!ids){return;}
this.current_search=null;this.ids=ids;if(typeof ids.max=='function'){this.maxID=ids.max();}
else{swApp.log("ids:"+DlJSON.encode(ids));this.ids=[];this.ids.push(ids);this.maxID=ids;}
this.callHooks("onRefresh",this.ids,"init");if(callback)
callback.call(obj,this.ids);}.$(this),"mail.get_message_ids",this._server_id,this._folder_id);};P.simple_search=function(what,query,sort,callback,obj){this.callHooks("onRefresh",null,"start");XuhekiRPC(function(ids){if(/\S/.test(query)){this.current_search={query:query,what:what};}else{this.current_search=null;}
this.ids=ids;this.maxID=Math.max(this.maxID,ids.max());this.callHooks("onRefresh",ids,"renew");if(callback)
callback.call(obj,ids);}.$(this),"mail.simple_search",this._server_id,this._folder_id,what,query,sort);};function flatLists(a){a.r_foreach(function(el,i){if(el instanceof Array){flatLists(el);el.unshift(i,1);this.splice.apply(this,el);}},a);};P.narrow_to_thread=function(msgid,callback,obj){this.callHooks("onRefresh",null,"start");XuhekiRPC(function(ids){flatLists(ids);this.ids=ids;this.current_search={ids:ids};this.maxID=Math.max(this.maxID,ids.max());this.callHooks("onRefresh",ids,"renew");if(callback)
callback.call(obj,ids);}.$(this),"mail.get_top_thread",this._server_id,this._folder_id,msgid);};P.getRecords=function(ids,callback,obj){var a=[];var uncached=[];var uncached_ids=[];ids.foreach(function(id){var rec=this.get(id);if(rec){a.push(rec);}else{rec=new MailMessage({recordSet:this,data:{id:id}});this._data[id]=rec;rec._loading=true;a.push(rec);uncached.push(rec);uncached_ids.push(rec.id());}},this);callback.call(obj,a);if(uncached.length>0){XuhekiRPC(function(ret){ret.foreach(function(m){var rec=this.get(m[0]);D.arrayToHash(m,rec._data,"id date size subject to from reply_to has_attachments flags");delete rec._loading;this.callHooks("onChange",rec);},this);}.$(this),"mail.get_summaries",this._server_id,this._folder_id,uncached_ids);}};P.getRecClass=function(rec){if(rec._loading)
return null;var flags=rec.get("flags");var c=[],i=0;if(flags.indexOf("\\Seen")<0){c[i++]="MailFlags--Unseen";}
if(flags.indexOf("\\Answered")>=0){c[i++]="MailFlags--Answered";}
if(flags.indexOf("\\Flagged")>=0){c[i++]="MailFlags--Flagged";}
if(flags.indexOf("\\Deleted")>=0){c[i++]="MailFlags--Deleted";}
if(rec.get("has_attachments")){c[i++]="MailFlags--HasAttachment";}
return c.join(" ");};P.sort=function(ids,col,prev,rev,callback,obj){var a;if(col==prev&&rev!==null){a=ids.reverse();callback.call(obj,a);}else{if(rev)
col="!"+col;XuhekiRPC(function(ret){callback.call(obj,ret);},"mail.sort",this._server_id,this._folder_id,col,this.current_search);}};P.formatHTML=function(rec,col,buf){if(rec._loading){buf(rec.get(col).toString());}else if(col!="-icon"){var val=rec.get(col);switch(col){case"from":case"to":{val=val.replace(/(.*)\s*<(.*)>/,function(s,p1,p2){p1=p1.replace(/^\s+/,"").replace(/\s+$/,"").replace(/([\x22\x27])(.*?)\1/,"$2");return p1.htmlEscape()+" <span class='EmailDim'>&lt;"+p2.htmlEscape()+"&gt;</span>";});break;}
case"date":{var date=new Date();date.setTime(val*1000);val=Date.formatNice(date);break;}
case"id":{val+=".";break;}
case"size":{val=parseFloat(val,10).formatBytes();break;}
case"has_attachments":{val='';break;}
default:val=val.toString().htmlEscape();break;}
buf(val);}};})();(function(){MailServerCache.inherits(DlRecordCache);function MailServerCache(args){if(args){DlRecordCache.call(this,args);}};eval(Dynarch.EXPORT("MailServerCache"));P.fetch_all=function(callback,obj){return XuhekiRPC_push(function(ret){var all=[];Mail.must_change_pass=ret.user.must_change_pass;ret.servers.foreach(function(s){s=new MailServer({recordSet:this,data:s});this.insert(s,s.get("order"));all.push(s);},this);if(callback)
callback.call(obj,all);}.$(this),"apache.get_servers");};P.unregister=function(id,callback,obj){return XuhekiRPC_push(function(ret){ret.foreach(this.remove,this);if(callback)
callback.call(obj,ret);}.$(this),"apache.delete_server",id);};})();(function(){MailFolderCache.inherits(DlRecordCache);function MailFolderCache(args){if(args){D.setDefaults(this,args);DlRecordCache.call(this,args);}};eval(Dynarch.EXPORT("MailFolderCache"));D.DEFAULT_ARGS={_server_id:["server_id",null],server:["server",null]};P.get=function(id){return this._data[id.toLowerCase()];};P.remove=function(id){return D.BASE.remove.call(this,id.toLowerCase());};P.getTopParent=function(parent){var a=parent.split(this.server.separator_re);while(a.length>0){parent=this.get(a.join(this.server.get("separator")));if(parent)
return parent;a.pop();}};})();(function(){MailIdentity.inherits(DlRecord);function MailIdentity(args){if(args){if(!args.data.id){args.data.id=Dynarch.ID("MailIdentity");}
DlRecord.call(this,args);};};eval(Dynarch.EXPORT("MailIdentity"));P.getFullAddress=function(){return this.get("name")+" <"+this.get("email")+">";};P.getDisplayLabel=P.getFullAddress;})();(function(){MailIdentityCache.inherits(MailObjectCache);function MailIdentityCache(args){if(args){args.object_type=MailIdentity;args.requests={fetch_all:"apache.get_identities",save:"apache.save_identities",remove:"apache.delete_identities"};args.search_fields=["email","to_rules","name"];MailObjectCache.call(this,args);}};eval(Dynarch.EXPORT("MailIdentityCache"));P.formatHTML=function(rec,col,buf){if(col=="_grid_display"){buf(rec.get("name")," &lt;<tt>",rec.get("email"),"</tt>&gt;");}else{D.BASE.formatHTML.apply(this,arguments);}};P.getByServer=function(server_id){return this.getAllRecords().grep(function(rec){return rec.get("server")==server_id;});};})();(function(){var CHUNK_SIZE=250;var MSG_FIELDS="id date size subject to from reply_to has_attachments flags folder server";MailCache.prototype.index_xedni=function(progress,cont){XuhekiRPC(function(ids){var len=ids.length;var doit=function(){if(ids.length>0){if(progress&&progress(1-ids.length/len)){cont&&cont();}else{XuhekiRPC(doit,"mail.xedni_index",this._server_id,this._folder_id,ids.splice(0,Math.min(CHUNK_SIZE,ids.length)));}}else{progress&&progress(1);cont&&cont();}}.$(this);doit();}.$(this),"mail.xedni_get_missing_ids",this._server_id,this._folder_id);};function on_contactSelected(form,data){var val=this.getValue();val=val.replace(/,\s*$/,"");this.setValue(val);Mail.Xedni_Search(data.email,data.contact);};function on_ENTER(){var email=this.getValue();if(/<(.*?)>/.test(email))
email=RegExp.$1;Mail.Xedni_Search(email);};Mail.Xedni_OpenMessage=function(link,ev){var msg_uid=link.getAttribute("xedni-uid");var server_id=link.getAttribute("xedni-server");var folder_id=link.getAttribute("xedni-folder");if(ev.shiftKey){Mail.openMessageInDialog(server_id,folder_id,msg_uid);}else{Mail.selectMessage(server_id,folder_id,msg_uid);}
return false;};var TMPL_MSG_LINK=String.template('<a href="#" onclick="return Mail.Xedni_OpenMessage(this, event)" xedni-uid="$id" xedni-server="$server" xedni-folder="$folder">$subject</a>');var TMPL_CONTACT_INFO=function(args){return $msgProps("xedni-contactInfo",args);};function msgLink(a){var m={};MailCache.arrayToHash(a,m,MSG_FIELDS);m.subject=m.subject?m.subject.htmlEscape():$msg("nosubject");m.folder=m.folder.htmlEscape().replace(/\x22/g,"&quot;");return TMPL_MSG_LINK(m);};var TMPL_ATTC_LINK=String.template('<a target="_blank" type="$mimetype" href="$url"'," onclick='if (!this.swURL)this.swURL=this.href;this.href=swApp.syncSWorld.xuhekiGetDocRequestURL(this.swURL);'",'>$filename</a>',' ','(<a href="#" onclick="return Mail.Xedni_OpenMessage(this, event)" ','xedni-uid="$message" xedni-server="$server" xedni-folder="$folder"','>',$msg("ViewMessage"),'</a>)');function attcLink(a){var hash={};MailCache.arrayToHash(a.message,hash,MSG_FIELDS);a.filename=a.filename.htmlEscape();return TMPL_ATTC_LINK({message:hash.id,server:hash.server,folder:hash.folder,filename:a.filename,mimetype:a.mimetype,url:swApp.syncSWorld.xuhekiGetDocRequestURL(Mail.getURL("/msgpart/"+a.part+"/"+a.filename))});};var TMPL_CONTACT_LINK=String.template("<a dynarchtoken='email' href='mailto:$email' data='$email'>$email</a>"," (<a dynarchtoken='email' href='mailto:$email' data='$email'>$name</a>)");var TMPL_EMAIL_LINK=String.template("<a dynarchtoken='email' href='mailto:$email' data='$email'>$name</a>");function contactLink(email){var contact=swApp.contactCache.getByEmail(email);var name=contact?contact.getFullName():email;return(contact?TMPL_CONTACT_LINK:TMPL_EMAIL_LINK)({email:email.htmlEscape(),name:name.htmlEscape()});};Mail._xedniPrev=function(link,ev,type,divid,offset){getMore(type,divid,offset-10);return false;};Mail._xedniNext=function(link,ev,type,divid,offset){getMore(type,divid,offset+10);return false;};function getMore(type,divid,offset){XuhekiRPC(function(ret){var attr=Object.makeCopy(PANE_ATTRS[type]);attr.list=ret.list;attr.len=ret.count;$(divid).innerHTML=getPaneHtml(attr,divid,offset);},"apache.xedni_get_more_data",$current_search,offset,type);};function getPaneHtml(attr,divid,offset){var html=String.buffer();function head(cls){html("<div class='",cls,"'>");html("<div class='right'>");html($msgProps(attr.msgCount,{start:offset+1,stop:Math.min(attr.len,offset+10),psize:10,count:attr.len}));html("</div>");if(offset>=10)
html("<a href='#' onclick='return Mail._xedniPrev(this, event, \"",attr.type,"\", \"",divid,"\", ",offset,")'>");html($msg("prev"));if(offset>=10)
html("</a>");html(" | ");if(offset+10<attr.len)
html("<a href='#' onclick='return Mail._xedniNext(this, event, \"",attr.type,"\", \"",divid,"\", ",offset,")'>");html($msg("next"));if(offset+10<attr.len)
html("</a>");html("</div>");};head("XedniPrevNextHead XedniPrevNextHead-top");html("<ul>");attr.list.foreach(function(m){html("<li>",attr.makeLink(m),"</li>");});html("</ul>");head("XedniPrevNextHead XedniPrevNextHead-bottom");return html.get();};function makePanel(attr){var html=String.buffer();if(attr.len==0){html($msgProps(attr.msgNone,{partner:attr.partnerName}));}else{var divid=Dynarch.ID();html("<div id='",divid,"'>");html(getPaneHtml(attr,divid,0));html("</div>");}
return html.get();};var PANE_ATTRS={MailFrom:{type:"MailFrom",msgNone:"NoMailFrom",msgCount:"NP_emails",makeLink:msgLink},MailTo:{type:"MailTo",msgNone:"NoMailTo",msgCount:"NP_emails",makeLink:msgLink},AttcFrom:{type:"AttcFrom",msgNone:"NoAttcFrom",msgCount:"NP_files",makeLink:attcLink},AttcTo:{type:"AttcTo",msgNone:"NoAttcTo",msgCount:"NP_files",makeLink:attcLink}};Mail.Xedni_Search=function(email,contact){if(!contact){contact=swApp.contactCache.getByEmail(email);$form.getField("contact").setValue(email);}
var partnerName=email;if(contact){var name=contact.getFullName();var prefix=contact.get("personalTitle");if(prefix){name=prefix+" "+name;}
$contact_info.setContent(TMPL_CONTACT_INFO({name:name,phone:contact.getPhone(),img:contact.getIconURL()}));if(!$contact_info.display()){$contact_info.display(true);$layout.doLayout();}
partnerName=contact.getFullName();email=contact.getEmailArray();}else{if($contact_info.display()){$contact_info.display(false);$layout.doLayout();}}
if(!(email instanceof Array))
email=[email];$current_search=email;XuhekiRPC(function(data){var attr;$tabs.getNotebook().getAllPanes().map("destroyChildWidgets");attr=Object.makeCopy(PANE_ATTRS.MailFrom);Object.merge(attr,{len:data.len_mail_from,list:data.mail_from,partnerName:partnerName});$mail_from_cont.setContent(makePanel(attr));attr=Object.makeCopy(PANE_ATTRS.MailTo);Object.merge(attr,{len:data.len_mail_to,list:data.mail_to,partnerName:partnerName});$mail_to_cont.setContent(makePanel(attr));attr=Object.makeCopy(PANE_ATTRS.AttcFrom);Object.merge(attr,{len:data.len_attc_from,list:data.attc_from,partnerName:partnerName});$attc_from_cont.setContent(makePanel(attr));attr=Object.makeCopy(PANE_ATTRS.AttcTo);Object.merge(attr,{len:data.len_attc_to,list:data.attc_to,partnerName:partnerName});$attc_to_cont.setContent(makePanel(attr));if(data.social){var html=String.buffer();html("<ul>");data.social.foreach(function(email){html("<li>",contactLink(email),"</li>");});html("</ul>");$social_cont.setContent(html.get());}else{$social_cont.setContent($msg("NoRelatedContacts"));}
createTokenWidgets();},"apache.xedni_get_index_data",email);};var $form;var $top_cont;var $layout;var $contact_info;var $was_displayed=false;var $tabs;var $current_search;var $mail_from_cont;var $mail_to_cont;var $attc_from_cont;var $attc_to_cont;var $social_cont;Mail.Xedni_CreateUI=function(){$top_cont=new DlContainer({className:"MailPane XedniCont"});$layout=new DlLayout({parent:$top_cont,outerSpace:3});$form=new MailGenericForm({fields:[{id:"contact",label:"Contact&:",type:"c_entry",complete:Mail.contacts_cache.autocomplete,onSelect:on_contactSelected,"onKey-ENTER":on_ENTER}]});$contact_info=new DlContainer({});$contact_info.display(false);$tabs=new DlTabs({className:"XedniTabs"});$mail_from_cont=new DlContainer({scroll:true,className:"XedniMailCont XedniMailFrom"});$mail_to_cont=new DlContainer({scroll:true,className:"XedniMailCont XedniMailTo"});$attc_from_cont=new DlContainer({scroll:true,className:"XedniAttcCont XedniAttcFrom"});$attc_to_cont=new DlContainer({scroll:true,className:"XedniAttcCont XedniAttcTo"});$social_cont=new DlContainer({scroll:true,className:"XedniSocialCont"});$tabs.setTabAlign("center");$tabs.addTab($mail_from_cont,$msg("MailFrom"));$tabs.addTab($mail_to_cont,$msg("MailTo"));$tabs.addTab($attc_from_cont,$msg("AttcFrom"));$tabs.addTab($attc_to_cont,$msg("AttcTo"));$tabs.addTab($social_cont,$msg("Related"));$tabs.showPane(0);$layout.packWidget($form,{pos:"top"});$layout.packWidget($tabs,{pos:"bottom",fill:"*"});$layout.packWidget($contact_info,{pos:"bottom"});$layout.setSize({y:300});return $top_cont;};function createTokenWidgets(){$tabs.getNotebook().getAllPanes().foreach(function(pane){Array.$(pane.getElement().getElementsByTagName("*")).foreach(function(el){var type=el.getAttribute("dynarchtoken");if(type){var w=new WMailTokenWidget({parent:pane,element:el,type:type,data:el.getAttribute("data")});}});});};})();(function(){MailObjectCombo.inherits(DlComboBox);function MailObjectCombo(args){if(args){D.setDefaults(this,args);DlComboBox.call(this,args);this.addEventListener({onMouseUp:function(){this.select();DlException.stopEventBubbling();},onSelect:function(sel){this._oid=sel.oid;},onKeyPress:function(ev){if(ev.keyCode==DlKeyboard.ENTER||ev.keyCode==DlKeyboard.ARROW_DOWN||ev.keyCode==DlKeyboard.ARROW_UP){this._forcePopup();}}});}};eval(Dynarch.EXPORT("MailObjectCombo"));D.DEFAULT_ARGS={_options:["data",null]};P.doCompletion=function(range){var val="";var field_val=this.getValue();if(range){val=field_val;if(!val){this.cancelCompletion();return;}}
val=val.trim().toLowerCase();var cache=this._options;var words=val?val.replace(/\s+/g," ").replace(/[^A-Za-z0-9_:+=\x2f\x2a\x20-]+/g,"").trim().split(/\s+/):null;if(words&&(words.length==0||!words[0]))
words=null;var words_re=words?new RegExp("\\b("+words.join("|")+")","ig"):null;cache.getRecords(cache.getAllIds(),function(a){var comp=[];a.foreach(function(obj){var add_it=true;var label=obj.getDisplayLabel();var completion=label;if(words){words.foreach(function(val){var re=new RegExp("\\b"+val,"i");if(!re.test(label)){add_it=false;$BREAK();}});}
if(add_it){label=words_re?label.highlightWords(words_re):label.htmlEscape();comp.push({label:label,start:0,completion:completion,nomodify:true,oid:obj.id(),selected:completion==field_val});}});if(comp.length>0){this.completionReady(comp);}else{this.cancelCompletion();}},this);};})();DlDesktop.prototype._handle_focusKeys=function(ev){if(!ev.altKey&&!ev.ctrlKey){if(ev.keyCode==DlKeyboard.TAB){var w=ev.focusedWidget;w=ev.shiftKey?this.getPrevFocusWidget(w):this.getNextFocusWidget(w);if(w)
w.focus();ev.domStop=true;DlException.stopEventBubbling();}}
this._handleKeybinding(ev);};DlButton.prototype.xhk_busy=function(busy){this.disabled(busy);this.condClass(busy,"BusyButton");};DlEntry.removeComma=function(form){this.setValue(this.getValue().replace(/\s*[,;]\s*$/,""));};function $ACL(b){var a=Array.$(arguments,1);a.unshift("onClick");if(b instanceof Array){b.foreach(function(b){b.addEventListener.apply(b,a);});}else{b.addEventListener.apply(b,a);}};function $BUTTON(parent,label,width,onclick){label=$msg(label);if(width)
label=$W(label,width);var btn=new DlButton({parent:parent,label:label,focusable:true});if(onclick)
btn.addEventListener("onClick",onclick);return btn;};function $W(str,width){if(!width)
width="7em";else if(/^[0-9]+$/.test(width))
width+="em";return str.fixedWidth(width);};function $AK(str,key){return str.replace(new RegExp("("+key+")","i"),"<u>$1</u>");};function $V_SEP(parent){return new DlWidget({parent:parent,className:"Dl-Vertical-Separator"});};function $H_SEP(parent){return new DlWidget({parent:parent,className:"Dl-Horizontal-Separator"});};function $smsg(msg){if(msg){var m=/^=\s*/.exec(msg);if(m)msg=msg.substr(m[0].length);else msg=$msg(msg);}
return msg||null;};function $makeMenus(items,ids,handler){var menu=new DlVMenu({});items.foreach(function(item){var w;if(item==null){menu.addSeparator();}else if(item.widget){menu.appendWidget(item.widget);}else{if(typeof item=="string")
item={id:item};var tmp=item.l||item.id;var label=$msg(tmp)||tmp;w=new DlMenuItem({parent:menu,label:label,iconClass:item.i,data:item});if(ids){ids[item.id]=w;}
var h=item.h||handler;if(h)
w.addEventListener("onSelect",h.$(w,item.id,item));if(item.s){if(item.s instanceof DlWidget||item.s instanceof Function){w.setMenu(item.s);}else if(item.s instanceof Array){w.setMenu($makeMenus(item.s,ids));}}}});return menu;};Mail.splitTabbedAddress=function(addr){return addr.replace(/\t+/g,", ");};Date.formatNice=function(date){var today=new Date();if(today.dateEqualsTo(date)){return date.print("%I:%M%P");}
today.setHours(0);today.setMinutes(0);today.setSeconds(0);var diff=today.getTime()-date.getTime();if(diff<Date.DAY){return date.print("<i>Yesterday</i> %I:%M%P");}
if(diff<2*Date.DAY){return date.print("<i>2 days ago</i> %I:%M%P");}
if(diff<3*Date.DAY){return date.print("<i>3 days ago</i> %I:%M%P");}
if(diff<4*Date.DAY){return date.print("<i>4 days ago</i> %I:%M%P");}
if(today.getFullYear()==date.getFullYear()){return date.print("%b %e, %I:%M%P");}
return date.print("%Y/%m/%d %I:%M%P");};String.prototype.quote=function(){return'"'+this.replace(/\x5c/,"\\\\").replace(/\x22/,"\\\"")+'"';};var Showdown={};Showdown.converter=function(){var g_urls;var g_titles;var g_html_blocks;var g_list_level=0;this.makeHtml=function(text){g_urls=new Array();g_titles=new Array();g_html_blocks=new Array();text=text.replace(/~/g,"~T");text=text.replace(/\$/g,"~D");text=text.replace(/\r\n/g,"\n");text=text.replace(/\r/g,"\n");text="\n\n"+text+"\n\n";text=_Detab(text);text=text.replace(/^[\x20\t]+$/mg,"");text=_HashHTMLBlocks(text);text=_StripLinkDefinitions(text);text=_RunBlockGamut(text);text=_UnescapeSpecialChars(text);text=text.replace(/~D/g,"$$");text=text.replace(/~T/g,"~");return text;};var _StripLinkDefinitions=function(text){text=text.replace(/^[\x20]{0,3}\[(.+)\]:[\x20\t]*\n?[\x20\t]*<?(\S+?)>?[\x20\t]*\n?[\x20\t]*(?:(\n*)[\x22(](.+?)[\x22)][\x20\t]*)?(?:\n+|\Z)/gm,function(wholeMatch,m1,m2,m3,m4){m1=m1.toLowerCase();g_urls[m1]=_EncodeAmpsAndAngles(m2);if(m3){return m3+m4;}else if(m4){g_titles[m1]=m4.replace(/\x22/g,"&quot;");}
return"";});return text;};var _HashHTMLBlocks=function(text){text=text.replace(/\n/g,"\n\n");var block_tags_a="p|div|h[1-6]|blockquote|pre|table|dl|ol|ul|script|noscript|form|fieldset|iframe|math|ins|del";var block_tags_b="p|div|h[1-6]|blockquote|pre|table|dl|ol|ul|script|noscript|form|fieldset|iframe|math";text=text.replace(/^(<(p|div|h[1-6]|blockquote|pre|table|dl|ol|ul|script|noscript|form|fieldset|iframe|math|ins|del)\b[^\r]*?\n<\x2f\2>[\x20\t]*(?=\n+))/gm,hashElement);text=text.replace(/^(<(p|div|h[1-6]|blockquote|pre|table|dl|ol|ul|script|noscript|form|fieldset|iframe|math)\b[^\r]*?.*<\x2f\2>[\x20\t]*(?=\n+)\n)/gm,hashElement);text=text.replace(/(\n[\x20]{0,3}(<(hr)\b([^<>])*?\x2f?>)[\x20\t]*(?=\n{2,}))/g,hashElement);text=text.replace(/(\n\n[\x20]{0,3}<!(--[^\r]*?--\s*)+>[\x20\t]*(?=\n{2,}))/g,hashElement);text=text.replace(/(?:\n\n)([\x20]{0,3}(?:<([?%])[^\r]*?\2>)[\x20\t]*(?=\n{2,}))/g,hashElement);text=text.replace(/\n\n/g,"\n");return text;};var hashElement=function(wholeMatch,m1){var blockText=m1;blockText=blockText.replace(/\n\n/g,"\n");blockText=blockText.replace(/^\n/,"");blockText=blockText.replace(/\n+$/g,"");blockText="\n\n~K"+(g_html_blocks.push(blockText)-1)+"K\n\n";return blockText;};var _RunBlockGamut=function(text){text=_DoHeaders(text);var key=hashBlock("<hr />");text=text.replace(/^[\x20]{0,2}([\x20]?\*[\x20]?){3,}[\x20\t]*$/gm,key);text=text.replace(/^[\x20]{0,2}([\x20]?\-[\x20]?){3,}[\x20\t]*$/gm,key);text=text.replace(/^[\x20]{0,2}([\x20]?\_[\x20]?){3,}[\x20\t]*$/gm,key);text=_DoLists(text);text=_DoCodeBlocks(text);text=_DoBlockQuotes(text);text=_HashHTMLBlocks(text);text=_FormParagraphs(text);return text;};var _RunSpanGamut=function(text){text=_DoCodeSpans(text);text=_EscapeSpecialCharsWithinTagAttributes(text);text=_EncodeBackslashEscapes(text);text=_DoImages(text);text=_DoAnchors(text);text=_DoAutoLinks(text);text=_EncodeAmpsAndAngles(text);text=_DoItalicsAndBold(text);text=text.replace(/\x20\x20+\n/g," <br />\n");return text;};var _EscapeSpecialCharsWithinTagAttributes=function(text){var regex=/(<[a-z\x2f!$](\x22[^\x22]*\x22|\x27[^\x27]*\x27|[^\x27\x22>])*>|<!(--.*?--\s*)+>)/gi;text=text.replace(regex,function(wholeMatch){var tag=wholeMatch.replace(/(.)<\x2f?code>(?=.)/g,"$1`");tag=escapeCharacters(tag,"\\`*_");return tag;});return text;};var _DoAnchors=function(text){text=text.replace(/(\[((?:\[[^\]]*\]|[^\[\]])*)\][\x20]?(?:\n[\x20]*)?\[(.*?)\])()()()()/g,writeAnchorTag);text=text.replace(/(\[((?:\[[^\]]*\]|[^\[\]])*)\]\([\x20\t]*()<?(.*?)>?[\x20\t]*(([\x27\x22])(.*?)\6[\x20\t]*)?\))/g,writeAnchorTag);text=text.replace(/(\[([^\[\]]+)\])()()()()()/g,writeAnchorTag);return text;};var writeAnchorTag=function(wholeMatch,m1,m2,m3,m4,m5,m6,m7){if(m7==undefined)m7="";var whole_match=m1;var link_text=m2;var link_id=m3.toLowerCase();var url=m4;var title=m7;if(url==""){if(link_id==""){link_id=link_text.toLowerCase().replace(/\x20?\n/g," ");}
url="#"+link_id;if(g_urls[link_id]!=undefined){url=g_urls[link_id];if(g_titles[link_id]!=undefined){title=g_titles[link_id];}}
else{if(whole_match.search(/\(\s*\)$/m)>-1){url="";}else{return whole_match;}}}
url=escapeCharacters(url,"*_");var result="<a href=\""+url+"\"";if(title!=""){title=title.replace(/\x22/g,"&quot;");title=escapeCharacters(title,"*_");result+=" title=\""+title+"\"";}
result+=">"+link_text+"</a>";return result;};var _DoImages=function(text){text=text.replace(/(!\[(.*?)\][\x20]?(?:\n[\x20]*)?\[(.*?)\])()()()()/g,writeImageTag);text=text.replace(/(!\[(.*?)\]\s?\([\x20\t]*()<?(\S+?)>?[\x20\t]*(([\x27\x22])(.*?)\6[\x20\t]*)?\))/g,writeImageTag);return text;};var writeImageTag=function(wholeMatch,m1,m2,m3,m4,m5,m6,m7){var whole_match=m1;var alt_text=m2;var link_id=m3.toLowerCase();var url=m4;var title=m7;if(!title)title="";if(url==""){if(link_id==""){link_id=alt_text.toLowerCase().replace(/\x20?\n/g," ");}
url="#"+link_id;if(g_urls[link_id]!=undefined){url=g_urls[link_id];if(g_titles[link_id]!=undefined){title=g_titles[link_id];}}
else{return whole_match;}}
alt_text=alt_text.replace(/\x22/g,"&quot;");url=escapeCharacters(url,"*_");var result="<img src=\""+url+"\" alt=\""+alt_text+"\"";title=title.replace(/\x22/g,"&quot;");title=escapeCharacters(title,"*_");result+=" title=\""+title+"\"";result+=" />";return result;};var _DoHeaders=function(text){text=text.replace(/^(.+)[\x20\t]*\n=+[\x20\t]*\n+/gm,function(wholeMatch,m1){return hashBlock("<h1>"+_RunSpanGamut(m1)+"</h1>");});text=text.replace(/^(.+)[\x20\t]*\n-+[\x20\t]*\n+/gm,function(matchFound,m1){return hashBlock("<h2>"+_RunSpanGamut(m1)+"</h2>");});text=text.replace(/^(\#{1,6})[\x20\t]*(.+?)[\x20\t]*\#*\n+/gm,function(wholeMatch,m1,m2){var h_level=m1.length;return hashBlock("<h"+h_level+">"+_RunSpanGamut(m2)+"</h"+h_level+">");});return text;};var _ProcessListItems;var _DoLists=function(text){text+="~0";var whole_list=/^(([\x20]{0,3}([*+-]|\d+[.])[\x20\t]+)[^\r]+?(~0|\n{2,}(?=\S)(?![\x20\t]*(?:[*+-]|\d+[.])[\x20\t]+)))/gm;if(g_list_level){text=text.replace(whole_list,function(wholeMatch,m1,m2){var list=m1;var list_type=(m2.search(/[*+-]/g)>-1)?"ul":"ol";list=list.replace(/\n{2,}/g,"\n\n\n");;var result=_ProcessListItems(list);result=result.replace(/\s+$/,"");result="<"+list_type+">"+result+"</"+list_type+">\n";return result;});}else{whole_list=/(\n\n|^\n?)(([\x20]{0,3}([*+-]|\d+[.])[\x20\t]+)[^\r]+?(~0|\n{2,}(?=\S)(?![\x20\t]*(?:[*+-]|\d+[.])[\x20\t]+)))/g;text=text.replace(whole_list,function(wholeMatch,m1,m2,m3){var runup=m1;var list=m2;var list_type=(m3.search(/[*+-]/g)>-1)?"ul":"ol";list=list.replace(/\n{2,}/g,"\n\n\n");var result=_ProcessListItems(list);result=runup+"<"+list_type+">\n"+result+"</"+list_type+">\n";return result;});}
text=text.replace(/~0/,"");return text;};_ProcessListItems=function(list_str){g_list_level++;list_str=list_str.replace(/\n{2,}$/,"\n");list_str+="~0";list_str=list_str.replace(/(\n)?(^[\x20\t]*)([*+-]|\d+[.])[\x20\t]+([^\r]+?(\n{1,2}))(?=\n*(~0|\2([*+-]|\d+[.])[\x20\t]+))/gm,function(wholeMatch,m1,m2,m3,m4){var item=m4;var leading_line=m1;var leading_space=m2;if(leading_line||(item.search(/\n{2,}/)>-1)){item=_RunBlockGamut(_Outdent(item));}
else{item=_DoLists(_Outdent(item));item=item.replace(/\n$/,"");item=_RunSpanGamut(item);}
return"<li>"+item+"</li>\n";});list_str=list_str.replace(/~0/g,"");g_list_level--;return list_str;};var _DoCodeBlocks=function(text){text+="~0";text=text.replace(/(?:\n\n|^)((?:(?:[\x20]{4}|\t).*\n+)+)(\n*[\x20]{0,3}[^\x20\t\n]|(?=~0))/g,function(wholeMatch,m1,m2){var codeblock=m1;var nextChar=m2;codeblock=_EncodeCode(_Outdent(codeblock));codeblock=_Detab(codeblock);codeblock=codeblock.replace(/^\n+/g,"");codeblock=codeblock.replace(/\n+$/g,"");codeblock="<pre><code>"+codeblock+"\n</code></pre>";return hashBlock(codeblock)+nextChar;});text=text.replace(/~0/,"");return text;};var hashBlock=function(text){text=text.replace(/(^\n+|\n+$)/g,"");return"\n\n~K"+(g_html_blocks.push(text)-1)+"K\n\n";};var _DoCodeSpans=function(text){text=text.replace(/(^|[^\\])(`+)([^\r]*?[^`])\2(?!`)/gm,function(wholeMatch,m1,m2,m3,m4){var c=m3;c=c.replace(/^([\x20\t]*)/g,"");c=c.replace(/[\x20\t]*$/g,"");c=_EncodeCode(c);return m1+"<code>"+c+"</code>";});return text;};var _EncodeCode=function(text){text=text.replace(/&/g,"&amp;");text=text.replace(/</g,"&lt;");text=text.replace(/>/g,"&gt;");text=escapeCharacters(text,"\*_{}[]\\",false);return text;};var _DoItalicsAndBold=function(text){text=text.replace(/(\*\*|__)(?=\S)([^\r]*?\S[*_]*)\1/g,"<strong>$2</strong>");text=text.replace(/(\*|_)(?=\S)([^\r]*?\S)\1/g,"<em>$2</em>");return text;};var _DoBlockQuotes=function(text){text=text.replace(/((^[\x20\t]*>[\x20\t]?.+\n(.+\n)*\n*)+)/gm,function(wholeMatch,m1){var bq=m1;bq=bq.replace(/^[\x20\t]*>[\x20\t]?/gm,"~0");bq=bq.replace(/~0/g,"");bq=bq.replace(/^[\x20\t]+$/gm,"");bq=_RunBlockGamut(bq);bq=bq.replace(/(^|\n)/g,"$1  ");bq=bq.replace(/(\s*<pre>[^\r]+?<\x2fpre>)/gm,function(wholeMatch,m1){var pre=m1;pre=pre.replace(/^\x20\x20/mg,"~0");pre=pre.replace(/~0/g,"");return pre;});return hashBlock("<blockquote>\n"+bq+"\n</blockquote>");});return text;};var _FormParagraphs=function(text){text=text.replace(/^\n+/g,"");text=text.replace(/\n+$/g,"");var grafs=text.split(/\n{2,}/g);var grafsOut=new Array();var end=grafs.length;for(var i=0;i<end;i++){var str=grafs[i];if(str.search(/~K(\d+)K/g)>=0){grafsOut.push(str);}
else if(str.search(/\S/)>=0){str=_RunSpanGamut(str);str=str.replace(/^([\x20\t]*)/g,"<p>");str+="</p>";grafsOut.push(str);}}
end=grafsOut.length;for(i=0;i<end;i++){while(grafsOut[i].search(/~K(\d+)K/)>=0){var blockText=g_html_blocks[RegExp.$1];blockText=blockText.replace(/\$/g,"$$$$");grafsOut[i]=grafsOut[i].replace(/~K\d+K/,blockText);}}
return grafsOut.join("\n\n");};var _EncodeAmpsAndAngles=function(text){text=text.replace(/&(?!#?[xX]?(?:[0-9a-fA-F]+|\w+);)/g,"&amp;");text=text.replace(/<(?![a-z\x2f?\$!])/gi,"&lt;");return text;};var _EncodeBackslashEscapes=function(text){text=text.replace(/\\(\\)/g,escapeCharacters_callback);text=text.replace(/\\([`*_{}\[\]()>#+-.!])/g,escapeCharacters_callback);return text;};var _DoAutoLinks=function(text){text=text.replace(/<((https?|ftp|dict):[^\x27\x22>\s]+)>/gi,"<a href=\"$1\">$1</a>");text=text.replace(/<(?:mailto:)?([-.\w]+\@[-a-z0-9]+(\.[-a-z0-9]+)*\.[a-z]+)>/gi,function(wholeMatch,m1){return _EncodeEmailAddress(_UnescapeSpecialChars(m1));});return text;};var _EncodeEmailAddress=function(addr){function char2hex(ch){var hexDigits='0123456789ABCDEF';var dec=ch.charCodeAt(0);return(hexDigits.charAt(dec>>4)+hexDigits.charAt(dec&15));}
var encode=[function(ch){return"&#"+ch.charCodeAt(0)+";";},function(ch){return"&#x"+char2hex(ch)+";";},function(ch){return ch;}];addr="mailto:"+addr;addr=addr.replace(/./g,function(ch){if(ch=="@"){ch=encode[Math.floor(Math.random()*2)](ch);}else if(ch!=":"){var r=Math.random();ch=(r>.9?encode[2](ch):r>.45?encode[1](ch):encode[0](ch));}
return ch;});addr="<a href=\""+addr+"\">"+addr+"</a>";addr=addr.replace(/\x22>.+:/g,"\">");return addr;};var _UnescapeSpecialChars=function(text){text=text.replace(/~E(\d+)E/g,function(wholeMatch,m1){var charCodeToReplace=parseInt(m1);return String.fromCharCode(charCodeToReplace);});return text;};var _Outdent=function(text){text=text.replace(/^(\t|[\x20]{1,4})/gm,"~0");text=text.replace(/~0/g,"");return text;};var _Detab=function(text){text=text.replace(/\t(?=\t)/g,"    ");text=text.replace(/\t/g,"~A~B");text=text.replace(/~B(.+?)~A/g,function(wholeMatch,m1,m2){var leadingText=m1;var numSpaces=4-leadingText.length%4;for(var i=0;i<numSpaces;i++)leadingText+=" ";return leadingText;});text=text.replace(/~A/g,"    ");text=text.replace(/~B/g,"");return text;};var escapeCharacters=function(text,charsToEscape,afterBackslash){var regexString="(["+charsToEscape.replace(/([\[\]\\])/g,"\\$1")+"])";if(afterBackslash){regexString="\\\\"+regexString;}
var regex=new RegExp(regexString,"g");text=text.replace(regex,escapeCharacters_callback);return text;};var escapeCharacters_callback=function(wholeMatch,m1){var charCodeToEscape=m1.charCodeAt(0);return"~E"+charCodeToEscape+"E";};};String.prototype.html_to_text=function(){var links=[];var links_by_url={};var prefix=[];var wrap_col=72;var list_type=[];var LINES=[];var RE_WRAP=new RegExp("^(.{0,"+wrap_col+"})(\\s+|$)(.*)");var NOWRAP=0;var CURRENT_MARGIN=0;var MARGINS={address:2,blockquote:2,div:1,dl:2,dt:1,h1:2,h2:2,h3:2,h4:2,h5:2,h6:2,hr:2,li:1,ol:2,p:2,pre:2,table:2,ul:2};var handlers={b:do_bold,strong:do_bold,i:do_italic,em:do_italic,pre:do_pre,address:do_address,a:do_link,h1:do_heading.$C(1),h2:do_heading.$C(2),h3:do_heading.$C(3),h4:do_heading.$C(4),h5:do_heading.$C(5),h6:do_heading.$C(6),ol:do_list.$C("ol"),ul:do_list.$C("ul"),li:do_list_item,br:do_br,hr:do_hr,blockquote:do_blockquote};var str=this.replace(/\s*<(\x2f?(br|p|blockquote|div|tr|td|table|li|ol|ul|dl|dd|dt|address|h[1-6])\b[^>]*)>\s*/g,"<$1>");var top_node=document.createElement("div");top_node.innerHTML=str;walk(top_node);var output=String.buffer();LINES.foreach(function(line,i){output(LINES[i],"\n");});output=String.buffer(output.get().trim(true),"\n\n");links.foreach(function(link){output(" ".x(3-link.id.length),"[",link.id,"]: ",link.url,"\n");});return output.get().trim(true);function _real_newline(keep){var line=get_prefix(keep);LINES.push(line);return line;};function _do_add_wrap(str){apply_margin();var line=LINES.length>0?LINES.peek():_real_newline();if(line=="")
line=get_prefix();var orig=line;var tmp=line+str;if(tmp.length>wrap_col){var m=RE_WRAP.exec(tmp);if(m&&m[1].length>orig.length){LINES[LINES.length-1]=m[1];if(/\S/.test(m[3])){_real_newline();_do_add_wrap(m[3]);}
return;}}
LINES[LINES.length-1]=tmp;};function get_prefix(keep){var p="",len=prefix.length;if(len>0){var last=prefix[len-1];if(last instanceof Array){prefix[len-1]=last[0];p=prefix.join("");if(!keep)
last.shift();if(last.length>0)
prefix[len-1]=last;}else{p=prefix.join("");}}
return p;};function push_prefix(p){prefix.push(p);};function pop_prefix(){prefix.pop();};function add_nowrap(str){apply_margin();str=str.replace(/^(\s*\n)+/g,"").replace(/(\s*\n)+$/g,"").trim(true);var line=LINES.length>0?LINES.peek():_real_newline();var p=get_prefix();line+=str.split(/\n/).map(function(line){return p+line;}).join("\n");LINES[LINES.length-1]=line;};function add(){Array.$(arguments).foreach(function(str){str=str.replace(/^(\s*\n)+/g,"").replace(/(\s*\n)+$/g,"").replace(/\n+/g," ");_do_add_wrap(str);});};function set_margin(n){CURRENT_MARGIN=Math.max(CURRENT_MARGIN,n);};function apply_margin(){if(CURRENT_MARGIN>1){(CURRENT_MARGIN-1).times(function(){LINES.push("");});}
CURRENT_MARGIN=0;};function do_bold(){add("**")};function do_italic(){add("*")};function do_underline(){add("_")};function do_pre(start){if(start){push_prefix("    ");}else{pop_prefix();}};function do_address(start){if(start){push_prefix("    ");add("--");LINES.push("");}else{pop_prefix();}};function do_link(start,el,id){if(!NOWRAP){if(start){id=links_by_url[el.href];if(!id){links_by_url[el.href]=id=String(links.length+1);links.push({id:id,url:el.href});}
add("[");return id;}else{add("][",id,"]");}}};function do_list(type,start){if(start){push_prefix("  ");list_type.push({type:type,index:0});}else{list_type.pop();pop_prefix();}};function do_list_item(start){var list=list_type.peek();if(start){if(list.type=="ul"){push_prefix(["- ","  "]);}else if(list.type="ol"){var p=(list.index+1)+". ";push_prefix([p," ".x(p.length)]);}
list.index++;}else{if(/^[uo]l/.test(list.type))
pop_prefix();}};function do_heading(n,start,node,p){if(start){p="#".x(n);add(p," ");return p;}else{add(" ",p);}};function do_blockquote(start){if(start){push_prefix("> ");}else{pop_prefix();}};function do_br(start,node){if(start&&node.className!="DynarchMail-PlainTextNewline")
LINES.push("");};function do_hr(start){if(start)
add("* * * * *");};function walk(node){switch(node.nodeType){case 1:var tag=node.tagName.toLowerCase(),f=handlers[tag],ret,i,block,nw=/pre|address/.test(tag),margin=MARGINS[tag];if(DlHtmlUtils.isBlockElement(node)&&LINES.peek()!="")
LINES.push("");if(f)
ret=f(true,node);if(nw)
NOWRAP++;for(i=node.firstChild;i;i=i.nextSibling)
walk(i);if(nw)
NOWRAP--;if(f)
f(false,node,ret);if(margin)
set_margin(margin);break;case 3:if(NOWRAP)
add_nowrap(node.data);else{var txt=node.data;if(!node.previousSibling)
txt=txt.trim(false,true);add(txt);}
break;}};};String.prototype.text_to_html=function(){var sd=new Showdown.converter();return sd.makeHtml(this);};(function(){MailMessageDrag.inherits(DlDragDataGrid);function MailMessageDrag(args){if(args){DlDragDataGrid.call(this,args);}};eval(Dynarch.EXPORT("MailMessageDrag",true));P.makeElementCopy=function(widget,ev){var el=this.elementCopy;if(!el){var sel=this.grid._selection;var server=this.grid._data._server_id;var folder=this.grid._data._folder_id;var el=this.elementCopy=CE("div",{top:ev.pos.y+"px",left:ev.pos.x+"px"},{className:"DlWidget-dragged-clone MailMessageDragging"},document.body);server=Mail.servers_cache.get(server);el.innerHTML=$msgProps("mail-message-dragging",{count:sel.getArray().length,server:server.getName().htmlEscape(),folder:server.folders.get(folder).getName().htmlEscape()});}
return el;};var _EXPAND_TIMER;P.dropOK=function(widget,ev,target){if(_EXPAND_TIMER)
clearTimeout(_EXPAND_TIMER);if(target){if(target._isWinListButton)
_EXPAND_TIMER=target.callHooks.delayed(500,target,"onClick");target=target.findParent("_MailMessageDropTarget");}
if(this.target&&this.target!==target)
this.target.setCanDropStyle(false);CC(this.elementCopy,target,"MailMessageDragging-canDrop");var sel=this.grid._selection;var server=this.grid._data._server_id;var folder=this.grid._data._folder_id;server=Mail.servers_cache.get(server);if(target){this.target=target;this.canDrop=true;this.target.setCanDropStyle(true);if(target instanceof MailFolderTreeItem){if(target._tree)
_EXPAND_TIMER=target.expand.delayed(500,target,true);this.elementCopy.innerHTML=$msgProps("mail-message-drop-to-folder",{count:sel.getArray().length,server:server.getName().htmlEscape(),folder:server.folders.get(folder).getName().htmlEscape(),to_server:target.folder.server.getName().htmlEscape(),to_folder:target.folder.getName().htmlEscape()});}else if(target instanceof MailComposerAttcGrid){this.elementCopy.innerHTML=$msgProps("mail-message-drop-to-attachments",{count:sel.getArray().length,server:server.getName().htmlEscape(),folder:server.folders.get(folder).getName().htmlEscape()});}}else{if(this.elementCopy){this.elementCopy.innerHTML=$msgProps("mail-message-dragging",{count:sel.getArray().length,server:server.getName().htmlEscape(),folder:server.folders.get(folder).getName().htmlEscape()});}
this.target=null;this.canDrop=false;}
return this.canDrop;};P.doDrop=function(widget,ev){this.target.setCanDropStyle(false);var target=this.target;var src_cache=this.grid._data;var src_server=src_cache._server_id;var src_folder=src_cache._folder_id;var src_msgids=this.grid._selection.getArray();if(target instanceof MailFolderTreeItem){var dst_folder=target.folder.id();var dst_server=target.folder.server.id();if(src_server!=dst_server){return alert("Moving message between servers not yet implemented");}else{XuhekiRPC(null,"mail.move_messages",src_server,src_folder,dst_folder,src_msgids);}}else if(target instanceof MailComposerAttcGrid){target.dropMessage(src_cache,src_server,src_folder,src_msgids);}};var INSTANCE=null;D.get=function(){if(!INSTANCE)
INSTANCE=new D({});return INSTANCE;};})();(function(){MailComposerAttcDrag.inherits(DlDragDataGrid);function MailComposerAttcDrag(args){if(args){DlDragDataGrid.call(this,args);}};eval(Dynarch.EXPORT("MailComposerAttcDrag",true));P.startOK=function(){var ret=D.BASE.startOK.apply(this,arguments);if(ret&&this.grid._selection.getArray().length!=1){this.grid=null;return false;}
return ret;};P.makeElementCopy=function(widget,ev){var el=this.elementCopy;if(!el){var sel=this.grid._selection.getArray();var el=this.elementCopy=CE("div",{top:ev.pos.y+"px",left:ev.pos.x+"px"},{className:"DlWidget-dragged-clone MailMessageDragging"},document.body);var rec=this.grid._data.get(sel[0]);el.innerHTML=$msgProps("composer-attc-dragging",{name:rec.get("filename").htmlEscape(),type:rec.get("content_type").htmlEscape()});}
return el;};P.dropOK=function(widget,ev,target){if(target)
target=target.findParent("_MailComposerAttcDropTarget");var composer;if(target){var c1=this.grid.getParent(WMailComposer);var c2=composer=target.getParent(WMailComposer);this.canDrop=c1==c2;}else{this.canDrop=false;}
CC(this.elementCopy,this.canDrop,"MailMessageDragging-canDrop");this.target=this.canDrop?composer:null;return this.canDrop;};P.doDrop=function(){this.target.linkToAttachment(this.grid._selection.getArray());};var INSTANCE=null;D.get=function(){if(!INSTANCE)
INSTANCE=new D({});return INSTANCE;};})();(function(){MailTreeItem.inherits(DlTreeItem);function MailTreeItem(args){if(args){if(args._checkboxes)
delete args["itemClassName"];D.setDefaults(this,args);DlTreeItem.call(this,args);}};eval(Dynarch.EXPORT("MailTreeItem"));D.DEFAULT_ARGS={__contextMenu:["contextMenu",getContextMenu],__itemClass:["itemClassName","DlTreeItem-withRadio"],group:["group",null],_checkboxes:["checkboxes",false]};var CTX_TREE_ITEM;function getContextMenu(){CTX_TREE_ITEM=this;if(!MENU){MENU=$makeMenus(CTX_MENU_DEF,CTX_MENU_ITEMS,menuHandler);MENU.addEventListener({onPopup:function(args){args.widget.setCanDropStyle(true);args.onHide=args.widget.setCanDropStyle.$(args.widget,false);}});}
updateContextMenu.call(this);return MENU;};var CR_POPUP;function getCreatePopup(){if(!CR_POPUP){var cont=CR_POPUP=new DlContainer({});cont.setContent($msg("popup-CreateFolder"));var span=cont.getElement().getElementsByTagName("span")[0];var box=new DlHbox({parent:cont,appendArgs:span,className:"HBoxPadLeft"});var entry=CR_POPUP.entry=new DlEntry({parent:box,size:20});var ok=new DlButton({parent:box,focusable:true,label:$msg("OK")});entry.addEventListener("onKey-ENTER",ok.keyClicked.$(ok));$ACL(ok,onCreateFolder);}
return CR_POPUP;};function onCreateFolder(){var entry=CR_POPUP.entry;var val=entry.getValue();if(!/\S/.test(val))
return MSG.addMsg("warning",$msg("err-MustNotBeEmpty"));if(!/^[a-z0-9 ]+$/i.test(val))
return MSG.addMsg("warning",$msg("err-OnlyLettersAndDigits"));var prefix="";var server;if(CTX_TREE_ITEM instanceof MailFolderTreeItem){server=CTX_TREE_ITEM.folder.server;prefix=CTX_TREE_ITEM.folder.id()+server.get("separator");}else if(CTX_TREE_ITEM instanceof MailServerTreeItem){server=CTX_TREE_ITEM.server;}
var name=prefix+val;if(server.folders.get(name))
return MSG.addMsg("warning",$msg("err-FolderAlreadyExists"));server.create_folder(name);DlPopup.clearAllPopups();};var CTX_MENU_DEF=[{id:"Expunge"},{id:"AddServer"},{id:"RemoveServer"},null,{id:"CreateSubfolder",s:getCreatePopup},{id:"CreateFolder",s:getCreatePopup},{id:"DeleteFolder"},null,{id:"EmptyTrash"}];var CTX_MENU_ITEMS={};var MENU;function menuHandler(name,menu_item){switch(name){case"Expunge":CTX_TREE_ITEM.folder.expunge();break;case"AddServer":MailServerDlg.newServer({quitBtn:"destroy"});break;case"RemoveServer":var server=CTX_TREE_ITEM.server;ConfirmDialog.ask({text:$msgProps("warning-DeleteServer",{server:server.getName().htmlEscape()}),onOK:function(server){Mail.servers_cache.unregister(server.id()).go();server.destroy();}.$C(server)});break;case"DeleteFolder":var folder=CTX_TREE_ITEM.folder;var server=folder.server;ConfirmDialog.ask({text:$msgProps("warning-DeleteFolder",{folder:folder.id().replace(server.separator_re," » ").htmlEscape(),server:server.getName().htmlEscape()}),onOK:function(folder){folder.server.delete_folder(folder.id());}.$C(folder)});break;case"EmptyTrash":var server=CTX_TREE_ITEM.server||CTX_TREE_ITEM.folder.server;XuhekiRPC(function(){Mail.refreshSummary();},"mail.empty_trash",server.id());break;}};function updateContextMenu(){var mi=CTX_MENU_ITEMS;mi.CreateSubfolder.display(this instanceof MailFolderTreeItem);mi.Expunge.display(this instanceof MailFolderTreeItem);mi.DeleteFolder.display(this instanceof MailFolderTreeItem&&this.folder.id()!=this.folder.server.get("folder_inbox")&&this.folder.id()!=this.folder.server.get("folder_sent")&&this.folder.id()!=this.folder.server.get("folder_trash")&&this.folder.id()!=this.folder.server.get("folder_drafts"));mi.RemoveServer.display(this instanceof MailServerTreeItem);mi.CreateFolder.display(this instanceof MailServerTreeItem);};P._createElement=function(){D.BASE._createElement.apply(this,arguments);this.sel=new(this._checkboxes?DlCheckbox:DlRadioButton)({className:this._objectType,parent:this,label:this.makeLabel(),group:this.group,value:this.getId()});};P.setCanDropStyle=function(can){DynarchDomUtils.condClass(this.getDivElement(),can,"MailMessageDropOK");};})();(function(){MailFolderTreeItem.inherits(MailTreeItem);function MailFolderTreeItem(args){if(args){D.setDefaults(this,args);MailTreeItem.call(this,args);this._MailMessageDropTarget=true;}};eval(Dynarch.EXPORT("MailFolderTreeItem"));D.DEFAULT_ARGS={folder:["folder",null]};P.refresh=function(){this.sel.setLabel(this.makeLabel());};P.makeLabel=function(){var unseen=this.folder.get("unseen"),name=this.folder.getName();return unseen>0?name.bold()+" <em>("+unseen+")</em>":name;};P.getId=function(){return this.folder.getFullId();};})();(function(){MailServerTreeItem.inherits(MailTreeItem);function MailServerTreeItem(args){if(args){D.setDefaults(this,args);MailTreeItem.call(this,args);}};eval(Dynarch.EXPORT("MailServerTreeItem"));D.DEFAULT_ARGS={server:["server",null],__iconClass:["iconClass","IconTreeServer"]};P.makeLabel=function(){return this.server.getName();};P.getId=function(){return this.server.id();};P._createElement=function(){DlTreeItem.prototype._createElement.apply(this,arguments);this.sel=new(this._checkboxes?DlAbstractButton:DlRadioButton)({className:this._objectType,parent:this,label:this.makeLabel(),group:this._checkboxes?null:this.group,type:DlButton.TYPE.TWOSTATE,value:this.getId()});};})();(function(){WMailServerTree.inherits(DlContainer);function WMailServerTree(args){if(args){D.setDefaults(this,args);this._unregisterItem=unregisterItem.$(null,this);DlContainer.call(this,args);}};eval(Dynarch.EXPORT("WMailServerTree"));D.DEFAULT_ARGS={_servers:["servers",null],_expanded:["expanded",false],_checkboxes:["checkboxes",false]};P._createElement=function(){D.BASE._createElement.apply(this,arguments);this._tree=new DlTree({parent:this});this._group=DlRadioGroup.get();if(this._checkboxes)
this._group.maxChecked(null);this._servers.addEventListener({onInsert:this._servers_onInsert.$(this),onDelete:this._servers_onDelete.$(this),onChange:this._servers_onChange.$(this)});this._items={};};function unregisterItem(self){delete self._items[String(this.getId()).toLowerCase()];};P._registerItem=function(item){var id=item.getId();if(typeof id=="string")
id=id.toLowerCase();this._items[id]=item;item.addEventListener("onDestroy",this._unregisterItem);};P._servers_onInsert=function(server){var item=new MailServerTreeItem({parent:this._tree,server:server,group:this._group,checkboxes:this._checkboxes});this._registerItem(item);server.folders.addEventListener({onInsert:this._folders_onInsert.$(this,item),onChange:this._folders_onChange.$(this,item),onDelete:this._folders_onDelete.$(this,item)});server.folders.getAllRecords().foreach(function(folder){this._create_item(item,folder,true);},this);};P._servers_onDelete=function(id){var item=this._items[id];if(item)
item.destroy();};P._servers_onChange=function(server){};P._create_item=function(server_item,folder,isInit){var item=this._items[folder.getFullId().toLowerCase()];var is_new=false;if(!item){is_new=true;var parent=folder.getParentId();var collapse=false;if(parent){var tmp=this._create_item(server_item,folder._set.getTopParent(parent),isInit);parent=tmp.item;if(is_new)
collapse=true;}else{parent=server_item;}
item=new MailFolderTreeItem({parent:parent,folder:folder,group:this._group,iconClass:getIconClass(server_item.server,folder),checkboxes:this._checkboxes});parent.expand(this._expanded||!(collapse&&isInit));window.caches[folder.getFullId()]=folder.messages;this._registerItem(item);}
return{item:item,is_new:is_new};};P.group=function(){return this._group;};P._folders_onInsert=function(server_item,folder,isInit){this._create_item(server_item,folder,isInit);};P._folders_onChange=function(server_item,folder){var item=this._items[folder.getFullId().toLowerCase()];item.refresh();};P._folders_onDelete=function(server_item,id){id=server_item.getId()+"-"+id.toLowerCase();var item=this._items[id];var parent=item.getParentItem();var selected=item.sel.checked();this._items[id].destroy();if(selected){if(!(parent instanceof MailFolderTreeItem)){parent=this._items[server_item.getId()+"-"+server_item.server.get("folder_inbox").toLowerCase()];}
parent.sel.checked(true);}};function getIconClass(server,folder){folder=folder.id().toLowerCase();switch(folder){case server.get("folder_inbox").toLowerCase():return"IconTreeInbox";case server.get("folder_sent").toLowerCase():return"IconTreeSent";case server.get("folder_drafts").toLowerCase():return"IconTreeOutbox";case server.get("folder_trash").toLowerCase():return"IconTreeTrash";}
return"IconTreeFolder";};})();(function(){WMailTokenWidget.inherits(DlWidget);function WMailTokenWidget(args){if(args){D.setDefaults(this,args);DlWidget.call(this,args);}};eval(Dynarch.EXPORT("WMailTokenWidget"));D.DEFAULT_ARGS={type:["type",null],data:["data",null],server:["server",null],folder:["folder",null],__tooltip:["tooltip",getTooltip]};P.initDOM=function(){D.BASE.initDOM.apply(this,arguments);this.addEventListener(LISTENERS);this.getElement().onclick=Function.returnFalse;switch(this.type){case"email":var contact=Mail.contacts_cache.getByEmail(this.data);if(!contact)
this.addClass("DynarchMail-token-email-new");break;}};function getTooltip(){var self=this.args.widget;switch(self.type){case"ximg":return self.getElement().src!=self.data?$msgProps("token-tooltip-ximg",self):null;case"scroll-attc":return $msg("ClickToScrollToAttachments");case"email":var contact=Mail.contacts_cache.getByEmail(self.data);if(contact){return $msgProps("token-tooltip-email-contact",{name:contact.getFullName(),phone:contact.getPhone()||$msg("n/a"),emails:contact.getEmailArray().join("<br />"),icon:contact.getIconURL(),tmp:false});}
return $msgProps("token-tooltip-email-nocontact",{email:self.data});case"date":return getCalendar(self.data);}
return self.data;};var CALENDAR;function getCalendar(date){if(!CALENDAR){CALENDAR=new DlCalendar({navigation:false,navDisabled:true});}
if(!(date instanceof Date))
date=Date.parseMySQL(date);CALENDAR.selectDate(date);return CALENDAR;};function onMouseDown(){};function onClick(ev){var el=this.getElement();switch(this.type){case"ximg":if(!el.getAttribute("src"))
el.setAttribute("src",this.data);break;case"xximg":this.getParent(MailMsgDisplay).displayExternalImages();this.destroy();return;case"scroll-attc":var el=$(this.data);if(el){el.scrollIntoView();DynarchDomUtils.flash(el);}
break;case"email":var contact=Mail.contacts_cache.getByEmail(this.data);var email=contact?contact.getFullAddress(this.data):this.data;var msgdisplay=this.getParent(MailMsgDisplay);if(msgdisplay){msgdisplay.startComposer("compose",email);}else{Mail.compose(email);}
break;case"url":window.open(this.data);break;case"url-internal":if(/^a$/i.test(el.tagName)&&el.getAttribute("type")=="message/rfc822"){Mail.openAttachedMessage(el,el.getAttribute("dynarchpart"));break;}
window.open(this.data||el.getAttribute("href"));break;case"date":var date=this.data;if(!(date instanceof Date))
date=Date.parseMySQL(date);alert("FIXME: go to calendar, "+date);break;}};var LISTENERS={onMouseDown:onMouseDown,onClick:onClick};})();(function(){var DEFAULT_EVENTS=["onShowRelated"];MailMsgDisplay.inherits(DlLayout);function MailMsgDisplay(args){if(args){D.setDefaults(this,args);DlLayout.call(this,args);this.registerEvents(DEFAULT_EVENTS);window.LastMsgDisplay=this;}};eval(Dynarch.EXPORT("MailMsgDisplay",true));D.DEFAULT_ARGS={_focusable:["focusable",true],_server_id:["server_id",null],_folder_id:["folder_id",null],_msg_uid:["msg_uid",null],_msg_part:["msg_part",null]};function collect_addresses(msg){"o_from o_to o_cc".qw().foreach(function(type){var addr=msg[type];if(addr)
addr.trim().split(/\t+/).foreach(Mail.contacts_cache.collect,Mail.contacts_cache);});};P.getHdrContentDiv=function(){return this._msgdisp.getElement().firstChild;};P.getMsgContentDiv=function(){return this._msgdisp.getElement().childNodes[1];};P.startComposer=function(how,force_to){var srv=Mail.getSelectedServer();if(srv)
srv=srv.id();var args={server_id:this._server_id||srv,how:how};if(!args.server_id){alert($msg("err-MustSelectServer"));return;}
if(force_to)
args.force_to=force_to;if(how!="compose"){args.folder_id=this._folder_id;args.msg_uid=this._msg_uid;args.msg_part_id=this._msg_part;}
WMailComposer.createDialog(args);};P.initDOM=function(){D.BASE.initDOM.apply(this,arguments);var tb=this._toolbar=new DlContainer({className:"DlToolbar DlToolbar2 MailMsgToolbar"});var ms=this._msgdisp=new DlContainer({scroll:true});this.packWidget(tb,{pos:"top"});this.packWidget(ms,{pos:"bottom",fill:"*"});var box=new DlHbox({parent:tb});var compose=new DlButton({parent:box,iconClass:"IconCompose",label:$msg("Compose")});box.addSeparator("wide-separator");var reply=new DlButton({parent:box,iconClass:"IconReply",label:$msg("Reply")});var reply_all=new DlButton({parent:box,iconClass:"IconReplyAll",label:$msg("ReplyAll")});box.addSeparator("wide-separator");var forward=new DlButton({parent:box,iconClass:"IconForward",label:$msg("Forward")});var bounce=new DlButton({parent:box,iconClass:"IconBounce",label:$msg("Bounce")});box.addSeparator("wide-separator");var edit=new DlButton({parent:box,iconClass:"IconEditAsNew",label:$msg("Edit")});box.addFiller();var print=new DlButton({parent:box,iconClass:"IconPrint",label:$msg("Print")});$ACL(print,function(){Mail.printMessages([{server:this._server_id,folder:this._folder_id,msg_uid:this._msg_uid,part:this._msg_part}]);}.$(this));$ACL(bounce,function(){Mail.bounceMessage(this,this._server_id,this._folder_id,this._msg_uid,this._msg_part);}.$(this));this.msgs_buttons=[reply,reply_all,forward,edit,bounce,print];if(!this.getParentDialog()){var related=new DlButton({parent:box,iconClass:"IconRelatedEmails",label:$msg("ShowRelated"),tooltip:$msg("ShowRelatedMessages")});$ACL(related,function(){this.callHooks("onShowRelated",this._server_id,this._folder_id,this._msg_uid);}.$(this));this.msgs_buttons.push(related);}
$ACL(compose,this.startComposer.$(this,"compose",null));$ACL(reply,this.startComposer.$(this,"reply",null));$ACL(reply_all,this.startComposer.$(this,"reply_all",null));$ACL(forward,this.startComposer.$(this,"forward",null));$ACL(edit,this.startComposer.$(this,"edit",null));this._updateToolbar();};P._updateToolbar=function(){this.msgs_buttons.map("enabled",!!this._msg_uid);};function mkAddress(addr){return addr.trim().split(/\t+/).join(", ");};MailMsgDisplay.prototype.showMessage=function(msg){collect_addresses(msg);this._tokens=[];this._msg_uid=msg.uid;this._msgdisp.destroyChildWidgets();this._msg_flags=msg.bitflags;this._ximg_tokens=[];this._updateToolbar();var html=String.buffer();html("<div class='Headers'>","<table class='toptable' cellspacing='0' cellpadding='0'>","<tr><td class='left'>","<table>");html("<tr class='Subject'><td class='Label'>",$msg("Subject&:"),"</td>","<td>",msg.subject,"</td></tr>");if(msg.from){html("<tr><td class='Label'>",$msg("From&:"),"</td>","<td>",mkAddress(msg.from),"</td></tr>");}
if(msg.reply_to&&msg.reply_to!=msg.from){html("<tr><td class='Label'>",$msg("ReplyTo&:"),"</td>","<td>",mkAddress(msg.reply_to),"</td></tr>");}
if(msg.to){html("<tr><td class='Label'>",$msg("To&:"),"</td>","<td>",mkAddress(msg.to),"</td></tr>");}
if(msg.cc){html("<tr><td class='Label'>",$msg("CC&:"),"</td>","<td>",mkAddress(msg.cc),"</td></tr>");}
if(msg.date){var date=new Date();date.setTime(msg.date*1000);html("<tr><td class='Label'>",$msg("Date&:"),"</td>","<td style='width: 100%'>",date.print("%A, %B %e, %Y / %l:%M%P"),"</td>");var dspam=msg.headers["x-dspam-improbability"];if(dspam)
html("<td class='Label'>DSPAM:</td><td style='white-space: nowrap'>",dspam,"</td>");html("</tr>");}
var attachments=String.buffer();var mime_handlers=[];if(msg.attachments.length>0){this._id_attc_div=Dynarch.ID();attachments("<div class='Attachments' id='",this._id_attc_div,"'><table cellspacing='1' cellpadding='0'>");msg.attachments.foreach(function(p,i){var filename=p.filename||p.content_type;var dest_id=Dynarch.ID("MailMsgDisplay");attachments("<tr id='",dest_id,"'><td>» <a type='",p.content_type,"' target='_blank' href='",p.attachment_url,"' onclick='if (!this.swURL)this.swURL=this.href;this.href=swApp.syncSWorld.xuhekiGetDocRequestURL(this.swURL);'>",filename,"</a></td>","<td>&nbsp;(&nbsp;",p.content_type,"</td><td>&nbsp; — &nbsp;</td><td style='text-align:right'><tt>",parseFloat(p.size,10).formatBytes(2),"</tt></td><td>&nbsp;)</td>");attachments("<td>");if(p.content_type=="message/rfc822"){attachments("&nbsp;— <a href='#' class='alternate-view' onclick='return Mail.openAttachedMessage(this,",p.id,")'>",$msg("ViewAttachedMessage"),"</a>");}
attachments("</td></tr>");var handler=Mail.mime_handlers[p.content_type];if(handler){mime_handlers.push({part:p,handler:handler,dest_id:dest_id});}});attachments("</table></div>");html("<tr><td class='Label'>",$msg("Attachments&:"),"</td>","<td><span data='",this._id_attc_div,"' ","class='DynarchMail-token DynarchMail-token-scroll-attc' dynarchtoken='scroll-attc'>",$msgNR("MessageHasXAttachments",msg.attachments.length),"</span></td></tr>");}
html("</table></td>");html("<td id='",this._id_buttons=Dynarch.ID(),"'></td></tr>");html("</table></div>");html("<div>");html("<div id='",this._moreContID=Dynarch.ID(),"'></div>");var display=String.buffer();var ext_img=false;display("<div class='WholeDamnMessage'><div class='HeaderSeparator'></div>");msg.display.foreach(function(p,i){display("<div class='DynarchMessage");if(p.content_type=="text/plain")
display(" DynarchPlainTextMessage");display("'>",p.content,"</div>");if(p.ext_img)
ext_img=true;});if(msg.display.length==0)
display("&nbsp;");display("</div>");if(ext_img&&!(this._msg_flags&Mail.MSG_FLAGS.XXIMG)){html("<div dynarchtoken='xximg' class='DynarchMail-token DynarchMail-token-xximg'><div>",$msg("DisplayExternalImages"),"</div></div>");}
html(display.get());html("</div>");html("<div class='DynarchMailEnd'>&nbsp;</div>");html(attachments.get());this._msgdisp.setContent(html.get());var msgdispElement=this._msgdisp.getElement();DOM.walk(msgdispElement,function(el){if(el.tagName.toLowerCase()=="img"){var src=el.getAttribute("src");if(/^\x2f/.test(src)){el.src=swApp.syncSWorld.xuhekiGetDocRequestURL(src);}}});mime_handlers.foreach(function(h){h.handler.call(this,h.part,h.dest_id);},this);this._createWidgets();if(!this.getParentDialog()){var btn=new DlButton({parent:this._createWidgetsRow(),iconClass:"IconNewWindow",tooltip:$msg("OpenInOwnWindow")});$ACL(btn,function(){Mail.openMessageInDialog(this._server_id,this._folder_id,this._msg_uid,this._msg_part);}.$(this));}
this._msgdisp.getElement().scrollTop=0;if(this._msg_flags&Mail.MSG_FLAGS.XXIMG){this.displayExternalImages();}};P.getServer=function(){return Mail.servers_cache.get(this._server_id);};P.getFolder=function(){return this.getServer().folders.get(this._folder_id);};P.displayExternalImages=function(){this._ximg_tokens.map("callHooks","onClick");var flags=this._msg_flags|Mail.MSG_FLAGS.XXIMG;XuhekiRPC(null,"apache.set_message_bitflags",this._server_id,this._folder_id,this._msg_uid,this._msg_part,flags);};P._createWidgets=function(el){if(!el)
el=this._msgdisp.getElement();Array.$(el.getElementsByTagName("*")).foreach(function(el){var type=el.getAttribute("dynarchtoken");if(type){var w=new WMailTokenWidget({parent:this._msgdisp,element:el,type:type,data:el.getAttribute("data"),server:this.getServer(),folder:this.getFolder()});this._tokens.push(w);switch(type){case"ximg":this._ximg_tokens.push(w);break;}}},this);};P._createWidgetsRow=function(){var cont=new DlContainer({parent:this._msgdisp,element:$(this._id_buttons)});return new DlHbox({parent:cont,className:"DlToolbar DlToolbar2"});};var MSG_DIALOGS={};Mail.openMessageInDialog=function(server,folder,msgid,part){var id=[server,folder,msgid];if(part)
id.push(part);id=id.join("-");var dlg=MSG_DIALOGS[id];if(dlg){dlg.show();return;}
XuhekiRPC(function(msg){var dlg=new SwMinDialog({title:msg.o_subject.htmlEscape(),iconClass:"IconEmailGeneric",resizable:true,quitBtn:"destroy",data:id});MSG_DIALOGS[id]=dlg;dlg.addEventListener("onDestroy",function(){delete MSG_DIALOGS[this.userData];});var display=new MailMsgDisplay({parent:dlg,server_id:server,folder_id:folder,msg_part:part});display.showMessage(msg);dlg.setPercentSize(0.6,0.7);dlg.show(true);},"mail.display_message",server,folder,msgid,part);};Mail.openAttachedMessage=function(link,part){var el=link,obj;while(el&&!(obj=DlWidget.getFromElement(el)))
el=el.parentNode;if(obj)while(obj&&!(obj instanceof MailMsgDisplay))
obj=obj.parent;if(obj)
Mail.openMessageInDialog(obj._server_id,obj._folder_id,obj._msg_uid,part);return false;};Mail.bounceMessage=function(msg_display,server_id,folder_id,msg_uid,msg_part){var dlg=new SwMinDialog({title:$msg("BounceMessage"),iconClass:"IconBounce",quitBtn:"destroy",resizable:true});var layout=new DlLayout({parent:dlg,outerSpace:5});var top=new DlContainer({});top.setContent($msg("info-BounceMessage"));layout.packWidget(top,{pos:"top",after:5});var box=new DlHbox({className:"HBoxPadLeft"});box.addFiller();var ok=new DlButton({parent:box,focusable:true,label:$msg("Send").fixedWidth("5em")});var cancel=new DlButton({parent:box,focusable:true,label:$msg("Cancel").fixedWidth("5em")});layout.packWidget(box,{pos:"bottom",after:7});entry=new DlCompletionEntry({smart:false,noTab:true,timeout:250,type:"textarea"});entry.addEventListener("onCompletion",Mail.contacts_cache.autocomplete);layout.packWidget(entry,{pos:"bottom",fill:"*"});$ACL(cancel,dlg.destroy.$(dlg));$ACL(ok,function(){ok.disabled(true);XuhekiRPC(function(ret){if(ret=="OK"){MSG.addMsg("info",$msg("MessageSent"));dlg.destroy();}else{ok.disabled(false);}},"apache.bounce",server_id,folder_id,msg_uid,msg_part,entry.getValue());});dlg._focusedWidget=entry;dlg.setSize({x:350,y:200});dlg.show(true);};})();(function(){MailGenericForm.inherits(DlFieldGrid);function MailGenericForm(args){if(args){D.setDefaults(this,args);DlFieldGrid.call(this,args);this._init();}};eval(Dynarch.EXPORT("MailGenericForm"));D.DEFAULT_ARGS={fields:["fields",null]};P._init=function(){this.widgets={};this.fillWidgets=[];this.fields.foreach(this._mg_addField,this);};P._mg_addField=function(f){if(f==null)
return this.addSeparator();f=Object.makeCopy(f);var widget=MailGenericWidgets._create(f,this);if(widget){var ret={};var label=f.label?$msg(f.label):null;this.addField({widget:widget,name:f.id,tabIndex:this._tabIndex,label:label,valign:f.valign},null,ret);ret.c1.setSize({x:10});widget.userData=ret;if(widget instanceof DlEntry&&!(widget instanceof DlSpinner))
this.fillWidgets.push(widget);if(f.id)
this.widgets[f.id]={w:widget,f:f};if(f.h){var btn=new DlButton({parent:this._getActBox(),label:$msg(f.h),data:f.id});this.getField(f.id).refNode("_button",btn);var el=ret.row.getElement();el.parentNode.removeChild(el);btn.refNode("showRow",el);$ACL(btn,this._showRow.$(this,btn));}}};P._getActBox=function(){if(!this._actBox){this._actBox=new DlHbox({className:"HBoxPadLeft"});this.addField({widget:this._actBox});}
return this._actBox;};P._showRow=function(btn,ev){var box_row=this._getActBox().parent.parent;var f=this.getField(btn.userData);var el=btn.showRow;btn.destroy();box_row.getElement().parentNode.insertBefore(el,box_row.getElement());if(ev)
this.parent.__doLayout();if(this._getActBox().children().length==0)
box_row.destroy();f.focus();};P.resetFields=function(values){this.fields.foreach(function(f){if(f){var val=values&&f.id in values?values[f.id]:f.value;if(typeof val=="function")
val=val(f,this);if(typeof val!="undefined")
this.getField(f.id).setValue(val);}},this);};P.showValidationErrors=function(msgs){if(!msgs)
msgs={};var fields=this.getField();for(var i in fields){var w=this.getField(i);var row=w.parent.parent;if(w instanceof DlEntry)
w.condClass(i in msgs,"DlEntry-ValidationError");row.condClass(i in msgs,"MailValidationError");var tt=$smsg(msgs[i]);row.setTooltip(tt);w.setTooltip(tt);}};P.setSize=P.setOuterSize=function(sz){var width=sz.x-DynarchDomUtils.getScrollbarSize(this.parent.getElement()).x;this.fillWidgets.foreach(function(e){if(e.userData.row.display()){e.setSize({x:width-e.userData.c1.getSize().x-8});}},this);};})();(function(){function mkEntryArgs(f){var obj={};Object.mergeDefined(obj,{className:f.className,emptyText:f.emptyText,validators:f.validators,size:f.size,readonly:f.readonly,width:f.width,maxlength:f.maxlength,value:f.value,rows:f.rows});return obj;};function mkResizableArea(w){var tr=document.createElement("tr");var td=document.createElement("td");tr.appendChild(td);w.getElement().firstChild.appendChild(tr);new DlResizeBar({parent:w,horiz:true,min:30,widget:w.getInputElement(),continuous:true,appendArgs:td});};window.MailGenericWidgets={_create:function(f,form){if(!f.type)
f.type="entry";if(typeof f.value=="function")
f.value=f.value(f,form);var w=MailGenericWidgets[f.type](f);for(var i in f)
if(/^on/.test(i))
w.addEventListener(i,f[i].$(w,form));return w;},entry:function(f){return new DlEntry(mkEntryArgs(f));},password:function(f){var args=mkEntryArgs(f);args.type="password";return new DlEntry(args);},textarea:function(f){var args=mkEntryArgs(f);args.type="textarea";var w=new DlEntry(args);mkResizableArea(w);return w;},c_entry:function(f){var args=mkEntryArgs(f);Object.mergeDefined(args,{electric:f.electric,smart:"smart"in f?f.smart:false,noTab:"noTab"in f?f.noTab:true});var w=new DlCompletionEntry(args);w.addEventListener("onCompletion",f.complete);return w;},c_area:function(f){var args=mkEntryArgs(f);Object.mergeDefined(args,{electric:f.electric,type:"textarea"});var w=new DlCompletionEntry(args);w.addEventListener("onCompletion",f.complete);mkResizableArea(w);return w;},spinner:function(f){var args=mkEntryArgs(f);Object.mergeDefined(args,{minVal:f.min,maxVal:f.max,step:f.step,decimals:f.decimals,integer:f.integer});return new DlSpinner(args);},combo:function(f){var args=mkEntryArgs(f);args.options=f.options;return new DlComboBox(args);},objectcombo:function(f){var args=mkEntryArgs(f);args.data=f.data;return new MailObjectCombo(args);},select:function(f){var o=f.options;if(o instanceof Function)
o=o();return new DlRadioSelect({options:o,focusable:true,value:f.value});},radiogroup:function(f){var o=f.options;if(o instanceof Function)
o=o();var box=new DlHbox({className:"HBoxPadRight"});var group=DlRadioGroup.get();box.registerEvents(["onChange"]);group.connectEvents("onChange",box);o.foreach(function(o){new DlRadioButton({parent:box,label:o.label,group:group,value:o.value});});box.getValue=function(){return group.getValue()[0]};box.setValue=function(val){group.setValue([val])};return box;},checkbox:function(f){var w=new DlCheckbox({checked:!!f.value,label:$msg(f.label),focusable:true});f.label=null;w.getValue=w.setValue=w.checked;return w;},button:function(f){var w=new DlButton({label:$msg(f.label),focusable:true});f.label=null;return w;}};})();(function(){var DEFAULT_EVENTS=["onSubjectChange","onDraftSaved","onSent"];WMailComposer.inherits(DlContainer);function WMailComposer(args){if(args){D.setDefaults(this,args);DlContainer.call(this,args);this.registerEvents(DEFAULT_EVENTS);this._autosave_clearing=this._autosave.clearingTimeout(Mail.AUTOSAVE_TIMEOUT,this);}};eval(Dynarch.EXPORT("WMailComposer"));D.DEFAULT_ARGS={_server_id:["server_id",null],_folder_id:["folder_id",null],_msg_uid:["msg_uid",null],_msg_part_id:["part_id",null],_type:["type",null],_composer_id:["composer_id",null],_invite_reply:["invite_reply",null],_ical:["ical",null],_ical_url:["ical_url",null],_fillParent:["fillParent",true]};function checkPlainText(form,data){if(data.contact.get("prefers_text")){var composer=form.getParent(D);composer._plainTextCheckbox.checked(true);}};function getIdentities(){return Mail.ident_cache.getAllIds().map(function(id){return this.get(id).getFullAddress();},Mail.ident_cache);};function getHeaders(){return[{id:"from",label:"From&:",onBlur:DlEntry.removeComma,type:"objectcombo",data:Mail.ident_cache},null,{id:"to",label:"To&:",onBlur:DlEntry.removeComma,onSelect:checkPlainText,type:"c_entry",complete:Mail.contacts_cache.autocomplete},{id:"subject",label:"Subject&:"},null,{id:"cc",label:"CC&:",onBlur:DlEntry.removeComma,onSelect:checkPlainText,h:"ShowCC",type:"c_entry",complete:Mail.contacts_cache.autocomplete},{id:"bcc",label:"BCC&:",onBlur:DlEntry.removeComma,onSelect:checkPlainText,h:"ShowBCC",type:"c_entry",complete:Mail.contacts_cache.autocomplete},{id:"reply_to",label:"ReplyTo&:",onBlur:DlEntry.removeComma,h:"ShowReplyTo"}];};var ATTC_GRID_COLS=[{id:"filename",label:$msg("Filename"),fill:1,resizable:false},{id:"size",label:$msg("Size"),width:60,resizable:false,style:{textAlign:"right"}}];var ATTC_HEADERS=[{id:"filename",label:"Filename&:"},{id:"description",label:"Description&:"},{id:"content_type",label:"Content-Type&:"}];function onDestroy(){if(this._composer_id){this._autosave_clearing.cancel();XuhekiRPC(null,"apache.destroy_composer",this._composer_id);}};var ADDR_FIELDS=["from","to","cc","bcc","reply_to"];var DLG_ICONS={reply:"IconReply",reply_all:"IconReplyAll",forward:"IconForward",edit:"IconEdit"};function makeDialog(args,c){var dlg=new SwMinDialog({quitBtn:"destroy",resizable:true,title:"COMPOSER",iconClass:DLG_ICONS[args.how]||"IconCompose"});dlg.appendWidget(c);dlg._focusedWidget=c.getDefaultFocus();dlg.setPercentSize(0.7,0.8);c._finalizeInit();c.addEventListener({onSubjectChange:function(title){dlg.title(title.htmlEscape());},onSent:function(){this.destroy();MSG.addMsg("info",$msg("MessageSent"));}.$(dlg),onDraftSaved:function(){MSG.addMsg("info",$msg("SavedToDrafts"));}.$(dlg)});dlg.show(true);};D.createDialog=function(args){D.create(args,makeDialog.$C(args));};D.create=function(args,callback,obj){if(!args.type)
args.type=Mail.prefs.get("composer_mode");var request=(args.how=="edit"?"apache.composer_edit_message":"apache.create_composer");XuhekiRPC(function(ret){Object.merge(args,ret);var c=new D(args);c.addEventListener("onDestroy",onDestroy);c._init_content=ret.content;if(!ret.to&&args.force_to)
ret.to=args.force_to;ADDR_FIELDS.foreach(function(f){if(ret[f]&&/\S/.test(ret[f]))
ret[f]=Mail.splitTabbedAddress(ret[f]);});c._headers.setValues(ret);c._plainTextCheckbox.checked(!!ret.add_alt);ADDR_FIELDS.foreach(function(f){if(ret[f]&&/\S/.test(ret[f])){f=c._headers.getField(f);if(f._button)
f._button.callHooks("onClick");}});if(ret.parts){ret.parts.foreach(c._insertAttc,c);c._attc_grid.displayPage(0);}
if(callback)
callback.call(obj,c);},request,args.type,args.server_id,args.folder_id,args.msg_uid,args.msg_part_id,args.how,args.force_to);};D.createInviteReply=function(args){args.type="text";args.invite_reply=true;args.how="reply";var c=new D(args);c._init_content=$msgProps("EventAcceptedBody",{from:args.from,desc:args.event_description});c._headers.setValues({subject:$msgProps("EventReplySubject",{summary:args.event_summary}),to:args.to,from:args.from});makeDialog(args,c);};P.initDOM=function(){D.BASE.initDOM.apply(this,arguments);var layout=new DlLayout({parent:this,fillParent:true,outerSpace:3});var top=this._createHeaders();var bottom=this._createButtons();var editor=this._createEditor();editor.layout._MailComposerAttcDropTarget=true;layout.packWidget(top,{pos:"top",after:4});layout.packWidget(bottom,{pos:"bottom",after:4});if(!this._invite_reply){var right=this._createAttachments();editor.layout.packWidget(right,{pos:"right",fill:210,min:200});var rb=new DlResizeBar({widget:right,invert:true});editor.layout.packWidget(rb,{pos:"right",fill:5});}
layout.packWidget(editor.layout,{pos:"left",fill:"*"});};P.getDefaultFocus=function(){var f=this._headers.getField("from");if(/\S/.test(f.getValue())){f=this._headers.getField("to");if(/\S/.test(f.getValue())){f=this._headers.getField("subject");if(/\S/.test(f.getValue()))
f=this._editor.getWidget();}}
return f;};P.linkToAttachment=function(ids){var rte=this._editor.rte;var txt=rte.getSelectedText();ids.foreach(function(id){var rec=this._attc_cache.get(id);var type=rec.get("content_type");var url=Mail.getURL("/cmppart/")+id;var node;if(/^image\x2f(jpe?g|png|bmp|gif)$/i.test(type)){node=rte.insertImage({url:url,alt:rec.get("description")});}else{if(!/\S/.test(txt))
txt=rec.get("filename");node=rte.createLink(url,txt);}
node.setAttribute("dynarchpart","C"+id);},this);};P._do_sendXuheki=function(){this._sendButton.disabled(true);this._saveButton.disabled(false);this._autosave(null,true);XuhekiRPC(function(ret){if(ret.done&&ret.done=="OK"){this.callHooks("onSent");}else{this._sendButton.disabled(false);this._saveButton.disabled(false);if(ret.error)
MSG.addMsg("error",ret.error);}}.$(this),"apache.composer_launch",this._composer_id,true);};P._do_saveXuheki=function(){this._sendButton.disabled(true);this._saveButton.disabled(true);this._autosave(null,true);XuhekiRPC(function(ret){this._sendButton.disabled(false);this._saveButton.disabled(false);if(ret.done&&ret.done=="OK"){this.callHooks("onDraftSaved");}}.$(this),"apache.composer_launch",this._composer_id);};P._do_sendInviteReply=function(){this._sendButton.disabled(true);var args=this._renderValues();Object.merge(args,{ical:this._ical,ical_url:this._ical_url});swApp.syncSWorld.xuhekiCalendarRequest("acceptEdit",args,function(ret){if(ret.keyValueM){alert("FIXME: must sync calendar");this.callHooks("onSent");}}.$(this));};P._createButtons=function(){var toolbar=new DlHbox({borderSpacing:3});var send_btn=this._sendButton=new DlButton({parent:toolbar,tabIndex:3,label:$msg("SendMessage"),iconClass:"IconSend"});$ACL(send_btn,this._invite_reply?this._do_sendInviteReply.$(this):this._do_sendXuheki.$(this));if(!this._invite_reply){var save_btn=this._saveButton=new DlButton({parent:toolbar,tabIndex:3,label:$msg("SaveDraft"),iconClass:"IconSave"});$ACL(save_btn,this._do_saveXuheki.$(this));}
toolbar.addFiller();var cancel_btn=new DlButton({parent:toolbar,tabIndex:3,label:$msg("Cancel"),iconClass:"IconCancel"});$ACL(cancel_btn,function(){(this.getParentDialog()||this).destroy();}.$(this));return toolbar;};P._createHeaders=function(){var h=this._headers=new MailGenericForm({fields:getHeaders()});var subj=h.getField("subject");subj.addEventListener("onKeyPress onChange".qw(),function(subj){var val=subj.getValue().trim();if(!val)
val=$msg("Compose");this.callHooks("onSubjectChange",val);}.clearingTimeout(250,this,subj));var box=h._getActBox();box.addFiller();this._plainTextCheckbox=new DlCheckbox({parent:box,label:$msg("IncludePlainText")});return h;};P._createAttachments=function(){var layout=this._attc_layout=new DlLayout({className:"AttachmentsCont"});var top=new DlContainer({className:"SectionTitle"});var title=new DlFieldGrid({parent:top,borderSpacing:0});this.getElement().align="center";var upload=this._uploadEntry=new DlUploadEntry({url:swApp.syncSWorld.mishoo_devel()?Mail.getURL("/upload"):"/sw2/xuhekiUpload",files:["file"],params:{upload:"attach_composer_file",composer_id:this._composer_id}});upload.addEventListener({onMouseEnter:function(){top.addClass("SectionTitle-hover");},onMouseLeave:function(){top.delClass("SectionTitle-hover");},onChange:function(field,name,value){field.style.visibility="hidden";this.setParam("calUserID",swApp.syncSWorld.userSettingsDTO.calUserID);var clientNonce=swApp.syncSWorld.syncSWorldPrefs.clientNonce;var deviceID=swApp.syncSWorld.syncSWorldPrefs.deviceID;var password=hex_sha256(swApp.syncSWorld.sessionID+swApp.syncSWorld.syncSWorldPrefs.clientNonce);this.setParam("password",password);this.setParam("clientNonce",clientNonce);this.setParam("deviceID",deviceID);this.submit();},onUploadEnd:function(args){var command={};command.test="ping";swApp.syncSWorld.sendRequest(command,"ping");Array.$(args).foreach(function(args){if(args.ok){args=args.ok;this._insertAttc(args);}},this);this._attc_grid.displayPage(0);}.$(this)});title.addField({label:$msg("AddAttachment&:").bold(),widget:upload});var cache=this._attc_cache=new _Attc_Cache({});var sel=this._attc_sel=new DlSelectionModel({});sel.addEventListener(["onChange","onReset"],this._on_attcSelChange.$(this));var grid=this._attc_grid=new MailComposerAttcGrid({cols:ATTC_GRID_COLS,rpp:null,data:cache,selection:sel,composer:this,tabIndex:4,drag:MailComposerAttcDrag.get()});grid.resetIDS([]);grid.displayPage(0);var attc_headers=this._attc_headers=new MailGenericForm({tabIndex:4,fields:ATTC_HEADERS});var box=new DlHbox({className:"HBoxPadLeft"});var upd_btn=new DlButton({tabIndex:4,focusable:true,parent:box,label:$msg("Save")});$ACL(upd_btn,this._on_updAttcClicked.$(this));var del_btn=new DlButton({tabIndex:4,focusable:true,parent:box,label:$msg("Delete")});$ACL(del_btn,this._on_delAttcClicked.$(this));attc_headers.addField({widget:box});layout.packWidget(top,{pos:"top"});layout.packWidget(attc_headers,{pos:"bottom"});layout.packWidget(grid,{pos:"top",fill:"*"});return layout;};P._insertAttc=function(args){var rec=new _Attc_Record({recordSet:this._attc_cache,data:{id:args.id,filename:args.filename,size:args.size,content_type:args.content_type,description:args.description}});this._attc_cache.insert(rec);};P._on_attcSelChange=function(){var a=this._attc_sel.getArray();if(this._attc_headers.display(a&&a.length>0)){this._attc_headers.setValue(this._attc_cache.get(a[0])._data);}
this._attc_layout.doLayout();};P._on_delAttcClicked=function(){var a=this._attc_sel.getArray();if(a&&a.length>0){XuhekiRPC(function(a){this._attc_cache.remove(a);this._attc_grid.displayPage(0);}.$(this),"apache.delete_composer_part",this._composer_id,a);}};P._on_updAttcClicked=function(){var a=this._attc_sel.getArray();if(a&&a.length>0){var args=this._attc_headers.getValues();XuhekiRPC(function(ret){var rec=this._attc_cache.get(ret.id);Object.merge(rec._data,ret);this._attc_cache.callHooks("onChange",rec);}.$(this),"apache.update_composer_part",this._composer_id,a[0],args);}};P._createEditor=function(){var ed=this._editor=Mail.makeEditor(null,2,this._type,function(){this._sendButton.keyClicked();}.$(this));ed.events.addEventListener("onModeChange",function(mode){if(mode=="text"){ed.setContent(ed.rte.getHTML().html_to_text());}else{ed.setContent(ed.entry.getValue().text_to_html());}});return ed;};P._finalizeInit=function(){var rte=this._editor.rte;if(this._type=="text"){var entry=this._editor.entry;entry.setValue(this._init_content);entry.focus();entry.setSelectionRange(0,0);this._init_content="";}
rte.initDesignMode(function(rte){Mail.initEditor.call(rte,this._init_content);var caret=rte.getIframeDoc().getElementById("DYNARCH_MAIL_CARET");if(caret){caret.removeAttribute("id");rte.selectNodeContents(caret);rte.collapse(true);}}.$(this,rte));if(!this._invite_reply){rte.addEventListener("onUpdate",this._autosave_clearing.$C(Function.noop));this._editor.entry.addEventListener("onKeyDown onMouseDown onChange".qw(),this._autosave_clearing.$C(Function.noop));}
if(this._uploadEntry){this._uploadEntry.init();this._attc_headers.display(false);this._attc_layout.doLayout();}};P._renderValues=function(){var args={type:this._editor.getMode(),content:this._editor.getContent(),add_alt:this._plainTextCheckbox.checked()};Object.merge(args,this._headers.getValues());return args;};P._autosave=function(callback,delay){if(!this.destroyed){var args=this._renderValues();var f=delay?window.XuhekiRPC_push:window.XuhekiRPC;f(callback,"apache.save_composer",this._composer_id,args);}};_Attc_Record.inherits(DlRecord);function _Attc_Record(args){DlRecord.call(this,args);};_Attc_Cache.inherits(DlRecordCache);function _Attc_Cache(args){DlRecordCache.call(this,args);};_Attc_Cache.prototype.formatHTML=function(rec,col,buf){var val=rec.get(col);switch(col){case"size":{val=parseFloat(val,10).formatBytes()+"&nbsp;";break;}
default:{val=rec.get(col);val=val?String(val).htmlEscape():"—";}}
buf(val);};})();(function(){MailComposerAttcGrid.inherits(DlDataGrid);function MailComposerAttcGrid(args){if(args){D.setDefaults(this,args);DlDataGrid.call(this,args);this._MailMessageDropTarget=true;}};eval(Dynarch.EXPORT("MailComposerAttcGrid"));D.DEFAULT_ARGS={_composer:["composer",null]};P.setCanDropStyle=function(can){this.condClass(can,"MailMessageDropOK");};P.dropMessage=function(cache,server,folder,msgids){XuhekiRPC(function(ret){ret.foreach(this._composer._insertAttc,this._composer);this._composer._attc_grid.displayPage(0);}.$(this),"mail.composer_attach_messages",server,folder,msgids,this._composer._composer_id);};P._setFocusedStyle=function(focused){this.condClass(focused,"DlDataGrid-focus");};})();(function(){MailObjectListDlg.inherits(SwMinDialog);function MailObjectListDlg(args){if(args){D.setDefaults(this,args);SwMinDialog.call(this,args);this.init();}};eval(Dynarch.EXPORT("MailObjectListDlg"));D.DEFAULT_ARGS={_resizable:["resizable",true],__quitBtn:["quitBtn","hide"]};P.addMoreButtons=Function.noop;P.init=function(){var layout=new DlLayout({parent:this,outerSpace:3});var grid_cont=new DlLayout({});var grid=this.grid=new DlDataGrid({cols:this.getGridCols(),data:this.getCache()});this.getCache().addEventListener("onRefresh",function(){grid.resetIDS(this.getAllIds());grid.refreshDisplay();});var head_layout=new DlLayout({});var head_cont=new DlContainer({scroll:true});var form=this.form=new MailGenericForm({parent:head_cont,fillParent:true,fields:this.getFields()});var hbox=new DlHbox({className:"HBoxPadLeft"});var save=new DlButton({parent:hbox,focusable:true,label:$msg("SaveSelected"),data:"save"});var save_new=new DlButton({parent:hbox,focusable:true,label:$msg("SaveNew"),data:"save_new"});save.addEventListener("onDisplay",function(v){this.getElement().parentNode.style.display=v?"":"none";});save.display(false);form.addField({widget:hbox});var vbox=new DlVbox({className:"VBoxPadDown"});this.addMoreButtons(vbox);var del_all=new DlButton({parent:vbox,focusable:true,label:$msg("DeleteSelected"),disabled:true});head_layout.packWidget(vbox,{pos:"bottom"});head_layout.packWidget(head_cont,{pos:"top",fill:"*"});layout.packWidget(head_layout,{pos:"right",fill:"60%"});layout.packWidget(new DlResizeBar({widget:head_layout,invert:true,keepPercent:true}),{pos:"right"});layout.packWidget(grid_cont,{pos:"left",fill:"*"});var search=new DlEntry({emptyText:$msg("Search"),accessKey:"ALT 's'"});grid_cont.packWidget(search,{pos:"top",after:2});grid_cont.packWidget(grid,{pos:"bottom",fill:"*"});var onSearch=function(){var val=search.getValue();var a=this.getCache().search(val);grid.scrollHome();grid.resetIDS(a.map("id"));grid.refreshDisplay();}.clearingTimeout(250,this);search.addEventListener("onKeyPress",function(ev){switch(ev.keyCode){case DlKeyboard.ESCAPE:if(/\S/.test(this.getValue())){this.clear();onSearch.doItNow();DlException.stopEventBubbling();}
break;case DlKeyboard.ARROW_UP:case DlKeyboard.ARROW_DOWN:case DlKeyboard.PAGE_UP:case DlKeyboard.PAGE_DOWN:grid._handle_focusKeys(ev);break;default:onSearch();}});this.addEventListener("onShow",this._on_show);grid._selection.addEventListener(["onChange","onReset"],function(){var a=grid._selection.getArray();save.display(a.length==1);if(a[0]){var rec=this.getCache().get(a[0]);var val=this.getFields().map("id").toHash(rec.get.$(rec));form.setValues(val);}
del_all.disabled(a.length==0);}.$(this));$ACL([save,save_new],function(self){var id=grid._selection.getArray()[0];var data=form.getValues();if(this.userData=="save")
data.id=id;self.getCache().save([data],function(){MSG.addMsg("info",$msgNR("NRecordsSaved",1));});}.$(null,this));$ACL(del_all,function(){var ids=grid._selection.getArray();this.getCache().remove(ids,function(){MSG.addMsg("info",$msgNR("NRecordsDeleted",ids.length));});}.$(this));this._focusedWidget=search;this.initialSize={x:0.6,y:0.6};};P._updateSelected=function(){var id=this.grid._selection.getArray()[0];if(id){var rec=this.getCache().get(id);if(rec){Object.merge(rec._data,this.form.getValues());this.getCache().callHooks("onChange",rec);}}};P._on_show=function(){this.grid.resetIDS(this.getCache().getAllIds());this.grid.displayPage(0);this.__doLayout();};})();(function(){MailIdentitiesDlg.inherits(MailObjectListDlg);function MailIdentitiesDlg(args){if(args){D.setDefaults(this,args);MailObjectListDlg.call(this,args);}};eval(Dynarch.EXPORT("MailIdentitiesDlg"));D.DEFAULT_ARGS={_title:["title",$msg("Identities")],_iconClass:["iconClass","IconIdentity"]};var GRID_COLS=[{id:"_grid_display",label:$msg("Identity"),fill:1,resizable:false,iconClass:"IconIdentity"},];P.getGridCols=function(){return GRID_COLS};var FIELDS=[{id:"server",label:"Server&:",type:"select",options:getServersSelect,value:null},{id:"default",label:"DefaultForServer",type:"checkbox"},{id:"name",label:"DisplayName&:"},{id:"email",label:"Email&:"},{id:"reply_to",label:"ReplyTo&:"},{id:"to_rules",label:"UseForRecipients&:",type:"textarea",valign:"top",rows:5},{id:"signature",label:"Signature&:",type:"textarea",valign:"top",rows:3}];P.getFields=function(){return FIELDS};P.getCache=function(){return Mail.ident_cache;};function getServersSelect(){var options=Mail.servers_cache.getAllIds().map(function(id){var srv=this.get(id);return{label:srv.getName().htmlEscape(),value:srv.id()};},Mail.servers_cache);options.unshift({value:null,label:"["+$msg("NoneSelected")+"]"});return options;};})();(function(){MailSummaryGrid.inherits(DlDataGrid);function MailSummaryGrid(args){if(args){DlDataGrid.call(this,args);this.registerEvents(["onDataRefresh"]);}};eval(Dynarch.EXPORT("MailSummaryGrid"));P._data_onRefresh=function(ids,phase){if(phase=="start"){if(this.loading)
this.loading.display(true);}else{if(this.loading)
this.loading.display(false);this.resetIDS(ids);this._display_ids(ids.slice(-this._rpp));this.parent.__doLayout();if(ids.length>0)
this.scrollToRecord(ids.peek());}
this.callHooks("onDataRefresh");};P._setFocusedStyle=function(focused){this.condClass(focused,"DlDataGrid-focus");};})();(function(){function mkAddr(addr){return addr.trim().split(/\t+/).join(", ");};function mkDate(time){var date=new Date();date.setTime(time*1000);return date.print("%A, %B %e, %Y / %l:%M%P");};var printData=null;var HEADERS=[{id:"subject",label:"Subject",disp:function(v){return String(v).bold()}},{id:"from",label:"From",disp:mkAddr},{id:"reply_to",label:"ReplyTo",disp:mkAddr},{id:"to",label:"To",disp:mkAddr},{id:"cc",label:"CC",disp:mkAddr},{id:"date",label:"Date",disp:mkDate}];Mail._printContinue=function(doc){doc.getElementById("information").innerHTML=$msgProps("info-print",{n:printData.length});var html=printData.map(function(m){var a=HEADERS.map(function(h){if(m[h.id])
return TMPL_ONE_HEADER({label:$msg(h.label),value:h.disp(m[h.id])});$CONTINUE();});var content=m.display.map(function(p){if(p.content_type=="text/plain")
return TMPL_TEXT_MESSAGE({body:p.content});return p.content;}).join("<br />");return TMPL_MESSAGE({headers:TMPL_HEADERS({headers:a.join("")}),body:content});}).join("<div class='DynarchPrintMessage-sep'></div>");doc.getElementById("dest").innerHTML=html;};var TMPL_ONE_HEADER=String.template("<tr><td class='Label'>$label:</td><td>$value</td></tr>");var TMPL_HEADERS=String.template("<div class='Headers'><table>$headers</table></div>");var TMPL_MESSAGE=String.template("<div class='DynarchPrintMessage'>$headers<div class='Body'>$body</div></div>");var TMPL_TEXT_MESSAGE=String.template("<div class='DynarchPlainTextMessage'>$body</div>");function _doPrint(data){printData=data;window.open(swApp.syncSWorld.xuhekiGetDocRequestURL(Mail.getURL("/print.html")));};Mail.printMessages=function(data){var dlg=new DlDialog({title:"Printing...",modal:true});var cont=new DlContainer({parent:dlg});cont.setStyle({padding:"10px"});var progress=new DlProgressBar({parent:cont,min:0,max:data.length,label:$msgProps("progress-fetchingData",{n:data.length})});dlg.setSize({x:340});dlg.show(true);var n=0;var messages=[];data.foreach(function(m){XuhekiRPC(function(ret){progress.setValue(++n);messages.push(ret);if(n>=data.length){dlg.destroy();_doPrint(messages);}},"mail.display_message",m.server,m.folder,m.msg_uid,m.part);});};})();(function(){MailServerDlg.inherits(SwMinDialog);function MailServerDlg(args){if(args){args.parent=null;D.setDefaults(this,args);SwMinDialog.call(this,args);}};eval(Dynarch.EXPORT("MailServerDlg"));D.DEFAULT_ARGS={_title:["title",$msg("AddIMAPServer")],_iconClass:["iconClass","IconTreeServer"],__modal:["modal",true],_winlist:["winlist",false],onCancel:["onCancel",null],onOK:["onOK",null]};var FIELDS=[{id:"host",label:"IMAPHost&:"},{id:"ssl",label:"UseSSL",type:"checkbox"},{id:"port",label:"Port&:",type:"spinner",size:"6",value:"143",min:1,max:65535},{id:"user",label:"IMAPUser&:"},{id:"pass",label:"IMAPPassword&:",type:"password"},{id:"hassieve",label:"HasManageSieve",type:"checkbox",onChange:function(form){form.getField("sieveport").enabled(this.checked());}},{id:"sieveport",label:"SievePort&:",type:"spinner",size:"6",value:"2000"},null,{id:"name",label:"ServerName&:"},{id:"email",label:"ServerEmail&:"},null,{id:"folder_inbox",label:"InboxFolder&:",value:"INBOX"},{id:"folder_sent",label:"SentFolder&:",value:"Sent"},{id:"folder_drafts",label:"DraftsFolder&:",value:"Drafts"},{id:"folder_trash",label:"TrashFolder&:",value:"Trash"},{id:"folder_spam",label:"SpamFolder&:",value:"Spam"}];P.initDOM=function(){D.BASE.initDOM.apply(this,arguments);var box=new DlVbox({parent:this,borderSpacing:5});this.form=new MailGenericForm({fields:FIELDS,parent:box});var spamFolder=this.form.getField("folder_spam");spamFolder.readonly(true);this.form.getField("sieveport").disabled(true);var info=new DlWidget({parent:box,className:"center-text"});info.setContent($msg("MissingFoldersAutocreated"));box.addSeparator();box=new DlHbox({parent:box,className:"HBoxPadLeft"});box.addFiller();this.okBtn=$BUTTON(box,"SaveServer",8,this.saveServer.$(this));cancel=$BUTTON(box,"Cancel",8,(this.onCancel||this.destroy).$(this));this._focusedWidget=this.form.getField("host");var ssl=this.form.getField("ssl");ssl.addEventListener("onChange",function(ssl){var port=this.form.getField("port");if(ssl.checked()&&port.getValue()==143)
port.setValue(993);if(!ssl.checked()&&port.getValue()==993)
port.setValue(143);}.$(this,ssl));var host=this.form.getField("host");host.addEventListener("onChange",function(host){var name=this.form.getField("name");if(!/\S/.test(name.getValue()))
name.setValue(host.getValue());}.$(this,host));var user=this.form.getField("user");user.addEventListener("onChange",function(user){var name=this.form.getField("name");if(name.getValue().indexOf(host.getValue())>=0){var str=user.getValue();if(!/@/.test(str))
str+="@"+host.getValue();name.setValue(str);var email=this.form.getField("email");if(!/\S/.test(email.getValue()))
email.setValue(str);}}.$(this,user));};D.newServer=function(args){var dlg=new MailServerDlg(args||{});dlg.show(true);};P.saveServer=function(){MSG.addMsg("info",$msg("info-tryingToSaveServer"));this.okBtn.disabled(true);this.okBtn.setIconClass("IconRefreshAnim");XuhekiRPC(function(ret){this.okBtn.disabled(false);this.okBtn.setIconClass(null);this.form.showValidationErrors(ret.validation_error);if(ret.done=="OK"){this.destroy();MSG.addMsg("info",$msg("info-connectedSuccessfully"));var s=new MailServer({recordSet:this,data:ret.server});Mail.servers_cache.insert(s,s.get("order"));s.fetch_folders(function(folders){Mail.tree_group.setValue([folders[0].getFullId()],true);Mail.reindex_mail([s],[s.get("folder_inbox"),s.get("folder_sent")]);if(this.onOK)
this.onOK(s);}.clearingTimeout(10,this));}else if(ret.error){MSG.addMsg("error",$smsg(ret.error));}}.$(this),"apache.save_server",this.form.getValues());};})();(function(){function doChange(dlg,form,cont){var val=form.getValues();if(val.newpass.length<6){MSG.addMsg("error",$msg("err-passwordTooShort"));form.getField("newpass").focus();return;}
if(val.newpass!=val.confirm){MSG.addMsg("error",$msg("err-passwordConfirmMismatch"));form.getField("confirm").clear().focus();return;}
XuhekiRPC(function(ret){if(ret=='OK'){MSG.addMsg("info",$msg("info-yourPasswordWasChanged"));dlg.destroy();cont&&cont();}else if(ret.error){MSG.addMsg("error",$smsg(ret.error));}},"apache.change_password",val);};Mail.changePassword=function(cont,canCancel,parent){var fields=[{id:"password",type:"password",label:"CurrentPassword&:"},null,{id:"newpass",type:"password",label:"NewPassword&:"},{id:"confirm",type:"password",label:"ConfirmNewPassword&:"}];var dlg=new DlDialog({parent:parent,title:$msg("ChangePassword"),modal:true,quitBtn:canCancel?"destroy":null});var box=new DlVbox({parent:dlg,borderSpacing:5});var form=new MailGenericForm({fields:fields,parent:box});box.addSeparator();box=new DlHbox({parent:box,className:"HBoxPadLeft"});box.addFiller();$BUTTON(box,"OK",5,doChange.$C(dlg,form,cont));if(canCancel)
$BUTTON(box,"Cancel",5,dlg.destroy.$(dlg));dlg._focusedWidget=form.getField("password");dlg.show(true);};})();(function(){var DEFAULTS={skin:"default",composer_mode:"html",clear_cache:false};var PREFS;Mail.prefs={fetch_all:function(){XuhekiRPC(function(ret){PREFS=ret;initPrefs(ret);}.$(this),"apache.get_prefs");},get:function(key){return(PREFS&&key in PREFS)?PREFS[key]:DEFAULTS[key]}};function setColorTheme(skin){var link=document.getElementById("skin-"+skin);if(link){skin=link.id;Array.$(document.getElementsByTagName("link")).foreach(function(link){if(/^skin-/.test(link.id)){link.disabled=true;if(link.id==skin)
link.disabled=false;}});}};function initPrefs(){var colors=PREFS&&PREFS.skin;if(colors)
setColorTheme(colors);};MailPrefsDlg.inherits(SwMinDialog);function MailPrefsDlg(args){Object.merge(args,{title:$msg("XuhekiPreferences"),resizable:true,iconClass:"IconConfigure",quitBtn:true});SwMinDialog.call(this,args);};eval(Dynarch.EXPORT("MailPrefsDlg"));P._my_hide=function(){PREFS=this.orig_prefs;this.orig_prefs=null;initPrefs();this.hide();};P.initDOM=function(){D.BASE.initDOM.apply(this,arguments);var layout=new DlLayout({parent:this,outerSpace:5});var cont=this.cont=new DlContainer({scroll:true});var box=new DlHbox({className:"HBoxPadLeft"});$BUTTON(box,"ChangePassword",null,Mail.changePassword.$C(null,true,this));box.addFiller();$BUTTON(box,"OK",5,function(){XuhekiRPC(null,"apache.save_prefs",PREFS);this.orig_prefs=null;this.hide();}.$(this));var cancel=$BUTTON(box,"Cancel",5,this._my_hide.$(this));this.addEventListener("onQuitBtn",this._my_hide.$(this));layout.packWidget(box,{pos:"bottom"});layout.packWidget($H_SEP(),{pos:"bottom",before:4,after:4});layout.packWidget(cont,{pos:"top",fill:"*"});this.createPrefWidgets();this.initialSize={x:0.5,y:0.4};};P.createPrefWidgets=function(){this.form=new MailGenericForm({fields:FIELDS,parent:this.cont,fillParent:true});};P._my_onShow=function(){D.BASE._my_onShow.apply(this,arguments);this.form.resetFields();this.orig_prefs=Object.makeDeepCopy(PREFS);};function getDefault(){return PREFS&&this in PREFS?PREFS[this]:DEFAULTS[this]};function setPrefValue(key){if(PREFS)PREFS[key]=this.getValue()};var FIELDS=[{id:"skin",label:"ColorTheme&:",type:"select",options:getColorsSelect,value:getDefault.$("skin"),onChange:function(){setColorTheme(PREFS.skin=this.getValue())}},{id:"composer_mode",label:"DefaultEditorMode&:",type:"radiogroup",options:[{value:"html",label:$msg("RichText(HTML)")},{value:"text",label:$msg("PlainText")},{value:"guess",label:$msg("Guess")}],value:getDefault.$("composer_mode"),onChange:setPrefValue.$(null,"composer_mode")},null,{id:"clear_cache",label:"ClearCacheOnLogout",type:"checkbox",value:getDefault.$("clear_cache"),onChange:setPrefValue.$(null,"clear_cache")}];function getColorsSelect(){var a=window.COLOR_THEMES||[];a.unshift({id:"default",name:$msg("skin-default")});return a.map(function(el){if(el)el={value:el.id,label:$msg("skin-"+el.id)||el.name.htmlEscape()};return el;});};})();(function(){eval(DynarchDomUtils.importCommonVars());(function(){MailFiltersDlg.inherits(SwMinDialog);function MailFiltersDlg(args){Object.merge(args,{title:$msg("EditFilters"),resizable:true,iconClass:"IconFilter",quitBtn:true});SwMinDialog.call(this,args);};eval(Dynarch.EXPORT("MailFiltersDlg"));var ITEM_CLASSES={active:"BtnListItem-active",hover:"BtnListItem-hover",checked:"BtnListItem-1",unchecked:"BtnListItem-0",empty:"BtnListItem-empty",disabled:"BtnListItem-disabled"};P.initDOM=function(){D.BASE.initDOM.apply(this,arguments);this._onClose=this._onClose.$(this);var layout=new DlLayout({parent:this,outerSpace:5});this.tabs=new DlTabs({});this.tab_hash={};Mail.servers_cache.getAllRecords().foreach(this._createServerTab,this);layout.packWidget(this.tabs,{pos:"top",fill:"*"});var first=Mail.getSelectedServer();if(first)
first=this.tab_hash[first.id()];if(first)
first=first.index;this.tabs.showPane(first||0);this.addEventListener("onQuitBtn",this._onClose);this.initialSize={x:0.8,y:0.8};Mail.servers_cache.addEventListener({onInsert:function(srv,i){if(i==null)
i=this.tabs.getNotebook().length();this._createServerTab(srv,i);}.$(this),onDelete:function(id){var info=this.tab_hash[id];if(info){var pane=this.tabs.getCurrentPane(),is_same=pane===info.layout,len=this.tabs.getNotebook().length();if(len==1)
this.killInstance();else{if(is_same){var idx=this.tabs.getCurrentPaneIndex()-1;if(idx<0)
idx=1;this.tabs.showPane(idx);}
info.layout.destroy();}}}.$(this)},null,this);};var SIEVEFIELDS=[{id:"host",label:"Server&:"},{id:"port",label:"Port&:",type:"spinner",size:"6",value:"2000",min:1,max:65535},{id:"user",label:"User&:"},{id:"pass",label:"Password&:",type:"password"}];P._createServerTab=function(srv,i){var layout=new DlLayout({});this.tabs.addTab(layout,srv.getName().htmlEscape());layout._tab.setIconClass("IconTreeServer");this.tab_hash[srv.id()]={layout:layout,index:i};if(srv.get("hassieve"))
this._createFilterPage(layout,srv,i);else layout.listenOnce("onNotebookShow",function(){var dlg=new DlDialog({parent:layout,title:$msg("ManageSieveServer"),modal:true,noShadows:true});var vbox=new DlVbox({parent:dlg,borderSpacing:5});new DlWidget({parent:vbox}).setContent($msg("info-ManageSieveDlg"));var form=new MailGenericForm({fields:SIEVEFIELDS,parent:vbox,align:"center"});vbox.addSeparator();var buttons=new DlHbox({parent:vbox,className:"HBoxPadLeft"});buttons.addFiller();var save_btn=new DlButton({focusable:true,label:$W($msg("Save")),parent:buttons});dlg._focusedWidget=save_btn;dlg.show(true);form.setValue({host:srv.get("host"),port:2000,user:srv.get("user")});$ACL(save_btn,function(){save_btn.disabled(true);save_btn.setIconClass("IconRefreshAnim");XuhekiRPC(function(ret){save_btn.disabled(false);save_btn.setIconClass(null);form.showValidationErrors(ret.validation_error);if(ret=="OK"){srv.set("hassieve",1);dlg.destroy();this._createFilterPage(layout,srv,i);layout.doLayout();}else if(ret.error){alert(ret.error);}}.$(this),"apache.sieve_save_server",srv.id(),form.getValues());}.$(this));}.clearingTimeout(5,this));};P._createFilterPage=function(layout,srv,tabindex){var left=new DlLayout({});var right=new DlLayout({});layout.packWidget(left,{pos:"left",fill:200});layout.packWidget(new DlResizeBar({widget:left}),{pos:"left"});layout.packWidget(right,{pos:"right",fill:"*"});this._createScriptList(left,srv,tabindex);this._createFilterView(right,srv,tabindex);this._requestScripts(srv);};P._createScriptList=function(layout,srv,tabindex){var info=this.tab_hash[srv.id()];var list=info.list=new DlContainer({className:"MailBorderedPane",scroll:true});var tb=new DlContainer({className:"DlToolbar DlToolbar2"});var buttons=new DlHbox({parent:tb});new DlLabel({parent:buttons,label:$msg("AvailableScripts&:")});buttons.addFiller();var add_btn=new DlButton({parent:buttons,tooltip:$msg("Add"),iconClass:"IconAdd"});var del_btn=new DlButton({parent:buttons,tooltip:$msg("Remove"),iconClass:"IconRemove"});var act_btn=info.act_btn=new DlButton({parent:buttons,tooltip:$msg("Activate"),iconClass:"IconFlag",type:DlButton.TYPE.TWOSTATE});layout.packWidget(tb,{pos:"top",after:5});layout.packWidget(list,{pos:"top",fill:"*"});$ACL(add_btn,function(){var dlg=new DlDialog({parent:info.layout,title:$msg("NameNewScript"),modal:true,quitBtn:"destroy",noShadows:true});var hbox=new DlHbox({parent:dlg,borderSpacing:2});hbox.setStyle({margin:"5px"});var entry=new DlEntry({parent:hbox});var ok=new DlButton({parent:hbox,focusable:true,label:$W($msg("OK"),"4em")});dlg._focusedWidget=entry;entry.addEventListener("onKey-ENTER",ok.keyClicked.$(ok));$ACL(ok,function(){var name=entry.getValue();if(info.scriptGroup.getByValue(name)){MSG.addMsg("error",$msgProps("err-ScriptAlreadyExists",{name:name}));entry.focus();}else{XuhekiRPC(function(ret){if(ret=="OK"){this._createScriptItem(info,name);MSG.addMsg("info",$msgProps("info-AddedSieveScript",{name:name}));dlg.destroy();info.scriptGroup.setValue([name],true);}else if(ret.error){alert(ret.error);entry.focus();}}.$(this),"apache.sieve_save_script",srv.id(),name,SCRIPT_TEMPLATE({script:"",serial:"[]"}));}}.$(this));dlg.show(true);}.$(this));$ACL(del_btn,function(){var name=info.scriptGroup.getValue()[0];ConfirmDialog.ask({parent:info.layout,noShadows:true,text:$msgProps("warning-DeleteSieveScript",{name:name}),onOK:function(){XuhekiRPC(function(ret){if(ret=="OK"){var item=info.scriptGroup.getByValue(name);if(item)
item.destroy();}else if(ret.error)
alert(ret.error);}.$(this),"apache.sieve_delete_script",srv.id(),name);}.$(this)});}.$(this));act_btn.addEventListener("onChange",function(){var name=info.scriptGroup.getValue()[0];var activate=this.checked();XuhekiRPC(function(ret){if(ret=="OK"){if(info.activeScript)
info.activeScript.setIconClass("_");info.activeScript=activate?info.scriptGroup.getByValue(name):null;if(info.activeScript)
info.activeScript.setIconClass("IconFlag");}else if(ret.error){alert(ret.error);}},"apache.sieve_activate_script",srv.id(),activate?name:"");});};P._createFilterView=function(layout,srv,tabindex){var info=this.tab_hash[server_id(srv)];var tabs=info.tabs=new DlTabs({});info.scriptEntry=new DlEntry({type:"textarea",noWrap:true,className:"CodeEntry"});var filterView=this._createRulesView(srv,tabindex);tabs.setTabAlign("right");tabs.addTab(filterView,$msg("FilterRules"));tabs.addTab(info.scriptEntry,$msg("SieveScript"));var buttons=new DlHbox({});info.save_btn=new DlButton({parent:buttons,disabled:true,focusable:true,label:$W($msg("Save"))});buttons.addSpace();info.undo_btn=new DlButton({parent:buttons,disabled:true,focusable:true,label:$W($msg("Revert"))});buttons.addFiller();var close=new DlButton({parent:buttons,focusable:true,label:$W($msg("Close"))});$ACL(close,this._onClose);layout.packWidget(buttons,{pos:"bottom",after:5});layout.packWidget(tabs,{pos:"top",fill:"*"});tabs.showPane(0);tabs.addEventListener("onChange",function(newPage,oldPage){var errors=[];if(newPage==1&&!info.filterView.disableFilters){info.scriptEntry.setValue(filterView.render(errors));}
errors.foreach(function(e){MSG.addMsg("error",$msgProps("error-in-filter",e));});});$ACL(info.save_btn,function(){var errors=[];if(tabs.getCurrentPaneIndex()==0){if(!info.filterView.disableFilters)
info.scriptEntry.setValue(filterView.render(errors));tabs.disableHooks("onChange");tabs.showPane(1);tabs.enableHooks("onChange");}
if(errors.length==0){[info.save_btn,info.undo_btn].map("xhk_busy",true);XuhekiRPC(function(ret){[info.save_btn,info.undo_btn].map("xhk_busy",false);if(ret=="OK"){MSG.addMsg("info",$msg("FilterSaved"));}else if(ret.error){alert(ret.error);}},"apache.sieve_save_script",srv.id(),info.scriptGroup.getValue()[0],info.scriptEntry.getValue());}else{errors.foreach(function(e){MSG.addMsg("error",$msgProps("error-in-filter",e));});}});$ACL(info.undo_btn,this._getSelectedScript.$(this,srv));tabs.disabled(true);};P._createRulesView=function(srv,tabindex){var info=this.tab_hash[server_id(srv)];return info.filterView=new _FiltersView({server:srv,dialog:this,info:info});};P._getSelectedScript=function(srv){var info=this.tab_hash[server_id(srv)];var name=info.scriptGroup.getValue()[0];[info.save_btn,info.undo_btn].map("disabled",true);if(name){[info.save_btn,info.undo_btn].map("xhk_busy",true);XuhekiRPC(function(ret){[info.save_btn,info.undo_btn].map("xhk_busy",false);info.scriptEntry.setValue(ret);info.filterView.restore(ret);info.tabs.disabled(false);}.$(this),"apache.sieve_get_script",srv.id(),name);info.act_btn.checked(info.activeScript&&name==info.activeScript.getValue(),true);}else{info.filterView.cont.destroyChildWidgets();info.tabs.disabled(true);}};P._onClose=function(){this.hide();};P._requestScripts=function(srv){if(srv.get("hassieve"))
XuhekiRPC(this._fillServerFilters.$(this,srv),"apache.sieve_list_scripts",srv.id());};P._fillServerFilters=function(srv,ret){var self=this;var info=this.tab_hash[server_id(srv)];var list=info.list;try{list.destroyChildWidgets();}catch(ex){swApp.log("list.destroyChildWidgets() failed.");}
(info.scriptGroup=DlRadioGroup.get()).addEventListener("onChange",this._getSelectedScript.$(this,srv));ret.scripts.foreach(function(name){var active=name==ret.active,cb=this._createScriptItem(info,name,active);if(active)
cb.checked(true);},this);};P._createScriptItem=function(info,name,active){var cb=new DlButton({parent:info.list,label:name,value:name,group:info.scriptGroup,type:DlAbstractButton.TYPE.TWOSTATE,classes:ITEM_CLASSES,className:"BtnListItem",iconClass:active?"IconFlag":"_",alwaysCheck:true});if(active)
info.activeScript=cb;return cb;};P.getServerInfo=function(srv){return this.tab_hash[server_id(srv)];};function server_id(srv){if(srv instanceof MailServer)
srv=srv.id();return srv;};})();_FiltersView.inherits(DlLayout);function _FiltersView(args){_FiltersView.setDefaults(this,args);DlLayout.call(this,args);};(function(){var D=_FiltersView,P=D.prototype;D.DEFAULT_ARGS={server:["server",null],dialog:["dialog",null],info:["info",null]};P.initDOM=function(){D.BASE.initDOM.apply(this,arguments);var tb=new DlContainer({className:"DlToolbar DlToolbar2 MailFilterRightBar"});var buttons=this.toolbar=new DlHbox({parent:tb});var add_btn=new DlButton({parent:buttons,label:$msg("AddFilter"),iconClass:"IconAdd"});var del_btn=new DlButton({parent:buttons,label:$msg("RemoveFilter"),iconClass:"IconRemove",disabled:true});buttons.addSeparator("wide-separator");var up_btn=new DlButton({parent:buttons,label:$msg("MoveUp"),iconClass:"IconUp",disabled:true});var down_btn=new DlButton({parent:buttons,label:$msg("MoveDown"),iconClass:"IconDown",disabled:true});var cont=this.cont=new DlContainer({className:"MailBorderedPane FiltersCont"});this.packWidget(tb,{pos:"top",after:5,fill:getSize(tb).y});this.packWidget(cont,{pos:"bottom",fill:"*"});this.group=DlRadioGroup.get();this.group.addEventListener("onChange",function(){[up_btn,down_btn,del_btn].map("disabled",this.getSelected().length==0);});$ACL(add_btn,function(){this.group.getButtons().map("toggleVisible",false);var w=new _FilterWidget({parent:cont,visible:true,group:this.group,script:this});cont.getContentElement().scrollTop=cont.getContentElement().scrollHeight;w.focusTitle();w.checked(true);}.$(this));$ACL(del_btn,function(){this.group.getSelected()[0].destroy();}.$(this));$ACL(up_btn,function(){var w=this.group.getSelected()[0],el=w.getElement(),prev=el.previousSibling;if(prev)
DOM.swapNodes(el,prev);}.$(this));$ACL(down_btn,function(){var w=this.group.getSelected()[0],el=w.getElement(),next=el.nextSibling;if(next)
DOM.swapNodes(next,el);}.$(this));};P.render=function(errors){var requires={},cont=this.cont.getContentElement(),widget,filters=[],serial=[],tmp,script;for(var i=cont.firstChild;i;i=i.nextSibling){var widget=DlWidget.getFromElement(i);if(widget&&widget instanceof _FilterWidget){tmp={};try{script=widget.render(requires,tmp);}catch(e){if(e instanceof ERR){var error={name:widget.getName(),error:$msg(e.msg)||e.msg};errors.push(error);script=TMPL_FILTER_ERROR(error);}}
filters.push(script);serial.push(tmp);}}
requires=Array.hashKeys(requires);script=requires.length>0?"require "+quoteArray(requires)+";\n\n":"";script+=filters.join("\n\n");return TMPL({script:script,serial:DlJSON.encode(serial)});};P.addFilter=function(v,s){var args={parent:this.cont,visible:v,group:this.group,script:this};if(s)
args.indata=s;return new _FilterWidget(args);};P.restore=function(serial){this.cont.destroyChildWidgets();var start=serial.indexOf(PREFIX),stop=serial.indexOf(SUFFIX);var code;if(start>=0&&stop>0){serial=serial.substr(start,stop);var m=/^\s*#[#\t\x20]*SIEVE\s*=\s*(.*)/m.exec(serial);code=m[1];}
if(!code){this.toolbar.disabled(true);var vbox=new DlVbox({parent:this.cont,align:"center",className:"DlNotebook",borderSpacing:10});vbox.setStyle({marginTop:"10%"});new DlWidget({parent:vbox}).setContent($msg("err-CantParseSieveScript"));vbox.addSeparator();this.disableFilters=true;$ACL(new DlButton({parent:vbox,label:$msg("TakeOver")}),function(){this.cont.destroyChildWidgets();this.addFilter(true).checked(true);this.toolbar.disabled(false);this.disableFilters=false;}.$(this));return;}
this.toolbar.disabled(false);serial=code.decodeJSON();serial.foreach(this.addFilter.$(this,false));};var PREFIX="### BEGIN Sieve Script Serialization by Xuheki\n",SUFFIX="### END Sieve Script Serialization by Xuheki\n";var TMPL=SCRIPT_TEMPLATE=String.template("### ",$msg("-SieveScriptPreamble"),"\n\n","$script\n\n","### Please don't edit the following comment!\n",PREFIX,"###\n","### SIEVE = $serial\n","###\n",SUFFIX);var TMPL_FILTER_ERROR=String.template("### ERROR in filter \x22$name\x22:\n","#   $error");})();_FilterWidget.inherits(DlContainer);function _FilterWidget(args){_FilterWidget.setDefaults(this,args);DlContainer.call(this,args);};(function(){var D=_FilterWidget,P=D.prototype;D.DEFAULT_ARGS={visible:["visible",false],script:["script",null],group:["group",null],_value:["value",null],_checked:["checked",null],_indata:["indata",{name:$msg("UnnamedFilter"),type:"and",active:true,stop:true,rules:[],actions:[]}]};P.initDOM=function(){D.BASE.initDOM.apply(this,arguments);this.registerEvents(["onChange"]);var hbox=new DlHbox({parent:this,className:"DlToolbar"});var toggle_btn=this.toggle_btn=new DlButton({parent:hbox,iconClass:"IconToggle1"});toggle_btn.on=true;$ACL(toggle_btn,this.toggleVisible.$(this,null));this._cbActive=new DlCheckbox({parent:hbox,checked:this._indata.active,tooltip:$msg("Enabled")});var label=this.label=new DlWidget({focusable:2,parent:hbox,tagName:"input",className:"Label"});var input=label.getElement();input.parentNode.style.width="100%";input.value=this._indata.name;hbox.addSeparator("wide-separator");label.focus=function(){this.getElement().focus();DlWidget.prototype.focus.apply(this,arguments)};label.blur=function(){this.getElement().blur();DlWidget.prototype.blur.apply(this,arguments)};var del_btn=new DlButton({parent:hbox,iconClass:"IconCloseFilter",tooltip:$msg("Remove")});$ACL(del_btn,this.destroy.$(this));var cont=this.cont=new DlContainer({parent:this,className:"FilerInfoCont"});cont.display(toggle_btn.on);var hbox=new DlHbox({parent:cont,className:"HBoxPadRight",align:"right"});var cb=new DlCheckbox({parent:cont,focusable:true,checked:this._indata.active,label:$msg("ThisFilterIsEnabled")});this._cbActive.addEventListener("onChange",cb.keyClicked.$(cb));cb.addEventListener("onChange",function(cb){this._cbActive.checked(cb.checked(),true);}.$(this,cb));this._stop_cb=new DlCheckbox({parent:cont,focusable:true,checked:this._indata.stop,label:$msg("StopProcessingIfFilterMatch")});new DlLabel({parent:hbox,label:$msg("Match&:")});var group=DlRadioGroup.get();new DlRadioButton({parent:hbox,focusable:true,label:$msg("MatchAllOf"),tooltip:$msg("info-MatchAllOf"),group:group,value:"and"});new DlRadioButton({parent:hbox,focusable:true,label:$msg("MatchAnyOf"),tooltip:$msg("info-MatchAnyOf"),group:group,value:"or"});new DlRadioButton({parent:hbox,focusable:true,label:$msg("MatchAllMessages"),tooltip:$msg("info-MatchAllMessages"),group:group,value:"all"});this.join_type_group=group;group.setValue([this._indata.type]);var rules_fs=this.rules_fs=new DlFieldset({parent:cont,label:$msg("Rules")});var actions_fs=this.actions_fs=new DlFieldset({parent:cont,label:$msg("Actions")});rules_fs.display(this._indata.type!="all");group.addEventListener("onChange",function(){var all=this.getValue()[0]=="all";rules_fs.display(!all);});if(!this.visible)
this.toggleVisible();this.addEventListener({onChange:_onChange,onMouseDown:_onMouseDown});if(this.group)
this.group.addWidget(this);if(this._indata.rules.length==0)
this.addRule();else
this._indata.rules.foreach(this.addRule,this);if(this._indata.actions.length==0)
this.addAction();else
this._indata.actions.foreach(this.addAction,this);};P.isActive=function(){return this._cbActive.checked();};function _onChange(){if(this.group)
this.group.callHooks("onChange",this);};function _onMouseDown(){this.checked(true);};P.toggleVisible=function(vis){var b=this.toggle_btn;b.on=vis!=null?!!vis:!b.on;this.cont.display(b.on);b.setIconClass(b.on?"IconToggle1":"IconToggle0");};P.focusTitle=function(){this.label.focus();var input=this.label.getElement();DOM.setSelectionRange(input,0,input.value.length);};P.addRule=function(s){var args={parent:this.rules_fs,filter:this};if(s)
args.indata=s;new _FilterRuleWidget(args);};P.addAction=function(s){var args={parent:this.actions_fs,filter:this};if(s)
args.indata=s;new _FilterActionWidget(args);};P.checked=function(check,nohooks){if(arguments.length>0&&check!==this._checked){this.condClass(check,"_FilterWidgetSelected");this._checked=check;if(!nohooks)
this.callHooks("onChange");}
return this._checked;};P.value=function(v){if(arguments.length>0)
this._value=v;return this._value;};P.getName=function(){return this.label.getElement().value};P.render=function(requires,serial){if(!requires)
requires={};Object.merge(serial,{name:this.getName(),rules:[],actions:[],type:this.join_type_group.getValue()[0],stop:this._stop_cb.checked(),active:this.isActive()});var rules=[],actions=[],tmp,i,widget;tmp=this.rules_fs.getContentElement();for(i=tmp.firstChild;i;i=i.nextSibling){widget=DlWidget.getFromElement(i);if(widget&&widget instanceof _FilterRuleWidget){var tmp={};rules.push(widget.render(requires,tmp));serial.rules.push(tmp);}}
if(serial.type=="all")
rules=["true"];tmp=this.actions_fs.getContentElement();for(i=tmp.firstChild;i;i=i.nextSibling){widget=DlWidget.getFromElement(i);if(widget&&widget instanceof _FilterActionWidget){var tmp={};actions.push(widget.render(requires,tmp));serial.actions.push(tmp);}}
if(serial.stop){actions.push("stop");serial.stop=true;}
var code=TMPL[rules.length==1?"one":serial.type]({name:this.getName(),conditions:rules.join(",\n          "),body:actions.join(";\n    ")});if(!this.isActive())
code="### "+$msg("-SieveDisabledFilter")+"\n"+code.replace(/^/gm,"# ");return code;};var PREFIX="# ----- $name ----- #\n",BODY=" {\n    $body;\n}",TMPL={one:String.template(PREFIX,"if $conditions",BODY),and:String.template(PREFIX,"if allof( $conditions )",BODY),or:String.template(PREFIX,"if anyof( $conditions )",BODY),all:String.template(PREFIX,"if true",BODY)};})();_FilterRuleWidget.inherits(DlHbox);function _FilterRuleWidget(args){_FilterRuleWidget.setDefaults(this,args);DlHbox.call(this,args);};(function(){var HEADERS={subject:["Subject","string"],from:["From","string_or_address"],to:["To","string_or_address"],to_or_cc:["ToOrCC","string_or_address"],sender:["Sender","string_or_address"]};var MATCH_BY_TYPE={"string":"contains starts_with ends_with is matches".qw(),"string_or_address":"is_address contains starts_with ends_with is matches".qw(),"date":"is_before is_after".qw()};function render_rule(requires,serial,type,header,value){Object.merge(serial,{type:type.test,header:header,value:value});if(header=="to_or_cc")
header=["To","CC"];if(type.render instanceof Function)
return type.render(requires,header,value);return type.tmpl({header:quoteArray(header),value:quote(value)});};var MATCHES={contains:{label:"Contains",test:"contains",tmpl:String.template('header :contains ${header} "${value}"')},starts_with:{label:"StartsWith",test:"starts_with",tmpl:String.template('header :matches ${header} "${value}*"')},ends_with:{label:"EndsWith",test:"ends_with",tmpl:String.template('header :matches ${header} "*${value}"')},is:{label:"Is",test:"is",tmpl:String.template('header :is ${header} "${value}"')},matches:{label:"Matches",test:"matches",tmpl:String.template('header :matches ${header} "${value}"')},is_address:{label:"IsAddress",test:"is_address",tmpl:String.template('address :all :is ${header} "${value}"')},is_before:{label:"IsBefore",test:"is_before"},is_after:{label:"IsAfter",test:"is_after"}};var D=_FilterRuleWidget,P=D.prototype;D.DEFAULT_ARGS={__addClassName:["className","DlToolbar HBoxPadRight"],filter:["filter",null],_indata:["indata",null]};var SELECT_OPTIONS=[];for(var i in HEADERS)
SELECT_OPTIONS.push({label:$msg(HEADERS[i][0]),value:i});var MENUS={};function getTestMenu(type){var m=MENUS[type];if(!m){m=MENUS[type]=new DlHbox({});var left=new DlVMenu({parent:m});m.addSeparator("wide-separator");var right=new DlVMenu({parent:m});var tests=MATCH_BY_TYPE[type]||MATCH_BY_TYPE.string;tests.foreach(function(t){var test=MATCHES[t];new DlMenuItem({parent:left,label:$msg(test.label).toLowerCase(),data:{test:test}}).addEventListener("onSelect",_testItemClicked);new DlMenuItem({parent:right,label:$msg(test.label+"!").toLowerCase(),data:{test:test,negate:true}}).addEventListener("onSelect",_testItemClicked);});}
return m;};function _testItemClicked(name,item,args){var data=item.userData;args.widget.parent.setComparator(data.test,data.negate);};P.setComparator=function(test,negate){if(typeof test=="string")
test=MATCHES[test];var label=test.label;if(negate)
label+="!";var c=this.comparator;c.getButton().label($msg(label).toLowerCase());c.userData=test;c.negate=negate;};P.initDOM=function(){D.BASE.initDOM.apply(this,arguments);var select=this.select=new DlRadioSelect({parent:this,options:Object.makeDeepCopy(SELECT_OPTIONS),value:"subject"});var comparator=this.comparator=new DlButtonMenu({parent:this,label:$msg("Is").toLowerCase(),connected:true,data:MATCHES.is,className:"SieveComparatorButton"});var validators=[];var valueEntry=this.valueEntry=new DlEntry({parent:this,validators:validators});valueEntry.getParentNode().style.width="100%";valueEntry.setStyle({width:"100%"});valueEntry.getInputElement().parentNode.style.width="100%";valueEntry.getInputElement().style.width="98%";var td=CE("td",null,null,valueEntry.getElement().rows[0]);var sel_btn=new DlButton({parent:valueEntry,label:"...",appendArgs:td,className:"FilterValueSelector"});sel_btn.display(false);select.getMenu().addSeparator();var custom=new DlRadioButton({parent:select.getMenu(),label:$msg("CustomHeader&..."),group:select._radioGroup,value:"-custom"});$ACL(custom,function(){DlPopup.clearAllPopups();var dlg=new DlDialog({parent:this.getParent(_FilterWidget),modal:true,title:$msg("EnterHeaderName"),noShadows:true,quitBtn:"destroy"});var box=new DlHbox({parent:dlg,borderSpacing:5});var entry=new DlEntry({parent:box});var ok=new DlButton({parent:box,focusable:true,label:$W($msg("OK"),"5em")});entry.addEventListener("onKey-ENTER",ok.keyClicked.$(ok));$ACL(ok,function(){this.setHeader(entry.getValue());dlg.destroy();}.$(this));dlg._focusedWidget=entry;dlg.show(true);}.$(this));select.addEventListener("onChange",function(oldval,newval){var t1=HEADERS[oldval],t2=HEADERS[newval];t1=t1?t1[1]:"string";t2=t2?t2[1]:"string";if(t1!=t2){comparator.getButton().label($msg("Is"));comparator.userData=MATCHES.is;valueEntry.clear();}
sel_btn.display(t2=="date");if(t2=="date")
validators.pushUnique(DATE_VALIDATOR);else
validators.remove(DATE_VALIDATOR);});comparator.setMenu(function(){var type=HEADERS[select.getValue()]||HEADERS.subject;return getTestMenu(type[1]);});$ACL(sel_btn,function(ev){var popup,t=HEADERS[select.getValue()];t=t?t[1]:"string";if(t=="date"){valueEntry.validate();var date=DATE_VALIDATOR._date;popup=getPopupCalendar(date);popup.addEventListener("onSelect",function(cleared){if(!cleared){valueEntry.setValue(this.date.print("%Y-%m-%d"));DlPopup.clearAllPopups();}});}
if(popup){var p=this._getContextMenuPopup();p.popup({timeout:0,content:popup,align:BROWSE_ALIGN,anchor:valueEntry.getElement(),isContext:true,widget:valueEntry});ev._justFocusedWidget=p;}});var add_btn=new DlButton({parent:this,iconClass:"IconAdd",tooltip:$msg("AddRule")});DOM.addClass(add_btn.getParentNode(),"NoPadding");var del_btn=new DlButton({parent:this,iconClass:"IconRemove",tooltip:$msg("RemoveRule")});DOM.addClass(del_btn.getParentNode(),"NoPadding");$ACL(del_btn,function(){if(this.parent.children().length==1){MSG.addMsg("warning",$msg("WontRemoveLastItem"));}else{this.destroy();}}.$(this));$ACL(add_btn,function(){this.filter.addRule();}.$(this));if(this._indata){this.setHeader(this._indata.header);this.setComparator(this._indata.type,this._indata.not);valueEntry.setValue(this._indata.value);}};P.setHeader=function(v){var select=this.select;if(!HEADERS[v]){select.setValue("-custom");select.setValue(v);v=v.htmlEscape();select.getButton().label(v);var tmp=new DlButton({label:v});v=getSize(tmp).x;if(v>select.getButton().getSize().x)
select.getButton().setSize({x:v});tmp.destroy();}else
select.setValue(v);};P.render=function(requires,serial){var test=this.comparator.userData;if(!test)
throw new ERR("err-MustSelectTest");var rule=render_rule(requires,serial,test,this.select.getValue(),this.valueEntry.getValue());if(this.comparator.negate){rule="not "+rule;serial.not=true;}
return rule;};})();_FilterActionWidget.inherits(DlHbox);function _FilterActionWidget(args){_FilterActionWidget.setDefaults(this,args);DlHbox.call(this,args);};(function(){var D=_FilterActionWidget,P=D.prototype;D.DEFAULT_ARGS={__addClassName:["className","DlToolbar HBoxPadRight"],filter:["filter",null],_indata:["indata",{action:"keep",value:"",vacation:null}]};var SELECT_OPTIONS=[{label:$msg("KeepInInbox"),value:"keep"},{label:$msg("MoveToFolder"),value:"fileinto"},{label:$msg("RedirectToAddress"),value:"redirect"},{label:$msg("Autoreply"),value:"vacation"},{label:$msg("Discard"),value:"discard"}];var HAS_VALUE="fileinto redirect vacation".qw().toHash(true);var HAS_BROWSE="fileinto vacation".qw().toHash(true);P.initDOM=function(){D.BASE.initDOM.apply(this,arguments);this.vacation=this._indata.vacation;var action=this._indata.action;var select=this.select=new DlRadioSelect({parent:this,options:Object.makeDeepCopy(SELECT_OPTIONS),value:action});var valueEntry=this.valueEntry=new DlEntry({parent:this,value:this._indata.value});valueEntry.getParentNode().style.width="100%";valueEntry.setStyle({width:"100%"});valueEntry.getInputElement().parentNode.style.width="100%";valueEntry.getInputElement().style.width="98%";valueEntry.display(action in HAS_VALUE);var td=CE("td",null,null,valueEntry.getElement().rows[0]);var sel_btn=new DlButton({parent:valueEntry,label:"...",appendArgs:td,className:"FilterValueSelector"});sel_btn.display(action in HAS_BROWSE);var add_btn=new DlButton({parent:this,iconClass:"IconAdd",tooltip:$msg("AddRule")});DOM.addClass(add_btn.getParentNode(),"NoPadding");var del_btn=new DlButton({parent:this,iconClass:"IconRemove",tooltip:$msg("RemoveRule")});DOM.addClass(del_btn.getParentNode(),"NoPadding");select.addEventListener("onChange",function(oldval,newval){sel_btn.display(newval in HAS_BROWSE);valueEntry.display(newval in HAS_VALUE);valueEntry.clear();if(valueEntry.readonly(newval=="vacation"))
this.autoReplyDlg.delayed(1,this);}.$(this));$ACL(del_btn,function(){if(this.parent.children().length==1){MSG.addMsg("warning",$msg("WontRemoveLastItem"));}else{this.destroy();}}.$(this));$ACL(add_btn,function(){this.filter.addAction();}.$(this));$ACL(sel_btn,function(ev){var server=this.filter.script.server,popup,onHide;switch(select.getValue()){case"fileinto":popup=getPopupFolders(server);var g=popup.group(),handler=function(){valueEntry.setValue(this.getSelected().map(function(btn){return btn.parent.folder.id();}).join(", "));};g.setValue(valueEntry.getValue().split(/\s*,\s*/).map(function(id){var folder=server.folders.get(id);if(!folder)
$CONTINUE();return folder.getFullId();}));g.addEventListener("onChange",handler);onHide=g.removeEventListener.$(g,"onChange",handler);break;case"vacation":this.autoReplyDlg();break;}
if(popup){var p=this._getContextMenuPopup();p.popup({timeout:0,content:popup,align:BROWSE_ALIGN,anchor:valueEntry.getElement(),isContext:true,widget:valueEntry,onHide:onHide});if(ev&&ev instanceof DlEvent)
ev._justFocusedWidget=p;}}.$(this));};var AUTO_REPLY_FIELDS;function getAutoReplyFields(){return AUTO_REPLY_FIELDS||(AUTO_REPLY_FIELDS=[{id:"subject",label:"Subject&:"},{id:"days",label:"Days&:",type:"spinner",min:1,integer:true,decimals:0,step:1,value:1}]);};P.autoReplyDlg=function(){var dlg=new DlDialog({title:$msg("Autoreply"),parent:this.filter.script.info.layout,resizable:true,modal:true,quitBtn:"destroy",noShadows:true});var form=new MailGenericForm({fields:getAutoReplyFields()});var entry=new DlEntry({type:"textarea",className:"CodeEntry"});DlTextUtils.emacsipateTextarea(entry.getInputElement());var buttons=new DlHbox({className:"HBoxPadLeft"});buttons.addFiller();var ok=new DlButton({parent:buttons,focusable:true,tabIndex:2,label:$W($msg("OK"))});if(this.vacation){form.setValue(this.vacation);entry.setValue(this.vacation.text);}
var layout=new DlLayout({parent:dlg,outerSpace:5});layout.packWidget(form,{pos:"top",after:5});layout.packWidget(buttons,{pos:"bottom"});layout.packWidget(new DlWidget({className:"Dl-Horizontal-Separator"}),{pos:"bottom",before:4,after:5});layout.packWidget(entry,{pos:"top",fill:"*"});dlg.setSize({x:400,y:250});dlg._focusedWidget=form.getField("subject");dlg.show(true);$ACL(ok,function(dlg){var v=this.vacation=form.getValue();v.text=entry.getValue();var hash={};Mail.ident_cache.getAllRecords().foreach(function(id){if(id.get("server")==this.filter.script.server.id())
hash[id.get("email")]=true;},this);v.addresses=Array.hashKeys(hash).join(",");this.valueEntry.setValue(String.firstNonEmpty(v.subject,v.text));dlg.destroy();}.$(this,dlg));};P.render=function(requires,serial){var act=this.select.getValue(),val=this.valueEntry.getValue().trim();Object.merge(serial,{action:act,value:val});switch(act){case"keep":act="keep";break;case"discard":act="discard";break;case"fileinto":if(!val)
throw new ERR("err-MustSelectFolder");val=val.split(/\s*,\s*/);act=cmdArray("fileinto",val);requires.fileinto=true;break;case"redirect":if(!val)
throw new ERR("err-MustEnterEmail");val=val.split(/\s*,\s*/);act=cmdArray("redirect",val);break;case"vacation":var v=serial.vacation=this.vacation;if(!v)
throw new ERR("err-AutoreplyNotDefined");act=["vacation",":days",v.days||1];if(v.from&&/\S/.test(v.from))
act.push("\n\t:from",quote2(v.from));if(v.subject&&/\S/.test(v.subject))
act.push("\n\t:subject",quote2(v.subject));if(v.addresses&&/\S/.test(v.addresses)){var a=v.addresses;if(!(a instanceof Array))
a=v.addresses.split(/\s*[,;]\s*/);act.push("\n\t:addresses",quoteArray(a));}
act.push("\n\t"+quote2(v.text));act=act.join(" ");requires.vacation=true;break;}
return act;};})();var SCRIPT_TEMPLATE;var BROWSE_ALIGN={prefer:"Bl",fallX1:"_r",fallX2:"_l",fallY1:"B_",fallY2:"T_"};var DATE_VALIDATOR=new DlValidator("Date");function getSize(w){var el=w.getElement(),p=el.parentNode,n=el.nextSibling,cont=DlContainer.getHiddenContainer().getElement(),s;cont.appendChild(el);s=w.getOuterSize();p&&p.insertBefore(el,n);return s;};var _POPUP_CAL;function getPopupCalendar(date){var p=_POPUP_CAL;if(!p)
p=_POPUP_CAL=new DlCalendar({withMenu:true});if(date)
p.selectDate(date);p.removeAllListeners("onSelect onChange".qw());return p;};var _POPUP_FOLDERS={};function getPopupFolders(server){var p=_POPUP_FOLDERS[server.id()];if(!p){var cache=new MailServerCache({});p=_POPUP_FOLDERS[server.id()]=new WMailServerTree({servers:cache,expanded:true,checkboxes:true});cache.insert(server);}
return p;};function ERR(msg){this.msg=msg;};function quote(str){return str.replace(/\x22/g,"\\x22")};function quote2(str){return'"'+quote(str)+'"'};function quoteArray(a){if(!(a instanceof Array))
return quote2(a);if(a.length==1)
return quote2(a[0]);return"["+a.map(quote2).join(", ")+"]";};function cmdArray(cmd,val){return val.map(function(v){return cmd+" "+quote2(v);}).join("; ");};})();(function(){Mail.mime_handlers["text/calendar"]=iCalHandler;Mail.mime_handlers["application/ics"]=iCalHandler;function makeArgs(part,data){return{ical:part.content,ical_url:part.attachment_url,to:data.organizer,from:data.my_identity&&data.my_identity.getFullAddress(),event_summary:data.summary,event_description:data.description};};function onAccept(part,data){var cont=new DlContainer({});cont.setStyle({padding:"5px"});var vbox=new DlVbox({parent:cont,borderSpacing:2});var group=DlRadioGroup.get();new DlRadioButton({parent:vbox,focusable:true,group:group,value:"edit",label:swApp.i18n("Edit the response before sending")});new DlRadioButton({parent:vbox,focusable:true,group:group,value:"sendNow",label:swApp.i18n("Send the response now")});new DlRadioButton({parent:vbox,focusable:true,group:group,value:"dontSend",label:swApp.i18n("Don't send a response")});group.setValue("edit");ConfirmDialog.ask({title:swApp.i18n("Accept invitation"),text:swApp.i18n("This meeting will be accepted and will<br />"+"be moved to your Calendar.  Do you want to<br />"+"include comments with your response?"),body:cont,modal:true,onOK:function(){var option=group.getValue()[0];var args=makeArgs(part,data);if(option=="edit"){WMailComposer.createInviteReply(args);}else if(option=="sendNow"){swApp.syncSWorld.xuhekiCalendarRequest("accept",args,function(ret){if(ret.keyValueM){alert("FIXME: must sync calendar");}});}}});};function onDecline(part,data){var args=makeArgs(part,data);swApp.syncSWorld.xuhekiCalendarRequest("decline",args,function(ret){if(ret.keyValueM){alert("FIXME: must do anything after decline?");}});};function onTentative(part,data){var args=makeArgs(part,data);swApp.syncSWorld.xuhekiCalendarRequest("tenative",args,function(ret){if(ret.keyValueM){alert("FIXME: must do anything after tenative?");}});};function onProposeNewTime(part,data){alert("FIXME: propose new time "+part.attachment_url);};var ROLES={"REQ-PARTICIPANT":"required participant","OPT-PARTICIPANT":"optional participant","NON-PARTICIPANT":"non-participant","CHAIR":"chair"};var LABELS={REQUEST:"This message contains an event invitation",REPLY:"This message contains a reply to an invitation"};var PARTSTAT={"NEEDS-ACTION":"needs action","ACCEPTED":"accepted","DECLINED":"declined","TENTATIVE":"tentative","DELEGATED":"delegated","COMPLETED":"completed","IN-PROCESS":"in process"};function handleResult(part,dest_id,ret){var cal=ret.keyValueM.iCalendarDTO;if(!cal)
return;var server=Mail.servers_cache.get(this._server_id);var start=new Date(cal.startYear,cal.startMonth-1,cal.startDayOfMonth,cal.startHourOfDay,cal.startMinute,cal.startSecond);var end=new Date(cal.endYear,cal.endMonth-1,cal.endDayOfMonth,cal.endHourOfDay,cal.endMinute,cal.endSecond);var summary=cal.summary;var description=cal.description;var organizer=cal.organizer;var location=cal.location;var method=cal.method;var attendees=[];var my_identity;for(var i in cal.attendeePropsM){var email_html=i,info=cal.attendeePropsM[i];if(info.CN)
email_html=info.CN+" <"+i+">";var tmpl=TMPL_EMAIL;if(!my_identity){my_identity=server.isOwnEmail(i);if(my_identity)
tmpl=TMPL_MY_EMAIL;}
attendees.push(tmpl({email:i,email_html:email_html.htmlEscape(),role:swApp.i18n(ROLES[info.ROLE]),status:swApp.i18n(PARTSTAT[info.PARTSTAT])}));}
var cont=new DlContainer({parent:this._msgdisp,appendArgs:this._moreContID,className:"DynarchMail-event-invitation"});var hbox=new DlHbox({parent:cont,className:"DlToolbar DlToolbar2 HBoxPadLeft"});var toggle_btn=new DlButton({parent:hbox,iconClass:"IconToggle0"});toggle_btn.on=false;var body=new DlContainer({parent:cont,className:"DynarchMail-event-body"});body.display(toggle_btn.on);toggle_btn.addEventListener("onClick",function(){this.on=!this.on;body.display(this.on);this.setIconClass(this.on?"IconToggle1":"IconToggle0");});var label=new DlLabel({parent:hbox,label:swApp.i18n(LABELS[method]),className:"title"});var start_html,end_html;start_html=start.print("%A, %B %e, %Y %l:%M%p");if(cal.startYear==cal.endYear&&cal.startMonth==cal.endMonth&&cal.startDayOfMonth==cal.endDayOfMonth){end_html=end.print("%l:%M%p");}else if(cal.startYear==cal.endYear&&cal.startMonth==cal.endMonth){end_html=end.print("%e (%A), %l:%M%p");}else{end_html=end.print("%A, %B %e, %Y %l:%M%p");}
var when=TMPL_WHEN({start:start.print("%Y-%m-%d %H:%M:%S"),start_html:start_html,end:end.print("%Y-%m-%d %H:%M:%S"),end_html:end_html});var organizer_html=TMPL_ORGANIZER({email:organizer,email_html:organizer.htmlEscape()});var html=TMPL_EVENT({summary:summary.htmlEscape(),attendees_html:attendees.join("<br />"),organizer_html:organizer_html,when:when,location:location.htmlEscape(),description:description.htmlEscape().replace(/\n/g,"<br />")});body.setContent(html);this._createWidgets(body.getElement());var args={organizer:organizer,my_identity:my_identity,server:server,summary:summary,description:description};if(method=="REQUEST"){hbox.addFiller();new DlButton({parent:hbox,label:swApp.i18n("Accept").fixedWidth("5em")}).addEventListener("onClick",onAccept.$C(part,args));new DlButton({parent:hbox,label:swApp.i18n("Decline").fixedWidth("5em")}).addEventListener("onClick",onDecline.$C(part,args));new DlButton({parent:hbox,label:swApp.i18n("Tentative").fixedWidth("5em")}).addEventListener("onClick",onTentative.$C(part,args));hbox.addSeparator("wide-separator");new DlButton({parent:hbox,label:swApp.i18n("Propose new time")}).addEventListener("onClick",onProposeNewTime.$C(part,args));}};function iCalHandler(part,dest_id){function handleError(ret){};var handleOK=handleResult.$(this,part,dest_id);if(swApp.syncSWorld.mishoo_devel()){swApp.syncSWorld.xuhekiParseTextCalendarRequest(part.content,handleOK,handleError);}else{swApp.syncSWorld.xuhekiGetTextCalendarRequest(part.attachment_url,handleOK,handleError);}};var TMPL_WHEN=String.template("<a dynarchToken='date' class='DynarchMail-token DynarchMail-token-date' href='#' data='$start'>$start_html</a>"," &rarr; ","<a dynarchToken='date' class='DynarchMail-token DynarchMail-token-date' href='#' data='$end'>$end_html</a>");var __TMPL_EVENT;function TMPL_EVENT(args){if(!__TMPL_EVENT)
__TMPL_EVENT=String.template("<table class='description2' style='margin-left: 3em'>","<tr><td class='label top'>",swApp.i18n("Organizer"),":</td><td style='width: 100%'>$organizer_html</td></tr>","<tr><td colspan='2'><div class='Dl-Horizontal-Separator'>&nbsp;</div></td></tr>","<tr><td class='label top'>",swApp.i18n("Summary"),":</td><td style='width: 100%'>$summary</td></tr>","<tr><td class='label top'>",swApp.i18n("Attendees"),":</td><td>$attendees_html</td></tr>","<tr><td class='label top'>",swApp.i18n("When"),":</td><td>$when</td></tr>","<tr><td class='label top'>",swApp.i18n("Location"),":</td><td>$location</td></tr>","<tr><td colspan='2'><div class='Dl-Horizontal-Separator'>&nbsp;</div></td></tr>","<tr><td class='label top'>",swApp.i18n("Description"),":</td><td>$description</td></tr>","</table>");return __TMPL_EVENT(args);};var TMPL_ORGANIZER=String.template("<a dynarchToken='email' href='mailto:$email' data='$email' class='DynarchMail-token DynarchMail-token-email'>","$email_html","</a>");var TMPL_EMAIL=String.template("<a dynarchToken='email' href='mailto:$email' data='$email' class='DynarchMail-token DynarchMail-token-email'>","$email_html","</a> ($role, <u>$status</u>)");var TMPL_MY_EMAIL=String.template("<b><a dynarchToken='email' href='mailto:$email' data='$email' class='DynarchMail-token DynarchMail-token-email'>","$email_html","</a> ($role, <u>$status</u>)</b>");})();Mail.contacts_cache={getByEmail:function(email){return swApp.contactCache.getByEmail(email);},collect:function(email){},autocomplete:function(range){var val=this.getValue().toLowerCase();var pos=val.lastIndexOfRegexp(/[\n,;]\s*/g,range.start);val=val.substring(pos,range.start).trim();if(!val||val.length<2){this.cancelCompletion();return;}
var searchProps={};searchProps.mail=true;searchProps.displayName=true;var list=swApp.contactCache.search(val,searchProps);var comp=[];var after=this._domType=="textarea"?"\n":", ";var words=val?val.replace(/\s+/g," ").replace(/[^A-Za-z0-9_:+=\x2f\x2a\x20-]+/g,"").trim().split(/\s+/):null;if(words&&(words.length==0||!words[0]))
words=null;var words_re=words?new RegExp("\\b("+words.join("|")+")","ig"):null;list.foreach(function(id){var rec=swApp.contactCache.get(id);var name=rec.getTitle();var emails=rec.getEmailArray();emails.foreach(function(addr){var completion=name+" <"+addr+">";comp.push({label:words_re?completion.highlightWords(words_re):completion.htmlEscape(),completion:completion,start:pos,nomodify:true,contact:rec,email:addr,after:after});});});if(comp.length>0){this.completionReady(comp);}else{this.cancelCompletion();}}};Mail.Start=function(PARENT){Mail.getSelectedServer=function(){var id=Mail.tree_group.getValue()[0];var pos=String(id).indexOf("-");if(pos>=0&&typeof id.substr=='function')
id=id.substr(0,pos);return Mail.servers_cache.get(id);};Mail.getSelected=function(){var value=Mail.tree_group.getValue();var id=value[0];if(id){var i=String(id).indexOf("-"),server=id.substr(0,i),folder=id.substr(i+1);server=Mail.servers_cache.get(server);folder=server.folders.get(folder);messages=grid._selection.getArray();return{server:server,folder:folder,messages:messages};}};Mail.selectFolder=function(server_id,folder_id,force){var id=server_id+"-"+folder_id;var val=Mail.tree_group.getValue()[0];if(force||val!=id){Mail.tree_group.setValue([id],true);return true;}
return false;};Mail.selectMessage=function(server_id,folder_id,msg_uid){var server=Mail.servers_cache.get(server_id);var folder=server.folders.get(folder_id);var done=function(){grid._selection.reset([msg_uid]);grid.scrollToRecord.delayed(100,grid,msg_uid,"center");};if(Mail.selectFolder(server_id,folder_id)){folder.messages.listenOnce("onRefresh",function(ids,type){if(type=="init")
done();},2);}else{done();}};Mail.displayMessage=function(server_id,folder_id,msg_id,no_xedni){msg_display._server_id=server_id;msg_display._folder_id=folder_id;XuhekiRPC(function(ret){msg_display.showMessage(ret);var server=Mail.servers_cache.get(server_id);var folder=server.folders.get(folder_id);var msg=folder.messages.get(msg_id);if(msg)
msg.flags_manip(true,"\\Seen");if(!no_xedni){var email=ret.o_from;if(/<(.*?)>/.test(email))
email=RegExp.$1;Mail.Xedni_Search(email);}},"mail.display_message",server_id,folder_id,msg_id);};Mail.refreshMail=function(feedback){if(!Mail._refreshing){Mail.buttons.reload.setIconClass("IconRefreshAnim");Mail._refreshing=true;var tot_diff_unseen=0;var tot_folders_unseen=0;var sel=Mail.getSelected();Mail.servers_cache.getAllRecords().r_foreach(function(server,i){if(sel&&sel.server==server)
sel.folder.messages.fetch_new_ids(null,null,true);server.refresh_folders(function(diff_unseen,folders_unseen){tot_diff_unseen+=diff_unseen;tot_folders_unseen+=folders_unseen;if(i==0){Mail.buttons.reload.setIconClass("IconReload");Mail._refreshing=false;restartRefreshTimeout();if(feedback){MSG.addMsg(tot_diff_unseen>0?"warning":"info",$msgProps("info-newMail",{diff_unseen:tot_diff_unseen,folders_unseen:tot_folders_unseen}));}}});});}};Mail.refreshSummary=function(){search_entry.clear();grid._data.fetch_all_ids();};Mail.compose=function(to_email){msg_display.startComposer("compose",to_email);};Mail.reindex_mail=function(servers,folders){DlPopup.clearAllPopups();Mail.buttons.reindex.disabled(true);var work=[];if(!servers){servers=Mail.servers_cache.getAllRecords();}
servers.foreach(function(server){var a=folders;if(!a){a=[server.get("folder_inbox"),server.get("folder_sent")];}
a=a.map(server.folders.get,server.folders);a.foreach(function(folder){if(!/junk|spam|trash/i.test(folder.getName())){work.push({server:server,folder:folder,cache:folder.messages});}});});var stopped=false;var dlg=new SwMinDialog({title:$msg("IndexingMail"),quitBtn:function(){stopped=true;dlg.hide()}});var vbox=new DlVbox({parent:dlg,borderSpacing:7,fillParent:true});var info=new DlWidget({parent:vbox});var folder_progress=new DlProgressBar({parent:vbox,min:0,max:1});var total_progress=new DlProgressBar({parent:vbox,min:0,max:work.length});(function doit(){total_progress.setValue(total_progress.getMaxVal()-work.length);if(!stopped&&work.length>0){var w=work.shift();info.setContent($msgProps("progress-indexXedni",{server:w.server.getName(),folder:w.folder.getName()}));folder_progress.setLabel($msgProps("progress-indexXedni-folder",{folder:w.folder.getName()}));folder_progress.setValue(0);w.cache.index_xedni(function(progress){if(progress>=0.1)
folder_progress.setLabel($msgProps("progress-indexXedni-folderPercent",{folder:w.folder.getName()}));folder_progress.setValue(progress);return stopped;},doit);}else{Mail.buttons.reindex.disabled(false);dlg.destroy();}})();dlg.setSize({x:300});dlg.show(true);};Mail.rebuild_mail_index=function(){DlPopup.clearAllPopups();XuhekiRPC(function(ids){var dlg=new SwMinDialog({title:$msg("IndexingMail"),quitBtn:function(){stopped=true;dlg.hide()}});var vbox=new DlVbox({parent:dlg,borderSpacing:7,fillParent:true});var progress=new DlProgressBar({parent:vbox,min:0,max:ids.length,label:$msgNR("ReindexingMessages",ids.length)});var stopped=false;(function doit(){progress.setValue(progress.getMaxVal()-ids.length);if(!stopped&&ids.length>0){var tmp=ids.splice(0,250);XuhekiRPC(doit,"apache.xedni_reindex",tmp);}else{Mail.buttons.reindex.disabled(false);dlg.destroy();}})();dlg.setSize({x:400});dlg.show(true);},"apache.xedni_clear_index");};var ABOUT_DLG;Mail.showAboutDlg=function(){var dlg=ABOUT_DLG;if(!dlg){dlg=ABOUT_DLG=new SwMinDialog({title:$msg("About"),quitBtn:"hide",className:"AboutDlg",iconClass:"IconXu"});var box=new DlHbox({parent:dlg});var tmp=new DlWidget({parent:box});var date=new Date();if(window.BUILD_TIMESTAMP)
date.setTime(window.BUILD_TIMESTAMP*1000);date=date.print("%Y/%m/%d %H:%M");tmp.setContent($msgProps("info-about",{version:XHK_VERSION,build:date}));}
dlg.show(true);};var EX=DlException.stopEventBubbling;var desktop=Mail.desktop=PARENT;desktop.visibility(false);Mail.ident_cache=new MailIdentityCache({});var toolbar_cont=new DlContainer({className:"DlToolbar DlToolbar2 MailTopBar"});var toolbar=new DlHbox({parent:toolbar_cont,borderSpacing:2});var idents=new DlButton({parent:toolbar,label:$msg("Identities"),iconClass:"IconIdentity"});$ACL(idents,MailIdentitiesDlg.show);var reindex_btn=new DlButtonMenu({parent:toolbar,label:$msg("IndexMail"),connected:true});var menu=new DlVMenu({});reindex_btn.setMenu(menu);var item=new DlMenuItem({parent:menu,label:$msg("UpdateIndex")});$ACL(item,Mail.reindex_mail.$C(null,null));var item=new DlMenuItem({parent:menu,label:$msg("RebuildIndex")});$ACL(item,Mail.rebuild_mail_index.$C(null,null));var filters=new DlButton({parent:toolbar,label:$msg("Filters"),iconClass:"IconFilter"});$ACL(filters,MailFiltersDlg.show);toolbar.addSeparator("wide-separator");var reload_btn=new DlButton({parent:toolbar,label:$msg("GetMail"),iconClass:"IconReload"});toolbar.addSeparator("wide-separator");var print_btn=new DlButton({parent:toolbar,label:$msg("Print"),tooltip:$msg("PrintSelectedMessages"),iconClass:"IconPrint",disabled:true});var del_btn=new DlButton({parent:toolbar,label:$msg("Delete"),iconClass:"IconDeleteMail",disabled:true});var mark_btn=new DlButtonMenu({parent:toolbar,label:$msg("Mark"),iconClass:"IconFlag",disabled:true,connected:true});var junk_btn=new DlButton({parent:toolbar,label:$msg("Junk"),iconClass:"IconMarkSpam",disabled:true});var notjunk_btn=new DlButton({parent:toolbar,label:$msg("NotJunk"),iconClass:"IconMarkNotSpam",disabled:true});$ACL(print_btn,contextMenuHandler.$(null,"Print"));$ACL(reload_btn,Mail.refreshMail.$C(true));$ACL(junk_btn,function(){var sel=Mail.getSelected();XuhekiRPC(function(){MSG.addMsg("info",$msgNR("info-spamReported",sel.messages.length));},"apache.mark_spam",sel.server.id(),sel.folder.id(),sel.messages);});$ACL(notjunk_btn,function(){var sel=Mail.getSelected();XuhekiRPC(function(){MSG.addMsg("info",$msgNR("info-notSpam",sel.messages.length));},"apache.mark_ham",sel.server.id(),sel.folder.id(),sel.messages);});var flags_group=DlRadioGroup.get();flags_group.maxChecked(null);var MARK_MENU=new DlVMenu({});new DlCheckbox({parent:MARK_MENU,group:flags_group,label:$msg("Flagged"),value:"\\Flagged"});new DlCheckbox({parent:MARK_MENU,group:flags_group,label:$msg("Seen"),value:"\\Seen"});new DlCheckbox({parent:MARK_MENU,group:flags_group,label:$msg("Deleted"),value:"\\Deleted"});mark_btn.setMenu(MARK_MENU);toolbar.addFiller();var search_entry=new DlEntry({parent:toolbar,emptyText:$msg("SearchFolder"),size:20,accessKey:"ALT 's'"});var search_btn=new DlButtonMenu({parent:toolbar,label:$msg("Search"),iconClass:"IconSearch",connected:true});var menu=new DlVMenu({});search_btn.setMenu(menu);Mail.buttons={reload:reload_btn,print:print_btn,del:del_btn,mark:mark_btn,junk:junk_btn,notjunk:notjunk_btn,search:search_btn,reindex:reindex_btn};var search_group=DlRadioGroup.get();new DlRadioButton({parent:menu,label:$msg("Subject"),value:"subject",group:search_group});new DlRadioButton({parent:menu,label:$msg("From"),value:"from",group:search_group});new DlRadioButton({parent:menu,label:$msg("ToOrCC"),value:"destination",group:search_group});new DlRadioButton({parent:menu,label:$msg("Body"),value:"body",group:search_group});menu.addSeparator();function search(){var cache=grid._data;var sort=grid.getSortColumn();if(grid.getSortReverse())
sort="^"+sort;cache.simple_search(search_group.getValue()[0],search_entry.getValue(),sort);search_entry.focus();search_entry.select();DlPopup.clearAllPopups();EX();};search_group.addEventListener("onChange",function(){var val=search_entry.getValue();if(/\S/.test(val))
search();else
search_entry.focus();});search_entry.addEventListener("onKey-ENTER",search);$ACL(new DlMenuItem({parent:menu,label:$msg("GoSearch")}),search);search_entry.addEventListener("onKey-ESCAPE",function(){refreshGrid.delayed(10);});search_group.setValue(["subject"]);toolbar.addFiller();var logo_cont=new DlButton({parent:toolbar,iconClass:"IconXu",label:$msg("About")});$ACL(logo_cont,Mail.showAboutDlg);var restartRefreshTimeout=function(){var timer=null,doit=Mail.refreshMail.$C(false);return function(){if(timer)
clearTimeout(timer);timer=setTimeout(doit,Mail.GETMAIL_POLL_TIMEOUT);};}();var top_layout=new DlLayout({parent:desktop});var right_layout=new DlLayout({});var grid_cont=new DlContainer({className:"MailGridCont"});var grid_layout=new DlLayout({parent:grid_cont});var msg_display=new MailMsgDisplay({className:"MailPane MainMsgDisplay"});msg_display.addEventListener("onShowRelated",showRelated);var desktop_cont=desktop.cont=new DlContainer({});top_layout.packWidget(toolbar_cont,{pos:"top"});top_layout.packWidget(desktop_cont,{pos:"top",fill:"*"});var left_layout=new DlLayout({className:"FolderTree"});desktop.status_label=new DlContainer({className:"DlWidget-3D MailStatusLabel"});desktop.status_label.setContent($msg("Ready"));left_layout.packWidget(desktop.status_label,{pos:"bottom"});var xedni=Mail.Xedni_CreateUI();left_layout.packWidget(xedni,{pos:"bottom"});left_layout.packWidget(new DlResizeBar({horiz:"true",invert:true,continuous:true,widget:xedni,className:"Sw2-TopResizeBar"}),{pos:"bottom",fill:7});var center_layout=new DlLayout({parent:desktop_cont,fillParent:true});center_layout.packWidget(left_layout,{pos:"left",fill:300,min:0,max:500});center_layout.packWidget(new DlResizeBar({widget:left_layout,continuous:false,className:"Sw2-TopResizeBar"}),{pos:"left",fill:7});center_layout.packWidget(right_layout,{pos:"right",fill:"*"});right_layout.packWidget(msg_display,{pos:"bottom",fill:"60%",min:0});right_layout.packWidget(new DlResizeBar({widget:msg_display,horiz:true,invert:true,continuous:false,className:"Sw2-TopResizeBar"}),{pos:"bottom",fill:7});right_layout.packWidget(grid_cont,{pos:"top",fill:"*"});var columns=[{id:"-icon",menuLabel:$msg("Flagged"),width:24,resizable:false,iconClass:"IconStarred",sortable:false},{id:"has_attachments",menuLabel:$msg("Attachments"),width:24,resizable:false,iconClass:"IconAttach",sortable:false},{id:"id",label:$msg("UID"),width:50,resizable:false,visible:false},{id:"subject",label:$msg("Subject"),fill:1},{id:"from",label:$msg("From"),width:200,visible:true},{id:"reply_to",label:$msg("ReplyTo"),width:200,visible:false},{id:"to",label:$msg("To"),width:200,visible:false},{id:"date",label:$msg("Date"),width:150,style:{textAlign:"center"}},{id:"size",label:$msg("Size"),width:60,style:{textAlign:"right"}}];var caches=window.caches={};function displayMessage(grid){var a=this.getArray();if(a.length>1){}else if(a.length==0){}else{var cache=grid._data;Mail.displayMessage(cache._server_id,cache._folder_id,a[0],false);}};var grid=Mail.summary_grid=new MailSummaryGrid({className:"MailSummary",fillParent:true,cols:columns,minReq:70,threshold:70,rarifyScroll:{calls:5,timeout:200},drag:new MailMessageDrag({}),contextMenu:getGridContextMenu});grid_layout.packWidget(grid,{pos:"bottom",fill:"*"});grid._selection.addEventListener(["onChange","onReset"],displayMessage.rarify(1,500,grid._selection,grid));grid.addEventListener("onDataRefresh",updateStatus.clearingTimeout(50));grid.loading=new DlContainer({className:"MailGridCont-loading",parent:grid_cont});grid.loading.display(false);Mail.servers_cache=new MailServerCache({});var tree_cont=new DlContainer({className:"MailPane BorderBottom",scroll:true});var tree=new WMailServerTree({servers:Mail.servers_cache,parent:tree_cont});left_layout.packWidget(tree_cont,{pos:"top",fill:"*"});Mail.tree_group=tree._group;Mail.tree_group.addEventListener("onChange",function(){search_entry.clear();updateStatus();var id=this.getValue()[0];var folder=id;var pos=String(folder).indexOf("-");if(pos>=0){grid.loading.display(true);grid.setSortColumn(null);folder=folder.substr(pos+1);var col_from=columns[4],col_to=columns[6];var is_sent=/sent|draft/i.test(folder);col_from.setVisible(!is_sent);col_to.setVisible(is_sent);grid.resetIDS([]);var cache=caches[id];grid.setCache(cache);cache.fetch_all_ids();}});Mail.tree_group.addEventListener("onChange",function(){var sel=Mail.getSelected();if(sel){var on_junk=sel.folder.id()==sel.server.get("folder_spam");junk_btn.display(!on_junk);notjunk_btn.display(on_junk);}});desktop.__doLayout.delayed(50,desktop);function updateStatus(){var sel=Mail.tree_group.getValue()[0];pos=String(sel).indexOf("-");if(pos>=0){var server=sel.substr(0,pos);var folder=sel.substr(pos+1);server=Mail.servers_cache.get(server);folder=server.folders.get(folder);sel=grid._selection.getArray();desktop.status_label.setContent($msgProps("status-selection",{server:server.getName().htmlEscape(),folder:folder.getName().htmlEscape(),total:grid._data&&grid._data.ids?grid._data.ids.length:folder.get("total"),unseen:folder.get("unseen"),sel:sel.length}));}
if(this instanceof DlSelectionModel){var grid_has_selection=this.getArray().length==0;del_btn.disabled(grid_has_selection);mark_btn.disabled(grid_has_selection);print_btn.disabled(grid_has_selection);junk_btn.disabled(grid_has_selection);notjunk_btn.disabled(grid_has_selection);}};grid._selection.addEventListener("onChange onReset".qw(),updateStatus);$ACL(del_btn,function(){var sel=grid._selection.getArray(),cache=grid._data,server=Mail.servers_cache.get(cache._server_id);XuhekiRPC(null,"mail.move_messages",server.id(),cache._folder_id,server.get("folder_trash"),sel);});flags_group.addEventListener("onChange",function(checkbox){var sel=grid._selection.getArray(),is_add=checkbox.checked(),flag=checkbox.getValue(),operation=is_add?"mail.add_message_flags":"mail.del_message_flags",cache=grid._data;XuhekiRPC(null,operation,cache._server_id,cache._folder_id,sel,[flag]);sel.foreach(function(id){var msg=this.get(id);if(msg)
msg.flags_manip(is_add,flag);},cache);});MARK_MENU.addEventListener("onPopup",function(){var sel=grid._selection.getArray();var msg=grid._data.get(sel[0]);flags_group.setValue(msg.get("flags").split(/\s+/));});function showRelated(server_id,folder_id,msg_uid){grid._data.narrow_to_thread(msg_uid);};var refreshGrid=Mail.refreshSummary.rarify(1,1000);desktop.addEventListener("onKeyPress",function(ev){var sel=grid._selection.getArray();var w=DlEvent.focusedWidget();if(w&&w instanceof DlEntry)
return;switch(ev.keyStr.toLowerCase()){case"l":if(sel.length>0)
grid.scrollToRecord(sel[0],"center");EX();case"s":search_entry.focus();EX();case"u":if(sel.length>0)
contextMenuHandler("ShowMIME");EX();case"e":case"x":var server=Mail.servers_cache.get(grid._data._server_id);var folder=server.folders.get(grid._data._folder_id);folder.expunge();EX();case"r":Mail.refreshMail(true);EX();}
switch(ev.keyCode){case DlKeyboard.DELETE:if(!ev.ctrlKey&&sel.length>0){del_btn.keyClicked();EX();}
break;case DlKeyboard.ENTER:if(sel.length>0)
grid.callHooks("onBodyDblClick");EX();case DlKeyboard.ESCAPE:refreshGrid.delayed(10);EX();}});grid.addEventListener("onBodyDblClick",function(){var msg_uid=this._selection.getArray()[0];if(msg_uid){var server=Mail.servers_cache.get(this._data._server_id);var folder=server.folders.get(this._data._folder_id);if(folder.id()==server.get("folder_drafts")){WMailComposer.createDialog({server_id:server.id(),folder_id:folder.id(),msg_uid:msg_uid,how:'edit'});}else{Mail.openMessageInDialog(server.id(),folder.id(),msg_uid);}}});var CTX_MENU_DEF=[{id:"PopupMessage",i:"IconNewWindow",s:1},null,{id:"Reply",i:"IconReply",s:1,d:"reply"},{id:"ReplyAll",i:"IconReplyAll",s:1,d:"reply_all"},{id:"Forward",i:"IconForward",s:1,d:"forward"},{id:"Bounce",i:"IconBounce",s:1},{id:"EditMessage",i:"IconEditAsNew",s:1},null,{id:"Print",i:"IconPrint"},{id:"ShowMIME",i:"IconShowOriginal",s:1},null,{id:"MoveToTrash",i:"IconTreeTrash"},{id:"Mark",i:"IconFlag",s:MARK_MENU}];var CTX_MENU_ITEMS={};var GRID_CONTEXT_MENU;function getGridContextMenu(){var sel=grid._selection.getArray();if(sel.length==0)
return null;if(!GRID_CONTEXT_MENU){GRID_CONTEXT_MENU=$makeMenus(CTX_MENU_DEF,CTX_MENU_ITEMS,contextMenuHandler);}
updateContextMenu();return GRID_CONTEXT_MENU;};function updateContextMenu(){var sel=grid._selection.getArray().length;for(var i in CTX_MENU_ITEMS){var item=CTX_MENU_ITEMS[i];var data=item.userData;if(data.s&&data.s==1){item.disabled(sel!=1);}}};function contextMenuHandler(id,item){var sel=grid._selection.getArray();var cache=grid._data;var msg=cache.get(sel[0]);var server_id=cache._server_id;var folder_id=cache._folder_id;switch(id){case"PopupMessage":Mail.openMessageInDialog(server_id,folder_id,msg.id());break;case"Reply":case"ReplyAll":case"Forward":WMailComposer.createDialog({server_id:server_id,folder_id:folder_id,msg_uid:msg.id(),how:item.d});break;case"Bounce":Mail.bounceMessage(msg_display,server_id,folder_id,msg.id());break;case"MoveToTrash":del_btn.keyClicked();break;case"ShowMIME":window.open(swApp.syncSWorld.xuhekiGetDocRequestURL([Mail.getURL("/rfc822"),server_id,folder_id,msg.id()].join("/")));break;case"EditMessage":WMailComposer.createDialog({server_id:server_id,folder_id:folder_id,msg_uid:msg.id(),how:'edit'});break;case"Print":Mail.printMessages(sel.map(function(id){return{server:server_id,folder:folder_id,msg_uid:id}}));break;}};function NoServer(cont){Mail.desktop.visibility(false);Mail._initialized=false;MailServerDlg.newServer({onOK:function(){Mail._initialized=true;Mail.desktop.visibility(true);if(cont)
cont();}});};Mail.ident_cache.fetch_all();Mail.prefs.fetch_all();Mail.servers_cache.fetch_all(function(a){if(a.length>0){Mail._initialized=true;Mail.desktop.visibility(true);var first=a[0];first.fetch_folders(function(folders){Mail.tree_group.setValue([folders[0].getFullId()],true);}.clearingTimeout(10));Array.$(a,1).map("fetch_folders");restartRefreshTimeout();}});Mail.servers_cache.addEventListener("onDelete",function(server){if(this.getAllRecords().length==0)
NoServer();});XuhekiRPC.go();var textCalendarData="BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:Schedule World\r\nBEGIN:VEVENT\r\nCLASS:PUBLIC\r\nDESCRIPTION:f3\r\nDTSTART:20081016T140000Z\r\nDTEND:20081016T150000Z\r\nDTSTAMP:20080930T035752Z\r\nSTATUS:CONFIRMED\r\nSUMMARY:bb4\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n";swApp.syncSWorld.xuhekiParseTextCalendarRequest(textCalendarData);Mail.NeedToOperate=function(cont){if(Mail._initialized)
return cont&&cont();NoServer(cont);};};