Здравствуйте!
Появилась проблема совместимости данных фреймворков.
Дело в том, что в джумле по умолчанию используется mootools. Я в некоторых местах использую jquery (с включенным noConflict). Код на jquery работает прекрасно.
Но появилась необходимость использовать следующий скрипт, который написан (до кучи) на prototype:
window.t1PodObj=null;
window.nbaHomepage=function(){};
function nbaHomepageT1Init(){
t1PodObj=new nbaHomepage.t1PodNav("nbaT1PodNav","nbaT1PC");
t1PodObj.setT1Timer(4000);
t1PodObj.startRotation();
}
nbaHomepage.t1PodNav=
function(t1ThumbContainer,t1ContPrefix){
var nbaT1PodNav=$(t1ThumbContainer);
var nbaT1ContPrefix=t1ContPrefix;
var nbaT1Timeout=7000;
var navArry=[];
var lastPosition=0;
var t1PodTimer=null;
var isErr=false;
this.startRotation=_startRotation;
this.doRotate=_doRotate;
this.stopRotate=_stopRotate;
this.doThumbOver=_doThumbOver;
this.showHideT1=_showHideT1;
this.setT1Timer=_setT1Timer;
function _startRotation(){
try{
navArry=nbaT1PodNav.getElementsBySelector('li');
_getOverlayDiv(navArry[lastPosition]).addClassName("nbaSpanOverlay");
_setMouseOverEvents();
_doRotate();
}
catch(eRR){}
}
function _setT1Timer(timeVal){
nbaT1Timeout=timeVal
}
function _setMouseOverEvents(){
for(var i=0;i<navArry.length;i++){
try{
var iElement=nbaT1ContPrefix+i;
navArry[i].observe('mouseover',_thumbHandler.bindAsEventListener(Event,true,i));
navArry[i].observe('mouseout',_thumbHandler.bindAsEventListener(Event,false,i));
$(iElement).observe('mouseover',function(e){_stopRotate();});
$(iElement).observe('mouseout',function(e){_doRotate();});
}
catch(_eRR){
isErr=true;alert("setMouseOverEvents(): Content element with ID [ "+iElement+"] was not found in the DOM");
break;
}
}
}
function _thumbHandler(e){
var argArry=$A(arguments);
argArry.shift();
if(argArry[0]){
_doThumbOver(argArry[1])
}else{
_doRotate();
}
}
function _doRotate(){
if(!isErr){
t1PodTimer=setTimeout(
function(){
_showHideT1()
}
,nbaT1Timeout);
}
}
function _stopRotate(){
clearTimeout(t1PodTimer);
t1PodTimer=null;
}
function _doThumbOver(thumbId){
_stopRotate();
try{
$(nbaT1ContPrefix+lastPosition).hide();
_getOverlayDiv(navArry[lastPosition]).removeClassName("nbaSpanOverlay");
$(nbaT1ContPrefix+thumbId).show();
_getOverlayDiv(navArry[thumbId]).addClassName("nbaSpanOverlay");
lastPosition=thumbId;
}
catch(_eRR){
alert("doThumbOver(): Content element with ID [ "+(nbaT1ContPrefix+lastPosition)+"] or [ "+(nbaT1ContPrefix+thumbId)+"] was not found in the DOM");
}
}
function _showHideT1(){
var nextPosition=((lastPosition+1)>navArry.length-1)?0:(lastPosition+1);
var currContent=nbaT1ContPrefix+lastPosition;
var nextContent=nbaT1ContPrefix+nextPosition;
try{
_getOverlayDiv(navArry[lastPosition]).removeClassName("nbaSpanOverlay");
_getOverlayDiv(navArry[nextPosition]).addClassName("nbaSpanOverlay");
$(currContent).hide();
$(nextContent).show();
_doRotate();
}
catch(_eRR){
isErr=true;s
alert("t1PodNav._showHideT1(): Content element with ID [ "+currContent+"] or [ "+nextContent+"] was not found in the DOM");
}
lastPosition=nextPosition;
}
function _getOverlayDiv(liElement){
var liFirstChild=liElement.firstDescendant();
var liFirstChildDivs=liFirstChild.getElementsBySelector('div')
return liFirstChildDivs[0];
}
}
в <body> прописан :
onload="nbaHomepageT1Init();"
И весь этот код из под джумлы не работает, хотя в отдельном html документе работает на отлично!
Подскажите, пожалуйста, что можно изменить в данном коде? вызов функций поменять на что-то другое или есть другие пути, чтобы избежать конфликтов трех библиотек?