var srcElementId = ""; //Id of dragged image
var temp1;
var temp2;

function getDestination()
{


	    if (srcElementId != "snowman" && 
		    srcElementId != "angel" &&
		    srcElementId != "snowflake" &&
		    srcElementId != "santa")
	    {
		    // must be one of the images from the scavenger hunt
		    return;
	    }

        var imgDragged = document.getElementById(srcElementId); 

        var divSav = document.getElementById("scavenger");	
        
        imgDragged.setAttribute('dropped', 'true');
        
 
	    divSav.appendChild(imgDragged);
	    
	    //try{ imgDragged.onmousedown = cancelevent   } catch(e){}
        var imgfound = document.createElement('img');
		    imgfound.setAttribute('src', './images/found_' + srcElementId +'.jpg');
		    imgfound.setAttribute('id', 'found_' + srcElementId );
    	

        divSav.appendChild(imgfound);
        window.setTimeout("updateScavenger('" + srcElementId + "');",10);
   
}    

function updateScavenger(imgID)
{
	

	    var xmlhttp=null;
	    var url = "UpdateScavenger.php?imgID=" + imgID; 
    	 
	    try
	    {
		    xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); 
		    if (typeof(xmlhttp) != 'object' )
		    {	 	
		       // If IE7, Mozilla, Safari, etc: Use native object
		       xmlhttp = new XMLHttpRequest();
		    }
	    }
	    catch (e) 
	    {
		    // fallback: use native object 
		    xmlhttp = new XMLHttpRequest();
	    }
    	
	    if (xmlhttp!=null)
	    {
		    xmlhttp.open("GET",url,false);
		    xmlhttp.send(null);
		    if (xmlhttp.responseText == "completed")
		    {
			    var imgWin = document.createElement('img');
			    imgWin.setAttribute('src', 'images/win_bk.JPG');
			    imgWin.setAttribute('id', 'win');

			    var divScav = document.getElementById("scavenger");
			    divScav.appendChild(imgWin);			
		    }	
	    }	

}

function disableSelection(target)
{
 if (typeof target.onselectstart!="undefined") //IE route
	    target.onselectstart=function(){return false}
    else if (typeof target.style.MozUserSelect!="undefined") //Firefox route
	    target.style.MozUserSelect="none"
    else //All other route (ie: Opera)
	    target.onmousedown=function(){return false}
    target.style.cursor = "default"
}


function enableSelection(target)
{
 if (typeof target.onselectstart!="undefined") //IE route
	    target.onselectstart=function(){}
    else if (typeof target.style.MozUserSelect!="undefined") //Firefox route
	    target.style.MozUserSelect=""
    else //All other route (ie: Opera)
	    target.onmousedown=function(){return false}
    target.style.cursor = "default"
}


function cancelevent()
{
    window.event.returnValue = false;
} 


function getScrollPosY()
{
    var pos;
    if (window.scrollY == null || window.scrollY == 'undefined')
    {
        pos = document.documentElement.scrollTop;
    }
    else
    {
        pos = window.scrollY;
    }
    return pos
 }   
 
 function getScrollPosX()
 {
    var pos;
    if (window.scrollX == null || window.scrollX == 'undefined')
    {
        pos = document.documentElement.scrollLeft;
    }
    else
    {
        pos = window.scrollX;
    }
    return pos
 }   
    


if (window.addEventListener != null)
{
	// add drag and drop support for firefox
	window.addEventListener("mousedown", dragstart, false);
	window.addEventListener("draggesture", dragAbort, false);
	
	window.addEventListener("mousemove", move, false);
	window.addEventListener("mouseup", mouseup, false);
    window.addEventListener("mouseover", mouseover, false);
}
else
{
	// add drag and drop support for IE
	document.ondragstart = cancelevent;
	document.onmousedown = dragstartIE;
	document.onmousemove = moveIE;
	document.onmouseup = mouseupIE;
	document.onmouseover = mouseoverIE;
	window.onerror = imagedrag_error;

}




// *************************************************************
// ****** Firefox implementation of drag and drop functionality
//
//

function dragAbort(event)
{
    event.preventDefault();
}


