ia = {};
$YD = YAHOO.util.Dom;
$YE = YAHOO.util.Event;

function collapseExpand(me,id) {
	var obj = document.getElementById(id);
	if($YD.hasClass(obj, "collapsed") ){
		$YD.removeClass(obj,'collapsed');
		$YD.removeClass(me, 'expand');
		$YD.addClass(me, 'collapse');		
	} else {
		$YD.addClass(obj,'collapsed');
		$YD.removeClass(me, 'collapsed');
		$YD.addClass(me, 'expand');		
	}	
}

function collapseExpandInit() {
	var elms = $YD.getElementsByClassName('collapsebox', 'div', null);
	for(var i=0;i<elms.length;i++){
		var triggerA = $YD.getElementsByClassName('expandCollapse', 'a',  $YD.getPreviousSibling(elms[i]));
		if(triggerA){
			$YD.replaceClass( triggerA , 'expandCollapse', 'expand' ); 
			$YD.addClass(elms[i], "collapsed");
		}
	}
}

ia.splitLink = {
	/**
	 * 
	 */
	itemClass : 'splitLinkList',
	itemClassItem : 'splitLinkItem',
	itemClassController : 'splitLinkController',
	itemClassContent : 'splitLinkContent',
	itemOpenClass : 'expanded',
	itemCloseClass : 'closed',
	/**
	 * 
	 */
	init:function(){
		$YD.getElementsByClassName(ia.splitLink.itemClass, "ul", document, ia.splitLink._initList); 
	},
	/**
	 * Hide all but first item, set clickhandler
	 */
	_initList:function(){
		var items = $YD.getChildrenBy(this, function(e){return $YD.hasClass(e,ia.splitLink.itemClassItem)});
		for(var i = 0; i < items.length; i++){
			var content = $YD.getElementsByClassName(ia.splitLink.itemClassContent, "", items[i]);
			// close all but first item
			if (i != 0) {
				$YD.removeClass(items[i],ia.splitLink.itemOpenClass);
				$YD.addClass(items[i],ia.splitLink.itemCloseClass);
				
			} else {
				$YD.removeClass(items[i],ia.splitLink.itemCloseClass);
				$YD.addClass(items[i],ia.splitLink.itemOpenClass);
			}
			// click handler for all anchor HTMLElements with itemClassController class
			$YD.getElementsByClassName(ia.splitLink.itemClassController, 'a', items[i], function(){ $YE.on(this, "click", ia.splitLink.clickHandler); }  );
			//
			
		}		
	},
	/**
	 * 
	 */
	clickHandler:function(e){
		try{
			var elm = $YE.getTarget(e);
			// search for itemClassItem
			var item = $YD.getAncestorByClassName(elm, ia.splitLink.itemClassItem);
			
			if(typeof item != "undefined"){
				var content = $YD.getElementsByClassName(ia.splitLink.itemClassContent, "", item);
				if(content.length > 0){
					// stop any running animation on splitlink
					if (typeof ia.splitLink.anim != 'undefined'){ ia.splitLink.anim.stop(); }
					// display or hide content with animation
					if($YD.hasClass(item, ia.splitLink.itemCloseClass)){
						$YD.setStyle(content[0], "opacity", 0.0);
						ia.splitLink.anim = new YAHOO.util.Anim(content , {opacity: { to : 1 }}, 0.3 , YAHOO.util.Easing.easeIn);
						$YD.removeClass(item,ia.splitLink.itemCloseClass);
						$YD.addClass(item,ia.splitLink.itemOpenClass);
						ia.splitLink.anim.animate();			
					} else {
						$YD.removeClass(item,ia.splitLink.itemOpenClass);
						$YD.addClass(item,ia.splitLink.itemCloseClass);
					}				
				}
			}
		}catch(ev){}
		$YE.preventDefault(e);
	}
};
ia.searchbox={
	defaultText : '',
	/**
	 * 
	 */
	init: function(){ 
		$YE.on('search-textfield-1', 'focus', ia.searchbox.focusHandler);
		$YD.setStyle('search-box-options', "opacity", 0.0);
	},
	/**
	 * clear serach-box text on focus
	 * open searchbox
	 * add handler to document to close search-box if needed
	 */
	focusHandler: function(){
		// clear text on focus
		if(this.value == ia.searchbox.defaultText) this.value = "";
	
		var s = document.getElementById("search-box");	

		if(!$YD.hasClass(s , 'open')){
			$YD.addClass(s ,'open');
			$YD.removeClass(s ,'closed');
			var so = document.getElementById("search-box-options");
			if (typeof ia.searchbox.anim != 'undefined'){ ia.searchbox.anim.stop(); }
			ia.searchbox.anim = new YAHOO.util.Anim(so , {opacity: { to : 1 }}, 0.3 , YAHOO.util.Easing.easeIn);
			ia.searchbox.anim.animate();
			$YE.removeListener(document, "click", ia.searchbox.clickHandler);
			$YE.addListener(document, "click", ia.searchbox.clickHandler);
		}
	},
	/**
	 * Find parent HTMLelement with id search-box of target that caused the event, stop search at HTML node.
	 * If search-box was not found click was outside the search-box, close the search-box and remove clickhandler.
	 */
	clickHandler:function(e){ 
		if (!e) e = window.event;
		var elm = e.target || e.srcElement;
		
		while(elm.id != 'search-box' && elm.nodeName != 'HTML'){
			elm=elm.parentNode;
		}
		if(elm.id != 'search-box'){
			var so = document.getElementById("search-box-options");
			ia.searchbox.anim.stop();
			ia.searchbox.anim = new YAHOO.util.Anim(so , {opacity: { to : 0 }}, 0.3, YAHOO.util.Easing.easeOut );
			ia.searchbox.anim.onComplete.subscribe(
					function(){
						var s = document.getElementById("search-box");	 
						$YD.addClass(s ,'closed');
						$YD.removeClass(s ,'open');			
					}
			);
			ia.searchbox.anim.animate();
			$YE.removeListener(document, "click", ia.searchbox.clickHandler);
		}
	}
};

