/* jQuery Popup dictionary script v1.10
* Last updated: may 15th, 2011. This notice must stay intact for usage 
* Author: Hakan Aydar http://www.rentanadviser.com/
* Visit http://www.rentanadviser.com/en/dictionary/Double-click-Dictionary-Lookup.aspx for how to add Double-Click dictionary to your website.
*/

window.onerror = null;
var lookup_xyz = "";
var maxAllowedWords = 3;// words to look up
var maxAllowedtextlength = 4096;// max allowed chars to translate
var width_ = 350;
var $ = jQuery;
var title_xyz = null;
var flagen = "http://www.rentanadviser.com/en/images/FLAG_UK_16.gif";
var flagtr = "http://www.rentanadviser.com/en/images/FLAG_TUR_16.gif";
var flagtrans = "http://www.rentanadviser.com/en/images/flagtrans.gif";
var clickstr = 'onclick="popupdicsubmenuclicked(this.id);return false;">';
var oldtext = "";
//var dicbaseurl = 'http://localhost:3530/rentanadviserdotcom/dictionary/popupdic.aspx?dic=';
var dicbaseurl = 'http://www.rentanadviser.com/en/dictionary/popupdic.aspx?dic=';
var translatebaseurl = 'http://www.rentanadviser.com/en/dictionary/translator.aspx?txt=';
//var translatebaseurl = 'http://localhost:1046/rentanadviserdotcom/dictionary/translator.aspx?txt=';

var stylegeneral = "font:normal 14px Sans-serif,Verdana,sans,Tahoma,Arial !important;font-size: 15px !important;";
var popupdicmenu = '' +
'<div id="popupdicmenu">' +
'<span style="padding-bottom:5px;text-align:center;color:#FF3300;display:block;border-bottom:solid 1px #eee;' + stylegeneral + '">Look-Up Definition</span>' +
'<ul>' +
'<li><a id="en-en" href="#" ' + clickstr +
'    <img src ="' + flagen + '" width="24" height="16" />' +
'    <img src ="' + flagen + '" width="24" height="16" />' +
'    English <> English</a></li>' +
'<li><a id="en-tr" href="#" ' + clickstr +
'    <img src ="' + flagen + '" width="24" height="16" />' +
'    <img src ="' + flagtr + '" width="24" height="16" />' +
'    English <> Turkish </a></li>' +
'<li><a id="tr-en" href="#" ' + clickstr +
'    <img src ="' + flagtr + '" width="24" height="16" />' +
'    <img src ="' + flagen + '" width="24" height="16" />' +
'    Turkish <> English</a></li> ' +
'<li><a id="tr-tr" href="#" ' + clickstr +
'    <img src ="' + flagtr + '" width="24" height="16" />' +
'    <img src ="' + flagtr + '" width="24" height="16" />' +
'    Turkish <> Turkish</a></li>' +
'<li><a id="translateme" href="#" ' + clickstr +
'    <img src ="' + flagtrans + '" width="24" height="16" />' +
'    <img src ="' + flagtrans + '" width="24" height="16" />' +
'    Translate to >></a></li>' +
'</ul>' +
'<a style="color:#009EC6 !important;margin: 0 !important;padding: 0 !important;font-size:smaller !important;float:right;" href="http://www.rentanadviser.com/en/dictionary/Double-click-Dictionary-Lookup.aspx" onclick="closedicwin_x_y_z();" title_xyz="Add Double-Click Dictionary to you website" target="_blank">Add to your website!</a>' +
'<br>'+
'<a style="color:#009EC6 !important;margin: 0 !important;padding: 0 !important;font-size:smaller !important;float:right;" href="http://www.rentanadviser.com/en/products/dictionary/free-english-turkish_turkish-english-dictionary.aspx" onclick="closedicwin_x_y_z();" title_xyz="Download FREE Translator-Dictionary" target="_blank">Download Desktop Version <b>(FREE)</b></a>' +
'</div>';

