// ABC Boot Loader Simon: http://simon.incutio.com/archive/2004/05/26/addLoadEvent
function addLoadEvent(func) {
	var oldonload = window.onload;
	if (typeof window.onload != 'function') {
		window.onload = func;
	} else {
		window.onload = function() {
			oldonload();
			func();
		}
	}
}


function ShowUtils() {
	new Effect.Phase('authorinfo');
	$("showinfo").style.display = "none";
	$("hideinfo").style.display = "";
}

function HideUtils() {
	new Effect.Phase('authorinfo');
	$("showinfo").style.display = "";
	$("hideinfo").style.display = "none";
}


// Manipulation of cookies (credit: http://www.webreference.com/js/column8/functions.html)
function setCookie(name, value, expires, path, domain, secure) {
  var curCookie = name + "=" + escape(value) +
      ((expires) ? "; expires=" + expires.toGMTString() : "") +
      ((path) ? "; path=" + path : "") +
      ((domain) ? "; domain=" + domain : "") +
      ((secure) ? "; secure" : "");
  document.cookie = curCookie;
}

function getCookie(name) {
  var dc = document.cookie;
  var prefix = name + "=";
  var begin = dc.indexOf("; " + prefix);
  if (begin == -1) {
    begin = dc.indexOf(prefix);
    if (begin != 0) return null;
  } else
    begin += 2;
  var end = document.cookie.indexOf(";", begin);
  if (end == -1)
    end = dc.length;
  return unescape(dc.substring(begin + prefix.length, end));
}

function deleteCookie(name, path, domain) {
  if (getCookie(name)) {
    document.cookie = name + "=" +
    ((path) ? "; path=" + path : "") +
    ((domain) ? "; domain=" + domain : "") +
    "; expires=Thu, 01-Jan-70 00:00:01 GMT";
  }
}

function ValidateNo( NumStr, String )
        {
		   for( var Idx = 0; Idx < NumStr.length; Idx ++ )
			   {
                  var Char = NumStr.charAt( Idx );
                  var Match = false;
                  for( var Idx1 = 0; Idx1 < String.length; Idx1 ++)
                     {
                       if( Char == String.charAt( Idx1 ) )
                          Match = true;
                     }
                       if ( !Match )
                          return false;
                }
            return true;
        }

function ValidateEmail( Email )
		{	
			var atCharPresent = false;
			var dotPresent = false;
				for ( var Idx = 0; Idx < Email.length; Idx++ )
				{
					if ( Email.charAt ( Idx ) == '@' )
					atCharPresent = true;
					if ( Email.charAt ( Idx ) == '.' )
					dotPresent = true;
				}
				if ( !atCharPresent || !dotPresent )
				return false;
			return true;
		}

	function emailCheck (emailStr) {
		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) {
		return false
		}
		var user=matchArray[1]
		var domain=matchArray[2]
		if (user.match(userPat)==null) {
		return false
		}
		var IPArray=domain.match(ipDomainPat)
		if (IPArray!=null) {
			  for (var i=1;i<=4;i++) {
			    if (IPArray[i]>255) {
				return false
			    }
		    }
	    return true
	}

var domainArray=domain.match(domainPat)

if (domainArray==null) {

    return false

}

var atomPat=new RegExp(atom,"g")

var domArr=domain.match(atomPat)

var len=domArr.length

if(len==1 || len>4){return false;}

if(len==2)

	{	

		var domname1=domArr[domArr.length-1]

		if (domname1.length<2 || domname1.length>3){return false} 

		if(!ValidateNo(domname1,'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ')){return false;}

	}

else if(len==3)

	{

		var domname1=domArr[domArr.length-1]

		var domname2=domArr[domArr.length-2]

		if (domname1.length<2 || domname1.length>3){return false} 

		if (domname2.length<2 || domname2.length>3){return false}

		if(!ValidateNo(domname1,'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ')){return false;}

		if(!ValidateNo(domname2,'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ')){return false;}

	}

else if(len==4)

	{

		var domname1=domArr[domArr.length-1]

		var domname2=domArr[domArr.length-2]

		var domname3=domArr[domArr.length-3]

		if (domname1.length<2 || domname1.length>3){return false} 

		if (domname2.length<2 || domname2.length>3){return false}

		if (domname3.length<2){return false}

		if(!ValidateNo(domname1,'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ')){return false;}

		if(!ValidateNo(domname2,'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ')){return false;}

		if(!ValidateNo(domname3,'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890')){return false;}

	}



 if(ValidateNo(emailStr,'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789.-_@'))

{

		var elen=emailStr.length;

		var temp=new Array();

		temp[0]='_@';

		temp[1]='@_';

		temp[2]='-@';

		temp[3]='@-';

		temp[4]='_.';

		temp[5]='._';

		temp[6]='-.';

		temp[7]='.-';

		temp[8]='..';

		temp[9]='--';

		temp[10]='__';

		temp[11]='-_';

		temp[12]='_-';

		temp[13]='.@';

		temp[14]='@.';

		temp[15]='@@';



		var temp1=new Array();

		temp1[0]='.';

		temp1[1]='-';

		temp1[2]='_';

		temp1[3]='@';

			

			for(j=0,i=0;j<4;j++)

			{

			if(emailStr.substr(i,1)== temp1[j])

				{return false;}

			}

	

			for(j=0;j<16;j++)

			{

			if(emailStr.indexOf(temp[j])>0)

				{return false;}

			}

}

else

	{return false;}





if (len<2) {

   var errStr="This address is missing a hostname."

   return false
}
return true;
}

 function validate(  )
        {
                var QuestionForm = this.document.QuestionForm;
                if ( QuestionForm.NAME.value == "" )
                {
                       alert( "Please Enter Name" );
                       QuestionForm.NAME.focus( );
                       return false;
                }
                if ( QuestionForm.AGE.value == "" )
                {
                       alert( "Please Enter Age" );
                       QuestionForm.AGE.focus( );
                       return false;
                }
                if( !ValidateNo( QuestionForm.AGE.value, "0123456789" ) )
                {
                       alert("Invalid Age " + QuestionForm.AGE.value);
                       QuestionForm.AGE.focus( );
                       return false;
                }
                else
                {
                       var age = parseInt( QuestionForm.AGE.value );
                       if ( age < 16 )
                       {
                               alert( "Invalid Age " +  QuestionForm.AGE.value + ".  Minimum age allowed is 16" );
                               QuestionForm.AGE.focus( );
                               return false;
                       }
                      
                }
               
				if(QuestionForm.GENDER[0].checked==false && QuestionForm.GENDER[1].checked==false)
				{
					alert("Please select your gender.");QuestionForm.GENDER[0].focus();return false;
				}
				if (QuestionForm.EMAIL.value=="")
					{alert("Please enter your email ID.");QuestionForm.EMAIL.focus();return false;}

				if(QuestionForm.EMAIL.value!="")
				{
					if(emailCheck(QuestionForm.EMAIL.value)==false)
					{
						alert ("Please enter a valid email ID.");QuestionForm.EMAIL.focus();return false;
					}
					if(ValidateEmail(QuestionForm.EMAIL.value)==false)
					{
						alert ("Please enter a valid email ID.");QuestionForm.EMAIL.focus();return false;
					}
				}
				if(QuestionForm.RELIGION.value == 0)
				{
					alert("Please select your religion.");QuestionForm.RELIGION.focus();return false;
				}
				if ( QuestionForm.QUESTION.value == "" )
				{
                        alert( "Please enter your question in detail" );
                        QuestionForm.QUESTION.focus( );
                        return false;
				}
		return true;
	}