var spinner='<img src="/images/spinner_email.gif" />';
//var logout_copy='<div id="logout"><p>You are currently signed in, please <a id="logout" href="javascript:void(\'0\');">sign out</a> to register for a new account.</p></div>';
var site='rcp';

//form for sign in pop up
var sign_in_copy='<div class="sign_in_form sign_up_form"><h2>Sign in and get started!</h2><div id="errorDisplay"></div><table cellpadding="0" cellspacing="0" border="0"><tr><td>Email:<br /><input type="text" name="sign_in_user_email" id="sign_in_user_email" size="45" /></td></tr><td>Password:<br /><input type="password" name="sign_in_user_password" id="sign_in_user_password" size="45" /><p class="footnote"><a href="javascript:void(\'0\');" class="sign_in_fp">Forgot password?</a></p></td></tr><tr><td><button class="sign_in">Sign In</button></td></tr></table><p class="sign_in_na">Don\'t have an account? <a class="sign_up_pop" href="javascript:void(\'0\');">Sign up for one!</a></p><div class="mario"><input type="text" name="zelda" id="zelda" /></div></div>';

var sign_up_copy='<div class="sign_in_form sign_up_form"><h2>Sign up for an account and get started!</h2><div id="errorDisplay"></div><table cellpadding="0" cellspacing="0" border="0"><tr><td>Email:<span class="required_field">*</span><br /><input type="text" name="sign_in_user_email" size="45" class="required" /></td></tr><tr><td>Display Name:<span class="required_field">*</span><br /><input type="text" name="user_displayname" class="required" size="45" /></td></tr><tr><td>Password:<span class="required_field">*</span><br /><input type="password" name="sign_in_password" size="45" class="required" /></td></tr><tr><td>Re-enter:<span class="required_field">*</span><br /><input type="password" name="sign_in_repassword" size="45" class="required" /></td></tr><tr><td>Title:<br /><select name="user_title" id="user_title"><option value="">--- Select One ---</option><option value="1">Accountant/Auditor</option><option value="2">Administrative/Clerical</option><option value="3">Analyst</option><option value="5">Architect</option><option value="4">Artist/Musician/Actor/Entertainer</option><option value="7">Broker/Trader</option><option value="8">CEO/President/Chairman</option><option value="9">CFO, COO, CTO, CIO, CMO</option><option value="10">Clergy</option><option value="12">Computer Professional/IT/IS</option><option value="13">Consultant</option><option value="14">Director</option><option value="16">Educator/Teacher/Professor</option><option value="17">Engineer</option><option value="38">Financial Advisor</option><option value="19">Government official</option><option value="20">Health care worker (other than doctor)</option><option value="21">Homemaker</option><option value="22">Lawyer/Judge</option><option value="23">Manager/Supervisor</option><option value="24">Military</option><option value="36">Other</option><option value="25">Partner/Principal/Owner</option><option value="15">Physician</option><option value="26">Researcher</option><option value="37">Retired</option><option value="27">Sales Manager/Account Executive</option><option value="29">Scientist</option><option value="18">Self-Employed</option><option value="30">Service provider</option><option value="28">Skilled laborer</option><option value="31">Student</option><option value="33">Technician</option><option value="34">Vice President/SVP/EVP</option><option value="35">Writer/Editor</option></select></td></tr><tr><td>Year of Birth:<br /><input type="text" name="user_birthday" class="user_birthday" size="8" maxlength="4" /> <span style="font-size:9px; font-weight: normal;">(ex: 1965)</span></td></tr><tr><td>Gender: &nbsp;&nbsp;<input type="radio" value="1" name="user_gender" class="user_gender" id="m"> Male &nbsp;<input type="radio" value="2" name="user_gender" class="user_gender" id="f"> Female</td></tr><tr><td style="font-weight: normal;"><span><input type="checkbox" value="1" name="user_newsletter" class="user_newsletter" id="user_newsletter"> Would you like to receive the RCP newsletter by email?</span></td></tr><tr><td><button class="sign_up">Sign Up</button></td></tr></table><p class="sign_in_na">Already have an account? <a class="sign_in_pop" href="javascript:void(\'0\');">Sign in!</a><br/><em><span class="required_field">*</span> Fields are required.</em></p><div class="mario"><input type="text" name="zelda" /></div></div>';

