﻿/// <reference path="../jquery-1.3.2.min-vsdoc.js" />
/// <reference path="../jquery.validate-vsdoc.js" />

var address_collection;
var today = new Date();


$(document).ready(function() {
	$('#btn_submit_step1').removeClass('hidden');
	
	handle_field_validation();
	
	build_accordion(':first');
	handle_accordion_click();
	hide_payment_form();
	
	register_ajax_form();
	
	handle_how_found_out_about_us();
	
// REGISTRATION - PAGE 1
	handle_username_lookup();
	handle_email_lookup();

// REGISTRATION - PAGE 2
	handle_postcode_lookup();
	handle_dateofbirth_lookup();
	handle_playmate_lookup();
// TOOLTIPS	
	handle_tooltips();
	
// POPUP WINDOWS
	//$('a[rel*=facebox]').facebox();

});


/* ------------------------------------------------------------------------------- */
/* -------------------------------------------------------------- Ajax Elements -- */
/* ------------------------------------------------------------------------------- */
var ajax_delay = 600;
var loading_div = "<span id=\"ajax_loading\"><img src=\"" + appRoot + "_assets/images/_core/ajax-loader.gif\" alt=\"\" /></span>";

/// <summary>
/// 
/// </summary>
function add_ajax_loading(element) {
	if ($('#ajax_loading').length == 0) {
		$(element).after(loading_div);
	}
}

/// <summary>
/// 
/// </summary>
function hide_ajax_loading() {
	$('#ajax_loading').delay(ajax_delay).fadeTo('slow', 0, function() { $(this).remove(); });
}


/// <summary>
/// 
/// </summary>
function register_ajax_form() {
    var page_1_options = { 
        beforeSubmit:	page1_before_submit,		// pre-submit callback 
        success:		page1_successful_submit		// post-submit callback 
    }; 
    var page_2_options = { 
        beforeSubmit:	page2_before_submit,		// pre-submit callback 
        success:		page2_successful_submit		// post-submit callback 
    }; 
 
	// #btn_submit_step1
	$('#btn_submit_step1').click(function() {
        $(this).ajaxSubmit(page_1_options); 
        // !!! Important !!! 
        // always return false to prevent standard browser submit and page navigation 
        return false;
	});
	
	$('input[id$=btnJoinTombola]').click(function() {
        var success = $('#aspnetForm').validate().form(); 
        $(this).ajaxSubmit(page_2_options); 
        // !!! Important !!! 
        // always return false to prevent standard browser submit and page navigation 
		return success;
	});
}

/// <summary>
/// pre-submit, page 1 callback 
/// </summary>
function page1_before_submit(formData, jqForm, options) {
	var valid = $('#aspnetForm').validate().form();
	// Tracking - page 1 click

	//validate_user();
	
	if (valid) {
		log_to_registration(406, $('input.field_username').val());	// 406 - Passed Step 1
	} else {
		log_to_registration(405, $('input.field_username').val());	// 405 - Failed Step 1
	}
	return valid;
}

/// <summary>
/// post-submit, page 1 callback 
/// </summary>
function page1_successful_submit(responseText, statusText)  {
	$('input[id$=hdnPassedStage1]').val("1");
	select_step_2();
	
} 


/// <summary>
/// pre-submit, page 2 callback 
/// </summary>
function page2_before_submit(formData, jqForm, options) {
	var success = $('#aspnetForm').validate().form();
	
	if (!success)	// form submission failed
	{
		// 260px is roughly where page 2 starts on the page
		$('html, body').animate({scrollTop: "260px"}, 'slow');
		
		log_to_registration(429, $('input.field_username').val()); // LOG: 429 - failed step 2
	}
	else {
		$.blockUI({ message: '<p><img src="' + appRoot + '_assets/images/_core/loadingAnimation.gif" /></p><h1>nearly there!</h1><p>In moments you\'ll be playing on tombola!</p>',
			css: { 
					padding:        					'10px', 
					width:          					'260px', 
					border:         					'3px solid #EBA81B', 
					'border-radius:':					'6px',
					'-moz-border-radius:':				'6px',
					'-webkit-border-radius:':			'6px'
				}
		}).delay(2000);
	}
    return success;
} 

