//Gets the browser specific XmlHttpRequest Object
function getXmlHttpRequestObject() {
    if (window.XMLHttpRequest) {
        return new XMLHttpRequest();
    } else if(window.ActiveXObject) {
        return new ActiveXObject("Microsoft.XMLHTTP");
    } else {
        alert("Your browser can't handle Ajax. It might be time to upgrade.");
    }
}

//Our XmlHttpRequest object to get the auto suggest
var searchReq = getXmlHttpRequestObject();

//Starts the AJAX request.
function searchSuggest() {
    var company = escape(document.getElementById('company').value);
    var address = escape(document.getElementById('companyAddress').value);
    var houseNo = escape(document.getElementById('companyHouseNo').value);
    if (searchReq.readyState == 4 || searchReq.readyState == 0 && (company != '' && address != '' && houseNo != '')) {
        searchReq.open("GET", 'include/searchSuggest.php?address=' + address + '&houseNo=' + houseNo + '&company=' + company, true);
        searchReq.send(null);

        searchReq.onreadystatechange = function() {
            if (searchReq.readyState == 4)
            {
                if (searchReq.responseText == 'noresults' || document.getElementById('companyID').value != '')
                {
                    sendSuggest();
                }
                else
                {
                    handleSearchSuggest(address + ' ' + houseNo);
                }
            }
        }
        return false;
    }
}

//Called when the AJAX response is returned.
function handleSearchSuggest(address) {
    var ss = document.getElementById('search_suggest');
    var ssa = document.getElementById('search_suggest_address');
    var ssl = document.getElementById('search_suggest_list');
    var sso = document.getElementById('search_suggest_overlay');
    ssa.innerHTML = address.replace('%20', ' ');
    ssl.innerHTML = '';

    var str = searchReq.responseText.split("\n");

    if (str.length > 0)
    {
        for(i=0; i < str.length - 1; i++) {
            var companyDetails = str[i].split(";");
            //Build our element string.  This is cleaner using the DOM, but
            //IE doesn't support dynamically added attributes.
            var suggest = '<div onmouseover="javascript:suggestOver(this);" ';
            suggest += 'onmouseout="javascript:suggestOut(this);" ';
            suggest += 'onclick="javascript:setSearch(\'' + str[i] + '\');" ';
            suggest += 'class="suggest_link">' + companyDetails[0] + ' - ' + companyDetails[2] + ' ' + companyDetails[3] + companyDetails[4] + '</div>';
            ssl.innerHTML += suggest;
        }

        scroll(0,0);
        ss.style.visibility = 'visible';
        sso.style.visibility = 'visible';
    }
}

//Mouse over function
function suggestOver(div_value) {
    div_value.className = 'suggest_link_over';
}
//Mouse out function
function suggestOut(div_value) {
    div_value.className = 'suggest_link';
}

function setSearch(fields) {
    var fields = fields.split(";");

    var company = document.getElementById('company');
    company.value = fields[0];

    var companyType = document.getElementById('companyType')
    var typeLength = companyType.length

    while (typeLength--)
    {
        if (companyType[typeLength].value == fields[1])
        {
            companyType.selectedIndex = typeLength;
        }
    }

    var companyAddress = document.getElementById('companyAddress');
    companyAddress.value = fields[2];

    var companyHouseNo = document.getElementById('companyHouseNo');
    companyHouseNo.value = fields[3];

    var companyHouseNoAdd = document.getElementById('companyHouseNoAdd');
    companyHouseNoAdd.value = fields[4];

    var companyZipcode = document.getElementById('companyZipcode');
    companyZipcode.value = fields[5];

    var companyCity = document.getElementById('companyCity');
    companyCity.value = fields[6];

    var companyCountry = document.getElementById('companyCountry')
    companyCountry.selectedIndex = fields[7] - 1;

    var companyPhone = document.getElementById('companyPhone');
    companyPhone.value = fields[8];

    var companyWebsite = document.getElementById('companyWebsite');
    companyWebsite.value = fields[9];

    var companyEmail = document.getElementById('companyEmail');
    companyEmail.value = fields[10];

    var companyID = document.getElementById('companyID');
    companyID.value = fields[11].replace(',', '');

    var ss = document.getElementById('search_suggest');
    var ssa = document.getElementById('search_suggest_address');
    var sso = document.getElementById('search_suggest_overlay');

    ss.style.visibility = 'hidden';
    ssa.innerHTML = '';
    sso.style.visibility = 'hidden';

    disableFields();
}

function disableFields() {
    var company = document.getElementById('company');
    company.readOnly = true;
    company.className = 'disabled';

    var companyType = document.getElementById('companyType');
    companyType.readOnly = true;
    companyType.className = 'disabled';

    var companyAddress = document.getElementById('companyAddress');
    companyAddress.readOnly = true;
    companyAddress.className = 'disabled';

    var companyHouseNo = document.getElementById('companyHouseNo');
    companyHouseNo.readOnly = true;
    companyHouseNo.className = 'disabled';

    var companyHouseNoAdd = document.getElementById('companyHouseNoAdd');
    companyHouseNoAdd.readOnly = true;
    companyHouseNoAdd.className = 'disabled';

    var companyZipcode = document.getElementById('companyZipcode');
    companyZipcode.readOnly = true;
    companyZipcode.className = 'disabled';

    var companyCity = document.getElementById('companyCity');
    companyCity.readOnly = true;
    companyCity.className = 'disabled';

    var companyCountry = document.getElementById('companyCountry')
    companyCountry.readOnly = true;
    companyCountry.className = 'disabled';

    var companyPhone = document.getElementById('companyPhone');
    companyPhone.readOnly = true;
    companyPhone.className = 'disabled';

    var companyWebsite = document.getElementById('companyWebsite');
    companyWebsite.readOnly = true;
    companyWebsite.className = 'disabled';

    var companyEmail = document.getElementById('companyEmail');
    companyEmail.readOnly = true;
    companyEmail.className = 'disabled';
}

function sendSuggest() {
    var ss = document.getElementById('search_suggest');
    var ssa = document.getElementById('search_suggest_address');
    var sso = document.getElementById('search_suggest_overlay');
    ss.style.visibility = 'hidden';
    ssa.innerHTML = '';
    sso.style.visibility = 'hidden';

    var registerForm = document.getElementById('registerForm');
    registerForm.submit();
}

function checkCompanyID() {
    var companyID = document.getElementById('companyID')
    {
        if (companyID.value != '')
        {
            disableFields();
        }
    }
}