/*
  Register event handlers and toggle divs visibility
*/
function calculator_setup() {
    document.getElementById('usa_spate').onchange = toggle_back_door;

    document.getElementById('div_spate_amortizor').style.visibility = 'hidden';
    document.getElementById('div_spate_acces').style.visibility = 'hidden';
    toggle_back_door();

    // AJAX
    document.getElementById('submit').onclick = get_price;

    // pop up
    document.getElementById('print').onclick = popup;

    return true;
}


/*
  Toggle visibility for back door.
*/
function toggle_back_door() {
    if (document.getElementById('usa_spate').selectedIndex == 0) {
        document.getElementById('div_spate_amortizor').style.visibility = 'hidden';
        document.getElementById('div_spate_acces').style.visibility = 'hidden';
    }
    else {
        document.getElementById('div_spate_amortizor').style.visibility = 'visible';
        document.getElementById('div_spate_acces').style.visibility = 'visible';
    }
    return true;
}


/*
  Validate form before submission.
*/
function validate() {
    var a = document.getElementById('apartamente').value;
    if (isNaN(a) || a < 1){
        alert('Va rugam introduceti numarul de apartamente!');
        return false;
    }
    
    var e = document.getElementById('etaje').value;
    if (isNaN(e) || e < 1) {
        alert('Va rugam introduceti numarul de etaje!');
        return false;
    }

    return true;
}


/*
  XMLHTTPRequest reference.
*/
var xmlHttp = null;


/*
  Get browser's XMLHTTPRequest object.
  @return Reference to browser's XMLHTTPRequest object.
*/
function getXmlHttpObject() {
    if (window.XMLHttpRequest) {
        return new XMLHttpRequest();
    }
    if (window.ActiveXObject) {
        return new ActiveXObject("Microsoft.XMLHTTP");
    }
    return null;
}


/*
  Send form elements.
  @return Always false, ignored.
*/
function get_price() {
    if (!validate()) {
        return false;
    }

    xmlHttp = getXmlHttpObject();

    if (xmlHttp == null) {
        alert('Your browser does not support AJAX');
        return false;
    }

    var url = 'calculator_new.php';
    var params = 'apartamente=' + document.getElementById('apartamente').value;

    params += '&etaje=' + document.getElementById('etaje').value;
    params += '&tip_interfon=' + document.getElementById('tip_interfon').value;
    params += '&tip_amortizor=' + document.getElementById('tip_amortizor').value;
    params += '&usa_spate=' + document.getElementById('usa_spate').value;
    params += '&spate_amortizor=' + document.getElementById('spate_amortizor').value;
    params += '&spate_tip_acces=' + document.getElementById('spate_tip_acces').value;

    xmlHttp.onreadystatechange = price_received;
    xmlHttp.open('POST', url, true);
    xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    xmlHttp.setRequestHeader("Content-length", params.length);
    xmlHttp.setRequestHeader("Connection", "close");
    xmlHttp.send(params);

    return false;
}


/*
  Get response.
*/
function price_received() {
    if (xmlHttp.readyState == 4) {
        // make this global so we can use it below, in popup()
        answer = xmlHttp.responseText.split(':');

        document.getElementById('total').innerHTML = answer[0];
        document.getElementById('per_apt').innerHTML = answer[1];
        document.getElementById('video_only').style.visibility = answer[2] == 'video_digital' ? 'visible' : 'hidden';
        document.getElementById('pret').style.visibility = 'visible';
        
        var pct_20 = Math.round(answer[0] * .2);
        var pct_30 = Math.round(answer[0] * .3);
        var pct_50 = answer[0] - (pct_20 + pct_30);
        
        document.getElementById('pct_20').innerHTML = pct_20;
        document.getElementById('pct_30').innerHTML = pct_30;
        document.getElementById('pct_50').innerHTML = pct_50;

        var zile = answer[3] + (answer[3] > 1 ? ' zile' : ' zi');
        
        document.getElementById('zile').innerHTML = zile;
        document.getElementById('detalii').style.display = 'block';
        document.getElementById('detalii').style.visibility = 'visible';
    }
}


function popup() {
    var email = document.getElementById('email').value;

    if (email.length == 0) {
        alert('Va rugam introduceti numarul de adresa de e-mail');
        return false;
    }
    if (!validate_email(email)) {
        alert('Adresa e-mail invalida');
        return false;
    }

    var url = 't=' +  answer[0];
    url += '&ap=' + answer[1];
    url += '&tip=' + answer[2];
    url += '&zile=' + answer[3];
    url += '&am=' + answer[4];
    url += '&us=' + answer[5];
    url += '&ams=' + answer[6];
    if (document.getElementById('nume').value != '') {
        url += '&nume=' + document.getElementById('nume').value;
    }
    if (document.getElementById('adresa').value != '') {
        url += '&adresa=' + document.getElementById('adresa').value;
    }
    if (document.getElementById('telefon').value != '') {
        url += '&telefon=' + document.getElementById('telefon').value;
    }
    if (document.getElementById('fax').value != '') {
        url += '&fax=' + document.getElementById('fax').value;
    }
    if (document.getElementById('email').value != '') {
        url += '&email=' + document.getElementById('email').value;
    }
    document.getElementById('query').value = url;

    return true;
}

function validate_email(str) {
    var at = "@";
    var dot = ".";
    var lat = str.indexOf(at);
    var lstr = str.length;
    var ldot = str.indexOf(dot);
    if (str.indexOf(at) == -1) {
        return false;
    }
    if (str.indexOf(at) == -1 || str.indexOf(at) == 0 || str.indexOf(at) == lstr) {
        return false;
    }
    if (str.indexOf(dot) == -1 || str.indexOf(dot) == 0 || str.indexOf(dot) == lstr) {
        return false;
    }
    if (str.indexOf(at, (lat + 1)) != -1) {
        return false;
    }
    if (str.substring(lat - 1, lat) == dot || str.substring(lat + 1, lat + 2) == dot) {
        return false;
    }
    if (str.indexOf(dot, (lat + 2)) == -1) {
        return false;
    }
    if (str.indexOf(" ") != -1) {
        return false;
    }
    return true;
}

