dojo.registerModulePath("part","../../part");
dojo.require("dojo.rpc.JsonpService");
dojo.require("part.timer");

if (!IE) document.captureEvents(Event.MOUSEMOVE)
document.onmousemove = getMouseXY;

function getMouseXY(e) {
	if (IE) {
		tempX = event.clientX + document.body.scrollLeft;
		tempY = event.clientY + document.body.scrollTop;
	} else {
		tempX = e.pageX;
		tempY = e.pageY;
	}
	if (tempX < 0){tempX = 0;}
	if (tempY < 0){tempY = 0;}  
	return true;
}

function initProcess() {
	jQuery.ajaxSetup({cache: !dojoPreventCacheTemplate});
	document.title = 'Loading...';
	$("#alertBox").dialog({
		dialogClass: 'alert',
		width: "300px",
		height: "340px",
		autoOpen: false,
		draggable: false,
		resizable: false,
		modal: true,
		position: 'center',
		zIndex: "900",
		title: "Information",
		buttons: {OK: function() {$(this).dialog('option', 'title', 'Information'); $(this).dialog('close'); return false;}},
		open: function(){$(this).parents('.ui-dialog').children('.ui-dialog-buttonpane').children('button').eq(0).focus();}
	});
	$("#calcBox").dialog({
		dialogClass: 'calc',
		autoOpen: false,
		draggable: false,
		resizable: false,
		modal: true,
		position: 'center',			
		zIndex: "900",
		title: "Operation"
	});
	$("#editFormBox").dialog({
		dialogClass: 'edit',
		width: "310px",
		height: "480px",
		autoOpen: false,
		draggable: false,
		resizable: false,
		modal: true,
		position: 'center',
		zIndex: "900",
		title: "Edit personal info"
	});
	if (!checkExternalParam()) {
		if (checkLogged()) {
			getPrivateProfile();
			document.title = titles['person'];
			showHome();
		} else {
			document.title = titles['signin'];
			showLogin();
			unblocker();
		}
		if (parseInt(fb['myspace']) == 1) {
			$.getScript("/js/IFPC_externalIframe006.js", function() {
				$.getScript("http://js.myspacecdn.com/OpenSocial/RPC/RpcContainer.003.js", function() {
					MyOpenSpace.MySpaceContainer.get().registerParam("panelId", "apppanel_159890_canvas");
					MyOpenSpace.MySpaceContainer.get().registerParam("localRelay", "http://urbanwar.com/ifpc_relay_external001.html");
					msScr = jQuery.extend(true, {}, MyOpenSpace.MySpaceContainer.get());
				});
			});
		}
		if (fb['facebook'] == 1) {
			if (!isset(Templates['home']['homeFBIContainer'])) Templates['home']['homeFBIContainer'] = getTemplate('html/homeFBIContainer.html');
			dojo.byId("homeFBIContainer").innerHTML = Templates['home']['homeFBIContainer'];
			$.getScript("http://static.ak.connect.facebook.com/js/api_lib/v0.4/FeatureLoader.js.php", function() {
				FB_RequireFeatures(["CanvasUtil"], function(){
					FB.init('61558836718ab6948500d9e98dbc2354','/xd_receiver.htm', {});
					FB.XdComm.Server.init('/xd_receiver.htm');
					FB.CanvasClient.setSizeToContent();
					fbScr = jQuery.extend(true, {}, FB);
				});
			});
		}
	}
}

function needAchError() {
	initNeedAchDialog();
	$('#needAchBox').html($('#needAchContent').html());
	$('#needAchBox').dialog('option','position',new Array('center',dialogPos()));
	$('#needAchBox').dialog('open');
}

function needCashError() {
	initNeedCashDialog();
	$('#needCashBox').html($('#needCashContent').html());
	$('#needCashBox').dialog('option','position',new Array('center',dialogPos()));
	$('#needCashBox').dialog('open');
}

function needHealthError() {
	initLowHealthDialog();
	$('#lowHealthBox').dialog('option','position',new Array('center',dialogPos()));
	$("#lowHealthBox").dialog('open');
}

function processError(errCode) {
	errCode = parseInt(errCode);
	switch (errCode) {
		case 22009:
			needCashError();
		break;
		case 22012:
			needAchError();
		break;
		case 24000:
			$('#msgStatRechargeUnableItem').text('Health');
			$('#alertBox').dialog('option','title','Status Confirmation');
			$('#alertBox').html($('#msgStatRechargeUnable').html());
			$('#alertBox').dialog('option','position',new Array('center',dialogPos()));
			$("#alertBox").dialog('open');
		break;
		case 24002:
			needAchError();
		break;
		case 24003:
			$('#msgStatRechargeUnableItem').text('Energy');
			$('#alertBox').dialog('option','title','Status Confirmation');
			$('#alertBox').html($('#msgStatRechargeUnable').html());
			$('#alertBox').dialog('option','position',new Array('center',dialogPos()));
			$("#alertBox").dialog('open');
		break;
		case 24004:
			$('#msgStatRechargeUnableItem').text('Stamina');
			$('#alertBox').dialog('option','title','Status Confirmation');
			$('#alertBox').html($('#msgStatRechargeUnable').html());
			$('#alertBox').dialog('option','position',new Array('center',dialogPos()));
			$("#alertBox").dialog('open');
		break;
		case 24005:
			needAchError();
		break;
		case 24006:
			needAchError();
		break;
		case 44001:
			needHealthError();
		break;
		default:
			$('#alertBox').text(errorList[errCode]);
			$('#alertBox').dialog('option','position',new Array('center',dialogPos()));
			$("#alertBox").dialog('open');
		break;
	}
}

