var visibleSettingsTab = 'password';

function initAll( )
{
	// Is user logged in?
	var paramString = 'function=checkStatus';
	var iaUrl = 'http://fav.premo.biz/login_manager.php';
	new Ajax.Request( iaUrl,{
		method: 'post',
		parameters: paramString,
		onSuccess: function( response ) {
			switch( response.responseJSON.code ) {
				case '101' :
				case '102' :
					initHeader( response.responseJSON.email );
					if( response.responseJSON.color != undefined ) $( 'color' ).color.fromString( response.responseJSON.color );
					applyColor( response.responseJSON.color );
					initFavs();
					break;
				case '201' :
				case '' :
				case null :
					// not logged in
					resetLoginBox();
					break;
			}
		}
	} );
}

function applyColor( passColor )
{
	//c( 'applyColor( ' + passColor + ' )' );
	var tempHref = '';
	$$( 'link' ).each( function( linkEl ) {
		//c( linkEl.href );
		tempHref = linkEl.href;
		//if( linkEl.href == 'http://fav.premo.biz/fav_css.php' ) {
		if( tempHref.search( 'http://fav.premo.biz/fav_css.php' ) !== -1 ) {
			linkEl.href = 'http://fav.premo.biz/fav_css.php?color=' + passColor;
		}
		
	} );
	
	
}

var minPassLen = 8;

function register( )
{
	//function validateEmail( address )
	if( !validateEmail( $F( 'reg_email' ) ) ) {
		alert( 'The email address you entered is not valid.' );
		return;
	}
	if( $F( 'reg_password' ).length < minPassLen ) {
		alert( 'You must choose a password that is at least 8 characters long.' );
		return;
	}
	if( $F( 'reg_password' ).search( ' ' ) !== -1 ) {
		alert( 'Your password may not contain spaces.' );
		return;
	}
	if( $F( 'reg_password' ) !== $F( 'password_confirm' ) ) {
		alert( 'You have entered two different passwords.  They must match.' );
		return;
	}
	
	
	
	var paramHash = $( 'register_form' ).serialize();
	
	$( 'register_form' ).getInputs().each( function( el ) {
		el.disable();
	} );
	
	var rUrl = 'http://fav.premo.biz/login_manager.php';
	new Ajax.Request( rUrl,{
		method: 'post',
		parameters: paramHash,
		onSuccess: function( response ) {
			switch( response.responseJSON.code ) {
				case '101' :
					// success.  login now?
					
					$( 'register_box' ).fade( { duration: 0.225,afterFinish: initAll() } );
					//$( 'login_box' ).fade( { duration: 0.225 } );
					//initAll();
					
					break;
				case '201' :
					// passwords don't match
					alert( 'The passwords entered do not match.  Please try again.' );
					$( 'register_form' ).getInputs().each( function( el ) {
						el.enable();
					} );
					break;
				case '301' :
					// user already exists
					alert( 'An account already exists for this email address.' );
					$( 'register_form' ).getInputs().each( function( el ) {
						el.enable();
					} );
					$( 'register_form' ).reset();
					break;
			}
			
		}
	} );
	
	
	
	
}


function login( )
{
	
	var paramHash = $( 'login_form' ).serialize();
	
	var myEmail = $( 'log_email' ).value;
	
	$( 'login_form' ).getInputs().each( function( el ) {
		el.disable();
	} );
	
	
	var lUrl = 'http://fav.premo.biz/login_manager.php';
	new Ajax.Request( lUrl,{
		method: 'post',
		parameters: paramHash,
		onSuccess: function( response ) {
			switch( response.responseJSON.code ) {
				case '101' :
				case '102' :
					hideLoginBox();
					initHeader( response.responseJSON.email );
					if( response.responseJSON.color != undefined ) $( 'color' ).color.fromString( response.responseJSON.color );
					applyColor( response.responseJSON.color );
					initFavs();
					break;
				case '201' :
					//incorrect password
					alert( 'incorrect password' );
					$( 'login_form' ).getInputs().each( function( el ) {
						el.enable();
					} );
					break;
				case '202' :
					//email not found
					alert( 'email not found in system' );
					$( 'login_form' ).getInputs().each( function( el ) {
						el.enable();
					} );
					break;
			}
		}
	} );
}

