/* Here we collect the standard javascripts */


// find browser version
var IE = 0;
if((navigator.appName.indexOf("Microsoft")>-1) || (navigator.appName.indexOf("MSIE")>-1)){ IE=1; }

var dynmenu_elements = new Array();
function dynMenu(path) {

	/* dynmenu_(TOP$|TOP:TWO$|TOP:TWO:TRE$) */
	elements = path.split(':');
	var regex; var pathbuild;
	for (var i=0; i<elements.length; i++) {
		if (pathbuild == null) pathbuild = elements[i];
		else pathbuild = pathbuild+':'+elements[i];
		if (regex == null) regex = pathbuild+'$';
		else regex = regex+'|'+pathbuild+'$';
	}
	var match = new RegExp('dynmenu_('+regex+')');	
	for (var i=0; i<dynmenu_elements.length; i++) {
		if (i==0) { continue; }
		if (match.exec(dynmenu_elements[i])) {
			if (document.getElementById(dynmenu_elements[i]).style.display != 'block') {
				document.getElementById(dynmenu_elements[i]).style.display = 'block'; }
		} else {
			document.getElementById(dynmenu_elements[i]).style.display = 'none';
		}	
	}
}


// display and hide layout-tables on action call from value in popup / checkbox / radio..
function layoutAction(check,path,inp,val) {
//	alert("layoutAction >>> check:"+check+"\n path:"+path+" \ninp:"+inp+" val:"+val+" value:"+value);

	if (check == 'clear') {

		var oElm = getMultElementsByPartID(document.documentElement,"TABLE","tbBox_"+path+'_'+value);
		for (m=0; m<oElm.length; m++) {				
//			alert("found oElm "+oElm[m].id);
			if (vals[0] != val) { 
				oElm[m].style.display = '';
			}
		}

	} else if (check == 'show') {
		if (!inp) { return; }

		// set the edit parameters
		var regSemiColon = /\s*;\s*/;
		var regUnequals = /\s*!=\s*/;
		var regEquals = /\s*=\s*/;
		var regComma = /\s*,\s*/;
	
		opts = inp.split(regSemiColon);

// check:show path:DEUS_c1m1a_A_c1m1a_capewhite_c1m1a_A_c1m1a_simcorp_ajax_c1m1a_A_c1m1a_edit_prog_c1m1a_A_c1m1a_s114647204119995_c1m1a_A_c1m1a__a2t2r__c1m1a_obexp 
// inp:Y=yes1,comm1;P=quest1,comm1;N=quest1,comm1; val:

// inp: inget=N,Y,VEJ !comm1;P=quest1,comm1;N=quest1,comm1; val:
// inp: !ingen = 



		// set invisible on all conserned objects
		for (i=0; i<opts.length; i++) {
			var toggle = '';
			vals = opts[i].split(regUnequals);
			if (!vals[1]) { 
				toggle = 'none';
				vals = opts[i].split(regEquals);
			}

			if (!vals[1]) { continue; }
			if (vals[0] != val) {

				boxes = vals[1].split(regComma);

				for (k=0; k<boxes.length; k++) { 
					var value = boxes[k].toLowerCase();	
					var oElm = getMultElementsByPartID(document.documentElement,"TABLE","tbBox_"+path+'_'+value+'$');

//					alert("hiding> path:"+path+" value:"+value);

					for (m=0; m<oElm.length; m++) {				
//						alert("eval> ["+m+"] path:"+path+" value:"+value);
						oElm[m].style.display = toggle;

						if (toggle != 'none' && AJAX_DEF['tbBox_'+path+'_'+value]) {
							// object is ajax defined. we gather it by reload the server.
//							alert('enter disp hier rows '+vals[0]);
							dispHierRows(path,value,AJAX_DEF['tbBox_'+path+'_'+value],'show');
						}
					}
				}
				
			// != shows the box in case of hit
			} else if (toggle == '') {
			
				boxes = vals[1].split(regComma);

				for (k=0; k<boxes.length; k++) { 
					var value = boxes[k].toLowerCase();
					var oElm = getMultElementsByPartID(document.documentElement,"TABLE","tbBox_"+path+'_'+value+'$');

					for (m=0; m<oElm.length; m++) {				
						oElm[m].style.display = 'none';

					}
				}
			
			}
		}

		// display just option choosed
		for (i=0; i<opts.length; i++) { 
			vals = opts[i].split(regEquals);
			if (!vals[1]) { continue; }
			if (vals[0] == val) {

				boxes = vals[1].split(regComma);

				for (k=0; k<boxes.length; k++) {
					var value = boxes[k].toLowerCase();
					var oElm = getMultElementsByPartID(document.documentElement,"TABLE","tbBox_"+path+'_'+value+'$');
//					alert("display> path:"+path+" value:"+value);

					for (var m=0; m<oElm.length; m++){
						oElm[m].style.display = '';
//						alert("eval> ["+m+"] path:"+path+" value:"+value+" DEF:"+AJAX_DEF['tbBox_'+path+'_'+value]+" value:"+value);

						if (AJAX_DEF['tbBox_'+path+'_'+value]) {
							// object is ajax defined. we gather it by reload the server.
//							alert('enter disp hier rows '+vals[0]);
							dispHierRows(path,value,AJAX_DEF['tbBox_'+path+'_'+value],'show',1);
						}
					}
				}
			}
		}
	}
}

