
var SourceMsgID = "";
var SourceMsg = "";
var TargetMsg = "";
// Code for dynamically adding options to a select.
var mode = 0; // set to 1 for debugging
function ShowResults(oTargetId)
{         

debugger;       
	var m;
	var cmd = "";
	var ev;
  	var oTarget = document.getElementById(oTargetId);

	//' --- JavaScript 1.1
	//' --- get arguments of the function
	//' --- function.length number of expected args
	if (arguments.length > ShowResults.length){
		m = "ShowResults.length: " + ShowResults.length + "\n"
		for(var a = ShowResults.length; a < arguments.length; a++){
			m += a + " " + arguments[a] + "\n";	
		}
		//alert(m);
		cmd = arguments[1]; //' --- get command if any
		ev = arguments[2]; //' --- get event if any
	}else{
	}
	
	if (!document.createEventObject){ // FF
		//var evt = document.createEvent("HTMLEvents");
		//evt.initEvent(arguments[2], true, true ); 
		//ev = !oTarget.dispatchEvent(evt);
		return true;
	}else{
	
		ev = event;
		
	}

	
	m += "cmd: " + cmd + " \n"
	//alert(cmd);
		
				 // Information about the events 
                 // and what object fired them.
  	arg = "'" + ev.type + "'  fired by  '" + oTargetId + "'\n";  
	arg += "ctrlKey=" + ev.ctrlKey + ";\n"
	arg += "--end_of_arguments--\n" //' always put that at the end of the arguments list - everything else is content
	TargetMsg = oTargetId;

	// --- get ct... and other id's out of oTargetId
	var aCt = oTargetId.split("_")
	var targetCt = aCt[1]; // = ct
	var targetPg = aCt[2]; // = pg
	var targetPar = aCt[3]; // = parent
	var targetChi = aCt[4]; // = child

	if(ev.type == "drop"){
		var str = event.dataTransfer.getData("Text") + ""
		var aryStr
		
		//sImageURL = event.dataTransfer.getData("URL")
		//sImageURL = event.dataTransfer.getData("Text")
		if(str.indexOf(";")>-1){
			aryStr = str.split(";")	
			for(i = 0; i < aryStr.length; i++){
				if(aryStr[i].indexOf("Msg_ID=")>-1){
					SourceMsgID += aryStr[i].replace("Msg_ID=","") + ","
					
				}
			}
		}
	  	m += "-------------- msg finish --------------- \n"
		oTarget.innerText += m + arg + str;
		if(oTarget.innerText.length == 0){
			oTarget.value += m + arg + str;
		}

/*		if(event.ctrlKey==true){
			alert("No files or interactions created!\n\nYou pressed the Ctrl-Key.\n(event.ctrlKey: "+event.ctrlKey+")");
		
		}else{
*/
			if(mode > 0){ alert("execDrag("+oTargetId+")")}
			if (cmd != "NOSEND")
			{
				var ex = execDrag(oTargetId);
			}
//		}
	}else{	
		oTarget.innerText = "";
	}
	ev.returnValue=false;	

	// ---------------------------------------------------------------------------------------------
	// --- Handle drop here

	window.status = "S: "+ SourceMsg + " T: " + TargetMsg;
	showPopMsg("S: "+ SourceMsg + " T: " + TargetMsg);
	document.editM.SourceMsg.value= SourceMsg;
	document.editM.TargetMsg.value=	TargetMsg;
	document.editM.TargetCt.value=targetCt;

	TargetMsg = "";
	// ---------------------------------------------------------------------------------------------

	SourceMsgID = "";
}

