jQuery(document).ready(function($){
	var init = function(){
		loadxml();
		$('article select').change(function(){
			generateResult();
		});
		$('article select').keydown(function(){
			generateResult();
		});
		searchMonster('#own');
		searchMonster('#enem');
		$('fieldset button:last').click(function(){false});
	}
	
	var loadxml = function(){
		$.ajax({
			url: 'monster.xml',
			type: 'GET',
			dataType: 'xml',
			timeout: 1000,
			error: function(){
				alert("xmlファイルの読み込みに失敗しました");
			},
			success: function(xml){
				for(var i=1;i<4;i++){
					
					$(xml).find('saga2').find('item').each(function(index){
						$(this).find('type'+i).each(function(){
							var mnsKind = $(this).find('name').text();
							var mnsMeat = $(xml).find('saga2').find('item:eq('+index+')').find('meat').text();
							$('<optgroup></optgroup>').attr('label',mnsKind).attr('kzms2kind',index).attr('kzms2type',i).attr('kzms2meat',mnsMeat).appendTo('#own');
							for(var j=1;j<12;j++){
								var mnsName = $(this).find('lv'+j).text();
								if(mnsName){
									$('<option></option>').html(mnsName).val(j).appendTo('#own optgroup:last');
								}
							}
							$('#own optgroup:last').clone().appendTo('#enem');
						});
					});
				}
			}
		});
		//end generate html
		
	}
	
	var generateResult = function(){
			var onwKind = parseFloat($('#own optgroup:has(option:selected)').attr('kzms2kind'));
			var enemMeat = parseFloat($('#enem optgroup:has(option:selected)').attr('kzms2meat'));
			var resultKind = (onwKind + enemMeat)%12;
			var onwType = parseFloat($('#own optgroup:has(option:selected)').attr('kzms2type'));
			var enemType = parseFloat($('#enem optgroup:has(option:selected)').attr('kzms2type'));
			var tmpType = onwType + enemType;
			var resultType = 1;
			if(tmpType>=5){
				resultType = 3;
			}else if(tmpType==4){
				resultType = 2;
			}
		/*
		console.debug('resultKind:'+resultKind);
		console.debug('resultType:'+resultType);
		*/
		//$('#result').val($('#own optgroup[kzms2kind='+resultKind+'][kzms2type='+resultType+']').attr('label'));
		var ownLv = parseFloat($('#own optgroup option:selected').val());
		var enemLv = parseFloat($('#enem optgroup option:selected').val());
		var minLv = parseFloat($('#own optgroup[kzms2kind='+resultKind+'][kzms2type='+resultType+'] option:first').val());
		/*
		console.debug('ownLv:'+ownLv);
		console.debug('enemLv:'+enemLv);
		console.debug('minLv:'+minLv);
		*/
		var resultLv = ownLv;
		if(resultLv<enemLv){
			resultLv = enemLv;
		}
		if(resultLv<minLv){
			resultLv = minLv;
		}
		//console.debug('resultLv:'+resultLv);
		var resultMons = $('#own optgroup[kzms2kind='+resultKind+'][kzms2type='+resultType+'] option[value='+resultLv+']').html();
		//console.debug('resultMons:'+resultMons);
		if(resultMons===null){
			var tmpLv = resultLv-1;
			resultMons = $('#own optgroup[kzms2kind='+resultKind+'][kzms2type='+resultType+'] option[value='+tmpLv+']').html()
			//console.debug('resultMons2:'+resultMons);
	}
		if(resultMons===null){
			$('#result').val('変身せずにHPを50%・能力回数を20%回復');
		}else{
			$('#result').val(resultMons);
		}
	}
	
	var searchMonster = function(el){
		$(el+'Srch').keyup(function(){
			var tmpVal = $(this).val();
			if(tmpVal){
				var target = $(el+' optgroup option:contains('+tmpVal+')')	;
				$(el+'Assist').show().html('');
				if(target.length==0){
					$('<li class="alert"></li>').html('そんなモンスターは居ません。').appendTo(el+'Assist');
					$(el+'Assist').fadeOut(1000);
				}
				target.each(function(index){
					if(target.length==1){
						//$(el+' optgroup option[selected=true]').attr('selected',false);
						target.attr('selected',true);
						$(el+'Srch').val('');
						$(el+'Assist').hide();
						generateResult();
					}else{
						$('<li class="list"></li>').html($(this).text()).appendTo(el+'Assist').click(function(){
							//$(el+' optgroup option[selected=true]').attr('selected',false);
							$(el+' optgroup option:contains('+$(this).text()+')').attr('selected',true);
							$(el+'Srch').val('');
							$(el+'Assist').hide();
							generateResult();
						});
					}
				});
			}else{
				$(el+'Assist').hide();
			}
		});
		$(el+'Assist').blur(function(){
			generateResult();
		});
	}
	
	init();
	
});
