/*******************************************************************
 * MyPlan JS functions
 *******************************************************************/

/**
 * Login/Register: called from radio buttons and as a response to code
 * execution.
 *
 * Displays the requested screen in the 'register container',
 * which is simply a DIV where registration-related stuff is displayed.
 *
 * The following screens are available
 * - new: shows a registration form
 * - existing: shows a login form
 * - activate: shows a form used for user activations
 * - loginfail: shows a login failed message
 *
 * This requires two lines set in header.tpl, p_url and p_pageurl.
 *
 * @param p_value One of new, existing, activate, loginfail
 */
function register_container_controller(p_value)
{
	if(p_value == "new") { 

		$('#rb_register').checked=true;
		var url = p_pageurl + '?step=register_ajax&function=registerForm';
	} else if(p_value == "existing") {

//		loc = String(document.location)
//		len = loc.length
//		if (loc.substring(len, len-20) == 'sponsorachild?step=1' || loc.substring(len, len-25) =='beapartofit/childrenfirst' || loc.substring(len, len-25) =='beapartofit/donate?step=1' || loc.substring(len, len-23) =='beapartofit/shop?step=3') {
//			document.register_form.rb_login.checked = false;
//			document.register_form.rb_register.checked = false;
//			document.register_form.submit();
//            return;
//		}

		$('#rb_login').checked=true;
		var url = p_pageurl + '?step=register_ajax&function=loginForm';
	} else if(p_value == "activate") {
		var url = p_pageurl + '?step=register_ajax&function=activateForm';
	} else if(p_value =="loginfail") {
		var url = p_pageurl + '?step=register_ajax&function=loginFormFail';
	}
	animation_display("Loading...");
	//var ajaxUpdater = new Ajax.Updater('register_container', url, {method: 'get', evalScripts: true });
    $.ajax({type: "GET", url: url, 	complete: function(data){
        $('#register_container').html(data.responseText);
    }});

}


/**
 * Login/Register: runs on form submit for the RPP.
 *
 * For login/register, it detects form actions and ajax-submits
 * responses.  For all other pages, it performs a regular form submit.
 */
function register_container_processor()
{
	// Detect whether we are in the login/register/activate pages,
	// which are AJAX-powered
	var login, register, activate;
	if ($('#rb_login') && ($('#rb_register'))) {
		login = $('#rb_login').is(':checked');
		register = $('#rb_register').is(':checked');
	} else {
		login = false;
		register = false;
	}
	if ($('#activate').val()) {
		activate = $('#activate').val();
	} else {
		activate = false;
	}

	// Activating an existing user that has never logged in before - AJAX
	if (activate) {
		var email = $('#email').val();
		var oldHTML = animation_display("Loading your details...");
		//new Ajax.Updater('register_container', p_pageurl + '?step=register_ajax&function=activate&email=' + email, {method: 'get' ,
		//	evalScripts: true });
		//$('#register_container').load(p_pageurl + '?step=register_ajax&function=activate&email=' + email);
		$.ajax({type: "GET", url: p_pageurl + '?step=register_ajax&function=activate&email=' + email, 
			success: function(data){$('#register_container').html(data);}}
				
		);

	// Logging in an existing user - AJAX
	} else if (login) {
		var email = $('#email').val();
		var password = $('#password').val();
		animation_display("Loading your details...");
		login_validator(email, password);

	// Registering a new user - AJAX
	} else if (register) {

		var postVars = register_get_vars();
		//postVars += 'userType=new&';
		animation_display("Loading...");
		//new Ajax.Updater('register_container', p_pageurl + '?step=register_ajax&function=register', {method: 'post' ,
		//	postBody: postVars,
		//	evalScripts: true });
		//$('#register_container').load(p_pageurl + '?step=register_ajax&function=register', postVars);
		$.ajax({type: "POST", url: p_pageurl + '?step=register_ajax&function=register', data: postVars, dataType: 'html',
			success: function(data){

				// validation failure, show the form
				$('#register_container').html(data);

				if (match = /SSUUCCCCEESS/i.exec(data)) {
					// all okay, redirect
					if(match = /myplan/i.exec(location.href)){
						window.location = p_url + "/myplan";
					} else {
						//select login option
						//$('#rb_login').checked = true;

						//submit form
						$('#register_form').submit();
						
					}
					
				}
                
                
				
			}
		}
				
		);

	// A non-AJAX form - submit normally.
	}  else {
		document.register_form.submit();
	}
}