// ///////////////////////////////////////////////////////////////////////////////////////////////////
// Firefox Drag & Drop: https://developer.mozilla.org/En/DragDrop/Drag_Operations#drop 
function handleEvent(){
// ///////////////////////////////////////////////////////////////////////////////////////////////////

	//alert(ev);

	
	var arg;
	var cmd;
	var ev;
	var m = "";
	var oid = arguments[0]; //' --- get command if any
	var to = document.getElementById(oid); //' --- drop target
	var oTargetId = oid;

	//' --- JavaScript 1.1
	//' --- get arguments of the function
	//' --- function.length number of expected args
	if (arguments.length > handleEvent.length){
		m += "handleEvent.length: " + handleEvent.length + "\n"
		for(var a = handleEvent.length; a < arguments.length; a++){
			m += a + " " + arguments[a] + "\n";	
		}
		//alert(m);
		cmd = arguments[1]; //' --- get command if any
		ev = arguments[2]; //' --- get event if any

		m += "ev.type:=" + ev.type + "\n"
		m += "cmd: " + cmd + " \n"

	}

	//alert(cmd);
	
	// Information about the events 
    // and what object fired them.
  	arg = "'" + ev.type + "'  fired by  '" + oTargetId + "'\n";  
	arg += "ctrlKey=" + ev.ctrlKey + ";\n"
	arg += "--end_of_arguments--\n" //' always put that at the end of the arguments list - everything else is content
	TargetMsg = oTargetId;

	// --- get ct... and other id's out of oTargetId
	var aCt = oTargetId.split("_")
	var targetCt = aCt[1]; // = ct
	var targetPg = aCt[2]; // = pg
	var targetPar = aCt[3]; // = parent
	var targetChi = aCt[4]; // = child
		
		
	if(mode > 0){ // --- debug stuff
		//alert(m + "\n\n ev.type:='" + ev.type + "'");
		var st = document.getElementById("stuff")
		st.innerHTML +=m + " to.value: " + to.value + "<br/>\n";
		//alert("st.innerHTML: " + st.innerHTML)
	} // if(mode > 0){ // --- debug stuff
		
		if(ev.type == 'dragenter'){
				//to.value = "";
			
		} 

		if(ev.type == 'drop'){
		
			// -------------------------------------------------------------
			// ----------- Fire Fox get the data dropped ------------------- 
			// -------------------------------------------------------------
		 	var data = ev.dataTransfer.getData("text/plain"); 	// --- get the (text) stuff dropped.
		  	//ev.target.value = data; 							// --- update the target field
		  	//ev.target.textContent = data; 					// --- update the target
	  		ev.preventDefault();								// --- prevent the browsers default functionality to overwrite the data dropped.

			if(mode > 0){ // --- debug stuff
				st.innerHTML += "<br/>\n<b>" + " data: " + data + "</b><br/>\n";	
			}

			var str = data; 
			var aryStr, targetCt;
			
			//sImageURL = event.dataTransfer.getData("URL")
			//sImageURL = event.dataTransfer.getData("Text")
			if(str.indexOf(";")>-1){
				aryStr = str.split(";")	
				for(i = 0; i < aryStr.length; i++){
					if(aryStr[i].indexOf("Msg_ID=")>-1){
						SourceMsgID += aryStr[i].replace("Msg_ID=","") + ","
						
					}
				}
			}
		  	m += "-------------- msg finish --------------- \n"
            //oid.value += m + str;
			 //ev.target.textContent
			 ev.target.value = m + arg + str; // --- update the target field
	
	/*		if(event.ctrlKey==true){
				alert("No files or interactions created!\n\nYou pressed the Ctrl-Key.\n(event.ctrlKey: "+event.ctrlKey+")");
			
			}else{
	*/
				document.editM.SourceMsg.value= SourceMsg;
				document.editM.TargetMsg.value=	TargetMsg;
				document.editM.TargetCt.value=targetCt;
				
				if(mode == 0){ alert("execDrag("+ev.target.id+")")}
				if (cmd != "NOSEND")
				{
					var ex = execDrag(ev.target.id);
				}
	//		}

			
	} //if(ev.type == 'drop'){
	
	

}


function execDrag(oTargetId)
{
    var oTarget = document.getElementById(oTargetId);
	var dragTxt = oTarget.innerText;
	if(!dragTxt){
		dragTxt = oTarget.value;
	}
//	if(dragTxt.indexOf("Msg_ID=")>-1){
//		alert("InteractionID: " + dragTxt);
		document.editM.content.value=dragTxt;
		document.editM.submit();
//	}else{
//		alert("Other Stuff: " + dragTxt);
//	}

}


// show pop message next to the mouse
function showPopMsg(str){



}

/*
' ==================================================
' === render or hide obj
' ==================================================
*/
function displayThis(obj){
	try{
		var o = document.getElementById(obj)
		if (o.style.display == "none"){
			o.style.display = "inline";
		    //moveThis(obj);
		}else{
			o.style.display = "none";
		}
	}catch(e){
		alert("Page load not finished... (or other error).");
	}

	return true;
}

/////////////////////////////////////////////////////////////////////////////////
function changeClass(obj,clsNm){
/////////////////////////////////////////////////////////////////////////////////
	//alert(obj + " " + clsNm);
	var o = eval(obj);
	if(o){o.className = clsNm;}
	return true;
}


