function layerNone() { $('item2').setStyle({'display':'none'}); }
var CharacterDefineDIV=[];
var prop,level,itemName,stat,abyss,stigma,enchantCount,count;
var stigmas_kill=false;
var DataTPL={
	'ArrayInfo':['title','race','level','className','characterName','legionName'],
	'ArrayItem':['pos_1','pos_3','pos_2','pos_4','pos_11','pos_12','pos_14','pos_13','pos_17','pos_7','pos_8','pos_9','pos_10','pos_15','pos_16','pos_18'],
	'ArrayStat':['hp','mp','physicalRight','physicalLeft','criticalRight','criticalLeft','accuracyRight','accuracyLeft','magicalBoost','magicResist','attackSpeed','physicalDefend','parry','magicalAccuracy','dodge','moveSpeed','block'],
	'ArrayAbyss':['currentName','abyssPoint','bestName','totalAbyssKillCnt'],
	'ArrayStigma':['pos_21','pos_22','pos_23','pos_24','pos_25','pos_28','pos_29','pos_30'],
	'ArrayMagicstone':['magicstone_totalcount','magicstone_name','magicstone_count']
};
var objectList = {
	'type':['ArrayInfo','ArrayItem','ArrayStat','ArrayAbyss','ArrayStigma'],
	'list':['info','item','stat','abyss','item'],
	'template':['info','item','stat','abyss','stigma']
};
DataTPL['info']=function(data) {
	var array = [];
	var html = [];
	var legionName = "";
	var htmlstone='';
	for (var i=0;i<DataTPL.ArrayInfo.length;i++) {
		array[i] = (data['info'][DataTPL.ArrayInfo[i]]) ? (data['info'][DataTPL.ArrayInfo[i]]) : '';
	}	
	
	if(data['info'].race=='Asmodians') {
		data['info'].race = 'Asmodian';
	}
	
	if (data['info'].legionName) {legionName='&lt;<a href=\'http://uk.aiononline.com/livestatus/character-legion/search?serverID='+AionMiniOpt.server+'&guildID='+data['info'].legionID+'\'  onclick=\"goCL(\'aionuser\',\''+AionMiniOpt.docid+'\',this)\" target=\'_blank\'>'+data['info'].legionName+'</a>&gt;'}	
	html.push('<span class=\'char_info_tit\'>'+data['info'].title+'</span><div class=\'info_tit_layer\'><span>'+data['info'].titleAttr+'</span><span class="em">&nbsp;</span></div><br /><a  href=\'http://uk.aiononline.com/livestatus/character-legion/search?charID='+data['info'].characterID+'&serverID='+AionMiniOpt.server+'\' onclick=\"goCL(\'aionuser\',\''+AionMiniOpt.docid+'\',this)\" target=\'_blank\'><strong>'+data['info'].race+' '+data['info'].level+' '+data['info'].className+' <span>'+data['info'].characterName+'</span></a> </strong>'+legionName+'<span class=\'guestbook\'><a href=\'http://uk.aiononline.com/livestatus/character-legion/search?signature=1&charID='+data['info'].characterID+'&serverID='+AionMiniOpt.server+'\' onclick=\"goCL(\'aionuser\',\''+AionMiniOpt.docid+'\',this)\" target=\'_blank\'>View 3D Character</a></span>');
	if (data['info'].magicstone_count>0) {
		htmlstone = AionSearchTmp['slots']+' '+data['info'].magicstone_totalcount; //+' ('+data['info'].magicstone_name+' '+data['info'].magicstone_count+')';
	} else htmlstone = AionSearchTmp['slots']+' '+data['info'].magicstone_totalcount;
	$('char_info').update(html);
	$('magicstone').update(htmlstone);
};
DataTPL['item']=function(data) {
	var currentPos = DataTPL.ArrayItem[count];
	var currentClass = 'item'+currentPos.split('_')[1];
	if (data.item[currentPos].level==='0') level='-';
	else level=data.item[currentPos].level;
	enchantCount=data.item[currentPos].enchantCount;
	if (enchantCount==='0') enchantCount='';
	else enchantCount='+'+enchantCount;
	itemName='<span class=\''+currentClass + ' ' +data.item[currentPos].quality+'\'>'+enchantCount+' '+data.item[currentPos].itemName+'</span>';
};
DataTPL['stat']=function(data) {
	if (DataTPL.ArrayStat[count]==='physicalLeft'||DataTPL.ArrayStat[count]==='criticalLeft'||DataTPL.ArrayStat[count]==='accuracyLeft') {
		if (data.stat[DataTPL.ArrayStat[count]]==='0') return stat='';
		else stat='&nbsp;/ '+data.stat[DataTPL.ArrayStat[count]]+''+AionSearchTmp['off'];
	} else return stat=data.stat[DataTPL.ArrayStat[count]];
};
DataTPL['abyss']=function(data) { return abyss=data.abyss[DataTPL.ArrayAbyss[count]]; };
DataTPL['stigma']=function(data) {
	return stigma='<span class=\''+data.item[DataTPL.ArrayStigma[count]].quality+'\' onmouseover=\'getStigmaInfo("_'+data.item[DataTPL.ArrayStigma[count]].itemID+'");\' onmouseout=\'layerNone();\'>'+data.item[DataTPL.ArrayStigma[count]].itemName+'</span>';
};
function CharacterDetailView(data) {
	$('loading').setStyle({display:'none'});
	$('list_view').show();
	for (var j=0; j<objectList.type.length;j++) {
		for (count=0; count<DataTPL[objectList.type[j]].length; count++) {
			if (j===0) {
				DataTPL[objectList.template[j]](data);
			} else if (data[objectList.list[j]][DataTPL[objectList.type[j]][count]]) {
				for (prop in data[objectList.list[j]][DataTPL[objectList.type[j]][count]])
					DataTPL[objectList.template[j]](data);
			} else {
				level='';
				itemName='';
				stat='0';
				abyss='0';
				stigma=AionSearchTmp['empty'];
			}
			switch (j) {
				case 0 :
				break;
				case 1 :
					$(DataTPL.ArrayItem[count]).select('TD')[0].update(level);
					$(DataTPL.ArrayItem[count]).select('div')[0].update(itemName);
				break;
				case 2 :
					$(DataTPL.ArrayStat[count]).update(stat);
				break;
				case 3 :
					$(DataTPL.ArrayAbyss[count]).update(abyss);
				break;
				case 4 :
					var obj=[];
					obj[count]=$('stigma').getElementsByClassName('stigma'+count);
					obj[count][0].update(stigma);
				break;
			}
		}
	}
	characterInfo.urls=[];
	var currentItemString;
	var currentItem;
	var currentIdx;
	for (var i=0;i<DataTPL['ArrayItem'].length;i++) {
		currentItemString = DataTPL['ArrayItem'][i];
		currentItem=data['item'][currentItemString];
		if (currentItem) {
			currentIdx=parseInt(currentItemString.split('_')[1]);
			characterInfo.urls[currentIdx]='/aionmini/ajax/item.jsp?charID='+data['info']['characterID']+'&nameID='+currentItem['itemID']+'&serverID='+AionMiniOpt.server+'&slot='+currentIdx+'&position='+currentItem['positionName'];
			//characterInfo.urls[currentIdx]='/aionmini/ajax/item.js';
		}
	}
	characterInfo.observe('char_item','item1');
}
function AionCharacterDetailData(data,idx) {
	if (CharacterDefineDIV[idx]) CharacterDetailView(CharacterDefineDIV[idx]);
	else {
		CharacterDefineDIV[idx]=data;
		CharacterDetailView(CharacterDefineDIV[idx]);
	}
}
var stigmaDefineDIV=[];
var DetailStigma={
	'keys':{
		'target': AionSearchTmp['target'],
		'castingDelay': AionSearchTmp['castingTime'],
		'delayTime': AionSearchTmp['coolTime'],
		'cost': AionSearchTmp['cost']
	},
	'list':['itemName','level','skillDescription','target','castingDelay','delayTime','cost']
};

