// site home url
var home = './';

var XMLHTTP_LOAD_COMPLETE = 4;
var XMLHTTP_HTTP_STATUS = 200;
var MSXMLHTTP = false;

var aws = createXmlHttp();
var gwa = createXmlHttp();
var rss = createXmlHttp();

var cursor = 0;
var tag = '';
var bookmark = getCookie('BOOKMARK');
var rssCur = -1;
var lastMode;
var lastKey;
var lastPage;

var adMessage = '';
function createXmlHttp() {
    var xmlhttp;
    try {
	xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
	MSXMLHTTP = true;
    } catch (e) {
	try {
	    xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
	    MSXMLHTTP = true;
	} catch (E) {
	    xmlhttp = false;
	}
    }
    if (!xmlhttp && typeof XMLHttpRequest != 'undefined') {
	xmlhttp = new XMLHttpRequest();
    }
    return xmlhttp;
}

function awsRequest(mode, key, page, tag) {
    var requrl = home + '/aws.cgi?page='+page+'&keyword='+key+'&mode='+mode+'&tag='+tag;
    xmlHttpDo( aws, requrl, mode );
    lastMode = mode;
    lastKey = key;
    lastPage = page;
}

function gwaRequest(mode, key, page) {
    var requrl = home + '/gwa.cgi?page='+page+'&keyword='+key+'&mode='+mode;
    xmlHttpDo( gwa, requrl, mode );
}

function rssRequest(page) {
    var requrl = home + '/rss.cgi?page='+page+'&tag='+tag;
    xmlHttpDo( rss, requrl, 'rss' );
}

function xmlHttpDo(xmlhttp,requrl, mode) {
    var progress  = document.getElementById('progress');
    try {
	xmlhttp.open("GET", requrl, true);
	xmlhttp.onreadystatechange = function () {
	    progress.innerHTML = '<img src="image/progress.gif" />';
	    progress.style.display = 'block';
	    if (xmlhttp.readyState == XMLHTTP_LOAD_COMPLETE) {
		var count = resultOutput(xmlhttp, mode, 0);
		if (count > 0) {
		    progress.innerHTML = '<br />'+count;
		    progress.style.color = '#000000';
		} else {
		    progress.innerHTML = '<br />0';
		    progress.style.color = '#ff9090';
		}
	    }
	}
	xmlhttp.send(null);
    } catch (e) {
	progress.innerHTML = e;
	progress.style.display = 'block';
    }
}

function resultOutput(xmlhttp, mode, no) {
    var target;
    var count = 0;
    var output = '';
    var root = xmlhttp.responseXML.documentElement;

    if( root ){
	var count2 = root.getElementsByTagName('count')[0].firstChild;
	if(count2 && count2.nodeValue > 0){
	    count = count2.nodeValue;
	}
    }

    if( mode == 'link1' || mode == 'link2' ){
	target = 'review';
	if(count){
	    output = gwaOutput(root, mode);
	}
    }else if (mode == 'rss'){
	target = 'review';
	if(count){
	    output = rssOutput(root);
	}
    }else{
	target = 'showWindow';
	if( count ){
	    output = awsOutput(root, mode, no);
	    asinOutput(no);
	}else{
	    asinOutput(-1);
	}
    }
    var resultBox = document.getElementById(target);

    output += adMessage;
    resultBox.innerHTML = output;
    resultBox.style.display = 'block';
    return count;
}

