﻿
// File: Dictionary.js

// Start function when DOM has completely loaded 
jQuery(document).ready(function()
{
  jQuery.ajax({
    type: "GET",
    url: "/WebServices/DictionaryService.asmx/GetTerms",
    dataType: "xml",
    success: getTerms
  });

});

function getTerms(xml){

    var regexString = "";
    var arr = new Array();
    var word;
    jQuery('string',xml).each(function(i,item){
    word = jQuery(item).text();
    
    if(word != '')
    {
        arr[i] = word;
    }
    });
    
    regexString = arr.join("|");
    //alert(regexString);
    createTags(regexString,'dictionaryDiv');

}

function getDefinition(term){
jQuery.ajax({
    type: "GET",
    url: "/WebServices/DictionaryService.asmx/GetDefinition?term="+term,
    dataType: "xml",
    success: function(xml){
    return jQuery('string',xml).text();
    }});
}
   
function createTags(regexString, elementName) 
{  

        jQuery("." + elementName).each( function(i, item){
            var el = jQuery(item);
            var oldHtml = el.html();
            var newHtml = oldHtml.replace(new RegExp("(" + regexString + ")", "gi"), '<span class="dictionaryWord">$1</span>');
            el.html(newHtml);  

      });

        Lightview.updateViews();
                              
        jQuery(".dictionaryWord").hoverIntent( function(e){
            jQuery("#dictionaryToolTip").remove();
            def = jQuery.ajax({
            type: "GET",
            url: "/WebServices/DictionaryService.asmx/GetDefinition?term="+jQuery(this).text().toLowerCase(),
            dataType: "xml",
            success: function(xml){  
            jQuery("body").append("<div id='dictionaryToolTip' style='left:"+e.pageX+"px;top:"+e.pageY+"px;' class='dictionaryTooltip'>"+jQuery('string',xml).text()+"</div>");
            }});
        }, function(e){
            jQuery("#dictionaryToolTip").remove();
        });
                    
}

(function($){$.fn.hoverIntent=function(f,g){var cfg={sensitivity:1,interval:200,timeout:0};cfg=$.extend(cfg,g?{over:f,out:g}:f);var cX,cY,pX,pY;var track=function(ev){cX=ev.pageX;cY=ev.pageY;};var compare=function(ev,ob){ob.hoverIntent_t=clearTimeout(ob.hoverIntent_t);if((Math.abs(pX-cX)+Math.abs(pY-cY))<cfg.sensitivity){$(ob).unbind("mousemove",track);ob.hoverIntent_s=1;return cfg.over.apply(ob,[ev]);}else{pX=cX;pY=cY;ob.hoverIntent_t=setTimeout(function(){compare(ev,ob);},cfg.interval);}};var delay=function(ev,ob){ob.hoverIntent_t=clearTimeout(ob.hoverIntent_t);ob.hoverIntent_s=0;return cfg.out.apply(ob,[ev]);};var handleHover=function(e){var p=(e.type=="mouseover"?e.fromElement:e.toElement)||e.relatedTarget;while(p&&p!=this){try{p=p.parentNode;}catch(e){p=this;}}if(p==this){return false;}var ev=jQuery.extend({},e);var ob=this;if(ob.hoverIntent_t){ob.hoverIntent_t=clearTimeout(ob.hoverIntent_t);}if(e.type=="mouseover"){pX=ev.pageX;pY=ev.pageY;$(ob).bind("mousemove",track);if(ob.hoverIntent_s!=1){ob.hoverIntent_t=setTimeout(function(){compare(ev,ob);},cfg.interval);}}else{$(ob).unbind("mousemove",track);if(ob.hoverIntent_s==1){ob.hoverIntent_t=setTimeout(function(){delay(ev,ob);},cfg.timeout);}}};return this.mouseover(handleHover).mouseout(handleHover);};})(jQuery);
