function plantsOptions(){ //產生農作物名稱的下拉選單
	var plant;
	
	for(var i=0;i<plants.length;i++){
		plant = plants[i];
		$('#name').addOption(i, plant[0]);
	}
	$('#name').val(0);
}

function fertOptions(x, f){ //產生肥料選項的下拉選單
	var result = '<select id="fert_' + x + '" onchange="setFert(' + x + ');">\n';
	var selected = [(f==0), (f==1), (f==2.5), (f==5.5)];
	var selStr = 'selected="selected"';
	result += '<option value="0"' + (selected[0]?selStr:'') + ' class="none">不施肥</option>\n';
	result += '<option value="1"' + (selected[1]?selStr:'') + ' class="general">普通化肥</option>\n';
	result += '<option value="2.5"' + (selected[2]?selStr:'') + ' class="fast">高速化肥</option>\n';
	result += '<option value="5.5"' + (selected[3]?selStr:'') + ' class="super">急速化肥</option>\n';
	result += '</select>\n';
	return result;
}

function show(){  //顯示農作物的成立資料
	var plant = plants[$('#name').val()];
	var seasons = plant[5];
	var hh, mm, tt;
	var stepTime;
	var html = '';
	ferts = [];
	hh = parseInt($('#hour').value);
	mm = parseInt($('#minute').value);
	
	$('#type').html(plant[1]);
	$('#matureTime').html(plant[2] + ' hr');
	$('#reMatureTime').html(plant[3] + ' hr');
	$('#buyLevel').html(plant[18]);
	$('#seedPrice').html('$' + formatPrice(plant[13]));
	$('#amount').html(plant[14] * seasons);
	$('#leastAmount').html(plant[19]);
	$('#unitPrice').html('$' + plant[15]);
	$('#income').html('$' + formatPrice(plant[14] * plant[15] * seasons));

	var tableHead = '\t<tr>\n';
	tableHead += '\t\t<td align="center" class="title2" colspan="2">成長階段</td>\n';
	tableHead += '\t\t<td align="center" class="title2">階段時間</td>\n';
	tableHead += '\t\t<td align="center" class="title2">生長時間</td>\n';
	tableHead += '\t\t<td align="center" class="title2">使用肥料</td>\n';
	tableHead += '\t</tr>\n';

	html += '<table width="100%" border="0" id="tb2" cellspacing="1" cellpadding="0">\n';
	html += tableHead;

	for(var i=0;i<5;i++){ //第1季，第6~10欄為第1季5個成長階段所需要的時間
		html += '\t<tr>\n';
		if(i==0)
			html += '\t\t<td rowspan="5" width="50">第1季</td>\n';
		html += '\t\t<td>' + growPhase[i] + '</td>\n';
		if(!isNaN(plant[i+6])){
			html += '\t\t<td>' + plant[i+6] + ' hr</td>\n';
			html += '\t\t<td><div id="growStep_' + (i) + '"></div></td>\n';
			html += '\t\t<td>' + fertOptions(i, 0) + '</td>\n';
			ferts[i] = 0;
		}
		else{
			html += '\t\t<td colspan="3">&nbsp;</td>\n';
		}
		html += '\t</tr>\n';
	}
	
	for(var i=1;i<seasons;i++){  //1季以上的農作物
		html += '\t<tr>\n';  //再開花
		html += '\t\t<td rowspan="2">第' + (i+1) + '季' + '</td>\n';
		html += '\t\t<td>' + growPhase[5] + '</td>\n';
		html += '\t\t<td>' + plant[11] + ' hr</td>\n';
		html += '\t\t<td><div id="growStep_' + (i*2+3) + '"></div></td>\n';
		html += '\t\t<td>' + fertOptions(i*2+3, 0) + '</td>\n';
		html += '\t</tr>\n';
		ferts[i*2+3] = 0;
		
		html += '\t<tr>\n';  //再成熟
		html += '\t\t<td>' + growPhase[6] + '</td>\n';
		html += '\t\t<td>' + plant[12] + ' hr</td>\n';
		html += '\t\t<td><div id="growStep_' + (i*2+4) + '"></div></td>\n';
		html += '\t\t<td>' + fertOptions(i*2+4, 0) + '</td>\n';
		html += '\t</tr>\n';
		ferts[i*2+4] = 0;
	}
	
	html += '</table>\n';
	$('#grow').html(html);
	$('input[name="fert"]')[0].checked = true;

	calc();
}

