// CEngine support functions
function doChangeMainMenu( ) {
	var oSubEngine = new CEngine( 'installer', 'component', 'updateMainMenu', oRootEngine.m_sSection, oRootEngine.m_sIncPath, null );
	oSubEngine.enableChangeAppPath( false );
	oSubEngine.doAsyncTaskImp( 'updateMainMenu',
		function ( result ) {
			eval( result );
		}
	);
}


function doAsyncOption( ) {
	switch( arguments.length ) {
		case 1:
			oRootEngine.setOption( arguments[0] );
			oRootEngine.setAct( '' );
			break;
			
		case 2:
			oRootEngine.setOption( arguments[0] );
			oRootEngine.setAct( arguments[1] );
			break;
	}
	
	loadToolbar( "" );
	compDivLoading( );
	
	oRootEngine.setParam( Object( ) );
	oRootEngine.doAsyncTaskImp( 'default', 
		function ( result ) {
			loadHTMLById( 'compDiv', result );
			loadCompJS( oRootEngine );
			
			doChangeMainMenu( );
		}
	);

}


function doSyncTask( p_sFormId, p_sOption, p_sAct, p_sTask ) { 
	if( p_sFormId ) var sFormId = p_sFormId;
	else var sFormId = "mainForm";
	var oForm = document.getElementById( sFormId );
	
	oRootEngine.sys_sOption = p_sOption;
	oRootEngine.sys_sAct = p_sAct;
	oRootEngine.sys_sTask = p_sTask;
	
	oRootEngine.changeAppPath( );
	
	oForm.sys_sOption.value = p_sOption;
	oForm.sys_sAct.value = p_sAct;
	oForm.sys_sTask.value = p_sTask;
	
	oForm.submit( );
}


function loadCompJS( p_oEngine ) {
	var oDiv = document.getElementById( "compJSDiv" );

	if( oDiv.firstChild ) {
		oDiv.removeChild( oDiv.firstChild );
	}
	
	var oJS = document.createElement( "SCRIPT" );
	oJS.type = "text/javascript";
	oJS.src = p_oEngine.m_sIncPath + "componentClasses/comp_" + p_oEngine.sys_sOption + "/js/" + p_oEngine.sys_sOption + "." + p_oEngine.m_sSection + ".js";
	
	oDiv.appendChild( oJS );
}


function loadJSById( p_oEngine, p_sDivId, p_sFileSrc ) {
	var oDiv = document.getElementById( p_sDivId );

	if( oDiv.firstChild ) {
		oDiv.removeChild( oDiv.firstChild );
	}
	
	var oJS = document.createElement( "SCRIPT" );
	oJS.type = "text/javascript";
	oJS.src = p_oEngine.m_sIncPath + "componentClasses/comp_" + p_oEngine.sys_sOption + "/js/" + p_sFileSrc;
	oDiv.appendChild( oJS );	
}


/*
 *	Load JS to 'compDiv' div
 */
function loadJS( p_oEngine, p_sFileSrc ) {
	var oDiv = document.getElementById( "compDiv" );

	var oJS = document.createElement( "SCRIPT" );
	oJS.type = "text/javascript";
	oJS.src = p_oEngine.m_sIncPath + "componentClasses/comp_" + p_oEngine.sys_sOption + "/js/" + p_sFileSrc;
	oDiv.appendChild( oJS );	
}


function loadUnmanagedJSById( p_sDivId, p_sFileSrc ) {
	var oDiv = document.getElementById( p_sDivId );

	if( oDiv.firstChild ) {
		oDiv.removeChild( oDiv.firstChild );
	}
	
	var oJS = document.createElement( "SCRIPT" );
	oJS.type = "text/javascript";
	oJS.src = p_sFileSrc;
	oDiv.appendChild( oJS );	
}


function loadUnmanagedJS( p_sFileSrc ) {
	var oJS = document.createElement( "SCRIPT" );
	oJS.type = "text/javascript";
	oJS.src = p_sFileSrc;
	document.body.appendChild( oJS );	
}


