/*
OVERVIEW
Mark Faulk
3/25/09

ajaxlogin & updateLogin log the user in w/ AJAX. 

loginlogoutdirectives - after the user logs in or out through AJAX, this function will dynamically change things on the page that depend on the user being logged in or out.

ajaxlogout & updateLogout log the user out with AJAX

getloginbox & showloginbox grab the login box w/ AJAX. getloginbox receives several vars. loginforcereload will force the page to reload after logging in.

*/

loginfrmname=''
logincamefrom='' //remembers which login box/form called the AJAX login
loginanchorto='' //remembers where to anchor to when logging in after page reloads
loginforcereload=false
logindirectives=''
loginredirect=''


function ajaxlogin(frmname)
{
	createRequest()
	
/*	loginfrmname=frmname
	logincamefrom=lcf
	loginanchorto=achto //the anchorto link
	loginforcereload=lfr
	logindirectives=ld*/
	
	//alert(loginforcereload)
	//alert('logindirectives='+logindirectives)
	var theForm = eval('document.'+frmname)

	var url='/rpc/global/ajaxlogin.asp'
	var sel=''
	
	for(var h=0;h<theForm.elements.length;h++)
	{
		sel+=theForm.elements[h].name+'='+theForm.elements[h].value+'&'
	}
	sel=sel.substr(0,sel.length-1)


	request.open("POST",url,true)
	//alert(request)
	request.onreadystatechange = function (){updateLogin()}
	request.setRequestHeader("Content-Type","application/x-www-form-urlencoded")
	request.send(sel)
}

function ajaxautologin(qs)
{
	createRequest()
	
	var url='/rpc/global/ajaxlogin.asp'
	var sel='Form_Action=99&'+qs

	
	request.open("POST",url,true)
	//alert(request)
	request.onreadystatechange = function (){updateLogin()}
	request.setRequestHeader("Content-Type","application/x-www-form-urlencoded")
	request.send(sel)
}

function updateLogin()
{
	//senddebugmsg(request.readyState)
	if(request.readyState==4)
	{
		var resp=request.responseText
		//alert(resp)
		//senddebugmsg(resp)
		//alert(resp+'\n['+typeof(resp)+']')
		if (request.status==200)
		{
			if((resp.indexOf('err:') > -1) || (resp == '') || (resp == null))
			{
				//BAD LOGIN
				//write error messages
				var resplines=resp.split('|')
				var errs=''
				for(var z=0;z<resplines.length;z++)
				{
					var curerr=resplines[z].split(':')
					if(curerr!='')
					{
						errs+=curerr[1]+'<br>'
					}
				}
				gebid(loginfrmname+'loginmsgarea').innerHTML=errs
			}
			else
			{
				//VALID LOGIN
				if(loginredirect != '')
				{
					window.location=loginredirect
					loginredirect=''
					//break;
					
				}
				var anch=''
				if(loginforcereload==true)
				{
					//alert('['+typeof(resp)+']')
					if(loginanchorto != '')
					{
						anch='#'+loginanchorto
					}
					window.location=document.URL+anch
					location.reload()
				}
				else
				{
					loginlogoutdirectives(resp,1)
				}
			}
		}
		else
		{
			//alert("The server said: "+request.status+'\n'+resp)
			gebid('loginmsgarea').innerHTML='<span style="color:#FF0000">A server error occurred.</span>'
		}
	}
}

function loginlogoutdirectives(resp,typ)
{
	/*
	if the user successfully logs in, this function will update whatever needs to be updated dynamically
	typ:
		1=logging in
		0=logging out
	*/
	if(typ==1)
	{
		gebid('ruusername').innerHTML='<a href="#">'+resp+'</a>'
		//gebid(loginfrmname+'loginmsgarea').innerHTML=''
		gebid('loginmsgarea').innerHTML=''
		changedisplay('navloginarea','none')
		changedisplay('navlogoutarea','block')
	}
	else
	{
		changedisplay('navloginarea','block')
		changedisplay('navlogoutarea','none')
	}
	

	ldarr=logindirectives.split(',')

	for(var x=0;x<ldarr.length;x++)
	{
		if(gebid('articlecomments'))
		{
			//show/hide article comments
			if(typ==1)
			{
				changedisplay('articlecommentsli','block')
				changedisplay('articlecommentslo','none')
			}
			else
			{
				changedisplay('articlecommentsli','none')
				changedisplay('articlecommentslo','block')
			}
		}
	}
	if(gebid('loginboxwrapper'))
	{
		removeloginbox()
	}
}

