/*  : spacecake : synoptx.net : Javascript Function Library  :
    
        c |< 2006 -2009 :           v 2.55: 12.09


!!  ACHTUNG uses compressed version!!

!!  manual edits will not be used until you load & save them in lab!!

___ project specials .: see spacecake_PROJECTNAME.js _______*/

/* :: INIT : */

function startup( ) {
    // dojo init require, trigger mask
    
     dojo.addOnLoad(function(){
        // after page load, load more stuff (mask is up)
   
        // for lab popup!?
        // FIXME if coder
        //if( $mode == 'coder' ) {
        // toogledisplay / fade /..
        dojo.require("dojo.fx");
        dojo.require("dojo.fx.easing");        
        //}
        dojo.require("dojo.back");
        // image click block        -- move to project.js does not work :(
       // dojo.require("dijit.Menu");

        dojo.require("dijit._base.sniff");   // isIE ?
        dojo.require("dojo.parser");

        // broken if( typeof startupProject == 'function') {
            startupProject();

        //}
        var state = { back: function() { return;        },
                      forward: function() { return;     }   };                
        dojo.back.setInitialState(state);


        dojo.addOnLoad( function() {
            // notice the second onLoad here
           // dojo.parser.parse();
            startupAnim();
        });
    });
}

function addAnimMask() {
    // ad mask, only if JS is on :)

    if( dojo.isIE != true ) {
        // broken in IE 8
        // what? looks ok (02.10)
        document.getElementById('bodyTag').innerHTML += '<div id="maskStartup"></div>';
    }
}

function loadElement( url, target_div, change_url, nav_div, reload, noanim ) {
    // no anim, no widget killing
    // hm, unused??
    
    loadPage( url, target_div, change_url, nav_div, reload, noanim );
}

function loadPageUnSlide( url, target_div, change_url, nav_div, reload , stopslide) {
    // to kill the slideshow
    // DEPRECATED included in loadPage w/ parm: , stopslide

    loadPage( url, target_div, change_url, nav_div, reload, true );
} 


function loadPage( url, target_div, change_url, nav_div, reload, noanim , stopslide) {

    
    switchstatus('loading');
    var node = dojo.byId(target_div);
    top.node = node;
    var nodestyle = new Array();
    nodestyle['top'] =  dojo.style(node,"top");
    nodestyle['left'] =  dojo.style(node,"left");   
    nodestyle['height'] =  dojo.style(node,"height");
    nodestyle['width'] =  dojo.style(node,"width");
    nodestyle['overflow'] =  dojo.style(node,"overflow");
    top.nodestyle = nodestyle;


    // slideshow off?
    if( typeof stopslide == "undefined") {
        // default for nav; turn off
        stopslide = true;
    }
    if( stopslide == true  // should default to false
        && typeof top.sliding_1 != 'undefined'
        && top.sliding_1 == true
        && typeof PlayTimer != 'undefined' ) {  
         
        window.clearTimeout(PlayTimer);
        top.sliding_1 = false;
    }

    if( typeof noanim == "undefined") {
        noanim = false;
        
    }
// FIXmE  && also broken here??
 //   if( noanim != true && noanim != 'toggle' && noanim != 'fade' && noanim != 'fadein' ) {
     if(noanim == false) {
        // false
        animOut( ); 

    } else if(noanim == 'toggle') {
        dojo.style(node,"display","none");  
    } else if(noanim == 'fade') {
        dojo.anim(target_div, { opacity: 0 }, 200);
    }else if(noanim == 'fadein') {
        // nix 
        dojo.style(node,"opacity","0");  
    }

    //: destroy widgets, if exist
/* TESTME    if( typeof dijit.registry != "undefined" ) {
        dijit.registry.forEach(function(widget){
            if( widget.declaredClass.indexOf('Legend') != -1
                || widget.declaredClass.indexOf('Editor') != -1  
                || widget.declaredClass.indexOf('Textarea') != -1  
                
                 ) { 
                if( djConfig.isDebug ) {
                    console.log(":: destroyed widget: " + widget.id);       
                }                           
                widget.destroy(); 
            }            
        });
    }
*/          
    if(url.substr(0,6) != '/bare/'  ) {
        url = '/bare' + url;
    }

    dojo.xhrGet( {
        // master RPC
        url: url,
        handleAs: "text",
        preventCache:$djPreventCache,
        headers: {"X-Requested-With": "XMLHttpRequest"  },// for isAjax
        timeout: 60000,                                 // in milliseconds
        load: function(response, ioArgs) {
            // on a successful response.
            
   
if( typeof change_url != "undefined" && change_url != "undefined" && change_url != null ) {
    //change_url = url;       

change_url = change_url.replace("?l=", "_");

            if( reload != true 
                //&& !dojo.isIE 
                ) {
                var historyTracker = new HistoryTracker(url, target_div, change_url, nav_div);
                dojo.back.addToHistory(historyTracker);
            }
}
  
            node.innerHTML = response;
            //: eval script, only inline, but IE ok
            dojo.query("script", node).forEach(function(n){ eval(n.innerHTML); });          
            dojo.parser.parse(node);    // create widgets
             

            if(noanim == 'toggle') {
                dojo.style(node,"display","block"); 
            } else if( noanim == 'fade' || noanim == 'fadein' ) {
                dojo.anim(target_div, { opacity: 100 }, 2000);    
            } else if(noanim != true) {
                animIn();

            }             
           //if(noanim != true && noanim != 'toggle' && noanim != 'fade') {
            /*
            if(noanim == false) {// && typeof noanim != 'function'
                animIn();
            } else if(noanim == 'toggle') {
                dojo.style(node,"display","block"); 
            } else if(noanim == 'fade') {
                dojo.anim(target_div, { opacity: 100 }, 1000);
                
            } 
            */
            /* else {
                // custom onComplete func:

                if( typeof noanim == 'function') {
                
                    noanim();
                }
            }*/
            switchstatus('complete');
            return response;
        },
        error: function(response, ioArgs) {
            // in an error case.
            console.error("HTTP status code: ", ioArgs.xhr.status);
            if( djConfig.isDebug ) {
                node.innerHTML = response;
            }
            animIn();
            switchstatus('complete');
            return response;
          }
    });      
    return false;
}