var request_password_copy='<div class="sign_in_form sign_up_form"><h2>Forgot Password</h2><div id="errorDisplay"></div><table cellpadding="0" cellspacing="0" border="0"><tr><td>Email:<br /><input type="text" name="sign_in_user_email" id="sign_in_user_email" size="45" /></td></tr><tr><td><button class="request_password_submit">Submit</button></td></tr></table><p class="sign_in_na">Don\'t have an account? <a class="sign_up_pop" href="javascript:void(\'0\');">Sign up for one!</a><br/>Already have an account? <a class="sign_in_pop" href="javascript:void(\'0\');">Sign in!</a></p><div class="mario"><input type="text" name="zelda" id="zelda" /></div></div>';

		
if (document.images)  
{
  preload_image = new Image(18,15); 
  preload_image.src="/images/spinner_email.gif"; 
}

//user vars

//hash for user
var realclear_key = readCookie('realclear_key');
//user id
var realclear_user = readCookie('realclear_user');
//user vars -- username, email etc.
var realclear_vars = readCookie('realclear_vars');


$(document).ready(function(){
	auth();
});

//function to see if someone is signed in
function auth(){
	var auth_content = '';
	//if signed in cookie exists, display accordingly
	if(readCookie('realclear_key')){
		auth_content = auth_in(); //username|signout menu
		$('.auth').html(auth_content);		
	}else{
		auth_content = auth_out(); //signed out menu -> signup|signin				
		$('.auth').html(auth_content);
	}
		
	//assigns the sign in button to raise pop up
	sign_in_pop();
	//assigns the sign up button to raise pop up
	sign_up_pop();
	//assign sign out click
	sign_out_click();
}

function auth_out(){
	var content = '';

	//CHECK IF DISQUS COMMENTS MODULE IS ON THE PAGE
	if(document.getElementById("disqus_thread")){
		//content += '<div class="comments-missing-permissions">Already have an account at RCP? Sign In below.</div>';
		content += '';
	}
	content += '<a class="sign_in_pop" href="javascript:void(\'0\');">RCP Log In</a> | <a class="sign_up_pop" href="javascript:void(\'0\');">Register</a>';
	
	return content;

}

function auth_in(){
	return '<a href="javascript:void(\'0\');" onclick="loadUserAccount(\''+realclearVars(1)+'\',\'\');" >'+realclearVars(2)+'\'s account</a> | <a class="sign_out" href="javascript:void(\'0\')">Sign out</a>';
}

//assigns the sign in button(s) action
function sign_in(){
	$('.sign_in').unbind();
	$('.sign_in').click(function() {				
		//var c=$(this).parent('.sign_in_form');
		//alert(c.innerHTML);
		var user_email = $('.sign_in_form #sign_in_user_email').val(); 		
		var user_password = $('.sign_in_form #sign_in_user_password').val();
		var zelda = $('.sign_in_form #zelda').val();
		clearLocalCookies(1,1);
										
		verified = true;
		errorString = '';	
		
		if(validEmail(user_email)==false || user_email==''){
			verified=false;			
			errorString += '<div>*Email address not valid. </div>';
		}
		
		if(user_password==''){
			verified=false;			
			errorString += '<div>*Please fill in password field. </div>';
		}
		
		if(verified==true){				
					
			$.getJSON("http://comments.realclearmarkets.com/process/login.php?jsoncallback=?",{
			 zelda: zelda,
			 email: user_email,
			 password: user_password 
				}, function(data) {
				//if there is a php error (we check with js first, sometimes an error might get to php we double check)				
				if(data.status==1){
					setLocalCookies(data);
					jQuery(document).trigger('close.facebox'); 
				}else{
					$('#errorDisplay').html("There was an error validating credentials. Please try again.");
				}
			});
		}else{
			$('#errorDisplay').html(errorString);
		}
	});
}

//function assigns the sign_in_drop class links to open up the pop up
function sign_in_pop(){
	$('.sign_in_pop').unbind();
	$('.sign_in_pop').click(function() {
		jQuery.facebox(sign_in_copy);
		//inside the pop up there is a sign in button, this instantiates that
		sign_in();
		sign_up_pop();
		forgot_pass_pop();
	});
}

//function assigns the sign_in_drop class links to open up the pop up
function sign_up_pop(){
	$('.sign_up_pop').unbind();
	$('.sign_up_pop').click(function() {
		jQuery.facebox(sign_up_copy);
		//inside the pop up there is a sign in button, this instantiates that
		sign_up();
		sign_in_pop();
	});
}

