function Shop(cntrl)
{
	var shop 	= 	{};
	shop = new NET(cntrl);// inherit net class
	
	/* Attributes */
	shop.armorListArr					= new Array();
	shop.charmListArr					= new Array(); 
	//shop.charmListArr					= new Array(); 
	shop.currentPage					= "weapon";
	shop.isLoaded 						= false;
	shop.magicListArr					= new Array();
	shop.num_per_page					= 12;
	shop.shopArr 						= new Array(); // FOR REFRESH AMT FUNCTION
	shop.weaponListArr					= new Array();
	
	/* EOF Attributes */
	
	/* Function Declaration */
	shop.buyWeapon						= buyWeapon;
	shop.buyWeaponCallback				= buyWeaponCallback;
	shop.generateContent				= generateContent;
	shop.getWeapons 					= getWeapons;
	shop.getWeaponsCallback 			= getWeaponsCallback;
	shop.loadPage 						= loadPage;
	shop.loadSubPage 					= loadSubPage;
	shop.loadPaginationWeapon			= loadPaginationWeapon;
	shop.loadPaginationArmor			= loadPaginationArmor;
	shop.loadPaginationMagic			= loadPaginationMagic;
	shop.loadPaginationCharm			= loadPaginationCharm;
	shop.loadWeaponList					= loadWeaponList;
	shop.loadArmorList					= loadArmorList;
	shop.loadMagicList					= loadMagicList;
	shop.loadCharmList					= loadCharmList;
	shop.refresh						= refresh;
	shop.refreshAmt						= refreshAmt;
	shop.sellWeapon						= sellWeapon;
	shop.sellWeaponCallback				= sellWeaponCallback;
	shop.publishFeed					= publishFeed;
	
	/* EOF Function Declaration */
	
	/* Function Definition */
	
	function buyWeapon(id, qty)
	{
		var type 				= shop.shopArr[id].type;
		var Wname				= shop.shopArr[id].Wname;
		var cost 				= shop.shopArr[id].cost;
		var favourpoint 		= shop.shopArr[id].favourpoint;
		var req_gang_size 		= parseInt(shop.shopArr[id].req_gang_size);
		var req_atk				= shop.shopArr[id].req_atk;
		var req_def 			= shop.shopArr[id].req_def;
		var inStock				= shop.shopArr[id].inStock;
		var owned				= parseInt(shop.shopArr[id].owned);
		switch(type)
		{
			case 1://General weapon
				var total_cost = qty * cost;
				if(owner.cash >= total_cost)
				{
					shop.makeRequest();
				}	
				else
				{
					shop.outputMessage("You need <span class ='gold'>"+numberFormat(total_cost-owner.cash)+" g</span> more to buy "+qty+" "+Wname+"(s)", "i");
					return;
				}
				break;
			
			case 2://promotinal weapon
				var total_size = req_gang_size + ((qty *5 )-5);
				if(owner.gang_size >=total_size)	
				{
					shop.makeRequest();
				}	
				else
				{
					shop.outputMessage("You need "+numberFormat(total_size-owner.gang_size)+" more <a href =\"javascript:app.loadPage('gang')\">clan </a>to buy "+qty+" "+Wname+"(s)","i");
					return;
				}
				break;
		
			case 3://featured weapon
				var total_cost = cost * qty;
				var total_favour_point = favourpoint * qty;
				if(inStock > 0)
				{
					if(owner.favour_point >= total_favour_point)
					{
						if(owner.cash >= total_cost)
						{
							shop.makeRequest();
						}	
						else
						{
							shop.outputMessage("You need <span class ='gold'>"+numberFormat(total_cost-owner.cash)+" g</span> more to buy "+qty+" "+Wname+"(s)","i");
							return;
						}
					}
					else
					{
						shop.outputMessage("You need <a href =\"javascript:app.loadPage('godfather')\"><span class ='coin'>"+numberFormat(total_favour_point - owner.favour_point)+" Coins </span></a> more to buy "+qty+" "+Wname+"(s)","i");
						return;
					}
				}
				else
				{
					shop.outputMessage("Sorry... "+Wname+" is Out Of Stock",  "i");
					return;
				}	
				break;
				
			case 4://professional weapon
				var total_req_atk =	req_atk * qty;
				var total_req_def = req_def * qty;
				var total_cost = qty * cost;
				if (owner.cash >= total_cost)
				{	
					if (owner.attack_strength >= total_req_atk)
					{
						if (owner.defense_strength >= total_req_def)
						{
							shop.makeRequest();
						}
						else
						{
							shop.outputMessage("You need "+numberFormat(total_req_def-owner.defense_strength)+ "more Defense Strength to buy" +qty+" "+Wname, "i");
							return; 
						}
					}
					else
					{
						shop.outputMessage("You need "+numberFormat(total_req_atk-owner.attack_strength)+" more Attack Strength to buy "+qty+" "+Wname, "i");
						return;
					}
				}
				else
				{
					shop.outputMessage("You need <span class = \"gold\">"+numberFormat(total_cost-owner.cash)+" g</span> more to buy "+qty+" "+Wname, "i");
					return;
				}
				break;
				
			case 5://charms weapon
				shop.makeRequest();
				/*
				var total_cost = cost * qty;
				if(owned < 1)
				{
					if(owner.cash >= total_cost)
					{
						shop.makeRequest();
					}	
					else
					{
						shop.outputMessage("You need $"+numberFormat(total_cost-owner.cash)+" more gold to buy"+qty+" "+Wname+"(s)","i");
					}
				}
				else
				{
					shop.outputMessage("You can not buy "+Wname+" more than once","w");
					return; 
				}*/
		}
		shop.makeRequest();
		
	};//buyWeapons ends
	
	
	
	function buyWeaponCallback(xml)
	{
		var id = $(xml).find('id').text(); 	
		var message=$('data',xml).find('message').text();
		var favPnt=parseInt($('data',xml).find('favPnt').text());
		var totalcost=parseInt($('data',xml).find('tcost').text());
		var itemType123 = parseInt($('data',xml).find('itemType').text());
		var qty=parseInt($('data',xml).find('qty').text());
		//message+="   <a href=\"javascript:shop.publishFeed("+id+","+qty+","+favPnt+","+itemType+","+totalcost+")\">Brag about it</a>";
		
		var canSell=parseInt($('data',xml).find('can_sell').text());
		shop.outputMessage(message, 's');
		//Updating user upkeep money
		if(owner.upkeep)
			$('#upkeep_money').html('0');
		else
			$('#upkeep_money').html(numberFormat(owner.upkeep));
		//Updating gangSize of user to buy promotional weapons
		var gangSize = $(xml).find('reqGangSize').text();
		var tempShop = shop.shopArr[id];
		tempShop.req_gang_size = gangSize;
		//shop.shopArr[id]['req_gang_size']= gangSize;
		if(gangSize>0)
		{
			$('#gang_size'+id).html('Requires Clan: '+(numberFormat(gangSize)));
		}
		
		else
		{
			$('#gang_size' +id).html("&nbsp;"); 
		}
		if (gangSize > owner.gang_size)
		{
			var more ="<span class=\"require\" ><span class=\"red\">"+(gangSize-owner.gang_size)+" more needed</span></span><br />";
				$('#gang_more'+id).html(more);	
							
		}
		else
		{
			var more ="<span class=\"require\" ><span class=\"red\">&nbsp;</span></span><br />";
						$('#gang_more' +id).html(more);	
		}
		//Generating profession weapon's required attack and defense strength to buy
		var reqAtk = $(xml).find('req_atk').text();
		var reqDef = $(xml).find('req_def').text();
		var inStock = $(xml).find('inStock').text();
		var newTotalWeaponOwned = $(xml).find('newTotalWeapon').text();
		//shop.shopArr[id]['owned']= parseInt(newTotalWeaponOwned); 
		$('#weapon_owned'+id).html('Owned '+numberFormat(newTotalWeaponOwned));
		if(newTotalWeaponOwned>0 && canSell==1)
		{
			var str = "<select id=\"weapon_sell_qty"+id+"\">";
			
						  	for(var i = 1; i<=10;i++)
						  	{												  		
						  		str += "<option value='"+i+"'>"+i+"</option>";
						  		if(i==newTotalWeaponOwned)
						  		break;
						  	}
						  	if(newTotalWeaponOwned>=100)
						  	{
						  		str += "<option value='100'>100</option>";
						  	}			  

			str += "</select>";
				var but_character = "S";
				if(itemType123 == 2)
				but_character = "D";
					str += "<span class=\"btn_div\" onClick=\"shop.sellWeapon("+id+", $('#weapon_sell_qty"+id+"').val())\"><span "+config.hoverEffect+" class=\"button_new_buy\" style=\"width:16px;height:18px\">"+but_character+"</span></span>";

			$('#weapon_sell_btn'+id).html(str);			
		}
		
		if(reqAtk > 0)
		{
			$('#shop_req_att' +id).html("Req attack:"+reqAtk);
		}
		else
		{
			$('#shop_req_att'+id).html('&nbsp;');
			$('#shop_req_def'+id).html('&nbsp;');
		}
		if(reqDef > 0)
		{
			$('#shop_req_def' +id).html("Req defense:"+reqDef);
		}
		else
		{
			$('#shop_req_att'+id).html('&nbsp;');
			$('#shop_req_def'+id).html('&nbsp;');
		}
		if(inStock>0)
		{
			$('#in_stock'+id).html('(Stock: '+numberFormat(inStock)+')');			
		}
		else
		{
			$('#in_stock'+id).html('&nbsp;');
		}
		if(!owner.upkeep)
		{
			$('#upkeep_money').html('0');
		}
		else
		{	
			$('#upkeep_money').html(numberFormat(owner.upkeep) +' g');		
		}
		//shop.publishFeed(id,qty,favPnt,itemType123,totalcost);
		//hover();
	};//buyWeaponCallback ends
	
	
	function publishFeed(id,qty,fav,itemType,total)
	{
		
		switch(itemType)
		{
		case 3:
				message1="has bought "+qty+"X "+shop.shopArr[id].Wname+" for "+fav+" Coins ";
		
		break;
		
		default:
				message1="has bought "+qty+"X "+shop.shopArr[id].Wname+" for "+numberFormat(total)+" gold";
		break;
		}
		text1="Play Darkwars";
		link1=config.appUrl;
		template_data={"images":[{"src":config.timg['logo'],
								 	"href":link1},
								 	{"src":config.userImgUrl+owner.id,
								 	"href":link1},
								 	 {"src":getRaceImage(owner.race),
											 "href":link1}],
									"message":message1,
									"action_text":text1,
									"link":link1};
	//	publishStory(config.templateBundleId,template_data);
	}
	
	
	function getWeapons()
	{
		shop.makeRequest();
	};//getWeapons ends

	function getWeaponsCallback(xml)
	{
		$('#shop_list').show();
		shop.isLoaded 				= true;
		var weaponList 				= "";
		var armorList 				= "";
		var magicList 				= "";
		var charmList 				= "";
		var str 					="";
		var owned					=0;
		var nxtLvl 					= $(xml).find('next_level').text();
	
		$('weapon', xml).each(function(){
			
			var id 					= parseInt($(this).attr('id'));
			var owned 				= parseInt($(this).find('owned').text());
			if(owned == 'NaN' || !owned || owned == '')
				owned = 0;
			var canBy 				= parseInt($(this).find('canBy').text());
		    var canSell				= parseInt($(this).find('canSell').text());
		    var cost 				= parseInt($(this).find('cost').text());
		    var Wname 				= $(this).find('title').text();
		    var imgu				= $(this).find('imgU').text();
		    var upkeep 				= parseInt($(this).find('upkeep').text());
		    var favourpoint 		= parseInt($(this).find('favpoint').text());
		    var req_gang_size		= parseInt($(this).find('reqGangSize').text());
		    var type				= parseInt($(this).find('type').text());
			var req_atk				= parseInt($(this).find('req_atk').text());
		    var req_def 			= parseInt($(this).find('req_def').text());
			var attack				= parseInt($(this).find('attack').text());
		    var defence 			= parseInt($(this).find('defence').text());
		    var inStock				= parseInt($(this).find('inStock').text());
		    var cat					= parseInt($(this).find('cat').text());
		    //shop.shopArr[id]to store values
		  shop.shopArr[id] = {'attack':attack, 'defence':defence, 'id':id, 'cat':cat, 'canSell':canSell, 'canBy':canBy, 'imgu':imgu, 'Wname':Wname, 'type': type, 'cost': cost, 'owned': owned, 'upkeep': upkeep, 'favourpoint':favourpoint,'req_gang_size':req_gang_size, 'req_atk':req_atk, 'req_def':req_def, 'inStock':inStock}; 
		  
			//load page accroding to category
			
			
			switch(cat)
			{
				case 1:						
						
						shop.weaponListArr.push(id);
						break;
				case 2:
						
						shop.armorListArr.push(id);
						break;
				case 3:				
						
						shop.magicListArr.push(id);
						break;
						
				case 4:						
						shop.charmListArr.push(id);
						break;
			}
			
		});
		
		
		//check when weapon will unlocked
		if(nxtLvl>0)
		{
			$('#shop_nextlevel').html(nxtLvl);
		}
		else
		{
			$('#shop_nextlevel').html('0');	
		}
		if(nxtLvl < owner.level )
		{
			$('#shop_level1').html('All weapons are already unlocked');
			$('#shop_nextlevel').html('');
		}
		else
		{
			$('#shop_level1').html('Unlock more weapons when you reach level ');
			$('#shop_nextlevel').html(nxtLvl);
		}
		$('#shop_level').show();	
		shop.loadSubPage('weapon');
		//hover();
	};// getWeaponsCallback ends
	
	function generateContent(weapon)
	{
		var str					= "";				
		var id 					= weapon.id;
		var owned 				= weapon.owned;
	    var canBy 				= weapon.canBy;
	    var canSell				= weapon.canSell;
	    var cost 				= weapon.cost;
	    var Wname 				= weapon.Wname;
	    var imgu				= weapon.imgu;
	    var upkeep 				= weapon.upkeep;
	    var favourpoint 		= weapon.favourpoint;
	    var req_gang_size		= weapon.req_gang_size;
	    var type				= weapon.type;
		var req_atk				= weapon.req_atk;
	    var req_def 			= weapon.req_def;
		var attack				= weapon.attack;
	    var defence 			= weapon.defence;
	    var inStock				= weapon.inStock;
	    var cat					= weapon.cat;
 		var total_gang			= numberFormat(req_gang_size-owner.gang_size);
		
 		if (owned < 1 && inStock < 1 &&(type == config.PROMOTIONAL_WEAPONS ||type == config.FEATURED_WEAPONS || type == config.PROFESSIONAL_WEAPONS))
		return "";
	
			str +="<div class=\"desc_frame_box_small\" ><!--desc_frame_box_small div starts-->"+
			"<div class=\"bgfix_IE8\"><img src=\""+config.imageUrl+"/top_frame.png\" /></div>"+
			"<div class=\"mid_frame_small\">"+
			  "<div class=\"mid_frame_img_small\" >"+
					"<div class=\"items_name\">"+Wname+"</div>"+
					"<div class=\"weapon_img\"><img src=\""+config.shopIMGurl+imgu+"\" width=\"125\" height=\"75\"/></div>"+
					"<div class=\"attk_deff\">";
						
					   if(type == config.CHARM_WEAPONS)
					   {	
					   		if(attack>1)
					   		{		   		
					   			str += "Attack:<span class=\"green\">+"+numberFormat(attack)+"%</span>";
					   		}
					   		else
					   		{
					   			str += "Defense:<span class=\"green\">+"+numberFormat(defence)+"%</span>";
					   		}
					   }
					   else
					   {
							if (attack >0 && defence >0)
							{
								str += "A:"+numberFormat(attack)+" D:"+numberFormat(defence);						
							}
							if(attack ==0 && defence > 0)
							{
								str += "D:"+numberFormat(defence);	
							}
							if (attack >0 && defence == 0)
							{
								str += "A:"+numberFormat(attack)+" D:"+numberFormat(attack);
							}
						}

				str +="</div>"+
				  "</div>"+					
				"</div>"+
				"<div class=\"bgfix_IE8\"><img src=\""+config.imageUrl+"/mid_frame_grad.png\" /></div>"+
				"<div class=\"desc_frame_small\" style = \"height:110px;\"  >";
						if(inStock>0)
						{
							str +="<div class=\"stock\" id ='in_stock"+id+"'>(Stock: "+numberFormat(inStock)+")</div>"; 
									
						}
						else
						{
							if (type == config.PROMOTIONAL_WEAPONS || type == config.FEATURED_WEAPONS)
								str +="<div class=\"stock\">Sold Out</div>"; 
							else
								str +="<div class=\"stock\">&nbsp;</div>";
						}
							str += "<div class=\"items_require\" >";
				
						//write if weapon has Coins or not to buy
						if(favourpoint>0)
						{
							str +="<span class=\"coin\" id='favourpoint_total"+id+"'>Coin: "+numberFormat(favourpoint)+"</span><br />";
						}
						else if (type ==config.PROMOTIONAL_WEAPONS)
						{
							str +="<span class=\"green\" id=\"gang_size"+id+"\">Needs "+numberFormat(req_gang_size)+" Recruits</span><br />";
						}
						else if (cost>0)  
						{
							str +="<span class=\"gold\" id='shop_amt"+id+"'>"+numberFormat(cost)+" g</span><br />";
							
						}
						else
						{
							str +="<span>&nbsp;</span><br />";
							//str += "<div class=\"items_require\" >";
						}
						
						
						str +=  "<div style=\"margin-top:4px; height:39px; \">";
						if(upkeep>0)
						{
								
							str +=	"<span class=\"require\" >Upkeep: <span class=\"red\" id='shop_upkp"+id+"'>"+numberFormat(upkeep)+" g</span></span><br />";
								"<span class=\"require\">&nbsp;</span>";
								
						}
					/*	else
						{
							str +=	"<span class=\"require\" >&nbsp;</span><br />";
								"<span class=\"require\">&nbsp;</span>";
						}*/
						
						
					
					//Write the required clan size to buy promotional weapon
				 	
					if(type == config.PROMOTIONAL_WEAPONS)
					{
						str += "<span class=\"require\" id =\"gang_more"+id+"\">";
						if(owner.gang_size < req_gang_size )
						{
							str +=	"<span class=\"red\">"+total_gang+" more needed</span></span><br />";
						}
						else
						{
							str +=	"<span class=\"red\">&nbsp;</span></span><br />";
						}		
						str += "<span class=\"require\">&nbsp;</span>";
					}
					if(type == config.PROFESSIONAL_WEAPONS)
					{
						str +="<span class=\"require\" id=\"shop_req_att"+id+"\">Requires Att: "+numberFormat(req_atk)+"</span><br />"+
							  "<span class=\"require\" id=\"shop_req_def"+id+"\">Requires Def: "+numberFormat(req_def)+"</span>";
					}
					
					if(type == config.CHARM_WEAPONS)
			   		{
			   			str +="<span class=\"require\">Uses: 1x</span><br />"+
							  "<span class=\"require\">&nbsp;</span>";
			   		}
			   		
			   		if(type == config.GENERAL_WEAPONS || type == config.FEATURED_WEAPONS || type == config.LOOT_WEAPONS)
			   		{
			   			str +="<span class=\"require\">&nbsp;</span><br />"+
							  "<span class=\"require\">&nbsp;</span>";
			   		}
			   		
					str +="</div>"+
						"</div>"+
						"<div class=\"select_div\" ><!--select_div starts-->";
						
						if(canBy==1)
						{		
							str += "<span>"+
										"<select id=\"weapon_buy_qty"+id+"\" onChange=\"javascript:shop.refreshAmt("+id+")\">";
											if (type==config.CHARM_WEAPONS || type==config.PROFESSIONAL_WEAPONS)
											{
												str += "<option value=\"1\" selected=\"selected\">1</option>";
											}
											else
											{
												for(var i=1; i<=10; i++)
												{
													str +="<option value ='"+i+"'>"+i+"</option>";
												}
												str +="<option value=\"50\">50</option><option value=\"100\">100</option>";
											}
										
							str +=		"</select>"+
										"<span class=\"btn_div\" "+config.hoverEffect+"  onClick = \"shop.buyWeapon("+id+", $('#weapon_buy_qty"+id+"').val())\"><span class=\"button_new_buy\" style=\"width:33px;height:18px\">Buy</span></span>"+
									"</span>";									
						}
						else
						{
							str +=  "<span class=\"btn_div\">&nbsp;</span>";
						}
						
						if(owned>0 && canSell==1)
						{
							str += "<span id=\"weapon_sell_btn"+id+"\">"+
											"<select id=\"weapon_sell_qty"+id+"\">";

											for(var i = 1; i<=10;i++)
											{
													str += "<option value='"+i+"'>"+i+"</option>";
												  		if(i==owned)
															break;
											}
											if(owned>=50)
											{
												str += "<option value='50'>50</option>";
											}
											if(owned>=100)
											{
												str += "<option value='100'>100</option>";
											}
											
									str += "</select>";
									var but_char ="S";
									if (type == config.PROMOTIONAL_WEAPONS)
									but_char ="D";
											str += "<span class=\"btn_div\" "+config.hoverEffect+" onClick=\"shop.sellWeapon("+id+", $('#weapon_sell_qty"+id+"').val())\"><span class=\"button_new_buy\" style=\"width:16px;height:18px\">"+but_char+"</span></span>"+
									"</span>";
						}
						else
						{
							str += "<span class=\"btn_div\" id=\"weapon_sell_btn"+id+"\">&nbsp;</span>";
						}
						
					str +=	"<div class=\"clear\"></div>"+
						"</div><!--select_div ends-->"+
						"<div class=\"clear\"></div>"+
		      "</div><!--desc_frame_small ends-->"+			
				"<div><img src=\""+config.imageUrl+"/below_frame.png\" /></div>"+
				"<div class=\"owned\" id=\"weapon_owned"+id+"\">";
				
					if(owned>0)
					{
						str += "Owned: "+numberFormat(owned);
					}
					else
					{
						str += "&nbsp;";											  	
					}

				str += "</div>"+
			"</div>";
						
		return str;			
	};//generateContent(weapon)ends

	
	function loadPage()
	{	
		shop.clearMessage();
		
		shop.adjustWindowHeight();
		if(!owner.upkeep)
		$('#upkeep_money').html('0 g');
		else
		$('#upkeep_money').html(numberFormat(owner.upkeep)+' g');
		if(!shop.isLoaded)
		{
			$('#shop_level').hide();
			shop.getWeapons();
		}
				
	};//loadPage ends

	function loadSubPage(sub_page)
	{		
		$('#shop_level').show();
		$('#shop_weapon_list').css('display', 'none');
		$('#shop_armor_list').css('display', 'none');
		$('#shop_magic_list').css('display', 'none');
		$('#shop_charm_list').css('display', 'none');
		$('#shop_'+sub_page+'_list').css('display', 'block');
		eval('shop.load'+sub_page.substr(0, 1).toUpperCase() + sub_page.substr(1)+'List(1)');
	};//loadSubPage ends
	
	function loadPaginationWeapon(page)
	{
		var pageEnd = Math.ceil(shop.weaponListArr.length/shop.num_per_page);
		var content = pagination(page, "shop.loadWeaponList", pageEnd);
		$('#shop_pagination').html(content);
		if(shop.weaponListArr.length>shop.num_per_page)
			$('#shop_pagination').show();
		else
			$('#shop_pagination').hide();
	};
	
	function loadPaginationArmor(page)
	{
		var pageEnd = Math.ceil(shop.armorListArr.length/shop.num_per_page);
		var content = pagination(page, "shop.loadArmorList", pageEnd);
		$('#shop_pagination').html(content);
		if(shop.armorListArr.length>shop.num_per_page)
			$('#shop_pagination').show();
		else
			$('#shop_pagination').hide();
		
	};
	
	function loadPaginationMagic(page)
	{
		var pageEnd = Math.ceil(shop.magicListArr.length/shop.num_per_page);
		var content = pagination(page, "shop.loadMagicList", pageEnd);
		$('#shop_pagination').html(content);
		if(shop.magicListArr.length>shop.num_per_page)
			$('#shop_pagination').show();
		else
			$('#shop_pagination').hide();
		
	};
	
	function loadPaginationCharm(page)
	{
		var pageEnd = Math.ceil(shop.charmListArr.length/shop.num_per_page);
		var content = pagination(page, "shop.loadCharmList", pageEnd);
		$('#shop_pagination').html(content);
		if(shop.charmListArr.length>shop.num_per_page)
			$('#shop_pagination').show();
		else
			$('#shop_pagination').hide();
		
	};

	function loadWeaponList(page_num)
	{
		if(!page_num)
			page_num = 1;
		var start = (parseInt(page_num)-1)*shop.num_per_page;
		var end = start+parseInt(shop.num_per_page);
		var str = "";
		
		for(i= start; i<end; i++)
		{
			var weapon_id = shop.weaponListArr[i];
			
			if(!weapon_id)
			continue;
			var weapon = shop.shopArr[weapon_id];
			
			str += 		shop.generateContent(weapon);
		}
		$('#shop_weapon_list').html(str);
		$('#shop_weapon_list').fadeIn('slow');
		$('#shop_collection > div').removeClass('img_selected');
		$('#shop_weapon').addClass('img_selected');
		shop.loadPaginationWeapon(page_num);		
	};
		
	function loadArmorList(page_num)
	{
		if(!page_num)
			page_num = 1;
		var start = (parseInt(page_num)-1)*shop.num_per_page;
		var end = start+parseInt(shop.num_per_page);
		var str = "";
		
		for(i= start; i<end; i++)
		{
			var weapon_id = shop.armorListArr[i];
			if(!weapon_id)
			continue;
			var weapon = shop.shopArr[weapon_id];
			str += 		shop.generateContent(weapon);
		}
		$('#shop_armor_list').html(str);
		$('#shop_armor_list').fadeIn('slow');
		$('#shop_collection > div').removeClass('img_selected');
		$('#shop_armor').addClass('img_selected');
		shop.loadPaginationArmor(page_num);		
	};
	
	function loadMagicList(page_num)
	{
		if(!page_num)
			page_num = 1;
		var start = (parseInt(page_num)-1)*shop.num_per_page;
		var end = start+parseInt(shop.num_per_page);
		var str = "";
		
		for(i= start; i<end; i++)
		{
			var weapon_id = shop.magicListArr[i];
			if(!weapon_id)
			continue;
			var weapon = shop.shopArr[weapon_id];
			str += 		shop.generateContent(weapon);
		}
		$('#shop_magic_list').html(str);
		$('#shop_magic_list').fadeIn('slow');
		$('#shop_collection > div').removeClass('img_selected');
		$('#shop_magic').addClass('img_selected');
		shop.loadPaginationMagic(page_num);		
	};
	
	function loadCharmList(page_num)
	{
		if(!page_num)
			page_num = 1;
		var start = (parseInt(page_num)-1)*shop.num_per_page;
		var end = start+parseInt(shop.num_per_page);
		var str = "";
		
		for(i= start; i<end; i++)
		{
			var weapon_id = shop.charmListArr[i];
			if(!weapon_id)
			continue;
			var weapon = shop.shopArr[weapon_id];
			str += 		shop.generateContent(weapon);
		}
		$('#shop_charm_list').html(str);
		$('#shop_charm_list').fadeIn('slow');
		$('#shop_collection > div').removeClass('img_selected');
		$('#shop_charm').addClass('img_selected');
		shop.loadPaginationCharm(page_num);		
	};
	
	function refresh()
	{
		$('#shop_level').hide();
		$('#shop_list').hide();
		shop.isLoaded 	= false;
		shop.shopArr 						= new Array();
		shop.armorListArr					= new Array();
		shop.charmListArr					= new Array(); 
		shop.weaponListArr					= new Array();
		shop.magicListArr					= new Array();
		$('#shop_weapon_list').html('');
		$('#shop_magic_list').html('');
		$('#shop_armor_list').html('');
		$('#shop_weapon_list').html('');
		shop.loadPage();
	};
	
	function refreshAmt(id)
	{ 	
		// Generating new cost, upkeep, Coins for buy and sell weapon
		
		var qty = $('#weapon_buy_qty'+id).val();
		var cost = shop.shopArr[id].cost;
		var upkeep = shop.shopArr[id].upkeep;
		var favourpoint = shop.shopArr[id].favourpoint;
		var reqGangSize = parseInt(shop.shopArr[id].req_gang_size);
		if(upkeep>0)
		{
			$('#shop_upkp'+id).html(numberFormat(upkeep*qty)+'g');
		}
		$('#shop_amt'+id).html(numberFormat(cost*qty)+'g');
		$('#favourpoint_total'+id).html('Coins ' +numberFormat(favourpoint*qty));
		//str +="<span class=\"green\" id=\"gang_size"+id+"\">Needs "+numberFormat(req_gang_size)+" Recruits</span><br />";
		$('#gang_size'+id).html('Needs ' +numberFormat(reqGangSize + (parseInt(qty * 5) - 5))+ ' Recruits') ;
		//hover();
	};//refreshAmt ends
	
	function sellWeapon(id, qty)
	{
		shop.makeRequest();
	};//sellWeapon ends
	
	function sellWeaponCallback(xml)
	{
		var owned = $(xml).find('newTotalWeapon').text();
		var id =$(xml).find('id').text();
		var message =$('data',xml).find('message').text();
		var itemType1234 = parseInt($('data',xml).find('itemType').text());
		shop.outputMessage(message, 's');
		var gangSize = $(xml).find('reqGangSize').text();
		var tempShop = shop.shopArr[id];
		tempShop.req_gang_size = gangSize;
			if(gangSize>0)
		{
			$('#gang_size' +id).html('Requires Clan: '+(numberFormat(gangSize)) );
		}
		else
		{
			$('#gang_size' +id).html("&nbsp;"); 
		}
		var newTotalWeaponOwned = $(xml).find('newTotalWeapon').text();
		if(!newTotalWeaponOwned || newTotalWeaponOwned==0)
		{
			$('#weapon_owned'+id).html("&nbsp;");	
			$('#weapon_sell_btn'+id).html("&nbsp;");		
		}
		else
		{
			$('#weapon_owned'+id).html('Owned: ' + numberFormat(newTotalWeaponOwned));	
			
			var str = "<select id=\"weapon_sell_qty"+id+"\">";
			
						  	for(var i = 1; i<=10;i++)
						  	{												  		
						  		str += "<option value='"+i+"'>"+i+"</option>";
						  		if(i==newTotalWeaponOwned)
						  		break;
						  	}
						  	if(newTotalWeaponOwned>=50)
						  	{
						  		str += "<option value='50'>50</option>";
						  	}			  
						  	if(newTotalWeaponOwned>=100)
						  	{
						  		str += "<option value='100'>100</option>";
						  	}			  
						
			str += "</select>";
			var button_character = "S";
			if(itemType1234 == config.PROMOTIONAL_WEAPONS)
			button_character = "D";
			
					str += "<span class=\"btn_div\" "+config.hoverEffect+" onClick=\"shop.sellWeapon("+id+", $('#weapon_sell_qty"+id+"').val())\"><span class=\"button_new_buy\">"+button_character+"</span></span>";

			$('#weapon_sell_btn'+id).html(str);		
			
		}
		
		var reqAtk = $(xml).find('req_atk').text();
		var reqDef = $(xml).find('req_def').text();
		
		if(reqAtk > 0)
		{
			$('#shop_req_att' +id).html("Req attack:"+reqAtk);
		}
		else
		{
			$('#shop_req_att'+id).html('&nbsp;');
			$('#shop_req_def'+id).html('&nbsp;');
		}
		if(reqDef > 0)
		{
			$('#shop_req_def' +id).html("Req defense:"+reqDef);
		}
		else
		{
			$('#shop_req_att'+id).html('&nbsp;');
			$('#shop_req_def'+id).html('&nbsp;');
		}
		
		if(!owner.upkeep)
			$('#upkeep_money').html('0');
		else
			$('#upkeep_money').html(numberFormat(owner.upkeep));
		//hover();
		
	};//sellWeaponCallback ends
	
	
	/* EOF Function Definition */
	
	return shop;
};
