﻿var __dialogs=new Array();
var __CALENDAR_DLG;
var __CALENDAR_TARGET;
var __CALENDAR_CURR_DATE;
var __CALENDAR_INCLUDE_TIME;
var __CALENDAR_INCLUDE_DAY;
var __CALENDAR_HOURS;
var __CALENDAR_MINUTES;
var __CALENDAR_SECONDS;
var __CALENDAR_OUTPUT;
var __CALENDAR_SEPARATOR;
var __FILEMANAGER_UPDATEFUNC;
var __FILEMANAGER_CANCELFUNC;
var __FILEMANAGER_FAILFUNC;
var __FILEMANAGER_REQ_TYPE;
var __FILEMANAGER_DEFAULT_REQ;
var __FILEMANAGER_DIALOG;
var __FILEMANAGER_DEFAULT_FOLDER="";
var __FILEMANAGER_FILETYPE;
var __FILEMANAGER_IMAGEWIDTH;
var __FILEMANAGER_IMAGEHEIGHT;
var __FILEMANAGER_MAXUPLOADWIDTH;
var __FILEMANAGER_MAXUPLOADHEIGHT;
var __FILEMANAGER_SHOWFOLDERS;
var __FILEMANAGER_SHOWFILES;
var __FILEMANAGER_DIALOGCAPTION;
var __FILEMANAGER_DEST_FILE_NAME;
var __FILEMANAGER_ALLOWCROPPING;
var __FILEMANAGER_IMAGEFORMAT; // 0=GIF, 1=JPEG, 2=PNG, 3=BMP, 4=TIFF, >=5 or <0 = Original Format, 
var __FILEMANAGER_IMAGETOBECROPPED;
var __FILEMANAGER_UPLOADWIDTH;
var __FILEMANAGER_UPLOADHEIGHT;
var __FILEMANAGER_CROPIMG;
var __FILEMANAGER_CROPDLG;
var __FILEMANAGER_CROPMASK;
var __FILEMANAGER_CROPRESIZETOOL;
var __FILEMANAGER_SELECTEDAREA;
var __FILEMANAGER_PREVIEWIMAGE;
var __FILEMANAGER_CROPRESIZE;
var __FILEMANAGER_CROPDOWN;
var __FILEMANAGER_RESIZECROPDOWN;
var __FILEMANAGER_CROPX;
var __FILEMANAGER_CROPY;
var __FILEMANAGER_CROPWIDTH;
var __FILEMANAGER_CROPHEIGHT;
var __FILEMANAGER_DELETEIFCANCELLED;
var __InitMouseX;
var __InitMouseY;
var __MouseX;
var __MouseY;
var __SHORT_LIST_ITEM;
var __SHORT_LIST_SELECTED_ID;
var __SHORTLIST_TIMER;
var __SHORT_LIST_SELECT_FUNCTION;
var __TOOLTIP_ID;
var __MESSAGE_OKAY_FUNC;
var __MESSAGE_YES_FUNC;
var __MESSAGE_NO_FUNC;

// Mouse events are captured for various functions.
if(window.addEventListener)
{
  window.addEventListener("onresize",__WindowResize,false);
  window.addEventListener("onscroll",__WindowResize,false);
}
else
{
  window.attachEvent("onresize",__WindowResize);
  window.attachEvent("onscroll",__WindowResize);
}
window.onresize=__WindowResize;
window.onscroll=__WindowResize;

if(!document.all)
{
  window.captureEvents(Event.MOUSEDOWN);
  window.onmousedown=__CropMouseDown;
  window.captureEvents(Event.MOUSEMOVE);
  window.onmousemove=__CropMouseMove;
  window.captureEvents(Event.MOUSEUP);
  window.onmouseup=__CropMouseUp;
}
else
{
  document.onmousedown=__CropMouseDown;
  document.onmousemove=__CropMouseMove;
  document.onmouseup=__CropMouseUp;
}
function __ShowMessage(title,messageText,type,okayText,yesText,noText,okayFunc,yesFunc,noFunc)
{
  __MESSAGE_OKAY_FUNC=okayFunc;
  __MESSAGE_YES_FUNC=yesFunc;
  __MESSAGE_NO_FUNC=noFunc;
  title=((title==null||title=='')?"System Message":title);
  var icon;
  switch(type)
  {
    case(1):
       icon="information.gif";
       break;
    case(2):
       icon="warning.gif";
       break;
    default:
       icon="error.gif";
       break;
  }
    
  var messageDiv=document.createElement("div");
  messageDiv.id="MessageDialog";
  messageDiv.className="Dialog MessageDialog";
  document.body.appendChild(messageDiv);  
  yesText=((yesText==null||yesText=="")?"Okay":yesText);
  noText=((noText==null||noText=="")?"Cancel":noText);
  okayText=((okayText==null||okayText=="")?"Okay":okayText);
  
  var paramNames=new Array();
  var paramVals=new Array();
  paramNames.push("requestPath");
  paramVals.push(__RequestPath);
  paramNames.push("title");
  paramVals.push(title);
  paramNames.push("icon");
  paramVals.push(icon);
  paramNames.push("messageText");
  paramVals.push(messageText);
  paramNames.push("yesNo");
  paramVals.push((__MESSAGE_YES_FUNC!=null||__MESSAGE_NO_FUNC!=null).toString());
  paramNames.push("yesText");
  paramVals.push(yesText);
  paramNames.push("noText");
  paramVals.push(noText);
  paramNames.push("okayText");
  paramVals.push(okayText);
  __Transform(messageDiv,__dataXml,__RequestPath+"/DesktopModules/OALUtils/XSLT/MessageDialog.xsl",paramNames,paramVals);
  __ShowDialog(messageDiv,true);
}
function __MessageYes()
{
  __DestroyDialog(document.getElementById("MessageDialog"));
  if(__MESSAGE_YES_FUNC!=null)
  {
    new __MESSAGE_YES_FUNC;
  }
  else
  {
    if(__MESSAGE_OKAY_FUNC!=null)
    {
      new __MESSAGE_OKAY_FUNC;
    }
  }
}
function __MessageNo()
{
  __DestroyDialog(document.getElementById("MessageDialog"));
  if(__MESSAGE_NO_FUNC!=null)
  {
    new __MESSAGE_NO_FUNC;
  }
}

function __ShowToolTip(obj,id,title,text,parentId)
{
  var pScrollX=0;
  var pScrollY=0;
  if(parentId!=null)
  {
    var parent=document.getElementById(parentId);
    if(parent)
    {
      pScrollX=parent.scrollLeft;
      pScrollY=parent.scrollTop;
    }
  }
  var dialog=__CreateDialog(id,title,true,true,__CloseToolTip);
  if(dialog)
  {
    __TOOLTIP_ID=dialog.id;
    document.getElementById("content_"+__TOOLTIP_ID).innerHTML=text;
    var toolTipOut=document.createElement("img");
    toolTipOut.src=__RequestPath+"/DesktopModules/OALUtils/Images/tool_tip_out.gif";
    toolTipOut.className="ToolTipOut";
    toolTipOut.style.top="-"+((dialog.offsetHeight-toolTipOut.offsetHeight)/2)+"px";
    dialog.appendChild(toolTipOut);
    dialog.className="Dialog ToolTip";
    dialog.setAttribute("positioning","IGNORE");
    var x=(__FindPosX(obj)-pScrollX)+obj.offsetWidth+toolTipOut.offsetWidth+2;
    var y=(__FindPosY(obj)-pScrollY)+(obj.offsetHeight/2)-(dialog.offsetHeight/2)-2;
    dialog.style.left=x+"px";
    dialog.style.top=y+"px";
    __ShowDialog(dialog,false);   
    var backdrop=document.getElementById("__DialogBackdropTransparent");
    if(backdrop==null)
    {
      backdrop=document.createElement("div");
      backdrop.id="__DialogBackdropTransparent";
      backdrop.className="ScreenCoverTransparent";
      backdrop.onclick=__CloseToolTip;
      document.body.appendChild(backdrop);
    }
    backdrop.style.display="block";
    backdrop.style.zIndex=499+__dialogs.length;
    __WindowResize();
  }
}
function __CloseToolTip()
{
  var backdrop=document.getElementById("__DialogBackdropTransparent");
  if(backdrop)
  {
    backdrop.style.display="none";
  } 
  __DestroyDialog(document.getElementById(__TOOLTIP_ID));
  return(false);
}

