function init() 
{
    var bas_cal, dp_cal, ms_cal;    
    bas_cal = new Epoch('bas_cal','flat',$('bas_cal'));
    dp_cal  = new Epoch('dp_cal','popup',$('birthDate'));
    dp_cal  = new Epoch('dp_cal','popup',$('endDate'));
    ms_cal  = new Epoch('ms_cal','flat',$('ms_cal'),true);
}

function stopDisplay(el)
{
    $(el).setStyle('display', 'none');
}

function startDisplay(el)
{
    $(el).setStyle('display', 'block');
}

function addrow(el){
    var lrow=$(el).getPrevious().getPrevious();
    alert(lrow.type);
    if(lrow.type=='hidden'){
        nrow=lrow.clone();
        nrow.type = 'file';
    }
    else
    {
        nrow=lrow.clone();
    }
    //alert(nrow);
    nrow.injectAfter(lrow);
}
function delrow(el){
    var lrow=$(el).getPrevious().getPrevious().getPrevious();
    if(lrow.type=='hidden'){}else{
        if(lrow!=null && lrow.src==''){
            nrow=lrow.remove();
        }
    }
}

function showExt(pid, ordValue){
    if($('padd')!=null){
        var num = $('padd').getElements('div[id^=more]');
        for(i=0;i<num.length;i++){
            if(num[i].getStyle('display')=='block' && num[i].id=='more'+ordValue){
                num[i].setStyle('display', 'none');
            }
            else
            {
                num[i].setStyle('display', 'block');
            }
        }
        var els = $('padd').getElements('div[id^=showMore]');
        for(i=0;i<els.length;i++){
            if(els[i].getStyle('display')=='none' && els[i].id=='showMore'+pid){
                els[i].setStyle('display', 'block');
            }
            else
            {
                els[i].setStyle('display', 'none');
            }
        }
    }
}

function showNewsFull(id){
    var full = $('short_news').getElements('div[id^=fullNewsText]');
    var mini = $('short_news').getElements('div[id^=shortNewsText]');
    for(i=0;i<full.length;i++){
        if(full[i].getStyle('display')=='none' && full[i].id=='fullNewsText'+id){
            full[i].setStyle('display', 'block');
        }
        else
        {
            full[i].setStyle('display', 'none');
        }
    }
    for(i=0;i<mini.length;i++){
        if(mini[i].getStyle('display')=='block' && mini[i].id=='shortNewsText'+id){
            mini[i].setStyle('display', 'none');
        }
        else
        {
            mini[i].setStyle('display', 'block');
        }
    }
}

function checkfield(el){
    err=0;
    if(el.value==''){
        alert('Не запонено');
        err=1;
    }
    if(err==0) $('searchForm').submit();
}

/*
AJAX - Ситуация
*/

function selcity(id, container, name){
    $(container).setStyle("display", "block");
    makeRequest('/utils/selcity.php?id='+id+'&city='+name, 'selcity', container, id);
}

function clickcity(id, container, name, offsetIn, signIn, houroffsetIn, minuteoffsetKeyIn){
    $('else').onclick = function onclick(event) {selcity(id, "selcity", name); return false;};
    clearInterval(window.myInterval);
    var offset = offsetIn;
    var sign = signIn=='+'?'off':'on';
    var houroffset = houroffsetIn;
    var minuteoffsetKey = minuteoffsetKeyIn;
    goforit(name, offset, sign, houroffset, minuteoffsetKey);
    makeRequest('/utils/selcity.php?id='+id+'&city='+name, 'selcity', container, id);
    $('selcity').setStyle('display', 'none');
}

function makeRequest(url,module,option,id) {
    var http_request = false;
    if (window.XMLHttpRequest) { // Mozilla, Safari, ...
        http_request = new XMLHttpRequest();
        if (http_request.overrideMimeType) {
            http_request.overrideMimeType("text/xml");
            // Читайте ниже об этой строке
        }
    } else if (window.ActiveXObject) { // IE
        try {
            http_request = new ActiveXObject("MSXML2.XMLHTTP");
        } catch (e) {
            try {
                http_request = new ActiveXObject("Microsoft.XMLHTTP");
            } catch (e) {}
        }
    }
    if (!http_request) {
        alert("Не вышло  Невозможно создать экземпляр класса XMLHTTP ");
        return false;
    }
    //alert(module);
    switch (module) {
        case "selcity" :
            http_request.onreadystatechange = function() { outselcity(http_request, option, id); };
            break;
        default :
            http_request.onreadystatechange = function() { alertContents(http_request); };
    }

    http_request.open("GET", url, true);
    http_request.send(null);
}

