/*
 * Main JS file 
 */
 
var form;
var arrComm = new Array();
var arrCourse = new Array();
var arrMinVals = new Array();


function isArray(obj) {
	if (obj == null) {
		return false;
	}
	return obj.constructor == Array;
}

function init(type){
	for (var i in tarif_json) {
		if (!isArray(arrComm[tarif_json[i].sname_from])) {
			arrComm[tarif_json[i].sname_from] = new Array();
		}
		arrComm[tarif_json[i].sname_from][tarif_json[i].sname_to] = new Array();
		arrComm[tarif_json[i].sname_from][tarif_json[i].sname_to].push(tarif_json[i].comm1, tarif_json[i].comm2, tarif_json[i].comm3, tarif_json[i].comm4);
		if (!isArray(arrCourse[tarif_json[i].sname_from])) {
			arrCourse[tarif_json[i].sname_from] = new Array();
		}
		arrCourse[tarif_json[i].sname_from][tarif_json[i].sname_to] = tarif_json[i].course;
		arrMinVals[tarif_json[i].sname_from] = tarif_json[i].min_sum;
	}
	form = document.forms.makeexchange;
	if (typeof type == 'undefined') {
		updateView('in', form.outmoney.options[form.outmoney.selectedIndex].value);
//		document.getElementById('outSum').value = getOutSum(form.inSum.value);
	}
	else {
		// for main page calculator
		updateView2('in', form.inmoney.value);
//		form.outSum.value = getOutSum2(form.inSum.value);	
	}
}

function getOutSum (value) {
	var om = form.outmoney.options[form.outmoney.selectedIndex].value;
	var im  = form.inmoney.options[form.inmoney.selectedIndex].value;
	var comm = 0;
	if (value < 500) {
		comm = arrComm[im][om][0]/100;
	} 
	else{
		if (value < 1000) {
			comm = arrComm[im][om][1]/100;
		}
		else{
			if (value < 5000) {
				comm = arrComm[im][om][2]/100;
			}
			else{
				comm = arrComm[im][om][3]/100;
			}
		}
	}

	var ret = value * getCourse(im, om) * (1-comm);
	ret = Math.round(ret*100)/100+0.001;
	ret +='';
	var reg = /^[1-9]\d*((\.|,)\d{1,2})?/i;
	document.getElementById('our_percent').innerHTML = (comm * 100) + ' %';
	return ret.match(reg)[0];
}

function getInSum (value) 
{
	return 0;
}

function updateView(type, outmoney) 
{
	if (type == 'in') {
		field = form.outmoney;
		value = form.inmoney.options[form.inmoney.selectedIndex].value;
	}
	else if (type == 'out') {
/*		field = form.inmoney;
		value = form.outmoney.options[form.outmoney.selectedIndex].value;
*/		
		form.outSum.value = getOutSum(form.inSum.value);
		return;
	}
	else {
		return;
	}
	
	if (field.hasChildNodes()) {
	    while (field.childNodes.length >= 1) {
	        field.removeChild(field.firstChild);   
	    } 
	}
	
	$.post('exchange', {curr_type: type, curr_name: value},
		function(data){
			for (var k = 0; k < data.length; k++) {
				var option = document.createElement('option');
				if (typeof outmoney == 'undefined') {
					if (k == 0) {
						option.selected = Boolean(true);
						form.inSum.value = data.curr[k].min_sum;
					}
				}
				else {
					if (data.curr[k].sname == outmoney) {
						option.selected = Boolean(true);
					}
				}
				option.value = data.curr[k].sname;
				option.text = data.curr[k].fname;
				field.appendChild(option);
			}
			form.outSum.value = getOutSum(form.inSum.value);
		}, "json"
	);
}

function getOutSum2 (value) {
	var om = form.outmoney.value;
	var im  = form.inmoney.value;
	var comm = 0;
	if (value < 500) {
		comm = arrComm[im][om][0]/100;
	} 
	else{
		if (value < 1000) {
			comm = arrComm[im][om][1]/100;
		}
		else{
			if (value < 5000) {
				comm = arrComm[im][om][2]/100;
			}
			else{
				comm = arrComm[im][om][3]/100;
			}
		}
	}

	var ret = value * getCourse(im, om) * (1-comm);
	ret = Math.round(ret*100)/100+0.001;
	ret +='';
	var reg = /^[1-9]\d*((\.|,)\d{1,2})?/i;
	return ret.match(reg)[0];
}

