// JavaScript Document

document.observe("dom:loaded", function (e) {
	document.getElementById("overlay_div").style.display = "none";			
});

function validate_agreement(){
    var error = "";
	if($('Agreement').checked == true){
		return error;
	}else{
		alert_overlay();
        error = "You don't agree?\n";		
		return error;
	}
}


function toggle_overlay(){
	if(!box_is_open()){
		open_box();
	}
	else if(box_is_open()){
		close_box();
	}
}

function alert_overlay(){
	if(box_is_open()){
		highlight_box();
	}
	else if(!box_is_open()){
		open_box();
		highlight_box();
	}
}

function check_agree(){
	if($('Agreement').checked){
		return true;
	}
	else{
        if(!box_is_open()){
			open_box();
		}
	}return false;
}

function open_box() {
		$('overlay_submit').innerHTML='Hide Disclaimer';
		new Effect.BlindDown ('overlay_div', {duration: 1});		
}


function close_box() {
		$('overlay_submit').innerHTML='Show Disclaimer';
		new Effect.BlindUp('overlay_div', {duration: 1});
}


function highlight_box() {
		$('overlay_submit').innerHTML='Hide Disclaimer';
		new Effect.Highlight('iagree', {duration: 1});
}


function box_is_open() {
		return $('overlay_div').visible();
}

function validateFormOnSubmit(theForm) {
    var reason = "";
    check_default_values();            
    reason += validateEmpty(theForm.Name);
    reason += validateEmail(theForm.Email);
    reason += validatePhone(theForm.Phone);
    reason += validateEmpty(theForm.Message); 
    reason += validate_agreement();
      
    if (reason != "") {
    alert("Some fields need correction:\n" + reason);
    return false;
    }    
    return true;
}

function validateEmpty(fld) {
    var error = "";    
    if (fld.value.length == 0 ) {
        fld.style.background = 'Yellow'; 
        error = "Required fields are missing.\n";
    } else {
        fld.style.background = 'White';
    }
    return error;   
}

function trim(s){
    return s.replace(/^\s+|\s+$/, '');
} 

function validateEmail(fld) {
    var error="";
    var tfld = trim(fld.value);                        // value of field with whitespace trimmed off
    var emailFilter = /^[^@]+@[^@.]+\.[^@]*\w\w$/ ;
    var illegalChars= /[\(\)\<\>\,\;\:\\\"\[\]]/ ;
    
    if (fld.value == "") {
        fld.style.background = 'Yellow';
        error = "You didn't enter an email address.\n";
    } else if (!emailFilter.test(tfld)) {              //test email for illegal characters
        fld.style.background = 'Yellow';
        error = "Please enter a valid email address.\n";
    } else if (fld.value.match(illegalChars)) {
        fld.style.background = 'Yellow';
        error = "The email address contains invalid characters.\n";
    } else {
        fld.style.background = 'White';
    }
    return error;
}

function validatePhone(fld) {
    var error = "";
    var stripped = fld.value.replace(/[\(\)\.\-\ ]/g, '');     

   if (fld.value == "") {
        error = "You didn't enter a phone number.\n";
        fld.style.background = 'Yellow';
    } else if (isNaN(parseInt(stripped))) {
        error = "The phone number contains invalid characters.\n";
        fld.style.background = 'Yellow';
    } else if (!(stripped.length == 10)) {
        error = "The phone number is the wrong length. Make sure you included an area code.\n";
        fld.style.background = 'Yellow';
    } else {
        fld.style.background = 'White';
    }
    return error;
}

// Script to remove default values on the contact page
function check_default_values() {	
	var input_name;
	var eform = document.getElementById("emailForm"); 
	var error = "";
	var falseflag = true;
	// Check the INPUT tags
	var input_tags = eform.getElementsByTagName("input"); 
	for (var i = 0; i < input_tags.length; i++) { 
		input_name = format_string(input_tags[i].getAttribute("name"));
		input_value = format_string(input_tags[i].value);
		//DEBUG: alert(input_name + '\n\n\n' + input_value);
		if (input_value == input_name) { 
			input_tags[i].value = '';
			falseflag=false;
		}
	}
	
	// Check the TEXTAREA tags
	var textarea_tags = eform.getElementsByTagName("textarea"); 
	for (var i = 0; i < textarea_tags.length; i++) { 
		textarea_name = format_string(textarea_tags[i].getAttribute("name"));
		textarea_value = format_string(textarea_tags[i].innerHTML);
		//DEBUG: alert(textarea_name + '\n\n\n' + textarea_value);
		if (textarea_value == textarea_name) { 
			textarea_tags[i].innerHTML = '';
			falseflag=false;
		}
	}
	return false;
}

function format_string(str){
		str = str.replace(" ", "_");
		str = str.toLowerCase();
		return str;
}

Event.observe(window, 'load', function() {
    var eform = document.getElementById("emailForm"); 
	var fields = eform.getElementsByTagName("input"); 
	for (var i = 0; i < fields.length; i++) { 
		input_type = fields[i].getAttribute("type");
		if(input_type != 'submit' && input_type != 'reset' && input_type != 'checkbox')
		{
			  input_name = format_string(fields[i].getAttribute("name"));
			  input_value = fields[i].value;
			  SetDefault(fields[i], input_value, input_name)
		}
	}
	
	var tfields = eform.getElementsByTagName("textarea"); 
	for (var i = 0; i < tfields.length; i++) { 
		input_type = tfields[i].getAttribute("type");
		input_name = format_string(tfields[i].getAttribute("name"));
		input_value = tfields[i].innerHTML;
		SetDefaultTextarea(tfields[i], input_value, input_name)
	}
	
	
  });

function SetDefault(id, text, name) {
	  var proctext = format_string(text);
	  id.onfocus = function() {
		  if(format_string(id.value) == proctext) {
			  this.value = '';
		  }
	  }
      id.onblur = function() {
		  if(id.value == '')
		  {
			  this.value=text;
		  }
	  }
}

function SetDefaultTextarea(id, text, name) {
	  var proctext = format_string(text);
	  id.onfocus = function() {
		  if(format_string(id.innerHTML) == proctext) {
			  this.innerHTML = '';
		  }
	  }
      id.onblur = function() {
		  if(id.innerHTML == '')
		  {
			  this.innerHTML=text;
		  }
	  }
}