function __ShowFileManagerDialog(updateFunc,cancelFunc,failureFunc,imagesOnly,imageWidth,imageHeight,allowCropping,imageFormat,maxUploadWidth,maxUploadHeight,showFolders,showFiles,dialogCaption,destinationFileName)
{
  __FILEMANAGER_UPDATEFUNC=updateFunc;
  __FILEMANAGER_CANCELFUNC=cancelFunc;
  __FILEMANAGER_FAILFUNC=failureFunc;
  __FILEMANAGER_FILETYPE=(imagesOnly==null||imagesOnly==false?-1:0);
  __FILEMANAGER_IMAGEWIDTH=(imageWidth==null||isNaN(imageWidth)?0:imageWidth);
  __FILEMANAGER_IMAGEHEIGHT=(imageHeight==null||isNaN(imageHeight)?0:imageHeight);
  __FILEMANAGER_ALLOWCROPPING=(allowCropping==null?false:allowCropping);
  __FILEMANAGER_IMAGEFORMAT=(imageFormat==null||isNaN(imageFormat)?0:imageFormat);
  __FILEMANAGER_MAXUPLOADWIDTH=(maxUploadWidth==null||isNaN(maxUploadWidth)?0:maxUploadWidth);
  __FILEMANAGER_MAXUPLOADHEIGHT=(maxUploadHeight==null||isNaN(maxUploadHeight)?0:maxUploadHeight);
  __FILEMANAGER_SHOWFOLDERS=(showFolders==null?true:showFolders);
  __FILEMANAGER_SHOWFILES=(showFiles==null?true:showFiles);
  __FILEMANAGER_DIALOGCAPTION=(dialogCaption==null?"":dialogCaption);
  __FILEMANAGER_DEST_FILE_NAME=(destinationFileName==null?"":destinationFileName);
  __FILEMANAGER_DEFAULT_REQ=false;
  __BrowseFiles();
}
function __BrowseFiles()
{
  if(!__EntityExists("folders"))
  {
    if(!__FILEMANAGER_DEFAULT_REQ)
    {
      __FILEMANAGER_DEFAULT_REQ=true;
      __FILEMANAGER_REQ_TYPE=0;
      __GetFolderInfo();
    }
    else
    {
      new __FILEMANAGER_FAILFUNC;
    }    
  }
  else
  {
    if(__FILEMANAGER_DIALOG==null)
    {
      __FILEMANAGER_DIALOG=document.getElementById("FileManager");
      if(__FILEMANAGER_DIALOG==null)
      {
        __FILEMANAGER_DIALOG=document.createElement("div");
        __FILEMANAGER_DIALOG.className="Dialog";
        __FILEMANAGER_DIALOG.id="FileManager";
        document.body.appendChild(__FILEMANAGER_DIALOG);
      }
    }
    var paramNames=new Array();
    var paramVals=new Array();
    paramNames.push("uploadPath");
    paramVals.push(__RequestPath);
    paramNames.push("defaultFolder");
    paramVals.push(__FILEMANAGER_DEFAULT_FOLDER);
    paramNames.push("showFolders");
    paramVals.push(__FILEMANAGER_SHOWFOLDERS.toString());
    paramNames.push("showFiles");
    paramVals.push(__FILEMANAGER_SHOWFILES.toString());
    paramNames.push("dialogCaption");
    paramVals.push(__FILEMANAGER_DIALOGCAPTION);
    __Transform(__FILEMANAGER_DIALOG,__dataXml,__RequestPath+"/DesktopModules/OALUtils/XSLT/FileManagerDialog.xsl",paramNames,paramVals);
    __ShowDialog(__FILEMANAGER_DIALOG);    
    __DisplayFiles();
  }
}

function __DisplayFiles()
{
  // Get the file types that are available in the current folder.
  __PopulateFileTypes();
  
  // Show or hide upload depending on the user's permissions.
  __FILEMANAGER_DEFAULT_FOLDER=__GetValue("FoldersDropDownList");
  var folderNodes=__SelectNodes(__SelectSingleNode(__dataXml,"folders"),"folder");
  
  if(folderNodes!=null)
  {
    for(var i=0;i<folderNodes.length;i++)
    {
      var folderId=__NodeValue(folderNodes[i],"folderId");
      if(folderId==__FILEMANAGER_DEFAULT_FOLDER)
      {
        var permission=__NodeValue(folderNodes[i],"permission");
        document.getElementById("UploadRow").style.display=(permission=="write"?"block":"none");
        i=folderNodes.length;
      }
    }
  
    // Show the files in the current folder.
    var paramNames=new Array();
    var paramVals=new Array();
    paramNames.push("requestPath");
    paramVals.push(__RequestPath);
    paramNames.push("folderId");
    paramVals.push(__FILEMANAGER_DEFAULT_FOLDER);
    paramNames.push("fileType");
    paramVals.push(document.getElementById("FileTypesDropDownList").value);
    __Transform(document.getElementById("SystemFiles"),__dataXml,__RequestPath+"/DesktopModules/OALUtils/XSLT/SystemFiles.xsl",paramNames,paramVals);
    __SetValue("FileNameTextBox","");
    __SetValue("DateCreatedTextBox","");
    var imgs=document.getElementById("SystemFiles").getElementsByTagName("img");
    if(imgs)
    {
      for(var i=0;i<imgs.length;i++)
      {
        imgs[i].src+="?'"+new Date().getTime()+"'";
      }
    }
  }
}

function __ShowFileInfo(description,date)
{
  __SetValue("FileNameTextBox",description);
  __SetValue("DateCreatedTextBox",date);
}

function __PopulateFileTypes()
{
  var selectedFolderId=__GetValue("FoldersDropDownList");
  var folders=__SelectNodes(__dataXml,"folders/folder");
  if(folders!=null)
  {
    for(var i=0;i<folders.length;i++)
    {
      var folderId=__NodeValue(folders[i],"folderId");
      if(folderId==selectedFolderId)
      {
        var fileTypeList="All Files (*.*)"+(__FILEMANAGER_FILETYPE==-1?"~-1":"~-2");
        var files=__SelectNodes(folders[i],"file");
        if(files!=null)
        {
          for(var x=0;x<files.length;x++)
          {
            var fileName=__NodeValue(files[x],"name");
            if(fileName.indexOf(".")>-1)
            {
              var ext=fileName.substr(fileName.lastIndexOf(".")).toLowerCase();
              if(fileTypeList.indexOf("*"+ext)==-1)
              {
                if(fileTypeList!="")
                {
                  fileTypeList=fileTypeList+"|";
                }
                switch(ext)
                {
                  case ".gif":
                    fileTypeList=fileTypeList+"GIF Image (*.gif)~0";
                    break;
                  case ".jpg"||".jpeg":
                    fileTypeList=fileTypeList+"JPEG Image (*.jpg, *.jpeg)~1";
                    break;
                  case ".png":
                    fileTypeList=fileTypeList+"PNG Image (*.png)~2";
                    break;
                  case ".bmp":
                    if(__FILEMANAGER_FILETYPE==-1)
                    {
                      fileTypeList=fileTypeList+"Windows Bitmap Image (*.bmp)~3";
                    }
                    break;
                  case ".tif"||".tiff":
                    if(__FILEMANAGER_FILETYPE==-1)
                    {
                      fileTypeList=fileTypeList+"TIFF Bitmap Image (*.tif, *.tiff)~4";
                    }
                    break;
                  case ".pdf":
                    if(__FILEMANAGER_FILETYPE==-1)
                    {
                      fileTypeList=fileTypeList+"Adobe Portable Document Format (*.pdf)~10";
                    }
                    break;
                  case ".doc"||".docx":
                    if(__FILEMANAGER_FILETYPE==-1)
                    {
                      fileTypeList=fileTypeList+"Microsoft Word Document (*.doc, *.docx)~11";
                    }
                    break;
                  case ".rtf":
                    if(__FILEMANAGER_FILETYPE==-1)
                    {
                      fileTypeList=fileTypeList+"Rich Text Document (*.rtf)~12";
                    }
                    break;
                  case ".xls"||".xlsx":
                    if(__FILEMANAGER_FILETYPE==-1)
                    {
                      fileTypeList=fileTypeList+"Microsoft Excel Workbook (*.xls, *.xlsx)~13";
                    }
                    break;
                  case ".ppt"||".pptx":
                    if(__FILEMANAGER_FILETYPE==-1)
                    {
                      fileTypeList=fileTypeList+"Microsoft PowerPoint Presentation (*.ppt, *.pptx)~14";
                    }
                    break;
                  case ".mdb":
                    if(__FILEMANAGER_FILETYPE==-1)
                    {
                      fileTypeList=fileTypeList+"Microsoft Access Database (*.mdb)~15";
                    }
                    break;
                  case ".htm"||".html":
                    if(__FILEMANAGER_FILETYPE==-1)
                    {
                      fileTypeList=fileTypeList+"HTML Document (*.htm, *.html)~16";
                    }
                    break;
                  case ".xml":
                    if(__FILEMANAGER_FILETYPE==-1)
                    {
                      fileTypeList=fileTypeList+"XML Document (*.xml)~17";
                    }
                    break;
                  case ".zip":
                    if(__FILEMANAGER_FILETYPE==-1)
                    {
                      fileTypeList=fileTypeList+"ZIP File (*.zip)~18";
                    }
                    break;
                  case ".txt":
                    if(__FILEMANAGER_FILETYPE==-1)
                    {
                      fileTypeList=fileTypeList+"Text Document (*.txt)~19";
                    }
                    break;
                }            
              }
            }
          }
        }
        var fileTypeSelect=document.getElementById("FileTypesDropDownList");
        var current=fileTypeSelect.value;
        fileTypeSelect.innerHTML="";
        var fileOptions=fileTypeList.split("|");
        for(var x=0;x<fileOptions.length;x++)
        {
          if(fileOptions[x]!="")
          {
            var pair=fileOptions[x].split("~");
            var opt=document.createElement("option");
            opt.innerHTML=pair[0];
            opt.value=pair[1];
            if(current==pair[1])
            {
              opt.selected="selected";
            }
            fileTypeSelect.appendChild(opt);
          }
        }
        i=folders.length;
      }
    }
  }
}

