/* Copyright IBM Corp. 2007, 2008  All Rights Reserved.              */

/* 5724-S31                                                          */
/* disclosure restricted by GSA ADP Schedule Contract with IBM Corp. */
/*                                                                   */
/*********************************************************************/

var QuickrLocaleUtil = {
    resource: null,
    
    loadStringFiles: function(sid, sbase, sname)
    {
        var langs = this.getLanguageList();
        
        //set the languages we found
        var locale = langs.shift();
		if(locale == 'zh-TW')
		{
			locale = 'zh-tw';
		}
		if(locale == 'pt-BR')
		{
			locale = 'pt-br';
		}
		if(locale == 'nb-NO')
		{
			locale = 'no';
		}

		djConfig.locale = locale;
        djConfig.extraLocale = langs;
        
        dojo.locale = djConfig.locale;
        dojo.extraLocale = langs;
        
        //to be used for localization			
        dojo.require("dojo.i18n");
        dojo.registerModulePath(sid, sbase);
        
        dojo.requireLocalization(sid, sname);
		
		
		
        dojo.requireLocalization("dojo.cldr", "number", dojo.locale);
        dojo.requireLocalization("dojo.cldr", "gregorian", dojo.locale);
        dojo.requireLocalization("dijit.form", "validate", dojo.locale);
		for (var i = 0; i < djConfig.extraLocale.length; i++) 
        {
            dojo.requireLocalization("dojo.cldr", "number", djConfig.extraLocale[i]);
            dojo.requireLocalization("dojo.cldr", "gregorian", djConfig.extraLocale[i]);
            dojo.requireLocalization("dijit.form", "validate", djConfig.extraLocale[i]);
            
        }
        
        this.resource = dojo.i18n.getLocalization(sid, sname);
        
    },
    
    loadCssFiles: function(sThemePath, sThemeCss)
    {
        /*
         //remove any legacy CSS files.  We're starting new!!!
         var linktags = document.getElementsByTagName("link");
         if (linktags) {
         for (var i = 0; i < linktags.length; i++) {
         var linktag = linktags[i];
         if (linktag.type == "text/css") {
         linktag.parentNode.removeChild(linktag);
         }
         }
         }
         */
        //load the css files
        var useLang = (QuickrLocaleUtil.getLanguageList())[0];
        useLang = useLang.split("-")[0];
        var CSSCOMMON_BASE = "/qphtml/skins/common/themes/nls/" + useLang + "/";        
        var cssList = new Array();
             
        cssList[cssList.length] = "/qphtml/skins/common/themes/nls/en/core.css";
        cssList[cssList.length] = "/qphtml/skins/common/themes/nls/en/defaultTheme.css";
        cssList[cssList.length] = CSSCOMMON_BASE + "core.css";
        cssList[cssList.length] = CSSCOMMON_BASE + "defaultTheme.css";
        /*
         if ( h_ClientBrowser && h_ClientBrowser.isIE() ) {
         cssList[cssList.length] = CSSCOMMON_BASE + "iehacks.css";
         }
         */
        if (dojo.isIE) 
        {
			cssList[cssList.length] = "/qphtml/skins/common/themes/nls/en/iehacks.css";
            cssList[cssList.length] = CSSCOMMON_BASE + "iehacks.css";
        }
        
        if (typeof(sThemeCss) != "undefined" && sThemeCss != null) 
        {
        		cssList[cssList.length] = sThemePath + "/nls/" + "en" + "/" + sThemeCss;
            cssList[cssList.length] = sThemePath + "/nls/" + useLang + "/" + sThemeCss;
        }
        
        var head = document.getElementsByTagName("head");
        
        if (head && head[0]) 
        {
            for (var i = 0; i < cssList.length; i++) 
            {
                var skinCss = document.createElement("link");
                skinCss.rel = ("stylesheet");
                skinCss.type = ("text/css");
                skinCss.href = (cssList[i]);
                head[0].appendChild(skinCss);
                
            }
            
        }
        
    },
    
    
    getLanguageList: function()
    {
		//this is the list of languages for which we have translations
		var validLanguages = new Array(		"en",
							"ar",
							"ca",
							"cs",
							"da",
							"de",
							"el",
							"es",
							"fi",
							"fr",
							"hu",
							"it",
							"iw",
							"ja",
							"ko",
							"nl",
							"no",
							"pl",
							"pt",
							"pt-BR",
							"ro",
							"ru",
							"sk",
							"sl",
							"sv",
							"th",
							"tr",
							"uk",
							"zh",
							"zh-TW",
							"he",
							"nb-NO"
							
						);
        
        
        
        var langList = new Array();
        var curLanguages = new Array();
        
        if (typeof(QuickrCGIVariables) != "undefined" && QuickrCGIVariables.HTTP_Accept_language) 
        {
            var curLanguages = new Array();
            
            var tempLanguages = QuickrCGIVariables.HTTP_Accept_language.split(",");
            for (var i = 0; i < tempLanguages.length; i++) 
            {
                if (tempLanguages[i].indexOf(";") > -1) 
                {
                    tempLanguages[i] = tempLanguages[i].split(";")[0];
                }
                curLanguages[curLanguages.length] = tempLanguages[i];
                
                if (tempLanguages[i].indexOf("-") > -1) 
                {
                    tempLanguages[i] = tempLanguages[i].split("-")[0];
                }
                curLanguages[curLanguages.length] = tempLanguages[i];
                
            }
            langList[0]=curLanguages[0];
            for (var i = 1; i < curLanguages.length; i++) 
            {
                for (var j = 0; j < validLanguages.length; j++) 
                {
                    if (curLanguages[i].toLowerCase() == validLanguages[j].toLowerCase() ) 
                    {
                        langList[langList.length] = curLanguages[i]; 
                    }
                }
            }
        }
        if (langList.length == 0) 
        {
            langList[langList.length] = validLanguages[0];
        }
        return langList;
        
        
    }
    
    
}



