/**
 * FOXFAST HTML BUILD - v3.0
 */
jQuery.fn.cssFilterCheckbox = function () {
	jQuery("input.filterCheck + label", this)
		.each( function(){
			if ( jQuery(this).prev()[0].checked ) {
				jQuery(this).addClass("filterChecked");
			} else {
				jQuery(this).addClass("filterUnchecked");
			};
		})
		.click( function() {
			jQuery(this)
				.toggleClass("filterChecked")
				.prev()[0].checked = !jQuery(this).prev()[0].checked;
			jQuery(this)
				.toggleClass("filterUnchecked")
				.prev()[0].checked = jQuery(this).prev()[0].checked;
			/**
			 * If the box was unchecked, uncheck the related "ALL" checkbox(es) too.
			 */
			if (!jQuery(this).prev()[0].checked) {
				var classList = jQuery(jQuery(this).prev()[0]).attr("class").split(" ");
				var allSel = "";
				for (var i in classList) {
					allSel = allSel + "input[rel='" + classList[i] + "'] + label" + (i<classList.length-1 ? "," : "");
				};
				jQuery(allSel).each(function(){
					if (jQuery(this).prev()[0].checked){
						jQuery(this)
							.toggleClass("filterChecked")
							.toggleClass("filterUnchecked")
								.prev()[0].checked = false;
					}
				});
			}
			/**
			 * Check or uncheck all.
			 */
			var related = jQuery(jQuery(this).prev()[0]).attr("rel") || false;
			if (related != false) {
				if (jQuery(this).prev()[0].checked) {
					jQuery("input." + related + " + label").each(function(){
						if (!jQuery(this).prev()[0].checked) {
							jQuery(this)
								.toggleClass("filterChecked")
								.toggleClass("filterUnchecked")
								.prev()[0].checked = true;
						};
					});
				} else {
					jQuery("input." + related + " + label").each(function(){
						if (jQuery(this).prev()[0].checked) {
							jQuery(this)
								.toggleClass("filterChecked")
								.toggleClass("filterUnchecked")
								.prev()[0].checked = false;
						};
					});
				}
			}			
		})
		.prev().hide();
};
jQuery.fn.cssCartCheckbox = function () {
	jQuery("input.cartCheck + label", this)
		.each( function(){
			if ( jQuery(this).prev()[0].checked ) {
				jQuery(this).addClass("cartChecked");
			} else {
				jQuery(this).addClass("cartUnchecked");
			};
		})
		.click( function() {
			jQuery(this)
				.toggleClass("cartChecked")
				.prev()[0].checked = !jQuery(this).prev()[0].checked;
			jQuery(this)
				.toggleClass("cartUnchecked")
				.prev()[0].checked = jQuery(this).prev()[0].checked;
			/**
			 * If the box was unchecked, uncheck the related "ALL" checkbox(es) too.
			 */
			if (!jQuery(this).prev()[0].checked) {
				var classList = jQuery(jQuery(this).prev()[0]).attr("class").split(" ");
				var allSel = "";
				for (var i in classList) {
					allSel = allSel + "input[rel='" + classList[i] + "'] + label" + (i<classList.length-1 ? "," : "");
				};
				jQuery(allSel).each(function(){
					if (jQuery(this).prev()[0].checked){
						jQuery(this)
							.toggleClass("cartChecked")
							.toggleClass("cartUnchecked")
								.prev()[0].checked = false;
					}
				});
			}
			/**
			 * Check or uncheck all.
			 */
			var related = jQuery(jQuery(this).prev()[0]).attr("rel") || false;
			if (related != false) {
				if (jQuery(this).prev()[0].checked) {
					jQuery("input." + related + " + label").each(function(){
						if (!jQuery(this).prev()[0].checked) {
							jQuery(this)
								.toggleClass("cartChecked")
								.toggleClass("cartUnchecked")
								.prev()[0].checked = true;
						};
					});
				} else {
					jQuery("input." + related + " + label").each(function(){
						if (jQuery(this).prev()[0].checked) {
							jQuery(this)
								.toggleClass("cartChecked")
								.toggleClass("cartUnchecked")
								.prev()[0].checked = false;
						};
					});
				}
			}			
		})
		.prev().hide();
};
jQuery.fn.cssThdGridCheckbox = function () {
	jQuery("input.tdhGridCheck + label", this)
		.each( function(){
			var classSuffix = (jQuery(jQuery(this).prev()[0]).hasClass("tdhGridCheckAll") ? "" : "Avail");
			if ( jQuery(this).prev()[0].checked ) {
				jQuery(this).addClass("tdhGridChecked"+classSuffix);
			} else {
				jQuery(this).addClass("tdhGridUnchecked"+classSuffix);
			};
		})
		.click( function() {
			var classSuffix = (jQuery(jQuery(this).prev()[0]).hasClass("tdhGridCheckAll") ? "" : "Avail");
			jQuery(this)
				.toggleClass("tdhGridChecked"+classSuffix)
				.prev()[0].checked = !jQuery(this).prev()[0].checked;
			jQuery(this)
				.toggleClass("tdhGridUnchecked"+classSuffix)
				.prev()[0].checked = jQuery(this).prev()[0].checked;
			/**
			 * If the box was unchecked, uncheck the related "ALL" checkbox(es) too.
			 */
			if (!jQuery(this).prev()[0].checked) {
				var classList = jQuery(jQuery(this).prev()[0]).attr("class").split(" ");
				var allSel = "";
				for (var i in classList) {
					allSel = allSel + "input[rel='" + classList[i] + "'] + label" + (i<classList.length-1 ? "," : "");
				};
				jQuery(allSel).each(function(){
					classSuffix = (jQuery(jQuery(this).prev()[0]).hasClass("tdhGridCheckAll") ? "" : "Avail");
					if (jQuery(this).prev()[0].checked){
						jQuery(this)
							.toggleClass("tdhGridChecked"+classSuffix)
							.toggleClass("tdhGridUnchecked"+classSuffix)
							.prev()[0].checked = false;
					}
				});
			}
			/**
			 * Check or uncheck all.
			 */
			var related = jQuery(jQuery(this).prev()[0]).attr("rel") || false;
			if (related != false) {
				if (jQuery(this).prev()[0].checked) {
					jQuery("input." + related + " + label").each(function(){
						if (!jQuery(this).prev()[0].checked) {
							jQuery(this)
								.toggleClass("tdhGridCheckedAvail")
								.toggleClass("tdhGridUncheckedAvail")
								.prev()[0].checked = true;
						};
					});
				} else {
					jQuery("input." + related + " + label").each(function(){
						if (jQuery(this).prev()[0].checked) {
							jQuery(this)
								.toggleClass("tdhGridCheckedAvail")
								.toggleClass("tdhGridUncheckedAvail")
								.prev()[0].checked = false;
						};
					});
				}
			}			
		})
		.prev().hide();
};

