function UserDetails(id, htmlElement) {
	this.id = id;
	this.htmlElement = htmlElement;
	this.xml = null;
	
	this.mUserNameExists = false;
	this.mUserErrorMsg = null;
	this.page = "Common";
	this.errorXML = null;
	this.mUserNameValidated = false;
	this.mFocusPassword = false;
	this.mReferralSources = XML.parse(MB.REFERRAL_SOURCES);
//	this.mSelected_heard_about_site=null;
	
	// init method, called by the framework
	this.init = function _init() {}


	// small constant of the next page in the process
	this.NEXT_PAGE = Remote.remoteServerURL + "/menu-items/registration/b_ConfirmRegistration.jsp";
	
	this.repaint = function _repaint()	{
		this.htmlElement.innerHTML = this.componentHtml();
		var AddrHtmlId = getDocElementById("AddressComponent");
    	var AddrComp = componentRegistry.getComponent("AddressComponent");
    	
    	if(AddrComp != null){
      		AddrComp.htmlElement = AddrHtmlId;
    	}
    	if(this.errorXML!=null)	{
    		var lFieldName = this.getFocusElement(this.errorXML);
    		if(lFieldName!="password1"){
    			if(getDocElementById("password1"))
    				getDocElementById("password1").focus();
    		}else{
    			if(getDocElementById("password2"))
    				getDocElementById("password2").focus();
    		}
    		if(getDocElementById(lFieldName))
    			getDocElementById(lFieldName).focus();
    		
    	}
    		if(this.mFocusPassword)	{
    			if(this.mUserNameExists){
    				this.mUserNameExists = false;
    				document.joinnow1.password1.focus();
    				document.joinnow1.username.focus();
    			} else	{
    				document.joinnow1.password2.focus();
    				document.joinnow1.password1.focus();
    			}
    			this.mFocusPassword = false;
    		}
    }
	this.componentHtml = function _componentHtml()	{
		var htmlStr = '';
		switch(this.page)	{
		case 'Common':
		htmlStr = '<FORM NAME="joinnow1" method="POST">' 
				+ '<DIV class=mbCss-body>'
				+ '<IMG src="../../images/titles/join-now.gif"> '
				+ '<DIV class="mbCss-join mbCss-medium-height">'
				+ '<!-- LOGIN INFORMATION TABLE -->'
				+ '<TABLE width=460 cellpadding=0 cellspacing=0 border=0 class="mbCss-form">'
				+ '<TR>'
				+ '<TD colspan=3><DIV class="join-title"><Img src="../../images/titles/login-information.gif" width=144 height=10></DIV></TD>'
				+ '</TR>';
				
		if(!this.mUserNameExists)	{
			htmlStr += '<TR>'
					+ '<TH width=150>Username</TH>'
					+ '<TD width=10></TD>'
			 		+ '<TD width=290><INPUT class="medium" tabindex=1 name="username" id="username" onBlur="doBlur(this,\'checkUserName\')" value="'+(getDocElementById("username")!=null?document.joinnow1.username.value:"")+'"> <SPAN>(at least <font color="red">6 characters</font>)</SPAN></TD>';
		}else	{
			htmlStr += '<TR>'
					+ '<TH width=150>Username</TH>'
					+ '<TD width=10></TD>'
			 		+ '<TD width=290><DIV class="mbCss-error"><INPUT class="medium" tabindex=1 name="username" id="username" onBlur="doBlur(this,\'checkUserName\')" value="'+document.joinnow1.username.value+'"> <SPAN>(at least <font color="red">6 characters</font>)</SPAN><BR>'+this.mUserErrorMsg+'</DIV></TD>'
		}
				
		htmlStr	+= '</TR>'
				+ '<TR>'
				+ '<TH>Password</TH>'
				+ '<TD></TD>'
				+ '<TD><INPUT type="password" tabindex=2 name="password1" id="password1"  value="'+(getDocElementById("password1")!=null?document.joinnow1.password1.value:"")+'"> <SPAN>(at least <font color="red">8 characters</font>,with at least </span><br><span style="padding-left:11em"><font color="red">one number</font> and <font color="red">one capital letter</font>)</SPAN></TD>'
				+ '</TR>'
				+ '<TR>'
				+ '<TH>Verify Password</TH>'
				+ '<TD></TD>'
				+ '<TD><INPUT type="password" name="password2" id="password2" tabindex=3  value="'+(getDocElementById("password2")!=null?document.joinnow1.password2.value:"")+'"></TD>'
				+ '</TR>'
				+ '</TBODY>'
				+ '</TABLE>'
				+ '<BR><br>'
				+ '<!-- Personal information Table -->'
				+ '<TABLE width=460 cellpadding=0 cellspacing=0 border=0 class="mbCss-form">'
				+ '<TR>'
				+ '<TD colspan=3><DIV class="join-title"><Img src="../../images/titles/personal-information.gif" width=169 height=10></DIV></TD>'
				+ '</TR>'
				+ '<TR>'
				+ '<TH width=150>First Name</TH>'
                                + '<TD width=10></TD>'
				+ '<TD width=290><INPUT class="medium" name="firstname" id="firstname" tabindex=4 value="'+(getDocElementById("firstname")!=null?document.joinnow1.firstname.value:"")+'"></TD>'
				+ '</TR>'
				+ '<TR>'
				+ '<TH>Last Name</TH>'
                                + '<TD></TD>'
				+ '<TD><INPUT class="medium" name="lastname" id="lastname" tabindex=5  value="'+(getDocElementById("lastname")!=null?document.joinnow1.lastname.value:"")+'" ></TD>'
				+ '</TR>'
				+ '<TR>'
				+ '<TH>E-Mail</TH>'
                                + '<TD></TD>'
				+ '<TD><INPUT class="medium" name="email" id="email" tabindex=6 value="'+(getDocElementById("email")!=null?document.joinnow1.email.value:"")+'" ></TD>'
				+ '</TR>'
				+ '<TR>'
				+ '<TH>Confirm E-Mail</TH>'
                                + '<TD></TD>'
				+ '<TD><INPUT class="medium" tabindex=7 name="confirm-email" id="confirm-email" value="" ><br /><img src="../../images/warning-ico.gif"> A valid e-mail is required to open an account.</TD>'
				+ '</TR>'
				+ '<TR>'
                                + '<TD colspan=3>'
				+ '<span class="component" id="AddressComponent">'
				+ ComponentHtml("AddressEntryComponent","AddressComponent")
				+ '</span>'
				+ '</TD>'
				+ '</TR>'
    			+ '<TR>'
    			+ '<TH>Telephone</TH>'
                        + '<TD width=10></TD>'
    			+ '<TD valign=top width=290><INPUT class="medium" tabindex=20 name="telephone"  value="'+(getDocElementById("telephone")!=null?document.joinnow1.telephone.value:"")+'" ></TD>'
    			+ '</TR>'
    			+ '<TR>'
    			+ '<TH> Heard about site from: </TH>'
                + '<TD></TD>'
                +'<TD>'
               	+'<select style="font-family:Arial,Verdana;" name="HeardAboutSite" id="HeardAboutSite" tabindex=21>'
               				 +'<OPTION VALUE="">--select one--</OPTION>';
               				 var lReferralSourcesList = XML.select(this.mReferralSources, "option");
               				 //var lReferralSourcesList = this.mReferralSources.split(";;");
               				 for(var i=0; i<lReferralSourcesList.length; i++){
               				 	//var lTempVal = lReferralSourcesList[i];
               				 	var lTempVal = XML.getText(lReferralSourcesList[i]);
               				 	htmlStr += '<OPTION VALUE="' + lTempVal + '">' + lTempVal +' </OPTION>';
               				 }
        		htmlStr += ''
        		+ '</select>'
        		+ '<TR>'
    			+ '<TH>Bonus Code (optional)</TH>'
				+ '<TD width=10></TD>'
    			+ '<TD valign=top width=290><INPUT class="medium" tabindex=22 name="bonus-code" id="bonus-code"></TD>'
    			+ '</TR>';
        		
        		/*	if(this.mSelected_heard_about_site=="Other")
					htmlStr += ' <INPUT class="medium"  name="h_other" id="h_other" tabindex=14  value="Enter Other">'; */
        		
        		htmlStr += '</TD></TR>'
        		
    			/*
    			+ '<TR>'
    			+ '<TH>what is your mother\'s maiden name?</TH>'
    			+ '<TD width=10></TD>'
    			+ '<TD valign=top width=290><INPUT class="medium" tabindex=21 name="MothersMaidenName" id="MothersMaidenName">'
    			+ '</TR>'
    			+ '<TR>'
    			+ '<TH>what city were you born in?</TH>'
    			+ '<TD width=10></TD>'
    			+ '<TD valign=top width=290><INPUT class="medium" tabindex=22 name="CityBorn" id="CityBorn">'
    			+ '</TR>'
    			*/
    			+ '</TBODY>'
    			+ '</TABLE>'
    			+ '<TABLE cellpadding=0 cellspacing=0 border=0 width=460 class="text">'
    			+ '<TR>'
    			+ '<TD>Matchbook does not share client information with any third party, in accordance<BR>with our <A href="../rules-and-regulations/PrivacyPolicy.jsp"><B>Privacy Policy</B></A>.'
    			+ '<BR><BR>'
    			+ '<INPUT class=check tabindex=23 id="readrules" type=checkbox ';
    	if(getDocElementById("readrules")!=null)
    		if(getDocElementById("readrules").checked)
    			htmlStr += "checked";
    	htmlStr += '>'
    			+ ' I have read and agreed to the Matchbook Rules and Regulations.'
    			+ '<br>'
    			+ '<INPUT class=check tabindex=24 id="agelimit" type=checkbox ';
    	if(getDocElementById("agelimit")!=null)
    		if(getDocElementById("agelimit").checked)
    			htmlStr += "checked";
    	htmlStr += '>'
    			+ ' I\'m at least 18 years of age.</TD>'
    			+ '</TR>'
    			+ '<TR>'
    			+ '<TD><A href="javascript:;" id="page2" tabindex=25 onClick="doClick(this)"><IMG src="../../images/buttons/submit.gif" border=0 hspace=153></A>'
    			+ '</TD>'
    			+ '</TR>'
    			+ '</TBODY>'
    			+ '</TABLE>'
    			+ '</DIV>'
    			+ '</DIV>'
    			+ '</FORM>';
    	return htmlStr;
    	
    	case 'ErrorPage':
    	htmlStr = '<FORM NAME="joinnow1" method="POST">'
				+ '<DIV class=mbCss-body>'
				+ '<IMG src="../../images/titles/join-now.gif"> '
				+ '<DIV class="mbCss-join mbCss-medium-height">'
				+ '<!-- LOGIN INFORMATION TABLE -->'
				+ '<TABLE width=460 cellpadding=0 cellspacing=0 border=0 class="mbCss-form">'
				+ '<TR>'
				+ '<TD colspan=3><DIV class="join-title"><Img src="../../images/titles/login-information.gif" width=144 height=10></DIV></TD>'
				+ '</TR>';
		if(XML.getText(this.errorXML,"user-name")!= null){
		   
			this.mUserNameExists = true;
			this.mUserErrorMsg = XML.getText(this.errorXML,"user-name");
		}
		if(!this.mUserNameExists)	{
			htmlStr += '<TR>'
					+ '<TH>Username</TH>'
					+ '<TD width=10></TD>'
			 		+ '<TD width=290><INPUT class="medium" tabindex=1 name="username" id="username" onBlur="doBlur(this,\'checkUserName\')" value="'+(getDocElementById("username")!=null?document.joinnow1.username.value:"")+'"> <SPAN>(at least 6 characters)</SPAN></TD>';
		}else	{
			htmlStr += '<TR>'
					+ '<TH>Username</TH>'
					+ '<TD width=10></TD>'
			 		+ '<TD width=290><DIV class="mbCss-error"><INPUT class="medium" tabindex=1 name="username" id="username" onBlur="doBlur(this,\'checkUserName\')" value="'+document.joinnow1.username.value+'"> <SPAN>(at least 6 characters)</SPAN><BR>'+this.mUserErrorMsg+'</DIV></TD>'
		}
		htmlStr	+= '</TR>'
				+ '<TR>'
				+ '<TH>Password</TH>'
                                + '<TD></TD>';
		if(XML.getText(this.errorXML,"password")!= null)		
			htmlStr	+= '<TD><DIV class="mbCss-error"><INPUT type="password" tabindex=2 name="password1" id="password1" value="'+(getDocElementById("password1")!=null?document.joinnow1.password1.value:"")+'" > <SPAN>(at least <font color="red">8 characters</font>,with at least </span><br><span style="padding-left:11em"><font color="red">one number</font> and <font color="red">one capital letter</font>)</SPAN><BR>'+XML.getText(this.errorXML,"password")+'</DIV></TD>'
		else
			htmlStr	+= '<TD><INPUT type="password" tabindex=2 name="password1" id="password1" value="'+(getDocElementById("password1")!=null?document.joinnow1.password1.value:"")+'" > <SPAN>(at least <font color="red">8 characters</font>,with at least </span><br><span style="padding-left:11em"><font color="red">one number</font> and <font color="red">one capital letter</font>)</SPAN></TD>'	
		
		htmlStr	+= '</TR>'
				+ '<TR>'
				+ '<TH>Verify Password</TH><TD></TD>';
		if(XML.getText(this.errorXML,"confirm-password")!= null)	
			htmlStr	+= '<TD width=290><DIV class="mbCss-error"><INPUT type="password" name="password2" id="password2" tabindex=3 value="'+(getDocElementById("password2")!=null?document.joinnow1.password2.value:"")+'" ><BR>'+XML.getText(this.errorXML,"confirm-password")+'</DIV></TD>'
		else	
			htmlStr	+= '<TD width=290><INPUT type="password" name="password2" id="password2" tabindex=3 value="'+(getDocElementById("password2")!=null?document.joinnow1.password2.value:"")+'" ></TD>'
			
		htmlStr	+= '</TR>'
				+ '</TBODY>'
				+ '</TABLE>'
				+ '<BR><br>'
				+ '<!-- Personal information Table -->'
				+ '<TABLE width=460 cellpadding=0 cellspacing=0 border=0 class="mbCss-form">'
				+ '<TR>'
				+ '<TD colspan=3><DIV class="join-title"><Img src="../../images/titles/personal-information.gif" width=169 height=10></DIV></TD>'
				+ '</TR>'
				+ '<TR>'
				+ '<TH width=150>First Name</TH>'
				+ '<TD width=10></TD>'  
				+ '<TD width=290>';
		if(XML.getText(this.errorXML,"first-name")!= null){	
				
			htmlStr += '<DIV class="mbCss-error"><INPUT class="medium" name="firstname" id="firstname" tabindex=4 value="'+(getDocElementById("firstname")!=null?document.joinnow1.firstname.value:"")+'" ><BR>'+XML.getText(this.errorXML,"first-name")+'</DIV>'
		}else
			htmlStr += '<INPUT class="medium" name="firstname" id="firstname" tabindex=4 value="'+(getDocElementById("firstname")!=null?document.joinnow1.firstname.value:"")+'" >'	
		
		htmlStr += '</TD></TR>'
				+ '<TR>'
				+ '<TH>Last Name</TH>'
				+ '<TD></TD>'  
				+ '<TD>';
		if(XML.getText(this.errorXML,"last-name")!= null)		
			htmlStr += '<DIV class="mbCss-error"><INPUT class="medium" name="lastname" id="lastname" tabindex=5 value="'+(getDocElementById("lastname")!=null?document.joinnow1.lastname.value:"")+'" ><BR>'+XML.getText(this.errorXML,"last-name")+'</DIV>'
		else	
			htmlStr += '<INPUT class="medium" name="lastname" id="lastname" tabindex=5 value="'+(getDocElementById("lastname")!=null?document.joinnow1.lastname.value:"")+'" >'
		htmlStr	+= '</TD></TR>'
				+ '<TR>'
				+ '<TH>E-Mail</TH>'
				+ '<TD></TD>'
				+ '<TD>';
		if(XML.getText(this.errorXML,"email")!= null)		
			htmlStr += '<DIV class="mbCss-error"><INPUT class="medium" name="email" id="email" tabindex=6 value="'+(getDocElementById("email")!=null?document.joinnow1.email.value:"")+'" ><BR>'+XML.getText(this.errorXML,"email")+'</DIV>'
		else	
			htmlStr += '<INPUT class="medium" name="email" id="email" tabindex=6 value="'+(getDocElementById("email")!=null?document.joinnow1.email.value:"")+'" >'
		htmlStr	+= '</TD></TR>'
				+ '<TR>'
				+ '<TH>Confirm E-Mail</TH>'
                                + '<TD></TD>'
				+ '<TD>';
		if(XML.getText(this.errorXML, "confirm-email") != null)
			htmlStr += '<DIV class="mbCss-error"><INPUT class="medium" tabindex=7 name="confirm-email" id="confirm-email" value="'+(getDocElementById("confirm-email")!=null?document.forms["joinnow1"]["confirm-email"].value:"")+'"><BR>'+XML.getText(this.errorXML,"confirm-email")+'</DIV><br /><img src="../../images/warning-ico.gif"> A valid e-mail is required to open an account.</TD>';
		else
			htmlStr += '<INPUT class="medium" tabindex=7 name="confirm-email" id="confirm-email" value="'+(getDocElementById("confirm-email")!=null?document.forms["joinnow1"]["confirm-email"].value:"")+'"><br /><img src="../../images/warning-ico.gif"> A valid e-mail is required to open an account.</TD>';
		htmlStr += ''
				+ '</TR>'
				+ '<TR>'
				+ '<TD colspan=3>';
		var lAddressError = this.errorXML.cloneNode(true);
		XML.addContent(lAddressError,XML.selectOne(this.xml,"user-address").cloneNode(true))		
		htmlStr	+= '<span class="component" id="AddressComponent">'
				+ ComponentHtml("AddressEntryComponent","AddressComponent",lAddressError)
				+ '</span>'
				+ '</TD>'
    			+ '</TR>'
    			+ '<TR>'
    			+ '<TH>Telephone</TH>'
				+ '<TD></TD>'
    			+ '<TD valign=top width=290>';
    	if(XML.getText(this.errorXML,"contact-info")!= null)		
			htmlStr += '<DIV class="mbCss-error"><INPUT class="medium" tabindex=20 name="telephone" id="telephone" value="'+(getDocElementById("telephone")!=null?document.joinnow1.telephone.value:"")+'" ><BR>'+XML.getText(this.errorXML,"contact-info")+'</DIV>'
		else 
			htmlStr += '<INPUT class="medium" tabindex=20 name="telephone" id="telephone" value="'+(getDocElementById("telephone")!=null?document.joinnow1.telephone.value:"")+'" >'	
		htmlStr += '</TD></TR>'
				+ '<TR>'
    			+ '<TH> Heard about site from: </TH>'
                + '<TD></TD>'
                +'<TD>';
                
             var lValue = document.joinnow1.HeardAboutSite.value;
            
             
        if(XML.getText(this.errorXML,"heard-about-site")!= null ) {
        	htmlStr +='<DIV class="mbCss-error">';
        }
        htmlStr += '<select style="font-family:Arial,Verdana;" name="HeardAboutSite" id="HeardAboutSite" '
        			+ 'tabindex=21>'
        			+ '<OPTION VALUE="">--select one--</OPTION>';
        			var lReferralSourcesList = XML.select(this.mReferralSources, "option");
               		for(var i=0; i<lReferralSourcesList.length; i++){
               			var lTempVal = XML.getText(lReferralSourcesList[i]);
               			var lSelected = '';
               			if(lValue == lTempVal){
               				lSelected = 'selected';
               			}
               			htmlStr += '<OPTION VALUE="' + lTempVal + '" '+ lSelected +'>' + lTempVal +' </OPTION>';
               		}
        htmlStr += '</select>';
        if(XML.getText(this.errorXML,"heard-about-site")!= null ){
        	htmlStr +='<BR>'+XML.getText(this.errorXML,"heard-about-site")+'</DIV>';
        }
        htmlStr += ''
        		+ '<TR>'
    			+ '<TH>Bonus Code (optional)</TH>'
				+ '<TD width=10></TD>'
    			+ '<TD valign=top width=290>';
    			if(XML.getText(this.errorXML,"bonus-code")!= null){
    				htmlStr += '<DIV class="mbCss-error">';
    			}
    			htmlStr += ''
    			+ '<INPUT class="medium" tabindex=22 name="bonus-code" id="bonus-code" '
    			+  'value="' + document.getElementById("bonus-code").value + '">';
    			if(XML.getText(this.errorXML,"bonus-code")!= null){
    				htmlStr += '<BR>'+XML.getText(this.errorXML,"bonus-code")+'</DIV>';
    			}
    			htmlStr += ''         
        		+ '</TD>'
        		+ '</TR>'
				
		/* 
    			+ '<TR>'
    			+ '<TH>what is your mother\'s maiden name?</TH>'
    			+ '<TD width=10></TD>'
    			+ '<TD valign=top width=290>';
    	if(XML.getText(this.errorXML,"mothers-maiden-name") != null){
    		htmlStr += '<DIV class="mbCss-error">'+
    						'<INPUT class="medium" tabindex=21 name="MothersMaidenName" '+
    						'id="MothersMaidenName" value="'+getDocElementById("MothersMaidenName").value+'"><BR>'+
    						XML.getText(this.errorXML,"mothers-maiden-name")+
    					'<DIV>';
    	}else{
    		htmlStr += '<INPUT class="medium" tabindex=21 name="MothersMaidenName" '+
    				   'id="MothersMaidenName" value="'+getDocElementById("MothersMaidenName").value+'">';
    	}
    	htmlStr += ''
    			+ '</TR>'
    			+ '<TR>'
    			+ '<TH>what city were you born in?</TH>'
    			+ '<TD width=10></TD>'
    			+ '<TD valign=top width=290>';
    	if(XML.getText(this.errorXML,"city-born") != null){
    		htmlStr += ''+
    					'<DIV class="mbCss-error">'+
    						'<INPUT class="medium" tabindex=22 name="CityBorn" '+
    						'id="CityBorn" value="'+getDocElementById("CityBorn").value+'"><BR>'+
    						XML.getText(this.errorXML,"city-born")+
    					'<DIV>';
    	}else{
    		htmlStr += ''+
    			 		'<INPUT class="medium" tabindex=22 name="CityBorn" '+
    			 		'id="CityBorn" value="'+getDocElementById("CityBorn").value+'">';
    	}
    	htmlStr += ''
    			+ '</TR>'
    	*/
    			+ '</TBODY>'
    			+ '</TABLE>'
    			+ '<TABLE cellpadding=0 cellspacing=0 border=0 width=460 class="text">'
    			+ '<TR>'
    			+ '<TD colspan=2>Matchbook does not share client information with any third party, in accordance<BR>with our <A href="../rules-and-regulations/PrivacyPolicy.jsp"><B>Privacy Policy</B></A>.'
    			+ '<BR><BR>';
    			
    	var text = "I have read and agreed to the Matchbook Rules and Regulations."		
    	if(XML.getText(this.errorXML,"read-rules")!= null)
    		htmlStr += '<DIV style="BORDER-RIGHT: 1px solid; PADDING-RIGHT: 3px; BORDER-TOP: 1px solid; PADDING-LEFT: 3px; FONT-SIZE: 11px; PADDING-BOTTOM: 3px; BORDER-LEFT: 1px solid; COLOR: #cc0000; PADDING-TOP: 3px; BORDER-BOTTOM: 1px solid; margin-right:10px">';
    	htmlStr += '<INPUT class=check tabindex=23 id="readrules" type=checkbox ';
    	if(getDocElementById("readrules")!=null)
    		if(getDocElementById("readrules").checked)
    			htmlStr += "checked";
    	htmlStr += '>'
    	
    	if(XML.getText(this.errorXML,"read-rules")!= null)	{		
    		text = "";
    		htmlStr += '&nbsp;&nbsp;&nbsp;'+XML.getText(this.errorXML,"read-rules")+'</DIV>';
    	}
    	htmlStr += '&nbsp;'+text+'<BR>';
    	text = "I'm at least 18 years of age.";		
    	if(XML.getText(this.errorXML,"above-18")!= null)			
    		htmlStr += '<DIV style="BORDER-RIGHT: 1px solid; PADDING-RIGHT: 3px; BORDER-TOP: 1px solid; PADDING-LEFT: 3px; FONT-SIZE: 11px; PADDING-BOTTOM: 3px; BORDER-LEFT: 1px solid; COLOR: #cc0000; PADDING-TOP: 3px; BORDER-BOTTOM: 1px solid; margin-right:10px">';
    	htmlStr += '<INPUT class=check tabindex=24 id="agelimit" type=checkbox ';
    	if(getDocElementById("agelimit")!=null)
    		if(getDocElementById("agelimit").checked)
    			htmlStr += "checked";
    	htmlStr += '>';
    	if(XML.getText(this.errorXML,"above-18")!= null)	{			
    		text = "";
    		htmlStr += '&nbsp;&nbsp;&nbsp;'+XML.getText(this.errorXML,"above-18")+'</DIV>';
    	}	
    	htmlStr += '&nbsp;'+text+'</TD>'
    			+ '</TR>'
    			+ '<TR>'
    			+ '<TD><A href="javascript:;" id="page2" tabindex=25 onClick="doClick(this)"><IMG src="../../images/buttons/submit.gif" border=0 hspace=153></A>'
    			+ '</TD>'
    			+ '</TR>'
    			+ '</TBODY>'
    			+ '</TABLE>'
    			+ '</DIV>'
    			+ '</DIV>'
    			+ '</FORM>';
    	return htmlStr;
    	}
	}
	this.handleClick = function _handleClick(pElement) {

		if(MB.loggedIn()) {
			alert(MB.MESSAGE_LOG_OFF);
			return true;
		}
		/*
		if(this.mRequestSubmitted)	{
			alert(MB.MESSAGE_REQUEST_PROCESSING);
			return true;
		}
		*/
		
		
		
		switch(pElement.id) 	{
		case "page2":
	      	if(document.forms["joinnow1"]["address"] == null){
	      		return true;
	      	}
	      	var lEmail = document.forms["joinnow1"]["email"].value;
	      	var lConfirmEmail = document.forms["joinnow1"]["confirm-email"].value;
	      	/*
	      	if(lEmail == ""){
	      		alert("Email can't be empty. Please enter a valid E-mail.");
	      		return true;
	      	}
	      	if(lEmail != lConfirmEmail){
	      		alert("Please make sure that you enter the same E-mail address in both the 'E-mail' fields.");
	      		return true;
	      	}
	      	*/
			var lUsername = document.forms["joinnow1"]["username"].value;
			var lPassword1 = document.forms["joinnow1"]["password1"].value;
			var lPassword2 = document.forms["joinnow1"]["password2"].value;
			var lFirstname = document.forms["joinnow1"]["firstname"].value;
	        var lLastname = document.forms["joinnow1"]["lastname"].value;
	        //var lMothersMaidenName = document.forms["joinnow1"]["MothersMaidenName"].value;
	        //var lCityBorn = document.forms["joinnow1"]["CityBorn"].value;
	        
	               
	        if(lPassword1.length<8)
	       {
	       	alert("A secure password must have at least eight characters. Please try again");
	       	return true;
	       }
	    
	           
	        if(lUsername==lPassword1)
	        {
	        	alert(" A secure password cannot be the same as your username. Please try again.");
	        	return true;
	        	
	        }
	        
	        // [verified] at least one upper case letter
	   if (!lPassword1.match(/[A-Z]/))                              
		{
			alert("A secure password must contain at least one upper case letter. Please try again.");
			return true;
		}
		 // [verified] at least one number
		if (!lPassword1.match(/\d+/))                                
		{
			
			alert("A secure password must contain at least one number. Please try again.");
			return true;
		}
	      	var lRules = getDocElementById("readrules");
	      	var lAgeLimit = getDocElementById("agelimit");
	      	var lAddress = document.forms["joinnow1"]["address"].value;
	      	var lCity = document.forms["joinnow1"]["city"].value;
	      	var lStateAttr = '100000';
	      	var lStateName;
	      	var lZipcode
	      	var lStateOther;
	      	var lCountryOther;
	      	var lCountry = document.forms["joinnow1"]["country"].value;
	      	var lTelephone = document.forms["joinnow1"]["telephone"].value;
	      	var lHeardAbout = document.forms["joinnow1"]["HeardAboutSite"].value; 	/* MY CHANGE */
	      	var lBonusCode = document.getElementById("bonus-code").value;
	      	if(getDocElementById("state")!=null)	{	
	      		var lState = getDocElementById("state").value;
	      		var lValues = lState.split(':');
	      		lStateAttr = lValues[0];
	      		lStateName = lValues[1];
	      	} else
	      		lState = ''; 	
	      	if(getDocElementById("zipcode")!=null)	
	      		lZipcode = getDocElementById("zipcode").value;
	      	else
	      		lZipcode = '';
	      	
	      	if(getDocElementById("countryother")!=null)	{
	      		lCountryOther = getDocElementById("countryother").value;
	      	}else
	      		lCountryOther = '';
	      	    	
	      	if(getDocElementById("stateother")!=null){
	      		lStateOther = getDocElementById("stateother").value;
	      	}else
	      		lStateOther = '';
	    	
		// create some XML to submit to the server
		this.xml = MBFactory.getRegisterUserRequestTemplate();
		var lNewUserXml = XML.selectOne(this.xml,"user");
		XML.setText(lNewUserXml,"action","new-save");
		XML.setText(lNewUserXml,"user-name",lUsername);
		XML.setText(lNewUserXml,"password",lPassword1);
		XML.setText(lNewUserXml,"confirm-password",lPassword2);
		XML.setText(lNewUserXml,"status","new");
		XML.setText(lNewUserXml,"heard-about-site",lHeardAbout);  /* MY CHANGE */
		XML.setText(lNewUserXml,"bonus-code",lBonusCode);
		var ref_code = document.getElementById("ref_code").value;
		if(ref_code == null  || ref_code == "null"){
			ref_code='';
		}
		XML.setText(lNewUserXml,"ref-code",ref_code);
		
		 
		if(lRules.checked)	
			XML.setText(lNewUserXml,"read-rules","true");
		else
			XML.setText(lNewUserXml,"read-rules","false");
		if(lAgeLimit.checked)	
			XML.setText(lNewUserXml,"above-18","true");
		else
			XML.setText(lNewUserXml,"above-18","false");
		var lUserxml = XML.selectOne(this.xml,"user");
	    XML.setText(lUserxml,"action","pending-save");
		XML.setText(lUserxml,"first-name",lFirstname);
	    XML.setText(lUserxml,"last-name",lLastname);
	    XML.setText(lUserxml,"email",lEmail);
	    XML.setText(lUserxml,"confirm-email",lConfirmEmail);
	    //XML.setText(lUserxml,"mothers-maiden-name",lMothersMaidenName);
	    //XML.setText(lUserxml,"city-born",lCityBorn);
        XML.setText(lUserxml,"status","pending");
	    var lAddressxml = XML.selectOne(this.xml,"user-address");
	    XML.setText(lAddressxml,"address-1",lAddress);
        XML.setText(lAddressxml,"city",lCity);
        XML.setAttribute(XML.selectOne(lAddressxml,"region"),"id",lStateAttr);
        XML.setText(lAddressxml,"region",lStateName);
        XML.setText(lAddressxml,"region-other",lStateOther);
        XML.setText(lAddressxml,"postal-code",lZipcode);
        XML.setAttribute(XML.selectOne(lAddressxml,"country"),"id",lCountry);
        XML.setText(lAddressxml,"country-other",lCountryOther);
        //XML.setText(this.xml,"from",lEmail);          
       	var lUsercontact = XML.selectOne(this.xml,"user-contact");
       	XML.setText(lUsercontact,"contact-info",lTelephone); 
       	//alert(XML.toString(this.xml))         ;
		var lResponse = MB.registerPendingUser(this.xml);
		//alert("response page2 : \n"+XML.toString(lResponse));	 
		if (MB.isSuccess(lResponse)) {
			MB.loadURLIntoContentFrame(this.NEXT_PAGE);
			return true; 
		}  else {
			this.errorXML = XML.selectOne(XML.selectOne(lResponse,"error"),"error-fields");
			if(this.errorXML!= null)	{
			 this.page = "ErrorPage";
			 var AddrComp = componentRegistry.getComponent("AddressComponent");
			 AddrComp.reinitialize();
			 this.repaint();
			 return true;
			} else	if(this.errorXML == null){
    			alert(XML.getText(lResponse,"message"));
    			return true;
        	}
        	return true;
        }  
        break;
		
		case "resetpage2":
			this.NEXT_PAGE = Remote.remoteServerURL + "/menu-items/registration/a_UserDetails.jsp";
			MB.loadURLIntoContentFrame(this.NEXT_PAGE);
			break;
		}
		return true;
	}

	this.handleBlur = function _handleBlur(pElement,pExtra) {
		switch(pExtra) {
			case "checkUserName":
				this.checkUserName();
				break;
		}

		return true;
	}

	this.handleLogin = function(){
   		MB.loadURLIntoContentFrame(Remote.remoteServerURL + '/homePage.jsp');
  	}
  	
  	this.getFocusElement = function _getFocusElement(pXML)	{	
		if(XML.getText(pXML,"user-name")!=null)
			return "username";
		if(XML.getText(pXML,"password")!=null)
			return "password1";	
		if(XML.getText(pXML,"confirm-password")!=null)
			return "password2";	
		if(XML.getText(pXML,"first-name")!=null)
			return "firstname";	
		if(XML.getText(pXML,"last-name")!=null)
			return "lastname";	
		if(XML.getText(pXML,"email")!=null)
			return "email";	
		if(XML.getText(pXML,"country-other")!=null)
			return "countryother";	
		if(XML.getText(pXML,"region-other")!=null)
			return "stateother";	
		if(XML.getText(pXML,"city")!=null)
			return "city";	
		if(XML.getText(pXML,"address-1")!=null)
			return "address";
		if(XML.getText(pXML,"postal-code")!=null)
			return "zipcode";	
		if(XML.getText(pXML,"contact-info")!=null)
			return "telephone";	
		if(XML.getText(pXML,"heard-about-site")!=null)	/* MY CHANGE */
			return "HeardAboutSite";
		if(XML.getText(pXML,"above-18")!=null)
			return "agelimit";	
		if(XML.getText(pXML,"read-rules")!=null)
			return "readrules";	
	}

	this.checkUserName = function() {
		lUsername = document.joinnow1.username.value;
			if((lUsername == "")||(lUsername == null))	
				return true;
			if(lUsername.length > 12)	{
				alert(MB.MESSAGE_USERNAME_MAX_CHARACTERS);
				getDocElementById("username").focus();
				getDocElementById("username").focus();
				return true;
			}	
			this.mUserNameValidated = true;
			var lvalidateuser = MBFactory.getUserNameValidateTemplate()
			lUserNameUnique = XML.selectOne(lvalidateuser,"user");
			XML.setText(lUserNameUnique,"action","validate");
			XML.setText(lUserNameUnique,"user-name",lUsername);

			var lUserNameUniqResponse = MB.checkUserName(lvalidateuser);
			if (MB.isSuccess(lUserNameUniqResponse)) {
				this.mUserNameExists = false;
				if(XML.getText(this.errorXML,"user-name")!=null)
					XML.remove(this.errorXML,"user-name")
				//this.mFocusPassword = true;	
				//this.repaint();
				return true;
			} else {
				//if(XML.getText(this.errorXML,"user-name")!=null)	{
					alert(XML.getText(lUserNameUniqResponse,"message"));
					//XML.setText(this.errorXML,"user-name",XML.getText(lUserNameUniqResponse,"message"));
					getDocElementById("username").focus();
					getDocElementById("username").focus();
					getDocElementById("username").focus();
					return true;
				/* } else	{
					this.mUserNameExists = true;
					this.mUserErrorMsg = XML.getText(lUserNameUniqResponse,"message");
					XML.getText(this.errorXML,"user-name",XML.getText(lUserNameUniqResponse,"message"));
					this.mFocusPassword = true;
					this.repaint();
					return true;
				}*/
				
			}
	}
}



