/**
 * AUDI JavaScript library: Layer
 * 
 * @projectDescription	Layer class providing basic layer functionality
 * @namespace			layer
 *
 * @author 				$Author: mkrause $
 * @version				$Revision: 3564 $
 * @copyright			NEUE DIGITALE GmbH, Berlin
 * 
 * @jslint: 2008-10-31
 * 
 * @file:				audi_ngw.layer.js
 * $URL: https://svn.pvtool.org/svn/day_audi_ngw/trunk/ngw_base/frontend/js/audi/audi.dom.rounded-corners.js $
 */

/* create namespace */
audi_ngw.namespace(audi_ngw,'dom.rounded_corners');

/* CREATE JQUERY PLUGINS */
/**
 * @see audi_ngw.dom.rounded_corners.create 
 */
$.fn.audi_createRoundedCorners = function() {
  audi_ngw.dom.rounded_corners._doCreate(this);
  return this;
};

/**
 * Creates HTML nodes for rounded corners inside supplied element. Bridges to _doCreate()
 * @see _doCreate()
 * @param {Object} element
 * @return {Void}
 */
audi_ngw.dom.rounded_corners.create = function(element){
	audi_ngw.dom.rounded_corners._doCreate(jQuery(element));
};

/**
 * Creates HTML nodes for rounded corners inside supplied element. Bridges to _doCreate()
 * @param {Object} jQuery extended element
 * @private
 * @return {Void}
 */
audi_ngw.dom.rounded_corners._doCreate = function ($elements) {
	// cache scope
	var scope = audi_ngw.dom.rounded_corners;
	$elements.each(function() {
		var $element = jQuery(this);
	
		// prevent multiple adds 
		if ($element.hasClass(scope.sClassNameSuccessfulMarker)) { return this; }

//		console.log("-",$element.attr('className'), "modal: ", (!$element.parents("#"+audi_ngw.url.getContentId()).size() || $element.hasClass('audi_template_d')) )
	
	
		var _sTop = ( (!$element.parents("#"+audi_ngw.url.getContentId()).size() || $element.hasClass('audi_template_d')) ) ? 'sHTMLTop' : 'sHTMLTopModal';
		var _sBottom = ( (!$element.parents("#"+audi_ngw.url.getContentId()).size() || $element.hasClass('audi_template_d')) ) ? 'sHTMLBottom' : 'sHTMLBottomModal';
		//switch between layer with or without tabs (rounded edges top)
		if ($element.hasClass("has_tabs")) {
//			jQuery('#audi_modal_header').before(scope._options.sHTMLTopTabs);
			jQuery('.audi_tab_navigation').after(scope._options.sHTMLTopTabs);		}
		else{
			$element.prepend(scope._options[_sTop]);
		}
		
		$element
		// add lower elements
		.append(scope._options[_sBottom])
		// set classnames
		.removeClass(scope._options.sClassNameAddMarker)
		.addClass(scope._options.sClassNameSuccessfulMarker)
		/* add another div to prevent disappearing edges during animation */
		.wrapInner('<div class="audi_generated_corners_background"></div>');
		//console.log("-",this,jQuery(this).hasClass(scope.sClassNameAddMarker),jQuery(this).attr('className'),scope._options.sClassNameAddMarker)

	});
	return this; 
};

/**
 * Creates HTML nodes for rounded corners on every element marked a wrapper identified by the optional argument || document.body.
 * @param {String} (Wrapper id)
 * @private
 * @return {Void}
 */

audi_ngw.dom.rounded_corners.createOn = function(sIdParent){
	// set environment
	var _sSelector;
	var scope = audi_ngw.dom.rounded_corners;
	// construct selector
	if (sIdParent) {
		_sSelector = "#";
		_sSelector += sIdParent;
		_sSelector += ' .';
		_sSelector += scope._options.sClassNameAddMarker;
	} else {
		_sSelector = 'body .';
		_sSelector += scope._options.sClassNameAddMarker;
	}
	// add html nodes
//	jQuery(_sSelector).each(
//		function (_i,_item) {
//			scope.create(_item);		
//		}
//	)
	jQuery(_sSelector).audi_createRoundedCorners();
};
 

/**
 * 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.dom.rounded_corners.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.dom.rounded_corners.onAjaxModalContentReady",arguments);
	// execute funtions on new content
 	audi_ngw.dom.rounded_corners.createOn(audi_ngw.url.getContentId());

	// 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.dom.rounded_corners.onAjaxSnippetReady = function(event,data){
 
	//audi_ngw.log("EVENT - ajaxSnippetPrepared: audi_ngw.dom.rounded_corners.onAjaxSnippetReady ",arguments);

	// execute funtions on new content
 	audi_ngw.dom.rounded_corners.createOn(data.sId.slice(1));
	
	// trigger event 
	audi_ngw.event.trigger('ajaxSnippetPrepared');
 };

/**
 * Initialize 
 * @method initialize
 * @constructor
 * @param {Object} Options 
 * @return {Void}
 */
audi_ngw.dom.rounded_corners.initialize = function(){
	
	this.__className =  'audi_ngw.dom.rounded_corners';
	this.__classVersion= '1.2';
	
	this._options = {};
	this._options.sHTMLTop ='<span class="audi_generated_top"><span class="generated_right"></span><span class="generated_middle"></span><span class="generated_left"></span></span>';
	this._options.sHTMLTopTabs ='<div id="audi_modal_round_head"><div id="audi_modal_top_right"></div><div class="audi_modal_bg_bar"></div><div id="audi_modal_top_left_notround"></div></div>';
//	this._options.sHTMLTopTabs ='<span class="audi_generated_top"><span class="generated_right"></span><span class="generated_middle"></span><span class="generated_left_tabs"></span></span>';
	this._options.sHTMLBottom = '<span class="audi_generated_bottom"><span class="generated_right"></span><span class="generated_middle"></span><span class="generated_left"></span></span>';
	this._options.sHTMLTopModal ='<div id="audi_modal_round_head"><div id="audi_modal_top_right"></div><div class="audi_modal_bg_bar"></div><div id="audi_modal_top_left"></div></div>';
	this._options.sHTMLBottomModal = '<div id="audi_modal_round_bottom"><div id="audi_modal_bottom_right"></div><div class="audi_modal_bg_bar"></div><div id="audi_modal_bottom_left"></div></div>';
	this._options.sClassNameAddMarker = 'audi_generated_rounded_corners';
	this._options.sClassNameSuccessfulMarker = 'has_audi_generated_rounded_corners';

 
	// register ajaxModalContentReady event
	audi_ngw.event.bind('ajaxModalContentReady',audi_ngw.dom.rounded_corners.onAjaxModalContentReady);
	audi_ngw.event.bind('ajaxSnippetReady',audi_ngw.dom.rounded_corners.onAjaxSnippetReady);
	
 	audi_ngw.dom.rounded_corners.createOn();

};

/*
audi_ngw.dom.rounded_corners.TEST = function(){
	audi_ngw.dom.rounded_corners.createOn()
}
*/
 
jQuery(document).ready(function(){
	audi_ngw.dom.rounded_corners.initialize();
//	audi_ngw.dom.rounded_corners.TEST();
});