function outselcity(http_request, option, id) {
    if (http_request.readyState == 4) {
        if (http_request.status == 200) {
            $(option).innerHTML = http_request.responseText;
        } else {
            alert("С запросом возникла проблема. Попробуйте ещё раз!");
        }
    }
}

/* Конвертер */

function AddEndRow1(elTbody, nominalValue, exchangeValue, CharCode, CharName, spanValue, correct, ClassValue, toValue, toCharCode) {
    var myTR=document.createElement('tr');
    myTR.className = ClassValue;
    var myTD1=document.createElement('td');
    var myTD2=document.createElement('td');
    var myTD3=document.createElement('td');
    var myTD4=document.createElement('td');
    var myTD5=document.createElement('td');
    var myTD6=document.createElement('td');
    
    if(toValue==0) toValue=1;
    
    myTD1.align = 'right';
    myTD1.innerHTML = '&nbsp;';
    myTR.appendChild(myTD1);

    var mySpan=document.createElement('span');
    mySpan.innerHTML = number_format(((toValue*nominalValue)/exchangeValue), 4, '.', ' ');
    mySpan.id = spanValue+CharCode;
    myTD2.appendChild(mySpan);
    myTD2.appendChild(document.createTextNode('\u00A0'+CharCode));
    var brEl = document.createElement('br');
    myTD2.appendChild(brEl);
    myTD2.appendChild(document.createTextNode(CharName));
    myTD2.align = 'right';
    myTR.appendChild(myTD2);
    myTD2.setAttribute('colSpan', 2);

    myTD3.innerHTML = '&nbsp;';
    myTR.appendChild(myTD3);
    
    myTD4.align = 'right';
    var myInput4=$(document.createElement('input'));
    myInput4.setAttribute('type', 'text');
    myInput4.setAttribute('value', 1);
    myInput4.addEvent('keyup', function(){convertValue(this.value, ''+spanValue+'', nominalValue, exchangeValue, correct, ''+CharCode+'', ((toValue*nominalValue)/exchangeValue));}.bindWithEvent(myInput4));
    myTD4.appendChild(myInput4);
    myTR.appendChild(myTD4);

    myTD5.innerHTML = toCharCode;
    myTR.appendChild(myTD5);
    
    myTD6.innerHTML = '&nbsp;';
    myTR.appendChild(myTD6);

    return myTR;    
}

function AddEndRow(elTbody, nominalValue, exchangeValue, CharCode, CharName, spanValue, correct, ClassValue, toValue, toCharCode) {
    var myTR=document.createElement('tr');
    myTR.className = ClassValue;
    var myTD1=document.createElement('td');
    var myTD2=document.createElement('td');
    var myTD3=document.createElement('td');
    var myTD4=document.createElement('td');
    var myTD5=document.createElement('td');
    var myTD6=document.createElement('td');

    if(toValue==0) toValue=1;
    
    var myDiv1=document.createElement('div');
    myTD1.width = '10';
    myDiv1.className = 'widthDiv';
    myTD1.appendChild(myDiv1);
    myTR.appendChild(myTD1);

    var myInput2=$(document.createElement('input'));
    myInput2.setAttribute('type', 'text');
    myInput2.setAttribute('value', 1);
    myInput2.addEvent('keyup', function(){convertValue(this.value, ''+spanValue+'', nominalValue, exchangeValue, correct, ''+CharCode+'', (1/((toValue*nominalValue)/exchangeValue)));}.bindWithEvent(myInput2));
    myTD2.align = 'right';
    myTD2.appendChild(myInput2);
    myTR.appendChild(myTD2);

    myTD3.innerHTML = CharCode;
    myTR.appendChild(myTD3);

    myTD4.align = 'center';
    myTD4.width = '50';
    myTD4.innerHTML = '=';
    myTR.appendChild(myTD4);

    var mySpan=document.createElement('span');
    mySpan.id = spanValue+CharCode;
    mySpan.innerHTML = number_format((1/((toValue*nominalValue)/exchangeValue)), 4, '.', ' ');
    myTD5.appendChild(mySpan);
    myTD5.appendChild(document.createTextNode('\u00A0'+toCharCode));
    myTR.appendChild(myTD5);
    myTD5.setAttribute('colSpan', '2');

    var myDiv6=document.createElement('div');
    myTD6.width = '10';
    myDiv6.className = 'widthDiv';
    myTD6.appendChild(myDiv6);
    myTR.appendChild(myTD6);
    
    return myTR
}


