/** @file	customer_first.js
	@author Don Chapman
	@author Webware Group Inc.
	@author donc@webwaregroup.com
	@date   Jan 9, 2007
	@notes 	Developed for php v4.x
	@brief	javascript library for the customer first extension */

/** 
 * private utility functions
 */
function isValidEmail( email )
{
	var str = email; // email string
	var reg1 = /(@.*@)|(\.\.)|(@\.)|(\.@)|(^\.)/; // not valid
	var reg2 = /^.+\@(\[?)[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,4}|[0-9]{1,4})(\]?)$/; // valid
	if (!reg1.test(str) && reg2.test(str)) { // if syntax is valid
		return true;
	}
	return false;
}

function registerdone( request )
{
	alert ('Your E-Mail was confirmed.');
	delayAndRedirect(1,'index.php?fuseaction=customerFirst.login')
	return true;
}

function registerfail( request )
{
	alert ('Your E-Mail could not be confirmed, please contact Customer Care.');
	return true;
} 

function redirect( location )
{
	document.location.href = location;
}

function delayAndRedirect( secs, location )
{
	window.setTimeout( function(){ document.location.href = location; }, secs*1000 ); 
}

function failedResponse( request )
{
	alert( request.responseText );
	return false;
}

function authenticateResponse( request )
{
	var result = request.responseText;

	if ( result == 'true' )
	{
		delayAndRedirect( 1, 'index.php?fuseaction=customerFirst.home' );
	}
	else if (result == 'notreg') 
	{
		$('status_message').innerHTML = 'Your e-mail address has not been confirmed. Please check your e-mail. Please note the e-mail may be in your junk mail folder.';
	}
	else {
		$('status_message').innerHTML = 'Your username and password could not be authenticated, please try again.';
	}
}

function signupResponse( request )
{
	var result = request.responseText;
	var parsedResult = result.substring(result.length-1, result.length);

	if ( parsedResult == '0' )
	{
		$('status_message').innerHTML = 'Sorry that email has been taken, please try again or email customer care at <a href="mailto:customercare@trelectronic.com" >customercare@trelectronic.com</a>.';
		Field.Focus($('email'));
	}
	else
	{
		$('status_message').innerHTML = "Thank-you for signing up, our Customer Care Team will contact you shortly.\n";
		delayAndRedirect( 5, 'index.php' );
	}
}

/** 
 * Previous Delay response delayAndRedirect( 5, 'index.php?fuseaction=customerFirst.login' );
 */

function searchResponse( request )
{
	var result = request.responseText;
	if ( result == '0' )
	{
		$('status_message').innerHTML = 'No orders were found for you between '+
									      $F('start_date')+' and '+$F('end_date')+', try a broader search.';
		Field.Focus($('start_date'));
	} else if ( result == 'none' ) {
		$('status_message').innerHTML = 'You don\'t appear to have any orders.';
	} else {
		var res = ( result > 1 ) ? 'results' : 'result';
		$('status_message').innerHTML = 'Found '+result+' '+res+', redirecting to result set...';
		delayAndRedirect( 0, 'index.php?fuseaction=customerFirst.previousOrdersResult' );
	}
}


function addLineItemResponse( request )
{
	var result = request.responseText;
	$('status_message').innerHTML = result;
}

function sendContactManagerResponse( request )
{
	var result = request.responseText;
	$('status_message').innerHTML = result;
	delayAndRedirect( 3, 'index.php?fuseaction=customerFirst.home' );
}

/**
 * Public functions 
 */

function authenticate()
{
	if ( $F('username') == '' )
	{
		alert('Username is required');
		return false;
	}
	else if ( $F('password') == '' ) {
		alert('Password is required');
		return false;
	}
	else if (($F('password').length <= 3 )||($F('password').length >= 14))
	{
		alert('Password must be between 4 & 8 characters');
		return false;	
	}
	
	var status_message_login = '<img src="images/ajax-loader.gif"> Logging in...';
	
	$('status_message').innerHTML = status_message_login;
	
	var params='username='+$F('username')+'&password='+$F('password');
	
   	var aj = new Ajax.Request( 'index.php?fuseaction=customerFirst.authenticate',
                               { method: 'post',
                                 parameters: params,
                                 onSuccess: authenticateResponse,
                                 onFailure: failedResponse,
                                 asynchronous: true
                               }
                             );

	return false;
}

