function getAmt1 (form, button, v_type) {

    

    if (!c_num(form.v_amt)) return;

    if (!c_num(form.v_rate)) return;

    if (form.v_per.value != null) {

        if (!c_num(form.v_per)) return;    

    }
    


    v_amt = form.v_amt.value;

    v_rate = form.v_rate.value / 100;

    if (form.v_per.value != null) {

        v_per = form.v_per.value;       

    }

    else{

        v_per = form.v_per.options[form.v_per.selectedIndex].value;

    }



    if (v_type == "getPV"){

        v_rate = v_rate / 12;

        v_per = v_per * 12;

        v_amt1 = (v_amt * (Math.pow((1 + v_rate), v_per) - 1)) / (v_rate * Math.pow((1 + v_rate), v_per));

    }

    else if (v_type == "getAmt"){

        v_rate = v_rate / 12;

        v_per = v_per * 12;

        v_amt1 = (v_amt * v_rate * Math.pow((1 + v_rate), v_per)) / (Math.pow((1 + v_rate), v_per) - 1);    

    }

    else if (v_type == "getTPV"){

        v_amt1 = (v_amt * v_per) / (1 + (v_rate * v_per));

    }

    else if (v_type == "getTAmt"){

        v_amt1 = v_amt * (1 + v_rate * v_per) / v_per;

    }

    else if (v_type == "getZPV"){

        v_amt1 = v_amt * 12 * (Math.pow((1 + v_rate), v_per) - 1) / v_rate * (24 + (13 * v_rate)) / 24;

    }

    else if (v_type == "getZAmt"){

        v_amt1 = v_amt / 12 / (Math.pow((1 + v_rate), v_per) - 1) * v_rate / (24 + (13 * v_rate)) * 24;

    }



    v_amt1 = round(v_amt1, 2);

    form.v_amt1.value = v_amt1;

    return;

}



function c_num(text) {

    // Ctrl = form.v_amt;

    if (isNaN (parseInt(text.value))) {

        validatePrompt (text, "ERROR: Please input a number!");

        return (false);

    }

    else

        return (true);

}



function validatePrompt (Ctrl, PromptStr) {

    alert (PromptStr)

    Ctrl.focus();

    return;

}



function round(v_num, v_dec){

    return Math.round(v_num * Math.pow(10, v_dec)) / Math.pow(10, v_dec)

}



function formatDecimalNumber(x, dec) {

    x = round(x, dec);

    return formatNumber(x);

}



function formatNumber(x){

    x = String(x);

    var idx = x.indexOf(".");

    var head, tail;

   

    if (idx > -1) {

        head = String(x.substring(0,idx));

        tail = "."+String(x.substring(idx+1, x.length));

    } else {

        head = x;

        tail = String("");

    }



    var neval = String()

    var i = 0

    for (var ct = (head.length-1) ; ct >= 0 ; ct --)

    {

        if (((i%3) == 0) && (i != 0))

            neval += String(",")

        neval += String(head.substring(ct,ct+1))

        i++

    }



    head = new String("")

    for (var ca = (neval.length-1) ; ca >= 0 ; ca --)

        head += neval.substring(ca,ca+1)



    return (head+tail)

}



function chg_per(v_per, v_type) {

    var v_len = v_per.length - 1; 

    

    if (v_type.value != "HK" && v_per.options[0].value == 1){

        for (i=0; i<=v_len-1; i++){

            v_per.options[i].value = v_per.options[i+1].value;

            v_per.options[i].text = v_per.options[i+1].text;

        }

        v_per.options[i].value = "";

        v_per.options[i].text = "";

        v_per.length = i;

    }

    else if (v_type.value == "HK"){

        v_len = v_len + 1;

        v_per.length = v_len + 1;

        for (i=v_len; i>0; i--){

            v_per.options[i].value = v_per.options[i-1].value;

            v_per.options[i].text = v_per.options[i-1].text;

        }

        v_per.options[0].value = 1;
		v_per.options[0].text = "1 天";
    }

}