//LOADS FACEBOX USER ACCOUNT PROFILE
function loadUserAccount(user_id,type){
	if(user_id!=''){
		$.getJSON("http://comments.realclearmarkets.com/process/loadAccount.php?jsoncallback=?",{
			 user_id: user_id,
			 type: type	 			 				 
		   }, function(data) {								
			   if(data.status==0){ 	
				jQuery.facebox('<div class="sign_in_form"><h2>Error!</h2>'+data.msg+'</div>');
			   }else if(data.status==1){
				jQuery.facebox('<div class="sign_in_form"><h2>Account</h2>'+data.msg+'</div>');												
				$('#facebox .sign_in_form').width('400px');
				
			   }else{
				alert('uh oh!');
			   }					 				
		});		
	}
}

//SETS CLICK FUNCTIONALITY FOR USER-PROFILE REST PASSWORD BUTTON
function changePassword_pop(){
	
	verified = true;
	errorString = '';	
	
	var user_id = $('.sign_in_form #user_id').val();
	var old_password = $('.sign_in_form #old_password').val(); 
	var new_password = $('.sign_in_form #sign_in_password').val(); 
	var new_password_re = $('.sign_in_form #sign_in_repassword').val(); 		
	var zelda = $('.sign_in_form #zelda').val();
	
	
	if(old_password=='' || new_password=='' || new_password_re==''){
		verified=false;			
		errorString += '<div>*Please fill in all fields. </div>';
	}	
	
	if(new_password!=new_password_re){
		verified=false;
		errorString += '<div>*New passwords do not match. </div>';
	}
	
	if(user_id==''){
		verified=false;
		errorString += '<div>*User id not present. </div>';
	}
	
	if(verified==true){	
		$('#errorDisplay').html('');	
		
		if(zelda==''){
			$.getJSON("http://comments.realclearmarkets.com/process/changePassword.php?jsoncallback=?",{
				 user_id: user_id,
				 old_password: old_password,
				 new_password: new_password
			   }, function(data) {								
				   if(data.status==0){ 
					$('#errorDisplay').html(data.msg);						
				   }else if(data.status==1){
					$('#errorDisplay').html(data.msg);
					$('.sign_in_form #old_password').val(''); 
					$('.sign_in_form #sign_in_password').val(''); 
					$('.sign_in_form #sign_in_repassword').val(''); 
				   }else{
					alert('uh oh!');
				   }					 				
			});
		}else{
			alert('uh oh!');	
		}
	}else{
		$('#errorDisplay').html(errorString);
	}
}

//SETS CLICK FUNCTIONALITY FOR USER-PROFILE CHANGE EMAIL BUTTON
function changeEmail_pop(){
	
	verified = true;
	errorString = '';	
	
	var user_id = $('.sign_in_form #user_id').val();
	var new_email = $('.sign_in_form #new_email').val(); 
	var sign_in_password = $('.sign_in_form #sign_in_password').val(); 		
	var zelda = $('.sign_in_form #zelda').val();
	
	
	if(new_email=='' || sign_in_password==''){
		verified=false;			
		errorString += '<div>*Please fill in all fields. </div>';
	}	
	
	if(validEmail(new_email)==false || new_email==''){
		verified=false;			
		errorString += '<div>*Email address not valid. </div>';
	}
	
	if(user_id==''){
		verified=false;
		errorString += '<div>*User id not present. </div>';
	}
	
	if(verified==true){	
		$('#errorDisplay').html('');	
		
		if(zelda==''){
			$.getJSON("http://comments.realclearmarkets.com/process/changeEmail.php?jsoncallback=?",{
				 user_id: user_id,
				 new_email: new_email,
				 sign_in_password: sign_in_password
			   }, function(data) {								
				   if(data.status==0){ 
					$('#errorDisplay').html(data.msg);	
				   }else if(data.status==1){
					$('#errorDisplay').html(data.msg);
					$('.sign_in_form #new_email').val(''); 
					$('.sign_in_form #sign_in_password').val('');
					setLocalCookies(data);
				   }else{
					alert('uh oh!');
				   }					 				
			});
		}else{
			alert('uh oh!');	
		}
	}else{
		$('#errorDisplay').html(errorString);
	}
}

//function assigns the sign_in_drop class links to open up the pop up
function forgot_pass_pop(){
	$('.sign_in_fp').unbind();
	$('.sign_in_fp').click(function() {
		jQuery.facebox(request_password_copy);
		sign_up_pop();
		sign_in_pop();
		forgot_pass();
	});
}