var QuickrGeneralUtil = {

    loadCGIVariables: function(sid)
    {
        var targ = document.getElementById(sid);
        
        if (targ) 
        {
            targ.src = this.getBaseUrl() + "/h_CGIVariables?Open";
        }
        
    },
    
    getBaseUrl: function()
    {
        var ret = "";
        
        var loc = window.location.href;
        var loc_l = loc.toLowerCase();
        var idx = loc_l.indexOf(".nsf");
        
        if (idx > -1) 
        {
            ret = loc.substring(0, idx + 4);
        }
        
        return ret;
    },
    
    
    getNodeValue: function(node, idx, key)
    {
        if (typeof(idx) == "undefined" || idx == null) 
            idx = 0;
        if (typeof(key) == "undefined" || key == null) 
            key = "text";        
        
        var ret = "";
        var x = node[idx];
        if (x) 
        {
            var y = x.getElementsByTagName(key);
            if (y && y[0] && y[0].firstChild) 
            {
                ret = x.getElementsByTagName(key)[0].firstChild.nodeValue;
            }
        }
        
        return ret;
    },
    
    
    //supporting functions
    getElementsByClassName: function(className, tag, elm)
    {
        var testClass = new RegExp("(^|\\s)" + className + "(\\s|$)");
        var tag = tag || "*";
        var elm = elm || document;
        var elements = (tag == "*" && elm.all) ? elm.all : elm.getElementsByTagName(tag);
        var returnElements = [];
        var current;
        var length = elements.length;
        for (var i = 0; i < length; i++) 
        {
            current = elements[i];
            if (testClass.test(current.className)) 
            {
                returnElements.push(current);
            }
        }
        return returnElements;
    },
    
    replaceQSValue: function(source, name, value)
    {
        var hasParam = false;
        source = "&" + source;
        
        
        idx = source.indexOf("&" + name + "=");
        
        if (idx > -1) 
            hasParam = true;
        
        if (!hasParam) 
        {
            source += "&" + name + "=" + value;
        }
        else 
        {
            source = source.substring(1);
            var params = source.split("&");
            source = "";
            for (var i = 0; i < params.length; i++) 
            {
                source += "&";
                if (params[i].indexOf(name + "=") > -1) 
                {
                    source += name + "=" + value;
                }
                else 
                {
                    source += params[i];
                }
            }
        }
        
        while (source.indexOf("&") == 0) 
        {
            source = source.substring(1);
        }
        
        return source;
        
    },
    
    getQSValue: function(source, sname, sdefault)
    {
        var ret = sdefault;
        var loc = source + "&=";
        
        var idx = loc.indexOf("&" + sname + "=");
        
        if (idx > -1) 
        {
            var sortx = loc.substring(idx);
            sortx = sortx.substring(sortx.indexOf("=") + 1);
            sortx = sortx.substring(0, sortx.indexOf("&"));
            
            ret = sortx;
            
        }
        
        return ret;
    },
    
    convertToNum: function(val)
    {
        var ALL_CHARS = "0123456789.";
        var ret = "";
        
        val += "..";
        
        for (var i = 0; i < val.length; i++) 
        {
            var chr = val.substring(i, i + 1);
            if (ALL_CHARS.indexOf(chr) > -1) 
            {
                ret += chr;
                if (chr == ".") 
                {
                    ALL_CHARS = "0123456789";
                }
            }
            
        }
        
        var num = ret;
        num++;
        num--;
        return num;
    }    
}

