
var Utf8={encode:function(string){if(!string)return'';string=string.replace(/\r\n/g,"\n");var utftext="";for(var n=0;n<string.length;n++){var c=string.charCodeAt(n);if(c<128){utftext+=String.fromCharCode(c);}
else if((c>127)&&(c<2048)){utftext+=String.fromCharCode((c>>6)|192);utftext+=String.fromCharCode((c&63)|128);}
else{utftext+=String.fromCharCode((c>>12)|224);utftext+=String.fromCharCode(((c>>6)&63)|128);utftext+=String.fromCharCode((c&63)|128);}}
return utftext;},decode:function(utftext){var string="";var i=0;var c=c1=c2=0;while(i<utftext.length){c=utftext.charCodeAt(i);if(c<128){string+=String.fromCharCode(c);i++;}
else if((c>191)&&(c<224)){c2=utftext.charCodeAt(i+1);string+=String.fromCharCode(((c&31)<<6)|(c2&63));i+=2;}
else{c2=utftext.charCodeAt(i+1);c3=utftext.charCodeAt(i+2);string+=String.fromCharCode(((c&15)<<12)|((c2&63)<<6)|(c3&63));i+=3;}}
return string;}}

window.AjaxCallback=function(oParent,Callback){this.oParent=oParent;this.Callback=Callback;this.xmlhttp=false;if(navigator.userAgent.indexOf(" Firefox/")<0){try{this.xmlhttp=new ActiveXObject("Msxml2.XMLHTTP");}catch(e1){try{this.xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");}catch(e2){this.xmlhttp=false;}}}
if(!this.xmlhttp&&typeof XMLHttpRequest!='undefined'){try{this.xmlhttp=new XMLHttpRequest();}catch(e){this.xmlhttp=false;}}}
AjaxCallback.prototype.Send=function(Page,Data){if(this.oParent.ZendProfile){Page+='?'+Data+'&start_debug=1&debug_port=10000&start_profile=1';Data='';}
var oCallback=this;this.xmlhttp.onreadystatechange=function(){if(oCallback.xmlhttp.readyState==4){if(oCallback.xmlhttp.status==200){oCallback.Complete();}else{oCallback.Error();}}}
this.xmlhttp.open("POST",Page);this.xmlhttp.setRequestHeader('Content-Type','application/x-www-form-urlencoded');this.xmlhttp.send(Data);}
AjaxCallback.prototype.Error=function(){alert("Error while processing callback");}
AjaxCallback.prototype.Complete=function(){eval('this.oParent.'+this.Callback+'(this.xmlhttp);');}

window.HtmlSpecialChars=function(Source){var Target=String(Source);Target=Target.replace(/&/g,'&amp;');Target=Target.replace(/</g,'&lt;');Target=Target.replace(/>/g,'&gt;');Target=Target.replace(/\"/g,'&quot;');Target=Target.replace(/\'/g,'&#039;');return Target;}
window.MarkupParagraphs=function(PlainTextString){if(!PlainTextString){return"";}
var MarkedUpString=PlainTextString.replace(/\n\n/g,"</p><p>");if(MarkedUpString!=PlainTextString){MarkedUpString="<p>"+MarkedUpString+"</p>";}
MarkedUpString=MarkedUpString.replace(/\n/g,"<br>\n");return MarkedUpString;}
window.VerticalText=function(Text,FontSize,FontFamily,Colour,Background){if(!FontSize){FontSize=14;}
if(!FontFamily){FontFamily='Helvetica';}
if(!Colour){Colour='#000000';}
if(!Background){Background='#FFFFFF';}
var SvgEnabled=true;if(getInternetExplorerVersion()!=-1&&getInternetExplorerVersion()<9){SvgEnabled=false;}
if(SvgEnabled){var Content=new String(HtmlSpecialChars(Text));var e=document.createElement('span');e.style.whiteSpace="nowrap";e.innerHTML=Content;e.style.fontSize=FontSize+"px";e.style.fontFamily=FontFamily;document.body.appendChild(e);var SvgHeight=e.offsetWidth;var SvgWidth=e.offsetHeight;document.body.removeChild(e);var aUrl=[];aUrl.push('FontFamily='+FontFamily);aUrl.push('Size='+FontSize);aUrl.push('Text='+Content);aUrl.push('Colour='+encodeURIComponent(Colour));aUrl.push('Background='+encodeURIComponent(Background));var aAttributes=[];aAttributes.push('data="/lib/utils/verticaltext.php?'+aUrl.join('&')+'"');aAttributes.push('width="'+SvgWidth+'"');aAttributes.push('height="'+SvgHeight+'"');aAttributes.push('type="image/svg+xml"');return['<object ',aAttributes.join(' '),'></object>'].join('');}else{return['<span class="verticaltext" style="font-family:',FontFamily,';color:',Colour,';font-size:',FontSize,'px;">',HtmlSpecialChars(Text),'</span>'].join('');}}

window.htmlspecialchars=function(Source){Target=new String(Source)
Target=Target.replace(/&/g,'&amp;');Target=Target.replace(/</g,'&lt;');Target=Target.replace(/>/g,'&gt;');Target=Target.replace(/\"/g,'&quot;');Target=Target.replace(/\'/g,'&#039;');return Target;}
if(typeof(CXDb)=='undefined')CXDb={};CXDb.CAttributes=function(){}
CXDb.CAttributes.prototype.ToHtml=function(){var aResults=[];for(var Key in this){if(typeof(this[Key])=="function")continue;aResults.push([Key,'="',this[Key],'"'].join(''));}
return aResults.join(' ');}
window.CField=function(Name,Value,EncodeValue){if(arguments.length<=0)return;if(arguments.length<3){this.Init(Name,Value,true);}else{this.Init(Name,Value,EncodeValue);}}
CField.prototype.Init=function(Name,Value,EncodeValue){this.Name=Name;this.Value=Value;if(typeof(EncodeValue)=='undefined')EncodeValue=true;this.EncodeValue=EncodeValue;}
CField.prototype.ToReadOnlyElement=function(){var e=document.createElement('span');e.className='inputgroup';e.innerHTML=this._ToInnerHtml();return e;}
CField.prototype._ToInnerHtml=function(){var aContent=new Array();aContent.push('<span class="inputlabel">'+htmlspecialchars(this.Name)+':</span>');aContent.push('<span class="inputcontrol">');if(this.EncodeValue){aContent.push(htmlspecialchars(this.Value));}else{aContent.push(this.Value);}
aContent.push('</span>');return aContent.join('');}
CField.prototype.ToHtml=function(Attributes){var aContents=[];aContents.push('<div class="inputgroup" ');if(Attributes){aContents.push(Attributes);}
aContents.push('>');aContents.push(this._ToInnerHtml());aContents.push('</div>');return aContents.join('');}
CField.prototype.ToInputControl=function(Attributes){if(!Attributes)Attributes='';var aContent=new Array();aContent.push('<input name="'+this.Name+'" '+Attributes+' value="');if(this.Value){if(this.EncodeValue){aContent.push(htmlspecialchars(this.Value));}else{aContent.push(this.Value);}}
aContent.push('">');return aContent.join('');}
CField.prototype.ToInput=function(DisplayName,Attributes){var Field=new CField(DisplayName,this.ToInputControl(Attributes),false);return Field.ToHtml();}
CField.prototype.ToCheckboxControl=function(Attributes){if(!Attributes)Attributes='';var aContent=new Array();aContent.push('<input name="'+this.Name+'" '+Attributes+' type="checkbox"');if(this.Value&&this.Value!='0'){aContent.push(' checked');}
aContent.push('">');return aContent.join('');}
CField.prototype.ToTextArea=function(Attributes){if(!Attributes)Attributes='';Result=['<textarea name="',this.Name,'" ',Attributes,'>',this.Value?htmlspecialchars(this.Value):'','</textarea>'].join('');return Result;}
CField.prototype.ToSelectInput=function(aOptions,Attributes){var Result=['<select Name="',this.Name,'" ',Attributes,'>"'];var bFound=false;for(var iIndex=0;iIndex<aOptions.length;iIndex++){var Option=aOptions[iIndex];if(this.Value==Option)bFound=true;Result.push(['<option',this.Value==Option?' selected':'',,'>',htmlspecialchars(Option),'</option>'].join(''));}
if(!bFound){Result.push(['<option selected>',this.EncodeValue?htmlspecialchars(this.Value):this.Value,'</option>'].join(''));}
Result.push("</select>");return Result.join('');}
CField.prototype.ToAssocSelectInput=function(aOptions,Attributes){var Result=['<select Name="',this.Name,'" ',Attributes,'>"'];for(var Option in aOptions){var Display=aOptions[Option];Result.push(['<option value="',htmlspecialchars(Option),'"',Option==this.Value?' selected':'','>',htmlspecialchars(Display),'</option>'].join(''));}
if(this.Value){if(!aOptions[this.Value]){Result.push(["<option selected>",this.EncodeValue?htmlspecialchars(this.Value):this.Value,"</option>"].join(''));}}
Result.push("</select>");return Result.join('');}
CField.prototype.ToDateAndTimeControls=function(){var Result=[];var testDate=new Date();var valueDate=this.Value?new Date(this.Value*1000):new Date();var aOptions={};aOptions[-1]='HH';for(var iHour=0;iHour<24;iHour++){testDate.setHours(iHour);aOptions[iHour]=testDate.format('HH');}
Result.push(new CField(this.Name+"Hours",valueDate.getHours()).ToAssocSelectInput(aOptions));var aOptions={};for(var iMinute=0;iMinute<60;iMinute=iMinute+5){testDate.setMinutes(iMinute);aOptions[iMinute]=testDate.format('mm');}
Result.push(new CField(this.Name+"Minutes",valueDate.getMinutes()).ToAssocSelectInput(aOptions));var aOptions={};aOptions[-1]=['DD'];testDate.setMonth(0);for(var iDay=1;iDay<=31;iDay++){testDate.setDate(iDay);aOptions[iDay]=testDate.format('dd');}
Result.push(new CField(this.Name+"Day",valueDate.getDate()).ToAssocSelectInput(aOptions));var aOptions={};aOptions[-1]='Month';testDate.setDate(1);for(var iMonth=0;iMonth<12;iMonth++){testDate.setMonth(iMonth);aOptions[iMonth]=testDate.format('MMM');}
Result.push(new CField(this.Name+"Month",valueDate.getMonth()).ToAssocSelectInput(aOptions));var aOptions={};aOptions[-1]='YYYY';var iYear=testDate.getFullYear();for(var iYearOffset=0;iYearOffset<40;iYearOffset++){testDate.setFullYear(iYear+iYearOffset-10);var d=testDate.format('yyyy');aOptions[d]=d;}
Result.push(new CField(this.Name+"Year",valueDate.getFullYear()).ToAssocSelectInput(aOptions));return Result.join('');}
CField.prototype.FromDateAndTimeControls=function(Form){var Result=new Date();Result.setSeconds(0);Result.setMilliseconds(0);Result.setDate(1);var aInputNames=['Hours','Minutes','Year','Month','Day'];for(iIndex=0;iIndex<aInputNames.length;iIndex++){var Component=aInputNames[iIndex];var Element=Form.elements.namedItem(this.Name+Component);if(!Element)continue;switch(Component){case"Hours":Result.setHours(Element.value);break;case"Minutes":Result.setMinutes(Element.value);break;case"Day":Result.setDate(Element.value);break;case"Month":Result.setMonth(Element.value);break;case"Year":Result.setFullYear(Element.value);break;}}
return Math.floor(Result.getTime()/1000);}
window.CAutoCompletionControl=function(Element){if(arguments.length<=0)return;this.Init.apply(this,arguments);}
CAutoCompletionControl.prototype.Init=function(Element,Options){this.Element=Element;this.Options=Options?Options:[];}
CAutoCompletionControl.prototype.OnKeyPress=function(oEvent){if(this.Element.nodeName!="INPUT"&&this.Element.nodeName!='TEXTAREA')return true;if(!this.Element.ReplaceSelection){this.Element.ReplaceSelection=function(Text){if(navigator.userAgent.indexOf("IE")==-1){var iStart=this.selectionStart;this.value=this.value.substring(0,iStart)+Text+this.value.substring(this.selectionEnd,this.value.length);this.setSelectionRange(iStart+Text.length,iStart+Text.length);}else{var oRange=document.selection.createRange();oRange.text=Text;oRange.collapse(true);oRange.select();}
this.focus();};}
if(!this.Element.GetSelection){this.Element.GetSelection=function(){if(navigator.userAgent.indexOf("IE")==-1){return{Start:this.selectionStart,Value:this.value.substring(this.selectionStart,this.selectionEnd-this.selectionStart),End:this.selectionEnd};}else{var Marker=Math.random();while(this.value.indexOf(Marker)!=-1){Marker+=Math.random();}
var OriginalText=new String(this.value);var oRange=document.selection.createRange();oRange.text=[Marker,oRange.text,Marker].join('');var aArray=this.value.split(Marker);var Result={};Result.Start=aArray[0].length;Result.Value=aArray[1];Result.End=aArray[0].length+aArray[1].length;this.value=OriginalText;this.Select(Result.Start,Result.End);return Result;}}}
if(!this.Element.Select){this.Element.Select=function(iStart,iEnd){switch(arguments.length){case 0:this.select();break;case 1:iEnd=this.value.length;case 2:if(navigator.userAgent.indexOf("IE")==-1){this.setSelectionRange(iStart,iEnd);}else{var oRange=this.createTextRange();var aLines=this.value.split('\n');var iRunner=0;iEnd+=aLines.length-1;while(iRunner<=iEnd){iRunner+=aLines.shift().length;iRunner+=1;if(iRunner<=iStart)iStart--;if(iRunner<=iEnd)iEnd--;}
oRange.moveStart("character",iStart);oRange.moveEnd("character",-(this.value.length-iEnd));oRange.select();}}
this.focus();}}
var CharCode=0;if(window.event){CharCode=window.event.keyCode;}else if(oEvent.which){CharCode=oEvent.which;}
switch(CharCode){case 0:case 38:case 40:case 37:case 39:case 33:case 34:case 36:case 35:case 9:case 27:case 16:case 17:case 18:case 20:case 8:case 46:return true;case 13:if(this.Element.nodeName=='TEXTAREA')return true;var Selection=this.Element.GetSelection();if(Selection.Start==Selection.End){return true;}else{var iLen=this.Element.value.length;this.Element.Select(iLen,iLen);return false;}
default:this.OnAutoComplete(CharCode);}
return false;}
CAutoCompletionControl.prototype.OnAutoComplete=function(CharCode){var Selection=this.Element.GetSelection();var SkipAutocompletion=(Selection.End<this.Element.value.length);this.Element.ReplaceSelection(String.fromCharCode(CharCode));if(SkipAutocompletion)return;var CurrentValue=new String(this.Element.value);var FixedContent='';if(this.Element.nodeName=='TEXTAREA'){var LastEOL=CurrentValue.lastIndexOf('\n');if(LastEOL>0){FixedContent=CurrentValue.substring(0,LastEOL+1);CurrentValue=CurrentValue.substring(LastEOL+1);}}
CurrentValue=CurrentValue.replace(/([\.\\\+\*\?\[\^\]\(\$\)])/g,"\\$1");var SearchRegExp=new RegExp("^"+CurrentValue,"i");for(var OptionIndex in this.Options){var Option=this.Options[OptionIndex];if(Option.search(SearchRegExp)!=-1){var iLen=this.Element.value.length;var aNewValue=[FixedContent,Option];this.Element.value=aNewValue.join('');this.Element.Select(iLen,this.Element.value.length);return;}}}

window.CPage=function(Page){if(arguments.length<=0)return;this.Init.apply(this,arguments);}
CPage.prototype.Init=function(Page){this.Page=Page;this.Id='';this.ActionPanelNames=new Array('HelpPanel');this.ImagesPath='';this.MailDomain='';this.ZendProfile=false;this.aActions={};this.bGuiSecureMode=true;this.Events={};}
CPage.prototype.AddEventHandler=function(EventName,ContextObject,Method){if(!this.EventHandlers)this.EventHandlers={};if(!this.EventHandlers[EventName])this.EventHandlers[EventName]=[];this.EventHandlers[EventName].push({"Context":ContextObject,"Method":Method});}
CPage.prototype.RaiseEvent=function(EventName,EventArgs){if(!this.EventHandlers)return;if(!this.EventHandlers[EventName])return;var aHandlers=this.EventHandlers[EventName];for(var iIndex=0;iIndex<aHandlers.length;iIndex++){var Handler=aHandlers[iIndex];Handler.Method.apply(Handler.Context,EventArgs);}}
CPage.prototype.RemoveEventHandler=function(EventName,ContextObject,Method){if(!this.EventHandlers)return;if(!this.EventHandlers[EventName])return;var EventHandlers=this.EventHandlers[EventName];for(var iIndex=0;iIndex<EventHandlers.length;iIndex++){if(EventHandlers[iIndex].Context!=ContextObject)continue;if(EventHandlers[iIndex].Method.toString()!=Method.toString())continue;EventHandlers.splice(iIndex,1);break;}}
CPage.prototype.ClearForm=function(Element){if(!Element)return;var oForm=(Element.form?Element.form:Element);if(!oForm)return;if(!oForm.elements)return;for(i=0;i<oForm.length;i++){var oInputControl=oForm.elements[i];if(!oInputControl)continue;if(oInputControl.type=='text')oInputControl.value='';if(oInputControl.type=='textarea')oInputControl.value='';}}
CPage.prototype.BuildPostData=function(Form,ResultFormat){if(!ResultFormat)ResultFormat='Html';var aPostData=['ContentType=Ajax'+ResultFormat];for(iIndex=0;iIndex<Form.elements.length;iIndex++){var element=Form.elements[iIndex];if(element.name=='')continue;if(element.disabled)continue;if(element.type=='checkbox'){if(!element.checked)continue;}
if(element.type=='radio'){if(!element.checked)continue;}
if(element.type=='select-one'){if(element.value==''){if(element.selectedIndex==-1)continue;var value=element.options[element.selectedIndex].text;aPostData.push('&'+element.name+'='+escape(value));continue;}}
aPostData.push('&'+element.name+'=');if(element.value){aPostData.push(escape(Utf8.encode(element.value)));}}
return aPostData.join('');}
CPage.prototype.ShowPanel=function(PanelName){var oPanel=document.getElementById(PanelName);if(!oPanel)return;oPanel.style.display='';}
CPage.prototype.HidePanel=function(PanelName){var oPanel=document.getElementById(PanelName);if(!oPanel)return;oPanel.style.display='none';}
CPage.prototype.TogglePanel=function(PanelName){var oPanel=document.getElementById(PanelName);if(!oPanel)return;if(oPanel.style.display=='none'){oPanel.style.display='';}else{oPanel.style.display='none';}}
CPage.prototype.ShowActionPanel=function(PanelName){for(var iIndex in this.ActionPanelNames){if(PanelName!=this.ActionPanelNames[iIndex]){this.HidePanel(this.ActionPanelNames[iIndex]);}}
if(PanelName)this.TogglePanel(PanelName);this.ShowResultMessage(null);}
CPage.prototype.ShowLoadingPanel=function(){var oLoadingPanel=document.getElementById('CallbackLoadingPanel');if(oLoadingPanel){var oPanel=document.getElementById('CallbackResponsePanel');if(oPanel){oPanel.style.display='';oPanel.innerHTML=oLoadingPanel.innerHTML;}}}
CPage.prototype.HideLoadingPanel=function(){var oPanel=document.getElementById('CallbackResponsePanel');if(oPanel){oPanel.style.display='none';oPanel.innerHTML='';}}
CPage.prototype.SetActionTitle=function(NewTitle){var ActionTitle=document.getElementById('ActionTitle');if(ActionTitle){if(!ActionTitle.firstChild){ActionTitle.appendChild(document.createTextNode(''));}
ActionTitle.firstChild.nodeValue=NewTitle;}}
CPage.prototype.ShowResultMessage=function(Result){var p=document.getElementById('ActionResult');if(!p)return;if(typeof(Result)!=='undefined'&&Result&&Result.Message){p.innerHTML=Result.Message;p.style.display='';}else{p.innerHTML='';p.style.display='none';}}
CPage.prototype.HiddenFormInputsToHtml=function(){return'';}
CPage.prototype.ActionButtonToHtml=function(aAction){var aResult=['<input name="Action" value="',htmlspecialchars(aAction.Name),'" '];if(aAction.Tooltip){aResult.push(' title="',aAction.Tooltip,'"');}
if(aAction.Attributes){aResult.push(aAction.Attributes);var s=new String(aAction.Attributes);if(s.indexOf('type=')==-1){aResult.push('type="submit" ');}}else{aResult.push('type="submit" ');}
aResult.push(">");return aResult.join('');}
CPage.prototype.ActionButtonsToHtml=function(Mask){var aResult=[];for(var ActionName in this.aActions){var aValue=this.aActions[ActionName];var bPermitted=this.bGuiSecureMode;switch(aValue.Permissions){case XMLDB_PERMISSION_ENABLE:bPermitted=true;break;case XMLDB_PERMISSION_DISABLE:bPermitted=false;break;case XMLDB_PERMISSION_INHERIT:default:break;}
if(!bPermitted)continue;if(Mask){if(typeof(aValue.Style)!='undefined'){if(!(aValue.Style&Mask))continue;}}
aResult.push(this.ActionButtonToHtml(aValue));}
return aResult.join('');}
CPage.prototype.CheckboxToHtml=function(FieldName,Data,Attributes){if(!Attributes)Attributes='';var aResult=['<input type="checkbox" Name="',FieldName,'" ',Attributes];if(Data[FieldName]){if(Data[FieldName]=='1'){aResult.push(' checked');}}
aResult.push(">");return aResult.join('');}
CPage.prototype.RadioButtonToHtml=function(Id,FieldName,Option,Data,Label,Attributes){if(!Attributes)Attributes='';var aResult=['<span ',Attributes,'>','<input type="radio"',' Name="',FieldName,'"',' Value="',Option,'"',' Id="',Id,'"'];if(Data[FieldName]){if(Data[FieldName]==Option){aResult.push(' checked');}}
aResult.push('>');if(Label){aResult.push(['<label for="',Id,'">',Label,'</label>'].join(''));}
aResult.push('</span>');return aResult.join('');}
CPage.prototype.ForEachCheckbox=function(FormId,Callback){var oForm=document.forms.namedItem(FormId);if(!oForm)return;var oInputList=oForm.elements;if(!oInputList)return;for(i=0;i<oInputList.length;i++){var oInputElement=oInputList.item(i);if(!oInputElement)continue;if(oInputElement.type!='checkbox')continue;var oInputName=new String(oInputElement.name);if(oInputName.substring(0,6)!='Select')continue;Callback(oInputElement);}}
CPage.prototype.PopulateTableOfContents=function(ContentId,TableOfContentsId){var Toc=document.getElementById(TableOfContentsId);if(!Toc)return;var Current=document.getElementById(ContentId);if(!Current)return;var aCurrent=new Array();aCurrent.push(Current);var aToc=new Array();aToc.push(Toc);var iNextId='1';while(aCurrent.length>0){var Current=aCurrent.pop();if(Current.nodeType!=1)continue;var Regex=new RegExp("^H(\\d*)$","i");var Matches=Regex.exec(Current.nodeName);if(Matches){var ThisLevel=Matches[1];while(ThisLevel<aToc.length){aToc.pop();}
if(ThisLevel>aToc.length){var Item=document.createElement('ul');aToc[aToc.length-1].appendChild(Item);aToc.push(Item);}
var Item=document.createElement('li');var Id;if(Current.id){Id=Current.id;}else{Id=['TOCEntry',this.Id,iNextId++].join('');Current.id=Id;}
Item.innerHTML=['<a href="#',Id,'">',Current.innerHTML,'</a>'].join('');aToc[aToc.length-1].appendChild(Item);}
for(var iIndex=Current.childNodes.length-1;iIndex>=0;iIndex--){var ThisNode=Current.childNodes.item(iIndex);if(ThisNode.nodeType!=1)continue;aCurrent.push(Current.childNodes.item(iIndex));}}}
CPage.prototype.RemoveWatermark=function(Control){if(Control.className!='Watermark')return;if(!Control.WatermarkValue){Control.WatermarkValue=Control.value;}
if(Control.value==Control.WatermarkValue){Control.value='';}
Control.className='';}
CPage.prototype.AddWatermark=function(Control){if(!Control.WatermarkValue)return;if(!Control.value){Control.value=Control.WatermarkValue;}
if(Control.WatermarkValue==Control.value){Control.className='Watermark';}}

window.CXDbGuiEntry=function(){if(arguments.length<=0)return;this.Init.apply(this,arguments);}
CXDbGuiEntryStaticData=function(){this.ShowImage=new Image();this.ShowImage.src="/image/misc/arrow-down.gif";this.HideImage=new Image();this.HideImage.src="/image/misc/arrow-right.gif";}
s_CXDbGuiEntryStaticData=new CXDbGuiEntryStaticData();CXDbGuiEntry.prototype.Init=function(RecordId,Data,Parent){this.Parent=Parent;this.Data=Data;this.RecordId=RecordId;this.prototype={};this.prototype.ToInfoPanel=null;this.ReInit();}
CXDbGuiEntry.prototype.ReInit=function(){this.ExtendedInfo=null;this.InfoPanel=null;this.Form=null;this.LoadingPanel=null;}
CXDbGuiEntry.prototype._GetExtendedInfo=function(){if(this.ExtendedInfo)return this.ExtendedInfo;var Id='ExtendedInfo'+this.RecordId;this.ExtendedInfo=document.getElementById(Id);if(this.ExtendedInfo)return this.ExtendedInfo;this.ExtendedInfo=document.createElement('span');this.ExtendedInfo.id='ExtendedInfo'+this.RecordId;this.ExtendedInfo.className='EntryExtendedInfo';this.ExtendedInfo.style.display='none';return this.ExtendedInfo;}
CXDbGuiEntry.prototype._GetExpansionControlHtml=function(){return['<a class="ExtendedInfoIndicatorRegion EntrySummaryRegion"',' onclick="javascript:',this.Parent.Id,'.ToggleEntryExtendedInfo(',this.RecordId,')"','>','<img',' id="ExtendedInfoIndicator',this.RecordId,'"',' src="',s_CXDbGuiEntryStaticData.HideImage.src,'"',' alt="Show/Hide details"',' style="width:16;border:none">','</a>'].join('');}
CXDbGuiEntry.prototype.ToggleEntryExtendedInfo=function(){var PanelName='ExtendedInfo'+this.RecordId;var oPanel=document.getElementById(PanelName);if(!oPanel)return;if(oPanel.style.display=='none'){this.ShowEntryExtendedInfo();}else{this.HideEntryExtendedInfo();}}
CXDbGuiEntry.prototype.ShowEntryExtendedInfo=function(){if(!this.Cancel())return;var PanelName='ExtendedInfo'+this.RecordId;var ImageName='ExtendedInfoIndicator'+this.RecordId;var oPanel=document.getElementById(PanelName);if(!oPanel)return;var oImage=document.getElementById(ImageName);if(!oImage)return;if(oPanel.style.display=='none'){$(oPanel).show("slow");oImage.src=s_CXDbGuiEntryStaticData.ShowImage.src;}}
CXDbGuiEntry.prototype.HideEntryExtendedInfo=function(){if(!this.Cancel())return;var PanelName='ExtendedInfo'+this.RecordId;var ImageName='ExtendedInfoIndicator'+this.RecordId;var oPanel=document.getElementById(PanelName);if(!oPanel)return;var oImage=document.getElementById(ImageName);if(!oImage)return;if(oPanel.style.display==''||oPanel.style.display=='block'){$(oPanel).hide("slow");oImage.src=s_CXDbGuiEntryStaticData.HideImage.src;}}
CXDbGuiEntry.prototype.InsertInto=function(Table,Index){if(!Table)return;this._InsertSummaryInto(Table,Index);if(this.ToInfoPanel){var RowElementId='ExtendedInfoRow'+this.RecordId;var Row=document.getElementById(RowElementId);if(Row){Index=Row.rowIndex;var t=Row.parentNode;while(t.nodeName!='TABLE')t=t.parentNode;t.deleteRow(Row.rowIndex);}else{if(Index){Index=Index+1;}else{Index=-1;}}
var Row=Table.insertRow(Index);Row.id=RowElementId;var Cell=Row.insertCell(-1);var SummaryRow=document.getElementById('Row'+this.RecordId);Cell.colSpan=SummaryRow.cells.length;Cell.appendChild(this._GetExtendedInfo());this.HideLoadingPanel();}}
CXDbGuiEntry.prototype._InsertSummaryInto=function(Table,Index){if(!Table)return;var RowElementId='Row'+this.RecordId;var Row=document.getElementById(RowElementId);if(Row){Index=Row.rowIndex;var t=Row.parentNode;while(t.nodeName!='TABLE')t=t.parentNode;t.deleteRow(Row.rowIndex);}else{if(!Index)Index=-1}
var Row=Table.insertRow(Index);Row.id='Row'+this.RecordId;Row.className="EntrySummaryInfo";var iRowsPerEntry=(this.ToInfoPanel?2:1);if(Math.floor(Table.rows.length/iRowsPerEntry)%2){Row.style.backgroundColor="#EEEEEE";}
{var e=Row.insertCell(-1);e.className="EntrySummaryActions EntrySummaryRegion";if(this.ToInfoPanel){e.innerHTML=this._GetExpansionControlHtml();}else{if(this.Parent.HeaderRows==-1){this.Parent.HeaderRows=Row.rowIndex-1;}
e.innerHTML=Row.rowIndex-this.Parent.HeaderRows;}
for(var iIndex in this.Parent.aResultInputs){var e=Row.insertCell(-1);e.innerHTML=this.Parent.aResultInputs[iIndex].ToHtml(this.Parent,this.RecordId,'',this.Data);}
for(var iIndex in this.Parent.aResultActions){var e=Row.insertCell(-1);e.innerHTML=this.Parent.aResultActions[iIndex].ToHtml(this.Parent,this.RecordId,'',this.Data);}}
this.InsertSummaryIntoRow(Row);}
CXDbGuiEntry.prototype.InsertSummaryIntoRow=function(Row){for(var iIndex=0;iIndex<this.Parent.aDisplayColumns.length;iIndex++){var Name=this.Parent.aDisplayColumns[iIndex];var e=Row.insertCell(-1);if(this.Data[Name]){e.innerHTML=htmlspecialchars(this.Data[Name]);}else{e.innerHTML='';}}
return;}
CXDbGuiEntry.prototype.InsertIntoElement=function(Container,Index){if(!Container)return;var Id='Entry'+this.RecordId;var r=document.getElementById(Id);if(r){r.innerHTML='';}else{r=document.createElement('span');r.style.display='block';r.style.width='100%';r.style.marginBottom='5px';r.id=Id;Container.appendChild(r);}
if(!Index)Index=Container.childNodes.length;r.appendChild(this._SummaryToElement(Index));r.appendChild(this._GetExtendedInfo());}
CXDbGuiEntry.prototype._SummaryToElement=function(Index){var r=document.createElement('span');r.className="EntrySummaryInfo";if(Index%2){r.style.backgroundColor="#EEEEEE";}
{var e=document.createElement('span');e.className="EntrySummaryActions EntrySummaryRegion";var aContents=[this._GetExpansionControlHtml()];for(var iIndex in this.Parent.aResultActions){aContents.push(this.Parent.aResultActions[iIndex].ToHtml(this.Parent,this.RecordId));}
e.innerHTML=aContents.join('');r.appendChild(e);}
this.InsertSummaryIntoElement(r);return r;}
CXDbGuiEntry.prototype.InsertSummaryIntoElement=function(r){return;}
CXDbGuiEntry.prototype.ShowLoadingPanel=function(){if(this.InfoPanel){this.InfoPanel.style.display='none';}
if(this.Form){this.Form.style.display='none';}
if(this.LoadingPanel){this.LoadingPanel.style.display='';}else{this.LoadingPanel=document.createElement('div');this.LoadingPanel.style.textAlign="center";this.LoadingPanel.innerHTML=['<div>','<span class="loadingitempanel">','<span style="padding:20px;display:block;">','Loading... <img src="',this.Parent.ImagesPath,'progress.gif"/>','</span>','</span>','</div>'].join('');this.ExtendedInfo.appendChild(this.LoadingPanel);}
this.Parent.HidePanel('ConfirmDeletePanel'+this.RecordId);}
CXDbGuiEntry.prototype.HideLoadingPanel=function(){if(this.LoadingPanel){this.LoadingPanel.style.display='none';}
if(this.Form){this.Form.style.display='none';}
if(this.InfoPanel){this.InfoPanel.style.display='';}}
CXDbGuiEntry.prototype.Cancel=function(){if(this.Form){if(!confirm('Are you sure you want to abandon your changes?  This action is not reversible!')){return false;}
this.Form.parentNode.removeChild(this.Form);this.Form=null;}
if(this.LoadingPanel){this.LoadingPanel.style.display='none';}
if(this.InfoPanel){this.InfoPanel.style.display='';}else if(this.ToInfoPanel){this.ExtendedInfo.appendChild(this.ToInfoPanel());}
return true;}
CXDbGuiEntry.prototype.Edit=function(){if(this.LoadingPanel){this.LoadingPanel.style.display='none';}
if(this.InfoPanel){this.InfoPanel.style.display='none';}
if(this.Form){this.Form.style.display='';}else{this.ExtendedInfo.appendChild(this.ToEditForm());}}
CXDbGuiEntry.prototype.ToInfoPanel=function(){if(this.InfoPanel)return this.InfoPanel;var e=document.createElement('span');e.id='InfoPanel'+this.RecordId;{var aContents=[];for(var Name in this.Data){var Field=new CField(this.Parent.DisplayName(Name),this.Data[Name]);aContents.push(Field.ToHtml());}
aContents.push(['<span class="inputgroup">','<span class="inputcontrol">','<input class="ActionButton" type="button" value="Delete" ',' onclick="',this.Parent.Id,'.ShowPanel(\'ConfirmDeletePanel',this.RecordId,'\')"/>','<input class="ActionButton" type="button" value="Edit" ',' onclick="',this.Parent.Id,'.Edit(\'',this.RecordId,'\')"/>','</span>','</span>','<div class="confirmpanel" id="ConfirmDeletePanel',this.RecordId,'" style="display:none">','<p>Are you sure you want to delete this entry?  Note this action is not reversible.</p>','<input type="button" value=" No " onclick="',this.Parent.Id,'.HidePanel(\'ConfirmDeletePanel',this.RecordId,'\')">','<input type="button" name="Confirm" value="Yes" onclick="',this.Parent.Id,'.Delete(',this.RecordId,')">','</div>',].join(''));e.innerHTML=aContents.join('');}
this.InfoPanel=e;return e;}
CXDbGuiEntry.prototype.ToEditForm=function(){if(this.Form)return this.Form;this.Form=document.createElement('form');this.Form.action=['javascript:',this.Parent.Id,'.Apply(\'',this.RecordId,'\')'].join('');this.Form.id="EditForm"+this.RecordId;{var aContents=[];for(var Name in this.Parent.Schema){var Schema=this.Parent.Schema[Name];var FieldValue=new CField(Name,this.Data[Name]);var FieldValueHtml='';var Attributes=new CXDb.CAttributes();Attributes.id=[FieldValue,this.RecordId].join('-');if(Schema.multiline||Schema.length>100){var ColumnCount=60;var iLineCount=0;if(this.Data[Name]){var Value=new String(this.Data[Name]);iLineCount=Value.search("/\n/");iLineCount+=Math.ceil(Value.length/ColumnCount);}
var iTextAreaLines=iLineCount+2;if(iTextAreaLines>25)iTextAreaLines=25;if(iTextAreaLines<3)iTextAreaLines=3;Attributes.cols=ColumnCount;Attributes.rows=iTextAreaLines;FieldValueHtml=FieldValue.ToTextArea(Attributes.ToHtml());}else{Attributes.size=Schema.length;FieldValueHtml=FieldValue.ToInputControl(Attributes.ToHtml());}
var Field=new CField(this.Parent.DisplayName(Name),FieldValueHtml,false);aContents.push(Field.ToHtml());}
this.Form.innerHTML=aContents.join('');}
{var aContents=['<span class="inputcontrol">','<input type="submit" value="',this.RecordId?'Modify':'Create','">'];if(this.RecordId){aContents.push(['<button onclick="',this.Parent.Id,'.Cancel(\'',this.RecordId,'\');return false;">','Cancel</button>',''].join(''));}else{aContents.push(['<button onclick="',this.Parent.Id,'.ClearForm(this);return false;">','Clear</button>',''].join(''));}
aContents.push('</span>');var b=document.createElement('span');b.className='inputgroup';b.innerHTML=aContents.join('');this.Form.appendChild(b);}
{var e=document.createElement('span');e.innerHTML=['<input type="hidden" name="Action" value="Modify Record">','<input type="hidden" name="RecordId" value="',this.RecordId,'">'].join('');this.Form.appendChild(e);}
return this.Form;}
CXDbGuiEntry.prototype.Apply=function(){this.ShowLoadingPanel();var oRequest=new AjaxCallback(this,'_ModifyComplete');oRequest.RecordId=this.RecordId;var PostData=this.Parent.BuildPostData(this.Form,'Js');oRequest.Send(this.Parent.Page,PostData);}
CXDbGuiEntry.prototype._ModifyComplete=function(oRequest){var SearchResults=eval(oRequest.responseText);if(typeof(SearchResults)!='object'){this.Edit();return;}
if(!SearchResults.Results)return;if(this.RecordId==0){this.Parent.HidePanel('AddPanel');this.Form.parentNode.removeChild(this.Form);this.LoadingPanel.parentNode.removeChild(this.LoadingPanel);this.Parent.AddFormEntry=null;this.Parent._SearchComplete(oRequest);}else if(SearchResults.Results[this.RecordId]){this.Init(this.RecordId,SearchResults.Results[this.RecordId],this.Parent);var Table=document.getElementById('SearchResults');this.InsertInto(Table);this.ToggleEntryExtendedInfo();this.Parent.RaiseEvent(this.Parent.Events.onSearchComplete,[]);}}

window.CResultAction=function(Name,DisplayName,Link,Tooltip){this.Name=Name;this.DisplayName=DisplayName;this.Link=Link;this.Tooltip=Tooltip;}
CResultAction.prototype.ToHtml=function(Parent,RecordId,Attributes,Data){var aResults=['<button',' id="',Parent.Id,this.Name,RecordId,'"',' onclick="',htmlspecialchars(eval(this.Link)),'"',' type="button"',];if(this.Tooltip){aResults.push(' title="',this.Tooltip,'"');}
if(Attributes)aResults.push(Attributes);aResults.push('>');aResults.push(htmlspecialchars(this.DisplayName));aResults.push('</button>');return aResults.join('');}
window.CResultInput=function(Name,Type,Attributes){this.Name=Name;this.Type=Type;this.Attributes=Attributes;}
CResultInput.prototype.ToHtml=function(Parent,RecordId){var aResults=['<input',' id="',Parent.Id,this.Name,RecordId,'"',' type="',this.Type,'"',' name="',htmlspecialchars(this.Name),RecordId,'"'];if(this.Attributes)aResults.push(this.Attributes);aResults.push('>');return aResults.join('');}
window.CXDbGui=function(Page){if(arguments.length<=0)return;this.Init.apply(this,arguments);}
CXDbGui.prototype=new CPage();CXDbGui.prototype.constructor=CXDbGui;CXDbGui.superclass=CPage.prototype;CXDbGui.prototype.Init=function(Page){CXDbGui.superclass.Init.apply(this,arguments);this.ActionPanelNames.push('AddPanel');this.ActionPanelNames.push('SearchPanel');this.SortByField='';this.SortReversed=false;this.aDisplayNames=[];this.aDisplayColumns=null;this.aResultActions=[];this.aResultInputs=[];this.HeaderRows=-1;this.AddFormEntry=null;this.StaticRequestVars=[];this.Events.onSearchComplete="onSearchComplete";this.AddEventHandler(this.Events.onSearchComplete,this,this.onSearchComplete);this.Data=null;}
CXDbGui.prototype._GetData=function(RecordId){if(RecordId==0)return this.AddFormEntry;var iIndex=this._GetDataIndex(RecordId);if(iIndex<0)return null;return this.Data['Results'][iIndex];}
CXDbGui.prototype._GetDataIndex=function(RecordId){if(!this.Data.Results)return-1;var aResults=this.Data.Results;for(var iIndex in aResults){var Result=aResults[iIndex];if(Result.RecordId==RecordId){return iIndex;}}
return-1;}
CXDbGui.prototype._NewDataEntry=function(RecordId,Data){return new CXDbGuiEntry(RecordId,Data,this);}
CXDbGui.prototype.CallbackThisForm=function(Form,ResultFormat){if(!ResultFormat)ResultFormat='Html';if(ResultFormat=='Html'){this.ShowLoadingPanel();}
var oRequest=new AjaxCallback(this,'CallbackThisFormComplete'+ResultFormat);var PostData=this.BuildPostData(Form,ResultFormat);oRequest.Send(this.Page,PostData);}
CXDbGui.prototype.BuildSingleActionPostData=function(Form,ResultFormat,Action){var aDisabledControls=[];for(iIndex=0;iIndex<Form.elements.length;iIndex++){var element=Form.elements[iIndex];if(element.name!='Action')continue
if(element.disabled)continue;element.disabled=true;aDisabledControls.push(iIndex);}
var PostData=this.BuildPostData(Form,ResultFormat);for(iIndex=0;iIndex<aDisabledControls.length;iIndex++){if(Form.elements[iIndex].name=='Action'){Form.elements[iIndex].disabled=false;}}
return PostData+'&Action='+Action;}
CXDbGui.prototype.CallbackThisFormCompleteHtml=function(oRequest){var oPanel=document.getElementById('CallbackResponsePanel');if(!oPanel){alert("Can't find the CallbackResponsePanel.  The results are shown here instead:"+oRequest.responseText);}else{oPanel.style.display='';oPanel.innerHTML=oRequest.responseText;window.location.href="#CallbackResponsePanel";}}
CXDbGui.prototype.CallbackThisFormCompleteJs=function(oRequest){alert(oRequest.responseText);}
CXDbGui.prototype.ToggleEntryExtendedInfo=function(RecordId){var Result=this._GetData(RecordId);if(!Result)return;Result.ToggleEntryExtendedInfo();}
CXDbGui.prototype.ShowActionPanel=function(){CXDbGui.superclass.ShowActionPanel.apply(this,arguments);var p=document.getElementById('AddPanel');if(!p)return;if(p.style.display=='none')return;if(!this.Id)return;if(!this.AddFormEntry){this.AddFormEntry=this._NewDataEntry(0,{});}
this.AddFormEntry.ExtendedInfo=p;this.AddFormEntry.Edit();}
CXDbGui.prototype.ShowErrorPanel=function(Input,ErrorMessage){if(!Input.id)return;var ErrorPanelId=Input.id+'ErrorPanel';var Panel=document.getElementById(ErrorPanelId);if(!Panel){Panel=document.createElement('span');Panel.id=ErrorPanelId;Panel.className='inputerror';Input.parentNode.appendChild(Panel);}else{Panel.style.display='';}
Panel.innerHTML=ErrorMessage;}
CXDbGui.prototype.HideErrorPanel=function(Input){if(!Input.id)return;var ErrorPanelId=Input.id+'ErrorPanel';var Panel=document.getElementById(ErrorPanelId);if(!Panel)return;Panel.style.display='none';}
CXDbGui.prototype.DisplayName=function(FieldName){var DisplayName=FieldName;for(var iIndex in this.aDisplayNames){if(this.aDisplayNames[iIndex].Name==FieldName){DisplayName=this.aDisplayNames[iIndex].Value;break;}}
return DisplayName;}
CXDbGui.prototype.FieldSortLink=function(FieldName,Attributes){var aResult=new Array();aResult.push('<span style="white-space: nowrap" ');aResult.push(Attributes);aResult.push('>');{aResult.push('<a href="javascript:');aResult.push(this.Id+'.SortAndRender(\''+FieldName+'\')');aResult.push('" title="Sort by this column">');aResult.push(htmlspecialchars(this.DisplayName(FieldName)));aResult.push('</a>');if(this.SortByField==FieldName)
if(this.SortReversed){aResult.push('&nbsp;<img src="'+this.ImagesPath+'arrow-up.gif" alt="">');}else{aResult.push('&nbsp;<img src="'+this.ImagesPath+'arrow-down.gif" alt="">');}}
aResult.push('</span>');return aResult.join('');}
CXDbGui.prototype.Sort=function(FieldName){if(FieldName){if(FieldName==this.SortByField){this.SortReversed=!this.SortReversed;}else{this.SortByField=FieldName;for(var i in this.Data['Results']){this.Data['Results'][i].SortKey=null;}}}
if(!this.SortByField)return;var SortByField=this.SortByField;var Reversed=this.SortReversed?-1:1;var f=function(a,b){if(!a.SortKey){a.SortKey=eval('a.Data.'+SortByField);if(!a.SortKey)a.SortKey=a.RecordId;}
if(!b.SortKey){b.SortKey=eval('b.Data.'+SortByField);if(!b.SortKey)b.SortKey=b.RecordId;}
if(a.SortKey>b.SortKey)return 1*Reversed;if(a.SortKey<b.SortKey)return-1*Reversed;return 0;}
this.Data['Results'].sort(f);}
CXDbGui.prototype.RenderHeaders=function(eTable){var eSortControls=eTable.insertRow(-1);eSortControls.className="SortControls listheader";{Element=eSortControls.insertCell(-1);Element.className='EntrySummaryActions';var iColspan=this.aResultActions.length+this.aResultInputs.length;Element.colSpan=iColspan+1;Element.innerHTML='<span class="ExtendedInfoIndicatorRegion EntrySummaryRegion"></span>'
+'<span class="EntrySummaryRegion"></span>';if(this.Data['Results'].length){if(!this.aDisplayColumns){this.aDisplayColumns=[];for(var Name in this.Data['Results'][0].Data){this.aDisplayColumns.push(Name);}}
for(var iIndex=0;iIndex<this.aDisplayColumns.length;iIndex++){var Name=this.aDisplayColumns[iIndex];Element=eSortControls.insertCell(-1);Element.className='EntrySummaryName';Element.innerHTML=this.FieldSortLink(htmlspecialchars(Name),' class="EntrySummaryRegion"');}}}}
CXDbGui.prototype.Render=function(){var Container=document.getElementById('ActionContent');Container.style.display="none";Container.innerHTML='';var Element=document.createElement('span');var aContents=new Array();aContents.push("<b>Results:</b> "+this.Data['Results'].length);Element.innerHTML=aContents.join('');Container.appendChild(Element);var Message=this.Data['Message'];if(Message){Element=document.createElement('p');Element.innerHTML=Message;Container.appendChild(Element);}
var Form=document.createElement('form');Form.id='SearchResultsForm';Form.action='';Container.appendChild(Form);Form.innerHTML=this.HiddenFormInputsToHtml();if(this.Data['Results'].length){var eTable=document.createElement('table');eTable.id='SearchResults';eTable.className='SearchResults';this.RenderHeaders(eTable);Form.appendChild(eTable);{var aResults=this.Data['Results'];for(var iIndex in aResults){var Result=aResults[iIndex];Result.InsertInto(eTable);}}
var SearchResultActions=document.createElement('span');SearchResultActions.id="SearchResultsActions";SearchResultActions.innerHTML=this.ActionButtonsToHtml(XMLDBGUI_ACTION_STYLE_SEARCH_LIST);Form.appendChild(SearchResultActions);}
Container.style.display="";}
CXDbGui.prototype.SortAndRender=function(FieldName){this.ShowResultMessage(null);this.Sort(FieldName);this.Render();}
CXDbGui.prototype.GenericSearch=function(){var Form=document.getElementById('SearchForm');this.SetActionTitle("Searching the database");var Element=document.getElementById('ActionContent');Element.innerHTML='';this.HidePanel('SearchPanel');this.ShowLoadingPanel();this.ShowResultMessage(null);var oRequest=new AjaxCallback(this,'_SearchComplete');var PostData=this.BuildPostData(Form,'Js');oRequest.Send(this.Page,PostData);}
CXDbGui.prototype.Search=function(XPathSearch){this.SetActionTitle("Searching the database");var Element=document.getElementById('ActionContent');Element.innerHTML='';this.ShowLoadingPanel();this.ShowResultMessage(null);var oRequest=new AjaxCallback(this,'_SearchComplete');var PostData=[this.StaticRequestVars.join('&'),'ContentType=AjaxJs','Action=Search','Search='+escape(Utf8.encode(XPathSearch))].join('&');oRequest.Send(this.Page,PostData);}
CXDbGui.prototype._SearchComplete=function(oRequest){this.HideLoadingPanel();this.SetActionTitle("Search results");var SearchResults=oRequest.responseText;if(typeof(SearchResults)=='object'){if(!SearchResults.Results)return;this.Data=SearchResults;}else{SearchResults=eval(oRequest.responseText);if(typeof(SearchResults)=='object'){this.Data=SearchResults;}}
if(this.Data&&this.Data.Results){var aResults=this.Data.Results;var aEntries=new Array();for(var iIndex in aResults){var Result=aResults[iIndex];aEntries.push(this._NewDataEntry(iIndex,Result));}
this.Data.Results=aEntries;}
this.RaiseEvent(this.Events.onSearchComplete,[]);}
CXDbGui.prototype.onSearchComplete=function(){this.Sort();this.Render();}
CXDbGui.prototype.Edit=function(RecordId){var Entry=this._GetData(RecordId);if(!Entry)return;Entry.Edit();}
CXDbGui.prototype.Apply=function(RecordId){var Entry=null;if(RecordId==0){Entry=this.AddFormEntry;}else{Entry=this._GetData(RecordId);}
if(!Entry)return;Entry.Apply();}
CXDbGui.prototype.Cancel=function(RecordId){var Entry=this._GetData(RecordId);if(!Entry)return;Entry.Cancel();}
CXDbGui.prototype.DeleteSelected=function(Form){if(!confirm('Are you sure you want to delete these items?  This action is not reversible!')){return false;}
this.ShowLoadingPanel();var oRequest=new AjaxCallback(this,'_DeleteComplete');var PostData=this.BuildSingleActionPostData(Form,'Js','Delete Record');oRequest.Send(this.Page,PostData);}
CXDbGui.prototype.Delete=function(RecordId){var Entry=this._GetData(RecordId);if(!Entry)return;Entry.ShowLoadingPanel();var oRequest=new AjaxCallback(this,'_DeleteComplete');var PostData=['ContentType=AjaxJs','Action=Delete Record','Select'+RecordId+'=on'].join('&');oRequest.Send(this.Page,PostData);}
CXDbGui.prototype._DeleteComplete=function(oRequest){this.HideLoadingPanel();this.HidePanel('AddPanel');var Result=eval(oRequest.responseText);if(typeof(Result)!='object'||!Result.DeletedRecordIds){this.Render();return;}
this.ShowResultMessage(Result);var Table=document.getElementById('SearchResults');for(iIndex=0;iIndex<Result.DeletedRecordIds.length;iIndex++){var RecordId=Result.DeletedRecordIds[iIndex];var iDataIndex=this._GetDataIndex(RecordId);if(iDataIndex<0)continue;this.Data['Results'].splice(iDataIndex,1);}
this.Render();}
CXDbGui.prototype.ExpandAll=function(){var aResults=this.Data['Results'];for(var iIndex in aResults){var Result=aResults[iIndex];Result.ShowEntryExtendedInfo();}}
CXDbGui.prototype.CollapseAll=function(){var aResults=this.Data['Results'];for(var iIndex in aResults){var Result=aResults[iIndex];Result.HideEntryExtendedInfo();}}

window.CJournalGuiEntry=function(Data){if(arguments.length<=0)return;this.Init.apply(this,arguments);}
CJournalGuiEntry.prototype=new CXDbGuiEntry();CJournalGuiEntry.prototype.constructor=CJournalGuiEntry;CJournalGuiEntry.superclass=CXDbGuiEntry.prototype;CJournalGuiEntry.prototype.Init=function(RecordId,Data,Parent){CJournalGuiEntry.superclass.Init.apply(this,arguments);this.ToInfoPanel=null;this.StartTime=this.Data.StartTime;this.DateField='StartTime';this.JournalDate=new Date(this.Data[this.DateField]);this.RenderedColumns=null;}
CJournalGuiEntry.prototype.GetDayStart=function(){return new Date(this.JournalDate.getFullYear(),this.JournalDate.getMonth(),this.JournalDate.getDate());}
CJournalGuiEntry.prototype.GetMonthStart=function(){return new Date(this.JournalDate.getFullYear(),this.JournalDate.getMonth(),1);}
CJournalGuiEntry.prototype.GetYearStart=function(){return new Date(this.JournalDate.getFullYear(),0,1);}
CJournalGuiEntry.prototype.GetWeekNo=function(){var OneHourInSecs=60*60;var OneDayInSecs=24*OneHourInSecs;var OneWeekInSecs=7*OneDayInSecs;var OneWeekInMilliSecs=OneWeekInSecs*1000;var YearStart=this.GetYearStart();return Math.floor((this.JournalDate-YearStart)/OneWeekInMilliSecs)+1;}
CJournalGuiEntry.prototype.InsertSummaryIntoRow=function(Row){this.RenderedColumns=0;for(var iIndex=0;iIndex<this.Parent.aDisplayColumns.length;iIndex++){var Name=this.Parent.aDisplayColumns[iIndex];if(Name==this.DateField){this.Parent.InsertDateFieldIntoRow(Row,this);}else{var e=Row.insertCell(-1);if(this.Data[Name]){e.innerHTML=htmlspecialchars(this.Data[Name]);}else{e.innerHTML='';}
this.RenderedColumns++;}}
return;}
CJournalGuiEntry.prototype.InsertInto=function(Table,Index){var RowElementId='Row'+this.RecordId;var Row=document.getElementById(RowElementId);if(Row){alert("Re-rendering a row using CJournalGuiEntry::InsertInto is not currently supported");return;}
CJournalGuiEntry.superclass.InsertInto.apply(this,arguments);if(this.ToInfoPanel){var Row=document.getElementById('ExtendedInfoRow'+this.RecordId);if(!Row)return;var c=Row.cells[0];if(!c)return;c.colSpan=this.RenderedColumns;var c=Row.insertCell(0);for(var iIndex in this.Parent.aResultInputs){var e=Row.insertCell(0);}
for(var iIndex in this.Parent.aResultActions){var e=Row.insertCell(0);}}}
CJournalGuiEntry.prototype._ModifyComplete=function(oRequest){var ResultData=eval(oRequest.responseText);if(typeof(ResultData)=='undefined'){this.Edit();return;}
if(!ResultData.Results)return;if(this.RecordId==0){this.Parent.HidePanel('AddPanel');this.ExtendedInfo.innerHTML='';this.Parent.AddFormEntry=null;var RecordId=0;for(RecordId in ResultData.Results)break;var StartTime=new Date(ResultData.Results[RecordId].StartTime*1000);this.Parent.JournalCache.Cache(StartTime,StartTime,ResultData.Results);this.Parent.Search();}else if(ResultData.Results[this.RecordId]){this.Init(this.RecordId,ResultData.Results[this.RecordId],this.Parent);this.Parent.Render();}}
window.CJournalCache=function(Data){this.Init.apply(this,arguments);}
CJournalCache.prototype=new Object();CJournalCache.prototype.constructor=CJournalCache;CJournalCache.superclass=Object.prototype;CJournalCache.prototype.Init=function(DateField){this.Data={};this.DateRanges=[];this.DateField=DateField;}
CJournalCache.prototype._CachedRange=function(AfterDate,BeforeDate){for(var iIndex=0;iIndex<this.DateRanges.length;iIndex++){var Range=this.DateRanges[iIndex];if(Range.UpperLimit<AfterDate)continue;if(Range.LowerLimit>AfterDate)return false;if(Range.UpperLimit<BeforeDate)return false;return true;}
return false;}
CJournalCache.prototype.Lookup=function(AfterDate,BeforeDate){if(!this._CachedRange(AfterDate,BeforeDate))return null;var Result={};for(var Key in this.Data){var Data=this.Data[Key];var StartTime=new Date(Data[this.DateField]*1000);if(StartTime<AfterDate)continue;if(BeforeDate<StartTime)continue;Result[Key]=Data;}
return Result;}
CJournalCache.prototype.PatchCache=function(Data){for(var Key in Data){this.Data[Key]=Data[Key];}}
CJournalCache.prototype.Cache=function(AfterDate,BeforeDate,Data){this.PatchCache(Data);for(var iIndex=0;iIndex<this.DateRanges.length;iIndex++){var Range=this.DateRanges[iIndex];if(Range.UpperLimit<AfterDate)continue;if(Range.LowerLimit>BeforeDate){break;}
if(Range.UpperLimit<BeforeDate){Range.UpperLimit=BeforeDate;while(iIndex+1<this.DateRanges.length){var Range2=this.DateRanges[iIndex+1];if(Range2.LowerLimit>Range.UpperLimit)break;if(Range.UpperLimit<Range2.UpperLimit){Range.UpperLimit=Range2.UpperLimit;}
this.DateRanges.splice(iIndex+1,1);}}
if(Range.LowerLimit>AfterDate){Range.LowerLimit=AfterDate;}
return;}
this.DateRanges.splice(iIndex,0,{"LowerLimit":AfterDate,"UpperLimit":BeforeDate});}
window.CJournalGui=function(Page){if(arguments.length<=0)return;this.Init.apply(this,arguments);}
CJournalGui.prototype=new CXDbGui();CJournalGui.prototype.constructor=CJournalGui;CJournalGui.superclass=CXDbGui.prototype;CJournalGui.prototype.Init=function(Page){CJournalGui.superclass.Init.apply(this,arguments);this.DateField='StartTime';this.SortByField=this.DateField;this.iBaseDelta=0;this.iWeeksInView=5;this.VisibleMetaData=null;this.LastSeenMetaData={};this.aDateFields={'Month':'MMMM yy','WeekNo':'WeekNumber not supported by Date.format, so always renders as "Week #"','Day':'ddd dd','Time':'hh:mm tt'};this.JournalCache=new CJournalCache(this.DateField);this.CachableSearch=null;this.MoveWindowLabel='Event Date';this.Events.onWindowMove="onWindowMove";this.AddEventHandler(this.Events.onWindowMove,this,this.onWindowMove);}
CJournalGui.prototype._NewDataEntry=function(RecordId,Data){return new CJournalGuiEntry(RecordId,Data,this);}
CJournalGui.prototype.MoveViewWindowControlHtml=function(){var BackTitle='Back '+this.iWeeksInView+' Weeks';var aResults=['<span id="MoveWindowControl">','<a href="javascript:',this.Id,'.MoveWindow(',-this.iWeeksInView,')">','<img src="',this.ImagesPath,'arrow-up.gif" alt="',BackTitle,'" title="',BackTitle,'" border="0"></a><br>'];aResults.push(VerticalText(this.MoveWindowLabel),'<br>');var ForwardTitle='Forward '+this.iWeeksInView+' Weeks';aResults.push('<a href="javascript:',this.Id,'.MoveWindow(',this.iWeeksInView,')">','<img src="',this.ImagesPath,'arrow-down.gif" alt="',ForwardTitle,'" title="',ForwardTitle,'" border="0"></a>','</span>');return aResults.join('');}
CJournalGui.prototype.MoveWindow=function(iWeeksDelta){this.iBaseDelta+=iWeeksDelta;this.RaiseEvent(this.Events.onWindowMove,[this.iBaseDelta,this.iWeeksInView]);}
CJournalGui.prototype.ResizeWindow=function(){var f=document.getElementById('ResizeWindowForm');if(!f)return;var iBaseStartMonth=parseInt(f.elements.BaseStartMonth.value);var iBaseStartYear=parseInt(f.elements.BaseStartYear.value);if(iBaseStartMonth||iBaseStartYear){var TargetDate=new Date();if(iBaseStartYear)TargetDate.setFullYear(iBaseStartYear);if(iBaseStartMonth)TargetDate.setMonth(iBaseStartMonth-1);TargetDate.setDate(1);for(var iMonthDay=1;TargetDate.getDay()!=0;iMonthDay++){TargetDate.setDate(iMonthDay);}
var Delta=TargetDate-new Date();var OneWeekInMilliSecs=7*24*60*60*1000;this.iBaseDelta=Math.floor(Delta/OneWeekInMilliSecs);}
this.iWeeksInView=parseInt(f.elements.WeeksInView.value);this.RaiseEvent(this.Events.onWindowMove,[this.iBaseDelta,this.iWeeksInView]);}
CJournalGui.prototype.onWindowMove=function(iBaseDelta,WeeksInView){this.Search();}
CJournalGui.prototype._AfterDate=function(){var OneWeekInSecs=7*24*60*60;var AfterDate=new Date();AfterDate.setUTCMilliseconds(0);AfterDate.setUTCSeconds(0);AfterDate.setUTCMinutes(0);AfterDate.setUTCHours(0);return new Date(AfterDate.getTime()+this.iBaseDelta*OneWeekInSecs*1000);}
CJournalGui.prototype._BeforeDate=function(){var OneWeekInSecs=7*24*60*60;var AfterDate=this._AfterDate();return new Date(AfterDate.getTime()+(this.iWeeksInView*OneWeekInSecs*1000));}
CJournalGui.prototype.Search=function(XPathSearch){var AfterDate=this._AfterDate();var BeforeDate=this._BeforeDate();var aXPathSearch=[];if(XPathSearch){aXPathSearch.push('('+XPathSearch+')');this.CachableSearch=null;}else{this.CachableSearch={'After':AfterDate,'Before':BeforeDate};var CachedResults=this.JournalCache.Lookup(AfterDate,BeforeDate);if(CachedResults!=null){this.CachableSearch=null;var SearchResults={};SearchResults.Results=CachedResults;var oRequest={};oRequest.responseText=SearchResults;this._RenderSearch(oRequest);return;}
aXPathSearch.push(this.DateField+' > '+AfterDate.getTime()/1000);aXPathSearch.push(this.DateField+' < '+BeforeDate.getTime()/1000);}
XPathSearch=aXPathSearch.join(' and ');CJournalGui.superclass.Search.apply(this,[XPathSearch]);}
CJournalGui.prototype._SearchComplete=function(oRequest){if(this.CachableSearch){if(typeof(oRequest.responseText)=='object'){var SearchResults=oRequest.responseText;}else{var SearchResults=eval(oRequest.responseText);if(typeof(SearchResults)=='undefined')return;}
this.JournalCache.Cache(this.CachableSearch.After,this.CachableSearch.Before,SearchResults.Results);}
this._RenderSearch(oRequest);}
CJournalGui.prototype._RenderSearch=function(oRequest){CJournalGui.superclass._SearchComplete.apply(this,arguments);var ActionTitle=document.getElementById('ActionTitle');if(ActionTitle){if(!ActionTitle.firstChild){ActionTitle.appendChild(document.createTextNode(''));}
var AfterDate=this._AfterDate();var BeforeDate=this._BeforeDate();ActionTitle.firstChild.nodeValue=[AfterDate.format('dddd dd MMMM yyyy'),' to ',BeforeDate.format('dddd dd MMMM yyyy')].join('');}}
CJournalGui.prototype.InsertDateFieldIntoRow=function(Row,Entry){var EntryIsThisWeek=false;{var oDate=Entry.JournalDate.getTime();var oToday=new Date();var iTimeToServiceInSecs=(oDate-oToday)/1000;if(iTimeToServiceInSecs>0){var iWeekInSecs=60*60*24*7;if(iTimeToServiceInSecs<iWeekInSecs){EntryIsThisWeek=true;}}}
var WeekStyle='';if(EntryIsThisWeek){WeekStyle='ThisWeek';}
var RowsPerEntry=Entry.ToInfoPanel?2:1;for(var DateAttribute in this.aDateFields){switch(DateAttribute){case'Year':var YearStart=Entry.GetYearStart().getTime();if(this.SortByField==this.DateField){if(this.LastSeenMetaData.YearStart){if(this.LastSeenMetaData.YearStart==YearStart)break;}
this.LastSeenMetaData.YearStart=YearStart;}
var e=Row.insertCell(-1);if(this.SortByField==this.DateField){e.rowSpan=this.VisibleMetaData.ByYear[YearStart].length*RowsPerEntry;e.className='DateField JournalGuiYear';e.innerHTML=VerticalText(Entry.JournalDate.format(this.aDateFields[DateAttribute]),'','','','#CCCCCC');}else{e.className='DateField JournalGuiYear';e.innerHTML=htmlspecialchars(Entry.JournalDate.format(this.aDateFields[DateAttribute]));}
break;case'Month':var MonthStart=Entry.GetMonthStart().getTime();if(this.SortByField==this.DateField){if(this.LastSeenMetaData.MonthStart){if(this.LastSeenMetaData.MonthStart==MonthStart)break;}
this.LastSeenMetaData.MonthStart=MonthStart;}
var e=Row.insertCell(-1);if(this.SortByField==this.DateField){e.rowSpan=this.VisibleMetaData.ByMonth[MonthStart].length*RowsPerEntry;e.className='DateField JournalGuiMonth';e.innerHTML=VerticalText(Entry.JournalDate.format(this.aDateFields[DateAttribute]),'','','','#CCCCCC');}else{e.className='DateField JournalGuiMonth';e.innerHTML=htmlspecialchars(Entry.JournalDate.format(this.aDateFields[DateAttribute]));}
break;case'WeekNo':var iWeekNo=Entry.GetWeekNo();var YearStart=Entry.GetYearStart().getTime();if(this.SortByField==this.DateField){if(this.LastSeenMetaData.WeekNo==iWeekNo)break;this.LastSeenMetaData.WeekNo=iWeekNo;}
var e=Row.insertCell(-1);if(this.SortByField==this.DateField){e.rowSpan=this.VisibleMetaData.ByWeekNo[YearStart][iWeekNo].length*RowsPerEntry;e.className=WeekStyle+' DateField JournalGuiWeekNo';e.innerHTML=VerticalText('Week '+iWeekNo,'','','','#CCCCCC')}else{e.className=WeekStyle+' DateField JournalGuiWeekNo';e.innerHTML=htmlspecialchars('Week '+iWeekNo);}
break;case'Day':var DayStart=Entry.GetDayStart().getTime();if(this.SortByField==this.DateField){if(this.LastSeenMetaData.DayStart){if(this.LastSeenMetaData.DayStart==DayStart)break;}
this.LastSeenMetaData.DayStart=DayStart;}
var e=Row.insertCell(-1);if(this.SortByField==this.DateField){e.rowSpan=this.VisibleMetaData.ByDay[DayStart].length*RowsPerEntry;}
e.className=WeekStyle+' DateField JournalGuiDay';e.innerHTML=htmlspecialchars(Entry.JournalDate.format(this.aDateFields[DateAttribute]));break;case'Time':var e=Row.insertCell(-1);e.className=WeekStyle+' DateField JournalGuiTime';e.rowSpan=RowsPerEntry;e.innerHTML=htmlspecialchars(Entry.JournalDate.format(this.aDateFields[DateAttribute]));break;default:}}}
CJournalGui.prototype.RenderHeaders=function(eTable){var eSortControls=eTable.insertRow(-1);eSortControls.id='SearchResultsSortControls';eSortControls.className='SortControls';{Element=eSortControls.insertCell(-1);Element.className='EntrySummaryActions';var iColspan=this.aResultActions.length+this.aResultInputs.length;Element.colSpan=iColspan+1;Element.innerHTML='<span class="ExtendedInfoIndicatorRegion EntrySummaryRegion"></span>'
+'<span class="EntrySummaryRegion"></span>';if(this.Data['Results'].length){for(var iIndex=0;iIndex<this.aDisplayColumns.length;iIndex++){var Name=this.aDisplayColumns[iIndex];Element=eSortControls.insertCell(-1);Element.id='SearchResultsSortBy'+Name;if(Name==this.DateField){var iColumns=0;for(var Key in this.aDateFields)iColumns++;Element.colSpan=iColumns;Element.style.textAlign='center';}
Element.className='EntrySummaryName';Element.style.verticalAlign='bottom';Element.innerHTML=this.FieldSortLink(htmlspecialchars(Name),' class="EntrySummaryRegion"');}}}}
CJournalGui.prototype.Render=function(){var Container=document.getElementById('ActionContent');Container.style.display='none';Container.innerHTML='';var Element=document.createElement('span');var aContents=new Array();aContents.push("<b>Results:</b> "+this.Data['Results'].length);Element.innerHTML=aContents.join('');Container.appendChild(Element);var Message=this.Data['Message'];if(Message){Element=document.createElement('p');Element.innerHTML=Message;Container.appendChild(Element);}
var Form=document.createElement('form');Form.id='SearchResultsForm';Form.action='';Container.appendChild(Form);Form.innerHTML=this.HiddenFormInputsToHtml();var eJournalTable=document.createElement('table');var JournalRow=eJournalTable.insertRow(-1);{eJournalTable.id='JournalTable';}
Form.appendChild(eJournalTable);var Element=JournalRow.insertCell(-1);Element.innerHTML=this.MoveViewWindowControlHtml();var MainCell=JournalRow.insertCell(-1);MainCell.style.verticalAlign='top';if(!this.Data['Results'].length){var AfterDate=this._AfterDate();var BeforeDate=this._BeforeDate();MainCell.innerHTML=['<p style="height:100px;margin:40px;width:300px">','No items exist between <strong>',AfterDate.format('dddd dd MMMM yy'),,'</strong> and <strong>',BeforeDate.format('dddd dd MMMM yy'),,'</strong>.  Please use the navigation controls to search a different time frame.','</p>'].join('');}else{var eTable=document.createElement('table');eTable.id='SearchResults';eTable.className='SearchResults';this.RenderHeaders(eTable);MainCell.appendChild(eTable);{this.VisibleMetaData={'ByDay':{},'ByMonth':{},'ByYear':{},'ByWeekNo':{}};var aResults=this.Data['Results'];for(var iIndex in aResults){var Result=aResults[iIndex];var DayStart=Result.GetDayStart().getTime();if(!this.VisibleMetaData.ByDay[DayStart])this.VisibleMetaData.ByDay[DayStart]=[];this.VisibleMetaData.ByDay[DayStart].push(Result);var MonthStart=Result.GetMonthStart().getTime();if(!this.VisibleMetaData.ByMonth[MonthStart])this.VisibleMetaData.ByMonth[MonthStart]=[];this.VisibleMetaData.ByMonth[MonthStart].push(Result);var YearStart=Result.GetYearStart().getTime();if(!this.VisibleMetaData.ByYear[YearStart])this.VisibleMetaData.ByYear[YearStart]=[];this.VisibleMetaData.ByYear[YearStart].push(Result);var WeekNo=Result.GetWeekNo();if(!this.VisibleMetaData.ByWeekNo[YearStart])this.VisibleMetaData.ByWeekNo[YearStart]={};if(!this.VisibleMetaData.ByWeekNo[YearStart][WeekNo])this.VisibleMetaData.ByWeekNo[YearStart][WeekNo]=[];this.VisibleMetaData.ByWeekNo[YearStart][WeekNo].push(Result);}}
{this.LastSeenMetaData={};var aResults=this.Data['Results'];for(var iIndex in aResults){var Result=aResults[iIndex];Result.ReInit();Result.InsertInto(eTable);}}
var SearchResultActions=document.createElement('span');SearchResultActions.id="SearchResultsActions";SearchResultActions.innerHTML=this.ActionButtonsToHtml(XMLDBGUI_ACTION_STYLE_SEARCH_LIST);MainCell.appendChild(SearchResultActions);}
{var e=document.createElement('form');e.id='ResizeWindowForm';e.className='screenonly';e.action=['javascript:',this.Id,'.ResizeWindow()'].join('');var Now=new Date();var iTopYear=Now.getFullYear()+1;var aYears=['<option value="0">[Current Year]</option>'];for(iYearIndex=0;iYearIndex<20;iYearIndex++){aYears.push(['<option value="',iTopYear-iYearIndex,'">',iTopYear-iYearIndex,'</option>'].join(''));}
e.innerHTML=['Show <input type="text" size="3" name="WeeksInView" value="',this.iWeeksInView,'" style="font-size:8pt"> Weeks, start at ','<select name="BaseStartMonth">','<option value="0">[Current Month]</option>','<option value="1">January</option>','<option value="2">February</option>','<option value="3">March</option>','<option value="4">April</option>','<option value="5">May</option>','<option value="6">June</option>','<option value="7">July</option>','<option value="8">August</option>','<option value="9">September</option>','<option value="10">October</option>','<option value="11">November</option>','<option value="12">December</option>','</select>','<select name="BaseStartYear">',aYears.join(''),'</select>','<input type="submit" value="Go" style="font-size:8pt">',].join('');MainCell.appendChild(e);}
Container.style.display='';}

window.CRotaCache=function(Data){this.Init.apply(this,arguments);}
CRotaCache.prototype=new Object();CRotaCache.prototype.constructor=CRotaCache;CRotaCache.superclass=Object.prototype;CRotaCache.prototype.Init=function(){this.UserNames={};this.AvailableUserNames=null;this.AvailableUserIndex=null;this.DutyTeams={};this.Availability=new CJournalCache('StartTime');}
CRotaCache.prototype.CacheUserNames=function(UserNames){for(UserId in UserNames){this.UserNames[UserId]=UserNames[UserId];}
this.AvailableUserNames=null;this.AvailableUserIndex=null;}
CRotaCache.prototype.CacheDutyTeam=function(DutyId,DutyTeam){this.DutyTeams[DutyId]=DutyTeam;for(Key in DutyTeam){this.UserNames[Key]=DutyTeam[Key];}
this.AvailableUserNames=null;this.AvailableUserIndex=null;}
CRotaCache.prototype.GetAvailableUserNames=function(){if(this.AvailableUserNames)return this.AvailableUserNames;this.AvailableUserNames=[];this.AvailableUserIndex={};for(var UserId in this.UserNames){var User=this.UserNames[UserId];User.Id=UserId;if(!User.UserName)continue;this.AvailableUserNames.push(User.UserName);var Key=new String(User.UserName);this.AvailableUserIndex[Key.toLowerCase()]=User;}
return this.AvailableUserNames;}
CRotaCache.prototype.LookupUserId=function(UserName){this.GetAvailableUserNames();var Key=new String(UserName);if(!this.AvailableUserIndex[Key.toLowerCase()])return 0;return this.AvailableUserIndex[Key.toLowerCase()];}
CRotaCache.prototype.GetUserName=function(UserId){if(this.UserNames[UserId]){return this.UserNames[UserId].UserName;}else if(UserId==0){return'Unassigned';}else{return'User '+UserId;}}

window.CDutiesGuiEntry=function(Data){if(arguments.length<=0)return;this.Init.apply(this,arguments);}
CDutiesGuiEntry.prototype=new CXDbGuiEntry();CDutiesGuiEntry.prototype.constructor=CDutiesGuiEntry;CDutiesGuiEntry.superclass=CXDbGuiEntry.prototype;CDutiesGuiEntry.prototype.Init=function(UserId,Data,Parent){CDutiesGuiEntry.superclass.Init.apply(this,arguments);if(!this.Parent.bAdministrator)
this.ToInfoPanel=null;this.Name=new String(this.Data.Name).toLowerCase();this.LastEvent=-1;if(this.Data.LastEvent)this.LastEvent=this.Data.LastEvent;this.Select=(this.Parent.aSelectedDuties[this.RecordId]?'1':'0')+this.Name;this.Member=(this.Parent.aActiveUserDuties[this.RecordId]?'1':'0')+this.Name;}
CDutiesGuiEntry.prototype.InsertSummaryIntoRow=function(Row){for(var iIndex=0;iIndex<this.Parent.aDisplayColumns.length;iIndex++){var Name=this.Parent.aDisplayColumns[iIndex];var e=Row.insertCell(-1);var c='';switch(Name){case'LastEvent':e.style.textAlign='right';if(!this.Data.LastEvent){c='<span title="This duty has never been assigned to an event">[Unused]</label>';}else{var d=new Date(this.Data.LastEvent*1000);c=d.toLocaleString();}
break;case'Member':c='No';if(this.Parent.aActiveUserDuties[this.RecordId]){c='Yes';}
break;default:c=htmlspecialchars(this.Data[Name])
break;}
e.innerHTML=c;}
return;}
CDutiesGuiEntry.prototype.ToInfoPanel=function(){if(this.InfoPanel)return this.InfoPanel;var e=document.createElement('span');e.id='InfoPanel'+this.RecordId;{var aContents=[];var Field=new CField(this.Parent.DisplayName('Name'),this.Data.Name);aContents.push(Field.ToHtml());var Field=new CField(this.Parent.DisplayName('Events'),this.Data.Events);aContents.push(Field.ToHtml());var Field=new CField(this.Parent.DisplayName('GroupId'),this.Parent.GetGroupNames().GetName(this.Data.GroupId));aContents.push(Field.ToHtml());var Field=new CField(this.Parent.DisplayName('TeamSize'),this.Data.TeamSize?this.Data.TeamSize:1);aContents.push(Field.ToHtml());if(!this.Data.LastEvent){c='This duty has never been assigned to an event';}else{var d=new Date(this.Data.LastEvent*1000);c=d.toLocaleString();}
var Field=new CField(this.Parent.DisplayName('LastEvent'),c);aContents.push(Field.ToHtml());aContents.push(['<span class="inputgroup">','<span class="inputcontrol">','<input class="ActionButton" type="button" value="Delete" ',' onclick="',this.Parent.Id,'.ShowPanel(\'ConfirmDeletePanel',this.RecordId,'\')"/>','<input class="ActionButton" type="button" value="Edit" ',' onclick="',this.Parent.Id,'.Edit(\'',this.RecordId,'\')"/>','</span>','</span>','<div class="confirmpanel" id="ConfirmDeletePanel',this.RecordId,'" style="display:none">','<p>Are you sure you want to delete this entry?  Note this action is not reversible.</p>','<input type="button" value=" No " onclick="',this.Parent.Id,'.HidePanel(\'ConfirmDeletePanel',this.RecordId,'\')">','<input type="button" name="Confirm" value="Yes" onclick="',this.Parent.Id,'.Delete(',this.RecordId,')">','</div>',].join(''));e.innerHTML=aContents.join('');}
this.InfoPanel=e;return e;}
CDutiesGuiEntry.prototype.ToEditForm=function(){if(this.Form)return this.Form;this.Form=document.createElement('form');this.Form.action=['javascript:',this.Parent.Id,'.Apply(\'',this.RecordId,'\')'].join('');this.Form.id="EditForm"+this.RecordId;{var aContents=[];var Value=new CField('Name',this.Data.Name);aContents.push(Value.ToInput(this.Parent.DisplayName(Value.Name),'title="The descriptive name for this duty"'));var Value=new CField('Events',this.Data.Events);var LocationsInput=new CField('Location','Type a location in here and the box below will show you the LocationId on completion.',false);var LocationsHtml=LocationsInput.ToTextArea(['rows="5" ','cols="30" ',' onkeypress="return ',this.Parent.Id,'.OnAutoCompleteAddress(this, event);"',' onblur="return ',this.Parent.Id,'.OnCompleteAddress(this, event)"'].join(''));var LocationsIdInput=new CField('LocationId','');var LocationsIdHtml=LocationsIdInput.ToInputControl('size="5" disabled="true"');var EventsHtml=[Value.ToInputControl('size="50" title="Which events this duty is necessary for"'),' <a style="font-size: 8pt;" ',' title="Show help on how to specify which events the duty applies for"',' href="javascript:',this.Parent.Id,'.TogglePanel(\'EventTypeHelp',this.RecordId,'\')">Help...</a>',' <span id="EventTypeHelp',this.RecordId,'" style="display:none">',' <p>The Event type is specified as an <a href="http://www.w3.org/TR/xpath">XPath</a> query against the events table.  Available columns include:</p>','<ul><li>',['StartTime: numeric: seconds since January 1 1970 00:00:00 GMT','Location: string:<br>'+LocationsHtml,'LocationId: numeric (preferred): '+LocationsIdHtml,'TypeId: numeric (preferred) <a href="/events/eventtypes.php" target="_blank">Options...</a>','Type: string','CommunId: numeric','Sturctured: numeric'].join('</li><li>'),'</li></ul>',' <p>Where there\'s a choice between using a numeric or a string version of a column, you should prefer to use',' the numeric version, as this will be faster.  A query of true() will match all events.','</span>'].join('');aContents.push(new CField(this.Parent.DisplayName(Value.Name),EventsHtml,false).ToHtml());var Value=new CField('Regular Team',this.Parent.GetGroupNames().GetName(this.Data.GroupId));aContents.push(Value.ToInput(this.Parent.DisplayName(Value.Name),['onkeypress="return ',this.Parent.Id,'.OnAutoCompleteGroupName(this,event);" title="Members of this team will always be available as columns to select from"'].join('')));aContents.push('<input type="hidden" name="GroupId" value="'+this.Data.GroupId+'">');var Value=new CField('TeamSize',this.Data.TeamSize);aContents.push(Value.ToInput(this.Parent.DisplayName(Value.Name),'size="6" title="How many people are required by default for this duty"'));this.Form.innerHTML=aContents.join('');}
{var aContents=['<span class="inputcontrol">','<input type="submit" value="',this.RecordId?'Modify':'Create','">'];if(this.RecordId){aContents.push(['<button onclick="',this.Parent.Id,'.Cancel(\'',this.RecordId,'\');return false;">','Cancel</button>',''].join(''));}else{aContents.push(['<button onclick="',this.Parent.Id,'.ClearForm(this);return false;">','Clear</button>',''].join(''));}
aContents.push('</span>');var b=document.createElement('span');b.className='inputgroup';b.innerHTML=aContents.join('');this.Form.appendChild(b);}
{var e=document.createElement('span');e.innerHTML=['<input type="hidden" name="Action" value="Modify Record">','<input type="hidden" name="RecordId" value="',this.RecordId,'">'].join('');this.Form.appendChild(e);}
return this.Form;}
CDutiesGuiEntry.prototype.Apply=function(){if(this.Form.elements['Regular Team']){var GroupName=this.Form.elements['Regular Team'].value;if(GroupName){var Group=this.Parent.GetGroupNames().GetByName(GroupName);if(!Group){alert('Invalid group '+GroupName);return;}
this.Form.elements.GroupId.value=Group.Id;}else{this.Form.elements.GroupId.value=0;}}
CDutiesGuiEntry.superclass.Apply.apply(this,arguments);}
window.CDutiesGui=function(Page){if(arguments.length<=0)return;this.Init.apply(this,arguments);}
CDutiesGui.prototype=new CXDbGui();CDutiesGui.prototype.constructor=CDutiesGui;CDutiesGui.superclass=CXDbGui.prototype;CDutiesGui.prototype.Init=function(Page){CDutiesGui.superclass.Init.apply(this,arguments);this.SortByField='Name';this.aDisplayColumns=['Name','LastEvent','Member'];this.aActiveUserDuties={};this.aSelectedDuties={};this.bAdministrator=false;this.Groups={};this.SubDomains={};this.GroupNames=null;this.Events.onSelectedDutiesChanged="onSelectedDutiesChanged";this.AddressLinesControl=new CAddressLinesControl({});}
CDutiesGui.prototype._NewDataEntry=function(RecordId,Data){return new CDutiesGuiEntry(RecordId,Data,this);}
CDutiesGui.prototype.GetGroupNames=function(){if(!this.GroupNames){this.GroupNames=new CGroupNames(this.Groups,this.SubDomains);}
return this.GroupNames;}
CDutiesGui.prototype.OnAutoCompleteGroupName=function(control,event){var RichControl=new CAutoCompletionControl(control,this.GetGroupNames().GetAvailableNames());return RichControl.OnKeyPress(event);}
CDutiesGui.prototype.ToggleSelection=function(Checkbox){var SearchRegExp=/^Select(\d*)$/;var Name=new String(Checkbox.name);if(Name.search(SearchRegExp)==-1)return;var RecordId=parseInt(Name.replace(SearchRegExp,"$1"));if(Checkbox.checked){this.Select(RecordId);}else{this.Deselect(RecordId);}}
CDutiesGui.prototype.Select=function(RecordId){if(RecordId){if(this.aSelectedDuties[RecordId])return;var Duty=this._GetData(RecordId);if(!Duty)return;if(!Duty.Data.LastEvent)return;this.aSelectedDuties[RecordId]=Duty.Data;this.RaiseEvent(this.Events.onSelectedDutiesChanged,[this.aSelectedDuties]);}}
CDutiesGui.prototype.Deselect=function(RecordId){if(!this.aSelectedDuties[RecordId])return;this.aSelectedDuties[RecordId]=null;var aResult={};for(Id in this.aSelectedDuties){if(!this.aSelectedDuties[Id])continue;aResult[Id]=this.aSelectedDuties[Id];}
this.aSelectedDuties=aResult;this.RaiseEvent(this.Events.onSelectedDutiesChanged,[this.aSelectedDuties]);}
CDutiesGui.prototype.SelectAll=function(){this.ForEachCheckbox('SearchResultsForm',function(e){e.checked=true;});for(var iIndex=0;iIndex<this.Data.Results.length;iIndex++){var Entry=this.Data.Results[iIndex];this.Select(Entry.RecordId);}}
CDutiesGui.prototype.DeselectAll=function(){this.ForEachCheckbox('SearchResultsForm',function(e){e.checked=false;});this.aSelectedDuties={};}
CDutiesGui.prototype.Render=function(){CDutiesGui.superclass.Render.apply(this,arguments);var Form=document.getElementById('SearchResultsForm');if(!Form)return;for(var RecordId in this.aSelectedDuties){if(Form.elements['Select'+RecordId]){Form.elements['Select'+RecordId].checked=true;}}}
CDutiesGui.prototype.OnAutoCompleteAddress=function(Control,oEvent){var RichControl=new CAutoCompletionControl(Control);RichControl.Parent=this;RichControl.OnAutoComplete=function(CharCode){var bResult=this.Parent.AddressLinesControl.AutoCompleteAddress(this.Element,CharCode);return bResult;}
return RichControl.OnKeyPress(oEvent);}
CDutiesGui.prototype.OnCompleteAddress=function(Control,oEvent){this.AddressLinesControl.CompactAddressLines(Control.form,'Location','LocationId');}

window.CRotaEditorGuiEntry=function(Data){if(arguments.length<=0)return;this.Init.apply(this,arguments);}
CRotaEditorGuiEntry.prototype=new CJournalGuiEntry();CRotaEditorGuiEntry.prototype.constructor=CRotaEditorGuiEntry;CRotaEditorGuiEntry.superclass=CJournalGuiEntry.prototype;CRotaEditorGuiEntry.prototype.Init=function(UserId,Data,Parent){CRotaEditorGuiEntry.superclass.Init.apply(this,arguments);this.ToInfoPanel=CRotaEditorGuiEntry.prototype.ToInfoPanel;this.StartTime=this.Data.StartTime;this.RotaCache=Parent.RotaCache;this.RotaJournalCache=Parent.RotaJournalCache;this.AvailabilityJournalCache=Parent.AvailabilityJournalCache;this.JournalDate=new Date(this.Data[this.DateField]*1000);this.GetEntryFunction=[this.Parent.Id,'._GetData(',this.RecordId,')'].join('');this.aSelectionsById={};this.aAssigned=this.Assigned();var aBusy=this.Busy();var aUnavailable=this.Unavailable();for(var Key in this.aUnavailable){this[Key]=4;}
for(var Key in this.aBusy){this[Key]=3;}
for(var iAssigned=0;iAssigned<this.aAssigned.length;iAssigned++){var Key='u'+this.aAssigned[iAssigned];this[Key]=1;}}
CRotaEditorGuiEntry.prototype._GetSwapButtonHtml=function(Title,Hint,AssignedUserId){return['<input title="',Hint,'" type="button" class="AssignmentControl" ','onclick="',this.Parent.Id,'.OnRequestSwap(',this.RecordId,',',AssignedUserId,');" ','id="',this.Parent.Id,'Swap',this.RecordId,'" value="',Title,'">'].join('');}
CRotaEditorGuiEntry.prototype._GetCoverButtonHtml=function(){return this._GetSwapButtonHtml('Get Volunteer...','Ask the team to volunteer to fill the vacant slot',0);}
CRotaEditorGuiEntry.prototype.GetSelection=function(UserId){return this.aSelectionsById[UserId];}
CRotaEditorGuiEntry.prototype.ToInfoPanel=function(){if(this.InfoPanel)return this.InfoPanel;var e=document.createElement('div');e.id='InfoPanel'+this.RecordId;e.style.margin='15px';{var aContents=[];for(var iAssigned=0;iAssigned<this.aAssigned.length;iAssigned++){if(this.aAssigned[iAssigned])continue;var Field=new CField('For the unassigned slot',this._GetCoverButtonHtml(),false);aContents.push(Field.ToHtml());break;}
{var aFieldContents=[];for(var iAssigned=0;iAssigned<this.aAssigned.length;iAssigned++){if(!this.aAssigned[iAssigned])continue;var UserId=this.aAssigned[iAssigned];var User=this.RotaCache.UserNames[UserId];aFieldContents.push(this._GetSwapButtonHtml(User.UserName,'Request a swap for this assignment',UserId));}
var Field=new CField('Request swap for',aFieldContents.join(''),false);aContents.push(Field.ToHtml());}
e.innerHTML=aContents.join('');}
this.InfoPanel=e;return e;}
CRotaEditorGuiEntry.prototype.Assigned=function(){var RotaData=(this.RotaJournalCache.Data[this.RecordId]?this.RotaJournalCache.Data[this.RecordId]:{});var ThisDutyKey='d'+this.Parent.DutyId;var aAssigned=(RotaData[ThisDutyKey]?RotaData[ThisDutyKey].slice(0):[]);var TeamSize=this.Parent.Duty.TeamSize?this.Parent.Duty.TeamSize:1;for(var iIndex=aAssigned.length;iIndex<TeamSize;iIndex++){aAssigned.push('0');}
return aAssigned;}
CRotaEditorGuiEntry.prototype.Busy=function(){var RotaData=(this.RotaJournalCache.Data[this.RecordId]?this.RotaJournalCache.Data[this.RecordId]:{});var ThisDutyKey='d'+this.Parent.DutyId;var aBusy={};for(var Key in RotaData){if(!Key.match(/^d\d+$/))continue;if(Key==ThisDutyKey)continue;var aUsers=RotaData[Key];for(var iIndex=0;iIndex<aUsers.length;iIndex++){aBusy['u'+aUsers[iIndex]]=Key;}}
return aBusy;}
CRotaEditorGuiEntry.prototype.Unavailable=function(){var AvailabilityData=(this.AvailabilityJournalCache.Data[this.StartTime]?this.AvailabilityJournalCache.Data[this.StartTime]:{});var ThisDutyKey='d'+this.Parent.DutyId;var aUnavailable={};if(AvailabilityData[ThisDutyKey]){for(var iIndex=0;iIndex<AvailabilityData[ThisDutyKey].length;iIndex++){aUnavailable['u'+AvailabilityData[ThisDutyKey][iIndex]]=ThisDutyKey;}}
if(AvailabilityData['d0']){for(var iIndex=0;iIndex<AvailabilityData['d0'].length;iIndex++){aUnavailable['u'+AvailabilityData['d0'][iIndex]]='d0';}}
return aUnavailable;}
CRotaEditorGuiEntry.prototype.InsertSummaryIntoRow=function(Row){var aBusy=this.Busy();var aUnavailable=this.Unavailable();this.RenderedColumns=0;for(var iIndex=0;iIndex<this.Parent.aDisplayColumns.length;iIndex++){var Name=this.Parent.aDisplayColumns[iIndex];if(Name=='StartTime'){this.Parent.InsertDateFieldIntoRow(Row,this);continue;}
if(Name=='Add'){var e=Row.insertCell(-1);e.innerHTML=['<button title="Add another slot for this event" type="button" ','onclick="',this.Parent.Id,'.Add(',this.RecordId,');" ','id="',this.Parent.Id,'Add',this.RecordId,'">+</button>'].join('');continue;}
if(Name=='Swap'){var e=Row.insertCell(-1);var aContents=[];if(this.aAssigned.length==1){if(this.aAssigned[0]){aContents.push(this._GetSwapButtonHtml('Get Swap...','Request a swap for this assignment',this.aAssigned[0]));}else{aContents.push(this._GetCoverButtonHtml());}}else{var AssignedUserId=null;for(var iAssigned=0;iAssigned<this.aAssigned.length;iAssigned++){AssignedUserId=this.aAssigned[iAssigned];if(AssignedUserId)break;}
if(!AssignedUserId){aContents.push(this._GetCoverButtonHtml());}else{aContents.push(['<input type="button" value="Get Swap..." title="Request a swap for this assignment" ','onclick="',this.Parent.Id,'.ToggleEntryExtendedInfo(',this.RecordId,');">'].join(''));}}
e.innerHTML=aContents.join('');continue;}
this.RenderedColumns++;var UserId=null;if(Name=='u0'){UserId=0;}else if(Name=='Other'){UserId=-1;}else{var SearchRegExp=/^u(\d*)$/;var s=new String(Name);if(s.search(SearchRegExp)==-1)continue;UserId=s.replace(SearchRegExp,"$1");}
var iAvailable=0;if(UserId==0){iAvailable=2;}else if(UserId==-1){iAvailable=0;}else{if(aBusy['u'+UserId])iAvailable=1;if(aUnavailable['u'+UserId])iAvailable=2;}
var e=Row.insertCell(-1);e.style.textAlign='center';e.style.paddingLeft='0px';e.style.paddingRight='0px';e.className='';var GetEntryFunction=[this.GetEntryFunction,'.GetSelection(',UserId,')'].join('');var Selection=new CAssignmentSelection(this.RecordId,UserId,iAvailable,GetEntryFunction);var GuiEntry=this;Selection.Selected=function(iAssigned){if(GuiEntry._Selected(iAssigned,this.UserId))return true;return false;}
Selection.GetImagesPath=function(){return GuiEntry.Parent.ImagesPath;};Selection.GetTeamSize=function(){return GuiEntry.aAssigned.length;};Selection.AddEventHandler(Selection.Events.onChange,this,this.OnChangeSelection);this.aSelectionsById[UserId]=Selection;e.innerHTML=Selection.ToHtml();e.className=Selection.GetCssClassName();}
return;}
CRotaEditorGuiEntry.prototype._Selected=function(iAssigned,UserId){return(this.aAssigned[iAssigned]==UserId);}
CRotaEditorGuiEntry.prototype.OnChangeSelection=function(UserId,iAssigned){var AddUserId=UserId;var RemoveUserId=this.aAssigned[iAssigned];var Selection=this.GetSelection(AddUserId);Selection.ShowLoadingPanel();var Selection=this.GetSelection(RemoveUserId);Selection.ShowLoadingPanel();var oRequest=new AjaxCallback(this);var Entry=this;oRequest.Complete=function(){Entry._ModifyComplete(oRequest.xmlhttp,UserId,iAssigned);}
var aPostData=['ContentType=AjaxJs','Action=ChangeAssignment','EventId='+this.RecordId,'DutyId='+this.Parent.DutyId];aPostData.push('To='+AddUserId);aPostData.push('From='+RemoveUserId);oRequest.Send('index.php',aPostData.join('&'));return true;}
CRotaEditorGuiEntry.prototype._ModifyComplete=function(oRequest,UserId,iAssigned){var SearchResults=eval(oRequest.responseText);var AddUserId=UserId;var RemoveUserId=this.aAssigned[iAssigned];var AddSelection=this.GetSelection(AddUserId);AddSelection.HideLoadingPanel();var RemoveSelection=this.GetSelection(RemoveUserId);RemoveSelection.HideLoadingPanel();var Checkbox=RemoveSelection._GetControl(iAssigned);if(!Checkbox)return;Checkbox.checked=true;if(typeof(SearchResults)!='object')return;if(!SearchResults.Results)return;if(SearchResults.Results[this.RecordId]){this.RotaJournalCache.PatchCache(SearchResults.Results);this.aAssigned=this.Assigned();}
var AddSelection=this.GetSelection(AddUserId);var RemoveSelection=this.GetSelection(RemoveUserId);RemoveSelection.GetContainer().innerHTML=RemoveSelection.ToHtml();RemoveSelection.GetContainer().className=RemoveSelection.GetCssClassName();AddSelection.GetContainer().innerHTML=AddSelection.ToHtml();AddSelection.GetContainer().className=AddSelection.GetCssClassName();}
window.CAssignmentSelection=function(EventId,UserId,Availability,GuiEntryFunction){this.EventId=EventId;this.UserId=UserId;this.Availability=Availability;this.GetEntryFunction=GuiEntryFunction;this.Events={};this.Events.onChange="onChange";this.AddEventHandler=CPage.prototype.AddEventHandler;this.RaiseEvent=CPage.prototype.RaiseEvent;this.RemoveEventHandler=CPage.prototype.RemoveEventHandler;}
CAssignmentSelection.Selected=function(){return false;}
CAssignmentSelection.GetImagesPath=function(){return'';}
CAssignmentSelection.GetTeamSize=function(){return 1;}
CAssignmentSelection.prototype._GetElementId=function(iAssigned){if(typeof(iAssigned)=='undefined')iAssigned=-1;return['AssignmentSelection',this.EventId,(parseInt(iAssigned)+1),this.UserId].join('-');}
CAssignmentSelection.prototype._GetControlId=function(iAssigned){return[this._GetElementId(iAssigned),'Control'].join('-');}
CAssignmentSelection.prototype._GetLoadingPanelId=function(){return[this._GetElementId(),'LoadingPanel'].join('-');}
CAssignmentSelection.prototype._GetElement=function(){return document.getElementById(this._GetElementId());}
CAssignmentSelection.prototype._GetControl=function(iAssigned){return document.getElementById(this._GetControlId(iAssigned));}
CAssignmentSelection.prototype._GetLoadingPanel=function(){return document.getElementById(this._GetLoadingPanelId());}
CAssignmentSelection.prototype.GetContainer=function(){return this._GetElement().parentNode;}
CAssignmentSelection.prototype.ToHtml=function(){var Attributes=new CXDb.CAttributes();Attributes.onmouseout=this.GetEntryFunction+'.OnMouseOut()';Attributes.onmouseover=this.GetEntryFunction+'.OnMouseOver()';Attributes.id=this._GetElementId();return['<div class="AssignmentControl" ',Attributes.ToHtml(),'>',this._ToControlHtml(),'</div>'].join('');}
CAssignmentSelection.prototype._ToControlHtml=function(){var aContents=[];for(var iAssigned=0;iAssigned<this.GetTeamSize();iAssigned++){var bAssigned=this.Selected(iAssigned);var hint='';if(bAssigned){switch(this.Availability){case 2:hint="A swap is needed for this slot!";break;default:hint="This person is assigned to do this duty during this event";break;}}else{switch(this.Availability){case 1:hint="This person is already doing something during this event";break;case 2:hint="This person has said they are unavailable to help with this duty on this event";break;default:break;}}
var AssignmentId=[this.EventId,'-',(iAssigned+1)].join('');var aDivAttributes=['title="'+hint+'" ','class="AssignmentControl"'];if(UserId!=-1){aDivAttributes.push('onclick="'+this.GetEntryFunction+'.OnSelect(\''+iAssigned+'\')"');}
aContents.push('<div ',aDivAttributes.join(' '),'>');if(bAssigned||(this.UserId==0)||(this.Availability!=2)){if(this.UserId>=0){aContents.push('<input type="radio"',' name="',AssignmentId,'"',' value="',this.UserId,'"',' id="',this._GetControlId(iAssigned),'"',bAssigned?' checked':'','>');}else{aContents.push('<input type="radio" disabled',' name="',AssignmentId,'"',' id="',this._GetControlId(iAssigned),'"',' value="',this.UserId,'"','>');}}else{aContents.push('&nbsp;');}
aContents.push('</div>');}
return aContents.join('');}
CAssignmentSelection.prototype._ToLoadingPanelHtml=function(){var Width=this._GetElement().offsetWidth;var Attributes=new CXDb.CAttributes();Attributes.style=['display:inline-block;text-align:center;width:',Width,'px'].join('');Attributes.id=this._GetLoadingPanelId();return['<span ',Attributes.ToHtml(),'>','<img src="',this.GetImagesPath(),'progress.gif"/>','</span>'].join('');}
CAssignmentSelection.prototype._ToLoadingPanel=function(){var Width=this._GetElement().offsetWidth;var LoadingPanel=document.createElement('span');LoadingPanel.style.display='inline';LoadingPanel.style.textAlign='center';LoadingPanel.style.width=Width+'px';LoadingPanel.id=this._GetLoadingPanelId();LoadingPanel.innerHTML=['<img src="',this.GetImagesPath(),'progress.gif"/>'].join('');return LoadingPanel;}
CAssignmentSelection.prototype.ShowLoadingPanel=function(){for(var iAssigned=0;iAssigned<this.GetTeamSize();iAssigned++){var Checkbox=this._GetControl(iAssigned);if(Checkbox)Checkbox.style.display='none';}
var LoadingPanel=this._GetLoadingPanel();if(!LoadingPanel){if(!Checkbox)return;Checkbox.parentNode.appendChild(this._ToLoadingPanel());}else{LoadingPanel.style.display='';}}
CAssignmentSelection.prototype.HideLoadingPanel=function(){var LoadingPanel=this._GetLoadingPanel();if(LoadingPanel)LoadingPanel.style.display='none';for(var iAssigned=0;iAssigned<this.GetTeamSize();iAssigned++){var Control=this._GetControl(iAssigned);if(Control)Control.style.display='';}}
CAssignmentSelection.prototype.GetCssClassName=function(){var bUserAssigned=false;for(var iAssigned=0;iAssigned<this.GetTeamSize();iAssigned++){var bUserAssigned=this.Selected(iAssigned);if(bUserAssigned)break;}
var className='';switch(this.Availability){case 2:if(!bUserAssigned){className="UnavailableAssignment"}else{className="ImpossibleAssignment";}
break;case 1:className="BusyAssignment";break;default:if(bUserAssigned&&(this.UserId!=-1)){className="DefaultAssignment";}
break;}
return className;}
CAssignmentSelection.prototype.OnMouseOver=function(){if(this.Availability==0){var Container=this.GetContainer();Container.style.backgroundColor='#F0F060';}}
CAssignmentSelection.prototype.OnMouseOut=function(){var Container=this.GetContainer();Container.style.backgroundColor='';}
CAssignmentSelection.prototype.OnSelect=function(iAssigned){if(this.Selected(iAssigned))return;var Checkbox=this._GetControl(iAssigned);if(!Checkbox)return;Checkbox.checked=true;this.RaiseEvent(this.Events.onChange,[this.UserId,iAssigned]);return false;}
window.CRotaEditorGui=function(Page){if(arguments.length<=0)return;this.Init.apply(this,arguments);}
CRotaEditorGui.prototype=new CJournalGui();CRotaEditorGui.prototype.constructor=CRotaEditorGui;CRotaEditorGui.superclass=CJournalGui.prototype;CRotaEditorGui.prototype.Init=function(Page){CRotaEditorGui.superclass.Init.apply(this,arguments);this.SortByField='StartTime';this.aDisplayColumns=[];this.RotaCache=new CRotaCache();this.RotaJournalCache=new CJournalCache();this.AvailabilityJournalCache=new CJournalCache();this.DutyId=null;this.Duty=null;this.DutyTeam=null;this.OtherUsers={};this.NotRequiredUser=null;this.Events.onLoadRota="onLoadRota";this.Events.onLoadAvailability="onLoadAvailability";this.Events.onCancel='onCancel';this.Events.onRequestSwap='onRequestSwap';}
CRotaEditorGui.prototype._NewDataEntry=function(RecordId,Data){return new CRotaEditorGuiEntry(RecordId,Data,this);}
CRotaEditorGui.prototype.OnAutoCompleteUserName=function(control,event){var CharCode=0;if(window.event){CharCode=window.event.keyCode;}else if(event.which){CharCode=event.which;}else{CharCode=event.keyCode;}
switch(CharCode){case 27:control.value=control.OriginalValue;this.HidePanel(this.Id+'-AddUserColumnPanel');this.ShowPanel(this.Id+'-AddUserColumnButton');return false;case 13:return true;default:var RichControl=new CAutoCompletionControl(control,this.RotaCache.GetAvailableUserNames());return RichControl.OnKeyPress(event);}}
CRotaEditorGui.prototype.OnFocusControl=function(control){if(!control.OriginalValue)control.OriginalValue=control.value;if(control.value==control.OriginalValue){control.value='';}}
CRotaEditorGui.prototype.OnBlurUserNameControl=function(control){if(control.value==''||control.value==control.OriginalValue){control.value=control.OriginalValue;this.HidePanel(this.Id+'-AddUserColumnPanel');this.ShowPanel(this.Id+'-AddUserColumnButton');return;}}
CRotaEditorGui.prototype.AddUserColumn=function(){var UserNameControl=document.getElementById(this.Id+'-OtherUser');var EmailAddressControl=document.getElementById(this.Id+'-OtherUser-Email');var CachedUser=this.RotaCache.LookupUserId(UserNameControl.value);if(CachedUser==0){if(EmailAddressControl.style.display=='none'){EmailAddressControl.style.display='';EmailAddressControl.focus();return;}
if(EmailAddressControl.value==''||EmailAddressControl.value==EmailAddressControl.OriginalValue){EmailAddressControl.value=EmailAddressControl.OriginalValue;alert('To assign slots on this rota to '
+UserNameControl.value
+' you must supply their email address.');EmailAddressControl.focus();return;}
var PostData=['Action=ValidateOrCreateUser','ContentType=AjaxJs','UserId0=','UserName0='+UserNameControl.value,'Email0='+EmailAddressControl.value,].join('&');var oRequest=new AjaxCallback(this,'_ValidateOrCreateUserComplete');this.ShowLoadingPanel();oRequest.Send('/users/users.php',PostData);return;}
EmailAddressControl.style.display='none';this.OtherUsers[CachedUser.Id]=CachedUser.UserName;this.Render();}
CRotaEditorGui.prototype.ToggleAddUserColumnPanel=function(){this.HidePanel(this.Id+'-AddUserColumnButton');this.ShowPanel(this.Id+'-AddUserColumnPanel');}
CRotaEditorGui.prototype.Load=function(DutyId,aDuty){if(DutyId!=this.DutyId){this.JournalCache=new CJournalCache(this.DateField);this.OtherUsers={};}
this.DutyId=DutyId;this.Duty=aDuty;this.StaticRequestVars=['DutyId='+this.DutyId];{if(!this.Duty.GroupId){this.RotaCache.CacheDutyTeam(this.DutyId,{});}
if(this.RotaCache.DutyTeams[this.DutyId]){this.DutyTeam=this.RotaCache.DutyTeams[this.DutyId];this.Search();return;}
var oRequest=new AjaxCallback(this,'_LoadComplete');var PostData=['ContentType=AjaxJs','Action=Load','DutyId='+this.DutyId].join('&');oRequest.Send(this.Page,PostData);}}
CRotaEditorGui.prototype._LoadComplete=function(oRequest){this.HideLoadingPanel();var SearchResults=eval(oRequest.responseText);if(typeof(SearchResults)!='object'){this.RaiseEvent(this.Events.onCancel,[]);return;}
if(SearchResults.DutyTeam){this.RotaCache.CacheDutyTeam(this.DutyId,SearchResults.DutyTeam);this.DutyTeam=SearchResults.DutyTeam;}
this.Search();}
CRotaEditorGui.prototype.Search=function(){var AfterDate=this._AfterDate();var BeforeDate=this._BeforeDate();var CachedResults=this.RotaJournalCache.Lookup(AfterDate,BeforeDate);if(CachedResults==null){this.RaiseEvent(this.Events.onLoadRota,[this.iBaseDelta,this.iWeeksInView]);return;}
var CachedResults=this.AvailabilityJournalCache.Lookup(AfterDate,BeforeDate);if(CachedResults==null){this.RaiseEvent(this.Events.onLoadAvailability,[this.iBaseDelta,this.iWeeksInView]);return;}
CRotaEditorGui.superclass.Search.apply(this,arguments);}
CRotaEditorGui.prototype._ValidateOrCreateUserComplete=function(oRequest){this.HideLoadingPanel();var AvailableMembers=eval(oRequest.responseText);if(typeof(AvailableMembers)!='object')return;this.RotaCache.CacheUserNames(AvailableMembers);for(var UserId in AvailableMembers){this.OtherUsers[UserId]=AvailableMembers[UserId].UserName;}
this.Render();}
CRotaEditorGui.prototype.FieldSortLink=function(FieldName,Attributes){switch(FieldName){case'StartTime':var aResult=[];aResult.push(['<button onclick="',this.Id,'.OnEmailRota(); return false;">Email Rota...</button>'].join(''));aResult.push(CRotaEditorGui.superclass.FieldSortLink.apply(this,arguments));return aResult.join('<br>');case'Other':{var aContents=[];aContents.push('<button title="Add a column for another user" type="button" ','onclick="',this.Id,'.ToggleAddUserColumnPanel();" ','id="',this.Id,'-AddUserColumnButton">+</button>');aContents.push('<form id="',this.Id,'-AddUserColumnPanel" style="display:none" action="javascript:',this.Id,'.AddUserColumn();">');aContents.push('<input type="text" value="[User Name]"',' onkeypress="return ',this.Id,'.OnAutoCompleteUserName(this, event);"',' onfocus="return ',this.Id,'.OnFocusControl(this)"',' onblur="return ',this.Id,'.OnBlurUserNameControl(this)"',' id="',this.Id,'-OtherUser"',' name="OtherUser">');aContents.push('<input type="text" style="display:none" value="[Email Address]"',' id="',this.Id,'-OtherUser-Email"',' onfocus="return ',this.Id,'.OnFocusControl(this)"',' name="OtherUser-Email">');aContents.push('<input type="submit" value="Add">');aContents.push('</form>');return aContents.join('');}
case'Swap':case'Add':return CRotaEditorGui.superclass.FieldSortLink.apply(this,arguments);default:return VerticalText(this.DisplayName(FieldName),'','','','#ffffff')}}
CRotaEditorGui.prototype.OnEmailRota=function(){this.ShowLoadingPanel();var oRequest=new AjaxCallback(this,'_BeginEmailRotaComplete');var PostData=[this.StaticRequestVars.join('&'),'ContentType=AjaxHtml','ClientId='+this.Id,'Action=Email Rota'].join('&');oRequest.Send(this.Page,PostData);}
CRotaEditorGui.prototype._BeginEmailRotaComplete=function(oRequest){this.HideLoadingPanel();var ActionTitle=document.getElementById('ActionTitle');if(ActionTitle){ActionTitle.firstChild.nodeValue="Emailing rota";}
var ActionContent=document.getElementById('ActionContent');if(ActionContent){ActionContent.innerHTML=oRequest.responseText;}}
CRotaEditorGui.prototype.OnComposeAction=function(Element){this.HideLoadingPanel();if(Element.value=='Cancel'){this.RaiseEvent(this.Events.onCancel,[]);return;}
var Form=document.getElementById('ComposeControl');var oRequest=new AjaxCallback(this,'_BeginEmailRotaComplete');var PostData=[this.BuildPostData(Element.form,'Html'),'ComposeAction='+Element.value].join('&');oRequest.Send(this.Page,PostData);}
CRotaEditorGui.prototype.Render=function(){this.aDisplayColumns=['StartTime','Add','Swap','u0'];var ColumnIds={'u0':'Unassigned'};var UserId=null;for(UserId in this.NotRequiredUser)break;var Key='u'+UserId;this.aDisplayColumns.push(Key);this.aDisplayNames.push(new CField(Key,this.NotRequiredUser[UserId].UserName));ColumnIds[Key]=this.NotRequiredUser;for(var UserId in this.DutyTeam){var Key='u'+UserId;this.aDisplayColumns.push(Key);var TeamMember=this.DutyTeam[UserId];this.aDisplayNames.push(new CField(Key,TeamMember.UserName));ColumnIds[Key]=TeamMember;if(this.OtherUsers[UserId]){delete this.OtherUsers[UserId];}}
var aResults=this.Data['Results'];for(var iIndex in aResults){var Result=aResults[iIndex];var RotaData=(this.RotaJournalCache.Data[Result.RecordId]?this.RotaJournalCache.Data[Result.RecordId]:{});if(!RotaData['d'+this.DutyId])continue;var aUsers=RotaData['d'+this.DutyId];for(var iUser=0;iUser<aUsers.length;iUser++){var UserId=aUsers[iUser];if(UserId==-1)continue;var Key='u'+UserId;if(ColumnIds[Key])continue;var User=this.RotaCache.UserNames[UserId];this.aDisplayColumns.push('u'+UserId);this.aDisplayNames.push(new CField('u'+UserId,User.UserName));ColumnIds[Key]=User;if(this.OtherUsers[UserId]){delete this.OtherUsers[UserId];}}}
for(UserId in this.OtherUsers){this.aDisplayColumns.push('u'+UserId);this.aDisplayNames.push(new CField('u'+UserId,this.OtherUsers[UserId]));}
this.aDisplayColumns.push('Other');CRotaEditorGui.superclass.Render.apply(this,arguments);var ActionTitle=document.getElementById('ActionTitle');if(ActionTitle){ActionTitle.firstChild.nodeValue=this.Duty.Name+" rota";}
var e=document.createElement('span');e.className='Legend';e.innerHTML=['<span class="LegendSymbol DefaultAssignment"><input type="radio"></span><span class="LegendLabel">Assigned for duty</span>','<span class="LegendSymbol BusyAssignment"><input type="radio"></span></span><span class="LegendLabel">Assigned for other duty during service.  May not be available to do both</span>','<span class="LegendSymbol UnavailableAssignment"></span></span><span class="LegendLabel">Member has specified they are unavailable to service in that service</span>','<span class="LegendSymbol ImpossibleAssignment"><input type="radio"></span><span class="LegendLabel">Assigned, but not available.  Swap needed</span>','<span class="LegendSymbol UnassignedAssignment"><input type="radio"></span><span class="LegendLabel">No assignment for meeting</span>'].join('');var c=document.getElementById('ActionContent');c.appendChild(e);}
CRotaEditorGui.prototype.Add=function(EventId){var ThisDutyKey='d'+this.DutyId;var Data=this.RotaJournalCache.Data[EventId];if(!Data[ThisDutyKey]){var TeamSize=this.Duty.TeamSize?this.Duty.TeamSize:1;var aAssigned=[];for(var iIndex=aAssigned.length;iIndex<TeamSize;iIndex++){aAssigned.push('0');}
Data[ThisDutyKey]=aAssigned;}
Data[ThisDutyKey].push('0');var Item=this._GetData(EventId);Item.Init(EventId,Item.Data,this);this.Render();}
CRotaEditorGui.prototype.OnRequestSwap=function(EventId,UserId){this.RaiseEvent(this.Events.onRequestSwap,[EventId,this.DutyId,UserId]);}

window.CRotasGuiEntry=function(Data){if(arguments.length<=0)return;this.Init.apply(this,arguments);}
CRotasGuiEntry.prototype=new CJournalGuiEntry();CRotasGuiEntry.prototype.constructor=CRotasGuiEntry;CRotasGuiEntry.superclass=CJournalGuiEntry.prototype;CRotasGuiEntry.prototype.Init=function(UserId,Data,Parent){CRotasGuiEntry.superclass.Init.apply(this,arguments);this.ToInfoPanel=CRotasGuiEntry.prototype.ToInfoPanel;this.RotaCache=Parent.RotaCache;this.StartTime=this.Data.StartTime;this.Type=this.Data.Type;this.JournalDate=new Date(this.Data[this.DateField]*1000);for(var Key in Data){var aUsers=Data[Key];var UserId=aUsers[0];if(!this.RotaCache.UserNames[UserId])continue;var UserName=this.RotaCache.UserNames[UserId].UserName;this[Key]=new String(UserName).toLowerCase();}
this.ActiveAssignment=null;this.AppliedAssignment=null;this.UnavailableUsers=null;this.aAssignmentsById={};this.GetEntryFunction=[this.Parent.Id,'._GetData(',this.RecordId,')'].join('');}
CRotasGuiEntry.prototype.PatchData=function(SearchResults){this.Parent.JournalCache.PatchCache(SearchResults.Results);if(SearchResults.Results[this.RecordId]){this.Data=SearchResults.Results[this.RecordId];}}
CRotasGuiEntry.prototype.DeleteAssignment=function(Assignment){delete this.aAssignmentsById[Assignment.DutyId][Assignment.AssignmentId];}
CRotasGuiEntry.prototype.InsertSummaryIntoRow=function(Row){this.RenderedColumns=0;for(var iIndex=0;iIndex<this.Parent.aDisplayColumns.length;iIndex++){var Name=this.Parent.aDisplayColumns[iIndex];if(Name=='StartTime'){this.Parent.InsertDateFieldIntoRow(Row,this);continue;}
this.RenderedColumns++;var e=Row.insertCell(-1);var c='';switch(Name){case'StartTime':break;case'Type':if(this.Data[Name])c=htmlspecialchars(this.Data[Name]);e.className='EventType';break;case'ViewTeam':c=['<input type="button" style="font-size: 8pt;" title="View the team for this event" onclick="',this.Parent.Id,'.ToggleEntryExtendedInfo(',this.RecordId,');" value="Team"/>'].join('');break;default:var SearchRegExp=/^d(\d*)$/;var DutyKey=new String(Name);if(DutyKey.search(SearchRegExp)!=-1){var DutyId=parseInt(DutyKey.replace(SearchRegExp,"$1"));e.id=["Cell",this.RecordId,DutyId].join('-');c=this.SummaryDutyToHtml(DutyId);}
if(this.Assigned(DutyId)){e.className='Highlight';}}
e.innerHTML=c;}
return;}
CRotasGuiEntry.prototype.SummaryDutyToHtml=function(DutyId){var aAssigned=this.Data['d'+DutyId];if(!aAssigned)return'';var aContents=[];var aTeam=[];for(var i=0;i<aAssigned.length;i++){var UserId=aAssigned[i];aTeam.push(this.RotaCache.GetUserName(UserId));if(!this.Parent.ActiveUserId)continue;if(UserId!=this.Parent.ActiveUserId)continue;var Url=this.Parent.CreateExportUrl('http',this.RecordId,null,DutyId);aContents.push([' <span class="screenonly">(<a style="font-size:8pt" href="',Url,'" ','title="Add this appointment to your calendar">ics</a>)</span>','<br><input type="button" onclick="',this.Parent.Id,'.OnRequestSwap(',this.RecordId,',',DutyId,',',UserId,')" style="font-size:8pt" ','title="Request a swap for this assignment" value="Get Swap">'].join(''));}
aContents.unshift(aTeam.join('<br>'));return aContents.join('');}
CRotasGuiEntry.prototype.Assigned=function(DutyId){if(!this.Parent.ActiveUserId)return false;var aAssigned=this.Data['d'+DutyId];if(!aAssigned)return false;for(var i=0;i<aAssigned.length;i++){var UserId=aAssigned[i];if(UserId==this.Parent.ActiveUserId)return true;}
return false;}
CRotasGuiEntry.prototype.OnChangeDuty=function(DutyId){var CellId=["Cell",this.RecordId,DutyId].join('-');var Cell=document.getElementById(CellId);if(!Cell)return;Cell.innerHTML=this.SummaryDutyToHtml(DutyId);if(this.Assigned(DutyId)){Cell.className='Highlight';}else{Cell.className='';}}
CRotasGuiEntry.prototype._LoadAvailabilityComplete=function(oRequest){this.HideLoadingPanel();this.UnavailableUsers={};var SearchResults=eval(oRequest.responseText);if(typeof(SearchResults)=='object'){var Results=SearchResults.Results;if(typeof(Results)=='object'){var UnavailableData=SearchResults.Results[this.StartTime];for(var Key in UnavailableData){if(typeof(UnavailableData[Key])!='object')continue;for(var Index in UnavailableData[Key]){var UserId=UnavailableData[Key][Index];if(!this.UnavailableUsers[UserId])this.UnavailableUsers[UserId]=[];this.UnavailableUsers[UserId].push(Key);}}}}
this.Cancel();}
CRotasGuiEntry.prototype.Available=function(UserId){if(!this.UnavailableUsers)return true;return(this.UnavailableUsers[UserId]==null);}
CRotasGuiEntry.prototype.ToInfoPanel=function(){if(this.InfoPanel)return this.InfoPanel;if(!this.UnavailableUsers){var SearchTerm='Time='+this.StartTime;var oRequest=new AjaxCallback(this,'_LoadAvailabilityComplete');var PostData=['ContentType=AjaxJs','Action=Search','Search='+escape(SearchTerm)].join('&');oRequest.Send('availability.php',PostData);this.ShowLoadingPanel();return document.createTextNode(' ');}
var e=document.createElement('span');e.id='InfoPanel'+this.RecordId;{var aContents=[];for(var DutyId in this.Parent.Duties){var Name='d'+DutyId;if(!this.Data[Name])continue;var aUserIds=this.Data[Name];if(!aUserIds)continue;var aTeamMembers=[];this.aAssignmentsById[DutyId]={};for(var AssignmentId=0;AssignmentId<aUserIds.length;AssignmentId++){var UserId=aUserIds[AssignmentId];var Assignment=new CAssignment(this,UserId,DutyId,AssignmentId);Assignment.AddEventHandler(Assignment.Events.onChangeDuty,this,this.OnChangeDuty);this.aAssignmentsById[DutyId][AssignmentId]=Assignment;aTeamMembers.push(Assignment.ToHtml());}
var TeamMembersHtml=aTeamMembers.join('');var aFieldHtml=[TeamMembersHtml];if(this.Parent.CanEdit(DutyId)){var Attributes=new CXDb.CAttributes();Attributes.type="button";Attributes.value="Add";Attributes.style="font-size:8pt";Attributes.onmouseover=[this.GetEntryFunction,'.OnHideForm()'].join('');Attributes.onclick=[this.GetEntryFunction,'.OnAddAssignment(',DutyId,')'].join('');Attributes.id=['AddAssignment',this.RecordId,DutyId].join('-');aFieldHtml.push(' <input ',Attributes.ToHtml(),'>');}
var Field=new CField(this.Parent.DisplayName(Name),aFieldHtml.join(''),false);var Attributes=new CXDb.CAttributes();Attributes.id=['Duty',this.RecordId,DutyId].join('-');aContents.push(Field.ToHtml(Attributes.ToHtml()));}
if(this.Parent.bAdministrator){var aUnusedDuties={};var iUnusedDuties=0;for(var DutyId in this.Parent.Duties){var Name='d'+DutyId;if(this.Data[Name])continue;aUnusedDuties[DutyId]=this.Parent.DisplayName(Name);iUnusedDuties++;}
if(iUnusedDuties){var DutySelectionField=new CField('NewDutyId');var Attributes=new CXDb.CAttributes();Attributes.size=Math.max(3,Math.ceil(iUnusedDuties/2));Attributes.multiple='true';Attributes.ondblclick=[this.GetEntryFunction,'.OnAddDuty()'].join('');Attributes.id=['AddDuty',this.RecordId].join('-')
var aFieldHtml=[DutySelectionField.ToAssocSelectInput(aUnusedDuties,Attributes.ToHtml())];var Attributes=new CXDb.CAttributes();Attributes.type="button";Attributes.value="Add";Attributes.style="font-size:8pt";Attributes.onmouseover=[this.GetEntryFunction,'.OnHideForm()'].join('');Attributes.onclick=[this.GetEntryFunction,'.OnAddDuty()'].join('');Attributes.id=['AddDuty',this.RecordId].join('-');aFieldHtml.push(' <input ',Attributes.ToHtml(),'>');var Field=new CField('',aFieldHtml.join(''),false);aContents.push('<div class="inputgroup"><span class="inputcontrol">');aContents.push(aFieldHtml.join(''));aContents.push('</span></div>')}}
e.innerHTML=aContents.join('');}
this.InfoPanel=e;return e;}
CRotasGuiEntry.prototype.OnCancel=function(){if(this.ActiveAssignment){if(!this.ActiveAssignment.OnCancel())return false;this.ActiveAssignment.Cancel();this.ActiveAssignment=null;}
return true;}
CRotasGuiEntry.prototype.OnHideForm=function(){if(!this.ActiveAssignment)return true;if(this.ActiveAssignment._HasChanges())return false;this.ActiveAssignment.OnLabel();return true;}
CRotasGuiEntry.prototype.OnAddDuty=function(){var aDuties=[];var DutySelectionControl=document.getElementById(['AddDuty',this.RecordId].join('-'));var Options=DutySelectionControl.options;for(var iIndex=0;iIndex<Options.length;iIndex++){var Item=Options.item(iIndex);if(Item.selected)aDuties.push(parseInt(Item.value));}
var aAddedDuties=[];for(var iIndex=0;iIndex<aDuties.length;iIndex++){var DutyId=aDuties[iIndex];if(this.Data['d'+DutyId]){this.OnAddAssignment(DutyId);continue;}
this.Data['d'+DutyId]=[0];aAddedDuties.push(DutyId);}
if(!aAddedDuties.length)return;this.RebuildInfoPanel();for(var iIndex=0;iIndex<aAddedDuties.length;iIndex++){var DutyId=aAddedDuties[iIndex];var aAssignments=this.aAssignmentsById[DutyId];var AssignmentId=null;for(AssignmentId in aAssignments)break;var Assignment=aAssignments[AssignmentId];Assignment.OnAdd();}}
CRotasGuiEntry.prototype.RebuildInfoPanel=function(){var ActiveAssignment=this.ActiveAssignment;this.ActiveAssignment=null;this.InfoPanel=null;this.ToInfoPanel();var e=document.getElementById('InfoPanel'+this.RecordId);if(e)e.parentNode.removeChild(e);this.ExtendedInfo.appendChild(this.InfoPanel);if(ActiveAssignment){var aAssignments=this.aAssignmentsById[ActiveAssignment.DutyId];for(var AssignmentId in aAssignments){var Assignment=aAssignments[AssignmentId];if(Assignment.UserId==ActiveAssignment.UserId){Assignment.OnEditForm();break;}}}}
CRotasGuiEntry.prototype.OnAddAssignment=function(DutyId){if(!this.CanApplyAssignmentChange())return;if(this.ActiveAssignment){if(!this.OnCancel())return;}
var AssignmentId=this.GetLastAssignmentId(DutyId)+1;var aUserIds=this.Data['d'+DutyId];aUserIds[aUserIds.length]=0;var Assignment=new CAssignment(this,0,DutyId,AssignmentId);this.aAssignmentsById[DutyId][AssignmentId]=Assignment;var Element=document.createElement('span');Element.innerHTML=Assignment.ToHtml();var AddButtonId=['AddAssignment',this.RecordId,DutyId].join('-');var AddButton=document.getElementById(AddButtonId);AddButton.parentNode.insertBefore(Element,AddButton);Assignment.OnEditForm();Assignment.OnAdd();}
CRotasGuiEntry.prototype.GetAssignment=function(DutyId,AssignmentId){var aAssignments=this.aAssignmentsById[DutyId];if(!aAssignments)return null;return aAssignments[AssignmentId];}
CRotasGuiEntry.prototype.GetFirstAssignmentId=function(DutyId){var aAssignmentIds=this.aAssignmentsById[DutyId];if(!aAssignmentIds)return null;for(var AssignmentId in aAssignmentIds)return AssignmentId;return null;}
CRotasGuiEntry.prototype.GetLastAssignmentId=function(DutyId){var aAssignmentIds=this.aAssignmentsById[DutyId];if(!aAssignmentIds)return null;var LastAssignmentId=null;for(var AssignmentId in aAssignmentIds){LastAssignmentId=Math.max(AssignmentId,LastAssignmentId);}
return LastAssignmentId;}
CRotasGuiEntry.prototype.GetNextAssignment=function(DutyId,AssignmentId){var aAssignments=this.aAssignmentsById[DutyId];if(!aAssignments)return null;var bFound=false;for(ThisAssignmentId in aAssignments){if(bFound)return aAssignments[ThisAssignmentId];if(ThisAssignmentId==AssignmentId)bFound=true;}
var bFoundDuty=false;for(var ThisDutyId in this.Parent.Duties){if(bFoundDuty){if(!this.Data['d'+ThisDutyId])continue;if(!this.Parent.CanEdit(ThisDutyId))continue;var aAssignments=this.aAssignmentsById[ThisDutyId];for(AssignmentId in aAssignments)return aAssignments[AssignmentId];}
if(ThisDutyId==DutyId){bFoundDuty=true;}}
return null;}
CRotasGuiEntry.prototype.GetPreviousAssignment=function(DutyId,AssignmentId){var aAssignments=this.aAssignmentsById[DutyId];if(!aAssignments)return null;var PreviousAssignmentId=AssignmentId-1;while(PreviousAssignmentId>=0){if(aAssignments[PreviousAssignmentId])return aAssignments[PreviousAssignmentId];PreviousAssignmentId--;}
var PreviousDutyId=null;for(var ThisDutyId in this.Parent.Duties){if(ThisDutyId==DutyId){if(!PreviousDutyId)return null;var AssignmentId=this.GetLastAssignmentId(PreviousDutyId);var Assignment=this.aAssignmentsById[PreviousDutyId][AssignmentId];if(Assignment)return Assignment;}
if(!this.Data['d'+ThisDutyId])continue;if(!this.Parent.CanEdit(ThisDutyId))continue;PreviousDutyId=ThisDutyId;}
return null;}
CRotasGuiEntry.prototype.CanApplyAssignmentChange=function(){if(this.AppliedAssignment){alert("You must wait for the existing modification to complete before making additional changes.\n\n"+"If you've already waited a few minutes, then you've probably hit an error.");return false;}
return true;}
window.CAssignment=function(RotasGuiEntry,UserId,DutyId,AssignmentId){this.GuiEntry=RotasGuiEntry;this.Gui=this.GuiEntry.Parent;this.RotaCache=this.Gui.RotaCache;this.RecordId=this.GuiEntry.RecordId;this.UserId=UserId;this.DutyId=DutyId;this.AssignmentId=AssignmentId;this.Events={};this.Events.onChangeDuty="onChangeDuty";this.AddEventHandler=CPage.prototype.AddEventHandler;this.RaiseEvent=CPage.prototype.RaiseEvent;this.RemoveEventHandler=CPage.prototype.RemoveEventHandler;this.GetEntryFunction=[this.Gui.Id,'.GetAssignment(',this.RecordId,',',this.DutyId,',',this.AssignmentId,')'].join('');}
CAssignment.prototype._GetElementId=function(){return['Assignment',this.RecordId,this.DutyId,this.AssignmentId].join('-');}
CAssignment.prototype._GetSeparatorId=function(){return[this._GetElementId(),'Separator'].join('-');}
CAssignment.prototype._GetLabelId=function(){return[this._GetElementId(),'Label'].join('-');}
CAssignment.prototype._GetFormId=function(){return[this._GetElementId(),'Form'].join('-');}
CAssignment.prototype._GetLoadingPanelId=function(){return[this._GetElementId(),'LoadingPanel'].join('-');}
CAssignment.prototype._GetElement=function(){return document.getElementById(this._GetElementId());}
CAssignment.prototype._GetSeparator=function(){return document.getElementById(this._GetSeparatorId());}
CAssignment.prototype._GetLabel=function(){return document.getElementById(this._GetLabelId());}
CAssignment.prototype._GetForm=function(){return document.getElementById(this._GetFormId());}
CAssignment.prototype._GetLoadingPanel=function(){return document.getElementById(this._GetLoadingPanelId());}
CAssignment.prototype._GetInput=function(){return this._GetForm();}
CAssignment.prototype._GetUserName=function(){var aUserIds=this.GuiEntry.Data['d'+this.DutyId];return this.RotaCache.GetUserName(this.UserId);}
CAssignment.prototype._HasChanges=function(){var Input=this._GetInput();if(!Input)return false;var EditedValue=Input.value;var PersistantValue=this._GetUserName();return(PersistantValue!=EditedValue);}
CAssignment.prototype._IsDelete=function(){var Input=this._GetInput();var EditedValue=Input.value;return(EditedValue=='');}
CAssignment.prototype.OnCancel=function(){if(!this._HasChanges())return true;var Message='Are you sure you want to abandon your changes?\n  Hint: Press enter or tab to save changes.';if(confirm(Message)){var Input=this._GetInput();Input.value=this._GetUserName();return true;}
var Input=this._GetInput();Input.focus();return false;}
CAssignment.prototype.ToHtml=function(){var Attributes=new CXDb.CAttributes();if(this.Gui.CanEdit(this.DutyId)){Attributes.onmouseover=[this.GetEntryFunction,'.OnEditForm()'].join('');}
Attributes.id=this._GetElementId();return['<span ',Attributes.ToHtml(),'">',this._ToLabelHtml(),this._ToSeparatorHtml(),'</span>'].join('');}
CAssignment.prototype._ToLabelHtml=function(){var Attributes=new CXDb.CAttributes();Attributes.onclick=[this.GetEntryFunction,'.OnForceEditForm()'].join('');Attributes.id=this._GetLabelId();return['<span class="AssignmentLabel" ',Attributes.ToHtml(),'>',htmlspecialchars(this._GetUserName()),'</span>'].join('');}
CAssignment.prototype._ToSeparatorHtml=function(){var Attributes=new CXDb.CAttributes();Attributes.id=this._GetSeparatorId();return['<span ',Attributes.ToHtml(),'>,</span> '].join('');}
CAssignment.prototype._ToFormHtml=function(){var UserName=new String(this._GetUserName());var Attributes=new CXDb.CAttributes();Attributes.onfocus=[this.GetEntryFunction,'.SelectAll()'].join('');Attributes.onkeypress=['return ',this.GetEntryFunction,'.OnKeyPress(this, event);"'].join('');Attributes.value=UserName;Attributes.size=UserName.length;Attributes.id=this._GetFormId();return['<input ',Attributes.ToHtml(),'>'].join('');}
CAssignment.prototype._ToForm=function(){var Form=document.createElement('span');Form.innerHTML=this._ToFormHtml();return Form;}
CAssignment.prototype._ToLoadingPanelHtml=function(){var Width=Element.offsetWidth;var Attributes=new CXDb.CAttributes();Attributes.style=['display:inline-block;text-align:center;width:',Width,'px'].join('');Attributes.id=this._GetLoadingPanelId();return['<span ',Attributes.ToHtml(),'>','<img src="',this.Gui.ImagesPath,'progress.gif"/>','</span>'].join('');}
CAssignment.prototype._ToLoadingPanel=function(){var LoadingPanel=document.createElement('span');LoadingPanel.innerHTML=this._ToLoadingPanelHtml();return LoadingPanel;}
CAssignment.prototype.SelectAll=function(){var Input=this._GetInput();Input.select();}
CAssignment.prototype.OnEditForm=function(){if(this.GuiEntry.AppliedAssignment){if(this.GuiEntry.AppliedAssignment._GetElementId()==this._GetElementId())return;}
if(!this.GuiEntry.OnHideForm())return;var Label=this._GetLabel();Label.style.display='none';var EditForm=this._GetForm();if(!EditForm){var Element=this._GetElement()
if(!Element)return;Element.insertBefore(this._ToForm(),Element.firstChild);}else{EditForm.style.display='';}
this.GuiEntry.ActiveAssignment=this;this.SelectAll();}
CAssignment.prototype.OnForceEditForm=function(){if(!this.GuiEntry.OnCancel())return;this.OnEditForm();return true;}
CAssignment.prototype.OnLabel=function(){if(this._HasChanges())return;var Form=this._GetForm();Form.style.display='none';var Label=this._GetLabel();Label.style.display='';this.GuiEntry.ActiveAssignment=null;}
CAssignment.prototype.OnKeyPress=function(control,event){var CharCode=0;if(window.event){CharCode=window.event.keyCode;}else if(event.which){CharCode=event.which;}else if(event.keyCode){CharCode=event.keyCode;}
switch(CharCode){case 27:this.OnCancel();return false;case 9:var NextAssignment=null;if(event.shiftKey){NextAssignment=this.GuiEntry.GetPreviousAssignment(this.DutyId,this.AssignmentId);}else{NextAssignment=this.GuiEntry.GetNextAssignment(this.DutyId,this.AssignmentId);}
this._MoveTo(NextAssignment);return false;case 38:var NextAssignment=this.GuiEntry.GetPreviousAssignment(this.DutyId,this.GuiEntry.GetFirstAssignmentId(this.DutyId));this._MoveTo(NextAssignment);return false;case 40:var NextAssignment=this.GuiEntry.GetNextAssignment(this.DutyId,this.GuiEntry.GetLastAssignmentId(this.DutyId));this._MoveTo(NextAssignment);return false;case 36:if(event.shiftKey)break;if(this._HasChanges())break;var NextAssignment=this.GuiEntry.GetAssignment(this.DutyId,this.GuiEntry.GetFirstAssignmentId(this.DutyId));if(NextAssignment.AssignmentId==this.AssignmentId)return false;this._MoveTo(NextAssignment);return false;case 35:if(event.shiftKey)break;if(this._HasChanges())break;var NextAssignment=this.GuiEntry.GetAssignment(this.DutyId,this.GuiEntry.GetLastAssignmentId(this.DutyId));if(NextAssignment.AssignmentId==this.AssignmentId)return false;this._MoveTo(NextAssignment);return false;case 13:if(this._IsDelete()){this.OnDelete();}else{this.OnApply();}
return false;default:return this.Gui.OnAutoCompleteUserName(control,event);}}
CAssignment.prototype._MoveTo=function(NextAssignment){if(this._IsDelete()){this.OnDelete();}else{if(!this.OnApply())return;}
if(NextAssignment){NextAssignment.OnEditForm();NextAssignment.SelectAll();}
return;}
CAssignment.prototype.ShowLoadingPanel=function(){var Label=this._GetLabel();if(Label)Label.style.display='none';var Form=this._GetForm();if(Form)Form.style.display='none';var LoadingPanel=this._GetLoadingPanel();if(!LoadingPanel){var Element=this._GetElement()
if(!Element)return;Element.insertBefore(this._ToLoadingPanel(),Element.firstChild);}else{LoadingPanel.style.display='';}}
CAssignment.prototype.Cancel=function(){var Form=this._GetForm();if(Form)Form.style.display='none';var Label=this._GetLabel();if(Label)Label.style.display='';var LoadingPanel=this._GetLoadingPanel();if(LoadingPanel)LoadingPanel.style.display='none';}
CAssignment.prototype.OnAdd=function(){this.ShowLoadingPanel();this.GuiEntry.ActiveAssignment=this;var oRequest=new AjaxCallback(this,'_AddComplete');var PostData=['ContentType=AjaxJs','Action=AddAssignment','EventId='+this.RecordId,'DutyId='+this.DutyId,'UserId='].join('&');this.GuiEntry.AppliedAssignment=this;this.GuiEntry.ActiveAssignment=null;oRequest.Send(this.Gui.Page,PostData);}
CAssignment.prototype._AddComplete=function(oRequest){this.GuiEntry.AppliedAssignment=null;var Results=eval(oRequest.responseText);if(typeof(Results)!='object'){this.DeleteElement();this.GuiEntry.ActiveAssignment=null;return;}
this.GuiEntry.PatchData(Results);var Label=this._GetLabel();Label.innerHTML=this._ToLabelHtml();this.Cancel();if(!this.GuiEntry.ActiveAssignment){this.OnEditForm();}
this.RaiseEvent(this.Events.onChangeDuty,[this.DutyId]);}
CAssignment.prototype.OnApply=function(){if(!this._HasChanges()){this.OnLabel();return true;}
if(!this.GuiEntry.CanApplyAssignmentChange())return false;var Input=this._GetInput();var User=this.RotaCache.LookupUserId(Input.value);if(!User){alert("'"+Input.value+"' is not a known user, so we can't make that assignment change.");this.SelectAll();return false;}
var ToUserId=User.Id;var aUserIds=this.GuiEntry.Data['d'+this.DutyId];var FromUserId=this.UserId;if(!this.GuiEntry.Available(ToUserId)){alert(["You can't assign that duty to ",Input.value," because they have recorded themselves as unavailable"].join(''));this.SelectAll();return false;}
this.ShowLoadingPanel();var oRequest=new AjaxCallback(this);var Assignment=this;oRequest.Complete=function(){Assignment._ApplyComplete(oRequest.xmlhttp,ToUserId);}
var PostData=['ContentType=AjaxJs','Action=ChangeAssignment','EventId='+this.RecordId,'DutyId='+this.DutyId,'From='+FromUserId,'To='+ToUserId].join('&');this.GuiEntry.AppliedAssignment=this;this.GuiEntry.ActiveAssignment=null;oRequest.Send(this.Gui.Page,PostData);return true;}
CAssignment.prototype._ApplyComplete=function(oRequest,ToUserId){var Results=eval(oRequest.responseText);this.GuiEntry.AppliedAssignment=null;if(typeof(Results)!='object'){if(this.GuiEntry.ActiveAssignment){this.Cancel();this.GuiEntry.ActiveAssignment=null;}else{this.OnEditForm();var UserName=this.RotaCache.GetUserName(ToUserId);var Input=this._GetInput();Input.value=UserName;}
return;}
this.GuiEntry.PatchData(Results);this.UserId=ToUserId;var Label=this._GetLabel();Label.innerHTML=this._ToLabelHtml();var Element=this._GetElement();this.Cancel();this.RaiseEvent(this.Events.onChangeDuty,[this.DutyId]);}
CAssignment.prototype.OnDelete=function(){if(!this.GuiEntry.CanApplyAssignmentChange())return;this.ShowLoadingPanel();var UserId=this.UserId;var oRequest=new AjaxCallback(this,'_DeleteComplete');oRequest.RecordId=this.RecordId;var PostData=['ContentType=AjaxJs','Action=DeleteAssignment','EventId='+this.RecordId,'DutyId='+this.DutyId,'UserId='+UserId].join('&');this.GuiEntry.AppliedAssignment=this;this.GuiEntry.ActiveAssignment=null;oRequest.Send(this.Gui.Page,PostData);}
CAssignment.prototype._DeleteComplete=function(oRequest){var Results=eval(oRequest.responseText);this.GuiEntry.AppliedAssignment=null;if(typeof(Results)!='object'){var Element=this._GetElement()
Element.innerHTML=this._ToLabel();return;}
var iAssignments=this.GuiEntry.Data['d'+this.DutyId].length;this.GuiEntry.PatchData(Results);var aNewAssignments=this.GuiEntry.Data['d'+this.DutyId];if(aNewAssignments&&aNewAssignments.length==iAssignments){var Label=this._GetLabel();Label.innerHTML=this._ToLabelHtml();var Form=this._GetForm();Form.value=this._GetUserName();var Element=this._GetElement();this.Cancel();return;}
this.GuiEntry.DeleteAssignment(this);this.DeleteElement();this.RaiseEvent(this.Events.onChangeDuty,[this.DutyId]);}
CAssignment.prototype.DeleteElement=function(){var Element=this._GetElement();Element.parentNode.removeChild(Element);var aUserIds=this.GuiEntry.Data['d'+this.DutyId];if(!aUserIds||aUserIds.length===0){this.GuiEntry.RebuildInfoPanel();}}
window.CRotasGui=function(Page){if(arguments.length<=0)return;this.Init.apply(this,arguments);}
CRotasGui.prototype=new CJournalGui();CRotasGui.prototype.constructor=CRotasGui;CRotasGui.superclass=CJournalGui.prototype;CRotasGui.prototype.Init=function(Page){CRotasGui.superclass.Init.apply(this,arguments);this.SortByField='StartTime';this.bAdministrator=false;this.ActiveUserId=null;this.aActiveUserDuties={};this.aActiveUserAdminDuties={};this.aSelectedDuties={};this.aHiddenDuties={};this.Duties={};this.DutiesGui=null;this.RotaEditorId=null;this.RotaEditor=null;this.AvailabilityGuiId=null;this.AvailabilityGui=null;this.RotaCache=new CRotaCache();this.RootExportUrl='';}
CRotasGui.prototype._NewDataEntry=function(RecordId,Data){return new CRotasGuiEntry(RecordId,Data,this);}
CRotasGui.prototype._GetAvailabilityEditor=function(){if(this.AvailabilityGui)return this.AvailabilityGui;if(!window[this.AvailabilityGuiId]){Init_AvailabilityGui();return null;}
this.AvailabilityGui=window[this.AvailabilityGuiId];this.AvailabilityGui.RotaCache=this.RotaCache;this.AvailabilityGui.AddEventHandler(this.AvailabilityGui.Events.onWindowMove,this,this.onChildWindowMove);this.AvailabilityGui.AddEventHandler(this.AvailabilityGui.Events.onCancel,this,this.OnViewRotas);return this.AvailabilityGui;}
CRotasGui.prototype._GetRotaEditor=function(){if(this.RotaEditor)return this.RotaEditor;if(!this._GetAvailabilityEditor())return null;if(!window[this.RotaEditorId]){Init_RotaEditor();return null;}
this.RotaEditor=window[this.RotaEditorId];this.RotaEditor.RotaCache=this.RotaCache;this.RotaEditor.RotaJournalCache=this.JournalCache;this.RotaEditor.AvailabilityJournalCache=this.AvailabilityGui.JournalCache;this.RotaEditor.AddEventHandler(this.RotaEditor.Events.onLoadRota,this,this.onLoadRota);this.RotaEditor.AddEventHandler(this.RotaEditor.Events.onLoadAvailability,this,this.onLoadAvailability);this.RotaEditor.AddEventHandler(this.RotaEditor.Events.onCancel,this,this.OnViewRotas);this.RotaEditor.AddEventHandler(this.RotaEditor.Events.onRequestSwap,this,this.OnRequestSwap);this.RotaEditor.AddEventHandler(this.RotaEditor.Events.onWindowMove,this,this.onChildWindowMove);return this.RotaEditor;}
CRotasGui.prototype.onLoadRota=function(iBaseDelta,iWeeksInView){this.onChildWindowMove(iBaseDelta,iWeeksInView);this.Search();}
CRotasGui.prototype.OnAutoCompleteUserName=function(control,event){var RichControl=new CAutoCompletionControl(control,this.RotaCache.GetAvailableUserNames());var bResult=RichControl.OnKeyPress(event);return bResult;}
CRotasGui.prototype.CreateExportUrl=function(Scheme,RecordId,UserId,DutyId,From){if(!Scheme)Scheme='http';var aParameters=['Action=Export','ContentType=AjaxIcs'];if(RecordId){aParameters.push('EventId='+RecordId);}
if(UserId){aParameters.push('UserId='+UserId);}
if(DutyId){aParameters.push('DutyId='+DutyId);}
if(From){aParameters.push('From='+From);}
return Scheme+'://'+this.RootExportUrl+aParameters.join('&');}
CRotasGui.prototype.OnUpdateExportLink=function(control,event){var Control=document.getElementById("Export-UserId-Text");if(!Control)return;var User=this.RotaCache.LookupUserId(Control.value);var UserId=(User?User.Id:null);var Control=document.getElementById("Export-DutyId");if(!Control)return;var DutyId=(this.Duties[Control.value]?Control.value:null);var Control=document.getElementById("Export-WeeksPast");if(!Control)return;var WeeksPast=parseInt(Control.value);var From=(WeeksPast)?(7*-WeeksPast):null;var SubscribeUrl=this.CreateExportUrl('webcal',null,UserId,DutyId,From);var ExportUrl=this.CreateExportUrl('http',null,UserId,DutyId,From);var GoogleCalendarUrl="http://www.google.com/calendar/render?cid="+escape(ExportUrl)
var Control=document.getElementById('ExportUrl');Control.href=ExportUrl;Control.innerHTML=ExportUrl;var Control=document.getElementById('SubscribeUrl');Control.href=SubscribeUrl;Control.innerHTML=SubscribeUrl;var Control=document.getElementById('GoogleCalendarUrl');Control.href=GoogleCalendarUrl;}
CRotasGui.prototype.onChildWindowMove=function(iBaseDelta,iWeeksInView){this.iBaseDelta=iBaseDelta;this.iWeeksInView=iWeeksInView;if(this._GetAvailabilityEditor()){this.AvailabilityGui.iBaseDelta=iBaseDelta;this.AvailabilityGui.iWeeksInView=iWeeksInView;}
if(this._GetRotaEditor()){this.RotaEditor.iBaseDelta=iBaseDelta;this.RotaEditor.iWeeksInView=iWeeksInView;}}
CRotasGui.prototype.onLoadAvailability=function(iBaseDelta,iWeeksInView){this.onChildWindowMove(iBaseDelta,iWeeksInView);this.AvailabilityGui.Search();}
CRotasGui.prototype._SearchComplete=function(oRequest){this._GetAvailabilityEditor();this._GetRotaEditor();this.HideLoadingPanel();var SearchResults=eval(oRequest.responseText);if(typeof(SearchResults)!='object')return;if(!SearchResults.Results)return;if(SearchResults.UserNames){this.RotaCache.CacheUserNames(SearchResults.UserNames);}
CRotasGui.superclass._SearchComplete.apply(this,arguments);}
CRotasGui.prototype.Render=function(){var aNewResults=new Array();var aOriginalResults=this.Data['Results'];for(var iIndex in aOriginalResults){for(var DutyId in this.aSelectedDuties){var DutyKey='d'+DutyId;if(aOriginalResults[iIndex].Data[DutyKey]){aNewResults.push(aOriginalResults[iIndex]);break;}}}
this.Data['Results']=aNewResults;{this.aHiddenDuties=[];for(var DutyId in this.Duties){if(this.aSelectedDuties[DutyId])continue;this.aHiddenDuties.push(DutyId);}
var Duties=this.Duties;this.aHiddenDuties=this.aHiddenDuties.sort(function(Id1,Id2){return Duties[Id1].Name>Duties[Id2].Name;});}
CRotasGui.superclass.Render.apply(this,arguments);this.Data['Results']=aOriginalResults;if(this.aHiddenDuties.length){var aContents=['<h2>Other Duties</h2><table>'];for(var Index in this.aHiddenDuties){var DutyId=this.aHiddenDuties[Index];aContents.push(['<tr><td>',this.Duties[DutyId].Name,'</td><td>','<input type="button" value="Show" onclick="',this.Id,'.onShowDuty(',DutyId,');"',' title="Hide this duty" style="font-size:8pt"></td></tr>'].join(''));}
aContents.push('</table>');aContents.push(['<div style="text-align:center">','<input type="button" value="Hide All" onclick="',this.Id,'.onHideAllDuties();"',' title="Hide all the duties" style="font-size:8pt">','<input type="button" value="Show All" onclick="',this.Id,'.onShowAllDuties();"',' title="Show all the duties" style="font-size:8pt">','</div>'].join(''));var eTable=document.getElementById('JournalTable');var eSortControls=eTable.rows[0];var Element=eSortControls.insertCell(-1);Element.className="screenonly box";Element.style.verticalAlign='top';Element.innerHTML=aContents.join('');}}
CRotasGui.prototype.ShowActionPanel=function(){CXDbGui.superclass.ShowActionPanel.apply(this,arguments);var p=document.getElementById('AddPanel');if(!p)return;if(p.style.display=='none')return;if(!this.DutiesGui){var oRequest=new AjaxCallback(this,'_LoadDutiesGuiCompleteForAdd');oRequest.Send('duties.php','');return;}
this._ShowAddForm();}
CRotasGui.prototype._ShowAddForm=function(){if(!this.DutiesGui.AddFormEntry){this.DutiesGui.AddFormEntry=this.DutiesGui._NewDataEntry(0,{});this.AddFormEntry=this.DutiesGui.AddFormEntry;}
this.AddFormEntry.ExtendedInfo=document.getElementById('AddPanel');this.AddFormEntry.Edit();}
CRotasGui.prototype._LoadDutiesGuiCompleteForAdd=function(oRequest){eval(oRequest.responseText);if(typeof(DutiesGui)!='object')return;this._BindDutiesGui(DutiesGui);this._ShowAddForm();}
CRotasGui.prototype.EditDuties=function(){if(!this.DutiesGui){var oRequest=new AjaxCallback(this,'_LoadDutiesGuiCompleteForSelect');oRequest.Send('duties.php','');return;}
this.DutiesGui.aActiveUserDuties=this.aActiveUserDuties;this.DutiesGui.aSelectedDuties=this.aSelectedDuties;this.DutiesGui.Search('true()');}
CRotasGui.prototype._BindDutiesGui=function(DutiesGui){this.DutiesGui=DutiesGui;this.DutiesGui.RotaCache=this.RotaCache;this.DutiesGui.AddEventHandler(this.DutiesGui.Events.onSelectedDutiesChanged,this,this.onSelectedDutiesChanged);this.DutiesGui.AddEventHandler(this.DutiesGui.Events.onSearchComplete,this,this.onDutiesChanged);}
CRotasGui.prototype._LoadDutiesGuiCompleteForSelect=function(oRequest){eval(oRequest.responseText);if(typeof(DutiesGui)!='object')return;this._BindDutiesGui(DutiesGui);this.EditDuties();}
CRotasGui.prototype._DisconnectHandlers=function(){if(this._GetRotaEditor()){this.AvailabilityGui.RemoveEventHandler(this.AvailabilityGui.Events.onSearchComplete,this.AvailabilityGui,this.AvailabilityGui.onSearchComplete);this.AvailabilityGui.RemoveEventHandler(this.AvailabilityGui.Events.onSearchComplete,this.RotaEditor,function(){this.Search();});}
this.RemoveEventHandler(this.Events.onSearchComplete,this,this.onSearchComplete);this.RemoveEventHandler(this.Events.onSearchComplete,this,function(){this.RotaEditor.Search();});}
CRotasGui.prototype.onEditRota=function(DutyId){if(!this.ActiveUserId){this.OnViewRotas();return;}
if(!this.aSelectedDuties[DutyId]){this.aDisplayColumns.push('d'+DutyId);this.aSelectedDuties[DutyId]=this.Duties[DutyId];}
if(!this._GetRotaEditor())return;this.RotaEditor.iBaseDelta=this.iBaseDelta;this.RotaEditor.iWeeksInView=this.iWeeksInView;this.RotaEditor.RotaCache=this.RotaCache;this._DisconnectHandlers();this.AddEventHandler(this.Events.onSearchComplete,this,function(){this.RotaEditor.Search();});this.AvailabilityGui.AddEventHandler(this.AvailabilityGui.Events.onSearchComplete,this.RotaEditor,function(){this.Search();});this.RotaEditor.Load(DutyId,this.aSelectedDuties[DutyId]);}
CRotasGui.prototype.onHideDuty=function(DutyId){delete this.aSelectedDuties[DutyId];this.onSelectedDutiesChanged(this.aSelectedDuties);this.Render();}
CRotasGui.prototype.onShowDuty=function(DutyId){this.aSelectedDuties[DutyId]=this.Duties[DutyId];this.onSelectedDutiesChanged(this.aSelectedDuties);this.Render();}
CRotasGui.prototype.onHideAllDuties=function(){this.onSelectedDutiesChanged({});this.Render();}
CRotasGui.prototype.onShowAllDuties=function(){var aSelectedDuties={};for(var DutyId in this.Duties){aSelectedDuties[DutyId]=this.Duties;}
this.onSelectedDutiesChanged(aSelectedDuties);this.Render();}
CRotasGui.prototype.OnViewRotas=function(){this._DisconnectHandlers();this.AddEventHandler(this.Events.onSearchComplete,this,this.onSearchComplete);this.Search();}
CRotasGui.prototype.ViewAvailability=function(){if(!this._GetAvailabilityEditor())return;this.AvailabilityGui.iBaseDelta=this.iBaseDelta;this.AvailabilityGui.iWeeksInView=this.iWeeksInView;this.AvailabilityGui.RotaCache=this.RotaCache;this._DisconnectHandlers();this.AvailabilityGui.AddEventHandler(this.AvailabilityGui.Events.onSearchComplete,this.AvailabilityGui,this.AvailabilityGui.onSearchComplete);this.AvailabilityGui.Search();}
CRotasGui.prototype.LoadReminders=function(){this.ShowActionPanel('RemindersPanel');if(document.getElementById('RemindersPanel').style.display=='none')return;var oPanel=document.getElementById('RemindersActionPanel');oPanel.innerHTML=['<span style="display:block;text-align:center">','<img src="',this.ImagesPath,'progress.gif"/>','</span>'].join('');var oRequest=new AjaxCallback(this,'_LoadRemindersComplete');var PostData="ContentType=AjaxJs&Action=My Reminders";oRequest.Send(this.Page,PostData);}
CRotasGui.prototype._LoadRemindersComplete=function(oRequest){var SearchResults=eval(oRequest.responseText);if(typeof(SearchResults)!='object')return;if(!SearchResults.Results)return;SearchResults=SearchResults.Results;var oPanel=document.getElementById('RemindersActionPanel');aContent=[];var iCount=0;aContent.push('<table>');for(var iIndex in SearchResults){iCount++;aContent.push('<tr><td>Reminder ',iCount,' is set <strong>');aContent.push(SearchResults[iIndex].Notification/(24*60*60));aContent.push(' days in advance</strong>.</td>');aContent.push('<td id="Reminder',iIndex,'"><button onclick="',this.Id,'.DeleteReminder(',iIndex,')">Delete Reminder</button>');aContent.push('</td></tr>');}
aContent.push('</table>');aContent.push('<form action="javascript:',this.id,'.AddReminder()">');aContent.push('Remind me <input id="Notification" style="width: 20px"> days in advance');aContent.push('<input type="submit" value="Remind Me..." onClick="',this.Id,'.AddReminder()">');aContent.push('</form>');oPanel.innerHTML=aContent.join('');document.getElementById('Notification').select();document.getElementById('Notification').focus();}
CRotasGui.prototype.DeleteReminder=function(RecordId){var oRequest=new AjaxCallback(this,'_LoadRemindersComplete');var PostData=['ContentType=AjaxJs&Action=My Reminders&Delete=',RecordId].join('');var oPanel=document.getElementById('Reminder'+RecordId);oPanel.innerHTML=['<span style="display:block;text-align:center">','<img src="',this.ImagesPath,'progress.gif"/>','</span>'].join('');oRequest.Send(this.Page,PostData);}
CRotasGui.prototype.AddReminder=function(){var oRequest=new AjaxCallback(this,'_LoadRemindersComplete');var PostData=['ContentType=AjaxJs&Action=My Reminders&Add=',document.getElementById('Notification').value*(24*60*60)].join('');var oPanel=document.getElementById('RemindersActionPanel');oPanel.innerHTML=['<span style="display:block;text-align:center">','<img src="',this.ImagesPath,'progress.gif"/>','</span>'].join('');oRequest.Send(this.Page,PostData);}
CRotasGui.prototype.onSelectedDutiesChanged=function(aSelectedDuties){this.aSelectedDuties=aSelectedDuties;this.aDisplayColumns=['StartTime','Type','ViewTeam'];for(var DutyId in this.aSelectedDuties){this.aDisplayColumns.push('d'+DutyId);}}
CRotasGui.prototype.onDutiesChanged=function(){var NewDuties=this.DutiesGui.Data.Results;for(var iIndex in this.DutiesGui.Data.Results){var DutyId=this.DutiesGui.Data.Results[iIndex].RecordId;var Duty=this.DutiesGui.Data.Results[iIndex].Data;if(!this.Duties[DutyId])this.Duties[DutyId]={};this.Duties[DutyId]=Duty;if(this.aSelectedDuties[DutyId]){this.aSelectedDuties[DutyId]=Duty;}}}
CRotasGui.prototype.FieldSortLink=function(FieldName,Attributes){var aResult=[CRotasGui.superclass.FieldSortLink.apply(this,arguments)];var SearchRegExp=/^d(\d*)$/;var Name=new String(FieldName);if(Name.search(SearchRegExp)!=-1){var DutyId=parseInt(Name.replace(SearchRegExp,"$1"));var aButtons=[];if(this.CanEdit(DutyId)){aButtons.push(['<input type="button" value="Edit" onclick="',this.Id,'.onEditRota(',DutyId,');" title="Edit this rota" style="font-size:8pt"/>'].join(''));}
aButtons.push(['<input type="button" value="Hide" onclick="',this.Id,'.onHideDuty(',DutyId,');" title="Hide this duty" style="font-size:8pt"/>'].join(''));if(this.bAdministrator||this.aActiveUserDuties[DutyId]){aResult.push('<br>');}
aResult.push('<span style="white-space: nowrap">'+aButtons.join(' ')+'</span>');}
return aResult.join('');}
CRotasGui.prototype.OnRequestSwap=function(EventId,DutyId,UserId){this.ShowLoadingPanel();var oRequest=new AjaxCallback(this,'_BeginRequestSwapComplete');var PostData=[this.StaticRequestVars.join('&'),'ContentType=AjaxHtml','Action=RequestSwap','EventId='+EventId,'DutyId='+DutyId,'UserId='+UserId].join('&');oRequest.Send(this.Page,PostData);}
CRotasGui.prototype._BeginRequestSwapComplete=function(oRequest){this.HideLoadingPanel();var ActionTitle=document.getElementById('ActionTitle');if(ActionTitle){ActionTitle.firstChild.nodeValue="Requesting a Swap";}
var ActionContent=document.getElementById('ActionContent');if(ActionContent){ActionContent.innerHTML=oRequest.responseText;}}
CRotasGui.prototype.OnComposeAction=function(Element){this.HideLoadingPanel();if(Element.value=='Cancel'){this.OnViewRotas();return;}
var Form=document.getElementById('ComposeControl');var LoadingButton=document.createElement('div');LoadingButton.style.width=Element.offsetWidth+'px';LoadingButton.style.height=Element.offsetHeight+'px';LoadingButton.style.clear='left';LoadingButton.style.textAlign='center';LoadingButton.style.cssFloat='left';LoadingButton.innerHTML=['<img src="',this.ImagesPath,'progress.gif" alt="Processing">'].join('');Element.style.display='none';Element.parentNode.insertBefore(LoadingButton,Element);var oRequest=new AjaxCallback(this,'_BeginRequestSwapComplete');var PostData=[this.BuildPostData(Element.form,'Html'),'ComposeAction='+Element.value].join('&');oRequest.Send(this.Page,PostData);}
CRotasGui.prototype.RenderHeaders=function(eTable){var eSortControls=eTable.insertRow(-1);eSortControls.id='SearchResultsSortControls';eSortControls.className='SortControls';{Element=eSortControls.insertCell(-1);Element.className='EntrySummaryActions';var iColspan=this.aResultActions.length+this.aResultInputs.length;Element.colSpan=iColspan+1;Element.innerHTML='<span class="ExtendedInfoIndicatorRegion EntrySummaryRegion"></span>'
+'<span class="EntrySummaryRegion"></span>';if(this.Data['Results'].length){for(var iIndex=0;iIndex<this.aDisplayColumns.length;iIndex++){var Name=this.aDisplayColumns[iIndex];Element=eSortControls.insertCell(-1);Element.id='SearchResultsSortBy'+Name;if(Name==this.DateField){var iColumns=0;for(var Key in this.aDateFields)iColumns++;Element.colSpan=iColumns;Element.style.textAlign='center';}
Element.className='EntrySummaryName';Element.style.verticalAlign='top';Element.innerHTML=this.FieldSortLink(htmlspecialchars(Name),' class="EntrySummaryRegion"');}}}}
CRotasGui.prototype.CanEdit=function(DutyId){if(this.bAdministrator)return true;if(this.aActiveUserDuties[DutyId])return true;if(this.aActiveUserAdminDuties[DutyId])return true;return false;}
CRotasGui.prototype.GetAssignment=function(RecordId,DutyId,AssignmentId){var Entry=this._GetData(RecordId);if(!Entry)return;return Entry.GetAssignment(DutyId,AssignmentId);}
//----------------------------------------------------------
// Copyright (C) Microsoft Corporation. All rights reserved.
//----------------------------------------------------------
// MicrosoftAjax.js
Function.__typeName="Function";Function.__class=true;Function.createCallback=function(b,a){return function(){var e=arguments.length;if(e>0){var d=[];for(var c=0;c<e;c++)d[c]=arguments[c];d[e]=a;return b.apply(this,d)}return b.call(this,a)}};Function.createDelegate=function(a,b){return function(){return b.apply(a,arguments)}};Function.emptyFunction=Function.emptyMethod=function(){};Function._validateParams=function(e,c){var a;a=Function._validateParameterCount(e,c);if(a){a.popStackFrame();return a}for(var b=0;b<e.length;b++){var d=c[Math.min(b,c.length-1)],f=d.name;if(d.parameterArray)f+="["+(b-c.length+1)+"]";a=Function._validateParameter(e[b],d,f);if(a){a.popStackFrame();return a}}return null};Function._validateParameterCount=function(e,a){var c=a.length,d=0;for(var b=0;b<a.length;b++)if(a[b].parameterArray)c=Number.MAX_VALUE;else if(!a[b].optional)d++;if(e.length<d||e.length>c){var f=Error.parameterCount();f.popStackFrame();return f}return null};Function._validateParameter=function(c,a,h){var b,g=a.type,l=!!a.integer,k=!!a.domElement,m=!!a.mayBeNull;b=Function._validateParameterType(c,g,l,k,m,h);if(b){b.popStackFrame();return b}var e=a.elementType,f=!!a.elementMayBeNull;if(g===Array&&typeof c!=="undefined"&&c!==null&&(e||!f)){var j=!!a.elementInteger,i=!!a.elementDomElement;for(var d=0;d<c.length;d++){var n=c[d];b=Function._validateParameterType(n,e,j,i,f,h+"["+d+"]");if(b){b.popStackFrame();return b}}}return null};Function._validateParameterType=function(b,c,k,j,h,d){var a;if(typeof b==="undefined")if(h)return null;else{a=Error.argumentUndefined(d);a.popStackFrame();return a}if(b===null)if(h)return null;else{a=Error.argumentNull(d);a.popStackFrame();return a}if(c&&c.__enum){if(typeof b!=="number"){a=Error.argumentType(d,Object.getType(b),c);a.popStackFrame();return a}if(b%1===0){var e=c.prototype;if(!c.__flags||b===0){for(var g in e)if(e[g]===b)return null}else{var i=b;for(var g in e){var f=e[g];if(f===0)continue;if((f&b)===f)i-=f;if(i===0)return null}}}a=Error.argumentOutOfRange(d,b,String.format(Sys.Res.enumInvalidValue,b,c.getName()));a.popStackFrame();return a}if(j&&b!==window&&b!==document&&!(window.HTMLElement&&b instanceof HTMLElement)&&typeof b.nodeName!=="string"){a=Error.argument(d,Sys.Res.argumentDomElement);a.popStackFrame();return a}if(c&&!c.isInstanceOfType(b)){a=Error.argumentType(d,Object.getType(b),c);a.popStackFrame();return a}if(c===Number&&k)if(b%1!==0){a=Error.argumentOutOfRange(d,b,Sys.Res.argumentInteger);a.popStackFrame();return a}return null};Error.__typeName="Error";Error.__class=true;Error.create=function(d,b){var a=new Error(d);a.message=d;if(b)for(var c in b)a[c]=b[c];a.popStackFrame();return a};Error.argument=function(a,c){var b="Sys.ArgumentException: "+(c?c:Sys.Res.argument);if(a)b+="\n"+String.format(Sys.Res.paramName,a);var d=Error.create(b,{name:"Sys.ArgumentException",paramName:a});d.popStackFrame();return d};Error.argumentNull=function(a,c){var b="Sys.ArgumentNullException: "+(c?c:Sys.Res.argumentNull);if(a)b+="\n"+String.format(Sys.Res.paramName,a);var d=Error.create(b,{name:"Sys.ArgumentNullException",paramName:a});d.popStackFrame();return d};Error.argumentOutOfRange=function(c,a,d){var b="Sys.ArgumentOutOfRangeException: "+(d?d:Sys.Res.argumentOutOfRange);if(c)b+="\n"+String.format(Sys.Res.paramName,c);if(typeof a!=="undefined"&&a!==null)b+="\n"+String.format(Sys.Res.actualValue,a);var e=Error.create(b,{name:"Sys.ArgumentOutOfRangeException",paramName:c,actualValue:a});e.popStackFrame();return e};Error.argumentType=function(d,c,b,e){var a="Sys.ArgumentTypeException: ";if(e)a+=e;else if(c&&b)a+=String.format(Sys.Res.argumentTypeWithTypes,c.getName(),b.getName());else a+=Sys.Res.argumentType;if(d)a+="\n"+String.format(Sys.Res.paramName,d);var f=Error.create(a,{name:"Sys.ArgumentTypeException",paramName:d,actualType:c,expectedType:b});f.popStackFrame();return f};Error.argumentUndefined=function(a,c){var b="Sys.ArgumentUndefinedException: "+(c?c:Sys.Res.argumentUndefined);if(a)b+="\n"+String.format(Sys.Res.paramName,a);var d=Error.create(b,{name:"Sys.ArgumentUndefinedException",paramName:a});d.popStackFrame();return d};Error.format=function(a){var c="Sys.FormatException: "+(a?a:Sys.Res.format),b=Error.create(c,{name:"Sys.FormatException"});b.popStackFrame();return b};Error.invalidOperation=function(a){var c="Sys.InvalidOperationException: "+(a?a:Sys.Res.invalidOperation),b=Error.create(c,{name:"Sys.InvalidOperationException"});b.popStackFrame();return b};Error.notImplemented=function(a){var c="Sys.NotImplementedException: "+(a?a:Sys.Res.notImplemented),b=Error.create(c,{name:"Sys.NotImplementedException"});b.popStackFrame();return b};Error.parameterCount=function(a){var c="Sys.ParameterCountException: "+(a?a:Sys.Res.parameterCount),b=Error.create(c,{name:"Sys.ParameterCountException"});b.popStackFrame();return b};Error.prototype.popStackFrame=function(){if(typeof this.stack==="undefined"||this.stack===null||typeof this.fileName==="undefined"||this.fileName===null||typeof this.lineNumber==="undefined"||this.lineNumber===null)return;var a=this.stack.split("\n"),c=a[0],e=this.fileName+":"+this.lineNumber;while(typeof c!=="undefined"&&c!==null&&c.indexOf(e)===-1){a.shift();c=a[0]}var d=a[1];if(typeof d==="undefined"||d===null)return;var b=d.match(/@(.*):(\d+)$/);if(typeof b==="undefined"||b===null)return;this.fileName=b[1];this.lineNumber=parseInt(b[2]);a.shift();this.stack=a.join("\n")};if(!window)this.window=this;window.Type=Function;window.__rootNamespaces=[];window.__registeredTypes={};Type.prototype.callBaseMethod=function(a,d,b){var c=this.getBaseMethod(a,d);if(!b)return c.apply(a);else return c.apply(a,b)};Type.prototype.getBaseMethod=function(d,c){var b=this.getBaseType();if(b){var a=b.prototype[c];return a instanceof Function?a:null}return null};Type.prototype.getBaseType=function(){return typeof this.__baseType==="undefined"?null:this.__baseType};Type.prototype.getInterfaces=function(){var a=[],b=this;while(b){var c=b.__interfaces;if(c)for(var d=0,f=c.length;d<f;d++){var e=c[d];if(!Array.contains(a,e))a[a.length]=e}b=b.__baseType}return a};Type.prototype.getName=function(){return typeof this.__typeName==="undefined"?"":this.__typeName};Type.prototype.implementsInterface=function(d){this.resolveInheritance();var c=d.getName(),a=this.__interfaceCache;if(a){var e=a[c];if(typeof e!=="undefined")return e}else a=this.__interfaceCache={};var b=this;while(b){var f=b.__interfaces;if(f)if(Array.indexOf(f,d)!==-1)return a[c]=true;b=b.__baseType}return a[c]=false};Type.prototype.inheritsFrom=function(b){this.resolveInheritance();var a=this.__baseType;while(a){if(a===b)return true;a=a.__baseType}return false};Type.prototype.initializeBase=function(a,b){this.resolveInheritance();if(this.__baseType)if(!b)this.__baseType.apply(a);else this.__baseType.apply(a,b);return a};Type.prototype.isImplementedBy=function(a){if(typeof a==="undefined"||a===null)return false;var b=Object.getType(a);return !!(b.implementsInterface&&b.implementsInterface(this))};Type.prototype.isInstanceOfType=function(b){if(typeof b==="undefined"||b===null)return false;if(b instanceof this)return true;var a=Object.getType(b);return !!(a===this)||a.inheritsFrom&&a.inheritsFrom(this)||a.implementsInterface&&a.implementsInterface(this)};Type.prototype.registerClass=function(c,b,d){this.prototype.constructor=this;this.__typeName=c;this.__class=true;if(b){this.__baseType=b;this.__basePrototypePending=true}if(!window.__classes)window.__classes={};window.__classes[c.toUpperCase()]=this;if(d){this.__interfaces=[];for(var a=2;a<arguments.length;a++){var e=arguments[a];this.__interfaces.push(e)}}return this};Type.prototype.registerInterface=function(a){this.prototype.constructor=this;this.__typeName=a;this.__interface=true;return this};Type.prototype.resolveInheritance=function(){if(this.__basePrototypePending){var b=this.__baseType;b.resolveInheritance();for(var a in b.prototype){var c=b.prototype[a];if(!this.prototype[a])this.prototype[a]=c}delete this.__basePrototypePending}};Type.getRootNamespaces=function(){return Array.clone(window.__rootNamespaces)};Type.isClass=function(a){if(typeof a==="undefined"||a===null)return false;return !!a.__class};Type.isInterface=function(a){if(typeof a==="undefined"||a===null)return false;return !!a.__interface};Type.isNamespace=function(a){if(typeof a==="undefined"||a===null)return false;return !!a.__namespace};Type.parse=function(typeName,ns){var fn;if(ns){if(!window.__classes)return null;fn=window.__classes[ns.getName().toUpperCase()+"."+typeName.toUpperCase()];return fn||null}if(!typeName)return null;if(!Type.__htClasses)Type.__htClasses={};fn=Type.__htClasses[typeName];if(!fn){fn=eval(typeName);Type.__htClasses[typeName]=fn}return fn};Type.registerNamespace=function(f){var d=window,c=f.split(".");for(var b=0;b<c.length;b++){var e=c[b],a=d[e];if(!a){a=d[e]={};if(b===0)window.__rootNamespaces[window.__rootNamespaces.length]=a;a.__namespace=true;a.__typeName=c.slice(0,b+1).join(".");a.getName=function(){return this.__typeName}}d=a}};Object.__typeName="Object";Object.__class=true;Object.getType=function(b){var a=b.constructor;if(!a||typeof a!=="function"||!a.__typeName||a.__typeName==="Object")return Object;return a};Object.getTypeName=function(a){return Object.getType(a).getName()};Boolean.__typeName="Boolean";Boolean.__class=true;Boolean.parse=function(b){var a=b.trim().toLowerCase();if(a==="false")return false;if(a==="true")return true};Date.__typeName="Date";Date.__class=true;Date._appendPreOrPostMatch=function(e,b){var d=0,a=false;for(var c=0,g=e.length;c<g;c++){var f=e.charAt(c);switch(f){case "'":if(a)b.append("'");else d++;a=false;break;case "\\":if(a)b.append("\\");a=!a;break;default:b.append(f);a=false;break}}return d};Date._expandFormat=function(a,b){if(!b)b="F";if(b.length===1)switch(b){case "d":return a.ShortDatePattern;case "D":return a.LongDatePattern;case "t":return a.ShortTimePattern;case "T":return a.LongTimePattern;case "F":return a.FullDateTimePattern;case "M":case "m":return a.MonthDayPattern;case "s":return a.SortableDateTimePattern;case "Y":case "y":return a.YearMonthPattern;default:throw Error.format(Sys.Res.formatInvalidString)}return b};Date._expandYear=function(c,a){if(a<100){var b=(new Date).getFullYear();a+=b-b%100;if(a>c.Calendar.TwoDigitYearMax)return a-100}return a};Date._getParseRegExp=function(b,e){if(!b._parseRegExp)b._parseRegExp={};else if(b._parseRegExp[e])return b._parseRegExp[e];var c=Date._expandFormat(b,e);c=c.replace(/([\^\$\.\*\+\?\|\[\]\(\)\{\}])/g,"\\\\$1");var a=new Sys.StringBuilder("^"),j=[],f=0,i=0,h=Date._getTokenRegExp(),d;while((d=h.exec(c))!==null){var l=c.slice(f,d.index);f=h.lastIndex;i+=Date._appendPreOrPostMatch(l,a);if(i%2===1){a.append(d[0]);continue}switch(d[0]){case "dddd":case "ddd":case "MMMM":case "MMM":a.append("(\\D+)");break;case "tt":case "t":a.append("(\\D*)");break;case "yyyy":a.append("(\\d{4})");break;case "fff":a.append("(\\d{3})");break;case "ff":a.append("(\\d{2})");break;case "f":a.append("(\\d)");break;case "dd":case "d":case "MM":case "M":case "yy":case "y":case "HH":case "H":case "hh":case "h":case "mm":case "m":case "ss":case "s":a.append("(\\d\\d?)");break;case "zzz":a.append("([+-]?\\d\\d?:\\d{2})");break;case "zz":case "z":a.append("([+-]?\\d\\d?)");break}Array.add(j,d[0])}Date._appendPreOrPostMatch(c.slice(f),a);a.append("$");var k=a.toString().replace(/\s+/g,"\\s+"),g={"regExp":k,"groups":j};b._parseRegExp[e]=g;return g};Date._getTokenRegExp=function(){return /dddd|ddd|dd|d|MMMM|MMM|MM|M|yyyy|yy|y|hh|h|HH|H|mm|m|ss|s|tt|t|fff|ff|f|zzz|zz|z/g};Date.parseLocale=function(a){return Date._parse(a,Sys.CultureInfo.CurrentCulture,arguments)};Date.parseInvariant=function(a){return Date._parse(a,Sys.CultureInfo.InvariantCulture,arguments)};Date._parse=function(g,c,h){var e=false;for(var a=1,i=h.length;a<i;a++){var f=h[a];if(f){e=true;var b=Date._parseExact(g,f,c);if(b)return b}}if(!e){var d=c._getDateTimeFormats();for(var a=0,i=d.length;a<i;a++){var b=Date._parseExact(g,d[a],c);if(b)return b}}return null};Date._parseExact=function(s,y,j){s=s.trim();var m=j.dateTimeFormat,v=Date._getParseRegExp(m,y),x=(new RegExp(v.regExp)).exec(s);if(x!==null){var w=v.groups,f=null,c=null,h=null,g=null,d=0,n=0,o=0,e=0,k=null,r=false;for(var p=0,z=w.length;p<z;p++){var a=x[p+1];if(a)switch(w[p]){case "dd":case "d":h=Date._parseInt(a);if(h<1||h>31)return null;break;case "MMMM":c=j._getMonthIndex(a);if(c<0||c>11)return null;break;case "MMM":c=j._getAbbrMonthIndex(a);if(c<0||c>11)return null;break;case "M":case "MM":var c=Date._parseInt(a)-1;if(c<0||c>11)return null;break;case "y":case "yy":f=Date._expandYear(m,Date._parseInt(a));if(f<0||f>9999)return null;break;case "yyyy":f=Date._parseInt(a);if(f<0||f>9999)return null;break;case "h":case "hh":d=Date._parseInt(a);if(d===12)d=0;if(d<0||d>11)return null;break;case "H":case "HH":d=Date._parseInt(a);if(d<0||d>23)return null;break;case "m":case "mm":n=Date._parseInt(a);if(n<0||n>59)return null;break;case "s":case "ss":o=Date._parseInt(a);if(o<0||o>59)return null;break;case "tt":case "t":var u=a.toUpperCase();r=u===m.PMDesignator.toUpperCase();if(!r&&u!==m.AMDesignator.toUpperCase())return null;break;case "f":e=Date._parseInt(a)*100;if(e<0||e>999)return null;break;case "ff":e=Date._parseInt(a)*10;if(e<0||e>999)return null;break;case "fff":e=Date._parseInt(a);if(e<0||e>999)return null;break;case "dddd":g=j._getDayIndex(a);if(g<0||g>6)return null;break;case "ddd":g=j._getAbbrDayIndex(a);if(g<0||g>6)return null;break;case "zzz":var q=a.split(/:/);if(q.length!==2)return null;var i=Date._parseInt(q[0]);if(i<-12||i>13)return null;var l=Date._parseInt(q[1]);if(l<0||l>59)return null;k=i*60+(a.startsWith("-")?-l:l);break;case "z":case "zz":var i=Date._parseInt(a);if(i<-12||i>13)return null;k=i*60;break}}var b=new Date;if(f===null)f=b.getFullYear();if(c===null)c=b.getMonth();if(h===null)h=b.getDate();b.setFullYear(f,c,h);if(b.getDate()!==h)return null;if(g!==null&&b.getDay()!==g)return null;if(r&&d<12)d+=12;b.setHours(d,n,o,e);if(k!==null){var t=b.getMinutes()-(k+b.getTimezoneOffset());b.setHours(b.getHours()+parseInt(t/60),t%60)}return b}};Date._parseInt=function(a){return parseInt(a.replace(/^[\s0]+(\d+)$/,"$1"))};Date.prototype.format=function(a){return this._toFormattedString(a,Sys.CultureInfo.InvariantCulture)};Date.prototype.localeFormat=function(a){return this._toFormattedString(a,Sys.CultureInfo.CurrentCulture)};Date.prototype._toFormattedString=function(e,h){if(!e||e.length===0||e==="i")if(h&&h.name.length>0)return this.toLocaleString();else return this.toString();var d=h.dateTimeFormat;e=Date._expandFormat(d,e);var a=new Sys.StringBuilder,b;function c(a){if(a<10)return "0"+a;return a.toString()}function g(a){if(a<10)return "00"+a;if(a<100)return "0"+a;return a.toString()}var j=0,i=Date._getTokenRegExp();for(;true;){var l=i.lastIndex,f=i.exec(e),k=e.slice(l,f?f.index:e.length);j+=Date._appendPreOrPostMatch(k,a);if(!f)break;if(j%2===1){a.append(f[0]);continue}switch(f[0]){case "dddd":a.append(d.DayNames[this.getDay()]);break;case "ddd":a.append(d.AbbreviatedDayNames[this.getDay()]);break;case "dd":a.append(c(this.getDate()));break;case "d":a.append(this.getDate());break;case "MMMM":a.append(d.MonthNames[this.getMonth()]);break;case "MMM":a.append(d.AbbreviatedMonthNames[this.getMonth()]);break;case "MM":a.append(c(this.getMonth()+1));break;case "M":a.append(this.getMonth()+1);break;case "yyyy":a.append(this.getFullYear());break;case "yy":a.append(c(this.getFullYear()%100));break;case "y":a.append(this.getFullYear()%100);break;case "hh":b=this.getHours()%12;if(b===0)b=12;a.append(c(b));break;case "h":b=this.getHours()%12;if(b===0)b=12;a.append(b);break;case "HH":a.append(c(this.getHours()));break;case "H":a.append(this.getHours());break;case "mm":a.append(c(this.getMinutes()));break;case "m":a.append(this.getMinutes());break;case "ss":a.append(c(this.getSeconds()));break;case "s":a.append(this.getSeconds());break;case "tt":a.append(this.getHours()<12?d.AMDesignator:d.PMDesignator);break;case "t":a.append((this.getHours()<12?d.AMDesignator:d.PMDesignator).charAt(0));break;case "f":a.append(g(this.getMilliseconds()).charAt(0));break;case "ff":a.append(g(this.getMilliseconds()).substr(0,2));break;case "fff":a.append(g(this.getMilliseconds()));break;case "z":b=this.getTimezoneOffset()/60;a.append((b>=0?"+":"-")+Math.floor(Math.abs(b)));break;case "zz":b=this.getTimezoneOffset()/60;a.append((b>=0?"+":"-")+c(Math.floor(Math.abs(b))));break;case "zzz":b=this.getTimezoneOffset()/60;a.append((b>=0?"+":"-")+c(Math.floor(Math.abs(b)))+d.TimeSeparator+c(Math.abs(this.getTimezoneOffset()%60)));break}}return a.toString()};Number.__typeName="Number";Number.__class=true;Number.parseLocale=function(a){return Number._parse(a,Sys.CultureInfo.CurrentCulture)};Number.parseInvariant=function(a){return Number._parse(a,Sys.CultureInfo.InvariantCulture)};Number._parse=function(g,f){var a=g.trim();if(a.match(/infinity/i)!==null)return parseFloat(a);if(a.match(/^0x[a-f0-9]+$/i)!==null)return parseInt(a);var d=f.numberFormat,b=d.NumberDecimalSeparator,c=d.NumberGroupSeparator,e=new RegExp("^[+-]?[\\d\\"+c+"]*\\"+b+"?\\d*([eE][+-]?\\d+)?$");if(!a.match(e))return Number.NaN;a=a.split(c).join("");a=a.replace(b,".");return parseFloat(a)};Number.prototype.format=function(a){return this._toFormattedString(a,Sys.CultureInfo.InvariantCulture)};Number.prototype.localeFormat=function(a){return this._toFormattedString(a,Sys.CultureInfo.CurrentCulture)};Number.prototype._toFormattedString=function(d,j){if(!d||d.length===0||d==="i")if(j&&j.name.length>0)return this.toLocaleString();else return this.toString();var q=["n %","n%","%n"],p=["-n %","-n%","-%n"],r=["(n)","-n","- n","n-","n -"],o=["$n","n$","$ n","n $"],n=["($n)","-$n","$-n","$n-","(n$)","-n$","n-$","n$-","-n $","-$ n","n $-","$ n-","$ -n","n- $","($ n)","(n $)"];function i(p,k,j,l,o){var e=j[0],g=1,c=p.toString(),a="",m="",i=c.split(".");if(i.length>1){c=i[0];a=i[1];var h=a.split(/e/i);if(h.length>1){a=h[0];m="e"+h[1]}}if(k>0){var f=a.length-k;if(f>0)a=a.slice(0,k);else if(f<0)for(var n=0;n<Math.abs(f);n++)a+="0";a=o+a}else a="";a+=m;var b=c.length-1,d="";while(b>=0){if(e===0||e>b)if(d.length>0)return c.slice(0,b+1)+l+d+a;else return c.slice(0,b+1)+a;if(d.length>0)d=c.slice(b-e+1,b+1)+l+d;else d=c.slice(b-e+1,b+1);b-=e;if(g<j.length){e=j[g];g++}}return c.slice(0,b+1)+l+d+a}var a=j.numberFormat,e=Math.abs(this);if(!d)d="D";var b=-1;if(d.length>1)b=parseInt(d.slice(1));var c;switch(d.charAt(0)){case "d":case "D":c="n";if(b!==-1){var g=""+e,k=b-g.length;if(k>0)for(var m=0;m<k;m++)g="0"+g;e=g}if(this<0)e=-e;break;case "c":case "C":if(this<0)c=n[a.CurrencyNegativePattern];else c=o[a.CurrencyPositivePattern];if(b===-1)b=a.CurrencyDecimalDigits;e=i(Math.abs(this),b,a.CurrencyGroupSizes,a.CurrencyGroupSeparator,a.CurrencyDecimalSeparator);break;case "n":case "N":if(this<0)c=r[a.NumberNegativePattern];else c="n";if(b===-1)b=a.NumberDecimalDigits;e=i(Math.abs(this),b,a.NumberGroupSizes,a.NumberGroupSeparator,a.NumberDecimalSeparator);break;case "p":case "P":if(this<0)c=p[a.PercentNegativePattern];else c=q[a.PercentPositivePattern];if(b===-1)b=a.PercentDecimalDigits;e=i(Math.abs(this),b,a.PercentGroupSizes,a.PercentGroupSeparator,a.PercentDecimalSeparator);break;default:throw Error.format(Sys.Res.formatBadFormatSpecifier)}var l=/n|\$|-|%/g,f="";for(;true;){var s=l.lastIndex,h=l.exec(c);f+=c.slice(s,h?h.index:c.length);if(!h)break;switch(h[0]){case "n":f+=e;break;case "$":f+=a.CurrencySymbol;break;case "-":f+=a.NegativeSign;break;case "%":f+=a.PercentSymbol;break}}return f};RegExp.__typeName="RegExp";RegExp.__class=true;Array.__typeName="Array";Array.__class=true;Array.add=Array.enqueue=function(a,b){a[a.length]=b};Array.addRange=function(a,b){a.push.apply(a,b)};Array.clear=function(a){a.length=0};Array.clone=function(a){if(a.length===1)return [a[0]];else return Array.apply(null,a)};Array.contains=function(a,b){return Array.indexOf(a,b)>=0};Array.dequeue=function(a){return a.shift()};Array.forEach=function(b,e,d){for(var a=0,f=b.length;a<f;a++){var c=b[a];if(typeof c!=="undefined")e.call(d,c,a,b)}};Array.indexOf=function(d,e,a){if(typeof e==="undefined")return -1;var c=d.length;if(c!==0){a=a-0;if(isNaN(a))a=0;else{if(isFinite(a))a=a-a%1;if(a<0)a=Math.max(0,c+a)}for(var b=a;b<c;b++)if(typeof d[b]!=="undefined"&&d[b]===e)return b}return -1};Array.insert=function(a,b,c){a.splice(b,0,c)};Array.parse=function(value){if(!value)return [];return eval(value)};Array.remove=function(b,c){var a=Array.indexOf(b,c);if(a>=0)b.splice(a,1);return a>=0};Array.removeAt=function(a,b){a.splice(b,1)};String.__typeName="String";String.__class=true;String.prototype.endsWith=function(a){return this.substr(this.length-a.length)===a};String.prototype.startsWith=function(a){return this.substr(0,a.length)===a};String.prototype.trim=function(){return this.replace(/^\s+|\s+$/g,"")};String.prototype.trimEnd=function(){return this.replace(/\s+$/,"")};String.prototype.trimStart=function(){return this.replace(/^\s+/,"")};String.format=function(){return String._toFormattedString(false,arguments)};String.localeFormat=function(){return String._toFormattedString(true,arguments)};String._toFormattedString=function(l,j){var c="",e=j[0];for(var a=0;true;){var f=e.indexOf("{",a),d=e.indexOf("}",a);if(f<0&&d<0){c+=e.slice(a);break}if(d>0&&(d<f||f<0)){c+=e.slice(a,d+1);a=d+2;continue}c+=e.slice(a,f);a=f+1;if(e.charAt(a)==="{"){c+="{";a++;continue}if(d<0)break;var h=e.substring(a,d),g=h.indexOf(":"),k=parseInt(g<0?h:h.substring(0,g))+1,i=g<0?"":h.substring(g+1),b=j[k];if(typeof b==="undefined"||b===null)b="";if(b.toFormattedString)c+=b.toFormattedString(i);else if(l&&b.localeFormat)c+=b.localeFormat(i);else if(b.format)c+=b.format(i);else c+=b.toString();a=d+1}return c};Type.registerNamespace("Sys");Sys.IDisposable=function(){};Sys.IDisposable.prototype={};Sys.IDisposable.registerInterface("Sys.IDisposable");Sys.StringBuilder=function(a){this._parts=typeof a!=="undefined"&&a!==null&&a!==""?[a.toString()]:[];this._value={};this._len=0};Sys.StringBuilder.prototype={append:function(a){this._parts[this._parts.length]=a},appendLine:function(a){this._parts[this._parts.length]=typeof a==="undefined"||a===null||a===""?"\r\n":a+"\r\n"},clear:function(){this._parts=[];this._value={};this._len=0},isEmpty:function(){if(this._parts.length===0)return true;return this.toString()===""},toString:function(a){a=a||"";var b=this._parts;if(this._len!==b.length){this._value={};this._len=b.length}var d=this._value;if(typeof d[a]==="undefined"){if(a!=="")for(var c=0;c<b.length;)if(typeof b[c]==="undefined"||b[c]===""||b[c]===null)b.splice(c,1);else c++;d[a]=this._parts.join(a)}return d[a]}};Sys.StringBuilder.registerClass("Sys.StringBuilder");if(!window.XMLHttpRequest)window.XMLHttpRequest=function(){var b=["Msxml2.XMLHTTP","Microsoft.XMLHTTP"];for(var a=0;a<b.length;a++)try{var c=new ActiveXObject(b[a]);return c}catch(d){}return null};Sys.Browser={};Sys.Browser.InternetExplorer={};Sys.Browser.Firefox={};Sys.Browser.Safari={};Sys.Browser.Opera={};Sys.Browser.agent=null;Sys.Browser.hasDebuggerStatement=false;Sys.Browser.name=navigator.appName;Sys.Browser.version=parseFloat(navigator.appVersion);if(navigator.userAgent.indexOf(" MSIE ")>-1){Sys.Browser.agent=Sys.Browser.InternetExplorer;Sys.Browser.version=parseFloat(navigator.userAgent.match(/MSIE (\d+\.\d+)/)[1]);Sys.Browser.hasDebuggerStatement=true}else if(navigator.userAgent.indexOf(" Firefox/")>-1){Sys.Browser.agent=Sys.Browser.Firefox;Sys.Browser.version=parseFloat(navigator.userAgent.match(/Firefox\/(\d+\.\d+)/)[1]);Sys.Browser.name="Firefox";Sys.Browser.hasDebuggerStatement=true}else if(navigator.userAgent.indexOf(" Safari/")>-1){Sys.Browser.agent=Sys.Browser.Safari;Sys.Browser.version=parseFloat(navigator.userAgent.match(/Safari\/(\d+\.\d+)/)[1]);Sys.Browser.name="Safari"}else if(navigator.userAgent.indexOf("Opera/")>-1)Sys.Browser.agent=Sys.Browser.Opera;Type.registerNamespace("Sys.UI");Sys._Debug=function(){};Sys._Debug.prototype={_appendConsole:function(a){if(typeof Debug!=="undefined"&&Debug.writeln)Debug.writeln(a);if(window.console&&window.console.log)window.console.log(a);if(window.opera)window.opera.postError(a);if(window.debugService)window.debugService.trace(a)},_appendTrace:function(b){var a=document.getElementById("TraceConsole");if(a&&a.tagName.toUpperCase()==="TEXTAREA")a.value+=b+"\n"},assert:function(c,a,b){if(!c){a=b&&this.assert.caller?String.format(Sys.Res.assertFailedCaller,a,this.assert.caller):String.format(Sys.Res.assertFailed,a);if(confirm(String.format(Sys.Res.breakIntoDebugger,a)))this.fail(a)}},clearTrace:function(){var a=document.getElementById("TraceConsole");if(a&&a.tagName.toUpperCase()==="TEXTAREA")a.value=""},fail:function(message){this._appendConsole(message);if(Sys.Browser.hasDebuggerStatement)eval("debugger")},trace:function(a){this._appendConsole(a);this._appendTrace(a)},traceDump:function(a,b){var c=this._traceDump(a,b,true)},_traceDump:function(a,c,f,b,d){c=c?c:"traceDump";b=b?b:"";if(a===null){this.trace(b+c+": null");return}switch(typeof a){case "undefined":this.trace(b+c+": Undefined");break;case "number":case "string":case "boolean":this.trace(b+c+": "+a);break;default:if(Date.isInstanceOfType(a)||RegExp.isInstanceOfType(a)){this.trace(b+c+": "+a.toString());break}if(!d)d=[];else if(Array.contains(d,a)){this.trace(b+c+": ...");return}Array.add(d,a);if(a==window||a===document||window.HTMLElement&&a instanceof HTMLElement||typeof a.nodeName==="string"){var k=a.tagName?a.tagName:"DomElement";if(a.id)k+=" - "+a.id;this.trace(b+c+" {"+k+"}")}else{var i=Object.getTypeName(a);this.trace(b+c+(typeof i==="string"?" {"+i+"}":""));if(b===""||f){b+="    ";var e,j,l,g,h;if(Array.isInstanceOfType(a)){j=a.length;for(e=0;e<j;e++)this._traceDump(a[e],"["+e+"]",f,b,d)}else for(g in a){h=a[g];if(!Function.isInstanceOfType(h))this._traceDump(h,g,f,b,d)}}}Array.remove(d,a)}}};Sys._Debug.registerClass("Sys._Debug");Sys.Debug=new Sys._Debug;Sys.Debug.isDebug=false;function Sys$Enum$parse(c,e){var a,b,i;if(e){a=this.__lowerCaseValues;if(!a){this.__lowerCaseValues=a={};var g=this.prototype;for(var f in g)a[f.toLowerCase()]=g[f]}}else a=this.prototype;if(!this.__flags){i=e?c.toLowerCase():c;b=a[i.trim()];if(typeof b!=="number")throw Error.argument("value",String.format(Sys.Res.enumInvalidValue,c,this.__typeName));return b}else{var h=(e?c.toLowerCase():c).split(","),j=0;for(var d=h.length-1;d>=0;d--){var k=h[d].trim();b=a[k];if(typeof b!=="number")throw Error.argument("value",String.format(Sys.Res.enumInvalidValue,c.split(",")[d].trim(),this.__typeName));j|=b}return j}}function Sys$Enum$toString(c){if(typeof c==="undefined"||c===null)return this.__string;var d=this.prototype,a;if(!this.__flags||c===0){for(a in d)if(d[a]===c)return a}else{var b=this.__sortedValues;if(!b){b=[];for(a in d)b[b.length]={key:a,value:d[a]};b.sort(function(a,b){return a.value-b.value});this.__sortedValues=b}var e=[],g=c;for(a=b.length-1;a>=0;a--){var h=b[a],f=h.value;if(f===0)continue;if((f&c)===f){e[e.length]=h.key;g-=f;if(g===0)break}}if(e.length&&g===0)return e.reverse().join(", ")}return ""}Type.prototype.registerEnum=function(c,b){for(var a in this.prototype)this[a]=this.prototype[a];this.__typeName=c;this.parse=Sys$Enum$parse;this.__string=this.toString();this.toString=Sys$Enum$toString;this.__flags=b;this.__enum=true};Type.isEnum=function(a){if(typeof a==="undefined"||a===null)return false;return !!a.__enum};Type.isFlags=function(a){if(typeof a==="undefined"||a===null)return false;return !!a.__flags};Sys.EventHandlerList=function(){this._list={}};Sys.EventHandlerList.prototype={addHandler:function(b,a){Array.add(this._getEvent(b,true),a)},removeHandler:function(c,b){var a=this._getEvent(c);if(!a)return;Array.remove(a,b)},getHandler:function(b){var a=this._getEvent(b);if(!a||a.length===0)return null;a=Array.clone(a);if(!a._handler)a._handler=function(c,d){for(var b=0,e=a.length;b<e;b++)a[b](c,d)};return a._handler},_getEvent:function(a,b){if(!this._list[a]){if(!b)return null;this._list[a]=[]}return this._list[a]}};Sys.EventHandlerList.registerClass("Sys.EventHandlerList");Sys.EventArgs=function(){};Sys.EventArgs.registerClass("Sys.EventArgs");Sys.EventArgs.Empty=new Sys.EventArgs;Sys.CancelEventArgs=function(){Sys.CancelEventArgs.initializeBase(this);this._cancel=false};Sys.CancelEventArgs.prototype={get_cancel:function(){return this._cancel},set_cancel:function(a){this._cancel=a}};Sys.CancelEventArgs.registerClass("Sys.CancelEventArgs",Sys.EventArgs);Sys.INotifyPropertyChange=function(){};Sys.INotifyPropertyChange.prototype={};Sys.INotifyPropertyChange.registerInterface("Sys.INotifyPropertyChange");Sys.PropertyChangedEventArgs=function(a){Sys.PropertyChangedEventArgs.initializeBase(this);this._propertyName=a};Sys.PropertyChangedEventArgs.prototype={get_propertyName:function(){return this._propertyName}};Sys.PropertyChangedEventArgs.registerClass("Sys.PropertyChangedEventArgs",Sys.EventArgs);Sys.INotifyDisposing=function(){};Sys.INotifyDisposing.prototype={};Sys.INotifyDisposing.registerInterface("Sys.INotifyDisposing");Sys.Component=function(){if(Sys.Application)Sys.Application.registerDisposableObject(this)};Sys.Component.prototype={_id:null,_initialized:false,_updating:false,get_events:function(){if(!this._events)this._events=new Sys.EventHandlerList;return this._events},get_id:function(){return this._id},set_id:function(a){this._id=a},get_isInitialized:function(){return this._initialized},get_isUpdating:function(){return this._updating},add_disposing:function(a){this.get_events().addHandler("disposing",a)},remove_disposing:function(a){this.get_events().removeHandler("disposing",a)},add_propertyChanged:function(a){this.get_events().addHandler("propertyChanged",a)},remove_propertyChanged:function(a){this.get_events().removeHandler("propertyChanged",a)},beginUpdate:function(){this._updating=true},dispose:function(){if(this._events){var a=this._events.getHandler("disposing");if(a)a(this,Sys.EventArgs.Empty)}delete this._events;Sys.Application.unregisterDisposableObject(this);Sys.Application.removeComponent(this)},endUpdate:function(){this._updating=false;if(!this._initialized)this.initialize();this.updated()},initialize:function(){this._initialized=true},raisePropertyChanged:function(b){if(!this._events)return;var a=this._events.getHandler("propertyChanged");if(a)a(this,new Sys.PropertyChangedEventArgs(b))},updated:function(){}};Sys.Component.registerClass("Sys.Component",null,Sys.IDisposable,Sys.INotifyPropertyChange,Sys.INotifyDisposing);function Sys$Component$_setProperties(a,i){var d,j=Object.getType(a),e=j===Object||j===Sys.UI.DomElement,h=Sys.Component.isInstanceOfType(a)&&!a.get_isUpdating();if(h)a.beginUpdate();for(var c in i){var b=i[c],f=e?null:a["get_"+c];if(e||typeof f!=="function"){var k=a[c];if(!b||typeof b!=="object"||e&&!k)a[c]=b;else Sys$Component$_setProperties(k,b)}else{var l=a["set_"+c];if(typeof l==="function")l.apply(a,[b]);else if(b instanceof Array){d=f.apply(a);for(var g=0,m=d.length,n=b.length;g<n;g++,m++)d[m]=b[g]}else if(typeof b==="object"&&Object.getType(b)===Object){d=f.apply(a);Sys$Component$_setProperties(d,b)}}}if(h)a.endUpdate()}function Sys$Component$_setReferences(c,b){for(var a in b){var e=c["set_"+a],d=$find(b[a]);e.apply(c,[d])}}var $create=Sys.Component.create=function(h,f,d,c,g){var a=g?new h(g):new h,b=Sys.Application,i=b.get_isCreatingComponents();a.beginUpdate();if(f)Sys$Component$_setProperties(a,f);if(d)for(var e in d)a["add_"+e](d[e]);b._createdComponents[b._createdComponents.length]=a;if(a.get_id())b.addComponent(a);if(i)if(c)b._addComponentToSecondPass(a,c);else a.endUpdate();else{if(c)Sys$Component$_setReferences(a,c);a.endUpdate()}return a};Sys.UI.MouseButton=function(){throw Error.notImplemented()};Sys.UI.MouseButton.prototype={leftButton:0,middleButton:1,rightButton:2};Sys.UI.MouseButton.registerEnum("Sys.UI.MouseButton");Sys.UI.Key=function(){throw Error.notImplemented()};Sys.UI.Key.prototype={backspace:8,tab:9,enter:13,esc:27,space:32,pageUp:33,pageDown:34,end:35,home:36,left:37,up:38,right:39,down:40,del:127};Sys.UI.Key.registerEnum("Sys.UI.Key");Sys.UI.DomEvent=function(c){var a=c;this.rawEvent=a;this.altKey=a.altKey;if(typeof a.button!=="undefined")this.button=typeof a.which!=="undefined"?a.button:a.button===4?Sys.UI.MouseButton.middleButton:a.button===2?Sys.UI.MouseButton.rightButton:Sys.UI.MouseButton.leftButton;if(a.type==="keypress")this.charCode=a.charCode||a.keyCode;else if(a.keyCode&&a.keyCode===46)this.keyCode=127;else this.keyCode=a.keyCode;this.clientX=a.clientX;this.clientY=a.clientY;this.ctrlKey=a.ctrlKey;this.target=a.target?a.target:a.srcElement;if(this.target){var b=Sys.UI.DomElement.getLocation(this.target);this.offsetX=typeof a.offsetX!=="undefined"?a.offsetX:window.pageXOffset+(a.clientX||0)-b.x;this.offsetY=typeof a.offsetY!=="undefined"?a.offsetY:window.pageYOffset+(a.clientY||0)-b.y}this.screenX=a.screenX;this.screenY=a.screenY;this.shiftKey=a.shiftKey;this.type=a.type};Sys.UI.DomEvent.prototype={preventDefault:function(){if(this.rawEvent.preventDefault)this.rawEvent.preventDefault();else if(window.event)window.event.returnValue=false},stopPropagation:function(){if(this.rawEvent.stopPropagation)this.rawEvent.stopPropagation();else if(window.event)window.event.cancelBubble=true}};Sys.UI.DomEvent.registerClass("Sys.UI.DomEvent");var $addHandler=Sys.UI.DomEvent.addHandler=function(a,d,e){if(!a._events)a._events={};var c=a._events[d];if(!c)a._events[d]=c=[];var b;if(a.addEventListener){b=function(b){return e.call(a,new Sys.UI.DomEvent(b))};a.addEventListener(d,b,false)}else if(a.attachEvent){b=function(){return e.call(a,new Sys.UI.DomEvent(window.event))};a.attachEvent("on"+d,b)}c[c.length]={handler:e,browserHandler:b}},$addHandlers=Sys.UI.DomEvent.addHandlers=function(e,d,c){for(var b in d){var a=d[b];if(c)a=Function.createDelegate(c,a);$addHandler(e,b,a)}},$clearHandlers=Sys.UI.DomEvent.clearHandlers=function(a){if(a._events){var e=a._events;for(var b in e){var d=e[b];for(var c=d.length-1;c>=0;c--)$removeHandler(a,b,d[c].handler)}a._events=null}},$removeHandler=Sys.UI.DomEvent.removeHandler=function(a,e,f){var d=null,c=a._events[e],d=null;for(var b=0,g=c.length;b<g;b++)if(c[b].handler===f){d=c[b].browserHandler;break}if(a.removeEventListener)a.removeEventListener(e,d,false);else if(a.detachEvent)a.detachEvent("on"+e,d);c.splice(b,1)};Sys.IContainer=function(){};Sys.IContainer.prototype={};Sys.IContainer.registerInterface("Sys.IContainer");Sys._ScriptLoader=function(){this._scriptsToLoad=null;this._scriptLoadedDelegate=Function.createDelegate(this,this._scriptLoadedHandler)};Sys._ScriptLoader.prototype={dispose:function(){this._stopLoading();if(this._events)delete this._events;this._scriptLoadedDelegate=null},loadScripts:function(a,c,d,b){this._loading=true;this._allScriptsLoadedCallback=c;this._scriptLoadFailedCallback=d;this._scriptLoadTimeoutCallback=b;if(a>0)this._timeoutCookie=window.setTimeout(Function.createDelegate(this,this._scriptLoadTimeoutHandler),a*1000);this._loadScriptsInternal()},notifyScriptLoaded:function(){if(!this._loading)return;this._currentTask._notified++;if(Sys.Browser.agent===Sys.Browser.Safari)if(this._currentTask._notified===1)window.setTimeout(Function.createDelegate(this,function(){this._scriptLoadedHandler(this._currentTask.get_scriptElement(),true)}),0)},queueCustomScriptTag:function(a){if(!this._scriptsToLoad)this._scriptsToLoad=[];Array.add(this._scriptsToLoad,a)},queueScriptBlock:function(a){if(!this._scriptsToLoad)this._scriptsToLoad=[];Array.add(this._scriptsToLoad,{text:a})},queueScriptReference:function(a){if(!this._scriptsToLoad)this._scriptsToLoad=[];Array.add(this._scriptsToLoad,{src:a})},_createScriptElement:function(c){var a=document.createElement("SCRIPT");a.type="text/javascript";for(var b in c)a[b]=c[b];return a},_loadScriptsInternal:function(){if(this._scriptsToLoad&&this._scriptsToLoad.length>0){var b=Array.dequeue(this._scriptsToLoad),a=this._createScriptElement(b);if(a.text&&Sys.Browser.agent===Sys.Browser.Safari){a.innerHTML=a.text;delete a.text}if(typeof b.src==="string"){this._currentTask=new Sys._ScriptLoaderTask(a,this._scriptLoadedDelegate);this._currentTask.execute()}else{document.getElementsByTagName("HEAD")[0].appendChild(a);Sys._ScriptLoader._clearScript(a);this._loadScriptsInternal()}}else{var c=this._allScriptsLoadedCallback;this._stopLoading();if(c)c(this)}},_raiseError:function(a){var c=this._scriptLoadFailedCallback,b=this._currentTask.get_scriptElement();this._stopLoading();if(c)c(this,b,a);else throw Sys._ScriptLoader._errorScriptLoadFailed(b.src,a)},_scriptLoadedHandler:function(a,b){if(b&&this._currentTask._notified)if(this._currentTask._notified>1)this._raiseError(true);else{Array.add(Sys._ScriptLoader._getLoadedScripts(),a.src);this._currentTask.dispose();this._currentTask=null;this._loadScriptsInternal()}else this._raiseError(false)},_scriptLoadTimeoutHandler:function(){var a=this._scriptLoadTimeoutCallback;this._stopLoading();if(a)a(this)},_stopLoading:function(){if(this._timeoutCookie){window.clearTimeout(this._timeoutCookie);this._timeoutCookie=null}if(this._currentTask){this._currentTask.dispose();this._currentTask=null}this._scriptsToLoad=null;this._loading=null;this._allScriptsLoadedCallback=null;this._scriptLoadFailedCallback=null;this._scriptLoadTimeoutCallback=null}};Sys._ScriptLoader.registerClass("Sys._ScriptLoader",null,Sys.IDisposable);Sys._ScriptLoader.getInstance=function(){var a=Sys._ScriptLoader._activeInstance;if(!a)a=Sys._ScriptLoader._activeInstance=new Sys._ScriptLoader;return a};Sys._ScriptLoader.isScriptLoaded=function(b){var a=document.createElement("script");a.src=b;return Array.contains(Sys._ScriptLoader._getLoadedScripts(),a.src)};Sys._ScriptLoader.readLoadedScripts=function(){if(!Sys._ScriptLoader._referencedScripts){var b=Sys._ScriptLoader._referencedScripts=[],c=document.getElementsByTagName("SCRIPT");for(i=c.length-1;i>=0;i--){var d=c[i],a=d.src;if(a.length)if(!Array.contains(b,a))Array.add(b,a)}}};Sys._ScriptLoader._clearScript=function(a){if(!Sys.Debug.isDebug)a.parentNode.removeChild(a)};Sys._ScriptLoader._errorScriptLoadFailed=function(b,d){var a;if(d)a=Sys.Res.scriptLoadMultipleCallbacks;else a=Sys.Res.scriptLoadFailed;var e="Sys.ScriptLoadFailedException: "+String.format(a,b),c=Error.create(e,{name:"Sys.ScriptLoadFailedException","scriptUrl":b});c.popStackFrame();return c};Sys._ScriptLoader._getLoadedScripts=function(){if(!Sys._ScriptLoader._referencedScripts){Sys._ScriptLoader._referencedScripts=[];Sys._ScriptLoader.readLoadedScripts()}return Sys._ScriptLoader._referencedScripts};Sys._ScriptLoaderTask=function(b,a){this._scriptElement=b;this._completedCallback=a;this._notified=0};Sys._ScriptLoaderTask.prototype={get_scriptElement:function(){return this._scriptElement},dispose:function(){if(this._disposed)return;this._disposed=true;this._removeScriptElementHandlers();Sys._ScriptLoader._clearScript(this._scriptElement);this._scriptElement=null},execute:function(){this._addScriptElementHandlers();document.getElementsByTagName("HEAD")[0].appendChild(this._scriptElement)},_addScriptElementHandlers:function(){this._scriptLoadDelegate=Function.createDelegate(this,this._scriptLoadHandler);if(Sys.Browser.agent!==Sys.Browser.InternetExplorer){this._scriptElement.readyState="loaded";$addHandler(this._scriptElement,"load",this._scriptLoadDelegate)}else $addHandler(this._scriptElement,"readystatechange",this._scriptLoadDelegate);this._scriptErrorDelegate=Function.createDelegate(this,this._scriptErrorHandler);$addHandler(this._scriptElement,"error",this._scriptErrorDelegate)},_removeScriptElementHandlers:function(){if(this._scriptLoadDelegate){var a=this.get_scriptElement();if(Sys.Browser.agent!==Sys.Browser.InternetExplorer)$removeHandler(a,"load",this._scriptLoadDelegate);else $removeHandler(a,"readystatechange",this._scriptLoadDelegate);$removeHandler(a,"error",this._scriptErrorDelegate);this._scriptErrorDelegate=null;this._scriptLoadDelegate=null}},_scriptErrorHandler:function(){if(this._disposed)return;this._completedCallback(this.get_scriptElement(),false)},_scriptLoadHandler:function(){if(this._disposed)return;var a=this.get_scriptElement();if(a.readyState!=="loaded"&&a.readyState!=="complete")return;var b=this;window.setTimeout(function(){b._completedCallback(a,true)},0)}};Sys._ScriptLoaderTask.registerClass("Sys._ScriptLoaderTask",null,Sys.IDisposable);Sys.ApplicationLoadEventArgs=function(b,a){Sys.ApplicationLoadEventArgs.initializeBase(this);this._components=b;this._isPartialLoad=a};Sys.ApplicationLoadEventArgs.prototype={get_components:function(){return this._components},get_isPartialLoad:function(){return this._isPartialLoad}};Sys.ApplicationLoadEventArgs.registerClass("Sys.ApplicationLoadEventArgs",Sys.EventArgs);Sys._Application=function(){Sys._Application.initializeBase(this);this._disposableObjects=[];this._components={};this._createdComponents=[];this._secondPassComponents=[];this._unloadHandlerDelegate=Function.createDelegate(this,this._unloadHandler);this._loadHandlerDelegate=Function.createDelegate(this,this._loadHandler);Sys.UI.DomEvent.addHandler(window,"unload",this._unloadHandlerDelegate);Sys.UI.DomEvent.addHandler(window,"load",this._loadHandlerDelegate)};Sys._Application.prototype={_creatingComponents:false,_disposing:false,get_isCreatingComponents:function(){return this._creatingComponents},add_load:function(a){this.get_events().addHandler("load",a)},remove_load:function(a){this.get_events().removeHandler("load",a)},add_init:function(a){if(this._initialized)a(this,Sys.EventArgs.Empty);else this.get_events().addHandler("init",a)},remove_init:function(a){this.get_events().removeHandler("init",a)},add_unload:function(a){this.get_events().addHandler("unload",a)},remove_unload:function(a){this.get_events().removeHandler("unload",a)},addComponent:function(a){this._components[a.get_id()]=a},beginCreateComponents:function(){this._creatingComponents=true},dispose:function(){if(!this._disposing){this._disposing=true;if(window.pageUnload)window.pageUnload(this,Sys.EventArgs.Empty);var c=this.get_events().getHandler("unload");if(c)c(this,Sys.EventArgs.Empty);var b=Array.clone(this._disposableObjects);for(var a=0,e=b.length;a<e;a++)b[a].dispose();Array.clear(this._disposableObjects);Sys.UI.DomEvent.removeHandler(window,"unload",this._unloadHandlerDelegate);if(this._loadHandlerDelegate){Sys.UI.DomEvent.removeHandler(window,"load",this._loadHandlerDelegate);this._loadHandlerDelegate=null}var d=Sys._ScriptLoader.getInstance();if(d)d.dispose();Sys._Application.callBaseMethod(this,"dispose")}},endCreateComponents:function(){var b=this._secondPassComponents;for(var a=0,d=b.length;a<d;a++){var c=b[a].component;Sys$Component$_setReferences(c,b[a].references);c.endUpdate()}this._secondPassComponents=[];this._creatingComponents=false},findComponent:function(b,a){return a?Sys.IContainer.isInstanceOfType(a)?a.findComponent(b):a[b]||null:Sys.Application._components[b]||null},getComponents:function(){var a=[],b=this._components;for(var c in b)a[a.length]=b[c];return a},initialize:function(){if(!this._initialized&&!this._initializing){this._initializing=true;window.setTimeout(Function.createDelegate(this,this._doInitialize),0)}},notifyScriptLoaded:function(){var a=Sys._ScriptLoader.getInstance();if(a)a.notifyScriptLoaded()},registerDisposableObject:function(a){if(!this._disposing)this._disposableObjects[this._disposableObjects.length]=a},raiseLoad:function(){var b=this.get_events().getHandler("load"),a=new Sys.ApplicationLoadEventArgs(Array.clone(this._createdComponents),!this._initializing);if(b)b(this,a);if(window.pageLoad)window.pageLoad(this,a);this._createdComponents=[]},removeComponent:function(b){var a=b.get_id();if(a)delete this._components[a]},unregisterDisposableObject:function(a){if(!this._disposing)Array.remove(this._disposableObjects,a)},_addComponentToSecondPass:function(b,a){this._secondPassComponents[this._secondPassComponents.length]={component:b,references:a}},_doInitialize:function(){Sys._Application.callBaseMethod(this,"initialize");var a=this.get_events().getHandler("init");if(a){this.beginCreateComponents();a(this,Sys.EventArgs.Empty);this.endCreateComponents()}this.raiseLoad();this._initializing=false},_loadHandler:function(){if(this._loadHandlerDelegate){Sys.UI.DomEvent.removeHandler(window,"load",this._loadHandlerDelegate);this._loadHandlerDelegate=null}this.initialize()},_unloadHandler:function(){this.dispose()}};Sys._Application.registerClass("Sys._Application",Sys.Component,Sys.IContainer);Sys.Application=new Sys._Application;var $find=Sys.Application.findComponent;Type.registerNamespace("Sys.Net");Sys.Net.WebRequestExecutor=function(){this._webRequest=null;this._resultObject=null};Sys.Net.WebRequestExecutor.prototype={get_webRequest:function(){return this._webRequest},_set_webRequest:function(a){this._webRequest=a},get_started:function(){throw Error.notImplemented()},get_responseAvailable:function(){throw Error.notImplemented()},get_timedOut:function(){throw Error.notImplemented()},get_aborted:function(){throw Error.notImplemented()},get_responseData:function(){throw Error.notImplemented()},get_statusCode:function(){throw Error.notImplemented()},get_statusText:function(){throw Error.notImplemented()},get_xml:function(){throw Error.notImplemented()},get_object:function(){if(!this._resultObject)this._resultObject=Sys.Serialization.JavaScriptSerializer.deserialize(this.get_responseData());return this._resultObject},executeRequest:function(){throw Error.notImplemented()},abort:function(){throw Error.notImplemented()},getResponseHeader:function(){throw Error.notImplemented()},getAllResponseHeaders:function(){throw Error.notImplemented()}};Sys.Net.WebRequestExecutor.registerClass("Sys.Net.WebRequestExecutor");window.XMLDOM=function(d){if(!window.DOMParser){var c=["Msxml2.DOMDocument.3.0","Msxml2.DOMDocument"];for(var b=0;b<c.length;b++)try{var a=new ActiveXObject(c[b]);a.async=false;a.loadXML(d);a.setProperty("SelectionLanguage","XPath");return a}catch(f){}return null}else try{var e=new window.DOMParser;return e.parseFromString(d,"text/xml")}catch(f){return null}return null};Sys.Net.XMLHttpExecutor=function(){Sys.Net.XMLHttpExecutor.initializeBase(this);var a=this;this._xmlHttpRequest=null;this._webRequest=null;this._responseAvailable=false;this._timedOut=false;this._timer=null;this._aborted=false;this._started=false;this._onReadyStateChange=function(){if(a._xmlHttpRequest.readyState===4){a._clearTimer();a._responseAvailable=true;a._webRequest.completed(Sys.EventArgs.Empty);if(a._xmlHttpRequest!=null){a._xmlHttpRequest.onreadystatechange=Function.emptyMethod;a._xmlHttpRequest=null}}};this._clearTimer=function(){if(a._timer!=null){window.clearTimeout(a._timer);a._timer=null}};this._onTimeout=function(){if(!a._responseAvailable){a._clearTimer();a._timedOut=true;a._xmlHttpRequest.onreadystatechange=Function.emptyMethod;a._xmlHttpRequest.abort();a._webRequest.completed(Sys.EventArgs.Empty);a._xmlHttpRequest=null}}};Sys.Net.XMLHttpExecutor.prototype={get_timedOut:function(){return this._timedOut},get_started:function(){return this._started},get_responseAvailable:function(){return this._responseAvailable},get_aborted:function(){return this._aborted},executeRequest:function(){this._webRequest=this.get_webRequest();var c=this._webRequest.get_body(),a=this._webRequest.get_headers();this._xmlHttpRequest=new XMLHttpRequest;this._xmlHttpRequest.onreadystatechange=this._onReadyStateChange;var e=this._webRequest.get_httpVerb();this._xmlHttpRequest.open(e,this._webRequest.getResolvedUrl(),true);if(a)for(var b in a){var f=a[b];if(typeof f!=="function")this._xmlHttpRequest.setRequestHeader(b,f)}if(e.toLowerCase()==="post"){if(a===null||!a["Content-Type"])this._xmlHttpRequest.setRequestHeader("Content-Type","application/x-www-form-urlencoded");if(!c)c=""}var d=this._webRequest.get_timeout();if(d>0)this._timer=window.setTimeout(Function.createDelegate(this,this._onTimeout),d);this._xmlHttpRequest.send(c);this._started=true},getResponseHeader:function(b){var a;try{a=this._xmlHttpRequest.getResponseHeader(b)}catch(c){}if(!a)a="";return a},getAllResponseHeaders:function(){return this._xmlHttpRequest.getAllResponseHeaders()},get_responseData:function(){return this._xmlHttpRequest.responseText},get_statusCode:function(){return this._xmlHttpRequest.status},get_statusText:function(){return this._xmlHttpRequest.statusText},get_xml:function(){var a=this._xmlHttpRequest.responseXML;if(!a||!a.documentElement){a=new XMLDOM(this._xmlHttpRequest.responseText);if(!a||!a.documentElement)return null}else if(navigator.userAgent.indexOf("MSIE")!==-1)a.setProperty("SelectionLanguage","XPath");if(a.documentElement.namespaceURI==="http://www.mozilla.org/newlayout/xml/parsererror.xml"&&a.documentElement.tagName==="parsererror")return null;if(a.documentElement.firstChild&&a.documentElement.firstChild.tagName==="parsererror")return null;return a},abort:function(){if(this._aborted||this._responseAvailable||this._timedOut)return;this._aborted=true;this._clearTimer();if(this._xmlHttpRequest&&!this._responseAvailable){this._xmlHttpRequest.onreadystatechange=Function.emptyMethod;this._xmlHttpRequest.abort();this._xmlHttpRequest=null;var a=this._webRequest._get_eventHandlerList().getHandler("completed");if(a)a(this,Sys.EventArgs.Empty)}}};Sys.Net.XMLHttpExecutor.registerClass("Sys.Net.XMLHttpExecutor",Sys.Net.WebRequestExecutor);Sys.Net._WebRequestManager=function(){this._this=this;this._defaultTimeout=0;this._defaultExecutorType="Sys.Net.XMLHttpExecutor"};Sys.Net._WebRequestManager.prototype={add_invokingRequest:function(a){this._get_eventHandlerList().addHandler("invokingRequest",a)},remove_invokingRequest:function(a){this._get_eventHandlerList().removeHandler("invokingRequest",a)},add_completedRequest:function(a){this._get_eventHandlerList().addHandler("completedRequest",a)},remove_completedRequest:function(a){this._get_eventHandlerList().removeHandler("completedRequest",a)},_get_eventHandlerList:function(){if(!this._events)this._events=new Sys.EventHandlerList;return this._events},get_defaultTimeout:function(){return this._defaultTimeout},set_defaultTimeout:function(a){this._defaultTimeout=a},get_defaultExecutorType:function(){return this._defaultExecutorType},set_defaultExecutorType:function(a){this._defaultExecutorType=a},executeRequest:function(webRequest){var executor=webRequest.get_executor();if(!executor){var failed=false;try{var executorType=eval(this._defaultExecutorType);executor=new executorType}catch(a){failed=true}webRequest.set_executor(executor)}if(executor.get_aborted())return;var evArgs=new Sys.Net.NetworkRequestEventArgs(webRequest),handler=this._get_eventHandlerList().getHandler("invokingRequest");if(handler)handler(this,evArgs);if(!evArgs.get_cancel())executor.executeRequest()}};Sys.Net._WebRequestManager.registerClass("Sys.Net._WebRequestManager");Sys.Net.WebRequestManager=new Sys.Net._WebRequestManager;Sys.Net.NetworkRequestEventArgs=function(a){Sys.Net.NetworkRequestEventArgs.initializeBase(this);this._webRequest=a};Sys.Net.NetworkRequestEventArgs.prototype={get_webRequest:function(){return this._webRequest}};Sys.Net.NetworkRequestEventArgs.registerClass("Sys.Net.NetworkRequestEventArgs",Sys.CancelEventArgs);Sys.Net.WebRequest=function(){this._url="";this._headers={};this._body=null;this._userContext=null;this._httpVerb=null;this._executor=null;this._invokeCalled=false;this._timeout=0};Sys.Net.WebRequest.prototype={add_completed:function(a){this._get_eventHandlerList().addHandler("completed",a)},remove_completed:function(a){this._get_eventHandlerList().removeHandler("completed",a)},completed:function(b){var a=Sys.Net.WebRequestManager._get_eventHandlerList().getHandler("completedRequest");if(a)a(this._executor,b);a=this._get_eventHandlerList().getHandler("completed");if(a)a(this._executor,b)},_get_eventHandlerList:function(){if(!this._events)this._events=new Sys.EventHandlerList;return this._events},get_url:function(){return this._url},set_url:function(a){this._url=a},get_headers:function(){return this._headers},get_httpVerb:function(){if(this._httpVerb===null){if(this._body===null)return "GET";return "POST"}return this._httpVerb},set_httpVerb:function(a){this._httpVerb=a},get_body:function(){return this._body},set_body:function(a){this._body=a},get_userContext:function(){return this._userContext},set_userContext:function(a){this._userContext=a},get_executor:function(){return this._executor},set_executor:function(a){this._executor=a;this._executor._set_webRequest(this)},get_timeout:function(){if(this._timeout===0)return Sys.Net.WebRequestManager.get_defaultTimeout();return this._timeout},set_timeout:function(a){this._timeout=a},getResolvedUrl:function(){return Sys.Net.WebRequest._resolveUrl(this._url)},invoke:function(){Sys.Net.WebRequestManager.executeRequest(this);this._invokeCalled=true}};Sys.Net.WebRequest._resolveUrl=function(b,a){if(b&&b.indexOf("://")!==-1)return b;if(!a||a.length===0){var c=document.getElementsByTagName("base")[0];if(c&&c.href&&c.href.length>0)a=c.href;else a=document.URL}var d=a.indexOf("?");if(d!==-1)a=a.substr(0,d);a=a.substr(0,a.lastIndexOf("/")+1);if(!b||b.length===0)return a;if(b.charAt(0)==="/"){var e=a.indexOf("://"),g=a.indexOf("/",e+3);return a.substr(0,g)+b}else{var f=a.lastIndexOf("/");return a.substr(0,f+1)+b}};Sys.Net.WebRequest._createQueryString=function(d,b){if(!b)b=encodeURIComponent;var a=new Sys.StringBuilder,f=0;for(var c in d){var e=d[c];if(typeof e==="function")continue;var g=Sys.Serialization.JavaScriptSerializer.serialize(e);if(f!==0)a.append("&");a.append(c);a.append("=");a.append(b(g));f++}return a.toString()};Sys.Net.WebRequest._createUrl=function(a,b){if(!b)return a;var d=Sys.Net.WebRequest._createQueryString(b);if(d.length>0){var c="?";if(a&&a.indexOf("?")!==-1)c="&";return a+c+d}else return a};Sys.Net.WebRequest.registerClass("Sys.Net.WebRequest");Sys.Net.WebServiceProxy=function(){};Sys.Net.WebServiceProxy.prototype={set_timeout:function(a){this._timeout=a},get_timeout:function(){return this._timeout},set_defaultUserContext:function(a){this._userContext=a},get_defaultUserContext:function(){return this._userContext},set_defaultSucceededCallback:function(a){this._succeeded=a},get_defaultSucceededCallback:function(){return this._succeeded},set_defaultFailedCallback:function(a){this._failed=a},get_defaultFailedCallback:function(){return this._failed},set_path:function(a){this._path=a},get_path:function(){return this._path},_invoke:function(d,e,g,f,c,b,a){if(c===null||typeof c==="undefined")c=this.get_defaultSucceededCallback();if(b===null||typeof b==="undefined")b=this.get_defaultFailedCallback();if(a===null||typeof a==="undefined")a=this.get_defaultUserContext();return Sys.Net.WebServiceProxy.invoke(d,e,g,f,c,b,a,this.get_timeout())}};Sys.Net.WebServiceProxy.registerClass("Sys.Net.WebServiceProxy");Sys.Net.WebServiceProxy.invoke=function(k,a,j,d,i,c,f,h){var b=new Sys.Net.WebRequest;b.get_headers()["Content-Type"]="application/json; charset=utf-8";if(!d)d={};var g=d;if(!j||!g)g={};b.set_url(Sys.Net.WebRequest._createUrl(k+"/"+a,g));var e=null;if(!j){e=Sys.Serialization.JavaScriptSerializer.serialize(d);if(e==="{}")e=""}b.set_body(e);b.add_completed(l);if(h&&h>0)b.set_timeout(h);b.invoke();function l(d){if(d.get_responseAvailable()){var e=d.get_statusCode(),b=null;try{var j=d.getResponseHeader("Content-Type");if(j.startsWith("application/json"))b=d.get_object();else if(j.startsWith("text/xml"))b=d.get_xml();else b=d.get_responseData()}catch(m){}var k=d.getResponseHeader("jsonerror"),g=k==="true";if(g)b=new Sys.Net.WebServiceError(false,b.Message,b.StackTrace,b.ExceptionType);if(e<200||e>=300||g){if(c){if(!b||!g)b=new Sys.Net.WebServiceError(false,String.format(Sys.Res.webServiceFailedNoMsg,a),"","");b._statusCode=e;c(b,f,a)}}else if(i)i(b,f,a)}else{var h;if(d.get_timedOut())h=String.format(Sys.Res.webServiceTimedOut,a);else h=String.format(Sys.Res.webServiceFailedNoMsg,a);if(c)c(new Sys.Net.WebServiceError(d.get_timedOut(),h,"",""),f,a)}}return b};Sys.Net.WebServiceProxy._generateTypedConstructor=function(a){return function(b){if(b)for(var c in b)this[c]=b[c];this.__type=a}};Sys.Net.WebServiceError=function(c,d,b,a){this._timedOut=c;this._message=d;this._stackTrace=b;this._exceptionType=a;this._statusCode=-1};Sys.Net.WebServiceError.prototype={get_timedOut:function(){return this._timedOut},get_statusCode:function(){return this._statusCode},get_message:function(){return this._message},get_stackTrace:function(){return this._stackTrace},get_exceptionType:function(){return this._exceptionType}};Sys.Net.WebServiceError.registerClass("Sys.Net.WebServiceError");Type.registerNamespace("Sys.Services");Sys.Services._ProfileService=function(){Sys.Services._ProfileService.initializeBase(this);this.properties={}};Sys.Services._ProfileService.DefaultWebServicePath="";Sys.Services._ProfileService.prototype={_defaultFailedCallback:null,_defaultLoadCompletedCallback:null,_defaultSaveCompletedCallback:null,_path:"",_timeout:0,get_defaultFailedCallback:function(){return this._defaultFailedCallback},set_defaultFailedCallback:function(a){this._defaultFailedCallback=a},get_defaultLoadCompletedCallback:function(){return this._defaultLoadCompletedCallback},set_defaultLoadCompletedCallback:function(a){this._defaultLoadCompletedCallback=a},get_defaultSaveCompletedCallback:function(){return this._defaultSaveCompletedCallback},set_defaultSaveCompletedCallback:function(a){this._defaultSaveCompletedCallback=a},get_path:function(){return this._path},set_path:function(a){if(!a||!a.length)a="";this._path=a},get_timeout:function(){return this._timeout},set_timeout:function(a){this._timeout=a},load:function(b,d,e,f){var c={},a;if(!b)a="GetAllPropertiesForCurrentUser";else{a="GetPropertiesForCurrentUser";c={properties:this._clonePropertyNames(b)}}this._invoke(this._get_path(),a,false,c,Function.createDelegate(this,this._onLoadComplete),Function.createDelegate(this,this._onLoadFailed),[d,e,f])},save:function(d,a,c,e){var b=this._flattenProperties(d,this.properties);this._invoke(this._get_path(),"SetPropertiesForCurrentUser",false,{values:b},Function.createDelegate(this,this._onSaveComplete),Function.createDelegate(this,this._onSaveFailed),[a,c,e])},_clonePropertyNames:function(e){var c=[],d={};for(var b=0;b<e.length;b++){var a=e[b];if(!d[a]){Array.add(c,a);d[a]=true}}return c},_flattenProperties:function(a,h,i){var b={},e,d;if(a&&a.length===0)return b;for(var c in h){e=h[c];d=i?i+"."+c:c;if(Sys.Services.ProfileGroup.isInstanceOfType(e)){var g=this._flattenProperties(a,e,d);for(var f in g){var j=g[f];b[f]=j}}else if(!a||Array.indexOf(a,d)!==-1)b[d]=e}return b},_get_path:function(){var a=this.get_path();if(!a.length)a=Sys.Services._ProfileService.DefaultWebServicePath;if(!a||!a.length)throw Error.invalidOperation(Sys.Res.servicePathNotSet);return a},_onLoadComplete:function(a,f,g){if(typeof a!=="object")throw Error.invalidOperation(String.format(Sys.Res.webServiceInvalidReturnType,g,"Object"));var d=this._unflattenProperties(a);for(var b in d)this.properties[b]=d[b];var c=f[0],e=c?c:this._defaultLoadCompletedCallback;if(e)e(a.length,f[2],"Sys.Services.ProfileService.load")},_onLoadFailed:function(d,c){var a=c[1],b=a?a:this._defaultFailedCallback;if(b)b(d,c[2],"Sys.Services.ProfileService.load")},_onSaveComplete:function(d,c,f){if(typeof d!=="number")throw Error.invalidOperation(String.format(Sys.Res.webServiceInvalidReturnType,f,"Number"));var a=c[0],e=c[2],b=a?a:this._defaultSaveCompletedCallback;if(b)b(d,e,"Sys.Services.ProfileService.save")},_onSaveFailed:function(e,c){var a=c[1],d=c[2],b=a?a:this._defaultFailedCallback;if(b)b(e,d,"Sys.Services.ProfileService.save")},_unflattenProperties:function(e){var c={},d,f,h=0;for(var a in e){h++;f=e[a];d=a.indexOf(".");if(d!==-1){var g=a.substr(0,d);a=a.substr(d+1);var b=c[g];if(!b||!Sys.Services.ProfileGroup.isInstanceOfType(b)){b=new Sys.Services.ProfileGroup;c[g]=b}b[a]=f}else c[a]=f}e.length=h;return c}};Sys.Services._ProfileService.registerClass("Sys.Services._ProfileService",Sys.Net.WebServiceProxy);Sys.Services.ProfileService=new Sys.Services._ProfileService;Sys.Services.ProfileGroup=function(a){if(a)for(var b in a)this[b]=a[b]};Sys.Services.ProfileGroup.registerClass("Sys.Services.ProfileGroup");Sys.Services._AuthenticationService=function(){Sys.Services._AuthenticationService.initializeBase(this)};Sys.Services._AuthenticationService.DefaultWebServicePath="";Sys.Services._AuthenticationService.prototype={_defaultFailedCallback:null,_defaultLoginCompletedCallback:null,_defaultLogoutCompletedCallback:null,_path:"",_timeout:0,_authenticated:false,get_defaultFailedCallback:function(){return this._defaultFailedCallback},set_defaultFailedCallback:function(a){this._defaultFailedCallback=a},get_defaultLoginCompletedCallback:function(){return this._defaultLoginCompletedCallback},set_defaultLoginCompletedCallback:function(a){this._defaultLoginCompletedCallback=a},get_defaultLogoutCompletedCallback:function(){return this._defaultLogoutCompletedCallback},set_defaultLogoutCompletedCallback:function(a){this._defaultLogoutCompletedCallback=a},get_isLoggedIn:function(){return this._authenticated},get_path:function(){return this._path},set_path:function(a){if(!a||!a.length)a="";this._path=a},get_timeout:function(){return this._timeout},set_timeout:function(a){this._timeout=a},login:function(c,b,a,h,f,d,e,g){this._invoke(this._get_path(),"Login",false,{userName:c,password:b,createPersistentCookie:a},Function.createDelegate(this,this._onLoginComplete),Function.createDelegate(this,this._onLoginFailed),[c,b,a,f,d,e,g])},logout:function(c,a,b,d){this._invoke(this._get_path(),"Logout",false,{},Function.createDelegate(this,this._onLogoutComplete),Function.createDelegate(this,this._onLogoutFailed),[c,a,b,d])},_get_path:function(){var a=this.get_path();if(!a.length)a=Sys.Services._AuthenticationService.DefaultWebServicePath;if(!a||!a.length)throw Error.invalidOperation(Sys.Res.servicePathNotSet);return a},_onLoginComplete:function(f,c,g){if(typeof f!=="boolean")throw Error.invalidOperation(String.format(Sys.Res.webServiceInvalidReturnType,g,"Boolean"));var b=c[3],d=c[4],e=c[6],a=d?d:this._defaultLoginCompletedCallback;if(f){this._authenticated=true;if(a)a(true,e,"Sys.Services.AuthenticationService.login");if(typeof b!=="undefined"&&b!==null)window.location.href=b}else if(a)a(false,e,"Sys.Services.AuthenticationService.login")},_onLoginFailed:function(d,c){var a=c[5],b=a?a:this._defaultFailedCallback;if(b)b(d,c[6],"Sys.Services.AuthenticationService.login")},_onLogoutComplete:function(g,a,f){if(g!==null)throw Error.invalidOperation(String.format(Sys.Res.webServiceInvalidReturnType,f,"null"));var c=a[0],b=a[1],e=a[3],d=b?b:this._defaultLogoutCompletedCallback;this._authenticated=false;if(d)d(null,e,"Sys.Services.AuthenticationService.logout");if(!c)window.location.reload();else window.location.href=c},_onLogoutFailed:function(d,c){var a=c[2],b=a?a:this._defaultFailedCallback;if(b)b(d,c[3],"Sys.Services.AuthenticationService.logout")},_setAuthenticated:function(a){this._authenticated=a}};Sys.Services._AuthenticationService.registerClass("Sys.Services._AuthenticationService",Sys.Net.WebServiceProxy);Sys.Services.AuthenticationService=new Sys.Services._AuthenticationService;Type.registerNamespace("Sys.Serialization");Sys.Serialization.JavaScriptSerializer=function(){};Sys.Serialization.JavaScriptSerializer.registerClass("Sys.Serialization.JavaScriptSerializer");Sys.Serialization.JavaScriptSerializer._stringRegEx=new RegExp('["\b\f\n\r\t\\\\\x00-\x1F]',"i");Sys.Serialization.JavaScriptSerializer._serializeWithBuilder=function(b,a,h){var c;switch(typeof b){case "object":if(b)if(Array.isInstanceOfType(b)){a.append("[");for(c=0;c<b.length;++c){if(c>0)a.append(",");Sys.Serialization.JavaScriptSerializer._serializeWithBuilder(b[c],a)}a.append("]")}else{if(Date.isInstanceOfType(b)){a.append('"\\/Date(');a.append(b.getTime());a.append(')\\/"');break}var e=[],i=0;for(var g in b){if(g.startsWith("$"))continue;e[i++]=g}if(h)e.sort();a.append("{");var j=false;for(c=0;c<i;c++){var f=b[e[c]];if(typeof f!=="undefined"&&typeof f!=="function"){if(j)a.append(",");else j=true;Sys.Serialization.JavaScriptSerializer._serializeWithBuilder(e[c],a,h);a.append(":");Sys.Serialization.JavaScriptSerializer._serializeWithBuilder(f,a,h)}}a.append("}")}else a.append("null");break;case "number":if(isFinite(b))a.append(String(b));else throw Error.invalidOperation(Sys.Res.cannotSerializeNonFiniteNumbers);break;case "string":a.append('"');if(Sys.Browser.agent===Sys.Browser.Safari||Sys.Serialization.JavaScriptSerializer._stringRegEx.test(b)){var k=b.length;for(c=0;c<k;++c){var d=b.charAt(c);if(d>=" "){if(d==="\\"||d==='"')a.append("\\");a.append(d)}else switch(d){case "\b":a.append("\\b");break;case "\f":a.append("\\f");break;case "\n":a.append("\\n");break;case "\r":a.append("\\r");break;case "\t":a.append("\\t");break;default:a.append("\\u00");if(d.charCodeAt()<16)a.append("0");a.append(d.charCodeAt().toString(16))}}}else a.append(b);a.append('"');break;case "boolean":a.append(b.toString());break;default:a.append("null");break}};Sys.Serialization.JavaScriptSerializer.serialize=function(b){var a=new Sys.StringBuilder;Sys.Serialization.JavaScriptSerializer._serializeWithBuilder(b,a,false);return a.toString()};Sys.Serialization.JavaScriptSerializer.deserialize=function(data){if(data.length===0)throw Error.argument("data",Sys.Res.cannotDeserializeEmptyString);try{var exp=data.replace(new RegExp('(^|[^\\\\])\\"\\\\/Date\\((-?[0-9]+)\\)\\\\/\\"',"g"),"$1new Date($2)");return eval("("+exp+")")}catch(a){throw Error.argument("data",Sys.Res.cannotDeserializeInvalidJson)}};Sys.CultureInfo=function(c,b,a){this.name=c;this.numberFormat=b;this.dateTimeFormat=a};Sys.CultureInfo.prototype={_getDateTimeFormats:function(){if(!this._dateTimeFormats){var a=this.dateTimeFormat;this._dateTimeFormats=[a.MonthDayPattern,a.YearMonthPattern,a.ShortDatePattern,a.ShortTimePattern,a.LongDatePattern,a.LongTimePattern,a.FullDateTimePattern,a.RFC1123Pattern,a.SortableDateTimePattern,a.UniversalSortableDateTimePattern]}return this._dateTimeFormats},_getMonthIndex:function(a){if(!this._upperMonths)this._upperMonths=this._toUpperArray(this.dateTimeFormat.MonthNames);return Array.indexOf(this._upperMonths,this._toUpper(a))},_getAbbrMonthIndex:function(a){if(!this._upperAbbrMonths)this._upperAbbrMonths=this._toUpperArray(this.dateTimeFormat.AbbreviatedMonthNames);return Array.indexOf(this._upperMonths,this._toUpper(a))},_getDayIndex:function(a){if(!this._upperDays)this._upperDays=this._toUpperArray(this.dateTimeFormat.DayNames);return Array.indexOf(this._upperDays,this._toUpper(a))},_getAbbrDayIndex:function(a){if(!this._upperAbbrDays)this._upperAbbrDays=this._toUpperArray(this.dateTimeFormat.AbbreviatedDayNames);return Array.indexOf(this._upperAbbrDays,this._toUpper(a))},_toUpperArray:function(c){var b=[];for(var a=0,d=c.length;a<d;a++)b[a]=this._toUpper(c[a]);return b},_toUpper:function(a){return a.split("\u00A0").join(" ").toUpperCase()}};Sys.CultureInfo._parse=function(b){var a=Sys.Serialization.JavaScriptSerializer.deserialize(b);return new Sys.CultureInfo(a.name,a.numberFormat,a.dateTimeFormat)};Sys.CultureInfo.registerClass("Sys.CultureInfo");Sys.CultureInfo.InvariantCulture=Sys.CultureInfo._parse('{"name":"","numberFormat":{"CurrencyDecimalDigits":2,"CurrencyDecimalSeparator":".","IsReadOnly":true,"CurrencyGroupSizes":[3],"NumberGroupSizes":[3],"PercentGroupSizes":[3],"CurrencyGroupSeparator":",","CurrencySymbol":"\u00A4","NaNSymbol":"NaN","CurrencyNegativePattern":0,"NumberNegativePattern":1,"PercentPositivePattern":0,"PercentNegativePattern":0,"NegativeInfinitySymbol":"-Infinity","NegativeSign":"-","NumberDecimalDigits":2,"NumberDecimalSeparator":".","NumberGroupSeparator":",","CurrencyPositivePattern":0,"PositiveInfinitySymbol":"Infinity","PositiveSign":"+","PercentDecimalDigits":2,"PercentDecimalSeparator":".","PercentGroupSeparator":",","PercentSymbol":"%","PerMilleSymbol":"\u2030","NativeDigits":["0","1","2","3","4","5","6","7","8","9"],"DigitSubstitution":1},"dateTimeFormat":{"AMDesignator":"AM","Calendar":{"MinSupportedDateTime":"@-62135568000000@","MaxSupportedDateTime":"@253402300799999@","AlgorithmType":1,"CalendarType":1,"Eras":[1],"TwoDigitYearMax":2029,"IsReadOnly":true},"DateSeparator":"/","FirstDayOfWeek":0,"CalendarWeekRule":0,"FullDateTimePattern":"dddd, dd MMMM yyyy HH:mm:ss","LongDatePattern":"dddd, dd MMMM yyyy","LongTimePattern":"HH:mm:ss","MonthDayPattern":"MMMM dd","PMDesignator":"PM","RFC1123Pattern":"ddd, dd MMM yyyy HH\':\'mm\':\'ss \'GMT\'","ShortDatePattern":"MM/dd/yyyy","ShortTimePattern":"HH:mm","SortableDateTimePattern":"yyyy\'-\'MM\'-\'dd\'T\'HH\':\'mm\':\'ss","TimeSeparator":":","UniversalSortableDateTimePattern":"yyyy\'-\'MM\'-\'dd HH\':\'mm\':\'ss\'Z\'","YearMonthPattern":"yyyy MMMM","AbbreviatedDayNames":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"ShortestDayNames":["Su","Mo","Tu","We","Th","Fr","Sa"],"DayNames":["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],"AbbreviatedMonthNames":["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec",""],"MonthNames":["January","February","March","April","May","June","July","August","September","October","November","December",""],"IsReadOnly":true,"NativeCalendarName":"Gregorian Calendar","AbbreviatedMonthGenitiveNames":["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec",""],"MonthGenitiveNames":["January","February","March","April","May","June","July","August","September","October","November","December",""]}}');if(typeof __cultureInfo==="undefined")var __cultureInfo='{"name":"en-US","numberFormat":{"CurrencyDecimalDigits":2,"CurrencyDecimalSeparator":".","IsReadOnly":false,"CurrencyGroupSizes":[3],"NumberGroupSizes":[3],"PercentGroupSizes":[3],"CurrencyGroupSeparator":",","CurrencySymbol":"$","NaNSymbol":"NaN","CurrencyNegativePattern":0,"NumberNegativePattern":1,"PercentPositivePattern":0,"PercentNegativePattern":0,"NegativeInfinitySymbol":"-Infinity","NegativeSign":"-","NumberDecimalDigits":2,"NumberDecimalSeparator":".","NumberGroupSeparator":",","CurrencyPositivePattern":0,"PositiveInfinitySymbol":"Infinity","PositiveSign":"+","PercentDecimalDigits":2,"PercentDecimalSeparator":".","PercentGroupSeparator":",","PercentSymbol":"%","PerMilleSymbol":"\u2030","NativeDigits":["0","1","2","3","4","5","6","7","8","9"],"DigitSubstitution":1},"dateTimeFormat":{"AMDesignator":"AM","Calendar":{"MinSupportedDateTime":"@-62135568000000@","MaxSupportedDateTime":"@253402300799999@","AlgorithmType":1,"CalendarType":1,"Eras":[1],"TwoDigitYearMax":2029,"IsReadOnly":false},"DateSeparator":"/","FirstDayOfWeek":0,"CalendarWeekRule":0,"FullDateTimePattern":"dddd, MMMM dd, yyyy h:mm:ss tt","LongDatePattern":"dddd, MMMM dd, yyyy","LongTimePattern":"h:mm:ss tt","MonthDayPattern":"MMMM dd","PMDesignator":"PM","RFC1123Pattern":"ddd, dd MMM yyyy HH\':\'mm\':\'ss \'GMT\'","ShortDatePattern":"M/d/yyyy","ShortTimePattern":"h:mm tt","SortableDateTimePattern":"yyyy\'-\'MM\'-\'dd\'T\'HH\':\'mm\':\'ss","TimeSeparator":":","UniversalSortableDateTimePattern":"yyyy\'-\'MM\'-\'dd HH\':\'mm\':\'ss\'Z\'","YearMonthPattern":"MMMM, yyyy","AbbreviatedDayNames":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"ShortestDayNames":["Su","Mo","Tu","We","Th","Fr","Sa"],"DayNames":["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],"AbbreviatedMonthNames":["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec",""],"MonthNames":["January","February","March","April","May","June","July","August","September","October","November","December",""],"IsReadOnly":false,"NativeCalendarName":"Gregorian Calendar","AbbreviatedMonthGenitiveNames":["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec",""],"MonthGenitiveNames":["January","February","March","April","May","June","July","August","September","October","November","December",""]}}';Sys.CultureInfo.CurrentCulture=Sys.CultureInfo._parse(__cultureInfo);delete __cultureInfo;Sys.UI.Point=function(a,b){this.x=a;this.y=b};Sys.UI.Point.registerClass("Sys.UI.Point");Sys.UI.Bounds=function(c,d,b,a){this.x=c;this.y=d;this.height=a;this.width=b};Sys.UI.Bounds.registerClass("Sys.UI.Bounds");Sys.UI.DomElement=function(){};Sys.UI.DomElement.registerClass("Sys.UI.DomElement");Sys.UI.DomElement.addCssClass=function(a,b){if(!Sys.UI.DomElement.containsCssClass(a,b))if(a.className==="")a.className=b;else a.className+=" "+b};Sys.UI.DomElement.containsCssClass=function(b,a){return Array.contains(b.className.split(" "),a)};Sys.UI.DomElement.getBounds=function(a){var b=Sys.UI.DomElement.getLocation(a);return new Sys.UI.Bounds(b.x,b.y,a.offsetWidth||0,a.offsetHeight||0)};var $get=Sys.UI.DomElement.getElementById=function(f,e){if(!e)return document.getElementById(f);if(e.getElementById)return e.getElementById(f);var c=[],d=e.childNodes;for(var b=0;b<d.length;b++){var a=d[b];if(a.nodeType==1)c[c.length]=a}while(c.length){a=c.shift();if(a.id==f)return a;d=a.childNodes;for(b=0;b<d.length;b++){a=d[b];if(a.nodeType==1)c[c.length]=a}}return null};switch(Sys.Browser.agent){case Sys.Browser.InternetExplorer:Sys.UI.DomElement.getLocation=function Sys$UI$DomElement$getLocation(a){if(a.self||a.nodeType===9)return new Sys.UI.Point(0,0);var d=a.getClientRects();if(!d||!d.length)return new Sys.UI.Point(0,0);var e=a.ownerDocument.parentWindow,g=e.screenLeft-top.screenLeft-top.document.documentElement.scrollLeft+2,h=e.screenTop-top.screenTop-top.document.documentElement.scrollTop+2,c=e.frameElement||null;if(c){var b=c.currentStyle;g+=(c.frameBorder||1)*2+(parseInt(b.paddingLeft)||0)+(parseInt(b.borderLeftWidth)||0)-a.ownerDocument.documentElement.scrollLeft;h+=(c.frameBorder||1)*2+(parseInt(b.paddingTop)||0)+(parseInt(b.borderTopWidth)||0)-a.ownerDocument.documentElement.scrollTop}var f=d[0];return new Sys.UI.Point(f.left-g,f.top-h)};break;case Sys.Browser.Safari:Sys.UI.DomElement.getLocation=function(c){if(c.window&&c.window===c||c.nodeType===9)return new Sys.UI.Point(0,0);var g=0,h=0,j=null,f=null,b;for(var a=c;a;j=a,(f=b,a=a.offsetParent)){b=Sys.UI.DomElement._getCurrentStyle(a);var e=a.tagName;if((a.offsetLeft||a.offsetTop)&&(e!=="BODY"||(!f||f.position!=="absolute"))){g+=a.offsetLeft;h+=a.offsetTop}}b=Sys.UI.DomElement._getCurrentStyle(c);var d=b?b.position:null,k=d&&d!=="static";if(!d||d!=="absolute")for(var a=c.parentNode;a;a=a.parentNode){e=a.tagName;if(e!=="BODY"&&e!=="HTML"&&(a.scrollLeft||a.scrollTop)){g-=a.scrollLeft||0;h-=a.scrollTop||0}b=Sys.UI.DomElement._getCurrentStyle(a);var i=b?b.position:null;if(i&&i==="absolute")break}return new Sys.UI.Point(g,h)};break;case Sys.Browser.Opera:Sys.UI.DomElement.getLocation=function(b){if(b.window&&b.window===b||b.nodeType===9)return new Sys.UI.Point(0,0);var d=0,e=0,i=null;for(var a=b;a;i=a,a=a.offsetParent){var f=a.tagName;d+=a.offsetLeft||0;e+=a.offsetTop||0}var g=b.style.position,c=g&&g!=="static";for(var a=b.parentNode;a;a=a.parentNode){f=a.tagName;if(f!=="BODY"&&f!=="HTML"&&(a.scrollLeft||a.scrollTop)&&(c&&(a.style.overflow==="scroll"||a.style.overflow==="auto"))){d-=a.scrollLeft||0;e-=a.scrollTop||0}var h=a&&a.style?a.style.position:null;c=c||h&&h!=="static"}return new Sys.UI.Point(d,e)};break;default:Sys.UI.DomElement.getLocation=function(d){if(d.window&&d.window===d||d.nodeType===9)return new Sys.UI.Point(0,0);var e=0,f=0,i=null,h=null,b=null;for(var a=d;a;i=a,(h=b,a=a.offsetParent)){var c=a.tagName;b=Sys.UI.DomElement._getCurrentStyle(a);if((a.offsetLeft||a.offsetTop)&&!(c==="BODY"&&(!h||h.position!=="absolute"))){e+=a.offsetLeft;f+=a.offsetTop}if(i!==null&&b){if(c!=="TABLE"&&c!=="TD"&&c!=="HTML"){e+=parseInt(b.borderLeftWidth)||0;f+=parseInt(b.borderTopWidth)||0}if(c==="TABLE"&&(b.position==="relative"||b.position==="absolute")){e+=parseInt(b.marginLeft)||0;f+=parseInt(b.marginTop)||0}}}b=Sys.UI.DomElement._getCurrentStyle(d);var g=b?b.position:null,j=g&&g!=="static";if(!g||g!=="absolute")for(var a=d.parentNode;a;a=a.parentNode){c=a.tagName;if(c!=="BODY"&&c!=="HTML"&&(a.scrollLeft||a.scrollTop)){e-=a.scrollLeft||0;f-=a.scrollTop||0;b=Sys.UI.DomElement._getCurrentStyle(a);e+=parseInt(b.borderLeftWidth)||0;f+=parseInt(b.borderTopWidth)||0}}return new Sys.UI.Point(e,f)};break}Sys.UI.DomElement.removeCssClass=function(d,c){var a=" "+d.className+" ",b=a.indexOf(" "+c+" ");if(b>=0)d.className=(a.substr(0,b)+" "+a.substring(b+c.length+1,a.length)).trim()};Sys.UI.DomElement.setLocation=function(b,c,d){var a=b.style;a.position="absolute";a.left=c+"px";a.top=d+"px"};Sys.UI.DomElement.toggleCssClass=function(b,a){if(Sys.UI.DomElement.containsCssClass(b,a))Sys.UI.DomElement.removeCssClass(b,a);else Sys.UI.DomElement.addCssClass(b,a)};Sys.UI.DomElement._getCurrentStyle=function(a){var b=(a.ownerDocument?a.ownerDocument:a.documentElement).defaultView;return b&&a!==b&&b.getComputedStyle?b.getComputedStyle(a,null):a.style};Sys.UI.Behavior=function(b){Sys.UI.Behavior.initializeBase(this);this._element=b;var a=b._behaviors;if(!a)b._behaviors=[this];else a[a.length]=this};Sys.UI.Behavior.prototype={_name:null,get_element:function(){return this._element},get_id:function(){var a=Sys.UI.Behavior.callBaseMethod(this,"get_id");if(a)return a;if(!this._element||!this._element.id)return "";return this._element.id+"$"+this.get_name()},get_name:function(){if(this._name)return this._name;var a=Object.getTypeName(this),b=a.lastIndexOf(".");if(b!=-1)a=a.substr(b+1);if(!this.get_isInitialized())this._name=a;return a},set_name:function(a){this._name=a},initialize:function(){Sys.UI.Behavior.callBaseMethod(this,"initialize");var a=this.get_name();if(a)this._element[a]=this},dispose:function(){Sys.UI.Behavior.callBaseMethod(this,"dispose");if(this._element){var a=this.get_name();if(a)this._element[a]=null;Array.remove(this._element._behaviors,this);delete this._element}}};Sys.UI.Behavior.registerClass("Sys.UI.Behavior",Sys.Component);Sys.UI.Behavior.getBehaviorByName=function(b,c){var a=b[c];return a&&Sys.UI.Behavior.isInstanceOfType(a)?a:null};Sys.UI.Behavior.getBehaviors=function(a){if(!a._behaviors)return [];return Array.clone(a._behaviors)};Sys.UI.Behavior.getBehaviorsByType=function(d,e){var a=d._behaviors,c=[];if(a)for(var b=0,f=a.length;b<f;b++)if(e.isInstanceOfType(a[b]))c[c.length]=a[b];return c};Sys.UI.VisibilityMode=function(){throw Error.notImplemented()};Sys.UI.VisibilityMode.prototype={hide:0,collapse:1};Sys.UI.VisibilityMode.registerEnum("Sys.UI.VisibilityMode");Sys.UI.Control=function(a){Sys.UI.Control.initializeBase(this);this._element=a;a.control=this;this._oldDisplayMode=this._element.style.display;if(!this._oldDisplayMode||this._oldDisplayMode=="none")this._oldDisplayMode=""};Sys.UI.Control.prototype={_parent:null,_visibilityMode:Sys.UI.VisibilityMode.hide,get_element:function(){return this._element},get_id:function(){if(!this._element)return "";return this._element.id},set_id:function(){throw Error.invalidOperation(Sys.Res.cantSetId)},get_parent:function(){if(this._parent)return this._parent;else{var a=this._element.parentNode;while(a){if(a.control)return a.control;a=a.parentNode}return null}},set_parent:function(a){this._parent=a},get_visibilityMode:function(){return this._visibilityMode},set_visibilityMode:function(a){if(this._visibilityMode!==a){this._visibilityMode=a;if(this.get_visible()===false)if(this._visibilityMode===Sys.UI.VisibilityMode.hide)this._element.style.display=this._oldDisplayMode;else this._element.style.display="none"}this._visibilityMode=a},get_visible:function(){return this._element.style.visibility!="hidden"},set_visible:function(a){if(a!=this.get_visible()){this._element.style.visibility=a?"visible":"hidden";if(a||this._visibilityMode===Sys.UI.VisibilityMode.hide)this._element.style.display=this._oldDisplayMode;else this._element.style.display="none"}},addCssClass:function(a){Sys.UI.DomElement.addCssClass(this._element,a)},dispose:function(){Sys.UI.Control.callBaseMethod(this,"dispose");if(this._element){this._element.control=undefined;delete this._element}},initialize:function(){Sys.UI.Control.callBaseMethod(this,"initialize");var a=this._element},onBubbleEvent:function(){return false},raiseBubbleEvent:function(b,c){var a=this.get_parent();while(a){if(a.onBubbleEvent(b,c))return;a=a.get_parent()}},removeCssClass:function(a){Sys.UI.DomElement.removeCssClass(this._element,a)},toggleCssClass:function(a){Sys.UI.DomElement.toggleCssClass(this._element,a)}};Sys.UI.Control.registerClass("Sys.UI.Control",Sys.Component)
Type.registerNamespace('Sys');
Sys.Res={
"argumentInteger":"Value must be an integer.",
"scriptLoadMultipleCallbacks":"The script \u0027{0}\u0027 contains multiple calls to Sys.Application.notifyScriptLoaded(). Only one is allowed.",
"invokeCalledTwice":"Cannot call invoke more than once.",
"webServiceFailed":"The server method \u0027{0}\u0027 failed with the following error: {1}",
"argumentType":"Object cannot be converted to the required type.",
"argumentNull":"Value cannot be null.",
"controlCantSetId":"The id property can\u0027t be set on a control.",
"formatBadFormatSpecifier":"Format specifier was invalid.",
"webServiceFailedNoMsg":"The server method \u0027{0}\u0027 failed.",
"argumentDomElement":"Value must be a DOM element.",
"invalidExecutorType":"Could not create a valid Sys.Net.WebRequestExecutor from: {0}.",
"cannotCallBeforeResponse":"Cannot call {0} when responseAvailable is false.",
"actualValue":"Actual value was {0}.",
"enumInvalidValue":"\u0027{0}\u0027 is not a valid value for enum {1}.",
"scriptLoadFailed":"The script \u0027{0}\u0027 could not be loaded.",
"parameterCount":"Parameter count mismatch.",
"cannotDeserializeEmptyString":"Cannot deserialize empty string.",
"formatInvalidString":"Input string was not in a correct format.",
"invalidTimeout":"Value must be greater than or equal to zero.",
"cannotAbortBeforeStart":"Cannot abort when executor has not started.",
"argument":"Value does not fall within the expected range.",
"cannotDeserializeInvalidJson":"Cannot deserialize. The data does not correspond to valid JSON.",
"invalidHttpVerb":"httpVerb cannot be set to an empty or null string.",
"nullWebRequest":"Cannot call executeRequest with a null webRequest.",
"eventHandlerInvalid":"Handler was not added through the Sys.UI.DomEvent.addHandler method.",
"cannotSerializeNonFiniteNumbers":"Cannot serialize non finite numbers.",
"argumentUndefined":"Value cannot be undefined.",
"webServiceInvalidReturnType":"The server method \u0027{0}\u0027 returned an invalid type. Expected type: {1}",
"servicePathNotSet":"The path to the web service has not been set.",
"argumentTypeWithTypes":"Object of type \u0027{0}\u0027 cannot be converted to type \u0027{1}\u0027.",
"cannotCallOnceStarted":"Cannot call {0} once started.",
"badBaseUrl1":"Base URL does not contain ://.",
"badBaseUrl2":"Base URL does not contain another /.",
"badBaseUrl3":"Cannot find last / in base URL.",
"setExecutorAfterActive":"Cannot set executor after it has become active.",
"paramName":"Parameter name: {0}",
"cannotCallOutsideHandler":"Cannot call {0} outside of a completed event handler.",
"format":"One of the identified items was in an invalid format.",
"assertFailedCaller":"Assertion Failed: {0}\r\nat {1}",
"argumentOutOfRange":"Specified argument was out of the range of valid values.",
"webServiceTimedOut":"The server method \u0027{0}\u0027 timed out.",
"notImplemented":"The method or operation is not implemented.",
"assertFailed":"Assertion Failed: {0}",
"invalidOperation":"Operation is not valid due to the current state of the object.",
"breakIntoDebugger":"{0}\r\n\r\nBreak into debugger?"
};

if(typeof(Sys)!=='undefined')Sys.Application.notifyScriptLoaded();

window.CAvailabilityGuiEntry=function(Data){if(arguments.length<=0)return;this.Init.apply(this,arguments);}
CAvailabilityGuiEntry.prototype=new CJournalGuiEntry();CAvailabilityGuiEntry.prototype.constructor=CAvailabilityGuiEntry;CAvailabilityGuiEntry.superclass=CJournalGuiEntry.prototype;CAvailabilityGuiEntry.prototype.Init=function(Time,Data,Parent){CAvailabilityGuiEntry.superclass.Init.apply(this,arguments);this.ToInfoPanel=null;this.DateField='Time';this.Time=this.Data.Time;this.JournalDate=new Date(this.Data[this.DateField]*1000);this.GetEntryFunction=[this.Parent.Id,'._GetData(',this.RecordId,')'].join('');this.aSelectionsById={};if(!this.Events)this.Events={};this.AddEventHandler=CPage.prototype.AddEventHandler;this.RaiseEvent=CPage.prototype.RaiseEvent;this.RemoveEventHandler=CPage.prototype.RemoveEventHandler;this.Events.onChange="onChange";}
CAvailabilityGuiEntry.prototype.Busy=function(UserId){for(Key in this.Data){if(Key=='Time')continue;var aUsers=this.Data[Key];for(var iIndex=0;iIndex<aUsers.length;iIndex++){if(aUsers[iIndex]==UserId)return true;}}
return false;}
CAvailabilityGuiEntry.prototype.InsertSummaryIntoRow=function(Row){this.RenderedColumns=0;for(var iIndex=0;iIndex<this.Parent.aDisplayColumns.length;iIndex++){var Name=this.Parent.aDisplayColumns[iIndex];if(Name=='Time'){this.Parent.InsertDateFieldIntoRow(Row,this);continue;}
this.RenderedColumns++;var SearchRegExp=/^(Free|Busy)(\d*)$/;var Name=new String(Name);if(Name.search(SearchRegExp)==-1)continue;var UserId=parseInt(Name.replace(SearchRegExp,"$2"));var FreeBusy=Name.replace(SearchRegExp,"$1");var Busy=(FreeBusy!='Free');var UserBusy=this.Busy(UserId);var e=Row.insertCell(-1);e.style.textAlign='center';e.style.paddingLeft='0px';e.style.paddingRight='0px';e.className='';var GetEntryFunction=[this.GetEntryFunction,'.GetSelection(',UserId,',',Busy,')'].join('');var Selection=new CAvailabilitySelection(this.RecordId,UserId,Busy,GetEntryFunction);var GuiEntry=this;Selection.Selected=function(){var Busy=GuiEntry.Busy(this.UserId);if(this.Busy)return Busy;return!Busy;}
Selection.GetImagesPath=function(){return GuiEntry.Parent.ImagesPath;};Selection.AddEventHandler(Selection.Events.onChange,this,this.OnChangeSelection);if(!this.aSelectionsById[UserId])this.aSelectionsById[UserId]={};this.aSelectionsById[UserId][Busy]=Selection;e.innerHTML=Selection.ToHtml();if(Busy&&this.Busy(UserId))e.className="ImpossibleAssignment";}
this._HighlightBusySelections();return;}
CAvailabilityGuiEntry.prototype._HighlightBusySelections=function(){for(var UserId in this.aSelectionsById){var aSelections=this.aSelectionsById[UserId];for(var Busy in aSelections){var Selection=aSelections[Busy];var Container=Selection.GetContainer();if(Busy!='false'){if(this.Busy(UserId)){Container.className="ImpossibleAssignment"}else{Container.className='';}}else{Container.className='';}}}}
CAvailabilityGuiEntry.prototype.GetSelection=function(UserId,Busy){return this.aSelectionsById[UserId][Busy];}
CAvailabilityGuiEntry.prototype.OnChangeSelection=function(UserId,Busy){var Selection=this.GetSelection(UserId,Busy);Selection.ShowLoadingPanel();var oRequest=new AjaxCallback(this);var Entry=this;oRequest.Complete=function(){Entry._ModifyComplete(oRequest.xmlhttp,UserId,Busy);}
var PostData=['ContentType=AjaxJs','Action=Update','Time='+this.RecordId,'UserId='+UserId,'Busy='+Busy].join('&');oRequest.Send(this.Parent.Page,PostData);return true;}
CAvailabilityGuiEntry.prototype._ModifyComplete=function(oRequest,UserId,Busy){var SearchResults=eval(oRequest.responseText);var Selection=this.GetSelection(UserId,Busy);Selection.HideLoadingPanel();if(typeof(SearchResults)!='object')return;if(!SearchResults.Results)return;if(!SearchResults.Results[this.RecordId]){this.Data={};this.Data.Time=this.RecordId;}else{this.Data=SearchResults.Results[this.RecordId];}
Selection.GetContainer().innerHTML=Selection.ToHtml();this._HighlightBusySelections();this.RaiseEvent(this.Events.onChange,[this.RecordId,this.Data]);}
window.CAvailabilitySelection=function(EventId,UserId,Busy,GuiEntryFunction){this.EventId=EventId;this.UserId=UserId;this.Busy=Busy;this.GetEntryFunction=GuiEntryFunction;this.Events={};this.Events.onChange="onChange";this.AddEventHandler=CPage.prototype.AddEventHandler;this.RaiseEvent=CPage.prototype.RaiseEvent;this.RemoveEventHandler=CPage.prototype.RemoveEventHandler;}
CAvailabilitySelection.Selected=function(){return false;}
CAvailabilitySelection.GetImagesPath=function(){return'';}
CAvailabilitySelection.prototype._GetElementId=function(){return['AvailabilitySelection',this.EventId,this.UserId,this.Busy?'Busy':'Free'].join('-');}
CAvailabilitySelection.prototype._GetControlId=function(){return[this._GetElementId(),'Control'].join('-');}
CAvailabilitySelection.prototype._GetLoadingPanelId=function(){return[this._GetElementId(),'LoadingPanel'].join('-');}
CAvailabilitySelection.prototype._GetElement=function(){return document.getElementById(this._GetElementId());}
CAvailabilitySelection.prototype._GetControl=function(){return document.getElementById(this._GetControlId());}
CAvailabilitySelection.prototype._GetLoadingPanel=function(){return document.getElementById(this._GetLoadingPanelId());}
CAvailabilitySelection.prototype.GetContainer=function(){return this._GetElement().parentNode;}
CAvailabilitySelection.prototype.ToHtml=function(){var Attributes=new CXDb.CAttributes();Attributes.onmouseout=this.GetEntryFunction+'.OnMouseOut()';Attributes.onclick=this.GetEntryFunction+'.OnSelect()';Attributes.onmouseover=this.GetEntryFunction+'.OnMouseOver()';Attributes.id=this._GetElementId();return['<div class="AssignmentControl" ',Attributes.ToHtml(),'>',this._ToControlHtml(),'</div>'].join('');}
CAvailabilitySelection.prototype._ToControlHtml=function(){var Attributes=new CXDb.CAttributes();Attributes.type='radio';Attributes.name=['FreeBusy',this.EventId,this.UserId].join('-');Attributes.value=this.Busy?'Busy':'Free';Attributes.id=this._GetControlId();Attributes.onselect=this.GetEntryFunction+'.OnSelect()';var aContents=[];aContents.push('<input ',Attributes.ToHtml());if(this.Selected()){aContents.push(' checked');}
if(this.UserId==0){aContents.push(' disabled');}
aContents.push('>');return aContents.join('');}
CAvailabilitySelection.prototype._ToLoadingPanelHtml=function(){var Width=this._GetElement().offsetWidth;var Attributes=new CXDb.CAttributes();Attributes.style=['display:inline-block;text-align:center;width:',Width,'px'].join('');Attributes.id=this._GetLoadingPanelId();return['<span ',Attributes.ToHtml(),'>','<img src="',this.GetImagesPath(),'progress.gif"/>','</span>'].join('');}
CAvailabilitySelection.prototype._ToLoadingPanel=function(){var Width=this._GetElement().offsetWidth;var LoadingPanel=document.createElement('span');LoadingPanel.style.display='inline';LoadingPanel.style.textAlign='center';LoadingPanel.style.width=Width+'px';LoadingPanel.id=this._GetLoadingPanelId();LoadingPanel.innerHTML=['<img src="',this.GetImagesPath(),'progress.gif"/>'].join('');return LoadingPanel;}
CAvailabilitySelection.prototype.ShowLoadingPanel=function(){var Checkbox=this._GetControl();if(Checkbox)Checkbox.style.display='none';var LoadingPanel=this._GetLoadingPanel();if(!LoadingPanel){if(!Checkbox)return;Checkbox.parentNode.appendChild(this._ToLoadingPanel());}else{LoadingPanel.style.display='';}}
CAvailabilitySelection.prototype.HideLoadingPanel=function(){var LoadingPanel=this._GetLoadingPanel();if(LoadingPanel)LoadingPanel.style.display='none';var Control=this._GetControl();if(Control)Control.style.display='';}
CAvailabilitySelection.prototype.OnMouseOver=function(){var Container=this.GetContainer();if(!this.Busy){Container.style.backgroundColor='#F0F060';}else{Container.style.backgroundColor='#F06060';}}
CAvailabilitySelection.prototype.OnMouseOut=function(){var Container=this.GetContainer();Container.style.backgroundColor='';}
CAvailabilitySelection.prototype.OnSelect=function(){if(this.Selected())return;var Checkbox=this._GetControl();if(!Checkbox)return;Checkbox.checked=true;this.RaiseEvent(this.Events.onChange,[this.UserId,this.Busy]);}
window.CAvailabilityGui=function(Page){if(arguments.length<=0)return;this.Init.apply(this,arguments);}
CAvailabilityGui.prototype=new CJournalGui();CAvailabilityGui.prototype.constructor=CAvailabilityGui;CAvailabilityGui.superclass=CJournalGui.prototype;CAvailabilityGui.prototype.Init=function(Page){CAvailabilityGui.superclass.Init.apply(this,arguments);this.SortByField='Time';this.aDisplayColumns=['Time'];this.RotaCache=new CRotaCache();this.DateField='Time';this.JournalCache=new CJournalCache(this.DateField);this.Events.onCancel='onCancel';this.aAdminDuties=[];this.aUserIds=[];}
CAvailabilityGui.prototype._NewDataEntry=function(RecordId,Data){var Entry=new CAvailabilityGuiEntry(RecordId,Data,this);Entry.AddEventHandler(Entry.Events.onChange,this,this._EntryChanged);return Entry;}
CAvailabilityGui.prototype._EntryChanged=function(RecordId,Data){var SearchResults={};var BeforeDate=new Date(RecordId*1000);SearchResults[RecordId]=Data;this.JournalCache.Cache(BeforeDate,BeforeDate,SearchResults);}
CAvailabilityGui.prototype.OnAutoCompleteUserName=function(control,event){var RichControl=new CAutoCompletionControl(control,this.RotaCache.GetAvailableUserNames());return RichControl.OnKeyPress(event);}
CAvailabilityGui.prototype.OnAddUser=function(){var e=document.getElementById('AddUserAvailabilityUserName');if(e.value=='[User Name]'){e.focus();return;}
var User=this.RotaCache.LookupUserId(e.value);if(User==0){alert("You don't have permissions to change the availability for "+e.value);}else{this.aUserIds.push(parseInt(User.Id));this.Render();}}
CAvailabilityGui.prototype.OnDeleteUser=function(UserId){for(var iIndex=0;iIndex<this.aUserIds.length;iIndex++){if(this.aUserIds[iIndex]==UserId){this.aUserIds.splice(iIndex,1);this.Render();return;}}}
CAvailabilityGui.prototype.RenderHeaders=function(eTable){var eSortControls=eTable.insertRow(-1);eSortControls.id='SearchResultsSortControls';eSortControls.className='SortControls';{Element=eSortControls.insertCell(-1);Element.className='EntrySummaryActions';var iColspan=this.aResultActions.length+this.aResultInputs.length;Element.colSpan=iColspan+1;Element.rowSpan=2;Element.innerHTML='<span class="ExtendedInfoIndicatorRegion EntrySummaryRegion"></span>'
+'<span class="EntrySummaryRegion"></span>';Element=eSortControls.insertCell(-1);Element.className='EntrySummaryName';var iColumns=0;for(var Key in this.aDateFields)iColumns++;Element.colSpan=iColumns;Element.rowSpan=2;Element.style.textAlign='center';Element.style.verticalAlign='bottom';Element.innerHTML=this.FieldSortLink(htmlspecialchars('Time'),' class="EntrySummaryRegion"');for(var iUser=0;iUser<this.aUserIds.length;iUser++){var UserId=this.aUserIds[iUser];var UserName=this.RotaCache.UserNames[UserId].UserName;Element=eSortControls.insertCell(-1);Element.className='EntrySummaryName';Element.colSpan=2;Element.style.textAlign='center';var aContent=['<a class="EntrySummaryRegion" href="mailto:',htmlspecialchars(UserName),'@',htmlspecialchars(this.MailDomain),'">',htmlspecialchars(UserName),'</a><br>'];if(this.aAdminDuties.length>0){aContent.push('<input type="button" value="Remove" onclick="',this.Id,'.OnDeleteUser(',UserId,');return false;">');}
Element.innerHTML=aContent.join('');}
if(this.aAdminDuties.length>0){Element=eSortControls.insertCell(-1);Element.colSpan=2;Element.style.textAlign='center';Form=document.getElementById('SearchResultsForm');Form.action=['javascript:',this.Id,'.OnAddUser()'].join('');Element.innerHTML=['<input type="text" name="UserName" id="AddUserAvailabilityUserName"',' onkeypress="return ',this.Id,'.OnAutoCompleteUserName(this, event);" value="[User Name]"','><br>','<input type="submit" value="Add">'].join('');}
var eFreeBusyRow=eTable.insertRow(-1);var Columns=this.aUserIds.length;if(this.aAdminDuties.length>0)Columns++;for(var iUser=0;iUser<Columns;iUser++){Element=eFreeBusyRow.insertCell(-1);Element.className='EntrySummaryName';Element.innerHTML='<span class="EntrySummaryRegion">Free</span>';Element=eFreeBusyRow.insertCell(-1);Element.className='EntrySummaryName';Element.innerHTML='<span class="EntrySummaryRegion">Busy</span>';}}}
CAvailabilityGui.prototype.Render=function(){this.aDisplayColumns=['Time'];for(var iUser=0;iUser<this.aUserIds.length;iUser++){var UserId=this.aUserIds[iUser];var UserName=this.RotaCache.UserNames[UserId].UserName;this.aDisplayColumns.push('Free'+UserId);this.aDisplayColumns.push('Busy'+UserId);}
if(this.aAdminDuties.length>0){this.aDisplayColumns.push('Free0');this.aDisplayColumns.push('Busy0');}
CAvailabilityGui.superclass.Render.apply(this,arguments);var ActionTitle=document.getElementById('ActionTitle');if(ActionTitle){ActionTitle.firstChild.nodeValue="Availability";}}

window.CGroupNames=function(Page){if(arguments.length<=0)return;this.Init.apply(this,arguments);}
CGroupNames.prototype=new Object();CGroupNames.prototype.constructor=CGroupNames;CGroupNames.superclass=Object.prototype;CGroupNames.prototype.Init=function(Groups,SubDomains){this.Groups=Groups;this.SubDomains=SubDomains;this.AvailableNames=null;this.AvailableIndex=null;}
CGroupNames.prototype.GetAvailableNames=function(){if(this.AvailableNames)return this.AvailableNames;this.AvailableNames=[];this.AvailableIndex={};for(var GroupId in this.Groups){var Group=this.Groups[GroupId];Group.Id=GroupId;var Name=this.GetName(GroupId);if(!Name)continue;this.AvailableNames.push(Name);var Key=new String(Name);this.AvailableIndex[Key.toLowerCase()]=Group;}
return this.AvailableNames;}
CGroupNames.prototype.GetByName=function(Name){this.GetAvailableNames();var Key=new String(Name);return this.AvailableIndex[Key.toLowerCase()];}
CGroupNames.prototype.GetName=function(GroupId){if(!this.Groups[GroupId])return null;var aGroup=this.Groups[GroupId];var Name=aGroup.Name?aGroup.Name:GroupId;if(!aGroup.SubDomainId)return Name;var SubDomainId=aGroup.SubDomainId;if(!this.SubDomains[SubDomainId])return Name;var SubDomain=this.SubDomains[SubDomainId];if(SubDomain.Name){Name=Name+'.'+SubDomain.Name;}
return Name;}

window.CAddressLinesControl=function(AddressLines){if(arguments.length<=0)return;this.Init.apply(this,arguments);}
CAddressLinesControl.prototype=new Object();CAddressLinesControl.prototype.constructor=CAddressLinesControl;CAddressLinesControl.superclass=Object.prototype;CAddressLinesControl.prototype.Init=function(AddressLines){this.Data=AddressLines;this.Children=null;this.IdsByAddressLine=null;}
CAddressLinesControl.prototype.GetChildren=function(){if(this.Children)return this.Children;this.Children=new Array();for(var AddressLineId in this.Data){var aAddress=this.Data[AddressLineId];if(!aAddress.parentid)continue;var parentid=aAddress.parentid;if(!this.Children[parentid]){this.Children[parentid]=new Array();}
this.Children[parentid].push(AddressLineId);}
return this.Children;}
CAddressLinesControl.prototype.GetIdsByAddressLine=function(){if(this.IdsByAddressLine)return;this.IdsByAddressLine=new Array();for(var AddressLineId in this.Data){var aAddress=this.Data[AddressLineId];if(!this.IdsByAddressLine[aAddress.line])
this.IdsByAddressLine[aAddress.line]=[];this.IdsByAddressLine[aAddress.line].push(AddressLineId);}
return this.IdsByAddressLine;}
CAddressLinesControl.prototype.UpdateAddressLines=function(Deleted,Added){if(Deleted){for(var iIndex in Deleted){var AddressLineId=Deleted[iIndex];delete this.Data[AddressLineId];}
this.Children=null;this.IdsByAddressLine=null;}
if(Added){for(var AddressLineId in Added){this.Data[AddressLineId]=Added[AddressLineId];}
this.Children=null;this.IdsByAddressLine=null;}}
CAddressLinesControl.prototype.GetAddressLines=function(AddressLineId){var aAddressLines=new Array();LineId=AddressLineId;while(LineId){var Line=this.Data[LineId];if(!Line)break;aAddressLines.push(Line.line);LineId=Line.parentid;}
return aAddressLines;}
CAddressLinesControl.prototype.CompactAddressLines=function(Form,AddressLinesInput,ParentIdInput){this.GetIdsByAddressLine();var aAddressLines=Form.elements[AddressLinesInput].value.split('\n');{var aCleanedAddressLines=[];for(var iAddressLine=0;iAddressLine<aAddressLines.length;iAddressLine++){var AddressLine=aAddressLines[iAddressLine];var CleanedAddressLine=AddressLine.replace(/^\s*(.*[^\s,])[\s,]*$/,"$1");if(CleanedAddressLine=='')continue;aCleanedAddressLines.push(CleanedAddressLine);}
aAddressLines=aCleanedAddressLines;}
var ParentAddressLineId=null;while(aAddressLines.length){var AddressLine=aAddressLines[aAddressLines.length-1];AddressLine=AddressLine.replace(/^\s*(.*[^\s,])[\s,]*$/,"$1");var aAddressLineIds=this.IdsByAddressLine[AddressLine];if(!aAddressLineIds)break;var AddressLineId=null
for(var iAddressLineIndex=0;iAddressLineIndex<aAddressLineIds.length;iAddressLineIndex++){if(this.Data[aAddressLineIds[iAddressLineIndex]].parentid==ParentAddressLineId){AddressLineId=aAddressLineIds[iAddressLineIndex];break;}}
if(!AddressLineId)break;aAddressLines.pop();ParentAddressLineId=AddressLineId;}
if(ParentAddressLineId==null)ParentAddressLineId='';Form.elements[AddressLinesInput].value=aAddressLines.join('\n');Form.elements[ParentIdInput].value=ParentAddressLineId;}
CAddressLinesControl.prototype.ExpandAddressLines=function(Form,AddressLinesInput,ParentIdInput){var aAddressLines=new Array();if(Form.elements[AddressLinesInput].value!=''){aAddressLines.push(Form.elements[AddressLinesInput].value);}
ParentAddressLineId=Form.elements[ParentIdInput].value;while(ParentAddressLineId){var AddressLine=this.Data[ParentAddressLineId];aAddressLines.push(AddressLine.line);ParentAddressLineId=AddressLine.parentid;}
Form.elements[AddressLinesInput].value=aAddressLines.join('\n');}
CAddressLinesControl.prototype.Search=function(SearchRegExp){var aParentAddressLineIds=new Array();for(var AddressLineId in this.Data){var aAddress=this.Data[AddressLineId];var Line=new String(aAddress.line);if(Line.search(SearchRegExp)!=-1){aParentAddressLineIds.push(AddressLineId);}}
var aAddressLines=new Array();while(aParentAddressLineIds.length){var AddressLineId=aParentAddressLineIds.pop();if(aAddressLines[AddressLineId])continue;aAddressLines[AddressLineId]=AddressLineId;var AddressLineChildren=this.GetChildren()
var aChildren=AddressLineChildren[AddressLineId];for(var iIndex in aChildren){var ChildId=aChildren[iIndex];if(aAddressLines[ChildId])continue;aParentAddressLineIds.push(ChildId);}}
return aAddressLines;}
CAddressLinesControl.prototype.AttributeSearch=function(SearchRegExp,ValueFunc){var aAddressLines=new Array();for(var AddressLineId in this.Data){var aAddressLine=this.Data[AddressLineId];if(!ValueFunc(aAddressLine))continue;var Value=new String(ValueFunc(aAddressLine));Value=Value.replace(/[ \t]/g,"");if(Value.search(SearchRegExp)!=-1){aAddressLines[AddressLineId]=AddressLineId;}}
return aAddressLines;}
CAddressLinesControl.prototype.OnComplete=function(Control,KeyName){var Lines=Control.value.split('\n');var FirstLine=Lines[0].replace(/^\s*([^\s].*[^\s])\s*$/,"$1");for(var AddressLineId in this.Data){var Address=this.Data[AddressLineId];if(Address.line==FirstLine){var AddressId=Control.name.substring(new String(KeyName).length);var Form=Control.form;if(Address.postcode){var PostCodeElement=Form.elements['postcode'+AddressId];if(!PostCodeElement.value.length){PostCodeElement.value=Address.postcode;}}
if(Address.landline){var LandLineElement=Form.elements['landline'+AddressId];if(!LandLineElement.value.length){LandLineElement.value=Address.landline;}}
break;}}}
CAddressLinesControl.prototype.AutoCompleteAddress=function(Control,CharCode){var Selection=Control.GetSelection();var SkipAutocompletion=(Selection.End<Control.value.length);Control.ReplaceSelection(String.fromCharCode(CharCode));if(SkipAutocompletion)return;var CurrentLine=new String(Control.value);var FixedContent='';if(Control.nodeName=='TEXTAREA'){var LastEOL=CurrentLine.lastIndexOf('\n');if(LastEOL>0){FixedContent=CurrentLine.substring(0,LastEOL+1);CurrentLine=CurrentLine.substring(LastEOL+1);}}
CurrentLine=CurrentLine.replace(/([\.\\\+\*\?\[\^\]\(\$\)])/g,"\\$1");var SearchRegExp=new RegExp("^"+CurrentLine,"i");for(var AddressLineId in this.Data){var Address=this.Data[AddressLineId];var AddressLine=new String(Address.line);if(AddressLine.search(SearchRegExp)!=-1){var iLen=Control.value.length;var aNewValue=[FixedContent,Address.line];if(Control.nodeName=='TEXTAREA'){while(Address.parentid){Address=this.Data[Address.parentid];aNewValue.push('\n');aNewValue.push(Address.line);}}
Control.value=aNewValue.join('');Control.Select(iLen,Control.value.length);return;}}}
CAddressLinesControl.prototype.AddAddressLines=function(Form,AddressLinesInput,ParentIdInput,Object,Method){var oRequest=new AjaxCallback(this,'Ignored');var Context=this;oRequest.Complete=function(){var NewAddressLines=eval(this.xmlhttp.responseText);if(typeof(NewAddressLines)!='object')return;Context.UpdateAddressLines(null,NewAddressLines);Context.ExpandAddressLines(Form,AddressLinesInput,ParentIdInput);Method.apply(Object,arguments);}
var AddressLines=Form.elements[AddressLinesInput].value;var ParentId=Form.elements[ParentIdInput].value;var PostData=['ContentType=AjaxJs','Action=AddAddressLines','Address='+escape(Utf8.encode(AddressLines)),'ParentId='+ParentId,].join('&');oRequest.Send('/contacts/index.php',PostData);}