var toolbarIndicator = new Array();
function toolb(path,vers) {
//	 alert("enter toolbar path:"+path+" vers:"+vers);

	if (toolbarIndicator[path]) {
		toolbarIndicator[path] = 0;
	} else {
		toolbarIndicator[path] = 1;
	}

	// set border
	var oElm = getMultElementsByPartID(document.documentElement,"TABLE","box_tab_TB_"+path);
	for (var i=0; i<oElm.length; i++){
		if	(toolbarIndicator[path]) {
			oElm[i].border=1;
			oElm[i].style.borderWidth="1px";
			oElm[i].style.emptyCells="show";
//		oElm[i].cellpadding=5;
		} else {
			oElm[i].border=0;
		}
	}


	// display toolbar
	var oElm = getMultElementsByPartID(document.documentElement,"TR","box_toolbar_TR_"+path);
	for (var i=0; i<oElm.length; i++){
//		alert("["+i+"] IE:"+IE+" oElm>"+oElm[i].id+" style:"+oElm[i].style+" disp:"+oElm[i].style.display);
		if	(toolbarIndicator[path]) {
			if (IE) { oElm[i].style.display = 'inline';	} 
			else { oElm[i].style.display = 'table-row'; }
		} else {		
			oElm[i].style.display='none';
		}
	}

	// the horizontal position row
	var oElm = getMultElementsByPartID(document.documentElement,"TR","box_pos_TR_"+path);
	for (var i=0; i<oElm.length; i++){

//		alert("box_pos_TR obj:"+oElm[i].id+" disp:"+oElm[i].style.display);
		if	(toolbarIndicator[path]) {
			if (IE) { oElm[i].style.display = 'inline';	} 
			else { oElm[i].style.display = 'table-row'; }
		} else {
			oElm[i].style.display='none';
		}
	}

	// the vertical position column 
	var oElm = getMultElementsByPartID(document.documentElement,"TD","box_pos_TD_"+path);
	for (var i=0; i<oElm.length; i++){
//		alert("box_pos_TD obj:"+oElm[i].id+" disp:"+oElm[i].style.display);
		if	(toolbarIndicator[path]) {
//			oElm[i].style.borderWidth='1px';	
//			oElm[i].style.borderStyle='solid';
//			oElm[i].style.padding='2px';
// 			oElm[i].style.borderColor='#808080';	
			if (IE) { oElm[i].style.display = 'inline';	} 
			else { oElm[i].style.display = 'table-cell'; }
		} else {
//			oElm[i].style.borderWidth='0px';	
//			oElm[i].style.padding='0px';
			oElm[i].style.display='none';
		}
	}

	// the checkboxes (can be declared in both TD and UL fields)
	var oElm = getMultElementsByPartID(document.documentElement,"TD","box_checkbox_"+path);
	for (var i=0; i<oElm.length; i++){
		if	(toolbarIndicator[path]) {
			if (IE) { oElm[i].style.display = 'inline';	} 
			else { oElm[i].style.display = 'table-cell'; }
		} else { oElm[i].style.display='none'; }
	}

	var oElm = getMultElementsByPartID(document.documentElement,"UL","box_checkbox_"+path);
	for (var i=0; i<oElm.length; i++){
		if	(toolbarIndicator[path]) { oElm[i].style.display='block'; } 
		else { oElm[i].style.display='none'; }
	}
	
	var oElm = getMultElementsByPartID(document.documentElement,"TR","box_title_TR_"+path);
	for (var i=0; i<oElm.length; i++){
		if	(toolbarIndicator[path]) { 
			if (IE) { oElm[i].style.display = 'inline';	} 
			else { oElm[i].style.display = 'table-row'; }
		} else { oElm[i].style.display='none'; }
	}

}

var npPre; var npPos;
function retNodePath(path,stop) {
	npPre = ''; npPos = '';

	// set input path
	elements = path.split('&');
	nodes = new Array();
	for (var i=0; i<elements.length; i++) {
		temp = elements[i].split('=');
		nodes[temp[0]] = temp[1];
	}

	// combind the target
	for (var i=0; i<pathTree.length; i++) {
		var val = nodes[pathTree[i]] || currPath[i];
		npPre = npPre + val+ '['; npPos = npPos + ']';
		if (pathTree[i] == stop) { break; }
	}

	return;

}

/*

ex:	$vals => SI=db29 & PA=myPage & TA=users & TA_AL=# CO=info CO_AL=abc

	TA=# indicates we are entering the table attributes.... 
	the following steps enter the attribute name (info) and the att value (abc) 
	$Deep => CO_AL in the case above.. the last unit of the stairs where we hold values
			VA is not of interest in the ex above
	$localEnumSwitch => if the value should switch from Y or N locally..
			then we base the result of whats existing already
*/

// updThemeBound(';DEUS;A;capetwo;A;db50;A;ALL;A;userList;A;attst;A;ico_veditcolor;A;users;#;val)
function updThemeBound(themeBound,val,local) {
	if (local) {
		if (document.DEUS.elements[themeBound].value == 'Y') { val = "N"; } else { val = "Y"; }
	}
	document.DEUS.elements[themeBound].value = val;
}


function setDictVar (path,link) {
	myRe = new RegExp("\#lng\'.*\'");
	if (document.DEUS.elements[path].value &&
		myRe.exec(document.DEUS.elements[path].value)) {
		unitSwitch('nullInp',path,'DEF','check');
		// do nada
	} else {
		unitSwitch('nullInp',path,'DEF','check');
		document.DEUS.elements[path].value = "#lng'"+link+"'";
	}
}


//var hierRows = new Array();
var AJAX_DEF = new Array();
var AJAX_REN = new Array();
function dispHierRows(path,block,ajax,kind,fix,attr) {
	// path : unique path to the object
	// block : combined with the path makes the object unique even though its multiple
	// ajax : an ajax id is set for the object
	// kind : show or hide the object
	// fix : alter if multiple objects should be searched for.. or if we want just a single hit.

	// remove bug for odd symbols ajax makes 
	if (attr)
		attr = attr.replace(/[^A-Za-z0-9=&]/g, '');

	var oElm = new Array();
	if (fix) {
		oElm[0] = document.getElementById("hierbox_"+path+'_'+block);
	} else {
		oElm = getMultElementsByPartID(document.documentElement,"DIV,TR","hierbox_"+path+'_'+block);
	}
	
	var inclatts = '';
	if (attr) inclatts = attr;

	for (var i=0; i<oElm.length; i++){
		if ((kind && kind == 'show') || oElm[i].style.display == 'none') {
			oElm[i].style.display = '';
			if (document.getElementById('hierimg_'+path+'_'+block)) {
				document.getElementById('hierimg_'+path+'_'+block).src = '/pub/SYSTEM/images/formDisplay/arrows/a_arr_red_down.gif';
			}

			if (ajax && !AJAX_REN[ajax]) {
				document.getElementById('hierload_'+path+'_'+block).style.display = '';
				makeRequest('partPage=ajax&ajID='+ajax+inclatts,path+'_'+block);
			 	AJAX_REN[ajax] = 1;
			 }

		} else {
			oElm[i].style.display = 'none';
			if (document.getElementById('hierimg_'+path+'_'+block)) {
				document.getElementById('hierimg_'+path+'_'+block).src = '/pub/SYSTEM/images/formDisplay/arrows/a_arr_red_right.gif';
			}
		}
	}
}


