function getEID(elemId) {
    if (document.getElementById(elemId)) {
        return document.getElementById(elemId);
    }
}

function ImageSwap(ImageId, ImageName) {
    var Image1 = getEID(ImageId);
    Image1.src = ImageName;
    window.status = '';
}

function sendlogin(myform) {
    myform.submit();
}

function buyStuff() {
    document.favorites.ItemDo.value = 'Add';
    document.favorites.submit();
}

function displayMovie() {
    var URL = '/movie.htm';
    var windowName = 'Movie';
    var features = 'width=330,height=390,directories=no,location=no,menubar=no,scrollbars=no,status=no,toolbar=no,resizable=yes';
    MovieWindow = open(URL,windowName,features);
    MovieWindow.focus();
}

function displayHazard() {
    var URL = '/hazard.php?display=1';
    var windowName = 'Hazard';
    var features = 'width=250,height=200,directories=no,location=no,menubar=no,scrollbars=no,status=no,toolbar=no,resizable=yes';
    HazardWindow = open(URL,windowName,features);
    HazardWindow.focus();
}

function displayTerms() {
    var URL = '/terms.php?display=1';
    var windowName = 'Terms';
    var features = 'width=670,height=400,directories=no,location=no,menubar=no,scrollbars=yes,status=yes,toolbar=no,resizable=yes';
    TermsWindow = open(URL,windowName,features);
    TermsWindow.focus();
}

function displayPrivacy() {
    var URL = '/privacy.php?display=1';
    var windowName = 'Privacy';
    var features = 'width=670,height=400,directories=no,location=no,menubar=no,scrollbars=yes,status=yes,toolbar=no,resizable=yes';
    privacyWindow = open(URL,windowName,features);
    privacyWindow.focus();
}

function deleteTemplate() {
    if (confirm('Are you sure?')) {
        return true;
    } else {
        return false;
    }
}

function deleteLocation() {
    if (confirm('Are you sure you want to delete this location?')) {
        return true;
    } else {
        return false;
    }
}

function checkmyform() {
    return true;
}

function checkContact() {
    var errmsg = '';

    if (document.Contact.fname.value == '') {
        errmsg = errmsg + 'Please enter a first name\n';
    }
    if (document.Contact.lname.value == '') {
        errmsg = errmsg + 'Please enter a last name\n';
    }
    if (document.Contact.elements[3].value == '' || document.Contact.elements[4].value == '' || document.Contact.elements[5].value == '') {
        errmsg = errmsg + 'Please enter a phone number\n';
    }
    if (document.Contact.elements[7].value == '' || document.Contact.elements[8].value == '' || document.Contact.elements[9].value == '') {
        errmsg = errmsg + 'Please enter a fax number\n';
    }
    if (document.Contact.email.value == '') {
        errmsg = errmsg + 'Please enter an email address\n';
    }
    if (document.Contact.cur_step.value == 1) {
        if (document.Contact.password.value == '') {
            errmsg = errmsg + 'Please enter a password\n';
        }
        if (document.Contact.confirm.value == '') {
            errmsg = errmsg + 'Please confirm your password\n';
        }
    }

    if (errmsg == '') {
        return true;
    } else {
        alert(errmsg);
        return false;
    }
}

function checkLocation() {
    var errmsg = '';

    if (document.Location.name.value == '') {
        errmsg = errmsg + 'Please enter a description\n';
    }
    if (document.Location.org.value == '') {
        errmsg = errmsg + 'Please enter an organization\n';
    }
    if (document.Location.attn.value == '') {
        errmsg = errmsg + 'Please enter an attention line\n';
    }
    if (document.Location.addr1.value == '') {
        errmsg = errmsg + 'Please enter an address line 1\n';
    }
    if (document.Location.city.value == '') {
        errmsg = errmsg + 'Please enter a city\n';
    }
    if (document.Location.state.value == '') {
        errmsg = errmsg + 'Please choose a state\n';
    }
    if (document.Location.zip.value == '') {
        errmsg = errmsg + 'Please enter a zip code\n';
    }

    if (document.Location.addr_bill.checked === false && document.Location.addr_ship.checked === false) {
        errmsg = errmsg + 'Please choose an address type\n';
    }

    if (errmsg == '') {
        return true;
    } else {
        alert(errmsg);
        return false;
    }
}

