/************************************************
*   mooquee v.0                                 *
*   Dirar Abu Kteish dirar@zanstudio.com        *
/***********************************************/

var mooquee = new Class({
    initialize: function(element, options) {
      this.setOptions({
         marHeight: 25,
         marWidth: 258,
         marSpacing: 10,
         speed: 10,
         direction: 'left',
         pauseOnOver: true
       }, options);
       this.timer = null;
       this.textElement = null;
       this.mooqueeElement = element;              
       this.constructMooquee();
   },
   constructMooquee: function() {
      var el = this.mooqueeElement;
      el.setStyles({
          'width' : this.options.marWidth
          ,'height' : this.options.marHeight
      });
      this.textElement = new Element('div',{
          'class' : 'mooquee-text'
          ,'id' : 'mooquee-text'
      }).setHTML(el.innerHTML);
      el.setHTML('');
      this.textElement.injectInside(el);
      this.textElement = $('mooquee-text');
      (this.options.direction == 'left') ?  this.textElement.setStyle('left', ( -1 * this.textElement.getCoordinates().width.toInt())) : this.textElement.setStyle('left', this.options.marWidth);
      if(this.options.pauseOnOver){this.addMouseEvents();}
      //start marquee
      this.timer = this.startMooquee.delay(this.options.speed, this);
   },
   addMouseEvents : function(){
       this.textElement.addEvents({
           'mouseenter' : function(me){
               this.clearTimer();
           }.bind(this),
           'mouseleave' : function(me){
               this.timer = this.startMooquee.delay(this.options.speed, this);
           }.bind(this)
       });
   },
    startMooquee: function(){
        var pos = this.textElement.getStyle('left').toInt();
        this.textElement.setStyle('left', ( pos + ((this.options.direction == 'left') ? -1 : 1)) + 'px');
        this.checkEnd(pos);
        this.timer = this.startMooquee.delay(this.options.speed, this);        
    },
    resumeMooquee: function(){
        this.stopMooquee();
        if(this.options.pauseOnOver){this.addMouseEvents();}
        this.timer = this.startMooquee.delay(this.options.speed, this);        
    },
    stopMooquee: function(){
        this.clearTimer();        
        this.textElement.removeEvents();        
    },
    clearTimer: function(){
        $clear(this.timer);
    },
    checkEnd: function(pos){
        if(this.options.direction == 'left'){
            if(pos < -1 * (this.textElement.getCoordinates().width.toInt())){
                this.textElement.setStyle('left', this.options.marWidth);
            }
        }
        else{
            if(pos > this.options.marWidth.toInt()){
                this.textElement.setStyle('left', -1 * (this.textElement.getCoordinates().width.toInt()) );                
            }
        }        
    },
    setDirection: function(dir){
        this.options.direction = dir;
    }
});
mooquee.implement(new Options);



/************************************************
*   carousel v.0                                 *
/***********************************************/

var CNETcarousel = new Class({
   initialize: function(container, options){
      this.container = $(container);
      if(!this.container.hasClass('hasCarousel')){
         this.container.addClass('hasCarousel');
         this.slides = [];
         this.buttons = [];
         this.setOptions({
            onRotate: Class.empty,
            onStop: Class.empty,
            onAutoPlay: Class.empty,
            onShowSlide: Class.empty,
            slidesSelector: ".slide",
            buttonsSelector: ".button",
            slideInterval: 4000,
            transitionDuration: 700,
            startIndex: 0,
            buttonOnClass: "selected",
            buttonOffClass: "off",
            rotateAction: "none",
            rotateActionDuration: 100,
            autoplay: false
         }, options);
         this.slides = $(container).getElements(this.options.slidesSelector);
         this.buttons = $(container).getElements(this.options.buttonsSelector);
         this.createFx();
         this.showSlide(this.options.startIndex);
         if(this.options.autoplay) this.autoplay();
         if(this.options.rotateAction != 'none') this.setupAction(this.options.rotateAction);
         return this;
      } else return false;
   },

   setupAction: function(action) {
      this.buttons.each(function(el, idx){
         $(el).addEvent(action, function() {
            this.slideFx.setOptions(this.slideFx.options, {duration: this.options.rotateActionDuration});
            if(this.currentSlide != idx) this.showSlide(idx);
            this.stop();
         }.bind(this));
      }, this);
   },

   createFx: function(){
      this.slideFx = new Fx.Elements(this.slides, {duration: this.options.transitionDuration});
      this.slides.each(function(slide){
         slide.setStyle('opacity',0);
      });
   },

   showSlide: function(slideIndex){
      var action = {};
      this.slides.each(function(slide, index){
         if(index == slideIndex && index != this.currentSlide){ //show
            $(this.buttons[index]).removeClass(this.options.buttonOffClass).addClass(this.options.buttonOnClass);
            action[index.toString()] = {
               'opacity': [1]
            };
         } else {
            $(this.buttons[index]).removeClass(this.options.buttonOnClass).addClass(this.options.buttonOffClass);
            action[index.toString()] = {
               'opacity':[0]
            };
         }
      }, this);
      this.fireEvent('onShowSlide', slideIndex);
      this.currentSlide = slideIndex;
      this.slideFx.start(action);
   },

   autoplay: function(){
      this.createFx();
      this.slideshowInt = this.rotate.periodical(this.options.slideInterval, this);
      this.fireEvent('onAutoPlay');
   },

   stop: function(){
      clearInterval(this.slideshowInt);
      this.fireEvent('onStop');
   },

   rotate: function(){
      current = this.currentSlide;
      next = (current+1 >= this.slides.length) ? 0 : current+1;
      this.showSlide(next);
      this.fireEvent('onRotate');
   },

   show: function() {
      $(this.options.carouselContainer).setStyle('visibility','visible');
      if(!$(this.options.carouselContainer).isVisible())$(this.options.carouselContainer).setStyle('display','block');
   },

   hide: function(){
      $(this.options.carouselContainer).setStyle('visibility','hidden');
   }
});
CNETcarousel.implement(new Options);
CNETcarousel.implement(new Events);