function addMultVal(path,val) {
	
	var old = document.DEUS.elements[path].value;
	
	if (old) {
		var olds = old.split('\0');
		for (i=0; i<olds; i++) {
			if (olds[i] == val) { return; }	
		}
		document.DEUS.elements[path].value = old+"\0"+val;
	} else {
		document.DEUS.elements[path].value = val;
	}

}

function remMultVal(path,val) {
	
	var old = document.DEUS.elements[path].value;
	if (old) {
		var olds = old.split('\0');
		for (i=0; i<olds; i++) {
			if (olds[i] == val) { removed = olds.splice(i, 1); alert("removed: "+removed); }	
		}
		document.DEUS.elements[path].value = olds.join('\0');
	}
}



function unitSwitch(pre,path,cls,deNull) {
//	alert("enter unit switch >> "+pre+","+path+","+cls+","+deNull);
	// checkbox
	if (document.DEUS.elements[pre+"_"+path] && 
		document.DEUS.elements[pre+"_"+path].type == 'checkbox') {

		if (deNull == 'check') {
			// user change values
			if (document.getElementById('nullIndic_'+path)) {
				document.getElementById('nullIndic_'+path).className = cls+'_nullOff'; }
			if (document.DEUS.elements[path].value == 'Y') { 
				document.DEUS.elements[path].value = 'N'; } 
			else {  document.DEUS.elements[path].value = 'Y'; }

		} else {
			// path is "force transparency" - we change to "transparent"
			if (document.DEUS.elements[path].value == '#!') {
				if (document.getElementById('nullIndic_'+path)) {
					document.getElementById('nullIndic_'+path).className = cls+'_null'; }
				document.DEUS.elements[pre+"_"+path].checked = false;
				document.DEUS.elements[path].value = '#';
			// path is "transparent" - we change to "off"
			} else if (document.DEUS.elements[path].value == '#') {
				if (document.getElementById('nullIndic_'+path)) {
					document.getElementById('nullIndic_'+path).className = cls+'_nullOff'; }
				document.DEUS.elements[pre+"_"+path].checked = false;
				document.DEUS.elements[path].value = 'N';
			// path is "off" - we change to "force transparency"
			} else {
				if (document.getElementById('nullIndic_'+path)) {
					document.getElementById('nullIndic_'+path).className = cls+'_nullSet'; }
				document.DEUS.elements[pre+"_"+path].checked = false;
				document.DEUS.elements[path].value = '#!';
			}
		}

	// select
	} else {

		if (deNull == 'check') {
			if (document.DEUS.elements[pre+"_"+path] && document.DEUS.elements[pre+"_"+path].value) {
				// user change values
				if (document.getElementById('nullIndic_'+path)) {
					document.getElementById('nullIndic_'+path).className = cls+'_nullOff'; }
				document.DEUS.elements[pre+"_"+path].value = '';
			}

		} else {

			// path is "transparent" - we change to "off"
			if (document.DEUS.elements[pre+"_"+path].value == '#') {
				if (document.getElementById('nullIndic_'+path)) {
					document.getElementById('nullIndic_'+path).className = cls+'_nullOff'; }
				document.DEUS.elements[pre+"_"+path].value = '';
			// path is "force transparency" - we change to "transparent"
			} else if (document.DEUS.elements[pre+"_"+path].value == '#!') {
				if (document.getElementById('nullIndic_'+path)) {
					document.getElementById('nullIndic_'+path).className = cls+'_null'; }
				document.DEUS.elements[pre+"_"+path].value = '#';
			// path is "off" - we change to "force transparency"
			} else {
				if (document.getElementById('nullIndic_'+path)) {
					document.getElementById('nullIndic_'+path).className = cls+'_nullSet'; }
				document.DEUS.elements[pre+"_"+path].value = '#!';
			}
		}
	}
}




var switchImages
function switchIconImage(Path,Name) {
	myRe = new RegExp("/pub/SYSTEM/images/formDisplay/icons/"+Name+".gif$");
	eval("if (myRe.exec(document.DEUS.img_"+Path+".src)) "+
		"{ document.DEUS.img_"+Path+".src=\"/pub/SYSTEM/images/formDisplay/icons/"+Name+"_v2.gif\"; }"+ 
		" else { document.DEUS.img_"+Path+".src=\"/pub/SYSTEM/images/formDisplay/icons/"+Name+".gif\"; }"); 
}


function switchIcon(Path,val) {
	
	var i = 1;
	while (document.getElementById('switch_'+Path+'-'+i)) {
		if	(document.getElementById('switch_'+Path+'-'+i).style.display=='none') {
			document.getElementById('switch_'+Path+'-'+i).style.display='inline';	

		} else if (document.getElementById('switch_'+Path+'-'+i).style.display=='inline') {
			document.getElementById('switch_'+Path+'-'+i).style.display='none';

		} else if (val == 'block') {
			document.getElementById('switch_'+Path+'-'+i).style.display='inline';

		} else if (val == 'none') {
			document.getElementById('switch_'+Path+'-'+i).style.display='none';

		} else {		
			document.getElementById('switch_'+Path+'-'+i).style.display='inline';
		}
		i++;
	}
}


// open up a new window
var setWin;
function newWin(path,width,height,ref) {
	setWin = window.open(path,(ref || "win"+Math.round(Math.random()*100)),
			'toolbar=no,scrollbars=yes,'+
			'resizable=yes,status=1,width='+width+',height='+height);
	// make sure this window is the opener
	setWin.opener = self;
	setWin.creator = self;
	setWin.focus();
//	window.document.name = Math.round(Math.random()*1000);
//	setWin.opener.name = window.document.name;
}

// open a window displaying the info of a post
function infoWin(table,id) {
	newWin('','440','500','info');
	transmitPost('table='+table+'&id='+id,'info.cgi','info');
}

// open a window displaying the administration of a post
function adminWin(table, id, original_table, current_window) {
	if (original_table) id = id+"&original_table="+original_table;
	if (current_window) {
		transmitPost('table='+table+'&id='+id,'info_admin.cgi');
	} else {
		newWin('','440','500','info_admin');
//		window.open('','info_admin','scrollbars=yes,toolbar=no,width=440,height=500,resizable=yes');
		transmitPost('table='+table+'&id='+id,'info2.cgi','info_admin');
	}
}