var QuickrDateUtil = {
	
    getDateString: function(date)
    {
        if (date == null) 
        {
            date = new Date();
        }
        var ret = "";
        var sep = haiku.h_Intl_DateString;
        var year = (haiku.h_Intl_Date4DigitYear || date.getFullYear() >= 2000) ? date.getFullYear() : date.getFullYear() - 1900;
				
        var month = (((date.getMonth() + 1) < 10) ? "0" : "") + (date.getMonth() + 1);
        var day = ((date.getDate() < 10) ? "0" : "") + date.getDate();
        if (haiku.h_Intl_DateFormat == haiku.kszDMY) 
        {
            ret = day + sep + month + sep + year;
        }
        else if (haiku.h_Intl_DateFormat == haiku.kszYMD) 
        {
            ret = year + sep + month + sep + day;
        }
        else 
        {
            ret = month + sep + day + sep + year;
        }
        return ret;
    },
    
    getTimeString: function(date)
    {
        if (date == null) 
        {
            date = new Date();
        }
        var ret = "";
        var am_pm = "";
        var hrs = date.getHours()
        var mins = date.getMinutes()
        var mins = ((mins < 10) ? "0" : "") + mins;
        if (!haiku.h_Intl_MilitaryTime) 
        {
            am_pm = ((hrs >= 12) ? ' ' + haiku.h_Intl_PMString : ' ' + haiku.h_Intl_AMString);
            hrs = ((hrs > 12) ? hrs - 12 : hrs);
            if (hrs == 0) 
                hrs = 12;
        }
        return (hrs + haiku.h_Intl_TimeString + mins + am_pm);
    },
    
    convertStringToDate: function(xmlDateTime)
    {
        if (xmlDateTime.indexOf('T') == -1) 
        {
            return new Date(xmlDateTime);
        }
        var xDate = xmlDateTime.split('T')[0];
        var iYear = xDate.substring(0, 4) - 0;
        var iMonth = xDate.substring(4, 6) - 1;
        var iDay = xDate.substring(6, 8) - 0;
        
        var xTime = xmlDateTime.split('T')[1].split(',')[0];
        var iHours = xTime.substring(0, 2) - 0;
        var iMins = xTime.substring(2, 4) - 0;
        var iSecs = xTime.substring(4, 6) - 0;
        
			
        return new Date(iYear, iMonth, iDay, iHours, iMins, iSecs);
    },
    
    returnDateTimeString: function(xmlDateTime)
    {
    
		
        var dDate = this.convertStringToDate(xmlDateTime);

        return this.getDateString(dDate) + ' ' + this.getTimeString(dDate);
    }
    
}