function __GetFolderInfo()
{
  var reqData="<getFolderInfo />";
  __MakeRequest(__FILEMANAGER_ID,reqData,__ReturnFromGettingFolderInfo,__FILEMANAGER_FAILFUNC);
}

function __ReturnFromGettingFolderInfo()
{
  __RemoveEntity("folders");
  __AddEntity(__SelectSingleNode(__Resp,"folders"));
  if(__FILEMANAGER_REQ_TYPE==0)
  {
    __BrowseFiles();    
  }
  else
  {
    __DisplayFiles();
  }
}

function __UploadFile()
{
  var iframe=document.getElementById("AjaxFileUploader");
  try
  {
    var ajaxDoc=(iframe.contentWindow||iframe.contentDocument).document;
    if(ajaxDoc)
    {
      var inputs=ajaxDoc.getElementsByTagName("input");
      if(inputs)
      {
        var performUpload=true;
        var x=0;
        for(var i=0;i<inputs.length&&x<3;i++)
        {
          if(inputs[i].className=="info")
          {
            inputs[i].value=document.getElementById("FoldersDropDownList").value+"|"+__FILEMANAGER_IMAGEWIDTH+"|"+__FILEMANAGER_IMAGEHEIGHT+"|"+__FILEMANAGER_ALLOWCROPPING+"|"+__FILEMANAGER_IMAGEFORMAT+"|"+__FILEMANAGER_MAXUPLOADWIDTH+"|"+__FILEMANAGER_MAXUPLOADHEIGHT+"|"+__FILEMANAGER_DEST_FILE_NAME;
            x++;
          }
          else
          {
            if(inputs[i].id=="responseFlag")
            {
              inputs[i].value="false";
              x++;
            }
            else
            {
              if(inputs[i].id=="FileToUpload")
              {
                if(inputs[i].value=="")
                {
                  performUpload=false;
                  x=3;
                }
                else
                {
                  x++;
                }
              }
            }
          }
        }
        if(performUpload&&x==3)
        {
          __OutputWaitScreen();
          ajaxDoc.forms[0].submit();
          __AjaxTmr=window.setInterval(__WaitForFileUploadResponse,50);
        }
      }
    }
  }
  catch(e){}
}

function __WaitForFileUploadResponse()
{
  var iframe=document.getElementById("AjaxFileUploader");
  var ajaxDoc=(iframe.contentWindow||iframe.contentDocument)
  if(ajaxDoc!=null)
  {
    try
    {    
      var responseFlag=ajaxDoc.document.getElementById("responseFlag");
      if(responseFlag!=null&&responseFlag.value=="true")
      {
        window.clearInterval(__AjaxTmr);
        __HideWaitScreen();
        __FILEMANAGER_IMAGETOBECROPPED=ajaxDoc.document.getElementById("fileId").value;
        __FILEMANAGER_UPLOADWIDTH=ajaxDoc.document.getElementById("uploadWidth").value*1;
        __FILEMANAGER_UPLOADHEIGHT=ajaxDoc.document.getElementById("uploadHeight").value*1;
        if(__FILEMANAGER_FILETYPE==0&&__FILEMANAGER_ALLOWCROPPING&&(__FILEMANAGER_UPLOADWIDTH!=__FILEMANAGER_IMAGEWIDTH||__FILEMANAGER_UPLOADHEIGHT!=__FILEMANAGER_IMAGEHEIGHT)&&__FILEMANAGER_UPLOADWIDTH!=0&&__FILEMANAGER_UPLOADHEIGHT!=0)
        {
          __FILEMANAGER_DELETEIFCANCELLED=true;
          __CropImage();
        }
        else
        {
          if(__FILEMANAGER_FILETYPE==0&&(__FILEMANAGER_UPLOADWIDTH==0||__FILEMANAGER_UPLOADHEIGHT==0))
          {
            __ShowMessage("File Upload Error","The file that you have uploaded is invalid.",0,"Okay",null,null,null,null,null);
          }
          else
          {
            if(__FILEMANAGER_DEST_FILE_NAME!="")
            {
              __SelectFile(__FILEMANAGER_IMAGETOBECROPPED);
            }
            else
            {
              __FILEMANAGER_REQ_TYPE=1;
              __GetFolderInfo();
            }
          }
        }
      }
    }
    catch(e)
    {
      window.clearInterval(__AjaxTmr);
      __HideWaitScreen();
      iframe.src=__RequestPath+"/DesktopModules/OALUtils/Upload.aspx";
    }
  }
}

function __SelectFile(url)
{
  if(__FILEMANAGER_FILETYPE==0&&__FILEMANAGER_ALLOWCROPPING)
  {
    var reqData="<validateImage><imageUrl><![CDATA["+url+"]]></imageUrl><width>"+__FILEMANAGER_IMAGEWIDTH+"</width><height>"+__FILEMANAGER_IMAGEHEIGHT+"</height></validateImage>";
    __MakeRequest(__FILEMANAGER_ID,reqData,__ReturnFromValidatingImage,__FILEMANAGER_FAILFUNC);   
  }
  else
  {
    __CancelFileManager();
    new __FILEMANAGER_UPDATEFUNC(url);
  }
}

function __CancelFileManager(execCancelFunc)
{
  __RemoveEntity("folders");
  __HideDialog(__FILEMANAGER_DIALOG);
  if(execCancelFunc)
  {
    if(__FILEMANAGER_CANCELFUNC!=null)
    {
      new __FILEMANAGER_CANCELFUNC;
    }
  }
}

function __ReturnFromValidatingImage()
{
  var performCrop=__BooleanNodeValue(__Resp,"validatedImage/crop");
  if(performCrop)
  {
    __FILEMANAGER_IMAGETOBECROPPED=__NodeValue(__Resp,"validatedImage/imageUrl");
    __FILEMANAGER_UPLOADWIDTH=__NodeValue(__Resp,"validatedImage/width");
    __FILEMANAGER_UPLOADHEIGHT=__NodeValue(__Resp,"validatedImage/height");
    __FILEMANAGER_DELETEIFCANCELLED=false;
    __CropImage();
  }
  else
  {
    __CancelFileManager(false);
    new __FILEMANAGER_UPDATEFUNC(__NodeValue(__Resp,"validatedImage/imageUrl"));
  }
}

