/*
This class provides language translation functionality to Web Part or html controls.
Author: Justin Haffey, Joel Cade
Company: MicroLink, LLC
Date: 08-19-2009
*/

function Translate(languageCode)
{
    var ctrl = new LanguageCtrl();
    ctrl.UpdateMessage(languageCode);
    ctrl.DoTranslate(languageCode);
}

// Adds a border to flag corresponding to the selected language
function SetFlagStyles()
{
    var ctrl = new LanguageCtrl();
    var currentLang = ctrl.CurrentLanguage();
	
	var langToolbar = document.getElementById("langToolbar");
	var flagArray = langToolbar.getElementsByTagName("img");
	
    var rootImgPath = "/_layouts/images/MicroLink.Communications.Translation/flag-";
	
	if (currentLang == null || currentLang == "")
	{
		currentLang = "en";
	}
	
	for (var i=0; i < flagArray.length; i++)
	{
		var flagImg = flagArray[i];
		
		if (flagImg.id == currentLang + "-flag")
		{
			flagImg.src = rootImgPath + currentLang + "-grad.gif";
		}
	}
    
    return;    
}

// define class
function LanguageCtrl()
{
    this.QsVariable = "trnlang";
}

LanguageCtrl.prototype.Initialize = function()
{

}

// update response message
LanguageCtrl.prototype.UpdateMessage = function(languageCode)
{
    document.getElementById("langNotification").style.display = "block";
    var langNot = document.getElementById("langMessage");
        
    langNot.innerHTML = langNot.innerHTML.replace("|##|", this.GetLangDisplay(languageCode));
}

// change the language
LanguageCtrl.prototype.DoTranslate = function(languageCode)
{
    // get current url
    var url = this.GetUrl();
    
    // get the old and new languages
    var oldLang = this.QsVariable + "=" + this.CurrentLanguage();
    var newLang = this.QsVariable + "=" + languageCode;

    if (url.indexOf(oldLang) > -1) // if it is set in the query string
    {
        // replace the old with the new
        url = url.replace(oldLang, newLang);
    } 
    // there is no language currently in the querystring
    else
    {
        // check for the first parameter character.
        // if it exists, we need to append an "&".
        if(url.indexOf("?") > 0)
        {
            url = url + "&" + this.QsVariable + "=" + languageCode;
        }
        // if it doesnt exist, append a "?".
        else
        {
            url = url + "?" + this.QsVariable + "=" + languageCode;
        }
        
    }
    
    this.SetUrl(url);
}

// returns the current language in the querystring, or null
LanguageCtrl.prototype.CurrentLanguage = function()
{
    var url = this.GetUrl();
    var start;
    var languageCode;
    
    // check for qs variable
    if(url.indexOf(this.QsVariable) > 0)
    {
        start = url.indexOf(this.QsVariable);
        var startOfLanguageCode = start + this.QsVariable.length + 1;
        var lengthOfLanguageCode = -1;
        
        if(url.indexOf("&",startOfLanguageCode) > 0)
        {
            lengthOfLanguageCode = url.indexOf("&",startOfLanguageCode) - startOfLanguageCode;
        }
        else
        {
            lengthOfLanguageCode = url.length - startOfLanguageCode;
        }       
        
        languageCode = url.substring(startOfLanguageCode,startOfLanguageCode + lengthOfLanguageCode);
        
        return languageCode;
    } else {
        if (document.cookie.length > 0)
        {
            start = document.cookie.indexOf(this.QsVariable + "=");
            if (start != -1)
            {
                start = start + this.QsVariable.length + 1;
                var end = document.cookie.indexOf(";", start);

                if (end == -1) end = document.cookie.length;
                
                languageCode = document.cookie.substring(start, end);
                
                return languageCode;
            }
        }
        return "";
    }
        
    return null;
}

// sets the current url
LanguageCtrl.prototype.SetUrl = function(newUrl)
{
    document.location.href = newUrl;
}

// returns the current url
LanguageCtrl.prototype.GetUrl = function()
{
    var url = document.location.href;
    
    return url;
}

// returns display of language code
LanguageCtrl.prototype.GetLangDisplay = function(languageCode)
{
    switch (languageCode)
    {
        case "en":
            return "English";
            break;
        case "fr":
            return "French / Fran&#231;ais";
            break;
        case "de":
            return "German / Deutsch";
            break;
        case "it":
            return "Italian / Italiano";
            break;
        case "pt":
            return "Portuguese / Portugu&#234;s";
            break;
        case "es":
            return "Spanish / Espa&#241;ol";
            break;
        case "nl":
            return "Dutch / Nederlands";
            break;
        case "sv":
            return "Swedish / Svenska";
            break;
        case "ru":
            return "Russian / &#1056;&#1091;&#1089;&#1089;&#1082;&#1080;&#1081;";
            break;
        case "el":
            return "Greek / &#917;&#955;&#955;&#951;&#957;&#953;&#954;&#940;";
            break;
        case "ar":
            return "Arabic / &#1575;&#1604;&#1593;&#1585;&#1576;&#1610;&#1577;";
            break;
        case "ja":
            return "Japanese / &#26085;&#26412;&#35486;";
            break;
        case "ko":
            return "Korean / &#54620;&#44397;&#50612;";
            break;
        case "zh_CN":
            return "Chinese Simplified / &#31616;&#20307;&#20013;&#25991;";
            break;
        case "zh_TW":
            return "Chinese Traditional / &#32321;&#39636;&#20013;&#25991;";
            break;
        case "fa":
            return "Afghanistan Farsi / فارسی";
            break;
        case "ps":
            return "Pashto / پښتو";
            break;
        case "prs":
            return "Dari / دری";
            break;
    }
}