ia.categorySelectAll={
	/**
	 * 
	 */
	init: function(){
		var obj = document.getElementById("rdbCategorie");
		if(obj){
			$YD.getElementsByClassName("handlers", "div", obj, function(el){$YE.on(el, 'click', ia.categorySelectAll.clickHandler);});
			
			var nodes = $YD.getElementsByClassName("RadioGroup_standard", "tr", obj);
			var runEnable = false;
			for(var i=0;i<nodes.length;i++){
				var chk = YAHOO.util.Dom.getElementsBy(function(el){ return (el.getAttribute("type") == "checkbox")}, "input", nodes[i],function(el){$YE.on(el, 'click', ia.categorySelectAll.enable);});
				runEnable = runEnable ||  chk[0].checked;
				
			}
			if(runEnable){ia.categorySelectAll.enable();}
		}
	},
	clickHandler: function(e){
		$YE.preventDefault(e);
		var t = $YE.getTarget(e);
		if(t.nodeName != "A"){ return; }
		var obj = document.getElementById("rdbCategorie");
		var nodes = $YD.getElementsByClassName("RadioGroup_standard", "tr", obj);
		var h = $YD.getAncestorByClassName(t, "handlers");
		var n = $YD.getElementsByClassName("selectNone",null,h)[0];
		var a = $YD.getElementsByClassName("selectAll",null,h)[0];
		if($YD.hasClass(t, "selectAll")){
			for(var i=0;i<nodes.length;i++){
				YAHOO.util.Dom.getElementsBy(function(el){ return (el.getAttribute("type") == "checkbox")}, "input", nodes[i], function(el){el.checked = true;});
			}
			
			while (h.childNodes[0]) {
				h.removeChild(h.childNodes[0]);
			}
			
			var d = document.createElement("SPAN");
			d.className = "selectAll disabled";
			d.innerHTML = a.innerHTML;
			h.appendChild(d);
			h.appendChild(document.createTextNode(' | '))
			d = document.createElement("A");
			d.className = "selectNone";
			d.href = "#";
			d.innerHTML = n.innerHTML;
			h.appendChild(d);
		} else if($YD.hasClass(t, "selectNone")) {
			for(var i=0;i<nodes.length;i++){
				YAHOO.util.Dom.getElementsBy(function(el){ return (el.getAttribute("type") == "checkbox")}, "input", nodes[i], function(el){el.checked = false;});
			}
			
			while (h.childNodes[0]) {
				h.removeChild(h.childNodes[0]);
			}
			
			var d = document.createElement("A");
			d.className = "selectAll";
			d.innerHTML = a.innerHTML;
			d.href = "#";
			h.appendChild(d);
			h.appendChild(document.createTextNode(' | '))
			d = document.createElement("SPAN");
			d.className = "selectNone disabled";
			d.innerHTML = n.innerHTML;
			h.appendChild(d);
		}
	},
	enable: function(e){
			var t = document.getElementById("rdbCategorie");
			var h = $YD.getElementsByClassName("handlers",null,t)[0];
			var n = $YD.getElementsByClassName("selectNone",null,h)[0];
			var a = $YD.getElementsByClassName("selectAll",null,h)[0];
			
			while (h.childNodes[0]) {
				h.removeChild(h.childNodes[0]);
			}
			
			var d = document.createElement("A");
			d.className = "selectAll";
			d.innerHTML = a.innerHTML;
			d.href = "#";
			h.appendChild(d);
			h.appendChild(document.createTextNode(' | '))
			d = document.createElement("A");
			d.className = "selectNone";
			d.innerHTML = n.innerHTML;
			d.href = "#";
			h.appendChild(d);	
	}
}
	
$YE.onDOMReady(collapseExpandInit);
$YE.onDOMReady(ia.searchbox.init);
// $YE.onDOMReady(ia.expandCollapseList.init);
$YE.onDOMReady(ia.splitLink.init);
$YE.onDOMReady(ia.categorySelectAll.init);

