function openPopup( szUrlPage, iWidth, iHeight) {
	var l = Math.floor((screen.width-iWidth)/2);
	var t = Math.floor((screen.height-iHeight)/2);
	window.open( szUrlPage, null, "width=" + iWidth + ",height=" + iHeight + ",top=" + t + ",left=" + l);

}

function truncString( szText, iMaxChars ){
	if ( szText.length <= iMaxChars ){
		return szText;
	}
	return szText.substring(0,iMaxChars)+"...";	
}

function clearFields(szIdRoot){
	_clearFields( document.getElementById(szIdRoot).childNodes);
}


function _clearFields(oChildNodes){
    if (!oChildNodes){
        return null;
    }
    var oRet = null;
    for( var i = 0; i < oChildNodes.length; i++ ){
		
		// svuota tutti i campi di input (text e checkbox)
        if( oChildNodes[i].nodeName == "INPUT" ){
			if ( oChildNodes[i].type == "text" ){
				oChildNodes[i].value = "";
			}else if ( oChildNodes[i].type == "checkbox" ){
				oChildNodes[i].checked = false;
			}
        }else if ( oChildNodes[i].nodeName == "TEXTAREA")
		// svuota tutte le textarea
		{
			oChildNodes[i].value = "";
		}
		
       _clearFields(oChildNodes[i].childNodes);
    }
}

function writeStars( szUrlSite, fAverage ){
	var iVote = Math.round(fAverage);
	var iInteger = Number( ( ((iVote/2)+"").split("."))[0] );
	var iDecimal = ( ( ((iVote/2)+"").split("."))[1] );	

	var iCnt = iInteger;


	document.write("<div id='stars'>");
	for ( var k = 0; k < Number(iInteger); k++ ){
		document.write("<img width='10' height='10' src=\""+szUrlSite+"/global/icons/star_full.gif\" />");
	}
	if ( String(iDecimal) != "NaN" && String(iDecimal) != "undefined" ){
		document.write("<img src=\""+szUrlSite+"/global/icons/star_half.gif\" />");
		iCnt++;
	}
	for ( var i = 0; i < (5-iCnt); i++){
		document.write("<img src=\""+szUrlSite+"/global/icons/star_empty.gif\" />");
	}
	document.write("</div>");
}


function _ajaxOk(req) {
    if (req.http_request.readyState == 4 && req.http_request.status == 200) {
        return req.http_request.responseText;
    } else {
        return false;
    }
}


// IE 5.0 does not support the apply() method of the function object,
// we resort to this eval-based solution that sucks because it is not
// capable of preserving 'this' and is ugly as hell, but it works for us.
function _myDummyApply(funcname,args) {
    var e = "funcname(";
    for (var i = 0; i < args.length; i++) {
        e += "args["+i+"]";
        if (i+1 != args.length) {
            e += ",";
        }
    }
    e += ");"
    return eval(e);
}

function ajaxPostRand(szUrlScript, cbHandler, szParams){
	
	var a = new Array("placeholder");
	
	var ajax = new _createXmlHttpRequest();

	if ( ajax == null ){
		return;	
	}
	
    var cbMyhandler = function() {
        var content = _ajaxOk(ajax);
        if (content !== false) {
            a[0] = content;
            try {
                return cbHandler.apply(this, a);
            } catch(e) {
                return _myDummyApply(handler, a);
            }
        }
    }

	ajax.http_request.onreadystatechange = cbMyhandler;
	ajax.http_request.open('POST', szUrlScript, true);
	ajax.http_request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	ajax.http_request.setRequestHeader("Content-length", szParams.length);
	ajax.http_request.setRequestHeader("Connection", "close");
	ajax.http_request.send(szParams);		
}


function _createXmlHttpRequest(){
	this.http_request = false;
	if (window.XMLHttpRequest) { // Mozilla, Safari,...
		this.http_request = new XMLHttpRequest();
		if (this.http_request.overrideMimeType) {
			// set type accordingly to anticipated content type
			//http_request.overrideMimeType('text/xml');
			this.http_request.overrideMimeType('text/html');
		}
	} else if (window.ActiveXObject) { // IE
		try {
			this.http_request = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			try {
				this.http_request = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e) {}
		}
	}
	if (!this.http_request) {
		alert('Cannot create XMLHTTP instance');
	}
}