function nod(a, b) {
	a = parseInt(a);
	b = parseInt(b);
	while (a*b > 0) {
		if (a > b) a = a % b;
		else b = b % a;
	}
	return a+b;
}

function checkExternalParam() {
	var raw = window.location.search;
	if (isset(raw) && raw != "") {
		raw  = raw.slice(1);
	    raw = raw.split("&");
		var params = new Array();
		for (i in raw) {
			var tmp = raw[i].split("=");
			params[tmp[0]] = tmp[1];
		}
	    if (isset(params['param']) && (params['param'] == 1 || params['param'] == 2)) {
			if (isset(params['activated']) && params['activated'] == "1") {
				$('#alertBox').text('Your account has been activated');
				$('#alertBox').dialog('option','position',new Array('center',dialogPos()));
				$("#alertBox").dialog('open');
				return false;
			}
			if (isset(params['inv_code'])) {
				signUpForm(params['inv_code']);
				return true;
			}
			if (isset(params['page'])) {
				switch (params['page']) {
					case 'signup':
						signUpForm();
						return true;
					break;
					case 'forgotpass':
						showLogin();
						forgotForm();
						return true;
					break;
					case 'missions':
						getPrivateProfile();
						dojo.require("part.missions");
						part.missions.showMissions();
						return true;
					break;
					case 'combat':
						getPrivateProfile();
						dojo.require("part.combat");
						part.combat.showCombat();
						return true;
					break;
					case 'bank':
						getPrivateProfile();
						dojo.require("part.bank");
						part.bank.showBank();
						return true;
					break;
					case 'invite':
						getPrivateProfile();
						dojo.require("part.recruit");
						part.recruit.showRecruit();
						return true;
					break;
					default:
						return false;
					break;
				}
			}
			if (isset(params['fb_sig_api_key'])) {
				fb['facebook'] = 1;
				fb['fb_sig_user'] = params['fb_sig_user'];
				fb['fb_sig_api_key'] = params['fb_sig_api_key'];
				fb['fb_sig_session_key'] = params['fb_sig_session_key'];
				return false;
			}
			if (isset(params['opensocial_viewer_id'])) {
				fb['myspace'] = 1;
				fb['opensocial_viewer_id'] = params['opensocial_viewer_id'];
				return false;
			}
		}
	}
	return false;
}

function isset(variable) {
	if (typeof(variable)=="undefined") return false;
	else return true;
}

function getErrorMessage() {
	var error = '';
	if (globErrorMessage.length > 0) {
		error = globErrorMessage;
		globErrorMessage = '';
	}
	return error;
}

function checkLogged() {
	dojo.require("dojo.cookie");
	if (!isset(token) || token == "") {
		if (dojo.cookie.isSupported()) {
			var temp = dojo.cookie("token");
			if (isset(temp)) {
				token = temp;
				return true;
			} else return false;
		} else return false;
	} else return true;
}

function getTemplate(neededUrl) {
	var Template = "";
	dojo.xhrGet({
		preventCache: dojoPreventCacheTemplate,
		sync: true,
		timeout: 1000,
		url: neededUrl,
		handleAs: "text",
		load: function(data,args) {
			Template = data;
		},
		error: function(error,args) {
			console.warn("error!",error);
		}
	});
	return Template;
}

function createSmdObj(path) {
	var url = proxyServer + path;
	smdObj[path] = new dojo.rpc.JsonService(url);
	return smdObj[path];
}

function createSmdObj2(module) {
	var smdInst = new dojo.rpc.JsonpService({
		timeout: timeout
	});
	smdInst.lastSubmissionId = 0;
	return smdInst;
}

function blocker() {
	if (blocked == 0) {
		blocked = 1;
		globalRefreshUrl = setTimeout(function(){$('#globalRefreshUrl').css('display', 'block'); return true;},timeout);
		$.blockUI({
			message: $('#bgHider'),
			css: { 
				color: '#000',
				border: '0px solid #000000',
				backgroundColor:'transparent',
				cursor: 'progress'
			},
			overlayCSS:  { 
				backgroundColor: '#000',
				opacity: 0.6
			}
		});
	}
}

function unblocker(home) {
	if (!isset(home)) home = false;
	if (busyFlag > 0 || (timers['begin'] < 5 && home)) {
		setTimeout(function(){unblocker();},100);
		return;
	}
	timers['begin'] = 0;
	blocked = 0;
	clearTimeout(globalRefreshUrl);
	$('#globalRefreshUrl').css('display', 'none');
	if (parseInt(fb['myspace']) == 1 && msScr!='') {
		msScr.adjustHeight();
	}
	if (parseInt(fb['facebook']) == 1 && fbScr!='') {
		fbScr.CanvasClient.setSizeToContent();
	}
	$('.ui-dialog-buttonpane','.ui-dialog:visible').eq(0).children('button').eq(0).focus();
	setTimeout(function(){$.unblockUI();},500);
	//$.unblockUI();
}