/**
 * Private: Called by register_container_processor for registrations
 * @return string
 */
function register_get_vars()
{

	//var formSubmit = $('register_form').elements;
	var postVars ='';

	//var formSubmit = $('#register_form:input');

	postVars = $('#register_form').serialize();

	return postVars;

}

/**
 * Private: called by register_container_processor.
 * It makes an AJAX call to validate a person's login credentials,
 * and calls login_validator_callback() on complete.
 * @param email
 * @param password
 * @param oldHTML
 * @return
 */
function login_validator(email, password, oldHTML)
{

	//params to send
	var pars = 'email=' + email + '&password=' + password;

	//Url to post AJAX requet to
	var url = p_pageurl + '?step=register_ajax&function=login';

	/*
	var userLogin = new Ajax.Request(
		url,
		{
			method: 'post',
			parameters: pars,
			evalScripts: true,
			onComplete: login_validator_callback
		});
	*/
	$.ajax({url: url, type: "POST", data: pars, complete: login_validator_callback});


}


/**
 * Private: callback function for AJAX login call.
 * It parses the response.
 *
 * @param transport
 * @return
 */
function login_validator_callback(transport)
{
	//alert(transport.responseText);
    //On OK from ajax call
	if(match = /OK/i.exec(transport.responseText)) {
    //alert(205);    
        //if in myplan.. forward to default page
		if(match = /myplan/i.exec(location.href)){
            // alert(208);  
            window.location = p_url + '/myplan';
		} else {
                  //alert(211);  
            register_container_controller('existing');
		}

	} else {
          //alert(216);  
		//reload login form
		register_container_controller('loginfail');
	}
      // alert(220);  
}


/**
 * Displays the loading animation in the register container
 *
 * @param p_heading The message to display to the user
 * @return string The old html that used to be in the container
 */
function animation_display(p_heading)
{

	
	//var register_container = $('#register_container');
	var register_container = document.getElementById('register_container');
	 //global
	var oldHTML = register_container.innerHTML;

		//set to loading state
	register_container.innerHTML = '<div align="center"> <strong>'+ p_heading +'</strong> <br />'+
		'<img src="' + p_url + '/freestyler/modules/custom/images/common/indicator.gif" alt="Loading" title="Loading" />' +
		'</div>';

	return oldHTML;

}


/**
 * Register: Displays a textbox if a user selects 'other' from the list of states.
 *
 * @param p_select
 * @return true
 */
function stateSelect(p_select)
{
	if(p_select.value =="OTHER"){
		//Element.show('myplan_register_stateother_validation');
		$('myplan_register_stateother_validation').show();
		return true;
	}
	//Element.hide('myplan_register_stateother_validation');
	$('myplan_register_stateother_validation').hide();
	return true;
}

function setXHTMLSupport(p_data)
{

	if(!getCookie("hasXHTMLSupport")){
		if(hasXMLHTTP()){
			var url		= p_data;
			var pars	= "testXHTTPSupport=1";
			$.ajax({url: url, data: pars, success: ajaxResponse});

			/*
			var myAjax = new Ajax.Request(
				url,
				{
					method: 'get',
					parameters: pars,
					onComplete: ajaxResponse
				});
			*/
		}
	}
}

function ajaxResponse()
{
	setCookie("hasXHTMLSupport", 1, '', '/');
}


/**
 * Used in Register template: displays optional fields based
 * on user type.
 *
 * @param p_form
 * @param p_element
 * @param p_field
 * @return
 */
