function encode(str) {
	var result = "";
	for (i = 0; i < str.length; i++) {
		if (str.charAt(i) == " ") result += "+";
		else result += str.charAt(i);
	}
	return escape(result);
}

function openWindow(url,w,h,iw,ih) {
	var launchurl = 'http://www.1001onlinegames.com/launch.php?iwidth='+iw+'&iheight='+ih+'&url='+encode(url);
	PopWin=window.open(launchurl,'LaunchWindow','toolbar=no,location=no,directories=no,status=yes,menubar=yes,scrollbars=yes,resizable=yes,width='+w+',height='+h+',top=10,left=10')
}

// ajax.js
function Ajax() {
	this.req = null;
	this.url = null;
	this.status = null;
	this.statusText = '';
	this.method = 'GET';
	this.async = true;
	this.dataPayload = null;
	this.readyState = null;
	this.responseText = null;
	this.responseXML = null;
	this.handleResp = null;
	this.responseFormat = 'text', // 'text', 'xml', 'object'
	this.mimeType = null;
	this.headers = [];

	this.init = function() {
		var i = 0;
		var reqTry = [ 
		function() { return new XMLHttpRequest(); },
		function() { return new ActiveXObject('Msxml2.XMLHTTP') },
		function() { return new ActiveXObject('Microsoft.XMLHTTP' )} ];

		while(!this.req && (i < reqTry.length)) {
			try { 
				this.req = reqTry[i++]();
			} 
			catch(e) {}
		}
		return true;
	};
	this.doGet = function(url, hand, format) {
		this.url = url;
		this.handleResp = hand;
		this.responseFormat = format || 'text';
		this.doReq();
	};
	this.doPost = function(url, dataPayload, hand, format) {
		this.url = url;
		this.dataPayload = dataPayload;
		this.handleResp = hand;
		this.responseFormat = format || 'text';
		this.method = 'POST';
		this.doReq();
	};
	this.doReq = function() {
		var self = null;
		var req = null;
		var headArr = [];

		if(!this.init()) {
			alert('Could not create XMLHttpRequest object.');
			return;
		}
		req = this.req;
		req.open(this.method, this.url, this.async);
		if(this.method == "POST") {
			this.req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
		}
		if(this.method == 'POST') {
			req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
		}
		self = this;
		req.onreadystatechange = function() {
			var resp = null;
			self.readyState = req.readyState;
			if(req.readyState == 4) {
				self.status = req.status;
				self.statusText = req.statusText;
				self.responseText = req.responseText;
				self.responseXML = req.responseXML;

				switch(self.responseFormat) {
					case 'text':
					resp = self.responseText;
					break;
					case 'xml':
					resp = self.responseXML;
					break;
					case 'object':
					resp = req;
					break;
				}

				if(self.status > 199 && self.status < 300) {
					if(!self.handleResp) {
						alert('No response handler defined ' +
						'for this XMLHttpRequest object.');
						return;
					}
					else {
						self.handleResp(resp);
					}
				}
				else {
					self.handleErr(resp);
				}
			}
		}
		req.send(this.dataPayload);
	};
	this.abort = function() {
		if(this.req) {
			this.req.onreadystatechange = function() { };
			this.req.abort();
			this.req = null;
		}
	};
	this.handleErr = function() {
		var errorWin;
		// Create new window and display error
		try {
			errorWin = window.open('', 'errorWin');
			errorWin.document.body.innerHTML = this.responseText;
		}
		// If pop-up gets blocked, inform user
		catch(e) {
			alert('An error occurred, but the error message cannot be' +
			' displayed because of your browser\'s pop-up blocker.\n' +
			'Please allow pop-ups from this Web site.');
		}
	};
	this.setMimeType = function(mimeType) {
		this.mimeType = mimeType;
	};
	this.setHandlerResp = function(funcRef) {
		this.handleResp = funcRef;
	};
	this.setHandlerErr = function(funcRef) {
		this.handleErr = funcRef; 
	};
	this.setHandlerBoth = function(funcRef) {
		this.handleResp = funcRef;
		this.handleErr = funcRef;
	};
	this.setRequestHeader = function(headerName, headerValue) {
		this.headers.push(headerName + ': ' + headerValue);
	};
}

function ChangeContent(id, str) {
	if(navigator.userAgent.indexOf('Opera')!=-1 && document.getElementById) type='OP'; // Opera
	if(document.all) type='IE'; // Internet Explorer e.g. IE4 upwards
	if(document.layers) type='NN'; // For Netscape version 4
	if(!document.all && document.getElementById) type='MO'; // Mozila e.g. Netscape 6 upwards
	if(type=='IE') {
		document.all[id].innerHTML = str;
	}
	if(type=='NN') {
		document.layers[id].document.open();
		document.layers[id].document.write(str);
		document.layers[id].document.close();
	}
	if(type=='MO' || type=='OP') {
		document.getElementById(id).innerHTML = str;
	}
}

var start = 0; // needed for files like music.js, rate.js

// rate.js
var ajax = new Ajax();
var score = item_id = null;

function rateContent(itemid,rating) {
	score = rating;
	item_id = itemid;
	ChangeContent('ratemsg','Please wait..');
	doTask();
}

var doTask = function() {
	start = new Date();
	start = start.getTime();
	ajax.doGet('/rate_ajax.php?start=' + start + '&item_id=' + item_id + '&score=' + score, showTask);
}

var showTask = function(str) {
	var taskResult = '';
	var diff = 0;
	var end = new Date();
	if(str == 'ok') {
		end = end.getTime();
		diff = (end - start) / 1000;
		taskResult = '<img src="/gfx/btn.gif" width="6" height="6" alt="" /> Thanks! (' + score + ' stars)';
	}
	else {
		taskResult = '<img src="/gfx/btn.gif" width="6" height="6" alt="" /> Thanks!';
	}
	printResult(taskResult);
}

function printResult(str) {
	ChangeContent('ratemsg',str);
}