// -----------------------------------------style
POPUPDIV_BOTTOM_MARGIN = 80;
POPUPDIV_LEFT_MARGIN = 100;
POPUPDIV_PADDING = 10;



// -----------------------------------------preference
BASE_PATH = "http://slightlyblue.com/recipe/";
SCRIPT_PATH = BASE_PATH+"index.cgi";
IMAGES_TEMPLATE_PATH = "./images.jhtml";
SHOKUZAIS_TEMPLATE_PATH="./shokuzais.jhtml";
CONFIRM_TEMPLATE_PATH="./confirm.jhtml";



// -----------------------------------------script
var timeout;
var urlS = BASE_PATH+"shoku.pl";
var urlY = BASE_PATH+"yj.pl";
Event.observe(window, 'load', initRecipe, false);
function initRecipe()
{
	hidePopup();
	hideLoad();

	new Form.Element.Observer('nameSearch', 2, incrementalSearchName );
	new Form.Element.EventObserver('typeSearch1', incrementalSearch );
	new Form.Element.EventObserver('typeSearch2', incrementalSearch );
	new Form.Element.EventObserver('typeSearch3', incrementalSearch );
	Event.observe($("fullyear"), "mouseup", incrementalSearch, false);

	search( $("search") );
}
function incrementalSearchName(element,value)
{
	SelectMonth_monthStart = 1;
	SelectMonth_monthEnd = 12;
	mySelectMonth.initMonths(1);
	mySelectMonth.setSelected(SelectMonth_monthStart,SelectMonth_monthEnd);
	incrementalSearch(element,value)
}
function incrementalSearch(element,value)
{
	search( $("search") );
}
function incrementalSearchCombi(element,value)
{
	// delete others
	var idnum = parseInt(element.id.charAt(element.id.length-1));
	for( var i=0; i<5; i++ ){
		if( i==idnum ){
			continue;
		}else if( $("sh"+i) ){
			$("sh"+i).innerHTML = "";
		}
	}
	var pars = 'query=レシピ+'+$('shA'+idnum).innerText+'+'+value+'&results='+yjresultsMax+'&num='+idnum;
	showLoad();
	var ajaxY = new Ajax.Request( urlY, {method: 'get', parameters: pars, onComplete: showYResponse} );
}
function showYResponse(originalRequest)
{
	hideLoad();

	var newData = originalRequest.responseText;
	var yresult = eval( '(' + originalRequest.responseText + ')' );
	var rendered = Lyase.View.render({file:IMAGES_TEMPLATE_PATH}, yresult );$('shImage'+yresult.num).innerHTML = rendered;
}
function showSearchResponse(originalRequest)
{
	hideLoad();

	var newData = originalRequest.responseText;
	//alert(newData);

	var shokuzais = eval( '(' + originalRequest.responseText + ')' );
	var shokuzaiNums = Math.max( Math.min( shokuzais.list.length, 5 ), 1 );
	var yjresults = yjresultsMax / shokuzaiNums;
	var ajaxShokuzai = new Array(shokuzaiNums);
	shokuzais.maxnums = shokuzaiNums;

	var rendered = Lyase.View.render({file:SHOKUZAIS_TEMPLATE_PATH}, shokuzais );
	$('ajaxresponse').innerHTML = rendered;

	showLoad();
	for ( var i = 0; i < shokuzaiNums; i++ ){
		var pars = 'query=レシピ+'+shokuzais.list[i].shokuzai+'&results='+yjresults+'&num='+i;
		ajaxShokuzai[i] = new Ajax.Request( urlY, {method: 'get', parameters: pars, onComplete: showYResponse} );
		new Form.Element.Observer('combiShText'+i, 2, incrementalSearchCombi );
	}
}
function showCheckResponse(originalRequest)
{
	hideLoad();
	var shokuzais = eval( '(' + originalRequest.responseText + ')' );
	//$('ajaxresponse').innerHTML = originalRequest.responseText;
	if( shokuzais.maxnums ){
		var rendered = Lyase.View.render({file:CONFIRM_TEMPLATE_PATH}, shokuzais );
		$('confirmPost').innerHTML = rendered;
		Dialog.setConfirmMessage($('confirmPost').innerHTML);
		$('btnConfirmOK').disabled = false;
	}else{
		submit();
	}
}
function showPostResponse(originalRequest)
{
	hideLoad();
	var newData = originalRequest.responseText;
	//$('ajaxresponse').innerHTML = newData;
	$('confirmPost').innerHTML = "<br />登録ありがとうございます！(･ω･)ノ<br />";
	timeout=5;
	setTimeout(infoTimeout,1000);
	$('nameSearch').value = "";
}
function search( form )
{
	form.monthStart.value = SelectMonth_monthStart;
	form.monthEnd.value = SelectMonth_monthEnd;
	if( okFormSearch( form ) ){
		var pars = Form.serialize( form );
		showLoad();
		var ajaxS = new Ajax.Request( urlS, {method: 'get', parameters: pars, onComplete: showSearchResponse} );
		$('ajaxresponse').innerHTML = '';
	}
	else{
		//alert( "okFormSearch NG" );
	}
}
function okFormSearch( form )
{
	if( parseInt(form.monthStart.value) == 0 ){
		return false;
	}
	if( parseInt(form.monthEnd.value) < parseInt(form.monthStart.value) ){
		return false;
	}
	return true;
}
function post( form )
{
	var pars = "";
	form.monthStart.value = SelectMonth_monthStart;
	form.monthEnd.value = SelectMonth_monthEnd;
	for( var i=0; i<3; i++ ){
		if( form.ttemp[i].checked ){
			form.t.value = form.ttemp[i].value;
		}
	}
	if( okFormPost( form ) ){
		form.monthStart.value = 1;
		form.monthEnd.value = 12;
		pars = Form.serialize( form );
		$('confirmPost').innerHTML = "<br />Loading...";
		var ajaxC = new Ajax.Request( urlS, {method: 'get', parameters: pars, onComplete: showCheckResponse} );
		Dialog.confirm( $('confirmPost').innerHTML, { windowParameters: {width:500, autoHeight:true}, okLabel: "登録する", cancelLabel: "キャンセル",	cancel:function(win) {return false;},ok:function(win){submit(); return false;}});
		$('btnConfirmOK').disabled = true;

	}else{
		openInfoDialog();
		//alert( "okFormPost NG" );
	}
}
function openInfoDialog() {
	Dialog.info($('confirmPost').innerHTML+"<br />このメッセージは5秒で消えます...", {windowParameters: {width:250}, showProgress: true});
	timeout=5;
	setTimeout(infoTimeout, 1000)
}
function infoTimeout() {
	timeout--;
	if (timeout >0) {
		Dialog.setConfirmMessage($('confirmPost').innerHTML+"<br />このメッセージは "+timeout+" 秒で消えます...");
		setTimeout(infoTimeout, 1000);
	}else{
		Dialog.closeInfo();
	}
}

