var usdSale;
var rurSale;
var eurSale;

var usdPurch;
var usdPurch;
var usdPurch;

var in0;
var in10;
var in50;
var in100;
var in500;

var out0;
var out100;

	function loadSaleRates(usd, rur, eur){
	usdSale = usd;
	rurSale = rur;
	eurSale = eur;
	}
	
	function loadPurchaseRates(usd, rur, eur){
	usdPurch = usd;
	rurPurch = rur;
	eurPurch = eur;
	}
	
	function loadInputRates(in0, in10, in50, in100, in500){
	this.in0    = in0;
	this.in10   = in10;
	this.in50   = in50;
	this.in100  = in100;
	this.in500  = in500;
	}
	
	function loadOutRates(out0, out100){
	this.out0   = out0;
	this.out100 = out100;
	}
	
	function calculate(val, srcCurInit, rezCur, back){
	var srcCur = getCurrency(srcCurInit);
	rezCur = getCurrency(rezCur);
	if (!back){
		var percent = getPercentForOperation(val, srcCurInit);
		val -= percent;
	}
	
	if (srcCur != rezCur){
		if (!back){
		var uahVal = getUAHVal(val, srcCur, false);
		val = getCurValFromUAH(uahVal, rezCur, false);
		} else {
		val = getCurValFromUAH(val, rezCur, true);
		val = getUAHVal(val, srcCur, true);
		}
	}
	
	if (back){
		var percent = getPercentForOperation(val, srcCurInit);
		val = parseFloat(val) + percent;
	}
	return roundRez(val);
	}
	
	function getPercentForOperation(val, srcCur){
	
	var srcCurMain = getCurrency(srcCur);
	
	if ((srcCur == "USD") || (srcCur == "RUR") || (srcCur == "EUR") || (srcCur == "UAH")){
		return getPercentForInput(val, srcCurMain);
	} else{
		return getPercentForOutput(val, srcCurMain);
	}
	}
	
	function getPercentForInput(val, srcCur){
	var usdVal = getUSDVal(val, srcCur, false);
	if (usdVal > 1000){
		return val * in500;
	}else if (usdVal > 500 ){
		return val * in100;
	}else if (usdVal > 100){
		return val * in50;
	}else if (usdVal > 50){
		return val * in10;
	}else{
		return val * in0;
	}
	}
	
	function getPercentForOutput(val, srcCur){
	var usdVal = getUSDVal(val, srcCur, false);
		if (usdVal > 100){
		return val * out100;
	}else{
		return val * out0;
	}
	
	}
	
	function getUSDVal(val, cur){
	if (cur == "USD"){
		return val;
	} else{
		val = getUAHVal(val, cur, false);
		return val / usdPurch;
	}
	}
	
	function getCurrency(cur){
	if (cur == "WMZ"){
		return "USD";
	} else if (cur == "WMR") {
		return "RUR";
	} else if (cur == "WME"){
		return "EUR";
	} else if (cur == "WMU"){
		return "UAH";
	} else {
		return cur;
	}
	}
	
	function getUAHVal(val, cur, back){
	if (cur == "UAH"){
		return val;
	}else if (cur == "RUR"){
		if (!back){
		return val * rurPurch;
		} else {
		return val / rurPurch;
		}
	} else if (cur == "EUR"){
		if (!back){
		return val * eurPurch;
		} else {
		return val / eurPurch;
		}
	} else if (cur == "USD"){
		if (!back){
		return val * usdPurch;
		} else {
		return val / usdPurch;
		}
	}
	}
	
	function getCurValFromUAH(uahVal, rezCur, back){
	if (rezCur == "UAH"){
		return uahVal;
	} else if (rezCur == "USD"){
		if (!back){
		return uahVal / usdSale;
		} else {
		return uahVal * usdSale;
		}
	} else if (rezCur == "RUR"){
		if (!back){
		return uahVal / rurSale;
		} else {
		return uahVal * rurSale;
		}
	} else if (rezCur == "EUR"){
		if (!back){
		return uahVal / eurSale;
		} else {
		return uahVal * eurSale;   
		}
	}
	}
	
	function roundRez(val){
	return Math.round(val*100)/100
	}
	
	function changeSel(sellSel, receive, back){
            var val = sellSel.value;
            if ((val=="WMZ") || (val=="WME") || (val=="WMU") || (val=="WMR")){
                receive.length = 2;
                receive.options[0].text = "Ãðí.";
                receive.options[0].value = "UAH"
                receive.options[1].text = "USD";
                receive.options[1].value = "USD";
            } else {
                receive.length = 4;
                receive.options[0].text = "WMZ";
                receive.options[0].value = "WMZ";
                receive.options[1].text = "WME";
                receive.options[1].value = "WME";
                receive.options[2].text = "WMU";
                receive.options[2].value = "WMU";
                receive.options[3].text = "WMR";
                receive.options[3].value = "WMR";
            }
}
       
       function calcRez(srcVal, srcCur, rezVal, rezCur, back){
        if (!back){
            rezVal.value = calculate(srcVal.value, srcCur.value, rezCur.value, back);
        } else {
            srcVal.value = calculate(rezVal.value, srcCur.value, rezCur.value, back);
        }
       }
       
       function changeItem(back){
        var srcVal  = document.getElementById('sellInput');
        var srcCur  = document.getElementById('sellSel');
        var rezVar  = document.getElementById('receiveInput');
        var rezCur  = document.getElementById('receiveSel');
        
        if (!back){
            if (srcVal.value == ""){
                rezVar.value = "";
                return;
            }
            if (isNaN(parseInt(srcVal.value))){
                srcVal.value = "";
                rezVar.value = "";
                return;
            }
        } else {
           if (rezVar.value == ""){
                srcVal.value = "";
                return;
            }
            if (isNaN(parseInt(rezVar.value))){
                srcVal.value = "";
                rezVar.value = "";
                return;
            }
        }
        
        calcRez(srcVal, srcCur, rezVar, rezCur, back);
       }
       
       function changeItemOrder(back){
        var srcVal  = document.getElementById('sellInputForm');
        var srcCur  = document.getElementById('sellSelForm');
        var rezVar  = document.getElementById('receiveInputForm');
        var rezCur  = document.getElementById('receiveSelForm');
        
        if (!back){
            if (srcVal.value == ""){
                rezVar.value = "";
                return;
            }
            if (isNaN(parseInt(srcVal.value))){
                srcVal.value = "";
                rezVar.value = "";
                return;
            }
        } else {
           if (rezVar.value == ""){
                srcVal.value = "";
                return;
            }
            if (isNaN(parseInt(rezVar.value))){
                srcVal.value = "";
                rezVar.value = "";
                return;
            }
        }
        
        calcRez(srcVal, srcCur, rezVar, rezCur, back);
       }
       
       function changeCurrencyList(back){
            changeSel(document.getElementById("sellSel"), document.getElementById("receiveSel"), back);    
       }
       
       function changeCurrencyListOrder(back){
            changeSel(document.getElementById("sellSelForm"), document.getElementById("receiveSelForm"), back);    
       }