function Bank(cntrl)
{
	var bank = {};
	bank = new NET(cntrl);// inherit net class
	
	/* Attributes */
	
	/* EOF Attributes */
	
	/* Function Declaration */
	
	bank.depositAmount = depositAmount;
	bank.deposit = deposit;
	bank.depositCallback=depositCallback;
	bank.loadPage = loadPage;
	bank.refreshAmt = refreshAmt;
	bank.refresh = refresh;
	
	bank.withdrawAmount = withdrawAmount;
	bank.withdraw = withdraw;
	bank.withdrawCallback=withdrawCallback;
	bank.getAutoType	=getAutoType;
	bank.autoDeposit	=autoDeposit;
	bank.autoDepositCallback	=autoDepositCallback;
	bank.publishFeed			=publishFeed;
	
	var auto_type=owner.auto_deposit_plan;
	var uincome=owner.income;
	var uupkeep=owner.upkeep;
	var userincome = uincome - uupkeep;
	var plan1_cost=Math.ceil(config.PLAN_PERCENTAGE_10 * userincome * 0.1);
	var plan2_cost=Math.ceil(config.PLAN_PERCENTAGE_20 * userincome * 0.2);
	var plan3_cost=Math.ceil(config.PLAN_PERCENTAGE_50 * userincome * 0.5);
	
	/* EOF Function Declaration */
	
	/* Function Definition */
	/*for deposit amount*/
	
	
	function loadPage()
	{	
		bank.clearMessage();
		
		if(owner.bank_status == 0)
		{
			if(owner.cash<10000)
			{
				$('#transparent_box').hide();
				bank.outputMessage('You need a minimum of <span class="gold">10,000 g</span> initially in hand to access the Treasury. Do some <a href="javascript:app.loadPage(\'mission\')">Quests</a> & get <span class="gold">gold</span>!','i');
			}
			else
			{
				$('#transparent_box').show();
			}
		}
		/* hide autodeposit plan  if users income is less then 1 & bank account is not opened */
		if(userincome<1 || owner.bank_status == 0)
		{
			$('#auto_hide_show').hide();
		}
		else
		{
			$('#auto_hide_show').show();
		}
		bank.adjustWindowHeight();
		$('#auto_plan1').html(numberFormat(plan1_cost));
		$('#auto_plan2').html(numberFormat(plan2_cost));
		$('#auto_plan3').html(numberFormat(plan3_cost));
		var plantimestamp=owner.plan_timestamp;
		
		//highlight the activated plan
		var now=owner.mktime;
		var timeDiff = now - plantimestamp;
		if(timeDiff<=86400)
		{
		$('#auto_plan'+owner.auto_deposit_plan).removeClass('level_frame_mid');
		$('#auto_plan'+owner.auto_deposit_plan).addClass('level_frame_mid_selected');
		}
		bank.refreshAmt();
		
	};
	
	/*################## DEPOSIT TRANSACTION START ##################*/
	
	function depositAmount()
	{
		if(owner.cash<1)
		{
		bank.outputMessage('You dont have enough gold to deposit <span class="gold">'+$('#bank_deposit').val()+' g</span>.  Do some <a href="javascript:app.loadPage(\'mission\')">Quests</a> & get <span class="gold">gold</span>!','e','i');
			return;
		}
		var depositAmt=Math.floor($('#bank_deposit').val());
		
		if(depositAmt<1000)
		{
			bank.outputMessage('You must deposit at least <span class="gold">1000 g</span> at a time.','i');
			return;
		}
		if(depositAmt>owner.cash)
		{
			bank.outputMessage('You do not have enough <span class="gold">gold</span> in hand to deposit <span class="gold">'+$('#bank_deposit').val()+' g</span>.  Do some <a href="javascript:app.loadPage(\'mission\')">Quests</a> & get <span class="gold">gold</span>!','e');
			return;
		}
		bank.deposit(depositAmt);
	};
	
	function deposit(amt)
	{
		bank.makeRequest();
	};
	
	function publishFeed(amt)
	{
		message1="has deposited "+numberFormat(amt)+" g into Treasury";
		text1="Play Darkwars";
		link1=config.appUrl;
		template_data={"images":[{"src":config.timg['logo'],
								 	"href":link1},
								 	{"src":config.timg['treasure'],
								 	"href":link1},
								 	 {"src":getRaceImage(owner.race),
											 "href":link1}],
									"message":message1,
									"action_text":text1,
									"link":link1};
		//publishStory(config.templateBundleId,template_data);
	}
	
	
	function depositCallback(xml)
	{
		app.stopLoading();
		var message=$('data',xml).find('message').text(); 
		var amt=parseInt($('data',xml).find('amt').text());
		var depotype=parseInt($('data',xml).find('deposittype').text());
		switch(depotype)
		{
		case 0:
		//message+="   <a href=\"javascript:bank.publishFeed("+amt+")\">Brag about it</a>";
		//bank.publishFeed(amt);
		break;
		case 1:
		message1="has opened bank account";
		text1="Play Darkwars";
		link1=config.appUrl;
		template_data={"images":[{"src":config.timg['logo'],
								 	"href":link1},
								 	{"src":config.timg['treasure'],
								 	"href":link1},
								 	 {"src":getRaceImage(owner.race),
											 "href":link1}],
									"message":message1,
									"action_text":text1,
									"link":link1};
		publishStory(config.templateBundleId,template_data);
		break;
		}
		bank.outputMessage(message,'s');
		var cash_in_hand = $('owner',xml).find('cash').text();
		var cash_in_bank = $('owner',xml).find('cashInBnk').text();
		var income = parseInt($('owner',xml).find('income').text());
		if(income > 0)
		{
		$('#auto_hide_show').show();
		}
		$('#cash_in_hand').html(numberFormat(cash_in_hand));
		$('#cash_in_bank').html(numberFormat(cash_in_bank));
		bank.refreshAmt();
	};
	
	/*################## DEPOSIT TRANSACTION END ##################*/
	
	/* ################## WITHDRAW TRANSACTION START ##################*/
	
	function withdrawAmount()
	{
		var withdrawAmt=Math.floor($('#withdraw_amount').val());
		
			if(withdrawAmt>(owner.cash_in_bank-1000))
			{
				bank.outputMessage("Your balance cannot go below <span class=\"gold\">1,000 g</span>",'i');
				return;
			}
			if(withdrawAmt<1000)
			{
				bank.outputMessage('You must withdraw at least <span class="gold">1,000 g</span> at a time.','i');
				return;
			}
			if(withdrawAmt>owner.cash_in_bank)
			{
				bank.outputMessage('You do not have enough <span class="gold">gold</span> in treasury to withdraw <span class="gold">'+$('#withdraw_amount').val()+' g</span>.','i');
			}
		bank.withdraw(withdrawAmt);
	};
	
	function withdraw(withdrawAmt)
	{
		//app.startLoading();
		bank.makeRequest();
	};
	
	function withdrawCallback(xml)
	{
		//app.stopLoading();
		var message=$('data',xml).find('message').text(); 
		bank.outputMessage(message,'s');
		var cash_in_hand = $('owner',xml).find('cash').text();
		var cash_in_bank = $('owner',xml).find('cashInBnk').text();
		$('#cash_in_hand').html(numberFormat(cash_in_hand));
		$('#cash_in_bank').html(numberFormat(cash_in_bank));
		bank.refreshAmt();
	};
	
	/*################## WITHDRAW TRANSACTION END ##################*/
	
	function refreshAmt()
	{ 
	
		var cashPer = $('#bank_deposite_per').val();
		var cash = Math.floor(owner.cash);
		var depositAmt=(cash*(cashPer*0.01));
		$('#deposit_per').html(cashPer);
		$('#bank_deposit').val(Math.floor(depositAmt));
		var cash_in_hand = owner.cash;
		$('#cash_in_hand').html(numberFormat(cash_in_hand));
		$('#deducable_amount').html((numberFormat(parseInt(depositAmt*0.10))));
		var Per = $('#bank_withdraw_per').val();
		var cashInBnk = owner.cash_in_bank;
		var withdrawAmt=(cashInBnk * Per* 0.01);
		$('#withdraw_amount').val(Math.floor(withdrawAmt));
		$('#cash_in_bank').html(numberFormat(cashInBnk));
		
	};
	
	/*################## FOR AUTODEPOSIT ACTIVATION PLAN ##################*/	
	
	//get autodeposit type
	function getAutoType(type)
	{
	var cash	= owner.cash;
			switch(type)
			{
			case 'plan_1':
			//check if users have enough cash in hand for activate this plan
			if(cash<plan1_cost)
			{
				bank.outputMessage('You need <span class="gold">'+numberFormat(plan1_cost)+' g</span> for this plan','i');
				return;
			}
				break;
			case 'plan_2':
			if(cash<plan2_cost)
			{
				bank.outputMessage('You need <span class="gold">'+numberFormat(plan2_cost)+' g</span> for this plan','i');
				return;
			}
				break;
			case 'plan_3':
			if(cash<plan3_cost)
			{
				bank.outputMessage('You need <span class="gold">'+numberFormat(plan3_cost)+' g</span> for this plan','i');
				return;
			}
				break;
			}
	//if user has enough cash then go to next
	bank.autoDeposit(type);
	};
	
	function autoDeposit(type)
	{
	bank.makeRequest();
	};
	
	function autoDepositCallback(xml)
	{
	var message=$('data',xml).find('message').text(); 
	bank.outputMessage(message,'s');
	var autoPlan=$('owner',xml).find('autoDepoPln').text();
	$('#auto_plan'+autoPlan).removeClass('level_frame_mid');
	$('#auto_plan'+autoPlan).addClass('level_frame_mid_selected');
	bank.refreshAmt();
	};
	
	function refresh()
	{
		bank.loadPage();
	};
	
	/*################## FOR AUTODEPOSIT ACTIVATION PLAN END ##################*/	
	/* EOF Function Definition */
	
	return bank;
}