var Signs = [
{sign:'牡羊座',	name:'牡羊座 (3/21-4/19)'},
{sign:'牡牛座',	name:'牡牛座 (4/20-5/20)'},
{sign:'双子座',	name:'双子座 (5/21-6/21)'},
{sign:'蟹座',		name:'蟹座 (6/22-7/22)'},
{sign:'獅子座',	name:'獅子座 (7/23-8/22)'},
{sign:'乙女座',	name:'乙女座 (8/23-9/22)'},
{sign:'天秤座',	name:'天秤座 (9/23-10/23)'},
{sign:'蠍座',		name:'蠍座 (10/24-11/21)'},
{sign:'射手座',	name:'射手座 (11/22-12/21)'},
{sign:'山羊座',	name:'山羊座 (12/22-1/19)'},
{sign:'水瓶座',	name:'水瓶座 (1/20-2/18)'},
{sign:'魚座',		name:'魚座 (2/19-3/20)'}
];
var WeekNames = ['日', '月', '火','水','木','金','土'];
/* 色のコードはWikipediaを参照 */
var Colors = {
	'アイボリー':'#F3ECD8',
	'イエロー':'#FFD400',
	'オレンジ':'#EF810F',
	'グリーン':'#008000',
	'グレー':'#808080',
	'ゴールド':'#FFD700',
	'シルバー':'#C0C0C0',
	'スカイブルー':'#AFDFE4',
	'パープル':'#A757A8',
	'ピンク':'#F8ABA6',
	'ブラウン':'#994C00',
	'ブラック':'#000000',
	'ブルー':'#009AD6',
	'ラベンダー':'#DFA0D2',
	'レッド':'#ED1A3D',
	'ホワイト':'#ffffff'
};
var gAmazonKeywords = '';
var gAmazonItems = [];
var gAmazonMaps = [];

var gHoroscope;
function callbackFortune(data){
	gHoroscope = data ? data['horoscope'] : null;
}

