var Behaviour = {
	list : new Array,
	
	register : function(sheet){
		Behaviour.list.push(sheet);
	},
	
	start : function(){
		Behaviour.addLoadEvent(function(){
			Behaviour.apply();
		});
	},
	
	apply : function(){
		for (h=0;sheet=Behaviour.list[h];h++){
			for (selector in sheet){
				try{
            list = document.getElementsBySelector(selector);
          }catch(err){
          
          }
				
				if (!list){
					continue;
				}

				for (i=0;element=list[i];i++){
					sheet[selector](element);
				}
			}
		}
	},
	
	addLoadEvent : function(func){
		var oldonload = window.onload;
		
		if (typeof window.onload != 'function') {
			window.onload = func;
		} else {
			window.onload = function() {
				oldonload();
				func();
			}
		}
	}
}

Behaviour.start();


function getAllChildren(e) {
  return e.all ? e.all : e.getElementsByTagName('*');
}

document.getElementsBySelector = function(selector) {
  if (!document.getElementsByTagName) {
    return new Array();
  }
  var tokens = selector.split(' ');
  var currentContext = new Array(document);
  for (var i = 0; i < tokens.length; i++) {
    token = tokens[i].replace(/^\s+/,'').replace(/\s+$/,'');;
    if (token.indexOf('#') > -1) {
      var bits = token.split('#');
      var tagName = bits[0];
      var id = bits[1];
      var element = document.getElementById(id);
      if ((element==null) || (tagName && element.nodeName.toLowerCase() != tagName)) {
        return new Array();
      }
      currentContext = new Array(element);
      continue;
    }
    if (token.indexOf('.') > -1) {
      var bits = token.split('.');
      var tagName = bits[0];
      var className = bits[1];
      if (!tagName) {
        tagName = '*';
      }
      var found = new Array;
      var foundCount = 0;
      for (var h = 0; h < currentContext.length; h++) {
        var elements;
        if (tagName == '*') {
            elements = getAllChildren(currentContext[h]);
        } else {
            elements = currentContext[h].getElementsByTagName(tagName);
        }
        for (var j = 0; j < elements.length; j++) {
          found[foundCount++] = elements[j];
        }
      }
      currentContext = new Array;
      var currentContextIndex = 0;
      for (var k = 0; k < found.length; k++) {
        if (found[k].className && found[k].className.match(new RegExp('\\b'+className+'\\b'))) {
          currentContext[currentContextIndex++] = found[k];
        }
      }
      continue;
    }
    if (token.match(/^(\w*)\[(\w+)([=~\|\^\$\*]?)=?"?([^\]"]*)"?\]$/)) {
      var tagName = RegExp.$1;
      var attrName = RegExp.$2;
      var attrOperator = RegExp.$3;
      var attrValue = RegExp.$4;
      if (!tagName) {
        tagName = '*';
      }
      var found = new Array;
      var foundCount = 0;
      for (var h = 0; h < currentContext.length; h++) {
        var elements;
        if (tagName == '*') {
            elements = getAllChildren(currentContext[h]);
        } else {
            elements = currentContext[h].getElementsByTagName(tagName);
        }
        for (var j = 0; j < elements.length; j++) {
          found[foundCount++] = elements[j];
        }
      }
      currentContext = new Array;
      var currentContextIndex = 0;
      var checkFunction;
      switch (attrOperator) {
        case '=': 
          checkFunction = function(e) { return (e.getAttribute(attrName) == attrValue); };
          break;
        case '~':
          checkFunction = function(e) { return (e.getAttribute(attrName).match(new RegExp('\\b'+attrValue+'\\b'))); };
          break;
        case '|':
          checkFunction = function(e) { return (e.getAttribute(attrName).match(new RegExp('^'+attrValue+'-?'))); };
          break;
        case '^':
          checkFunction = function(e) { return (e.getAttribute(attrName).indexOf(attrValue) == 0); };
          break;
        case '$':
          checkFunction = function(e) { return (e.getAttribute(attrName).lastIndexOf(attrValue) == e.getAttribute(attrName).length - attrValue.length); };
          break;
        case '*':
          checkFunction = function(e) { return (e.getAttribute(attrName).indexOf(attrValue) > -1); };
          break;
        default :
          checkFunction = function(e) { return e.getAttribute(attrName); };
      }
      currentContext = new Array;
      var currentContextIndex = 0;
      for (var k = 0; k < found.length; k++) {
        if (checkFunction(found[k])) {
          currentContext[currentContextIndex++] = found[k];
        }
      }
      continue;
    }
    
    if (!currentContext[0]){
    	return;
    }
    
    tagName = token;
    var found = new Array;
    var foundCount = 0;
    for (var h = 0; h < currentContext.length; h++) {
      var elements = currentContext[h].getElementsByTagName(tagName);
      for (var j = 0; j < elements.length; j++) {
        found[foundCount++] = elements[j];
      }
    }
    currentContext = found;
  }
  return currentContext;
}

var CSS_OTF;
function createCss(){
	try{
		CSS_OTF = document.createStyleSheet();
	}catch(e){
		var css = document.createElement("style");
		document.getElementsByTagName("head")[0].appendChild(css)
		CSS_OTF = document.styleSheets[document.styleSheets.length -1]
	}
}
createCss();

