JSON_URL = 'lib/local.js';
first_countries = Array('RU','UA','IL'); // ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ (ï¿½ï¿½ï¿½ï¿½ ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ ï¿½ï¿½ï¿½ ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½) ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ ï¿½ï¿½ï¿½ï¿½ï¿½ ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ ï¿½ ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½

function show(node) {
	node.style.display = '';
	return node;
}

function hide(node) {
	node.style.display = 'none';
	return node;
}

function update(node, text) {
	node.appendChild(document.createTextNode(text));
	return node;
}

function clear(node) {
	while (node.hasChildNodes()) {
		node.removeChild(node.firstChild);
	}
	return node;
}

function smscoin_id(id) { return document.getElementById(id) }

function show_smscoin_id(id) { return show(smscoin_id(id)) }

function hide_smscoin_id(id) { return hide(smscoin_id(id)) }

function update_smscoin_id(id, text) { return update(smscoin_id(id), text) }

function clear_smscoin_id(id) { return clear(smscoin_id(id)) }

function updateInstructions(data) {
	show_smscoin_id('instructions');
	update(clear_smscoin_id('message_text'), (data.rewrite==""?[data.prefix, SERVICE]:[data.rewrite]).join(' '));
	update(clear_smscoin_id('shortcode'), [data.number]);
	update(clear_smscoin_id('message_cost'), [data.price, data.currency,
		(parseInt(data.vat)? '(Âêëþ÷àÿ ÍÄÑ)': '(Áåç ó÷åòà ÍÄÑ)')].join(' '));
	if (data.special) show(update(clear_smscoin_id('notes'), data.special));
	else hide(clear_smscoin_id('notes'));
}

function selectProvider(i) {
	if (i == '-') {
		hide_smscoin_id('instructions');
		return;
	}
	updateInstructions(DATA.providers[i]);
}

function selectCountry(i) {
	if (i == '-') {
		hide_smscoin_id('providers');
		hide_smscoin_id('instructions');
		return;
	}
	if (JSONResponse[i].providers && JSONResponse[i].providers.length) {
		hide_smscoin_id('instructions');
		show_smscoin_id('providers');
		DATA = JSONResponse[i];
		var select_provider = clear_smscoin_id('select_provider');
		var def = document.createElement('option');
		update(def, 'Âûáåðèòå îïåðàòîðà').value = '-';
		select_provider.appendChild(def);
		for (var j = 0; j < DATA.providers.length; ++j) {
			var opt = document.createElement('option');
			update(opt, DATA.providers[j].name).value = j;
			select_provider.appendChild(opt);
		}
		select_provider.onchange = function() {
			selectProvider(this.value);
		}
	}
	else {
		hide_smscoin_id('providers');
		updateInstructions(JSONResponse[i]);
	}
}

function JSONHandleResponse() {
	//document.body.style.backgroundImage = 'none';
	if (!window.JSONResponse) {
		show_smscoin_id('fail');
		return;
	}
	for (var i = 0; i < (JSONResponse.length-1); i++) {
		for (var j = (i+1); j < JSONResponse.length; j++) {
			for(var c = first_countries.length-1; c >= 0; c--) {
				if(JSONResponse[j].country == first_countries[c]){
					var temp = JSONResponse[i];
					JSONResponse[i] = JSONResponse[j];
					JSONResponse[j] = temp;
				}
			}
		}
	}
	for (var i = first_countries.length; i < (JSONResponse.length-1); i++) {
		for (var j = (i+1); j < JSONResponse.length; j++) {
			if(JSONResponse[i].country_name > JSONResponse[j].country_name){
				var temp = JSONResponse[i];
				JSONResponse[i] = JSONResponse[j];
				JSONResponse[j] = temp;
			}
		}
	}
	show_smscoin_id('ui');
	var select_country = smscoin_id('select_country');
	for (var i = 0; i < JSONResponse.length; ++i) {
		var opt = document.createElement('option');
		update(opt, JSONResponse[i].country_name).value = i;
		select_country.appendChild(opt);
	}
	select_country.onchange = function() {
		selectCountry(this.value);
	}
}

function JSONSendRequest() {
	var head_node = document.getElementsByTagName('head').item(0);
	var js_node = document.createElement('script');
	js_node.src = JSON_URL;
	js_node.type = 'text/javascript';
	js_node.charset = 'utf-8';
	if (navigator.product == 'Gecko' || navigator.userAgent.indexOf('Opera') != -1) {
		js_node.onload = JSONHandleResponse;
	}
	else {
		js_node.onreadystatechange = function(evt) {
			evt? 1: evt = window.event;
			var rs = (evt.target || evt.srcElement).readyState;
			if (rs == 'loaded' || rs == 'complete') {
				JSONHandleResponse();
			}
		}
	}
	head_node.appendChild(js_node);
}

if (window.addEventListener) {
	window.addEventListener('load', JSONSendRequest, false);
}
else if (window.attachEvent) {
	window.attachEvent('onload', JSONSendRequest);
}

