
//------------------- INPUT FIELDS -------------------------------------//

addEvent(window, 'load', init, false);

function addEvent(element, eventType, lamdaFunction, useCapture) {
    if (element.addEventListener) {
        element.addEventListener(eventType, lamdaFunction, useCapture);
        return true;
    } else if (element.attachEvent) {
        var r = element.attachEvent('on' + eventType, lamdaFunction);
        return r;
    } else {
        return false;
    }
}

function init() {
    var formInputs = document.getElementsByTagName('input');
	var formTextArea = $('TextMsg');
	var FormButtonSend = $('FormButtonSend');
    for (var i = 0; i < formInputs.length; i++)
	{
        var theInput = formInputs[i];
        
        if (theInput.type == 'text' && theInput.className.match("InputInForm")) {  
            /* Add event handlers */          
            addEvent(theInput, 'focus', clearDefaultText, false);
			addEvent(theInput, 'focus', focusClass, false);
			
            addEvent(theInput, 'blur', replaceDefaultText, false);
            addEvent(theInput, 'blur', normalClass, false);
            /* Save the current value */
            if (theInput.value != '') {
                theInput.defaultText = theInput.value;
            }
        }
    }
	addEvent(formTextArea, 'focus', clearValue, false);
    addEvent(formTextArea, 'blur', valueBack, false);
}

function clearDefaultText(e) {
    var target = window.event ? window.event.srcElement : e ? e.target : null;
    if (!target) return;
    
    if (target.value == target.defaultText) {
        target.value = '';
    }
}

function replaceDefaultText(e) {
    var target = window.event ? window.event.srcElement : e ? e.target : null;
    if (!target) return;
    
    if (target.value == '' && target.defaultText) {
        target.value = target.defaultText;
    }
}

function focusClass(e)
{
	var target = window.event ? window.event.srcElement : e ? e.target : null;
    if (!target) return;
    
    target.className = "FocusClass";
}

function normalClass(e)
{
	var target = window.event ? window.event.srcElement : e ? e.target : null;
    if (!target) return;
    
    target.className = "InputInForm";
}

function textMessageFocus(e)
{
	var target = window.event ? window.event.srcElement : e ? e.target : null;
    if (!target) return;
    
    target.className = "FocusClassArea";	
}

function textMessageBlur(e)
{
	var target = window.event ? window.event.srcElement : e ? e.target : null;
    if (!target) return;
    
    target.className = "TextAreaInForm";	
}

function clearValue()
{
	if( $("TextMsg").value == "message")
	{
		 $("TextMsg").value = "";	
	}
}

function valueBack()
{	
	if( $("TextMsg").value == "")
	{
		 $("TextMsg").value = "message";	
	}
}
//----------------------------------------------------------------------//




//-------------------FORM VALIDATION------------------------------------//

var nbsp = 160;		// non-breaking space char
var node_text = 3;	// DOM text node-type
var emptyString = /^\s*$/ ;
var global_valfield;	// retain valfield for timer thread


function trim(str)
{
  return str.replace(/^\s+|\s+$/g, '');
}

// --------------------------------------------
//                  setfocus
// Delayed focus setting to get around IE bug
// --------------------------------------------

function setFocusDelayed()
{
  //global_valfield.focus();
  global_valfield.select();
}

function setfocus(valfield)
{
  // save valfield in global variable so value retained when routine exits
  global_valfield = valfield;
  setTimeout( 'setFocusDelayed()', 100 );
}


// --------------------------------------------
//                  msg
// Display warn/error message in HTML element.
// commonCheck routine must have previously been called
// --------------------------------------------

function msg(input,   // id of form element
			 inpClass, // class to give to form element
			 fld,     // id of element to display message in
             msgtype, // class to give element ("warn" or "error")
             message) // string to display
{
  // setting an empty string can give problems if later set to a 
  // non-empty string, so ensure a space present. (For Mozilla and Opera one could 
  // simply use a space, but IE demands something more, like a non-breaking space.)
  var dispmessage;
  if (emptyString.test(message)) 
    dispmessage = String.fromCharCode(nbsp);    
  else  
    dispmessage = message;

  var elem = document.getElementById(fld);
  elem.innerHTML = dispmessage; 
  elem.className = msgtype;   // set the CSS class to adjust appearance of message
  
  var inp = document.getElementById(input.id);
  inp.className = inpClass;

}

// --------------------------------------------
//            commonCheck
// Common code for all validation routines to:
// (a) check for older / less-equipped browsers
// (b) check if empty fields are required
// Returns true (validation passed), 
//         false (validation failed) 
//// --------------------------------------------

