/*----------------------------------------------------
	
	jsONLOAD.js
	
----------------------------------------------------*/

var isresponse;

$(document).ready(function(){
	
	var bodyid = $('body').attr('id');
	
	// A. Close Response Messages
	//------------------------------------------------------------------------------------------

	$('.msg-response').bind("click", function(){
		if($('.msg-response').is(':visible')){
			$(".msg-response").slideUp();
		}
	});
	
	// B. In Page Links
	//------------------------------------------------------------------------------------------
	
	$('a.in-link').click(function(){  
 		if(location.pathname.replace(/^\//,'') == this.pathname.replace(/^\//,'') && location.hostname == this.hostname){
			var $target = $(this.hash);
			$target = $target.length && $target || $('[name=' + this.hash.slice(1) +']');
			if($target.length){
				var targetOffset = $target.offset().top;
				$('html,body').animate({scrollTop: targetOffset}, 900);
				return false;
			}
		}  
  	});
	
	// F. Comment Validation
	//------------------------------------------------------------------------------------------	
	
	$('#comment-submit').hide();
	$('#comment-submit').after('<a id="comment-link-button">Send<\/a>')
	$('#comment-link-button').click(function(){
		var form = $(this).parent().parent().attr('id');
		formValidation(form);
	});

	
});


// 01. trim
//------------------------------------------------------------------------------------------

function trim(txt){
	var str = txt.replace(/^\s+/,'');
	for (var i = str.length - 1; i >= 0; i--) {
		if (/\S/.test(str.charAt(i))) {
			str = str.substring(0, i + 1);
			break;
		}
	}
	return str;	
}


// 03. formValidation
//------------------------------------------------------------------------------------------

function formValidation(id){
	
	isresponse = false;
	if($('#admintest').val() != 'true'){
		$('.warning').removeClass('warning');
		$("#"+id+" input[type='text']").each(function(){
			if(!$(this).hasClass('optional')){
				inputValidation($(this).attr('id'));
			}
		});
		$("#"+id+" textarea").each(function(){
			if(!$(this).hasClass('optional')){
				inputValidation($(this).attr('id'));
			}
		});
	}
	if(isresponse == false){
		$('#'+id).submit();
	}

}


// 04. inputValidation
//------------------------------------------------------------------------------------------

function inputValidation(id){
	if($('#'+id).val()=="" && id != 'security'){
		msgResponse(id);
		$('#'+id).addClass('warning');
	}else if($('#'+id).val()!="" && id == 'security'){
		if(isresponse == false){
			msgResponse('security','Please ensure the hidden security field is empty');
		}
		$('#'+id).addClass('input_warning');
	}
	if(id == 'email'){
		emailValidation(id);
	}
	
}


// 05. emailValidation
//------------------------------------------------------------------------------------------

function emailValidation(obj){
	var emailStr = $('#'+obj).val()
	var emailPat=/^(.+)@(.+)$/;
	var specialChars="\\(\\)!£$%^&*()+='#~?<>@,;:\\\\\\\"\\.\\[\\]";var validChars="\[^\\s" + specialChars + "\]";var quotedUser="(\"[^\"]*\")";var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/
	var atom=validChars + '+';var word="(" + atom + "|" + quotedUser + ")";var userPat=new RegExp("^" + word + "(\\." + word + ")*$");var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$");var matchArray=emailStr.match(emailPat)
	if ((matchArray==null) && isresponse==false){message(obj,"Email address seems incorrect (check @ and .'s)")}
	if (isresponse==false){var user=matchArray [1];var domain=matchArray [2];if (user.match(userPat)==null){message(obj,"The username doesn't seem to be valid.")}}
	if (isresponse==false){var IPArray=domain.match(ipDomainPat);if (IPArray!=null){for (var j=1;j<=4;j++){if (IPArray[j]>255){message(obj,"Destination IP address is invalid!")}}}}
	if (isresponse==false){var domainArray=domain.match(domainPat);if (domainArray==null){message(obj,"The domain name doesn't seem to be valid.")}}
	if (isresponse==false){var atomPat=new RegExp(atom,"g");var domArr=domain.match(atomPat);var len=domArr.length;if (domArr[domArr.length-1].length<2 || domArr[domArr.length-1].length>3){message(obj,"The address must end in a three-letter domain, or two letter country.")}}
	if ((len<2) && isresponse==false){msgResponse(obj,"This address is missing a hostname!")}
}


// 06. msgResponse
//------------------------------------------------------------------------------------------

function msgResponse(id,msg){

	if(!msg){
		msg = "Please ensure you have entered all the required information";
	}
	if(isresponse == false){
		$('#'+id).parent().parent().before("<div class='msg-error' id='msg-response' style='display:none;'>"+msg+"<span>&nbsp;</span></div>");
		$('#msg-response').slideDown();
		isresponse = true;
		$('#msg-response').bind("click", function(){
			if($('#msg-response').is(':visible')){
				$("#msg-response").remove();
			}
		});
	}
	
}
