var loader =  "<img src='/themes/admin/blackdiamond/images/icons/ajax-loader-1.gif' id='loader' />"
var pre_selected_user_type_id = false;
var pre_selected_is_roster_owner = false;

$.fn.tagName = function() {
    return this.get(0).tagName;
}

jQuery(document).ready(function($) {
	user_type_id = jQuery('input[name=user_type_id]:checked').val();
	is_roster_owner = jQuery('input[name=is_roster_owner]:checked').val();
	
	if( user_type_id ){
		pre_selected_user_type_id = jQuery('input[name=user_type_id]:checked').val();
	}
	if( is_roster_owner ){
		pre_selected_is_roster_owner = jQuery('input[name=is_roster_owner]:checked').val();
	}
	
	jQuery('.roster_options').hide();
	if( jQuery('.step_one_group').height() > jQuery('.step_one_individual').height() ){
		jQuery('.step_one_individual').css('height', jQuery('.step_one_group').height());
	} else {
		jQuery('.step_one_individual').css('height', '');
	}
	
	if( jQuery('#application_ajax_content').html().length == 0 ){
		jQuery('#application_ajax_content').hide();
	} else {
		jQuery('#roster_options_'+pre_selected_user_type_id).show();
		prep_ajax_content();
	}

	jQuery('input[name=user_type_id]').bind('click', function(e){
		if( jQuery('#roster_options_'+this.value).size() > 0 ){
			jQuery('.roster_options').hide();
			jQuery('input[name=is_roster_owner]').attr('checked', '');
			jQuery('#roster_options_'+this.value).show();
		} else {
			jQuery('.roster_options').hide();
			jQuery('input[name=is_roster_owner]').attr('checked', '');
			get_application( this.value, false );
		}
		
		if( jQuery('.step_one_group').height() > jQuery('.step_one_individual').height() ){
			jQuery('.step_one_individual').css('height', jQuery('.step_one_group').height());
		} else {
			jQuery('.step_one_individual').css('height', '');
		}
	})
	
	jQuery('input[name=is_roster_owner]').bind('click', function(e){
		get_application( jQuery('input[name=user_type_id]:checked').val(), this.value );
	})
});

function get_application( user_type_id, is_roster_owner ){
	vars = new Array();
	vars[0] = 'uncache='+Math.random()*11;
	vars[vars.length] = 'user_type_id='+user_type_id;
	
	ajax_url = jQuery('input[name=get_application_url]').val();
	
	if( is_roster_owner != false ){
		vars[vars.length] = 'is_roster_owner='+is_roster_owner;
	}
	
	if( jQuery('#roster_options_'+user_type_id).size() > 0 ){
		ajax_url = ajax_url.replace('individual', 'group');
	}
	
	vars = vars.join('&');
	
	if( is_roster_owner == false ){
		jQuery('#user_type_id_'+user_type_id+'_label').after(loader);
	} else {
		jQuery('#is_roster_owner_'+is_roster_owner+'_type_'+user_type_id+'_label').after(loader);
	}
	
	if( jQuery('#application_ajax_content').is(':visible') ){
		no_existing_content = false;
		remove_existing_content = confirm("This will delete any work that you have already done on this application.\nAre you sure that you want to do this?");
	} else {
		no_existing_content = true;
		remove_existing_content = false;
	}
	
	if( no_existing_content || remove_existing_content ){
		pre_selected_user_type_id = user_type_id;
		pre_selected_is_roster_owner = is_roster_owner;
		
		if( jQuery('#application_ajax_content').is(':visible') ){
			speed = jQuery('#application_ajax_content').height()/100 * 125;
			jQuery('#application_ajax_content').slideUp(speed);
		}
		
		$.ajax({
			type: "POST",
			url: ajax_url,
			data: vars,
			success: function(msg){
				jQuery('#application_ajax_content').html( msg );
				
				prep_ajax_content();
				
				speed = jQuery('#application_ajax_content').height()/100 * 250;
				jQuery('#application_ajax_content').slideDown(speed);
				jQuery("#loader").remove();
			},
			error: function(er, textStatus, errorThrown){
				jQuery('#application_ajax_content').hide();
				jQuery('#application_ajax_content').html('error');
				jQuery("#loader").remove();
				
				if( er.status == 401 ){
					alert( er.statusText );
				} else {
					alert( errorText );
				}
				
				pre_selected_user_type_id = false;
				pre_selected_is_roster_owner = false;
				cancel_get_application();
			}
		});
	} else {
		cancel_get_application();
	}
}