function getPrn (form, button) {

    if (!c_num(form.v_amt)) return;

    if (!c_num(form.v_rate)) return;

    if (form.v_per.value != null) {

        if (!c_num(form.v_per)) return;

    }



    // 365-day for HKD and GBP; 360-day for other else

    v_day = 360;



    v_amt = form.v_amt.value;

    v_rate = form.v_rate.value / 100;

    if (form.v_per.value != null) {

        v_per = form.v_per.value;       

    }

    else{

        v_per = form.v_per.options[form.v_per.selectedIndex].value;

    }

    v_amt1 = v_amt * v_rate * v_per / v_day;

    

    // Different rounding for different currencies

    if (form.v_type.value == "HK"){

        v_amt1 = round(v_amt1, 1);

    }

    else if (form.v_type.value == "JP" || form.v_type.value == "IT"){

        v_amt1 = round(v_amt1, 0);

    }

    else {

        v_amt1 = round(v_amt1, 2);

    }



    form.v_amt1.value = v_amt1;

    return;

}
var url="https://eb.bankcomm.com.hk/eb/";
function pv(rate, nper, pmt, fv, per){
nper = parseFloat(nper);
pmt = parseFloat(pmt);
fv = parseFloat(fv);
rate = eval((rate)/(per * 100));
//if (( pmt == 0 ) || ( nper == 0 )) {
//alert("Why do you want to test me with zeros?");
//return(0);
//}
if ( rate == 0 ){ // Interest rate is 0
pv_value = (fv + (pmt * nper));
}
else {
x = Math.pow(1 + rate, -nper);
y = Math.pow(1+rate, nper);
pv_value =  (pmt*(1+rate)*(1-y))/(rate*y)
}
//pv_value = conv_number(pv_value,2); 
return (pv_value);
}

function pmt(rate,nper,pv,fv,per){
fv = parseFloat(fv);
nper = parseFloat(nper);
pv = parseFloat(pv);
per = parseFloat(per);
rate = eval((rate)/(per * 100));
if ( rate == 0 ) // Interest rate is 0
{
pmt_value =  (fv + pv)/nper;
}
else {
x = Math.pow(1 + rate,nper);
pmt_value = (rate*(fv+pv*x))/((1+rate)*(1-x));
}
//pmt_value = conv_number(pmt_value,2); 
return (pmt_value);
}

function conv_number(expr, decplaces) { // This function is from David Goodman's Javascript Bible. 
var str = "" + Math.round(eval(expr) * Math.pow(10,decplaces));
while (str.length <= decplaces) {
str = "0" + str;
}
var decpoint = str.length - decplaces;
return (str.substring(0,decpoint) + "." + str.substring(decpoint,str.length));
}
function creatStr(){
var Elements = document.getElementsByTagName("input");

       var str="";
        for ( var i=0; i<Elements.length;i++) {
          if ( Elements[i].type == "text" ) {
          if(Elements[i].id!=null){
          if(document.getElementById(Elements[i].id).value==null)
            document.getElementById(Elements[i].id).value="";
           str+=document.getElementById(Elements[i].id).value+";";
                }
            }
          }
          var ElementSs = document.getElementsByTagName("select");
          if(ElementSs.length>0){
          for (var j=0; j<ElementSs.length;j++) {
          if(ElementSs[j].id!=null&& ElementSs[j].id!=""){
          if(document.getElementById(ElementSs[j].id).value==null)
            document.getElementById(ElementSs[j].id).value="";
           str+=document.getElementById(ElementSs[j].id).value+";";
               }
            }
         }
        return str;
}

function validateFeild(){
var Elements = document.getElementsByTagName("input");
var patrn=/^[+]?[0-9]{1,8}$|^[+]?[0-9]{1,8}\.[0-9]{1,2}$/;
for ( var i=0; i<Elements.length;i++) {
          if ( Elements[i].type == "text"&& Elements[i].readOnly==false) {
          if(isEmpty(document.getElementById(Elements[i].id),"TEXT")){
                onErrorAlert(document.getElementById(Elements[i].id),"請輸入"+map.get(Elements[i].id)+"欄位!");
                    return false;
            }
          if(document.getElementById(Elements[i].id).value==null)
            document.getElementById(Elements[i].id).value="";
          if(!patrn.exec(document.getElementById(Elements[i].id).value)){
            onErrorAlert(document.getElementById(Elements[i].id),"請輸入有效值!");
            return false;
            }
           }
       }

return true;
}