function hideLoginBox( )
{
	$( 'login_box' ).fade( { duration: 0.225 } );
}

function initHeader( email )
{
	//c( 'initHeader( ' + email + ' );' );
	var hssString = email + ' | <a href="javascript:editSettings();" >settings</a> | <a href="mailto:feedback@fav.premo.biz" >feedback</a> | <a href="javascript:signout();">sign out</a>';
	//c( 'hssString : ' + hssString );
	$( 'header_user_signout' ).innerHTML = hssString;
	//$( 'header_user_signout' ).appear( { duration: 0.225 } );
	//c( 'poo' );
}


function signout( )
{
	var lUrl = 'http://fav.premo.biz/login_manager.php';
	var paramString = 'function=logout';
	new Ajax.Request( lUrl,{
		method: 'post',
		parameters: paramString,
		onSuccess: function( response ) {
			
			switch( response.responseText ) {
				case '102' :
					//success
					resetLoginBox();
					resetHeader();
					//c( 'b rf' );
					resetFavs();
					break;
			}
			//$( 'login_status' ).innerHTML = response.responseText;
		}
	} );
}



function resetHeader( )
{
	$( 'header_user_signout' ).innerHTML = '';
}



function resetPassword( )
{
	var newH = document.viewport.getHeight();
	var newLbt = ( newH - $( 'reset_box' ).getHeight() + 2 ) / 2;
	$( 'reset_box' ).setStyle( { top: newLbt + 'px' } );
	$( 'reset_form' ).getInputs().each( function( el ) {
		el.enable();
	} );
	$( 'reset_form' ).reset();
	if( $( 'login_box' ).visible() ) $( 'login_box' ).fade( {
		duration: 0.225,
		afterFinish: function() { $( 'reset_box' ).appear( { duration: 0.225 } ); }
	} );
	if( $( 'register_box' ).visible() ) $( 'register_box' ).fade( {
		duration: 0.225,
		afterFinish: function() { $( 'reset_box' ).appear( {
			duration: 0.225,
			afterFinish: function() { $( 'reset_box' ).focusFirstElement(); }
		} ); }
	} );
}


function signUp( )
{
	var newH = document.viewport.getHeight();
	var newLbt = ( newH - $( 'register_box' ).getHeight() + 2 ) / 2;
	$( 'register_box' ).setStyle( { top: newLbt + 'px' } );
	$( 'register_form' ).getInputs().each( function( el ) {
		el.enable();
	} );
	$( 'register_form' ).reset();
	if( $( 'login_box' ).visible() ) $( 'login_box' ).fade( {
		duration: 0.225,
		afterFinish: function() { $( 'register_box' ).appear( { duration: 0.225 } ); }
	} );
	if( $( 'reset_box' ).visible() ) $( 'reset_box' ).fade( {
		duration: 0.225,
		afterFinish: function() { $( 'register_box' ).appear( {
			duration: 0.225,
			afterFinish: function() { $( 'register_box' ).focusFirstElement(); }
		} ); }
	} );
}


function resetLoginBox( )
{
	var newH = document.viewport.getHeight();
	var newLbt = ( newH - $( 'login_box' ).getHeight() + 2 ) / 2;
	$( 'login_box' ).setStyle( { top: newLbt + 'px' } );
	$( 'login_form' ).getInputs().each( function( el ) {
		el.enable();
	} );
	$( 'login_form' ).reset();
	if( $( 'register_box' ).visible() ) {
		$( 'register_box' ).fade( {
			duration: 0.225,
			afterFinish: function() { $( 'login_box' ).appear( { duration: 0.225 } ); }
		} );
		return;
	}
	if( $( 'reset_box' ).visible() ) {
		$( 'reset_box' ).fade( {
			duration: 0.225,
			afterFinish: function() { $( 'login_box' ).appear( { duration: 0.225 } ); }
		} );
		return;
	}
	$( 'login_box' ).appear( {
		duration: 0.225,
		afterFinish: function() { $( 'login_form' ).focusFirstElement(); }
	} );
}


