//Description: Preload images specified in argument/image name array. 

//Usage: preload_images(["example1.gif","example2.gif"]);
function preload_images(images) {
	var cache = new Image();
	for(var i = 0; i < images.length; i++) {
		cache.src = images[i];
	}
}

//Usage: check_all('engines[]');
function check_all(frm, field) {
	for (i = 0; i < frm.length; i++) {
		if (frm[i].type == 'checkbox' && frm[i].name == field) {
			frm[i].checked = true;
		}
	}
    return false;
}

function recheck_rankings(profile_id) {
	new Ajax.Updater(
		'rankings_' + profile_id, '/profile/check_rankings/' + profile_id, 
		{ 
			asynchronous:true, 
			evalScripts:true 
		}
	);	
}

function rank(profile_id) {
	var params = 'id=' + profile_id;
	new Ajax.Request(
		'/profile/start_ranking',
		{
				method: 'post',
				parameters: params,
				asynchronous: true,
				onComplete: rank_start 
		}
	);
}

function rank_start(req) {
	var resp = req.responseText;
	if (resp.match(".*?<status>error<\/status>.*?")) {
		//Parse out "message", if no "message" give default error response.
		var mmatch = resp.match(".*?<message>(.*)</message>.*?");
		if (mmatch == null) {
			show_message("Sorry! An unexpected error occurred.");
		} else {
			var emsg = mmatch[1];
			show_message(emsg);
		}
		return false;
	} else if (resp.match(".*?<status>success<\/status>.*?")) {
		//Parse out profileId from XML.
		var rmatch = resp.match(".*?<profile-id>(.*)<\/profile-id>.*?");
		if (rmatch == null) {
			show_message("Sorry! An unexpected error occurred.");
			return false;	
		}
		var spid = rmatch[1];
		if (spid == null || spid == '') {
			show_message("Sorry! An unexpected error occurred.");
			return false;	
		}
		var pid = Number(spid);
		recheck_rankings(pid);
	} else {
		show_message("Sorry! An unexpected error occurred.");
		return;
	}
}

function rank_error(req) {	
	show_message("Sorry! An unrecoverable error occurred. Please try again.<br/>");
	return;
}

function show_message(msg, duration) {
	//Default to 2500 if no duration specified.
	if (duration == null || duration == undefined) duration = 2500;
	var m = $('message');
	m.innerHTML = msg;
	m.style.display = "block";
	var t = setTimeout('hide_message()', duration);
} 

function hide_message() {
	var m = $('message');
	m.style.display = "none";
	m.innerHTML = "";
}