var QuickrCookieUtil = {

    hasCookie: function(name)
    {
        var ck = this.getCookie(name);
        return (ck != null && ck != "");
    },
    
    getCookie: function(name, xdefault)
    {
        if (typeof(xdefault) == "undefined") 
            xdefault = null
        var cname = name + "=";
        var dc = document.cookie;
        if (dc.length > 0) 
        {
            begin = dc.indexOf(cname);
            if (begin != -1) 
            {
                begin += cname.length;
                end = dc.indexOf(";", begin);
                if (end == -1) 
                    end = dc.length;
                return unescape(dc.substring(begin, end));
            }
        }
        return xdefault;
    },
    
    setCookie: function(name, value, expires)
    {
        document.cookie = name + "=" + escape(value) + "; path=/" + ((expires == null) ? "" : "; expires=" + expires.toGMTString());
    },
    
    delCookie: function(name)
    {
        document.cookie = name + "=; expires=Thu, 01-Jan-70 00:00:01 GMT" + "; path=/";
    },
    
    getExpireDate: function(nodays)
    {
        var UTCstring;
        Today = new Date();
        nomilli = Date.parse(Today);
        Today.setTime(nomilli + nodays * 24 * 60 * 60 * 1000);
        UTCstring = Today.toUTCString();
        return UTCstring;
    }
}

var QuickrXMLUtil = {

    getXMLDocFromString: function(stext)
    {
        var doc;
        
        // code for IE
        if (window.ActiveXObject) 
        {
            doc = new ActiveXObject("Microsoft.XMLDOM");
            doc.async = "false";
            doc.loadXML(stext);
        }
        // code for Mozilla, Firefox, Opera, etc.
        else 
        {
            var parser = new DOMParser();
            doc = parser.parseFromString(stext, "text/xml");
        }
        
        return doc;
    },
    
    getNodeValuesByTagName: function(xmlDoc, tagname)
    {
        var arr = new Array();
        
        var x = xmlDoc.getElementsByTagName(tagname);
        
        if (x && x.length > 0) 
        {
            for (var i = 0; i < x.length; i++) 
            {
                arr[arr.length] = x[i].childNodes[0].nodeValue;
            }
        }
        
        return arr
        
        
    },
    
    getXMLHttpRequestObj: function()
    {
        req = false;
        
        // branch for native XMLHttpRequest object
        if (window.XMLHttpRequest && !(window.ActiveXObject)) 
        {
            try 
            {
                req = new XMLHttpRequest();
            } catch (e) 
            {
                req = false;
            }
            
            // branch for IE/Windows ActiveX version
        }
        else if (window.ActiveXObject) 
        {
            try 
            {
                req = new ActiveXObject("Msxml2.XMLHTTP");
            } catch (e) 
            {
                try 
                {
                    req = new ActiveXObject("Microsoft.XMLHTTP");
                } catch (e) 
                {
                    req = false;
                }
            }
        }
        
        return req;
    },
    
    
    fireAjaxRequest: function(url, responseFunc)
    {    
        req = this.getXMLHttpRequestObj();
        if (req) 
        {
            req.onreadystatechange = function()
            {
                QuickrXMLUtil.processAjaxResponse(responseFunc);
            };
            req.open("GET", url, true);
            req.send("");
        }
    },
    
    processAjaxResponse: function(responseFunc)
    {
        if (req.readyState == 4) 
        {
            if (req.status == 200) 
            {
                eval(responseFunc)(req.responseText);
            }
        }
    }
    
}