var CNETcarouselWithButtons = CNETcarousel.extend({
   initialize:function(el, options){
      this.parent(el, $merge({
         bubbleButtonBGImgSelector: '.bbg',
         buttonOnGifSrc: 'http://i.i.com.com/cnwk.1d/i/fd/c/green_button.gif',
         buttonOffGifSrc: 'http://i.i.com.com/cnwk.1d/i/fd/c/gray_button.gif'
      }, options));
   },
   showSlide: function(slideIndex){
      this.buttons.each(function(button, index){
         $(button).getElement(this.options.bubbleButtonBGImgSelector).src = (index == slideIndex)?this.options.buttonOnGifSrc:this.options.buttonOffGifSrc;
      }, this);
      this.parent(slideIndex);
   }
});
var carousel = null;
window.addEvent('domready', function(){
   if($('Carousel')) {
      carousel = new CNETcarouselWithButtons($('Carousel'),{buttonsSelector:'.bubble', rotateAction:'mouseover'});
   }
});



/* This script and many more are available free online at
The JavaScript Source :: http://javascript.internet.com
Created by: Philip Myers :: http://virtualipod.tripod.com/bookmark.html */

function bookmark(url,title){
  if ((navigator.appName == "Microsoft Internet Explorer") && (parseInt(navigator.appVersion) >= 4)) {
  window.external.AddFavorite(url,title);
  } else if (navigator.appName == "Netscape") {
    window.sidebar.addPanel(title,url,"");
  } else {
    alert("Press CTRL-D (Netscape) or CTRL-T (Opera) to bookmark");
  }
}



//Chrome Drop Down Menu v2.01- Author: Dynamic Drive (http://www.dynamicdrive.com)
//Last updated: November 14th 06- added iframe shim technique