function popupdicsubmenuclicked(dictype) {
        pass_to_dictionary(lookup_xyz, dictype);
        $("#popupdicmenu").remove();
}
function pass_to_dictionary(text, dictype) {
    if (text > '') {
        var boxtop = "";
        var boxbottom = "";
        var html = ""
        var src = ""
        if (dictype == "translateme") {
            src = translatebaseurl + encodeURIComponent(text);
            var title_xyz = "Multilingual Pop-Up Translator";
        } else if (lookup_xyz.split(/[ -]/).length < maxAllowedWords) {
        title_xyz = "Double-Click Pop-Up Dictionary";
            src = dicbaseurl + dictype + "&word=" + encodeURIComponent(text);
        } else {return;}
            
        html = boxtop +
			 '<table border="0" style="table-layout:fixed !important;width:100% !important; margin-top:10px !important; text-align: center !important;"><tr>' +
			 '<td width="64px"  valign="top"><img id="loadin_x_y_z" style="vertical-align:middle;" alt="img" src="http://www.rentanadviser.com/en/dictionary/dblclickdic/loading.gif" /></td>' +
			 '<td><b><font color="#FF3300">'+title_xyz+'</font></b>&nbsp;&nbsp;<a href="http://www.rentanadviser.com/en/dictionary/Double-click-Dictionary-Lookup.aspx" target="_blank" title_xyz="rentanadviser.com">add to your website</a>' +
			 '</td><td width="30px"  valign="top"><img src="http://www.rentanadviser.com/en/dictionary/dblclickdic/close.gif" style="vertical-align:top;cursor:pointer;cursor:hand;"  onmousemove=\"closedicwin_x_y_z();\"  title_xyz="Close"/></td></tr></table>' +
			 "<IFRAME id='frame_x_y_z' SRC='" + src + "' WIDTH=560px; HEIGHT=" + width_ + " MARGINWIDTH=0 MARGINHEIGHT=0 FRAMEBORDER=no scrolling='vertical' style='margin:15px !important; margin-top:0px !important; position:relative !important; left:0px;top:0px;' ></IFRAME>" +
			boxbottom;
        $('#dicwin_x_y_z').html(html);
        $('#dicwin_x_y_z').css("zIndex", 999999999);
        $('#dicwin_x_y_z').css("display", '');
        $('#dicwin_x_y_z').css({ 'left': $(window).width() / 2 - $("#dicwin_x_y_z").width() / 2, 'top': $(window).height() / 2 - $("#dicwin_x_y_z").height() / 2 });
        $('#dicwin_x_y_z').fadeIn("slow", function() {
            $('#frame_x_y_z', top.document).load(function() { $('#loadin_x_y_z').fadeOut(500); });
        });
    }
    clearSelectedText();    
}

function closedicwin_x_y_z() {
    oldtext = '';
    $('#dicwin_x_y_z').fadeOut("fast");
    $("#popupdicmenu").remove();
}

