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 gAmazonItems = [];
var gAmazonMaps = [];

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

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

function fortune(){
	if (!gHoroscopeToday || !gHoroscopeToday[INFO.today]){
		var html = '';
		html += '<p>[ データ読み込みエラー ]</p>';
		html += '<p>※サーバーが混雑している可能性がある為、再度時間を置いてアクセスしてください。</p>';
		$('horo_today').innerHTML = html;
		$('right').style.display = '';
		return;
	}
	
	var date = new Date(INFO.today);
	$('today_content').innerHTML = '<h2 style="padding:5px;font-size:1.4em;font-weight:bold;color:#222222;">今日の'+INFO.sign+'の運勢 - '+date.getFullYear()+'年'+(date.getMonth()+1)+'月'+date.getDate()+'日'+'（'+WeekNames[date.getDay()]+'）</h2>';
	var day = gHoroscopeToday[INFO.today];
	for (var i = 0, len = day.length; i < len; i++){
		if (INFO.sign == day[i]['sign']){
			
			var html = '';
			html += '<p style="margin-top:20px;margin-bottom:15px;background-color:#ffe8e8;border:2px solid #ffaaaa;padding:10px;">'+day[i]['content']+'</p>';
			html += '<table>';
			html += '<tr>';
			html += '<td>順位</td>'
			html += '<td><a href="http://www.amonya.com/fortune/?sign='+encodeURIComponent(day[i]['sign'])+'">'+day[i]['rank']+'位</td>';
			html += '</tr>';
			html += '<tr>';
			html += '<td>ラッキーアイテム</td>';
			html += '<td><a href="http://keyrepo.amonya.com/report/'+encodeURIComponent(day[i]['item'])+'" target="_blank">'+day[i]['item']+'</a></td>';
			html += '</tr>';
			html += '<tr>';
			html += '<td>ラッキーカラー</td>';
			html += '<td>' +day[i]['color']+ ' <span style="font-size:14px;color:'+Colors[day[i]['color']]+';" title="'+day[i]['color']+'">■</span></td>';
			html += '</tr>';
			html += '</table>';
			
			$('today_right').innerHTML = html;
			var total = day[i]['total'];
			var money = day[i]['money'];
			var job = day[i]['job'];
			var love = day[i]['love'];
			$('today_left').innerHTML = getPolarHTML(total, money, job, love);
		}
	}
	
	var date = new Date(INFO.tomorrow);
	$('tomorrow_content').innerHTML = '<h2 style="font-size:1.4em;font-weight:bold;color:#222222;">明日の'+INFO.sign+'の運勢 - '+date.getFullYear()+'年'+(date.getMonth()+1)+'月'+date.getDate()+'日'+'（'+WeekNames[date.getDay()]+'）</h2>';
	var day = gHoroscopeTomorrow[INFO.tomorrow];
	for (var i = 0, len = day.length; i < len; i++){
		if (INFO.sign == day[i]['sign']){
			
			var html = '';
			html += '<p style="margin-top:20px;margin-bottom:15px;background-color:#ffe8e8;border:2px solid #ffaaaa;padding:10px;">'+day[i]['content']+'</p>';
			html += '<table>';
			html += '<tr>';
			html += '<td>順位</td>'
			html += '<td>'+day[i]['rank']+'位</td>';
			html += '</tr>';
			html += '<tr>';
			html += '<td>ラッキーアイテム</td>';
			html += '<td><a href="http://keyrepo.amonya.com/report/'+encodeURIComponent(day[i]['item'])+'" target="_blank">'+day[i]['item']+'</a></td>';
			html += '</tr>';
			html += '<tr>';
			html += '<td>ラッキーカラー</td>';
			html += '<td>' +day[i]['color']+ ' <span style="font-size:14px;color:'+Colors[day[i]['color']]+';" title="'+day[i]['color']+'">■</span></td>';
			html += '</tr>';
			html += '</table>';
			
			html += '<p class="credit" style="margin-top:15px;">';
			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>';
			
			$('tomorrow_right').innerHTML = html;
			var total = day[i]['total'];
			var money = day[i]['money'];
			var job = day[i]['job'];
			var love = day[i]['love'];
			$('tomorrow_left').innerHTML = getPolarHTML(total, money, job, love);
		}
	}
	$('right').style.display = '';
	if ($('kokoku')){
		$('kokoku').style.display = '';
	}
}