jQuery.fn.cssInlineCheckbox = function () {
	jQuery("input.inlineCheck + label", this)
		.each( function(){
			if ( jQuery(this).prev()[0].checked ) {
				jQuery(this).addClass("inlineChecked");
			} else {
				jQuery(this).addClass("inlineUnchecked");
			};
		})
		.click( function() {
			if ( jQuery(this).prev()[0].checked ) {
				$(this)
					.removeClass("inlineChecked")
					.addClass("inlineUnchecked")
					.prev()[0].checked = false;
			} else {
				$(this)
					.removeClass("inlineUnchecked")
					.addClass("inlineChecked")
					.prev()[0].checked = true;
			}
		})
		.prev().hide();
};

jQuery.fn.cssRadioCheckbox = function () {
	jQuery("input.radioCheck + label, input.inlineRadio + label", this)
		.each( function(){
			if ( jQuery(this).prev()[0].checked ) {
				jQuery(this).addClass("radioChecked");
			} else {
				jQuery(this).addClass("radioUnchecked");
			};
		})
		.click( function() {
			jQuery("input[name='" + jQuery(this).prev()[0].name + "']:checked + label")
				.each( function(){
					$(this)
					.removeClass("radioChecked")
					.addClass("radioUnchecked")
					.prev()[0].checked = false;
				});
			jQuery(this)
				.removeClass("radioUnchecked")
				.addClass("radioChecked")
				.prev()[0].checked = true;
		})
		.prev().hide();
};


$(document).ready( function () {
	// Styles all checkboxes
	$().cssFilterCheckbox();
	$().cssThdGridCheckbox();
	$().cssCartCheckbox();
	$().cssRadioCheckbox();
	$().cssInlineCheckbox();
});