/*

 * 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.getElementById('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;

				
				if ( typeof(option.innerText) != 'undefined' ) {
					option.innerText = data.curr[k].fname;
				}
				else {
					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.onClick="document.getElementById('out_list').style.display='none';return false;"
				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;

}