var _handleCartLoading = function(elm, isActive)
{
	if (typeof elm == "undefined" || !elm)
	{
		return false;
	}
	var 
		_containerElement = document.getElementById(elm.getAttribute("data-container")),
		_isActive = isActive || false
	;
	if (!_containerElement)
	{
		return false;
	}
	driver[_isActive ? "addClass" : "removeClass"](_containerElement, "loading");
}

//Exécuter tous les script après le chargement du document
//Ou après chaque chargement en Ajax dans la page
if (typeof _handleScriptAfterOnload == "undefined")
{
	var _handleScriptAfterOnload = function()
	{
	    setTimeout(function()
		{
			for (var i=0; i in _executeAfterOnload;)
			{
				var _script = _executeAfterOnload[i] || function(){};
				if (typeof _script == "function" && _script)
				{
	                            	try
	                                {
	                                _script();
	                                }
	                                catch(ex)
	                                {
	                                    _trace(ex);
	                                }
				}
	                        
				_executeAfterOnload.shift();
			}
	               
	               if(typeof(_onHandleScriptAfterOnloadDone) != 'undefined')
	               _onHandleScriptAfterOnloadDone();
		}, 10)
	}
	driver.addEvent(document, "dom:loaded", _handleScriptAfterOnload);
}

//Lightbox qui se charge en ajax
//délégation d'événement
if (typeof fakeWindowLinks == "undefined")
{
	window.fakeWindowLinks = new AjaxFakeWindow();
}

// Mettre une classe spécifique sur les éléments au survol
// Pour IE7
if (typeof jpgAjaxContent == "undefined")
{
	_executeAfterOnload.push(function()
	{
		_handleElementsHover(document.getElementById("jpgContent"));
	});
}

//Déplacer le positionnement du menu 
//s'il existe un scroll dans la page
var _positionMenuCloseToScrollbar = function()
{
	var 
		_mainContent = document.getElementById("jpgContent"),
		_centralContent = document.getElementById("page-customer") || document.getElementById("page-checkout")
	;	
	if (!_mainContent || !driver.hasClass(_centralContent, "active"))
	{
		return false;
	}
	
	var 
		_mainMenu = driver.getElement(document.getElementById("tryptique-menu"), ".menu-next"),
		_footerMenu = driver.getElement(_centralContent, ".page-content>footer"),
		_offsetHeight = _mainContent.offsetHeight,
		_offsetWidth = _mainContent.offsetWidth,
		_scrollWidth = 16,
		_scrollHeight = 17
	;
	
	if (_mainContent.scrollWidth > window.innerWidth)
	{
		_offsetHeight = _offsetHeight - _scrollHeight;
	}
	if (_mainContent.scrollHeight > _offsetHeight)
	{
		_offsetWidth = _offsetWidth - _scrollWidth;
	}
	
	if (_mainMenu)
	{
		_mainMenu.style.right = (_mainContent.scrollHeight <= _offsetHeight) ? "0px" : _scrollWidth + "px";
	}
	if(_footerMenu)
	{
		_footerMenu.style.bottom = (_mainContent.scrollWidth <= _offsetWidth) ? "0px" : _scrollHeight + "px";
	}
}
_executeAfterOnload.push(function()
{
	driver.addEvent(window, "resize", _positionMenuCloseToScrollbar);
});

if (typeof touchScroll == "undefined")
{
	//Only iOs \w no position fixed support
	function touchScroll(node){
		
		node.ref = null;
		node.addEventListener("touchmove",function(e)
		{
			if(e.touches.length == 1)
			{
				// Prevent bubbling
				e.preventDefault();
				var	touch = e.touches[0],
					pagey = touch.pageY,
					current = node.scrollTop,
					delta = 0;
				
				// Delta
				if(node.ref != null){
					delta = node.ref-pagey;
					node.scrollTop = current+delta;
				}

				// Store next reference
				node.ref = pagey;						
			}
		},false);
		node.addEventListener("touchend",function(e){
			node.ref = null;
		},false);
		
	};
}

var _newsletterForm = new AjaxForm(
{
	"onBeforeSubmit": function(response)
	{
		var elm = driver.getElement(this.elm, "input[type=text]");
	  	return !(!elm.value || elm.value == elm.defaultValue);
	},
	"success": function(response)
	{
	    var 
	    	_data = response.responseJSON || null, 
	    	_messageContainer = driver.getElement(this.elm, ".message")
	    ;
	    if (!_data || !_messageContainer)
	    {
		    return false;
	    }
	
	    var 
	    	_error = _data.error || null,
	    	_success = _data.success || null
	    ;
		if (!_error)
		{
		    driver.removeClass(_messageContainer, "error");
		    
		    var _messageText = (_success) ? _success : "";
		    driver.putHTML(_messageContainer, _messageText);
			
			return true;
		}
		
		    var _messageText = _error;
		    driver.putHTML(_messageContainer, _messageText);
		    driver.removeClass(_messageContainer, "success");
		    driver.addClass(_messageContainer, "error");
	
	}
});