// open a window displaying the administration of a post
function loginWin(params) {
	newWin('','350','300','login');
	transmitPost(params,'','login');
}


function searchWin(FD_table,operation,origin,table) {
	newWin('','750','600','searchWindow');
	update = '_FD_table='+FD_table+'&_FD_operation='+operation+'&_FD_origin='+origin;
	if (table) update += '&table='+table;
	transmitPost(update,'search.cgi','searchWindow');
}

function printWin(PRINT_table) {
	newWin('','750','600','printWindow');
	transmitPost('_PRINT_table='+PRINT_table,'print.cgi','printWindow');
}


// a counter that keeps track of what the next invert version will be
function invert(table) {
	for (k=0; k<document.forms.length; k++) {
		for (i=0; i < eval("document.forms["+k+"].length"); i++) {
			if (document.forms[k].elements[i].name == '_FD_invert_'+table) {
				if (document.forms[k].elements[i].value == '1') {
					document.forms[k].elements[i].value = '0';
				} else {
					document.forms[k].elements[i].value = '1';
				}
				break;
			}
		}
	}
}

// gather together all parameters located at the form 'myform' to a string 
// name=value&name2=value2...
function gather_params() {
	if (document.myform.insert) {
		document.myform.insert.value = '0';
	}
	var paramlist = '';
	for (i=0; i<document.myform.length; i++) {
		// eliminate harmfull insert values
		if (document.myform.elements[i].name == "insert") continue;
		// ignore unselected checkboxes
		if (document.myform.elements[i].type == "checkbox" && document.myform.elements[i].checked == false) continue;
		// ignore nameless objects, like a submit button
		if (document.myform.elements[i].name == "") continue;
		paramlist += '&' +  document.myform.elements[i].name + '=' + (convert_to_parameter(document.myform.elements[i].value || ''));
	}
	return (paramlist);
}

// gather together all parameters located at the form $form to a string 
// name=value&name2=value2...

function convert_to_parameter(string) {
	var new_string = '';
	for (var i=0; i<string.length; i++) {
		ascii = string.charCodeAt(i);
		if (ascii == 10 || ascii == 13) {
			new_string += "%0D%0A";
		} else if (ascii == 32) {
			new_string += "%20";
		} else if (ascii == 42 || ascii == 45 || ascii == 46 || (47 < ascii && ascii < 58) || (63 < ascii && ascii < 91) || ascii == 95 || (96 < ascii && ascii < 123)) {
			new_string += string.charAt(i);
		} else {
//			alert("set strange ascii:"+string.charAt(i));
			new_string += escape(string.charAt(i)); // uc(sprintf("%lx", ascii));
//			alert("result:"+new_string);
		}
	}
	return (new_string);
}

function warnNoSel(text) {
	var match = new RegExp('\;\#\;sel$');	
	for (k=0; k<document.forms.length; k++) {
		for (i=0; i < eval("document.forms["+k+"].length"); i++) {
			if (match.exec(document.forms[k].elements[i].name)) {
				if (document.forms[k].elements[i].checked == true) { return true; }
			}
		}
	}
	alert(text);
}

var mode = new Array();
function select_all(vers,p1,p2) {
	var ma;
	if (vers == "day.cgi") ma = new RegExp("type"+p1+"_obj");
	else ma = /REM_LIST_TAB_\w+_OBJ_\d+/;

	for (k=0; k<document.forms.length; k++) {
		for (i=0; i < eval("document.forms["+k+"].length"); i++) {
			// ignore nameless objects, like a submit button
			if (ma.exec(document.forms[k].elements[i].name)) {
				if (mode[k] == true) {
					document.forms[k].elements[i].checked = true;
				} else {
					document.forms[k].elements[i].checked = false;
				}
			}
		}
		if (mode[k] == false) { mode[k] = true; } else { mode[k] = false; }
	}
}

function selMultCheck(pre,id) {
	var oElm = getMultElementsByPartID(document.documentElement,"input",pre+id);
	var checked = 0;
	for (m=0; m<oElm.length; m++) {
		if (oElm[m].type == 'checkbox') {
			if (checked == 0) {	// use first box to declare initial state
				if (oElm[m].checked == true) { checked = 2; }
				else { checked = 1; }
			}
			if (checked == 1 && oElm[m].checked == false) {
				oElm[m].click();	// row is not selected, we select it
			} else if (checked == 2 && oElm[m].checked == true) { 
				oElm[m].click();	// row is selected, we deselect it
			}
		}
	}
}

function getDate(add) {

	var mydate = new Date()
	if (add) {
		mydate.setDate(mydate.getDate() + add);
	}
	var month = mydate.getMonth() + 1
	var day = mydate.getDate()
	var year = mydate.getFullYear()

	if (day < 10) { day = '0'+day; }
	if (month < 10) { month = '0'+month; }

	return year+''+month+''+day;

}

var selMode = new Array();
function selOpt(match) {
	var ma = new RegExp(match);
	for (k=0; k<document.forms.length; k++) {
		if (selMode[k] == false) selMode[k] = true; else selMode[k] = false;
		for (i=0; i < eval("document.forms["+k+"].length"); i++) {
			// ignore nameless objects, like a submit button
			if (ma.exec(document.forms[k].elements[i].name)) {
				if (selMode[k] == false) document.forms[k].elements[i].checked = true;
				else document.forms[k].elements[i].checked = false;
			}
		}
	}
}

function gather_params_glob() {

	var paramlist = '';
	for (k=0; k<document.forms.length; k++) {
		// remove harmfull parameter
//		if (eval("document.forms["+k+"].insert")) eval("document.forms["+k+"].insert.value = '0'");
//		if (eval("document.forms["+k+"].refreshed")) eval("document.forms["+k+"].refreshed.value = '0'");
		for (i=0; i < eval("document.forms["+k+"].length"); i++) {
			// eliminate harmfull insert values
			if (eval("document.forms["+k+"].elements["+i+"].name") == "insert") continue;
			// ignore unselected checkboxes
			if (eval("document.forms["+k+"].elements["+i+"].type") == "checkbox" && eval("document.forms["+k+"].elements[i].checked") == false) continue;			
			// ignore nameless objects, like a submit button
			if (eval("document.forms["+k+"].elements["+i+"].name") == "") continue;
			paramlist += '&' +  eval("document.forms["+k+"].elements["+i+"].name") + '=' + (convert_to_parameter(eval("document.forms["+k+"].elements["+i+"].value")) || '');
		}
	}	
	return (paramlist);
}