function loadPages( url1, target_div1, url2, target_div2, change_url, nav_div, reload ) {
    
    switchstatus('loading');    
    var node1 = dojo.byId(target_div1);    
    top.node = node1;
    var nodestyle = new Array();
    nodestyle['top'] =  dojo.style(node1,"top");
    nodestyle['height'] =  dojo.style(node1,"height");
    nodestyle['overflow'] =  dojo.style(node1,"overflow");
    top.nodestyle = nodestyle;
    animOut( );    
    if(url1.substr(0,6) != '/bare/' ) {
        url1 = '/bare' + url1;
    }
    // kill all widgets FIXME why?
    if( typeof dijit.registry != "undefined" ) {
        dijit.registry.forEach(function(widget){ widget.destroy(); });
        if( djConfig.isDebug ) {
            console.log(":: destroyed widgets");
        }
    }

    dojo.xhrGet( {
        // master RPC
        url: url1,
        handleAs: "text",
        preventCache:$djPreventCache,
        headers: {"X-Requested-With": "XMLHttpRequest"  }, // for isAjax
        timeout: 60000,                                     // in milliseconds
        load: function(response, ioArgs) {
            // on a successful response.
            /*if(reload != true) {
                var historyTracker = new HistoryTracker(url1, target_div1, change_url, nav_div);
                dojo.back.addToHistory(historyTracker);
            } */         
            node1.innerHTML = response;
            //: eval script, only inline, but IE ok
            dojo.query("script", node1).forEach(function(n){ eval(n.innerHTML); });         
            dojo.parser.parse(node1);    // create widgets
            //animIn();
            
            // onLoad: the 2. content                                       
            if(url2.substr(0,6) != '/bare/' ) {
                url2 = '/bare' + url2;
            }            
            var node2 = dojo.byId(target_div2);
            dojo.xhrGet( {
                // master RPC
                url: url2,
                handleAs: "text",
                preventCache:$djPreventCache,
                    timeout: 60000,// ms
                load: function(response, ioArgs) {
                    // on a successful response.
                    if(reload != true) {
                        var historyTracker = new HistoryTracker(url2, target_div2, change_url, nav_div);
                        dojo.back.addToHistory(historyTracker);
                    }          
                    node2.innerHTML = response;
                    dojo.query("script", node2).forEach(function(n){ eval(n.innerHTML); });
                    dojo.parser.parse(node2);    // create widgets
                    animIn();
                    switchstatus('complete');
                    return response;
                },
                error: function(response, ioArgs) {
                    // in an error case.
                    console.error("HTTP status code: ", ioArgs.xhr.status);
                    node1.innerHTML = response;
                    animIn();
                    switchstatus('complete');
                    return response;
                  }
            });                     
            return response;
        },
        error: function(response, ioArgs) {
            // in an error case.
            console.error("HTTP status code: ", ioArgs.xhr.status);
            node1.innerHTML = response;
            animIn();       
            switchstatus('complete');
            return response;
          }
    });
    return false;
}