function awsOutput( root, mode, no ){
    var items = root.getElementsByTagName('item');
    var image = '';
    var output = '';
    var url = '';
	
    setCookie("KEY_LOG",document.search.keyword.value,"set");
    var key = getValue( root, 'key' );
    var page = eval(getValue( root, 'page' ));
    var maxpage = eval(getValue( root, 'maxpage' ));
    var s = Math.floor(no/10)*10;

    if(s > 1){
        output += '<div id="arrow"><img src="image/left.gif" alt="<<" onclick="resultOutput(aws,\''+mode+'\','+(s-10)+'); return false;" /></div>';
    }else if(page > 1){
	output += '<div id="arrow"><img src="image/left.gif" alt="<<" onclick="awsRequest(\''+mode+'\', \''+encodeURI(key)+'\','+(page-1)+',\''+tag+'\'); return false;" /></div>';
    }else{
	output += '<div id="arrow"><img src="image/null.gif" alt="<<" /></div>';
    }
    for (var i = s; i < items.length && i < s+10; i++) {
	image = getValue( items[i], 'images' );
	name = getValue( items[i], 'name' );
	url = getValue( items[i], 'url' );
	if( image == ""){
	  image = "http://ec1.images-amazon.com/images/G/09/nav2/dp/no-image-no-ciu._V67078566_AA75_.gif";
	}
	output += '<div id="imgList" onmouseover="asinOutput('+i+')" onclick="window.open(\''+url+'\',\'_blank\')"><img src="'+image+'" title="'+name+'" onload="replaceImage(this);"></div>';
    }
    if( s+10 < items.length){
	output += '<div id="arrow"><img src="image/right.gif" alt=">>" onclick="resultOutput(aws,\''+mode+'\','+(s+10)+'); return false;" /></div>';
    }else if(page < maxpage){
	var next = page+1;
	output += '<div id="arrow"><img src="image/right.gif" alt=">>" onclick="awsRequest(\''+mode+'\',\''+encodeURI(key)+'\','+(page+1)+',\''+tag+'\'); return false;" /></div>';
    }else{
	output += '<div id="arrow"><img src="image/null.gif" alt=">>" /></div>';
    }
    
    return output;
}

function asinOutput(no) {
    var resultbox2 = document.getElementById('item');
    var resultbox3 = document.getElementById('menu');
    var resultbox4 = document.getElementById('detail');
    var resultbox5 = document.getElementById('review');

    if( no == -1 ){
	resultbox2.innerHTML = "";
	resultbox2.style.display = 'none';
	resultbox3.innerHTML = "";
	resultbox3.style.display = 'none';
	resultbox4.innerHTML = "";
	resultbox4.style.display = 'none';
	resultbox5.innerHTML = "";
	resultbox5.style.display = 'none';
	return false;
    }

    var root = aws.responseXML.documentElement;

    var items = root.getElementsByTagName('item');
    var asin = getValue( items[no], 'asin' );
    var title = getValue( items[no], 'name' );
    var image = getValue( items[no], 'imagem' );
    var url = getValue( items[no], 'url' );
    var item = getValue( items[no], 'desc' );

    var list = items[no].getElementsByTagName('list')[0];
    var detail = items[no].getElementsByTagName('detail')[0];
    var review = items[no].getElementsByTagName('review')[0];

    var output2 = '<a href="'+url+'" target="_blank"><img src="'+image+'" alt="'+title+'" onload="replaceImage(this)"></a>';
    output2 += '<a href="'+url+'" target="_blank"><div id="productName">'+title+'</div></a>';
    if( bookmark.indexOf(asin,0) >= 0){
    	output2 += '<button type="button" onclick="setCookie(\'BOOKMARK\',\''+asin+'\',\'del\');bookmark = getCookie(\'BOOKMARK\');">ClipDel</button>';
    }else{
    	output2 += '<button type="button" onclick="setCookie(\'BOOKMARK\',\''+asin+'\',\'set\');bookmark = getCookie(\'BOOKMARK\');">ClipIt!</button>';
    }
    output2 += '<button type="button" onclick="window.open(\''+url+'\',\'_blank\')">Amazon.co.jp</button><br />';
    //    output2 += '<button type="button" onclick="affOutput('+no+')">アフィリエイト</button>';
    output2 += item;

    var output = '<button type="button" onclick="awsRequest(\'similar\', \''+encodeURI(asin)+'\',1,\''+tag+'\'); return false;">関連商品</button>';
    if(list.firstChild){
	output += '<button onclick="awsRequest(\'list\',\''+encodeURI(list.firstChild.nodeValue)+'\',1,\''+tag+'\'); return false;">おすすめ</button>';
    }
    output += '<button type="button" onclick="gwaRequest(\'link1\',\''+encodeURI(title)+'\', 1); return false;">価格/レビュー</button>';
    output += '<button type="button" onclick="gwaRequest(\'link2\',\''+encodeURI(title)+'\', 1); return false;">くちこみ</button>';
    output += '<button type="button" onclick="window.open(\'http://www.aucfan.com/search1?d=1&o=t1&q='+encodeURI(title)+'&t=-1\',\'_blank\')">オク相場</button>';
    //    output += '<button type="button" onclick="window.open(\'http://www.aucfan.com/search1?d=1&o=t1&q='+encodeURI(title)+'&t=-1\',\'_blank\')">アフィリエイト</button>';

    resultbox2.innerHTML = output2;
    resultbox2.style.display = 'block';
    resultbox3.innerHTML = output;
    resultbox3.style.display = 'block';
    if(detail.firstChild){
	resultbox4.innerHTML = detail.firstChild.nodeValue + adMessage;
	resultbox4.style.display = 'block';
    }else{
	resultbox4.innerHTML = adMessage;
	resultbox4.style.display = 'block';
    }
    if(review.firstChild){
	resultbox5.innerHTML = review.firstChild.nodeValue + adMessage;
	resultbox5.style.display = 'block';
    }else{
	resultbox5.innerHTML = adMessage;
	resultbox5.style.display = 'block';
    }

    return true;
}