function refresh() {
	goTo_target(gather_params_glob());
}	

// eliminate strange non ascii input in textareas
function decode_text() {
	for (k=0; k<document.forms.length; k++) {
		for (i=0; i < eval("document.forms["+k+"].length"); i++) {
			if (document.forms[k].elements[i].type == "Textarea") {
				eval("document.forms["+k+"].elements["+i+"].name") + '=' + (convert_to_parameter(eval("document.forms["+k+"].elements["+i+"].value")) || '');
			}
		}
	}	
}

// prompt a warning window to be confirmed
function removewarning(question) {
	if (confirm(question)) return 1;
}

function warn(question) {
	if (confirm(question)) return true;
	return false;
}

// add a waggon entry to the present form
function waggon_entry(parameter) {
	if (document.myform.insert) {
		document.myform.insert.value = '0';
	}
	for (i = 0; i < document.myform.length; i++) {
		if (document.myform.elements[i].name == parameter) {
			document.myform.elements[i].value = '1';
		}
	}
	document.myform.submit();
}



//        -------- TRANSMIT DATA -------------


function gather_params_glob_all () {

	var paramlist = '';
	for (k=0; k<document.forms.length; k++) {
		// skip the transmit form itself
		if ( eval("document.forms["+k+"].name") == "transmitForm") continue;
		for (i=0; i < eval("document.forms["+k+"].length"); i++) {
			// ignore nameless objects, like a submit button
			if (eval("document.forms["+k+"].elements["+i+"].name") == "") continue;
			// unselected checkboxes is set to ''
			var value = eval("document.forms["+k+"].elements["+i+"].value");
			if (eval("document.forms["+k+"].elements["+i+"].type") == "checkbox" && 
					eval("document.forms["+k+"].elements[i].checked") == false) value = '';
			paramlist += '&' +  eval("document.forms["+k+"].elements["+i+"].name") + '=' + 
					(convert_to_parameter(value) || '');
		}
	}	
	return (paramlist);
}

function write_transmit () {
	document.writeln('<form name="transmitForm" method="post" action="">');
	
	var exists = new Array(); 

	for (k=0; k<document.forms.length; k++) {
//		alert("loop -> "+eval("document.forms["+k+"].name")+" == "+ eval("document.transmitForm.name"));
		if ( eval("document.forms["+k+"].name") == eval("document.transmitForm.name")) continue;
		for (i=0; i < eval("document.forms["+k+"].length"); i++) {
			if (eval("document.forms["+k+"].elements["+i+"].name") == "") continue;

			// test if the field already exists, copies are baaad!
			if (exists[eval("document.forms["+k+"].elements["+i+"].name")]) {
				continue;
			} else {
				exists[eval("document.forms["+k+"].elements["+i+"].name")] = true;
			}

			// write inputfield
			document.writeln('<input type="hidden" name="'+
					eval("document.forms["+k+"].elements["+i+"].name")+'" value="" />');
		}
	}
	document.writeln('</form>');
}


function transmit (inAction,inTarget) {

	if (!document.transmitForm) alert('No transmitForm found!!');
	if (inTarget) document.transmitForm.target = inTarget;
	if (inAction) document.transmitForm.action = inAction;

	parameters = gather_params_glob_all().split('&');
	var parameter; var exists = 0;
	for (k=0; k<document.transmitForm.length; k++) {

/*		match = new RegExp(parameter[0]+"=(.*)(?=&|)");
		// w+)\((.*?)(?<!\\)\)/
		var match = //g;
myArray = myRe.exec("cdbbdbsbz");
var match = /_FD__\w+:\w+_check/;
		for (i = 0; i < document.myform.length; i++) {
		if (match.exec(document.myform.elements[i].name)) {
*/

		for (i=0; i<parameters.length; i++) {
			parameter = parameters[i].split('=');
			if (parameter[0] == eval("document.transmitForm.elements["+k+"].name")) {
				exists = 1; break;
			}
		}
		if (exists == 0) continue;
/*		if (eval("document.transmitForm.elements["+k+"].type") == "checkbox" && 
				eval("document.transmitForm.elements["+k+"].checked") == false)
				eval("document.transmitForm.elements["+k+"].value = ''");			
*/

//		alert("DATA : " + eval("document.transmitForm.elements["+k+"].name") + "=" + 
//				eval("document.transmitForm.elements["+k+"].value") + " SET : "+parameter[0]+"="+parameter[1]);
//		eval("document.transmitForm."+parameter[0]+".value = '"+parameter[1]+"'");

		eval("document.transmitForm.elements["+k+"].value = '"+parameter[1]+"'");
	}
	document.transmitForm.submit();
}



function transmit_unSubmitted (inAction,inTarget) {

	if (!document.transmitForm) alert('No transmitForm found!!');
	if (inTarget) document.transmitForm.target = inTarget;
	if (inAction) document.transmitForm.action = inAction;

	parameters = gather_params_glob_all().split('&');
	var parameter; var exists = 0;
	for (k=0; k<document.transmitForm.length; k++) {
		for (i=0; i<parameters.length; i++) {
			parameter = parameters[i].split('=');
			if (parameter[0] == eval("document.transmitForm.elements["+k+"].name")) {
				exists = 1; break;
			}
		}
		if (exists == 0) continue;
		eval("document.transmitForm.elements["+k+"].value = '"+parameter[1]+"'");
	}
}


/* --------------------------------------------------------

 	function that submits the data
 	inUpdate = additional parameters set to the transform form
 			syntax: name=value&name2=value2..
 	inAction = form's action tag (the script the page is targeting)
 	inTarget = form's target tag (the window the page is targeting)
 			
 	POST-call: transmitPost() 
 	GET-call: goTo_target(gather_params_glob()) 

--------------------------------------------------------  */ 