function saveForm( url, target_div, form_node, lastclick_url, lastclick_div ) {

 /*  , inlineedit
         if( typeof inlineedit == "undefined" ) {
        inlineedit = false;
    }
   */
    //if( inlineedit == false ) {
    if( target_div != 'editor') {
        dojo.style(target_div,"display","none");    
    } else {
       // dojo.style('editElement',"display","none");    
    }
        
    switchstatus('saving');
    
    
    var node = dojo.byId(target_div);
    top.node = node;
    var nodestyle = new Array();
    nodestyle['top'] =  dojo.style(node,"top");
    nodestyle['height'] =  dojo.style(node,"height");
    nodestyle['overflow'] =  dojo.style(node,"overflow");
    top.nodestyle = nodestyle;
    if(url.substr(0,6) != '/bare/' ) {
        url = '/bare' + url;
    }
    
    var form = dojo.byId(form_node);

    if( target_div == 'editor') {
        // not before form read    
       // dojo.byId('editor').innerHTML = 'Loading..';
    } 
    dojo.query(".fckedit").forEach(function(editnode, index, arr){
        // found FCKeditors (tmpl edit)
        // get instance by ID
        var oEditor = FCKeditorAPI.GetInstance(editnode.id);
        // put NEW value into <input> for save :)
        editnode.value = oEditor.GetData();
    }); 

    if( typeof dijit.registry != "undefined") {
        //: destroy widgets against double IDs: editors must be killed!
        
        dijit.registry.forEach(function(widget){
            if( widget.declaredClass.indexOf('Editor') != -1  ) {
                // add dojo editor value to post
                if( djConfig.isDebug ) {
                    console.log("::  editor appended ::" + widget.declaredClass);
                }

                // SHould fix save,, but doesnot in v140widget.textarea.value = widget.getValue();
                form.appendChild( widget.textarea );
            }

           /*  if( widget.declaredClass.indexOf('Tree') == -1 
                && widget.declaredClass.indexOf('Acco') == -1

                 && widget.declaredClass.indexOf('TabContainer') == -1
                 && widget.declaredClass.indexOf('ContentPane') == -1
                ) {
                // practically never? was only for editor??
                
                // broken if( djConfig.isDebug ) {
                    console.log("::  destroy widgets ::" + widget.declaredClass);
                //}
                     
                widget.destroy();
             }
             */
        });
    }

    // get tmpl editarea value
    if( typeof editAreaLoader != "undefined" 
        && dojo.byId('TemplateValue') != null ) {        
        editarea = dojo.byId('TemplateValue');
        editarea.value = editAreaLoader.getValue('TemplateValue');
        //?editarea.destroy();
    }
    // get code editarea value
    if( typeof editAreaLoader != "undefined" 
        && dojo.byId('codeEditor') != null ) {       
        editarea = dojo.byId('codeEditor');
        editarea.value = editAreaLoader.getValue('codeEditor');
    }
    var node = dojo.byId(target_div);

    dojo.xhrPost( {
        url: url,
        handleAs: "text",
        form: form,
        preventCache:$djPreventCache,
        headers: {"X-Requested-With": "XMLHttpRequest"  },  // for isAjax
        timeout: 120000,                                    // Time in milliseconds
        load: function(response, ioArgs) {
            // on a successful response.
            /* if(reload != true) {
                var historyTracker = new HistoryTracker(url, target_div, change_url, nav_div);
                dojo.undo.addToHistory(historyTracker);
            }   */
           



            if( target_div != 'editor') {
                //animIn();
                //console.log(node);
                dojo.style(node,"display","block");
            } else {
               // dojo.style('editElement',"display","block");

               // we doNOT know yet if saved OK 
               // eval borken in IE!!! closeEditor();
            }

            

            if( response == "OK" &&  target_div == 'editor') {
                // editor mode & saved ok
                
                 // show message:
                 dojo.byId('editor').innerHTML = '<div id="editorAction">OK - Saved</div>';
             
                 // re-load lastclicked
                 loadPage( '/'+lastclick_url, lastclick_div, null, null, null, true);
             
                 if(!dojo.isIE ) {
                     // broken in IE = no nice OK message
                     setTimeout('node.innerHTML = response;', 1300);
                 } else {
                      node.innerHTML = response;
                 }
                 setTimeout("closeEditor();",1000);
            } else {
                // Not 'editor' mode:
                
                node.innerHTML = response;
                
                // eval not working in IE , but no error
                // required e.g. in lab: loadEditarea,..
                // FIXME: needed always? now not in 'editor' mode
                dojo.query("script", node).forEach(function(n){ dojo.eval(n.innerHTML); });
                dojo.parser.parse(node);                
            }
            
             
            setTimeout("switchstatus('complete');",1000);
                                                         
            return response;
        },
        error: function(response, ioArgs) {
            // in an error case.            
            console.log(response);
            node.innerHTML = response;
            console.error("HTTP status code: ", ioArgs.xhr.status);
            
            //if( inlineedit == false ) {
            if( target_div != 'editor') {
                //animIn();
                dojo.style(node,"display","block"); 
            }
            switchstatus('complete');
            return response;
          }
    });
    return false;
}


