// Place your application-specific JavaScript functions and classes here
// This file is automatically included by javascript_include_tag :defaults

function hideAjaxSpinner() { $('AjaxSpinner').hide(); }
function showAjaxSpinner() { $('AjaxSpinner').show(); }

function isIE() {
	var arVersion = navigator.appVersion.split("MSIE");
	var version = parseFloat(arVersion[1]);
		
	return (version >= 5.5)		
}


// =======================================================================

String.prototype.normalize = function () {return this.replace(/^\s+/, '').replace(/\s+$/, '')}

var RollOverOnList = Class.create();

RollOverOnList.prototype = {
	initialize: function(elementName) {	
		this.list = $(elementName);
		this.listName = elementName;
		
   	this.options = Object.extend({
      tag: 'li',
			hoverClassName: 'hover',
			except: 'active',			
			alternateClasses: null,
			show: null,
			disableFor: null
    }, arguments[1] || {});	

		this.refresh();
	},
	refresh: function() {
		var list = this;
		var even = 0;
				
		$$("#" + this.listName + " " + list.options.tag).each(function(element) {		
			/* reset all the behaviours */
			Element.removeClassName(element, 'hover');
			
			if (list.options.show) {
				$A(document.getElementsBySelector("."+list.options.show, element)).each(function(elementToHide) {
					if (!hasClassName(element, list.options.disableFor))
						Element.hide(elementToHide);
				});
			}
			
			if (list.options.alternateClasses) {
				Element.removeClassName(element, list.options.alternateClasses[0]);
				Element.removeClassName(element, list.options.alternateClasses[1]);
				
				if (!hasClassName(element, list.options.except))
					Element.addClassName(element, !even ? list.options.alternateClasses[0] : list.options.alternateClasses[1]);
				even = even ? 0 : 1;
			}

			if (!list.options.disableFor || !hasClassName(element, list.options.disableFor)) {
				Event.observe(element, 'mouseover', function(e) { 		
					// if (dragging)
					// 	return ;
							
					if (list.options.show) {
						$A(document.getElementsBySelector("."+list.options.show, element)).each(function(elementToShow) {
							Element.show(elementToShow);
						});
					}
					Element.addClassName(element, 'hover');
	 			}, false);

				Event.observe(element, 'mouseout', function(e) { 
					if (list.options.show) {
						$A(document.getElementsBySelector("."+list.options.show, element)).each(function(elementToHide) {
							Element.hide(elementToHide);
						});
					}			
					Element.removeClassName(element, 'hover');
	 			}, false);
			}
		});
	},
	forceMouseout: function(element) {
		Element.removeClassName(element, 'hover');
		if (this.options.outFunction)
			this.options.outFunction(element);
	}
}

// =======================================================================


function hasClassName(element, classes) {
	if (classes == null)
		return false;
	if (typeof classes == 'string') {
		// actually, only one class to test 
		return Element.hasClassName(element, classes);
	} else {
		for (var i = 0; i < classes.length; i++) {
			if (Element.hasClassName(element, classes[i]))
				return true;
		}
	}
	return false;
}

// =======================================================================

function hideAllSelectTags(containerName) {
	// hide all the select tags if the browser is IE
	if (/MSIE/.test(navigator.userAgent) == true) {
		$$("#" + containerName + " select").each(function(select) {
			Element.hide(select);
		});
	}
}

function showAllSelectTags(containerName) {
	// hide all the select tags if the browser is IE
	if (/MSIE/.test(navigator.userAgent) == true) {
		$$("#" + containerName + " select").each(function(select) {
			Element.show(select);
		});
	}
}

function toggleAdminSubcategories(category) {
	var category = $("category_" + category);
	var category_title = category.getElementsBySelector('.title').first();
	var subcat = category.next('tr');
	subcat.toggle();
	category_title.toggleClassName('closed');
}

function toggleFrontEndSubcategories(category) {
	var category = $("category_" + category);
	var subcatColl = category.getElementsBySelector('.subcategories');
	var subcat = subcatColl.first();
	new Effect.toggle(subcat, 'blind', {duration: 0.3});
}