function __CropImage()
{
  if(__FILEMANAGER_CROPDLG==null)
  {
    __FILEMANAGER_CROPDLG=document.getElementById("CropDialog");
    if(__FILEMANAGER_CROPDLG==null)
    {
      __FILEMANAGER_CROPDLG=document.createElement("div");
      __FILEMANAGER_CROPDLG.className="Dialog";
      __FILEMANAGER_CROPDLG.id="CropTool";
      document.body.appendChild(__FILEMANAGER_CROPDLG);
    }
  }
  __FILEMANAGER_CROPDLG.setAttribute("positioning","IGNORE");
  var paramNames=new Array();
  var paramVals=new Array();
  paramNames.push("requestPath");
  paramVals.push(__RequestPath);
  paramNames.push("imageUrl");
  paramVals.push(__FILEMANAGER_IMAGETOBECROPPED);
  paramNames.push("width");
  paramVals.push(__FILEMANAGER_UPLOADWIDTH);
  paramNames.push("height");
  paramVals.push(__FILEMANAGER_UPLOADHEIGHT);
  paramNames.push("requiredWidth");
  paramVals.push(__FILEMANAGER_IMAGEWIDTH);
  paramNames.push("requiredHeight");
  paramVals.push(__FILEMANAGER_IMAGEHEIGHT);
  paramNames.push("showFiles");
  paramVals.push(__FILEMANAGER_SHOWFILES.toString());
  __Transform(__FILEMANAGER_CROPDLG,__dataXml,__RequestPath+"/DesktopModules/OALUtils/XSLT/Crop.xsl",paramNames,paramVals);
  __FILEMANAGER_CROPRESIZETOOL=document.getElementById("CropResizeTool");
  document.body.appendChild(__FILEMANAGER_CROPRESIZETOOL);
  __FILEMANAGER_CROPMASK=document.getElementById("CropMask");
  document.body.appendChild(__FILEMANAGER_CROPMASK);
  __FILEMANAGER_CROPRESIZE=document.getElementById("CropResize");
  document.body.appendChild(__FILEMANAGER_CROPRESIZE);
  __FILEMANAGER_SELECTEDAREA=document.getElementById("SelectedArea");
  __FILEMANAGER_SELECTEDAREA.src+="?'"+new Date().getTime()+"'";
  __FILEMANAGER_PREVIEWIMAGE=document.getElementById("PreviewImage");
  __FILEMANAGER_PREVIEWIMAGE.src+="?'"+new Date().getTime()+"'";
  __ShowDialog(__FILEMANAGER_CROPDLG);
  __FILEMANAGER_CROPDLG.style.top=((__ClientHeight()-__FILEMANAGER_CROPDLG.offsetHeight)/2+__ScrollTop())+"px";    
  __FILEMANAGER_CROPDLG.style.left=((__ClientWidth()-__FILEMANAGER_CROPDLG.offsetWidth)/2+__ScrollLeft())+"px";
  
  // Position the crop image.
  __FILEMANAGER_CROPIMG=document.getElementById("ImageToBeCropped");
  __FILEMANAGER_CROPIMG.src+="?'"+new Date().getTime()+"'";
  __FILEMANAGER_CROPIMG.style.left=__FindPosX(__FILEMANAGER_CROPIMG)+"px";
  __FILEMANAGER_CROPIMG.style.top=__FindPosY(__FILEMANAGER_CROPIMG)+"px";
  if(__FILEMANAGER_UPLOADWIDTH>__FILEMANAGER_UPLOADHEIGHT)
  {
    __FILEMANAGER_CROPIMG.style.width="450px";
    __FILEMANAGER_CROPIMG.style.height=(450*__FILEMANAGER_UPLOADHEIGHT/__FILEMANAGER_UPLOADWIDTH)+"px";
    __FILEMANAGER_PREVIEWIMAGE.style.width="450px";
    __FILEMANAGER_PREVIEWIMAGE.style.height=(450*__FILEMANAGER_UPLOADHEIGHT/__FILEMANAGER_UPLOADWIDTH)+"px";
  }
  else
  {
    __FILEMANAGER_CROPIMG.style.height="300px";
    __FILEMANAGER_CROPIMG.style.width=(300*__FILEMANAGER_UPLOADWIDTH/__FILEMANAGER_UPLOADHEIGHT)+"px";
    __FILEMANAGER_PREVIEWIMAGE.style.height="300px";
    __FILEMANAGER_PREVIEWIMAGE.style.width=(300*__FILEMANAGER_UPLOADWIDTH/__FILEMANAGER_UPLOADHEIGHT)+"px";
  }
  
  __PositionResizeTool(false);
    
  // Position mask over the image.
  __FILEMANAGER_CROPMASK.style.left=__FindPosX(__FILEMANAGER_CROPIMG)+"px";
  __FILEMANAGER_CROPMASK.style.top=(__FindPosY(__FILEMANAGER_CROPIMG)*1+(BrowserDetect.browser=="Explorer"&&BrowserDetect.version<8?2:0))+"px";
  __FILEMANAGER_CROPMASK.style.width=(__FILEMANAGER_CROPIMG.offsetWidth+2)+"px";
  __FILEMANAGER_CROPMASK.style.height=(__FILEMANAGER_CROPIMG.offsetHeight+2)+"px";
  
  // Initialise mouse actions.
  __FILEMANAGER_CROPDOWN=false;
  __FILEMANAGER_RESIZECROPDOWN=false;
}

function __PositionResizeTool(mouseMove)
{
  var imgLeft=__FindPosX(__FILEMANAGER_CROPIMG);
  var imgTop=__FindPosY(__FILEMANAGER_CROPIMG)*1+(BrowserDetect.browser=="Explorer"&&BrowserDetect.version<8?2:0);
  var left=imgLeft;
  var top=imgTop;
  if(mouseMove)
  {
    var deltaX=__FILEMANAGER_CROPX+(__MouseX-__InitMouseX);
    var deltaY=__FILEMANAGER_CROPY+(__MouseY-__InitMouseY);
    deltaX=(deltaX<0?0:deltaX);
    deltaX=(deltaX>__FILEMANAGER_CROPIMG.offsetWidth-__FILEMANAGER_CROPRESIZETOOL.offsetWidth?__FILEMANAGER_CROPIMG.offsetWidth-__FILEMANAGER_CROPRESIZETOOL.offsetWidth:deltaX);
    deltaY=(deltaY<0?0:deltaY);
    deltaY=(deltaY>__FILEMANAGER_CROPIMG.offsetHeight-__FILEMANAGER_CROPRESIZETOOL.offsetHeight?__FILEMANAGER_CROPIMG.offsetHeight-__FILEMANAGER_CROPRESIZETOOL.offsetHeight:deltaY);
    left+=deltaX;
    top+=deltaY;
  }
  
  // Position the cropping tool.
  __FILEMANAGER_CROPRESIZETOOL.style.left=left+"px";
  __FILEMANAGER_CROPRESIZETOOL.style.top=top+"px";
  
  // Positon the resizing image.
  __FILEMANAGER_CROPRESIZE.style.left=(left+__FILEMANAGER_CROPRESIZETOOL.offsetWidth-__FILEMANAGER_CROPRESIZE.offsetWidth)+"px";
  __FILEMANAGER_CROPRESIZE.style.top=(top+__FILEMANAGER_CROPRESIZETOOL.offsetHeight-__FILEMANAGER_CROPRESIZE.offsetHeight)+"px";
  __FILEMANAGER_SELECTEDAREA.style.left=(imgLeft-__FILEMANAGER_CROPRESIZETOOL.offsetLeft)+"px";
  __FILEMANAGER_SELECTEDAREA.style.top=(imgTop-__FILEMANAGER_CROPRESIZETOOL.offsetTop)+"px";
  
  // Position the preview image.
  __FILEMANAGER_PREVIEWIMAGE.style.left=(__FILEMANAGER_PREVIEWIMAGE.offsetWidth*(imgLeft-__FILEMANAGER_CROPRESIZETOOL.offsetLeft)/__FILEMANAGER_CROPIMG.offsetWidth)+"px";
  __FILEMANAGER_PREVIEWIMAGE.style.top=(__FILEMANAGER_PREVIEWIMAGE.offsetHeight*(imgTop-__FILEMANAGER_CROPRESIZETOOL.offsetTop)/__FILEMANAGER_CROPIMG.offsetHeight)+"px";
}

function __CropMouseMove(e)
{
  if(e)
  {
    __MouseX=e.pageX;
    __MouseY=e.pageY; 
  }
  else
  {
    __MouseX=event.x;
    __MouseY=event.y;
  }
  if(__FILEMANAGER_CROPDOWN)
  {
    __PositionResizeTool(true);
    return(false);
  }
  else
  {
    if(__FILEMANAGER_RESIZECROPDOWN)
    {
      __CropResizeImage();
      return(false);
    }
  }
}

function __CropMouseDown(e)
{
  if(e)
  {
    __InitMouseX=e.pageX;
    __InitMouseY=e.pageY; 
  }
  else
  {
    __InitMouseX=event.x;
    __InitMouseY=event.y;
  }
}