function fortune(){
	var html = '';
	if (!gHoroscope || !gHoroscope[INFO.year+'/'+fillZero(INFO.month)+'/01']){
		html += '<p>[ データ読み込みエラー ]</p>';
		html += '<p>※サーバーが混雑している可能性がある為、再度時間を置いてアクセスしてください。</p>';
		html += '<p>※過去か未来の月度にアクセスした場合もこのエラーが出力されます。</p>';
		$('horoscope').innerHTML = html;
		$('kokoku').style.display = '';
		return;
	}
	
	var d = new Date(INFO.today);
	html+='<h2>[ '+((d.getMonth()+1) == INFO.month ? '今月' : '翌月')+'の'+INFO.sign+'の運勢（'+INFO.year+'年'+INFO.month+'月） ]</h2>';
	html += '<p>総：総運　金：金運　仕：仕事運　恋：恋愛運　（☆ &gt; ◎ &gt; ○ &gt; △ &gt; ×）　アイテム：ラッキーアイテム　色：ラッキーカラー</p>';
	html += '<table>';
	html += '<tr>';
	html += '<th style="border-bottom:2px solid black;">日</th>';
	html += '<th style="border-bottom:2px solid black;border-right:2px solid black;">曜</th>';
	html += '<th style="border-bottom:2px solid black;">総</th>';
	html += '<th style="border-bottom:2px solid black;">金</th>';
	html += '<th style="border-bottom:2px solid black;">仕</th>';
	html += '<th style="border-bottom:2px solid black;">恋</th>';
	html += '<th style="border-bottom:2px solid black;">運　勢</th>';
	html += '<th style="border-bottom:2px solid black;">アイテム</th>';
	html += '<th style="border-bottom:2px solid black;">色</th>';
	html += '<th style="border-bottom:2px solid black;">順</th>';
	html += '</tr>';
	for (var i = 1; gHoroscope[INFO.year+'/'+fillZero(INFO.month)+'/'+fillZero(i)]; i++){
		var day = gHoroscope[INFO.year+'/'+fillZero(INFO.month)+'/'+fillZero(i)];
		var date = new Date(INFO.year+'/'+INFO.month+'/'+fillZero(i));
		for (var j = 0, len = day.length; j < len; j++){
			if (day[j]['sign'] == INFO.sign){
				if (i == 16){
					html += '<tr>';
					html += '<th style="border-top:2px solid black;border-bottom:2px solid black;">日</th>';
					html += '<th style="border-top:2px solid black;border-bottom:2px solid black;border-right:2px solid black;">曜</th>';
					html += '<th style="border-top:2px solid black;border-bottom:2px solid black;">総</th>';
					html += '<th style="border-top:2px solid black;border-bottom:2px solid black;">金</th>';
					html += '<th style="border-top:2px solid black;border-bottom:2px solid black;">仕</th>';
					html += '<th style="border-top:2px solid black;border-bottom:2px solid black;">恋</th>';
					html += '<th style="border-top:2px solid black;border-bottom:2px solid black;">運　勢</th>';
					html += '<th style="border-top:2px solid black;border-bottom:2px solid black;">アイテム</th>';
					html += '<th style="border-top:2px solid black;border-bottom:2px solid black;">色</th>';
					html += '<th style="border-top:2px solid black;border-bottom:2px solid black;">順</th>';
					html += '</tr>';
				}
				if (INFO.year+'/'+fillZero(INFO.month)+'/'+fillZero(i) == INFO.today){
					html += '<tr class="today">';
				}else{
					switch(date.getDay()){
					case 0:
					case 6:
						html += '<tr class="holiday">';
						break;
					default:
						html += '<tr>';
					}
				}
				html += '<td style="text-align:right;">';
				html += i;
				html += '</td>';
				html += '<td class="day'+date.getDay()+'" style="border-right:2px solid black;">';
				html += WeekNames[date.getDay()];
				html += '</td>';
				html += '<td style="text-align:center;">';
				html += star(day[j]['total']);
				html += '</td>';
				html += '<td style="text-align:center;">';
				html += star(day[j]['money']);
				html += '</td>';
				html += '<td style="text-align:center;">';
				html += star(day[j]['job']);
				html += '</td>';
				html += '<td style="text-align:center;">';
				html += star(day[j]['love']);
				html += '</td>';
				html += '<td>';
				html += day[j]['content'];
				html += '</td>';
				html += '<td>';
				html += '<a href="http://keyrepo.amonya.com/report/'+encodeURIComponent(day[j]['item'])+'" target="_blank">'+day[j]['item']+'</a>';
				html += '</td>';
				html += '<td>';
				html += '<span style="font-size:14px;color:'+Colors[day[j]['color']]+';" title="'+day[j]['color']+'">■</span>';
				html += '</td>';
				html += '<td style="text-align:center;white-space:nowrap;">';
				html += day[j]['rank'];
				html += '</td>';
				html += '</tr>';
			}
		}
	}
	html += '<tr>';
	html += '<th style="border-top:2px solid black;">日</th>';
	html += '<th style="border-top:2px solid black;border-right:2px solid black;">曜</th>';
	html += '<th style="border-top:2px solid black;">総</th>';
	html += '<th style="border-top:2px solid black;">金</th>';
	html += '<th style="border-top:2px solid black;">仕</th>';
	html += '<th style="border-top:2px solid black;">恋</th>';
	html += '<th style="border-top:2px solid black;">運　勢</th>';
	html += '<th style="border-top:2px solid black;">アイテム</th>';
	html += '<th style="border-top:2px solid black;">色</th>';
	html += '<th style="border-top:2px solid black;">順</th>';
	html += '</tr>';
	html += '</table>';
	html += '<p>総：総運　金：金運　仕：仕事運　恋：恋愛運　（☆ &gt; ◎ &gt; ○ &gt; △ &gt; ×）　アイテム：ラッキーアイテム　色：ラッキーカラー</p>';
	html += '<p class="credit">';
	html += 'powerd by <a href="http://jugemkey.jp/api/waf/api_free.php" target="_blank">JugemKey</a>';
	html += '&nbsp;&nbsp;【PR】<a href="http://jugemkey.jp/horoscope/" target="_blank">占いメール鑑定はこちら</a>';
	html += '</p>';
	
	$('horoscope').innerHTML += html;
	if ($('kokoku')){
		$('kokoku').style.display = '';
	}
}