function validator() {
    var errmsg = '';

    if (document.catalog.firstname.value == '') {
        errmsg = errmsg + 'Please enter your First Name.\n';
    }
    if (document.catalog.lastname.value == '') {
        errmsg = errmsg + 'Please enter your Last Name.\n';
    }
    if (document.catalog.phone.value == '') {
        errmsg = errmsg + 'Please enter your Phone Number.\n';
    }
    if (document.catalog.email.value == '') {
        errmsg = errmsg + 'Please enter your e-mail address.\n';
    }
    if (document.catalog.addr1.value == '') {
        errmsg = errmsg + 'Please enter your street address.\n';
    }
    if (document.catalog.city.value == '') {
        errmsg = errmsg + 'Please enter your City.\n';
    }
    if (document.catalog.state.value == '') {
        errmsg = errmsg + 'Please enter your State.\n';
    }
    if (document.catalog.zip.value == '') {
        errmsg = errmsg + 'Please enter your Zip Code.\n';
    }

    if (errmsg == '') {
        document.catalog.submit();
        return true;
    } else {
        alert(errmsg);
        return false;
    }
}

function contest_validator() {
    var errmsg = '';

    for (var i = 0; i < 12; i++) {
        el = getEID('answer_' + i);
        if (el.value == '') {
            el.focus();
            alert('Please answer all questions');
            return false;
        }
    }
    if (document.catalog.firstname.value == '') {
        errmsg = errmsg + 'Please enter your First Name.\n';
    }
    if (document.catalog.lastname.value == '') {
        errmsg = errmsg + 'Please enter your Last Name.\n';
    }
    if (document.catalog.orgname.value == '') {
        errmsg = errmsg + 'Please enter your Business Name or Organization.\n';
    }
    if (document.catalog.addr1.value == '') {
        errmsg = errmsg + 'Please enter your street address.\n';
    }
    if (document.catalog.city.value == '') {
        errmsg = errmsg + 'Please enter your City.\n';
    }
    if (document.catalog.state.value == '') {
        errmsg = errmsg + 'Please enter your State.\n';
    }
    if (document.catalog.zip.value == '') {
        errmsg = errmsg + 'Please enter your Zip Code.\n';
    }
    if (document.catalog.phone.value == '') {
        errmsg = errmsg + 'Please enter your Phone Number.\n';
    }
    if (document.catalog.email.value == '') {
        errmsg = errmsg + 'Please enter your e-mail address.\n';
    }

    if (errmsg == '') {
        document.catalog.submit();
        return true;
    } else {
        alert(errmsg);
        return false;
    }
}

/////////////////////////////////////////

var request = null;

function appendSelectOptions(sel, _keys, _values) {
    if (_values === null || _values.length === 0) { return; }
    var opt = null;
    for (var i = 0; i < _values.length; i++) {
        opt = document.createElement("option");
        opt.appendChild(document.createTextNode(_values[i]));
        opt.value = _keys[i];
        sel.appendChild(opt);
    }
}

function resetSelect(elObject) {
    if (elObject !== null && elObject.hasChildNodes()) {    
        while (elObject.childNodes.length>=1) {
            elObject.removeChild(elObject.lastChild);
        }
    }
}

function listAccounts (selId) {
    var uid = getEID("uid").value;
    var acctType = getEID("acctType").value;
    var url = "/services/custAccountListJSON.php?uid=" + uid + "&showMine=0&acctType=" + acctType;
    resetSelect(getEID(selId));

    var asynchronous = new Asynchronous();
    asynchronous.complete = new Function("status", "statusText", "responseText", "responseXML", "var selEl = getEID('" +selId+ "'); var keysnvals = eval(responseText); appendSelectOptions(selEl, keysnvals, keysnvals);");

    asynchronous.get(url);
}

function showMe (eid) {
    var el = getEID(eid);
    el.style.display = "block";
    el.style.visibility = "visible";
}
function hideMe (eid) {
    var el = getEID(eid);
    el.style.display = "none";
    el.style.visibility = "hidden";
}