function loadCSSById( p_oEngine, p_sDivId, p_sFileSrc ) {
	var oDiv = document.getElementById( p_sDivId );

	if( oDiv.firstChild ) {
		oDiv.removeChild( oDiv.firstChild );
	}
	
	var oCSS = document.createElement( "link" );
	oCSS.rel = "stylesheet";
	oCSS.type = "text/css";
	oCSS.href = p_oEngine.m_sIncPath + "componentClasses/comp_" + p_oEngine.sys_sOption + "/styles/" + p_sFileSrc;
	oDiv.appendChild( oCSS );
}


/*
 *	Load CSS to 'compDiv' div
 */
function loadCSS( p_oEngine, p_sFileSrc ) {
	var oDiv = document.getElementById( "compDiv" );

	var oCSS = document.createElement( "link" );
	oCSS.rel = "stylesheet";
	oCSS.type = "text/css";
	oCSS.href = p_oEngine.m_sIncPath + "componentClasses/comp_" + p_oEngine.sys_sOption + "/styles/" + p_sFileSrc;
	oDiv.appendChild( oCSS );
}


function loadToolbar( sContent ) {
	var oToolbar = document.getElementById( "toolbarDiv" );
	oToolbar.innerHTML = sContent;
	
	/*
	if( !sContent ) {
		hideElement( 'toolbarTd' );
		setAttById( 'toolbarTd', 'style.width', '0px' );
	}
	else {
		showElement( 'toolbarTd' );
		setAttById( 'toolbarTd', 'style.width', '68px' );
	}
	
	hideLoadingBar( );
	hideOverlay( );
	*/
}


function loadHTMLById( p_sNodeId, p_sHTML ) {
	var oNode = document.getElementById( p_sNodeId );
	oNode.innerHTML = p_sHTML;
}


function loadSrcById( p_sNodeId, p_sSrc ) {
	var oNode = document.getElementById( p_sNodeId );
	oNode.src = p_sSrc;
}


function setAttById( p_sNodeId, p_sAttName, p_sAttValue ) {
	var oNode = document.getElementById( p_sNodeId );
	eval( "oNode." + p_sAttName + " = p_sAttValue;" );
}


function getAttById( p_sNodeId, p_sAttName ) {
	var oNode = document.getElementById( p_sNodeId );
	eval( "return oNode." + p_sAttName + ";" );
}


function compDivLoading( ) {
	showOverlay( );
	showLoadingBar( );
	//loadHTMLById( "compDiv", "<div align=\"center\" class=\"floating\"><img src=\"images/loading.gif\" border=\"0\" /></div>" );
}


function showOverlay( ) {
	var mainDiv = document.getElementById( "mainDiv" );
	var overlayDiv = document.getElementById( "overlayDiv" );
	
	overlayDiv.style.top = "25px";
	overlayDiv.style.left = "0px";
	overlayDiv.style.width = mainDiv.offsetWidth + "px";
	overlayDiv.style.height = ( mainDiv.offsetHeight - 25 - 26 ) + "px";
	overlayDiv.className = "overlayEnabled";
}


function hideOverlay( ) {
	var overlayDiv = document.getElementById( "overlayDiv" );
	overlayDiv.style.width = "0px";
	overlayDiv.style.height = "0px";
	overlayDiv.className = "overlayDisabled";
}


function showLoadingBar( ) {
	var mainDiv = document.getElementById( "mainDiv" );
	var loadingDiv = document.getElementById( "loadingDiv" );
	
	var loadingDivX = mainDiv.offsetWidth - mainDiv.offsetWidth / 2 - 52;
	var loadingDivY = mainDiv.offsetHeight - 26 + 9.5;
	loadingDiv.style.left = loadingDivX + "px";
	loadingDiv.style.top = loadingDivY + "px";
	loadingDiv.style.display = "block";
}


function hideLoadingBar( ) {
	var loadingDiv = document.getElementById( "loadingDiv" );
	loadingDiv.style.top = "-2000px";
	loadingDiv.style.left = "-2000px";
	loadingDiv.style.height = "0px";
	loadingDiv.style.width = "0px";
	loadingDiv.style.display = "none";
}


