var gResources={};
gResources["btnOK"]="OK";
gResources["btnCancel"]="Cancel";
gResources["DelPromptT"]="Delete {0}?";
gResources["DelObj1"]="&nbsp;&nbsp;Are you sure that you want to delete \"{0}\"?";
gResources["DelObj2"]="&nbsp;&nbsp;Do you want to delete all occurrences of \"{0}\" or just this one occurrence?";
gResources["DelObj3"]="Only delete this occurrence";
gResources["DelObj4"]="Delete all occurrences and exceptions";
gResources["DelArea1"]="Warning:&nbsp;&nbsp;Deleting an area will make the area and all area data unavailable to all of the members.";
gResources["DelArea2"]="&nbsp;&nbsp;To avoid users from permanently destroying their data by accident, Organize Us will retain deleted areas for a period of 30 days.  During this time any Organizer will be able to request to have the area restored.  Data that is currently being retained will not be available to any member and will not count towards any usage quotas.";
gResources["DelArea3"]="&nbsp;&nbsp;Are you sure that you want to delete the area \"{0}\"?";
gResources["ImageURL"]="Please enter the URL for the image that you want to include.";
gResources["ImageAtt"]="An image I already attached:";
gResources["ImageWeb"]="An image or photo album already on the web:";
gResources["LinkAlbumLabel"]="Photo Album Link";
gResources["LinkTitle"]="Create Link";
gResources["LinkURL"]="Please enter the URL that you want to link to.";
gResources["TableTitle"]="Create Table";
gResources["TablePrompt"]="Please enter the number of rows and columns for the table.";
gResources["TableRows"]="Rows:";
gResources["TableCols"]="Columns:";
gResources["AC_WhoEditPage"]="Who Can Edit This Page:";
gResources["AC_UseParentWhoEdit"]="Use parent's \"Who Can Edit Children\" setting";
gResources["AC_WhoAddChild"]="Who Can Add Children:";
gResources["AC_WhoEditChild"]="Who Can Edit Children:";
gResources["AC_OrgOnlyLabel"]="Only organizers can edit this page";
gResources["AC_OwnOrgTitle"]="owner and organizers can edit";
gResources["AC_CreatorOrgLabel"]="Page creator & organizers can edit this page";
gResources["AC_AllMemTitle"]="all members can edit";
gResources["AC_AllMemLabel"]="All area members can edit this page";
gResources["AC_InhTitle"]="inherit from parent";
gResources["AC_InhLabel"]="Use parent's \"Who Can Edit Children\" setting";
var StringHelper =
{
Load: function(ID)
{
var sRes=new String(gResources[ID]);
return sRes;
},
Format: function(ID)
{
var sRes=this.Load(ID);
var sRet="";
var i=sRes.indexOf("{", 0);
var last=0;
while(i!=-1)
{
var end=sRes.indexOf("}", i);
if(end==-1)
i=-1;
else
{
var nIndex=1;
nIndex+=parseInt(sRes.substring(i+1, end), 10);
sRet+=sRes.substring(last, i);
if(arguments)
{
if(nIndex<arguments.length)
sRet+=arguments[nIndex];
}
last=end+1;
i=sRes.indexOf("{", end);
}
}
if(last<sRes.length)
sRet+=sRes.substring(last);
return sRet;
}
};
var bUseRTE=true;
function DestroyException(sID)
{
var InsertHere = document.getElementById("EditorFields");
var newElem=document.createElement("div");
var str="<input type=hidden value=\""+sID+"\" id=\"DestroyID\" name=\"DestroyID\" />";
newElem.innerHTML=str;
InsertHere.appendChild(newElem);
var sPostURL=""+document.location;
sPostURL=sPostURL.replace(/#.*/, "");
sPostURL=sPostURL+"?Command=RecycleBin";
SetPostURL(sPostURL);
return SubmitPage();
}
function DeleteAreaPrompt(PostID)
{
displayDeleteAreaPrompt(PostID);
return false;
}
function DeletePrompt(PostID)
{
var InsertHere= document.getElementById("EditPH_"+PostID);
displayDeleteEventPrompt(PostID, InsertHere, false);
return false;
}
var EditingPost="";
var EditingPostPH="";
var bIsEditing=false;
function SubmitEditorForm()
{
InitFormFromEditor(EditingPost);
}
function HideElement(elemID)
{
var PostDisplayDiv = document.getElementById(elemID);
if(PostDisplayDiv!=null)
{
PostDisplayDiv.style.display="none";
return true;
}
return false;
}
function ShowElement(elemID)
{
var PostDisplayDiv = document.getElementById(elemID);
if(PostDisplayDiv!=null)
{
PostDisplayDiv.style.display="";
return true;
}
return false;
}
function HideContent(PostID)
{
if(HideElement("EditC_"+PostID))
{
HideElement("EditC_"+PostID+"_1");
}
}
function ShowCommentText(PostID)
{
var PostEditLocation = document.getElementById(EditingPostPH);
PostEditLocation.innerHTML="";
if(ShowElement("EditC_"+PostID))
{
ShowElement("EditC_"+PostID+"_1");
}
}
function GetCookie(sName)
{
var aCookie = document.cookie.split("; ");
for (var i=0; i < aCookie.length; i++)
{
var aCrumb = aCookie[i].split("=");
if (sName == aCrumb[0])
return unescape(aCrumb[1]);
}
return null;
}
function SetCookie(sName, sValue)
{
document.cookie = sName + "=" + escape(sValue) + "; path=/;";
}
function SetCookieWithPath(sName, sValue, Path)
{
document.cookie = sName + "=" + escape(sValue) + "; path="+Path+";";
}
function InitFormCheckFields()
{
var ServerCheckFormElem = document.getElementById("ServerCheck");
ServerCheckFormElem.value=GetCookie("ServerCheck");
var ClientCheckValue=""+Math.random();//"ClientXSRFCookie";
var ClientCheckFormElem= document.getElementById("ClientCheck");
ClientCheckFormElem.value=ClientCheckValue;
SetCookie("ClientCheck", ClientCheckValue);
}
var sPostURL="";
function GetPostURL()
{
return sPostURL;
}
function SetPostURL(sNewURL)
{
sPostURL=sNewURL;
}
function TestSubmitFunc()
{
alert("TestSubmitFunc");
return false;
}
var gIsSubmitting=false;
var gPreSubmitFuncStackSize=0;
var gPreSubmitFuncStackData={};
var gPreSubmitFuncStack=
{
push: function(newObj)
{
gPreSubmitFuncStackData[gPreSubmitFuncStackSize]=newObj;
gPreSubmitFuncStackSize++;
return gPreSubmitFuncStackData[gPreSubmitFuncStackSize-1];
},
top: function()
{
return gPreSubmitFuncStackData[gPreSubmitFuncStackSize-1];
},
pop: function()
{
var Ret=gPreSubmitFuncStackData[gPreSubmitFuncStackSize-1];
gPreSubmitFuncStackData[gPreSubmitFuncStackSize-1]=null;
gPreSubmitFuncStackSize--;
return Ret;
}
};
var gValidationHandlerFuncStackSize=0;
var gValidationHandlerFuncStackData={};
var gValidationHandlerFuncStack=
{
push: function(newObj)
{
gValidationHandlerFuncStackData[gValidationHandlerFuncStackSize]=newObj;
gValidationHandlerFuncStackSize++;
return gValidationHandlerFuncStackData[gValidationHandlerFuncStackSize-1];
},
top: function()
{
return gValidationHandlerFuncStackData[gValidationHandlerFuncStackSize-1];
},
pop: function()
{
var Ret=gValidationHandlerFuncStackData[gValidationHandlerFuncStackSize-1];
gValidationHandlerFuncStackData[gValidationHandlerFuncStackSize-1]=null;
gValidationHandlerFuncStackSize--;
return Ret;
}
};
var gEnterKeyFuncStackSize=0;
var gEnterKeyFuncStackData={};
var gEnterKeyFuncStack=
{
push: function(newObj)
{
gEnterKeyFuncStackData[gEnterKeyFuncStackSize]=newObj;
gEnterKeyFuncStackSize++;
return gEnterKeyFuncStackData[gEnterKeyFuncStackSize-1];
},
top: function()
{
if(gEnterKeyFuncStackSize==0)
return null;
return gEnterKeyFuncStackData[gEnterKeyFuncStackSize-1];
},
pop: function()
{
var Ret=gEnterKeyFuncStackData[gEnterKeyFuncStackSize-1];
gEnterKeyFuncStackData[gEnterKeyFuncStackSize-1]=null;
gEnterKeyFuncStackSize--;
return Ret;
}
};
function FormOnSubmit()
{
var valid=gValidationHandlerFuncStack.top();
if(valid!=null)
{
if(!valid())
return false;
}
var presub=gPreSubmitFuncStack.top();
if(presub!=null)
{
presub();
}
bIsEditing=false;
InitFormCheckFields();
var sPostTo=GetPostURL();
var Form=document.getElementById("aspnetForm");
if(sPostTo!="")
{
Form.action=sPostTo;
}
if(gIsSubmitting)
return false;
gIsSubmitting=true;
return true;
}
function SubmitPage()
{
try
{
var Form=document.getElementById("aspnetForm");
if(Form.onsubmit==null || Form.onsubmit())
{
Form.submit();
}
}
catch(err)
{
gIsSubmitting=false;
var txt="An unexpected error occurrred when trying to submit the page.\n\n";
txt+="Error message: " + err.message + "\n\n";
txt+="Click OK to continue.\n\n";
alert(txt);
}
return false;
}
function HasErroInfo(InitElemID)
{
if(InitElemID!="")
{
var Index=InitElemID.indexOf("_");
var ElemID=InitElemID;
if(Index!=-1)
{
var AttrName = InitElemID.substr(0, Index);
ElemID=InitElemID.substr(Index+1);
var JSONMeta=gMetaData["Error_"+ElemID];
if(JSONMeta!=null)
{
eval("var Val=JSONMeta."+AttrName);
if(Val!=undefined)
{
return true;
}
}
JSONMeta=gMetaData[ElemID];
if(JSONMeta!=null)
{
eval("var Val=JSONMeta."+AttrName);
if(Val!=undefined)
{
return true;
}
}
}
}
return false;
}
function ValueFromElement(InitElemID, DefValue)
{
if(InitElemID!="")
{
var Index=InitElemID.indexOf("_");
var ElemID=InitElemID;
if(Index!=-1)
{
var AttrName = InitElemID.substr(0, Index);
ElemID=InitElemID.substr(Index+1);
var JSONMeta=gMetaData["Error_"+ElemID];
if(JSONMeta!=null)
{
eval("var Val=JSONMeta."+AttrName);
if(Val!=undefined)
return Val;
}
JSONMeta=gMetaData[ElemID];
if(JSONMeta!=null)
{
eval("var Val=JSONMeta."+AttrName);
if(Val!=undefined)
return Val;
}
}
var InitElem= document.getElementById(InitElemID);
if(InitElem!=null)
{
DefValue=InitElem.innerHTML;
}
}
return DefValue;
}
function GenerateRadioInput(GroupName, ElemID, Title, Label, Value, SelectedValue, OnClick, bDisabled)
{
var sDisabled="";
if(bDisabled)
sDisabled="disabled ";
var sRetVal="<input type=radio "+ sDisabled+"value=\""+Value+"\"";
if(Title=="")
Title=Label;
sRetVal+=" id=\""+ElemID+"\" name=\""+GroupName+"\" title=\""+Title+"\" ";
if(SelectedValue==Value)
sRetVal+="checked ";
if(OnClick!="")
{
sRetVal+=" onclick=\""+OnClick+"\" ";
}
sRetVal+="/><label for=\""+ElemID+"\">"+Label+"</label>";
return sRetVal;
}
function GenerateInputFromElement(InputType, InputWidth, InputID, InitElemID, DefValue)
{
var sRet="<input type=\""+InputType+"\" ";
if(InputWidth!="")
{
sRet+="style=\"width: " + InputWidth + ";\"";
}
sRet+="id=\""+InputID+"\" value=\"";
sRet+=ValueFromElement(InitElemID, DefValue);
sRet+=DefValue+"\" />";
return sRet;
}
function DatePickerClickHandler(elemID)
{
displayDatePicker(elemID, false, 'str', '-');
return false;
}
function DatePickerTBFocusHandler(elemID)
{
var TBElem = document.getElementById(elemID);
if(TBElem.value!="")
{
var CurrDate=TBElem.value;
var myDate=new Date(CurrDate);
var sDate="";
sDate+=(myDate.getMonth()+1)+"/";
sDate+=myDate.getDate()+"/";
sDate+=myDate.getFullYear();
TBElem.value=sDate;
}
return false;
}
function DatePickerTBBlurHandler(elemID)
{
var TBElem = document.getElementById(elemID);
if(TBElem.value!="")
{
var myDate=new Date(TBElem.value);
TBElem.value=myDate.toDateString();
if (typeof(datePickerUpdated) == "function")
datePickerUpdated(TBElem);
}
return false;
}
function GenerateDatePickerElement(elemID, Value, bDisabled)
{
var Picker="<input type=\"text\" style=\"width: 110px\" id=\""+elemID+"\" ";
var sClickHandler=" onclick=\"return BlockIt(event);\" ";
var sTBClickHandler="";
if(bDisabled)
Picker+=" disabled ";
if(!bDisabled)
{
sClickHandler=" onclick=\"return DatePickerClickHandler('"+elemID+"');\" ";
sTBClickHandler=" onfocus=\"return DatePickerTBFocusHandler('"+elemID+"');\" ";
sTBClickHandler+=" onblur=\"return DatePickerTBBlurHandler('"+elemID+"');\" ";
}
Picker+=sTBClickHandler;
Picker+="value=\"";
Picker+=Value;
Picker+="\">&nbsp;<a id=\""+elemID+"_DP\" valign=\"bottom\" href=\"\" title=\"select date...\" ";
Picker+=sClickHandler;
Picker+=" id=\"date_link\" class=\"calendar-link\"><img src=\"/WMS-Static/Images/DatePicker.png\" style=\"vertical-align:bottom;\"  border=\"0\"></a>";
return Picker;
}
function BlockIt(ev)
{
return false;
}
function EnableDatepicker(ID, bEnable)
{
var StartButton=document.getElementById(ID+"_DP");
var StartDate=document.getElementById(ID);
if(bEnable)
{
StartDate.disabled=false;
StartDate.onfocus= (function (ev){return DatePickerTBFocusHandler(ID);});
StartDate.onblur= (function (ev){return DatePickerTBBlurHandler(ID);});
StartButton.onclick= (function (ev){return DatePickerClickHandler(ID);});
}
else
{
StartDate.disabled=true;
StartDate.onfocus=null;
StartDate.onblur=null;
StartButton.onclick=BlockIt;
}
}
function GoToDate(sDate)
{
var myDate=new Date(sDate);
sDate="";
sDate+=(myDate.getMonth()+1)+"/";
sDate+=myDate.getDate()+"/";
sDate+=myDate.getFullYear();
var sPostURL=""+document.location;
sPostURL=sPostURL.replace(/\?.*/, "");
sPostURL=sPostURL.replace(/#.*/, "");
sPostURL+="?start="+sDate;
document.location=sPostURL;
}
function submitViaEnter(evt)
{
evt = (evt) ? evt : event;
var target = (evt.target) ? evt.target : evt.srcElement;
var form = target.form;
var charCode = (evt.charCode) ? evt.charCode :
((evt.which) ? evt.which : evt.keyCode);
if (charCode == 13 || charCode == 3)
{
if(target.id=="GoToDate")
{
GoToDate(target.value);
return false;
}
                else if(target.id=="AdditionalText") 
{
return true;
}
else
{
var fnEnter=gEnterKeyFuncStack.top();
if(fnEnter!=null)
fnEnter();
return false;
}
}
return true;
}
function OnUnloadEditor(evt)
{
if(bIsEditing)
{
var message = 'Navigating away will cause you to lose your changes.  Press OK to continue or Cancel to return to your edits.';
if (typeof evt == 'undefined')
{
evt = window.event;
}
if (evt)
{
evt.returnValue = message;
}
return message;
}
}
function SubmitDelete(PostID)
{
ClosePrompt();
var DeleteAll=document.getElementById("DeleteAll");
if(DeleteAll!=null && DeleteAll.checked)
{
var nAt=PostID.indexOf(":");
PostID=PostID.substring(0, nAt);
}
var str="<input type=hidden value=\""+PostID+"\" id=\"DeletePostID\" name=\"DeletePostID\" />";
var newElem=document.createElement("div");
newElem.innerHTML=str;
var InsertHere = document.getElementById("EditorFields");
InsertHere.appendChild(newElem);
}
function SetPromptFocus(elemID)
{
var focusElem=document.getElementById(elemID);
if(focusElem!=null)
{
focusElem.focus();
}
}
function SelectRadioButton(id)
{
var Elem=document.getElementById(id);
if(Elem)
{
Elem.checked=true;
}
}
function DeleteAreaPrompt2(PostID)
{
if(confirm("Are you REALLY sure that you want to delete this area?"))
{
return true;
}
ClosePrompt();
return false;
}
function DisplayEditorPopop(InsertHere, PostID, EditorID, sButtonLabel, bIsCreate)
{
var html="";
var sDialogTitle="Title";//StringHelper.Format("DelPromptT", sTitle);
html+="<table class=\"PromptTable\" width=\"750px;\" cellspacing=0><tr class=\"PromptTitle\" ><td>"+sDialogTitle+"</td><td></td></tr>";
html+="<tr valign=\"middle\"><td >";
html+="<div id=\"InsertEditorHere\"></div>";
html+="</td></tr>";
html+="</table>";
drawPromptBelow(InsertHere, html);
InsertHere= document.getElementById("InsertEditorHere");
InsertEditor(InsertHere, PostID, EditorID, sButtonLabel, bIsCreate);
}
function displayDeleteAreaPrompt(PostID)
{
var html="";
var sTitle= ValueFromElement("EditT_"+PostID, "");
var sOK=StringHelper.Load("btnOK");
var sCancel=StringHelper.Load("btnCancel");
var sDialogTitle=StringHelper.Format("DelPromptT", sTitle);
var sDel1=StringHelper.Load("DelArea1");
var sDel2=StringHelper.Load("DelArea2");
var sDel3=StringHelper.Format("DelArea3", sTitle);
html+="<form id=\"Popup\" action=\"\" onsubmit=\"return false;\" method=\"get\">";
html+="<table class=\"PromptTable\" width=\"550px;\" cellspacing=0><tr class=\"PromptTitle\" ><td>"+sDialogTitle+"</td><td></td></tr>";
html+="<tr><td colspan=\"2\"><b>"+sDel1+"</b></td></tr>";
html+="<tr><td colspan=\"2\">"+sDel2+"</td></tr>";
html+="<tr><td colspan=\"2\">"+sDel3+"<br></td></tr>";
html+="<tr valign=\"middle\"><td align=\"right\" colspan=\"2\"><br>";
html+="<button class=\"ButtonStyle\" type=\"button\" onclick=\"return SubmitPage(); \" id=\"btnOK\"><img src=\"/WMS-Static/images/OK.png\" />"+sOK+"</button>";
html+="&nbsp;<button class=\"ButtonStyle\" type=\"button\" onclick=\"return ClosePrompt();\" id=\"btnCancel\"><img src=\"/WMS-Static/images/Cancel.png\" />"+sCancel+"</button>";
html+="</td></tr>";
html+="</table>";
html+="</form>";
var PreSubHandler=(function (){return SubmitDelete(PostID);});
var ValHandler=(function (){return DeleteAreaPrompt2(PostID);});
gPreSubmitFuncStack.push(PreSubHandler);
gValidationHandlerFuncStack.push(ValHandler);
var nullFN=null;
gEnterKeyFuncStack.push(nullFN);
var InsertHere= document.getElementById("EditPH_"+PostID);
drawPromptBelow(InsertHere, html);
}
function displayDeleteEventPrompt(PostID, InsertHere, bCenter)
{
var html="";
var sTitle= ValueFromElement("EditT_"+PostID, "");
var sDialogTitle=StringHelper.Format("DelPromptT", sTitle);
var sDel1=StringHelper.Format("DelObj1", sTitle);
var sDel2=StringHelper.Format("DelObj2", sTitle);
var sDel3=StringHelper.Load("DelObj3");
var sDel4=StringHelper.Load("DelObj4");
html+="<form id=\"Popup\" action=\"\" onsubmit=\"return false;\" method=\"get\">";
html+="<table class=\"PromptTable\" width=\"350px;\" cellspacing=0><tr class=\"PromptTitle\" ><td>"+sDialogTitle+"</td><td></td></tr>";
var sTmp=""+PostID;
if(sTmp.indexOf(":")==-1)
{
html+="<tr><td colspan=\"2\">"+sDel1+"<br></td></tr>";
}
else
{
html+="<tr><td colspan=\"2\">"+sDel2+"<br></td></tr>";
html+="<tr><td colspan=\"2\"><input type=\"radio\" id=\"DeleteThis\" name=\"DeleteWhat\" checked><label for=\"DeleteThis\">"+sDel3+"</label></td></tr>";
html+="<tr><td colspan=\"2\"><input type=\"radio\" id=\"DeleteAll\" name=\"DeleteWhat\"><label for=\"DeleteAll\">"+sDel4+"</label></td></tr>";
}
html+="<tr valign=\"middle\"><td align=\"right\" colspan=\"2\"><br>";
html+="<button class=\"ButtonStyle\" type=\"button\" onclick=\"return SubmitPage(); \" id=\"btnOK\"><img src=\"/WMS-Static/images/OK.png\" />"+StringHelper.Load("btnOK")+"</button>";
html+="&nbsp;<button class=\"ButtonStyle\" type=\"button\" onclick=\"return ClosePrompt();\" id=\"btnCancel\"><img src=\"/WMS-Static/images/Cancel.png\" />"+StringHelper.Load("btnCancel")+"</button>";
html+="</td></tr>";
html+="</table>";
html+="</form>";
var PreSubHandler=(function (){return SubmitDelete(PostID);});
var ValHandler=null;
gPreSubmitFuncStack.push(PreSubHandler);
gValidationHandlerFuncStack.push(ValHandler);
var nullFN=null;
gEnterKeyFuncStack.push(nullFN);
if(bCenter)
drawPromptCenteredOver(InsertHere, html, "350");
else
drawPromptBelow(InsertHere, html);
}
function drawPromptCentered(html)
{
var y=(screen.height/2);
var x=(screen.width/2);
drawPrompt(x, y, html);
}
function drawPromptCenteredOver(displayBelowThisObject, html, DialogWidth)
{
var nIndent=(displayBelowThisObject.offsetWidth/2)-(DialogWidth/2)
var x = displayBelowThisObject.offsetLeft + nIndent;
var y = displayBelowThisObject.offsetTop;
var parent = displayBelowThisObject;
while (parent.offsetParent)
{
parent = parent.offsetParent;
x += parent.offsetLeft;
y += parent.offsetTop ;
}
drawPrompt(x, y, html);
}
function drawPromptBelow(displayBelowThisObject, html)
{
var x = displayBelowThisObject.offsetLeft;
var y = displayBelowThisObject.offsetTop + displayBelowThisObject.offsetHeight ;
var parent = displayBelowThisObject;
while (parent.offsetParent) {
parent = parent.offsetParent;
x += parent.offsetLeft;
y += parent.offsetTop ;
}
drawPrompt(x, y, html);
}
function ClosePrompt(dateFieldName)
{
gPreSubmitFuncStack.pop();
gValidationHandlerFuncStack.pop();
gEnterKeyFuncStack.pop();
var pickerDiv = document.getElementById(datePickerDivID);
pickerDiv.style.visibility = "hidden";
pickerDiv.style.display = "none";
adjustiFrame();
if(document.getElementById('edit'))
document.getElementById('edit').contentWindow.focus();
}
function drawPrompt(x, y, html)
{
if (!document.getElementById(datePickerDivID)) {
var newNode = document.createElement("div");
newNode.setAttribute("id", datePickerDivID);
newNode.setAttribute("class", "dpDiv");
newNode.setAttribute("style", "visibility: hidden;");
document.body.appendChild(newNode);
}
var pickerDiv = document.getElementById(datePickerDivID);
pickerDiv.style.position = "absolute";
pickerDiv.style.left = x + "px";
pickerDiv.style.top = y + "px";
pickerDiv.style.visibility = (pickerDiv.style.visibility == "visible" ? "hidden" : "visible");
pickerDiv.style.display = (pickerDiv.style.display == "block" ? "none" : "block");
pickerDiv.style.zIndex = 10000;
document.getElementById(datePickerDivID).innerHTML = html;
adjustiFrame();
}
var datePickerDivID = "datepicker";
var iFrameDivID = "datepickeriframe";
var dayArrayShort = new Array('Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa');
var dayArrayMed = new Array('Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat');
var dayArrayLong = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday');
var monthArrayShort = new Array('Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec');
var monthArrayMed = new Array('Jan', 'Feb', 'Mar', 'Apr', 'May', 'June', 'July', 'Aug', 'Sept', 'Oct', 'Nov', 'Dec');
var monthArrayLong = new Array('January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December');
var defaultDateSeparator = "/";        // common values would be "/" or "."
var defaultDateFormat = "mdy"    // valid values are "mdy", "dmy", and "ymd"
var dateSeparator = defaultDateSeparator;
var dateFormat = defaultDateFormat;
function displayDatePicker(dateFieldName, displayBelowThisObject, dtFormat, dtSep)
{
var targetDateField = document.getElementById (dateFieldName);
if (!displayBelowThisObject)
displayBelowThisObject = targetDateField;
if (dtSep)
dateSeparator = dtSep;
else
dateSeparator = defaultDateSeparator;
if (dtFormat)
dateFormat = dtFormat;
else
dateFormat = defaultDateFormat;
var x = displayBelowThisObject.offsetLeft;
var y = displayBelowThisObject.offsetTop + displayBelowThisObject.offsetHeight ;
var parent = displayBelowThisObject;
while (parent.offsetParent) {
parent = parent.offsetParent;
x += parent.offsetLeft;
y += parent.offsetTop ;
}
drawDatePicker(targetDateField, x, y);
}
function drawDatePicker(targetDateField, x, y)
{
var dt = getFieldDate(targetDateField.value );
if (!document.getElementById(datePickerDivID)) {
var newNode = document.createElement("div");
newNode.setAttribute("id", datePickerDivID);
newNode.setAttribute("class", "dpDiv");
newNode.setAttribute("style", "visibility: hidden;");
document.body.appendChild(newNode);
}
var pickerDiv = document.getElementById(datePickerDivID);
pickerDiv.style.position = "absolute";
pickerDiv.style.left = x + "px";
pickerDiv.style.top = y + "px";
pickerDiv.style.visibility = (pickerDiv.style.visibility == "visible" ? "hidden" : "visible");
pickerDiv.style.display = (pickerDiv.style.display == "block" ? "none" : "block");
pickerDiv.style.zIndex = 10000;
refreshDatePicker(targetDateField.id, dt.getFullYear(), dt.getMonth(), dt.getDate());
}
function refreshDatePicker(dateFieldName, year, month, day)
{
var thisDay = new Date();
if ((month >= 0) && (year > 0)) {
thisDay = new Date(year, month, 1);
} else {
day = thisDay.getDate();
thisDay.setDate(1);
}
var crlf = "\r\n";
var TABLE = "<table cols=7 class='dpTable'>" + crlf;
var xTABLE = "</table>" + crlf;
var TR = "<tr class='dpTR'>";
var TR_title = "<tr class='dpTitleTR'>";
var TR_days = "<tr class='dpDayTR'>";
var TR_todaybutton = "<tr class='dpTodayButtonTR'>";
var xTR = "</tr>" + crlf;
  var TD = "<td class='dpTD' onMouseOut='this.className=\"dpTD\";' onMouseOver=' this.className=\"dpTDHover\";' ";    
var TD_title = "<td colspan=5 class='dpTitleTD'>";
var TD_buttons = "<td class='dpButtonTD'>";
var TD_todaybutton = "<td colspan=7 class='dpTodayButtonTD'>";
var TD_days = "<td class='dpDayTD'>";
  var TD_selected = "<td class='dpDayHighlightTD' onMouseOut='this.className=\"dpDayHighlightTD\";' onMouseOver='this.className=\"dpTDHover\";' ";    
var xTD = "</td>" + crlf;
var DIV_title = "<div class='dpTitleText'>";
var DIV_selected = "<div class='dpDayHighlight'>";
var xDIV = "</div>";
var html = TABLE;
html += TR_title;
html += TD_buttons + getButtonCode(dateFieldName, thisDay, -1, "&lt;") + xTD;
html += TD_title + DIV_title + monthArrayLong[ thisDay.getMonth()] + " " + thisDay.getFullYear() + xDIV + xTD;
html += TD_buttons + getButtonCode(dateFieldName, thisDay, 1, "&gt;") + xTD;
html += xTR;
html += TR_days;
for(i = 0; i < dayArrayShort.length; i++)
html += TD_days + dayArrayShort[i] + xTD;
html += xTR;
html += TR;
for (i = 0; i < thisDay.getDay(); i++)
html += TD + "&nbsp;" + xTD;
do {
dayNum = thisDay.getDate();
TD_onclick = " onclick=\"updateDateField('" + dateFieldName + "', '" + getDateString(thisDay) + "');\">";
if (dayNum == day)
html += TD_selected + TD_onclick + DIV_selected + dayNum + xDIV + xTD;
else
html += TD + TD_onclick + dayNum + xTD;
if (thisDay.getDay() == 6)
html += xTR + TR;
thisDay.setDate(thisDay.getDate() + 1);
} while (thisDay.getDate() > 1)
if (thisDay.getDay() > 0) {
for (i = 6; i > thisDay.getDay(); i--)
html += TD + "&nbsp;" + xTD;
}
html += xTR;
var today = new Date();
var todayString = "Today is " + dayArrayMed[today.getDay()] + ", " + monthArrayMed[ today.getMonth()] + " " + today.getDate();
html += TR_todaybutton + TD_todaybutton;
html += "<button class='dpTodayButton' type='button' onClick='refreshDatePicker(\"" + dateFieldName + "\");'>today</button> ";
html += "<button class='dpTodayButton' type='button' onClick='updateDateField(\"" + dateFieldName + "\");'>close</button>";
html += xTD + xTR;
html += xTABLE;
document.getElementById(datePickerDivID).innerHTML = html;
adjustiFrame();
}
function getButtonCode(dateFieldName, dateVal, adjust, label)
{
var newMonth = (dateVal.getMonth () + adjust) % 12;
var newYear = dateVal.getFullYear() + parseInt((dateVal.getMonth() + adjust) / 12);
if (newMonth < 0) {
newMonth += 12;
newYear += -1;
}
return "<button class='dpButton' type='button' onClick='refreshDatePicker(\"" + dateFieldName + "\", " + newYear + ", " + newMonth + ");'>" + label + "</button>";
}
function getDateString(dateVal)
{
var dayString = "00" + dateVal.getDate();
var monthString = "00" + (dateVal.getMonth()+1);
dayString = dayString.substring(dayString.length - 2);
monthString = monthString.substring(monthString.length - 2);
switch (dateFormat) {
case "str":
return dateVal.toDateString();
case "dmy" :
return dayString + dateSeparator + monthString + dateSeparator + dateVal.getFullYear();
case "ymd" :
return dateVal.getFullYear() + dateSeparator + monthString + dateSeparator + dayString;
case "mdy" :
default :
return monthString + dateSeparator + dayString + dateSeparator + dateVal.getFullYear();
}
}
function getFieldDate(dateString)
{
var dateVal;
var dArray;
var d, m, y;
try {
dArray = splitDateString(dateString);
if (dArray) {
switch (dateFormat) {
case "dmy" :
d = parseInt(dArray[0], 10);
m = parseInt(dArray[1], 10) - 1;
y = parseInt(dArray[2], 10);
break;
case "ymd" :
d = parseInt(dArray[2], 10);
m = parseInt(dArray[1], 10) - 1;
y = parseInt(dArray[0], 10);
break;
case "mdy" :
default :
d = parseInt(dArray[1], 10);
m = parseInt(dArray[0], 10) - 1;
y = parseInt(dArray[2], 10);
break;
}
dateVal = new Date(y, m, d);
} else if (dateString) {
dateVal = new Date(dateString);
} else {
dateVal = new Date();
}
} catch(e) {
dateVal = new Date();
}
return dateVal;
}
function splitDateString(dateString)
{
var dArray;
if (dateString.indexOf("/") >= 0)
dArray = dateString.split("/");
else if (dateString.indexOf(".") >= 0)
dArray = dateString.split(".");
else if (dateString.indexOf("-") >= 0)
dArray = dateString.split("-");
else if (dateString.indexOf("\\") >= 0)
dArray = dateString.split("\\");
else
dArray = false;
return dArray;
}
function updateDateField(dateFieldName, dateString)
{
var targetDateField = document.getElementById(dateFieldName);
if (dateString)
targetDateField.value = dateString;
var pickerDiv = document.getElementById(datePickerDivID);
pickerDiv.style.visibility = "hidden";
pickerDiv.style.display = "none";
adjustiFrame();
if ((dateString) && (typeof(datePickerUpdated) == "function"))
datePickerUpdated(targetDateField);
}
function adjustiFrame(pickerDiv, iFrameDiv)
{
var bUseIFrameHack=false;
if (/MSIE (\d+\.\d+);/.test(navigator.userAgent))
{ 
    var ieversion=new Number(RegExp.$1) 
if (ieversion<=6)
{
bUseIFrameHack=true;
}
}
if(!bUseIFrameHack)
return;
var is_opera = (navigator.userAgent.toLowerCase().indexOf("opera") != -1);
if (is_opera)
return;
try {
if (!document.getElementById(iFrameDivID)) {
var newNode = document.createElement("iFrame");
newNode.setAttribute("id", iFrameDivID);
newNode.setAttribute("src", "javascript:false;");
newNode.setAttribute("scrolling", "no");
newNode.setAttribute ("frameborder", "0");
document.body.appendChild(newNode);
}
if (!pickerDiv)
pickerDiv = document.getElementById(datePickerDivID);
if (!iFrameDiv)
iFrameDiv = document.getElementById(iFrameDivID);
try {
iFrameDiv.style.position = "absolute";
iFrameDiv.style.width = pickerDiv.offsetWidth;
iFrameDiv.style.height = pickerDiv.offsetHeight ;
iFrameDiv.style.top = pickerDiv.style.top;
iFrameDiv.style.left = pickerDiv.style.left;
iFrameDiv.style.zIndex = pickerDiv.style.zIndex - 1;
iFrameDiv.style.visibility = pickerDiv.style.visibility ;
iFrameDiv.style.display = pickerDiv.style.display;
} catch(e) {
}
} catch (ee) {
}
}
function IsValidEmailChars(sEmail)
{
if(sEmail.indexOf("\"")!=-1)
{
return false;
}
if(sEmail.indexOf(">")!=-1)
{
return false;
}
if(sEmail.indexOf("<")!=-1)
{
return false;
}
if(sEmail.indexOf("@@")!=-1)
{
return false;
}
return true;
}
function IsValidEmail(sEmail)
{
if(!IsValidEmailChars(sEmail))
return false;
if(sEmail.match(/.+@.+\..+/))
{
return true;
}
return false;
}
function ValidateEmails(emails)
{
var sErr="";
if(emails=="")
{
sErr="you must enter at least one email address";
}
else
{
var arr;
var sSplit=" ";
if(emails.indexOf(",")!=-1)
sSplit=",";
else if(emails.indexOf(";")!=-1)
sSplit=";";
arr = emails.split(sSplit);
var sBad="";
for(i=0; i<arr.length; ++i)
{
if(!IsValidEmail(arr[i]))
{
sBad+=arr[i]+" ";
}
}
if(sBad!="")
sErr="eMail addresses must be in the form x@x.xxx and cannot contain \", >, or < characters.  Please correct the following: " + sBad;
}
return sErr;
}
function RedirectToBestURL()
{
var sPostURL=""+document.location;
sPostURL=sPostURL.replace(/\?.*/, "");
document.location=sPostURL;
return false;
}
function GetCommandJSON(ElemID, AttrName)
{
var JSONMeta=gCommandMeta[ElemID];
if(JSONMeta!=null)
{
eval("var Val=JSONMeta."+AttrName);
if(Val!=undefined)
return Val;
}
return "";
}
function ImageFromRole(nsRole, bDisabled)
{
var sRet="Member";
if(nsRole=="Organizer")
{
sRet="Organizer";
}
if(bDisabled)
sRet+="Disabled";
sRet+=".png";
return sRet;
}
function AltTextFromRole(nsRole)
{
var sRet="Member";
if(nsRole=="Organizer")
{
sRet="Organizer";
}
return sRet;
}
function SetTimezoneDefault()
{
var selElem=document.getElementById("TimeZoneID");
if(selElem==null)
return;
var d = new Date()
var jan1 = new Date(d.getFullYear(), 0, 1, 0, 0, 0, 0);
var jul1 = new Date(d.getFullYear(), 6, 1, 0, 0, 0, 0);
var gmtHours = -d.getTimezoneOffset();
var gmtHoursJan = -jan1.getTimezoneOffset();
var gmtHoursJul = -jul1.getTimezoneOffset();
var sID="";
if(gmtHoursJul>0)
sID+=GetCommandJSON(gmtHoursJan, "jul1_"+gmtHoursJul.toString());
else
sID+=GetCommandJSON(gmtHoursJan, "jul1__"+(0-gmtHoursJul).toString());
var cursel = selElem.selectedIndex;
var selected = selElem.options[cursel].value;
var options = selElem.options
for(i=0; i<options.length; i++)
{
if(options[i].value==sID)
{
selElem.selectedIndex = i;
break;
}
}
}
