﻿var advancedClicked = false;
var simpleSearch = false;
var filterClicked = false;
var bDontShowMsg = false;


function advTransOpt(cb)
{
    var combo = document.getElementById("languageTo");
    var fHolder = document.getElementById("filterHolder");
    
    if (cbs == false)
    {
        advancedClicked = false;
        combo.style.display = '';
        fHolder.style.display = 'none';
        simpleSearch = true;
        bDontShowMsg = false;
    }
    else
    {
        advancedClicked = true;
        combo.style.display = 'none';
        fHolder.style.display = '';
        fHolder.style.display = 'inline';
        simpleSearch = false;
    }
}

function getChecked()
{
    frm = document.forms[0];
    var str = "";

    for (i = 0; i < frm.length; i++)
        if (frm.elements[i].type == "checkbox")
            if (frm.elements[i].checked)
                str += frm.elements[i].value + ",";
                
                return str;
}

function checkAll(cBox)
{
    frm = document.forms[0];
    if (cBox.checked == false)
            check = false;
        else
            check = true;
            
    for (i = 0; i < frm.length; i++)
        if (frm.elements[i].id != cBox.id)
            //if (frm.elements[i].id > 1)
                frm.elements[i].checked = check;
}

var curleft = curtop = 0;
function toggleMenu(mnuState, mnuCaller, funToCall)
{
    var mnuState = document.getElementById(mnuState);
    
    if (mnuState.style.display == '') // visible
        mnuState.style.display = 'none';
    else
    {
        if (!filterClicked || mnuState.innerHTML == "")
        {
            funToCall();
            filterClicked = true;
        }   
        findPos(mnuCaller);
        if (mnuState.style.height.replace(/p.*/, '') > 250)
		    mnuState.style.height = "250px";
		else
		    mnuState.style.height = "auto";
    
        mnuState.style.left = curleft + 'px';
        mnuState.style.top = curtop + 22 + 'px';
        mnuState.style.display = '';
        curleft = curtop = 0;
        
        setFocus();
    }
}

var t;

function showMenu(menuHolder)
{
//alert(menuHolder);
 clearInterval(t);
 // positioning menu
 document.getElementById(menuHolder).style.display = 'inline';
}

function delayedMenuDivClose(divName)
{
 t = setInterval("closeMenuDiv('" + divName + "')", 300);
}

function closeMenuDiv(mnuState)
{
 mnuState = document.getElementById(mnuState);

 if (mnuState.style.display == '' || mnuState.style.display == 'inline') // visible or inline
 {
 mnuState.style.display = 'none';
 }
 clearInterval(t);
}

function closeMenu(mnuState)
{
    clearInterval(t);
    
    var mnuState = document.getElementById(mnuState);

    if (mnuState.style.display == '') // visible
    {
        mnuState.style.display = 'none';
    }
}


function findPos(obj)
{
//    var curleft = curtop = 0;

	if (obj.offsetParent)
	{
	    do
	    {
		    curleft += obj.offsetLeft;
		    curtop += obj.offsetTop;
		} while (obj = obj.offsetParent);
    }
}


function isEnter(evt)
{
    var keyCode = null;

    if(evt.which)
    {
        keyCode = evt.which;
    }
    else if(evt.keyCode)
    {
        keyCode = evt.keyCode;
    }

    if(keyCode == 13)
    {
        return true;
    }
    return false;
}

function isEscape(evt)
{
    var keyCode = null;

    if(evt.which)
    {
        keyCode = evt.which;
    }
    else if(evt.keyCode)
    {
        keyCode = evt.keyCode;
    }

    if(keyCode == 27)
    {
        return true;
    }
    return false;
}

function isValidMail(mail)
{
    var field = document.getElementById(mail).value;

    var regex = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
    if (!regex.test(field))
        exAlert("Email error", "Email address is not valid!");
    
    return regex.test(field);
}