function stringSlice(str, count) {
	var resultStr = "";
	var len = str.length;
	var end = Math.ceil(len/count);
	for (j = 0; j<end; j++) {
		resultStr = resultStr + str.substr(j*count,count) + '<br />';
	}
	resultStr = resultStr.substr(0,resultStr.length - 6);
	return resultStr;
}

function avatarUrlGen(id, avatar) {
	var src = 'images/spacer.gif';
	if (isset(avatar) && parseInt(avatar)!=0) src = 'images/avatars/'+avatar+'.png';
	else src = avatarUrl + 'avatars/' + id + '.jpg';
	return src;
}

function showLogin() {
	blocker();
	dojo.addClass("contentContainer","load");
	document.title = 'URBAN WAR Browser Based MMORPG | Free MMORPG Games';
	if (!isset(Templates['home']['signin'])) Templates['home']['signin'] = getTemplate('html/signin.html');
	dojo.byId("contentContainer").innerHTML = Templates['home']['signin'];
	if (window.location.protocol == 'file:') {
		$('#signUpUrl').attr('href',clientServer+'index.html?param=1&page=signup'); 
		$('#forgotUrl').attr('href',clientServer+'index.html?param=1&page=forgotpass'); 
	}
	unblocker();
}

function signUpForm(inv_code) {
	dojo.removeClass('contentContainer','load');
	blocker();	
	dojo.require('part.registration');
	part.registration.signUpForm(inv_code);
	unblocker();
}

function forgotForm() {
	blocker();
	dojo.require('part.registration');
	part.registration.forgotForm();
}

function SignUpNotice(id) {
	$(id).toggle("slow");
}

function dialogPos() {
	return tempY-$(document).scrollTop()-350;
}

function loginAction() {
	blocker();
	var Form = dojo.formToObject(dojo.byId("signInForm"));
	var module = 'profile';
	if (!isset(smdObj[module])) smdObj[module] = createSmdObj2(module);
	var lastSubmissionId = smdObj[module].lastSubmissionId;
	smdObj[module].lastSubmissionId++;
	var method = 'login';
	var ajPar = new Object({
		params: [Form.login, Form.password, fb],
		method: method,
		id: smdObj[module].lastSubmissionId
	});
	ajPar = dojo.toJson(ajPar);
	var ajPar = new Array({'JsonSrvStr': ajPar});
	var myDeferred=new dojo.Deferred().addCallback(function(arg){
		var result = dojo.fromJson(arg);
		var data = result.result;
		if (smdObj[module].lastSubmissionId-1 == lastSubmissionId)
			if (data.rs) {
				token = data.rs;
				dojo.require("dojo.cookie");
				if (dojo.cookie.isSupported()) {
					dojo.cookie("token", token, {expires: 365});
				}
				dojo.removeClass("contentContainer","load");
				getPrivateProfile();
				showHome();
			}
			else {
				$('#alertBox').text(errorList[data.errCode]);
				$('#alertBox').dialog('option','position',new Array('center',dialogPos()));
				$("#alertBox").dialog('open');
				unblocker();
			}
	}).addErrback(function(arg){
		console.debug(arg);
	});
	smdObj[module].bind(method, ajPar, myDeferred, apiServerJsonGetProxy(module));
}

function getPrivateProfile() {
	playerProfile = "";
	if (!checkLogged()) {
		window.location.href = window.location.href;
		return false;
	}
	var module = 'profile';
	if (!isset(smdObj[module])) smdObj[module] = createSmdObj2(module);
	var lastSubmissionId = smdObj[module].lastSubmissionId;
	smdObj[module].lastSubmissionId++;
	var method = 'getPrivateProfile';
	var ajPar = new Object({
		params: [token],
		method: method,
		id: smdObj[module].lastSubmissionId
	});
	ajPar = dojo.toJson(ajPar);
	var ajPar = new Array({'JsonSrvStr': ajPar});
	var myDeferred=new dojo.Deferred().addCallback(function(arg){
		var result = dojo.fromJson(arg);
		var data = result.result;
		if (smdObj[module].lastSubmissionId-1 == lastSubmissionId)
			if (data.rs) {
				clearTimeout(privateProfileTimer);
				privateProfileTimer = setTimeout(function(){ getPrivateProfile(); return true;},295000);
				playerProfile = data.rs;
				if (fb['facebook'] == 1) fbApiCall('update');
				if (fb['myspace'] == 1) msApiCall('update');
				timers['cashflow']['count'] = -1;
				timers['health']['count'] = -1;
				timers['energy']['count'] = -1;
				timers['stamina']['count'] = -1;
				timers['achflow']['count'] = -1;
				part.timer.setTimer('stamina');
				part.timer.setTimer('health');
				part.timer.setTimer('energy');
				part.timer.setTimer('cashflow');
				part.timer.setTimer('achflow');
				getHomeHeader();
			}
			else {
				$('#alertBox').text(errorList[data.errCode]);
				$('#alertBox').dialog('option','position',new Array('center',dialogPos()));
				$("#alertBox").dialog('open');
				dojo.require("dojo.cookie");
				dojo.cookie("token", null, {expires: -1});
				token = '';
				window.location.href = window.location.href;
                return false;
			}
	}).addErrback(function(arg){
		console.debug(arg);
	});
	smdObj[module].bind(method, ajPar, myDeferred, apiServerJsonGetProxy(module));
}

