/* nbc learn summit (nlsummit) js library
 * $Revision: 5006 $
 * $Id: summit.js 5006 2010-06-14 05:13:53Z rcrathore $ 
 */
var nlsummit ={} ;

nlsummit.U = {
	defaultEmptyOK : false,
	whitespace : " \t\n\r",
	pEmptyEmail: "Please enter Email Address",
	pEmail : "Please enter a valid email address",	
	mPrefix : "Please enter ",
	mSuffix : "",
	siteInitialize : function() {
		/* prevents dotted outline around clicked elements in firefox */
	    window.onclick = function(theEvent)
	    {
	            
	    		var $target = $(theEvent.target);

	            doBlur = true;
	            if ($target.is("input") && $target.attr("type") == "image") {
	            		doBlur = true;
	            		
	            } else if ($target.is("input") || $target.is("select") || $target.is("textarea") || $target.is("option") || $target.is("embed")) {
	            	doBlur = false;
	            }
	            	
	            if (doBlur) {
	                    theEvent.target.focus = theEvent.target.blur();
	            }
	    }
	},
	
	summitForm : function() {
		var $CVal = this;
		var isValid=true;
		if ($CVal.checkString($('#SignUp_txt').get(0), "Email Address") == false)  {
			isValid= false ;
		} else 	if ($CVal.checkEmail($('#SignUp_txt').get(0), false) == false)  {
			isValid= false ;
		}
		
		if (isValid) {
			
		 $('#summitForm').ajaxSubmit({ 
		    	type:      'GET', 
		    	dataType:  'html',
		    	timeout:   30000,
		    	async : true,
				error: function(xhr,message,exception) {
				 	alert("ERROR:\n" + xhr.responseText + "\n" + xhr.status + "\n" + xhr.statusText + "\n" + exception);
				},
				success: function(responseText,status) {
					 
					$('td.signUpText').empty().addClass("style4").attr("align", "center").attr("height", "300").append('<br/><br/><br/>THANK YOU FOR SIGNING UP!<br/><br/>WE WILL BE IN TOUCH AS FURTHER DETAILS ARE CONFIRMED');
			           	
				} 
		 	});
		 
		}
		
		return false ;
	},
	
	summitFormInit : function() {
		var $CVal = this;
		$("form#summitForm").bind('submit', function(event){
			return	$CVal.summitForm() ;
		});
		
		
		$('#SignUp_txt').focus(function(event){
			var val = $('#SignUp_txt').val();
			if(val == 'Type your email address here.' ) {
				$('#SignUp_txt').val('');
			}
			$CVal.hideError(event.target);
		});
					 
		$('#SignUp_txt').blur(function(event){
			var val = $.trim($('#SignUp_txt').val());	
			if (val == '') {
				$('#SignUp_txt').val('Type your email address here.'); 
			}
		});
	},
	
	scrollUp : function() {
		if ($.browser.msie && $.browser.version.substr(0,1)<7) {
			window.scroll(0,25);
		}
		return true;	
	},
	
	isEmpty : function (s)
	
	{  
		return ((s == null) || (s.length == 0));
	},
	
	isLetter : function (c)
	
	{   
		return ( ((c >= "a") && (c <= "z")) || ((c >= "A") && (c <= "Z")) );
	},
	
	isWhitespace : function (s)
	
	{   
		var i;
	
	    if (this.isEmpty(s)) return true;
	
	    for (i = 0; i < s.length; i++)
	    {
	        var c = s.charAt(i);
	
	        if (this.whitespace.indexOf(c) == -1) return false;
	    }
	
	    return true;
	},
	
	isAlpha : function (s)
	
	{  
		var i;
	
	    for (i = 0; i < s.length; i++)
	    {
	        /*Check that current character is letter.*/
	        var c = s.charAt(i);
	
	        if (!this.isLetter(c)) {
	        	return false;
			}
	    }
	    /*All characters are letters.*/
	    return true;
	},
	
	isvalidEmailChar : function  (s)
	
	{   
		var invalidChars = " /:,;#$%^()+{}[]|\\`~<>\"?" ;
	    
	    if (s == ""){
			return false;
	    }
	    
	    for (e2=0; e2< invalidChars.length; e2++)
	    {
			badChar = invalidChars.charAt(e2)
			if (s.indexOf(badChar,0) != -1)
			{
		    	return false;
			}
	    }
	
	    return true;
	},
	
	isEmail : function  (str)
	
	{   if (this.isEmpty(str))
	       if (arguments.length == 1) return this.defaultEmptyOK;
	       else return (arguments[1] == true);
	
	    if (this.isWhitespace(str)) return false;
	    if (!this.isvalidEmailChar(str)) return false;
	
			var at="@";
			var dot=".";
			var lat=str.indexOf(at);
			var lstr=str.length;
			var ldot=str.indexOf(dot);
			
			/* CHECK THAT THERE IS AN '@' CHARACTER IN THE STRING */
			if (str.indexOf(at)==-1){
			   return false;
			}
			
			/* CHECK THERE IS AT LEAST ONE CHARACTER BEFORE AND AFTER THE '@' CHARACTER */
			if (str.indexOf(at)==-1 || str.indexOf(at)==0 || str.indexOf(at)==lstr){
			   return false;
			}
	
			 /* CHECK THAT THERE IS AT LEAST ONE PERIOD IN THE STRING */
			 /* CHECK THERE IS AT LEAST ONE CHARACTER BEFORE AND AFTER THE PERIOD CHARACTER */
			if (str.indexOf(dot)==-1 || str.indexOf(dot)==0 || str.indexOf(dot)==lstr){
			    return false;
			}
	
			 if (str.indexOf(at,(lat+1))!=-1){
			    return false;
			 }
	
			 if (str.substring(lat-1,lat)==dot || str.substring(lat+1,lat+2)==dot){
			    return false;
			 }
	
			 if (str.indexOf(dot,(lat+2))==-1){
			    return false;
			 }
			
			 if (str.indexOf(" ")!=-1){
			    return false;
			 }
			
			 /* CHECK THAT THERE IS A TWO OR THREE CHARACTER SUFFIX AFTER THE LAST PERIOD */
			  var pos = str.lastIndexOf (dot) + 1;
			  
			  if ((lstr - pos ) < 2 || (lstr - pos) > 3) {
			  	return false ;
			  }
			  
			  /* CHECK THAT THERE ARE ONLY ALPHA CHARACTERS AFTER THE LAST PERIOD */
			  if (!this.isAlpha(str.substring(pos))) {
			  	return false ;
			  }
			  				 	
	 		 return true	;				
	},
	
	warnEmpty : function  (theField, s)
	
	{  
	    this.displayError(this.mPrefix + s + this.mSuffix, theField);
	    return false;
	},
	
	warnInvalid : function  (theField, s)
	
	{   
	    this.displayError(s,theField);
	    return false;
	},
	
	checkString : function  (theField, s, emptyOK)
	
	{
	    if (arguments.length == 2) emptyOK = this.defaultEmptyOK;
	    if ((emptyOK == true) && (this.isEmpty(theField.value))) return true;
	    if (this.isWhitespace(theField.value))
	       return this.warnEmpty (theField, s);
	},
	
	checkEmail : function  (theField, emptyOK)
	
	{   if (arguments.length == 1) emptyOK = this.defaultEmptyOK;
	    if ((emptyOK == true) && (this.isEmpty(theField.value))) return true;
	    else if (!this.isEmail(theField.value, false))
	       return this.warnInvalid (theField, this.pEmail);
	},
	
	displayError : function (message,field) 
	
	{
		var errdiv='#'+field.id+"+label.error";
		if ($(errdiv).size() == 0) {
			// alert("Testing: Error div not found for field " + field.id) ;
		} else {
			$(errdiv).html(message).show();
		}
    },
	hideError : function (field) 
	{
    	var errdiv='#'+field.id+"+label.error";
		if ($(errdiv).size()  == 0) {
			// alert("Testing: Error div not found for field " + field.id) ;
		} else {
			$(errdiv).html('').hide();
		}
	}

}
/* triggered at page load */
window.onload = function() {
	nlsummit.U.siteInitialize();
}
