function Attack(cntrl)
{
	var attack 								= {};
	attack 									= new NET(cntrl);// inherit net class
	/* Attributes */
	attack.blacksArr 						= new Array(); 
	attack.blacksIndex 						= new Array();
	attack.attackListArr 					= new Array();
	attack.attackListIndex 					= new Array();
	attack.blacksloaded 					= false;
	attack.attackListLoaded 				= false;
	attack.attackIndex 						= new Array();
	attack.clearOutput 						= true;
	
	/* EOF Attributes */
	
	/* Function Declaration */
	attack.loadBlacklist 					= loadBlacklist;
	attack.loadPage 						= loadPage;
	attack.getBlacklist 					= getBlacklist;
	attack.getBlacklistCallback 			= getBlacklistCallback;
	attack.addToBlackList 					= addToBlacklist;
	attack.addToBlackListCallback 			= addToBlacklistCallback;
	attack.deleteFromBlacklist 				= deleteFromBlacklist;
	attack.deleteFromBlacklistCallback 		= deleteFromBlacklistCallback;
	attack.getAttackList 					= getAttackList;
	attack.getAttackListCallback 			= getAttackListCallback;
	attack.getAttackResult					= getAttackResult;
	attack.getAttackResultCallback 			= getAttackResultCallback;
	attack.getAttackList 					= getAttackList;
	attack.getAttackListCallback 			= getAttackListCallback;
	attack.generateResult					= generateResult;
	attack.refresh 							= refresh;
	attack.publishFeed						= publishFeed;
	attack.disBlock							= disBlock;
	
	/* EOF Function Declaration */
	
	/* Function Definition */
	
	function loadPage()
	{	
		$('#human_attack_list').hide();
		attack.getAttackList();
	};
	
	function getAttackList(race)
	{
		$('#human_attack_list').hide();
		
		attack.currentSubPage=race;
		if(race==1)
		{
			var rac='vampire';
		}
		else if(race==2)
		{
			var rac='human';
		}
		else if(race==3)
		{
			var rac='werewolf';
		}
		else
		{
			var rac='';
		}
		$('#attack_collection > div').removeClass('img_selected');
		$('#attack_'+rac).addClass('img_selected');
		attack.makeRequest();
	};
	
	function getAttackListCallback(xml)
	{
		$('#human_attack_list').show();
		attack.attackListLoaded = true;
		var str="";
		attack.attackListIndex = new Array();
		attack.attackListArr= new Array();
		if($('user',xml).length<=0 && attack.clearOutput == true)
		{		
			attack.clearOutput = true;
			var userAttackList = new Array();
			attack.outputMessage('There is nobody around your level. Try doing some <a href="javascript:app.loadPage(\'mission\')">quests</a> and come back.',"i");
			$('#human_attack_list').html("");
			return;
		}
		attack.clearOutput = true;
		$('user',xml).each(function()
				{
					var userAttackList = new Array();
					var id = $(this).find('id').text();
					userAttackList['name']= uuescape($(this).find('name').text());
					userAttackList['race'] = $(this).find('race').text();
					userAttackList['thumbUrl'] = uuescape($(this).find('thumb').text());
					userAttackList['gang_size'] = $(this).find('gang_size').text();
					userAttackList['level'] = $(this).find('level').text();	
					attack.attackListIndex.push(id);
					attack.attackListArr["'"+id+"'"] = userAttackList;
					var name =uuescape($(this).find('name').text());
					var race = $(this).find('race').text();
					var gang_size = $(this).find('gang_size').text();
					var level = $(this).find('level').text();
					var thumbUrl =uuescape($(this).find('thumb').text());
					str +=	"<div class=\"desc_frame_box_small\" id=\"attack_black"+id+"\" ><!--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=\"user_name\">";
								 str += p(userAttackList['name'], id)+"</div><div class=\"user_img_attk\"> "+pImg(thumbUrl, id, name)+" </div>"+
								"</div>"+
							"</div>"+
							"<div class=\"bgfix_IE8\"><img src=\""+config.imageUrl+"/mid_frame_grad.png\" /></div>"+
							"<div class=\"desc_frame_small\" ><!--info_frame div starts-->"+
									"<span class=\"txt_highlight\">Level: "+level+"</span> <span class=\"txt_highlight\">Clan: "+gang_size+"</span><br /><span class=\"txt_small\">"+
									""+race+"</span><br />"+
									"<div class=\"btn_update\" ><span class=\"button_new_attack\" "+config.hoverEffect+" onclick=\"attack.getAttackResult("+id+",attack.currentSubPage)\">Attack</span></div>"+
									"<div class=\"clear\"></div>"+
							    "</div><!--info_frame div ends-->"+
							"<div><img src=\""+config.imageUrl+"/below_frame.png\" /></div>"+
						"</div><!--desc_frame_box_samll div ends-->";
				});
				
			$('#human_attack_list').html(str);
	};
	
	function getBlacklist(start, max_num)
	{
		$('#attack_collection > div').removeClass('img_selected');
		$('#attack_blacklist').addClass('img_selected');
		attack.makeRequest();		
	};
	
	function getBlacklistCallback(xml)
	{
		attack.blacksloaded = true;
		var str ="";
		attack.blacksIndex= new Array();
		attack.blacksArr = new Array();
		if($('user',xml).length<=0)
		{
			attack.outputMessage("There is no body in your Black List.","i");
			$('#human_attack_list').html("");
			return;
		}
		$('user', xml).each(function(){
			var enemy = new Array();
			var id = $(this).find('id').text();
			enemy['name'] = uuescape($(this).find('name').text());
			enemy['race'] = $(this).find('race').text();
			enemy['thumb_url'] = uuescape($(this).find('thumb_url').text());
			enemy['clan_size'] = $(this).find('gang_size').text();
			enemy['level'] = $(this).find('level').text();	
			attack.blacksIndex.push(id);
			attack.blacksArr["'"+id+"'"] = enemy; 
			});
		attack.loadBlacklist();			
	};
	
	function loadBlacklist()
	{
		if(!attack.blacksloaded)
		{
			attack.getBlacklist(); return;
		}
		var str ="";
		for(i in attack.blacksIndex)
		{
			var id = attack.blacksIndex[i];
			var enemy = attack.blacksArr["'"+id+"'"];
			var thumb = enemy['thumb_url'];
			var name = enemy['name']; 
			str +=	"<div class=\"desc_frame_box_small\" id=\"attack_black"+id+"\" ><!--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=\"user_name\">"+
								"<span class=\"user_name\">" + p(name, id) + "</span><span class=\"cross\" style=\"margin:-14px 5px 0px 0px;\" onclick=\"attack.deleteFromBlacklist("+id+")\"></span><br /><br />"+
								"<div class=\"clear\"></div>"+
							"</div><div class=\"user_img_attk\">"+pImg(thumb, id, name)+
						  "</div></div>"+
						"</div>"+
						"<div class=\"bgfix_IE8\"><img src=\""+config.imageUrl+"/mid_frame_grad.png\" /></div>"+
						"<div class=\"desc_frame_small\" ><!--info_frame div starts-->"+
								"<span class=\"txt_highlight\">Level: "+enemy['level']+"</span> <span class=\"txt_highlight\">Clan: "+enemy['clan_size']+"</span><br /><span class=\"txt_small\">"+
								""+enemy['race']+"</span><br />"+
								"<div class=\"btn_update\" ><span class=\"button_new_attack\" onclick=\"attack.getAttackResult("+id+",attack.currentSubPage)\" "+config.hoverEffect+">Attack</span></div>"+
								"<div class=\"clear\"></div>"+
						    "</div><!--info_frame div ends-->"+
						"<div><img src=\""+config.imageUrl+"/below_frame.png\" /></div>"+
					"</div><!--desc_frame_box_samll div ends-->";
		}
		$('#human_attack_list').html(str);	
	};
	
	function addToBlacklist(blacklistId)
	{
		attack.makeRequest();
	};
	
	function addToBlacklistCallback(xml)
	{
		var message=$('data',xml).find('message').text(); 
		attack.outputMessage(message);
	};
	
	function deleteFromBlacklist(blacklistId)
	{
		attack.makeRequest();
	};
	
	function deleteFromBlacklistCallback(xml)
	{
		var id =$(xml).find('id').text();
		attack.blacksArr.splice("'"+id+"'",1);
		var index = $.inArray(id, attack.blacksIndex);
		attack.blacksIndex.splice(index,1);
		$('#attack_black'+id).fadeOut('slow');
	};
		
	function refresh()
	{
		attack.blacksArr = new Array(); 
		attack.blacksIndex = new Array();
		attack.attackListArr = new Array();
		attack.attackListIndex = new Array();
		attack.blacksloaded = false;
		attack.attackListLoaded = false;
		attack.attackIndex = new Array();
		attack.clearOutput = true;
		switch(attack.currentSubPage)
		{
			default:
				attack.getAttackList();
				break;			   
			case '1':
				attack.getAttackList(1);
				break;
			case '2':
				attack.getAttackList(2);
				break;
			case '3':
				attack.getAttackList(3);
				break;	
		}
	};
	
	function getAttackResult(attackId,race)
	{
		attack.makeRequest();
	};
	
	function getAttackResultCallback(xml)
	{
		var str = attack.generateResult(xml,"attack");
		attack.outputMessage(str,"m");
		if($('user',xml).length<=0)
		{
			attack.clearOutput = false;
		}
		else
		{
			attack.clearOutput = true;
		}
		attack.getAttackListCallback(xml);
	};
	
	function generateResult(xml,page)
	{
		var str 								= "";
		var uname 								= $(xml).find('uname').text();
		var uid									= $(xml).find('uid').text();
		var sustained 							= $(xml).find('sustained').text();
		var inflicted 							= $(xml).find('inflicted').text();
var inflicted_charm 					= parseInt($(xml).find('inflicted_charm').text());
var inflicted_charm_user 				= parseInt($(xml).find('inflicted_charm_user').text());
		var charms 								= parseInt($(xml).find('charms').text());
		var urace 								= $(xml).find('urace').text();
		var ulevel 								= $(xml).find('ulevel').text();
		var tname 								= $(xml).find('tname').text();
		var tid									= $(xml).find('tid').text();
		var trace 								= $(xml).find('trace').text();
		var tlevel 								= $(xml).find('tlevel').text();
		var stolen 								= $(xml).find('stolen').text();
		var lost 								= $(xml).find('lost').text();
		var user_weapon1 						= $(xml).find('user_weapon1').text();
		var user_weapon2 						= $(xml).find('user_weapon2').text();
		var user_weapon3 						= $(xml).find('user_weapon3').text();
		var target_weapon1 						= $(xml).find('target_weapon1').text();
		var target_weapon2 						= $(xml).find('target_weapon2').text();
		var target_weapon3 						= $(xml).find('target_weapon3').text();
		var uimage 								= $(xml).find('uimage').text();
		var timage 								= $(xml).find('timage').text();
		var win 								= $(xml).find('win').text();
		var loss 								= $(xml).find('loss').text();
		var congrats 							= $(xml).find('congrats').text();
		var uhealth 							= parseInt($(xml).find('uhealth').text());
		var thealth 							= parseInt($(xml).find('thealth').text());
		var uexperience 						= $(xml).find('uexperience').text();
		var texperience 						= $(xml).find('texperience').text();
		var exp_gained_target 					= $(xml).find('exp_gained_target').text();
		var ucash 								= $(xml).find('ucash').text();
		var tcash 								= $(xml).find('tcash').text();
		var uhealthpec 							= $(xml).find('uhealthpec').text();
		var thealthpec 							= $(xml).find('thealthpec').text();
		var u_user_item 						= $(xml).find('u_user_item').text();
		var u_target_item 						= $(xml).find('u_target_item').text();
		var attackId 							= $(xml).find('attackId').text();
		var level_up_message 					= $(xml).find('level_up_message').text();
		var sklPnt								= $(xml).find('sklPnt').text();
		var favPoint							= parseInt($(xml).find('favPoint').text());
		var total_user_attack_strength			= $(xml).find('total_user_attack_strength').text();
		var total_user_defence_strength			= $(xml).find('total_user_defence_strength').text();
		var total_target_attack_strength		= $(xml).find('total_target_attack_strength').text();
		var total_target_defence_strength		= $(xml).find('total_target_defence_strength').text();
		
		str 			+="<div>"+
								"<div style=\"height:30px;\"><span class=\"txt_orng\">"+congrats+"</span> You fought with <strong>"+tname+"</strong>  and <span class=\"green_bold\">"+win+"</span><span class=\"red_bold\">"+loss+"</span></div>"+
								"<div  class=\"white\" style=\"height:30px;\">You inflicted <span class=\"red_bold\">"+inflicted+"</span>";
								if(inflicted_charm != 0)
								{
									str +="<span class=\"charms_damage\"> ("+inflicted_charm+" using charm)</span>";
								}
									str +=" damage to your enemy and Sustained <span class=\"red_bold\">"+sustained+"</span> damage";
									if(inflicted_charm != 0 && charms==1)
									{
										str +="<span class=\"charms_damage\">("+inflicted_charm_user+" using charm)</span>";

									}
											
										str +=". <br />";
								if(stolen != '')
								{
									str +="You won, <span class=\"gold\">"+stolen+" g</span> and <span class=\"yellow_bold\">"+uexperience+"</span> experience in the battle.";
								}
								else
								{
									str +="You Lost: <span class=\"gold\">"+lost+" g</span> in the battle.";
								}
								str += "</div>";
								if(uhealth<=0)
								{
									str += "<div class=\"red_bold\" style=\"height:50px;\">You died</div>";
								}
								else if(uhealthpec<20)
								{
									str += "<div class=\"blue_bold\" style=\"height:50px;\">You went to Healer</div>";
								}
								if(thealth<=0)
								{
									str += "<div class=\"red_bold\" style=\"height:20px;\">"+tname+" died</div>";
								}
								else if(thealthpec<20)
								{
									str += "<div class=\"blue_bold\" style=\"height:50px;\">"+tname+" went to Healer</div>";										
								}
								if(level_up_message!="")
								{
									str += "<div class=\"mission_msg\" >"+
									"<div class=\"\"><span class=\"txt_orng\">Congratulations ! </span>You have made it to level "+level_up_message+". Your advancement has Gained you <span class=\"green_bold\"> "+sklPnt+" Skill Points</span> <a href=\"javascript:app.loadPage('skill')\">(Upgrade Skills ?)</a></div></div><div class=\"clear\"></div><br>";
									if(favPoint > 0)
										str += "You also earned <span class=\"coin\" onclick=\"app.loadPage('godfather')\">"+favPoint+" Coin</span>, Pay tribute to Elder ?";
									var message=" is gaining respect in his clan. He just advanced to level "+owner.level;
									var text="Find what happens at level "+owner.level;
									var link=config.appUrl;
									var template_data={"images":[{"src":config.timg['logo'] ,
											 "href":link},
											 {"src":config.userImgUrl+owner.id,
											 "href":link},
											 {"src":getRaceImage(owner.race),
											 "href":link}],
											"message":message,
											"action_text":text,
											"link":link};
									//publishStory(config.templateBundleId,template_data);	
								}
								str += "<div style=\"height:50px;\"><a class=\"red_link\" href=\"javascript:attack.disBlock()\">Show Details</a></div>";
								str += "<div id=\"attack_detail\" style=\"display:none;\">";
								str +="<div class=\"attack_mydetail\"><!--attack_mydetail starts-->"+
											"<div class=\"new_user_img\">"+pImg(uuescape(uimage),uid,uname,75,75)+"</div>"+
											"<div class=\"attack_info\">"+
												"<div class=\"white_bold\">"+uname+"</div>"+
												"<div class=\"user_level\"><span>Level "+ulevel+",</span> <span>"+urace+"</span></div>"+
												"<div class=\"user_level\">Health:</div>"+
											"</div>"+
											"<div class=\"attack_info\">";
											   if(win)
											   {
												str +="<div class=\"green\">+ "+ numberFormat(ucash)+" g</div>"+
												"<div><span class=\"yellow\">+ "+uexperience+" EXP</span></div>";
											   }
											   else
											   {
											   	str +="<div class=\"red\">- "+ numberFormat(ucash)+" g</div>"+
												"<div>&nbsp;</div>";
											   }
									str+="</div>"+
										  "<div class=\"progressbar_div\" >"+
												"<div class=\"progressbar\">"+
													"<div class=\"progressbar_green\" style=\"width:"+uhealthpec+"%;\" id=\"a_progress\">"+
													"</div>"+
													"<div class=\"progressbar_num\">"+uhealthpec+"%</div>"+
												"</div>"+
											"</div>"+
											"<div class=\"clear\"></div><br />"+
										  "<div>"+
												"<div>You attacked with </div>"+
												"<div class=\"weapons_list\">";
												ua_user_item  =$('userAttack', $(xml).find('userAttacks')).length;
												if(ua_user_item>0)
												{
													$('userAttack', $(xml).find('userAttacks')).each(function()
													{
													var qty=$(this).attr('qty');
													var type=parseInt($(this).attr('type'));
														
														if(type==5)
														{
													  		str +=" "+qty+" "+$(this).text()+",";															
														}
														else if(type!=1)
														{
													  		str +=" "+qty+" "+$(this).text()+",";															
														}
														else
														{
													  		str +=" "+qty+" "+$(this).text()+",";
														}
													});
												}
												else
												{
													 str +=" bare hands,";
												}
												str = comaSeparated(str);
											 	str +="</div>"+
												"</div><br>"+
										  "<div>"+
												"<div>You defended with </div>"+
												"<div class=\"weapons_list\">";
											 ud_user_item  =$('userDefence', $(xml).find('userDefences')).length;
											 	if(ud_user_item!=0)
											 	{													 	
												 	$('userDefence', $(xml).find('userDefences')).each(function()
														{
														var qty=$(this).attr('qty');
														var type=parseInt($(this).attr('type'));
														if(type==5)
														{
													  		str +=" "+qty+" "+$(this).text()+",";															
														}
														else if(type!=1)
														{
													  		str +=" "+qty+" "+$(this).text()+",";															
														}
														else
														{
													  		str +=" "+qty+" "+$(this).text()+",";
														}
													});
											 	}
											 	else
											 	{
											 		 str +=" bare hands,";
											 	}
											 	str = comaSeparated(str);
											 	str +="</div>"+
												"</div>"+
										"</div><!--attack_mydetail ends-->"+
										//"<div >"+
										"<div  class=\"attack_mydetail\"><!--attack_mydetail starts-->"+
											"<div class=\"new_user_img\">"+pImg(uuescape(timage),tid,tname,75,75)+"</div>"+
											"<div class=\"attack_info\">"+
												"<div class=\"white_bold\">"+tname+"</div>"+													
												"<div class=\"user_level\"><span>Level "+tlevel+",</span> <span>"+trace+"</span></div>"+
												"<div class=\"user_level\">Health:</div>"+
											"</div>"+
											"<div class=\"attack_info\">";
											   if(loss)
											   {
												str +="<div class=\"green\">+ "+ numberFormat(tcash)+" g</div>"+
												"<div><span class=\"yellow\">+ "+exp_gained_target+" EXP</span></div>";
											   }
											   else
											   {
											   	str +="<div class=\"red\">- "+ numberFormat(tcash)+" g</div>"+
												"<div>&nbsp;</div>";
											   }
									str+= "</div>"+
										  "<div class=\"progressbar_div\" >"+
												"<div class=\"progressbar\">"+
													"<div class=\"progressbar_green\" style=\"width:"+thealthpec+"%;\" id=\"t_progress\">"+
													"</div>"+
													"<div class=\"progressbar_num\">"+thealthpec+"%</div>"+
												"</div>"+
											"</div>"+
											"<div class=\"clear\"></div><br />"+
										  "<div>"+
												"<div>"+tname+" attacked with </div>"+
												"<div class=\"weapons_list\">";
											 	ua_target_item  =$('targetAttack', $(xml).find('targetAttacks')).length;
											 	if(ua_target_item!=0)
											 	{
													 $('targetAttack', $(xml).find('targetAttacks')).each(function()
														{
															var qty=$(this).attr('qty');
															var type=parseInt($(this).attr('type'));
															
															if(type==5)
															{
														  		str +=" "+qty+" "+$(this).text()+"";															
															}
															else if(type!=1)
															{
														  		str +=" "+qty+" "+$(this).text()+",";															
															}
															else
															{
														  		str +=" "+qty+" "+$(this).text()+",";
															}
														});
											 	}
											 else
												{
													 str +=" bare hands";
												}	
											 	str = comaSeparated(str);
											 	str +="</div>"+
												"</div><br>"+
										  "<div>"+
												"<div>"+tname+" defended with </div>"+
												"<div class=\"weapons_list\">";
											 	ud_target_item  =$('targetDefence', $(xml).find('targetDefences')).length;
											 	if(ud_target_item!=0)
											 	{
												 	$('targetDefence', $(xml).find('targetDefences')).each(function()
													{
														var qty=$(this).attr('qty');
														var type=parseInt($(this).attr('type'));
														if(type==5)
														{
													  		str +=" "+qty+" "+$(this).text()+",";															
														}
														else if(type!=1)
														{
													  		str +=" "+qty+" "+$(this).text()+",";															
														}
														else
														{
													  		str +=" "+qty+" "+$(this).text()+",";
														}
													});
											 	}
												else
												{
													 str +="bare hands";
												}
											 	str = comaSeparated(str);
											 	 str +="</div>"+
												"</div>"+
										"</div>	<!--attack_mydetail ends-->"+
										"</div><!--attack_detail ends-->"+
										//"</div>"+
										"<div class=\"clear\"></div>"+
										"<div "+config.hoverEffect+" class=\"btn_attack_again_div\"  ><div  onclick=\""+page+".getAttackResult("+attackId;
										if(page=="attack")
											str +=",attack.currentSubPage";
										str+=")\">Attack Again</div></div>";
									//	if(win && level_up_message=="")
											//	{
											//		attack.publishFeed(stolen,tname,uid,tid);
											//	}
										str+="<div class=\"clear\"></div>"+
									"</div>";
		return "<div class=\"content_box\">"+str+"</div>";
	};
	
	function comaSeparated(str)
	{
		var st=String(str);
		str=st.substr(0,st.length-1);
		return str;
	};
	
	function disBlock()
	{
		$('#attack_detail').slideToggle('show');
	};
	
	function publishFeed(cash,tname,uid,tid)
	{
		message1="fought with "+tname+"  and won "+numberFormat(cash)+" g";
		text1="Play Darkwars";
		link1=config.appUrl;
		template_data1={"images":[{"src":config.timg['logo'],
						 	"href":link1},
						 	{"src":config.userImgUrl+uid,
						 	"href":link1},
						 	{"src":config.userImgUrl+tid,
						 	"href":link1}],
							"message":message1,
							"action_text":text1,
							"link":link1};
		//publishStory(config.templateBundleId,template_data1);
		
	};
	
	/* EOF Function Definition */
	
	return attack;
}