function signup()
{
	var msg = '';
	//else if ( $F('password') == '' )
	//	msg = 'Password is required';
	if ( $F('company_name') == '' )
		msg = 'Company name is required';
	else if ( $F('first_name') == '' )
		msg = 'First name is required';
	else if ( $F('last_name') == '' )
		msg = 'Last name is required';	
	else if ( $F('city') == '' )
		msg = 'City is required';
	else if ( $F('state') == '' )
		msg = 'State/Province is required - select "other" if outside of US or Canada';
	else if ( $F('industry') == '' )
		msg = 'Industry is required';	
	else if ( $F('country') == '' )
		msg = 'Country is required';
	else if ( $F('phone') == '' )
		msg = 'Phone is required';
	else if ( $F('email') == '' )
		msg = 'Email is required';
	else if ( !isValidEmail($F('email')) )
		msg = 'Email format appears to be invalid';
	else if ( $F('password') == '')
		msg = 'Please enter a password';
	else if ( $F('confimpassword') == '')
		msg = 'Please confim the password';
	else if ( $F('password') != $F('confimpassword'))
		msg = 'Passwords do not match, please check your password and try again!';
	else if (($F('password').length <= 3 )||($F('password').length >= 9))
		msg = 'Password must be between 4 & 8 characters';
	else if ((document.getElementById('prev_purchase1').checked == false)&&(document.getElementById('prev_purchase2').checked == false))
		msg = 'Have you purchased products from TR Electronic?';
	if ( msg != '' )
	{
		alert(msg);
		return false;
	}
	
	/*
    if ( $F('confirm_password') != $F('password') )
    {
    	alert('Passwords do not match, please check your password and try again!');
    	Field.Focus($('password'));
    	return false;
    }*/

	var params = Form.serialize($('register'));
	
	var status_message_register = '<img src="images/ajax-loader.gif"> Registering...';
	
	$('status_message').innerHTML = status_message_register;
	
	var aj = new Ajax.Request( 'index.php?fuseaction=customerFirst.registration',
                               { method: 'post',
                                 parameters: params,
                                 onSuccess: signupResponse,
                                 onFailure: failedResponse,
                                 asynchronous: true
                               }
                             );

	return true;
}

function verifySearch()
{
	var reg = /^\d\d\d\d-\d\d-\d\d$/;
	if ( !reg.test( $F('start_date') )  || !reg.test( $F('end_date') ) )
	{
		alert('Invalid date format, must be YYYY-MM-DD');
		return false;
	}
	
	var status_message_login = '<img src="images/ajax-loader.gif"> Looking for previous orders between '+
									$F('start_date')+' and '+$F('end_date')+'...';
	
	$('status_message').innerHTML = status_message_login;
	
	var params = 'start_date='+$F('start_date')+'&end_date='+$F('end_date');

	var aj = new Ajax.Request( 'index.php?fuseaction=customerFirst.previousOrdersSearch',
                               { method: 'post',
                                 parameters: params,
                                 onSuccess: searchResponse,
                                 onFailure: failedResponse,
                                 asynchronous: true
                               }
                             );
}

function addLineItem( rowid, part )
{
	var params = 'rowid='+rowid;
	
	var status_message_login = '<img src="images/ajax-loader.gif"> Adding '+part+' to quote...';
	
	$('status_message').innerHTML = status_message_login;
	
	var aj = new Ajax.Request( 'index.php?fuseaction=customerFirst.addLineItem',
                               { method: 'post',
                                 parameters: params,
                                 onSuccess: addLineItemResponse,
                                 onFailure: failedResponse,
                                 asynchronous: true
                               }
                             );
}

function contactManager()
{
	comments = $F('Comments');
	if ( comments == '' )
	{
		alert('Please fill in your comments');
		return;
	}

	contact_requested = $F('contact_requested');

	var params = 'Comments='+comments+'&ContactRequested='+contact_requested;
	
	var status_message_login = '<img src="images/ajax-loader.gif"> Sending your comments...';
	$('status_message').innerHTML = status_message_login;
	
	//alert(params);
	
	var aj = new Ajax.Request( 'index.php?fuseaction=customerFirst.sendContactManager',
                               { method: 'post',
                                 parameters: params,
                                 onSuccess: sendContactManagerResponse,
                                 onFailure: failedResponse,
                                 asynchronous: true
                               }
                             );
}
function registeruser()
{
	var username = document.getElementById('username').value;
	var regid = document.getElementById('regid').value;
	var params = 'username='+username+'&regid='+regid;
	
	var aj = new Ajax.Request( 'qry_confirm_registration.php',
                               { method: 'post',
                                 parameters: params,
                                 onSuccess: registerdone,
                                 onFailure: failedResponse,
                                 asynchronous: true
                               }
                             );
}