function __CropResizeImage()
{
  var deltaX;
  var deltaY;
  if((__MouseX-__InitMouseX)>(__MouseY-__InitMouseY))
  {
    deltaY=(__MouseY-__InitMouseY);
    deltaX=deltaY*__FILEMANAGER_IMAGEWIDTH/__FILEMANAGER_IMAGEHEIGHT;
  }
  else
  {
    deltaX=(__MouseX-__InitMouseX);
    deltaY=deltaX*__FILEMANAGER_IMAGEHEIGHT/__FILEMANAGER_IMAGEWIDTH;
  }
  var newWidth=__FILEMANAGER_CROPWIDTH+deltaX;
  var newHeight=__FILEMANAGER_CROPHEIGHT+deltaY;
  if(__FILEMANAGER_IMAGEWIDTH>__FILEMANAGER_IMAGEHEIGHT)
  {
    if(newWidth<50)
    {
      newWidth=50;
      newHeight=50*__FILEMANAGER_IMAGEHEIGHT/__FILEMANAGER_IMAGEWIDTH;
    }
  }
  else
  {
    if(newHeight<50)
    {
      newHeight=50;
      newWidth=50*__FILEMANAGER_IMAGEWIDTH/__FILEMANAGER_IMAGEHEIGHT;
    }
  }
  var maxWidth=__FindPosX(__FILEMANAGER_CROPIMG)+__FILEMANAGER_CROPIMG.offsetWidth+(BrowserDetect.browser=="Explorer"?-2:0);
  var maxHeight=__FindPosY(__FILEMANAGER_CROPIMG)+__FILEMANAGER_CROPIMG.offsetHeight+(BrowserDetect.browser=="Explorer"?-4:0);
  if(__FILEMANAGER_CROPRESIZETOOL.offsetLeft+newWidth>maxWidth)
  {
    newWidth=maxWidth-__FILEMANAGER_CROPRESIZETOOL.offsetLeft;
    newHeight=newWidth*__FILEMANAGER_IMAGEHEIGHT/__FILEMANAGER_IMAGEWIDTH;
  }
  if(__FILEMANAGER_CROPRESIZETOOL.offsetTop+newHeight>maxHeight)
  {
    newHeight=maxHeight-__FILEMANAGER_CROPRESIZETOOL.offsetTop;
    newWidth=newHeight*__FILEMANAGER_IMAGEWIDTH/__FILEMANAGER_IMAGEHEIGHT;
  }
  __FILEMANAGER_CROPRESIZETOOL.style.width=(newWidth+(BrowserDetect.browser=="Explorer"?0:-2))+"px";
  __FILEMANAGER_CROPRESIZETOOL.style.height=(newHeight+(BrowserDetect.browser=="Explorer"?4:-2))+"px";
  __FILEMANAGER_CROPRESIZE.style.left=(__FILEMANAGER_CROPRESIZETOOL.offsetLeft+__FILEMANAGER_CROPRESIZETOOL.offsetWidth-__FILEMANAGER_CROPRESIZE.offsetWidth)+"px";
  __FILEMANAGER_CROPRESIZE.style.top=(__FILEMANAGER_CROPRESIZETOOL.offsetTop+__FILEMANAGER_CROPRESIZETOOL.offsetHeight-__FILEMANAGER_CROPRESIZE.offsetHeight)+"px";
  if(__FILEMANAGER_IMAGEWIDTH>__FILEMANAGER_IMAGEHEIGHT)
  {
    __FILEMANAGER_PREVIEWIMAGE.style.height=(__FILEMANAGER_CROPIMG.offsetHeight*__FILEMANAGER_IMAGEHEIGHT/__FILEMANAGER_CROPRESIZETOOL.offsetHeight+(BrowserDetect.browser=="Explorer"?0:2))+"px";
    __FILEMANAGER_PREVIEWIMAGE.style.width=(__FILEMANAGER_PREVIEWIMAGE.offsetHeight*__FILEMANAGER_CROPIMG.offsetWidth/__FILEMANAGER_CROPIMG.offsetHeight)+"px";
  }
  else
  {
    __FILEMANAGER_PREVIEWIMAGE.style.width=(__FILEMANAGER_CROPIMG.offsetWidth*__FILEMANAGER_IMAGEWIDTH/__FILEMANAGER_CROPRESIZETOOL.offsetWidth+(BrowserDetect.browser=="Explorer"?0:2))+"px";
    __FILEMANAGER_PREVIEWIMAGE.style.height=(__FILEMANAGER_PREVIEWIMAGE.offsetWidth*__FILEMANAGER_CROPIMG.offsetHeight/__FILEMANAGER_CROPIMG.offsetWidth)+"px";
  }
  __FILEMANAGER_PREVIEWIMAGE.style.left=((__FILEMANAGER_PREVIEWIMAGE.offsetWidth*(__FindPosX(__FILEMANAGER_CROPIMG)-__FILEMANAGER_CROPRESIZETOOL.offsetLeft)/__FILEMANAGER_CROPIMG.offsetWidth))+"px";
  __FILEMANAGER_PREVIEWIMAGE.style.top=((__FILEMANAGER_PREVIEWIMAGE.offsetHeight*(__FindPosY(__FILEMANAGER_CROPIMG)-__FILEMANAGER_CROPRESIZETOOL.offsetTop)/__FILEMANAGER_CROPIMG.offsetHeight))+"px";
}

function __DragCropMouseDown()
{
  __FILEMANAGER_CROPX=__FindPosX(__FILEMANAGER_CROPRESIZETOOL)-__FindPosX(__FILEMANAGER_CROPIMG);
  __FILEMANAGER_CROPY=__FindPosY(__FILEMANAGER_CROPRESIZETOOL)-__FindPosY(__FILEMANAGER_CROPIMG);
  __FILEMANAGER_CROPRESIZETOOL.className="CropResizeTool CropResizeToolOver";
  __FILEMANAGER_CROPDOWN=true;
  return(false);
}

function __CropMouseUp()
{
  if(__FILEMANAGER_CROPRESIZETOOL)
  {
    __FILEMANAGER_CROPRESIZETOOL.className="CropResizeTool";
  }
  __FILEMANAGER_CROPDOWN=false;
  __FILEMANAGER_RESIZECROPDOWN=false;
}

function __ResizeCropMouseDown()
{
  __FILEMANAGER_CROPWIDTH=__FILEMANAGER_CROPRESIZETOOL.offsetWidth;
  __FILEMANAGER_CROPHEIGHT=__FILEMANAGER_CROPRESIZETOOL.offsetHeight;
  __FILEMANAGER_CROPRESIZETOOL.className="CropResizeTool CropResizeToolOver";
  __FILEMANAGER_RESIZECROPDOWN=true;
  return(false);
}

function __SaveCropChanges(makeCopy)
{
  var x=__FILEMANAGER_CROPRESIZETOOL.offsetLeft-__FindPosX(__FILEMANAGER_CROPIMG);
  var y=__FILEMANAGER_CROPRESIZETOOL.offsetTop-__FindPosY(__FILEMANAGER_CROPIMG)-(BrowserDetect.browser=="Explorer"&&BrowserDetect.version<8?2:0);
  var width=__FILEMANAGER_CROPRESIZETOOL.offsetWidth;
  var height=__FILEMANAGER_CROPRESIZETOOL.offsetHeight;
  var reqData="<cropImage><imageUrl><![CDATA["+__FILEMANAGER_IMAGETOBECROPPED+"]]></imageUrl><x>"+x+"</x><y>"+y+"</y><width>"+width+"</width><height>"+height+"</height><requiredWidth>"+__FILEMANAGER_IMAGEWIDTH+"</requiredWidth><requiredHeight>"+__FILEMANAGER_IMAGEHEIGHT+"</requiredHeight><makeCopy>"+makeCopy.toString()+"</makeCopy><preserveFileName>"+(__FILEMANAGER_DEST_FILE_NAME==""?false:true)+"</preserveFileName></cropImage>";
  __MakeRequest(__FILEMANAGER_ID,reqData,__CloseCropDialog,__FILEMANAGER_FAILFUNC);
}

function __CancelCropDialog()
{
  if(__FILEMANAGER_DELETEIFCANCELLED)
  {
    var reqData="<deleteFile><url><![CDATA["+__FILEMANAGER_IMAGETOBECROPPED+"]]></url></deleteFile>";
    __MakeRequest(__FILEMANAGER_ID,reqData,__CloseCropDialog(true),__FILEMANAGER_FAILFUNC);
  }
  else
  {
    __CloseCropDialog(true);
  }
}

function __CloseCropDialog(cancel)
{
  document.body.removeChild(__FILEMANAGER_CROPRESIZETOOL);
  document.body.removeChild(__FILEMANAGER_CROPMASK);
  document.body.removeChild(__FILEMANAGER_CROPRESIZE);
  __HideDialog(__FILEMANAGER_CROPDLG);
  if(__FILEMANAGER_SHOWFILES)
  {
    __FILEMANAGER_REQ_TYPE=1;
    __GetFolderInfo();
  }
  else
  {
    if(cancel==true)
    {
      __CancelFileManager(true);
    }
    else
    {
      __SelectFile(__FILEMANAGER_IMAGETOBECROPPED);
    }    
  }
}

function __DeleteFile(url)
{
  var reqData="<deleteFile><url><![CDATA["+url+"]]></url></deleteFile>";
  __MakeRequest(__FILEMANAGER_ID,reqData,__ReturnFromGettingFolderInfo,__FILEMANAGER_FAILFUNC);
}

