var color1='#fee99a';
var color2='#fff';
var author_valid;
var email_valid;
var url_valid;
var tel_valid;

$(document).ready(function () {
  var validateUsername = $('#validateUsername');
  //Author:
  $('#author').blur(function () {
    var t = this; 
    if (this.value != this.lastValue) {
      if (stringEmpty(t.value)){
	  	document.getElementById("author").style.backgroundColor = color1;
		author_valid=0;
		
	  } else {
	  	document.getElementById("author").style.backgroundColor = color2;
		author_valid=1;
	  }
	  
      
      this.lastValue = this.value;
	  
    }
  });
  
  //Email:
  $('#email').blur(function () {
    var t = this; 
    if (this.value != this.lastValue) {
      checkValidation(t);

      
      this.lastValue = this.value;
	  
    }
  });
  
  
  //Telephone:
  $('#tel').blur(function () {
    var t = this; 
    if (this.value != this.lastValue) {
      
	  if(checkPhone(t.value)){
	  	document.getElementById("tel").style.backgroundColor = color2;
		tel_valid=1;
	  } else {
	  	document.getElementById("tel").style.backgroundColor = color1;
		tel_valid=0;
	  }
      this.lastValue = this.value;
	  
    }
  });
  
  //Comment:
  $('#comment').blur(function () {
    var t = this; 
    if (this.value != this.lastValue) {
      if (stringEmpty(t.value)){
	  	document.getElementById("comment").style.backgroundColor = color1;
		
	  } else {
	  	document.getElementById("comment").style.backgroundColor = color2;
	  }
	  
      
      this.lastValue = this.value;
	  
    }
  });
  

});


function checkValidation(formInput) {


    if (typeof(formInput) != "object") {
        alert("Validation not supported on this browser.");
        return(false);
    }

    var message;

    if (stringEmpty(formInput.value)) {
        message = "Error! There is no input value entered.";
		document.getElementById("email").style.backgroundColor = color1;
		email_valid=0;
		return (false);
		
    } else if (noAtSign( formInput.value )) {
        message = "Error! The address \"" + formInput.value + "\" does not contain an '@' character.";
        document.getElementById("email").style.backgroundColor = color1;
		email_valid=0;
		return (false);
    } else if (nothingBeforeAt(formInput.value)) {
        message = "Error! The address \"" + formInput.value;
        message += "\" must contain at least one character before the '@' character";
        document.getElementById("email").style.backgroundColor = color1;
		email_valid=0;
		return (false);
    } else if (noLeftBracket(formInput.value)) {
        message = "Error! The address \"" + formInput.value;
        message += "\" contains a right square bracket ']',\nbut no corresponding left square bracket '['.";
        document.getElementById("email").style.backgroundColor = color1;
		email_valid=0;
		return (false);
    } else if (noRightBracket(formInput.value)) {
        message = "Error! The address \"" + formInput.value;
        message += "\" contains a left square bracket '[',\nbut no corresponding right square bracket ']'.";
        document.getElementById("email").style.backgroundColor = color1;
		email_valid=0;
		return (false);
    } else if (noValidPeriod(formInput.value)) {
        message = "Error! The address \"" + formInput.value + "\" must contain a period ('.') character.";
        document.getElementById("email").style.backgroundColor = color1;
		email_valid=0;
		return (false);
    } else if (noValidSuffix(formInput.value)) {
        message = "Error! The address \"" + formInput.value;
        message += "\" must contain a two, three or four character suffix.";
        document.getElementById("email").style.backgroundColor = color1;
		email_valid=0;
		return (false);
    } else {
        message = "Success! The email address \"" + formInput.value + "\" validates OK.";
        document.getElementById("email").style.backgroundColor = color2;
		email_valid=1;
		return (false);
    }

    var objType = typeof(formInput.focus);
    if (objType == "object" || objType == "function") {
         formInput.focus();
		 return (false);
    }

    return (false);
}

function checkValid (formField) {
    if ( checkValidation ( formField ) == true ) {
        alert ( 'E-Mail Address Validates OK' );
    }

    return ( false );
}