/// <summary>
/// post-submit, page 2 callback 
/// </summary>
function page2_successful_submit(responseText, statusText)  {
	$('input[id$=hdnPassedStage1]').val("2");
	
	$.unblockUI();

	//select_step_3(); 
	
} 


/* ------------------------------------------------------------------------------- */
/* ------------------------------------------------------------- Page Functions -- */
/* ------------------------------------------------------------------------------- */
/// <summary>
/// 
/// </summary>
function validate_user() {
	$.post(appRoot + '_assets/web_parts/handlers/ValidateUserCookie.ashx', {
		user_guid: session_id
	}, function(response) {
		if (!response.Success) {
			
			log_to_registration(299, $('input.field_username').val()); // 299 - fraud attempt
																
			location.href = "/errors/registerx.asp";
		}
	}, "json");

}

/// <summary>
/// 
/// </summary>
function hide_payment_form() {
	$('#add_funds h2').removeClass('open').next().removeClass('open').hide();
}

/// <summary>
/// 
/// </summary>
function handle_field_validation() {
	$('input:text:not(.multi_part,.skip_auto_validation),input:password,select:not(.dob,.multi_part,.skip_auto_validation)').blur( function() {
		validate_field(this);
	});

	$('select:not(.dob,.multi_part,.skip_auto_validation)').unbind().change(function() {
		validate_field(this);
	});
	
	$('input[id$=txt_Password1]').unbind().blur( function() {
		validate_field(this);
		validate_field('input[id$=txt_Password2]');
	});
	
	$('select.expiry_date').unbind().blur( function() {
		validate_expiry_field();
	});
}
var icon_success	= "<span class=\"icon_success\"><img src=\"" + appRoot + "_assets/images/registration/icon-valid.gif\" alt=\"valid\" /></span>";
var icon_fail		= "<span class=\"icon_fail\"><img src=\"" + appRoot + "_assets/images/registration/icon-error.gif\" alt=\"error\" /></span>";

/// <summary>
/// field by field validation - we only want to validate fields that are
/// either already validated or have previously succeeded/failed validation
/// and now have a different value
/// </summary>
function validate_field(field) {
//	console.log('validate_field(field): ' + field);
	validate_field(field, false);
}

/// <summary>
/// 
/// </summary>
function validate_field(field, ignore_length) {
	//console.log('validate_field(field, ignore_length): ' + field + " : " + ignore_length);

	var prev_icon = $(field).prev('.icon_success,.icon_fail');
	if ($(field).val().length > 0 || prev_icon.length > 0) {
		if (!$(field).valid()) {
			prev_icon.remove();
			$(field).addClass('field_error').before(icon_fail).prev().prev().addClass('label_error').parent().parent().addClass('section_error');
		}
		else {
			prev_icon.remove();
			$(field).removeClass('field_error').before(icon_success).prev().prev().removeClass('label_error').parent().parent().removeClass('section_error');
		}
	}

}


/// <summary>
/// 
/// </summary>
function validate_dob_field(field, valid) {
	//console.log('validate_dob_field(field, valid): ' + field + " : " + valid);
	var prev_icon = $(field).prev('.icon_success,.icon_fail');
	if ($(field).val().length > 0 || prev_icon.length > 0) {
		if (!valid) {
			prev_icon.remove();
			$(field).before(icon_fail).prev().prev().addClass('label_error').parent().parent().addClass('section_error');
		}
		else {
			prev_icon.remove();
			$(field).before(icon_success).prev().prev().removeClass('label_error').parent().parent().removeClass('section_error');
		}
	}
}

