var loaded=false;

JAME.DOM.Ready(function() {
	
	if(loaded)return;
	loaded=true;

/*ACCORDEON */
	    var accordeon = parse("#accordean .expandable");

		if(accordeon &&accordeon.constructor===Array)initAccordeon(accordeon);
		var titles = parse("#accordean h3");

		var callback={
			opened : function(elm) { 
				elm.oldcolor=elm.style.color;
				elm.firstChild.style.color="#CC0000";
			},
			closed : function(elm){
				elm.firstChild.style.color=elm.oldcolor;
			} 
		};


		initClickable(titles,-1,callback);



/* MENU LINKS EFFECT */

	var menuLinks = parse("#accordean li a");
	var settings={duration:800,easing:JAME.FX.Transition.Bounce.Out};

	menuLinks.each(
		function(elm,i) {
		elm.onmouseover = function() {
				new JAME.FX.T(settings).Tween2(elm,{color:{start:"#888888",end:"#CC0000"},opacity:{start:0.8,end:1.0}});
			}
			elm.onmouseout = function() {
				new JAME.FX.T(settings).Tween2(elm,{color:{end:"#888888",start:"#CC0000"},opacity:{start:0.5,end:1}});
			}
		}
	);



});

function checkParent(target,origin) {
	do {
		if(target===origin) return true;
			target = parent(target); 
		} while(target);
		return false;
}



function initAccordeon(accordeon) {
	accordeon.each(
		function(link,i) {
			var olink = wrapNode(link,'div');
			olink.style.overflow='hidden';
			olink.maxH=getHeight(olink);
			olink.style.display='none';
		}
	);
}

function initClickable(titles,openByDefault,callback) {

	var closeAccordeon = function (elm) {
		var sibling = nextNode(elm);
		callback["closed"](elm);
		new JAME.FX.T({duration:550,easing:JAME.FX.Transition.Expo.Out}).Tween2(sibling,{height:{start:sibling.maxH,end:'0px'}}).queue(function() {sibling.style.display='none'});
			elm.opened=false;
	}

	var collapseAccordeon = function (elm) {
		var sibling = nextNode(elm);
		callback["closed"](elm);
		new JAME.FX.T({duration:550,easing:JAME.FX.Transition.Expo.Out}).Tween2(sibling,{height:{start:sibling.maxH,end:'0px'}}).queue(function() {sibling.style.display='none'});
			elm.opened=false;
			openedAccordeon='';
	}

	var expandAccordeon = function (elm) {
		if(!elm) return;
		var sibling = nextNode(elm);
		callback["opened"](elm);
		new JAME.FX.T({duration:550,easing:JAME.FX.Transition.Expo.Out}).Tween2(sibling,{height:{end:sibling.maxH,start:'0px'},display:{start:'none',end:'block'}});
		elm.opened=true;
		openedAccordeon = elm;
	}

	if(openByDefault==-1)
		openedAccordeon = '';//titles[0];
	else {
		openedAccordeon = titles[openByDefault];
	    openedAccordeon.opened=true;
	    expandAccordeon(openedAccordeon);
	}


	var toggleAccordeon = function(elm) {
		if(elm.opened)
			closeAccordeon(elm);
		else
			expandAccordeon(elm);
	}

	titles.each(
		function(title,i) {
			title.originalColor=title.style.color;
			if(i!=openByDefault) title.opened=false;
			title.style.cursor='pointer';
			title.onclick=function() {
				if(openedAccordeon===title) { collapseAccordeon(title); return; }
				toggleAccordeon(openedAccordeon);
				toggleAccordeon(this);
			}
		}
	);
}

function wrapNode(elm,wrapper) {
		var oWrapper = document.createElement(wrapper);
		var elmClone = elm.cloneNode(true);
		oWrapper.appendChild(elmClone);
		oparent = elm.parentNode;
		insertAfter(oWrapper,elm);
		oparent.removeChild(elm);
		return oWrapper;
}


var normalizeEvent = function(event) {

    event = event || window.event;
    
	if(window.event) {

    	event.preventDefault = function() {
     	     this.returnValue= false;
    	};
    	event.stopPropagation = function() {
      		this.cancelBubble = true;
    	};
        event.target = event.srcElement;       

        if (event.target.nodeType == 3) event.target = event.target.parentNode;

        event.relatedTarget = (event.fromElement == event.target) 
							? event.toElement 
						    : event.fromElement;
	}


    if ( event.pageX == null && event.clientX != null ) {
        var e = document.documentElement, b = document.body;
        event.pageX = event.clientX + (e && e.scrollLeft || b.scrollLeft || 0);
        event.pageY = event.clientY + (e && e.scrollTop || b.scrollTop || 0);    
	}

    if ( !event.which && (event.charCode || event.keyCode) )
      event.which = event.charCode || event.keyCode;
    
    if ( !event.metaKey && event.ctrlKey )
      event.metaKey = event.ctrlKey;

    if ( !event.which && event.button )
      event.which = (event.button & 1 ? 1 : ( event.button & 2 ? 3 : ( event.button & 4 ? 2 : 0 ) ));
      
    return event;
}


function lastNode(elem) {
   if (!elem.lastChild) return false;
   elem = elem.lastChild;
   return (elem && elem.nodeType == 3 && !/\S/.test(elem.nodeValue))
		  ? prevNode(elem) 
		  : elem;
}

function prevNode(elem) {
   if (!elem.previousSibling)  return false; 
   do {
      elem = elem.previousSibling;
   } while (elem && (elem.nodeType == 3 && !/\S/.test(elem.nodeValue)));
   return elem;
}

function nextNode( elem ) {
   if (!elem.nextSibling) return false;
   do {
      elem = elem.nextSibling;
   } while (elem && (elem.nodeType == 3 && !/\S/.test(elem.nodeValue)));
   return elem;
}

function firstNode(elem) {
   if (!elem.firstChild) return false;
   elem = elem.firstChild;
   return (elem && elem.nodeType == 3 && !/\S/.test(elem.nodeValue))
		  ? nextNode(elem) : elem;
}

function insertAfter( elem, targetElem ) {

   var oparent = targetElem.parentNode;
   if (targetElem == oparent.lastChild)
     oparent.appendChild(elem);
   else
     oparent.insertBefore(elem,nextNode(targetElem));
}


function getHeight(elm){
		if(elm.style.display!='none'&& elm.style.display!='')
			return elm.offsetHeight;
		viz = elm.style.visibility;
		elm.style.visibility = 'hidden';
		o = elm.style.display;
		elm.style.display='block';
		r = parseInt(elm.offsetHeight);
		elm.style.display=o;
		elm.style.visibility = viz;
		return r;
}

