/*  ¾ÜºÙ¥Ú¡¼¥¸Ìô²ÁÈæ³Ó
 *
/*--------------------------------------------------------------------------*/

/*
 * Ìô²Á¤ÎÈæ³Ó·×»»¤ò¤¹¤ë
 * @return    object    focus¾ðÊó
 */
function comp_carc()
{
    var selected_base = $('selected_base');
    if (selected_base != null){
	base_price = selected_base.value;
    }
    
    var num = to_half_num($F('comp_num'));
    var round = to_half_num($F('comp_round'));
    var round = demicalFloat(num, round, "*");
    var rate = demicalFloat(round, $F('comp_futan'), "*");
    var base_total = demicalFloat(base_price, rate, "*");
    for(i = 0; i < hinmoku_list.length; i++){
	p = hinmoku_list[i];
	result = demicalFloat(p, rate, "*");
	$('comp_res_' + i).innerHTML = comp_format(result, base_total);
    }
}

function comp_init()
{
    comp_carc();
}

function comp_format(total_price, base_total_price)
{
    diff = demicalFloat(total_price, base_total_price, "-");
    
    result = total_price + "±ß";
    if (diff > 0){
	result = result + '(+' + diff + "±ß)";
    }else if(diff != 0){
	result = result + '(' + diff + "±ß)";
    }
    return result;
}

function valid_num(num)
{
    return true;
//     if (isNaN(num)) return true;
    
//     num = num.toString();
//     if (num == null || num == ''){
// 	return false;
//     }

//     if (num.match(/^0-9\./g)){
// 	return true;
//     }else {
// 	return false;
//     }
   
}



function to_half_num(data){
    var char1 = new Array("£±","£²","£³","£´","£µ","£¶","£·","£¸","£¹","£°", "¡¥");
    var char2 = new Array(1,2,3,4,5,6,7,8,9,0, '.');
    var count;
    while(data.match(/[£°-£¹]/)){
	for(count = 0; count < char1.length; count++){
	    data = data.replace(char1[count], char2[count]);
	}
    }
    return data;
}

function demicalFloat(numberA,numberB,type)
{

    if(!valid_num(numberA) || !valid_num(numberB)){
	return "";
    }
    var h = (type == "*")? "+" : "-";
    var c = [get(numberA), get(numberB)];
    var A = c[0][1];
    var B = c[1][1];
    var pointA = c[0][0];
    var pointB = c[1][0];
    
    if (type == "*" || type == "/")
	{
	    var k1 = eval("numberA" + type + "numberB");
	    var k2 = eval("(A" + type + "B)");
	    if (get(k1)[1] == k2) return k1;
	    else return (pointA + pointB == 0? k1 : eval(k2 + "/Math.pow(10, pointA" + h + "pointB)"));
	}
    else if (type == "+" || type == "-")
	{
	    var pointL = pointA;
	    if (pointA < pointB) pointL = pointB;
	    numberA = demicalFloat(numberA, Math.pow(10, pointL), "*");
	    numberB = demicalFloat(numberB, Math.pow(10, pointL), "*");
	    return eval("numberA" + type + "numberB") / Math.pow(10, pointL);
	}
    else return ""
}

function get(number)
{
    number = number.toString();
    if (number.indexOf(".") == -1){
	return [0, eval(number)];
    }
    var po = number.split(".")[1].length;
    var st = number.split(".").join("");
    for (var i = 0; i < st.length; i++) if (st.charAt(0) == "0") st = st.substr(1, st.length);
    return [po, eval(st)];
}



