 /**
 * triggers events on elements after successfully injecting the responseText into the DOM. Used for dynamic redirection
 * 
 * @projectDescription	Automatic execution of events after injecting the new elements 
 * @namespace			event.*
 *
 * @author 				$Author: mkrause $
 * @version				$Revision: 3564 $
 * @copyright			NEUE DIGITALE GmbH, Berlin
 * 
 * @jslint: 2008-11-06
 * 
 * @file:				audi_ngw.event.ajaxTriggers.js
 * $URL: https://svn.pvtool.org/svn/day_audi_ngw/trunk/ngw_base/frontend/js/audi/audi.event.ajaxTriggers.js $
 */

/* create namespace */
audi_ngw.namespace(audi_ngw,'event.ajaxTriggers');
 

/**
 * Filters all elements to trigger events on
 * @param {String} sId
 * @return {Void}
 */
audi_ngw.event.ajaxTriggers.parseDom = function (sId) {
	var _sSelector = sId;
	_sSelector += ' .trigger_load';
	jQuery(_sSelector).each(
		function () {
			audi_ngw.event.ajaxTriggers._trigger(jQuery(this));
		}
	);
};

/**
 * Triggers event on element, passing data. 
 * Both event-type and data have to be set using metadata.trigger_options
 * @param {jQueryElement} $element
 * @return {Void}
 * @private
 */
audi_ngw.event.ajaxTriggers._trigger = function ($element) {
	// set click events on anchors, 'cause click() doesn't triggers links
	if ($element.is('a') === true ){
		audi_ngw.navigation.doPrepareLink($element);
	}
	var _oOptions = $element.metadata().trigger_options;
	if (_oOptions && _oOptions.sType) {
		$element.trigger(_oOptions.sType,(_oOptions.sData || {}));
		$element.removeClass('trigger_load');
	}
	// hohistory has no real behaviour that'll be triggered on .click()
	if ($element.is('a') === true && $element.attr('rel') === 'nohistory'){
		window.location.href=$element.attr('href');
	}

};

/**
 * Custom Event: wil be fired as soon as we injected the xhr-snippet 
 * @param {Object} event
 * @param {Object} data {sId: new HTML parent Id}
 */
audi_ngw.event.ajaxTriggers.onAjaxSnippetPrepared = function(event,data){
	if (!data) { return; }
	//audi_ngw.log("EVENT - ajaxSnippetPrepared: audi_ngw.event.ajaxTriggers.onAjaxSnippetReady ",arguments);
	// execute funtions on new content
	
	audi_ngw.event.ajaxTriggers.parseDom(data.sId);
	
	// trigger event 
	audi_ngw.event.trigger('ajaxSnippetComplete');
};
	
/**
 * Constructor
 * @return {Void}
 */	
audi_ngw.event.ajaxTriggers.initiate = function(){
	// bind events
	audi_ngw.event.bind('ajaxSnippetPrepared', audi_ngw.event.ajaxTriggers.onAjaxSnippetPrepared);
};

/*
jQuery(document).ready(function(){
	// bind events
	audi_ngw.event.bind('ajaxSnippetPrepared', audi_ngw.event.ajaxTriggers.onAjaxSnippetPrepared);

});
*/