//
function on(a){
	document.getElementById("mn"+a).className='mna';
}
function off(a){
	document.getElementById("mn"+a).className='mn';
}

//
function switchTab(that) {
	document.getElementById('tab1').className='';
	document.getElementById('tab2').className='';
	document.getElementById('tab3').className='';
	document.getElementById('tab4').className='';
	that.parentNode.className='active';
	document.getElementById('tab1c').style.display='none';
	document.getElementById('tab2c').style.display='none';
	document.getElementById('tab3c').style.display='none';	
	document.getElementById('tab4c').style.display='none';
	
	document.getElementById(that.parentNode.id+'c').style.display='block';
	return false;
}

function switchTab2(that) {
	document.getElementById('tab1').className='';
	document.getElementById('tab2').className='';
	document.getElementById('tab3').className='';
	document.getElementById('tab4').className='';
	document.getElementById('tab5').className='';
	document.getElementById('tab6').className='';
	document.getElementById('tab7').className='';

	that.parentNode.className='active';
	document.getElementById('tab1c').style.display='none';
	document.getElementById('tab2c').style.display='none';
	document.getElementById('tab3c').style.display='none';	
	document.getElementById('tab4c').style.display='none';
	document.getElementById('tab5c').style.display='none';
	document.getElementById('tab6c').style.display='none';
	document.getElementById('tab7c').style.display='none';	

	document.getElementById(that.parentNode.id+'c').style.display='block';
	return false;
}

// Used on Contacts page
function setDate() {
	var date = new Date();
	document.getElementById('day').value = date.getDate();
	document.getElementById('month').value = date.getMonth() + 1;

	var hour = date.getHours();
	if (hour < 21 && hour > 8) {
		document.getElementById('source_hour').value = hour + 1;
		document.getElementById('target_hour').value = hour + 2;
	}
}

function checkContactsFields() {
	var phone_code = document.getElementById('phone_code').value;
	var phone = document.getElementById('phone').value;

	if (!phone_code.match(/^[0-9]+$/) || !phone.match(/^[0-9 -]+$/) ) {
		document.getElementById('phone_color').style.color = 'red';
		alert('Введите правильный код и номер телефона');
		return false;
	}
	return true;
}

// Functions for working with source and target amounts
function getSplittedValues(elem) {
	var value = document.getElementById(elem).value;
	return value.split('_');
}

function fillSourcePSList(first_run) {
	var element = document.getElementById('source_ps_cur');
	element.options.length = 0;
	
	var selected_ps_id = 0;
	var selected_cur_id = 0;
	if (first_run) {
		selected_ps_id = parseInt( document.getElementById("source_ps_id").value ) || 0;
		selected_cur_id = parseInt( document.getElementById("source_cur_id").value ) || 0;
	};

	for (var ps_order in json['payment_systems']) {
		var ps_id   = json['payment_systems'][ps_order][0];
		var ps_name = json['payment_systems'][ps_order][1];
		if (json['our_commissions'][ps_id]) {
			for (var cur_id in json['currency']) {
				if (json['our_commissions'][ps_id][cur_id]) {
					var name = ps_name + ' (' + json['currency'][cur_id] + ')';
					var value = ps_id + '_' + cur_id;
					element.options.add(new Option(name, value));
					if (ps_id == selected_ps_id && cur_id == selected_cur_id) element.options[ element.options.length - 1 ].selected = true;
				};
			};
		};
	};
}

function fillTargetPSList(first_run) {
	var element = document.getElementById('target_ps_cur');
	element.options.length = 0;
	
	var selected_ps_id = 0;
	var selected_cur_id = 0;
	if (first_run) {
		selected_ps_id = parseInt( document.getElementById("target_ps_id").value ) || 0;
		selected_cur_id = parseInt( document.getElementById("target_cur_id").value ) || 0;
	};

	var source_ps_cur = getSplittedValues('source_ps_cur');
	for (var ps_order in json['payment_systems']) {
		var ps_id   = json['payment_systems'][ps_order][0];
		var ps_name = json['payment_systems'][ps_order][1];
		if (json['our_commissions'][ source_ps_cur[0] ][ source_ps_cur[1] ][ps_id]) {
			for (var cur_id in json['currency']) {
				if (json['our_commissions'][ source_ps_cur[0] ][ source_ps_cur[1] ][ps_id][cur_id]) {	
					var name = ps_name + ' (' + json['currency'][cur_id] + ')';
					var value = ps_id + '_' + cur_id;
					element.options.add(new Option(name, value));
					if (ps_id == selected_ps_id && cur_id == selected_cur_id) element.options[ element.options.length - 1 ].selected = true;
				}
			}
		}
	}
}

function fillOurCommissionField() {
	var source_ps_cur = getSplittedValues('source_ps_cur');
	var target_ps_cur = getSplittedValues('target_ps_cur');
	var values = json['our_commissions'][ source_ps_cur[0] ][ source_ps_cur[1] ][ target_ps_cur[0] ][ target_ps_cur[1] ];
	var vkey; for (vkey in values);
	document.getElementById('our_commission_percent').value    = vkey;
	document.getElementById('our_commission_min_amount').value = values[vkey][0];
	document.getElementById('our_commission_max_amount').value = values[vkey][1]; 
}

