var timerlen = 3; var slideAniLen; var isIE6 = navigator.userAgent.indexOf('MSIE 6') != -1; var isIE7 = navigator.userAgent.indexOf('MSIE 7') != -1; var isFF = navigator.userAgent.indexOf("Firefox")!=-1; var timerID = new Array(); var startTime = new Array(); var obj = new Array(); var endHeight = new Array(); var begHeight = new Array(); var moving = new Array(); var dir = new Array(); function toggleSlide(objname,dropTimer){ slideAniLen = dropTimer; if(moving[objname]) return; if(document.getElementById(objname).style.display != "none"){ slideup(objname); return; } if(document.getElementById(objname).style.display == "none"){ slidedown(objname); return; } } function slidedown(objname){ if(moving[objname]) return; if(document.getElementById(objname).style.display != "none") return; // cannot slide down something that is already visible moving[objname] = true; dir[objname] = "down"; startslide(objname); } function slideup(objname){ if(moving[objname]) return; if(document.getElementById(objname).style.display == "none") return; // cannot slide up something that is already hidden moving[objname] = true; dir[objname] = "up"; startslide(objname); } function startslide(objname){ obj[objname] = document.getElementById(objname); if(isFF){ obj[objname].firstChild.nextSibling.style.overflow="hidden"; } if(begHeight[objname]){ obj[objname].style.height=begHeight[objname]; } if(isIE6 || isIE7){ endHeight[objname] = parseInt(obj[objname].style.height)-4; }else{ endHeight[objname] = parseInt(obj[objname].style.height); } begHeight[objname] = parseInt(obj[objname].style.height); startTime[objname] = (new Date()).getTime(); if(dir[objname] == "down"){ obj[objname].style.height = "1px"; } obj[objname].style.display = "block"; timerID[objname] = setInterval('slidetick(\'' + objname + '\');',timerlen); } function slidetick(objname){ var elapsed = (new Date()).getTime() - startTime[objname]; if (elapsed > slideAniLen) endSlide(objname) else { var d =Math.round(elapsed / slideAniLen * endHeight[objname]); if(dir[objname] == "up") d = endHeight[objname] - d; obj[objname].style.height = d + "px"; } return; } function endSlide(objname){ clearInterval(timerID[objname]); if(dir[objname] == "up"){ obj[objname].style.display = "none"; } if(isFF){ obj[objname].firstChild.nextSibling.style.overflow="auto"; } obj[objname].style.height = endHeight[objname] + "px"; delete(moving[objname]); delete(timerID[objname]); delete(startTime[objname]); delete(endHeight[objname]); delete(obj[objname]); delete(dir[objname]); return; }