function __ShowCalendar(e,ctlId,template)
{
  __CALENDAR_TARGET=ctlId;
  __CALENDAR_DLG=__CreateDialog("CalendarControl","&#160;",false);
  __CALENDAR_DLG.className="Dialog Calendar";
  __CALENDAR_DLG.setAttribute("positioning","IGNORE");
  var id=__CALENDAR_DLG.id;
  __ShowDialog(__CALENDAR_DLG);
  __CALENDAR_DLG.style.left=((e.x!=null?e.x:e.clientX)+document.documentElement.scrollLeft-(BrowserDetect.browser=="Explorer"&&BrowserDetect.version>=8?__ScrollLeft():0)-45)+"px";
  __CALENDAR_DLG.style.top=((e.y!=null?e.y:e.clientY)+document.documentElement.scrollTop-(BrowserDetect.browser=="Explorer"&&BrowserDetect.version>=8?__ScrollTop():0)-45)+"px";
  var date=__GetValue(ctlId);
  __CALENDAR_HOURS=null;
  __CALENDAR_MINUTES=null;
  __CALENDAR_SECONDS=null;
  __CALENDAR_CURR_DATE=__ParseDate(date);
  __ParseTemplate(template);
  __RenderCalendar(date,(__CALENDAR_INCLUDE_DAY==true?"day":"month"));
}
function __ParseTemplate(template)
{
  if(template==null||template=="")
  {
    template="dd MMM yyyy";
  }
  __CALENDAR_INCLUDE_DAY=false;
  __CALENDAR_INCLUDE_TIME=false;
  __CALENDAR_OUTPUT=new Array();  
  var parts=__Replace(__Replace(template,"/","|")," ","|");
  var templateParts=parts.split("|");
  __CALENDAR_SEPARATOR=(template.indexOf("/")>-1?"/":" ");
  
  for(i=0;i<templateParts.length;i++)
  {
    switch(templateParts[i])
    {
      case "d":
        __CALENDAR_OUTPUT.push("shortDay");
        __CALENDAR_INCLUDE_DAY=true;
        break;
      case "dd":
        __CALENDAR_OUTPUT.push("day");
        __CALENDAR_INCLUDE_DAY=true;
        break;
      case "M":
        __CALENDAR_OUTPUT.push("shortNumericMonth");
        break;
      case "MM":
        __CALENDAR_OUTPUT.push("numericMonth");
        break;
      case "MMM":
        __CALENDAR_OUTPUT.push("shortMonth");
        break;
      case "MMMM":
        __CALENDAR_OUTPUT.push("longMonth");
        break;
      case "yy":
        __CALENDAR_OUTPUT.push("shortYear");
        break;
      case "yyyy":
        __CALENDAR_OUTPUT.push("year");
        break;
      default:
        if(templateParts[i].indexOf(":")>-1)
        {
          var timeParts=templateParts[i].split(":");
          var timePartOutput=false;
          for(var x=0;x<timeParts.length;x++)
          {
            if(timePartOutput)
            {
              __CALENDAR_OUTPUT.push("timeSepartor");
              timePartOutput=false;
            }
            switch(timeParts[x])
            {
              case "HH":
                __CALENDAR_OUTPUT.push("hour");
                __CALENDAR_INCLUDE_TIME=true;
                timePartOutput=true;
                break;
              case "mm":
                __CALENDAR_OUTPUT.push("minutes");
                __CALENDAR_INCLUDE_TIME=true;
                timePartOutput=true;
                break;
              case "ss":
                __CALENDAR_OUTPUT.push("seconds");
                __CALENDAR_INCLUDE_TIME=true;
                timePartOutput=true;
                break;
            }
          }
        }
        break;
    }
  }
}
function __RenderCalendar(date,mode)
{
  var dateObj=__ParseDate(date);
  var monthName=(dateObj.getMonth()==0?"January":dateObj.getMonth()==1?"February":dateObj.getMonth()==2?"March":dateObj.getMonth()==3?"April":dateObj.getMonth()==4?"May":dateObj.getMonth()==5?"June":dateObj.getMonth()==6?"July":dateObj.getMonth()==7?"August":dateObj.getMonth()==8?"September":dateObj.getMonth()==9?"October":dateObj.getMonth()==10?"November":"December");
  var lastDay=32 - new Date(dateObj.getFullYear(),dateObj.getMonth(),32).getDate();
  var prevLastDay=32 - new Date((dateObj.getMonth()==0?dateObj.getFullYear()-1:dateObj.getFullYear()),(dateObj.getMonth()==0?11:dateObj.getMonth()-1),32).getDate();
  var nextLastDay=32 - new Date((dateObj.getMonth()==11?dateObj.getFullYear()+1:dateObj.getFullYear()),(dateObj.getMonth()==11?0:dateObj.getMonth()+1),32).getDate();
  var monthStartObj=new Date();
  monthStartObj.setFullYear(dateObj.getFullYear(), dateObj.getMonth(), 1);
  var calendarInfo=__LoadXml("<calendar />");
  var paramNames=new Array();
  var paramVals=new Array();
  paramNames.push("requestPath");
  paramVals.push(__RequestPath);
  paramNames.push("seconds");
  paramVals.push(dateObj.getSeconds().toString());
  paramNames.push("minutes");
  paramVals.push(dateObj.getMinutes().toString());
  paramNames.push("hours");
  paramVals.push(dateObj.getHours().toString());
  paramNames.push("day");
  paramVals.push((monthStartObj.getDay()==0?6:monthStartObj.getDay()-1).toString());
  paramNames.push("date");
  paramVals.push(dateObj.getDate().toString());
  paramNames.push("month");
  paramVals.push(dateObj.getMonth().toString());
  paramNames.push("monthName");
  paramVals.push(monthName);
  paramNames.push("year");
  paramVals.push(dateObj.getFullYear().toString());
  paramNames.push("lastDay");
  paramVals.push(lastDay.toString());
  paramNames.push("prevLastDay");
  paramVals.push(prevLastDay.toString());
  paramNames.push("nextLastDay");
  paramVals.push(nextLastDay.toString());
  paramNames.push("currSelectedDay");
  paramVals.push(__CALENDAR_CURR_DATE.getDate().toString());
  paramNames.push("includeTime");
  paramVals.push(__CALENDAR_INCLUDE_TIME.toString());
  paramNames.push("includeDay");
  paramVals.push(__CALENDAR_INCLUDE_DAY.toString());
  paramNames.push("mode");
  paramVals.push(mode);
  __Transform(document.getElementById("content_"+__CALENDAR_DLG.id),calendarInfo,__RequestPath+"/DesktopModules/OALUtils/XSLT/Calendar.xsl",paramNames,paramVals);
}
function __ValidateTimePeriod(ctlId,max)
{
  var val=__GetNumericValue(ctlId);
  if(val<0)
  {
    val=0;
  }
  else
  {
    if(val>max)
    {
      val=max;
    }
  }
  val=val.toString();
  if(val.length==1)
  {
    val="0"+val;
  }
  switch(ctlId)
  {
    case("HoursTextBox"):
      __CALENDAR_HOURS=val;
      break;
    case("MinutesTextBox"):
      __CALENDAR_MINUTES=val;
      break;
    default:
      __CALENDAR_SECONDS=val;
      break;
  }
  __SetValue(ctlId,val);
}
function __SetDate(date)
{
  var dateObj=__ParseDate(date);
  if(__CALENDAR_INCLUDE_TIME)
  {
    dateObj.setHours(__GetNumericValue("HoursTextBox"),__GetNumericValue("MinutesTextBox"),__GetNumericValue("SecondsTextBox"));
  }
  __SetValue(__CALENDAR_TARGET,__ParseDateToString(dateObj));
  __DestroyDialog(__CALENDAR_DLG);
}

function __ParseDateToString(dateObj)
{
  var dateStr="";
  for(var i=0;i<__CALENDAR_OUTPUT.length;i++)
  {
    switch(__CALENDAR_OUTPUT[i])
    {
      case "shortDay":
        dateStr+=dateObj.getDate().toString()+__CALENDAR_SEPARATOR;
        break;
      case "day":
        dateStr+=(dateObj.getDate()<10?"0"+dateObj.getDate().toString():dateObj.getDate().toString())+__CALENDAR_SEPARATOR;
        break;
      case "shortNumericMonth":
        dateStr+=(dateObj.getMonth()+1).toString()+__CALENDAR_SEPARATOR;
        break;
      case "numericMonth":
        dateStr+=(dateObj.getMonth()<9?"0"+(dateObj.getMonth()+1).toString():(dateObj.getMonth()+1).toString())+__CALENDAR_SEPARATOR;
        break;
      case "shortMonth":
        dateStr+=(dateObj.getMonth()==0?"Jan":dateObj.getMonth()==1?"Feb":dateObj.getMonth()==2?"Mar":dateObj.getMonth()==3?"Apr":dateObj.getMonth()==4?"May":dateObj.getMonth()==5?"Jun":dateObj.getMonth()==6?"Jul":dateObj.getMonth()==7?"Aug":dateObj.getMonth()==8?"Sep":dateObj.getMonth()==9?"Oct":dateObj.getMonth()==10?"Nov":"Dec")+__CALENDAR_SEPARATOR;
        break;
      case "longMonth":
        dateStr+=(dateObj.getMonth()==0?"January":dateObj.getMonth()==1?"February":dateObj.getMonth()==2?"March":dateObj.getMonth()==3?"April":dateObj.getMonth()==4?"May":dateObj.getMonth()==5?"June":dateObj.getMonth()==6?"July":dateObj.getMonth()==7?"August":dateObj.getMonth()==8?"September":dateObj.getMonth()==9?"October":dateObj.getMonth()==10?"November":"December")+__CALENDAR_SEPARATOR;
        break;
      case "shortYear":
        dateStr+=dateObj.getFullYear().toString().substr(2,2)+" ";
        break;
      case "year":
        dateStr+=dateObj.getFullYear().toString()+" ";
        break;
      case "hour":
        dateStr+=(dateObj.getHours()<10?"0"+dateObj.getHours().toString():dateObj.getHours().toString());
        break;
      case "minutes":
        dateStr+=(dateObj.getMinutes()<10?"0"+dateObj.getMinutes().toString():dateObj.getMinutes().toString());
        break;
      case "seconds":
        dateStr+=(dateObj.getSeconds()<10?"0"+dateObj.getSeconds().toString():dateObj.getSeconds().toString());
        break;
      case "timeSepartor":
        dateStr+=":";
        break;
    }
  }
  return(dateStr.replace(/^\s+|\s+$/g, ''));
}

