/*
#################################################################################
#                                                                               #
#     Comwrap Ltd. - Outstanding Marketing Solutions - www.comwrap.eu 2009      #
#                                                                               #
#     Written by Steffen Kroggel  (skroggel@comwrap.eu)             			#
#                                                                               #
#     This script is protected by copyright. It is forbidden to copy this       #
#     script in parts or as a whole and to resell it without the explicit   	#
#     authorization of Comwrap Ltd. Germany.                                    # 
#                                                                               #
#################################################################################

2010/03/15 - Vers. 1.001

*/


var comwrap_ajax_references = {
	
	// Standardwerte
	detail_ajax_site : '85',
	list_ajax_site : '78',

	target_element_id : 'references_list',
	target_page : '',
	target_query : 5,

	page_browser_id : 'browser_container',
	ajax_loader_id : 'ajax_loader',
	checkbox_container : 'references_search',

	length_of_array : 0,

	//==================================================
    // Base-URL bestimmen
	url_to_html_output : function (target_id) {

		if (target_id) {
			target_url = 'index.php/?id='+target_id+'&type=160';

			// Base - URL holen
			if ((document.getElementsByTagName('base')[0].href) &&
				(! (target_url.match(/^http:\/\//i)))){
				var base_url = document.getElementsByTagName('base')[0].href;
			
				// Location neu setzen
				if (base_url.match(/\/$/)) {
					return base_url+target_url; 
					//===
				} else {
					return base_url+'/'+target_url; 
					//===
				}	
			}
			
			return target_url;	
			//===
		}
		
		alert ("Error: no pid submitted.");
		return false;
		//===
	},
		
	//==================================================
    // Initialisierung für Input-Felder innerhalb des Such-Divs
    init : function (list_ajax_site, details_ajax_site, active_element_class, target_query, target_id, checkbox_id,  page_browser_id, ajax_loader_id) {
    
    	// Zentrale IDs setzen
    	if (list_ajax_site) {
    		this.list_ajax_site = list_ajax_site;
    	}
    	
    	if (details_ajax_site) {
    		this.detail_ajax_site = details_ajax_site;
    	}
   	
    	if (checkbox_id) {
    		this.checkbox_container = checkbox_id;
    	}
    	
    	if (target_id) {
    		this.target_element_id = target_id;
    	}
    	
    	if (target_query) {
    		this.target_query = target_query;
    	}    	
    	
    	if (page_browser_id) {
    		this.page_browser_id = page_browser_id;
    	}       
    	
    	if (ajax_loader_id) {
    		this.ajax_loader_id = ajax_loader_id;
    	}     	
    	
    	if (this.checkbox_container) {
			$$('#'+this.checkbox_container+' input').each(function(field){
				$(field).addEvent('click', function (event) {  comwrap_ajax_references.target_page = 1; comwrap_ajax_references.prepare_query_string(); comwrap_ajax_references.set_info(this); });
			});   
			
			
			// CSS- Klassen noch setzen
			if (active_element_class) {
				$$('#'+this.checkbox_container+' .references_container.'+active_element_class+' .references_title').addClass('active');
				$$('#'+this.checkbox_container+' .references_container.'+active_element_class+' .references_attributelist').addClass('active');
						
			} else {
				$$('#'+this.checkbox_container+' .references_container:first-child .references_title').addClass('active');
				$$('#'+this.checkbox_container+' .references_container:first-child .references_attributelist').addClass('active');
			}
			
			// Action setzen
			$$('#'+this.checkbox_container+' .references_container .references_title').each(function(title_element){
				$(title_element).addEvent('click', function (event) {  

					// Alle bisherigen Hervorhebungen beseitigen
					// Alle aufgeklappten Checkboxleisten schließen
					this.getParent().getParent().getElements('div').each(function(element){
						element.removeClass('active'); 
					});
					
					
					// Neues Element einblenden
					this.addClass('active'); 
					this.getParent().getElements('div.references_attributelist').each(function(element){
						element.addClass('active'); 
					});
					
					
				}.bindWithEvent(title_element));
			});   
			
		}
    },

	//==================================================
    // All-Empty- Check belendet ggf. die Box aus
    check_if_emtpy : function (element) {

    	if (element.getElementsByTagName('img').length < 1) {
    		element.setStyle('display', 'none');
    	}
    
    },
	//==================================================
	show_fist_big_image :function (element) {
	
		var first_sibling = element.getFirst('div.big_image');
		
		$('references_big_image_container').set('html', first_sibling.get('html'));
			
		return false;
		//===
	},    
	
	//==================================================
	show_big_image :function (element) {

		var next_sibling = element.nextSibling;
		$('references_big_image_container').set('html', next_sibling.innerHTML);
			
		return false;
		//===
	},
	
	//==================================================
	// Springt zu einer anderen Seite
	page_switch :function (new_page) {
	
		// Anfrage noch mal senden - aber mit Seitenzusatz
		this.target_page = new_page;
		this.prepare_query_string();
		
	},
	
	//==================================================
	// Füllt den Info-Span
	set_info : function (element) {
	
		// Alle gecheckten Inputs innerhalb des Bereich identifizieren
		var all_values = new Array ();
		$(element).getParent().getParent().getElements('input').each(function(field){
			
			// Wenn Wert drin und das Teil ist aktiv
			if ((field.nextSibling.innerHTML.length > 0) &&
				(field.nextSibling) &&
				(field.checked == true)) {
				all_values.push(field.nextSibling.innerHTML);
			}
		});		

		$(element).getParent().getParent().getParent().getElements('.references_title span').each (function(info_span) {
			if (all_values.length > 0) {
				info_span.set('html', '('+all_values.join(', ')+')');
			} else {
				info_span.set('html', '');
			}
		});
		// Jetzt den Info-Span füllen
	
	}, 

	//==================================================
    // Bereitet den Query-String vor
    prepare_query_string : function () {
		
		$(this.page_browser_id).removeClass('item-details');
		
		// alle aktiven Boxen sammeln
		var query_string = new Array ();
		
		if (this.checkbox_container) {
			$$('#'+this.checkbox_container +' input').each(function(field){
				
				// Wenn Wert drin und das Teil ist aktiv
				if ((field.value.length > 0) &&
					(field.checked == true)) {
					query_string.push(field.value);
				}
	
			});		
			
			// Jetzt damit den Content laden!
			this.length_of_array = query_string.length
			
			var query_addition = '&tx_wfqbe_pi1[ATTRIBUTES_COUNTER]='+this.length_of_array;
			
			// Wenn Zielseite gesetzt ist, dann das noch anhängen
			if ((this.target_page) &&
				(this.target_query)) {
				query_addition += '&tx_wfqbe_pi1[showpage]['+this.target_query+']='+this.target_page;
			}
			
			this.get_content(this.list_ajax_site, '&tx_wfqbe_pi1[ATTRIBUTES]='+query_string.join(',')+query_addition);
		}
	
	},
	
	
	//==================================================
    // Details zeigen
    show_details : function (product_id) {
	
		//$(this.page_browser_id).addClass('item-details');
		this.get_content(this.detail_ajax_site, '&tx_wfqbe_pi1[UID]='+product_id);
		
		return false;
		//===		
	},
	
	
	//==================================================
    // Liste zeigen
    show_list : function () {

		$(this.page_browser_id).removeClass('item-details');
		this.prepare_query_string();
		
		return false;
		//===
	},
	
	//==================================================
    // Holt Content via Ajax
    get_content : function (target_url, query_string) {

		var req = new Request.HTML({
									 method: 'get',
									 url: this.url_to_html_output(target_url)+query_string,
									 link : 'chain', // ignore, chain, cancel
									 encoding : 'utf-8',
									 evalScripts : 1,
									 noCache : 1,
									 update: $(this.target_element_id), 
									 onFailure: function () { 
										//alert('An unexpected error occured. Please try again.'); 
									 },
									 onRequest :function () {
										$(comwrap_ajax_references.target_element_id).addClass('hide');
										$(comwrap_ajax_references.ajax_loader_id).removeClass('hide');
									 },
									 
									 onSuccess : function () { 
										$(comwrap_ajax_references.target_element_id).removeClass('hide');
										$(comwrap_ajax_references.ajax_loader_id).addClass('hide');
									 
									 }
								}).send();

		return true;
		//===									
    }
    

}