function gwaOutput(root, mode) {
    var key = getValue( root, 'key' );
    var page = eval(getValue( root, 'page' ));
    var maxpage = eval(getValue( root, 'maxpage' ));
    var output = '';

    if(page > 1){
	output += '<div id="updown" onclick="gwaRequest(\''+mode+'\',\''+encodeURI(key)+'\','+(page-1)+'); return false;">▲</div>';
    }
    var items = root.getElementsByTagName('item');
    var color = ["#FFFFFF","#EEFFFF"];
    for (var i = 0; i < items.length ; i++) {
	var name = getValue( items[i], 'name' );
	var url = getValue( items[i], 'url' );
	var urlc = getValue( items[i], 'cache' );
	var desc = getValue( items[i], 'desc' );
	output += '<div id="google" style="background-color: '+color[i % color.length]+';">■<a href="'+url+'" target="_blank">'+name+'</a><br /><div id="urlc"><a href="'+url+'" target="_blank">'+url+'</a>&nbsp;<a href="'+urlc+'" target="_blank">(キャッシュ)</a></div>'+desc+'</div>';
    }
    if(page < maxpage){
	output += '<div id="updown" onclick="gwaRequest(\''+mode+'\',\''+encodeURI(key)+'\','+(page+1)+'); return false;">▼</div>';
    }
    return output;
}

function rssOutput(root) {
    var page = eval(getValue( root, 'page' ));
    var maxpage = eval(getValue( root, 'maxpage' ));
    var output = '';

    if(page > 1){
	output += '<div id="updown" onclick="rssRequest('+(page-1)+'); return false;">▲</div>';
    }
    var items = root.getElementsByTagName('item');
    var color = ["#FFFFFF","#EEFFFF"];
    for (var i = 0; i < items.length ; i++) {
	name = getValue( items[i], 'name' );
	url = getValue( items[i], 'url' );
	date = getValue( items[i], 'date' );
	source = getValue( items[i], 'source' );
	desc = getValue( items[i], 'desc' );
		
	output += '<div id="rss" onclick="showAbstract('+i+');" style="background-color: '+color[i % color.length]+';">■<a href="'+url+'" target="_blank"><b>'+name+'"</b></a>';
	output += '<div id="abstract'+i+'">'+desc+'</div><div id="source">'+source+'&nbsp;'+date+'</div></div>';
    }

    if(page < maxpage){
	output += '<div id="updown" onclick="rssRequest('+(page+1)+'); return false;">▼</div>';
    }
    
    return output;
}