/// <summary>
/// 
/// </summary>
function validate_expiry_field() {
	var expiry_month	= $('#expm');
	var expiry_year		= $('#expy');
	
	var int_exp_month	= parseInt( (expiry_month.val().substring(0, 1) == "0") ? expiry_month.val().substring(1) : expiry_month.val() );
	var current_month	= today.getMonth()+1;
	
	var prev_icon = $(expiry_month).prev('.icon_success,.icon_fail');
	if ( (	expiry_month.val() != "-" && 
			expiry_year.val() != "-") || prev_icon.length > 0) {
		if (	(expiry_year.val() == '09' && int_exp_month < current_month) ||
				!expiry_month.valid() || 
				!expiry_year.valid()
			) 
		{
			prev_icon.remove();
			expiry_month.before(icon_fail).prev().prev().addClass('label_error').parent().parent().addClass('section_error');
		}
		else {
			prev_icon.remove();
			expiry_month.before(icon_success).prev().prev().removeClass('label_error').parent().parent().removeClass('section_error');
		}
	}
}




//#region
/// <summary>
/// 
/// </summary>
function handle_tooltips() {

	$("fieldset input[title],fieldset select[title]").tooltip({ 
		position: "center right", 
		offset: [30, 33], 
		effect: "fade", 
		opacity: 0.9, 
		tip: '.tooltip' 
	});
	$("h2[title]").tooltip({ 
		position: "center right", 
		offset: [-30, -500], 
		effect: "fade", 
		opacity: 0.9, 
		tip: '.tooltip' 
	});
}

/// <summary>
/// 
/// </summary>
function handle_username_lookup() {
	var username_field = $('input.field_username');
	
	username_field.blur(function() {
		validate_username(username_field);
	});
	
	$('input[name$=UserList]').click(function() {
		username_field.val($(this).val());
		validate_username(username_field);
	});
}

/// <summary>
/// 
/// </summary>
function validate_username(username_field) {

	var container		= $('#pnlUsernameOptions');
	var tab_1_heading	= $('#join_tombola h2:first');
	if (username_field.val().length > 0) {
		$.ajax({ url: appRoot + "_assets/web_parts/handlers/checkusername.ashx?username=" + username_field.val(),
			dataType: "json",
			beforeSend: function (json) {
				add_ajax_loading(username_field);
			},
			success: function (json) {
				if (!json.Success) {
					// we want to provide alternatives for username
					// set the values on the radio buttons
					container.find('input[id$=rbUsername1]').val(json.UsernameOption1);
					container.find('label.username_1').html(json.UsernameOption1);
					container.find('input[id$=rbUsername2]').val(json.UsernameOption2);
					container.find('label.username_2').html(json.UsernameOption2);
					container.find('input[id$=rbUsername3]').val(json.UsernameOption3);
					container.find('label.username_3').html(json.UsernameOption3);

					hide_ajax_loading();
					container.slideDown(300, function () {
						container.removeClass('hidden');
						log_to_registration(403, username_field.val()); // 403 - Username in use (fail)
						validate_field(username_field);
					});
					if (container.hasClass('hidden')) {
						tab_1_heading.next().animate({ height: tab_1_heading.next().height() + 170 }, 300);
					}
				}
				else {
					hide_ajax_loading();
					if (!container.hasClass('hidden')) {
						container.slideUp(300, function () {
							container.addClass('hidden');
							log_to_registration(404, username_field.val()); // 404 - Username ok
							validate_field(username_field);
						});
						tab_1_heading.next().animate({ height: tab_1_heading.next().height() - 170 }, 300);
					}
					else {
						log_to_registration(404, username_field.val()); // 404 - Username ok
						validate_field(username_field);
					}

				} // else
			},
			error: function (json) {
				validate_field(username_field);
				log_to_registration(499, username_field.val()); // 499 - our ajax call failed?
				hide_ajax_loading();
			}
		});
	}
	else {
		if (!container.hasClass('hidden')) {
			container.slideUp(300, function() {
				container.addClass('hidden');
				validate_field(username_field);
			});
			tab_1_heading.next().animate({ height: tab_1_heading.next().height() - 170 }, 300);
		}
		else {
			validate_field(username_field);
		}
	}

}