function loadEditor( url, target_div, change_url, nav_div, reload , stopslide) {

    dojo.style( target_div, 'opacity', '0');
    dojo.style( target_div, 'display', 'block');

    dojo.anim( target_div, { opacity: 0.98 }, 1000);    

    setTimeout("dojo.style( 'editElement', 'display', 'block');",2000);
    
    setTimeout("window.scrollTo(0,0);",1000);
    
    loadPage( url, target_div, '/', 'nav', false, true,true );
    return false;
} 

function closeEditor(  ) {

    dojo.anim( 'editor', { opacity: 0 }, 1500);    
    
    setTimeout("window.scrollTo(0,0);",200);
        
    setTimeout("dojo.style( 'editor', 'display', 'none');",1550);
    
    //dojo.style( 'editElement', 'display', 'none');

    dojo.byId('editor').innerHTML = '';
    return false;   
}

function blockImageSave( ) {
    // dojo right click menu
    // a transparent image overlay would be more efficient!  ..btw
    
    var pMenu;
    dojo.addOnLoad(function(){
        pMenu = new dijit.Menu({
           targetNodeIds:dojo.query("img")
        });
        pMenu.addChild(new dijit.MenuItem({
            label:"No Copy",
            iconClass:"dijitEditorIcon",
            onClick: function(){alert('Arsch Klick');}
        }));
        pMenu.startup();
    });
}

function keyDown(e) {
    /* midnight commander style:
        F2  save
        F4  new
                F7  new             scheiss carret browsing
        F8  delete              */
        
    if( !dojo.isIE ) {
        var keycode=e.which; 
        var ieKey=0;
    }
    if( dojo.isIE ) {
        var keycode=event.keyCode; 
        var nKey=0; 
    }
    keyChar=String.fromCharCode(keycode);
    
    if( keycode == dojo.keys.F2 ) {
        // save
        if( top.saveFunc != 'undefined') {
            eval(top.saveFunc);
        }
    }
    if( keycode == dojo.keys.F4 ) {
        // new
        if( top.newFunc != 'undefined') {
            eval(top.newFunc);
        }
    }
    if( keycode == dojo.keys.F8 ) {
        // scheiss carret browsing
        // delete
        if( top.deleteFunc != 'undefined') {
            eval(top.deleteFunc);
        }
    }
/*  if (keycode == dojo.keys.CTRL) {
        alert(keycode);
    }   */
}
function enterKey( e ) {
    var keycode;
    if( window.event ) {
        keycode = window.event.keyCode;
    } else if( e ) {
        keycode = e.which;
    } else {
        return false;
    }
    if( keycode == 13 ) {
        return true;
    } else {
       return false;
    }
}

var HistoryTracker = function(url, target, change_url, nav_div){
    this._url       = url;
    this._target    = target;
    if(change_url == null) {
        change_url = url;
    }   
    if(change_url.substr(0,6) == '/bare/' ) {
        change_url = change_url.substr(5);
    }   
    if(change_url.substr(0,1) == '/' ) {
        change_url = change_url.substr(1);
    }
    this.changeUrl = change_url;
    if(nav_div) {
        this._nav_div   = nav_div;
        this._nav_act_id = 'ico_'+ change_url.charAt(0).toUpperCase() + change_url.substr(1).toLowerCase();
    }
};