function getPolarHTML(total, money, job, love, flag){
	var url = 'http://www.amonya.com/fortune/chart.php';
	var html = '';
	html += '<iframe';
	html += ' frameborder="0"';
	html += ' src="'+url+'?';
	html += 'total='+total+'&money='+money+'&job='+job+'&love='+love+'"';
	html += ' marginwidth="0"';
	html += ' marginheight="0"';
	html += ' vspace="0"';
	html += ' hspace="0"';
	html += ' width="280px"';
	html += ' height="250px"';
	html += ' allowtransparency="true"';
	html += ' scrolling="no">';
	html += '</iframe>';
	
	return html;
}

function getSignImageTag(sign){
	switch(sign){
	case '牡牛座':
		return '<img src="./img/pc_oushi.gif" style="width:32px;height:32px;vertical-align:middle;"/>';
	case '牡羊座':
		return '<img src="./img/pc_ohitsuji.gif" style="width:32px;height:32px;vertical-align:middle;"/>';
	case '双子座':
		return '<img src="./img/pc_futago.gif" style="width:32px;height:32px;vertical-align:middle;"/>';
	case '蟹座':
		return '<img src="./img/pc_kani.gif" style="width:32px;height:32px;vertical-align:middle;"/>';
	case '獅子座':
		return '<img src="./img/pc_shishi.gif" style="width:32px;height:32px;vertical-align:middle;"/>';
	case '乙女座':
		return '<img src="./img/pc_otome.gif" style="width:32px;height:32px;vertical-align:middle;"/>';
	case '天秤座':
		return '<img src="./img/pc_tenbin.gif" style="width:32px;height:32px;vertical-align:middle;"/>';
	case '蠍座':
		return '<img src="./img/pc_sasori.gif" style="width:32px;height:32px;vertical-align:middle;"/>';
	case '射手座':
		return '<img src="./img/pc_ite.gif" style="width:32px;height:32px;vertical-align:middle;"/>';
	case '山羊座':
		return '<img src="./img/pc_yagi.gif" style="width:32px;height:32px;vertical-align:middle;"/>';
	case '水瓶座':
		return '<img src="./img/pc_mizugame.gif" style="width:32px;height:32px;vertical-align:middle;"/>';
	case '魚座':
		return '<img src="./img/pc_uo.gif" style="width:32px;height:32px;vertical-align:middle;"/>';
	default:
		return '';
	}
}

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 = 110;
	$('amazon_d').innerHTML = '';
	for (var i = 0, len = gAmazonMaps.length;i < len && i < 3; i++){
		var div = Builder.node('div', {className: 'item'});
		var h2 = Builder.node('h2', ['[ ' + gAmazonMaps[i].searchIndex + ' ]']);
		div.appendChild(h2);
		for (var j = 0, len2 = gAmazonMaps[i].asin.length; j < len2 && j < 2; 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/g, '._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-bottom:10px;'}, [Builder.node('a', {href: url,target:'_blank'}, [title])]));
			}
		}
		$('amazon_d').appendChild(div);
	}
	$('amazon_d').appendChild(Builder.node('div', {style:'clear:both;'}));
	
	return false;
}

function setIndex(){
	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;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/day/'+encodeURIComponent(Signs[i].sign)+'/">'+Signs[i].name+'</a></p>';
		}
	}
	$('index').innerHTML = html;
	$('index').style.display = '';
}

function setIndex2(){
	var html = '';
	html+='<h2>[ 今月の運勢('+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;"><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)+'/">'+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/month/'+encodeURIComponent(Signs[i].sign)+'/">'+Signs[i].name+'</a></p>';
		}
	}
	$('index2').innerHTML = html;
	$('index2').style.display = '';
}

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

Event.observe(window, 'load', function(){
	setIndex();
	setIndex2();
	setIndex3();
	fortune();
});

