TAB_LEFT = 0; TAB_MIDDLE = 1; TAB_RIGHT = 2; var tabSelectedCallbacks = Array(); var tabClosedCallbacks = Array(); function getTabElements(tab){ var myClass = ""; switch(tab){ case TAB_LEFT: myClass = "crn_main_top_tl"; break; case TAB_MIDDLE: myClass = "crn_main_top_tm"; break; case TAB_RIGHT: myClass = "crn_main_top_tr"; break; default://TODO handle error wrong useage of the api return new Array(0); } return getElementsByClassName('div',myClass); } function tabsUnSelected(){ var cb,i,k; var elements = getElementsByClassName('div','tabSelected'); for (i = 0;i < elements.length;i++){ removeClass(elements[i], 'tabSelected'); } if(elements.length!==0){ for ( k = 0; k < tabClosedCallbacks.length; k++){ cb = tabClosedCallbacks[k]; cb(getTabByElement(elements[0])); } } } function tabMouseOut(tab){ var elements = getTabElements(tab); for (var i = 0;i < elements.length;i++){ removeClass(elements[i],"tabHover"); } } var oldTab = -1; function tabSelected(tab, runCallback){ var elements = getTabElements(tab); tabsUnSelected(); tabMouseOut(tab); for (var i = 0;i < elements.length;i++){ addClass(elements[i],'tabSelected'); } if( (oldTab!==tab || ( typeof runCallback != 'undefined' && runCallback === true ) ) && ( typeof runCallback == 'undefined' || runCallback !== false ) ){ oldTab = tab; for(var k = 0; k < tabSelectedCallbacks.length; k++){ var cb = tabSelectedCallbacks[k]; cb(tab); } } } function getSelectedTabIndex(){ return oldTab; } function tabMouseOver(tab){ var elements = getTabElements(tab); var classes = elements[0].className.split(" "); for (var i = 0;i < classes.length;i++){ if(classes[i] == "tabSelected"){return;} } for (var k = 0;k < elements.length;k++){ addClass(elements[k],"tabHover"); } } //center right navi mouse over function crnMover(element){ var tab = getTabByElement(element); tabMouseOver(tab); } function crnMout(element){ var tab = getTabByElement(element); tabMouseOut(tab); } function crnSel(element){ var tab = getTabByElement(element); tabSelected(tab); } /** @return String returns the tab's class or null if a non tab ellement of the camnetwork navi is given as argument. */ function getTabByElement(element){ var classes = element.className.split(" "); for (var i = 0;i < classes.length;i++){ var myClass = classes[i]; if(myClass=="crn_main_top_tl"){ return 0; } else if(myClass=="crn_main_top_tm"){ return 1; } else if (myClass=="crn_main_top_tr"){ return 2; } } } function loadTabs(callback){ request("GET", "http://www.camnetwork.org/en/tabs.js",null,function(tabs){ var variables = eval("(" + tabs + ")"); for (var attrib in variables){ if(variables.hasOwnProperty(attrib)){ var e = document.getElementById(attrib); if(e){e.innerHTML = variables[attrib];} } } if(callback!==null && typeof callback !=="undefined"){callback();} }); } function setTabContent(content){ if(typeof content !=="undefined"){ $("crn_main_tabbed_main").innerHTML = content; } } function addTabSelectedCallback(callback){ var i; var add = true; for( i = 0;add && i < tabSelectedCallbacks.length ; i++){ add &= (tabSelectedCallbacks[i] !== callback); } if( add ){ tabSelectedCallbacks.push(callback); } } function addTabClosedCallback(callback){ var i; var add = true; for(i = 0; add && i < tabClosedCallbacks.length ; i++){ add &= (tabClosedCallbacks[i] !== callback); } if( add ){ tabClosedCallbacks.push(callback); } }