function previewAccounts (selAcctType, selPreview) {
    var acctType = getEID(selAcctType).value;
    if (! acctType) {
        alert('Please select account type first.');
        return;
    }
    showMe('previewDiv');

    var url = "/services/custAccountListAll.php?acctType=" + acctType;
    resetSelect(getEID(selPreview));

    var asynchronous = new Asynchronous();
    asynchronous.complete = new Function("status", "statusText", "responseText", "responseXML", "var selEl = getEID('" +selPreview+ "'); var keysnvals = eval(responseText); appendSelectOptions(selEl, keysnvals, keysnvals);");

    asynchronous.get(url);
}

/* remove any existing children from an Element object */
function reset(elObject){
    if (elObject !== null && elObject.hasChildNodes()){    
        while (elObject.childNodes.length) {
            elObject.removeChild(elObject.firstChild);
        }
    }
}

/* event handler for XMLHttpRequest */
function handleResponse(){
    try{
        if (request.readyState == 4){
            if (request.status == 200){
                var resp =  request.responseText;
                if (resp !== null){
                    var newsel = document.getElementById("selacct");
                    reset(newsel);
                    newsel.innerHTML = resp;
                }
            } else {
                //request.status is 503  if the application isn't available; 500 if the application has a bug
                alert(
                    "A problem occurred with communicating between the XMLHttpRequest object and the server program.");
            }
        }//end outer if
    } catch (err)   {
        alert("It does not appear that the server is available for this application. Please"+
              " try again very soon. \nError: "+err.message);
    }
}

/* Initialize a Request object that is already constructed */
function initReq(reqType,url,bool){
    try{
        /* Specify the function that will handle the HTTP response */
        request.onreadystatechange=handleResponse;
        request.open(reqType,url,bool);
        request.send(null);
    } catch (errv) {
        alert(
            "The application cannot contact the server at the moment. "+
            "Please try again in a few seconds." );
    }
}

/*
 Wrapper function for constructing a Request object.
 Parameters:
  reqType: The HTTP request type such as GET or POST.
  url: The URL of the server program.
  asynch: Whether to send the request asynchronously or not.
*/
function httpRequest(reqType,url,asynch){
    //Mozilla-based browsers
    if (window.XMLHttpRequest){
        request = new XMLHttpRequest();
    } else if (window.ActiveXObject){
        request = new ActiveXObject("Msxml2.XMLHTTP");
        if (! request){
            request = new ActiveXObject("Microsoft.XMLHTTP");
        }
     }
    //the request could still be null if neither ActiveXObject
    //initializations succeeded
    if (request){
       initReq(reqType,url,asynch);
    }  else {
        alert("Your browser does not permit the use of all of this application's features!");
    }
}

function generateList(obj){
    if (obj === null ) {
        return;
    }
    var sm = document.getElementById('showMine').value;
    var atid = document.getElementById('acctType').value;
    var lact = document.getElementById('lastAccount').value;
    var url = "/services/custAccountList.php?showMine=" + sm + "&acctType=" + atid + "&lastAcct=" + lact;

    httpRequest("POST",url,true);
}

function handleShipAddress( status, statusText, responseText, responseXML) {
    var data = eval(responseText);

    getEID("shipOrg").innerHTML   = data[3];
    getEID("shipAttn").innerHTML  = data[4];
    getEID("shipAddr2").innerHTML = data[6];
    getEID("shipCity").innerHTML  = data[7];
    getEID("shipState").innerHTML = data[8];
    getEID("shipZip").innerHTML   = data[9];

    getEID("elshiporg").value   = data[3];
    getEID("elshipattn").value  = data[4];
    getEID("elshipaddr2").value = data[6];
    getEID("elshipcity").value  = data[7];
    getEID("elshipstate").value = data[8];
    getEID("elshipzip").value   = data[9];
}

function refreshShipAddress() {
    var lid = getEID("selShipLid");
    var url = "/services/custShipAddress.php?lid=" + encodeURIComponent(lid.value);

    var asynchronous = new Asynchronous();
    asynchronous.complete = handleShipAddress;

    asynchronous.post(url);
}