function fillZero(num){
	return (num < 10) ? '0'+num : num;
}

function star(num){
	switch(num){
	case 1:
		return '×';
	case 2:
		return '△';
	case 3:
		return '○';
	case 4:
		return '◎';
	case 5:
		return '☆';
	default:
		return '○';
	}
}


function request(url, params, complete, id){
	new Ajax.Request(url, {
		method:'get',
		parameters: params,
		onComplete: function(req){
			complete(req, id);
		},
		onFailure: function(req){
//			alert(req.responseText);
		},
		onException: function(req, e){
			alert(id+':'+e.name + ':' + e.message);
		}
	});
}

function searchAmazon(keywords){
	if (!keywords){return;}
	$('amazon_d').innerHTML = '';
	var key = keywords.replace(/ /g, '　');
	
	gAmazonItems = [];
	request('http://www.amonya.com/php/itemsearch2', $H({
		SearchIndex: 'Blended',
		Keywords: encodeURIComponent(keywords),
		ResponseGroup: 'Medium',
		save: 'true'
	}).toQueryString(), resultAmazon, 'amazon');
	return false;
}


function resultAmazon(req, id){
	var xdom = new XDOM(req);
	if(!xdom.xpath('//Items/TotalResults').text()){
		$('amazon').style.display = 'none';
		$('amazon_d').innerHTML = '';
		return;
	}
	var mapnodes = xdom.xpath('//Items/SearchResultsMap/SearchIndex');
	for (var i = 0, len = mapnodes.length(); i < len; i++){
		var node = mapnodes.self(i);
		var index = node.xpath('IndexName').text();
		var asin = node.xpath('ASIN').text();
		var rank = node.xpath('RelevanceRank').text();
		asin = (asin instanceof Array) ? asin : [asin];
		
		if (index != 'VHS' && index != 'Music'){
			gAmazonMaps.push({searchIndex: index, asin: asin, rank: rank});
		}
	}
	gAmazonMaps.sort(function(a, b){return a.rank - b.rank;});
	
	gAmazonItems = xdom.xpath('//Items/Item');
	outputAmazon();
	return false;
}

function outputAmazon(){
	var imageSize = 120;
	$('amazon_d').innerHTML = '';
	var div = Builder.node('div', {className: 'item', style: 'padding-top:5px;'});
	div.appendChild(Builder.node('h2', {style:'color:#aa0000;font-size:1.4em;margin-bottom:15px;'}, '[ Amazon.co.jp ]'));
	for (var i = 0, len = gAmazonMaps.length;i < len && i < 3; i++){
		for (var j = 0, len2 = gAmazonMaps[i].asin.length; j < len2 && j < 3; j++){
			var item = gAmazonItems.xpath('.[ASIN="'+gAmazonMaps[i].asin[j]+'"]');
			
			var asin = item.xpath('ASIN').text();
			
			var attr = item.xpath('ItemAttributes');
			var title = attr.xpath('Title').text();
			var group = attr.xpath('ProductGroup').text();
			var releaseDate = attr.xpath('ReleaseDate').text();
			var listPriceAmount = attr.xpath('ListPrice/Amount').text();
			var listPriceFormatted = attr.xpath('ListPrice/FormattedPrice').text();
			var adultFlag = (attr.xpath('IsAdultProduct').text() == 1) ? true : false;
			
			var imgnode = item.xpath('ImageSets/ImageSet/MediumImage/URL');
			if (imgnode && imgnode.text()){
				var src = (imgnode.length() > 1) ? imgnode.self(0).text() : imgnode.text();
				src = src.replace(/_\.jpg$/, '.jpg');
				src = src.replace(/\.jpg$/, '._AA'+imageSize+'_.jpg');
			}else{
				var src = 'http://g-ec2.images-amazon.com/images/G/09/x-site/icons/no-img-sm._V45728306_AA'+imageSize+'_.gif';
			}
			src = adultFlag ? 'http://g-ec2.images-amazon.com/images/G/09/nav2/dp/warning-adult-item._V45731073_AA110_.gif' : src;
			var url = ECS.getURL(asin, 'amonya-22');
			
			var priceNode = item.xpath('OfferSummary/LowestNewPrice');
			if (priceNode.length() > 0){
				var newPriceAmount = priceNode.xpath('Amount').text();
				var newPriceFormatted = priceNode.xpath('FormattedPrice').text();
			}
			if (j == 0){
				var img = Builder.node('img', {src: src, alt: title, title: title, style:'width:'+imageSize+'px;height:'+imageSize+'px;'});
				var a = Builder.node('a', {href: url,target:'_blank'}, [img]);
				div.appendChild(a);
				div.appendChild(Builder.node('p', {style: 'margin-top:2px;margin-bottom:15px;'}, [Builder.node('a', {href: url,target:'_blank'}, [title])]));
			}
		}
	}
	var url = 'http://www.amazon.co.jp/gp/search?ie=UTF8&tag=amonya-22&index=blended&linkCode=ur2&camp=247&creative=1211&keywords='+encodeURIComponent(gAmazonKeywords);
	var a = Builder.node('a', {href: url,target:'_blank'}, ['→「'+gAmazonKeywords+'」でもっと探す']);
	div.appendChild(Builder.node('p', {style:'text-align:right;margin-top:20px;font-weight:bold;'}, [a]));
	$('amazon_d').appendChild(div);
	$('amazon_d').appendChild(Builder.node('div', {style:'clear:both;'}));
	
	return false;
}