function checkemail()
{
	var testresults = false;
	var str = document.validation.emailcheck.value;
	var filter = /^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i;
	if( filter.test( str ) ) {
		testresults = true;
	} else {
		alert( 'Please input a valid email address!' );
		testresults = false;
	}
	return testresults;
}

function validateEmail( address )
{
	var filter = /^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i;
	if( filter.test( address ) ) {
		return true;
	} else {
		return false;
	}
}

function otfCheck( formPrefix,el )
{
	//emVal = $( 'email' ).value;
	//pVal  = $( 'password' ).value;
	//pcVal = $( 'password_confirm' ).value;
	
	//c( 'otfCheck( ' + formPrefix + ',' + el + ' )' );
	
	var emVal;
	var pVal;
	var pcVal;
	
	switch( formPrefix ) {
		case 'reset' :
			break;
		case 'register' :
			emVal = $( 'reg_email' ).value;
			pVal  = $( 'reg_password' ).value;
			pcVal = $( 'password_confirm' ).value;
			break;
		case 'login' :
			break;
		case 'settings' :
			pVal  = $( 'new_password' ).value;
			pcVal = $( 'new_password_confirm' ).value;
			
			
			
			break;
	}
	
	
	
	switch( el ) {
		case 'email' :
			break;
		case 'reg_email' :
			if( validateEmail( emVal ) ) {
				$( formPrefix + '_message' ).innerHTML = '';
			} else {
				$( formPrefix + '_message' ).innerHTML = 'Invalid email address';
			}
			
			
			break;
		case 'reg_password' :
		case 'new_password' :
			if( pVal.match( ' ' ) == null ) {
				$( formPrefix + '_message' ).innerHTML = '';
			} else {
				$( formPrefix + '_message' ).innerHTML = 'Password may not contain spaces';
			}
			if( pVal.length < minPassLen ) {
				$( formPrefix + '_message' ).innerHTML = 'Password must be at least 8 characters';
			} else {
				$( formPrefix + '_message' ).innerHTML = '';
			}
			
			break;
		case 'password_confirm' :
		case 'new_password_confirm' :
			if( pcVal.length >= pVal.length ) {
				if( pcVal == pVal ) {
					$( formPrefix + '_message' ).innerHTML = 'Password OK';
				} else {
					$( formPrefix + '_message' ).innerHTML = 'Re-Confirm Password';
				}
			} else {
				$( formPrefix + '_message' ).innerHTML = '';
			}
			break;
		default :
			break;
	}
}

function requestReset( )
{
	var paramHash = $( 'reset_form' ).serialize();
	$( 'reset_form' ).getInputs().each( function( el ) {
		el.disable();
	} );
	
	$( 'reset_message' ).innerHTML = '';
	
	var lUrl = 'http://fav.premo.biz/login_manager.php';
	new Ajax.Request( lUrl,{
		method: 'post',
		parameters: paramHash,
		onSuccess: function( response ) {
			
			// Successful login?
			
			switch( response.responseText ) {
				case '101' :
					//success
					
					$( 'reset_message' ).innerHTML = 'Email sent to ' + $( 'rec_email' ).value + '.';
					$( 'reset_form' ).getInputs().each( function( el ) {
						el.enable();
					} );
					$( 'reset_form' ).reset();
					
					
					break;
				case '202' :
					//email not found
					//alert( 'Your email address was not found.' );
					$( 'reset_message' ).innerHTML = 'Email address not found.';
					$( 'reset_form' ).getInputs().each( function( el ) {
						el.enable();
					} );
					break;
			}
			
			
		}
	} );
}

function loadPickerJs( )
{
	var script = document.createElement('script'); 
	script.src = 'picker.js'; 
	script.type = 'text/javascript'; 
	document.getElementsByTagName('head')[0].appendChild(script); 
	
	
}

