/*GUI-Klassen fŸr Mootools, Copyright Benedikt Morschheuser 2009*/
var Gui_Element = new Class({
	Implements: [Events],
	initialize: function(html_element){
		this.html_element = html_element;//dazugehöriges HTML element
	}//globale funktionen
});
var gui_Matrix = new Class({  
	Extends: Gui_Element,		   
	initialize: function(html_element){//übergibt das schon existierende html Element
        this.parent(html_element);
		this.idName = html_element.id.toString();
		this.showMatrix=true;
		this.matrixElements = new Array(); //alle MatrixElemente in der Matrix
		this.initMatrixElements();
		this.initMatrixFooter();
    },
	initMatrixElements: function(){
		this.html_element.getElements('.gui_element_matrix_elements').each(function(matrix_el){
			this.matrixElements.push(new gui_Matrix_Element(matrix_el,this,false));
		}.bind(this));
		this.html_element.getElements('.gui_element_matrix_elements_selected').each(function(matrix_el){
			this.matrixElements.push(new gui_Matrix_Element(matrix_el,this,true));
		}.bind(this));
	},
	initMatrixFooter: function(){
		if($("gui_element_matrix_footer")){
			var footer = $("gui_element_matrix_footer");
			$$(footer.getElementsByTagName('a')).each(function(a_tag){//alle Links durchgehen, also a-Tags im html_element
				if(!a_tag.getProperty('href').test('#')){				
					var url = a_tag.getProperty('href');
					a_tag.addEvent('click',function(e){
						if (e) new Event(e).stop();//damit laden der Seite abgebrochen wird
						this.animateMatrix_show_hide();
					}.bindWithEvent(this));
				}
			}.bind(this));		
		}
	},
	animateMatrix_show_hide:function(){
		if(this.showMatrix){
			//leistungen verschwinden lassen und matrix einfahren
			
			//dann
			this.showMatrix=false;
			ajaxHistoryManager.doNavClick('matrix',this.showMatrix);
		}else{
			//matrix ausfahren und leistungen anzeigen
			
			//dann
			this.showMatrix=true;
			ajaxHistoryManager.doNavClick('matrix',this.showMatrix);
		}
	},
	buildMatrix: function (jsonObj){//baue Matrix aus JSON Leistungen auf
		var matrixhash = new Hash(jsonObj);
		if(matrixhash.has('search_id')&&matrixhash.has('angebote_url')){
			//-> Lade Angebote
			//sende JSON Events init
			this.removeEvents('angebote-jsonContentLoaded');//erst mal entfernen
			this.addEvent('angebote-jsonContentLoaded',function(jsonObjAngebote){ 
				//baue Elemente in Angebote ein
				var matrixID_CSSString= pageLoadManager.gui_elements.get('gui_element_angebote');
				if($(matrixID_CSSString.toString())){//falls ID auf Seite vorhanden
					var html_element=$(matrixID_CSSString.toString()); 
					pageLoadManager.htmlGUIObjects.get('gui_element_angebote').buildAngebote(jsonObjAngebote);//Hole entsprechendes JS Objekt und baue Angebote
				}
			}.bindWithEvent(this));
			//sende JSON für Angebote
			pageLoadManager.pageReloadwithJson(this,matrixhash.get('angebote_url'),'angebote','&search_id='+matrixhash.get('search_id'),'angebote-jsonContentLoaded');
			//loadingAnimation($('gui_element_matrix_content'));
		}
		if(matrixhash.has('leistungen')){
			//stoploadingAnimation($('gui_element_matrix_content'));
			$('gui_element_matrix_content').set('html',matrixhash.get('leistungen').join(""));//dem Content die Leistungne hinzufügen
			this.initMatrixElements();
		}
		if(matrixhash.has('matrix_footer')){
			//stoploadingAnimation($('gui_element_matrix_content'));
			$('gui_element_matrix_footer').set('html',matrixhash.get('matrix_footer'));
			this.initMatrixElements();
		}
		//...
	},
	getMatrixEl: function (idName){
		this.matrixElements.each(function(item, index){
			if(item.idName.toString()==idName.toString()){
				return item;
			}
		});
		return null;
	}
});
//Matrixelemente
var gui_Matrix_Element = new Class({  
	Extends: Gui_Element,		   
	initialize: function(html_element,matrix,selected){//übergibt das schon existierende html Element
        this.parent(html_element);
		this.matrix=matrix;//zugehörige Matrix
		this.selected=selected;
		this.initElement();
		this.idName = html_element.id.toString();
    },
	initElement: function(){
		$$(this.html_element.getElementsByTagName('a')).each(function(a_tag){//alle Links durchgehen, also a-Tags im html_element
			if(!a_tag.getProperty('href').test('#')){				
				var url = a_tag.getProperty('href');
				a_tag.addEvent('click',function(e){
					if (e) new Event(e).stop();//damit laden der Seite abgebrochen wird
					ajaxHistoryManager.doLeistungsClick(this.idName);
				}.bindWithEvent(this));
			}
		}.bind(this));		
	}
});
//Angebote
var gui_Angebote = new Class({  
	Extends: Gui_Element,		   
	initialize: function(html_element){//übergibt das schon existierende html Element
        this.parent(html_element);
		this.idName = html_element.id.toString();
    },
	buildAngebote: function (jsonObj){//baue Angebote aus JSON auf
		var angebotehash = new Hash(jsonObj);
		if(angebotehash.has('angebote')){
			this.html_element.set('html',angebotehash.get('angebote').join(""));
			//evtl. erneut initalisieren falls Links ersetzt werden müssen
		}
		if(angebotehash.has('seitenNav')){
			//Baue Nav ein
			var matrixID_CSSString= pageLoadManager.gui_elements.get('gui_element_seitenNav');
			if($(matrixID_CSSString.toString())){//falls ID auf Seite vorhanden
				var html_element=$(matrixID_CSSString.toString()); 
				pageLoadManager.htmlGUIObjects.get('gui_element_seitenNav').buildseitenNav(angebotehash.get('seitenNav'));//Hole entsprechendes JS Objekt und baue Navigation auf
			}
		}
		//...
	}
});
//Seiten Navigation, Seite 1, Seite 2...
var gui_seitenNav = new Class({  
	Extends: Gui_Element,		   
	initialize: function(html_element){//übergibt das schon existierende html Element
        this.parent(html_element);
		this.idName = html_element.id.toString();
    },
	buildseitenNav: function (inner_html){//baue Angebote aus JSON auf
		this.html_element.set('html',inner_html);
		//evtl. erneut initalisieren falls Links ersetzt werden müssen
	}
});

