/**
 * AUDI JavaScript library: Tracking related functions
 * 
 * @projectDescription	Tracking related functions 
 * @namespace			track
 *
 * @author 				$Author: mkrause $
 * @version				$Revision: 2599 $
 * @copyright			NEUE DIGITALE GmbH, Berlin
 * 
 * @jslint: 2008-10-31
 * 
 * @file:				audi_ngw.dom.js
 * $URL: https://svn.pvtool.org/svn/day_audi_ngw/trunk/ngw_base/frontend/js/audi/audi.dom.js $
 */

/* create namespace */
audi_ngw.namespace(audi_ngw,'track');


/**
 * Tracks onClick events unsing the elements metadata().trackOptions
 * @param {HTMLElement} jQuery extended element
 * @return {Void}
 */	
audi_ngw.track.onClick = function($element){
	if( $element.hasClass('track_click') ) {
		return audi_ngw.config.onClickTrack($element.metadata().track_options);
	}
};

/**
 * Tracks onAjaxLoad events unsing the elements metadata().trackOptions
 * @param {HTMLElement} jQuery extended element
 * @return {Void}
 */	
audi_ngw.track.onAjaxLoad = function($element){
	if( $element.hasClass('track_load') ) {
		return audi_ngw.config.onAjaxLoadTrack($element.metadata().track_options);	}

};

audi_ngw.track.onClickStub = function(object){
	audi_ngw.log("## STUB: audi_ngw.track.onClickStub"+ object);
};


audi_ngw.track.onAjaxLoadStub = function(object){
	audi_ngw.log("## STUB: audi_ngw.track.onAjaxLoadStub"+ object);
};
 
 
 
/**
 * Custom Event: wil be fired as soon as we filled the ajax-content into the modal layer, just before "xhrReallocate"
 * @param {Object} event
 * @param {Object} xhr
 */
audi_ngw.track.onAjaxModalContentReady = function(event,xhr){
	// check if this xhr-response contains valid content
	if (!audi_ngw.url.hasXHRContent(xhr,event.timeStamp)) {return false;}

	//audi_ngw.log("EVENT - ajaxModalContentReady: audi_ngw.track.onAjaxModalContentReady",arguments);

	// execute funtions on new content
	var _sSelector = '#';
	_sSelector += audi_ngw.url.getContentId();
	_sSelector += ' .track_load';
	$( _sSelector ).each(
		function () {
			audi_ngw.track.onAjaxLoad(jQuery(this));
		}
	);
	
	// trigger event 
	audi_ngw.event.trigger('ajaxModalContentPrepared');
};

/**
 * 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.track.onAjaxSnippetReady = function(event,data){

	//audi_ngw.log("EVENT - ajaxSnippetPrepared: audi_ngw.track.onAjaxSnippetReady",arguments);

	// execute funtions on new content
	var _sSelector = data.sId;
	_sSelector += ' .track_load';
	$( _sSelector ).each(
		function () {
			audi_ngw.track.onAjaxLoad(jQuery(this));
		}
	);
	
	// trigger event 
	audi_ngw.event.trigger('ajaxSnippetPrepared');
};


 
/**
 * Constructor
 * @return {Void}
 */	
audi_ngw.track.initialize = function(){
	this.__className =  'audi_ngw.track';
	this.__classVersion= '1.0';
	
};

// initialize
jQuery(function(){
	audi_ngw.track.initialize();
	// register ajaxModalContentReady event
	audi_ngw.event.bind('ajaxModalContentReady',audi_ngw.track.onAjaxModalContentReady);
	// register ajaxSnippetReady event
 	audi_ngw.event.bind('ajaxSnippetReady',audi_ngw.track.onAjaxSnippetReady);
		
});