function setIndex(){
	var html = '';
	var d = new Date(INFO.today);
	var next = (d.getMonth()+1) != INFO.month;
	
	html+='<h2>[ '+(next ? '翌月' : '今月')+'の運勢('+INFO.year+'/'+INFO.month+') ]</h2>';
	for (var i = 0,len=Signs.length; i < len; i++){
		if (INFO.sign == Signs[i].sign){
			html+='<p style="font-weight:bold;color:#333333;"><img src="http://www.amonya.com/image/ya013.gif" style="width:8px;height:10px;" /> '+Signs[i].name+'</p>';
		}else{
			html+='<p><img src="http://www.amonya.com/image/ya013.gif" style="width:8px;height:10px;" /> <a href="http://www.amonya.com/fortune/month/'+encodeURIComponent(Signs[i].sign)+'/'+(next ? 'nm/' : '')+'">'+Signs[i].name+'</a></p>';
		}
	}
	$('index').innerHTML = html;
	$('index').style.display = '';
}

function setIndex2(){
	var html = '';
	html+='<h2>[ 今日と明日の運勢 ]</h2>';
	for (var i = 0,len=Signs.length; i < len; i++){
		if (INFO.sign == Signs[i].sign){
			html+='<p style="font-weight:bold;"><img src="http://www.amonya.com/image/ya013.gif" style="width:8px;height:10px;" /> <a href="http://www.amonya.com/fortune/day/'+encodeURIComponent(Signs[i].sign)+'/">'+Signs[i].name+'</a></p>';
		}else{
			html+='<p><img src="http://www.amonya.com/image/ya013.gif" style="width:8px;height:10px;" /> <a href="http://www.amonya.com/fortune/day/'+encodeURIComponent(Signs[i].sign)+'/">'+Signs[i].name+'</a></p>';
		}
	}
	$('index2').innerHTML = html;
	$('index2').style.display = '';
}

function setIndex3(){
	$('index3').style.display = '';
}

function setIndex4(){
	$('index4').style.display = '';
}

Event.observe(window, 'load', function(){
	setIndex();
	setIndex2();
	setIndex3();
	setIndex4();
	fortune();
	var keywords = [
		INFO.sign,
		'占い',
		'風水'
	];
	gAmazonKeywords = keywords[Math.floor(Math.random()*keywords.length)];
	searchAmazon(gAmazonKeywords);
});