/// <summary>
/// 
/// </summary>
function handle_email_lookup() {
	var email_field = $('input.email');

	email_field.blur(function() {
		var container = $('#pnlEmailUsed');
		var tab_1_heading = $('#join_tombola h2:first');

		if (email_field.val().length > 0) {
			$.ajax({ url: appRoot + "_assets/web_parts/handlers/checkemail.ashx?email=" + email_field.val(),
				dataType: "json",
				beforeSend: function(json) {
					add_ajax_loading(email_field);
				},
				success: function(json) {
					if (!json.Success) {
						hide_ajax_loading();
						container.slideDown(300, function() {
							container.removeClass('hidden');
							log_to_registration(401, email_field.val());	// 401 - log failed email
							validate_field(email_field);
						});
						if (container.hasClass('hidden')) {
							tab_1_heading.next().animate({ height: tab_1_heading.next().height() + 130 }, 300);
						}
					}
					else {
						hide_ajax_loading();
						if (!container.hasClass('hidden')) {
							container.slideUp(300, function() {
								container.addClass('hidden');
								log_to_registration(402, email_field.val());	// 402 - log successfull email
								validate_field(email_field);
							});
							if (container.hasClass('hidden')) {
								tab_1_heading.next().animate({ height: tab_1_heading.next().height() - 130 }, 300);
							}
						}
						else {
							log_to_registration(402, email_field.val());	// 402 - log successfull email
							validate_field(email_field);
						}
					}

				},
				error: function(json) {
					validate_field(email_field);
					log_to_registration(499, email_field.val());	// 499 - our ajax call failed?
					hide_ajax_loading();
				}
			});
		}
		else {
			if (!container.hasClass('hidden')) {
				container.slideUp(300, function() {
					container.addClass('hidden');
					validate_field(email_field);
				});
				if (container.hasClass('hidden')) {
					tab_1_heading.next().animate({ height: tab_1_heading.next().height() - 130 }, 300);
				}
			}
			else {
				validate_field(email_field);
			}
		}
	});

}