HistoryTracker.prototype.back = function(){
    if(this._nav_div) { 
        activatenav(this._nav_act_id, this._nav_div);
    }
    loadPage(this._url, this._target, this.changeUrl);
};
HistoryTracker.prototype.forward = function(){
    
    if(this._nav_div) { 
        activatenav(this._nav_act_id, this._nav_div);
    }
    loadPage(this._url, this._target, this.changeUrl);  //,true
};
function checkBookmark() {

    var bookmarkId = location.hash;
    if(bookmarkId){ 
        bookmarkId = bookmarkId.substring(1, bookmarkId.length);
        dojo.byId('content').innerHTML = "!! Redirecting to /" + bookmarkId;
        //alert(bookmarkId);
        loadPage( '/bare/'+bookmarkId, 'content', bookmarkId );
        //document.location.href = bookmarkId;  
    }   
}

function switchstatus(state, icondir) {
    // loading trafficDisplayImg & trafficDisplayText
    // /img/icons/  or  /img/lab/icons/
    
    if( icondir  == undefined ) {
        icondir = 'icons';
    }
    
    if( window.location.href.search('/lab/lab/') != -1 ) {
        // lab icons FIXME not the best way..but where to set parm?
        icondir = 'lab/icons';
    }
      
    if( state == 'loading') {
        document.getElementById('trafficDisplayImg').src = '/img/'+icondir+'/loading.gif';
        
        document.getElementById('trafficDisplayText').innerHTML = 'Loading..';
    }
    if( state == 'complete') {
        document.getElementById('trafficDisplayImg').src = '/img/'+icondir+'/loading_complete.gif';
        
        document.getElementById('trafficDisplayText').innerHTML = 'Rendering';
        setTimeout("switchstatus('ok');",750);
    }       
    if( state == 'saving') {
        document.getElementById('trafficDisplayImg').src = '/img/'+icondir+'/save.gif';
        document.getElementById('trafficDisplayText').innerHTML = 'Saving Data';
    }
    if( state == 'ok') {
        document.getElementById('trafficDisplayText').innerHTML = '..';
    }   
}

