// Make jQuery not conflict with other libraries
// jQuery.noConflict();

// PixelFusion Object Manager
function pixelfusion_ObjectManager(_params)
{

  var ObjectManager = {

    // Object Parameters
    params : {},

    // Initialize Object
    initialize : function(_params) {
      this.params = _params;
      jQuery(this.params['addControl']).click(function() { ObjectManager.addObject(); return false; });
      jQuery(this.params['removeControl']).click(function() { ObjectManager.removeObject(jQuery(this)); });
      return this;
    },

    // Clone new Object
    addObject : function() {
      // Clone
      var newObj = jQuery(this.params['parent']).children(':first').clone(true).appendTo(ObjectManager.params['parent']).addClass('obj-item');
      // Clear Values
      newObj.find('input[type!=submit]').val('');
      newObj.find('textarea').val('');
    },

    // Remove an Object
    removeObject : function(element) {
      // If is not last object, remove it
      if (jQuery(element).parent().parent().children().length != 1) {
        var list = jQuery(element).parent().parent();
        jQuery(element).parent().remove();
        list.children(':first').removeClass('obj-item');
      // If element is last, clear fields
      } else {
        jQuery(element).parent().find('input[type!=submit]').val('');
        jQuery(element).parent().find('textarea').val('');
      }
    }

  }

  // Return instance of the Object
  return ObjectManager.initialize(_params);

}

// PixelFusion Addition Object
function pixelfusion_addObj(_itemClass, _resultClass, _factor) {
        
  var addObj = {

    itemClass : '',

    resultClass : '',

    factor : 1,

    initialize : function(_itemClass, _resultClass, _factor) {
      this.factor = _factor;
      this.itemClass = _itemClass;
      this.resultClass = _resultClass;
      jQuery(this.itemClass).change(function() { addObj.objEvent(); });
      return this;
    },

    objEvent : function() {
      var total = 0;
      jQuery(this.itemClass).each(function() {
        jQuery(this).val(addObj.parseMoney(jQuery(this).val()));
        total += parseFloat(jQuery(this).val());
      });
      jQuery(this.resultClass).val(addObj.parseMoney(total * this.factor)).trigger('change');
    },

    parseMoney : function(_number) {
      var number = String(Math.round(_number * 100) / 100);
      if ('NaN' == number) {
        alert('Please enter numerical values only.');
        return '0.00';
      } else if (-1 == number.indexOf('.'))
        return number + '.00';
      else if ((number.length - 2) == number.indexOf('.'))
        return number + '0';
      else
        return number;
    }

  }
  return addObj.initialize(_itemClass, _resultClass, _factor);
}

// Function to create Addition Objects
function addObj(_items, _itemPrefix, _resultPrefix, _factor) {
  for (var i = 1; i <= _items; i++)
    new pixelfusion_addObj(_itemPrefix + i, _resultPrefix + i, _factor).objEvent();
}

var ObjManagers = [
  { parent: '#applicants', addControl: '#Applicants .add', removeControl: '#Applicants .delete' },
  { parent: '#staff', addControl: '#Staff .add', removeControl: '#Staff .delete' },
  { parent: '#equipment', addControl: '#Equipment .add', removeControl: '#Equipment .delete' },
  { parent: '#expenses', addControl: '#Expenses .add', removeControl: '#Expenses .delete' },
  { parent: '#sketches', addControl: '#BiographicalSketches .add', removeControl: '#BiographicalSketches .delete' },
  { parent: '#peers', addControl: '#PeerReview .add', removeControl: '#PeerReview .delete' }
];

