/**
 * SiteClick jquery timepicker plugin
 *
 * 02/01/2009		Fixed bug where parsed date was assumed to be octal due to leading zero
 *							forced radix to 10
 */

jQuery.fn.timepicker = function(settings) {

  // Set defaults
  /*
  var settings = jQuery.extend({
    pathtoicons : 'editoricons/'
  }, settings);
	 */


	// For each item
  return this.each(function(){
   	
   	var inputfield = this;
   	
   	var hours = new Array(1,2,3,4,5,6,7,8,9,10,11,12);
		var mins	 =	new Array('00', '15', '30', '45');
		
		// Generate hour selector
		var hourSelect = $('<select class="timepicker hours"></select>');
		$.each(hours, function() {
			$(hourSelect).append('<option style="text-align: right;" value="' + this + '">' + this + '</option>');
		})
		$(inputfield).after(hourSelect);

		// Generate minute selector
		var minSelect = $('<select class="timepicker minutes"></select>');
		$.each(mins, function() {
         $(minSelect).append('<option style="text-align: right;" value="' + this + '">:' + this + '</option>');
		})
		$(hourSelect).after(minSelect);
		
		// Generate AM/PM selector
		var amPmSelect = $('<select class="timepicker ampm"><option>am</option><option>pm</option></select>');
      $(minSelect).after(amPmSelect);
      
      // Parse 24H time and set selectors to closest initial values
		var hrs = parseInt($(inputfield).val().split(':')[0], 10);
		var mins= parseInt($(inputfield).val().split(':')[1], 10);
		var ampm= hrs>=12 ? 'pm' : 'am';



		hrs = hrs % 12;

		mins= Math.floor(mins / 15) * 15;



		// Set selectors
		$(hourSelect).val(hrs);
		$(minSelect).val(mins);
		$(amPmSelect).val(ampm);

		// Make selectors update time field
		function updateField() {
			var hrs = $(hourSelect).val();
			var mins= $(minSelect).val();
			if($(amPmSelect).val() == 'pm')
				hrs = parseInt(hrs) + 12;
			$(inputfield).val(hrs + ':' + mins);
		}
		
		// Make change to selectors update the real input field
		$(hourSelect).change(updateField);
		$(minSelect).change(updateField);
		$(amPmSelect).change(updateField);

		// Make the form submit update and remove the fields
		$(inputfield).parents('form').submit(function() {
			$(hourSelect).remove();
			$(minSelect).remove();
			$(amPmSelect).remove();
		})
		
		// Hide the original input field from view
		$(inputfield).hide();



  })


}