/* {HEADER

Name: useradmin
Description: 

HEADER} */

// Store the valid state of each field
var password_1_valid = false;
var password_2_valid = false;
var hint_valid = false;
var user_valid = false;
var email_valid = false;
var email_confirm_valid = false;

/**
*
* This function is used to check if the password field is valid. It also has a password strength meater to encourage users to choose more secure passwords.
*
*/
function validate_password_1 ( )
{

	var password_fld = document.getElementById('frm_password_1');
	var img = document.getElementById('validation_password_1');
	
	// Make sure the password is at the required length
	if( password_fld.value.length + 1 > 6 ) 
	{
	
		img.src = "/images/icons/tick.png";
		password_1_valid = true;
	
	}
	 else
	{
	
		img.src = "/images/icons/cross.png";
		password_1_valid = false;
	
	}
	
	// Different strength levels
	var strongRegex = new RegExp("^(?=.{8,})(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])(?=.*\\W).*$", "g");
	var mediumRegex = new RegExp("^(?=.{7,})(((?=.*[A-Z])(?=.*[a-z]))|((?=.*[A-Z])(?=.*[0-9]))|((?=.*[a-z])(?=.*[0-9]))).*$", "g");
	var enoughRegex = new RegExp("(?=.{6,}).*", "g");

	var strength = document.getElementById('strength');

	// Update the strength meter
	if( password_fld.value.length == 0 ) 
	{
		strength.innerHTML = 'Type Password';
	} 
	 else if (false == enoughRegex.test(password_fld.value)) 
	{
		strength.innerHTML = 'More Characters';
	} 
	 else if (strongRegex.test(password_fld.value)) 
	{
		strength.innerHTML = '<span style="color:green">Strong!</span>';
	} 
	 else if (mediumRegex.test(password_fld.value)) 
	{
		strength.innerHTML = '<span style="color:orange">Medium!</span>';
	} 
	 else 
	{
		strength.innerHTML = '<span style="color:red">Weak!</span>';
	}
	
	// We need to then run the validator on the 2nd password field to make sure the tick/cross updates.
	validate_password_2();
	
}

/**
*
* Validate the second password field
*
*/
function validate_password_2 ( )
{

	var password_fld_1 = document.getElementById('frm_password_1');
	var password_fld_2 = document.getElementById('frm_password_2');
	
	var img = document.getElementById('validation_password_2');
	
	// Make sure the 1st and 2nd password fields match and that its not empty.
	if( password_fld_1.value == password_fld_2.value && password_fld_2.value != "" ) 
	{
	
		img.src = "/images/icons/tick.png";
		password_2_valid = true;
	
	}
	 else
	{
	
		img.src = "/images/icons/cross.png";
		password_2_valid = false;
	
	}
	
}

/**
*
* Make sure the user has typed in a validation hint. 
*/
function validate_hint( )
{

	var frm_password_hint = document.getElementById('frm_password_hint');
	
	var img = document.getElementById('validation_hint');
	

	if( frm_password_hint.value != "" ) 
	{
	
		img.src = "/images/icons/tick.png";
		hint_valid = true;
	
	}
	 else
	{
	
		img.src = "/images/icons/cross.png";
		hint_valid = false;
	
	}
	
}

function validate_username(field)
{
	
	var img = document.getElementById('validation');
	

	if( field.length >= 4 ) 
	{
	
		$.get("/home/help/validateuser?no_wrap=true&username=" + field, function(data) {

			var start = strpos(data,'{"',0) + 2;
			var end = strpos(data,'"}',0);
			
			var username = data.substr(start, end - start);
			
			if( username == field )
			{ 
				img.src = "/images/icons/tick.png";
				user_valid = true;
			}
			else
			{
				img.src = "/images/icons/cross.png";
				user_valid = false;
			}
			
		});
	
	}
	 else
	{
	
		img.src = "/images/icons/cross.png";
		user_valid = false;
	
	}
	
}

function validate_email(email1, email2)
{

	var email1 = document.getElementById(email1);
	var email2 = document.getElementById(email2);
	
	var img_1 = document.getElementById('validation_email');
	var img_2 = document.getElementById('validation_email_con');
	
	
	var filter = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;

	if( email1.value.length >= 4 && filter.test(email1.value)) 
	{

		img_1.src = "/images/icons/tick.png";
		email_valid = true;
					
		if( email1.value == email2.value ) 
		{
			img_2.src = "/images/icons/tick.png";
			email_confirm_valid = true;
		}
		else
		{
			img_2.src = "/images/icons/cross.png";
			email_confirm_valid = false;
		}
			
	}
	 else
	{
	
		img_1.src = "/images/icons/cross.png";
		img_2.src = "/images/icons/cross.png";
		email_valid = false;
	
	}
	
}