/////////////////////////////////////////////////////////////////////////////////
function changeValue(){
/////////////////////////////////////////////////////////////////////////////////
	var formFld = arguments[0]; //'Task_" & rs("ia_ID") & "' FieldName
	var dbFld	= arguments[1]; //'ia_Task_completed_Date'
	var cmd     = arguments[2]; //''SET_TO_NOW'
	var idNme   = arguments[3]; //'ia_id (id name)
	var idVal   = arguments[4]; //'5321 (id value)
	var DBval   = arguments[5]; //'21/Jun/2006 currDate
	var tblNme	= arguments[6]; //'tblInteractions tableName
	var oState  = arguments[7]; //'checked? true/false
	
	var f = eval("document.edit2")

	//alert("formFld: " + formFld + "\ndbFld: " + dbFld + "\ncmd: " + cmd + "\nidVal: " + idVal + "\idNme: " + idNme + "\nDBval: " + DBval + "\ntblNme: " + tblNme + "\noState: " + oState);
	try{
		
		if(cmd == "SET_TO_NOW")
		{
			if(oState)
			{	
				//alert("set to now...");
				f.FieldValue.value  = DBval;			
			}else{
				//alert("set to Null...");
				f.FieldValue.value  = "";			
			}
			f.FieldName.value   = dbFld;
			f.updID_Name.value  = idNme;
			f.updID_Value.value = idVal;
			f.updTbl.value      = tblNme;
					
		}
	
		f.submit();
	}catch(e){
		alert("field value not set... error.");
	}
	
	return true;
}

function InitiateDrag(str){
	SourceMsg = str;

	window.status = "S: "+ SourceMsg + " T: " + TargetMsg;

} 

/*/////////////////////////////////////////////////////////////////
Executes drop in form maintenance tool (see: /admin/eMaint/maint.asp)
/////////////////////////////////////////////////////////////////*/

function AddToList(oTargetId)
{                
	var m;
	var cmd = "";
	var par = "";
	var Litem = "";
	//' --- JavaScript 1.1
	//' --- get arguments of the function
	//' --- function.length number of expected args
	if (arguments.length > ShowResults.length){
		m = "ShowResults.length: " + ShowResults.length + "\n"
		for(var a = ShowResults.length; a < arguments.length; a++){
			m += a + " " + arguments[a] + "\n";	
		}
		//alert(m);
		cmd = arguments[1]; //' --- get command if any
		par = arguments[2]; //' --- get parent div if any
		m += "cmd: " + cmd + " \n"
	}
	
	//alert(cmd);
		
				 // Information about the events 
                 // and what object fired them.
  	arg = "'" + event.type + "'  fired by  '" + oTargetId + "'\n";  
	arg += "ctrlKey=" + event.ctrlKey + ";\n"
	arg += "--end_of_arguments--\n" //' always put that at the end of the arguments list - everything else is content
	TargetMsg = oTargetId;
  	var oTarget = document.getElementById(oTargetId);
	if(event.type == "drop")
	{
		var str = event.dataTransfer.getData("Text") + ""
		var aryStr
		
		//sImageURL = event.dataTransfer.getData("URL")
		//sImageURL = event.dataTransfer.getData("Text")
		if(str.indexOf("#")>-1){ // split at anchor #<field name>
			aryStr = str.split("#")	
			/*
			for(i = 0; i < aryStr.length; i++){ 
				if(aryStr[i].indexOf("Msg_ID=")>-1){
					SourceMsgID += aryStr[i].replace("Msg_ID=","") + ","
					
				}
			}
			*/
		  Litem = aryStr[1] + ";"
		  if(aryStr[0].indexOf("FieldText=")>-1){ // split at FieldText= to get the <field name>
			aryFldNm = aryStr[0].split("FieldText=");
			var fldNme = aryFldNm[1];
		  }  
		}
			
	  	m += "-------------- msg finish --------------- \n"
	  	var oPar = document.getElementById(par);
		 
		if (par.indexOf("_div") >=0){
			var fldList = par.replace("_div","_fldList");
			var oFldList = document.getElementById(fldList); 
			//alert(par + " " + par.indexOf("_div") + "\nfldList: " + fldList + "\noFldList: " + oFldList);
			}
		oTarget.innerText += m + arg + str;
		
		if(fldNme){
		    oPar.innerHTML += fldNme + "<br>\n";
		}else{
			oPar.innerHTML += Litem + "<br>\n";
		}
		if (oFldList){
			//alert(Litem);
			var ef = document.forms["editM"]
			ef[fldList].value +=Litem;
			//document.forms.oFldList.value +=Litem;
		}

/*		if(event.ctrlKey==true){
			alert("No files or interactions created!\n\nYou pressed the Ctrl-Key.\n(event.ctrlKey: "+event.ctrlKey+")");
		
		}else{
*/
			if(mode == 1){ alert("execDrag("+oTargetId+")")}
			if (cmd != "NOSEND")
			{
				var ex = execDrag(oTargetId);
			}
//		}
	}else{	
		oTarget.innerText = "";
	}
	window.event.returnValue=false;	

	// ---------------------------------------------------------------------------------------------
	// --- Handle drop here

	window.status = "S: "+ SourceMsg + " T: " + TargetMsg;
	document.editM.SourceMsg.value= SourceMsg;
	document.editM.TargetMsg.value=	TargetMsg;

	TargetMsg = "";
	// ---------------------------------------------------------------------------------------------

	SourceMsgID = "";
}