function setupDoubleClick() {
    //show menu
    var target = "popup";
    var showLayer = function(e) {
        e.preventDefault();
        var rightclick;
        if (!e) var e = window.event;
        if (e.which) rightclick = (e.which == 3);
        else if (e.button) rightclick = (e.button == 2);
        if (rightclick == true) return;

        lookup_xyz = getSelectedText(); 
               
        lookup_xyz = lookup_xyz.replace(/[\.\*\?;!()\+,\[:\]<>^_`\[\]{}~\\\/\"\'=]/g, " ");
        lookup_xyz = lookup_xyz.replace(/\s+/g, " ");
        var lngth = lookup_xyz.replace("/\s/g", "").length;

        if (lookup_xyz != null && lngth > 1 && lngth <= maxAllowedtextlength) {
            if (maxAllowedWords && lookup_xyz.split(/[ -]/).length > maxAllowedWords) {
                $('.diccc').css("display", "none");
                //return;
            }
            //append the menu to the DOM only once
            if ($("#popupdicmenu").length == 0) {
                $("body").append(popupdicmenu);
            } else { return; }
            //move the layer at the cursor position
            $("#popupdicmenu").map(function() {
                var top = e.pageY;
                var left = e.pageX;
                if (top < 0) top = 0;
                if (left < 0) left = 0;
                if (left + $("#popupdicmenu").outerWidth() > $(window).width()) left = $(window).width() - $("#popupdicmenu").outerWidth();
                if (top + $("#popupdicmenu").outerHeight() > ($(window).height() + $(document).scrollTop())) top = $(window).height() - $("#popupdicmenu").outerHeight() + $(document).scrollTop();
                top += 20;
                $(this).css({ 'left': left, 'top': top });
            });
            oldtext = lookup_xyz;
        } else {
            oldtext = '';
            $("#popupdicmenu").remove();
            //clearSelectedText();
        }
    };
    var area = "body";
    $(area).mouseup(function(e) {
        var targ;
        if (!e) var e = window.event;
        if (e.target) targ = e.target;
        else if (e.srcElement) targ = e.srcElement;
        if (targ.nodeType == 3) // defeat Safari bug
            targ = targ.parentNode;
        if (targ.type == "text") { $("#popupdicmenu").remove(); return; }
        if (oldtext != getSelectedText()) { showLayer(e); }
    });
    $(area).dblclick(function() { });    
}

function getSelectedText() {
    try {
        if (window.getSelection)
            return window.getSelection().toString();
        else if (document.getSelection)
            return document.getSelection();
        else if (document.selection)
           return document.selection.createRange().text;
        return "";
    } catch (err) {
        //alert(err.description);
        return "";
    };
}

function clearSelectedText() {
    try {
        if (window.getSelection) {
            if (window.getSelection().empty) {  // Chrome
                window.getSelection().empty();
            } else if (window.getSelection().removeAllRanges) {  // Firefox
                window.getSelection().removeAllRanges();
            }
        } else if (document.selection) {  // IE?
            document.selection.empty();
        }

    } catch (err) {
        return "";
    };
}

var mytext = "<div id='dicwin_x_y_z'></div>"

document.write(mytext);
$(document).ready(function() {

    var styles = "#popupdicmenu{border:solid 1px #aaa;width:210px;background:#fff;position:absolute;padding:5px;z-index:999999999;" +
    "-moz-border-radius:5px;" +
    "-khtml-border-radius:5px;" +
    "-webkit-border-radius:5px;" +
    "-moz-box-shadow:rgba(200,200,200,1) 0 0px 10px;" +
    "-webkit-box-shadow:rgba(200,200,200,1) 0 0px 10px;" +
    "-khtml-box-shadow:rgba(200,200,200,1) 0 0px 10px;" +
    "text-shadow: #CCCCCC 0.1em 0.1em 0.1em !important;" +
    stylegeneral +
    "}" +
    "#popupdicmenu ul{padding:0;margin:0;list-style-type: none !important;}" +
    "#popupdicmenu ul li{padding:0px; background-image:none !important;border-bottom: solid 1px #eee;display:block;}" +
    "#popupdicmenu ul li:hover{background-color:#660033;}" +
    /*"#popupdicmenu ul li:first-child {border-top:solid 1px #eee;}" +*/
    "#popupdicmenu ul li a:hover{color:#fff;text-decoration:none;background-color:#660033;text-shadow:none !important;}" +
    "#popupdicmenu ul li a{padding:2px !important;height:18px; display:block;color:#660033;text-decoration:none !important;font-weight:bold;" + stylegeneral + "}" +
    "#popupdicmenu img{border:solid 1px #fff;background:#fff; height:16px;vertical-align:middle;}" +
    "#dicwin_x_y_z {display:none;padding:0 !important; position:absolute !important;position:fixed !important;" +
    "              width: 590px !important; height:397px !important;" +
    "              border:solid 0px #FF0033; overflow: hidden !important;" +
    "              background-image: url('http://www.rentanadviser.com/en/dictionary/dblclickdic/box.png');" +
    "              background-repeat:no-repeat; }";
    var css = document.createElement('style');
    css.type = 'text/css';
    if (css.styleSheet) css.styleSheet.cssText = styles;
    else css.appendChild(document.createTextNode(styles));
    document.getElementsByTagName("head")[0].appendChild(css);

    setupDoubleClick();
});