function prep_ajax_content(){
	jQuery('#application_ajax_content #province').hide();
	jQuery('#application_ajax_content #province_label').hide();
	
	jQuery('input.documentation').bind('change', function(e){
		jQuery(this).after( jQuery(this).clone(true).removeClass('documentation').addClass('documentation_more').val('') );
		jQuery(this).unbind('change');
	});
	
	jQuery('input.error').bind('blur', function(e){
		if( jQuery(this).val().length > 0 ){
			jQuery(this).removeClass('error');
			jQuery(this).unbind('blur');
		}
	});
	
	jQuery('textarea.error').bind('blur', function(e){
		if( jQuery(this).val().length > 0 ){
			jQuery(this).removeClass('error');
			jQuery(this).unbind('blur');
		}
	});
	
	jQuery('select.error').bind('change', function(e){
		if( jQuery(this).val().length > 0 ){
			jQuery(this).removeClass('error');
			jQuery(this).unbind('change');
		}
	});
}

function cancel_get_application(){
	if( !pre_selected_user_type_id ){
		jQuery('input[name=user_type_id]').attr('checked', '');
	} else {
		jQuery('input[name=user_type_id]').attr('checked', '');
		jQuery('input[name=user_type_id][value='+pre_selected_user_type_id+']').attr('checked', 'checked');
	}
	
	if( !pre_selected_is_roster_owner ){
		jQuery('input[name=is_roster_owner]').attr('checked', '');
	} else {
		jQuery('input[name=is_roster_owner]').attr('checked', '');
		jQuery('#roster_options_'+pre_selected_user_type_id+' input[name=is_roster_owner][value='+pre_selected_is_roster_owner+']').attr('checked', 'checked');
		jQuery('#roster_options_'+pre_selected_user_type_id).show();
	}
	
	jQuery("#loader").remove();
}

function switchRegionType( country ){
	if( country == 'CA' ){
		jQuery('#application_ajax_content #state').hide();
		jQuery('#application_ajax_content #state_label').hide();
		jQuery('#application_ajax_content #province').show();
		jQuery('#application_ajax_content #province_label').show();
	} else {
		jQuery('#application_ajax_content #state').show();
		jQuery('#application_ajax_content #state_label').show();
		jQuery('#application_ajax_content #province').hide();
		jQuery('#application_ajax_content #province_label').hide();
	}
}

function check_required( obj ){
	errors = 0;
	jQuery('#application_ajax_content input.required').each(function() {
		if( jQuery(this).is(':visible') && jQuery(this).val().length == 0 ){
			jQuery(this).addClass('error');
			errors++;
		}
	});
	
	jQuery('#application_ajax_content textarea.required').each(function() {
		if( jQuery(this).is(':visible') && jQuery(this).val().length == 0 ){
			jQuery(this).addClass('error');
			errors++;
		}
	});
	
	jQuery('#application_ajax_content select.required').each(function() {
		if( jQuery(this).is(':visible') && jQuery(this).find(':selected').val().length == 0 ){
			jQuery(this).addClass('error');
			errors++;
		}
	});
	
	jQuery('input.error').bind('blur', function(e){
		if( jQuery(this).val().length > 0 ){
			jQuery(this).removeClass('error');
			jQuery(this).unbind('blur');
		}
	});
	
	jQuery('textarea.error').bind('blur', function(e){
		if( jQuery(this).val().length > 0 ){
			jQuery(this).removeClass('error');
			jQuery(this).unbind('blur');
		}
	});
	
	jQuery('select.error').bind('change', function(e){
		if( jQuery(this).val().length > 0 ){
			jQuery(this).removeClass('error');
			jQuery(this).unbind('change');
		}
	});
	
	if( errors > 0 ){
		alert('Please fill in all required fields marked by an asterisk.');
	} else {
		document.choose_user_type.submit();
	}
}