function transmitPost (inUpdate,inAction,inTarget,anchor) {

	// add operations information, this can make harm if a user return to the page or
	// the operation opens a new window and the user keep working with the opener
	// we must reset the value after submission in the end
	var old_param = new Array();
	if (inUpdate) {
		var match = /^(.*?)=(.*)/;
		parameters = inUpdate.split('&');
		for (i=0; i<parameters.length; i++) {
			parameter = match.exec(parameters[i]);
			// save old value
			old_param[i] = document.DEUS.elements[parameter[1]].value;
			document.DEUS.elements[parameter[1]].value = parameter[2];
		}
	}
	
/*
	if (document.DEUS.elements["name"].value == "-----") {
		alert(inUpdate+","+inAction+","+inTarget+" OB:"+OB+" OP:"+self.opener.name);	
	} 
*/

	if (inTarget == 'windowOpener' && self.opener) {
		document.DEUS.target = self.opener.name;

	} else if (inTarget && inTarget != 'windowOpener') {
		document.DEUS.target = inTarget;

	} else {
		document.DEUS.target = '_parent';
	}
	

	if (inAction) document.DEUS.action = inAction;
	else document.DEUS.action = '';

	if (inAction && OB && anchor != 'top') document.DEUS.action = document.DEUS.action+'#'+OB;
	
	// execute
	document.DEUS.method = 'POST';
	document.DEUS.submit();

	// revert changed hidden values (or they will remain)
	if (inUpdate) {
		var match = /^(.*?)=(.*)/;
		parameters = inUpdate.split('&');
		for (i=0; i<parameters.length; i++) {
			parameter = match.exec(parameters[i]);
			// raise old value
			document.DEUS.elements[parameter[1]].value = old_param[i];
		}
	}
	if (inTarget == 'windowOpener' && self.opener) {
		setTimeout("self.close()", 1000);	// bug in safari (mac) it closes before done with submit.
	}

}


/* ----------------- BELOW FOLLOWS SCRIPTS BOUND TO THE SHORTCUTS ----------------- */



var selVals; var selRows; var selCols; var selObj;
function countSelected() {

	selVals = 0; 
	selRows = 0;
	selCols = 0;
	selObjs = 0;

	var valMatch = new RegExp('^checkVal_');	
	var rowMatch = new RegExp('^checkRow_');	
	var colMatch = new RegExp('^checkCol_');
	var objMatch = new RegExp('^checkObj_');

	for (k=0; k<document.forms.length; k++) {
		for (i=0; i < eval("document.forms["+k+"].length"); i++) {
			if (document.forms[k].elements[i].checked == true) {
				if (valMatch.exec(document.forms[k].elements[i].name)) { 				
					selVals++;
				} else if (rowMatch.exec(document.forms[k].elements[i].name)) {
					selRows++;
				} else if (colMatch.exec(document.forms[k].elements[i].name)) { 
					selCols++;
				} else if (objMatch.exec(document.forms[k].elements[i].name)) { 
					selObjs++;
				}
			}
		}
	}
}




function dispWaitTxt(inp) {
	if (document.getElementById('waitWin_'+inp)) {
		document.getElementById('waitWin_'+inp).style.display = 'block';
	}
}

function ask(msg,def) {
	return window.prompt(msg,def);
}







// ###### AJAX FOLLOW BELOW ###############
function makeRequest(url,span) {

	var xmlhttp=false;
	if (!xmlhttp && typeof XMLHttpRequest!='undefined') {
		try {
			xmlhttp = new XMLHttpRequest();
		} catch (e) {
			xmlhttp=false;
		}
	}
	if (!xmlhttp && window.createRequest) {
		try {
			xmlhttp = window.createRequest();
		} catch (e) {
			xmlhttp=false;
		}
	}

	url = '?'+url+'&'+URL;
	var http_request = false;
	if (window.XMLHttpRequest) { // Mozilla, Safari, ...
		http_request = new XMLHttpRequest();
		if (http_request.overrideMimeType) {
			http_request.overrideMimeType('text/xml');
		}
	} else if (window.ActiveXObject) { // IE
		try {
			http_request = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			try {
				http_request = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e) {}
		}
	}

	if (!http_request) {
		alert('Giving up :( Cannot create an XMLHTTP instance');
		return false;
	}
	http_request.onreadystatechange = function() {
		if (http_request.readyState == 4) {
			if (http_request.status == 200) {
				
				// create expansion div element (needed for explorer to not freak out)
				var container = document.getElementById('hierbox_'+span);

				// find tagname
				var tagName = container.tagName.toLowerCase(); 

 				result = http_request.responseText;
				
				// if tr is the tagname we must create it by DOM, not simply inserting.
				if (tagName == 'tr') {
					var p = document.createElement('div');
					p.innerHTML = '<table><tbody><tr>' + result + '</tr></tbody></table>';
		           	try {
						container.appendChild(p.childNodes[0].childNodes[0].childNodes[0]);
	    	        } catch (e) {
	        	    	alert("failed to appendChild --- hierbox_"+span+' + '+container.id);
	            	}
				} else {

		           	try {
		            	container.innerHTML = result;
	    	        } catch (e) {
	        	    	alert("failed to locate hierbox_"+span+' + '+container.id);
	            	}
	            }
	           	try {
					document.getElementById('hierload_'+span).style.display = 'none';
	            } catch (e) {
	            	alert("failed to locate hierload_"+span);
	            }

            } else {
				alert('There was a problem with the request.');
			}
		}
	};
	http_request.open('GET', url, true);
	http_request.send(null);

}