function __ParseDate(dateString)
{
  var currDate=new Date();
  __CALENDAR_SECONDS=currDate.getSeconds();
  __CALENDAR_MINUTES=currDate.getMinutes();
  __CALENDAR_HOURS=currDate.getHours();
  var day=currDate.getDate();
  var month=currDate.getMonth();
  var year=currDate.getFullYear();  
  var dateSplit=dateString.split(" ");
    
  // Parse time.
  var timeIndex=-1;
  for(var i=0;i<dateSplit.length&&timeIndex==-1;i++)
  {
    if(dateSplit[i].indexOf(":")>-1)
    {
      var timeParts=dateSplit[i].split(":");
      if(!isNaN(timeParts[0])&&timeParts[0]*1>=0&&timeParts[0]*1<=23)
      {
        __CALENDAR_HOURS=timeParts[0]*1;
      }
      if(timeParts.length>1)
      {
        if(!isNaN(timeParts[1])&&timeParts[1]*1>=0&&timeParts[1]*1<=59)
        {
          __CALENDAR_MINUTES=timeParts[1]*1;
        }
      }
      if(timeParts.length>2)
      {
        if(!isNaN(timeParts[2])&&timeParts[2]*1>=0&&timeParts[2]*1<=59)
        {
          __CALENDAR_SECONDS=timeParts[2]*1;
        }
      }
      timeIndex=i;
    }
  }
  
  // Parse date.
  var index=(timeIndex==0?1:0);
  if(index<dateSplit.length)
  {
    if(dateSplit[index].indexOf("/")>=1)
    {
      // Date in the format dd/mm/yy possibly?
      var shortParts=dateSplit[index].split("/");
      if(shortParts.length==3)
      {
        if(!isNaN(shortParts[0])&&shortParts[0]*1>=0&&shortParts[0]*1<=31&&!isNaN(shortParts[1])&&shortParts[1]*1>=1&&shortParts[1]*1<=12&&!isNaN(shortParts[2])&&shortParts[2])
        {
          var tempDay=shortParts[0]*1;
          var tempMonth=shortParts[1]*1-1;
          var tempYear=shortParts[2]*1;
          try
          {
            var tempDate=new Date();
            tempDate.setFullYear(tempYear,tempMonth,tempDay);
            day=tempDay;
            month=tempMonth;
            year=tempYear;
          }
          catch(e){}
        }
      }
      
    }
    else
    {
      // Long date.
      var dayFound=false;
      var monthFound=false;
      var yearFound=false;
      var dateParts=new Array();
      for(var i=0;i<dateSplit.length;i++)
      {
        if(i!=timeIndex)
        {
          var part=dateSplit[i].replace(/^\s+|\s+$/g, '').toLowerCase();
          if(part!="")
          {
            if(part.endsWith(","))
            {
              part=part.substr(0,part.length-1);
            }
            if(part!=","&&isNaN(part)&&!monthFound)
            {
              // Month?
              if(part=="jan"||part=="january"||part=="feb"||part=="february"||part=="mar"||part=="march"||part=="apr"||part=="april"||part=="may"||part=="jun"||part=="june"||part=="jul"||part=="july"||part=="aug"||part=="august"||part=="sep"||part=="sept"||part=="september"||part=="oct"||part=="october"||part=="nov"||part=="november"||part=="dec"||part=="december")
              {
                month=((part=="jan"||part=="january")?0:(part=="feb"||part=="february")?1:(part=="mar"||part=="march")?2:(part=="apr"||part=="april")?3:part=="may"?4:(part=="jun"||part=="june")?5:(part=="jul"||part=="july")?6:(part=="aug"||part=="august")?7:(part=="sep"||part=="sept"||part=="september")?8:(part=="oct"||part=="october")?9:(part=="nov"||part=="november")?10:11);
                monthFound=true;
              }
            }
            else
            {
              if(part.length<=2&&!dayFound&&part*1>=0&&part*1<=31)
              {
                day=part*1;
                dayFound=true;
              }
              else
              {
                if(!yearFound&&(part.length==2||part.length==4))
                {
                  if(part.length==2)
                  {
                    if(part*1>=0&&part*1<=49)
                    {
                      year=("20"+part)*1;
                    }
                    else
                    {
                      year=("19"+part)*1;
                    }
                    yearFound=true;
                  }
                  else
                  {
                    if(part*1>=1900&&part*1<=2099)
                    {
                      year=part*1;
                      yearFound=true;
                    }
                  }
                }
              }
            }
          }
        }
      }
      if(!dayFound)
      {
        day=1;
      }
    }
  }
  var parsedDate=new Date();
  parsedDate.setFullYear(year,month,day);
  parsedDate.setHours(__CALENDAR_HOURS,__CALENDAR_MINUTES,__CALENDAR_SECONDS);
  return(parsedDate);
}

