var ajax = new Ajax();

function submitInfo() {
    
    // generate random num to disable cache
    rand = "rNum=" + randNum(0,1000) + "&";
    
    var cForm = document.getElementById('contactform');   
    
    // put all the form data into query string format
    formData = formData2QueryString(cForm);
     
    
    //  alert(formfields)
    ajax.doGet('/xres/php/form.php?' + rand + formData, showResult);
}



function showResult(str) {
   
   if (str == "success") {
   
     var resultDiv = document.getElementById('main-content');
  /* 
    if (resultDiv.firstChild) {
        resultDiv.removeChild(resultDiv.firstChild);
    }
    resultDiv.appendChild(document.createTextNode(str));
    */
    
    var pre = "<div id='intro'><h1>Thank you!</h1></div>"
    var success = "<p>Thank you for your interest in TMA. Your request has been successfully submitted.</p>"
    
    resultDiv.innerHTML = pre + success;
}

   else {
        var resultDiv = document.getElementById('errordiv');
  /* 
    if (resultDiv.firstChild) {
        resultDiv.removeChild(resultDiv.firstChild);
    }
    resultDiv.appendChild(document.createTextNode(str));
    */
    
    var pre1 = ""
    var pre2 = "<div id='errormsg'><p><strong>There was an error with your form submission. Please try again.</strong></p>"
    var post = "</div>"
    alert(str);
    resultDiv.innerHTML = pre2 + str + post;
   }
   
   }

function randNum(min, max)
{
  return min + Math.floor(Math.random() * (max - min + 1));
}


// validateForm requirements

// first class must be "required" e.g. class="required ..."
// second class must be the type specified in the switch statement below e.g. class="required zip"
// each required field must be followed by <span class="errortext"></span>

function validateForm() {

    var errorData = new Array();
    count = 0;


     var cForm = document.getElementById('contactform');
    
    for (i=0; i < cForm.length; i++) {
        
        validationResult = true;
        
        eclass = cForm.elements[i].className;
        evalue = cForm.elements[i].value;
        eID = cForm.elements[i].id;
        
        formEl = cForm.elements[i];
        
        if (eclass.indexOf('required') != -1) {
            
            // alert(eclass);
            formEl.style.borderColor = "#369";
            
            textel = formEl.nextSibling;
                   
            if (textel.className == "errortext") {
            
                if (textel.firstChild) {
                    textel.removeChild(textel.nextSibling.firstChild);
                } 
            textel.appendChild(document.createTextNode(errorData[i+1]));
            
            }
            
            else {
            
                if (textel.nextSibling.firstChild) {
                    textel.nextSibling.removeChild(textel.nextSibling.firstChild);
                } 

            }            
                classes = eclass.split(' ');
            
            reqtype = classes[1];
            //alert(reqtype);
            
            switch(reqtype) {
            
                case "email":
               // alert("we have email");
                    validationResult = isEmail(evalue);
                    break;
                    
                case "name":
                 //   alert("we have first name");
                    validationResult = isText(evalue, "Please enter your name.");
                    break;
                    
                case "tma":
                  //  alert("we have last name");
                    validationResult = isText(evalue, "Please tell us what you hope to get out of TMA.");
                    break;
                    
                case "title":
                  //  alert("we have last name");
                    validationResult = isText(evalue, "Please enter your title.");
                    break;
                    
                case "sponsor":
                  //  alert("we have last name");
                    validationResult = isText(evalue, "Please enter your sponsor.");
                    break;
                    
                case "position":
                  //  alert("we have last name");
                    validationResult = isText(evalue, "Please describe your position.");
                    break;
                    
                 case "company":
                  //  alert("we have last name");
                    validationResult = isText(evalue, "Please enter your company name.");
                    break;
                    
                case "phone":
                    validationResult = isPhone(evalue);
                    break;
                    
            
            } // switch
            
            if (validationResult != true) {
                //alert(validationResult)
                
                // alert(count)
                
                errorData[count] = eID;
                
                ++count;
                
                errorData[count] = validationResult;
                
                ++count;
                
                //alert(count)
   
            } // if
   
        } // if
            
    
    } // for

    if (errorData[1]) {
        // we have at least one error
        
        showError(errorData)
        
    }
    else {
        // all data is clean
        
        submitInfo()
    }


} // validateForm()


function showError(errorData) {
    var resultDiv = document.getElementById('resultDiv');
   // alert("len" + errorData.length);

   for (i=0; i < errorData.length; ++i) {  

        
        formEl = document.getElementById(errorData[i]);
        errMsg = errorData[i+1];
       
        formEl.style.borderColor = "#900";
        
        
        textel = formEl.nextSibling;
               
        if (textel.className == "errortext") {
        
            if (textel.firstChild) {
                textel.removeChild(textel.nextSibling.firstChild);
            } 
        textel.appendChild(document.createTextNode(errorData[i+1]));
        
        }      
        else {
        
            if (textel.nextSibling.firstChild) {
                textel.nextSibling.removeChild(textel.nextSibling.firstChild);
            } 
        
        textel.nextSibling.appendChild(document.createTextNode(errorData[i+1]));
        
        } // else
               
      i = i+1;
        
    } // for 
} // showError()


function isEmail(input, error) {

if (!error) {
    error = "Please enter a valid email address."
}

    var pattern = /^[\w\.\-]+@([\w\-]+\.)+[a-zA-Z]+$/;
    
    if (pattern.test(input)) {
        return true;
    }
    else {
    return error;
    }
}

function isText(input, error) {

    if (!error) {
        error = "Please complete this field."
    }

    if (input.length == "" || /^\s+$/.test(input)) {
        return error;
    }
    else {
        return true;
    }
}

function isDropdown(eid, error) {

input = document.getElementById(eid);
//alert(input.value);



    if (!error) {
        error = "Please select an item from this field."
    }

    if (input.value != "") {
        return true;
    }
    else {
        return error;
    }
    
}

function isPhone(input, error) {

//input = document.getElementById(input).value;

    if (!error) {
        error = "Please enter a valid phone number."
    }
    
    var stripped = input.replace(/[\(\)\.\-\ ]/g, '');
	//strip out acceptable non-numeric characters

    if ((input == "") || (isNaN(parseInt(stripped))) || (stripped.length < 10)) {
	   return error;
	}
    
	else {
	    return true;
	}
}

function isZip(input, error) {

input = document.getElementById(input).value;

    countryValue = document.getElementById('country').value;

    if (!error) {
        error = "Please enter a valid zip code."
    }
    

    if (countryValue == "US" || countryValue == "") {
    
     var stripped = input.replace(/[\(\)\.\-\ ]/g, '');
	//strip out acceptable non-numeric characters
    
        if ( (input == "") || (isNaN(parseInt(stripped))) || ((stripped.length != 9) && (stripped.length != 5)) ) {
           return error;
        }
        
        else {
            return true;
        }
    }
    else {
        return true;
    }
	
	
}

function ajaxContact() {
    var formEl = document.getElementById('contactform');
    addEvent(formEl, 'submit', validateForm, false);
    formEl.onsubmit = function() { return false; }
}

addEvent(window, 'load',ajaxContact, false);