function fillForeignCommissionField() {
	var target_ps_cur = getSplittedValues('target_ps_cur');
	var values = json['foreign_commissions'][ target_ps_cur[0] ][ target_ps_cur[1] ];	
	var vkey; for (vkey in values);
	document.getElementById('foreign_commission_percent').value    = vkey;
	document.getElementById('foreign_commission_min_amount').value = values[vkey][0];
	document.getElementById('foreign_commission_max_amount').value = values[vkey][1]; 
}

function fillRateField() {
	var source_cur_id = (getSplittedValues('source_ps_cur'))[1];
	var target_cur_id = (getSplittedValues('target_ps_cur'))[1];
	var values = json['rates'][source_cur_id][target_cur_id];
	if (!values) values = ['1'];
	document.getElementById('rate').value = values[0];
}

function fillPSFields() {
	var source_ps_cur = getSplittedValues('source_ps_cur');
	var target_ps_cur = getSplittedValues('target_ps_cur');
	document.getElementById('source_ps_id').value = source_ps_cur[0];
	document.getElementById('source_cur_id').value = source_ps_cur[1];
	document.getElementById('target_ps_id').value = target_ps_cur[0];
	document.getElementById('target_cur_id').value = target_ps_cur[1];
}

function fillAllLists() {
	fillOurCommissionField();
	fillForeignCommissionField();
	fillRateField();
	fillPSFields();

	calculateTargetAmount(); // must be last
}

function autoLoad() {
	fillSourcePSList(1);
	fillTargetPSList(1);
	fillAllLists();
}

function calculateTargetAmount() {
	var source_amount                 = parseFloat(document.getElementById("source_amount").value);
	var target_amount;
	var rate                          = parseFloat(document.getElementById("rate").value);
	var our_commission_percent        = parseFloat(document.getElementById("our_commission_percent").value);
	var our_commission_min_amount     = parseFloat(document.getElementById("our_commission_min_amount").value);
	var our_commission_max_amount     = parseFloat(document.getElementById("our_commission_max_amount").value);
	var foreign_commission_percent    = parseFloat(document.getElementById("foreign_commission_percent").value);
	var foreign_commission_min_amount = parseFloat(document.getElementById("foreign_commission_min_amount").value);
	var foreign_commission_max_amount = parseFloat(document.getElementById("foreign_commission_max_amount").value);

	if (isNaN(source_amount)) {
		target_amount = 'Введите исходную сумму'
	}
	else {
		// Source amount calculating
		source_amount *= rate;
		
		// Our commission calculating
		var our_commission = source_amount * our_commission_percent / 100;
		if (our_commission >= 0) {
			if (our_commission < our_commission_min_amount) our_commission = our_commission_min_amount;
			if (our_commission_max_amount > 0 && our_commission > our_commission_max_amount) our_commission = our_commission_max_amount;
		}
		else {
			if (-our_commission < our_commission_min_amount) our_commission = -our_commission_min_amount;
			if (our_commission_max_amount > 0 && -our_commission > our_commission_max_amount) our_commission = -our_commission_max_amount;
		}
	
		// Target amount calculating
		target_amount = source_amount - our_commission;
	
		// Foreign commission calculating
		var foreign_commission = target_amount * foreign_commission_percent / 100;
		if (foreign_commission >= 0) {
			if (foreign_commission < foreign_commission_min_amount) foreign_commission = foreign_commission_min_amount;
			if (foreign_commission_max_amount > 0 && foreign_commission > foreign_commission_max_amount) foreign_commission = foreign_commission_max_amount;
		}
		else {
			if (-foreign_commission < foreign_commission_min_amount) foreign_commission = -foreign_commission_min_amount;
			if (foreign_commission_max_amount > 0 && -foreign_commission > foreign_commission_max_amount) foreign_commission = -foreign_commission_max_amount;
		}
	}
	document.getElementById("target_amount").value = target_amount;
}

// Check mandatory fields
function checkExchangePageFields() {
	var result = true;
	var result_customer = false;
	var check_re = {
		'source_amount'  : /^\d+([.,]\d+)?$/,
		'target_amount'  : /^\d+([.,]\d+)?$/,
		'customer_id'    : /^\d+?$/,
		'customer_skype' : /^[a-zA-Z0-9._-]+$/,
		'customer_icq'   : /^[0-9]+$/,
		'customer_phone' : /^[0-9 ()_+-]+$/,
		'customer_email' : /^[a-zA-Z0-9._-]+@[a-zA-Z0-9._-]+\.[a-zA-Z]+$/
	};

	for (name in check_re) {
		var value = document.getElementById(name).value;
		var color = 'white';
		var re = check_re[name];

		if (name.match(/^customer_/)) {
			if (!value.match(re)) {
				color = 'red';
			}
			else {
				result_customer = true;
			}
		}
		else {
			if (!value.match(re) || value == 0) {
				color = 'red';
				result = false;
			}
		}

		document.getElementById(name + "_color").style.color = color;
	}

	if (!result || !result_customer) {
		alert("Обязательные поля содержат неверные значения!");
		return false;
	}
	else {
		return true;
	}
}
