  
    /* USER VARIABLES */

    //TAB VARS
    var currentTabIndex = 0;  //index of currently viewed tab
    var currentTabCount=1; //current number of tabs the user has
    var totalTabCount=1; //total number of tabs that were ever created ever
    var tabContainerId = 'tabs';
    var tabBase = 'tab';
    
    var floatingBoxSuperId = 'floatingBoxSuper'; //parent of all tabs
    var columnParentBoxBase = 'floatingBoxParentContainer'; //base name of each tab container
  
    var columnParentBoxId = columnParentBoxBase+currentTabIndex;	// Id of box that is parent of all your dragable boxes
    
    var numberOfColumns = 3;	// Number of columns (on each tab) for dragable boxes
    
    var src_rightImage = 'images/bullet_arrow_up.gif';
    var src_downImage = 'images/bullet_arrow_down.gif';
    var src_refreshSource = 'images/arrow_refresh.gif';
    //var src_smallRightArrow = 'images/small_arrow.gif';

    var transparencyWhenDragging = true;
    var txt_editLink = '<img border="0" src="images/pencil_add.gif"/>&nbsp;';
    var txt_editLink_stop = '<img border="0" src="images/pencil_delete.gif"/>&nbsp;';
    var autoScrollSpeed = 4;	// Autoscroll speed	- Higher = faster
    var dragObjectBorderWidth = 1;	// Border size of your RSS boxes - used to determine width of dotted rectangle

    var useCookiesToRememberRSSSources = true;

    /* END USER VARIABLES */



    var columnParentBox;
    var dragableBoxesObj;

    var ajaxObjects = new Array();

    var boxIndex = 0;
    var autoScrollActive = false;
    var dragableBoxesArray = new Array();

    var dragDropCounter = -1;
    var dragObject = false;
    var dragObjectNextSibling = false;
    var dragObjectParent = false;
    var destinationObj = false;

    var mouse_x;
    var mouse_y;

    var el_x;
    var el_y;

    var rectangleDiv;
    var okToMove = true;

    var documentHeight = false;
    var documentScrollHeight = false;
    var dragableAreaWidth = false;

    var opera = navigator.userAgent.toLowerCase().indexOf('opera')>=0?true:false;
    var cookieCounter=0;
    var cookieRSSSources = new Array();


    /*
    These cookie functions are downloaded from
    http://www.mach5.com/support/analyzer/manual/html/General/CookiesJavaScript.htm
    */
    function Get_Cookie(name) {
       var start = document.cookie.indexOf(name+"=");
       var len = start+name.length+1;
       if ((!start) && (name != document.cookie.substring(0,name.length))) return null;
       if (start == -1) return null;
       var end = document.cookie.indexOf(";",len);
       if (end == -1) end = document.cookie.length;
       return unescape(document.cookie.substring(len,end));
    } //end Get_Cookie()
    
    // This function has been slightly modified
    function Set_Cookie(name,value,expires,path,domain,secure) {
        expires = expires * 60*60*24*1000;
        var today = new Date();
        var tabCount = totalTabCount;
        var expires_date = new Date( today.getTime() + (expires) );
        var cookieString = name + "=" +escape(value) +
           ( (expires) ? ";expires=" + expires_date.toGMTString() : "") +
           ( (path) ? ";path=" + path : "") +
           ( (domain) ? ";domain=" + domain : "") +
           ( (tabCount) ? ";tabCount=" + tabCount : "") +
           ( (secure) ? ";secure" : "");
        document.cookie = cookieString;
        
    } //end Set_Cookie()

    function autoScroll(direction,yPos)
    {
        if(document.documentElement.scrollHeight>documentScrollHeight && direction>0)return;
        if(opera)return;
        window.scrollBy(0,direction);

        if(direction<0){
            if(document.documentElement.scrollTop>0){
                dragObject.style.top = (el_y - mouse_y + yPos + document.documentElement.scrollTop) + 'px';
            }else{
                autoScrollActive = false;
            }
        }else{
            if(yPos>(documentHeight-50)){
                dragObject.style.top = (el_y - mouse_y + yPos + document.documentElement.scrollTop) + 'px';
            }else{
                autoScrollActive = false;
            }
        }
        if(autoScrollActive)setTimeout('autoScroll('+direction+',' + yPos + ')',5);
    } // end autoScroll()

    function initDragDropBox(e)
    {

        dragDropCounter = 1;
        if(document.all)e = event;

        if (e.target) source = e.target;
            else if (e.srcElement) source = e.srcElement;
            if (source.nodeType == 3) // defeat Safari bug
                source = source.parentNode;

        if(source.tagName.toLowerCase()=='img' || source.tagName.toLowerCase()=='a' || source.tagName.toLowerCase()=='input' || source.tagName.toLowerCase()=='td' || source.tagName.toLowerCase()=='tr' || source.tagName.toLowerCase()=='table')return;


        mouse_x = e.clientX;
        mouse_y = e.clientY;
        var numericId = this.id.replace(/[^0-9]/g,'');
        el_x = getLeftPos(this.parentNode)/1;
        el_y = getTopPos(this.parentNode)/1 - document.documentElement.scrollTop;

        dragObject = this.parentNode;

        documentScrollHeight = document.documentElement.scrollHeight + 100 + dragObject.offsetHeight;


        if(dragObject.nextSibling){
            dragObjectNextSibling = dragObject.nextSibling;
            if(dragObjectNextSibling.tagName!='DIV')dragObjectNextSibling = dragObjectNextSibling.nextSibling;
        }
        dragObjectParent = dragableBoxesArray[numericId]['parentObj'];

        dragDropCounter = 0;
        initDragDropBoxTimer();

        return false;
    } //end initDragDropBox()


    function initDragDropBoxTimer()
    {
        if(dragDropCounter>=0 && dragDropCounter<10){
            dragDropCounter++;
            setTimeout('initDragDropBoxTimer()',10);
            return;
        }
        if(dragDropCounter==10){
            mouseoutBoxHeader(false,dragObject);
        }

    } //end initDragDropBoxTimer()

    function moveDragableElement(e){
        if(document.all)e = event;
        if(dragDropCounter<10)return;

        if(document.body!=dragObject.parentNode){
            dragObject.style.width = (dragObject.offsetWidth - (dragObjectBorderWidth*2)) + 'px';
            dragObject.style.position = 'absolute';
            dragObject.style.textAlign = 'left';
            if(transparencyWhenDragging){
                dragObject.style.filter = 'alpha(opacity=70)';
                dragObject.style.opacity = '0.7';
            }
            dragObject.parentNode.insertBefore(rectangleDiv,dragObject);
            rectangleDiv.style.display='block';
            document.body.appendChild(dragObject);

            rectangleDiv.style.width = dragObject.style.width;
            rectangleDiv.style.height = (dragObject.offsetHeight - (dragObjectBorderWidth*2)) + 'px';

        }

        if(e.clientY<50 || e.clientY>(documentHeight-50)){
            if(e.clientY<50 && !autoScrollActive){
                autoScrollActive = true;
                autoScroll((autoScrollSpeed*-1),e.clientY);
            }

            if(e.clientY>(documentHeight-50) && document.documentElement.scrollHeight<=documentScrollHeight && !autoScrollActive){
                autoScrollActive = true;
                autoScroll(autoScrollSpeed,e.clientY);
            }
        }else{
            autoScrollActive = false;
        }


        var leftPos = e.clientX;
        var topPos = e.clientY + document.documentElement.scrollTop;

        dragObject.style.left = (e.clientX - mouse_x + el_x) + 'px';
        dragObject.style.top = (el_y - mouse_y + e.clientY + document.documentElement.scrollTop) + 'px';



        if(!okToMove)return;
        okToMove = false;

        destinationObj = false;
        rectangleDiv.style.display = 'none';

        var objFound = false;
        var tmpParentArray = new Array();

        if(!objFound){
            for(var no=1;no<dragableBoxesArray.length;no++){
                if(dragableBoxesArray[no]['obj']==dragObject)continue;
                tmpParentArray[dragableBoxesArray[no]['obj'].parentNode.id] = true;
                if(!objFound){
                    var tmpX = getLeftPos(dragableBoxesArray[no]['obj']);
                    var tmpY = getTopPos(dragableBoxesArray[no]['obj']);

                    if(leftPos>tmpX && leftPos<(tmpX + dragableBoxesArray[no]['obj'].offsetWidth) && topPos>(tmpY-20) && topPos<(tmpY + (dragableBoxesArray[no]['obj'].offsetHeight/2))){
                        destinationObj = dragableBoxesArray[no]['obj'];
                        destinationObj.parentNode.insertBefore(rectangleDiv,dragableBoxesArray[no]['obj']);
                        rectangleDiv.style.display = 'block';
                        objFound = true;
                        break;

                    }

                    if(leftPos>tmpX && leftPos<(tmpX + dragableBoxesArray[no]['obj'].offsetWidth) && topPos>=(tmpY + (dragableBoxesArray[no]['obj'].offsetHeight/2)) && topPos<(tmpY + dragableBoxesArray[no]['obj'].offsetHeight)){
                        objFound = true;
                        if(dragableBoxesArray[no]['obj'].nextSibling){

                            destinationObj = dragableBoxesArray[no]['obj'].nextSibling;
                            if(!destinationObj.tagName)destinationObj = destinationObj.nextSibling;
                            if(destinationObj!=rectangleDiv)destinationObj.parentNode.insertBefore(rectangleDiv,destinationObj);
                        }else{
                            destinationObj = dragableBoxesArray[no]['obj'].parentNode;
                            dragableBoxesArray[no]['obj'].parentNode.appendChild(rectangleDiv);
                        }
                        rectangleDiv.style.display = 'block';
                        break;
                    }


                    if(!dragableBoxesArray[no]['obj'].nextSibling && leftPos>tmpX && leftPos<(tmpX + dragableBoxesArray[no]['obj'].offsetWidth)
                    && topPos>topPos>(tmpY + (dragableBoxesArray[no]['obj'].offsetHeight))){
                        destinationObj = dragableBoxesArray[no]['obj'].parentNode;
                        dragableBoxesArray[no]['obj'].parentNode.appendChild(rectangleDiv);
                        rectangleDiv.style.display = 'block';
                        objFound = true;

                    }
                }

            }

        }

        if(!objFound){

            for(var no=1;no<=numberOfColumns;no++){
                if(!objFound){
                    var obj = document.getElementById('dragableBoxesColumn' + (no+(currentTabIndex*numberOfColumns)));

                        var left = getLeftPos(obj)/1;

                        var width = obj.offsetWidth;
                        if(leftPos>left && leftPos<(left+width)){
                            destinationObj = obj;
                            obj.appendChild(rectangleDiv);
                            rectangleDiv.style.display='block';
                            objFound=true;

                        }

                }
            }

        }


        setTimeout('okToMove=true',5);

    } //end moveDragableElement()

    function stop_dragDropElement()
    {

        if(dragDropCounter<10){
            dragDropCounter = -1
            return;
        }
        dragDropCounter = -1;
        if(transparencyWhenDragging){
            dragObject.style.filter = null;
            dragObject.style.opacity = null;
        }
        dragObject.style.position = 'static';
        dragObject.style.width = null;
        var numericId = dragObject.id.replace(/[^0-9]/g,'');
        if(destinationObj && destinationObj.id!=dragObject.id){

            if(destinationObj.id.indexOf('dragableBoxesColumn')>=0){
                destinationObj.appendChild(dragObject);
                dragableBoxesArray[numericId]['parentObj'] = destinationObj;
            }else{
                destinationObj.parentNode.insertBefore(dragObject,destinationObj);
                dragableBoxesArray[numericId]['parentObj'] = destinationObj.parentNode;
            }



        }else{
            if(dragObjectNextSibling){
                dragObjectParent.insertBefore(dragObject,dragObjectNextSibling);
            }else{
                dragObjectParent.appendChild(dragObject);
            }


        }



        autoScrollActive = false;
        rectangleDiv.style.display = 'none';
        dragObject = false;
        dragObjectNextSibling = false;
        destinationObj = false;

        if(useCookiesToRememberRSSSources)setTimeout('saveCookies()',100);

        documentHeight = document.documentElement.clientHeight;
    } //end stop_dragDropElement()

    function saveCookies()
    {
        cookieCounter = 0;
        var tmpUrlArray = new Array();
        for(var no=1;no<=numberOfColumns;no++)
        {
            var parentObj = document.getElementById('dragableBoxesColumn' + no);

            var items = parentObj.getElementsByTagName('DIV');
            if(items.length==0)continue;

            var item = items[0];

            var tmpItemArray = new Array();
            while(item){
                var boxIndex = item.id.replace(/[^0-9]/g,'');
                if(item.id!='rectangleDiv'){
                    tmpItemArray[tmpItemArray.length] = boxIndex;
                }
                item = item.nextSibling;
            }

            var columnIndex = no;
            for(var no2=tmpItemArray.length-1;no2>=0;no2--){
                var boxIndex = tmpItemArray[no2];
                var url = dragableBoxesArray[boxIndex]['rssUrl'];
                var heightOfBox = dragableBoxesArray[boxIndex]['heightOfBox'];
                var maxRssItems = dragableBoxesArray[boxIndex]['maxRssItems'];
                var tabCount = totalTabCount;
                var minutesBeforeReload = dragableBoxesArray[boxIndex]['minutesBeforeReload'];

                if(!tmpUrlArray[url]){
                    tmpUrlArray[url] = true;
                    Set_Cookie('dragable_rss_boxes' + cookieCounter,url + '#;#' + columnIndex + '#;#' + maxRssItems + '#;#' + heightOfBox + '#;#' + minutesBeforeReload +'#;#' + tabCount , 60000);
                    cookieRSSSources[url] = cookieCounter;
                    cookieCounter++;
                }

            }
        }
    } // end saveCookies()


    function getTopPos(inputObj)
    {
      var returnValue = inputObj.offsetTop;
      while((inputObj = inputObj.offsetParent) != null){
        if(inputObj.tagName!='HTML')returnValue += inputObj.offsetTop;
      }
      return returnValue;
    } //end getTopPos()

    function getLeftPos(inputObj)
    {
      var returnValue = inputObj.offsetLeft;
      while((inputObj = inputObj.offsetParent) != null){
        if(inputObj.tagName!='HTML')returnValue += inputObj.offsetLeft;
      }
      return returnValue;
    } //end getLeftPos()


    function createColumns()
    {
        if(!columnParentBoxId){
            alert('No parent box defined for your columns');
            return;
        }
        
        columnParentBox = document.getElementById(columnParentBoxId);
        var columnWidth = Math.floor(100/numberOfColumns);
        var sumWidth = 0;
        for(var no=0;no<numberOfColumns;no++){
            var div = document.createElement('DIV');
            if(no==(numberOfColumns-1))columnWidth = 99 - sumWidth;
            sumWidth = sumWidth + columnWidth;
            div.style.cssText = 'float:left;width:'+columnWidth+'%;padding:0px;margin:0px;';
            div.style.height='100%';
            div.style.styleFloat='left';
            div.style.width = columnWidth + '%';
            div.style.padding = '0px';
            div.style.margin = '0px';

            div.id = 'dragableBoxesColumn' + ((no+1)+(totalTabCount-1)*numberOfColumns);
            columnParentBox.appendChild(div);

            var clearObj = document.createElement('HR');
            clearObj.style.clear = 'both';
            clearObj.style.visibility = 'hidden';
            div.appendChild(clearObj);
        }



        var clearingDiv = document.createElement('DIV');
        columnParentBox.appendChild(clearingDiv);
        clearingDiv.style.clear='both';

    } //end createColumns()

    function mouseoverBoxHeader()
    {
        if(dragDropCounter==10)return;
        var id = this.id.replace(/[^0-9]/g,'');
        document.getElementById('dragableBoxExpand' + id).style.visibility = 'visible';
        document.getElementById('dragableBoxRefreshSource' + id).style.visibility = 'visible';
        document.getElementById('dragableBoxCloseLink' + id).style.visibility = 'visible';
        document.getElementById('dragableBoxEditLink' + id).style.visibility = 'visible';

    } //end mouseoverBoxHeader()
    function mouseoutBoxHeader(e,obj)
    {
        if(!obj)obj=this;

        var id = obj.id.replace(/[^0-9]/g,'');
        document.getElementById('dragableBoxExpand' + id).style.visibility = 'hidden';
        document.getElementById('dragableBoxRefreshSource' + id).style.visibility = 'hidden';
        document.getElementById('dragableBoxCloseLink' + id).style.visibility = 'hidden';
        document.getElementById('dragableBoxEditLink' + id).style.visibility = 'hidden';

    } //end mouseoutBoxHeader()

    function refreshRSS()
    {
        reloadRSSData(this.id.replace(/[^0-9]/g,''));
        setTimeout('dragDropCounter=-5',5);
    } //end refreshRSS()

    function showHideBoxContent() //need to fix arrow images to change when state changes .. Dale
    {
        var numericId = this.id.replace(/[^0-9]/g,'');
        var obj = document.getElementById('dragableBoxContent' + numericId);

        Effect.Toggle(obj);
    } //end showHideBoxContent()

    function mouseover_CloseButton()
    {
        this.className = 'closeButton_over';
        setTimeout('dragDropCounter=-5',5);
    } //end mouseover_CloseButton()

    function highlightCloseButton()
    {
        this.className = 'closeButton_over';
    } //end highlightCloseButton()

    function mouseout_CloseButton()
    {
        this.className = 'closeButton';
    } //end mouseout_CloseButton()

    function tab_mouseover_CloseButton()
    {
        this.className = 'tab_closeButton_over';
        setTimeout('dragDropCounter=-5',5);
    } //end mouseover_CloseButton()

    function tab_highlightCloseButton()
    {
        this.className = 'tab_closeButton_over';
    } //end highlightCloseButton()

    function tab_mouseout_CloseButton()
    {
        this.className = 'tab_closeButton';
    } //end mouseout_CloseButton()
    
    
    function closeDragableBox()
    {
        var numericId = this.id.replace(/[^0-9]/g,'');
        document.getElementById('dragableBox' + numericId).style.display='none';

        Set_Cookie('dragable_rss_boxes' + cookieRSSSources[dragableBoxesArray[numericId]['rssUrl']],'none' ,60000);

        setTimeout('dragDropCounter=-5',5);

    } //end closeDragableBox()

    function editRSSContent()
    {
        var numericId = this.id.replace(/[^0-9]/g,'');
        var obj = document.getElementById('dragableBoxEdit' + numericId);
        if(obj.style.display=='none'){
            obj.style.display='block';
            this.innerHTML = txt_editLink_stop;
            document.getElementById('dragableBoxHeader' + numericId).style.height = '135px';
        }else{
            obj.style.display='none';
            this.innerHTML = txt_editLink;
            document.getElementById('dragableBoxHeader' + numericId).style.height = '20px';
        }
        setTimeout('dragDropCounter=-5',5);
    } //end editRSSContent()


    function showStatusBarMessage(numericId,message)
    {
        document.getElementById('dragableBoxStatusBar' + numericId).innerHTML = message;

    } //end showStatusBarMessage()

    function addBoxHeader(parentObj)
    {
        var div = document.createElement('DIV');
        div.className = 'dragableBoxHeader';
        div.style.cursor = 'move';
        div.id = 'dragableBoxHeader' + boxIndex;
        div.onmouseover = mouseoverBoxHeader;
        div.onmouseout = mouseoutBoxHeader;
        div.onmousedown = initDragDropBox;

        var image = document.createElement('IMG');
        image.id = 'dragableBoxExpand' + boxIndex;
        image.src = src_rightImage;
        image.style.visibility = 'hidden';
        image.style.cursor = 'pointer';
        image.onmousedown = showHideBoxContent;
        div.appendChild(image);

        var textSpan = document.createElement('SPAN');
        textSpan.id = 'dragableBoxHeader_txt' + boxIndex;
        div.appendChild(textSpan);

        parentObj.appendChild(div);

        var closeLink = document.createElement('A');
        closeLink.style.cssText = 'float:right';
        closeLink.style.styleFloat = 'right';
        closeLink.id = 'dragableBoxCloseLink' + boxIndex;
        closeLink.innerHTML = 'x';
        closeLink.className = 'closeButton';
        closeLink.onmouseover = mouseover_CloseButton;
        closeLink.onmouseout = mouseout_CloseButton;
        closeLink.style.cursor = 'pointer';
        closeLink.style.visibility = 'hidden';
        closeLink.onmousedown = closeDragableBox;
        div.appendChild(closeLink);


        var image = document.createElement('IMG');
        image.src = src_refreshSource;
        image.id = 'dragableBoxRefreshSource' + boxIndex;
        image.style.cssText = 'float:right';
        image.style.styleFloat = 'right';
        image.style.visibility = 'hidden';
        image.onclick = refreshRSS;
        image.style.cursor = 'pointer';
        div.appendChild(image);

    } //end addBoxHeader()

    function saveFeed(boxIndex)
    {
        var heightOfBox = 0;
        var intervalObj = dragableBoxesArray[boxIndex]['intervalObj'];
        if(intervalObj)clearInterval(intervalObj);

        if(heightOfBox && heightOfBox>40){
            var contentObj = document.getElementById('dragableBoxContent' + boxIndex);
            contentObj.style.height = heightOfBox + 'px';
            contentObj.setAttribute('heightOfBox',heightOfBox);
            contentObj.heightOfBox = heightOfBox;
            if(document.all)contentObj.style.overflowY = 'auto';else contentObj.style.overflow='-moz-scrollbars-vertical;';
            if(opera)contentObj.style.overflow='auto';

        }

        dragableBoxesArray[boxIndex]['rssUrl'] = document.getElementById('rssUrl[' + boxIndex + ']').value;
        dragableBoxesArray[boxIndex]['heightOfBox'] = heightOfBox;
        dragableBoxesArray[boxIndex]['maxRssItems'] = document.getElementById('maxRssItems[' + boxIndex + ']').value;
        dragableBoxesArray[boxIndex]['heightOfBox'] = 0;
        dragableBoxesArray[boxIndex]['minutesBeforeReload'] = document.getElementById('minutesBeforeReload[' + boxIndex + ']').value;

        if(dragableBoxesArray[boxIndex]['minutesBeforeReload'] && dragableBoxesArray[boxIndex]['minutesBeforeReload']>5){
            var tmpInterval = setInterval("reloadRSSData(" + boxIndex + ")",(dragableBoxesArray[boxIndex]['minutesBeforeReload']*1000*60));
            dragableBoxesArray[boxIndex]['intervalObj'] = tmpInterval;
        }
        reloadRSSData(boxIndex);

        if(useCookiesToRememberRSSSources)setTimeout('saveCookies()',100);

    } //end saveFeed()

    function addRSSEditContent(parentObj)
    {

        var editLink = document.createElement('A');
        editLink.href = '#';
        editLink.onclick = cancelEvent;
        editLink.style.cssText = 'float:right';
        editLink.style.styleFloat = 'right';
        editLink.id = 'dragableBoxEditLink' + boxIndex;
        editLink.innerHTML = txt_editLink;
        editLink.className = 'dragableBoxEditLink';
        editLink.style.cursor = 'pointer';
        editLink.style.visibility = 'hidden';
        editLink.onmousedown = editRSSContent;
        parentObj.appendChild(editLink);

        var editBox = document.createElement('DIV');
        editBox.style.clear='both';
        editBox.id = 'dragableBoxEdit' + boxIndex;
        editBox.style.display='none';

        var content = '<form><table cellpadding="1" cellspacing="1"><tr><td>Source:<\/td><td><input type="text" id="rssUrl[' + boxIndex + ']" value="' + dragableBoxesArray[boxIndex]['rssUrl'] + '" size="25" maxlength="255"><\/td><\/tr>'
        + '<tr><td>Items:<\/td><td width="30"><select id="maxRssItems[' + boxIndex + ']"><option name="5" value="5">5</option><option name="10" value="10">10</option><option name="15" value="15">15</option><\/td><\/tr><tr><td>Reload every:<\/td><td width="30"><input type="text" id="minutesBeforeReload[' + boxIndex + ']" onblur="this.value = this.value.replace(/[^0-9]/g,\'\');if(!this.value || this.value/1<5)this.value=' + dragableBoxesArray[boxIndex]['minutesBeforeReload'] + '" value="' + dragableBoxesArray[boxIndex]['minutesBeforeReload'] + '" size="2" maxlength="3">&nbsp;minute<\/td><\/tr>'
        +'<tr><td><input type="button" onclick="saveFeed(' + boxIndex + ')" value="Save"><\/td><\/tr><\/table><\/form>';
        editBox.innerHTML = content;

        parentObj.appendChild(editBox);

    } //end addRSSEditContent()


    function addBoxContentContainer(parentObj,heightOfBox)
    {
        var div = document.createElement('DIV');
        div.className = 'dragableBoxContent';
        if(opera)div.style.clear='none';
        div.id = 'dragableBoxContent' + boxIndex;
        parentObj.appendChild(div);
        if(heightOfBox && heightOfBox/1>40){
            div.style.height = heightOfBox + 'px';
            div.setAttribute('heightOfBox',heightOfBox);
            div.heightOfBox = heightOfBox;
            if(document.all)div.style.overflowY = 'auto';else div.style.overflow='-moz-scrollbars-vertical;';
            if(opera)div.style.overflow='auto';
        }
    } //end addBoxContentContainer()

    function addBoxStatusBar(parentObj)
    {
        var div = document.createElement('DIV');
        div.className = 'dragableBoxStatusBar';
        div.id = 'dragableBoxStatusBar' + boxIndex;
        parentObj.appendChild(div);


    } //end addBoxStatusBar()

    function createABox(columnIndex,heightOfBox)
    {
        boxIndex++;
        
        columnIndex = parseInt(columnIndex)+(currentTabIndex)*numberOfColumns;
        
        var div = document.createElement('DIV');
        div.className = 'dragableBox';
        div.id = 'dragableBox' + boxIndex;
        addBoxHeader(div);
        addBoxContentContainer(div,heightOfBox);
        addBoxStatusBar(div);

        var obj = document.getElementById('dragableBoxesColumn' + columnIndex);
        var subs = obj.getElementsByTagName('DIV');
        if(subs.length>0){
            obj.insertBefore(div,subs[0]);
        }else{
            obj.appendChild(div);
        }

        dragableBoxesArray[boxIndex] = new Array();
        dragableBoxesArray[boxIndex]['obj'] = div;
        dragableBoxesArray[boxIndex]['parentObj'] = div.parentNode;





        return boxIndex;

    } //end createABox()

    function showRSSData(ajaxIndex,boxIndex)
    {
        var rssContent = ajaxObjects[ajaxIndex].response;
        tokens = rssContent.split(/\n\n/g);


        var headerTokens = tokens[0].split(/\n/g);
        if(headerTokens[0]=='0'){
            headerTokens[1] = '';
            headerTokens[0] = 'Invalid source';
        }
        
        
        var dBoxHdr_maxlen = 32;
        var dBoxHdr_minlen = 5;
        if(headerTokens[0].length > dBoxHdr_maxlen) 
        {
            if(headerTokens[0].lastIndexOf("-")>0 && headerTokens[0].lastIndexOf("-")<dBoxHdr_maxlen && headerTokens[0].lastIndexOf("-")>=dBoxHdr_minlen)
            {                
        	    headerTokens[0] = headerTokens[0].substring(0,headerTokens[0].lastIndexOf("-"));
            }
            else
            if(headerTokens[0].lastIndexOf(" ")>0 && headerTokens[0].lastIndexOf(" ")<dBoxHdr_maxlen && headerTokens[0].lastIndexOf(" ")>=dBoxHdr_minlen)
            {
                headerTokens[0] = headerTokens[0].substring(0,headerTokens[0].lastIndexOf(" "));
            }
            else
            if(headerTokens[0].lastIndexOf(".")>0 && headerTokens[0].lastIndexOf(".")<dBoxHdr_maxlen && headerTokens[0].lastIndexOf(".")>=dBoxHdr_minlen)
            {
                headerTokens[0] = headerTokens[0].substring(0,headerTokens[0].lastIndexOf("."));
            }
            else
            {
                headerTokens[0] = headerTokens[0].substring(0,dBoxHdr_maxlen);
            }
        }
        
 
        document.getElementById('dragableBoxHeader_txt' + boxIndex).innerHTML = '<span>' + headerTokens[0] + '&nbsp;<\/span><span class="rssNumberOfItems">(' + headerTokens[1] + ')<\/span>';	// title

        var string = '<table cellpadding="1" cellspacing="0">';
        for(var no=1;no<tokens.length;no++){	// Looping through RSS items
            var itemTokens = tokens[no].split(/##/g);
            
            if(itemTokens[2] == " ") {
                     string = string + '<tr><td><p class=\"boxItemHeader\"><a class=\"boxItemHeader\" href="' + itemTokens[3] +'">' + itemTokens[0] + '<img src="images/aoutside.gif" \><\/a><\/p><\/td><\/tr>';
            }
            else {
            string = string + '<tr><td><p class=\"boxItemHeader\"><a class=\"boxItemHeader\" href="javascript: Effect.Toggle(\''+headerTokens[0]+no+'\')">' + itemTokens[0] + '<\/a><br/><a href="#" onclick="javascript:showAlert(\'alert\')"> <img src=\"js/report_add.png\"/><\/a> <img src=\"js/email.png\"/> <img src=\"js/flag.png\"/><\/p><\/td><\/tr><tr><td><div class="desc" id="'+headerTokens[0]+no+'" style="display: none;">' + itemTokens[2] + ' <a href="'+itemTokens[3]+'" class="linkthumb">link>></a><\/div><\/td><\/tr>'; /// this is where I need to toggle description -- Dale
        }
        }
        string = string + '<\/table>';
        document.getElementById('dragableBoxContent' + boxIndex).innerHTML = string;
        showStatusBarMessage(boxIndex,'');
        ajaxObjects[ajaxIndex] = false;
    } //end showRSSData()

    function reloadRSSData(numericId)
    {
        var ajaxIndex = ajaxObjects.length;
        ajaxObjects[ajaxIndex] = new sack();
        showStatusBarMessage(numericId,'Loading data...');
        ajaxObjects[ajaxIndex].requestFile = 'readRSS.php?rssURL=' + escape(dragableBoxesArray[numericId]['rssUrl']) + '&maxRssItems=' + dragableBoxesArray[numericId]['maxRssItems'];	// Specifying which file to get
        ajaxObjects[ajaxIndex].onCompletion = function(){ showRSSData(ajaxIndex,numericId); };	// Specify function that will be executed after file has been found
        ajaxObjects[ajaxIndex].runAJAX();		// Execute AJAX function

    } //end reloadRSSData()
	
	
    function createARSSBox(url,columnIndex,heightOfBox,maxRssItems,minutesBeforeReload)
    {
    		

        if(!heightOfBox)heightOfBox = '0';
        if(!minutesBeforeReload)minutesBeforeReload = '0';


        var tmpIndex = createABox(columnIndex,heightOfBox);
        var tabCount = totalTabCount;

        if(useCookiesToRememberRSSSources)
        {
            if(!cookieRSSSources[url]){
                cookieRSSSources[url] = cookieCounter;
                Set_Cookie('dragable_rss_boxes' + cookieCounter,url + '#;#' + columnIndex + '#;#' + maxRssItems + '#;#' + heightOfBox + '#;#' + minutesBeforeReload + '#;#' + tabCount ,60000);
                cookieCounter++;
            }
        }

        dragableBoxesArray[tmpIndex]['rssUrl'] = url;
        dragableBoxesArray[tmpIndex]['maxRssItems'] = maxRssItems?maxRssItems:100;
        dragableBoxesArray[tmpIndex]['minutesBeforeReload'] = minutesBeforeReload;
        dragableBoxesArray[tmpIndex]['heightOfBox'] = heightOfBox;

        var tmpInterval = false;
        if(minutesBeforeReload && minutesBeforeReload>0){
            var tmpInterval = setInterval("reloadRSSData(" + tmpIndex + ")",(minutesBeforeReload*1000*60));
        }

        dragableBoxesArray[tmpIndex]['intervalObj'] = tmpInterval;

        addRSSEditContent(document.getElementById('dragableBoxHeader' + tmpIndex))

        if(!document.getElementById('dragableBoxContent' + tmpIndex).innerHTML)document.getElementById('dragableBoxContent' + tmpIndex).innerHTML = '<img src="images/indicator.white.gif" border="0"><br/>loading RSS data';
        
        var ajaxIndex = ajaxObjects.length;
        ajaxObjects[ajaxIndex] = new sack();
        if(!maxRssItems)maxRssItems = 100;
        ajaxObjects[ajaxIndex].requestFile = 'readRSS.php?rssURL=' + escape(url) + '&maxRssItems=' + maxRssItems;	// Specifying which file to get
        ajaxObjects[ajaxIndex].onCompletion = function(){ showRSSData(ajaxIndex,tmpIndex); };	// Specify function that will be executed after file has been found
        ajaxObjects[ajaxIndex].runAJAX();		// Execute AJAX function
    } //end createARSSBox()

    function createHelpObjects()
    {
        /* Creating rectangle div */
        rectangleDiv = document.createElement('DIV');
        rectangleDiv.id='rectangleDiv';
        rectangleDiv.style.display='none';
        document.body.appendChild(rectangleDiv);


    } //createHelpObjects()

    function cancelSelectionEvent(e)
    {
        if(document.all)e = event;

        if (e.target) source = e.target;
            else if (e.srcElement) source = e.srcElement;
            if (source.nodeType == 3) // defeat Safari bug
                source = source.parentNode;
        if(source.tagName.toLowerCase()=='input')return true;

        if(dragDropCounter>=0)return false; else return true;

    } //end cancelSelectionEvent()

    function cancelEvent()
    {
        return false;
    } //end cancelEvent()

    function initEvents()
    {
        document.body.onmousemove = moveDragableElement;
        document.body.onmouseup = stop_dragDropElement;
        document.body.onselectstart = cancelSelectionEvent;

        document.body.ondragstart = cancelEvent;

        documentHeight = document.documentElement.clientHeight;

    } //end initEvents()

    function initDragableBoxesScript()
    {
    	  
        //createColumns();	// Always the first line of this function
        //createHelpObjects();	// Always the second line of this function
        //initEvents();	// Always the third line of this function
        initNewTab();
        makeTab(); //here to create the very first tab the same way we create additional tabs
        //alert(tabBase+(totalTabCount-1));
        switchCurrentTab(tabBase+(totalTabCount-1));
        if(useCookiesToRememberRSSSources)createRSSBoxesFromCookie();
        createDefaultBoxes();
    } //end initDragableBoxesScript()

    function initNewTab()
    {    
        createColumns();	// Always the first line of this function
        createHelpObjects();	// Always the second line of this function
        initEvents();	// Always the third line of this function 
         
    }

    function createFeed(formObj)
    {
        var url = formObj.rssUrl.value;
        var items = formObj.items.value;
        var height = 0;
        var reloadInterval = formObj.reloadInterval.value;
        if(isNaN(height) || height/1<40)height = false;
        if(isNaN(reloadInterval) || reloadInterval/1<5)reloadInterval = false;
        createARSSBox(url,1,height,items,reloadInterval);
    } //end createFeed()

    function createRSSBoxesFromCookie()
    {
        var tmpArray = new Array();
        var cookieValue = Get_Cookie('dragable_rss_boxes0');
        while(cookieValue && cookieValue!=''){
            var items = cookieValue.split('#;#');
            if(items.length>1 && !tmpArray[items[0]]){
                tmpArray[items[0]] = true;
                createARSSBox(items[0],items[1],items[3],items[2],items[4]);
                cookieRSSSources[items[0]]==cookieCounter;
            }else{
                cookieCounter++;
            }
            var cookieValue = Get_Cookie('dragable_rss_boxes' + cookieCounter);
        }


    } //end createRSSBoxesFromCookie()

    /* You customize this function */
    function createDefaultBoxes()
    {
        if(cookieCounter==0){
            createARSSBox('http://feeds.feedburner.com/techcrunch',2,false,5,10);
            createARSSBox('http://www.digg.com/rss/index.xml',3,false,5,10);
            createARSSBox('http://feeds.feedburner.com/ajaxian',1,false,5,10);
        }

    } //end createDefaultBoxes()
    
    function createNewTab()
    {
        
        currentTabCount++;
        totalTabCount++;
        
        //make the visual element - tab
        makeTab();        
        //make the tab container
        createNewTabbedContainer();
        //switch the view to the newly created tab
        switchCurrentTab(tabBase+(totalTabCount-1));
        
    }
    //makes the visual element tab
    //OK must restructure tab
    //One big tab element, with the tab display properties
    //Two sub elements tab_text and tab_close
    function makeTab()
    {
    
        var tabContainer = document.getElementById(tabContainerId);
        var newTab = document.createElement('SPAN');
        newTab.id = tabBase+(totalTabCount-1);      
        tabContainer.appendChild(newTab);
        //newTab.innerHTML = "<span id="+tabBase+(tabCount-1)+" onclick='switchCurrentTab(this.id)'>Tab "+(currentTabCount-1)+"<span onclick='closeTab(\""+tabBase+(tabCount-1)+"\")'> x</span></span>";
        
        newTab.innerHTML = "<span id='"+tabBase+"_text"+(totalTabCount-1)+"' onclick='switchCurrentTab(\""+tabBase+(totalTabCount-1)+"\")'>Tab "+(totalTabCount-1)+"</span>";
        //newTab.innerHTML = "<span id='"+tabBase+"_text"+(totalTabCount-1)+"'>Tab "+(totalTabCount-1)+"</span>";
        
        makeEditable(tabBase+"_text"+(totalTabCount-1));
               
        var closeLink = document.createElement('A');
        //closeLink.style.cssText = 'float:right';
        closeLink.style.styleFloat = 'right';
        closeLink.id = totalTabCount-1;
        closeLink.innerHTML = 'x';
        closeLink.className = 'tab_closeButton';
        closeLink.onmouseover = tab_mouseover_CloseButton;
        closeLink.onmouseout = tab_mouseout_CloseButton;
        closeLink.style.cursor = 'pointer';
        //closeLink.style.visibility = 'hidden';
        closeLink.onmousedown = closeTab;
        //document.getElementById(tabBase+(totalTabCount-1)).appendChild(closeLink);
        newTab.appendChild(closeLink);
    }
    function createNewTabbedContainer()
    {
        var superContainer = document.getElementById(floatingBoxSuperId);
        var newContainer = document.createElement('DIV');
        newContainer.id = columnParentBoxBase+(totalTabCount-1)+'';
        
        newContainer.style.display = ''; //figure out if this actually helps!
        
        superContainer.appendChild(newContainer);
        //must switch the current container in the JS to the newly created container for purposes of initNewTab
        var temp_columnParentBoxId = columnParentBoxId;
        columnParentBoxId = newContainer.id;
        initNewTab();    
        columnParentBoxId = temp_columnParentBoxId;
    }
    
    function switchCurrentTab(newTabIndex)
    {
        
        newTabIndex = parseInt(newTabIndex.substring(3,newTabIndex.length));
        
        if(document.getElementById(columnParentBoxId))
        {
            document.getElementById(columnParentBoxId).style.display = 'none';//insert CSS properties to change display of tab
        }
        
        //alert(tabBase+currentTabIndex+'');
        if(document.getElementById(tabBase+currentTabIndex+''))
        {
            document.getElementById(tabBase+currentTabIndex+'').className = "tab_other";    
        }        
        currentTabIndex = newTabIndex;
        columnParentBoxId = columnParentBoxBase+currentTabIndex+'';
        document.getElementById(columnParentBoxId).style.display = '';
        
        document.getElementById(tabBase+currentTabIndex).className = "tab_current";
    
    }
    
    function closeTab()
    {
        var closingTab = tabBase + this.id + '';
        var closingContainer = columnParentBoxBase + this.id+'';
        //alert(closingTab);
        document.getElementById(closingTab).style.display='none';
        removeElement(closingTab);
        removeElement(closingContainer);
        currentTabCount--;    
    }
    
    function removeElement(id)   
    {
       var Node = document.getElementById(id);
       Node.parentNode.removeChild(Node);   
    }


    window.onload = initDragableBoxesScript;


    
    
