// ***************************************************************
//   Llibreria Cross-browser DHTML
//   Feta per: Jaume Moral i Albert Obiols juliol 1998
// ***************************************************************

// ----------------------------------------------------------
// Obtenir una capa
// ----------------------------------------------------------

function obtenir_capa(capa,pares) {
    if (document.all) return (document.all[capa]);
    if (document.layers) {
        if (pares!=0) { 
            var so=window;
            for (var i=1;i<arguments.length;i++) {        
                so=so.document.layers[arguments[i]];
            }
            return(so.document.layers[capa]); 
        } else 
            return(document.layers[capa]);  
    }
}

// ----------------------------------------------------------
// Consultar la posicio d'una capa
// ----------------------------------------------------------

function get(capa,camp,pares) {
    if (document.layers) {
        if (pares!=0) { 
            var so=window;
            for (var i=2;i<arguments.length;i++) {        
                so=so.document.layers[arguments[i]];
            }
            var l=so.document.layers[capa]; 
        } else 
	    var l=document.layers[capa];
    }
    if (camp=='left') {
        if (document.all) return(document.all[capa].style.pixelLeft);
        if (document.layers) return (l.left);
    }
    if (camp=='top') {
        if (document.all) return (document.all[capa].style.pixelTop);
        if (document.layers) return (l.top);
    }
    if (camp=='width') {
        if (document.all) return(document.all[capa].style.pixelWidth);
        if (document.layers) return (l.clip.width);
    }
    if (camp=='height') {
        if (document.all) return(document.all[capa].style.pixelHeight);
        if (document.layers) return (l.clip.height);
    }
}

// ----------------------------------------------------------
// Assignem una posició a una de les capes
// ----------------------------------------------------------

function set(capa,camp,x,pares) {
    var l;
    if (document.layers) {
        if (pares!=0) { 
            var so=window;
            for (var i=3; i < (arguments.length);i++) {        
                so=so.document.layers[arguments[i]];
            }
            l=so.document.layers[capa]; 
        } else 
	    {l=document.layers[capa];}
    }



    if (camp=='left') {
        if (document.all) {document.all[capa].style.pixelLeft=x; return;}
        if (document.layers) {l.left=x; return;}
    }
    if (camp=='top') {
        if (document.all) {document.all[capa].style.pixelTop=x; return;}
        if (document.layers) {l.top=x; return;}
    }    
    if (camp=='visibility') {
        if (document.all) {document.all[capa].style.visibility=x; return;}
        if (document.layers) {l.visibility=x; return;}
    }    
}

// ----------------------------------------------------------
// Obtenir una imatge de dintre d'una capa que només contre la imatge
// ----------------------------------------------------------

function obtenir_imatge(capa,pares) {
    if (document.layers) {
        if (pares!=0) { 
            var so=document.layers[pares];
            for (var i=1;i<arguments.length;i++) {        
                so=so.document.layers[arguments[i]];
            }
            var l=so.document.layers[capa]; 
        } else 
	    var l=document.layers[capa];
    }
    if (document.all) return(document.all[capa].children[0]);
    if (document.layers) return (l.document.images[0]);
}

// ----------------------------------------------------------
// Conversio d'events
// ----------------------------------------------------------

function copia_event(e) {
    this.keyCode=e.which;
    this.button=e.which;
    this.offsetX=e.layerX;	
    this.offsetY=e.layerY;
    this.clientX=e.pageX;	
    this.clientY=e.pageY;
    this.altKey=e.modifiers&Event.ALT_MASK;
    this.ctrlKey=e.modifiers&Event.CTRL_MASK;
    this.shiftKey=e.modifiers&Event.SHIFT_MASK;
}

function eventExplorer(e) {
    if (document.layers) {
	window.event=new copia_event(e);
    }
}

// ----------------------------------------------------------
// Drag & drop
// ----------------------------------------------------------

var dx;
var dy;
var capes=4;
var selec;
var capes;
var tractament_final;

function sobre_quina_capa(event) {
    for (var i=0; i<capes.length; i++){
	x=get(capes[i],'left',0);
	y=get(capes[i],'top',0);
	w=get(capes[i],'width',0);
	h=get(capes[i],'height',0);
        if ((event.clientX > x) && (event.clientX < x+w)
            && (event.clientY > y) && (event.clientY < y+h))
        return capes[i];
    }
    return 'null';
}

function comenca_drag(e) {
    eventExplorer(e);
    selec=sobre_quina_capa(event);
    if (selec!='null') {
        dx=get(selec,'left',0)-event.clientX;
        dy=get(selec,'top',0)-event.clientY;
        if (document.layers) document.captureEvents(Event.MOUSEMOVE);
        document.onmousemove=drag;
    }
    return false;
}

function drag(e) {
    eventExplorer(e);
    set(selec,'left',event.clientX+dx,0);
    set(selec,'top',event.clientY+dy,0);
    auxx=event.clientX+dx;
    auxy=event.clientY+dy;
    if (tractament_moure) eval(tractament_moure+"("+auxx+","+auxy+")");
    return false;
}

function acaba_drag(e) {
    if (document.layers) document.releaseEvents(Event.MOUSEMOVE);
    document.onmousemove=null;
    if (tractament_final) eval(tractament_final);
    return false;
}

function activar_drag(x,t) {
    activar_drag(x,t,null);
}

function activar_drag(x,t,m) {
    capes=x;
    tractament_final=t;
    tractament_moure=m;
    if (document.layers) document.captureEvents(Event.MOUSEUP|Event.MOUSEDOWN);
    document.onmousedown=comenca_drag;
    document.onmouseup=acaba_drag;
    return true;
}