////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
///
///
///                             MENU SEARCH JS
///
///
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

function OpenAll(ctn){
	var o = men[ctn];
	var i = 0;
	var res = "";
	var re, r;
	for(i = 0; i < o.theMenu.length; i++){
		res = openBranch(i,o)
	}
	
	o.displMenu(ctn);
	//alert(m);
}

function CloseAll(ctn){

	var o = men[ctn];
	var i = 0;
	var res = "";
	var re, r;
	for(i = 0; i < o.theMenu.length; i++){
		res = closeBranch(i,o)
	}
	
	o.displMenu(ctn);
	//alert(m);
	
}
var m = "";
function SearchMenu(searchFor,o){
	var i = 0;
	m = "search for: " + searchFor + "\n\n";
	var res = "";
	var re, r;
	re = eval("/"+searchFor+"/gi");
	for(i = 0; i < o.theMenu.length; i++){

		r = o.theMenu[i].text.search(re) 
		if(r != -1){

			m +=  i  + " | "
			m +=  o.theMenu[i].pg  + " | "
			m +=  o.theMenu[i].text 
			m +=  " *******FOUND******* "
			m += " | "	
			m +=  o.theMenu[i].parent + " | "
			m +=  o.theMenu[i].status + " | "
			m +=  o.theMenu[i].hasChilds + "\n"
			
			// --- change - class
			o.theMenu[i].type=o.theMenu[i].srcCls; // --- class used if item found by menu search
			
			res = openBranch(i,o)
		}else{

			o.theMenu[i].type=o.theMenu[i].defaultCls; // --- class used to restore item found by menu search 		

		}
		
		
	}
	if(i>0){i--};
	o.displMenu(o.theMenu[i].ct);
	//alert(m);

}

function openBranch(currItem,o){
	
	var res;
	if(o.theMenu[currItem]){
		o.theMenu[currItem].status = true;
		if(o.theMenu[currItem].parent == o.theMenu[currItem].pg){
			return true;		
		}else{
			 
			o.theMenu[currItem].status = true;
			for(var j = 0; j < o.theMenu.length; j++){
				if(o.theMenu[j].pg  == o.theMenu[currItem].parent){
					o.theMenu[j].status = true;
					//m += "=====" + j + " | " + theMenu[j].status + " | p: " + theMenu[currItem].parent + " L0\n";
					res = openBranch(j,o);
					break;
				}
			}


		}
		//m += "-----" + currItem + " | " + theMenu[currItem].status + " | p: " + theMenu[currItem].parent + " Lx\n";
	}
}

function closeBranch(currItem,o){
	
	var res;
	if(o.theMenu[currItem]){
		o.theMenu[currItem].status = false;
		if(o.theMenu[currItem].parent == o.theMenu[currItem].pg){
			return true;		
		}else{
			 
			o.theMenu[currItem].status = false;
			for(var j = 0; j < o.theMenu.length; j++){
				if(o.theMenu[j].pg  == o.theMenu[currItem].parent){
					o.theMenu[j].status = false;
					//m += "=====" + j + " | " + theMenu[j].status + " | p: " + theMenu[currItem].parent + " L0\n";
					res = closeBranch(j,o);
					break;
				}
			}


		}
		//m += "-----" + currItem + " | " + theMenu[currItem].status + " | p: " + theMenu[currItem].parent + " Lx\n";
	}
}
/////////////////////////////////////////////// MENU SEARCH JS - END ///////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
///
///
/// ' ===================================================================
/// ' === FUN STUFF 
/// ' ===================================================================
///
///
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/* 
'
' -------------------------------------------------------------------
' --- Menu Shadow (Shadow for Menu DIV)
' -------------------------------------------------------------------
' if you dont want to use the shadow remove this script block and
' these lines in function displMenu():
'	// --- create shadow ----
'	var res = makeRectangularDropShadow(M1, "#cccccc", 3)
'	global.fo_currentMenu = M1;
' -------------------------------------------------------------------
*/
var global = window.document
global.fo_currentMenu = null
global.fo_shadows = new Array