function showHome() {
	blocker();
	if (playerProfile == '') {
		setTimeout(function(){showHome();},100);
		return;
	}
	document.title = titles['home'];
	if (!isset(Templates['home']['main'])) Templates['home']['main'] = getTemplate('html/home.html');	
	dojo.byId("contentContainer").innerHTML = Templates['home']['main'];
	getHomeHeader(true);
	getHomeFooter(true);
	dojo.byId("propertyButtonBox").innerHTML = getPropertyButton();
	dojo.byId("inventoryButtonBox").innerHTML = getInventoryButton();
	dojo.byId("missionsButtonBox").innerHTML = getMissionsButton();
	dojo.byId("combatButtonBox").innerHTML = getCombatButton();
	dojo.byId("leadersboardButtonBox").innerHTML = getLeadersboardButton();
	dojo.byId("squadButtonBox").innerHTML = getSquadButton();
	dojo.byId("bankButtonBox").innerHTML = getBankButton();
	dojo.byId("achievmentsButtonBox").innerHTML = getAchievmentsButton();
	dojo.byId("medicButtonBox").innerHTML = getMedicButton();
	dojo.byId("forumButtonBox").innerHTML = getForumButton();
	$('#homeButtonBox').show();
	var invitesCount = parseInt(playerProfile['recruitInvites']) + parseInt(playerProfile['friendInvites']);
	if (invitesCount != 0)
		$('#squadInvitesCount').text("(" + invitesCount + ")");
	getLastHomeFights();
}

function showHomePublicProfile(charId) {
	blocker();
	dojo.require("part.profile");
	getPrivateProfile();
	part.profile.showProfile(charId);
}

function getHomeHeader() {
	if ($('#homeHeader').length == 0) {
		getHeaderShort();
		return;
	}
	if (!isset(Templates['home']['header'])) Templates['home']['header'] = getTemplate('html/homeHeader.html');	
	dojo.byId("homeHeader").innerHTML = Templates['home']['header'];
	dojo.byId("faqButtonBox").innerHTML = getFaqButton();
	dojo.byId("messagesButtonBox").innerHTML = getMessagesButton();
	dojo.byId("profileButtonBox").innerHTML = getProfileButton();
	dojo.byId("recruitButtonBox").innerHTML = getRecruitButton();
	if (parseInt(playerProfile['recruitInvites']) != 0)
		$('#recruitInvitesCount').text("(" + parseInt(playerProfile['recruitInvites']) + ")");
	if (parseInt(playerProfile['newMsgCount']) != 0)
		$('#newMsgCount').text("(" + parseInt(playerProfile['newMsgCount']) + ")");
	getReceiveFreeApBox();
	getLevelBox();
	getSquadBox();
	getAvatarBox();
	getMainInfoNameBox();
	getMainInfoStatsBox();
	part.timer.setTimer('cashflow');
	part.timer.setTimer('health');
	part.timer.setTimer('energy');
	part.timer.setTimer('stamina');
	part.timer.setTimer('achflow');
}

function getHeaderShort() {
	if ($('#headerShort').length == 0) return;
	if (!isset(Templates['home']['headerShort'])) Templates['home']['headerShort'] = getTemplate('html/homeHeaderShort.html');	
	dojo.byId("headerShort").innerHTML = Templates['home']['headerShort'];
	dojo.byId("faqButtonBox").innerHTML = getFaqButton();	
	getReceiveFreeApBox();
	getLevelBox();
	getSquadBox();
	part.timer.setTimer('cashflow');
	part.timer.setTimer('health');
	part.timer.setTimer('energy');
	part.timer.setTimer('stamina');
	part.timer.setTimer('achflow');
}

function getHomeFooter() {
	if (!isset(Templates['home']['footer'])) Templates['home']['footer'] = getTemplate('html/homeFooter.html');	
	dojo.byId("homeFooter").innerHTML = Templates['home']['footer'];
}

function getCashBox() {
	if (dojo.byId("cashBox") != null) {
		if (!isset(Templates['home']['cashBox']))
			Templates['home']['cashBox'] = getTemplate('html/homeCashBox.html');
		dojo.byId("cashBox").innerHTML = Templates['home']['cashBox'];
		dojo.byId("cashValue").innerHTML = $.currency(playerProfile['cash'], currOpt);
		var income = parseInt(playerProfile['income']) - parseInt(playerProfile['upkeep']);
		dojo.byId("incomeValue").innerHTML = $.currency(income, currOpt);
		if (income != 0) {
			part.timer.getTimer('cashflow');
		}
		timers['begin'] = timers['begin'] + 1;
	}
}

