/* SHOW & HIDE
---------------------------------------------------------------------------*/
function show(id) {
	var obj = document.getElementById(id);

	if(obj)
		obj.style.display="block";
}
function hide(id) {
	var obj = document.getElementById(id)	
	
	if(obj)
		obj.style.display="none";
}
function showOrHide(id) {
	var obj = document.getElementById(id);
	
	if(obj) {
		if(obj.style.display == "none" || obj.style.display == "")
			show(id);
		else
			hide(id);
	}
}
/* UTILS
---------------------------------------------------------------------------*/
function parse_str(str) { // PHP 5 STYLE \\
    var glue1 = '=';
    var glue2 = '&';
 
    var array2 = str.split(glue2);
    var array3 = new Array(array2.length);	
	
    var array2l = 0, tmp = '', x = 0;	
 
    array2l = array2.length;
    for (x = 0; x<array2l; x++) {		
        tmp = array2[x].split(glue1);

        array3[unescape(tmp[0])] = unescape(tmp[1]).replace(/[+]/g, ' ');		
    }	
	//var values = string.split("&");

    return array3;
}

/* MOUSE
---------------------------------------------------------------------------*/
function mouseX(e) {
	if(document.all)e = event;
	var vDoc=(document.documentElement && document.documentElement.scrollTop)?document.documentElement:document.body;
	var mouseX=(e.pageX)?e.pageX:e.clientX+vDoc.scrollLeft;	
	
	return mouseX;
}

function mouseY(e) {
	if(document.all)e = event;
	var vDoc=(document.documentElement && document.documentElement.scrollTop)?document.documentElement:document.body;
	var mouseY=(e.pageY)?e.pageY:e.clientY+vDoc.scrollTop;
	
	return mouseY;
}

function mouseTarget(e) {
	if(document.all)e = event;

	if(e.currentTarget)
		var target = e.currentTarget;
	else
		var target = e.srcElement.parentNode;	
		
	return target;
}

/* SET 
---------------------------------------------------------------------------*/
function setHtml(id, html) {
	var obj = document.getElementById(id);	
	if(obj) obj.innerHTML = html;
}
function setValue(id, value) {
	var obj = document.getElementById(id);	
	
	if(obj) {
		obj.value = value;
		return true;
	} else
		return false;
}
/* GET 
---------------------------------------------------------------------------*/
function getValue(id) {
	var obj = document.getElementById(id);	
	
	if(obj) 
		return obj.value;
	else
		return false;
}
function getHtml(id) {
	var obj = document.getElementById(id);	
	
	if(obj) 
		return obj.innerHTML;
	else
		return false;
}

/* BOX
---------------------------------------------------------------------------*/
function openBox(id, content, boxClass, tag, before) {
	obj = document.getElementById(id);
	
	if(!tag)
		tag = 'div';
	
	if(obj) {
		var boxId = id+'#box';
		var box = document.getElementById(boxId);
		
		if(!box) {
			box = document.createElement(tag);
			box.id = boxId;
			
			if(before) {
				var obj2 = document.getElementById(before);
				obj.insertBefore(box, obj2);
			} else
				obj.appendChild(box);
		}
		
		box.className = boxClass;		
		box.innerHTML = content;		
		
		return box;
	}
}

function closeBox(id) {
	/*box = document.getElementById(id+'#box');*/
	box = document.getElementById(id);	
		
	if(box) box.parentNode.removeChild(box);
}

function openBox2(parent, content, boxClass, tag, before) {
	if(typeof(parent) != 'object') return false;	
	if(!tag) tag = 'div';
	
	box = document.createElement(tag);
	
	if(parent.id) box.id = parent.id+'#box';
	box.className = boxClass;		
	box.innerHTML = content;	
	
	if(parent.hasChildNodes())
		for(var i=0; i < parent.childNodes.length; i++) {
			if(parent.childNodes[i].className == boxClass) {
				parent.childNodes[i].innerHTML = content;
				return parent.childNodes[i];
			}
		}

	if(before) {
		before = document.getElementById(before);
		parent.insertBefore(box, before);
	} else
		parent.appendChild(box);			
		
	return box;
}

function closeBox2(box) {
	if(typeof(box)!= 'object') return false;	
	box.parentNode.removeChild(box);	
}

function messageBox(id, script, className, left, top, owner, postback) {
	if(!owner)
		var owner = document.getElementsByTagName('body')[0];
	
	var callback = function(id, response) { 
		var box = document.getElementById(id);

		if(!box) {
			box = document.createElement('div');
			box.id = id;
			owner.appendChild(box);					
		}
			
		box.className = className;		
		box.innerHTML = response;	
		box.style.position = "absolute";

		if(left) box.style.left = left+'px';
		if(top) box.style.top = top+'px';		
		
		if(postback)
			postback(id, response);
	}	

	ajaxGet(id, script, callback);
}

/* AJAX
-----------------------------------------------------------------------------*/
var oXmlHttp = null;

function ajaxGet(id, uri, callback, xml) {
	var async = true;
	
	if(!callback || callback == 'undefined')
		async = false;	

	var obj = document.getElementById(id);

	if(!oXmlHttp)		
		oXmlHttp = zXmlHttp.createRequest();
	else if(oXmlHttp.readyState != 0)
		oXmlHttp.abort();

	oXmlHttp.open("get", uri, async);	
	
	if(callback) {
		oXmlHttp.onreadystatechange = function() {			
			if(oXmlHttp.readyState == 4) {
				if(oXmlHttp.status == 200) {
					if(callback) {
						if(xml)	{
							callback(id, oXmlHttp.responseXML);
						} else
							callback(id, oXmlHttp.responseText);							
					}
				}
			}
		}	
	}
	
	oXmlHttp.send(null);	
	
	if(!async)
		return oXmlHttp.responseText;
}

function ajaxPost(id, uri, form, callback, xml) {
	var async = true;
	
	if(!callback || callback == 'undefined')
		async = false;
		
	
	if(!oXmlHttp)		
		oXmlHttp = zXmlHttp.createRequest();
	else if(oXmlHttp.readyState != 0)
		oXmlHttp.abort();
		
	oXmlHttp.open("post", uri, async);		
	oXmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
	
	if(callback) {
		oXmlHttp.onreadystatechange = function() {			
			if(oXmlHttp.readyState == 4) {
				if(oXmlHttp.status == 200) {
					if(xml)											
						callback(id, oXmlHttp.responseXML);					
					else
						callback(id, oXmlHttp.responseText);										
				} else {
					alert("impossibile contattare il server: "+uri);
				}
			}
		}	
	}
	
	var query = new Array ();
	for(var i=0; i < form.elements.length; i++)
		query.push(form.elements[i].name+"="+encodeURIComponent(form.elements[i].value));			
		
	oXmlHttp.send(query.join("&"));		
	
	if(!async) {
		if(xml)
			return oXmlHttp.responseXML;		
		else
			return oXmlHttp.responseText;
	}
}