function ajaxlogout(forcereload)
{
		createRequest()
		
		var url='/rpc/global/ajaxlogout.asp'
		var sel=''
		
/*
		for(var h=0;h<theForm.elements.length;h++)
		{
			sel+=theForm.elements[h].name+'='+theForm.elements[h].value+'&'
		}
		sel=sel.substr(0,sel.length-1)*/
		//alert(sel)

		request.open("POST",url,true)

		request.onreadystatechange = function(){updateLogout(forcereload)}
		request.setRequestHeader("Content-Type","application/x-www-form-urlencoded")
		request.send(sel)
}

function updateLogout(forcereload)
{
	if(request.readyState==4)
	{
		var resp=request.responseText
		//alert(resp)
		if (request.status==200)
		{
			//alert(request.responseText)
			if(resp.indexOf('err:') > -1)
			{
				//write error messages
				var resplines=resp.split('|')
				var errs
				for(var z=0;z<resplines.length;z++)
				{
					var curerr=resplines[z].split(':')
					errs+=curerr[1]+'<br>'
				}
				//gebid('navbarloginmsgarea').innerHTML=errs
			}
			else
			{
				//gebid('rudropdown').innerHTML=resp
				if(forcereload==true)
				{
					location.reload()
				}
				loginlogoutdirectives(resp,0)
				
				//gebid('navbarloginmsgarea').innerHTML=resp
			}
		}
		else
		{
			//alert("The server said: "+request.status+'\n'+resp)
			gebid('navbarloginmsgarea').innerHTML='<span style="color:#FF0000">A server error occurred.</span>'
		}
	}
	
}

function getloginbox(lcf,achto,lfr,ld,postpopjs)
{
	//this will mask out the background and show the login dialog
	createRequest()
	
	logincamefrom=lcf
	loginanchorto=achto //the anchorto link
	loginforcereload=lfr
	logindirectives=ld

	var url='/rpc/global/ajaxlogincontents.asp'
	var sel='x=1'
	
	request.open("POST",url,true)

	request.onreadystatechange = function(){showloginbox(postpopjs)}
	request.setRequestHeader("Content-Type","application/x-www-form-urlencoded")
	request.send(sel)
}


function showloginbox(postpopjs)
{
	if(request.readyState==4)
	{
		var resp=request.responseText
		//alert(resp)
		//alert(resp+'\n['+typeof(resp)+']')
		if(request.status==200)
		{
			var loginboxwrapper=document.createElement("div")
			
			loginboxwrapper.setAttribute("id", "loginboxwrapper")
			loginboxwrapper.setAttribute("class", "loginboxwrapper")
			
			loginboxwrapper.innerHTML='<div id="loginboxdiv" class="loginboxdiv"></div>'
			
			document.body.insertBefore(loginboxwrapper, document.body.firstChild)
			document.getElementById('loginboxwrapper').className='loginboxwrapper'
			
			createmask()

			document.getElementById('loginboxwrapper').style.width=document.body.clientWidth+'px'

			var loginHTML=''
			gebid('loginboxdiv').innerHTML=resp
			centerelement('loginboxdiv')
			makesameheight('signupleftcol','signuprightcol')
			gebid('loginboxUser_Name').focus()
			eval(postpopjs)
			//gebid('loginbutton').onclick=''
		}
		else
		{
			alert('A server error occurred, please try again.')
		}
	}

}

function addsubscribertext()
{
	gebid('logintitletext').innerHTML='Log In to subscribe to BGEA e-mails'
	gebid('signuptitletext').innerHTML='Sign Up to subscribe to BGEA e-mails'
	
}

function removeloginbox()
{
	var childnode=document.getElementById("loginboxwrapper")
	var removednode=document.body.removeChild(childnode)

	childnode=document.getElementById("bgeapagemask")
	removednode=document.body.removeChild(childnode)

}