function registrationValidate()
{
    var uname = document.getElementById("txtUsernameReg").value;
    var pwd1 = document.getElementById("txtPasswordReg").value;
    var pwd2 = document.getElementById("txtPasswordRepeatReg").value;
    
    if (!isValidMail('txtEmailAddressReg'))
        return false;
    
    if (uname == "")
    {
        exAlert("Username error", "You must provide a username!");
        
        return false;
    }
    
    if (pwd1 == "" || pwd2 == "")
    {
        exAlert("Password error", "You must provide both passwords!");
        
        return false;
    }
    
    if (pwd1 != pwd2)
    {
        exAlert("Password error", "Passwords don't match!");
        
        return false;
    }
    
    return true;
}

function onSearchKey(e)
{
    if (isEnter(e))
    {
        do_the_translation();
        return false;
    }
}


function onDlgEnterPress(e, fun)
{
    if (isEscape(e))
    {
        closeDlg();
        return false;
    }

    if (isEnter(e))
    {
        eval(fun);
        return false;
    }
}


function showLogin()
{
    var search = document.getElementById("txtSearch");
    var login = document.getElementById("login");
    var register = document.getElementById("register");
    var email = document.getElementById("txtEmailAddress");

    if (login.style.display == '')
    {
        login.style.display = 'none';
        search.focus();
    }
    else
    {
//        login.style.top = 30 + 'px';
//        if (window.innerWidth)
//            login.style.left = window.innerWidth - 265 + 'px';
//        else if (document.body.offsetWidth)
//            login.style.left = document.body.offsetWidth - 265 + 'px';
        
        login.style.display = '';
        register.style.display = 'none';
        email.focus();
    }
}


function showRegister()
{
    var search = document.getElementById("txtSearch");
    var register = document.getElementById("register");
    var login = document.getElementById("login");
    var email = document.getElementById("txtEmailAddressReg");

    if (register.style.display == '')
    {
        register.style.display = 'none';
        search.focus();
    }
    else
    {        
        register.style.display = '';
        login.style.display = 'none';
        email.focus();
    }
}

function loginEnterToProceed(evt)
{    
    if (isEnter(evt))
    {
        var email = document.getElementById("txtEmailAddress");
        var pwd = document.getElementById("txtPassword");
    
    
        if (email.value != "")
            if (pwd.value == "")
                pwd.focus();
            
        if (pwd.value != "")
            if (email.value == "")
                email.focus();
            
        if (email.value != "" && pwd.value != "")
            log_me_in();
    }
}

function registerEnterToProceed(evt)
{    
    if (isEnter(evt))
    {
        var email = document.getElementById("txtEmailAddressReg");
            
        if (email.value != "")
            register_me();
    }
}

function esc (txt)
{
    if (txt == null) return;
    
    txt = txt.replace(/\\/g, "\\\\").replace(/'/g, "\\'");

    return txt;
}

function string_escape(input)
{
    return esc(encodeURIComponent ? encodeURIComponent(input) : escape(input));
}

function htmlenc(result)
{
    var result = result.replace(/\&/g,'&amp;');
    result = result.replace(/\</g,'&lt;');
    result = result.replace(/\>/g,'&gt;');
    
    return result;
}

var itemSelected = '';
function itemSelector(name, fion, ttl)
{
    if (itemSelected != '')
        $('#' + itemSelected).removeClass();

    $('#' + name).addClass("adminMenuSelect");
    fion();
    itemSelected = name;
    
    document.title = ttl;
}

function loadAdminPage()
{
    var param = '';
    var loc = '' + document.location;
    if (loc.match('admin.aspx#') != null)
    {
        param = loc.replace(/.*#(\w*)/gim, '$1'); // .replace(/.*\/(\w*)/gim, '$1');
        switch (param)
        {
            case "global-changes":
                itemSelector('global-changes', global_changes, 'Global changes');
            break;
            
            case "word-management":
                itemSelector('word-management', word_management, 'Word management');
            break;
            
            case "my-word-history":
                itemSelector('my-word-history', my_word_history, 'My word history');
            break;
            
            case "favorite-languages":
                itemSelector('favorite-languages', favorite_languages, 'Favorite languages');
            break;
            
            case "user-management":
                itemSelector('user-management', user_management, 'User management');
            break;
            
            case "user-feedback":
                itemSelector('user-feedback', user_feedback, 'User feedback');
            break;
        }
    }
}