function getReceiveFreeApBox() {
	if (dojo.byId("receiveFreeApBox") != null) {
		if (!isset(Templates['home']['receiveFreeApBox']))
			Templates['home']['receiveFreeApBox'] = getTemplate('html/homeReceiveFreeApBox.html');
		dojo.byId("receiveFreeApBox").innerHTML = Templates['home']['receiveFreeApBox'];	
	}
}

function getLevelBox() {	
	if (dojo.byId("levelBox") != null) {		
		if (!isset(Templates['home']['levelBox']))
			Templates['home']['levelBox'] = getTemplate('html/homeLevelBox.html');		
		dojo.byId("levelBox").innerHTML = Templates['home']['levelBox'];
		dojo.byId("levelValue").innerHTML = playerProfile['level'];
		dojo.byId("expValue").innerHTML = playerProfile['exp'];
		dojo.byId("expNextValue").innerHTML = playerProfile['expNext'];		
	}
}

function getHealthBox() {
	if (dojo.byId("healthBox") != null) {
		if (!isset(Templates['home']['healthBox']))
			Templates['home']['healthBox'] = getTemplate('html/homeHealthBox.html');
		dojo.byId("healthBox").innerHTML = Templates['home']['healthBox'];
		dojo.byId("healthValue").innerHTML = playerProfile['health'];
		dojo.byId("healthMaxValue").innerHTML = playerProfile['health_max'];
		part.timer.getTimer('health');
		timers['begin'] = timers['begin'] + 1;
	}
}

function getEnergyBox() {
	if (dojo.byId("energyBox") != null) {
		if (!isset(Templates['home']['energyBox']))
			Templates['home']['energyBox'] = getTemplate('html/homeEnergyBox.html');
		dojo.byId("energyBox").innerHTML = Templates['home']['energyBox'];
		dojo.byId("energyValue").innerHTML = playerProfile['energy'];
		dojo.byId("energyMaxValue").innerHTML = playerProfile['energy_max'];
		part.timer.getTimer('energy');
		timers['begin'] = timers['begin'] + 1;
	}
}

function getStaminaBox() {
	if (dojo.byId("staminaBox") != null) {
		if (!isset(Templates['home']['staminaBox']))
			Templates['home']['staminaBox'] = getTemplate('html/homeStaminaBox.html');
		dojo.byId("staminaBox").innerHTML = Templates['home']['staminaBox'];
		dojo.byId("staminaValue").innerHTML = playerProfile['stamina'];
		dojo.byId("staminaMaxValue").innerHTML = playerProfile['stamina_max'];
		part.timer.getTimer('stamina');
		timers['begin'] = timers['begin'] + 1;
	}
}

function getApBox() {
	if (dojo.byId("apBox") != null) {
		if (!isset(Templates['home']['apBox']))
			Templates['home']['apBox'] = getTemplate('html/homeApBox.html');
		dojo.byId("apBox").innerHTML = Templates['home']['apBox'];
		dojo.byId("apValue").innerHTML = playerProfile['ach_points'];
		part.timer.getTimer('achflow');
		timers['begin'] = timers['begin'] + 1;
	}
}

function getSquadBox() {
	if (dojo.byId("squadBox") != null) {
		if (!isset(Templates['home']['squadBox']))
			Templates['home']['squadBox'] = getTemplate('html/homeSquadBox.html');
		dojo.byId("squadBox").innerHTML = Templates['home']['squadBox'];
		dojo.byId("squadValue").innerHTML = playerProfile['squad'];
	}
}

function getAvatarBox(refresh) {
	if (dojo.byId("avatarBox") != null) {
		if (!isset(Templates['home']['avatarBox']))
			Templates['home']['avatarBox'] = getTemplate('html/homeAvatarBox.html');
		dojo.byId("avatarBox").innerHTML = Templates['home']['avatarBox'];
		var src = avatarUrlGen(playerProfile['id'],playerProfile['avatar']);
		var tmp = new Date();
		src = src + '?_=' + tmp.getTime();
		dojo.query("#avatarImg").attr("src",src);
		dojo.query("#avatarImg").attr("alt",playerProfile['name']);
	}
}

function dateConvert(data) {
    var tmp = data.split(" ");
    var tmpDate = new Array();
    tmpDate[0] = tmp[0].split("-");
    tmpDate[1] = tmp[1];
    var tmp = tmpDate[0][1] + '-' + tmpDate[0][2] + '-' + tmpDate[0][0] + ' ' + tmp[1];
	tmp = '<span class="yellow">' + tmp + '</span>';
    return tmp;
}


function extendDog(id) {
    id = "" + id;
    var len = id.length;
    for (i=len; i<9; i++) id = '0' + id;
    id = id.substr(0,3) + '-' + id.substr(3,3) + '-' + id.substr(6,3);
    return id;
}

function trimDog(id) {
    id = id.replace(/-/g,'');
	while (id.substring(0,1) == "0") {
		id = id.substring(1);
	}
	id = parseInt(id);
    return id;
}

