//General
//for example: instead of each module writing out script found in moduleMaxMin_OnClick have the functionality cached
//var DNN_COL_DELIMITER = String.fromCharCode(16);
var DNN_ROW_DELIMITER = String.fromCharCode(15);
var __dnn_m_bPageLoaded = false;window.onload = __dnn_Page_OnLoad;function __dnn_ClientAPIEnabled()
{return typeof(dnn) != 'undefined';
}function __dnn_Page_OnLoad()
{if (__dnn_ClientAPIEnabled()){var sLoadHandlers = dnn.getVar('__dnn_pageload');if (sLoadHandlers != null)eval(sLoadHandlers);dnn.dom.attachEvent(window, 'onscroll', __dnn_bodyscroll);}__dnn_m_bPageLoaded = true;
}function __dnn_KeyDown(iKeyCode, sFunc, e)
{if (e == null)e = window.event;if (e.keyCode == iKeyCode){eval(unescape(sFunc));return false;}
}function __dnn_bodyscroll() 
{var oF=document.forms[0];	if (__dnn_ClientAPIEnabled() && __dnn_m_bPageLoaded)oF.ScrollTop.value=document.documentElement.scrollTop ? document.documentElement.scrollTop : dnn.dom.getByTagName("body")[0].scrollTop;
}function __dnn_setScrollTop(iTop)
{if (__dnn_ClientAPIEnabled()){if (iTop == null)iTop = document.forms[0].ScrollTop.value;var sID = dnn.getVar('ScrollToControl');if (sID != null && sID.length > 0){var oCtl = dnn.dom.getById(sID);if (oCtl != null){iTop = dnn.dom.positioning.elementTop(oCtl);dnn.setVar('ScrollToControl', '');}}window.scrollTo(0, iTop);}
}//Focus logic
function __dnn_SetInitialFocus(sID)
{var oCtl = dnn.dom.getById(sID);	if (oCtl != null && __dnn_CanReceiveFocus(oCtl))oCtl.focus();
}	function __dnn_CanReceiveFocus(e)
{//probably should call getComputedStyle for classes that cause item to be hiddenif (e.style.display != 'none' && e.tabIndex > -1 && e.disabled == false && e.style.visible != 'hidden'){var eParent = e.parentElement;while (eParent != null && eParent.tagName != 'BODY'){if (eParent.style.display == 'none' || eParent.disabled || eParent.style.visible == 'hidden')return false;eParent = eParent.parentElement;}return true;}elsereturn false;
}//Max/Min Script
function __dnn_ContainerMaxMin_OnClick(oLnk, sContentID)
{var oContent = dnn.dom.getById(sContentID);if (oContent != null){var oBtn = oLnk.childNodes[0];var sContainerID = oLnk.getAttribute('containerid');var sCookieID = oLnk.getAttribute('cookieid');var sCurrentFile = oBtn.src.toLowerCase().substr(oBtn.src.lastIndexOf('/'));var sMaxFile;var sMaxIcon;var sMinIcon;if (dnn.getVar('min_icon_' + sContainerID))sMinIcon = dnn.getVar('min_icon_' + sContainerID);elsesMinIcon = dnn.getVar('min_icon');if (dnn.getVar('max_icon_' + sContainerID))sMaxIcon = dnn.getVar('max_icon_' + sContainerID);elsesMaxIcon = dnn.getVar('max_icon');sMaxFile = sMaxIcon.toLowerCase().substr(sMaxIcon.lastIndexOf('/'));var iNum = 5;if (oLnk.getAttribute('animf') != null)iNum = new Number(oLnk.getAttribute('animf'));if (sCurrentFile == sMaxFile){oBtn.src = sMinIcon;				//oContent.style.display = '';dnn.dom.expandElement(oContent, iNum);oBtn.title = dnn.getVar('min_text');if (sCookieID != null){if (dnn.getVar('__dnn_' + sContainerID + ':defminimized') == 'true')dnn.dom.setCookie(sCookieID, 'true', 365);elsednn.dom.deleteCookie(sCookieID);}elsednn.setVar('__dnn_' + sContainerID + '_Visible', 'true');}else{oBtn.src = sMaxIcon;				//oContent.style.display = 'none';dnn.dom.collapseElement(oContent, iNum);oBtn.title = dnn.getVar('max_text');if (sCookieID != null){if (dnn.getVar('__dnn_' + sContainerID + ':defminimized') == 'true')dnn.dom.deleteCookie(sCookieID);elsednn.dom.setCookie(sCookieID, 'false', 365);				}elsednn.setVar('__dnn_' + sContainerID + '_Visible', 'false');			}return true;	//cancel postback}return false;	//failed so do postback
}function __dnn_Help_OnClick(sHelpID)
{var oHelp = dnn.dom.getById(sHelpID);if (oHelp != null){if (oHelp.style.display == 'none')oHelp.style.display = '';elseoHelp.style.display = 'none';return true;	//cancel postback}return false;	//failed so do postback
}function __dnn_SectionMaxMin(oBtn, sContentID)
{var oContent = dnn.dom.getById(sContentID);if (oContent != null){var sMaxIcon = oBtn.getAttribute('max_icon');var sMinIcon = oBtn.getAttribute('min_icon');if (oContent.style.display == 'none'){oBtn.src = sMinIcon;				oContent.style.display = '';dnn.setVar(oBtn.id + ':exp', 1);}else{oBtn.src = sMaxIcon;				oContent.style.display = 'none';dnn.setVar(oBtn.id + ':exp', 0);}return true;	//cancel postback}return false;	//failed so do postback
}//Drag N Drop
function __dnn_enableDragDrop()
{var aryConts = dnn.getVar('__dnn_dragDrop').split(";");	var aryTitles;for (var i=0; i < aryConts.length; i++){aryTitles = aryConts[i].split(" ");if (aryTitles[0].length > 0){			var oCtr = dnn.dom.getById(aryTitles[0]);var oTitle = dnn.dom.getById(aryTitles[1]);if (oCtr != null && oTitle != null){oCtr.setAttribute('moduleid', aryTitles[2]);dnn.dom.positioning.enableDragAndDrop(oCtr, oTitle, '__dnn_dragComplete()', '__dnn_dragOver()');}	}}
}var __dnn_oPrevSelPane;
var __dnn_oPrevSelModule;
var __dnn_dragEventCount=0;
function __dnn_dragOver()
{__dnn_dragEventCount++;if (__dnn_dragEventCount % 75 != 0)	//only calculate position every 75 eventsreturn;var oCont = dnn.dom.getById(dnn.dom.positioning.dragCtr.contID);var oPane = __dnn_getMostSelectedPane(dnn.dom.positioning.dragCtr);if (__dnn_oPrevSelPane != null)	//reset previous pane's border__dnn_oPrevSelPane.pane.style.border = __dnn_oPrevSelPane.origBorder;if (oPane != null){		__dnn_oPrevSelPane = oPane;oPane.pane.style.border = '4px double ' + DNN_HIGHLIGHT_COLOR;var iIndex = __dnn_getPaneControlIndex(oCont, oPane);var oPrevCtl;var oNextCtl;for (var i=0; i<oPane.controls.length; i++){if (iIndex > i && oPane.controls[i].id != oCont.id)oPrevCtl = oPane.controls[i];if (iIndex <= i && oPane.controls[i].id != oCont.id){oNextCtl = oPane.controls[i];break;}}			if (__dnn_oPrevSelModule != null)dnn.dom.getNonTextNode(__dnn_oPrevSelModule.control).style.border = __dnn_oPrevSelModule.origBorder;if (oNextCtl != null){__dnn_oPrevSelModule = oNextCtl;dnn.dom.getNonTextNode(oNextCtl.control).style.borderTop = '5px groove ' + DNN_HIGHLIGHT_COLOR;}else if (oPrevCtl != null){__dnn_oPrevSelModule = oPrevCtl;dnn.dom.getNonTextNode(oPrevCtl.control).style.borderBottom = '5px groove ' + DNN_HIGHLIGHT_COLOR;}}
}function __dnn_dragComplete()
{var oCtl = dnn.dom.getById(dnn.dom.positioning.dragCtr.contID);var sModuleID = oCtl.getAttribute('moduleid');if (__dnn_oPrevSelPane != null)__dnn_oPrevSelPane.pane.style.border = __dnn_oPrevSelPane.origBorder;if (__dnn_oPrevSelModule != null)dnn.dom.getNonTextNode(__dnn_oPrevSelModule.control).style.border = __dnn_oPrevSelModule.origBorder;var oPane = __dnn_getMostSelectedPane(dnn.dom.positioning.dragCtr);var iIndex;if (oPane == null){var oPanes = __dnn_Panes();for (var i=0; i<oPanes.length; i++){if (oPanes[i].id == oCtl.parentNode.id)oPane = oPanes[i];}}	if (oPane != null){iIndex = __dnn_getPaneControlIndex(oCtl, oPane);__dnn_MoveToPane(oPane, oCtl, iIndex);dnn.callPostBack('MoveToPane', 'moduleid=' + sModuleID, 'pane=' + oPane.paneName, 'order=' + iIndex * 2); }
}function __dnn_MoveToPane(oPane, oCtl, iIndex)
{if (oPane != null){var aryCtls = new Array();for (var i=iIndex; i<oPane.controls.length; i++){if (oPane.controls[i].control.id != oCtl.id)aryCtls[aryCtls.length] = oPane.controls[i].control;dnn.dom.removeChild(oPane.controls[i].control);}dnn.dom.appendChild(oPane.pane, oCtl);oCtl.style.top=0;oCtl.style.left=0;oCtl.style.position = 'relative';for (var i=0; i<aryCtls.length; i++){dnn.dom.appendChild(oPane.pane, aryCtls[i]);}__dnn_RefreshPanes();}else{oCtl.style.top=0;oCtl.style.left=0;oCtl.style.position = 'relative';}
}function __dnn_RefreshPanes()
{var aryPanes = dnn.getVar('__dnn_Panes').split(';');var aryPaneNames = dnn.getVar('__dnn_PaneNames').split(';');__dnn_m_aryPanes = new Array();for (var i=0; i<aryPanes.length; i++){if (aryPanes[i].length > 0)__dnn_m_aryPanes[__dnn_m_aryPanes.length] = new __dnn_Pane(dnn.dom.getById(aryPanes[i]), aryPaneNames[i]);}
}var __dnn_m_aryPanes;
var __dnn_m_aryModules;
function __dnn_Panes()
{if (__dnn_m_aryPanes == null){__dnn_m_aryPanes = new Array();__dnn_RefreshPanes();}return __dnn_m_aryPanes;
}function __dnn_Modules(sModuleID)
{if (__dnn_m_aryModules == null)__dnn_RefreshPanes();return __dnn_m_aryModules[sModuleID];
}function __dnn_getMostSelectedPane(oContent)
{var oCDims = new dnn.dom.positioning.dims(oContent);var iTopScore=0;var iScore;var oTopPane;for (var i=0; i<__dnn_Panes().length; i++){var oPane = __dnn_Panes()[i];var oPDims = new dnn.dom.positioning.dims(oPane.pane);iScore = dnn.dom.positioning.elementOverlapScore(oPDims, oCDims);if (iScore > iTopScore){iTopScore = iScore;oTopPane = oPane;}}return oTopPane;
}function __dnn_getPaneControlIndex(oContent, oPane)
{if (oPane == null)return;var oCDims = new dnn.dom.positioning.dims(oContent);var oCtl;if (oPane.controls.length == 0)return 0;for (var i=0; i<oPane.controls.length; i++){oCtl = oPane.controls[i];var oIDims = new dnn.dom.positioning.dims(oCtl.control);if (oCDims.t < oIDims.t)return oCtl.index;}if (oCtl != null)return oCtl.index+1;elsereturn 0;
}//Objects
function __dnn_Pane(ctl, sPaneName)
{this.pane = ctl;this.id = ctl.id;this.controls = new Array();this.origBorder = ctl.style.border;this.paneName = sPaneName;var iIndex = 0;var strModuleOrder='';for (var i=0; i<ctl.childNodes.length; i++){var oNode = ctl.childNodes[i];if (dnn.dom.isNonTextNode(oNode))	{if (__dnn_m_aryModules == null)__dnn_m_aryModules = new Array();//if (oNode.tagName == 'A' && oNode.childNodes.length > 0)//	oNode = oNode.childNodes[0];	//DNN now embeds anchor tag var sModuleID = oNode.getAttribute('moduleid');if (sModuleID != null && sModuleID.length > 0){strModuleOrder += sModuleID + '~';this.controls[this.controls.length] = new __dnn_PaneControl(oNode, iIndex);__dnn_m_aryModules[sModuleID] = oNode.id;iIndex+=1;}}}this.moduleOrder = strModuleOrder;}function __dnn_PaneControl(ctl, iIndex)
{this.control = ctl;this.id = ctl.id;this.index = iIndex;this.origBorder = ctl.style.border;}