var QuickrSetupUtil = {

    SHOWTYPE_ENTRY: "1",
    SHOWTYPE_PLACES: "2",
    
    SHOW_COOKIE_NAME: "ShowContentUI",
    SHOW_MYFILES_NAME: "ShowMyFiles",
    
    showQuickrContent: function(newType, external)
    {
        if (typeof(external) == "undefined") 
            external = false;
        
        var showMyFiles = QuickrGeneralUtil.getQSValue(window.location.href, this.SHOW_MYFILES_NAME, "");
        if (showMyFiles == "1") 
        {
            window.location.href = "/servlet/QuickrEntry?email=" + haiku.emailAddress;
            return;
        }
        
        if (typeof(newType) != "undefined" && newType != null) 
        {
            QuickrCookieUtil.setCookie(this.SHOW_COOKIE_NAME, newType);
        }
        else 
        {
            newType = QuickrGeneralUtil.getQSValue(window.location.href, "ShowType", "");
            if (newType != "") 
            {
                QuickrCookieUtil.setCookie(this.SHOW_COOKIE_NAME, newType);
            }
        }
                
        if (typeof(h_InstallType) == "undefined") 
            h_InstallType = this.SHOWTYPE_PLACES;
        
        if (external) 
        {
        
            var url = this.getSetupBase() + "&ShowType=" + QuickrCookieUtil.getCookie(this.SHOW_COOKIE_NAME);            
            window.location.href = url;
            
        }
        else 
        {        
            /*************************************
             * This array will store the style.display values for the three classes of elements
             *
             * First is the elements for Places-specific content
             * Second is the elements for shared content
             * This is the elements for the entry stuff only
             **************************************/
            var arrShow;
            
            if (h_InstallType == this.SHOWTYPE_ENTRY) 
            { //THIS IS AN ENTY INSTALL...  SHOW ONLY ENTRY STUFF
                arrShow = new Array("none", "none", "block");
                
            }
            else if (h_InstallType == this.SHOWTYPE_PLACES) 
            { //THIS IS AN FULL INSTALL...  SHOW ALL STUFF
                var checkType = h_InstallType;
                if (QuickrCookieUtil.hasCookie(this.SHOW_COOKIE_NAME)) 
                {
                    checkType = QuickrCookieUtil.getCookie(this.SHOW_COOKIE_NAME);
                }
                
                var id_p = document.getElementById("typePlaces");
                var id_f = document.getElementById("typeFiles");
                
                if (checkType == this.SHOWTYPE_ENTRY) 
                {
                    arrShow = new Array("none", "block", "block");
                    
                    if (id_p) 
                        id_p.className = id_p.className.replace("selected", "");
                    if (id_f) 
                        id_f.className += " selected";
                    
                }
                else if (checkType == this.SHOWTYPE_PLACES) 
                {
                    arrShow = new Array("block", "block", "none");
                    
                    if (id_p) 
                        id_p.className += " selected";
                    if (id_f) 
                        id_f.className = id_f.className.replace("selected", "");
                }                
            }
            
            if (typeof(arrShow) != "undefined") 
            {
                var els_p = QuickrGeneralUtil.getElementsByClassName("QuickrPlacesContent"); //places-specific ui
                var els_s = QuickrGeneralUtil.getElementsByClassName("QuickrSharedContent"); //shared ui to be displayed on full install
                var els_f = QuickrGeneralUtil.getElementsByClassName("QuickrFilesContent"); //files-specific ui		
                for (var i = 0; i < els_p.length; i++) 
                {
                    els_p[i].style.display = arrShow[0];
                }
                for (var i = 0; i < els_s.length; i++) 
                {
                    els_s[i].style.display = arrShow[1];
                }
                for (var i = 0; i < els_f.length; i++) 
                {
                    els_f[i].style.display = arrShow[2];
                }
            }
        }
        
    },
    
    showMyFiles: function()
    {
    
        var url = this.getSetupBase() + "&Login&" + this.SHOW_MYFILES_NAME + "=1";
        
        window.location.href = url;
    },
    
    getSetupBase: function()
    {
    
        var xbase = "LotusQuickr";
        if (typeof(getHaikuSubDir) == "function") 
        {
            xbase = getHaikuSubDir();
        }
        var setupHaiku = xbase.toLowerCase();
        var url = "/" + xbase + "/" + setupHaiku + "/Main.nsf/h_Toc/22049553d70e00ef85256bb60054a7cb/?OpenDocument";
        
        return url;
        
    }
    
}