function ajaxsignup(frmname)
{
	createRequest()
	
	var theForm = eval('document.'+frmname)

	var url='/rpc/global/ajaxsignup.asp'
	var sel=''
	
	for(var h=0;h<theForm.elements.length;h++)
	{
		sel+=theForm.elements[h].name+'='+escape(theForm.elements[h].value)+'&'
	}
	sel=sel.substr(0,sel.length-1)


	request.open("POST",url,true)
	//alert(request)
	request.onreadystatechange = function(){processSignup()}
	request.setRequestHeader("Content-Type","application/x-www-form-urlencoded")
	request.send(sel)
}

function processSignup()
{
	//senddebugmsg(request.readyState)
	if(request.readyState==4)
	{
		var resp=request.responseText
		//alert(resp)
		//senddebugmsg(resp)
		//alert(resp+'\n['+typeof(resp)+']')
		if (request.status==200)
		{
			if((resp.indexOf('err:') > -1) || (resp == '') || (resp == null))
			{
				//BAD SIGNUP
				//write error messages
				var resplines=resp.split('|')
				var errs=''
				for(var z=0;z<resplines.length;z++)
				{
					var curerr=resplines[z].split(':')
					if(curerr!='')
					{
						errs+=curerr[1]+'<br>'
					}
				}
				gebid('signupmsgarea').innerHTML=errs
			}
			else
			{
				//VALID SIGNUP
				//window.location.replace('/default.asp')
				if(loginredirect=='')
				{
					loginredirect='/default.asp'
				}
				ajaxautologin(resp)
			}
		}
		else
		{
			//alert("The server said: "+request.status+'\n'+resp)
			gebid('signupmsgarea').innerHTML='<span style="color:#FF0000">A server error occurred.</span>'
		}
	}
}

var formerrflg=false
var siv=''

function VF_Signup(formname)
{
	var theForm = eval('document.'+formname);
	var REEMAIL = /^\w+((\.?)([\w+\!\#\$\%\&\'\*\+\-\/\=\?\^\_\`\{\|\}\~]))+\@[a-zA-Z0-9-]+((\.?)([a-zA-Z0-9-]+))+$/;

	formerrflg=false
	
	/*if (theForm['VIC_User_Name'].value=='')
	{
		setformerror('VIC_User_Name',1)
	}
	else
	{
		setformerror('VIC_User_Name',0)
	}*/
	
	if (theForm['VIC_Password'].value=='')
	{
		setformerror('VIC_Password',1)
	}
	else
	{
		setformerror('VIC_Password',0)
	}
	
	if (theForm['Secret_Question_Answer'].value=='')
	{
		setformerror('Secret_Question_Answer',1)
	}
	else
	{
		setformerror('Secret_Question_Answer',0)
	}
	
	if (theForm['Secret_Question'].value=='')
	{
		setformerror('Secret_Question',1)
	}
	else
	{
		setformerror('Secret_Question',0)
	}
	
	
	if (theForm['VIC_ZipCode'].value=='')
	{
		setformerror('VIC_ZipCode',1)
	}
	else
	{
		setformerror('VIC_ZipCode',0)
	}

	
	if (theForm['VIC_Email_Address2'].value == "" || (theForm['VIC_Email_Address2'].value != theForm['VIC_Email_Address'].value))
	{
		setformerror('VIC_Email_Address2',1)
	}
	else
	{
		setformerror('VIC_Email_Address2',0)
	}

	if (!REEMAIL.test(theForm['VIC_Email_Address'].value))
	{
		setformerror('VIC_Email_Address',1)
	}
	else
	{
		setformerror('VIC_Email_Address',0)
	}


	if (theForm['VIC_Last_Name'].value == "")
	{
		setformerror('VIC_Last_Name',1)
	}
	else
	{
		setformerror('VIC_Last_Name',0)
	}
	
	if (theForm['VIC_First_Name'].value == "")
	{
		setformerror('VIC_First_Name',1)
	}
	else
	{
		setformerror('VIC_First_Name',0)
	}
	


	if (formerrflg==true)
	{
		//alert('siv=['+siv+']')
		//alert(errMsg);
		//window.scrollTo(0,0)
		try 
		{
			gebid(siv).scrollIntoView('true')
			gebid(siv).focus()
		}
		catch(err)
		{
			gebid('title'+siv).scrollIntoView('true')
		}
		gebid('signupmsgarea').innerHTML='Please correct the errors in red below'
		changedisplay('signupmsgarea','block')
		//gebid(setfocus).focus()
	}
	else
	{
		ajaxsignup('signupboxform')
	}
	
}

