// themes can override this functions at their discretion
var chalngr_games_page = '';
var chalngr_users_page = '';
var chalngr_btn = '';
var chalngr_id_active = 0;
var chalngr_try_limit = 12;
var chalngr_init = function( currentUser ){
	if( ! currentUser ) return false;
	
	if( ! $("#chalngr_window").length ){
		var hs_prompt = document.createElement("div");
		hs_prompt.setAttribute("id","chalngr_window");
		$(hs_prompt)
			.prependTo("body")
			.hide()
			.html('<div><a href="javascript:void(0)" onclick="chalngr_hide()" class="close alignright" title="close">[x]</a><h3>Challenge!</h3></div><iframe id="chalngr_content" frameborder="0" scrolling="auto" allowtransparency="yes" style="width:100%"></iframe>');
	}else
		$("#chalngr_window").hide();
}

var chalngr_display = function( page, options ){
	if( chalngr_btn ) return;
	if( ! options ){ alert('Options is empty'); return; }
	if( ! page ){ alert('Missing param, page is undefined.'); return; }
	var url_str = '';
	if( options.eventId )
		url_str = page +'&eventid='+ options.eventId;
	else{
		if( ! options.currentUser ){ alert('You must be logged in to do so.'); return; }
		if( ! options.targetUser && ! gameId ){ alert('Missing param, targetUser & gameId is undefined. Either should be defined.'); return; }
		url_str = page +'&user1='+ options.currentUser + ( options.targetUser ? '&user2='+ options.targetUser : '') + ( options.gameId ? '&gameid='+ options.gameId : '');
	}
	chalngr_btn = $(this); chalngr_btn.attr("disabled", true);
	$("#chalngr_content").attr( "src", url_str );
	$("#chalngr_window").show();
}

var chalngr_hide = function(){
	chalngr_btn.attr("disabled", false);
	chalngr_btn = null;
	$("#chalngr_window").hide();
	$("#chalngr_content").attr("src", "about:blank");
}

// you can override this functions
var chalngr_prompt = function(){
	if( ! $("#chalngr_prompt").length ){
		var hs_prompt = document.createElement("div");
		hs_prompt.setAttribute("id","chalngr_prompt");
		$(hs_prompt)
			.prependTo("body")
			.css("position", "fixed")
			.css("height", "0px")
			.css("left", "5px")
			.css("bottom","-16px")
			.css("z-index", "1150")
			.html('<div><a href="javascript:void(0)" onclick="chalngr_prompt_out()" class="close alignright" title="close">[x]</a><h3>Challenge!</h3></div><div id="chalngr_prompt_content"></div>')
			.animate({height:0},1000)
			.animate({height:140},1000);
	}else
		$("#hs_prompt").animate({height:0},100).animate({height:75},1000);
}

var chalngr_prompt_out = function(){
	$("#chalngr_prompt")
		.animate({height:0},500,null,function(){
			$(this).empty().remove();
		});
}

var check_challenges = function( url, id, hash, gameid ){
	if( ! url.length || ! id || ! hash || ! gameid ) return false;
	
	var ajax_data = {
		url: url +"?nocache="+Math.random(),
		type: "POST",
		data: { hash:hash, gid:gameid, cid:id },
		dataType: 'xml',
		timeout: 30000,
		complete:function(){},
		success: function(data, status){
			var xml = $(data);
			var prompt_msg = xml.find('prompt').text();
			var error_no = parseInt( xml.find("error").text() );
			var status_no = parseInt( xml.find("status").text() );
			if( typeof(error_no) == 'undefined' ) return
		
			if( error_no ){
				if( prompt_msg )
					alert( prompt_msg );
			}
			xml.find("replacehtmlid").children("*").each(function(){
				if( this.tagName == 'script' ){
					$(this).children("*").each(function(){
						eval( $(this).text() );
					});
				}else
					$("#"+ this.tagName).html( $(this).text() );//.empty().remove();
			});
		},
		error: function(data, status, e){
			if( status == 'timeout' )
				alert( "Server was taking too long to respond.\nThe request may have been submitted but a response wasn't recieved.\nPlease try again later or refresh the page." );
			else if( status )
				alert( "["+ e.number +"] "+ e.message +"\n"+ status +"..");
		}
	}
	
	if( jQuery.active < 3 ){
		$.ajax( ajax_data );
	}else if( chalngr_try_limit-- ){
		setTimeout( "check_challenges("+ url +", "+ id +", "+ hash +", "+ gameid +");", 5000 );
	}else if( confirm("Too many request are being handled.\nKeep trying to load challenges data?") ){
		chalngr_try_limit = 12;
		setTimeout( "check_challenges("+ url +", "+ id +", "+ hash +", "+ gameid +");", 5000 );
	}
		
	
	return(true);
}
