﻿// JScript File
// Author: Ramy Eldesoky
// Created: 01/26/2006

/////////// Create and use this object to load string via MISP session mananger object
function MISPStringProvider( sessionManager )
{
	this.sessionManager = sessionManager;
	this.LoadString = function(source_dll, bFlag, strID){
		return this.sessionManager.LoadString(strID);
	};
}

//////////
function ParseXML( sXML )
{
	var xmlDOM = new ActiveXObject("Microsoft.XMLDOM");
	xmlDOM.async = false;
	if( xmlDOM.loadXML(sXML) ){
		return xmlDOM;
	}
	return null;
}

function LoadXML( xml_url, async )
{
	var xmlDOM = new ActiveXObject("Microsoft.XMLDOM");
	xmlDOM.async = async ? true : false;

	if( xmlDOM.load(xml_url) ){
		return xmlDOM;
	}
	
	return null;
}
//////
function TransformXML( xml_url, xsl_url )
{
	// Load XML 
	var xml = LoadXML( xml_url );

	if(xml){
		// Load the XSL
		var xsl = LoadXML( xsl_url);
		if(xsl)	{
			// Transform the root node
			return xml.transformNode( xsl );
		}
	}

	return "[TransformXML error]";
}

//////////
function HashArray(/*variable arguments expected*/)
{
	var retArray = new Array();

	for( var i = 1; i < arguments.length; i += 2 ){
		retArray[arguments[i-1]] = arguments[i];		
	}

	return retArray;
}


function InitLoadScripts( arScriptFiles, sBaseURL )
{
	arScriptFiles[arScriptFiles.length] = "call_init.js";

	for( var i=0; i < arScriptFiles.length; i ++ )
	{
		var myScript  = document.createElement("script"); 

		myScript.type = "text/javascript"; 
		
		//set the script file name
		myScript.src  = sBaseURL + arScriptFiles[i];
		//append the script to the document, that will execute the script
		document.appendChild( myScript );
	}
}

function LoadScripts( arScriptFiles, sBaseURL, sOnLoad, bSync )
{

	var myScript  = document.createElement("script"); 

	myScript.type = "text/javascript"; 
	
	//set the script file name
	myScript.src  = sBaseURL + arScriptFiles[0];
	//append the script to the document, that will execute the script
	document.appendChild( myScript );

	if( arScriptFiles.length > 1 )
	{// more scripts to be loaded
		var sScriptsArray = "";
		for( var i=1; i< arScriptFiles.length; i ++ )
		{// compose a string array for the remaining scripts
			if(i>1){
				sScriptsArray += ",";			
			}
			sScriptsArray += "'" + arScriptFiles[i] + "'";
		}
	
		//myScript.onload = new Function("LoadScripts([" + sScriptsArray + "],\"" + sBaseURL + "\",\"" + sOnLoad + "\")");
		
		if(document.location.protocol != "file:" && bSync){
			window.setTimeout( "LoadScripts([" + sScriptsArray + "],\"" + sBaseURL + "\",\"" + sOnLoad + "\", " + (bSync? "true":"false") + ")", 1 );
		}else{
			eval("LoadScripts([" + sScriptsArray + "],\"" + sBaseURL + "\",\"" + sOnLoad + "\", " + (bSync? "true" : "false" )+ ")");
		}
	}
	else
	{// last script
		if(sOnLoad)
		{
			//myScript.onload = new Function(sOnLoad);
			if( document.location.protocol != "file:" && bSync ){
				window.setTimeout(sOnLoad);
			}
			else{
				eval(sOnLoad);
			}
		}
	}
}

function ShowHideElement(sID, bShow)
{
	if(bShow){
		ShowElement(sID);
	}else{
		HideElement(sID);
	}
}

function ShowElement( sID, delay )
{
	var idElement = document.getElementById(sID);

	if( null == idElement )
		return;
	
	if( idElement.idDelayedShowHide ){
		window.clearTimeout( idElement.idDelayedShowHide );
		idElement.idDelayedShowHide = null;
	}

	if( ! delay ){
		idElement.style.zIndex  = 1;
		idElement.style.display = "";
	}
	else{
		idElement.idDelayedShowHide = window.setTimeout("ShowElement('" + sID + "', 0)", delay);
	}
}
function HideElement( sID, delay )
{
	var idElement = document.getElementById(sID);
	
	if( null == idElement )
		return false;

	if( idElement.idDelayedShowHide ){
		window.clearTimeout( idElement.idDelayedShowHide );
		idElement.idDelayedShowHide = null;
	}

	if( ! delay )
		idElement.style.display = "none";
	else
		idElement.idDelayedShowHide = window.setTimeout("HideElement('" + sID + "', 0)", delay);

	return true;
}

function HideElements( sArray )
{
	for( var i=0; i<sArray.length; i++ ){
		HideElement(sArray[i],0);
	}
}


function ShowHideCollection( elements, bShow )
{
	for( var i=0; i< elements.length ;i ++){
		elements[i].style.display = bShow ? "" : "none";
	}
}

function ShowElements( sArray )
{
	for( var i=0; i<sArray.length; i++ ){
		ShowElement(sArray[i],0);
	}
}

function getCurrentPageName()
{
	var sCurrPage = window.location.pathname.substring ( window.location.pathname.lastIndexOf("/") + 1);
	return sCurrPage.toLowerCase();
}

/////// For debugging purposes

function htmlAlert( sHTML, bNew )
{
	var myWin = window.open("", bNew ? "_blank" : "html_alert");
	if(myWin){
		//myWin.focus();
		myWin.document.body.style.fontFamily="Tahoma";
		myWin.document.body.style.fontSize="11px";
		myWin.document.body.innerText = sHTML + "\n============\n" + myWin.document.body.innerText;
	}
	return myWin;
}

function KeyboardClick(srcElement)
{
	if( event.keyCode == 13 || event.keyCode == 32 )
	{// Enter or Space
		srcElement.click();
	}
}

function CancelKeyboardNavigation()
{
	switch( event.keyCode )
	{ 
	case 0x21://page up
	case 0x22://page dn
	case 0x23://end
	case 0x24://home
	case 0x26://up
	case 0x28://down
	case 0x20://up or down or space
		return false;//don't navigate
	}
	return true;
}

function CheckShowHideElement(checkbox,sElementID)
{
	if(checkbox.checked){
		ShowElement(sElementID);
	}else{
		HideElement(sElementID);
	}
}

function DocElement( sTagName )
{
	return document.createElement(sTagName);
}

function IsVisibleElement( element )
{
	var currElement = element;
	
	while(currElement)
	{
		if( currElement.style.display == "none" || currElement.style.visibility == "hidden" )
			return false;
			
		currElement = currElement.parentElement;
	}

	return true;
}

function DisableSelection()
{
	if( event.srcElement && event.srcElement.tagName )
	{
		var sTagName = event.srcElement.tagName.toLowerCase();
		
		if( sTagName == "input" || sTagName == "textarea" )
		{
			return true;
		}
	}

	return false;
}