function setDisplay(name,display){
	try{
		CSS_OTF.addRule("#"+name,"display:"+display+";")
	}catch(e){
		CSS_OTF.insertRule("#"+name+" { display: "+display+" }", 0)
	}
}

function setBgImage(name, url) {
        try{
	 	CSS_OTF.addRule("#"+name,"background-image:url('"+url+"');");
	}catch(e){
		CSS_OTF.insertRule("#"+name+" { background-image:url('"+url+"') }", 1);
	}
}

function getImgSrcbyId(id)
{
	for (var i=0; i<imgsSrc.length; i++)
		if (imgsSrc[i][0] == id) return imgsSrc[i][1];
	return null;
}


var mmedia_sel = new Array();
var mmedia={};

function ponImagenes() {
        var tam = mmedia_sel.length
        for(i=0; i<tam; i++) {
                mm=document.getElementById(mmedia_sel[i])
                if (mm) {
			modShow(mmedia_sel[i]);
                }
        }
}


function prevModule(node)
{
        while(node.id.indexOf("ale_")==-1){
                node = node.parentNode
        }
        node.style.display="none";

        var sibling=node;
        do {
                sibling = sibling.previousSibling;
                if (!sibling) sibling=node.parentNode.lastChild;
        } while (sibling.nodeType!=1)

        sibling.style.display="block";
	modShow(sibling.id);
        return false;
}

function nextModule(node)
{

        while(node.id.indexOf("ale_")==-1){
                node = node.parentNode;
        }
        node.style.display="none";

        var sibling=node;
        do {
                sibling = sibling.nextSibling;
                if (!sibling) sibling=node.parentNode.firstChild;
        } while (sibling.nodeType!=1)

        sibling.style.display="block";
	modShow(sibling.id);
        return false;
}

function modShow(mod_id)
{
	var mmdata = mmedia[mod_id];
	if (mmdata)
	{
		if (mmdata.type == 'img')
			var node = document.getElementById(mod_id+'_img');
		else
			var node = document.getElementById('iframe_content_'+mod_id);
		node.src = mmdata.src;
	}
}

var imgsIds = new Array();
var imgsSrc = new Array();

function prevModuleOnClick()
{
	var node = this.parentNode
	while(node.id.indexOf("ale_")==-1){
		node = node.parentNode
	}
	node.style.display="none";
	var im = document.getElementById(node.id+"_img");
	if (im) im.style.display="none";

	var sibling=node;
	do {
		sibling = sibling.previousSibling;
		if (!sibling) sibling=node.parentNode.lastChild;
	} while (sibling.nodeType!=1)
	
	sibling.style.display="block";
	var im2 = document.getElementById(sibling.id+"_img")
	if (im2) {
		im2.src = getImgSrcbyId(sibling.id+"_img");
		im2.style.display="block";
	}
	return false;
}

function nextModuleOnClick()
{
	var node = this.parentNode
	while(node.id.indexOf("ale_")==-1){
		node = node.parentNode
	}
	node.style.display="none";
	var im = document.getElementById(node.id+"_img");
	if (im) im.style.display="none";

	var sibling=node;
	do {
		sibling = sibling.nextSibling;
		if (!sibling) sibling=node.parentNode.firstChild;
	} while (sibling.nodeType!=1)
			
	sibling.style.display="block";
	var im2 = document.getElementById(sibling.id+"_img")
	if (im2) {
		im2.src = getImgSrcbyId(sibling.id+"_img");
		im2.style.display="block";
	}
	return false;
}

var rules_randomPrevNext = {
	'a.rdmPrev' : function(j){
		j.onclick = prevModuleOnClick
	},
	'a.rdmNext' : function(j){
		j.onclick = nextModuleOnClick
	}
};

Behaviour.addLoadEvent(ponImagenes);
Behaviour.register(rules_randomPrevNext);
//TABDISPLAY_BH
var rules_tab = {
	'a.tD' : function(j){
		j.onclick = function(){
			idTab = j.id.split("_")[0]+ j.id.split("_")[1]
			tab   = document.getElementById(idTab)
			lis   = document.getElementsBySelector("#"+j.id.split("_")[0]+" .tabs li");
			for (var z = 0; z<lis.length; z++)
				lis[z].className = "";
			tabsH = document.getElementsBySelector("#"+j.id.split("_")[0]+" .tabContenido");
			for (var i = 0; i<tabsH.length; i++){
				tabsH[i].style.display = "none";
			}
			j.parentNode.className = "selected";
			tab.style.display      = "block";
			return false;
		}
	}
};
Behaviour.register(rules_tab);

// MENUS
try{
	CSS_OTF.addRule(".tabContenido","display:none;")
	CSS_OTF.addRule(".tSel","display:block;")
	CSS_OTF.addRule(".sh","display:none;")
}
catch(e){
	CSS_OTF.insertRule(".tabContenido { display: none; }", 0)
	CSS_OTF.insertRule(".tSel { display: block; }", 1)
	CSS_OTF.insertRule(".sh { display: none; }", 2)
}