/* Bookmarks */
bm = {
    obj: null,
    obj_link: null,
    obj_cover: null,
    id: null,
    id_link: null,
    id_cover: null,
    visible: false,
    body: null,
    title: null,
    
    items: new Array(),
    
    rc: null,
        
    init: function(title, id, id_link){
        bm.body = document.getElementsByTagName('body')[0];
        bm.id = id;
        bm.link_id = id_link;
        bm.id_cover = id + '_cover';
        bm.title = title;
        
        bm.obj_link = d_obj(id_link);
        
        //Create Bookmarks-Box 
        bm.obj = document.createElement( 'div' );
        bm.obj.setAttribute( 'id', bm.id );
        bm.obj.className = bm.id ;
        bm.obj.style.position   =  'absolute';
        bm.obj.style.zIndex   =  '10000';
        
        
        //Create Cover-Box
        bm.obj_cover = document.createElement( 'div' );
        bm.obj_cover.setAttribute( 'id', bm.id_cover );
        bm.addEvent(bm.obj_cover, 'mousemove', function(e){ bm.hideBookmarksBox() });
        bm.obj_cover.style.position   =  'absolute';
        bm.obj_cover.style.zIndex   =  '9990';
        bm.obj_cover.style.width   =  '0';
        bm.obj_cover.style.height   =  '0';
        bm.obj_cover.style.top   =  '0';
        bm.obj_cover.style.left   =  '0';
        bm.obj_cover.style.display   =  'none';
        
        //Append
        bm.body.appendChild(bm.obj);
        bm.body.appendChild(bm.obj_cover);
        
        //Build
        bm.buildHTML();
        
    },
    showBookmarksBox: function(){
    
        if ((bm.obj_link != null) && (bm.obj != null)){
            //BM-Box
            d_style(bm.id).display = "block";
            bm.obj = d_obj(bm.id);
            
            //BM-Box
            var top = getOffsetTop(bm.obj_link, 0) - bm.obj.offsetHeight + 0;
            var left = getOffsetLeft(bm.obj_link, 0);
            
            d_style(bm.id).top  = top  + 'px';
            d_style(bm.id).left = left + 'px';
            
        }
    },
    
    hideBookmarksBox: function(){
        if ((bm.obj_link != null) && (bm.obj != null)){
            d_style(bm.id).display = "none";
        }
        if ((bm.obj_cover != null)){
            d_style(bm.id_cover).display = "none";
        }
        bm.visible = false;
    },
    
    showCover: function(){
    
        if (bm.visible == false){
          //Cover
          d_style(bm.id_cover).display = "block";
          var coverWidth = d_obj(bm.id).offsetWidth + 50;
          var coverHeight = d_obj(bm.id).offsetHeight + 50;
          d_style(bm.id_cover).width = coverWidth + 'px';
          d_style(bm.id_cover).height = coverHeight + 'px';
          var coverLeft = d_obj(bm.id).offsetLeft - 25;
          var coverTop = d_obj(bm.id).offsetTop - 30;
          d_style(bm.id_cover).left = coverLeft + 'px';
          d_style(bm.id_cover).top = coverTop + 'px';
          
        }  
        
        bm.visible = true;
    },
    
    addItem: function(logo_url, label, url){
        
        var item = {logo_url: logo_url, label: label, url: url};
        var i = bm.items.length;
        bm.items[i] = item;
    
    },
    
    buildHTML: function(){
        
        var _html = '';
        _html += '<div class="main"><div class="cover">';
        _html += '<div class="header" onmousemove="bm.showCover();"><span>'+bm.title+'</span></div>';
        _html += '<div class="content" onmousemove="bm.showCover();">';
        _html += '<table>';
        var row_count = Math.round(bm.items.length / 2);
        var cur_i = 0;
        
        for (var i=0; i<row_count; i++){
          _html += '<tr>';
          for (var j=0; j<2; j++){
            if (bm.items[cur_i]){
                _html += '<td class="icon"><a href="'+bm.items[cur_i].url+'" target="_blank"><img src="'+bm.items[cur_i].logo_url+'" border="0" /></a></td><td class="link"><i><a href="'+bm.items[cur_i].url+'" target="_blank">'+bm.items[cur_i].label+'</a></i></td>';
                cur_i++;
            }
          } //for 
          _html += '</tr>';
        }//for
        
        _html += '</table>';
        _html += '</div>';
        _html += '<div class="footer" onmousemove="bm.showCover();">&nbsp;</div>';
        _html += '</div>';
        _html += '</div>';
        _html += '<div class="bottom_shadow" onmousemove="bm.showCover();">&nbsp;</div>';
        
        bm.obj.innerHTML = _html;
    },
    addEvent: function( obj, type, fn ){  // the add event function
      if (obj.addEventListener) obj.addEventListener( type, fn, false );
      else if (obj.attachEvent) {
        obj["e"+type+fn] = fn;
        obj[type+fn] = function() {
          obj["e"+type+fn]( window.event );
        };
        obj.attachEvent( "on"+type, obj[type+fn] );
      }
    }
}
function getOffsetTop(obj, value){
    var offsetTop = obj.offsetTop + value;
    if (obj.offsetParent) {
        offsetTop = getOffsetTop(obj.offsetParent, offsetTop);
    } 
    return offsetTop;
}
function getOffsetLeft(obj, value){
    var offsetLeft = obj.offsetLeft + value;
    if (obj.offsetParent) {
        offsetLeft = getOffsetLeft(obj.offsetParent, offsetLeft);
    } 
    return offsetLeft;
}