/*
	DEV NOTICE: No text strings are used in this script
	js Modules are not supposed to contain any
	locale dependent data!!!!

	GENERIC FUNCTIONS

*/

function untag(str) {
	var elem = document.createElement('p');
	elem.innerHTML = str;
	return _getcontent(elem);
}

function _getcontent(elem) {
	if(elem.textContent) return elem.textContent;
	else if(elem.nodeValue) return elem.nodeValue;
	else if(elem.data) return elem.data;
	return elem.innerHTML;
}

function redstar() {
	var redstar = document.createElement('font');
	redstar.style.color = 'red';
	redstar.innerHTML = '*';
	return redstar;
}

function getradiovalue(elname) {
	var arr = document.getElementsByName(elname);
	for(var i = 0; i < arr.length; i++)
		if(arr[i].checked) {
			if(!isNaN(parseInt(arr[i].value)))
				return parseInt(arr[i].value);
			else return arr[i].value;
		}
	return false;
}

function is_visible(elem) {
	if(elem)
		return elem.style.visibility == 'visible';
	else return false;
}

function forminit() {
	var arr = document.forms[page + 'form'].requiredfields;
	for(i = 0; i < arr.length; i++)
		formelement(arr[i]).parentNode.previousSibling.appendChild(redstar());
	if(changecountry !== undefined)
		changecountry();
	update();
}

// Returns object
function formelement(name) {
	return document.forms[page + 'form'].elements[name];
}

// Returns string
function formvalue(name) {
	return formelement(name).value;
}

// Returns absolute [x, y]
function abspos(obj) {
	var x = 0, y = 0;
	if(obj.offsetParent)
		while(obj.offsetParent) {
			x += obj.offsetLeft;
			y += obj.offsetTop;
			obj = obj.offsetParent;
		}
	else if(obj.x && obj.y) {
		x = obj.x;
		y = obj.y;
	}
	return [x, y];
}

// from gettext
function changecountry() {
	if(formvalue('country') == 'other' && formelement('other').style !== undefined) formelement('other').style.visibility = 'visible';
	else formelement('other').style.visibility = 'hidden';
}

// get an array of elements "element" with class "class"
function getTagsByClass(elements, classname) {
	// interpret string as a single element
	result = [];
	if(typeof(elements) == 'string')
		elements = [elements];
	for(i = 0; i < elements.length; i++) {
		tags = document.getElementsByTagName(elements[i]);
		for(j = 0; j < tags.length; j++)
			if(tags[j].className == classname)
				result.push(tags[j]);
	}
	return result;
}

// return innerHTML of a select element with value "value"
function getOptionText(select, value) {
	if(!value)
		value = select.value;
	for(i = 0; i < select.childNodes.length; i++)
		if(select.childNodes[i].value == value)
			return select.childNodes[i].innerHTML;
	return false;
}