function commonCheck(valfield,   // element to be validated
                     infofield,  // id of element to receive info/error msg
                     required)   // true if required
{
  if (!document.getElementById) 
    return true;  // not available on this browser - leave validation to the server
 // var elem = document.getElementById(infofield);
 // if (!elem.firstChild) return true;  // not available on this browser 
 // if (elem.firstChild.nodeType != node_text) return true;  // infofield is wrong type of node  

// if (emptyString.test(valfield.id.value)) 
 //{
 if (emptyString.test(valfield.value) ||  valfield.value == "your name" ||  valfield.value == "message") 
 {
    if (required) 
	{
	  if(valfield.id == "NameMsg")
	  {
		 valfield.value = "your name";
	   	 msg (valfield,"InputEmpty",infofield, "FormValidateTextFalse", "required");
	  }
	  if(valfield.id == "TextMsg")
	  {
	     valfield.value = "message";
		 msg (valfield,"TextAreaEmpty",infofield, "FormValidateTextFalse", "required");
	  }
     // setfocus(valfield);
      return false;
    }
 }
 else 
	{ 
	  if(valfield.id == "NameMsg")
	  {
	   	 msg (valfield,"InputInForm",infofield, "FormValidateText", "");
	  }
	  if(valfield.id == "TextMsg")
	  {
		 msg (valfield,"TextAreaInForm",infofield, "FormValidateText", "");
		 
	  }	
      return true;  
    }
}

// --------------------------------------------
//            validatePresent
// Validate if something has been entered
// Returns true if so 
// --------------------------------------------

function validatePresent(valfield,   // element to be validated
                         infofield ) // id of element to receive info/error msg
{
  commonCheck (valfield, infofield, true);
  return true;
}

// --------------------------------------------
//               validateEmail
// Validate if e-mail address
// Returns true if so (and also if could not be executed because of old browser)
// --------------------------------------------

function validateEmail  (valfield,   // element to be validated
                         infofield,  // id of element to receive info/error msg
                         required)   // true if required
{
  commonCheck (valfield, infofield, required);

  var tfld = trim(valfield.value);  // value of field with whitespace trimmed off
  var email = /^[^@]+@[^@.]+\.[^@]*\w\w$/  ;
  if (!email.test(tfld)) {
    msg (valfield,"InputEmpty",infofield, "FormValidateTextFalse", "not a valid e-mail address");
	valfield.value = "e-mail";
    //setfocus(valfield);
    return false;
  }

  var email2 = /^[A-Za-z][\w.-]+@\w[\w.-]+\.[\w.-]*[A-Za-z][A-Za-z]$/  ;
  if (!email2.test(tfld)) 
    msg (valfield,"InputEmpty",infofield, "FormValidateTextFalse", "Unusual e-mail address - check if correct");
  else
    msg (valfield,"InputInForm",infofield, "FormValidateText", "");
  return true;
}

function validateForm(form)
{
	var myForm = $(form);
	var str = "";
	str += validatePresent(myForm.TextMsg,'FormValidateText');
	myForm.TextMsg.style.overflow = "hidden";
	str += validateEmail(myForm.eMail,'FormValidateText',true);
	str += validatePresent(myForm.NameMsg,'FormValidateText');

	if(str == 'truetruetrue' )
	{
		str = sendContact();
	}
	else
	{
		$("FormValidateText").style.display = "block";
		$("FormValidateText").innerHTML = "required";
	}

	return str;
}
//-----------------------------------------------------------//




//------------------- AJAX FUNCTIONS -----------------------------------//
function createXMLHttpRequest()
{
    var req;

  try
  {
    // Firefox, Opera, Safari
    req = new XMLHttpRequest();
  }

  catch (e)
  {
    // Internet Explorer
    try
    {
      //For IE 6
      req = new ActiveXObject("Msxml2.XMLHTTP");
    }

    catch (e)
    {
      try
      {
        //For IE 5
        req = new ActiveXObject("Microsoft.XMLHTTP");
      }

      catch (e)
      {
        alert('Your browser is not IE 5 or higher, or Firefox or Safari or Opera');
      }
    }
  }

  return req;
}
	
var xhr = createXMLHttpRequest();

function sendContact()
{
	var parameters = ("theName="+$("NameMsg").value+"&theMail="+$("eMail").value+"&theMsg="+$("TextMsg").value);
	xhr.open("POST","js_scripts/validateForm.php",true);
	xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	xhr.setRequestHeader("Content-length", parameters.length);
	xhr.setRequestHeader("Connection", "close");
	
	xhr.onreadystatechange = getValidationContent;
	xhr.send(parameters);
}

function getValidationContent()
{
	if(xhr.readyState == 4)
	{
		if(xhr.status == 200)
		{
			var response = xhr.responseText;
			$("ContentInfo").innerHTML = "";
			$("ContactUsContent").innerHTML = response;
		}
	}
	else
	{
		
	}
}