var cssdropdown={
disappeardelay: 750, //set delay in miliseconds before menu disappears onmouseout
disablemenuclick: true, //when user clicks on a menu item with a drop down menu, disable menu item's link?
enableswipe: 0, //enable swipe effect? 1 for yes, 0 for no
enableiframeshim: 1, //enable "iframe shim" technique to get drop down menus to correctly appear on top of controls such as form objects in IE5.5/IE6? 1 for yes, 0 for no

//No need to edit beyond here////////////////////////
dropmenuobj: null, ie: document.all, firefox: document.getElementById&&!document.all, swipetimer: undefined, bottomclip:0,

getposOffset:function(what, offsettype){
var totaloffset=(offsettype=="left")? what.offsetLeft : what.offsetTop;
var parentEl=what.offsetParent;
while (parentEl!=null){
totaloffset=(offsettype=="left")? totaloffset+parentEl.offsetLeft : totaloffset+parentEl.offsetTop;
parentEl=parentEl.offsetParent;
}
return totaloffset;
},

swipeeffect:function(){
if (this.bottomclip<parseInt(this.dropmenuobj.offsetHeight)){
this.bottomclip+=10+(this.bottomclip/10) //unclip drop down menu visibility gradually
this.dropmenuobj.style.clip="rect(0 auto "+this.bottomclip+"px 0)"
}
else
return
this.swipetimer=setTimeout("cssdropdown.swipeeffect()", 10)
},

showhide:function(obj, e){
if (this.ie || this.firefox)
this.dropmenuobj.style.left=this.dropmenuobj.style.top="-500px"
if (e.type=="click" && obj.visibility==hidden || e.type=="mouseover"){
if (this.enableswipe==1){
if (typeof this.swipetimer!="undefined")
clearTimeout(this.swipetimer)
obj.clip="rect(0 auto 0 0)" //hide menu via clipping
this.bottomclip=0
this.swipeeffect()
}
obj.visibility="visible"
}
else if (e.type=="click")
obj.visibility="hidden"
},

iecompattest:function(){
return (document.compatMode && document.compatMode!="BackCompat")? document.documentElement : document.body
},

clearbrowseredge:function(obj, whichedge){
var edgeoffset=0
if (whichedge=="rightedge"){
var windowedge=this.ie && !window.opera? this.iecompattest().scrollLeft+this.iecompattest().clientWidth-15 : window.pageXOffset+window.innerWidth-15
this.dropmenuobj.contentmeasure=this.dropmenuobj.offsetWidth
if (windowedge-this.dropmenuobj.x < this.dropmenuobj.contentmeasure)  //move menu to the left?
edgeoffset=this.dropmenuobj.contentmeasure-obj.offsetWidth
}
else{
var topedge=this.ie && !window.opera? this.iecompattest().scrollTop : window.pageYOffset
var windowedge=this.ie && !window.opera? this.iecompattest().scrollTop+this.iecompattest().clientHeight-15 : window.pageYOffset+window.innerHeight-18
this.dropmenuobj.contentmeasure=this.dropmenuobj.offsetHeight
if (windowedge-this.dropmenuobj.y < this.dropmenuobj.contentmeasure){ //move up?
edgeoffset=this.dropmenuobj.contentmeasure+obj.offsetHeight
if ((this.dropmenuobj.y-topedge)<this.dropmenuobj.contentmeasure) //up no good either?
edgeoffset=this.dropmenuobj.y+obj.offsetHeight-topedge
}
}
return edgeoffset
},

dropit:function(obj, e, dropmenuID){
if (this.dropmenuobj!=null) //hide previous menu
this.dropmenuobj.style.visibility="hidden" //hide menu
this.clearhidemenu()
if (this.ie||this.firefox){
obj.onmouseout=function(){cssdropdown.delayhidemenu()}
obj.onclick=function(){return !cssdropdown.disablemenuclick} //disable main menu item link onclick?
this.dropmenuobj=document.getElementById(dropmenuID)
this.dropmenuobj.onmouseover=function(){cssdropdown.clearhidemenu()}
this.dropmenuobj.onmouseout=function(e){cssdropdown.dynamichide(e)}
this.dropmenuobj.onclick=function(){cssdropdown.delayhidemenu()}
this.showhide(this.dropmenuobj.style, e)
this.dropmenuobj.x=this.getposOffset(obj, "left")
this.dropmenuobj.y=this.getposOffset(obj, "top")
this.dropmenuobj.style.left=this.dropmenuobj.x-this.clearbrowseredge(obj, "rightedge")+"px"
this.dropmenuobj.style.top=this.dropmenuobj.y-this.clearbrowseredge(obj, "bottomedge")+obj.offsetHeight+1+"px"
this.positionshim() //call iframe shim function
}
},

positionshim:function(){ //display iframe shim function
if (this.enableiframeshim && typeof this.shimobject!="undefined"){
if (this.dropmenuobj.style.visibility=="visible"){
this.shimobject.style.width=this.dropmenuobj.offsetWidth+"px"
this.shimobject.style.height=this.dropmenuobj.offsetHeight+"px"
this.shimobject.style.left=this.dropmenuobj.style.left
this.shimobject.style.top=this.dropmenuobj.style.top
}
this.shimobject.style.display=(this.dropmenuobj.style.visibility=="visible")? "block" : "none"
}
},

hideshim:function(){
if (this.enableiframeshim && typeof this.shimobject!="undefined")
this.shimobject.style.display='none'
},

contains_firefox:function(a, b) {
while (b.parentNode)
if ((b = b.parentNode) == a)
return true;
return false;
},

dynamichide:function(e){
var evtobj=window.event? window.event : e
if (this.ie&&!this.dropmenuobj.contains(evtobj.toElement))
this.delayhidemenu()
else if (this.firefox&&e.currentTarget!= evtobj.relatedTarget&& !this.contains_firefox(evtobj.currentTarget, evtobj.relatedTarget))
this.delayhidemenu()
},

delayhidemenu:function(){
this.delayhide=setTimeout("cssdropdown.dropmenuobj.style.visibility='hidden'; cssdropdown.hideshim()",this.disappeardelay) //hide menu
},

clearhidemenu:function(){
if (this.delayhide!="undefined")
clearTimeout(this.delayhide)
},

startchrome:function(){
for (var ids=0; ids<arguments.length; ids++){
var menuitems=document.getElementById(arguments[ids]).getElementsByTagName("a")
for (var i=0; i<menuitems.length; i++){
if (menuitems[i].getAttribute("rel")){
var relvalue=menuitems[i].getAttribute("rel")
menuitems[i].onmouseover=function(e){
var event=typeof e!="undefined"? e : window.event
cssdropdown.dropit(this,event,this.getAttribute("rel"))
}
}
}
}
if (window.createPopup && !window.XmlHttpRequest){ //if IE5.5 to IE6, create iframe for iframe shim technique
document.write('<IFRAME id="iframeshim"  src="" style="display: none; left: 0; top: 0; z-index: 90; position: absolute; filter: progid:DXImageTransform.Microsoft.Alpha(style=0,opacity=0)" frameBorder="0" scrolling="no"></IFRAME>')
this.shimobject=document.getElementById("iframeshim") //reference iframe object
}
}

}