/// <summary>
/// POSTCODE WORK
/// </summary>
function handle_postcode_lookup() {

	var postcode_button		= $('#btnAddressLookup');
	var housenumber_field	= $('input[id$=txt_HouseNoShort]');
	var postcode_field		= $('input[id$=txt_PostcodeShort]');
	var select_box			= $('select[id$=ddlAddresses]');

	postcode_button.click(function () {
		$('.tombola_validate_error').remove();
		if (postcode_field.val().length > 0 && postcode_field.valid()) {
			postcode_button.attr("disabled", "true");
			$.ajax({ url: appRoot + "_assets/web_parts/handlers/checkpostcode.ashx?postcode=" + postcode_field.val().replace(' ', ''),
				dataType: "json",
				beforeSend: function (json) {
					$('#address_count').val('1');
					add_ajax_loading(postcode_field);
				},
				success: function (json) {
					$.address_collection = json;
					var container = $('#pnlPostcodeResults');

					$('#address_count').val(json.AddressCount);

					var exception_thrown = json.ExceptionThrown;
					var no_properties_found_text;

					if (exception_thrown)
						no_properties_found_text = '<div class="tombola_validate_error" htmlfor="ctl00_cphMainContent_txt_PostcodeShort" generated="true">Unfortunately we were unable to match your postcode at the present time. Please enter your address manually.</div>';
					else
						no_properties_found_text = '<div class="tombola_validate_error" htmlfor="ctl00_cphMainContent_txt_PostcodeShort" generated="true">There are no matches for this postcode. Please enter your address manually.</div>';


					if (json.AddressCount >= 1) {
						var address_filtered;
						if (housenumber_field.length > 0) {
							var found_count = 0;
							var re = new RegExp("\\|\\|" + housenumber_field.val() + "\\|\\|", "i");

							// try to match against a single property
							$.each(json.AddressMatches, function (key, address) {
								if (address.TextAddressDelimited.match(re)) {
									found_count++;
									json_filtered = address;
								}
							});

							if (found_count == 1) {
								hide_ajax_loading();
								postcode_button.removeAttr("disabled");
								render_address(json_filtered.TextAddressDelimited);

								log_to_registration(412, housenumber_field.val() + ", " + postcode_field.val()); // 412 - only 1 address found

								validate_field(postcode_field);
								return false;
							}
						}

						// loop through each address and update the select box
						clear_address_form();
						select_box.empty();
						$.each(json.AddressMatches, function (key, address) {
							select_box.append('<option value="' + address.TextAddressDelimited + '">' + address.TextAddress.replace('\n', ',') + '</option>');
						});


						hide_ajax_loading();
						container.slideDown(300, function () {
							container.removeClass('hidden');
							log_to_registration(414, housenumber_field.val() + ", " + postcode_field.val()); // 414 - >1 address found
							postcode_button.removeAttr("disabled");
							validate_field(postcode_field);
						});

					}
					else {
						hide_ajax_loading();
						postcode_button.removeAttr("disabled");

						if (!container.hasClass('hidden')) {
							container.slideUp(300, function () {
								container.addClass('hidden');
								log_to_registration(411, housenumber_field.val() + ", " + postcode_field.val()); // 411 - no addresses found
								validate_field(postcode_field);
								postcode_field.after(no_properties_found_text);
							});
							//							if (container.hasClass('hidden')) {
							//								tab_1_heading.next().animate( { height: tab_1_heading.next().height() - 130 }, 300);
							//							}
						}
						else {
							validate_field(postcode_field);
							postcode_field.after(no_properties_found_text);
						}
					}
				},
				error: function (json) {
					postcode_button.removeAttr("disabled");
				}
			});
		}
		else {
			postcode_field.after('<div class="tombola_validate_error" htmlfor="ctl00_cphMainContent_txt_PostcodeShort" generated="true">Please enter a postcode to check against.</div>');
		}
		return false;
	});

// Address Lookup - Select from Drop down
	select_box.click(function() {
		var value	= select_box.val();
		render_address(value);
	});
}


function handle_dateofbirth_lookup() {
	var dd_field 	= $('select[id$=dll_dob_dd]');
	var mm_field 	= $('select[id$=dll_dob_mm]');
	var yy_field 	= $('select[id$=dll_dob_yy]');
	
	var container		= $('#pnlDateOfBirthValid');
	var tab_2_heading	= $('#join_tombola h2:eq(1)');
	$('select.dob').change(function() {
	if (dd_field.val().length > 0 && mm_field.val().length > 0 && yy_field.val().length > 0) {
		
			$.ajax({ url: appRoot + "_assets/web_parts/handlers/checkdateofbirth.ashx?dd=" + dd_field.val() +
																					"&mm=" + mm_field.val() +
																					"&yy=" + yy_field.val(),
				dataType: "json",
				beforeSend: function(json) {
					yy_field.after(loading_div);
				},
				success: function(json) {
					if (!json.Success) {
						hide_ajax_loading();
						container.slideDown(300, function() {
							container.removeClass('hidden');
							log_to_registration(421,  dd_field.val() + "/" + mm_field.val() + "/" + yy_field.val()); // 421 - invalid DoB
							validate_dob_field(dd_field, false);
						});
						if (container.hasClass('hidden')) {
							tab_2_heading.next().animate({ height: tab_2_heading.next().height() + 210 }, 300);
						}
					}
					else {
						hide_ajax_loading();
						if (!container.hasClass('hidden')) {
							container.slideUp(300, function() {
								container.addClass('hidden');
							});
							tab_2_heading.next().animate({ height: tab_2_heading.next().height() - 210 }, 300);
						} // if
						log_to_registration(422,  dd_field.val() + "/" + mm_field.val() + "/" + yy_field.val()); // 422 - DoB ok
						validate_dob_field(dd_field, true);
					} // else
				},
				error: function(json) {
					hide_ajax_loading();
				}
			});
		}
		else {
			if (!container.hasClass('hidden')) {
				container.slideUp(300, function() {
					container.addClass('hidden');
					validate_dob_field(dd_field, true);
				});
				tab_2_heading.next().animate({ height: tab_2_heading.next().height() - 210 }, 300);
			}
		}
	});

}



