﻿function altretailAddEventListener(target, property, func)
{
	if (target.addEventListener) { //for W3C DOM
		target.addEventListener(property, func, false);
	} else if (target.attachEvent) { //for IE
		target.attachEvent("on" + property, func);
	}
}

function altretailCallback(ret)
{
    var retailDic = ret[0];
	var aListOrig = document.getElementsByTagName("a");
	var aList = new Array();
	for(var i = 0, len = aListOrig.length; i < len; i++)
	{
	    aList[i] = aListOrig[i];
	}

	var re = new RegExp("/ASIN/([^/]+)/", "");
	for(var i = 0, len = aList.length; i < len; i++)
	{
		var aE = aList[i];
		var isInnerHound = false;
		
		for (var pE = aE.parentNode; pE; pE = pE.parentNode)
		{
		    if (pE.id == "refererhoundhere")
		    {
		        isInnerHound = true;
		        break;
		    }
		}
		if (isInnerHound)
		    continue;

		var href = aE.getAttribute('href');
		if (href && href.indexOf('http://www.amazon.co.jp/') == 0)
		{
		    re.exec(href);
		    var asin = RegExp.$1;
		    var asinDic = retailDic[asin];
		    if (asinDic)
		    {
		        var appendHTML = "";
                for (var retail in asinDic)
                {
                    if (retail == 'Amazon')
                        continue;
                    appendHTML = appendHTML + ' <a href="' + asinDic[retail] + '" class="retail">' + retail + '</a>';
                }
                if (aE.parentNode)
                {
                    aE.parentNode.innerHTML = aE.parentNode.innerHTML + appendHTML;
                }
		    }
		}
	}
}

function altretailInsertScript(asinDic)
{
    var query = '';
    var goNext = false;
    var nextAsinDic = new Object();
    for (var asin in asinDic)
    {
        if (query.length > 200)
        {
            goNext = true;
            nextAsinDic[asin] = true;
        }
        else
            query += '&asin=' + asin;
    }
    if (query.length == 0)
        return;
    
    var head = document.getElementsByTagName('head').item(0);
    var s = document.createElement('script');
    s.setAttribute('type', 'text/javascript');
    s.setAttribute('src', 'http://jenkins.hound.jp/altRetail?cb=altretailCallback' + query);
    s.setAttribute('charset', 'UTF-8');
    head.appendChild(s);

    if (goNext)
        altretailInsertScript(nextAsinDic);
}

function altretailFindAmazonLink()
{
	var asinDic = new Object();
	var aList = document.getElementsByTagName("a");
	var re = new RegExp("/ASIN/([^/]+)/", "");
	for(var i = 0, len = aList.length; i < len; i++)
	{
		var aE = aList[i];
		var href = aE.getAttribute('href');
		if (href && href.indexOf('http://www.amazon.co.jp/') == 0)
		{
		    re.exec(href);
	        asinDic[RegExp.$1] = true;
		}
	}
    altretailInsertScript(asinDic);
}

altretailAddEventListener(window, "load", altretailFindAmazonLink);

