function GetXmlHttpObject() {
	try {
		// Firefox, Opera 8.0+, Safari
		xmlHttp=new XMLHttpRequest();
	} catch (e) {
		// Internet Explorer
		try {
			xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			try {
				xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e) {
				alert("Your browser does not support AJAX!");
				return false;
			}
		}
	}
	return xmlHttp;
}

ratingxmlhttp=GetXmlHttpObject();
favxmlhttp=GetXmlHttpObject();



function rateGame(ratinglink) {
	ratingxmlhttp.onreadystatechange=ratingStateChanged;
	ratingxmlhttp.open("GET", ratinglink,true);
	ratingxmlhttp.send(null);
}

function ratingStateChanged() {
	if (ratingxmlhttp.readyState==4) {
		document.getElementById("ratemsg").innerHTML = "Thanks for your rating!";
		var RateCount = document.getElementById("ratecount");
    var Rcount = intval(RateCount.innerHTML);
    Rcount++;
    RateCount.innerHTML = Rcount;

		// find out from Joey if there is code to prevent people from rating games 500 times. If there is, there's no need for this block
		document.getElementById("rate1").href="#";
		document.getElementById("rate2").href="#";
		document.getElementById("rate3").href="#";
		document.getElementById("rate4").href="#";
		document.getElementById("rate5").href="#";
		document.getElementById("rate5").href="#";
		// ---------------------------------------

		document.getElementById("current-rating").style.width=ratingxmlhttp.responseText+"%";

	}
}


function modFav(favlink) {
	favxmlhttp.onreadystatechange=favStateChanged;
	favxmlhttp.open("GET", favlink ,true);
	favxmlhttp.send(null);
}



function favStateChanged() {
	if (favxmlhttp.readyState==4) {
		document.getElementById("favspan").innerHTML = favxmlhttp.responseText;
	}
}

function intval (mixed_var, base) { 
    var tmp;
 
    var type = typeof( mixed_var );
 
    if (type == 'boolean'){
        if (mixed_var == true) {
            return 1;
        } else {
            return 0;
        }
    } else if (type == 'string'){
        tmp = parseInt(mixed_var * 1, 10);
        if (isNaN(tmp) || !isFinite(tmp)){
            return 0;
        } else{
            return tmp.toString(base || 10);
        }
    } else if (type == 'number' && isFinite(mixed_var) ){
        return Math.floor(mixed_var);
    } else{
        return 0;
    }
}

