function showIndicator(parent)
{
	var indicator = $('indicator');
	
	if (Object.isElement(parent) == false) {
  	var _parent = $(parent);
  }
	else
	{
		var _parent = parent;
	}
	
  if (_parent == null || Object.isElement(_parent) == false) {
  	return null;
  }
			
	Element.clonePosition(indicator, _parent)

	indicator.style.display = "block";
	
	//Callback time to short on localhost
	//new Effect.Appear(indicator, { duration: 1.0, from: 0.0, to: 0.8 queue: {position: 'front', scope:'indicator', limit:1}} );
}

function hideIndicator()
{
	var indicator = document.getElementById('indicator');

	indicator.style.display = "none";
	
	//Callback time to short on localhost
	//new Effekt.Puff(indicator, { queue: {position: 'front', scope:'indicator', limit:1 }});
}

function highlightModule(menuEdit)
{
	//unhighlight other modules
	var divs = getElementsByClassName('menuEdit_highlight', 'div', document.getElementById('list_questions')) 
	for(i=0; i<divs.length;i++)
	{
		divs[i].className = 'menuEdit'
	}
	
	//highlight this module
	menuEdit.className = 'menuEdit_highlight';
	return true;
}

function updateSortableList(list, update, url, success)
{
	Sortable.create(list, {onUpdate:function(){new Ajax.Updater(update, url, {asynchronous:true, evalScripts:false, onSuccess: function(request, json){eval(success)},onLoading:function(request, json){showIndicator(document.getElementById(list))}, parameters:Sortable.serialize(list)})}})
}

function expandAll(container)
{
	var container = container || "*";
	var containers = getElementsByClassName('moduleContent', 'div', document.getElementById(container));
	
	for(var i=0; i<containers.length; i++)
	{
		if(containers[i].style.display == "none")
		{
			new Effect.SlideDown(containers[i], {duration: 0.3});
		}
	}
	
	var containers = getElementsByClassName('menuWindowExpand', 'div', document.getElementById(container));
	
	for(var i=0; i<containers.length; i++)
	{
			containers[i].className='menuWindowCollapse';
	}
}

function collapseAll(container)
{
	var container = container || "*";
	var containers = getElementsByClassName('moduleContent','div', document.getElementById(container));
	
	for(var i=0; i<containers.length; i++)
	{
		if(containers[i].style.display == "")
		{
			new Effect.SlideUp(containers[i], {duration: 0.3});
		}
	}
		var containers = getElementsByClassName('menuWindowCollapse', 'div', document.getElementById(container));
	
	for(var i=0; i<containers.length; i++)
	{
			containers[i].className='menuWindowExpand';
	}
}

function expandOne(container, id)
{
	var container = container || "*";
	var containers = getElementsByClassName('moduleContent','div', document.getElementById(container));
	
	for(var i=0; i<containers.length; i++)
  {
    if(containers[i].style.display == "" && containers[i].id != id)
    {
      new Effect.SlideUp(containers[i], {duration: 0.3});
    }
    
    if(containers[i].id == id)
    {
    	new Effect.SlideDown(containers[i], {duration: 0.3});
    }
    
    
  }
  
  var containers = getElementsByClassName('menuWindowCollapse', 'div', document.getElementById(container));
  
  for(var i=0; i<containers.length; i++)
  {
  	if(containers[i].parentNode.parentNode.parentNode.id != id)
      containers[i].className='menuWindowExpand';
  }
}

function collapseOne(container)
{
	collapseAll(container);
}

function toggleOne(container, id)
{
	var container = container || "*";
  var containers = getElementsByClassName('moduleContent','div', document.getElementById(container));
  
  if(document.getElementById(id).style.display != "")
  {
    for(var i=0; i<containers.length; i++)
    {
      if(containers[i].style.display == "" && containers[i].id != id)
      {
        new Effect.SlideUp(containers[i], {duration: 0.3});
      }
      
      if(containers[i].id == id)
      {
        new Effect.SlideDown(containers[i], {duration: 0.3});
      } 
    }
    
    var containers = getElementsByClassName('menuWindowCollapse', 'div', document.getElementById(container));
    
    for(var i=0; i<containers.length; i++)
    {
      containers[i].className='menuWindowExpand';  
    }
    
    var containers = getElementsByClassName('menuWindowExpand', 'div', document.getElementById(id).parentNode);
    
    try
    {
      containers[0].className='menuWindowCollapse';
    } catch(e) {}
  }
  else
  {
  	collapseAll(container);
  	
    var containers = getElementsByClassName('menuWindowCollapse', 'div', document.getElementById(container));
    
    for(var i=0; i<containers.length; i++)
    {
      containers[i].className='menuWindowExpand';  
    }
  }
}

function getElementsByClassName(className, tag, elm)
{
	var testClass = new RegExp("(^|\\\\s)" + className + "(\\\\s|$)");
	var tag = tag || "*";
	var elm = elm || document;
	var elements = (tag == "*" && elm.all)? elm.all : elm.getElementsByTagName(tag);
	var returnElements = [];
	var current;
	var length = elements.length;
	for(var i=0; i<length; i++){
		current = elements[i];
		if(testClass.test(current.className)){
			returnElements.push(current);
		}
	}
	return returnElements;
}

function checkAll(name, checked)
{
	if(!name)
	{
		return false;
	}
	if(checked == null)
	{
		checked = true;
	}
	
	if (name.endsWith('?')) {
    var elements = document.getElementsByTagName("input");
		var name = name.truncate(name.length - 1, '').toUpperCase();
		
		for (var i = 0; i < elements.length; i++) 
		{
			if (elements[i].getAttribute('type', false).toUpperCase() == 'CHECKBOX' && elements[i].getAttribute('name', false).toUpperCase().startsWith(name)) 
			{
	  	  elements[i].checked = checked;
	    }
    }
	
  }
  else {
  	var elements = document.getElementsByName(name);
  	
  	for (var i = 0; i < elements.length; i++) {
  		elements[i].checked = checked;
  	}
  }
}

function toggleSidebarBox(boxHeader)
{
	if(typeof(boxHeader) != 'object')
	  return;
	  
	var boxContent = boxHeader.parentNode.parentNode.childNodes[1];
	
	if(boxHeader.childNodes[2].className == 'SideBarBoxOpened')
	{
		boxHeader.childNodes[2].className = 'SideBarBoxClosed';
		Element.toggle(boxContent);
		//new Effect.SlideUp(boxContent, {duration: 0.3});
		
	}
	else
	{
		boxHeader.childNodes[2].className = 'SideBarBoxOpened';
		Element.toggle(boxContent);
		//new Effect.SlideDown(boxContent, {duration: 0.3});
	}
}
