
var mouseX = 0;
var mouseY = 0;
var bgX='?';
var bgY='?';
var elSight;
var compTryIndex=1;
var compMaxTries=1;
var compConfirmTry = true;
var compShowHowNear = false;
var compWinX=0;
var compWinY=0;

var compDebug = false;
var isIE = document.all ? true : false;

var isOpera =  (navigator.userAgent.indexOf("pera") != -1 ) ;
 
function showPosition(evt){
	xy = getEventOffsetXY( evt );
	if (document.results.MouseX ){
		var yPos = xy[1] ;
		var xPos = xy[0] ;
		document.results.MouseX.value =  xPos;
		document.results.MouseY.value = yPos ;
	}
};

function getEventOffsetXY( evt ){
	if ( evt.offsetX != null ) {
		var xPos = evt.offsetX ;
		var yPos = evt.offsetY ;
	 	if (isOpera){
			// no custom cursors in opera so we dont get the automated 15 pixel offset to the centre of sights
			xPos -= 15 ;
			yPos -= 15;
		}
	}	
	else{
		var obj = evt.target || evt.srcElement;
	
		setPageTopLeft( obj );
		var xPos = ( evt.clientX - obj.pageLeft ) ;
		var yPos = ( evt.clientY - obj.pageTop )  ;
		
		if (window.pageXOffset ||  window.pageYOffset){
			xPos += window.pageXOffset ;//arDivPos[0];
			yPos += window.pageYOffset; //arDivPos[1];
		}
	}
    return [ xPos, yPos ];
};

function setPageTopLeft( o ){
	 
    var top = 0;
    var left = 0;
    var obj = o;
	var originalO = o;;
    while ( o.offsetParent ){
         left += o.offsetLeft ;
         top += o.offsetTop  ;
         o = o.offsetParent ;
    };
 
	var scrollLeft =document.body.scrollLeft;
	var scrollTop = document.body.scrollTop //Firefox properties for document scroll coordinates 

    obj.pageTop = top ;  
    obj.pageLeft = left ;
	
	


};

function imgClicked(el, ev){
var x;
var y;

xy = getEventOffsetXY( ev );

    var offsetX= xy[0]   ;//arDivPos[0];
    var offsetY= xy[1]  ; //arDivPos[1];

	if (document.results ){  // Results form exists?
        // xPos hidden var
        xPosInput = document.getElementById('xPos_' + compTryIndex);
        yPosInput = document.getElementById('yPos_' + compTryIndex);
        if (xPosInput && yPosInput){
		    xPosInput.value = offsetX  ;
            yPosInput.value = offsetY  ;

    		if (document.results.MouseClick ){
    			document.results.MouseClick.value = offsetX + ':' + offsetY;
    			document.results.MouseClick.value = offsetX + ':' + offsetY;
    		}
    	}
        if (compShowHowNear){

            var winX =  DoAsciiHex(compWinX, 'H2A');
            var winY =  DoAsciiHex(compWinY, 'H2A');
            var diffX = Math.abs(winX- offsetX) ;
            var diffY = Math.abs(winY- offsetY);
            var range = (diffX > diffY) ? diffX: diffY;
            var msg ='';
            // Full debug message
            if (compDebug) msg = offsetX + ' and ' + offsetY + ' are within ' + range + ' pixels of ' + winX  + ' and ' + winY  ;
            // production message
            else msg = 'Your shot was within ' + range + ' pixels of the target!'   ;

            if ( compTryIndex ==  compMaxTries) msg += '\n\nClick [OK] to close this window...';
            else msg += '\n\nClick [OK] to try another shot...';
            alert(msg)
        }
        if (compConfirmTry){

        	var msg = "Attempt " + compTryIndex + ' of ' + compMaxTries + ". Are you sure you want to submit this click? ";
        	msg += "\n\n X=" + offsetX + ' - Y=' + offsetY   ;
        	var answer = confirm(msg)
    	}
        if (! compConfirmTry || answer) {
            compTryIndex++;
            if (compTryIndex >  compMaxTries) document.results.submit();
        }
    }
    else alert('Unable to store results');
}
// ---------------------------------------------
function compFillScreen(divId){
    var wrapper = document.getElementById('wrapper');
    wrapper.style.display='none';
    var div = document.getElementById(divId);
    divClone = div.cloneNode(true);
    divClone.className='fullscreen';
    var elBody = document.getElementsByTagName('body')[0];
    elBody.style.padding='0';
    //document.body.appendChild(divClone);
    var firstElement = window.document.body.childNodes[0]
    elBody.insertBefore (divClone, firstElement);

}
// ---------------------------------------------
function DoAsciiHex(x,dir){
    hex="0123456789ABCDEF";
    almostAscii=' !"#$%&'+"'"+'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ['+'\\'+']^_`abcdefghijklmnopqrstuvwxyz{|}';r="";
    if(dir=="A2H"){
        for(i=0;i<x.length;i++){
            let=x.charAt(i);pos=almostAscii.indexOf(let)+32;h16=Math.floor(pos/16);h1=pos%16;r+=hex.charAt(h16)+hex.charAt(h1);
        };
    };
    if(dir=="H2A"){
        for(i=0;i<x.length;i++){
            let1=x.charAt(2*i);let2=x.charAt(2*i+1);val=hex.indexOf(let1)*16+hex.indexOf(let2);r+=almostAscii.charAt(val-32);
        };
    };
return r;
};