function stringEmpty (formField) {
    // CHECK THAT THE STRING IS NOT EMPTY
    if ( formField.length < 1 ) {
        return ( true );
    } else {
        return ( false );
    }
}

function noAtSign (formField) {
    // CHECK THAT THERE IS AN '@' CHARACTER IN THE STRING
    if (formField.indexOf ('@', 0) == -1) {
        return ( true )
    } else {
        return ( false );
    }
}

function nothingBeforeAt (formField) {
    // CHECK THERE IS AT LEAST ONE CHARACTER BEFORE THE '@' CHARACTER
    if ( formField.indexOf ( '@', 0 ) < 1 ) {
        return ( true )
    } else {
        return ( false );
    }
}

function noLeftBracket (formField) {
    // IF EMAIL ADDRESS IN FORM 'user@[255,255,255,0]', THEN CHECK FOR LEFT BRACKET
    if ( formField.indexOf ( '[', 0 ) == -1 && formField.charAt (formField.length - 1) == ']') {
        return ( true )
    } else {
        return ( false );
    }
}

function noRightBracket (formField) {
    // IF EMAIL ADDRESS IN FORM 'user@[255,255,255,0]', THEN CHECK FOR RIGHT BRACKET
    if (formField.indexOf ( '[', 0 ) > -1 && formField.charAt (formField.length - 1) != ']') {
        return ( true );
    } else {
        return ( false );
    }
}

function noValidPeriod (formField) {
    // IF EMAIL ADDRESS IN FORM 'user@[255,255,255,0]', THEN WE ARE NOT INTERESTED
    if (formField.indexOf ( '@', 0 ) > 1 && formField.charAt (formField.length - 1 ) == ']')
        return ( false );

    // CHECK THAT THERE IS AT LEAST ONE PERIOD IN THE STRING
    if (formField.indexOf ( '.', 0 ) == -1)
        return ( true );

    return ( false );
}

function noValidSuffix(formField) {
    // IF EMAIL ADDRESS IN FORM 'user@[255,255,255,0]', THEN WE ARE NOT INTERESTED
    if (formField.indexOf('@', 0) > 1 && formField.charAt(formField.length - 1) == ']') {
        return ( false );
    }

    // CHECK THAT THERE IS A TWO OR THREE CHARACTER SUFFIX AFTER THE LAST PERIOD
    var len = formField.length;
    var pos = formField.lastIndexOf ( '.', len - 1 ) + 1;
    if ( ( len - pos ) < 2 || ( len - pos ) > 4 ) {
        return ( true );
    } else {
        return ( false );
    }
}



// Declaring required variables
//var digits = "0123456789";
// non-digit characters which are allowed in phone numbers
//var phoneNumberDelimiters = "()-+";
// characters which are allowed in international phone numbers
// (a leading + is OK)
//var validWorldPhoneChars = phoneNumberDelimiters + "+";
// Minimum no of digits in an international phone no.
//var minDigitsInIPhoneNumber = 6;

function isInteger(s)
{   var i;
    for (i = 0; i < s.length; i++)
    {   
        // Check that current character is number or accepted sign.
        var c = s.charAt(i);
        
		if ( !((c >= "0") && (c <= "9")) && !(( c == "(" ) || ( c == ")" ) || ( c == "-" ) || ( c == "+" )) ){return false;}
		
    }
    // All characters are numbers.
    return true;
}

function trim(s)
{   var i;
    var returnString = "";
    // Search through string's characters one by one.
    // If character is not a whitespace, append to returnString.
    for (i = 0; i < s.length; i++)
    {   
        // Check that current character isn't whitespace.
        var c = s.charAt(i);
        if (c != " ") returnString += c;
    }
    return returnString;
}


function checkPhone (strPhone){
	
	strPhone=trim(strPhone);
	if ( stringEmpty(strPhone) ){ 
	
	return false; 
	} else if (isInteger(strPhone)&& (strPhone.length > 5)){
		return (true);
	} else {
		//alert (strPhone);
		return (false);};
}