function editSettings( )
{
	//c( 'editSettings()' );
	
	if( $( 'settings_message' ).innerHTML == 'Password change successful.' ) $( 'settings_message' ).innerHTML = '';
	
	var newH = document.viewport.getHeight();
	var newLbt = ( newH - $( 'settings_box' ).getHeight() + 2 ) / 2;
	$( 'settings_box' ).setStyle( { top: newLbt + 'px' } );
	$( 'password_tabface' ).getInputs().each( function( el ) {
		el.enable();
	} );
	$( 'password_tabface' ).reset();
	
	
	$( 'settings_box' ).appear( {
		duration: 0.225,
		beforeStart: toggleShadowbox(),
		afterFinish: function () { if( visibleSettingsTab != 'color' ) $( visibleSettingsTab + '_tabface' ).focusFirstElement() }
	} );
	
	
	
	
	
}

function dismissSettings( )
{
	$( 'settings_box' ).fade( {
		duration: 0.225,
		afterFinish: toggleShadowbox()
	} );
}

function goTab( section )
{
	//if( section == 'color' ) loadPicker();
	
	$$( '.settings_tab' ).each( function( el ) {
		//c( el.innerHTML );
		el.removeClassName( 'selected' );
	} );
	$( section + '_tab' ).addClassName( 'selected' );
	
	$$( '.settings_tabface' ).each( function( el ) {
		el.hide();
	} );
	
	visibleSettingsTab = section;
	
	$( section + '_tabface' ).show();
	if( section != 'color' ) $( section + '_tabface' ).focusFirstElement()
}

function toggleShadowbox( )
{
	//c( 'toggleShadowbox' );
	if( $( 'shadowbox' ).visible() ) {
		$( 'shadowbox' ).fade( { duration: 0.225, from: 0.5, to: 0 } );
	} else {
		$( 'shadowbox' ).appear( { duration: 0.225, from: 0, to: 0.5 } );
	}
}

function netChangePassword( )
{
	// Form validation
	if( $( 'new_password' ).value !== $( 'new_password_confirm' ).value ) {
		alert( 'Please verify your new password.' );
		return;
	}
	
	// ajax
	
	$( 'settings_message' ).innerHTML = '';
	
	var paramHash = $( 'password_tabface' ).serialize();
	$( 'password_tabface' ).getInputs().each( function( el ) {
		el.disable();
	} );
	var cpUrl = 'http://fav.premo.biz/login_manager.php';
	new Ajax.Request( cpUrl,{
		method: 'post',
		parameters: paramHash,
		onSuccess: function( response ) {
			$( 'password_tabface' ).getInputs().each( function( el ) {
				el.enable();
			} );
			// Successful change?
			switch( response.responseText ) {
				case '101' :
					//success
					$( 'password_tabface' ).reset();
					$( 'settings_message' ).innerHTML = 'Password change successful.';
					
					break;
				case '501' :
					//old password incorrect
					
					$( 'settings_message' ).innerHTML = 'Old password incorrect.';
					
					
					break;
				case '301' :
					//passwords don't match
					
					$( 'settings_message' ).innerHTML = 'New password and new password confirm do not match.';
					break;
				case '401' :
					//session not set ... maybe check cookie?
					
					$( 'settings_message' ).innerHTML = 'Your session has expired.  Refresh the page.';
					break;
			}
			
			
			
		}
	} );
}

function setColor( )
{
	//c( 'setColor()' )
	
	
	//var paramHash = $( 'color_tabface' ).serialize();
	var paramString = 'function=setColor&color=' + $( 'color' ).color;
	$( 'color_tabface' ).getInputs().each( function( el ) {
		el.disable();
	} );
	
	
	var scUrl = 'http://fav.premo.biz/login_manager.php';
	new Ajax.Request( scUrl,{
		method: 'post',
		parameters: paramString,
		onSuccess: function( response ) {
			$( 'color_tabface' ).getInputs().each( function( el ) {
				el.enable();
			} );
			// Successful change?
			switch( response.responseJSON.code ) {
				case '101' :
					
					$( 'settings_message' ).innerHTML = 'Color saved successfully.';
					applyColor( $( 'color' ).color );
					
					break;
				case '201' :
					
					break;
			}
		}
	} );
	
	
	
	
	
	
}