function submit()
{
	var form = $('post');
	form.monthStart.value = SelectMonth_monthStart;
	form.monthEnd.value = SelectMonth_monthEnd;
	for( var i=0; i<3; i++ ){
		if( form.ttemp[i].checked ){
			form.t.value = form.ttemp[i].value;
		}
	}
	pars = Form.serialize( form );
	showLoad();
	var ajaxP = new Ajax.Request( urlS, {method: 'post', parameters: pars, onComplete: showPostResponse} );
}
function okFormPost( form )
{
	if( parseInt(form.monthStart.value) == 0 ){
		$('confirmPost').innerHTML = "<p><br />旬期間の開始月の指定が誤っています。</p>";
		return false;
	}
	if( parseInt(form.monthEnd.value) < parseInt(form.monthStart.value) ){
		$('confirmPost').innerHTML = "<p><br />旬期間の開始月、終了月の指定が誤っています。</p>";
		return false;
	}
	if( !form.t.value ){
		$('confirmPost').innerHTML = "<p><br />食材の種類の指定が誤っています。</p>";
		return false;
	}
	if( !form.name.value ){
		$('confirmPost').innerHTML = "<p><br />食材の名前を入力してください。</p>";
		return false;
	}
	return true;
}
function showLoad(){
	$('loading').style.display = 'block';
}
function hideLoad(){
	$('loading').style.display = 'none';
}
function showPopup(urlImage,height,width,left,top,summary)
{
	var scroll = Position.realOffset( $('ajaxresponse') );
	$('popupImage').src = null;
	$('popupImage').src = urlImage;
	$('popupImage').style.width = width;
	$('popupImage').style.height = height;
	$('popupText').innerHTML = summary;
	$('popupText').style.width = width;
	if( left < screen.availWidth/2 ){
		$('popupdiv').style.left = left + POPUPDIV_LEFT_MARGIN + scroll[0];
	}else{
		$('popupdiv').style.left = left - width - POPUPDIV_LEFT_MARGIN + scroll[0];
	}
	$('popupdiv').style.top = top - height - POPUPDIV_BOTTOM_MARGIN + scroll[1];
	$('popupdiv').style.width = width + POPUPDIV_PADDING*2;
	$('popupdiv').style.display = 'block';
}
function hidePopup()
{
	$('popupdiv').style.display = 'none';
}
function debug( form )
{
	//alert( $('ajaxresponse').innerHTML );
	var pars = Form.serialize( form );
	//alert(pars);
}