function forgot_pass(){
	$('.request_password_submit').unbind();
	$('.request_password_submit').click(function() {
		

		var user_email = $('.sign_in_form #sign_in_user_email').val(); 
		var zelda = $('.sign_in_form #zelda').val();
	
		if(!validEmail(user_email) && user_email==''){
			$('#errorDisplay').html('<div>*Email address not valid.</div>');
		}else{
			$('#errorDisplay').html('');	
			
			if(zelda==''){
				$.getJSON("http://comments.realclearmarkets.com/process/request_password.php?jsoncallback=?",{
					 zelda: zelda,
					 user_email: user_email	 			 				 
				   }, function(data) {								
					   if(data.status==0){ 
						$('#errorDisplay').html(data.error);						
					   }else if(data.status==1){
						jQuery.facebox('<div class="sign_in_form"><h2>Congratulations!</h2>'+data.success+'</div>');
					   }else{
						alert('uh oh!');
					   }					 				
				});
			}				
		}		
	
		
	});
}


function sign_up(){
	$('.sign_up').unbind();
	$('.sign_up').click(function() {		
		confirmSignUp();
	});
}

function sign_out_click(){
	$('.sign_out').unbind();
	$('.sign_out').click(function() {
		sign_out();
	});
}


function sign_out(){
	clearLocalCookies(1,2);	
	$('.auth').html(auth_out());
	
	//IF DISQUS COMMENTS MODULE -- HIDE POST FORM
	if(document.getElementById("disqus_thread")){		
		//$('#dsq-content #dsq-new-post').hide();
	}	
	
	//assigns the sign in button to raise pop up
	sign_in_pop();
	//assigns the sign up button to raise pop up
	sign_up_pop();
}

function confirmSignUp() {
	
	dataVerified = verifyData('.required');
	
	if(dataVerified){
		
		var c=$('.sign_in_form');	
		var zelda=c.find('input[name=zelda]').val();	
		var site = getDomain();	
		var user_email = c.find('input[name=sign_in_user_email]').val();
		var display_name = c.find('input[name=user_displayname]').val();
		var user_pass = c.find('input[name=sign_in_password]').val();
		var user_pass_again = c.find('input[name=sign_in_repassword]').val();
		var user_title = c.find('select[name=user_title]').val();
		//var user_age = c.find('select[name=user_age]').val();
		var user_birthday = c.find('input[name=user_birthday]').val();
		
		var g='';
		if($("input[@name='user_gender']:checked").val()){
			g=$("input[@name='user_gender']:checked").val();
		}
		
		var user_newsletter=0;
		if($("input[@name='user_newsletter']:checked").val()){
			user_newsletter=1;
		}
		
		if(isNaN(user_birthday) && user_birthday!=''){
			$('#errorDisplay').html('<div>*Age birthday is not a valid number. </div>');
			return;
		}
				
			//alert(site);		
		if(zelda==''){
			$.getJSON("http://comments.realclearmarkets.com/process/register.php?jsoncallback=?",{
				 zelda: zelda,
				 user_email: user_email,
				 site: site,									 
				 user_password: user_pass,
				 user_password_again: user_pass_again,
				 user_displayname: display_name,
				 user_title: user_title,
				 user_gender: g,
				 user_age: user_birthday,
				 user_newsletter: user_newsletter
			   }, function(data) {
				   				   
				   if(data.status==0){ 
						jQuery.facebox('<div class="sign_in_form"><h2>Uh Oh!</h2>'+data.error+'</div>');
						sign_in_pop();
						sign_up_pop();
				   }else if(data.status==1){
						jQuery.facebox('<div class="sign_in_form"><h2>Congratulations!</h2>'+data.success+'</div>');
				   }else{
						alert('uh oh!');
				   }
				   $('.think').html('');
				   
			});
		}	
	}
}


var cookieSetCounter = 0;
function countCookieSets(){
	cookieSetCounter++;
	if(cookieSetCounter==4){				
		location.reload(true);		
	}
}


function clearLocalCookies(level,type){
	$.getJSON("http://www1.realclearpolitics.com/dev/user_sign_out.php?jsoncallback=?", { level: level }, function(data) {
		//alert(data.status+' '+data.site+' '+data.level);
		if(type==2){
			countCookieSets();
		}
	});
	$.getJSON("http://www.realclearworld.com/dev/user_sign_out.php?jsoncallback=?", { level: level }, function(data) {
		//alert(data.status+' '+data.site+' '+data.level);
		if(type==2){
			countCookieSets();
		}
	});
	$.getJSON("http://www.realclearmarkets.com/dev/user_sign_out.php?jsoncallback=?", { level: level }, function(data) {
		//alert(data.status+' '+data.site+' '+data.level);
		if(type==2){
			countCookieSets();
		}
	});
	$.getJSON("http://www.realclearsports.com/dev/user_sign_out.php?jsoncallback=?", { level: level }, function(data) {
		//alert(data.status+' '+data.site+' '+data.level);
		if(type==2){
			countCookieSets();
		}
	});
}