var fullFrameV = new Array();
function fullFrameView(id) {
	var block = getMultElementsByPartID(document.documentElement,"TABLE",id);

	if (fullFrameV[id]) {
		document.getElementById('isolatedSpace').style.display = 'none';
		fullFrameV[id].appendChild(block[0]);
		document.getElementById('mainSpace').style.display = 'block';
		fullFrameV[id] = 0;
	
		// add menu system
		if (document.getElementById('s_c1')) document.getElementById('s_m1').style.display = 'inline'; 
		if (document.getElementById('s_c2')) document.getElementById('s_m2').style.display = 'inline'; 
		if (document.getElementById('s_c3')) document.getElementById('s_m3').style.display = 'inline'; 
		if (document.getElementById('s_m4')) document.getElementById('s_m4').style.display = 'inline'; 
		if (document.getElementById('s_m5')) document.getElementById('s_m5').style.display = 'inline'; 
		if (document.getElementById('s_m6')) document.getElementById('s_m6').style.display = 'inline'; 
		if (document.getElementById('s_m7')) document.getElementById('s_m7').style.display = 'inline'; 
		if (document.getElementById('s_m8')) document.getElementById('s_m8').style.display = 'inline'; 
		if (document.getElementById('s_m9')) document.getElementById('s_m9').style.display = 'inline'; 
		if (document.getElementById('s_m10')) document.getElementById('s_m10').style.display = 'inline'; 
		if (document.getElementById('s_m11')) document.getElementById('s_m11').style.display = 'inline'; 
		if (document.getElementById('s_m12')) document.getElementById('s_m12').style.display = 'inline'; 
		if (document.getElementById('s_m13')) document.getElementById('s_m13').style.display = 'inline'; 

	} else {
	
		fullFrameV[id] = block[0].parentNode;
		document.getElementById('mainSpace').style.display = 'none';
		document.getElementById('isolatedSpace').style.display = 'block';
		document.getElementById('innerSpace').appendChild(block[0]);

		// remove menu system
		if (document.getElementById('s_m1')) document.getElementById('s_m1').style.display = 'none'; 
		if (document.getElementById('s_m2')) document.getElementById('s_m2').style.display = 'none'; 
		if (document.getElementById('s_m3')) document.getElementById('s_m3').style.display = 'none'; 
		if (document.getElementById('s_m4')) document.getElementById('s_m4').style.display = 'none'; 
		if (document.getElementById('s_m5')) document.getElementById('s_m5').style.display = 'none'; 
		if (document.getElementById('s_m6')) document.getElementById('s_m6').style.display = 'none'; 
		if (document.getElementById('s_m7')) document.getElementById('s_m7').style.display = 'none'; 
		if (document.getElementById('s_m8')) document.getElementById('s_m8').style.display = 'none'; 
		if (document.getElementById('s_m9')) document.getElementById('s_m9').style.display = 'none'; 
		if (document.getElementById('s_m10')) document.getElementById('s_m10').style.display = 'none'; 
		if (document.getElementById('s_m11')) document.getElementById('s_m11').style.display = 'none'; 
		if (document.getElementById('s_m12')) document.getElementById('s_m12').style.display = 'none'; 
		if (document.getElementById('s_m13')) document.getElementById('s_m13').style.display = 'none'; 
	
	}

}

function getMultElementsByPartID(oElm, strTagName, regexID, matchkey) {
	var tagNames = strTagName.split(',');
	var arrReturnElements = new Array();
    for(var z=0; z<tagNames.length; z++){
    	strTagName = tagNames[z];
	    var arrElements = (strTagName == "*" && oElm.all)? oElm.all : oElm.getElementsByTagName(strTagName);
	    var regExp = new RegExp(regexID);

	    for(var i=0; i<arrElements.length; i++){
	        if (matchkey == 'name' && regExp.test(arrElements[i].name)){
	            arrReturnElements.push(arrElements[i]);
    	    } else if (regExp.test(arrElements[i].id)){
	            arrReturnElements.push(arrElements[i]);
    	    }
    	}
    }
    return (arrReturnElements)
}

// box_title_TR_DEUS_c1m1a_A_c1m1a_capewhite_c1m1a_A_c1m1a_www_c1m1a_A_c1m1a_s116429649826030_c1m1a_A_c1m1a_mainframe_c1m1a_A_c1m1a__a2t2r__c1m1a_obexp-64798

function cleanNonNumericValues(oElm) {
	oElm.value = oElm.value.replace(/\D/g,'');
}


var indications = new Array();
function indicateRow(path, oper) {
	if (oper == 'forceZero') {
		indications[path] = 1;
	}
	
	
	if (!indications[path] && document.getElementById(path)) {
		document.getElementById(path).style.backgroundColor="#EEEEEE";
		document.getElementById(path).style.border="solid thin red";
		indications[path] = 1;

	} else if (indications[path] && document.getElementById(path)) {
		document.getElementById(path).style.backgroundColor="";
		document.getElementById(path).style.border="";	
		indications[path] = 0;
	}

}

var ONLOAD_SYNTAX = '';
function onResizeFnc() {
//	alert('onloadsyntax:'+ONLOAD_SYNTAX);
	if (window.ONLOAD_SYNTAX) {
		eval(ONLOAD_SYNTAX);
	}
}


var colorChart = new Array(); var colorChartORI = new Array(); 
var colorChart_onOff;
function setColor(bref,mode) {
//	alert('bref = '+bref);
	var bref2 = convCommaReverse(bref);
//	alert('bref2 = '+bref2);

	var oElm = getMultElementsByPartID(document.documentElement,"TD","indic_"+bref2);
	for (m=0; m<oElm.length; m++) {
//		alert("found oElm "+oElm[m].id + " color: "+colorChart[oElm[m].id][mode]);
		if (colorChart_onOff == 'on') {
			oElm[m].style.backgroundColor = colorChartORI[oElm[m].id];
		} else {
			colorChartORI[oElm[m].id] = oElm[m].style.backgroundColor;
			oElm[m].style.backgroundColor = colorChart[oElm[m].id][mode];
		}
	}
	if (colorChart_onOff == 'on') { colorChart_onOff = 'off'; }	
	else { colorChart_onOff = 'on'; }
}



function convComma(data) {
	var arr = data.split('_c1m1a_');
	data = arr.join(';');
	var arr = data.split('_a2t2r_');
	return arr.join('#');
}

function convCommaReverse(data) {
	var arr = data.split(';');
	data = arr.join('_c1m1a_');
	var arr = data.split('#');
	return arr.join('_a2t2r_');
}

var toggleCategorizedRowsDONE = new Array(); 
function toggleCategorizedRows(key,ref) {

	var oElm = getMultElementsByPartID(document.documentElement,"TR",key);
	for (m=0; m<oElm.length; m++) {
		if (toggleCategorizedRowsDONE[key]) {
			oElm[m].style.display = 'none';
			var imgElm = document.getElementById("hierimg_"+ref+'_'+key);
			imgElm.src = '/pub/SYSTEM/images/formDisplay/arrows/a_arr_red_right.gif';		
		} else {
			oElm[m].style.display = '';
			var imgElm = document.getElementById("hierimg_"+ref+'_'+key);
			imgElm.src = '/pub/SYSTEM/images/formDisplay/arrows/a_arr_red_down.gif';		
		}
	}

	if (toggleCategorizedRowsDONE[key]) { toggleCategorizedRowsDONE[key] = 0;
	} else { toggleCategorizedRowsDONE[key] = 1; }

}