function makeRectangularDropShadow(el, color, size)
{
	
	var res = cleanUpShadow() //' --- clean up existing shadow first
	//alert(el.id + " style: left: " + el.style.posLeft + " top: " + el.style.posTop);
	
	var i;
	for (i=size; i>0; i--)
	{
		var rect = document.createElement('div');
		var rs = rect.style
		rs.position = 'absolute'; //el.style.position; //
		rs.left = (el.style.posLeft + i) + 'px';
		rs.top = (el.style.posTop + i) + 'px';
		rs.width = el.offsetWidth + 'px';
		rs.height = el.offsetHeight + 'px';
		rs.zIndex = el.style.zIndex - i;
		rs.backgroundColor = color;
		var opacity = 1 - i / (i + 1);
		rs.filter = 'alpha(opacity=' + (100 * opacity) + ')';
		el.insertAdjacentElement('afterEnd', rect);
		global.fo_shadows[global.fo_shadows.length] = rect;
	}
	
}

function cleanUpShadow(){

	if (global.fo_currentMenu)
	{
		for (i=0; i<global.fo_shadows.length; i++)
		global.fo_shadows[i].removeNode(true);
	}
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
///
///
/// ' ===================================================================
/// ' === SCALE and MOVE
/// ' ===================================================================
///
///
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

function scaleThis(objId) {
    var sphere = document.getElementById(objId);
	if (sphere.style.pixelWidth <900) {
			sphere.style.pixelWidth += 4;
			sphere.style.pixelHeight +=4;
			window.setTimeout("scaleThis('"+objId+"');", 1);
		}
	
}

function moveThis(objId) {
    var sphere = document.getElementById(objId);

 if (sphere.style.posLeft<900) {
			sphere.style.posTop += 2;
			sphere.style.posLeft += 2;
			window.setTimeout("moveThis('"+objId+"');", 1);
			}
}

function scaleThis2(objId) {
    var sphere = document.getElementById(objId);

	if (sphere2.style.pixelWidth <900) {
			sphere2.style.pixelWidth += 2;
			sphere2.style.pixelHeight +=2;
			window.setTimeout("scaleThis2('"+objId+"');", 1);
		}
	
}

function moveThis2(objId) {
    var sphere = document.getElementById(objId);

 if (sphere2.style.posLeft<900) {
			sphere2.style.posTop += 1;
			sphere2.style.posLeft += 1;
			window.setTimeout("moveThis2('"+objId+"');", 1);
			}
}


function showMoveDiv(objId,objIdMoveTo){
    try{
        var o = document.getElementById(objId);
        var o2 = document.getElementById(objIdMoveTo);
        var tx, ty;
        
        o.style.display ='block';
	    o.style.top = ty = findPos(o2).y + "px";
	    o.style.left = tx = findPos(o2).x + "px";
        o.style.display='block';
        o.style.visibility='visible';
        //debugMsg(objId + " x: " + tx + "\ny: " + ty + "<br/>\ndisplay: " + o.style.display + "<br/>\n","refresh","debugDIV"); 
   }catch(e){}
}

/*
    In all browsers it's necessary to use the offsetTop and offsetLeft of the element. 
    These properties give the coordinates relative to the offsetParent of the element.

    The script moves up the tree of offsetParents and adds the offsetTop and offsetLeft of each. 
    Eventually, regardless of the actual composition of the offsetParent tree, this leads to 
    the real coordinates of the element on the screen.

*/

function findPos(obj) {
	var curleft = curtop = 0;
    if (obj.offsetParent) {
        do {
			    curleft += obj.offsetLeft;
			    curtop += obj.offsetTop;
        } while (obj = obj.offsetParent);
    }
    return{x : curleft, y : curtop};
    
}

function hideParent(parentId){
    var o = document.getElementById(parentId);
    o.style.display='none';

}

// <div id="debugDIV" style="position:absolute; top:10px;left:900px;height:200px;width:300px;overflow:auto;font-face:Calibri;font-size:8pt;background-color:#FFFFB3;color:#000000;border:1px solid #ff0000;"></div>

function debugMsg(m,cmd,dbugDivId){
    var dbM = document.getElementById(dbugDivId);
    dbM.style.display ='block';
    if(cmd == "add"){
    
        dbM.innerHTML += m;
    
    }else{
        dbM.innerHTML = m;

    }



}
