gadgets.util.registerOnLoadHandler(init);
var outputBox = "output";

/* Object variable declaration */
var app			= null;
var attack		= null;
var banned		= null;
var bank		= null;
var config		= null;
var gang		= null;
var godfather	= null;
var help		= null;
var hitlist		= null;
var home		= null;
var hospital	= null;
var leaderboard	= null;
var mission		= null;
var newuser		= null;
var owner 		= null;
var profile		= null;
var property	= null;
var shop		= null;
var skill 		= null;
var tutorial	= null;
/* EOF Object variable declaration */

function init()
{ 
	document.location = "#top";
	$('#stat1, #stat2, #stat_refresh').hide();
	app = new App();
	config = new Config();
	owner = new Owner('owner');
	app.startLoading();
	
	if(!owner.isAppInstalled())
	{
		$('#app_loading').hide();
		app.stopLoading();
		$('#appBody').hide();
		$('#app_not_installed').show().html(config.appNotInstalledMessage);
		document.location = "#top";
		return;
	} 
	owner.getOwnerInfo();
	$('.button').mousedown(function(){$(this).addClass('button_pressed');});
	$('.button').mouseup(function(){$(this).removeClass('button_pressed');});
};

function App()
{
	var app = {};
	app.current_controller	= null;
	app.goldCounterStarted		= false;
	app.energyCounterStarted	= false;
	app.staminaCounterStarted	= false;
	app.healthCounterStarted	= false;
	
	app.energyCounter 		= energyCounter;
	app.energyFiller		= energyFiller;
	app.feedActivity		= feedActivity;
	app.goldCounter 		= goldCounter;
	app.healthCounter 		= healthCounter;
	app.healthFiller		= healthFiller;
	app.initializePage 		= initializePage;
	app.loadPage 			= loadPage;
	app.refresh				= refresh;
	app.refreshApp			= refreshApp;
	app.staminaCounter 		= staminaCounter;
	app.staminaFiller		= staminaFiller;
	app.startLoading		= startLoading;
	app.startRefreshing		= startRefreshing;
	app.stopLoading			= stopLoading;
	app.stopRefreshing		= stopRefreshing;
	
	function energyCounter()
	{
		if(app.energyCounterStarted)
			return;
		app.energyCounterStarted = true;
		$('#app_energy_cycle').css('display', 'block');
		var cyc = owner.energy_refresh;
		window.setInterval(function(){
			if(!cyc)
			{
				cyc = owner.energy_cycle;
				if(owner.energy < owner.max_energy)
					owner.refresh('app');//owner.energy++;
				$('#app_energy').html(nF(owner.energy));
				app.energyFiller();
			}
			if(owner.energy == owner.max_energy)
				$('#app_energy_cycle_text').css('display', 'none');
			else
				$('#app_energy_cycle_text').css('display', 'block');
			$('#app_energy_cycle_text').html("More in <span class=\"red\">"+tF(cyc)+"</span>"); 
			cyc--;
			}, 1000);
	};
	
	function energyFiller()
	{
		var m_height = 100;
		var m_energy = owner.max_energy;
		var energy = owner.energy;
		var unit = 0;
		if(m_energy > 0)
			unit = m_height/m_energy;
		var rise = Math.floor(100-unit*energy);
		$('#statusbar_energy_trans').css('height', rise+'%');
	};
	
	/**
	 * creates myspace activity feed
	 * @param heading
	 * @param detail
	 * @param pictures array
	 * @return
	 */
	function feedActivity(heading, detail, pictures)
	{
		template_data1={"images":[{"src":config.timg['weapon'],
		 	"href":"href1"},
		 	{"src":config.timg['logo'],
		 	"href":"href1"}],
			"message":"message1"
			};
		publishStory('darkwars', template_data1);
		return;
		if(!heading)
			heading = "";
		if(!detail)
			detail = "";
		var params = {};
		params[opensocial.Activity.Field.TITLE_ID] = "darkwars";
		params[opensocial.Activity.Field.TEMPLATE_PARAMS] = {"detail":detail ,"heading": heading};
		
		var mediaItemArray = [];
		mediaItemArray.push(opensocial.newMediaItem("", "http://api.myspace.com/v1/users/"+owner.id));
		/*if(pictures)
			for(i in pictures)
			{
				mediaItemArray.push(opensocial.newMediaItem("", "http://api.myspace.com/v1/users/"+pictures[i]));
			}*/
		params[opensocial.Activity.Field.MEDIA_ITEMS] = mediaItemArray;
		
		var activity = opensocial.newActivity(params);
		opensocial.requestCreateActivity(activity, opensocial.CreateActivityPriority.HIGH, function(){});
	}
	
	function goldCounter()
	{
		if(app.goldCounterStarted)
			return;
		app.goldCounterStarted = true;
		$('#app_gold_flow_text').css('display', 'block');
		var cyc = owner.income_refresh;
		window.setInterval(function(){
			if(!cyc)
			{
				cyc = owner.income_cycle;
				owner.refresh('app');//owner.cash = eval(owner.cash+owner.cash_flow);
				$('#app_gold').html(nF(owner.cash));
			}
			if(!owner.income)
				$('#app_gold_flow_text').css('display', 'none');
			else
				$('#app_gold_flow_text').css('display', 'block');
			$('#app_gold_flow_cycle').html(tF(cyc)); 
			cyc--;
			}, 1000);
	};
	
	function healthCounter()
	{
		if(app.healthCounterStarted)
			return;
		app.healthCounterStarted = true;
		$('#app_health_cycle').css('display', 'block');
		var cyc = owner.health_refresh;
		window.setInterval(function(){
			if(!cyc)
			{
				cyc = owner.health_cycle;
				if(owner.health < owner.max_health)
					owner.refresh('app');//owner.health = owner.health+1;
				$('#app_health').html(nF(owner.health));
				app.healthFiller();
			}
			if(owner.health == owner.max_health)
				$('#app_health_cycle_text').css('display', 'none');
			else
				$('#app_health_cycle_text').css('display', 'block');
			$('#app_health_cycle_text').html("More in <span class=\"red\">"+tF(cyc)+"</span>"); 
			cyc--;
			}, 1000);
	};
	
	function healthFiller()
	{
		var m_height = 100;
		var m_health = owner.max_health;
		var health = owner.health;
		var unit = 0;
		if(m_health > 0)
			unit = m_height/m_health;
		var rise = Math.floor(100-unit*health);
		$('#statusbar_health_trans').css('height', rise+'%');
	};
	
	function initializePage()
	{
		$('#attack_tab').click(function(){app.loadPage('attack');});
		$('#bank_tab').click(function(){app.loadPage('bank');});
		$('#gang_tab').click(function(){app.loadPage('gang');});
		$('#godfather_tab').click(function(){app.loadPage('godfather');});
		$('#help_tab').click(function(){app.loadPage('help');});
		$('#hitlist_tab').click(function(){app.loadPage('hitlist');});
		$('#home_tab').click(function(){app.loadPage('home');});
		$('#hospital_tab').click(function(){app.loadPage('hospital');});
		$('#leaderboard_tab').click(function(){app.loadPage('leaderboard');});
		$('#mission_tab').click(function(){app.loadPage('mission');});
		$('#profile_tab').click(function(){app.loadPage('profile');});
		$('#property_tab').click(function(){app.loadPage('property');});
		$('#shop_tab').click(function(){app.loadPage('shop');});
		$('#skill_tab').click(function(){app.loadPage('skill');});
		$('#navigation > div > div:even').hover(function(){$(this).addClass('hover_tab');}, function(){$(this).removeClass('hover_tab');});
	};
	
	function loadPage(page, sub_page)
	{
		if(!page)
			page = "home";
		$('#page > div').hide();
		$('#'+page+'_page').show();
		
		switch(page)
		{	
			case 'registration':
				owner.loadPage(page);
				$('#page > div').css('display', 'none');
				$('#'+page+'_page').css('display', 'block');
				break;
			
			default:
				var script = "if(!"+page+") "+page+" = new "+ucfirst(page)+"('"+page+"'); "+page+".loadPage(";
				if(sub_page)
					script += "'"+sub_page+"'";
					script += ");";
				eval(script);
				$('#navigation > div > div:even').each(function(){$(this).removeClass('selected_menu');});
				$('#'+page+'_tab').addClass('selected_menu');
				break;
			
		}
		app.current_controller = page;
		app.stopLoading();
	};
	
	function refresh(xml)
	{
		var level 					= $('owner', xml).find('level').text();
		if(level)
			owner.level = parseInt(level);
		
		var level_experience 		= $('owner', xml).find('levelExp').text();
		if(level_experience)
			owner.level_experience = parseInt(level_experience);
		
		var gang_size 				= $('owner', xml).find('gngSz').text();
		if(gang_size)
		{
			owner.gang_size = parseInt(gang_size); 
		}
		
		var bank_status 			= $('owner', xml).find('bnkSt').text();
		if(bank_status)
			owner.bank_status  = parseInt(bank_status);
		
		var cash 					= $('owner', xml).find('cash').text();
		if(cash)
			owner.cash  = parseFloat(cash);
		
		var cash_in_bank 			= $('owner', xml).find('cashInBnk').text();
		if(cash_in_bank)
			owner.cash_in_bank  = parseFloat(cash_in_bank);
		
		var energy 					= $('owner', xml).find('engy').text();
		if(energy)
			owner.energy  = parseInt(energy);
		
		var stamina 				= $('owner', xml).find('stmn').text();
		if(stamina)
			owner.stamina  = parseInt(stamina);
		
		var health 					= $('owner', xml).find('hlth').text();
		if(health)
			owner.health  = parseInt(health);
		
		var experience 				= $('owner', xml).find('exp').text();
		if(experience)
			owner.experience  = parseInt(experience);
		
		var upkeep 					= $('owner', xml).find('upkp').text();
		if(upkeep)
			owner.upkeep  = parseFloat(upkeep);
		
		var income 					= $('owner', xml).find('incm').text();
		if(income)
			owner.income  = parseFloat(income);
		
		var income_refresh			= $('owner', xml).find('incmRefsh').text();
		if(income_refresh)
			owner.income_refresh	= parseInt(income_refresh);
		
		var attack_strength 		= $('owner', xml).find('atckStnth').text();
		if(attack_strength)
			owner.attack_strength  	= parseInt(attack_strength);
		
		var auto_deposit_plan		= $('owner', xml).find('autoDepoPln').text();
		if(auto_deposit_plan)
			owner.auto_deposit_plan = parseInt(auto_deposit_plan);
		
		var banned					= $('owner', xml).find('banned').text();
		if(banned == 'Y')
			owner.banned = true;
		if(banned == 'N')
			owner.banned = false;
		
		var bounty_collected 		= $('owner', xml).find('bntyColectd').text();
		if(bounty_collected)
			owner.bounty_collected  = parseFloat(bounty_collected);
		
		var clas 					= $('owner', xml).find('clas').text();
		if(clas)
			owner.clas  = parseInt(clas);
		
		var death_count				= $('owner', xml).find('dthCnt').text();
		if(death_count)
			owner.death_count  		= parseInt(death_count);
		
		var defense_strength 		= $('owner', xml).find('dfnStnth').text();
		if(defense_strength)
			owner.defense_strength  = parseInt(defense_strength);
		
		var energy_cycle 			= $('owner', xml).find('engyCyc').text();
		if(energy_cycle)
			owner.energy_cycle  	= parseInt(energy_cycle);
		
		var energy_refresh 			= $('owner', xml).find('engyRefsh').text();
		if(energy_refresh)
			owner.energy_refresh  	= Math.floor(parseInt(energy_refresh));
		
		var energy_timestamp 		= $('owner', xml).find('engyTs').text();
		if(energy_timestamp)
			owner.energy_timestamp  = parseInt(energy_timestamp);
		
		var first_login_of_day 		= $('owner', xml).find('first_login_of_day').text();
		if(first_login_of_day)
			owner.first_login_of_day	= parseInt(first_login_of_day);
		
		var favour_point 			= $('owner', xml).find('fvrPnt').text();
		if(favour_point)
			owner.favour_point  	= parseInt(favour_point);
		
		var fight_lost_count		= $('owner', xml).find('fghtLstCnt').text();
		if(fight_lost_count)
			owner.fight_lost_count  = parseInt(fight_lost_count);
		
		var fight_won_count 		= $('owner', xml).find('fghtWnCnt').text();
		if(fight_won_count)
			owner.fight_won_count  	= parseInt(fight_won_count);
		
		var health_cycle 			= $('owner', xml).find('hlthCyc').text();
		if(health_cycle)
			owner.health_cycle  	= parseInt(health_cycle);
		
		var health_refresh 			= $('owner', xml).find('hlthRefsh').text();
		if(health_refresh)
			owner.health_refresh  	= Math.floor(parseInt(health_refresh));
		
		var health_timestamp 		= $('owner', xml).find('hlthTs').text();
		if(health_timestamp)
			owner.health_timestamp  = parseInt(health_timestamp);
		
		var income_cycle	 		= $('owner', xml).find('incmCyc').text();
		if(income_cycle)
			owner.income_cycle  	= parseInt(income_cycle);
		
		var kill_count				= $('owner', xml).find('killCnt').text();
		if(kill_count)
			owner.kill_count  		= parseInt(kill_count);
		
		var max_energy 				= $('owner', xml).find('mxEngy').text();
		if(max_energy)
			owner.max_energy  		= parseInt(max_energy);
		
		var max_health 				= $('owner', xml).find('mxHlth').text();
		if(max_health)
			owner.max_health  		= parseInt(max_health);
		
		var max_stamina 			= $('owner', xml).find('mxstmn').text();
		if(max_stamina)
			owner.max_stamina  		= parseInt(max_stamina);
		
		var mission_completed 		= $('owner', xml).find('misnCmpltd').text();
		if(mission_completed)
			owner.mission_completed = parseInt(mission_completed);
		
		var mktime 		= $('owner', xml).find('mktime').text();
		if(mktime)
			owner.mktime = parseInt(mktime);
		
		var name 					= $('owner', xml).find('name').text();
		if(name)
			owner.name  = name;
		
		var num_of_marks			= $('owner', xml).find('nom').text();
		if(num_of_marks)
			owner.num_of_marks  	= parseInt(num_of_marks);
		
		var plan_timestamp			= $('owner', xml).find('plnTs').text();
		if(plan_timestamp)
			owner.plan_timestamp  	= parseInt(plan_timestamp);
		
		var profile_url 			= $('owner', xml).find('prflUrl').text();
		if(profile_url)
			owner.profile_url  = profile_url;
		
		var race 					= $('owner', xml).find('race').text();
		if(race)
			owner.race  = parseInt(race);
		
		var skill_point 			= $('owner', xml).find('sklPnt').text();
		if(skill_point)
			owner.skill_point  = parseInt(skill_point);
			
			var UreadComment 			= $('owner', xml).find('UreadComment').text();
		if(UreadComment)
			owner.UreadComment  = parseInt(UreadComment);
			
		
		var stamina_cycle 			= $('owner', xml).find('stmnCyc').text();
		if(stamina_cycle)
			owner.stamina_cycle 	= parseInt(stamina_cycle);
		
		var stamina_refresh 			= $('owner', xml).find('stmnRefsh').text();
		if(stamina_refresh)
			owner.stamina_refresh 	= Math.floor(parseInt(stamina_refresh));
		
		var stamina_timestamp 		= $('owner', xml).find('stmnTs').text();
		if(stamina_timestamp)
			owner.stamina_timestamp = parseInt(stamina_timestamp);
		
		var thumbnail_url 			= $('owner', xml).find('thmbUrl').text();
		if(thumbnail_url)
			owner.thumbnail_url  = thumbnail_url;
		
		var cash_flow;
		cash_flow = owner.income - owner.upkeep;
		owner.cash_flow = parseFloat(cash_flow);
		
		app.refreshApp();
	};
	
	function refreshApp()
	{
		/* -------------------- CASH (GOLD) -------------------- */
		if(!owner.cash)
			$('#app_gold').html('0');
		else
			$('#app_gold').html(nF(owner.cash));
		
		/* -------------------- INCOME (GOLD FLOW) -------------------- */
		if(!owner.cash_flow)
			$('#app_gold_flow').html('0');
		else
			$('#app_gold_flow').html(nF(owner.cash_flow));
		
		/* -------------------- CASH-IN-BANK (TREASURY) -------------------- */
		if(!owner.cash_in_bank)
			$('#app_treasury').html('0');
		else
			$('#app_treasury').html(nF(owner.cash_in_bank));
		
		/* -------------------- LEVEL (EVOLUTION) -------------------- */
		$('#app_evolution').html(nF(owner.level));
		
		/* -------------------- CLAN (GANG SIZE) -------------------- */
		if(!owner.gang_size)
			$('#app_clan').html('0');
		else
			$('#app_clan').html(nF(owner.gang_size));
		
		/* -------------------- HEALTH -------------------- */
		if(!owner.health)
			$('#app_health').html('0');
		else
			$('#app_health').html(nF(owner.health));
		$('#app_max_health').html(nF(owner.max_health));
		app.healthFiller();
		
		/* -------------------- ENERGY -------------------- */
		if(!owner.energy)
			$('#app_energy').html('0');
		else
			$('#app_energy').html(nF(owner.energy));
		$('#app_max_energy').html(nF(owner.max_energy));
		app.energyFiller();
	
		/* -------------------- STAMINA -------------------- */
		if(!owner.stamina)
			$('#app_stamina').html('0');
		else
			$('#app_stamina').html(nF(owner.stamina));
		$('#app_max_stamina').html(nF(owner.max_stamina));
		app.staminaFiller();
		
		/* -------------------- EXPERIENCE -------------------- */
		if(!owner.experience)
			$('#app_experience').html('0');
		else
			$('#app_experience').html(nF(owner.experience));
		
		/* -------------------- LEVEL EXPERIENCE -------------------- */
		$('#app_level_experience').html(nF(owner.level_experience));
		
		/* -------------------- MARKLIST MENU TAB -------------------- */
		var menu_str = '<div>Marked List';
		if(owner.num_of_marks)
			menu_str += '(<span class="lime">'+owner.num_of_marks+'</span>)';
		menu_str += '</div>';
		$('#hitlist_tab').html(menu_str);
		
		var profile_str = '<div>Profile';
		if(owner.UreadComment)
			profile_str += '(<span class="lime">'+owner.UreadComment+'</span>)';
		profile_str += '</div>';
		$('#profile_tab').html(profile_str);
		
		
		var skill_str = '<div>Skills';
		if(owner.skill_point)
			skill_str += '(<span class="lime">'+owner.skill_point+'</span>)';
		skill_str += '</div>';
		$('#skill_tab').html(skill_str);
		
		
		var elder_str = '<div>Elder Spirit';
		if(owner.favour_point)
			elder_str += '(<span class="lime">'+owner.favour_point+'</span>)';
		elder_str += '</div>';
		$('#godfather_tab').html(elder_str);
		
		
	};
	
	function staminaCounter()
	{
		if(app.staminaCounterStarted)
			return;
		app.staminaCounterStarted = true;
		$('#app_stamina_cycle').css('display', 'block');
		var cyc = owner.stamina_refresh;
		window.setInterval(function(){
			if(!cyc)
			{
				cyc = owner.stamina_cycle;
				if(owner.stamina < owner.max_stamina)
					owner.refresh('app');//owner.stamina++;
				$('#app_stamina').html(nF(owner.stamina));
				app.staminaFiller();
			}
			if(owner.stamina == owner.max_stamina)
				$('#app_stamina_cycle_text').css('display', 'none');
			else
				$('#app_stamina_cycle_text').css('display', 'block');
			$('#app_stamina_cycle_text').html("More in <span class=\"red\">"+tF(cyc)+"</span>"); 
			cyc--;
			}, 1000);
	};
	
	function staminaFiller()
	{
		var m_height = 100;
		var m_stamina = owner.max_stamina;
		var stamina = owner.stamina;
		var unit = 0;
		if(m_stamina > 0)
			unit = m_height/m_stamina;
		var rise = Math.floor(100-unit*stamina);
		$('#statusbar_stamina_trans').css('height', rise+'%');
	};
	
	function startLoading()
	{
		$('#loading_box').show();
	};
	
	function startRefreshing()
	{
		$('#refresh').html('Refreshing...');
	};
	
	function stopLoading()
	{
		$('#loading_box').hide();
	};
	
	function stopRefreshing()
	{
		$('#refresh').html('Refresh');
	};
	
	return app;
};