//PRICES RECALCULATION

//The pricelist source. Will be initialized below <DIV.. with pricelist
var prices_source = "";
var source_currency = "";
//Currency rates source URL (represented in JSON)
var rates_url = document.getElementById("hostName").value + "currency_rate.asp?mode=json";
//Currency rates array. Will be loaded from XML
var ratesObj = null;

function loadRates() 
{
	var oReq;
	if (window.XMLHttpRequest) 
	{
		oReq = new XMLHttpRequest();
	} 
	else 
	{
		oReq = new ActiveXObject("MSXML2.XMLHTTP.3.0");
	}
	oReq.open("GET", rates_url, false);
	oReq.send(null);
	if(oReq.statusText == "OK")
	{
		try 
		{ 
			eval("ratesObj = " + oReq.responseText);	
		} 
		catch(e) 
		{ 
			alert("Ошибка преобразования курсов валют"); 
		}
	}	
	else
		alert("Ошибка загрузки курсов валют");   	
}

function $my(id)
{
	return document.getElementById(id);
}

function getRate(from, to) 
{

	if(from == to)
		return 1;
	
	if(!ratesObj)
		loadRates();
		
	if(ratesObj) {
		for(var i = 0; i < ratesObj.rates.length; i++) {
				if(ratesObj.rates[i].from == from && ratesObj.rates[i].to == to)
					return ratesObj.rates[i].value - 0;
		}
	} else {
		return null;
	}
}

function currencyFormat(currency_code) 
{
	if(!ratesObj)
		loadRates();
		
	if(ratesObj) {
		for(var i = 0; i < ratesObj.rates.length; i++) {
				if(ratesObj.currencies[i].code == currency_code)
					return "TODO: create regExp here - " + ratesObj.currencies[i].prefix + "[:DIGIT]" + ratesObj.currencies[i].postfix;
		}
	} else {
		return null;
	}
}

function recalcPrice(targSel)
{
	//var cur_src = document.getElementById("currency_src").value;
	var cur_src = source_currency;	
	var cur_trg = document.getElementById("currency_trg").value;
	//var cur_trg = targSel.options;
	
	$my("price_show").innerHTML = prices_source;		
	
	if(!ratesObj)
		loadRates();
	
	
	var sourceCurrencyInfo = null, targetCurrencyInfo = null, currentRate = 1;
	// {{{ get converting currencies
	for (var i = 0, len = ratesObj.currencies.length; i < len; i++)
	{
		if (ratesObj.currencies[i].code == cur_src)
		{
			sourceCurrencyInfo = ratesObj.currencies[i];
		}
		if (ratesObj.currencies[i].code == cur_trg)
		{
			targetCurrencyInfo = ratesObj.currencies[i];
		}
	}
	for (var i = 0, len = ratesObj.rates.length; i < len; i++)
	{
		if (ratesObj.rates[i].from == cur_src && ratesObj.rates[i].to == cur_trg)
		{
			currentRate = Number(ratesObj.rates[i].value);
			break;
		}
	}
	// }}}
	
	var _prefix = sourceCurrencyInfo.prefix.replace(/([\$\.])/, "\\$1");
	var _postfix = sourceCurrencyInfo.postfix.replace(/([\$\.])/, "\\$1");
	
	var re = new RegExp(_prefix + '[\\s]?([0-9\.]+)[\\s]?' + _postfix, "g");
	var notNumber = /[^0-9\.]+/g;
	var tmpPricesSource = $my("price_show").innerHTML; //prices_source;
	var PRounding =  Math.pow(10, targetCurrencyInfo.rounding);
	var matches = tmpPricesSource.match(re);
	if (matches)
	{
		for (var i = 0, len = matches.length; i < len; i++)
		{
			var _sum = Number(matches[i].replace(notNumber, "").replace(/[\.]$/g,""));
			var newSumm = targetCurrencyInfo.prefix + (Math.round(_sum * currentRate * PRounding) / PRounding) + targetCurrencyInfo.postfix;
			tmpPricesSource = tmpPricesSource.replace(matches[i], newSumm);
		}
	}
	
	$my("price_show").innerHTML = tmpPricesSource;

	//alert("TODO:\n - find all prices nominated in " + cur_src + " (text = prices_source, regExp = " + currencyFormat(cur_src) + ")\n - recalculate using rate: " + "1 " + cur_src + " = " + getRate(cur_src, cur_trg) + " " + cur_trg + "\n - make replacements\n - show in <div id=prices_cource...");
	//alert("prices_source = \n" + prices_source);
}


function getElementsByClass(searchClass, node, tag) {
    var classElements = new Array();
    if (node == null)
        node = document;
    if (tag == null)
        tag = '*';
    var els = node.getElementsByTagName(tag);
    var elsLen = els.length;

    var pattern = new RegExp("(^|\\s)" + searchClass + "(\\s|$)");
    for (i = 0, j = 0; i < elsLen; i++) {
        if (pattern.test(els[i].className)) {
            classElements[j] = els[i];
            j++;
        }
    }
    return classElements;
}

function replaceSomeTextInPrice() {
    var els = getElementsByClass('divTourdetails', null, 'div'); ;
    for (var i = 0; i < els.length; i++) {
        var str = els[i].innerHTML
        els[i].innerHTML = str.replace('<br> выезд', ' выезд');
        str = els[i].innerHTML
        els[i].innerHTML = str.replace('Скидки', '<br><b>Скидки</b><br>');
        str = els[i].innerHTML
        els[i].innerHTML = str.replace('Доп. информация', '<br><b>Доп. информация </b>');
        str = els[i].innerHTML
        els[i].innerHTML = str.replace('<b>Расчетный час</b><br>', '<b>Расчетный час</b> ');
        
    }
}