function toggleDisplayElement(el, duration) {

    if(typeof duration == "undefined") {
        duration = 0;
    } /* else {
        //duration =  parseFloat(duration);
    }*/
    if(!document.getElementById(el) ) {
        return false;
    }
    //elem = document.getElementById(el);
    elem = dojo.byId(el);

    /*if(elem.style.display == 'none' || elem.style.visibility == "hidden" 
        || elem.style.display == ""    // happens on init
        ) {
*/
    if(  dojo.style(elem,"display") == 'none' ) {
    
        // not loaded in nodelab dojo.style(elem, 'display', 'block');
        if( duration != 0 && typeof dojo != "undefined" ){
            
            var animIn = dojo.fx.wipeIn({node: elem,duration: duration});
            // broken with fixed positioned elems
            //var animIn = dojox.fx.wipeTo({node: elem,duration: duration});
            animIn.play();
        } else {
            elem.style.display = 'block';
        }
    } else {
        if(duration != 0  && typeof dojo != "undefined" ){

            //dojo.widget.byId(el).toggleShowing();//dojo.fadeOut({'node':el, 'duration':duration}).play();
            
            var animOut = dojo.fx.wipeOut({node: elem,duration: duration});
            animOut.play();
        } else {
            elem.style.display = 'none';
        }
    }
    return false;
}
function hideMsg() {

    var animOut = dojo.animateProperty({ node: 'msgDisplay', duration:2000,
                    properties: {
                        top: { start: top.msgDstyle['height'], end: '2000', unit:"px" }
                    }});
               dojo.connect(animOut,"onEnd",function(){
               
                    dojo.style('msgDisplay','display','none');

                    // restore style for re-display
                    dojo.style('msgDisplay','top', top.msgDstyle['top']);
               });
    animOut.play();
}
function showMsg() {
    var msgDstyle       = new Array();
    msgDstyle['top']    = dojo.style('msgDisplay',"top");
    top.msgDstyle       = msgDstyle;
    dojo.style('msgDisplay','display','block');
}
function activatenav( el, navDivID ) {
    // give me the elementID to activate and the surroundig nav div id
    //                                  ?and a name attr?
    // does not work for subpop_cklick: there its integrated in thtml

    var elem     = document.getElementById(el);
    
    if(typeof elem == 'undefined' || elem == null) {
        return false;   
    }
    var elNavDiv = document.getElementById(navDivID);    
    var elNav = elNavDiv.getElementsByTagName('a'); // deactivate
    //elNav = dojo.query("[name~="+btnID+"]");
        
    for (var i = 0; i < elNav.length; i++) {    
        // deactive all a where class *_act
        if( elNav[i].className.substr(elNav[i].className.length-4,4) == '_act') {
            // IE substr bug: no negative parms!
            elNav[i].className = elNav[i].className.substr(0,elNav[i].className.length-4);
        }
    }
    // activate
    elem.className=elem.className + '_act';     
    return true;
}
function loadPlaylist(playerid, tmplurl) {

    document.getElementById('audioplayer').loadPlaylist();
}
function checkEmail(email, msg) {
    if(msg == undefined) {
        msg = 'Please enter a valid email address'; 
    }
    var filter = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
    if (!filter.test(email)) {
        alert(msg);
        return false;
    } else {
        return true;    
    }
}
function getWindowOuterWidth(){
    if ( !dojo.isIE ) {
        return window.outerWidth;
    } else {
        return getWindowInnerWidth();
    }
}
function getWindowOuterHeight() {   
    if (!dojo.isIE ) {
        return window.outerHeight;
    }
    else {
        return getWindowInnerHeight();
    }
}
function getWindowInnerWidth() {
    if (!dojo.isIE ) {
        return window.innerWidth;
    } else  {
        return document.body.clientWidth;
    }
}
function getWindowInnerHeight() {
    if (!dojo.isIE ) {
        return window.innerHeight;
    } else {
        return document.documentElement.clientHeight;
    }
}
function getWindowLeft() {
    if(!dojo.isIE ) {
        return window.screenX;
    } else {
        return window.screenLeft;
    }
}
function getWindowTop() {
    if(!dojo.isIE ) {
        return window.screenY;
    } else {
        return window.screenTop-90;
    }
}
function openWindowCentered(_url, _windowName, _width, _height, _status) {
    // works only correctly in Mozilla/FF and Konqueror
    windowWidth = getWindowOuterWidth();
    windowHeight = getWindowOuterHeight();
    positionLeft = (windowWidth/2)-(_width/2)+getWindowLeft();
    positionTop  = (windowHeight/2)-(_height/2)+getWindowTop();
    windowID = window.open(_url, _windowName, "width=" + _width + ",height=" + _height + 
        ",screenX=" + positionLeft + ",left=" + positionLeft + ",screenY=" + positionTop + ",top=" + positionTop +
        ",location=no,menubar=no,directories=no,toolbar=no,scrollbars=yes,resizable=yes,status="+_status);
    windowID.focus();
                
    return windowID;
}

/*  MODULE gallery
    slideshow thumpicker :: */
function scrollThumbs(dir,div_id,distance) {

     // FIXME initial position??
     
    // need to know max position! / height of all thumbs inside:          %;
    // childs of container
    var imgs = dojo.query('#'+ div_id+' > *');

    if( typeof dist == "undefined" ) {
      distance = 300;
    }
    // string to Num
    distance =  parseFloat(distance);
     
    if( dir == 'left'  || dir == 'right') {
        startpos = dojo.style(div_id, "left");
        if( dir == 'left') {
            endpos = startpos + distance;
        } else {
            endpos = startpos - distance;
        }
        /* FIXME if(endpos < 0 ) {
            not used yet
          endpos = 0;
        }  */
        var animScr = dojo.animateProperty({ node: div_id, duration:600,
                            properties: {   left: { start:startpos, end: endpos, unit:"px" } }
                      }); 
    } else if ( dir == 'up' || dir == 'down') {
    
        startpos = dojo.style(div_id, "top");
        if( dir == 'up') {
            endpos = startpos + distance;
        } else {
            endpos = startpos - distance;
        }
        
        // fins max = child height = thumbheight * count - FIXME_containerheight + dojo.style( div_id , "height")
        var all_thumbs_height = (-(dojo.style( imgs[0] , "height")  * imgs.length)) +distance ;

        if( endpos > 0 ) {
            endpos = 0;
        } else if ( endpos < all_thumbs_height){

            //endpos = -1000;         
            endpos = all_thumbs_height;         
        }
        
        var animScr = dojo.animateProperty({ node: div_id, duration:600,
                            properties: { top: { start:startpos, end: endpos, unit:"px" } }
                      });   
    }
    animScr.play();
}
/* EOF */
