//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(_proxy_jslib_proxify_js(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(_proxy_jslib_proxify_js(unescape(sFunc)));
		return false;
	}
}

function __dnn_bodyscroll() {
	var oF=document.forms[0+(0)];	
	if (__dnn_ClientAPIEnabled() && __dnn_m_bPageLoaded)
		_proxy_jslib_assign('', 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 = _proxy_jslib_handle(document.forms[0+(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 = _proxy_jslib_handle(oBtn, 'src').toLowerCase().substr(_proxy_jslib_handle(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)
		{
			_proxy_jslib_assign('', 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
		{
			_proxy_jslib_assign('', 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');
		var bCallback = oBtn.getAttribute('userctr') != null;
		var sVal;
		if (oContent.style.display == 'none')
		{
			_proxy_jslib_assign('', oBtn, 'src', '=', ( sMinIcon));				
			oContent.style.display = '';
			if (bCallback)
			    sVal = 'True';
			else
			    dnn.setVar(oBtn.id + ':exp', 1);
		}
		else
		{
			_proxy_jslib_assign('', oBtn, 'src', '=', ( sMaxIcon));				
			oContent.style.display = 'none';
			if (bCallback)
			    sVal = 'False';
			else
                dnn.setVar(oBtn.id + ':exp', 0);
		}
		if (bCallback)
		    dnncore.setUserProp(oBtn.getAttribute('userctr'), oBtn.getAttribute('userkey'), sVal, null);
		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 = _proxy_jslib_handle(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)
			{
				_proxy_jslib_handle(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 && _proxy_jslib_handle(oPane.controls, (i)).id != oCont.id)
				oPrevCtl = _proxy_jslib_handle(oPane.controls, (i));
			if (iIndex <= i && _proxy_jslib_handle(oPane.controls, (i)).id != oCont.id)
			{
				oNextCtl = _proxy_jslib_handle(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 (_proxy_jslib_handle(oPanes, (i)).id == oCtl.parentNode.id)
				oPane = _proxy_jslib_handle(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 (_proxy_jslib_handle(oPane.controls, (i)).control.id != oCtl.id)
				_proxy_jslib_assign('', aryCtls, (aryCtls.length), '=', ( _proxy_jslib_handle(oPane.controls, (i)).control));

			dnn.dom.removeChild(_proxy_jslib_handle(oPane.controls, (i)).control);
		}
		_proxy_jslib_handle(dnn.dom, 'appendChild')(oPane.pane, oCtl);
		_proxy_jslib_assign('', oCtl.style, 'top', '=', (0));
		oCtl.style.left=0;
		oCtl.style.position = 'relative';
		for (var i=0; i<aryCtls.length; i++)
		{
			_proxy_jslib_handle(dnn.dom, 'appendChild')(oPane.pane, _proxy_jslib_handle(aryCtls, (i)));
		}
		__dnn_RefreshPanes();
	}
	else
	{
		_proxy_jslib_assign('', 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 (_proxy_jslib_handle(aryPanes, (i)).length > 0)
			_proxy_jslib_assign('', __dnn_m_aryPanes, (__dnn_m_aryPanes.length), '=', ( new __dnn_Pane(dnn.dom.getById(_proxy_jslib_handle(aryPanes, (i))), _proxy_jslib_handle(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 _proxy_jslib_handle(__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 = _proxy_jslib_handle(__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 = _proxy_jslib_handle(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 = _proxy_jslib_handle(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 + '~';
				_proxy_jslib_assign('', this.controls, (this.controls.length), '=', ( new __dnn_PaneControl(oNode, iIndex)));
				_proxy_jslib_assign('', __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;
	
}

//move towards dnncore ns.  right now only for personalization
function __dnncore() {
    this.GetUserVal = 0;
    this.SetUserVal = 1;
}

__dnncore.prototype = {
getUserProp: function(sNameCtr, sKey, pFunc) {
    this._doUserCallBack(dnncore.GetUserVal, sNameCtr, sKey, null, new dnncore.UserPropArgs(sNameCtr, sKey, pFunc));
},

setUserProp: function(sNameCtr, sKey, sVal, pFunc) {
    this._doUserCallBack(dnncore.SetUserVal, sNameCtr, sKey, sVal, new dnncore.UserPropArgs(sNameCtr, sKey, pFunc));
},

_doUserCallBack: function(iType, sNameCtr, sKey, sVal, pFunc) {
    if (dnn && dnn.xmlhttp)
    {
        var sPack = iType + COL_DELIMITER + sNameCtr + COL_DELIMITER + sKey + COL_DELIMITER + sVal;
        dnn.xmlhttp.doCallBack('__Page',sPack,dnncore._callBackSuccess,pFunc,dnncore._callBackFail,null,true,null,0);
    }
    else
        alert('Client Personalization not enabled');
},

_callBackSuccess: function (result, ctx, req) {
    if (ctx.pFunc)
        ctx.pFunc(ctx.namingCtr, ctx.key, result);
},

_callBackFail: function (result, ctx) {
	window.status = result;
}
}

__dnncore.prototype.UserPropArgs = function(sNameCtr, sKey, pFunc) {
    this.namingCtr = sNameCtr;
	this.key = sKey;
	this.pFunc = pFunc;
}

var dnncore = new __dnncore();

var __dnnViewImage = function() {
	this.objId = new Array();
    this.intCount = -1;
}


//papacmps
function writeFlashSrc(width, height, src, flashvars) {		
	_proxy_jslib_handle(document, 'write')('<embed src="'+_proxy_jslib_handle(null, 'src', src)+'" FlashVars="link='+flashvars+'" quality="high" width="'+width+'" height="'+height+'" align="middle" allowScriptAccess="sameDomain" menu="false" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" />\n');
}

function renderFlashSrc(width, height, src, flashvars) {		
	return '<embed src="'+_proxy_jslib_handle(null, 'src', src)+'" FlashVars="link='+flashvars+'" quality="high" width="'+width+'" height="'+height+'" align="middle" allowScriptAccess="sameDomain" menu="false" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" />';
}

function ___slideFlash(objdiv, width, height, src, delaytime, flashvars) {		
    
    var strHtml = '<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0" width="'+width+'" height="'+height+'" id="papacms" align="middle">'
    strHtml += '<param name="wmode" value="transparent" />'
    strHtml += '<param name="movie" value="'+_proxy_jslib_handle(null, 'src', src)+'?delaytime='+delaytime+'&mytext='+flashvars+'" />'
    strHtml += '<param name="quality" value="high" /><param name="bgcolor" value="#ffffff" />'
    strHtml += '<embed src="'+_proxy_jslib_handle(null, 'src', src)+'?delaytime='+delaytime+'&mytext='+flashvars+'" width="'+width+'" height="'+height+'" wmode="transparent" />'
	var obj = _proxy_jslib_handle(document, 'getElementById')(objdiv);
	_proxy_jslib_assign('', obj, 'innerHTML', '=', ( strHtml));
}

function FloatTopDivRight(strobj, strWidth) {
	startX = document.body.clientWidth - 110, startY = 71;
	var ns = (navigator.appName.indexOf("Netscape") != -1);
	var d = document;
		
	if (document.body.clientWidth < strWidth) startX = -110;

	
	function ml(id) {
		var el=_proxy_jslib_handle(d, 'getElementById')?_proxy_jslib_handle(d, 'getElementById')(id):d.all?_proxy_jslib_handle(d.all, (id)):d.layers[(id)];
		if(d.layers)el.style=el;
		el.sP=function(x,y) {this.style.left=x;_proxy_jslib_assign('', this.style, 'top', '=', (y));};
		el.x = startX;
		el.y = startY;
		return el;
	}
	
	window.stayTopRight=function() {
	
		if (document.body.clientWidth < strWidth)
		{
			ftlObj.x = - 115;ftlObj.y = 0;	ftlObj.sP(ftlObj.x, ftlObj.y);
		}
		
		else
		{
		if (document.documentElement && document.documentElement.scrollTop)
			var pY = ns ? pageYOffset : document.documentElement.scrollTop;
		else if (document.body)
			var pY = ns ? pageYOffset : document.body.scrollTop;

		if (document.body.scrollTop > 71){startY = 3} else {startY = 71};

		if (document.body.clientWidth >= 1024)
		{
			ftlObj.x = document.body.clientWidth - 110;ftlObj.y += (pY + startY - ftlObj.y)/32;ftlObj.sP(ftlObj.x, ftlObj.y);
		}
		else
		{
		
		
		ftlObj.x  = startX;
		ftlObj.y += (pY + startY - ftlObj.y)/32;
		ftlObj.sP(ftlObj.x, ftlObj.y);
		}
		}
		_proxy_jslib_handle(null, 'setTimeout', setTimeout)("stayTopRight()", 1);
	}
	
	ftlObj = ml(strobj);
	stayTopRight();
}

function FloatTopDivLeft(obj, strWidth) {
		startX2 = document.body.clientWidth - 1004, startY2 = 71;
		var ns2 = (navigator.appName.indexOf("Netscape") != -1);
		var d2 = document;
			
		if (document.body.clientWidth < strWidth) startX2 = -110;

		
		function ml2(id) {
			var el2=_proxy_jslib_handle(d2, 'getElementById')?_proxy_jslib_handle(d2, 'getElementById')(id):d2.all?_proxy_jslib_handle(d2.all, (id)):d2.layers[(id)];
			if(d2.layers)el2.style=el2;
			el2.sP=function(x,y) {this.style.left=x;_proxy_jslib_assign('', this.style, 'top', '=', (y));};
			el2.x = startX2;
			el2.y = startY2;
			return el2;
		}
		
		window.stayTopLeft=function() {
			if (document.body.clientWidth < strWidth)
			{
				ftlObj2.x = - 115;ftlObj2.y = 0;	ftlObj2.sP(ftlObj2.x, ftlObj2.y);
			}
			else
			{
			if (document.documentElement && document.documentElement.scrollTop)
				var pY2 = ns2 ? pageYOffset : document.documentElement.scrollTop;
			else if (document.body)
				var pY2 = ns2 ? pageYOffset : document.body.scrollTop;

			if (document.body.scrollTop > 71){startY2 = 3} else {startY2 = 71};

			if (document.body.clientWidth >= 1024)
			{
				ftlObj2.x =  0;ftlObj2.y += (pY2 + startY2 - ftlObj2.y)/32;	ftlObj2.sP(ftlObj2.x, ftlObj2.y);
			}
			else
			{			
			

			
			ftlObj2.x  = startX2;
			ftlObj2.y += (pY2 + startY2 - ftlObj2.y)/32;
			ftlObj2.sP(ftlObj2.x, ftlObj2.y);
			}
			}
			_proxy_jslib_handle(null, 'setTimeout', setTimeout)("stayTopLeft()", 1);
		}
		
		ftlObj2 = ml2(obj);
		stayTopLeft();
}

 ;
_proxy_jslib_flush_write_buffers() ;