function affOutput(no) {
    var thisLink = home + "/index.cgi?mode="+lastMode+"&key="+lastKey+"&page="+lastPage+"&tag="+tag;
    var root = aws.responseXML.documentElement;
    var items = root.getElementsByTagName('item');
    var output;
    if(no){
	var asin = getValue( items[no], 'asin' );
	var title = getValue( items[no], 'name' );
	var image = getValue( items[no], 'images' );
	var url = getValue( items[no], 'url' );
	var item = getValue( items[no], 'desc' );
	output = '<div style="{width:120; height:240;}"><a href="'+url+'"<img src="'+image+'" border=0 style="{float:left;}"><b>'+title+'</b><br></a>'+item+'<br>';
	output += 'by <a href="'+thisLink+'" target="_blank">F-S-G</a></div>';
    }
    var resultbox4 = document.getElementById('detail');    
    resultbox4.innerHTML = output;
    resultbox4.style.display = 'block';
}

function replaceImage(img) {
  if (img.width == '1' && img.src.match(/\.01\./)) {
    img.src = 'image/no-image.gif';
  } else if (img.width == '1') {
    img.src = img.src.replace('.09.','.01.');
  }
}

function newKey()
{
    var prev = cursor-1;
    if( prev >= 0 ){
	if (getCache(prev)) cursor = prev;
    }
}

function oldKey()
{
    var next = cursor+1;
    if (getCache(next)) cursor = next;
}

function getCookie(key)
{
    var ckary = document.cookie.split("; ");
    var i=0;
    var ckstr = "";

    while (ckary[i]){
	if( ckary[i].substr(0,key.length+1) == key+"=" ){
	    ckstr=ckary[i].substr(key.length+1,ckary[i].length);
	    break;
	}
	i++;
    }
    
    return ckstr;
}

function getCache(n)
{
    var ckstr = getCookie("KEY_LOG");
    var ckary = ckstr.split("%00");
    
    if(ckary.length > n ){
	document.search.keyword.value = unescape(ckary[n]);
	return true;
    }else{
	return false;
    }
}

function setCookie(key,value,op)
{
    var ckary = document.cookie.split("; ");
    var i=0;
    var ckstr = "";
    var ckstr2 = escape(value);
    var exp = new Date();

    exp.setTime(exp.getTime()+1000*60*60*24*7);

    while (ckary[i]){
	if( ckary[i].substr(0,key.length+1) == key+"=" ){
	    ckstr=ckary[i].substr(key.length+1,ckary[i].length);
	    break;
	}
	i++;
    }

    ckary = ckstr.split("%00");

    i=0;
    while (ckary[i]){
	if( ckary[i] == ckstr2 ){
	    ckary.splice(i,1);
	}else{
	    i++;
	}
    }
    if(op == "set"){
	ckary.unshift(ckstr2);
    }
    ckstr = ckary.join("%00");
    if(ckstr.substr(ckstr.length-3,3) == "%00"){
	ckstr = ckstr.substr(0,ckstr.length-3);
    }
    document.cookie = key + "=" + ckstr + "; expires=" + exp.toGMTString();
    cursor = 0;
}
    
function showAbstract(n) {
    if( n == rssCur ){
	document.getElementById('abstract'+n).style.display = 'none';
	rssCur = -1;
    }else{
	if( rssCur >= 0 ){
	    document.getElementById('abstract'+rssCur).style.display = 'none';
	}
	document.getElementById('abstract'+n).style.display = 'block';
	rssCur = n;
    }
}

function getValue( node, key ){
    try{
	return node.getElementsByTagName(key)[0].firstChild.nodeValue;
    }catch (e) {
	return "";
    }
}