function updateView2(type, value)
{
	if (type == 'in') {
		field = document.getElementById('out_list');
		document.getElementById('incurrency').innerHTML = value;
		form.inmoney.value = value;
		var tp = 'out';
	}
	else if (type == 'out') {
		document.getElementById('outcurrency').innerHTML = value;
		form.outmoney.value = value;
		form.outSum.value = getOutSum2(form.inSum.value);
		return;
	}
	else {
		return;
	}
	
	if (field.hasChildNodes()) {
	    while (field.childNodes.length >= 1) {
	        field.removeChild(field.firstChild);   
	    } 
	}
	
	$.post('exchange', {curr_type: type, curr_name: value},
		function(data){
			for (var k = 0; k < data.length; k++) {
				var li = document.createElement('li');
				if (k == 0) {
					document.getElementById('outcurrency').innerHTML = data.curr[k].fname;
					form.outmoney.value = data.curr[k].sname;
					form.inSum.value = data.curr[k].min_sum;
				}
				var a = document.createElement('a');
				a.href = "javascript:updateView2('" + tp + "', '" + data.curr[k].sname + "')";
				a.innerHTML = data.curr[k].fname;
				li.appendChild(a);
				field.appendChild(li);
			}
			form.outSum.value = getOutSum2(form.inSum.value);
		}, "json"
	);
}

function newValue(field)
{
	var reg = /^[1-9]\d*((\.|,)\d{1,2})?$/i;
	if(!field.value.match(reg)){
		field.style.color = '#ff0000';
		return;
	}

	field.style.color = '#3C496D';
	field.value = field.value.replace(/,/,'.');
	if(field.id == 'inSum'){
		form.outSum.value = getOutSum(field.value);
	}
}

function newValue2(field)
{
	var reg = /^[1-9]\d*((\.|,)\d{1,2})?$/i;
	if(!field.value.match(reg)){
		field.style.color = '#ff0000';
		return;
	}

	field.style.color = '#3C496D';
	field.value = field.value.replace(/,/,'.');
	if(field.id == 'inSum'){
		form.outSum.value = getOutSum2(field.value);
	}
}

function getCourse (inMoney, outMoney) 
{
	return arrCourse[inMoney][outMoney];
}

function doExchange() 
{
	var outmoney = form.outmoney.options[form.outmoney.selectedIndex].value;
	var inmoney  = form.inmoney.options[form.inmoney.selectedIndex].value;
	form.outSum2.value = form.outSum.value;
	var inSum = form.inSum.value;

	var error = true;
	var errMessage = 'Неверный формат суммы';
	var reg = /^[1-9]\d*((\.|,)\d{1,2})?$/i;

	if (form.inSum.value.match(reg) && form.outSum.value.match(reg)) {
		error = false;
		errMessage = '';
		if (Number(form.inSum.value) < Number(arrMinVals[inmoney])){
			error = true;
			errMessage += 'Сумма платежа должна быть не меньше '+arrMinVals[inmoney]+"\n";
		}
	}
	
	if (!error) {
		document.getElementById('makeexchange').submit();
	}
	else {
		alert(errMessage);
	}
	return false;
}

function doExchange2() 
{
	var outmoney = form.outmoney.value;
	var inmoney  = form.inmoney.value;
	form.outSum2.value = form.outSum.value;
	var inSum = form.inSum.value;

	var error = true;
	var errMessage = 'Неверный формат суммы';
	var reg = /^[1-9]\d*((\.|,)\d{1,2})?$/i;

	if (form.inSum.value.match(reg) && form.outSum.value.match(reg)) {
		error = false;
		errMessage = '';
		if (Number(form.inSum.value) < Number(arrMinVals[inmoney])){
			error = true;
			errMessage += 'Сумма платежа должна быть не меньше '+arrMinVals[inmoney]+"\n";
		}
	}
	
	if (!error) {
		document.getElementById('makeexchange').submit();
	}
	else {
		alert(errMessage);
	}
	return false;
}