
	/**
	 * Base vars to work with
	 */
	var progressPosition = 1;
	var slidePageHasError = false;
	var pageWidth = 703;
	var catSelectTargetPage = 4;
	
	/**
	 * jQuery initialization work
	 */
	$(document).ready(function($) {

		
		$("#allcategories").accordion({ 
				animated: 'bounceslide',
				collapsible: true,
				active: false
		});
		
		$(".subcatdrag").disableSelection();
		$(".subcatdrag").draggable({
				appendTo: "body",
				helper: "clone",
				cursor: "pointer",
				zIndex: 8000,
				start: dragStartHandler,
				stop: dragStopHandler
		});
		
		$('#helptext').click(function(){
			$(this).hide();
		});
		
		$('#helpbutton').click(function(){
			$('#helptext').toggle();	
		});

		
		$("#selected-categories ul#current-categories").droppable({
			drop: function(event, ui) {
				$(this).find(".placeholder").remove();
				addCategory(ui.draggable.attr('id'));
				
				var selectedCategoriesCount = $("ul#current-categories li").length
				$("#selected-categories-toolbar .badge").html(selectedCategoriesCount);
				
			}
		});
		
		$("#selected-categories-toolbar").toggle(dragStartHandler, dragStopHandler);
		
		
		$('#backbutton').click(function() { updateVerification(); slidePrevPage(); });
		$('#forwardbutton').click(function(){ updateVerification(); slideNextPage(); });
		
		// attach events to current and future matching selectors
		$(".current-category-item").live('mouseover', function(){
			$(this).find(".tools").show();
		});
		
		$(".current-category-item").live('mouseout', function(){
			$(this).find(".tools").hide();
		});
		
		$(".tools img.delete").live('click', function(){
			$(this).parent().parent().remove();
			//$("#selected-categories-toolbar").html($("ul#current-categories li").length + " Categories Selected");
			$("#selected-categories-toolbar .badge").html($("ul#current-categories li").length);
			if($("ul#current-categories li").length == 0)
			{
				$( "<li></li>" ).addClass("placeholder").text(" ").appendTo("#current-categories");
			}
		});
		
		/** Field Validation */
		$("#ResourceOrgemail").blur(function(){ return validateField($(this), /^[\w\-\.\+]+\@[a-zA-Z0-9\.\-]+\.[a-zA-z0-9]{2,4}$/, "Please provide a primary email for your organization.", true); });
		$("#ResourcePassword").blur(function(){ return validateField($(this), /^[a-zA-Z0-9]+$/, "Please provide a password.", true); });
		$("#ResourcePasswordConfirm").blur(function(){ 
			//console.log($(this).position().left);
			setErrorPosition($(this));
			if($(this).val() != $('#ResourcePassword').val())
			{
				$(this).val("");
				showErrorMessage($('#ResourcePassword'), "Your passwords do not match. Please try again");	
			}
		});
		$("#ResourceContactName").blur(function(){return validateField($(this), /.+/, "Please provide a contact name at your organization.", true);});
		$("#ResourceCompanyName").blur(function(){return validateField($(this), /.+/, "Please provide the name of your organization.", true);});
		$("#ResourceUrl").blur(function(){return validateField($(this), /^(http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?$/, "Please provide your website address beginning with http://", true);});
		$("#ResourceAddress").blur(function(){return validateField($(this), /.+/, "Please provide your street address", true);});
		$("#ResourceCity").blur(function(){return validateField($(this), /.+/, "Please provide your city.", true);});
		$("#ResourceState").blur(function(){return validateField($(this), /.+/, "Please provide your state.", true);});
		$("#ResourceZip").blur(function(){return validateField($(this), /^[0-9]{5}(\-?\d{4})?$/, "Please provide your zip code.", true);});
		$("#ResourceCountry").blur(function(){return validateField($(this), /.+/, "Please provide your country", false);});
		$("#ResourceEmail").blur(function(){return validateField($(this), /^[\w\-\.\+]+\@[a-zA-Z0-9\.\-]+\.[a-zA-z0-9]{2,4}$/, "Please provide your email address, even if it is the same as the primary organization email address.", true);});
		$("#ResourceExtraemail").blur(function(){return validateField($(this), /^[\w\-\.\+]+\@[a-zA-Z0-9\.\-]+\.[a-zA-z0-9]{2,4}$/, "Please provide any additional email address you would like us to use.", false);});
		$("#ResourcePhone").blur(function(){return validateField($(this), /^\(?[2-9]\d{2}[\)\.-]?\s?\d{3}[\s\.-]?\d{4}$/, "Please provide your 10 digit telephone number. For example 800-555-1212.", true);});
		$("#ResourceFax").blur(function(){return validateField($(this), /^\(?[2-9]\d{2}[\)\.-]?\s?\d{3}[\s\.-]?\d{4}$/, "Please provide your 10 digit fax number or leave blank if not you do not have one. For example 800-555-1212.", false);});
		$("#ResourceTollFree").blur(function(){return validateField($(this), /^\(?[2-9]\d{2}[\)\.-]?\s?\d{3}[\s\.-]?\d{4}$/, "Please provide your 10 digit toll-free number or leave blank if not you do not have one. For example 800-555-1212.", false);});
		
		$("#ResourceDescription").blur(function(){return validateField($(this), /.+/, "Please give us a description of your organization", true);});

	});
	
	
	function showErrorMessage(field, message)
	{
		$('#field-error').html(message);
		var left = field.position().left;
		var top = field.position().top + field.outerHeight();
		var width = (field.outerWidth() * .9);
		$('#field-error').css({'left': left+'px', 'top':top+'px', 'width' : width+'px'});
		$('#field-error').show();
		field.focus();
		//field.unbind('blur');
		//field.blur(function(){field.trigger('change')});
	}	
	
	function dismissError(field)
	{
		console.log('dismissError called');
		$('#field-error').html("");
		$('#field-error').hide();
		//field.unbind('blur');
	}
	
	// Validation field method	
	function validateField(field, value, msg, required)
	{
		if(required)
		{
			if(!value.test(field.val()))
			{
				showErrorMessage(field, msg);
				return false;
			}
			else
			{
				dismissError(field);
				return true;
			}
		}
		return true;
	}
	
	function updateVerification()
	{
		$('#ResourceOrgemailVerify').text( $('#ResourceOrgemail').val() );
		$('#ResourceCompanyNameVerify').text( $('#ResourceCompanyName').val() );
		$('#ResourceUrlVerify').text( $('#ResourceUrl').val() );
		$('#ResourceAddressVerify').text( $('#ResourceAddress').val() );
		$('#ResourceCityVerify').text( $('#ResourceCity').val() );
		$('#ResourceStateVerify').text( $('#ResourceState').val() );
		$('#ResourceZipVerify').text( $('#ResourceZip').val() );
		$('#ResourceCountryVerify').text( $('#ResourceCountry').val() );
		$('#ResourceContactNameVerify').text( $('#ResourceContactName').val() );
		$('#ResourceEmailVerify').text( $('#ResourceEmail').val() );
		$('#ResourceExtraemailVerify').text( $('#ResourceExtraemail').val() );
		$('#ResourcePhoneVerify').text( $('#ResourcePhone').val() );
		$('#ResourceFaxVerify').text( $('#ResourceFax').val() );
		$('#ResourceTollFreeVerify').text( $('#ResourceTollFree').val() );
		$('#CategoriesVerify').empty()
		
		$('#current-categories li').each(function(index){
			$("<li></li>").text($(this).text()).appendTo('#CategoriesVerify');
			//console.log($(this).text());
		});
	}
	
	function dragStartHandler(event, ui)
	{
		$('#selected-categories').addClass('selected-categories-active');
		var openHeight = (parseInt($("ul#current-categories li").length) * 38) + 32;
		$('#selected-categories').animate({height:openHeight});
	}

	function dragStopHandler(event, ui)
	{
		$('#selected-categories').removeClass('selected-categories-active');
		$('#selected-categories').animate({height:27,duration:2000});
	}
	

	

	
	function connectJQEvents()
	{
		$(".subcatdrag").draggable({
			//appendTo: "body",
			helper: "clone",
			cursor: "move",
			zIndex: 8000,
			start: dragStartHandler,
			stop: dragStopHandler
		});
	}



	function slideNextPage()
	{
		//if(validateCurrentPage())
		//{
			$(".slide-group").animate({left:"-="+pageWidth}, 600, 'swing');
			progressPosition++;
		//}
		checkCurrentPageButtons();
	}
	
	function slidePrevPage()
	{	
		$(".slide-group").animate({left:"+="+pageWidth}, 600, 'swing');
		progressPosition--;
		checkCurrentPageButtons();
	}
	
	function slideToPage(page)
	{
		var goto = (pageWidth * page) * -1;
		
		$(".slide-group").animate({left:goto}, 500, 'swing');
		progressPosition = page;
		checkCurrentPageButtons();
	}
	
	function checkCurrentPageButtons()
	{
		if(progressPosition == 1) {
			$('#backbutton').hide();
		} else {
			$('#backbutton').show();
		}
		
		if(progressPosition == 4) {
			$('#forwardbutton').attr("src","/images/admin/finish_button.png");
			$('#forwardbutton').unbind('click');
			$('#forwardbutton').click(function(){$('#ResourceAddForm').submit()});
		} else {
			$('#forwardbutton').attr("src","/images/admin/next_button.png");
			$('#forwardbutton').unbind('click');
			$('#forwardbutton').click(function()
			{
				if(validateCurrentPage())
				{ 
					updateVerification(); 
					slideNextPage();
				}
			});
		}
	}
	
	
	function validateCurrentPage()
	{
		if(progressPosition == 2)
		{
			var passesValidation = true;
			passesValidation = passesValidation && validateField($("#ResourceOrgemail"), /^[\w\-\.\+]+\@[a-zA-Z0-9\.\-]+\.[a-zA-z0-9]{2,4}$/, "Please provide a primary email for your organization.", true); 
			passesValidation = passesValidation && validateField($("#ResourcePassword"), /^[a-zA-Z0-9]+$/, "Please provide a password.", true);
			passesValidation = passesValidation && validateField($("#ResourceContactName"), /.+/, "Please provide a contact name at your organization.", true);
			passesValidation = passesValidation && validateField($("#ResourceCompanyName"), /.+/, "Please provide the name of your organization.", true);
			passesValidation = passesValidation && validateField($("#ResourceUrl"), /^(http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?$/, "Please provide your website address beginning with http://", true);
			passesValidation = passesValidation && validateField($("#ResourceAddress"), /.+/, "Please provide your street address", true);
			passesValidation = passesValidation && validateField($("#ResourceCity"), /.+/, "Please provide your city.", true);
			passesValidation = passesValidation && validateField($("#ResourceState"), /.+/, "Please provide your state.", true);
			passesValidation = passesValidation && validateField($("#ResourceZip"), /^[0-9]{5}(\-?\d{4})?$/, "Please provide your zip code.", true);		
			passesValidation = passesValidation && validateField($("#ResourceCountry"), /.+/, "Please provide your country", false);
			passesValidation = passesValidation && validateField($("#ResourceEmail"), /^[\w\-\.\+]+\@[a-zA-Z0-9\.\-]+\.[a-zA-z0-9]{2,4}$/, "Please provide your email address, even if it is the same as the primary organization email address.", true);
			passesValidation = passesValidation && validateField($("#ResourceExtraemail"), /^[\w\-\.\+]+\@[a-zA-Z0-9\.\-]+\.[a-zA-z0-9]{2,4}$/, "Please provide any additional email address you would like us to use.", false);
			passesValidation = passesValidation && validateField($("#ResourcePhone"), /^\(?[2-9]\d{2}[\)\.-]?\s?\d{3}[\s\.-]?\d{4}$/, "Please provide your 10 digit telephone number. For example 800-555-1212.", true);
			passesValidation = passesValidation && validateField($("#ResourceFax"), /^\(?[2-9]\d{2}[\)\.-]?\s?\d{3}[\s\.-]?\d{4}$/, "Please provide your 10 digit fax number or leave blank if not you do not have one. For example 800-555-1212.", false);
			passesValidation = passesValidation && validateField($("#ResourceTollFree"), /^\(?[2-9]\d{2}[\)\.-]?\s?\d{3}[\s\.-]?\d{4}$/, "Please provide your 10 digit toll-free number or leave blank if not you do not have one. For example 800-555-1212.", false);
			passesValidation = passesValidation && validateField($("#ResourceDescription"), /.+/, "Please give us a description of your organization", true);
			
			return passesValidation;
		}
		else
		{
			return true;
		}
	}
	
	/* used for tab position bug
	function checkCurrentPagePosition()
	{
		$('#ResourceCompanyName').unbind('focus');
		setTimeout(function(){
			var extra = (progressPosition > 0) ? ((pageWidth * progressPosition) % Math.abs($(".slide-group").position().left)) * -1 : 0;
			$(".slide-group").animate({left:extra}, 250, 'swing');
			},
			50);
		
	}
	*/