/// <summary>
/// 
/// </summary>
function handle_playmate_lookup() {
	var playmate_field = $('input.field_playmate');

	playmate_field.blur(function() {
		validate_playmate(playmate_field);
	});

}

/// <summary>
/// NOTE: json.Success = true is a fail, json.Success = false = success (they are valid users)
/// reverse logic to checking username above, though saved having to write a new method
/// </summary>
function validate_playmate(playmate_field) {
	var container = $('#pnlPlaymateOptions');
	var tab_2_heading = $('#join_tombola h2:eq(1)');
	
	//If they try and add themselves
	if(playmate_field.val()== $('input.field_username').val())
	{
		container.slideDown(300, function () {
						container.removeClass('hidden');
						log_to_registration(423, playmate_field.val()); // can't find playmate
						validate_field(playmate_field);
					});
					if (container.hasClass('hidden')) {
						tab_2_heading.next().animate({ height: tab_2_heading.next().height() + 170 }, 300);
					}
	}
	else
	{
		if (!container.hasClass('hidden')) {
						container.slideUp(300, function () {
							container.addClass('hidden');
							log_to_registration(424, playmate_field.val()); // found playmate
							validate_field(playmate_field);
						});
						tab_2_heading.next().animate({ height: tab_2_heading.next().height() - 170 }, 300);
					}
					else {
						log_to_registration(424, playmate_field.val()); // found playmate
						validate_field(playmate_field);
					}
	}
	
	/*
	if (playmate_field.val().length > 0) {
		$.ajax({ url: appRoot + "_assets/web_parts/handlers/checkusername.ashx?username=" + playmate_field.val(),
			dataType: "json",
			beforeSend: function (json) {
				add_ajax_loading(playmate_field);
			},
			success: function (json) {
				if (json.Success) {
					hide_ajax_loading();
					container.slideDown(300, function () {
						container.removeClass('hidden');
						log_to_registration(423, playmate_field.val()); // can't find playmate
						//validate_field(playmate_field);
					});
					if (container.hasClass('hidden')) {
						tab_2_heading.next().animate({ height: tab_2_heading.next().height() + 170 }, 300);
					}
				}
				else {
					hide_ajax_loading();
					if (!container.hasClass('hidden')) {
						container.slideUp(300, function () {
							container.addClass('hidden');
							log_to_registration(424, playmate_field.val()); // found playmate
							//validate_field(playmate_field);
						});
						tab_2_heading.next().animate({ height: tab_2_heading.next().height() - 170 }, 300);
					}
					else {
						log_to_registration(424, playmate_field.val()); // found playmate
						//validate_field(playmate_field);
					}

				} // else
			},
			error: function (json) {
				validate_field(playmate_field);
				hide_ajax_loading();
			}
		});
	}
	else {
		if (!container.hasClass('hidden')) {
			container.slideUp(300, function() {
				container.addClass('hidden');
				validate_field(playmate_field);
			});
			tab_2_heading.next().animate({ height: tab_2_heading.next().height() - 170 }, 300);
		}
		else {
			validate_field(playmate_field);
		}
	}
*/
}