// OnLoad
jQuery(function() {

  // addObj(3, '.gstItem', '.gstResult', 0.125);
  addObj(8, '.addItem', '.addResult', 1);

  for (var i = 0; i < ObjManagers.length; i++)
    new pixelfusion_ObjectManager(ObjManagers[i]);

  if (jQuery('.validate_form').hasClass('register')) {
    var options = {
      onkeyup: false,
      rules: {
        email_confirm: { equalTo: '#email'},
        password_confirm: { equalTo: '#password'}
      }
    }
  } else {
    var options = {
      onsubmit: false,
      onkeyup: false,
      rules: {
        signed_agreement_0: { required: true, accept: 'png|jpe?g|gif|bmp|pdf|doc|docx'}
      }
    }
  }

  jQuery('.validate_form').validate(options);
  jQuery('.validate_form #submit').click(function() {
    $('.validate_form').validate().form();
    var valid = $('.validate_form').valid();
    window.location.hash = '';
    if (!valid) {
      var getError = function () { return $('#content .error:first-child').attr('id'); }
      window.location.hash = getError();
    }
    return valid;
  });
  jQuery('.validate_form #submit').keyup(function() { jQuery(this).click(); });
  
  
  // checking if auxiliary is checked
  jQuery('#category_Auxiliary').bind('click',function(ev){
      jQuery('#auxblock').slideDown('fast');
  });
  jQuery('#category_Donned, #category_Donned_and_Started').bind('click',function(ev){
      jQuery('#auxblock').slideUp('fast',function(){
          // clear all fields
          $('#auxblock input').each(function(ele){
              $(this).val('');
          });
	  });
  });
  
  // click event for the relay checkbox ! deletes the values from the input fields if you uncheck it
  jQuery('#relay').bind('click',function(ev){
      jQuery('#relayblock').slideToggle('fast',function(){
	       var el = $('#relay');
		   var attr = el.attr('checked');
		   if(attr === false){
		      // clear all fields
			  $('#relayblock input').each(function(ele){
			  	  $(this).val('');
			  });
		   }
	  });
	  
  });
  
  // chck if relay is ticked
  if($('#relay').attr('checked'))
      jQuery('#relayblock').show();
  
  // change the dinner attendee fields
  
  jQuery('#dinner_qty').bind('change', function(){
	  /* Check to see if fields already exist
	   * If so, remove them
	   */
	  jQuery('#dinner_attendees').html('');
	  var value = jQuery('#dinner_qty').val();
	  var i = 1;
	  var attendeeFields = jQuery('#dinner_attendees').append('<div id="attendee_fields" class="float-left width-200px margin-top"></div>');
	  var hiddenfield = jQuery('#attendee_fields').append('<input type="hidden" name="num_attendees" id="num_attendees" value="'+value+'" />');
	  while (i <= value) {
	     var outer = jQuery('#attendee_fields').append('<div id="a_'+i+'" class="clearfix section_fields width-550px"></div>');
	     var label = jQuery('#a_'+i).append('<div class="float-left width-200px margin-top"><label for="dinner_attendee_'+i+'">Name of dinner attendee '+i+'</label></div>');
	     var input = jQuery('#a_'+i).append('<div class="img_input"><input name="dinner_attendee_'+i+'" id="dinner_attendee_'+i+'" value="" class="img_input" autocomplete="" type="text"></div>');
	     i++;
	  }
	  return false;
  });
  


	if((navigator.userAgent.match(/iPhone|iPod|iPad/i))) {
		$('.donation-table').css('max-height' , 'none');
		$('.donation-table-body').css('max-height' , 'none');
		$('.scrollable-container').css('max-height' , 'none');
		$('.commentlist').css('max-height' , 'none');
		$('#group-members-table').css('max-height' , 'none');
	}
	    if (!$.browser.opera) {
    $("input[type=file]").filestyle({
      imageheight : 23,
      imagewidth : 95,
      width: 182,
	  cssclass: 'img_input'
    });
		}


  $('#fundraising_group_type_of_group').change(function() {
    var type_box = $(this);

    if (type_box.val() == 'Other')
    {
      $('#fundraising_group_type_other').show();
    } else {
      $('#fundraising_group_type_other').hide();
    }

    if (type_box.val() == 'Group of friends' || type_box.val() == 'Other')
    {
      $('.more.form_fields').closest('div.section_fields').hide();
      $('.less.form_fields').closest('div.section_fields').show();
    } else {
      $('.less.form_fields').closest('div.section_fields').hide();
      $('.more.form_fields').closest('div.section_fields').show();
    }
  }).change();

});
