var Event = YAHOO.util.Event;
var Dom = YAHOO.util.Dom;
var $$ = cssQuery;
var $ = Dom.get;

var CategoryListener = function() {
	Event.on(
		$$('#sortimentKategorien li'), 
		'click', 
		function(e) { 
			CategoryHandler.selectCategory(this);
			CategoryHandler.startRequest(this.id);
			Event.stopEvent(e);
		}
	);
}


var ProductListener = function() {
	Event.on(
		$$('#sortimentProdukte li'), 
		'click', 
		function(e) { 
			ProductHandler.selectProduct(this);
			ProductHandler.startRequest(this.id); 
			Event.stopEvent(e);
		}
	);
	Event.on(
		$$('#sortimentProdukte li'), 
		'mouseover', 
		function(e) { 
			Dom.addClass(this, 'hover');
		}
	);
	Event.on(
		$$('#sortimentProdukte li'), 
		'mouseout', 
		function(e) { 
			Dom.removeClass(this, 'hover');
		}
	);
 }

Event.on(window, 'load', 
	function() {
		//var myLogReader = new YAHOO.widget.LogReader(); 
		/*******************************/
		CategoryListener();
		/*******************************/
		/*******************************/
		ProductListener();
		/*******************************/
	}
);

var CategoryHandler = { 

	selectCategory:function(cat){
		var cats = $$('#sortimentKategorien li');
		for (var i=0; i < cats.length; i++) {
			if (Dom.hasClass(cats[i],"selected")) {
				Dom.removeClass(cats[i], "selected");
			}
		}
		Dom.addClass(cat,"selected");
	},

	handleSuccess:function(o){ 
		YAHOO.log('Category Handler: received XHR response','info');
		var prodDiv = $$('#leftcolumn div.innertube')[0];
		prodDiv.innerHTML = o.responseText;
		ProductListener();
		var leftCol = document.getElementById('leftcolumn');
		Dom.addClass(leftCol, 'on');
	}, 
	 
    handleFailure:function(o){ 
        // Failure handler 
    }, 
 
    startRequest:function(cat_id) { 
		Dom.removeClass($('leftcolumn'), 'on');
		var prodDiv = $$('#leftcolumn div.innertube')[0];
		prodDiv.innerHTML = '<p class="ajaxHint">lade Produkte...</p>';
		ProductHandler.unselectSuppliers();
		cat_id = cat_id.slice(4);
		YAHOO.log('Category Handler: cat_id = '+cat_id,'info');
    	YAHOO.util.Connect.asyncRequest('GET', 'sortiment.php?ajax=1&cmd=getProducts&cat='+cat_id, catCallback, null); 
    } 
	 
}; 
	 
var ProductHandler = { 

	unselectSuppliers: function() {

		var div = $$('#rightcolumn p.sortimentAnbieter')[0];
		Dom.setStyle(div, 'color', 'white');

		var rightCol = $('rightcolumn');
		Dom.removeClass(rightCol, 'on');

		var imgs = $$('ul#baumschulen li img');
		for (var i = 0; i < imgs.length; i++) {
		 	var imgId = imgs[i].id.substring(3);
			imgs[i].src = "media/img/logo" + imgId.substring(0,1).toUpperCase() + imgId.substring(1) + "_off.jpg";
		}
		
	},

	selectSuppliers: function(supps) {

		var div = $$('#rightcolumn p.sortimentAnbieter')[0];
		Dom.setStyle(div, 'color', '#aa373c');
		var rightCol = $('rightcolumn');
		Dom.addClass(rightCol, 'on');

		var imgs = $$('ul#baumschulen li img');
		for (var i = 0; i < imgs.length; i++) {
		 	var imgId = imgs[i].id.substring(3);
			var imgSrc = "";
			if (this.isSupplier(imgId, supps)) {
				imgs[i].src = "media/img/" + supps[imgId].logo + ".jpg";
			}
		}
	},

	selectProduct:function(elem){
		var elems = $$('#sortimentProdukte li');
		for (var i=0; i < elems.length; i++) {
			if (Dom.hasClass(elems[i],"selected")) {
				Dom.removeClass(elems[i], "selected");
			}
		}
		Dom.addClass(elem,"selected");
	},

	isSupplier: function(supplier,suppliers){
		if (suppliers[supplier]) {
			return true;
		}
		return false;
	},

	handleSuccess:function(o){ 

		eval("var data = "+o.responseText);		
		YAHOO.log('ProductHandler: responseText = '+o.responseText, 'info')

		this.selectSuppliers(data);
	}, 
	 
    handleFailure:function(o){ 
        // Failure handler 
    }, 
 
    startRequest:function(prod_id) { 
		this.unselectSuppliers();
		prod_id = prod_id.slice(2);
		
    	YAHOO.util.Connect.asyncRequest('GET', 'sortiment.php?ajax=1&cmd=getSuppliers&prod='+prod_id, prodCallback, null); 
    } 
	 
}; 

/*
 * Define the callback object for success and failure
 * handlers as well as object scope.
 */ 
var catCallback = 
{ 
    success:CategoryHandler.handleSuccess, 
    failure:CategoryHandler.handleFailure, 
    scope: CategoryHandler 
}; 
var prodCallback = 
{ 
    success:ProductHandler.handleSuccess, 
    failure:ProductHandler.handleFailure, 
    scope: ProductHandler 
}; 
 
