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 = '--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('Your browser does not support XmlHttpRequestObject.');
    }
    if(checkCounter == 4) {
        var getNumberSpan = document.getElementById("getNumber");
        if(getNumberSpan != null) {
            getNumberSpan.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("Please enter 11 digit FPL 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('Your browser does not support XmlHttpRequestObject.');
    }
}

function checkNumberResponse() {
    var responseText = "Invalid response from server!";
    if (xmlhttpCheckNumber.readyState == 4 && xmlhttpCheckNumber.status == 200) {
	var response = xmlhttpCheckNumber.responseText;
	if(response == "0") {	
            responseText = "The number is invalid or already taken by someone else!";
	} else if (response == "1"){
            responseText = "The number is free and valid!";
	}
        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('Your browser does not support XmlHttpRequestObject.');
    }
}

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('--Select Province--'));
        option.value = '--Select Province--';
        subdivisonList.appendChild(option);
    }
}

function clearPhoneNumber() {
    var phoneNumberControl = document.getElementById('phoneNumber');
    phoneNumberControl.value = '--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 = '--No numbers left--';
	} else {
	    phoneNumberControl.value = number;
	}
    } else {
	phoneNumberControl = document.getElementById('phoneNumber');
	phoneNumberControl.value = '--Searching--';
    }
}