function addMoney(action, id, toValue, toCharCode){
    var url = '/utils/selMoney.php?action='+action+'&id='+id+'&toValue='+toValue+'&toCharCode='+toCharCode;
    var jSonRequest = new Json.Remote(url, {onComplete: showRow}).send();
}

function showRow(responseJSON){
    var elTbody = $('addExchange').getParent().getParent().getParent().getParent().getPrevious().getLast();
    
    if(elTbody.getLast().getPrevious().className=='tr-bold bg-grey'){
        var ClassValueTR = 'tr-bold';
        var ClassValueTR1 = 'bg-dotted';
    }
    else
    {
        var ClassValueTR = 'tr-bold bg-grey';
        var ClassValueTR1 = 'bg-grey-dotted';
    }

    var myTR = AddEndRow(elTbody, responseJSON.Nominal.replace(",", "."), responseJSON.Value.replace(",", "."), responseJSON.CharCode, responseJSON.Name, 'valueStart', responseJSON.correct.replace(",", "."), ClassValueTR, responseJSON.toValue, responseJSON.toCharCode);
    elTbody.appendChild(myTR);

    var myTR1 = AddEndRow1(elTbody, responseJSON.Nominal.replace(",", "."), responseJSON.Value.replace(",", "."), responseJSON.CharCode, responseJSON.Name, 'valueStop', responseJSON.correct.replace(",", "."), ClassValueTR1, responseJSON.toValue, responseJSON.toCharCode)
    elTbody.appendChild(myTR1);
}

function convertValue(srcValue, target, nominal, value, correct, CharCode, toValue){
    if(target=='valueRoubleNominalStart'){
        result = number_format((nominal*srcValue/value), 4, '.', ' ');
    }
    if(target=='valueRoubleNominalStop'){
        result = number_format((value*srcValue/nominal), 4, '.', ' ');
    }
    if(target=='valueDollarNominalStart' || target=='valueEuroNominalStart'){
        result = number_format((correct*nominal*srcValue/value), 4, '.', ' ');
    }
    if(target=='valueDollarNominalStop' || target=='valueEuroNominalStop' || ($(target+CharCode) && target=='valueStop')){
        result = number_format((1*srcValue/(correct*nominal/value)), 4, '.', ' ');
    }
    if($(target+CharCode) && (target=='valueStart' || target=='valueStop')){
        result = number_format((toValue*srcValue), 4, '.', ' ');
        target = target+CharCode;
    }
    $(target).innerHTML = '';
    $(target).innerHTML = result<'0.0001'?'<0.0001':result;
}

function number_format( number, decimals, dec_point, thousands_sep ) {    // Format a number with grouped thousands
    // 
    // +   original by: Jonas Raoni Soares Silva (http://www.jsfromhell.com)
    // +   improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +     bugfix by: Michael White (http://crestidg.com)

    var i, j, kw, kd, km;

    // input sanitation & defaults
    if( isNaN(decimals = Math.abs(decimals)) ){
        decimals = 2;
    }
    if( dec_point == undefined ){
        dec_point = ",";
    }
    if( thousands_sep == undefined ){
        thousands_sep = ".";
    }

    i = parseInt(number = (+number || 0).toFixed(decimals)) + "";

    if( (j = i.length) > 3 ){
        j = j % 3;
    } else{
        j = 0;
    }

    km = (j ? i.substr(0, j) + thousands_sep : "");
    kw = i.substr(j).replace(/(\d{3})(?=\d)/g, "$1" + thousands_sep);
    //kd = (decimals ? dec_point + Math.abs(number - i).toFixed(decimals).slice(2) : "");
    kd = (decimals ? dec_point + Math.abs(number - i).toFixed(decimals).replace(/-/, 0).slice(2) : "");


    return km + kw + kd;
}