/// <summary>
/// 
/// </summary>
function handle_how_found_out_about_us() {
	
	var pnl_other			= $('#pnl_heard_about_other');
	var pnl_magazine		= $('#pnl_heard_about_magazine');
	var lbl_other			= $('input[id$=txtFoundUsOther]');
	var ddl_how_found_us	= $('select[id$=ddlHowFoundUs]');
	var tab_2_heading		= $('#join_tombola h2:eq(1)');
	
    ddl_how_found_us.change(function() 
    { 
        var ddl_value	= ddl_how_found_us.val(); 
        validate_field(ddl_how_found_us);
		switch(ddl_value)
		{
			case "1":
				if (pnl_magazine.hasClass('hidden') && pnl_other.hasClass('hidden')) {
					tab_2_heading.next().animate( { height: tab_2_heading.next().height() + 40 }, 300);
				}
				pnl_magazine.show().removeClass('hidden');
				pnl_other.hide().addClass('hidden');
				break;
			case "999":
				if (pnl_magazine.hasClass('hidden') && pnl_other.hasClass('hidden')) {
					tab_2_heading.next().animate( { height: tab_2_heading.next().height() + 40 }, 300);
				}
				pnl_magazine.hide().addClass('hidden');
				pnl_other.show().removeClass('hidden');
				lbl_other.val("Other: ");
				break;
//			case "5":
//				if (pnl_magazine.hasClass('hidden') && pnl_other.hasClass('hidden')) {
//					tab_2_heading.next().animate( { height: tab_2_heading.next().height() + 40 }, 300);
//				}
//				pnl_magazine.hide().addClass('hidden');
//				pnl_other.show().removeClass('hidden');
//				lbl_other.val("Friend: ");
//				break;
			default:
				if (!pnl_magazine.hasClass('hidden') || !pnl_other.hasClass('hidden')) {
					tab_2_heading.next().animate( { height: tab_2_heading.next().height() - 40 }, 300);
				}
				pnl_magazine.hide().addClass('hidden');
				pnl_other.hide().addClass('hidden');
				break;
		}
 
    }); 
}

/* ------------------------------------------------------------------------------- */
/* ------------------------------------------------------------------ Accordion -- */
/* ------------------------------------------------------------------------------- */
var accordion_slide_speed = 600;
/// <summary>
/// 
/// </summary>
function build_accordion(step) {
	// hide all DIVs inside H2's except the first one
	$('#join_tombola h2:not(' + step + ')').removeClass('open').next().slideUp(accordion_slide_speed); 
  
//	// apply the open class
	$('#join_tombola h2' + step).addClass('open').next().addClass('open');
	$('h2.open').next().slideDown(accordion_slide_speed);
  
//	
}


/// <summary>
/// 
/// </summary>
function handle_accordion_click() {
	var val = $('input[id$=hdnPassedStage1]').val();
	
	if (val < "2" && val.length > 0) {
		$('#join_tombola h2').unbind().click(function () {
			if ($(this).hasClass('open')) {
				return false;
			}
			
			// hide the currently visible drawer contents
			// remove the open class from the currently open drawer
			$('h2.open').removeClass('open').next().removeClass('open').slideUp(accordion_slide_speed);
		    
			// show the associated drawer content to 'this' (this is the current H2 element)
			// since the drawer content is the next element after the clicked H2, we find
			// it and show it using this:
			// set a class indicating on the H2 that the drawer is open
			$(this).addClass('open').next().addClass('open').slideDown(accordion_slide_speed);
			
			$('h1').removeClass().addClass($(this).next().attr('id'));
			
			validate_form();

		});
	}
}
//#region


