var ie=document.all;
var nn6=document.getElementById&&!document.all;

function THuecos(numHuecos, idEjercicio)
{
    // LA PRIMERA OPCION VA CON LA CON EL SEGUNDO HUECO		
    
    this.numHuecos = numHuecos;
    this.idEjercicio = idEjercicio;
    this.isdrag=false;
    this.x=0;
    this.y=0;
    this.dobj="";
    this.idObjeto="";
    this.tx=0;
    this.ty=0;
    this.encimaDeAlguno = false;
    this.encimaDeAnterior = false;
    this.xIni=null;
    this.yIni=null;    
    this.innerInicial=document.getElementById("contenedorOpciones_ej_"+idEjercicio).innerHTML;
    
    this.resultado = new Array(this.numHuecos);
    for(var i=0; i < this.numHuecos ;i++)
            this.resultado[i] = false;	

    this.huecoOcupado = new Array(this.numHuecos);
    for(var i=0; i<this.numHuecos;i++)
            this.huecoOcupado[i] = -1;

    this.xyIni = new Array(this.numHuecos);
    for(var i=0; i<this.numHuecos;i++)
        {
            this.xyIni[i] = new Array(2);
            this.xyIni[i][0]=null;  //x
            this.xyIni[i][1]=null;  //y
        }
    
    for(var i=1;i<=this.numHuecos;i++)
    {
        document.getElementById("cart_"+i+"_ej_"+this.idEjercicio).style.paddingRight = "0px";
        document.getElementById("cart_"+i+"_ej_"+this.idEjercicio).style.paddingLeft = document.getElementById("palabra_"+i+"_ej_"+this.idEjercicio).clientWidth-3 + "px";
    }   

    this.getElementsByClassName = function(oElm, strTagName, strClassName)
    {
            var arrElements = (strTagName == "*" && oElm.all)? oElm.all : oElm.getElementsByTagName(strTagName);
            var arrReturnElements = new Array();
            strClassName = strClassName.replace(/-/g, "\-");
            
            var oRegExp = new RegExp("(^|\s)" + strClassName + "(\s|$)");
            var oElement;
            for(var i=0; i<arrElements.length; i++){
                    oElement = arrElements[i];
                    if( oRegExp.test(oElement.className) && oElement.id.split("ej_")[1] == this.idEjercicio )
                    {
                            arrReturnElements.push(oElement);
                    }
            }
            return (arrReturnElements)
    }


    this.movemouse = function(e)
    {
       
      if (this.isdrag==true)
      {
            var dentroDeAlguno = false;
            var xxx,yyy;

            if (self.pageYOffset) // all except Explorer
            {
                    xxx = self.pageXOffset;
                    yyy = self.pageYOffset;
            }
            else if (document.documentElement && document.documentElement.scrollTop)
                    // Explorer 6 Strict
            {
                    xxx = document.documentElement.scrollLeft;
                    yyy = document.documentElement.scrollTop;
            }
            else if (document.body) // all other Explorers
            {
                    xxx = document.body.scrollLeft;
                    yyy = document.body.scrollTop;
            }
            

            var pepe1 = nn6 ? e.clientX : event.clientX;
            var pepe2 = nn6 ? e.clientY : event.clientY;


            var posX = nn6 ? e.clientX : event.clientX;
            var posY = nn6 ? e.clientY : event.clientY;

            this.dobj.style.left = nn6 ? (e.clientX-this.dobj.offsetWidth/2+xxx)+"px" : (event.clientX-this.dobj.offsetWidth/2+xxx)+"px";
            this.dobj.style.top  = nn6 ? (e.clientY-this.dobj.offsetHeight/2+yyy)+"px" : (event.clientY-this.dobj.offsetHeight/2+yyy)+"px";

            
            // COMPROBAMOS SI ESTAMOS ENCIMA DE ALGUN DIV
            var objetosArrastrables = this.getElementsByClassName(document, "*", "dragme");

            for(var i=1; i <= objetosArrastrables.length; i++)
            {
                var hueco = document.getElementById("cart_" + i + "_ej_"+this.idEjercicio);
                var pepe = this.findPos(hueco);
                var xx = pepe[0];
                var yy = pepe[1];
                var tamX = this.dobj.offsetWidth + xx;
                var tamY = this.dobj.offsetHeight + yy;

                // COMPROBAMOS SI HA CAIDO EN EL HUECO I
                if(posX >= (xx-xxx) && posX <= (tamX-xxx))
                {
                        if(posY >= (yy-yyy) && posY <= (tamY-yyy))
                        {
                                dentroDeAlguno = true;
                                //hueco.style.background = "#003399";
                                hueco.style.background = "#E55228"; // POR ENCIMA
                                this.encimaDeAlguno = i;
                                                                
                                // DESHABILITAMOS LOS DEMAS
                                for(var j=1; j < objetosArrastrables.length+1; j++){
                                        if(j!=i){
                                        	document.getElementById("cart_"+j+"_ej_"+this.idEjercicio).style.background = "#f5e2d3";
                                        }
                                }
                        }
                }
        }


                    if(dentroDeAlguno == false){
                    	var aux = document.getElementById("cart_"+this.encimaDeAlguno+"_ej_"+this.idEjercicio);
                      if(aux!=null)
                      	aux.style.background = "#f5e2d3";
                    }



        return false;
      }

      return false;
    }
    
    
    this.selectmouse = function(e) 
    {
        
      var fobj       = nn6 ? e.target : event.srcElement;
      var topelement = nn6 ? "HTML" : "BODY";

            if(fobj != undefined) 
            {

              while (fobj.className != "" && fobj.className != "dragme" && fobj.tagName != topelement )
              {
                fobj = nn6 ? fobj.parentNode : fobj.parentElement;
              }

              if (fobj.className=="dragme")
              {
  
                fobj.style.position = "absolute";	

                this.idObjeto = fobj.getAttribute("id");
                this.isdrag = true;
                this.dobj = fobj;
                
                this.dobj.style.zIndex=100;
                
                document.getElementById(this.idObjeto).style.background = "#f5e2d3";
                document.getElementById(this.idObjeto).style.border = "1px solid #E55228";
                
                var posicion = this.idObjeto.split("_")[1] -1;


                if( this.xyIni[posicion][0] == null )
                {
                    this.xyIni[posicion][0] = this.dobj.offsetLeft;
                    this.xyIni[posicion][1] = this.dobj.offsetTop;                    
                }
                
                this.tx = parseInt(this.dobj.style.left+0);
                this.ty = parseInt(this.dobj.style.top+0);
                this.x = nn6 ? e.clientX : event.clientX;
                this.y = nn6 ? e.clientY : event.clientY;

                document.onmousemove=function (event) 
                {
                         eval("huecos_"+idEjercicio+".movemouse(event)");
                };
                
                return false;
              }

            }


      return false;

    }
    
    
    this.comprobarFin = function(e)
    {

            if(this.isdrag == false)
                    return false;

            this.isdrag = false;
            this.dobj.style.zIndex=1;
            
            var posX = nn6 ? e.clientX : event.clientX;
            var posY = nn6 ? e.clientY : event.clientY;

            var dentroDeAlguno = false;

            var objetosArrastrables = this.getElementsByClassName(document, "*", "dragme");

            var posicion;
            
            for(var i=1; i <= objetosArrastrables.length; i++)
            {	
                    posicion = this.idObjeto.split("_")[1] - 1;
                    
                    var hueco = document.getElementById("cart_" + i + "_ej_"+this.idEjercicio);
                    var pepe = this.findPos(hueco);
                    var x = pepe[0];
                    var y = pepe[1];
                    var tamX = hueco.offsetWidth + x;
                    var tamY = hueco.offsetHeight + y;

                    // COMPROBAMOS SI HA CAIDO EN EL HUECO I

                    var xxx,yyy;
                    if (self.pageYOffset) // all except Explorer
                    {
                            xxx = self.pageXOffset;
                            yyy = self.pageYOffset;
                    }
                    else if (document.documentElement && document.documentElement.scrollTop)
                            // Explorer 6 Strict
                    {
                            xxx = document.documentElement.scrollLeft;
                            yyy = document.documentElement.scrollTop;
                    }
                    else if (document.body) // all other Explorers
                    {
                            xxx = document.body.scrollLeft;
                            yyy = document.body.scrollTop;
                    }

                    if(posX >= (x-xxx) && posX <= (tamX-xxx))
                    {			
                            if(posY >= (y-yyy) && posY <= (tamY-yyy))
                            {                                
                                
                                    if(this.huecoOcupado[i-1] == -1 || this.huecoOcupado[i-1]==this.idObjeto)
                                    {
                                        dentroDeAlguno = true;

                                        // CENTRAMOS EL DRAGME
                                        document.getElementById(this.idObjeto).style.top = y + "px";
                                        document.getElementById(this.idObjeto).style.left = x + "px";

                                        var opcion = parseInt(this.idObjeto.substring(this.idObjeto.indexOf('_')+1, this.idObjeto.length));

                                        for(var j=0;j<this.numHuecos;j++)
                                        {
                                            if( this.huecoOcupado[j] == this.idObjeto )
                                            {
                                                this.huecoOcupado[j]=-1;
                                                this.resultado[j]="false";
                                            }
                                        }                                        
                                        
                                        
                                        this.huecoOcupado[i-1] = this.idObjeto;

                                        document.getElementById(this.idObjeto).style.background = "none";
                                        document.getElementById(this.idObjeto).style.border = "none";
                                        document.getElementById("cart_" + i + "_ej_"+this.idEjercicio).style.background = "#f5e2d3";
                                        
                                        if(i == opcion) {
                                                this.resultado[opcion-1] = "true";
                                        }
                                        else {
                                                this.resultado[opcion-1] = "false";
                                        } 
                                        
                                    }
                            }
                    }

            }


            if(dentroDeAlguno == false)
            {
                    if(this.idObjeto != undefined)
                    {
                                    var pepe = this.findPos(this.idObjeto);
                                    var x = pepe[0];
                                    var y = pepe[1];
                                    
                                    posicion = this.idObjeto.split("_")[1] - 1;
                                    
                                    for(var i=0;i<this.numHuecos;i++)
                                    {
                                        if( this.huecoOcupado[i]==this.idObjeto )
                                        {
                                            this.huecoOcupado[i]=-1;
                                            this.resultado[i]="false";
                                        }
                                    }
                                        

                                    document.getElementById(this.idObjeto).style.left = this.xyIni[posicion][0] + "px";
                                    document.getElementById(this.idObjeto).style.top = this.xyIni[posicion][1] + "px";
                    }
            }


            this.idObjeto = undefined;

            return false;

    }

    this.cambiaTipoCorrecion = function(tipoCorrec)
    {
            tipoCorreccion = tipoCorrec;
    }

    this.muestraPuntuacion = function()
    {
            for(var i=1 ; i <= this.numHuecos; i++)
            {
                    var opcion = document.getElementById("hueco"+i);
                    if(this.resultado[i-1] == "true")
                    {
                    	new Effect.Highlight("cart_"+i+"_ej_"+this.idEjercicio, {startcolor:'#00FF7F', endcolor:'#f5e2d3'});                            
                    }	
                    else
                    {
                    	new Effect.Highlight("cart_"+i+"_ej_"+this.idEjercicio, {startcolor:'#FF7700', endcolor:'#f5e2d3'}); 
                    }
            }
    }
    
    
    
    this.findPos = function(obj) 
    {
            var curleft = curtop = 0;
            if (obj.offsetParent) {
                    curleft = obj.offsetLeft
                    curtop = obj.offsetTop
                    while (obj = obj.offsetParent) {
                            curleft += obj.offsetLeft;
                            curtop += obj.offsetTop;
                    }
            }

            return [curleft,curtop];
    }

    this.reset = function() 
    {
        document.getElementById("contenedorOpciones_ej_"+idEjercicio).innerHTML = this.innerInicial;
        
        this.isdrag=false;
        this.x=0;
        this.y=0;
        this.dobj="";
        this.idObjeto="";
        this.tx=0;
        this.ty=0;
        this.encimaDeAlguno = false;
        this.encimaDeAnterior = false;
        this.xIni=null;
        this.yIni=null;    

        this.resultado = new Array(this.numHuecos);
        for(var i=0; i < this.numHuecos ;i++)
                this.resultado[i] = false;	

        this.huecoOcupado = new Array(this.numHuecos);
        for(var i=0; i<this.numHuecos;i++)
                this.huecoOcupado[i] = -1;

        this.xyIni = new Array(this.numHuecos);
        for(var i=0; i<this.numHuecos;i++)
            {
                this.xyIni[i] = new Array(2);
                this.xyIni[i][0]=null;  //x
                this.xyIni[i][1]=null;  //y
            }

        for(var i=1;i<=this.numHuecos;i++)
        {
            document.getElementById("cart_"+i+"_ej_"+this.idEjercicio).style.paddingRight = "0px";
            document.getElementById("cart_"+i+"_ej_"+this.idEjercicio).style.paddingLeft = document.getElementById("palabra_"+i+"_ej_"+this.idEjercicio).clientWidth-3 + "px";
        }         
   
    }    
    
}


