/* modal popups */
standard_modal_options = {
  "opacity": 75,
  "close": false
}

$(document).ready(function() {
	$('a.modal_closer').live('click', function() {
		$.modal.close();
	});

	$('.button_modal_launcher').click(function() {
		launchModal($('#' + $(this).attr('id') + '_create_new'));
	});

	$('a.simple_modal_launcher').click(function() {
		launchModal($('div#' + $(this).attr('id') + '_modal'));
		return false;
	});

	$('a.modal_launcher').click(function() {
		$.get(jQuery(this).attr('href'), function(resp){
			$.modal(resp);	  
			substituteSubmitButtonsForStyledHyperlinks();
			ajaxModalReloadParent('form#edit_employee');			
		});
		return false;
	});
});

function launchModal(modalSelector) {
  var modalObject = $(modalSelector);
  if (modalObject) {
		modalObject.modal(standard_modal_options);
  }
}


function hideDivOnCheckbox(checkbox, div_to_hide, div_to_show) {
	$(checkbox).bind("click", function() {
		if ($(checkbox).is(":checked")) {
			$(div_to_hide).hide();
			$(div_to_show).show();
		} else {
			$(div_to_hide).show();			
			$(div_to_show).hide();		
		}
	});
}

function putJsonErrorMessagesInList(formToObserve, xhr) {
    $(formToObserve).parents('div.content').unblock();
		var json = xhr.responseText;		
		if (json) {
			var jsonObject = window["eval"]("(" + json + ")");
			var errors = jsonObject.errors;			
			var errorNotificationDiv = $(formToObserve).siblings('.error_notification');
			var list = errorNotificationDiv.children('ul');
			list.empty();
			$.each(errors,
				function(error) {
			    list.append("<li>" + errors[error] + "</li>");
			});
		errorNotificationDiv.show();
	}
}


function ajaxPost(formToObserve, onUpdateCallback) {
  $(formToObserve).submit(function(e) {
	 	$.ajax({
	   	type: "POST",
	   	url: $(this).attr('action'),
			dataType: "json",			
	   	data: $(this).serialize(),
	   	success: function(resp) {
	   		if (onUpdateCallback) {
					onUpdateCallback(resp);
				}
	   	},
	   	error: function(xhr, textStatus, errorThrow) {
				putJsonErrorMessagesInList(formToObserve, xhr);
	   	}
		});
	
		return false;
	});
}

function ajaxModalReloadParent(formId) {
	ajaxPost(formId, function(resp) {
		$.modal.close();    
    window.location.reload(true);
	});
}

function ajaxModal(formId) {
	ajaxPost(formId, function(resp) {
		$.modal.close();    
 	});
}
var TimeLogs = new function() {
  $(function() {
		ajaxModalReloadParent('form#new_time_log');
		ajaxModalReloadParent('form#edit_time_logs');
	});
};

var FixedCosts = new function() {
  $(function() {	
		ajaxModalReloadParent('form#new_actual_fixed_cost');
		ajaxModalReloadParent('form.edit_actual_fixed_cost');	
	});
};

var EditUser = new function() {
  $(function() {	
		ajaxModalReloadParent('form#new_employee_SC');
		ajaxModalReloadParent('form.edit_employee');
		ajaxModalReloadParent('form.edit_client_user');
		ajaxModalReloadParent('form.new_client_user');

		$('input#user_contractor').bind("click", function() {
			if ($('input#user_contractor').is(":checked")) {
				$('div#non_contractor_fields').hide();
				$('div#non_contractor_fields').find('input').attr("disabled", 'disabled'); 
				$('div#contractor_fields').find('input').removeAttr('disabled');
				$('div#contractor_fields').show();				
			} else {
				$('div#non_contractor_fields').show();			
				$('div#non_contractor_fields').find('input').removeAttr('disabled');
				$('div#contractor_fields').find('input').attr("disabled", 'disabled');
				$('div#contractor_fields').hide();		
			}
		});
	});
};

var Support = new function() {
  $(function() {
		ajaxModalReloadParent('form#feedback_form');
	});
};