function registrationSponsorType(p_form, p_element, p_field)
{
	switch(p_element) {
		//individual
		case "IV":
			//Element.hide(p_form + '_shared_sponsor');
			$('#' + p_form + '_shared_sponsor').hide();
			//Element.hide(p_form + '_organisation');
			$('#' + p_form + '_organisation').hide();
			$('#' + p_field + 'title2').value = "";
			$('#' + p_field + 'first_name2').value = "";
			$('#' + p_field + 'surname2').value = "";
			$('#' + p_field + 'orgtitle').value = "";
			$('#' + p_field + 'orgname').value = "";

		break;
		//shared
		case "SH":
			//Element.show(p_form + '_shared_sponsor');
			$('#' + p_form + '_shared_sponsor').show();
			//Element.hide(p_form + '_organisation');
			$('#' + p_form + '_organisation').hide();
			$('#' + p_field + 'orgtitle').value = "";
			$('#' + p_field + 'orgname').value = "";
		break;
		//company/organisation
		case "CP":
			//Element.hide(p_form + '_shared_sponsor');
			$('#' + p_form + '_shared_sponsor').hide();
			//Element.show(p_form + '_organisation');
			$('#' + p_form + '_organisation').show();
			$('#' + p_field + 'title2').value = "";
			$('#' + p_field + 'first_name2').value = "";
			$('#' + p_field + 'surname2').value = "";
		break;

		default:

		break;
	}

}

/**
 * Used in Register template: if prior donation flag is set,
 * display the processing delay warning message.
 *
 * @param p_form
 * @param p_element
 * @param p_field
 * @return
 */
function registrationPridon(p_form, p_element, p_field)
{
	switch(p_element) {
		//yes
		case "on":
			//Element.addClassName('myplan_register_pridon_validation', 'myplan_register_message');
			$('myplan_register_pridon_validation').addClass('myplan_register_message');
			//Element.show(p_form + '_yes');
			$('#' + p_form + '_yes').show();
		break;
		//no
		case "off":
			//Element.removeClassName('myplan_register_pridon_validation', 'myplan_register_message');
			$('myplan_register_pridon_validation').removeClass('myplan_register_message');
			//Element.hide(p_form + '_yes');
			$('#' + p_form + '_yes').hide();
		break;

		default:
			//Element.removeClassName('myplan_register_pridon_validation', 'myplan_register_message');
			$('myplan_register_pridon_validation').removeClass('myplan_register_message');
			//Element.hide(p_form + '_yes');
			$('#' + p_form + '_yes').hide();
		break;
	}

}


function myPlanLoginToggle()
{
		//Element.toggle('myplan_login_recover_part1_div');
	$('myplan_login_recover_part1_div').toggle();
		if($('#loginButton')){
			//Element.toggle('loginButton');
			$('#loginButton').toggle();
			//Element.toggle('recoverButton');
			$('#recoverButton').toggle();
		}
}


function myPlanFormSubmit(p_siteURL, form)
{
	//global site url for images etc...
	SITEURL = p_siteURL;

	try{
		if($('#userType1').checked)	{
			try {
				if ( $('#myplan_login_username').val() ){
						loadUserPlanSysData(p_siteURL, $('#myplan_login_username').val(), $('#myplan_login_password').val());
					} else {
						if(match = /myplan/i.exec(location.href)){
							window.location.reload();
						} else {
							form.submit();
						}
					}

				}
				catch (e){
					if(match = /myplan/i.exec(location.href)){
						window.location.reload();
					} else {
						form.submit();
					}
				}

		}  else {
			form.submit();
		}
	}
	catch(e){
		form.submit();
	}


}

function loadUserPlanSysData(p_url, p_username, p_password)
{
	//return if user does not have xmlhttp support
	if(!hasXMLHTTP()) {
		document.myplan.submit();
		return;
	}

	//login div
	var loginDiv = $('myplanLogin');

	//global
	oldHTML = loginDiv.innerHTML;

	//set to loading state
	loginDiv.innerHTML = '<div align="center"> <strong>Loading your details...</strong> <br />'+
							 '<img src="' + p_url + '/freestyler/modules/custom/images/common/indicator.gif" alt="Loading" title="Loading" />' +
						 '</div>';

	var url = p_url + '/myplan/login?step=ajaxUserLoad';
	var pars = 'userType=existingUser&myplan_login_username=' + p_username + '&myplan_login_password=' + p_password;

	logUserIn(pars, url);

}


