YAHOO.namespace("infotoggler");
		
/**
*	Toggle the sub classes on or off, i.e show or hide using display none/block
*/
YAHOO.infotoggler.toggle = function(e, o){
	id = o.main;
	
	if(YAHOO.util.Dom.getStyle('tmp-sub-id-' + id, 'display') == 'block'){
		YAHOO.util.Dom.get('tmp-state-id-' + id).innerHTML = '';
		YAHOO.util.Dom.setStyle('tmp-sub-id-' + id, 'display', 'none');
	}
	else{
		YAHOO.util.Dom.get('tmp-state-id-' + id).innerHTML = '';
		YAHOO.util.Dom.setStyle('tmp-sub-id-' + id, 'display', 'block');
	}
	
	// stop default link to be followed if any
	YAHOO.util.Event.preventDefault(e);
}

/**
*	Initializes everything
*	@param String tag The tags we are using, for eg li, div, p
*	@param String mainClass the class for the main
*	@param String subClass the class for the subs
*/
YAHOO.infotoggler.init = function(tag, mainClass, subClass){
	// get all the nodes
	var mainNodes = YAHOO.util.Selector.query(tag + '.' + mainClass);
	var subNodes = YAHOO.util.Selector.query(tag + '.' + subClass);
	
	// check if the mainNodes and subNodes are same length 
	if(mainNodes.length == subNodes.length){
	
		// set CSS cursor pointer for main class
		YAHOO.util.Dom.setStyle(mainNodes, 'cursor', 'pointer');
		
		// hide the subs class by setting display none for sub
		YAHOO.util.Dom.setStyle(subNodes, 'display', 'none');
		
		// assign temporary ids for the mains for easier DOM manipulation afterwards
		for(var i=0;i<mainNodes.length;i++){
			mainNodes[i].id = 'tmp-main-id-' + i;
			// add the [+] sign here
			mainNodes[i].innerHTML = '<span id="tmp-state-id-' + i + '"></span> ' + mainNodes[i].innerHTML;
			// add the onclick listener to that main to show the sub
			YAHOO.util.Event.addListener('tmp-main-id-' + i, 'click', YAHOO.infotoggler.toggle, {"main" : i});
		}
		
		// set ids for sub
		for(var i=0;i<subNodes.length;i++){
			subNodes[i].id = 'tmp-sub-id-' + i;
		}
	}
	else{
		// show an error message if length of main and subs not same
		alert('Number of main and subs incorrect');
	}
}

YAHOO.util.Event.addListener(window, 'load', function(){
	YAHOO.infotoggler.init('div', 'link-main', 'link-sub');
});