var gToggle = new Array(); 
function genToggle(key,status,imgON,imgOFF) {

	var oElm = document.getElementById(key);
	var oElmIMG = document.getElementById(key+'img');
	if (oElm) {
		if (status == 'hide') { gToggle[key] = 1; }
		if (status == 'show') { gToggle[key] = 0; }
	
		if (gToggle[key]) { oElm.style.display = 'none'; }
		else { oElm.style.display = ''; }
		
		if (oElmIMG) {
			if (gToggle[key]) {
				oElmIMG.src = imgON;
			} else {
				oElmIMG.src = imgOFF;
			}
		}
		
		if (gToggle[key]) { gToggle[key] = 0; } else { gToggle[key] = 1; }
	} else {
		alert('warning! no object? ID:'+key);
	}

}


function setEmail(name,loc,dom) { document.write(name+'@'+loc+'.'+dom); }

function setImgGalleryCategory(x) {
	var m = 0;
	while (1) {
		m++;
		if (document.getElementById(m)) { 
			document.getElementById(m).style.background = '#444';
			document.getElementById(m).style.border = '2px solid white';
			document.getElementById('block'+m).style.display = 'none';
		} else { break; }
	}
//	document.getElementById(x.id).style.background = '#222';
	document.getElementById(x.id).style.borderBottom = '0px solid white';
	document.getElementById(x.id).style.background = 'yellow url(\'/pub/SYSTEM/images/black50proc_dotted.gif\') repeat right top';
	document.getElementById('block'+x.id).style.display = 'block';


}

function printHiddenInput(iOB,iTA,iCO,iRO,iAT,iDA) {
	// render input
	if (SI) { document.write('<input type="HIDDEN" name="'+DO+CMA+DO_AL+CMA+SE+CMA+SE_AL+CMA+SI+CMA+SI_AL+CMA);
		if (PA) { document.write(PA+CMA+PA_AL+CMA)
			if (iOB) { document.write(iOB+CMA+OB_AL+CMA);
				if (iTA) { document.write(iTA+CMA+TA_AL+CMA);
					if (iCO) { document.write(iCO+CMA+CO_AL+CMA);
						if (iRO) { document.write(iRO+CMA+RO_AL+CMA);
						}
					}
				}
			}
		}
	}
	if (iAT) document.write(ATR+CMA+iAT);
	document.write('" value="');
	if (iAT && iDA) document.write(iDA);
	document.write('" />');
}

function countLines(strtocount, cols, rows) {
  var hard_lines = 1;
  var last = 0;
  while ( true ) {
    last = strtocount.indexOf("\n", last+1);
    if ( last == -1 ) break;
    hard_lines ++;
  }
  var soft_lines = Math.round((strtocount.length+10) / cols);
  var hard = eval("hard_lines  " + unescape("%3e") + "soft_lines;");
  if ( hard ) soft_lines = hard_lines;
  if ( soft_lines >= rows) { return soft_lines; }
  return rows;
}

function cleanForm() {
  for(var no=0;no<document.forms.length;no++){
    var the_form = document.forms[no];
    for( var x in the_form ) {
      if ( ! the_form[x] ) continue;
      if( typeof the_form[x].rows != "number" ) continue;

      if(!the_form[x].onkeyup) {
		the_form[x].onkeyup=function() { this.rows = countLines(this.value,this.cols,this.rows); };
		alert('value: '+the_form[x].value+'cols:'+the_form[x].cols+'rows:'+the_form[x].rows);
    	the_form[x].rows = countLines(the_form[x].value,the_form[x].cols,the_form[x].rows);
		alert('SUM: '+the_form[x].rows);
    	}
    }
  }
}

// Multiple onload function
function addLoadEvent(func) {
  var oldonload = window.onload;
  if (typeof window.onload != 'function') {
    window.onload = func;
  } else {
    window.onload = function() {
      if (oldonload) {
        oldonload();
      }
      func();
    }
  }
}

//addLoadEvent(function() {
//  cleanForm();
//});

function newBackref(nlev,data) {
	if (nlev == 'OB_AL' && data) {
		return DO+CMA+DO_AL+CMA+SE+CMA+SE_AL+CMA+SI+CMA+SI_AL+CMA+PA+CMA+PA_AL+CMA+OB+CMA+data+CMA+TA+CMA+TA_AL; //+CMA+CO+CMA+CO_AL+CMA+RO+CMA+RO_AL+CMA;
	}
}

// sets maxlength to textarea field
function imposeMaxLength(Object, MaxLen) {
  if (!MaxLen) { return true; }
  return (Object.value.length <= MaxLen);
}

// sets maxlength to textarea field
function clearCarriageReturn(Object, MaxLen) {
	if (event.keyCode == 13) return false;
}

function getValue(path) { 
	return document.forms['DEUS'].elements[path].value;
}

function setValue(path,value) {
	document.forms['DEUS'].elements[path].value = value;
}

function getObject(path) {
	return document.forms['DEUS'].elements[path];
 }

function roundNumber(num, dec) {
	var result = Math.round(num*Math.pow(10,dec))/Math.pow(10,dec);
	return result;
}

function calcMoms() 
 { var pre = DO+'_c1m1a_'+DO_AL+'_c1m1a_'+SE+'_c1m1a_'+SE_AL+'_c1m1a_'+SI+'_c1m1a_'+SI_AL+'_c1m1a_'+PA+'_c1m1a_'+PA_AL+'_c1m1a_'+'s00130274678940'+'_c1m1a_'+OB_AL+'_c1m1a_'+'grundbok'+'_c1m1a_'+TA_AL+'_c1m1a_';
   var pos = '_c1m1a_A_c1m1a_'+'_a2t2r__c1m1a_val';
   var path = pre+'summa'+pos;
   var summa = getValue(path);
   var path = pre+'momssats'+pos;
   var obj = getObject(path);
   var momsValue = obj.options[obj.selectedIndex].value; 
   var path = pre+'moms'+pos;
   var moms = summa*(momsValue/100);
   var momsF = moms.toFixed(2)
   setValue(path,momsF);
   var path = pre+'exkl_moms'+pos;
   var myValue = summa - momsF;
   setValue(path, myValue.toFixed(2));
   return false;   
 } 