function dragstart(event) 
{
    if (event.button != 0) {return };
    
    

	if (srcElementId != "" || ( event.target.id == 'snowman' || event.target.id == 'angel' 
		 || event.target.id == 'snowflake' || event.target.id == 'santa'))  
	{
	    disableSelection(document.body);
		
	    var img = document.getElementById(event.target.id);
      
        if (img.getAttribute("dropped") == "true") 
        {
              event.preventDefault();
              return;
        }
	
	    // take it out of piece div..
	    // add to document
		document.body.style.cursor = "move";
		srcElementId = event.target.id;
		
		document.body.appendChild(img);	
		img.style.position = "absolute";
					
        x=event.clientX ;
        y=event.clientY ;
        
        img.style.left = x;
        img.style.top = y;
        
        temp1=x;
        temp2=y;

        // initialize
        img.style.left=temp1+event.clientX-x - 35 + getScrollPosX() + "px";
        img.style.top=temp2+ event.clientY-y + 5 + getScrollPosY() + "px";
 
	}
}


function mouseover(event) 
{
     event.preventDefault();
}

function mouseup(event) 
{
	
	
	if (srcElementId != "")
    {
        var img = document.getElementById(srcElementId);
        
        img.style.position = ""; 
        img.style.left="";
        img.style.top="";
        
        document.getElementById('piece').appendChild(img);
    }
	
	divScav = document.getElementById('scavenger')
	
	if ((event.target.id == 'scavenger' || event.target.id == 'snowman' 
		|| event.target.id == 'angel' || event.target.id == 'snowflake'
		|| event.target.id == 'santa') && 
		(event.target.id != srcElementId    ))
	{
		getDestination();
	}
	
	enableSelection(document.body);
	srcElementId = "";
	document.body.style.cursor = "";
}


function move(event)
{
    if (srcElementId != ""){
    
        var img = document.getElementById(srcElementId);
    
        img.style.left=temp1+event.clientX-x - 30 + getScrollPosX() + "px";
        img.style.top=temp2+ event.clientY-y + 5 + getScrollPosY() + "px";
        
        return false;
    }
}

// ********************************************************
// ** IE implementation of drag and drop functionality
//
//

function dragstartIE() 
{

    if (event.button != 1) {return };

	if (srcElementId != "" || ( event.srcElement.id == 'snowman' || event.srcElement.id == 'angel' 
		 || event.srcElement.id == 'snowflake' || event.srcElement.id == 'santa'))
	{
	
	    var img = document.getElementById(event.srcElement.id);
      
        if (img.getAttribute("dropped") == "true") 
        {
            event.returnValue=false;
            return;
        }
	
		document.body.style.cursor = "move";
		srcElementId = event.srcElement.id;
		
		document.body.appendChild(img);	
		
		img.style.position = "absolute";
			
        x=event.clientX ;
        y=event.clientY ;
              
        img.style.left = x;
        img.style.top = y;
        
        temp1=x;
        temp2=y;

        // initialize
        img.style.left=temp1+event.clientX-x - 35 + getScrollPosX() + "px";
        img.style.top=temp2+ event.clientY-y + 5 + getScrollPosY() + "px";
 
	}
	

}

function moveIE()
{

    if (srcElementId != ""){
    
        var img = document.getElementById(srcElementId);
    
        img.style.left=temp1+event.clientX-x -30  + getScrollPosX()  + "px";     
        img.style.top=temp2+ event.clientY-y + 5  + getScrollPosY()  +"px";

         event.returnValue=false;
        return false;
    }
  
}

function mouseoverIE() 
{
    event.returnValue=false;
   
}

function mouseupIE() 
{

 
	if (srcElementId != "")
    {
        var img = document.getElementById(srcElementId);
        
        img.style.position = ""; 
        img.style.left="";
        img.style.top="";
        
        document.getElementById('piece').appendChild(img);
    }
	
	divScav = document.getElementById('scavenger')
	
	
	if ((event.srcElement.id == 'scavenger' || event.srcElement.id == 'snowman' 
		|| event.srcElement.id == 'angel' || event.srcElement.id == 'snowflake'
		|| event.srcElement.id == 'santa') && 
		(event.srcElement.id != srcElementId    ))
	{
		getDestination();
	}
	
	srcElementId = "";
	document.body.style.cursor = "";

}


function imagedrag_error(err,url, code )
{
   if (code == "52")
   {
     return true;
   }
}