function getMainInfoNameBox() {
	if (dojo.byId("mainInfoNameBox") != null) {
		if (!isset(Templates['home']['mainInfoNameBox']))
			Templates['home']['mainInfoNameBox'] = getTemplate('html/homeMainInfoNameBox.html');
		dojo.byId("mainInfoNameBox").innerHTML = Templates['home']['mainInfoNameBox'];
		if (parseInt(playerProfile['stat_points'])>0) $('#statsUpgradeButton').css('display', 'block');
		else $('#statsUpgradeButton').css('display', 'none');
		dojo.byId("nameValue").innerHTML = playerProfile['name'];
		dojo.byId("classValue").innerHTML = playStyle[playerProfile['playing_style']];
		dojo.byId("dogTagValue").innerHTML = extendDog(playerProfile['dog_tag']);
	}
}

function getMainInfoStatsBox() {
	if (dojo.byId("mainInfoStatsBox") != null) {
		if (!isset(Templates['home']['mainInfoStatsBox']))
			Templates['home']['mainInfoStatsBox'] = getTemplate('html/homeMainInfoStatsBox.html');
		dojo.byId("mainInfoStatsBox").innerHTML = Templates['home']['mainInfoStatsBox'];
		dojo.byId("levelValueStatsBox").innerHTML = playerProfile['level'];
		dojo.byId("bankCashValueStatsBox").innerHTML = $.currency(playerProfile['bank'], currOpt);
		dojo.byId("attackValueStatsBox").innerHTML = playerProfile['total_attack'];
		dojo.byId("defenceValueStatsBox").innerHTML = playerProfile['total_defense'];
		dojo.byId("luckValueStatsBox").innerHTML = playerProfile['total_luck'];
	}
}

function getHomeButton() {
	if (!isset(Templates['home']['button']))
		Templates['home']['button'] = getTemplate('html/homeButton.html');
	return Templates['home']['button'];
}

function getFaqButton() {
	if (!isset(Templates['faq']['button']))
		Templates['faq']['button'] = getTemplate('html/faqButton.html');
	return Templates['faq']['button'];
}

function getMessagesButton() {
	if (!isset(Templates['messages']['button']))
		Templates['messages']['button'] = getTemplate('html/messagesButton.html');
	return Templates['messages']['button'];
}

function getProfileButton() {
	if (!isset(Templates['profile']['button']))
		Templates['profile']['button'] = getTemplate('html/profileButton.html');
	return Templates['profile']['button'];
}

function getRecruitButton() {
	if (!isset(Templates['recruit']['button']))
		Templates['recruit']['button'] = getTemplate('html/recruitButton.html');
	return Templates['recruit']['button'];
}

function getPropertyButton() {
	if (!isset(Templates['property']['button']))
		Templates['property']['button'] = getTemplate('html/propertyButton.html');
	return Templates['property']['button'];
}

function getInventoryButton() {
	if (!isset(Templates['inventory']['button']))
		Templates['inventory']['button'] = getTemplate('html/inventoryButton.html');
	return Templates['inventory']['button'];
}

function getMissionsButton() {
	if (!isset(Templates['missions']['button']))
		Templates['missions']['button'] = getTemplate('html/missionsButton.html');
	return Templates['missions']['button'];
}

function getCombatButton() {
	if (!isset(Templates['combat']['button']))
		Templates['combat']['button'] = getTemplate('html/combatButton.html');
	return Templates['combat']['button'];
}

function getLeadersboardButton() {
	if (!isset(Templates['leadersboard']['button']))
		Templates['leadersboard']['button'] = getTemplate('html/leadersboardButton.html');
	return Templates['leadersboard']['button'];
}

function getSquadButton() {
	if (!isset(Templates['squad']['button']))
		Templates['squad']['button'] = getTemplate('html/squadButton.html');
	return Templates['squad']['button'];
}

function getBankButton() {
	if (!isset(Templates['bank']['button']))
		Templates['bank']['button'] = getTemplate('html/bankButton.html');
	return Templates['bank']['button'];
}

function getAchievmentsButton() {
	if (!isset(Templates['achievement']['button']))
		Templates['achievement']['button'] = getTemplate('html/achievementButton.html');
	return Templates['achievement']['button'];
}

function getMedicButton() {
	if (!isset(Templates['medic']['button']))
		Templates['medic']['button'] = getTemplate('html/medicButton.html');
	return Templates['medic']['button'];
}

function getForumButton() {
	if (!isset(Templates['forum']['button']))
		Templates['forum']['button'] = getTemplate('html/forumButton.html');
	return Templates['forum']['button'];
}

function getInviteButton() {
	if (!isset(Templates['recruit']['inviteButton']))
		Templates['recruit']['inviteButton'] = getTemplate('html/recruitInviteButton.html');
	return Templates['recruit']['inviteButton'];
}