function lockMainMenu( ) {
	var mainDiv = document.getElementById( "mainDiv" );
	var menuDiv = document.getElementById( "myMenuID" );
	var overlayMainMenuDiv = document.getElementById( "overlayMainMenuDiv" );
	
	overlayMainMenuDiv.className = "menuLocked";
	overlayMainMenuDiv.style.top = getContainerTop( menuDiv ) + "px";
	overlayMainMenuDiv.style.left = "0px";
	overlayMainMenuDiv.style.width = mainDiv.offsetWidth + "px";
	overlayMainMenuDiv.style.height = menuDiv.offsetHeight + "px";
	
	loadHTMLById( "menuLockDiv", "<img src=\"images/menubar/ico_lock.png\" border=\"0\" title=\"Menu locked\" />" );
}


function unlockMainMenu( ) {
	var overlayMainMenuDiv = document.getElementById( "overlayMainMenuDiv" );
	
	overlayMainMenuDiv.className = "menuUnlocked";
	overlayMainMenuDiv.style.top = "-2000px";
	overlayMainMenuDiv.style.left = "-2000px";
	overlayMainMenuDiv.style.width = "0px";
	overlayMainMenuDiv.style.height = "0px";
	
	loadHTMLById( "menuLockDiv", "&nbsp;" );
}


function hideElement( p_sNodeId ) {
	var oNode = document.getElementById( p_sNodeId );
	oNode.style.display = 'none';
}


function showElement( p_sNodeId ) {
	var oNode = document.getElementById( p_sNodeId );
	oNode.style.display = '';
}


function getFormBody( p_sFormId ) {
	var oForm = document.getElementById( p_sFormId );	
	
	var oParam = new Object( );
	var sPropName;
	var vPropValue;
	
    for ( var i=0 ; i < oForm.elements.length; i++ ) {
		if( oForm.elements[i].name != 'bAjax' && oForm.elements[i].name != 'sys_sOption' && 
			oForm.elements[i].name != 'sys_sAct' && oForm.elements[i].name != 'sys_sTask' && 
			oForm.elements[i].name.indexOf( '[]', 0 ) == -1 && 
			oForm.elements[i].type != "radio" && 
			oForm.elements[i].value != undefined && oForm.elements[i].value != null 
			) {
			
			sPropName = oForm.elements[i].name;
			vPropValue = oForm.elements[i].value;
			oParam[sPropName] = vPropValue;
				
		}
		
    }

    return oParam;
}


function createHidden( ) {
	switch( arguments.length ) {
		case 2:
			var sName = arguments[0];
			var sValue = arguments[1];
			var oForm = document.getElementById( 'mainForm' );
			break;
		case 3:
			var sFormId = arguments[0];
			var sName = arguments[1];
			var sValue = arguments[2];
			var oForm = document.getElementById( sFormId );
			break;
	}
	
	var oHidden = document.createElement( 'input' );
	oHidden.type = "hidden";
	oHidden.name = sName;
	oHidden.value = sValue;
	
	oForm.appendChild( oHidden );
}


/*
 * Gets the left coordinate of the textbox.
 * @scope private
 * @return The left coordinate of the textbox in pixels (int).
 */
function getContainerLeft( ) {

    var oNode = arguments[0];
    var iLeft = 0;
   
    while( oNode.tagName != "BODY" && oNode.tagName != "HTML" ) {
        iLeft += oNode.offsetLeft;
        oNode = oNode.offsetParent;       
    }
    
    return iLeft;
}


/*
 * Gets the top coordinate of the textbox.
 * @scope private
 * @return The top coordinate of the textbox in pixels (int).
 */
function getContainerTop( ) {

    var oNode = arguments[0];
    var iTop = 0;
    
    while(oNode.tagName != "BODY" && oNode.tagName != "HTML") {
        iTop += oNode.offsetTop;
        oNode = oNode.offsetParent;
    }
    
    return iTop;
}


//--Loggedin admin anthentication functions
function doLogout( ) {
	oRootEngine.setOption( 'user' );
	oRootEngine.doSyncTask( 'logout' );
}


function doEditAdminProfile( ) {
	oRootEngine.setOption( 'user' );
	oRootEngine.doSyncTask( 'editSelf' );	
}
//--end