var xmlhttpSubdivisions;
var xmlhttpPhoneNumber;
var xmlhttpCheckNumber;
var checkCounter = 0;

function getPhoneNumber(resetCounter) {
    xmlhttpPhoneNumber = getXmlHttpRequestObject(); //init every time, otherwise there could be caching problems with ajax
    var city = document.getElementById('subdivision').value;
    if(city.indexOf('--') == 0) {
        clearPhoneNumber();
        return;
    }

    if(resetCounter) {
        var getNumberSpan = document.getElementById("getNumber");
        if(getNumberSpan != null) {
            getNumberSpan.style.display = "";
        }
        checkCounter = 1;
    } else {
        checkCounter++;
    }
    
    var phoneNumberControl = document.getElementById('phoneNumber');
    phoneNumberControl.value = label_searching;
    var url = 'getPhoneNumber';
    if(xmlhttpPhoneNumber != null) {
        xmlhttpPhoneNumber.onreadystatechange = changePhoneNumber;
        xmlhttpPhoneNumber.open("POST", url, true);
        xmlhttpPhoneNumber.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
        xmlhttpPhoneNumber.send('city=' + encodeURI(city));
    } else {
        alert(error_no_ajax_support);
    }
    if(checkCounter == 4) {
        var getNumberSpan2 = document.getElementById("getNumber");
        if(getNumberSpan2 != null) {
            getNumberSpan2.style.display = "none";
        }
        return;
    }
}

function checkNumber() {
    xmlhttpCheckNumber = getXmlHttpRequestObject(); //init every time, otherwise there could be caching problems with ajax
    var number = document.getElementById('phoneNumber').value;
    if(number.indexOf('--') == 0 || number.length != 11) {
        alert(error_wrong_number);
        return;
    }
	
    var url = 'checkPhoneNumber';
    if(xmlhttpCheckNumber != null) {
        xmlhttpCheckNumber.onreadystatechange = checkNumberResponse;
        xmlhttpCheckNumber.open("POST", url, true);
        xmlhttpCheckNumber.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
        xmlhttpCheckNumber.send('number=' + encodeURI(number));
    } else {
        alert(error_no_ajax_support);
    }
}

function checkNumberResponse() {
    var responseText = error_invalid_responce;
    if (xmlhttpCheckNumber.readyState == 4 && xmlhttpCheckNumber.status == 200) {
        var response = xmlhttpCheckNumber.responseText;
        if(response == "0") {
            responseText = error_invalid_number;
        } else if (response == "1"){
            responseText = msg_valid_number;
        }
        alert(responseText);
    }    
}

function showIncommingServiceNotWorking(show) {
    var incommingServiceInfo = document.getElementById('incommingServiceInfo');

    if(incommingServiceInfo == undefined) {
        return;
    }
	
    if(show) {
        incommingServiceInfo.style.display = '';
    } else {
        incommingServiceInfo.style.display = 'none';
    }
}

function changeSubdivisionList(provinceName) {
    xmlhttpSubdivisions = getXmlHttpRequestObject(); //init every time, otherwise there could be caching problems with ajax
    if(provinceName.indexOf('--') == 0) {
        clearSubdivisions(true);
        clearPhoneNumber();
        return;
    }
    
    var url='getSubdivisions';
    
    if (xmlhttpSubdivisions != null) {
        xmlhttpSubdivisions.onreadystatechange = changeSubdivisions;
        xmlhttpSubdivisions.open("POST", url, true);
        xmlhttpSubdivisions.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
        xmlhttpSubdivisions.send('province=' + encodeURI(provinceName));
    } else {
        alert(error_no_ajax_support);
    }
}

function changeSubdivisions() {
    var subdivisonList = document.getElementById('subdivision');
    if (xmlhttpSubdivisions.readyState == 4 && xmlhttpSubdivisions.status == 200) {
        var subdivisions = xmlhttpSubdivisions.responseText.split('\r\n');
        clearSubdivisions(false);
        for(var i=0; i< subdivisions.length; i++) {
            var option = document.createElement('option');
            option.appendChild(document.createTextNode(subdivisions[i]));
            option.value = subdivisions[i];
            subdivisonList.appendChild(option);
        }
    } else {
        clearSubdivisions(true);
        clearPhoneNumber();
    }
}

function clearSubdivisions(addFirstElement) {
    var subdivisonList = document.getElementById('subdivision');
    clearPhoneNumber();
    subdivisonList.options.length = 0;
    if(addFirstElement) {
        var option = document.createElement('option');
        option.appendChild(document.createTextNode(label_select_province));
        option.value = label_select_province;
        subdivisonList.appendChild(option);
    }
}

function clearPhoneNumber() {
    var phoneNumberControl = document.getElementById('phoneNumber');
    phoneNumberControl.value = label_select_city;
}

function changePhoneNumber() {
    if (xmlhttpPhoneNumber.readyState == 4 && xmlhttpPhoneNumber.status == 200) {
        var phoneNumberControl = document.getElementById('phoneNumber');
        var number = xmlhttpPhoneNumber.responseText;
        if(number.length == 0) {
            phoneNumberControl = document.getElementById('phoneNumber');
            phoneNumberControl.value = label_no_numbers_left;
            askAddInWaitingList();
        } else if( number == "ERROR"){
            alert(error_too_many_requests);
        } else {
            phoneNumberControl.value = number;
        }
    } else {
        phoneNumberControl = document.getElementById('phoneNumber');
        phoneNumberControl.value = label_searching;
    }
}

function askAddInWaitingList() {
    var answer = confirm(msg_no_numbers_available);
    if (answer){
        var fName = document.getElementById("firstName");
        var lName = document.getElementById("lastName");
        if (fName == null){
            fName = '';
        }
        if (lName == null){
            lName = '';
        }
        var name = fName + ' ' + lName;
        var email = document.getElementById("email");
        if (email == null){
            email = '';
        }
        var province = document.getElementById("province").value;
        var subdivision = document.getElementById("subdivision").value;
        var url = 'addInWaitingList?name=' + encodeURI(name) + "&email=" + encodeURI(email) + "&subdivision=" + encodeURI(subdivision)+ "&province=" + encodeURI(province);
        window.location = url;
    }
}