function strpos( haystack, needle, offset){
    // http://kevin.vanzonneveld.net
    // +   original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +   improved by: Onno Marsman    
    // +   bugfixed by: Daniel Esteban
    // *     example 1: strpos('Kevin van Zonneveld', 'e', 5);
    // *     returns 1: 14
 
    var i = (haystack+'').indexOf(needle, (offset ? offset : 0));
    return i === -1 ? false : i;
}

/**
*
* This is used for making sure the user has completed all required fields before submitting the form.
*
*/
function check_form()
{
	
	if( password_1_valid == true && password_2_valid == true && hint_valid == true )
	{
		
		return true;
		
	}
	 else
	{
	
		alert("Please make sure you have completed all the required fields");
	
	}
	
	return false;
	
}


function loadDiv( mode, sub_content, option, section, data ) {
	
	$("#div_name_area").html("<center><img src=\"/images/icons/ajax-loader.gif\" alt=\"Loading\" /></center>");

	$.get("/home/members/members-only?no_wrap=true&mode=" + mode + "&sub_content=" + sub_content + "&option=" + option + "&section=" + section + "&data=" + data, function(data) {
		$( "#div_"  + sub_content ).html(data);
	});
  
}

function showRequest(formData, jqForm, options) 
{ 

	 return true; 
	 
}


function validateArea()
{

	for ( var i=0, len=fields.length; i<len; ++i )
	{

		if( fields[i] == "name_username" && user_valid == false )
		{
			inlineMsg(fields[i],'This field must contain minimum of 4 characters and not already be in use',2);
			return false;
		}
		
		if( fields[i] == "emailhome" && email_valid == false )
		{
			inlineMsg(fields[i],'You must enter a valid email address',2);
			return false;
		}
		
		if( fields[i] == "emailhome_confirm" && email_confirm_valid == false )
		{
			inlineMsg(fields[i],'Your confirmation email address does not match',2);
			return false;
		}
		
	
		if(document.getElementById(fields[i]).value == "") 
		{

			inlineMsg(fields[i],'This field must be completed',2);
			return false;
			
		}
		
	}

	return true;
	
}

function showResponse(responseText, statusText)  
{ 

	if( responseText.substring(0,5) == "saved" )
	{
		area = responseText.substring(6,15);
		loadDiv('details', area, '');
	}
	else
	{
		alert( "Error saving. Please check all required fields have been completed" );
		alert( responseText );
	}
	
}

function strpos (haystack, needle, offset) {
	var i = (haystack+'').indexOf(needle, (offset || 0));
	return i === -1 ? false : i;
}

function moveWorkPage(responseText, statusText)  
{ 

	if( responseText.substring(0,5) == "saved" )
	{
		cutResponse = responseText.substring(15,responseText.length);
		
		$( "#div_area_work" ).html( cutResponse );
		
	}
	else
	{
		$( "#div_area_work" ).html( responseText );
	}
		
}

       

function checkBoxes (fieldname, maxselect, thisbutton) {

	var numselect = eval("document.directoryform.num_"+fieldname).value; 

	var count = 0;

	for (i=1; i<=numselect; i++) {               

		 if( document.getElementById(fieldname + "_" + i).checked ) {

			  count++;

		 }

	}


	if ( count > maxselect && maxselect != 0 ) {

		 alert("You can only select "+maxselect+" options for this section.");

		 thisbutton.checked = false;

	}

	return;

}

var holder;