function __WindowResize()
{
  var w;
  var h;
  if (self.innerHeight)
  {
    w=self.innerWidth;
    h=self.innerHeight;
  }
  else 
  {
    if(document.documentElement&&document.documentElement.clientHeight)
    {
      w=document.documentElement.clientWidth;
      h=document.documentElement.clientHeight;
    }
    else
    {
      if(document.body)
      {
        w=document.body.clientWidth;
        h=document.body.clientHeight;
      }
    }
  }
  var backdropList=new Array('__DialogBackdrop','__DialogBackdropTransparent');
  for(var i=0;i<backdropList.length;i++)
  {
    var backdrop=document.getElementById(backdropList[i]);  
    if(backdrop!=null&&backdrop.style.display=="block"){
      backdrop.style.width=(w+__ScrollLeft())+"px";
      backdrop.style.height=(h+__ScrollTop())+"px";
    }
  }
  for(var i=0;i<__dialogs.length;i++)
  {
    var dialog=document.getElementById(__dialogs[i]);      
    if(dialog!=null)
    {
      if(dialog.getAttribute("positioning")==null||dialog.getAttribute("positioning")!="IGNORE")
      {  
        dialog.style.left=((w-dialog.offsetWidth)/2+__ScrollLeft())+"px";
        dialog.style.top=((h-dialog.offsetHeight)/2+__ScrollTop())+"px";  
      }      
    }
  }
  __PositionWaitScreen();
}
function __CreateDialog(id,title,includeTitle,includeCloseLink,closeFunc)
{
  if(includeTitle==null)
  {
    includeTitle=true;
  }
  if(includeCloseLink==null)
  {
    includeCloseLink=false;
  }
  var dialog;
  try
  {
    var prefix=0;
    var newId=id;
    while(document.getElementById(newId)!=null)
    {
      prefix++;
      newId=id+prefix;
    }
    dialog=document.createElement("div");
    dialog.className="Dialog";
    var dialogInner=document.createElement("div");
    dialogInner.className="DialogInner";
    if(includeTitle)
    {
      var titleBar=document.createElement("div");
      titleBar.className="TitleBar";
      var titleSpan=document.createElement("span");
      titleSpan.id="title_"+newId;
      titleSpan.innerHTML=title;
      titleBar.appendChild(titleSpan);
      if(includeCloseLink)
      {
        var closeLink=document.createElement("a");
        closeLink.href="#"
        if(closeFunc!=null)
        {
          closeLink.onclick=closeFunc;
        }
        else
        {        
          closeLink.onclick=function(){__DestroyDialog(document.getElementById(newId));return(false);}
        }
        closeLink.innerHTML="[Close]";
        titleBar.appendChild(closeLink);
      }
      var clear=document.createElement("div");
      clear.className="Clear";
      titleBar.appendChild(clear);
    }
    var content=document.createElement("div");
    content.id="content_"+newId;
    content.className="ContentContainer Form";
    if(includeTitle)
    {
      dialogInner.appendChild(titleBar);
    }
    dialogInner.appendChild(content);
    dialog.appendChild(dialogInner);    
    dialog.id=newId;
    document.body.appendChild(dialog);
  }
  catch(e)
  {
    dialog=null;
  }
  return(dialog);
}
function __DestroyDialog(dialog)
{
  if(dialog!=null)
  {
    if(dialog.style.visibility=="visible")
    {
      __HideDialog(dialog);
    }
    if(dialog.parentNode!=null)
    {
      dialog.parentNode.removeChild(dialog);
      dialog.innerHTML="";
    }
    dialog=null;
  }
}
function __ShowDialog(dialog,includeBackdrop)
{
  if(dialog!=null&&(dialog.style.visibility=="hidden"||dialog.style.visibility==""))
  {
    try
    {
      __dialogs.push(dialog.id);
      if(dialog.parentNode==null)
      {
        document.body.appendChild(dialog);
      }            
      dialog.style.visibility="visible";
      dialog.style.zIndex=500+__dialogs.length;
      if(includeBackdrop==null||includeBackdrop==true)
      {
        __CreateBackdrop();
      }
      else
      {
        __WindowResize();
      }
    }
    catch(e){}
  }
}
function __CreateBackdrop(isTransparent)
{
  var backdrop=document.getElementById("__DialogBackdrop");
  if(backdrop==null)
  {
    backdrop=document.createElement("div");
    backdrop.id="__DialogBackdrop";
    backdrop.className="ScreenCover";
    document.body.appendChild(backdrop);
  }
  backdrop.style.display="block";
  backdrop.style.zIndex=499+__dialogs.length;
  __WindowResize();
}
function __HideDialog(dialog)
{
  if(dialog!=null)
  { 
    dialog.style.visibility="hidden";
    __dialogs.pop(dialog.id);
    var backdrop=document.getElementById("__DialogBackdrop")
    if(backdrop!=null)
    {
      if(__dialogs.length==0)
      {
        backdrop.style.display="none";
      }
      else
      {
        backdrop.style.zIndex=499+__dialogs.length;
      }
    }
  }
}
function __ChangeTab(tabName,tabList,tabParent,loadFuncName)
{
  var tabToActivate=document.getElementById(tabName);
  if(tabList!='')
  {
    tabs=tabList.split("|");
    for(var i=0;i<tabs.length;i++)
    {
      document.getElementById(tabs[i]).style.display=(i==0?"block":"none");
    }
  }
  var tabLis=document.getElementById(tabParent).getElementsByTagName("li");
  for(var i=0;i<tabLis.length;i++)
  {
    if(tabLis[i]==tabToActivate)
    {
      tabLis[i].className="current";
      tabLis[i].setAttribute("dataSrc","current");
    }
    else
    {
      tabLis[i].className="";
      tabLis[i].setAttribute("dataSrc","");
    }
  }
  if(tabList!=''&&document.getElementById(tabs[0]).innerHTML=="Loading..."&&loadFuncName!=null)
  {
    __ReqMade=false;
    new loadFuncName;
  }
  return(false);
}
function __ScrollHeight() {	
  if(document.body){
    return __FilterResults (
      0,
	    0,
	    document.body ? document.body.scrollHeight : 0
	  );
  }
  else{
    return __FilterResults (
      0,
	    document.documentElement ? document.documentElement.scrollHeight : 0,
	    document.body ? document.body.scrollHeight : 0
	  );
  }		
}
function __ScrollWidth() {	
  if(document.body){
    return __FilterResults (
      0,
	    0,
	    document.body ? document.body.scrollWidth : 0
	  );
  }
  else{
    return __FilterResults (
      0,
	    document.documentElement ? document.documentElement.scrollWidth : 0,
	    document.body ? document.body.scrollWidth : 0
	  );
  }		
}
function __ClientHeight() {
	return __FilterResults (
		window.innerHeight ? window.innerHeight : 0,
		document.documentElement ? document.documentElement.clientHeight : 0,
		document.body ? document.body.clientHeight : 0
	);
}
function __ClientWidth() {
	return __FilterResults (
		window.innerWidth ? window.innerWidth : 0,
		document.documentElement ? document.documentElement.clientWidth : 0,
		document.body ? document.body.clientWidth : 0
	);
}
function __ScrollTop() {
	return __FilterResults (
		window.pageYOffset ? window.pageYOffset : 0,
		document.documentElement ? document.documentElement.scrollTop : 0,
		document.body ? document.body.scrollTop : 0
	);
}
function __ScrollLeft() {
	return __FilterResults (
		window.pageXOffset ? window.pageXOffset : 0,
		document.documentElement ? document.documentElement.scrollLeft : 0,
		document.body ? document.body.scrollLeft : 0
	);
}
function __FilterResults(n_win, n_docel, n_body) {
	var n_result = n_win ? n_win : 0;
	if (n_docel && (!n_result || (n_result > n_docel)))
		n_result = n_docel;
	return n_body && (!n_result || (n_result > n_body)) ? n_body : n_result;
}
function __FindPosX(obj)
{
  var curleft = 0;
  if(obj.offsetParent)
  {
    while(1)
    {
      curleft += obj.offsetLeft;
      if(!obj.offsetParent)
      {
        break;
      }
      obj = obj.offsetParent;
    }
  }  
  else
  {
    if(obj.x)
    {
      curleft += obj.x;
    }
  }   
  return curleft;
}
function __FindPosY(obj)
{
  var curtop = 0;
  if(obj.offsetParent)
  {
    while(1)
    {
      curtop += obj.offsetTop;
      if(!obj.offsetParent)
      {
        break;
      }
      obj = obj.offsetParent;
    }
  }
  else
  {
    if(obj.y)
    {
      curtop += obj.y;
    }
  }
  return curtop;
}

function getXY(obj)
{
  var curleft = 0;
  var curtop = obj.offsetHeight + 5;
  var border;
  if (obj.offsetParent)
  {
    do
    {
      // XXX: If the element is position: relative we have to add borderWidth
      if (getStyle(obj, 'position') == 'relative')
      {
        if (border = _pub.getStyle(obj, 'border-top-width')) curtop += parseInt(border);
        if (border = _pub.getStyle(obj, 'border-left-width')) curleft += parseInt(border);
      }
      curleft += obj.offsetLeft;
      curtop += obj.offsetTop;
    }
    while (obj = obj.offsetParent)
  }
  else if (obj.x)
  {
    curleft += obj.x;
    curtop += obj.y;
  }
  return {'x': curleft, 'y': curtop};
}
function getStyle(obj, styleProp)
{
  if (obj.currentStyle)
    return obj.currentStyle[styleProp];
  else if (window.getComputedStyle)
    return document.defaultView.getComputedStyle(obj,null).getPropertyValue(styleProp);
}

function __ButtonOver(obj)
{
  obj.setAttribute("dataSrc",obj.className);
  obj.className="current";
}

function __ButtonOut(obj)
{
  obj.className=obj.getAttribute("dataSrc");
}

function __MinMax(obj,panelId)
{
  if(obj.title=='Minimise')
  {
    obj.title="Maximise";
    obj.alt="Maximise";
    obj.src=__RequestPath+"/DesktopModules/OALUtils/Images/max.gif";
  }
  else
  {
    obj.title="Minimise";
    obj.alt="Minimise";
    obj.src=__RequestPath+"/DesktopModules/OALUtils/Images/min.gif";
  }
  var panel=document.getElementById(panelId);
  if(panel)
  {
    panel.style.display=(panel.style.display=="none"?"block":"none");
  }
}

function __ShowShortList(offsetX,offsetY)
{
  offsetX=(offsetX==null?0:offsetX);
  offsetY=(offsetY==null?24:24+offsetY);
  
  __RemoveEntity("connections");
  __AddEntity(__SelectSingleNode(__Resp,"connections"));
  var shortList=document.getElementById("ShortList");
  if(shortList==null)
  {
    shortList=document.createElement("div");
    shortList.id="ShortList";
    document.body.appendChild(shortList);
  }
  if(shortList.style.display!="block")
  {
    __SHORT_LIST_SELECTED_ID=0;
    shortList.style.left=(__FindPosX(__SHORT_LIST_ITEM)+offsetX)+"px";
    shortList.style.top=(__FindPosY(__SHORT_LIST_ITEM)+offsetY)+"px";
    shortList.style.width=(__SHORT_LIST_ITEM.offsetWidth-2)+"px";
    shortList.style.zIndex=500+__dialogs.length;
    shortList.style.display="block";
  }
  var paramNames=new Array();
  var paramVals=new Array(); 
  __Transform(shortList,__dataXml,__RequestPath+"/DesktopModules/OALUtils/XSLT/ViewShortList.xsl",paramNames,paramVals); 
}

function __SelectShortListValue(obj,id)
{
  __SHORT_LIST_SELECTED_ID=id;
  __SHORT_LIST_ITEM.value=obj.innerHTML;
  __HideShortList();
}

function __StartShortListHide(successFunc)
{
  __SHORT_LIST_SELECT_FUNCTION=successFunc;
  __SHORTLIST_TIMER=window.setTimeout(__HideShortList,250);
}

function __HideShortList()
{
  __KillShortListTimer()
  var shortList=document.getElementById("ShortList");
  if(shortList!=null)
  {
    shortList.style.display="none";
  }
  if(__SHORT_LIST_SELECT_FUNCTION!=null)
  {
    new __SHORT_LIST_SELECT_FUNCTION;
  }
}

function __KillShortListTimer()
{
  window.clearTimeout(__SHORTLIST_TIMER);
  __SHORTLIST_TIMER=null;
}

function __CancelBubble(e)
{
  if(!e)
  {
    e=window.event;
  }
  e.cancelBubble=true;
  if(e.stopPropagation)
  {
    e.stopPropagation();
  }
}