/* SOME MORE IMPRESSIVE STUFF FROM THE MASTER PROGRAMMER*/
if (!umen) { var umen = {}; };
if (!umen.ui) { umen.ui = {}; };
if (!umen.ui.paging) { umen.ui.paging = {}; };

if (!umen.ui.paging.scrollmemory) {
	umen.ui.paging.scrollmemory = function (controlDiv, hf) {
		$(document).ready(
			function () {
				$(["#", controlDiv, " a"].join('')).live(
					"click",
					function () {
						$(["#", hf].join('')).val($(window).scrollTop())
					}
				);
			}
		);
	}
};

if (!umen.ui.checkboxTriggeredHideShow) {
	umen.ui.checkboxTriggeredHideShow = function ($control, $node, showOn, callback, delay) {

		var cid = $control.attr("id");
		if (cid && !$control.selector) {
			$control = $("#" + cid);
		}
		$control.live(
			'change',
			function () {
				if (this.checked == showOn) {
					if (callback && callback.showif) {
						if (callback.showif()) {
							$node.show(delay ? delay : 0);
						}
					} else {
						$node.show(delay ? delay : 0);
					}
				}
				else {
					if (callback && callback.hideif) {
						if (callback.hideif()) {
							$node.hide(delay ? delay : 0);
						}
					} else {
						$node.hide(delay ? delay : 0);
					}
				}
			}
		);
	}
}

if (!umen.ui.dropdownTriggeredHideShow) {
	umen.ui.dropdownTriggeredHideShow = function ($control, nodes, showOn, callback, delay) {
		//[$(node1),$(node2),...]
		var cid = $control.attr("id");
		if (cid && !$control.selector) {
			$control = $("#" + cid);
		}
		var showif = function ($node) {
			if (callback && callback.showif) {
				if (callback.showif()) {
					$node.show(delay ? delay : 0);
				}
			} else {
				$node.show(delay);
			}
		}
		var hideif = function ($node) {
			if (callback && callback.hideif) {
				if (callback.hideif()) {
					$node.hide(delay ? delay : 0);
				}
			} else {
				$node.hide(delay ? delay : 0);
			}
		}
		$control.live(
			'change',
			function () {
				for (var i in nodes) {
					var $node = nodes[i];
					if ($node && $node != null) {
						if (i == $control.get(0).selectedIndex) {
							if (showOn == true) {
								showif($node);
							} else {
								hideif($node);
							}
						} else {
							if (showOn == true) {
								hideif($node);
							} else {
								showif($node);
							}
						}
					}
				}
			}
		);
	}
}

// Garde l'état d'une checkboxlist dans un champ
if (!umen.ui.bindCheckboxListState) {
	umen.ui.bindCheckboxListState = function (targetFieldID, parentSelector, checkboxListSelector, getID) {
		if (!getID) {
			var getID = function (id) {
				var parts = id.split('_');
				return parts[parts.length - 1];
			}
		}

		if (!checkboxListSelector) {
			var chkSel = "input:checkbox";
		} else {
			var chkSel = [parentSelector, checkboxListSelector, "input:checkbox"].join(' ');
		}
		var stateSel = ['#', targetFieldID].join('');

		$(chkSel).live(
			"change",
			function (event) {
				var list = [];

				$(chkSel).each(
					function (a) {
				var id = getID(this.id);
						if (this.checked) {
					list.push(id);
				}
						else {
							var notId = ['!', id].join('');
							list.push(notId);
				}
				}
				);
				$(stateSel).val(list.join(','));
			}
		);

		$(chkSel).change();
	}
}
