﻿
function setupDoubleClick(websiteUrl, dictionary, areaId, maxAllowedWords, target) {
//var $J = jQuery.noConflict();
	//warning message for developers
	if (!websiteUrl || !dictionary) {
		alert("Please specify required parameters (websiteurl and dictionary) to setupDoubleClick()")
		return;
	}
	//shows the definition layer
	var showLayer = function(e) {
        //debugger;
        //e.preventDefault();
        var lookup = getSelectedText();
        lookup = lookup.replace(/[\.\*\?;!()\+,\[:\]<>^_`\[\]{}~\\\/\"\'=]/g, " ");
        lookup = lookup.replace(/\s+/g, " ");
      
        if (lookup != null && lookup.replace("/\s/g", "").length > 0) {
        	//disable the double-click feature if the lookup string
        	//exceeds the maximum number of allowable words
        	if (maxAllowedWords && lookup.split(/[ -]/).length > maxAllowedWords)
				return;

  var imageUrl = "http://assets.macmillandictionary.com/permanent/doubleclick/definition-layer.gif";
  var DefinitionLayer = returnObjById('definition_layer');
  
  if(DefinitionLayer == null) {
  
  var hMouseX = returnObjById('MouseX');
hMouseX.value = 0;
var hMouseY = returnObjById('MouseY');
hMouseY.value = 100;

 
      DefinitionLayer = document.createElement('div');
      DefinitionLayer.setAttribute('id', 'definition_layer');
            DefinitionLayer.setAttribute('style', 'position:absolute; cursor:pointer;z-index:101;left:' +  hMouseX.value + 'px;top:' +  hMouseY.value +'px;');

     // DefinitionLayer.setAttribute('style', 'position:absolute; cursor:pointer;z-index:101;left:' +  hMouseX.value + 'px;top:' +  hMouseY.value +'px;');
      DefinitionLayer.innerHTML = '<img src=' + imageUrl + ' alt="" title="" />'
      document.body.appendChild(DefinitionLayer);
      DefinitionLayer.onmouseup = function(e) { openPopup(lookup);           
                                  var DefinitionLayer = returnObjById('definition_layer');
                                          if(DefinitionLayer != null) document.body.removeChild(DefinitionLayer);
                                };

  }

  //newdiv.innerHTML = 'Element Number '+num+' has been added! <a href=\'#\' onclick=\'removeElement('+divIdName+')\'>Remove the div "'+divIdName+'"</a>';
  

        	//append the layer to the DOM only once
			//if ($("#definition_layer").length == 0) {
	    	//	var imageUrl = "http://assets.macmillandictionary.com/permanent/doubleclick/definition-layer.gif";
			//	$("body").append("<div id='definition_layer' style='position:absolute; cursor:pointer;z-index:101;'><img src='" + imageUrl + "' alt='' title=''/></div>");
			//}
			//move the layer at the cursor position
			//$("#definition_layer").map(function() {
			//	$(this).css({'left' : e.pageX-30, 'top' : e.pageY-40});
			//});
			
			//open the definition popup clicking on the layer
			//$("#definition_layer").mouseup(function(e) {
				//e.stopPropagation();
			//	openPopup(lookup);
	         //});
        } else {
          var DefinitionLayer = returnObjById('definition_layer');
          if(DefinitionLayer != null) document.body.removeChild(DefinitionLayer);

        	//$("#definition_layer").remove();
        }
	};
	
	//opens the definition popup 
	var openPopup = function(lookup) {

        var searchUrl = websiteUrl + "search/" + dictionary + "/";
        if (target) {
        	var popup = window.open(searchUrl + "?q=" + lookup, target, "toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=no,copyhistory=no,width=600,height=550,top=300,left=300");
        	if (popup)
        		popup.focus();
        } else {
        	window.open(searchUrl + "?q=" + lookup);
        }
	};
	
	//var area = areaId ? "#" + areaId : "body";
	//alert(showLayer);
	
	document.body.onmouseup = showLayer;
	//$("bodytest").mouseup(showLayer);
	//$(area).mouseup(showLayer);
	
}

/*
 * Cross-browser function to get selected text
 */

function getSelectedText(){
    if(window.getSelection)
        return window.getSelection().toString();
    else if(document.getSelection)
        return document.getSelection();
    else if(document.selection)
        return document.selection.createRange().text;
    return "";
}


function returnObjById(id) { 
        var returnVar;
      if (document.getElementById)  {
        returnVar = document.getElementById(id); 
        }
    else if (document.all) {
        returnVar = document.all[id]; 
        }
    else if (document.layers) {
        returnVar = document.layers[id]; 
        }
    return returnVar; 
}