function getLastHomeFights() {
	var module = 'combat';
	if (!isset(smdObj[module])) smdObj[module] = createSmdObj2(module);
	var lastSubmissionId = smdObj[module].lastSubmissionId;
	smdObj[module].lastSubmissionId++;
	var method = 'getLastFights';
	var ajPar = new Object({
		params: [token],
		method: method,
		id: smdObj[module].lastSubmissionId
	});
	ajPar = dojo.toJson(ajPar);
	var ajPar = new Array({'JsonSrvStr': ajPar});
	var myDeferred=new dojo.Deferred().addCallback(function(arg){
		var result = dojo.fromJson(arg);
		var data = result.result;
		if (smdObj[module].lastSubmissionId-1 == lastSubmissionId)
			if (data.rs) {
				var count = 0;
				for (i in data.rs) count++;
				if (count == 0 ) {
					//dojo.query(dojo.create("span", {innerHTML: 'No opponents'}, "fightList", "last")).addClass("emptyDataSet");
				} else {
					for (i in data.rs) {
						var item = data.rs[i];
						var newId = 'combat' + item['combat_id'];
						if (playerProfile['id'] != item['combat_winner_id']) var win = 'scroll_bl';
						else var win = 'scroll_bl2';
						buttonsContainer = dojo.query(
							dojo.create("div", {id: newId}, "pane2", "last")
						).addClass(win);
						$(buttonsContainer).html($('#combatLogHistory').html());
						$("#combatDate",buttonsContainer).html(dateConvert(item['combat_date']));
						if (playerProfile['id'] != item['combat_creator_id']) {
							var targetId = item['combat_creator_id'];
							var attacked = 'You were attacked by ';
							var damage = item['combat_acceptor_damage'];
						}
						else {
							var targetId = item['combat_acceptor_id'];
							var attacked = 'You attacked ';
							var damage = item['combat_creator_damage'];
						}
						
						if (isset(item['combat_retalitate_combat_id']) && item['combat_retalitate_combat_id'] != null)
							var retalitateId = item['combat_retalitate_combat_id'];
						else var retalitateId = item['combat_id'];
						$("a",buttonsContainer).attr("retalitateId",retalitateId);
						$("a",buttonsContainer).attr("charId",targetId);
						$("#declareWar",buttonsContainer).attr("dogTag",item['enemy_char_name']);
						$('#combatAttacked', buttonsContainer).text(attacked);
						$('#profileLink', buttonsContainer).text(item['enemy_char_name']);
						if (playerProfile['id'] != item['combat_winner_id']) {
							var loot = 'lost $' + $.currency(item['combat_looted_cash'], currOpt);
							var win = 'LOST';
						}
						else {
							var loot = 'received $' + $.currency(item['combat_looted_cash'], currOpt);
							var win = '<span class="green">WON</span>';
						}
						$('#combatWin', buttonsContainer).html(win);
						$('#combatDamage', buttonsContainer).text(damage);
						$('#combatMoney', buttonsContainer).text(loot);
					}
				}
			}
			$('#pane2').jScrollPane({showArrows:true, scrollbarWidth: 25, arrowSize: 21});
			getLog();
	}).addErrback(function(arg){
		console.debug(arg);
	});
	smdObj[module].bind(method, ajPar, myDeferred, apiServerJsonGetProxy(module));
}

function getLog() {
	var module = 'Log';
	if (!isset(smdObj[module])) smdObj[module] = createSmdObj2(module);
	var lastSubmissionId = smdObj[module].lastSubmissionId;
	smdObj[module].lastSubmissionId++;
	var method = 'getLast';
	var ajPar = new Object({
		params: [token],
		method: method,
		id: smdObj[module].lastSubmissionId
	});
	ajPar = dojo.toJson(ajPar);
	var ajPar = new Array({'JsonSrvStr': ajPar});
	var myDeferred=new dojo.Deferred().addCallback(function(arg){
		var result = dojo.fromJson(arg);
		var data = result.result;
		if (smdObj[module].lastSubmissionId-1 == lastSubmissionId)
			if (data.rs) {
				var count = 0;
				for (i in data.rs) count++;
				if (count == 0 ) {
					//dojo.query(dojo.create("span", {innerHTML: 'No opponents'}, "fightList", "last")).addClass("emptyDataSet");
				} else {
					for (i in data.rs) {
						var item = data.rs[i];
						var newId = 'history' + item['log_id'];
						buttonsContainer = dojo.query(
							dojo.create("div", {id: newId}, "pane3", "first")
						).addClass('scroll_bl2');
						$(buttonsContainer).html($('#historyLog').html());
						$("#historyDate",buttonsContainer).html(dateConvert(item['log_created_date']));
						$("#historyMessage",buttonsContainer).text(item['log_message']);
					}
				}
			}
			$('#pane3').jScrollPane({showArrows:true, scrollbarWidth: 25, arrowSize: 21});
			getNews();
	}).addErrback(function(arg){
		console.debug(arg);
	});
	smdObj[module].bind(method, ajPar, myDeferred, apiServerJsonGetProxy(module));
}