function setLocalCookies(data){
	//alert('creating cookie');
	//alert(data.realclear_vars);
	eraseCookie('realclear_vars');
	eraseCookie('realclear_user');
	eraseCookie('realclear_key');
	createCookie('realclear_vars',data.realclear_vars,365);
	createCookie('realclear_user',data.realclear_user,365);
	createCookie('realclear_key',data.realclear_key,365);
	
	
	$.getJSON("http://www1.realclearpolitics.com/dev/user_sign_in.php?jsoncallback=?", { realclear_vars: data.realclear_vars, realclear_user: data.realclear_user, realclear_key: data.realclear_key }, function(data) {
		//alert(data.realclear_vars+' '+data.realclear_user+' '+data.realclear_key);	 																					 			
		countCookieSets();
	});
	$.getJSON("http://www.realclearworld.com/dev/user_sign_in.php?jsoncallback=?", { realclear_vars: data.realclear_vars, realclear_user: data.realclear_user, realclear_key: data.realclear_key }, function(data) {
		//alert(data.status+' '+data.site+' '+data.level);																						  	
		countCookieSets();	
	});
	$.getJSON("http://www.realclearmarkets.com/dev/user_sign_in.php?jsoncallback=?", { realclear_vars: data.realclear_vars, realclear_user: data.realclear_user, realclear_key: data.realclear_key }, function(data) {
		//alert(data.status+' '+data.site+' '+data.level);																						  
		countCookieSets();
	});
	$.getJSON("http://www.realclearsports.com/dev/user_sign_in.php?jsoncallback=?", { realclear_vars: data.realclear_vars, realclear_user: data.realclear_user, realclear_key: data.realclear_key }, function(data) {
		//alert(data.status+' '+data.site+' '+data.level);																						  
		countCookieSets();
	});
	
	auth();
}

function createCookie(name,value,days) { 
	if (days) {
		var date = new Date();
		date.setTime(date.getTime()+(days*24*60*60*1000));
		var expires = "; expires="+date.toGMTString();
	}
	else var expires = "";
	document.cookie = name+"="+value+expires+"; path=/; domain=."+getDomain()+"";
}

function readCookie(name) {
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for(var i=0;i < ca.length;i++) {
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
	}
	return null;
}

function eraseCookie(name) {
	createCookie(name,"",-1);
}

function getDomain(){
	var path = window.location.host;
	if(path.substr(0,3)=='www'){
		var per=path.indexOf('.')
		per=per+1;
		path=path.substr(per);
	}
	return path;
}

//function to parse realclear_vars cookie
function realclearVars(rcVar){
	var rcVars = new Array("status", "user_id", "user_name", "user_email", "user_title", "user_gender", "user_age");
	
	var realclear_vars = readCookie('realclear_vars');
	var rcv = '';
	if(realclear_vars){
		rcv=realclear_vars.replace(/%7C/g, '|');
		rcv=rcv.split('|');
		rcv=rcv[parseInt(rcVar)];
	}else{
		return -1;
	}
	
	return rcv;
}

function verifyData(toVerify){	
	var verified = true;
	var errorString = '';
	var c = $('.sign_in_form');	
	var email = c.find('input[name=sign_in_user_email]').val();	
	var password = c.find('input[name=sign_in_password]').val();
	var password_again = c.find('input[name=sign_in_repassword]').val();	
		
	
	$(''+toVerify+'').each(function(){
		if(this.value==""){
			$(this).addClass("fill");
			verified=false;
		}else{
			$(this).removeClass("fill");			
		}
	});
	
	//alert(verified+'none empty');
	if(!validEmail(email) && c.find('input[name=sign_in_user_email]').val()){
		verified=false;
		c.find('input[name=sign_in_user_email]').addClass("fill");
		errorString += '<div>*Email address not valid. </div>';
	}	

	if(password!=c.find('input[name=sign_in_repassword]').val()){
		verified=false;
		c.find('input[name=sign_in_repassword]').addClass("fill");
		errorString += '<div>*Passwords do not match. </div>';
	}
	
	if(verified==false){
		errorString += '<div>*Highlighted fields are invalid or missing. </div>';
		$('#errorDisplay').html(errorString);		
	}else{
		$('#errorDisplay').html('');	
	}
	
	return verified;
	
}

function validEmail(email){      
	var emailReg = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/;
	return emailReg.test(email); 
}
