/*
 * common.js
 *
 * @author juice
 * $Id$
 */
var mem = -3;
var fold = true;
function onPush(num) {
    var digit = document.getElementById("digit");
    var el = document.getElementById('display');
    var v = el.textContent;
    var str = "";
    if (num > -1) {
        if (v == "#") {
            v = "";
        }
        //if (v.length > 9) {
        if (v.length > 12) {
            return;
        }
        if ((v.length + num.length) > 12) {
            return;
        }
        str = v + num;
    }
    else if (num == -1) { // clear
		document.getElementById('result').style.display = "none";
		document.getElementById('clear2').style.display = "none";
        setTimeout(function() { window.scrollTo(0, 1); }, 10);
        str = "#";
    }
    else if (num == -2) { // BS
        if (v.length < 2) {
            str = "#";
        }
        else {
            str = v.substr(0, v.length - 1);
        }
    }
	else if (num == -3) { // Mem
		if (v != "#") {
			mem = v;
			alert(v);
			str = v
		}
		else {
			return;
		}
	}
	else if (num == -4) { // Call
	   if (mem > -1) {
		   onPush(mem);
		   return;
	   }
	   else {
		   return;
	   }
	}
    else if (num == -5) { // *
        var y = 1;
        var cl = "#393";
        if (fold) {
            y = 85;
            cl = "#39c";
        }
        fold = !fold;
        setTimeout(function() { window.scrollTo(0, y); }, 10);
        document.getElementById('sc').style.background = cl;
        return;
    }
	else {
		return;
	}
    digit.textContent = str.length
    el.innerHTML = str;
 }

function onExec() {
    var asin = document.getElementById('display');
    if (asin.textContent == "#" || asin.textContent.length < 8) {
        alert('input ISBN');
        return;
    }
    var genre = null;
    var itemid = asin.textContent;
    if (itemid.length < 10) {
        itemid = checkDigit(itemid);
    }
    else if (itemid.length > 9 && itemid.length < 13) {
        itemid = checkDigitMod(itemid);
        genre = 'All';
    }
    else {
        genre = 'All';
    }

    var req = new XMLHttpRequest();

	var btn = document.getElementById('clear2');
    var el = document.getElementById('result');
    el.style.display = "block";
	var cn = document.getElementById('msg');

    if (genre == null) {
	    req.open('GET', '/' + itemid, true);
    }
    else {
	    req.open('GET', '/' + genre + '/' + itemid, true);
    }
	cn.innerHTML = '<img src="/image/loading.gif" />';
	req.onload = function () {
		cn.innerHTML = req.responseText;
		btn.style.display = "block";
	};
	req.onerror = function() {
		cn.innerHTML = req.status + ": Error loading page";
		btn.style.display = "block";
    };
    req.send(null);
}

function checkDigit(str) {
	if (str.length == 10) {
		str = str.substr(0, 9);
	}
	else if (str.length == 8) {
        str = "4" + str;
    }
    var sum = 0;
    var checksum = 0;
    for (var i = 0; i < 9; i++) {
        sum += (str[i]) * (i + 1);
    }
    checksum = sum % 11;
    if (checksum == 10) {
        str = str + "X";
    }
    else {
        str = str + checksum;
    }
    return str;
}

function checkDigitMod(jan) {
    if (jan.length == 13) {
        jan = jan.substr(0, 12);
    }
    else if (jan.length == 11) {
        jan = "4" + jan;
    }
    else if (jan.length == 10) {
        jan = "49" + jan;
    }

    var sum1 = 0;
    var sum2 = 0;
    for (var i = 1; i < 12; i += 2) {
        sum1 += parseInt(jan[i]);
    }

    for (var j = 0; j < 12; j += 2) {
        sum2 += parseInt(jan[j]);
    }

    sum3 = (sum1 * 3) + sum2;
    tmp = String(sum3);
    cd = parseInt(tmp.charAt(tmp.length - 1));

    if (cd != 0) {
        cd = 10 - cd;
    }

    return jan.substr(0, 12) + cd;
}