function timeCalculator(timer) {
	var timer = parseInt(timer);
	var returnTime = [];
	var timeForHours = 1000*60*60;
	returnTime.push((Math.floor(timer / timeForHours)>0) ? Math.floor(timer / timeForHours) +''+AionSearchTmp['hour'] : '');
	returnTime.push((Math.floor((timer % timeForHours)/(1000*60))>0) ? Math.floor((timer % timeForHours)/(1000*60)) +''+AionSearchTmp['min'] : '');
	returnTime.push((Math.floor(((timer % timeForHours)%(1000*60))/1000)>0) ? Math.floor(((timer % timeForHours)%(1000*60))/1000) +''+AionSearchTmp['sec'] : '');
	return returnTime.join(' ');
}


DetailStigma['template']=function(property, value) {
	var htmlString = '';
	if (property==='itemName') htmlString='<dt>'+value+'</dt>';
	else if (property==='level') htmlString+='<dd class=\"'+ property + '\">' + AionSearchTmp['level'] + ' ' + value +'</dd>';
	else if (DetailStigma['keys'][property]) {
		if (property==='castingDelay'||property==='delayTime') {
			value = timeCalculator(value);			
			if (value=='  ') value='Immdiate execution';
		}
		htmlString += '<dd class=\"'+ property + '\"><div class=\'property\'>'+DetailStigma['keys'][property]+'</div><div class=\'value\'>' + value + '</div></dd>';
	}
	else htmlString+='<dd>' + value + '</dd>';
	return htmlString;
};
function stigmaDetailData(result) {
	eval(result);
	stigmaDefineDIV[_StigmaId]=result;
	var html=[];
	var className;
	data=stigmas_kill;
	for (var i=0;i<DetailStigma['list'].length;i+=1) {
		for (onprop in data) {
			if (DetailStigma['list'][i]===onprop) html.push(DetailStigma['template'](onprop, data[onprop]));
			else if (onprop==='quality') className=data[onprop];
		}
	}
	$('layer_stigma').update(html.join('')).setStyle({display:'block'});
	$('layer_stigma').select('DT')[0].addClassName(className);
	$('item2').setStyle({'display':'block'});
	Event.observe($('item2'),'mouseover',function() { $('item2').setStyle({'display':'block'}); });
	Event.observe($('item2'),'mouseout',function() { $('item2').setStyle({'display':'none'}); });
	stigmas_kill = false;
}
var StigmaUrl,_StigmaId;
function getStigmaInfo(stigmaId) {
	_StigmaId = stigmaId;
	if (stigmaDefineDIV[stigmaId]) {
		stigmaDetailData(stigmaDefineDIV[stigmaId]);
	}
	else {
		StigmaUrl = '/aionmini/ajax/item_stigma.jsp?itemID='+stigmaId;
		StigmaRequest();
	}
}
function StigmaRequest(){
	new Ajax.Request(
		StigmaUrl,
		{
			method:'get',
			onComplete:function(request) {			
				var responseData=request.responseText;
				stigmaDetailData(responseData);
			},
			onFailure:function() {	
				getStigmaInfo();
			}
		}
	);
}