function processPayment()
{

	//var url = "/home/payment?no_wrap=1";
	var url = "?no_wrap=1";
	
	var pars = 	"payment_cc_name=" + document.getElementById('payment_cc_name').value +
				"&payment_cc_number=" + document.getElementById('payment_cc_number').value +
				"&payment_cc_security=" + document.getElementById('payment_cc_security').value +
				"&payment_cc_expiry_month=" + document.getElementById('payment_cc_expiry_month').value +
				"&payment_cc_expiry_year=" + document.getElementById('payment_cc_expiry_year').value +
				"&payment_cc_type_id=" + document.getElementById('payment_cc_type_id').value +
				"&payment_amount_cents=" + document.getElementById('payment_amount_cents').value +
				"&payment_ref=" + document.getElementById('payment_ref').value +
				"&payment_method=Credit Card" +
				"&session_id=" + document.getElementById('session_id').value +
				"&member_id=" + document.getElementById('member_id').value +
				"&member_type_id=" + document.getElementById('member_type_id').value +
				"&discount_code=" + document.getElementById('discount_code').value;
	
	//holder = document.getElementById('ajaxarea');
	$( '#ajaxarea' ).html("<center><br /><br /><br />Please wait while your payment is processed<br /><img src=\"/images/dhtmlwindow/ajax-loader.gif\" alt=\"Loading\" /><br /><br /><br /><br /><br /><br /><br /></center>");
	
	
	/*var myAjax = new Ajax.Request(
			url, 
			{
				method: 'post', 
				parameters: pars, 
				onComplete: showResponse
			});*/
			
	$.post( url, pars, function(data) {
		$( '#ajaxarea' ).html(data);
	});

}


// http://www.leigeber.com/2008/04/dynamic-inline-javascript-form-validation/
// START OF MESSAGE SCRIPT //

var MSGTIMER = 20;
var MSGSPEED = 5;
var MSGOFFSET = 3;
var MSGHIDE = 3;

// build out the divs, set attributes and call the fade function //
function inlineMsg(target,string,autohide) {
  var msg;
  var msgcontent;
  if(!document.getElementById('msg')) {
    msg = document.createElement('div');
    msg.id = 'msg';
    msgcontent = document.createElement('div');
    msgcontent.id = 'msgcontent';
    document.body.appendChild(msg);
    msg.appendChild(msgcontent);
    msg.style.filter = 'alpha(opacity=0)';
    msg.style.opacity = 0;
    msg.alpha = 0;
  } else {
    msg = document.getElementById('msg');
    msgcontent = document.getElementById('msgcontent');
  }
  msgcontent.innerHTML = string;
  msg.style.display = 'block';
  var msgheight = msg.offsetHeight;
  var targetdiv = document.getElementById(target);
  targetdiv.focus();
  var targetheight = targetdiv.offsetHeight;
  var targetwidth = targetdiv.offsetWidth;
  var topposition = topPosition(targetdiv) - ((msgheight - targetheight) / 2);
  var leftposition = leftPosition(targetdiv) + targetwidth + MSGOFFSET;
  msg.style.top = topposition + 'px';
  msg.style.left = leftposition + 'px';
  clearInterval(msg.timer);
  msg.timer = setInterval("fadeMsg(1)", MSGTIMER);
  if(!autohide) {
    autohide = MSGHIDE;  
  }
  window.setTimeout("hideMsg()", (autohide * 1000));
}

// hide the form alert //
function hideMsg(msg) {
  var msg = document.getElementById('msg');
  if(!msg.timer) {
    msg.timer = setInterval("fadeMsg(0)", MSGTIMER);
  }
}

// face the message box //
function fadeMsg(flag) {
  if(flag == null) {
    flag = 1;
  }
  var msg = document.getElementById('msg');
  var value;
  if(flag == 1) {
    value = msg.alpha + MSGSPEED;
  } else {
    value = msg.alpha - MSGSPEED;
  }
  msg.alpha = value;
  msg.style.opacity = (value / 100);
  msg.style.filter = 'alpha(opacity=' + value + ')';
  if(value >= 99) {
    clearInterval(msg.timer);
    msg.timer = null;
  } else if(value <= 1) {
    msg.style.display = "none";
    clearInterval(msg.timer);
  }
}

// calculate the position of the element in relation to the left of the browser //
function leftPosition(target) {
  var left = 0;
  if(target.offsetParent) {
    while(1) {
      left += target.offsetLeft;
      if(!target.offsetParent) {
        break;
      }
      target = target.offsetParent;
    }
  } else if(target.x) {
    left += target.x;
  }
  return left;
}

// calculate the position of the element in relation to the top of the browser window //
function topPosition(target) {
  var top = 0;
  if(target.offsetParent) {
    while(1) {
      top += target.offsetTop;
      if(!target.offsetParent) {
        break;
      }
      target = target.offsetParent;
    }
  } else if(target.y) {
    top += target.y;
  }
  return top;
}

// preload the arrow //
if(document.images) {
  arrow = new Image(7,80); 
  arrow.src = "/images/msg_arrow.gif"; 
}

