/*
common_scripts.js
part of X4A
Omikron © 2004

includes many common functions, objects, ... used in whole X4A

JS optimized for Internet Explorer 6.0 and Mozilla Firefox 1.6 (core v5.0)
*/


// gets the ABSOLUTE offset of the element in the current window (x)
function getElementOffsetX(o) {
	co = o;
	total_x = 0;
	while(co) {
		total_x += co.offsetLeft;
		co = co.offsetParent;
	}
	return total_x;
}


// gets the ABSOLUTE offset of the element in the current window (y)
function getElementOffsetY(o) {
	co = o;
	total_y = 0;
	while(co) {
		total_y += co.offsetTop;
		co = co.offsetParent;
	}
	return total_y;
}


// finds the object belonging to the <INPUT> element and returns it - required because of mozilla
function getInputObject(name) {
	if(document.forms["frmEdit"]) {
		if(document.forms["frmEdit"][name]) {
			return document.forms["frmEdit"][name];
		}
	}
	for(i = 0; document.forms[i]; i++) {
		if(document.forms[i][name]) {
			return document.forms[i][name];
		}
	}
	return undefined;
}


// hides all iframes (divs) in edit
function hideAllEditIframes() {
	k = 0;
	do {
		var m = document.getElementById("div_iframe" + k);
		if(m) {
			m.style.visiblity = 'hidden';
			m.style.display = 'none';
		}
		k++;
	} while(m);
	
}


// displays one iframe (div) in edit
function displayEditIframe(No) {
	var m = document.getElementById("div_iframe" + No);
	if(m) {
		m.style.visibility = 'visible';
		m.style.display = 'block';
	}
}


// this should be placed for submit buttons: <input type=button onclick="submitForm([form object]);">
function submitForm(form) {
	// check, if the "required" data are set
	required_filled = true;
	for(i = 0; i < form.length; i++) {
		if(form[i].getAttribute("is_required") == 1) {
			if(form[i].value == '') {
				form[i].style.backgroundColor = '#c02030';
				required_filled = false;
			}
		}
	}
	
	if(!required_filled) {
		alert("Not all required fields are set.\n\nThe ones displayed by red are required.");
		return false;
	}
	
	// check, if at least any data are filled:
	data_filled = true;
	for(i = 0; i < form.length; i++) {
		if("text, textarea, select".indexOf(form[i].type) != -1) {
			if(form[i].value != '') {
				data_filled = true;
				break;
			} else {
				data_filled = false;
			}
		}
	}
	
	if(!data_filled) {
		alert("You must fill at least any data.");
		return false;
	}
	
	form.submit();
	return true;
}


// hides all visible combos on the screen - solution for bad behaviours of combos in MS IE
X4hiddenCombos = new Array();
//
function hideAllCombos() {
	if(navigator.appName.toLowerCase().indexOf("microsoft") != -1) {
		// apply only for MS Internet Explorer
		ind = 0;
		for(f = 0; f < document.forms.length; f++) {
			for(i = 0; i < document.forms[f].length; i++) {
				if(document.forms[f][i].type == "select-one") {
					vis = document.forms[f][i].style.visibility;
					if(vis == "") {
						vis = "visible";
					}
					X4hiddenCombos[ind] = new Object();
					X4hiddenCombos[ind].form = f;
					X4hiddenCombos[ind].input = i;
					X4hiddenCombos[ind].visibility = vis;
					document.forms[f][i].style.visibility = 'hidden';
					ind++;
				}
			}
		}
	}
}



// returns the combos to their previous state (oposite to the function hideAllCombos() )
function showHiddenCombos() {
	if(navigator.appName.toLowerCase().indexOf("microsoft") != -1) {
		// apply on for MS IE
		for(i = 0; i < X4hiddenCombos.length; i++) {
			if(document.forms[X4hiddenCombos[i].form] && document.forms[X4hiddenCombos[i].form][X4hiddenCombos[i].input] && document.forms[X4hiddenCombos[i].form][X4hiddenCombos[i].input].style) {
				document.forms[X4hiddenCombos[i].form][X4hiddenCombos[i].input].style.visibility = X4hiddenCombos[i].visibility;
			}
		}
	}
}