function logUserIn(p_pars, p_url)
{
	/*
	var userLoadAjax = new Ajax.Request(
							p_url,
							{
								method: 'post',
								parameters: p_pars,
								onComplete: onUserLoad
							});
	*/

	$.ajax({url: p_url, type: "POST", data: p_pars, complete: onUserLoad});
}



/**
 * Login: a callback function which runs after the ajax login call to detect failed/successful logins.
 * @param originalRequest
 * @return
 */
function onUserLoad(originalRequest)
{
	var postLoginHTML =
		'<div align="center"> <strong>Your details have been successfully loaded.</strong> <br />'+
		'</div>' +
		'<div id="loggedin">' +
		 '<fieldset>' +
		 '<div id="submitBotton">' +
		 '<input type="hidden" name="userType"  value="loggedin">' +
		 '<input type="hidden" name="orderSubmit" value="1" />' +
		 '<input type="hidden" name="detailSubmit" value="1" />' +
		 '<input type="submit" name="detailSubmit" value="Continue" class="button" >' +
		 '</div>' +
		 '</fieldset>' +
		 '</div>';

	if(match = /failed/i.exec(originalRequest)){
		// Login failed.
		$('#myplanLogin').html(oldHTML);
		alert("Could not authenticate you.");
		//Element.show('submitButton');
		$('#submitButton').show();

	} else if( match = /success/i.exec(originalRequest)) {
		// Login succeeded
		if(match = /myplan/i.exec(location.href)){
			//reload page if in myplan scope
			window.location = SITEURL + '/myplan';
		} else {
			$('#myplanLogin').html(postLoginHTML);
		}

	} else {
		// Login broke
		$('#myplanLogin').html(oldHTML);
		alert("Could not authenticate you.");
		//Element.show('submitButton');
		$('#submitButton').show();
	}
}



/*****************************************************************
 * Utility functions
 *****************************************************************/


/**
 * Returns true if the browser supports XMLHTTP (AJAX), false othewise.
 * @return boolean
 */
function hasXMLHTTP()
{
	var testVar;
	try {
		if (window.XMLHttpRequest){ // if Mozilla, Safari etc
			return true;
		}
	} catch (e){}

	if (window.ActiveXObject) { // if IE
		try {
			testVar =  new ActiveXObject("Msxml2.XMLHTTP");
			return true;
		} catch (e) {}

		try{
			testVar = new ActiveXObject("Microsoft.XMLHTTP");
			return true;
		} catch (e){}
	}
	return false;
}

/**
 * Returns the value of a cookie specified by name.
 * @param name
 * @return mixed
 * http://www.webreference.com/js/column8/functions.html
 */
function getCookie(name)
{
	var dc = document.cookie;
	var prefix = name + "=";
	var begin = dc.indexOf("; " + prefix);
	if (begin == -1) {
		begin = dc.indexOf(prefix);
		if (begin != 0) return null;
	} else {
		begin += 2;
	}

	var end = document.cookie.indexOf(";", begin);
	if (end == -1) end = dc.length;
	return unescape(dc.substring(begin + prefix.length, end));
}


/**
 * Sets a cookie
 * @param name
 * @param value
 * @param expires
 * @param path
 * @param domain
 * @param secure
 * @return
 */
function setCookie(name, value, expires, path, domain, secure)
{
	var curCookie = name + "=" + escape(value) +
		((expires) ? "; expires=" + expires.toGMTString() : "") +
		((path) ? "; path=" + path : "") +
		((domain) ? "; domain=" + domain : "") +
		((secure) ? "; secure" : "");
	document.cookie = curCookie;
}


/**
 * Disable right mouse click Script
 * http://www.dynamicdrive.com
 */

var message="Function Disabled!";

function clickIE4()
{
	if (event.button==2){
		return false;
	}
}

function clickNS4(e)
{
	if (document.layers||document.getElementById&&!document.all) {
		if (e.which==2||e.which==3) {
			return false;
		}
	}
}

if (document.layers) {
	document.captureEvents(Event.MOUSEDOWN);
	document.onmousedown=clickNS4;
} else if (document.all&&!document.getElementById) {
	document.onmousedown=clickIE4;
}

document.oncontextmenu=new Function("return false")







