﻿function CenterPlate(element,width,height) {

    // retrieve required dimensions
    var browserDims = document.viewport.getDimensions();
    element.style.width = width + "px";
    element.style.height = height + "px";

    // calculate the center of the page using the browser and element dimensions
    var y = (browserDims.height - height) / 2;
    var x = (browserDims.width - width) / 2;

    element.style.left = x + "px";
    element.style.top = y + "px";
    element.style.position = "absolute";

    //element.scrollTo();
}



    


function GoogleTranslate(textareaID, sourceListID, targetListID) {
    var textArea = $(textareaID);
    if (document.selection) { //IE
        textArea.selectedText = document.selection.createRange().text;
        textArea.selectionStart = textArea.value.indexOf(textArea.selectedText);
        textArea.selectionEnd = textArea.selectionStart + textArea.selectedText.length;
        if (textArea.selectionStart < 0) {
            textArea.selectionStart = 0;
            textArea.selectionEnd = 0;
        }
    }
    else if (!!textArea.setSelectionRange) { //FF
        textArea.selectedText = textArea.value.substring(textArea.selectionStart, textArea.selectionEnd);
    }
    /*
    alert("Selection Start==> " + textArea.selectionStart + "\n" +
      "Selection End  ==> " + textArea.selectionEnd + "\n" +
      "Selected Text  ==> " + textArea.selectedText + "\n" +
      "TextArea Value ==> " + textArea.value);
      */



    sourceList = $(sourceListID);
    targetList = $(targetListID);

    var sourceCulture = sourceList.options[sourceList.selectedIndex].value;
    var targetCulture = targetList.options[targetList.selectedIndex].value;

    google.language.translate(textArea.selectedText.replace(/\n/g, '<br />'), sourceCulture.substring(0, 2), targetCulture.substring(0, 2), function(result) {
        if (!result.error) {
            var container = document.getElementById("translation");
            //alert(result.translation);

            textArea.value = textArea.value.replace(textArea.selectedText, result.translation).replace(/<br \/> /g, '\n').replace(/<br \/>/g, '\n');


        }
    });
    
}

function MaximizePlate(element) {

    var browserDims = document.viewport.getDimensions();
    element.style.width = browserDims.width + "px";
    element.style.height = browserDims.height + "px";

}

var timer;




function Translator() {

    this.AttachMenu = function(sourceID, targetID) {

        clearTimeout(timer);

        Translate.RemoveMenu();

        var sourceElement = $(sourceID);
        var targetElement = $(targetID);
        var objMenuLink = $('TranslateTextboxMenuLink');

        objMenuLink.setAttribute("onclick", "javascript:Translate.ShowTranslationWindow('" + sourceID + "','" + targetID + "');");

        var objMenu = $('TranslateTextboxMenu');


        objMenu.show();
        objMenu.clonePosition(sourceElement, { setHeight: false, setWidth: false, offsetLeft: 0, offsetTop: sourceElement.offsetHeight });
        objMenu.clonePosition(sourceElement, { setHeight: false, setWidth: false, offsetLeft: 0, offsetTop: sourceElement.offsetHeight });

        timer = setTimeout("Translate.RemoveMenu()", 2000);

    }

    this.RemoveMenu = function() {


        var objMenu = $('TranslateTextboxMenu');

        objMenu.hide();

    }

    this.ShowTranslationWindow = function (sourceID, targetID) {

        var sourceElement = $(sourceID);
        var targetElement = $(targetID);
        var hiddenElement = $(targetID.replace(/TranslatorTextNew/, "TranslatorTextHidden"));

        var objPlateClose = $('TranslateWindowCloseBack');
        var objPlateBack = $('TranslateWindowPlateBack');
        var objPlate = $('TranslateWindowPlate');

        var sourceElementType = jQ("#" + sourceID).attr('type');


        if (sourceElementType == "text") {
            targetElement.value = sourceElement.value;
            hiddenElement.value = sourceElement.value;
        }
        else if (sourceElementType.indexOf("select") != -1) { // checks if the sourceElement is a listbox
            targetElement.value = jQ("#" + sourceID + " :selected").text();
            hiddenElement.value = jQ("#" + sourceID + " :selected").text();
        }

        //CenterPlate(objPlate, 600, 640);
        objPlate.show();
        jQ('#TranslateWindowPlate').center();

        //CenterPlate(objPlateBack, 620, 660);
        objPlateBack.show();
        jQ('#TranslateWindowPlateBack').center();

        objPlateClose.setAttribute('onclick', 'Translate.CloseTranslationWindow()');
        objPlateClose.show();
        MaximizePlate(objPlateClose);

        Translate.CheckTranslationArchive(sourceID, targetID);

        extsourceID = sourceID;
        exttargetID = targetID;

    }

    this.CheckTranslationArchive = function (sourceID, targetID) {

        $('TranslationSavedHolder').innerHTML = "";

        var sourceElement = $(sourceID);
        var targetElement = $(targetID);

        var sourceValue = "";

        var sourceElementType = jQ("#" + sourceID).attr('type');

        if (sourceElementType == "text") {
            sourceValue = encodeURIComponent(sourceElement.value.replace(/\n/g, '<br/>').replace(/[\n\r\t]/g, ''));
        }
        else if (sourceElementType.indexOf("select") != -1) { // checks if the sourceElement is a listbox
            sourceValue = encodeURIComponent(jQ("#" + sourceID + " :selected").text().replace(/\n/g, '<br/>').replace(/[\n\r\t]/g, ''));
        }


        new Ajax.Request('AjaxCalls/GetSavedTranslations.aspx?SourcePhrase=' + sourceValue + '&msmademedothis=' + new Date().getTime(),
        {
            method: 'get',
            onSuccess: function (transport) {
                var response = transport.responseText || "no response text";

                if (response != "no response text") {

                    var translationStrings = response.split('||');

                    for (i = 0; i < translationStrings.length; i++) {

                        var translationString = translationStrings[i].split(':TD:');

                        $('TranslationSavedHolder').innerHTML += "<a class=\"breadblue\" href=\"javascript:;\" onclick=\"javascript:Translate.AttachSavedTranslation('" + translationString[0] + "','" + translationString[2] + "','" + targetID + "');\">" + translationString[1] + "</a>&nbsp;&nbsp;";

                    }
                }

            },
            onFailure: function () { /*alert('Something went wrong...')*/ }
        });

    }
    

    this.CloseTranslationWindow = function() {

        var objPlateClose = $('TranslateWindowCloseBack');
        var objPlateBack = $('TranslateWindowPlateBack');
        var objPlate = $('TranslateWindowPlate');

        objPlate.hide();
        objPlateBack.hide();
        objPlateClose.hide();


        $('TranslationSaved').hide();

    }

    this.AttachSavedTranslation = function(culture, translation, targetID) {

        var targetElement = $(targetID);

        targetElement.value = translation.replace(/<br\/>/g, '\n');

        $('ctl00_ctl00_TranslatorLanguageChoose').value = culture;

    }
}

var Translate = new Translator();

var extsourceID;
var exttargetID;