function getNews() {
	var module = 'News';
	if (!isset(smdObj[module])) smdObj[module] = createSmdObj2(module);
	var lastSubmissionId = smdObj[module].lastSubmissionId;
	smdObj[module].lastSubmissionId++;
	var method = 'getLast';
	var ajPar = new Object({
		params: [token],
		method: method,
		id: smdObj[module].lastSubmissionId
	});
	ajPar = dojo.toJson(ajPar);
	var ajPar = new Array({'JsonSrvStr': ajPar});
	var myDeferred=new dojo.Deferred().addCallback(function(arg){
		var result = dojo.fromJson(arg);
		var data = result.result;
		if (smdObj[module].lastSubmissionId-1 == lastSubmissionId)
			if (data.rs) {
				var count = 0;
				for (i in data.rs) count++;
				if (count == 0 ) {
					dojo.query(dojo.create("span", {innerHTML: 'No news'}, "newsLog", "last"));
				} else {
					for (i in data.rs) {
						var item = data.rs[i];
						var newId = 'news' + item['news_id'];
						buttonsContainer = dojo.query(
							dojo.create("div", {id: newId}, "pane4", "last")
						).addClass('scroll_bl2');
						$(buttonsContainer).html($('#newsLog').html());
						$("#newsDate",buttonsContainer).html(dateConvert(item['news_created_date']));
						$("#newsTitle",buttonsContainer).html(item['news_title']);
						$("#newsText",buttonsContainer).html(item['news_text']);
					}
				}
			}
			$('#pane4').jScrollPane({showArrows:true, scrollbarWidth: 25, arrowSize: 21});
			$("#tabs > ul").tabs();
			unblocker();
	}).addErrback(function(arg){
		console.debug(arg);
	});
	smdObj[module].bind(method, ajPar, myDeferred, apiServerJsonGetProxy(module));
}

function fbApiCall(url) {
	if (fb['facebook'] == 1) {
		switch (url) {
			case 'levelup':
				return true;
			break;
			case 'update':
				var url = apiServer + 'index.php?controller=Facebookapi&action=update';
			break;
		}
		url = url+'&token='+token+'&fb_sig_user='+fb['fb_sig_user']+'&fb_sig_api_key='+fb['fb_sig_api_key']+'&fb_sig_session_key='+fb['fb_sig_session_key'];
		$.getScript(url, function(){});
	}
}

function msApiCall(url) {
	if (fb['myspace'] == 1) {
		switch (url) {
			case 'update':
				var url = apiServer + 'index.php?controller=Myspaceapi&action=update';
			break;
		}
		url = url+'&token='+token+'&opensocial_viewer_id='+fb['opensocial_viewer_id'];
		$.getScript(url, function(){});
	}
}

function currentTab(id) {
	$('.topTab').css('background','');
	$('span','.topTab').css('background','');
	id = '#'+id;
	$(id).css('background','url(images/back_tab2_l-over.gif) no-repeat left top');
	$('span',id).css('background','url(images/back_tab2_r-over.gif) no-repeat right top');
	return;
}

function initAchUnlockDialog() {
	$("#achUnlockBox").dialog({
		dialogClass: 'achUnlock',
		width: "300px",
		height: "300px",
		autoOpen: false,
		draggable: false,
		resizable: false,
		modal: true,
		position: 'center',
		zIndex: "900",
		title: "Achievement Unlocked",
		buttons: {
			'OK': function() {$(this).dialog('close'); return false;}
		}
	});
}

function initLevelUpDialog() {
	$("#levelUpBox").dialog({
		dialogClass: 'levelUp',
		width: "300px",
		height: "300px",
		autoOpen: false,
		draggable: false,
		resizable: false,
		modal: true,
		position: 'center',
		zIndex: "900",
		title: "Level Gained",
		buttons: {
			'OK': function() {$(this).dialog('close'); return false;}
		}
	});
}

function initLowHealthDialog() {
	$("#lowHealthBox").dialog({
		dialogClass: 'lowHealth',
		width: "300px",
		height: "300px",
		autoOpen: false,
		draggable: false,
		resizable: false,
		modal: true,
		position: 'center',
		zIndex: "900",
		title: "Status Confirmation",
		buttons: {
			'OK': function() {$(this).dialog('close'); return false;},
			'VISIT DOCTOR': function() {getPrivateProfile(); dojo.require("part.medic"); part.medic.showMedic(); $(this).dialog('close'); return false;}
		}
	});
}

function initNeedAchDialog() {
	$("#needAchBox").dialog({
		dialogClass: 'needAch',
		width: "300px",
		height: "300px",
		autoOpen: false,
		draggable: false,
		resizable: false,
		modal: true,
		position: 'center',
		zIndex: "900",
		title: "Status Confirmation",
		buttons: {
			'BUY AP': function() {getPrivateProfile(); dojo.require("part.achievement"); part.achievement.showMain(); $(this).dialog('close'); return false;},
			'GO BACK': function() {$(this).dialog('close'); return false;}
		}
	});
}

function initNeedCashDialog() {
	$("#needCashBox").dialog({
		dialogClass: 'needCash',
		width: "300px",
		height: "300px",
		autoOpen: false,
		draggable: false,
		resizable: false,
		modal: true,
		position: 'center',
		zIndex: "900",
		title: "Status Confirmation",
		buttons: {
			'PERFORM MISSION': function() {getPrivateProfile(); dojo.require("part.missions"); part.missions.showMissions(); $(this).dialog('close'); return false;},
			'GO BACK': function() {$(this).dialog('close'); return false;}
		}
	});
}

function sanitizeStr(str) {
	return str.replace(/&amp;/g,'&').replace(/&lt;/g,'<').replace(/&gt;/g,'>').replace(/&#039;/g,"'").replace(/&quot;/g,'"').replace(/<br \/>/gi,"\n").replace(/<br>/gi,"\n");
}