/* ------------------------------------------------------------------------------- */
/* --------------------------------------------------------------- Form Actions -- */
/* ------------------------------------------------------------------------------- */
/// <summary>
/// 
/// </summary>
function select_step_2() {
	$(document).ready(function () {
		var hidden = $('input[id$=hdnPassedStage1]');

		if (hidden.val() != null) {
			// we're on step 2 now, disable the tooltip for the heading
			var tooltip = $('h2').tooltip(1).onBeforeShow(function () { return false; });


			// remove the open class from the existing open accordions
			$('h2.open').removeClass('open').next().removeClass('open');

			build_accordion(':eq(1)');
			handle_accordion_click();

			$('h1').removeClass().addClass('step_2');
			$('#page_banner h1').html('Welcome to tombola - User Registration Step 2 of 3');

			if (isFreeFiver === true) {
				$('#banner_strapline').html('You\'re almost there to claiming your £5 FREE! You\'ll soon be playing games for free at tombola.co.uk where £4 million in cash prizes is won each week');
			} else {
				$('#banner_strapline').html('You\'re almost there! You\'ll soon be playing bingo games here at tombola.co.uk <br />where &pound;4 million in cash is won each week. ');
			}
			validate_form();
		}
	});
}

/// <summary>
/// 
/// </summary>
function select_step_3() {
	$(document).ready(function() {
		var hidden = $('input[id$=hdnPassedStage1]');
	
		if (hidden.val() != null) {
			// we're on step 3 now, disable the tooltip for the heading
			var tooltip = $('h2').tooltip(2).onBeforeShow(function() { return false; });

			$('h2.open').removeClass('open').next().removeClass('open').slideUp(accordion_slide_speed);
			//build_accordion(':eq(2)');
//			$('h2:not(.open)').next().slideUp(accordion_slide_speed);
			$('#add_funds h2').addClass('open').next().addClass('open').slideDown(accordion_slide_speed);
			
			$('h1').removeClass().addClass('step_3');
		}
	});
}


/* ------------------------------------------------------------------------------- */
/* ------------------------------------------------------------ Utility Methods -- */
/* ------------------------------------------------------------------------------- */

/// <summary>
/// 
/// </summary>
function log_to_registration(action_code, extra_data) {
	var tracking_url = appRoot + '_assets/web_parts/handlers/logitem.ashx?userid=0' +
						'&IP='		+ ip_address +
						'&Notes='	+ session_id;
						
	var tracking_gif = $('#tracking_image').attr('src', tracking_url +
														'&ActionCode=' + escape(action_code) +
														'&ActionDescription=' + escape(extra_data) +
														'&NotesSub=' + escape(''));
	//console.log("logging shit: " + tracking_gif);
}

/// <summary>
/// 
/// </summary>
function clear_address_form() {
	$('input[id$=txt_Street]').val("");
	$('input[id$=txt_Town]').val("");
	$('input[id$=txt_County]').val("");
}


/// <summary>
///		[0] = SubBuilding/Organsation
///		[1] = BuildingNo/BuildingName
///		[2] = Street
///		[3] = Town
///		[4] = District
///		[5] = PostCode
/// </summary>
function render_address(value) {
	var address	= value.toString().split('||');
	
	if (address[0].length > 0) {
		$('input[id$=txt_HouseNoShort]').val(address[0] + ", " + address[1]);
	}
	else {
		$('input[id$=txt_HouseNoShort]').val(address[1]);
	}
	$('input[id$=txt_PostcodeShort]').val(address[5]);
	$('input[id$=txt_Street]').val(address[2]);
	$('input[id$=txt_Town]').val(address[3]);
	$('input[id$=txt_County]').val(address[4]);
	
	validate_field('input[id$=txt_HouseNoShort]');
	validate_field('input[id$=txt_PostcodeShort]');
	validate_field('input[id$=txt_Street]');
	validate_field('input[id$=txt_Town]');
	validate_field('input[id$=txt_County]');
	
	var container = $('#pnlPostcodeResults');

	container.slideUp(200).addClass('hidden');

}