function calc(){   //計算每階段的成長時間和
	var plant = plants[$('#name').val()];
	var seasons = plant[5];
	var profit = 0;
	var exp, chm;
	var hourProfit, hourExp;
	var steal;	//是否被偷竊
	var chmEff;	//
	var send;	//是否為每日禮物?
	var hh, mm, tt;
	var stepTime;  //每階段的成長時間
	var quantity = 0;
	var seedPrice;	//種子售價
	var timeStr;
	hh = parseInt($('#hour').val()); //播種時間(小時)
	mm = parseInt($('#minute').val()); //播種時間(分)
	startTime.hh = hh;
	startTime.mm = mm;
	chm = parseInt($('#chm').val());	//魅力等級
	chmEff = 1 + 0.01 * chm;		//魅力等級對售價的影響率
	chmEff = Math.min(chmEff, 1.5);	//魅力等級對售價的影響率上限為50%
	steal = $('#steal')[0].checked;	//是否有被偷竊
	send = $('#send')[0].checked;	//是否是送的
	seedPrice = send ? 0 : plant[13];
	exp = plant[16] * seasons + 6;
	quantity = (steal ? plant[19] : plant[14]) * seasons;
	//收成數量 = (單季產量 or 被偷竊後的產量) * 可收成季數
	profit = parseInt(quantity * plant[15] * chmEff) - seedPrice;
	//預期收益 = (收成數量 * 單價) * (1 + 魅力等級 * 1%) - 種子售價
	usedTime = 0;
	fertCost = 0;
	
	for(var i=0;i<5;i++){ //第1季
		if(!isNaN(plant[i+6])){
			stepTime = plant[i+6] - ferts[i];	//第6~10欄為第1季5個成長階段所需要的時間
			stepTime = (stepTime<0) ? 0 : stepTime;
			timeStr = formatNumber(hh) + ':' + formatNumber(mm) + ' ~ ';
			tt = timeAdd(hh, mm, stepTime);
			hh = tt.hh;
			mm = tt.mm;
			timeStr += formatNumber(hh) + ':' + formatNumber(mm);
			$('#growStep_'+i).html(timeStr);
			usedTime += stepTime;
			fertCost += fertPrice(ferts[i]);
		}
	}
	for(var i=1;i<seasons;i++){  //1季以上的農作物
		stepTime = plant[11] - ferts[i*2+3];  //再開花
		stepTime = (stepTime<0) ? 0 : stepTime;
		timeStr = formatNumber(hh) + ':' + formatNumber(mm) + ' ~ ';
		tt = timeAdd(hh, mm, stepTime);
		hh = tt.hh;
		mm = tt.mm;
		timeStr += formatNumber(hh) + ':' + formatNumber(mm);
		$('#growStep_'+(i*2+3)).html(timeStr);
		usedTime += stepTime;	//累計農作物生長時間
		fertCost += fertPrice(ferts[i*2+3]);	//累計肥料的使用費用
		
		stepTime = plant[12] - ferts[i*2+4];  //再成熟
		stepTime = (stepTime<0) ? 0 : stepTime;
		timeStr = formatNumber(hh) + ':' + formatNumber(mm) + ' ~ ';
		tt = timeAdd(hh, mm, stepTime);
		hh = tt.hh;
		mm = tt.mm;
		timeStr += formatNumber(hh) + ':' + formatNumber(mm);
		$('#growStep_'+(i*2+4)).html(timeStr);
		usedTime += stepTime;	//累計農作物生長時間
		fertCost += fertPrice(ferts[i*2+4]);	//累計肥料的使用費用
	}
	startTime.hh = hh;
	startTime.mm = mm;
	profit -= fertCost;
	profit *= $('#area').val();	//總損益 = 單一土地損益 * 種植面積
	exp *= $('#area').val();	//總經驗值 = 單一土地經驗值 * 種植面積
	hourExp = exp / usedTime;
	hourProfit = profit / usedTime;
	$('#seedPrice').html('$' + formatPrice(seedPrice));
	$('#usedTime').html('<font color="blue"><b>' + usedTime + '</b></font> hr');
	$('#profit').html('<b>$<font color="' + ((profit>0)? 'blue' : 'red') + '">' + formatPrice(profit) + '</font></b>');
	$('#exp').html('<font color="blue"><b>' + exp + '</b></font> exp');
	$('#hourProfit').html('<b>$<font color="' + ((hourProfit>0)? 'blue' : 'red') + '">' + formatPrice(hourProfit.toFixed(2)) + '</font></b>');
	$('#hourExp').html('<font color="blue"><b>' + hourExp.toFixed(2) + '</b></font>');
}

function timeAdd(hh,mm,t){  //時間相加
  //hh:上一階段完成時間(小時)
  //mm:上一階段完成時間(分)
  //t:目前這一階段完成所需時間(已包含施肥)
  var result = {};
  var h = parseInt(t);
  var m = parseInt((parseFloat(t) - parseInt(t)) * 60);
  result.hh = ((hh + h) + (((mm+m)>=60)?1:0)) % 24;
  result.mm = (mm + m) % 60;
  
  return result;
}

function setFert(x){  //設定使用肥料
	ferts[x] = $('#fert_' + x).val();

	var color = ['black', '#808030', 'blue', 'red'];
	$('#fert_' + x).css({'color' : color[fertType(ferts[x])]});

}

function setSameFerts(x){ //設定相同的使用肥料
	var plant = plants[$('#name').val()];
	var index;
	for(var i=0;i<=ferts.length-1;i++){
		index = i + 6;
		index = (index>12)? ((index-13)%2 + 11) : index;
		if(!isNaN(plant[index])){
			$('#fert_' + i).val(x);
			setFert(i);
		}
	}
	calc();
}

function fertType(fert){	//查詢肥料種類
	if(fert == 0) return 0;
	if(fert == 1) return 1;
	if(fert == 2.5) return 2;
	if(fert == 5.5) return 3;
}

function formatNumber(num){		//數字補0，0→00,8→08
	return (num > 9)? num : ('0' + num);
}

function formatPrice(num)	//將數值加上千分位的符號
{
	var str = num + '';
	var re = /(-?\d+)(\d{3})/
	while(re.test(str))
	{
		str = str.replace(re,'$1,$2')
	}
	return str;
}

function setCurrentTime(){	//將目前系統上的時間設定到操作畫面上
	var d = new Date();
	$('#hour').val(d.getHours());
	$('#minute').val(d.getMinutes());
	calc();
}

function reCalc(){	//將目前系統上的時間設定到操作畫面上
	$('#hour').val(startTime.hh);
	$('#minute').val(startTime.mm);
	calc();
}
