home *** CD-ROM | disk | FTP | other *** search
Wrap
Text File | 2009-12-23 | 1.6 MB | 41,307 lines
Text Truncated. Only the first 1MB is shown below. Download the file for the complete contents.
var EBConduitHelper_CT2384137 = { CommonID: 'Common', GetId: function(bIsCommon) { var strId = (bIsCommon) ? this.CommonID : "CT2384137"; return strId; }, stroreKey: function(strKey, strValue, bIsCommon) { var strCTID = this.GetId(bIsCommon); try { var objHelper = oToolbar_CT2384137.keysStorage.manager; objHelper.storeKey(strCTID, strKey, strValue); } catch (e) { EBLogging_CT2384137.LogToConsole(e); } }, retrieveKey: function(strKey, bIsCommon) { var strCTID = this.GetId(bIsCommon); try { var objHelper = oToolbar_CT2384137.keysStorage.manager; var strValue = objHelper.retrieveKey(strCTID, strKey); return strValue; } catch (e) { EBLogging_CT2384137.LogToConsole(e); } }, deleteKey: function(strKey, bIsCommon) { var strCTID = this.GetId(bIsCommon); try { var objHelper = oToolbar_CT2384137.keysStorage.manager; objHelper.deleteKey(strCTID, strKey); } catch (e) { EBLogging_CT2384137.LogToConsole(e); } }, update404redirectUrl: function(strUrl, bIsRemove, bIaAll) { if (strUrl) { try { strUrl = EBActionManager_CT2384137.ConvertAliasesUrl(strUrl); var objHelper = oToolbar_CT2384137.fix404.manager; if (bIsRemove) if (bIaAll) objHelper.unregisterAllWindows404redirectUrl(strUrl, EBGlobalConsts_CT2384137.ToolbarCTID); else objHelper.unregisterSingleWindow404redirectUrl(strUrl, EBGlobalConsts_CT2384137.ToolbarCTID); else if (bIaAll) objHelper.registerAllWindows404redirectUrl(strUrl, EBGlobalConsts_CT2384137.ToolbarCTID); else objHelper.registerSingleWindow404redirectUrl(strUrl, EBGlobalConsts_CT2384137.ToolbarCTID); } catch (e) { EBLogging_CT2384137.LogToConsole(e); } } } } // new encryption class // the old class adds some illigal chars when used on small strings var EBEncryption_CT2384137 = { keyStr : "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=", hexStr : "0123456789ABCDEF", encodeHex : function(input) { var output = ""; var chr1 = ""; var enc1, enc2 = ""; var i = 0; do { chr1 = input.charCodeAt(i++); enc1 = chr1 >> 4; enc2 = chr1 & 15; output = output + this.hexStr.charAt(enc1) + this.hexStr.charAt(enc2); } while (i < input.length); return output; }, decodeHex : function(input) { var output = ""; var chr1, chr2 = ""; var enc1 = ""; var i = 0; // remove all characters that are not A-F, a-F, or 0-9 input = input.replace(/[^A-Fa-f0-9]/g, ""); input = input.toUpperCase(); do { chr1 = this.hexStr.indexOf(input.charAt(i++)); chr2 = this.hexStr.indexOf(input.charAt(i++)); enc1 = chr2 | (chr1 << 4); output = output + String.fromCharCode(enc1); } while (i < input.length); return output; }, encode64 : function(input) { var output = ""; var chr1, chr2, chr3 = ""; var enc1, enc2, enc3, enc4 = ""; var i = 0; do { chr1 = input.charCodeAt(i++); chr2 = input.charCodeAt(i++); chr3 = input.charCodeAt(i++); enc1 = chr1 >> 2; enc2 = ((chr1 & 3) << 4) | (chr2 >> 4); enc3 = ((chr2 & 15) << 2) | (chr3 >> 6); enc4 = chr3 & 63; if (isNaN(chr2)) { enc3 = enc4 = 64; } else if (isNaN(chr3)) { enc4 = 64; } output = output + this.keyStr.charAt(enc1) + this.keyStr.charAt(enc2) + this.keyStr.charAt(enc3) + this.keyStr.charAt(enc4); chr1 = chr2 = chr3 = ""; enc1 = enc2 = enc3 = enc4 = ""; } while (i < input.length); return output; }, decode64 : function(input) { var output = ""; var chr1, chr2, chr3 = ""; var enc1, enc2, enc3, enc4 = ""; var i = 0; // remove all characters that are not A-Z, a-z, 0-9, +, /, or = input = input.replace(/[^A-Za-z0-9\+\/\=]/g, ""); do { enc1 = this.keyStr.indexOf(input.charAt(i++)); enc2 = this.keyStr.indexOf(input.charAt(i++)); enc3 = this.keyStr.indexOf(input.charAt(i++)); enc4 = this.keyStr.indexOf(input.charAt(i++)); chr1 = (enc1 << 2) | (enc2 >> 4); chr2 = ((enc2 & 15) << 4) | (enc3 >> 2); chr3 = ((enc3 & 3) << 6) | enc4; output = output + String.fromCharCode(chr1); if (enc3 != 64) { output = output + String.fromCharCode(chr2); } if (enc4 != 64) { output = output + String.fromCharCode(chr3); } chr1 = chr2 = chr3 = ""; enc1 = enc2 = enc3 = enc4 = ""; } while (i < input.length); return output; } } function parseBool(str) { if (!str) return false; return str.toLowerCase() == "true"; }; function dumpAllProp(obj) { if(!obj) return; for (var i in obj) EBLog(i + " = " + obj[i]); }; if (typeof (stringFormat) == "undefined") { stringFormat = function(strText) { if (arguments.length <= 1) return strText; var replaceString = ""; for (var i = 0; i < arguments.length - 1; i++) { replaceString = "{" + i.toString() + "}"; strText = strText.replace(replaceString, arguments[i + 1]); } return strText; }; } if (typeof (stringEquals) == "undefined") { stringEquals = function(str1, str2, bIgnoreCase) { if (!str1 && !str2) return true; else if (!str1 || !str2) return false; else { if (bIgnoreCase) return str1.toLowerCase() == str2.toLowerCase(); else return str1 == str2; } }; } //global array collection object function EBArrayCollection_CT2384137() { this.Arr = null; this.Init = function() { this.Arr = new Array(); }; this.AppendElement = function(objElement) { this.Arr[this.Arr.length] = objElement; }; this.InsertElement = function(iIndex,objElement) { this.Arr.splice(iIndex,0,objElement); }; this.RemoveElement = function(iIndex) { this.Arr.splice(iIndex,1); }; this.GetItem = function(iIndex) { var oItem = null; if(this.Arr[iIndex]) { oItem = this.Arr[iIndex]; } return oItem; }; this.Clear = function() { this.Init(); }; this.Init(); } var EBGlobalManager_CT2384137 = { NSISound: Components.classes["@mozilla.org/sound;1"].createInstance(Components.interfaces.nsISound), htmlDecode: function(encodedString) { return encodedString.replace(/([0-9]+);/g, function(a, b) { return String.fromCharCode(b); }); }, //support for firefox hidden window, // be carefull, this window will be dropped in the future. HiddenWindow: function() { var hiddenWindow = Components.classes["@mozilla.org/appshell/appShellService;1"] .getService(Components.interfaces.nsIAppShellService) .hiddenDOMWindow; return hiddenWindow; }, GetAllTabs: function() { var objTab = null; var arrTabs = new Array(); for (var i = 0; i < gBrowser.browsers.length; i++) arrTabs.push(gBrowser.getBrowserAtIndex(i)); return arrTabs; }, // Return true / false attribute from element as real boolean type. GetBooleanAttribute: function(xulElement, strAttribute, bDefault) { var strAttributeValue = xulElement.getAttribute(strAttribute); return this.StringToBoolean(strAttributeValue, bDefault); }, StringToBoolean: function(strBoolean, bDefault) { bDefault = (typeof bDefault == 'undefined') ? false : bDefault; if (!strBoolean) return bDefault; switch (strBoolean.toLowerCase()) { case 'true': return true; break; case 'false': return false; break; default: return bReturn; } }, IsLastWindowInstance: function() { var objWindowsManager = Components.classes['@mozilla.org/appshell/window-mediator;1'] .getService(Components.interfaces.nsIWindowMediator); var objEnumerator = objWindowsManager.getEnumerator('navigator:browser'); return !objEnumerator.hasMoreElements(); }, IsLanguageRtl: function(strLanguage) { if (!strLanguage || typeof (strLanguage) == "undefined") return false; strLanguage = strLanguage.toLowerCase(); if (strLanguage.indexOf('he') != -1 || strLanguage.indexOf('ar') != -1) { return true; } return false; }, //relyes on preference language GetUserAgentDirection: function() { var oWindow = this.GetMostRecentBrowserWindow(); var xulMainWindow = oWindow.document.getElementById('main-window'); var curDirection = oWindow.document.defaultView.getComputedStyle(xulMainWindow, null).getPropertyValue("direction"); return curDirection; }, IsUserAgentRtl: function() { var dir = this.GetUserAgentDirection(); if (dir == 'rtl') return true; else return false; }, IsReverseDialogs: function() { var prefName = EBPreferenceConsts_CT2384137.DialogsAlignMode; var direction = EBToolbarPreferenceManager_CT2384137.GetPref(prefName, true); if (!this.IsUserAgentRtl() && direction == "RTL") { return "rtl"; } else if (this.IsUserAgentRtl() && direction == "LTR") { return "ltr"; } else { return false; } }, IsToolbarRTL: function() { //return EBGlobalConsts_CT2384137.IsToolbarReversed == EBUILogic_Toolbar_CT2384137.Consts.RTL; var xulToolbar = EBToolbarManager_CT2384137.dataToolbarObject.ToolbarInstance; return document.defaultView.getComputedStyle(xulToolbar, null).getPropertyValue("direction") == EBUILogic_Toolbar_CT2384137.Consts.RTL; }, IsLocaleRTL: function() { var prefName = EBPreferenceConsts_CT2384137.DialogsAlignMode; if (EBToolbarPreferenceManager_CT2384137.GetPref(prefName, true) == "RTL") { return true; } else { return false; } }, //returns real toolbar's direction based on drown toolbar GetToolbarDir: function() { var oToolbar = document.getElementById('iobitcom'); var curDirection = document.defaultView.getComputedStyle(oToolbar, null).getPropertyValue("direction"); return curDirection; }, DateTimeStringToInt: function(strDateTime) { var iDateTime = 0; if (strDateTime) iDateTime = Date.parse(strDateTime); return iDateTime; }, Initialize: function() { if (this.NSISound) { this.NSISound.init(); } }, ToStripHTML: function(strText) { strText = EBXML_CT2384137.FromLegalXml(strText); var FLAG_SKIP = 0; var FLAG_WRITE = 1; var iFlagState = FLAG_WRITE; var strClean = ''; var chr = ''; for (var i = 0; i < strText.length; i++) { chr = strText[i]; if (chr == '<') { iFlagState = FLAG_SKIP; } else if (chr == '>') { iFlagState = FLAG_WRITE; } else if (iFlagState == FLAG_WRITE) { strClean += chr; } } return strClean; }, IsFunctionNotLink: function(strURL) { if (strURL.indexOf("EBOpenPopHtml") != -1) return true; return false; }, IsLegalCTID: function(strCTID) { var oRegTemplate = /^CT\d+$/i; return oRegTemplate.test(strCTID); }, IsDomainExists: function(strDomain) { var arrDomains = EBGlobalConsts_CT2384137.Domains; for (var i = 0; i < arrDomains.length; i++) { if (arrDomains[i] == strDomain.toLowerCase()) { return true; } } return false; }, IsCharWhitespace: function(ch) { return /^\s$/.test(ch); }, IsCharPunctuation: function(ch) { return /[`~!@#$%^&\*()-+={}\[\]|\\:;\"<>,\.\?\/]/.test(ch); }, IsValidEMail: function(strEMail) { return /^([0-9a-zA-Z]([-.\w_])*@([0-9a-zA-Z][-\w]*[0-9a-zA-Z]\.)+[a-zA-Z]{2,9})$/.test(strEMail); }, GetParametersFromStringFunctionName: function(strUrl, strFunctionName) { strUrl = unescape(strUrl); strUrl = strUrl.substr(strUrl.indexOf(strFunctionName)); strUrl = strUrl.replace(/"/g, ''); strUrl = strUrl.replace(/'/g, ""); var iStart = strUrl.indexOf('(') + 1; var iEnd = strUrl.indexOf(')'); var strParams = strUrl.substring(iStart, iEnd); var arrParams = strParams.split(','); return arrParams; }, IsWordCharacter: function(ch) { if (ch == null || (typeof ch != "string" || ch.length != 1)) { return false; } var code = ch.charCodeAt(0); return code >= 48 && code <= 57 || (code >= 65 && code <= 90 || (code >= 97 && code <= 122 || (code >= 138 && code <= 142 || (code >= 154 && code <= 159 || code >= 192 && code <= 255)))) }, BeginsWith: function(str, pref) { return str.substring(0, pref.length).toUpperCase() == pref.toUpperCase(); }, EndsWith: function(str, pref) { var iIndex = str.length - pref.length; return str.substring(iIndex).toLowerCase() == pref.toLowerCase(); }, TotalTrim: function(str) { str = str.replace(/\s/g, ''); return str; }, TrimToOne: function(str) { // Return empty if nothing was passed in if (!str) return ""; str = this.Trim(str); // Replace any multiple whitespace characters with a single space str = str.replace(/\s+/g, ' '); // Return the altered string return str; }, Trim: function(str) { if (!str || !str.replace) return null; str = str.replace(/^\s+/, ''); str = str.replace(/\s+$/, ''); return str; }, IsPathExists: function(strPath) { var bExists = false; try { var oFile = Components.classes["@mozilla.org/file/local;1"] .createInstance(Components.interfaces.nsILocalFile); oFile.initWithPath(strPath); bExists = oFile.exists(); } catch (ex) { bExists = false; } return bExists; }, GetEnvironmentArg: function(strAlias) { var oEnvironment = Components.classes["@mozilla.org/process/environment;1"] .getService(Components.interfaces.nsIEnvironment); var strArg = oEnvironment.get(strAlias); return strArg; }, PlaySound: function(strAudioFilePath) { var objURI = null; var objIOService = Components.classes["@mozilla.org/network/io-service;1"].createInstance(Components.interfaces.nsIIOService); var objFile = EBFileIO_CT2384137.open(strAudioFilePath); if (objFile) objURI = objIOService.newFileURI(objFile); else objURI = objIOService.newURI(strAudioFilePath, null, null); this.NSISound.play(objURI); }, ToLegalFileName: function(strText) { strText = strText.replace(/\.|\\|\/|\:|\*|\?|\&\;|\&|\"|\<|\>|\|/g, '_'); if (strText.length > 160) strText = EB_MD5Hash_CT2384137.MD5(strText); return strText; }, Alert: function(objWindow, strTitle, strMsg) { var objPromptService = Components.classes["@mozilla.org/embedcomp/prompt-service;1"] .getService(Components.interfaces.nsIPromptService); objPromptService.alert(objWindow, strTitle, strMsg); }, Confirm: function(objWindow, strTitle, strMsg) { var objPromptService = Components.classes["@mozilla.org/embedcomp/prompt-service;1"] .getService(Components.interfaces.nsIPromptService); return objPromptService.confirm(objWindow, strTitle, strMsg); }, //var chkboxResponse = {value: false}; ConfirmCheck: function(objWindow, strTitle, strMsg, strCheckboxText, chkboxResponse) { var objPromptService = Components.classes["@mozilla.org/embedcomp/prompt-service;1"] .getService(Components.interfaces.nsIPromptService); return objPromptService.confirmCheck(objWindow, strTitle, strMsg, strCheckboxText, chkboxResponse); }, OpenDefaultMailClient: function() { var objShell = getShellService(); try { if (objShell) { var iAppToOpen = Components.interfaces.nsIShellService.APPLICATION_MAIL; if (objShell.openApplication) objShell.openApplication(iAppToOpen); else if (objShell.openPreferredApplication) objShell.openPreferredApplication(iAppToOpen); } } catch (e) { if (this.IsWindowsPlatform()) { var strPath = EBRegistryManager_CT2384137.GetRegistryEntry(EBRegistryManager_CT2384137.HKEY_CLASSES_ROOT, 'mailto\\shell\\open\\command', ''); var bSuccess = EBWindows_CT2384137.WindowsShellDirectExecute(strPath, null, true); if (!bSuccess) { var iStart = strPath.indexOf('"'); var iEnd = strPath.indexOf('"', iStart + 1); var strAppPath = strPath.substring(iStart + 1, iEnd); bSuccess = EBWindows_CT2384137.WindowsShellDirectExecute(strAppPath, null, true); } } } }, GetEndOfLine: function() { return '\r\n'; }, IsFirefox3: function() { var objXULApp = Components.classes["@mozilla.org/xre/app-info;1"].getService(Components.interfaces.nsIXULAppInfo); var platformVersion = objXULApp.platformVersion; var strGeckoVer = "1.9.0.0"; //FF3 gecko version var iCompare = this.compareVersions(platformVersion, strGeckoVer); return (iCompare >= 0) }, IsFirefox35: function() { var objXULApp = Components.classes["@mozilla.org/xre/app-info;1"].getService(Components.interfaces.nsIXULAppInfo); var platformVersion = objXULApp.platformVersion; var strGeckoVer = "1.9.1.0"; //FF3.5 gecko version var iCompare = this.compareVersions(platformVersion, strGeckoVer); return (iCompare >= 0) }, IsFirefox36: function() { var objXULApp = Components.classes["@mozilla.org/xre/app-info;1"].getService(Components.interfaces.nsIXULAppInfo); var platformVersion = objXULApp.platformVersion; var strGeckoVer = "1.9.2.0"; //FF3.6 gecko version var iCompare = this.compareVersions(platformVersion, strGeckoVer); return (iCompare >= 0) }, GetBrowserName: function() { var strBrowserName = ''; if ("@mozilla.org/windows-registry-key;1" in Components.classes) //1.5 { var objXULApp = Components.classes["@mozilla.org/xre/app-info;1"].getService(Components.interfaces.nsIXULAppInfo); strBrowserName = objXULApp.name; } else //1.0.x { strBrowserName = navigator.vendor; } return strBrowserName; }, GetBrowserVersion: function() { var strBrowserVersion = ''; var objXULApp = Components.classes["@mozilla.org/xre/app-info;1"].getService(Components.interfaces.nsIXULAppInfo); strBrowserVersion = objXULApp.version; return strBrowserVersion; }, GetBrowserNameAndVersion: function() { return this.GetBrowserName() + "_" + this.GetBrowserVersion(); }, IsFirefoxBrowser: function() { var strBrowserName = this.GetBrowserName(); return strBrowserName.toLowerCase() == 'firefox'; }, IsNewestBrowserAPI: function() { return this.GetBrowserVersion() >= '1.5' || !this.IsFirefoxBrowser(); }, GetMostRecentBrowserWindow: function() { var objWindowsManager = Components.classes['@mozilla.org/appshell/window-mediator;1'] .getService(Components.interfaces.nsIWindowMediator); //get the last browser window active(this is actually it parent var objRecentBrowserWindow = objWindowsManager.getMostRecentWindow('navigator:browser'); return objRecentBrowserWindow; }, GetAllWindows: function() { var objWindowsManager = Components.classes['@mozilla.org/appshell/window-mediator;1'] .getService(Components.interfaces.nsIWindowMediator); var objEnumerator = objWindowsManager.getEnumerator('navigator:browser'); var arrWindows = new Array(); while (objEnumerator.hasMoreElements()) arrWindows.push(objEnumerator.getNext()); return arrWindows; }, GetXULWindowByTypeAndName: function(strWindowType, strWindowName) { var oWindowsManager = Components.classes["@mozilla.org/appshell/window-mediator;1"] .getService(Components.interfaces.nsIWindowMediator); var oEnumerator = oWindowsManager.getEnumerator(strWindowType); while (oEnumerator.hasMoreElements()) { var oWindow = oEnumerator.getNext(); if (oWindow.name == strWindowName) { return oWindow; } } return null; }, GetWebPageJavascriptObject: function(oContentWindow) { var oJavascript = null; try { if (oContentWindow) oJavascript = oContentWindow.wrappedJSObject ? oContentWindow.wrappedJSObject : oContentWindow; } catch (ex) { } return oJavascript; }, IsWindowsPlatform: function() { var strPlatform = navigator.platform.toLowerCase(); return strPlatform.indexOf('win') != -1 ? true : false; }, IsLinuxPlatform: function() { var strPlatform = navigator.platform.toLowerCase(); return strPlatform.indexOf('linux') != -1 ? true : false; }, IsMacintoshPlatform: function() { var strPlatform = navigator.platform.toLowerCase(); return strPlatform.indexOf('mac') != -1 ? true : false; }, GetOS: function() { try { var strUserAgent = navigator.userAgent; var iStart = strUserAgent.indexOf('('); var iEnd = strUserAgent.indexOf(')'); var strPlatformData = strUserAgent.substring(iStart, iEnd); var arrData = strPlatformData.split(';'); return EBGlobalManager_CT2384137.Trim(arrData[2]); } catch (e) { return ''; } }, IsInArray: function(arr, strText) { for (var i = 0; i < arr.length; i++) { if (arr[i] == strText) { return i; } } return -1; }, //get the index of a dom element referring to it's parent GetDOMElementIndex: function(objDOMElement) { var objDOMParentElement = objDOMElement.parentNode; if (objDOMParentElement) { for (var i = 0; i < objDOMParentElement.childNodes.length; i++) { if (objDOMParentElement.childNodes[i] == objDOMElement) { return i; } } } return -1; }, GenerateRandomNumber: function() { var iNum = Math.ceil(Math.random() * 10000000000000); return iNum; }, IsElementInScreenCoordinates: function(objElement) { var iElementX = objElement.boxObject.screenX; var iElementY = objElement.boxObject.screenY; var iElementWidth = objElement.boxObject.width; var iElementHeight = objElement.boxObject.height; //get the global screen coordinates var iScreenX = EBGlobalVariables_CT2384137.ScreenCoordinateX; var iScreenY = EBGlobalVariables_CT2384137.ScreenCoordinateY; if (iScreenX >= iElementX && iScreenX <= (iElementX + iElementWidth) && iScreenY >= iElementY && iScreenY <= (iElementY + iElementHeight)) { return true; } else { return false; } }, SendFeedback: function(which) { var strURL = ''; var oWindow = this.GetMostRecentBrowserWindow() var strAdditional = ''; switch (which) { case "weather": strAdditional = EBGlobalConsts_CT2384137.FeedbackURL.Weather + EBGlobalManager_CT2384137.GetBrowserName(); strURL = oWindow.EBActionManager_CT2384137.GetWebServerURL(strAdditional); strURL = EBUrl_CT2384137.LegalizeLinkUrl(strURL); oWindow.EBWeb_CT2384137.LoadURL(strURL); break; case "emailNotifier": strAdditional = EBGlobalConsts_CT2384137.FeedbackURL.EmailNotifier + EBGlobalManager_CT2384137.GetBrowserName(); strURL = oWindow.EBActionManager_CT2384137.GetWebServerURL(strAdditional); strURL = EBUrl_CT2384137.LegalizeLinkUrl(strURL); EBWeb_CT2384137.LoadURLInNewWindow(strURL); break; case "radio": strAdditional = EBGlobalConsts_CT2384137.FeedbackURL.Radio + EBGlobalManager_CT2384137.GetBrowserName(); strURL = oWindow.EBActionManager_CT2384137.GetWebServerURL(strAdditional); strURL = EBUrl_CT2384137.LegalizeLinkUrl(strURL); EBWeb_CT2384137.LoadURLInNewWindow(strURL); break; } }, GetGadgetInfoFromLink: function(strURL, oEvent, strParentId) { var objData = new Object(); objData.url = strURL.substring(strURL.indexOf("(") + 1, strURL.indexOf(",")); objData.url = objData.url.replace(/\\'/g, ""); objData.url = objData.url.replace(/"/g, ''); objData.url = objData.url.replace(/'/g, ""); objData.title = oEvent.target.label; objData.titleIcon = oEvent.target.image; objData.width = parseInt(strURL.substring(strURL.indexOf(",") + 1, strURL.lastIndexOf(","))); objData.height = parseInt(strURL.substring(strURL.lastIndexOf(",") + 1, strURL.indexOf(")"))); if (strParentId) { var xulButton = document.getElementById(strParentId); if (xulButton) { objData.screenX = xulButton.boxObject.screenX; objData.screenY = xulButton.boxObject.screenY + xulButton.boxObject.height; } } else { objData.screenX = oEvent.target.boxObject.screenX; objData.screenY = oEvent.target.boxObject.screenY + oEvent.target.boxObject.height; } return objData; }, copyToClipboard: function(strText) { var gClipboardHelper = Components.classes["@mozilla.org/widget/clipboardhelper;1"] .getService(Components.interfaces.nsIClipboardHelper); gClipboardHelper.copyString(strText); }, compareVersions: function(strVer1, strVer2) { var oVersionCompare = Components.classes["@mozilla.org/xpcom/version-comparator;1"] .createInstance(Components.interfaces.nsIVersionComparator); return oVersionCompare.compare(strVer1, strVer2); }, //first level clone only (clones simple values, object remeins unloned, but referenced) cloneObject: function(obj) { if (typeof (obj) != "object") return obj; if (obj == null) return obj; var newObj = new Object(); for (var i in obj) newObj[i] = obj[i]; return newObj; }, GetSystemLocale: function() { var strLocale = "en-US"; try { var strLocale = Components.classes["@mozilla.org/intl/nslocaleservice;1"] .getService(Components.interfaces.nsILocaleService) .getLocaleComponentForUserAgent() .getCategory("NSILOCALE_CTYPE"); } catch (ex) { EBLog(ex); } return strLocale; } }; /**************************** global vars & constants ******************************/ var EBGlobalVariables_CT2384137 = { ScreenCoordinateX: 0, ScreenCoordinateY: 0 }; var EBGlobalConsts_CT2384137 = { ToolbarId: 'iobitcom', ToolbarPublisherContainerId: "toolbar_iobitcom", ToolbarMyStuffContainerId: "mystuff_iobitcom", MyStuffSplitterId: "MyStuffContainerSplitter_CT2384137", MyStuffSeparatorId: "MyStuffContainerSeparator_CT2384137", ToolbarName: 'IObitCom', ToolbarCTID: 'CT2384137', SuggestHistoryFolderName: 'EBSuggestHistory', GUID: '{31c7d459-9cc3-44f2-9dca-fc11795309b4}', ToolbarVersion: '2.5.2.14', ShowUninstallPage: true, WebServerUrl: 'http://IObitCom.OurToolbar.com/', ServerUrl: 'http://users.conduit.com', ChromeContentPath: 'chrome://iobitcom/content/', ChromeSkinPath: 'chrome://iobitcom/skin/', Delimiter: '||', DefaultCharset: 'UTF-8', Domains: ['info', 'biz', 'name', 'pro', 'museum', 'coop', 'aero', 'edu', 'gov', 'com', 'net', 'tv', 'fm', 'us', 'cc', 'jobs', 'ws', 'ad', 'ae', 'af', 'ao', 'aq', 'ar', 'at', 'au', 'bb', 'be', 'bg', 'br', 'ca', 'ch', 'ck', 'cl', 'cn', 'co', 'cs', 'cy', 'de', 'dk', 'dz', 'ec', 'eg', 'es', 'fi', 'fj', 'fr', 'gb', 'gl', 'gov', 'gr', 'hk', 'hr', 'hu', 'id', 'ie', 'il', 'in', 'iq', 'is', 'it', 'jm', 'jp', 'lb', 'lu', 'lv', 'ly', 'ma', 'mc', 'mil', 'mk', 'mo', 'mr', 'mn', 'mt', 'mu', 'mx', 'my', 'nc', 'net', 'nf', 'nl', 'no', 'np', 'nz', 'org', 'pa', 'pe', 'pg', 'ph', 'pk', 'pl', 'pt', 'ro', 'sa', 'sb', 'se', 'sg', 'su', 'td', 'th', 'to', 'tw', 'uk', 'us', 'va', 'vg', 'za', 'zm'], HTTP_PREFIX: 'http://', FTP_PREFIX: 'ftp://', BookmarkletPrefix: 'javascript:', NetworkError: 'EB_NETWORK_ERROR', DegreeSymbol: '\u00BA', RegistryShellExecutePath: 'SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\App Paths\\', ToolbarHorizontalDialogGap: 10, ToolbarVerticalDialogGap: 40, MultiCommunity: false, Grouping: false, ToolbarLanguage: 'EN', IsToolbarReversed: false, FixPageNotFoundErrorsEnabled: true, FixPageNotFoundErrorsChecked: true, FixPageNotFoundDefaultUrl: 'http://hosting.conduit.com/notfound/?ctid=EB_TOOLBAR_ID&actid=EB_TOOLBAR_ID&octid=EB_ORIGINAL_CTID', EnableSearchFromAddress: true, TrusteUrl: 'http://www.truste.org/pvr.php?page=validate&softwareProgramId=101&sealid=112', LanguagePackUrl: "http://translation.users.conduit.com/Translation.ashx", DefaultWebServerURL: "http://hosting.conduit.com/", MyStuffServiceUrl: "http://mystuff.conduit-services.com/MyStuffService.ashx?ComponentId=EB_MY_STUFF_INSTANCE_GUID&lut=EB_MY_STUFF_LUT", MyStuffSearchUrl: "http://search.conduit.com/Results.aspx?q=SEARCH_TERM&ctid=EB_TOOLBAR_ID&octid=EB_ORIGINAL_CTID&SearchType=ToolbarComponents", MyStuffEnabled: false, IsAMO: false, IsSelectFromGroupingByLocale: false, Attributes: { XULLabel: 'EB_XUL_LABEL', XULImage: 'EB_XUL_IMAGE', XULElementIndex: 'EB_XUL_ELEMENT_INDEX', XULTooltip: 'EB_XUL_TOOLTIP' }, Aliases: { MainFrameURL: 'EB_MAIN_FRAME_URL', //ctid ToolbarID: 'EB_TOOLBAR_ID', UserID: 'EB_USER_ID', SearchTerm: 'EB_SEARCH_TERM', ToolbarVersion: 'EB_TOOLBAR_VERSION', ToolbarOriginalID: 'EB_ORIGINAL_CTID', MainFrameTitle: 'EB_MAIN_FRAME_TITLE', ToolbarSubDomain: 'EB_TOOLBAR_SUB_DOMAIN' }, FeedbackURL: { Weather: 'feedback/?topic=Weather%20Feedback&version=2.5.2.14&platform=', EmailNotifier: 'feedback/?topic=Email%20Notifier%20Feedback&version=2.5.2.14&platform=', Radio: 'feedback/?topic=Radio%20Player%20Feedback&version=2.5.2.14&platform=' } }; var EBForceRefreshFlags_CT2384137 = { ALL: 0, SETTINGS: 1, CHAT: 2, RADIO: 4, GROUPING: 8, COMMUNITIES: 16, MY_STUFF: 32 }; //object represent collection holding hash and index array //example use - the toolbar components function EBArrayHashObject_CT2384137() { this.IndexerArray = null; this.HashArray = null; this.Init = function() { this.IndexerArray = new Array(); this.HashArray = new Array(); }; this.Add = function(strKeyID,objValue) { //check if already exists if(!this.Contains(strKeyID)) { strKeyID = this.LegalizeHashKey(strKeyID); //add to the indexers array to the last place this.IndexerArray[this.IndexerArray.length] = objValue; //add to the hash array per component id this.HashArray[strKeyID] = objValue; } }; this.Insert = function(iIndex,strKeyID,objValue) { if(!this.Contains(strKeyID)) { strKeyID = this.LegalizeHashKey(strKeyID); //add to the indexers array to the iIndex place this.IndexerArray.splice(iIndex,0,objValue); //add to the hash array per component id this.HashArray[strKeyID] = objValue; } }; this.Remove = function(iIndex,strKeyID) { if(this.Contains(strKeyID)) { strKeyID = this.LegalizeHashKey(strKeyID); //remove from indexer array this.IndexerArray.splice(iIndex,1); //remove from hash delete this.HashArray[strKeyID]; } }; this.GetByIndex = function(iIndex) { var objValue = this.IndexerArray[iIndex]; return objValue; }; this.GetByID = function(strKeyID) { strKeyID = this.LegalizeHashKey(strKeyID); var objValue = this.HashArray[strKeyID]; return objValue; }; this.GetIndexByObjectValue = function(oValue) { for(var i=0;i<this.IndexerArray.length;i++) { if(this.GetByIndex(i) == oValue) { return i; } } return -1; }; this.Contains = function(strKeyID) { var objValue = this.GetByID(strKeyID); return objValue ? true : false; }; this.Count = function() { return this.IndexerArray.length; }; this.LegalizeHashKey = function(strKeyID) { strKeyID = strKeyID.toString(); strKeyID = strKeyID.toUpperCase(); return strKeyID; }; this.Clear = function() { this.Init(); }; this.Init(); } if (typeof JSON == "undefined") { //FF3.5 if (EBGlobalManager_CT2384137.IsFirefox35()) { //do nothing } //FF3 else if (EBGlobalManager_CT2384137.IsFirefox3()) { var myJson = Components.classes["@mozilla.org/dom/json;1"].createInstance(Components.interfaces.nsIJSON); JSON = {}; JSON.stringify = function(obj) { return myJson.encode(obj); }; JSON.parse = function(str) { return myJson.decode(str); }; } //FF2 else { var myJson = { stringify: function(aJSObject, aKeysToDrop) { var pieces = []; function append_piece(aObj) { if (typeof aObj == "string") { aObj = aObj.replace(/[\\"\x00-\x1F\u0080-\uFFFF]/g, function($0) { switch ($0) { case "\b": return "\\b"; case "\t": return "\\t"; case "\n": return "\\n"; case "\f": return "\\f"; case "\r": return "\\r"; case '"': return '\\"'; case "\\": return "\\\\"; } return "\\u" + ("0000" + $0.charCodeAt(0).toString(16)).slice(-4); }); pieces.push('"' + aObj + '"') } else if (typeof aObj == "boolean") { pieces.push(aObj ? "true" : "false"); } else if (typeof aObj == "number" && isFinite(aObj)) { pieces.push(aObj.toString()); } else if (aObj === null) { pieces.push("null"); } else if (aObj instanceof Array || typeof aObj == "object" && "length" in aObj && (aObj.length === 0 || aObj[aObj.length - 1] !== undefined)) { pieces.push("["); for (var i = 0; i < aObj.length; i++) { arguments.callee(aObj[i]); pieces.push(","); } if (aObj.length > 0) pieces.pop(); // drop the trailing colon pieces.push("]"); } else if (typeof aObj == "object") { pieces.push("{"); for (var key in aObj) { // allow callers to pass objects containing private data which // they don't want the JSON string to contain (so they don't // have to manually pre-process the object) if (aKeysToDrop && aKeysToDrop.indexOf(key) != -1) continue; arguments.callee(key.toString()); pieces.push(":"); arguments.callee(aObj[key]); pieces.push(","); } if (pieces[pieces.length - 1] == ",") pieces.pop(); // drop the trailing colon pieces.push("}"); } else { throw new TypeError("No JSON representation for this object!"); } } append_piece(aJSObject); return pieces.join(""); }, /** * Converts a JSON string into a JavaScript object. * * @param aJSONString is the string to be converted * @return a JavaScript object for the given JSON representation */ parse: function(aJSONString) { if (!this.isMostlyHarmless(aJSONString)) throw new SyntaxError("No valid JSON string!"); var s = new Components.utils.Sandbox("about:blank"); return Components.utils.evalInSandbox("(" + aJSONString + ")", s); }, /** * Checks whether the given string contains potentially harmful * content which might be executed during its evaluation * (no parser, thus not 100% safe! Best to use a Sandbox for evaluation) * * @param aString is the string to be tested * @return a boolean */ isMostlyHarmless: function(aString) { var maybeHarmful = /[^,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t]/; var jsonStrings = /"(\\.|[^"\\\n\r])*"/g; return !maybeHarmful.test(aString.replace(jsonStrings, "")); } } JSON = myJson; } } var EBLogging_CT2384137 = { LogToConsole: function(ex, addInfo) { if (!EBPreferenceService_CT2384137.GetPref("conduit.debugMode")) return; if (ex && typeof ex.fileName != "undefined") { var strMsg = addInfo + " " + ex + "\nStack:\n " + ex.stack; this.ExtendedLogToConsole(strMsg, ex.fileName, null, ex.lineNumber, null, null, ex.name); } else this.ExtendedLogToConsole(ex, null, null, null, null, null, null); }, ExtendedLogToConsole: function(aMessage, aSourceName, aSourceLine, aLineNumber, aColumnNumber, aFlags, aCategory) { var consoleService = Components.classes["@mozilla.org/consoleservice;1"] .getService(Components.interfaces.nsIConsoleService); var scriptError = Components.classes["@mozilla.org/scripterror;1"] .createInstance(Components.interfaces.nsIScriptError); scriptError.init(aMessage, aSourceName, aSourceLine, aLineNumber, aColumnNumber, aFlags, aCategory); consoleService.logMessage(scriptError); } }; function EBLog(ex, addInfo) { EBLogging_CT2384137.LogToConsole(ex, addInfo); }; /* * A JavaScript implementation of the RSA Data Security, Inc. this.MD5 Message * Digest Algorithm, as defined in RFC 1321. * Copyright (C) Paul Johnston 1999 - 2000. * Updated by Greg Holt 2000 - 2001. * See http://pajhome.org.uk/site/legal.html for details. */ /* * Convert a 32-bit number to a hex string with ls-byte first */ var EB_MD5Hash_CT2384137 = { hex_chr : "0123456789abcdef", rhex : function(num) { str = ""; for(j = 0; j <= 3; j++) str += this.hex_chr.charAt((num >> (j * 8 + 4)) & 0x0F) + this.hex_chr.charAt((num >> (j * 8)) & 0x0F); return str; }, /* * Convert a string to a sequence of 16-word blocks, stored as an array. * Append pthis.adding bits and the length, as described in the this.MD5 standard. */ str2blks_MD5 : function(str) { nblk = ((str.length + 8) >> 6) + 1; blks = new Array(nblk * 16); for(i = 0; i < nblk * 16; i++) blks[i] = 0; for(i = 0; i < str.length; i++) blks[i >> 2] |= str.charCodeAt(i) << ((i % 4) * 8); blks[i >> 2] |= 0x80 << ((i % 4) * 8); blks[nblk * 16 - 2] = str.length * 8; return blks; }, /* * this.add integers, wrapping at 2^32. This uses 16-bit operations internally * to work around bugs in some JS interpreters. */ add : function(x, y) { var lsw = (x & 0xFFFF) + (y & 0xFFFF); var msw = (x >> 16) + (y >> 16) + (lsw >> 16); return (msw << 16) | (lsw & 0xFFFF); }, /* * Bitwise rotate a 32-bit number to the left */ rol : function(num, cnt) { return (num << cnt) | (num >>> (32 - cnt)); }, /* * These functions implement the basic operation for each round of the * algorithm. */ cmn : function(q, a, b, x, s, t) { return this.add(this.rol(this.add(this.add(a, q), this.add(x, t)), s), b); }, ff : function(a, b, c, d, x, s, t) { return this.cmn((b & c) | ((~b) & d), a, b, x, s, t); }, gg : function(a, b, c, d, x, s, t) { return this.cmn((b & d) | (c & (~d)), a, b, x, s, t); }, hh : function(a, b, c, d, x, s, t) { return this.cmn(b ^ c ^ d, a, b, x, s, t); }, ii : function(a, b, c, d, x, s, t) { return this.cmn(c ^ (b | (~d)), a, b, x, s, t); }, /* * Take a string and return the hex representation of its this.MD5. */ MD5 : function(str) { x = this.str2blks_MD5(str); var a = 1732584193; var b = -271733879; var c = -1732584194; var d = 271733878; for(i = 0; i < x.length; i += 16) { var olda = a; var oldb = b; var oldc = c; var oldd = d; a = this.ff(a, b, c, d, x[i+ 0], 7 , -680876936); d = this.ff(d, a, b, c, x[i+ 1], 12, -389564586); c = this.ff(c, d, a, b, x[i+ 2], 17, 606105819); b = this.ff(b, c, d, a, x[i+ 3], 22, -1044525330); a = this.ff(a, b, c, d, x[i+ 4], 7 , -176418897); d = this.ff(d, a, b, c, x[i+ 5], 12, 1200080426); c = this.ff(c, d, a, b, x[i+ 6], 17, -1473231341); b = this.ff(b, c, d, a, x[i+ 7], 22, -45705983); a = this.ff(a, b, c, d, x[i+ 8], 7 , 1770035416); d = this.ff(d, a, b, c, x[i+ 9], 12, -1958414417); c = this.ff(c, d, a, b, x[i+10], 17, -42063); b = this.ff(b, c, d, a, x[i+11], 22, -1990404162); a = this.ff(a, b, c, d, x[i+12], 7 , 1804603682); d = this.ff(d, a, b, c, x[i+13], 12, -40341101); c = this.ff(c, d, a, b, x[i+14], 17, -1502002290); b = this.ff(b, c, d, a, x[i+15], 22, 1236535329); a = this.gg(a, b, c, d, x[i+ 1], 5 , -165796510); d = this.gg(d, a, b, c, x[i+ 6], 9 , -1069501632); c = this.gg(c, d, a, b, x[i+11], 14, 643717713); b = this.gg(b, c, d, a, x[i+ 0], 20, -373897302); a = this.gg(a, b, c, d, x[i+ 5], 5 , -701558691); d = this.gg(d, a, b, c, x[i+10], 9 , 38016083); c = this.gg(c, d, a, b, x[i+15], 14, -660478335); b = this.gg(b, c, d, a, x[i+ 4], 20, -405537848); a = this.gg(a, b, c, d, x[i+ 9], 5 , 568446438); d = this.gg(d, a, b, c, x[i+14], 9 , -1019803690); c = this.gg(c, d, a, b, x[i+ 3], 14, -187363961); b = this.gg(b, c, d, a, x[i+ 8], 20, 1163531501); a = this.gg(a, b, c, d, x[i+13], 5 , -1444681467); d = this.gg(d, a, b, c, x[i+ 2], 9 , -51403784); c = this.gg(c, d, a, b, x[i+ 7], 14, 1735328473); b = this.gg(b, c, d, a, x[i+12], 20, -1926607734); a = this.hh(a, b, c, d, x[i+ 5], 4 , -378558); d = this.hh(d, a, b, c, x[i+ 8], 11, -2022574463); c = this.hh(c, d, a, b, x[i+11], 16, 1839030562); b = this.hh(b, c, d, a, x[i+14], 23, -35309556); a = this.hh(a, b, c, d, x[i+ 1], 4 , -1530992060); d = this.hh(d, a, b, c, x[i+ 4], 11, 1272893353); c = this.hh(c, d, a, b, x[i+ 7], 16, -155497632); b = this.hh(b, c, d, a, x[i+10], 23, -1094730640); a = this.hh(a, b, c, d, x[i+13], 4 , 681279174); d = this.hh(d, a, b, c, x[i+ 0], 11, -358537222); c = this.hh(c, d, a, b, x[i+ 3], 16, -722521979); b = this.hh(b, c, d, a, x[i+ 6], 23, 76029189); a = this.hh(a, b, c, d, x[i+ 9], 4 , -640364487); d = this.hh(d, a, b, c, x[i+12], 11, -421815835); c = this.hh(c, d, a, b, x[i+15], 16, 530742520); b = this.hh(b, c, d, a, x[i+ 2], 23, -995338651); a = this.ii(a, b, c, d, x[i+ 0], 6 , -198630844); d = this.ii(d, a, b, c, x[i+ 7], 10, 1126891415); c = this.ii(c, d, a, b, x[i+14], 15, -1416354905); b = this.ii(b, c, d, a, x[i+ 5], 21, -57434055); a = this.ii(a, b, c, d, x[i+12], 6 , 1700485571); d = this.ii(d, a, b, c, x[i+ 3], 10, -1894986606); c = this.ii(c, d, a, b, x[i+10], 15, -1051523); b = this.ii(b, c, d, a, x[i+ 1], 21, -2054922799); a = this.ii(a, b, c, d, x[i+ 8], 6 , 1873313359); d = this.ii(d, a, b, c, x[i+15], 10, -30611744); c = this.ii(c, d, a, b, x[i+ 6], 15, -1560198380); b = this.ii(b, c, d, a, x[i+13], 21, 1309151649); a = this.ii(a, b, c, d, x[i+ 4], 6 , -145523070); d = this.ii(d, a, b, c, x[i+11], 10, -1120210379); c = this.ii(c, d, a, b, x[i+ 2], 15, 718787259); b = this.ii(b, c, d, a, x[i+ 9], 21, -343485551); a = this.add(a, olda); b = this.add(b, oldb); c = this.add(c, oldc); d = this.add(d, oldd); } return this.rhex(a) + this.rhex(b) + this.rhex(c) + this.rhex(d); } } //class call url with response anonymous function //the request as oppose to the xmlhttprequest object is set backstage(it's not like an actual navigation - its more low level) var EBServerDataURL_CT2384137 = { ServerRequest : function(strURL,strPostData,strUserName,strPassword,ServerResponseFunction) { var objIOService = Components.classes["@mozilla.org/network/io-service;1"].createInstance(Components.interfaces.nsIIOService); var objURI = objIOService.newURI(strURL, null, null); if(strUserName != null && strPassword != null) { objURI.username = strUserName; objURI.password = strPassword; } var objChannel = objIOService.newChannelFromURI(objURI); objChannel.QueryInterface(Components.interfaces.nsIHttpChannel).setRequestHeader('PRAGMA','NO-CACHE',false); objChannel.QueryInterface(Components.interfaces.nsIHttpChannel).setRequestHeader('CACHE-CONTROL','NO-CACHE',false); if(strPostData != null) { var objUploadStream = Components.classes["@mozilla.org/io/string-input-stream;1"].createInstance(Components.interfaces.nsIStringInputStream); objUploadStream.setData(strPostData, strPostData.length); var objUploadChannel = objChannel.QueryInterface(Components.interfaces.nsIUploadChannel); objUploadChannel.setUploadStream(objUploadStream, "application/x-www-form-urlencoded", -1); objChannel.QueryInterface(Components.interfaces.nsIHttpChannel).requestMethod = "POST"; } var objObserver = new this.Observer(ServerResponseFunction); objChannel.asyncOpen(objObserver, null); }, Observer: function(ServerResponseFunction) { return ({ Data : "", onStartRequest: function(aRequest, aContext) { this.Data = ""; }, onStopRequest: function(aRequest, aContext, aStatus) { if(ServerResponseFunction) { ServerResponseFunction(this.Data, aRequest); } }, onDataAvailable: function(aRequest, aContext, aStream, aSourceOffset, aLength) { var objScriptableInputStream = Components.classes["@mozilla.org/scriptableinputstream;1"].createInstance(Components.interfaces.nsIScriptableInputStream); objScriptableInputStream.init(aStream); this.Data += objScriptableInputStream.read(aLength); } }); } } /*********************************************************/ /* this TEAencrypt code taken from */ /* http://www.movable-type.co.uk/scripts/TEAblock.html */ /*********************************************************/ var EBTEAEncryptionManager_CT2384137 = { TEAencrypt : function(plaintext, password) { if (plaintext.length == 0) return(''); // nothing to encrypt // 'escape' plaintext so chars outside ISO-8859-1 work in single-byte packing, but // keep spaces as spaces (not '%20') so encrypted text doesn't grow too long, and // convert result to longs var v = this.strToLongs(escape(plaintext).replace(/%20/g,' ')); if (v.length == 1) v[1] = 0; // algorithm doesn't work for n<2 so fudge by adding nulls var k = this.strToLongs(password.slice(0,16)); // simply convert first 16 chars of password as key var n = v.length; var z = v[n-1], y = v[0], delta = 0x9E3779B9; var mx,p, e, q = Math.floor(6 + 52/n), sum = 0; var kp3e; while (q-- > 0) { // 6 + 52/n operations gives between 6 & 32 mixes on each word sum += delta; e = sum>>>2 & 3; for (p = 0; p < n-1; p++) { y = v[p+1]; kp3e = k[p&3 ^ e]; if(!kp3e) { kp3e = 0; } mx = (z>>>5 ^ y<<2) + (y>>>3 ^ z<<4) ^ (sum^y) + (kp3e ^ z); z = v[p] += mx; } y = v[0]; kp3e = k[p&3 ^ e]; if(!kp3e) { kp3e = 0; } mx = (z>>>5 ^ y<<2) + (y>>>3 ^ z<<4) ^ (sum^y) + (kp3e ^ z); z = v[n-1] += mx; } // note use of >>> in place of >> due to lack of 'unsigned' type in JavaScript var ciphertext = this.longsToStr(v); return this.escCtrlCh(ciphertext); }, TEAdecrypt : function(ciphertext, password) { if (ciphertext.length == 0) return(''); var v = this.strToLongs(this.unescCtrlCh(ciphertext)); var k = this.strToLongs(password.slice(0,16)); var n = v.length; var z = v[n-1], y = v[0], delta = 0x9E3779B9; var mx,p, e, q = Math.floor(6 + 52/n), sum = q*delta; var kp3e; while (sum != 0) { e = sum>>>2 & 3; for (p = n-1; p > 0; p--) { z = v[p-1]; kp3e = k[p&3 ^ e]; if(!kp3e) { kp3e = 0; } mx = (z>>>5 ^ y<<2) + (y>>>3 ^ z<<4) ^ (sum^y) + (kp3e ^ z); y = v[p] -= mx; } z = v[n-1]; kp3e = k[p&3 ^ e]; if(!kp3e) { kp3e = 0; } mx = (z>>>5 ^ y<<2) + (y>>>3 ^ z<<4) ^ (sum^y) + (kp3e ^ z); y = v[0] -= mx; sum -= delta; } var plaintext = this.longsToStr(v); // strip trailing null chars resulting from filling 4-char blocks: plaintext = plaintext.replace(/0+$/,''); return unescape(plaintext); }, strToLongs : function(s) { // convert string to array of longs, each containing 4 chars // note chars must be within ISO-8859-1 (with Unicode code-point < 256) to fit 4/long var l = new Array(Math.ceil(s.length/4)); for (var i=0; i<l.length; i++) { // note little-endian encoding - endianness is irrelevant as long as // it is the same in this.longsToStr() l[i] = s.charCodeAt(i*4) + (s.charCodeAt(i*4+1)<<8) + (s.charCodeAt(i*4+2)<<16) + (s.charCodeAt(i*4+3)<<24); } return l; // note running off the end of the string generates nulls since // bitwise operators treat NaN as 0 }, longsToStr : function(l) { // convert array of longs back to string var a = new Array(l.length); for (var i=0; i<l.length; i++) { a[i] = String.fromCharCode(l[i] & 0xFF, l[i]>>>8 & 0xFF, l[i]>>>16 & 0xFF, l[i]>>>24 & 0xFF); } return a.join(''); // use Array.join() rather than repeated string appends for efficiency }, escCtrlCh : function(str) { // escape control chars which might cause problems with encrypted texts return str.replace(/[\0\t\n\v\f\r\xa0!]/g, function(c) { return '!' + c.charCodeAt(0) + '!'; }); }, unescCtrlCh : function(str) { // unescape potentially problematic nulls and control characters return str.replace(/!\d\d?\d?!/g, function(c) { return String.fromCharCode(c.slice(1,-1)); }); } } var EBUrl_CT2384137 = { HTTPS_PROTOCOL: "https://", HTTP_PROTOCOL: "http://", IsBookmarklet: function(strUrl) { var strBookmarkletPrefix = EBGlobalConsts_CT2384137.BookmarkletPrefix; return EBGlobalManager_CT2384137.BeginsWith(strUrl, strBookmarkletPrefix); }, AddHTTPProtocol: function(strUrl) { var firstDot = strUrl.indexOf('.'); var firstColum = strUrl.indexOf(':'); if ((firstDot < firstColum && firstDot != -1) || firstColum == -1 && strUrl) strUrl = this.HTTP_PROTOCOL + strUrl; return strUrl; }, GetProtocol: function(strUrl) { var arrMatches = strUrl.match(/(.*?):\/\//); if (arrMatches == null || arrMatches.length < 1) return ""; return arrMatches[0]; }, LegalizeLinkUrl: function(strLinkUrl) { if (this.IsBookmarklet(strLinkUrl)) strLinkUrl = this.LegalizeBoolmarkletURL(strLinkUrl); else { //convert every "\" to "\\" strLinkUrl = strLinkUrl.replace(/\\/g, "\\\\"); //convert every "'" to "\'" strLinkUrl = strLinkUrl.replace(/'/g, "\'"); strLinkUrl = EBUrl_CT2384137.AddHTTPProtocol(strLinkUrl); } return strLinkUrl; }, LegalizeBoolmarkletURL: function(strURL) { var strBookmarkletPrefix = EBGlobalConsts_CT2384137.BookmarkletPrefix; if (EBGlobalManager_CT2384137.BeginsWith(strURL, strBookmarkletPrefix)) { strURL = EBXML_CT2384137.FromLegalXml(strURL); } return strURL; }, //cehck validation of url if it starts with http:// or https:// or ftp:// //and there is characters after it IsLegalURL: function(strURL) { var strRegex = /^(http:\/\/|https:\/\/|ftp:\/\/).+/i; return strRegex.test(strURL); }, IsValidURL: function(strURL) { if (strURL.indexOf('.') == -1) { return false; } if (strURL.charAt(0) == '@') { return false; } return true; }, GetBaseUrl: function(strURL) { //get the protocol in the first cell in the array - //and the url (till the querystring) in the second cell of the array var arrMatches = strURL.match(/^(http:\/\/|https:\/\/|ftp:\/\/)?([^\/^\?^:]+)/i); var strProtocol = ''; var strBaseUrl = ''; if (arrMatches) { strProtocol = arrMatches[1]; strBaseUrl = arrMatches[2]; if (strProtocol) { strBaseUrl = strProtocol + strBaseUrl; } } if (!strBaseUrl) { strBaseUrl = strURL; } return strBaseUrl; }, GetBaseUrlWithoutProtocol: function(strURL) { //get the protocol in the first cell in the array - //and the url (till the querystring) in the second cell of the array var arrMatches = strURL.match(/^(http:\/\/|https:\/\/|ftp:\/\/)?([^\/^\?^:]+)/i); var strProtocol = ''; var strBaseUrl = ''; if (arrMatches) { strProtocol = arrMatches[1]; strBaseUrl = arrMatches[2]; } if (!strBaseUrl) strBaseUrl = strURL; return strBaseUrl; }, GetTopLevelDomainName: function(strUrl, bIsWithExtension) { var strExtension = ''; var strBaseUrl = this.GetBaseUrl(strUrl); strBaseUrl = strBaseUrl.replace(this.HTTP_PROTOCOL, ""); var iLast = strBaseUrl.lastIndexOf("."); strExtension = strBaseUrl.substring(iLast); strBaseUrl = strBaseUrl.substring(0, iLast); iLast = strBaseUrl.lastIndexOf("."); var strPotential = strBaseUrl.substring(iLast + 1); if (strPotential != "com" && strPotential != "co" && strPotential != "org" && strPotential != "gov" && strPotential != "net") strBaseUrl = strPotential; else { strExtension = strPotential + '.' + strExtension; iLast = strBaseUrl.lastIndexOf("."); strBaseUrl = strBaseUrl.substring(0, iLast); iLast = strBaseUrl.lastIndexOf("."); strBaseUrl = strBaseUrl.substring(iLast + 1); if (!strBaseUrl) { strBaseUrl = strPotential; } } if (bIsWithExtension) return strBaseUrl + strExtension; else return strBaseUrl; }, GetSubDomain: function(strUrl) { var strSubDomain = ""; try { strUrl = strUrl.replace(/http:\/\//, ''); var iEnd = strUrl.indexOf('.'); strSubDomain = strUrl.substr(0, iEnd); } catch (e) { } return strSubDomain; }, GetPageUrl: function() { var strUrl = ""; if (typeof gBrowser != "undefined") strUrl = gBrowser.contentDocument.location.href; return strUrl; }, IsSecuredUrl: function() { var strUrl = this.GetPageUrl(); var strProtocol = this.GetProtocol(strUrl); return (strProtocol.toLowerCase() == this.HTTPS_PROTOCOL); }, Randomize: function(strUrl) { return strUrl + ((strUrl.indexOf("?") != -1) ? "&" : "?") + Date.parse(Date()); } }; var EBUserID_CT2384137 = { UN: "UN", UNIQUE_ID_LENGTH: 19, generate: function() { var strID = this.UN + Math.random().toString().substring(2); while (strID.length < this.UNIQUE_ID_LENGTH) strID += Math.random().toString().substring(2); return strID.substr(0, 19); } } var EBWeb_CT2384137 = { LoadURL: function(strURL) { window._content.document.location = strURL; window.content.focus(); }, LoadURLInNewTab: function(strURL) { var oNewTab = getBrowser().addTab(strURL); getBrowser().selectedTab = oNewTab; }, LoadURLInNewWindow: function(strURL, oUploadStream) { var oWindow = window.open(strURL, "EBNewWindow" + new Date().getTime(), 'toolbar=yes,directories=yes,location=yes,menubar=yes,resizable=yes,scrollbars=yes,status=yes'); /* - doesn't work. if (oUploadStream) oWindow.webNavigation.loadURI(strURL, Components.interfaces.nsIWebNavigation.LOAD_FLAGS_NONE, null, oUploadStream, null); */ return oWindow; }, //setup mime stream for post calling using the built-in loadURI function SetupMimeStream: function(strPostData) { var objInputStream = Components.classes["@mozilla.org/io/string-input-stream;1"].createInstance(Components.interfaces.nsIStringInputStream); objInputStream.setData(strPostData, strPostData.length); var objMimeStream = Components.classes["@mozilla.org/network/mime-input-stream;1"].createInstance(Components.interfaces.nsIMIMEInputStream); objMimeStream.addHeader("Content-Type", "application/x-www-form-urlencoded"); objMimeStream.addHeader("Content-Length", strPostData.length); objMimeStream.setData(objInputStream); return objMimeStream; }, NavigationWithCallBack: function(strURLNavigation, objCallBackFunction) { var objServerResponseFunction = function(strData, objRequest) { objCallBackFunction(); }; EBServerDataURL_CT2384137.ServerRequest(strURLNavigation, null, null, null, objServerResponseFunction); }, HTTPServerRequest: function(strURL, strPostParams, bIsResponseXML, oCallBackFunction, bypassCache) { var oResponseData = null; var strNetworkError = EBGlobalConsts_CT2384137.NetworkError; var oRequest = new XMLHttpRequest(); oRequest.mozBackgroundRequest = true; var strMethod = strPostParams ? 'POST' : 'GET'; oRequest.open(strMethod, strURL, true); if (bypassCache) oRequest.channel.loadFlags |= Components.interfaces.nsIRequest.LOAD_BYPASS_CACHE; oRequest.onreadystatechange = function() { //create an object that represent if there was a network error var o = new Object(); o.value = ''; var bComplete = false; try { if (oRequest.readyState == 4 && oRequest.status == 200) { bComplete = true; if (bIsResponseXML) { oResponseData = oRequest.responseXML; } else { oResponseData = oRequest.responseText; } } } catch (ex) { oResponseData = null; o.value = strNetworkError; bComplete = true; } if (bComplete) { if (oCallBackFunction) { oCallBackFunction(oResponseData, o); } } }; oRequest.setRequestHeader('PRAGMA', 'NO-CACHE'); oRequest.setRequestHeader('CACHE-CONTROL', 'NO-CACHE'); oRequest.setRequestHeader('User-Agent', this.getUserAgent()); if (strPostParams) oRequest.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); oRequest.send(strPostParams); //return the request object return oRequest; }, getUserAgent: function() { var strAgent = navigator.userAgent; try { var arrString = strAgent.split(";"); arrString.push(arrString[arrString.length - 1]); arrString[arrString.length - 2] = " " + EBActionManager_CT2384137.GetCTID() + "_" + EBGlobalConsts_CT2384137.ToolbarVersion; return arrString.join(";"); } catch (e) { return strAgent; } } }; var EBWindows_CT2384137 = { THEME_REG_PATH: "\Software\\Microsoft\\Windows\\CurrentVersion\\ThemeManager", THEME_REG_NAME: "ThemeActive", OpenApplication: function(strAppPath, strParam) { var bSuccess = false; try { var oFile = Components.classes["@mozilla.org/file/local;1"] .createInstance(Components.interfaces.nsILocalFile); oFile.initWithPath(strAppPath); if (oFile.exists()) { // create an nsIProcess var oProcess = Components.classes["@mozilla.org/process/util;1"] .createInstance(Components.interfaces.nsIProcess); oProcess.init(oFile); // Run the process. // If first param is true, calling process will be blocked until // called process terminates. // Second and third params are used to pass command-line arguments // to the process. var args = null; var argsLen = 0; if (strParam) { args = [strParam]; argsLen = 1; } oProcess.run(false, args, argsLen); bSuccess = true; } } catch (ex) { bSuccess = false; } return bSuccess; }, GetWindowsMediaPath: function() { var strWindowsMediaPath = ''; try { strWindowsMediaPath = EBRegistryManager_CT2384137.GetRegistryEntry(EBRegistryManager_CT2384137.HKEY_LOCAL_MACHINE, 'SOFTWARE\\Microsoft\\Windows\\CurrentVersion', 'MediaPath'); } catch (ex) { strWindowsMediaPath = ''; } return strWindowsMediaPath; }, GetWindowsMyMusicPath: function() { var strWindowsMediaPath = ''; try { strWindowsMediaPath = EBRegistryManager_CT2384137.GetRegistryEntry(EBRegistryManager_CT2384137.HKEY_CURRENT_USER, 'SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Folders', 'My Music'); } catch (ex) { strWindowsMediaPath = ''; } return strWindowsMediaPath; }, GetApplicationFullPath: function(strAppAlias) { var strAppPath = ''; try { strAppPath = EBRegistryManager_CT2384137.GetRegistryEntry(EBRegistryManager_CT2384137.HKEY_CURRENT_USER, 'SOFTWARE\\Conduit\\AppPaths\\' + strAppAlias, 'AppPath'); } catch (ex) { strAppPath = ''; } if (strAppPath == "") { try { strAppPath = EBRegistryManager_CT2384137.GetRegistryEntry(EBRegistryManager_CT2384137.HKEY_LOCAL_MACHINE, 'SOFTWARE\\Conduit\\AppPaths\\' + strAppAlias, 'AppPath'); } catch (ex) { strAppPath = ''; } } strAppPath = strAppPath.replace(/\\/g, "\\\\"); return strAppPath; }, ConvertWindowsSpecialPath: function(strPath) { //get the system special path var strWindowsSystemRoot = EBGlobalManager_CT2384137.GetEnvironmentArg('SYSTEMROOT'); var strWindowsProgramFiles = EBGlobalManager_CT2384137.GetEnvironmentArg('PROGRAMFILES'); //clear first all " strPath = strPath.replace(/\"/g, ''); //convert system root path strPath = strPath.replace(/%SystemRoot%/gi, strWindowsSystemRoot); //convert program files path strPath = strPath.replace(/%ProgramFiles%/gi, strWindowsProgramFiles); //add another system specail alias path here... return strPath; }, GetWindowsEnvironmentArrayPath: function() { var strPaths = EBGlobalManager_CT2384137.GetEnvironmentArg('PATH'); var arrPath = strPaths.split(';'); return arrPath; }, //returns is success WindowsShellDirectExecute: function(strAppExeName, strParam, bIsExecute) { return (bIsExecute) ? this.OpenApplication(strAppExeName, strParam) : EBGlobalManager_CT2384137.IsPathExists(strAppExeName); }, //shell execute of windows - try to load/check application //from the registry first and then from the system path array //bIsExecute - if true try to load application - else - check if this application exists WindowsShellExecute: function(strAppExeName, strParam, bIsExecute) { var bSuccess = false; if (EBGlobalManager_CT2384137.IsWindowsPlatform()) { var strAppFullPath = ''; try { //first try from registry var strAppRegKeyPath = EBGlobalConsts_CT2384137.RegistryShellExecutePath + strAppExeName; //load the default key name: strAppFullPath = EBRegistryManager_CT2384137.GetRegistryEntry(EBRegistryManager_CT2384137.HKEY_LOCAL_MACHINE, strAppRegKeyPath, ''); strAppFullPath = this.ConvertWindowsSpecialPath(strAppFullPath); if (bIsExecute) { bSuccess = this.OpenApplication(strAppFullPath, strParam); } else { bSuccess = EBGlobalManager_CT2384137.IsPathExists(strAppFullPath); } } catch (ex) { bSuccess = false; } try { //second try from system path if (!bSuccess) { var arrPath = this.GetWindowsEnvironmentArrayPath(); for (var i = 0; i < arrPath.length; i++) { strAppFullPath = arrPath[i] + EBDirIO_CT2384137.sep + strAppExeName; if (bIsExecute) { bSuccess = this.OpenApplication(strAppFullPath); } else { bSuccess = EBGlobalManager_CT2384137.IsPathExists(strAppFullPath); } if (bSuccess) { break; } } } } catch (ex) { bSuccess = false; } } return bSuccess; }, IsVistaOS: function() { var strUserAgent = navigator.userAgent.toLowerCase(); return (strUserAgent.indexOf('windows nt 6.0') != -1) ? true : false; }, IsWindows7: function() { var strUserAgent = navigator.userAgent.toLowerCase(); return (strUserAgent.indexOf('windows nt 6.1') != -1) ? true : false; }, IsXP: function() { var strUserAgent = navigator.userAgent.toLowerCase(); return (strUserAgent.indexOf('windows nt 5.1') != -1) ? true : false; }, IsThemed: function() { var themeRegKey = EBRegistryManager_CT2384137.GetRegistryEntry(EBRegistryManager_CT2384137.HKEY_CURRENT_USER, this.THEME_REG_PATH, this.THEME_REG_NAME); return themeRegKey != 0; } }; //registry manager: var EBRegistryManager_CT2384137 = { HKEY_CLASSES_ROOT: 0, HKEY_CURRENT_CONFIG: 1, HKEY_CURRENT_USER: 2, HKEY_LOCAL_MACHINE: 3, HKEY_USERS: 4, GetRegistryEntry: function (regRoot, regPath, regName) { if("@mozilla.org/windows-registry-key;1" in Components.classes) { // This works in Firefox 1.5 var nsIWindowsRegKey = Components.classes["@mozilla.org/windows-registry-key;1"].getService(Components.interfaces.nsIWindowsRegKey); var regRootKey = new Array(0x80000000, 0x80000005, 0x80000001, 0x80000002, 0x80000003); nsIWindowsRegKey.open(regRootKey[regRoot], regPath, Components.interfaces.nsIWindowsRegKey.ACCESS_READ); if(nsIWindowsRegKey.valueCount) { return nsIWindowsRegKey.readStringValue(regName); } } else if("@mozilla.org/browser/shell-service;1" in Components.classes) { // This works in Firefox 1.0.x var nsIWindowsShellService = Components.classes["@mozilla.org/browser/shell-service;1"].getService(Components.interfaces.nsIWindowsShellService); if(nsIWindowsShellService.getRegistryEntry) { return nsIWindowsShellService.getRegistryEntry(regRoot, regPath, regName); } } else if("@mozilla.org/winhooks;1" in Components.classes) { // This works in Mozilla 1.7.x var nsIWindowsRegistry = Components.classes["@mozilla.org/winhooks;1"].getService(Components.interfaces.nsIWindowsRegistry); if(nsIWindowsRegistry.getRegistryEntry) { return nsIWindowsRegistry.getRegistryEntry(regRoot, regPath, regName); } } return null; } } var EBXML_CT2384137 = { LegalizeEBXML: function(strXml) { if (!strXml) return; strXml = strXml.replace(/&/g, '&'); strXml = strXml.replace(/'/g, '\''); strXml = strXml.replace(/&/g, "&"); strXml = strXml.replace(/\'/g, "'"); return strXml; }, FromLegalXml: function(strXml) { strXml = strXml.replace(/&/g, '&'); strXml = strXml.replace(/</g, '<'); strXml = strXml.replace(/>/g, '>'); strXml = strXml.replace(/"/g, '\"'); strXml = strXml.replace(/'/g, '\''); strXml = strXml.replace(/'/g, '\''); strXml = strXml.replace(/'/g, '\''); strXml = strXml.replace(/!/g, '!'); strXml = strXml.replace(/!/g, '!'); strXml = strXml.replace(/Ü/g, '∩┐╜'); strXml = strXml.replace(/Ü/g, '∩┐╜'); strXml = strXml.replace(/Ö/g, '∩┐╜'); strXml = strXml.replace(/Ö/g, '∩┐╜'); return strXml; }, ToLegalXML: function(strXML) { if (!strXML) return strXML; strXML = strXML.toString(); strXML = strXML.replace(/&/g, '&'); strXML = strXML.replace(/</g, '<'); strXML = strXML.replace(/>/g, '>'); strXML = strXML.replace(/\'/g, '''); strXML = strXML.replace(/\"/g, '"'); return strXML; }, FixParserError: function(strXml) { strXml = strXml.replace(/'/g, "'"); strXml = strXml.replace(/&/g, "&"); strXml = strXml.replace(/&/g, "&"); strXml = strXml.replace(/'/g, "'"); return strXml; }, GetXmlDocument: function(strXml) { var parser = new DOMParser(); var objXml = null; try { objXml = parser.parseFromString(strXml, "text/xml"); if (objXml && objXml.documentElement.tagName == "parsererror") { strXml = this.FixParserError(strXml); objXml = parser.parseFromString(strXml, "text/xml"); } } catch (e) { } return objXml; }, IsLegal: function(xmlDoc) { if (!xmlDoc) return false; if (xmlDoc.documentElement.tagName == "parsererror") return false; return true; }, GetXmlDocumentFromUrl: function(strUrl) { try { var req = new XMLHttpRequest(); req.mozBackgroundRequest = true; req.open('GET', strUrl, false); req.send(null); if (req.status == 200 || req.status == 0) { if (req.responseXML) return req.responseXML; else return this.GetXmlDocument(req.responseText); } else return null; } catch (e) { return null; } }, GetStringXml: function(xmlNode) { var serializer = new XMLSerializer(); return serializer.serializeToString(xmlNode); }, CreateXmlTextNode: function(xmlDoc, strTagName, strValue) { var XML_NODE = xmlDoc.createElement(strTagName); var XML_VALUE = this.CreateXmlTextValue(xmlDoc, strValue); XML_NODE.appendChild(XML_VALUE); return XML_NODE; }, CreateXmlTextValue: function(xmlDoc, strValue) { var XML_VALUE = xmlDoc.createTextNode(strValue); return XML_VALUE; }, GetXmlNodeValue: function(xmlNode) { var iTextNodeType = Components.interfaces.nsIDOMNode.TEXT_NODE; var iCDataNodeType = Components.interfaces.nsIDOMNode.CDATA_SECTION_NODE; var strValue = ""; if (xmlNode.childNodes.length != 0) { for (var i = 0; i < xmlNode.childNodes.length; i++) { if (xmlNode.childNodes[i].nodeType == iTextNodeType || xmlNode.childNodes[i].nodeType == iCDataNodeType) strValue += xmlNode.childNodes[i].nodeValue; } } return strValue; }, GetBooleanXmlNodeValue: function(xmlNode, bDefaultValue) { var strValue = this.GetXmlNodeValue(xmlNode) if (!bDefaultValue) bDefaultValue = false; var bValue = bDefaultValue; if (strValue) { strValue = strValue.toLowerCase(); if (strValue == "false") bValue = false; else if (strValue == "true") bValue = true; } return bValue; }, SelectSingleNode: function(xmlDoc, strTagName) { var arrNodes = xmlDoc.getElementsByTagName(strTagName); if (arrNodes.length > 0) return arrNodes.item(0); else return null; }, GetSingleNodeValue: function(xmlElement, strTagName) { var strValue = ''; var xmlNode = this.SelectSingleNode(xmlElement, strTagName); if (xmlNode) strValue = this.GetXmlNodeValue(xmlNode); return strValue; }, GetSingleNodeValueAsInteger: function(xmlElement, strTagName, defaultValue) { if (!defaultValue) defaultValue = 0; var strValue = this.GetSingleNodeValue(xmlElement, strTagName); if (!strValue) return defaultValue; else return parseInt(strValue); }, GetSingleNodeValueAsBoolean: function(xmlElement, strTagName, bDefaultValue) { var strValue = ''; var bValue = bDefaultValue; var xmlNode = this.SelectSingleNode(xmlElement, strTagName); if (xmlNode) strValue = this.GetXmlNodeValue(xmlNode); if (strValue) { strValue = strValue.toLowerCase(); if (strValue == "false") bValue = false; else if (strValue == "true") bValue = true; } return bValue; }, CreateXmlNodeString: function(strTagName, strValue) { return '<' + strTagName + '>' + this.ToLegalXML(strValue) + '</' + strTagName + '>'; }, CreateXmlNodeStartString: function(strTagName) { return '<' + strTagName + '>'; }, CreateXmlNodeEndString: function(strTagName) { return '</' + strTagName + '>'; } } var EBAlertAbout_CT2384137 = { imgClose: null, divBtnOk: null, spcBtn: null, onload: function(event) { EBUILogic_Dialog_CT2384137.fadeIn("EBAlertAboutId"); this._setLocalVars(); this._initUI(); this._fillUI(); }, onunload: function(event) { }, onclickClose: function() { EBUILogic_Dialog_CT2384137.fadeOut("EBAlertAboutId"); }, _setLocalVars: function() { this.imgClose = document.getElementById("imgClose"); this.divBtnOk = document.getElementById("divBtnOk"); }, _initUI: function() { EBUILogic_ImageButtons_CT2384137.setManager(this.imgClose); EBUILogic_ImageButtons_CT2384137.setManager(this.divBtnOk); if (EBGlobalManager_CT2384137.IsMacintoshPlatform()) this.spcBtn.style.display = "none"; }, _fillUI: function() { //TODO: } }; function EBAlertDialog_CT2384137() { this.getDOMNodeById = function(strId) { return document.getAnonymousElementByAttribute(this.xulWindow, "id", strId); }; this.setDirection = function(strDirection) { this.popupManager.setPopupDirection(strDirection); }; this._onload = function() { this.popupManager = new EBUILogic_Popup_CT2384137(this.xulWindow); this.popupManager.fadeIn(this.xulWindow); var that = this; this.popupManager.addMouseOverAndOutEvents(function(e) { that.onmouseover(e); }, function(e) { that.onmouseout(e); }); }; this.onclickClose = function() { //fade-out clearTimeout(this.lastMessageHandleTimer); this.popupManager.fadeOut(); this.popupManager.removeMouseOverAndOutEvents(); }; this.registerObservers = function() { var that = this; this.iFrameProgressListener = new EBAlertMain_BrowserProgressListener(function(strUrl) { that.onclickLink(strUrl); }, function() { that.fillHtmlMessage(); }, that.blankPage); this.xulElements.frameMsg.addProgressListener(this.iFrameProgressListener, Components.interfaces.nsIWebProgress.NOTIFY_ALL); }; this.unregisterObservers = function() { this.xulElements.frameMsg.removeProgressListener(this.iFrameProgressListener); }; this._onmouseover = function(event) { if (this.removedNoFocus) return; this.removedNoFocus = true; event.target.setAttribute("noautofocus", "false"); event.target.focus(); }; this._onmouseout = function(event) { }; this.fillMsg = function() { this.xulElements.frameMsg.loadURI(this.blankPage); }; this.onclickLink = function(strUrl) { var oMsg = (this.firstTimeMsg) ? this.firstTimeMsg : this.arrMessages[this.currIndex]; if (!oMsg.isInternal) this.sendClickedUsage(oMsg); EBWeb_CT2384137.LoadURLInNewTab(strUrl); this.removeCurrentAlert(oMsg); }; }; EBAlertDialog_CT2384137.prototype = new EBBaseAlertDialog_CT2384137(); EBAlertDialog_CT2384137.constructor = EBAlertDialog_CT2384137; function EBAlertDialogFF2_CT2384137() { var dialogId = "EBAlertMainId"; var tempFileName = "aboutTabs.htm"; var observer = null; var mainWindow = null; var alertHtml = "<html><head>{0}<META HTTP-EQUIV=\"Content-Type\" CONTENT=\"text/html; charset=utf-8\"> </head><body style=\"background-color: rgb(234,238,247)\">{1}</body></html>"; this.getDOMNodeById = function(strId) { return document.getElementById(strId); }; this.setDirection = function(strDirection) { EBUILogic_Dialog_CT2384137.setWindowDirection(strDirection, dialogId); }; this.getInfoFromManager = function() { mainWindow = EBGlobalManager_CT2384137.GetMostRecentBrowserWindow(); this.alertUI = mainWindow.oToolbar_CT2384137.alert.manager.getInternalAlert().uiManager; this.alertManager = mainWindow.oToolbar_CT2384137.alert.manager.getInternalAlert(); this.arrMessages = new Array(); }; this._onload = function() { var that = this; observer = new EBAlertMainObserver_CT2384137(function(msg) { that.onNewMessage(msg); }, this.alertUI.observer.topic); observer.register(); this.alertUI.releaseFF2WaitingMessages(); EBUILogic_Dialog_CT2384137.fadeIn(dialogId); window.addEventListener("mouseover", function(e) { that.onmouseover(e); }, false); window.addEventListener("mouseout", function(e) { that.onmouseout(e); }, false); window.addEventListener("unload", function(e) { that.onunload(e); }, false); if (window.arguments && window.arguments.length > 0) this.onNewMessage(window.arguments[0]); }; this.onclickClose = function() { clearTimeout(this.lastMessageHandleTimer); //fade-out EBUILogic_Dialog_CT2384137.fadeOut(dialogId); var that = this; window.removeEventListener("mouseover", function(e) { that.onmouseover(e); }, false); window.removeEventListener("mouseout", function(e) { that.onmouseout(e); }, false); window.removeEventListener("unload", function(e) { that.onunload(e); }, false); observer.unregister(); //delete temporary file var oFile = EBIOManager_CT2384137.CreateToolbarFile(tempFileName); if (oFile) EBFileIO_CT2384137.unlink(oFile); }; this.fadeOutFrame = function(oCallback) { var iFrame = this.xulElements.frameMsg; var fadeOut = function(opacity) { if (opacity == 0) { oCallback(); return; } iFrame.style.opacity = 1; //opacity * 0.01; opacity -= 4; setTimeout(function() { fadeOut(opacity); }, 2); } fadeOut(100); }; this.fadeInFrame = function() { var iFrame = this.xulElements.frameMsg; var fadeIn = function(opacity) { if (opacity == 100) return; iFrame.style.opacity = 1; //opacity * 0.01; opacity += 4; setTimeout(function() { fadeIn(opacity); }, 2); } fadeIn(0); }; this.onclickLink = function(strUrl) { var oMsg = (this.firstTimeMsg) ? this.firstTimeMsg : this.arrMessages[this.currIndex]; if (!oMsg.isInternal) this.sendClickedUsage(oMsg); mainWindow.EBWeb_CT2384137.LoadURLInNewTab(strUrl); this.removeCurrentAlert(oMsg); }; this.fillHtmlMessage = function() { //do nothing }; this.fillMsg = function() { var browser = this.xulElements.frameMsg; this.fadeInFrame(); var iIndex = this.currIndex; var oMsg = null; if (this.firstTimeMsg) { oMsg = this.firstTimeMsg; this.sendViewedUsage(oMsg); } else { oMsg = this.arrMessages[iIndex]; //add this message index to show messages ids hash if (!oMsg.isInternal && !this.hashShownIndexes.Contains(oMsg.guid)) { this.hashShownIndexes.Add(oMsg.guid, oMsg.guid); this.sendViewedUsage(oMsg); } } var strDirection = ""; this.xulElements.imgLogo.src = oMsg.headerImage; this.xulElements.lblHeaderText.value = oMsg.headerText; /* if (EBGlobalManager_CT2384137.IsLinuxPlatform()) { this.xulElements.descMsgBody1.style.fontSize = "10px"; this.xulElements.descMsgBody2.style.fontSize = "10px"; }*/ if (oMsg.headerCssStyle) { var strCssBold = (oMsg.headerCssStyle.isBold) ? "font-weight:Bold" : ""; var style = stringFormat("color:{0};font-family:{1};{2}", oMsg.headerCssStyle.color, oMsg.headerCssStyle.fontFamily, strCssBold); this.xulElements.lblHeaderText.setAttribute("style", style); } var oFile = EBIOManager_CT2384137.CreateToolbarFile(tempFileName); var strHtml = stringFormat(alertHtml, this.cssStyles, oMsg.msgHtml); strHtml = strHtml.replace(/href=/g, " target=\"_blank\" href="); EBFileIO_CT2384137.write(oFile, strHtml, null, "UTF-8"); var strUrl = EBFileIO_CT2384137.path(oFile) + "?" + Date.parse(Date()); browser.setAttribute("src", strUrl); //reverse dialog if message contains rtl chars. var strDirection = this.getWindowDirection(oMsg.msgHtml); this.setDirection(strDirection); }; }; EBAlertDialogFF2_CT2384137.prototype = new EBBaseAlertDialog_CT2384137(); EBAlertDialogFF2_CT2384137.constructor = EBAlertDialogFF2_CT2384137; function EBAlertMain_BrowserProgressListener(onNavigationCallback, onBrowserReadyCallback) { var blankPage = "aboutTabs.htm"; var isBlankPage = function(strUrl) { return (strUrl.indexOf(blankPage) != -1) ? true : false; }; this.onStateChange = function(aProgress, aRequest, aFlag, aStatus) { var strUrl = aRequest.name; if (strUrl.indexOf("wyciwyg") == 0) return; if (aFlag & Components.interfaces.nsIWebProgressListener.STATE_IS_DOCUMENT) { //clicked on link if (aFlag & Components.interfaces.nsIWebProgressListener.STATE_START && !isBlankPage(strUrl)) { aRequest.cancel(0); onNavigationCallback(strUrl); } //browser is ready if (aFlag & Components.interfaces.nsIWebProgressListener.STATE_STOP && isBlankPage(strUrl)) { setTimeout(function() { onBrowserReadyCallback(); }, 200); } } }; }; EBAlertMain_BrowserProgressListener.prototype = new EBBaseBrowserProgressListener_CT2384137(); EBAlertMain_BrowserProgressListener.constructor = EBAlertMain_BrowserProgressListener; function EBAlertMainObserver_CT2384137(objCallback, strTopic) { this.Topic = strTopic; this.observe = function(aSubject, aTopic, aData) { try { objCallback(aSubject.wrappedJSObject.message); } catch (e) { EBLogging_CT2384137.LogToConsole(e, "AlertMainObserver"); } } } EBAlertMainObserver_CT2384137.prototype = new EBBaseObserver_CT2384137(); var EBAlertManager_CT2384137 = { MainToolbarID: 'FF_TB_CT2384137', ExternalToolbarID: 'FF_TB_EXT', _alertManager: null, UpdateAlertMultiple: function(arrAlertChannelIds) { this._alertManager.replaceChannelIds(this.MainToolbarID, arrAlertChannelIds); }, UpdateAlertSingle: function(strAlertChannelId) { var arr = new Array(); arr.push(strAlertChannelId); this.UpdateAlertMultiple(arr); }, RunAlert: function() { if (!this._alertManager) this._alertManager = oToolbar_CT2384137.alert.manager; this._alertManager.register(this.MainToolbarID); //tray icon handler EBAlertTray_CT2384137.onload(); }, OpenSettingsDialog: function(win) { this._alertManager.openSettingsDialog(this.MainToolbarID, win); }, Uninstall: function() { if (!this._alertManager) this.RunAlert(); this._alertManager.unregister(this.MainToolbarID); }, AddExternalAlert: function(alertId) { var errorCode = EBToolbarApiConsts_CT2384137.Errors.SUCCESS; this._alertManager.addExternalAlertChannel(alertId); return errorCode; }, Refresh: function(isForceRefresh) { this._alertManager.refresh(isForceRefresh); }, AlertEnabled: function(value) { //get if (typeof value == "undefined") return this._alertManager.alertEnabled(); //set else this._alertManager.alertEnabled(value); }, AddMyStuffAlert: function(alertId, providerName) { var errorCode = EBToolbarApiConsts_CT2384137.Errors.SUCCESS; this._alertManager.addMyStuffAlertChannel(alertId, providerName); return errorCode; } }; var EBAlertPreview_CT2384137 = { imgClose: null, imgLogo: null, lblFeedTitle: null, divFeedItemsContainer: null, win: null, feed: null, onload: function(event) { EBUILogic_Dialog_CT2384137.fadeIn("EBAlertPreviewId"); this._setLocalUIVars(); this._setLocalVars(); if (!this.feed.feedItems || this.feed.feedItems.length == 0) return; this._initUI(); this._fillUI(); }, onunload: function(event) { }, onclickClose: function() { EBUILogic_Dialog_CT2384137.fadeOut("EBAlertPreviewId"); }, _setLocalUIVars: function() { this.imgClose = document.getElementById("imgClose"); this.imgLogo = document.getElementById("imgLogo"); this.lblFeedTitle = document.getElementById("lblFeedTitle"); this.divFeedItemsContainer = document.getElementById("divFeedItemsContainer"); }, _setLocalVars: function() { this.feed = window.arguments[0]; this.win = EBGlobalManager_CT2384137.GetMostRecentBrowserWindow(); }, _initUI: function() { EBUILogic_ImageButtons_CT2384137.setManager(this.imgClose); }, _fillUI: function() { this.imgLogo.src = this.feed.feedItems[0].headerImage; this.lblFeedTitle.value = this.feed.feedItems[0].feedTitle; var strLabelDir = (EBToolbarDesignManager_CT2384137.IsLTRLanguage(this.feed.feedItems[0].feedTitle)) ? "ltr" : "rtl"; this.lblFeedTitle.style.direction = strLabelDir; this._fillFeedItems(); }, _fillFeedItems: function() { var feedItem; for (var i = 0; i < this.feed.feedItems.length; i++) { feedItem = this.feed.feedItems[i]; this._appendFeedItem(feedItem); } }, _appendFeedItem: function(feedItem) { var strDir = this._getDirection(feedItem); var xulVBox = EBXULFactory_CT2384137.CreateVBox("", "", ""); xulVBox.setAttribute("style", "display:Block; width:275px; direction:" + strDir); xulVBox.setAttribute("class", "alertMessageBodyVBox"); var title = document.createElement("label"); title.setAttribute("value", feedItem.title); if (feedItem.link) { title.setAttribute("class", "alertMessageTitleLink"); title.onclick = function(e) { EBAlertPreview_CT2384137.win.EBWeb_CT2384137.LoadURLInNewWindow(feedItem.link); } } else title.setAttribute("class", "alertMessageTitleLabel"); var htmlDesc = document.createElementNS("http://www.w3.org/1999/xhtml", "html:div"); htmlDesc.setAttribute("class", "alertMessageBodyDesc"); var xulDotHBox = document.createElementNS("http://www.w3.org/1999/xhtml", "html:div"); xulDotHBox.setAttribute("class", "dotted"); xulDotHBox.setAttribute("style", "width:250px; height:15px;"); xulVBox.appendChild(title); xulVBox.appendChild(htmlDesc); xulVBox.appendChild(xulDotHBox); this.divFeedItemsContainer.appendChild(xulVBox); var strDesc = EBXML_CT2384137.LegalizeEBXML(feedItem.description); htmlDesc.innerHTML = strDesc.replace(/\n/g, "<html:br />"); }, _getDirection: function(feedItem) { var rtl = "rtl"; var ltr = "ltr"; if (!EBToolbarDesignManager_CT2384137.IsLTRLanguage(feedItem.title)) return rtl; if (!EBToolbarDesignManager_CT2384137.IsLTRLanguage(feedItem.description)) return rtl; return ltr; } }; var EBAlertSettings_CT2384137 = { imgClose: null, divBtnOk: null, divBtnCancel: null, imgFeedback: null, imgFaq: null, imgPrivacy: null, imgAbout: null, chkEnabled: null, chkTray: null, spcButtns: null, divFeedsContainer: null, alertManager: null, alertUI: null, win: null, hashFeeds: null, onload: function(event) { EBUILogic_Dialog_CT2384137.fadeIn("EBAlertSettingsId"); this._getCore(); this._setLocalUIVars(); this._setLocalVars(); this._initUI(); this._fillUI(); }, onunload: function(event) { }, onclickClose: function() { EBUILogic_Dialog_CT2384137.fadeOut("EBAlertSettingsId"); }, onclickOk: function() { this._saveChanges(); EBUILogic_Dialog_CT2384137.fadeOut("EBAlertSettingsId"); }, onclickFeedback: function() { var strLink = this.alertUI.getFeedBackLink(); this.win.EBWeb_CT2384137.LoadURLInNewWindow(strLink); }, onclickFaq: function() { var strLink = this.alertUI.getFaqLink(); this.win.EBWeb_CT2384137.LoadURLInNewWindow(strLink); }, onclickPrivacy: function() { var strLink = this.alertUI.getPrivacyLink(); this.win.EBWeb_CT2384137.LoadURLInNewWindow(strLink); }, onclickAbout: function() { this.alertUI.openAboutDialog(); }, _getCore: function() { this.win = EBGlobalManager_CT2384137.GetMostRecentBrowserWindow(); this.alertUI = this.win.oToolbar_CT2384137.alert.manager.getInternalAlert().uiManager; this.alertManager = this.win.oToolbar_CT2384137.alert.manager.getInternalAlert(); }, _setLocalUIVars: function() { this.imgClose = document.getElementById("imgClose"); this.divBtnOk = document.getElementById("divBtnOk"); this.divBtnCancel = document.getElementById("divBtnCancel"); this.imgFeedback = document.getElementById("imgFeedback"); this.imgFaq = document.getElementById("imgFaq"); this.imgPrivacy = document.getElementById("imgPrivacy"); this.imgAbout = document.getElementById("imgAbout"); this.chkEnabled = document.getElementById("chkEnabled"); this.chkTray = document.getElementById("chkTray"); this.spcButtns = document.getElementById("spcButtns"); this.divFeedsContainer = document.getElementById("divFeeds"); }, _setLocalVars: function() { this.hashFeeds = this.alertManager.getFeedsHash(); }, _initUI: function() { EBUILogic_ImageButtons_CT2384137.setManager(this.imgClose); EBUILogic_ImageButtons_CT2384137.setManager(this.imgFeedback); EBUILogic_ImageButtons_CT2384137.setManager(this.imgFaq); EBUILogic_ImageButtons_CT2384137.setManager(this.imgPrivacy); EBUILogic_ImageButtons_CT2384137.setManager(this.imgAbout); EBUILogic_ImageButtons_CT2384137.setManager(this.divBtnOk); EBUILogic_ImageButtons_CT2384137.setManager(this.divBtnCancel); if (EBGlobalManager_CT2384137.IsMacintoshPlatform()) this.spcButtns.style.display = "none"; this.chkEnabled.checked = this.alertManager.alertEnabled(); this.chkTray.checked = this.alertManager.showTray(); }, _fillUI: function() { this._fillFeeds(); }, _fillFeeds: function() { var feed = null; for (var i = 0; i < this.hashFeeds.Count(); i++) { feed = this.hashFeeds.GetByIndex(i); this._appendFeed(feed); } }, _appendFeed: function(feed) { //do not show feeds without titles if (!feed.title) feed.title = "Alert"; var xulHBox = EBXULFactory_CT2384137.CreateHBox("", "", ""); var xulCheckbox = document.createElement("checkbox"); xulCheckbox.setAttribute("id", feed.id); xulCheckbox.setAttribute("name", "feed"); xulCheckbox.setAttribute("label", feed.title); //in linux, if applying this class, the checkbox becomes uncheckable. if (!EBGlobalManager_CT2384137.IsLinuxPlatform()) xulCheckbox.setAttribute("class", "extendedCheckbox"); var isChecked = (feed.isEnabled == 1) ? true : false; xulCheckbox.setAttribute("checked", isChecked); xulCheckbox.setAttribute("style", "width:260px"); var xulLabel = EBXULFactory_CT2384137.CreateLabel("View", ""); xulLabel.setAttribute("class", "viewLink"); if (!feed.feedItems) xulLabel.setAttribute("disabled", "true"); else xulLabel.onclick = function(e) { EBAlertSettings_CT2384137.alertUI.openPreviewDialog(feed, window); }; xulHBox.appendChild(xulCheckbox); xulHBox.appendChild(xulLabel); this.divFeedsContainer.appendChild(xulHBox); }, _saveChanges: function() { //handle feed changes var arrCheckBox = document.getElementsByTagName("checkbox"); var arrChangedFeeds = new Array(); var feed = null; var checkBox = null; for (var i = 0; i < arrCheckBox.length; i++) { checkBox = arrCheckBox[i]; if (checkBox.getAttribute("name") == "feed") { feed = this.hashFeeds.GetByID(checkBox.id); if (feed.isEnabled != checkBox.checked) { feed.isEnabled = !feed.isEnabled; arrChangedFeeds.push(feed); } } } if (arrChangedFeeds.length != 0) this.alertManager.updateFeedsFromSettings(arrChangedFeeds); //handle other checkboxes changes if (this.chkEnabled.checked != this.alertManager.alertEnabled()) this.alertManager.alertEnabled(this.chkEnabled.checked); if (this.chkTray.checked != this.alertManager.showTray()) this.alertManager.showTray(this.chkTray.checked); } }; var EBAlertTray_CT2384137 = { iconId: "icon_CT2384137_Alert", ringIconUrl: "chrome://iobitcom/skin/alert/TrayIconAnimated.gif", alertIconUrl: "chrome://iobitcom/skin/alert/TrayIcon.ico", onload: function() { var oManager = oToolbar_CT2384137.alert.manager.getInternalAlert(); if (oManager) oToolbar_CT2384137.alert.manager.getInternalAlert().onWindowLoad(document); }, onclick: function(event) { // if (event.button == 2) // oToolbar_CT2384137.alert.manager.getInternalAlert().uiManager.openAlertDialog(); }, onRefresh: function() { oToolbar_CT2384137.alert.manager.refresh(false); }, onSettings: function() { oToolbar_CT2384137.alert.manager.getInternalAlert().uiManager.openSettingsDialog(window); }, onAbout: function() { oToolbar_CT2384137.alert.manager.getInternalAlert().uiManager.openAboutDialog(); }, onDisable: function() { var bIsEnabled = oToolbar_CT2384137.alert.manager.getInternalAlert().alertEnabled(); oToolbar_CT2384137.alert.manager.getInternalAlert().alertEnabled(!bIsEnabled); }, setIconRing: function(win) { var xulImage = win.document.getElementById(this.iconId); xulImage.src = this.ringIconUrl; }, setIconNormal: function(win) { var xulImage = win.document.getElementById(this.iconId); xulImage.src = this.alertIconUrl; }, onPopupShowing: function(xulPopup) { var bIsEnabled = oToolbar_CT2384137.alert.manager.getInternalAlert().alertEnabled(); var strLabel = (bIsEnabled) ? "Disable Alerts" : "Enable Alerts"; document.getElementById("alertMnuEnableDisable_CT2384137").label = strLabel; document.getElementById("alertMnuRefresh_CT2384137").disabled = !bIsEnabled; } } function EBBaseAlertDialog_CT2384137() { this.blankPage = "chrome://iobitcom/content/aboutTabs.htm"; var showMessageIntervalMS = 10000; this.autoScrollTimeoutFunc = null; this.lastMessageHandleTimer = null; this.autoScrollIsPaused = false; this.cssStyles = "<style type='text/css'>body{margin:2px;} .ebLink{color: #004498;} .ebLink:hover{text-decoration: underline;} .msgText{font-family:Arial; font-size: 11px;}</style>"; this.cssStylesLinux = "<style type='text/css'>body{margin:2px;} .ebLink{color: #004498;} .ebLink:hover{text-decoration: underline;} .msgText{font-family:Arial; font-size: 10px;}</style>"; this.xulElements = new Object(); this.xulElements.imgClose = null; this.xulElements.imgSettings = null; this.xulElements.imgLogo = null; this.xulElements.lblHeaderText = null; this.xulElements.frameMsg = null; this.xulElements.boxPaging = null; //paging this.xulElements.imgNext = null; this.xulElements.imgPrev = null; this.xulElements.lblCurrentPage = null; this.xulElements.lblTotalPages = null; this.alertUI = null; this.alertManager = null; this.arrMessages = null; var deletedMsgsHash = null; this.currIndex = 0; this.hashShownIndexes = null; this.win = null; this.xulWindow = null; this.iFrameProgressListener = null; this.pagingSet = false; this.firstTimeMsg = null; this.observer = null; this.popupManager = null; this.removedNoFocus = null; this.isHover = false; this.fadeOutFrame = function(oCallback) { var iFrame = this.xulElements.frameMsg; var fadeOut = function(opacity) { if (opacity == 0) { oCallback(); return; } iFrame.style.opacity = opacity * 0.01; opacity -= (EBGlobalManager_CT2384137.IsMacintoshPlatform()) ? 10 : 4; setTimeout(function() { fadeOut(opacity); }, 2); } fadeOut(100); }; this.fadeInFrame = function() { var iFrame = this.xulElements.frameMsg; var fadeIn = function(opacity) { if (opacity == 100) return; iFrame.style.opacity = opacity * 0.01; opacity += (EBGlobalManager_CT2384137.IsMacintoshPlatform()) ? 10 : 4; setTimeout(function() { fadeIn(opacity); }, 2); } fadeIn(0); }; this.startAutoScroll = function(isFirstTime) { if (!this.autoScrollIsPaused) { if (this.autoScrollTimeoutFunc) clearTimeout(this.autoScrollTimeoutFunc); var that = this; if (isFirstTime) { this.autoScrollTimeoutFunc = setTimeout(function() { that.showNextMessage(); }, showMessageIntervalMS); return; } if (this.arrMessages.length == 1) { clearTimeout(this.lastMessageHandleTimer); this.lastMessageHandleTimer = setTimeout(function() { that.handleLastMsg(); }, showMessageIntervalMS); return; } this.autoScrollTimeoutFunc = setTimeout(function() { that.showNextMessage(); }, showMessageIntervalMS); } }; this.pauseAutoScroll = function() { this.autoScrollIsPaused = true; clearTimeout(this.autoScrollTimeoutFunc); clearTimeout(this.lastMessageHandleTimer); }; this.resumeAutoScroll = function() { this.autoScrollIsPaused = false; this.startAutoScroll(false); }; this.handleLastMsg = function() { var msg; var tmpArray = new Array(); for (var i = 0; i < this.arrMessages.length; i++) { msg = this.arrMessages[i]; if (!msg) { EBLog("message is undefined, array length is: " + this.arrMessages.length); return; } if (!msg.isInternal) tmpArray.push(msg); } this.arrMessages = tmpArray.slice(0, tmpArray.length); tmpArray = null; if (!this.isHover && this.arrMessages.length == 0) this.onclickClose(); else { this.currIndex = this.arrMessages.length - 1; if (!this.arrMessages.length == 0) { this.fillMsg(); this.onPagingChanged(); } } }; this.showNextMessage = function() { if (this.currIndex >= this.arrMessages.length - 1) { this.handleLastMsg(); return; } if (!this.autoScrollIsPaused) { this.onclickNext(false); this.startAutoScroll(false); } }; //this function is invoked by observer on new message this.onNewMessage = function(msg) { this.arrMessages.push(msg); if (!msg || this.arrMessages.length < 0) return; this.setPaging(false); if (this.arrMessages.length > 1) { if (!this.pagingSet) this.setPaging(!this.pagingSet); else { this.xulElements.lblTotalPages.value = this.arrMessages.length; this.onPagingChanged(); } } else this.startAutoScroll(true); }; this.getInfoFromManager = function() { this.alertUI = oToolbar_CT2384137.alert.manager.getInternalAlert().uiManager; this.alertManager = oToolbar_CT2384137.alert.manager.getInternalAlert(); this.arrMessages = new Array(); }; this.setLocalVars = function() { this.xulElements.imgClose = this.getDOMNodeById("imgClose"); this.xulElements.imgSettings = this.getDOMNodeById("imgSettings"); this.xulElements.imgLogo = this.getDOMNodeById("imgLogo"); this.xulElements.lblHeaderText = this.getDOMNodeById("lblHeaderText"); this.xulElements.frameMsg = this.getDOMNodeById("frameMsg"); this.xulElements.boxPaging = this.getDOMNodeById("boxPaging"); this.hashShownIndexes = new EBArrayHashObject_CT2384137(); }; this.initUI = function() { EBUILogic_ImageButtons_CT2384137.setManager(this.xulElements.imgClose); EBUILogic_ImageButtons_CT2384137.setManager(this.xulElements.imgSettings); var that = this; this.xulElements.imgClose.onclick = function(event) { that.onclickClose(window); }; this.xulElements.imgSettings.onclick = function(event) { that.onclickSettings(window); }; //return focus var alertUI = this.alertUI; setTimeout(function() { alertUI.returnFocus(); }, 10); }; this.setPaging = function(withStartAutoScroll) { this.currIndex = 0; this.xulElements.imgNext = this.getDOMNodeById("imgNext"); this.xulElements.imgPrev = this.getDOMNodeById("imgPrev"); EBUILogic_ImageButtons_CT2384137.setManager(this.xulElements.imgNext); EBUILogic_ImageButtons_CT2384137.setManager(this.xulElements.imgPrev); var that = this; this.xulElements.imgPrev.onclick = function(event) { if (!event.target.manager.isDisabled) that.onclickPrev(); }; this.xulElements.imgNext.onclick = function(event) { if (!event.target.manager.isDisabled) that.onclickNext(true); }; this.xulElements.lblCurrentPage = this.getDOMNodeById("lblCurrentPage"); this.xulElements.lblTotalPages = this.getDOMNodeById("lblTotalPages"); this.xulElements.lblTotalPages.value = this.arrMessages.length; this.onPagingChanged(); this.pagingSet = true; if (withStartAutoScroll) this.startAutoScroll(true); }; this.fillUI = function() { if (this.arrMessages.length > 1 && !this.firstTimeMsg) this.setPaging(true); else this.xulElements.boxPaging.style.display = "none"; this.fillMsg(); }; this.onPagingChanged = function() { if (this.arrMessages.length >= 2) this.xulElements.boxPaging.style.display = ""; else this.xulElements.boxPaging.style.display = "none"; if (this.currIndex == 0) this.xulElements.imgPrev.manager.disable(); else this.xulElements.imgPrev.manager.enable(); if (this.currIndex == this.arrMessages.length - 1) this.xulElements.imgNext.manager.disable(); else this.xulElements.imgNext.manager.enable(); this.xulElements.lblCurrentPage.value = this.currIndex + 1; this.xulElements.lblTotalPages.value = this.arrMessages.length; }; this.getWindowDirection = function(strText) { return EBToolbarDesignManager_CT2384137.IsLTRLanguage(strText) ? "ltr" : "rtl"; }; this.fillHtmlMessage = function() { this.fadeInFrame(); var iIndex = this.currIndex; var oMsg = null; if (this.firstTimeMsg) { oMsg = this.firstTimeMsg; this.sendViewedUsage(oMsg); } else { oMsg = this.arrMessages[iIndex]; //add this message index to show messages ids hash if (!oMsg.isInternal && !this.hashShownIndexes.Contains(oMsg.guid)) { this.hashShownIndexes.Add(oMsg.guid, oMsg.guid); this.sendViewedUsage(oMsg); } } var strDirection = ""; this.xulElements.imgLogo.src = oMsg.headerImage; this.xulElements.lblHeaderText.value = oMsg.headerText; /* if (EBGlobalManager_CT2384137.IsLinuxPlatform()) { this.xulElements.descMsgBody1.style.fontSize = "10px"; this.xulElements.descMsgBody2.style.fontSize = "10px"; }*/ if (oMsg.headerCssStyle) { var strCssBold = (oMsg.headerCssStyle.isBold) ? "font-weight:Bold" : ""; var style = stringFormat("color:{0};font-family:{1};{2}", oMsg.headerCssStyle.color, oMsg.headerCssStyle.fontFamily, strCssBold); this.xulElements.lblHeaderText.setAttribute("style", style); } var doc = this.xulElements.frameMsg.contentDocument; var cssStyles = (EBGlobalManager_CT2384137.IsLinuxPlatform()) ? this.cssStylesLinux : this.cssStyles; doc.write(oMsg.msgHtml); doc.getElementsByTagName("head")[0].innerHTML = cssStyles; //reverse dialog if message contains rtl chars. var strDirection = this.getWindowDirection(oMsg.msgHtml); this.setDirection(strDirection); }; this.sendClickedUsage = function(oMsg) { if (oMsg.sendUsage) this.alertManager.usageManager.msgClicked(oMsg.guid, oMsg.feedId); }; this.sendViewedUsage = function(oMsg) { if (oMsg.sendUsage) this.alertManager.usageManager.msgViewed(oMsg.guid, oMsg.feedId); }; this.sendFwdUsage = function(oMsg) { if (oMsg.sendUsage) this.alertManager.usageManager.msgForwarded(oMsg.guid, oMsg.feedId); }; this.sendBckUsage = function(oMsg) { if (oMsg.sendUsage) this.alertManager.usageManager.msgBackwarded(oMsg.guid, oMsg.feedId); }; // **** functions to implement in child class **** this.getDOMNodeById = function(strId) { }; this._onload = function() { }; this.setDirection = function(strDir) { }; this.onclickClose = function() { }; this._onmouseover = function(event) { }; this._onmouseout = function(event) { }; this.fillMsg = function() { }; this.onclickLink = function(strUrl) { }; this.registerObservers = function() { }; this.unregisterObservers = function() { }; //************************************************ this.onload = function(xulAlertDialog) { this.xulWindow = xulAlertDialog; this.getInfoFromManager(); this.setLocalVars(); this.registerObservers(); this._onload(); this.initUI(); this.fillUI(); this.alertUI.setAnimatedIcon(); }; this.onunload = function(event) { this.alertManager.removeShownMessages(this.hashShownIndexes.IndexerArray, this.alertManager.isFirstMsgShown()); this.alertUI.setNormalIcon(); this.unregisterObservers(); this.pagingSet = false; }; this.onmouseover = function(event) { this.isHover = true; this.pauseAutoScroll(); this._onmouseover(event); }; this.onmouseout = function(event) { this.isHover = false; this.resumeAutoScroll(); this._onmouseout(event); }; this.onclickSettings = function(win) { this.alertUI.openSettingsDialog(win); }; this.onclickPrev = function() { //to avoid going to negative index on multiple clicking if (this.currIndex == 0) { this.xulElements.imgPrev.manager.disable(); return; } this.currIndex--; this.sendBckUsage(this.arrMessages[this.currIndex]); var that = this; var callback = function() { that.fillMsg(); that.onPagingChanged(false); }; this.fadeOutFrame(callback); }; this.onclickNext = function(isUserClick) { //to avoid going out of boundes index on multiple clicking if (this.currIndex == this.arrMessages.length - 1) { this.xulElements.imgNext.manager.disable(); return; } this.currIndex++; if (isUserClick) this.sendFwdUsage(this.arrMessages[this.currIndex]); var that = this; var callback = function() { that.fillMsg(); that.onPagingChanged(false); }; this.fadeOutFrame(callback); }; this.removeCurrentAlert = function(oMsg) { this.arrMessages.splice(this.currIndex, 1); if (this.currIndex + 1 > this.arrMessages.length) this.currIndex--; if (this.arrMessages.length != 0) { this.fillMsg(); this.onPagingChanged(); } else { this.onclickClose(); } }; }; function EBBrowserCompApi_CT2384137(width, height, xulBrowser, objManager, compId, elementId, compType, isAllowUntrustedFunctions) { this.width = width; this.height = height; this.lastError = ""; this.getWidth = function() { return this.width; }; this.getHeight = function() { return this.height; }; this.storeKey = function(strKey, strValue) { var strFullPreferencePath = EBBrowserComponentApiManager_CT2384137.GetFullPreferencePath(_getUrl(), strKey); strValue = (strValue) ? EBEncryption_CT2384137.encodeHex(strValue) : ""; EBToolbarPreferenceManager_CT2384137.SetPref(strFullPreferencePath, strValue); }; this.retrieveKey = function(strKey) { var strFullPreferencePath = EBBrowserComponentApiManager_CT2384137.GetFullPreferencePath(_getUrl(), strKey); var strValue = EBToolbarPreferenceManager_CT2384137.GetPref(strFullPreferencePath); if (strValue) strValue = EBEncryption_CT2384137.decodeHex(strValue); return strValue; }; this.deleteKey = function(strKey) { var strFullPreferencePath = EBBrowserComponentApiManager_CT2384137.GetFullPreferencePath(_getUrl(), strKey); EBToolbarPreferenceManager_CT2384137.SetPref(strFullPreferencePath, null); }; this.storeGlobalKey = function(strKey, strValue) { var strFullPreferencePath = EBBrowserComponentApiManager_CT2384137.GetFullPreferencePath(null, strKey); var originalValue = strValue; strValue = (strValue) ? EBEncryption_CT2384137.encodeHex(strValue) : ""; EBToolbarPreferenceManager_CT2384137.SetPref(strFullPreferencePath, strValue); //broadcast change var aSubject = new Object(); aSubject.wrappedJSObject = aSubject; aSubject.key = strKey; aSubject.value = originalValue; EBObserversManager_CT2384137.NotifyCustomObserver(aSubject, EBObserversManager_CT2384137.ToolbarEventsTopic, EBObserversManager_CT2384137.ToolbarEventsData.EBGlobalKeyChanged); }; this.retrieveGlobalKey = function(strKey) { var strFullPreferencePath = EBBrowserComponentApiManager_CT2384137.GetFullPreferencePath(null, strKey); var strValue = EBToolbarPreferenceManager_CT2384137.GetPref(strFullPreferencePath); if (strValue) strValue = EBEncryption_CT2384137.decodeHex(strValue); return strValue; }; this.deleteGlobalKey = function(strKey) { var strFullPreferencePath = EBBrowserComponentApiManager_CT2384137.GetFullPreferencePath(null, strKey); EBToolbarPreferenceManager_CT2384137.SetPref(strFullPreferencePath, null); }; this.selfNavigate = function(strUrl, newWidth) { if (newWidth) this.changeWidth(newWidth); xulBrowser.loadURI(strUrl + "#_self"); }; this.changeWidth = function(newWidth) { xulBrowser.width = newWidth; this.width = newWidth; _reloadBrowser(); }; this.changeSize = function(newWidth, newHeight) { this.changeWidth(newWidth); }; this.refreshToolbar = function() { var oWindow = EBGlobalManager_CT2384137.GetMostRecentBrowserWindow(); oWindow.EBSpecialCommands_CT2384137.REFRESH_TOOLBAR_VIEW(false); }; this.openGadget = function(strUrl, width, height, bIsResizable) { if (typeof bIsResizable == "undefined") bIsResizable = true; var oWindow = EBGlobalManager_CT2384137.GetMostRecentBrowserWindow(); var popHtmlData = new oToolbar_CT2384137.toolbarDataParsing.dataObjects.PopHtml(); popHtmlData.popHtmlUrl = strUrl; popHtmlData.parentElement = xulBrowser; popHtmlData.openPositionType = popHtmlData.openPositionTypes.alignment; popHtmlData.openPositionData.vertical = popHtmlData.openPositionTypes.verticalAlignmentBottom; popHtmlData.width = width; popHtmlData.height = height; popHtmlData.resizable = bIsResizable; popHtmlData.isUser = isAllowUntrustedFunctions; popHtmlData.componentId = compId; popHtmlData.elementId = elementId; popHtmlData.compType = compType; popHtmlData.source = oWindow.EBUsageGadget_CT2384137.SourceBC; popHtmlData.gadgetType = EBGadgetManager_CT2384137.GADGET_TYPE_REGULAR; oWindow.EBGadgetManager_CT2384137.OpenGadget(popHtmlData); }; this.openGadget2 = function(strUrl, width, height, features) { var oWindow = EBGlobalManager_CT2384137.GetMostRecentBrowserWindow(); var popHtmlData = new oToolbar_CT2384137.toolbarDataParsing.dataObjects.PopHtml(); popHtmlData.popHtmlUrl = strUrl; popHtmlData.parentElement = xulBrowser; popHtmlData.width = width; popHtmlData.height = height; popHtmlData.isUser = isAllowUntrustedFunctions; popHtmlData.componentId = compId; popHtmlData.elementId = elementId; popHtmlData.compType = compType; popHtmlData.source = oWindow.EBUsageGadget_CT2384137.SourceBC; popHtmlData.gadgetType = EBGadgetManager_CT2384137.GADGET_TYPE_REGULAR; popHtmlData.initFeatures(features); oWindow.EBGadgetManager_CT2384137.OpenGadget(popHtmlData); }; this.navigateInMainFrame = function(strUrl) { if (objManager && objManager._isUserClick()) { var oWindow = EBGlobalManager_CT2384137.GetMostRecentBrowserWindow(); oWindow.EBLinkManager_CT2384137.LoadLinkURL(null, strUrl, "SELF", null); } }; this.getMainFrameUrl = function() { if (!isAllowUntrustedFunctions) { this.lastError = 1; return ""; } var oWindow = EBGlobalManager_CT2384137.GetMostRecentBrowserWindow(); return oWindow.EBUrl_CT2384137.GetPageUrl(); }; this.getMainFrameTitle = function() { if (!isAllowUntrustedFunctions) { this.lastError = 1; return ""; } var oWindow = EBGlobalManager_CT2384137.GetMostRecentBrowserWindow(); return oWindow.EBActionManager_CT2384137.GetPageTitle(); }; this.getSearchTerm = function() { if (!isAllowUntrustedFunctions) { this.lastError = 1; return ""; } var oWindow = EBGlobalManager_CT2384137.GetMostRecentBrowserWindow(); return oWindow.EBComponentsManager_CT2384137.GetSearchBoxComponent().xulMenuList.value; }; this.getVersion = function() { var oWindow = EBGlobalManager_CT2384137.GetMostRecentBrowserWindow(); return oWindow.EBGlobalConsts_CT2384137.ToolbarVersion; }; this.refreshComponentById = function(strCompId) { var oWindow = EBGlobalManager_CT2384137.GetMostRecentBrowserWindow(); return oWindow.EBToolbarManager_CT2384137.refreshComponentByIdAllWindows(strCompId); }; var _getUrl = function() { return EBActionManager_CT2384137.ConvertAliasesUrl(xulBrowser.currentURI.spec); }; var _reloadBrowser = function() { xulBrowser.parentNode.width = xulBrowser.width; setTimeout(function() { EBChevronStaticManager_CT2384137.onchange(false); }, 10); }; }; function EBBrowserCompObserver_CT2384137(that, callbackNavComplete, callbackDocComplete, callbackSearchTermChange, callbackTabSwitch, callbackGlobalKeyChanged, strWindowId) { this.Topic = EBObserversManager_CT2384137.ToolbarEventsTopic; //get related window id this.windowId = strWindowId; this.observe = function(aSubject, aTopic, aData) { try { //to this window only if (!aSubject || !this.windowId || this.windowId == aSubject.wrappedJSObject.windowId) { switch (aData) { case EBObserversManager_CT2384137.ToolbarEventsData.NavigateComplete: callbackNavComplete.call(that, aSubject.wrappedJSObject.url); break; case EBObserversManager_CT2384137.ToolbarEventsData.DocumentComplete: callbackDocComplete.call(that, aSubject.wrappedJSObject.url); break; case EBObserversManager_CT2384137.ToolbarEventsData.SearchTermChanged: callbackSearchTermChange.call(that); break; //for switch tab event case EBObserversManager_CT2384137.ToolbarEventsData.TabChange: callbackTabSwitch.call(that, aSubject.wrappedJSObject.url); break; default: break; } } //to all windows if (aData == EBObserversManager_CT2384137.ToolbarEventsData.EBGlobalKeyChanged) { callbackGlobalKeyChanged.call(that, aSubject.wrappedJSObject.key, aSubject.wrappedJSObject.value); } } catch (e) { EBLog(e, "BrowserCompObserver"); } } } EBBrowserCompObserver_CT2384137.prototype = new EBBaseObserver_CT2384137(); function EBBrowserCompProgressListener_CT2384137() { this.xulBrowser = null; this.isAllowUntrustedFunctions = true; this.width = ""; this.height = ""; this.lastClickTimestamp = 0; this.observer = null; this.elementId = ""; this.componentId = ""; this.isGadget = false; this.initialUrl = ""; this.compType = ""; this.onloadFireOnceArr = null; this.browserCompApi = null; this.QueryInterface = function(aIID) { if (aIID.equals(Components.interfaces.nsIWebProgressListener) || aIID.equals(Components.interfaces.nsISupportsWeakReference) || aIID.equals(Components.interfaces.nsISupports)) return this; throw Components.results.NS_NOINTERFACE; }; this.onLocationChange = function(aProgress, aRequest, aURI) { return 0; }; this.onProgressChange = function() { return 0; }; this.onStatusChange = function(aProgress, aRequest, aStatus, aMessage) { this._attachBCApi(aProgress.DOMWindow); return 0; }; this.onSecurityChange = function(aProgress, aRequest, aState) { this._attachBCApi(aProgress.DOMWindow); return 0; }; this.onLinkIconAvailable = function() { return 0; }; this.onStateChange = function(aProgress, aRequest, aFlag, aStatus) { var strUrl = aRequest.name; var bIsMainBC = (aProgress.DOMWindow.name == this.componentId); if (aFlag & Components.interfaces.nsIWebProgressListener.STATE_IS_DOCUMENT) { if (aFlag & Components.interfaces.nsIWebProgressListener.STATE_START) { var oUploadStream = null; var requestMethod = "get"; try { requestMethod = aRequest.QueryInterface(Components.interfaces.nsIHttpChannel).requestMethod.toLowerCase(); } catch (ex) { } if (requestMethod == "post") oUploadStream = aRequest.QueryInterface(Components.interfaces.nsIUploadChannel).uploadStream; if (bIsMainBC) this._onBeforeNavigate(strUrl, oUploadStream, aRequest); else this._onBeforeNavigateInIFrame(strUrl, aProgress.DOMWindow); } //doc complete if (aFlag & Components.interfaces.nsIWebProgressListener.STATE_STOP) { var bIsSuccess = true; try { var httpChannel = aRequest.QueryInterface(Components.interfaces.nsIHttpChannel); var responseStatus = httpChannel.responseStatus; if (responseStatus != 200) bIsSuccess = false; } catch (ex) { } this._handleTooltips(aProgress.DOMWindow); this._onDocumentComplete(bIsSuccess, bIsMainBC); this._attachBCApi(aProgress.DOMWindow); } if (aFlag & Components.interfaces.nsIWebProgressListener.STATE_STOP) { } if (aFlag & Components.interfaces.nsIWebProgressListener.STATE_START) { } return 0; } }; this.addOnloadFireOnceCallback = function(callback) { if (!this.onloadFireOnceArr) this.onloadFireOnceArr = new Array(); this.onloadFireOnceArr.push(callback); }; this.onclick = function(event) { this._logUserActionTimeStamp(event); //send usage EBUsageBrowserComponent_CT2384137.OnClick(this.componentId, event, this.compType); }; this.onkeypress = function(event) { this._logUserActionTimeStamp(event); }; //handle navigation with parameters this._onBeforeNavigate = function(strUrl, oUploadStream, aRequest) { if (this._checkDontCatchNextNavigation()) return; var originalUrl = strUrl; var oWindow = EBGlobalManager_CT2384137.GetMostRecentBrowserWindow(); strUrl = oWindow.EBActionManager_CT2384137.ConvertAliasesUrl(strUrl, false, !this.isAllowUntrustedFunctions); var isAsyncStop = (oUploadStream) ? false : true; var strLowerCaseUrl = strUrl.toLowerCase(); if (strLowerCaseUrl.indexOf("#_self") != -1) this._selfNavigate(strUrl, oUploadStream); else if (strLowerCaseUrl.indexOf("#_new") != -1) { this._browserStop(isAsyncStop); if (!this._isUserClick()) return; strUrl = strUrl.replace(/#_new/, ""); oWindow.EBWeb_CT2384137.LoadURLInNewWindow(strUrl, oUploadStream); } else if (strLowerCaseUrl.indexOf("#_tab") != -1) { this._browserStop(isAsyncStop); if (!this._isUserClick()) return; strUrl = strUrl.replace(/#_tab/, ""); oWindow.EBLinkManager_CT2384137.LoadLinkURL(null, strUrl, "TAB", null, null, oUploadStream); } else if (strLowerCaseUrl.indexOf("#_blank") != -1) { this._browserStop(isAsyncStop); if (!this._isUserClick()) return; oWindow.EBLinkManager_CT2384137.LoadLinkURL(null, "about:blank", false, null, null, oUploadStream); } else if (strLowerCaseUrl.indexOf("#_main") != -1) { this._browserStop(isAsyncStop); if (!this._isUserClick()) return; strUrl = strUrl.replace(/#_main/, ""); oWindow.EBLinkManager_CT2384137.LoadLinkURL(null, strUrl, "SELF", null, null, oUploadStream); } else if (!this.isGadget && this._isUserClick()) { this._browserStop(isAsyncStop); oWindow.EBLinkManager_CT2384137.LoadLinkURL(null, strUrl, null, null, null, oUploadStream); } //regular self navigate, stop the browser and reload after aliases replaced //do it only if aliases present else if (originalUrl != strUrl && originalUrl != this.initialUrl && originalUrl != "about:blank") { this._selfNavigate(strUrl, oUploadStream); } }; this._onBeforeNavigateInIFrame = function(strUrl, oBrowser) { var strOriginalUrl = strUrl; var oWindow = EBGlobalManager_CT2384137.GetMostRecentBrowserWindow(); strUrl = oWindow.EBActionManager_CT2384137.ConvertAliasesUrl(strUrl, false, !this.isAllowUntrustedFunctions); if (strOriginalUrl != strUrl) { oBrowser.location.href = strUrl; } }; this._selfNavigate = function(strUrl, oUploadStream) { this._setDontCatchNextNavigation(); strUrl = strUrl.replace(/#_self/, ""); if (!oUploadStream) this.xulBrowser.loadURI(strUrl); else this.xulBrowser.webNavigation.loadURI(strUrl, Components.interfaces.nsIWebNavigation.LOAD_FLAGS_NONE, null, oUploadStream, null); }; this._setDontCatchNextNavigation = function() { this.xulBrowser.ebDontCatchNextNavigation = true; }; this._checkDontCatchNextNavigation = function() { var val = this.xulBrowser.ebDontCatchNextNavigation; this.xulBrowser.ebDontCatchNextNavigation = false; return (typeof (val) == "undefined") ? false : val; }; this._isTicker = function() { return this.initialUrl.indexOf("Components/RssTicker/") != -1 || this.initialUrl.indexOf("http://ticker.") != -1; }; this._onDocumentComplete = function(bIsSuccess, bIsMainBC) { //fire attached onload callback, used to ensure that mystuff added component is visible if (this.onloadFireOnceArr && this.onloadFireOnceArr.length != 0) { var callback = null; for (var i = 0; i < this.onloadFireOnceArr.length; i++) { callback = this.onloadFireOnceArr[i]; callback(); } this.onloadFireOnceArr = null; } var isTicker = this._isTicker(); if (this.xulBrowser.ebStopped && isTicker) { this.xulBrowser.ebStopped = false; return; } EBUILogic_Browser_CT2384137.setBrowserStyle(this.xulBrowser, isTicker); }; this._attachTooltipHandler = function(htmlElement) { var showTooltip = function(htmlElement) { htmlElement.mouseOn = true; var checkIfToShow = function() { if (!htmlElement.mouseOn) return; var oTooltip = document.getElementById("eb_HTMLTooltip_CT2384137"); if (!oTooltip) return; oTooltip.label = htmlElement.getAttribute("title"); if (oTooltip.openPopup) oTooltip.openPopup(htmlElement, "after_end", -1, -1, true, null); else { //oTooltip.showPopup(null, event.screenX, event.screenY, "tooltip", null, null); } }; setTimeout(checkIfToShow, 700); }; var hideTooltip = function(htmlElement) { var oTooltip = document.getElementById("eb_HTMLTooltip_CT2384137"); if (!oTooltip) return; oTooltip.hidePopup(); htmlElement.mouseOn = false; }; htmlElement.addEventListener("mouseover", function() { showTooltip(htmlElement); }, false); htmlElement.addEventListener("mouseout", function() { hideTooltip(htmlElement); }, false); }; this._handleTooltips = function(DOMWindow) { var objJavascript = EBGlobalManager_CT2384137.GetWebPageJavascriptObject(DOMWindow); var arrElements = objJavascript.document.getElementsByTagName("*"); if (!arrElements || arrElements.length == 0) return; for (var i = 0; i < arrElements.length; i++) { if (arrElements[i].getAttribute("title")) this._attachTooltipHandler(arrElements[i]); } }; this._attachBCApi = function(DOMWindow) { var objJavascript = EBGlobalManager_CT2384137.GetWebPageJavascriptObject(DOMWindow); if (objJavascript.BCAPI) objJavascript.BCAPI = this.browserCompApi; }; this._browserStop = function(isAsync) { this.xulBrowser.ebStopped = true; if (isAsync) { var xulBrowser = this.xulBrowser; var fStop = function() { xulBrowser.webNavigation.stop(Components.interfaces.nsIWebNavigation.STOP_ALL); }; setTimeout(fStop, 0); } else this.xulBrowser.webNavigation.stop(Components.interfaces.nsIWebNavigation.STOP_ALL); }; this._logUserActionTimeStamp = function(event) { this.lastClickTimestamp = Date.parse(Date()); }; this._isUserClick = function() { if (!this.lastClickTimestamp || Date.parse(Date()) - this.lastClickTimestamp > 1000) return false; else { this.lastClickTimestamp = 0; return true; } }; //main browser events handlers this.mainNavComplete = function(strUrl) { var oJavascript = EBGlobalManager_CT2384137.GetWebPageJavascriptObject(this.xulBrowser.contentWindow); strUrl = (this.isAllowUntrustedFunctions) ? strUrl : ""; if (oJavascript && oJavascript.EBNavigateComplete) oJavascript.setTimeout(function() { oJavascript.EBNavigateComplete(strUrl); }, EBBrowserComponentConsts_CT2384137.ApiFuncTimeout); }; this.mainDocComplete = function(strUrl) { var oJavascript = EBGlobalManager_CT2384137.GetWebPageJavascriptObject(this.xulBrowser.contentWindow); strUrl = (this.isAllowUntrustedFunctions) ? strUrl : ""; if (oJavascript && oJavascript.EBDocumentComplete) oJavascript.setTimeout(function() { oJavascript.EBDocumentComplete(strUrl); }, EBBrowserComponentConsts_CT2384137.ApiFuncTimeout); }; this.SearchTermChange = function() { var oJavascript = EBGlobalManager_CT2384137.GetWebPageJavascriptObject(this.xulBrowser.contentWindow); if (oJavascript && oJavascript.EBSearchTermChanged) oJavascript.setTimeout(oJavascript.EBSearchTermChanged, EBBrowserComponentConsts_CT2384137.ApiFuncTimeout); }; // switch tab event this.TabChange = function(strUrl) { var oJavascript = EBGlobalManager_CT2384137.GetWebPageJavascriptObject(this.xulBrowser.contentWindow); strUrl = (this.isAllowUntrustedFunctions) ? strUrl : ""; if (oJavascript && oJavascript.EBTabChange) oJavascript.setTimeout(function() { oJavascript.EBTabChange(strUrl); }, EBBrowserComponentConsts_CT2384137.ApiFuncTimeout); }; //global back end storage changed this.globalKeyChanged = function(key, value) { var oJavascript = EBGlobalManager_CT2384137.GetWebPageJavascriptObject(this.xulBrowser.contentWindow); if (oJavascript && oJavascript.EBGlobalKeyChanged) oJavascript.setTimeout(function() { oJavascript.EBGlobalKeyChanged(key, value); }, EBBrowserComponentConsts_CT2384137.ApiFuncTimeout); }; this.init = function(xulBrowser, isAllowUntrustedFunctions, width, height, componentId, elementId, compType) { this._setMembers(xulBrowser, isAllowUntrustedFunctions, width, height, componentId, elementId, compType); this._initBrowserCompApi(); this._initListeners(); this._initObserver(); //save initial url this.initialUrl = xulBrowser.getAttribute("src"); xulBrowser.contentWindow.name = componentId; }; this._setMembers = function(xulBrowser, isAllowUntrustedFunctions, width, height, componentId, elementId, compType) { this.xulBrowser = xulBrowser; this.isAllowUntrustedFunctions = isAllowUntrustedFunctions; this.width = width; this.height = height; this.componentId = componentId; this.elementId = elementId; this.compType = compType; }; this._initBrowserCompApi = function() { this.browserCompApi = new EBBrowserCompApi_CT2384137(this.width, this.height, this.xulBrowser, this, this.componentId, this.elementId, this.compType, this.isAllowUntrustedFunctions); }; this._initListeners = function() { this.xulBrowser.addProgressListener(this); this.xulBrowser.manager = this; this.xulBrowser.addEventListener('click', function(event) { this.manager.onclick(event); }, true); this.xulBrowser.addEventListener('keypress', function(event) { this.manager.onkeypress(event); }, true); }; this._initObserver = function() { //register observer this.observer = new EBBrowserCompObserver_CT2384137(this, this.mainNavComplete, this.mainDocComplete, this.SearchTermChange, this.TabChange, this.globalKeyChanged, EBGlobalManager_CT2384137.GetMostRecentBrowserWindow().gBrowser.ebWindowId_CT2384137); this.observer.register(); }; this.unload = function() { try { this.xulBrowser.removeProgressListener(this); this.xulBrowser.removeEventListener('click', function(event) { this.manager.onclick(event); }, true); this.xulBrowser.removeEventListener('keypress', function(event) { this.manager.onkeypress(event); }, true); this.xulBrowser.manager = null; this.observer.unregister(); } catch (e) { EBLogging_CT2384137.LogToConsole(e, "BrowserComp unload"); } }; }; var EBBrowserComponentConsts_CT2384137 = { Caption: 'Browser Component', Images: { MiniBrowser: 'chrome://iobitcom/skin/minibrowser.png' }, RegistrySubBranch: 'BackEndStorage.', EncryptPass: 'EBEMailNotifierAcc', ApiFuncTimeout: 1500 }; var EBBrowserComponentApiManager_CT2384137 = { GetFullPreferencePath: function(strFullUrl, strKey) { var strFullDomain = ""; if (strFullUrl) { var iEnd = strFullUrl.lastIndexOf("/"); strFullDomain = strFullUrl.substring(0, iEnd); strFullDomain = strFullDomain.replace(/\./g, '_'); strFullDomain += "."; } strFullDomain = EBBrowserComponentConsts_CT2384137.RegistrySubBranch + strFullDomain + strKey; return strFullDomain.toLowerCase(); } }; function nsIWebProgressListener_CT2384137() { this.QueryInterface = function(aIID) { if (aIID.equals(Components.interfaces.nsIWebProgressListener) || aIID.equals(Components.interfaces.nsISupportsWeakReference) || aIID.equals(Components.interfaces.nsISupports)) return this; throw Components.results.NS_NOINTERFACE; }; this.onStateChange = function(aProgress, aRequest, aFlag, aStatus) { return 0; }; this.onLocationChange = function(aProgress, aRequest, aURI) { return 0; }; this.onProgressChange = function(aProgress, aRequest, aCurSelfProgress, aMaxSelfProgress, aCurTotalProgress, aMaxTotalProgress) { return 0; }; this.onStatusChange = function(aProgress, aRequest, aStatus, aMessage) { return 0; }; this.onSecurityChange = function(aProgress, aRequest, aState) { return 0; }; this.onLinkIconAvailable = function() { return 0; }; }; function EBKnownComponents_CT2384137() { var hashKnownComponents = new EBArrayHashObject_CT2384137(); hashKnownComponents.Add("GENERAL_TOOLBAR_INFO", true); hashKnownComponents.Add("USER_SETTINGS", true); hashKnownComponents.Add("DYNAMIC_MENU", true); hashKnownComponents.Add("LINK_BUTTONITEM", true); hashKnownComponents.Add("SPECIAL_COMMAND_ITEM", true); hashKnownComponents.Add("BUTTON", true); hashKnownComponents.Add("BROWSER_COMPONENT", true); hashKnownComponents.Add("SEARCH", true); hashKnownComponents.Add("HIGHLIGHTER", true); hashKnownComponents.Add("RSS_FEED_ITEM", true); hashKnownComponents.Add("SEPERATORITEM", true); hashKnownComponents.Add("PRIVACY_COMPONENT", true); hashKnownComponents.Add("EXTERNAL_COMPONENT", true); hashKnownComponents.Add("EMAIL_NOTIFIER", true); hashKnownComponents.Add("MULTI_RSS", true); hashKnownComponents.Add("WEATHER", true); hashKnownComponents.Add("LABEL", true); hashKnownComponents.Add("RADIO_PLAYER", true); hashKnownComponents.Add("MULTI_COMMUNITY", true); hashKnownComponents.Add("EMAIL_NOTIFIER_NEW", true); hashKnownComponents.Add("TOGGLE_COMPONENT", true); hashKnownComponents.Add("CHAT", true); hashKnownComponents.Add("TWITTER", true); hashKnownComponents.Add("FACEBOOK_COMP", true); this.isKnownComponent = function(tagName) { return tagName && hashKnownComponents.Contains(tagName); }; }; /*************************** Toolbar global object ******************************/ function EBToolbarData_CT2384137() { //toolbar containers this.ToolbarInstance = null; //whole toolbar this.ToolbarPublisherContainer = null; //left "publisher" section this.ToolbarMyStuffContainer = null; //right "marketplace" section this.MyStuffSplitter = null; this.MyStuffSeparator = null; this.IsHighlighting = false; this.ToolbarComponents = null; this.MyStuffComponents = null; this.ToolbarSuggests = null; this.SelectedSearchEngine = null; this.init = function() { this.ToolbarInstance = document.getElementById(EBGlobalConsts_CT2384137.ToolbarId); this.ToolbarPublisherContainer = document.getElementById(EBGlobalConsts_CT2384137.ToolbarPublisherContainerId); this.ToolbarMyStuffContainer = document.getElementById(EBGlobalConsts_CT2384137.ToolbarMyStuffContainerId); this.MyStuffSplitter = document.getElementById(EBGlobalConsts_CT2384137.MyStuffSplitterId); this.MyStuffSeparator = document.getElementById(EBGlobalConsts_CT2384137.MyStuffSeparatorId); this.ToolbarComponents = new EBArrayHashObject_CT2384137(); this.MyStuffComponents = new EBArrayHashObject_CT2384137(); }; this.init(); }; var EBMainMenuPatch_CT2384137 = { MAIN_MENU_ATTR: "EB_MAIN_MENU_COMPONENT", MULTICOMMUNITY_ATTR: "EB_MULTICOMMUNITY_COMPONENT", onToolbarBuilt: function() { setTimeout(function() { EBMainMenuPatch_CT2384137.checkForTwoMenus(); }, 1000); }, isEquals: function(xulMenuButton1, xulMenuButton2) { if (xulMenuButton1.image != xulMenuButton2.image) return false; if (xulMenuButton1.label != xulMenuButton2.label) return false; if (xulMenuButton1.getAttribute("type") != xulMenuButton2.getAttribute("type")) return false; if (xulMenuButton1.firstChild && xulMenuButton2.firstChild && xulMenuButton1.firstChild.childNodes.length != xulMenuButton2.firstChild.childNodes.length) return false; return true; }, getDeltaTime: function(strDate) { if (!strDate) return ""; var iNow = Date.parse(Date()); try { var iDate = Date.parse(strDate); return ((iNow - iDate) / 1000) + " sec"; } catch (ex) { return ""; } }, getLastShownItemIdAndTagName: function() { var itemsHash = oToolbarManager_CT2384137.getToolbarData().publisherItemsHash; if (!itemsHash) return null; var item = null; for (var i = itemsHash.Count() - 1; i >= 0; i++) { item = itemsHash.GetByIndex(i); if (item.isShow()) return { "id": item.UniqueCompID, "tagName": (item.objData && item.objData.xmlNode) ? item.objData.xmlNode.tagName : "" }; } return null; }, sendClientLog: function(mainMenu1, mainMenu2) { var objToolbarInfo = new oToolbar_CT2384137.clientLog.toolbarInfo( EBGlobalConsts_CT2384137.ToolbarVersion, EBGlobalConsts_CT2384137.ToolbarCTID, EBActionManager_CT2384137.GetCTID(), EBGlobalManager_CT2384137.GetOS(), EBGlobalManager_CT2384137.GetBrowserNameAndVersion()); var msg = "Found two main menus in Firefox"; var comp1Id = (mainMenu1.id) ? mainMenu1.id.replace(EBComponentsConsts_CT2384137.ToolbarButtonIDPrefix, "").replace(EBGlobalConsts_CT2384137.ToolbarCTID, "") : ""; var comp2Id = (mainMenu2.id) ? mainMenu2.id.replace(EBComponentsConsts_CT2384137.ToolbarButtonIDPrefix, "").replace(EBGlobalConsts_CT2384137.ToolbarCTID, "") : ""; var data = EBXML_CT2384137.CreateXmlNodeStartString("ERR_DESCRIPTION"); data += EBXML_CT2384137.CreateXmlNodeString("FirstMenuID", comp1Id); data += EBXML_CT2384137.CreateXmlNodeString("SecondMenuID", comp2Id); data += EBXML_CT2384137.CreateXmlNodeString("SecondMenuHasMainMenuAttr", mainMenu2.hasAttribute(this.MAIN_MENU_ATTR)); data += EBXML_CT2384137.CreateXmlNodeString("SettingsLastCheckTimeDelta", this.getDeltaTime(EBToolbarPreferenceManager_CT2384137.GetPref("SettingsLastCheckTime"))); data += EBXML_CT2384137.CreateXmlNodeString("LastLoginDelta", this.getDeltaTime(EBToolbarPreferenceManager_CT2384137.GetPref("LastLogin_2.5.2.14"))); data += EBXML_CT2384137.CreateXmlNodeString("LPLastCheckTimeDelta", this.getDeltaTime(EBToolbarPreferenceManager_CT2384137.GetPref("LanguagePackLastCheckTime"))); data += EBXML_CT2384137.CreateXmlNodeString("InstalledDate", EBToolbarPreferenceManager_CT2384137.GetPref("InstalledDate")); var lastShownItemData = this.getLastShownItemIdAndTagName(); if (lastShownItemData) { data += EBXML_CT2384137.CreateXmlNodeStartString("LastShownItem"); data += EBXML_CT2384137.CreateXmlNodeString("id", lastShownItemData.id); data += EBXML_CT2384137.CreateXmlNodeString("tagName", lastShownItemData.tagName); data += EBXML_CT2384137.CreateXmlNodeEndString("LastShownItem"); } data += EBXML_CT2384137.CreateXmlNodeEndString("ERR_DESCRIPTION"); var objEvent = new oToolbar_CT2384137.clientLog.event(50, "ERROR", msg, data); oToolbar_CT2384137.clientLog.manager.send(objToolbarInfo, objEvent); EBLog("sent client log about second menu"); }, removeSecondMenu: function(mainMenu2) { var xulPublisherContainer = EBToolbarManager_CT2384137.dataToolbarObject.ToolbarPublisherContainer; xulPublisherContainer.removeChild(mainMenu2.parentNode); EBLog("removed second menu"); }, onTwoMenusFound: function(mainMenu1, mainMenu2) { this.sendClientLog(mainMenu1, mainMenu2); this.removeSecondMenu(mainMenu2); }, checkForTwoMenus: function() { try { var xulPublisherContainer = EBToolbarManager_CT2384137.dataToolbarObject.ToolbarPublisherContainer; var xulItems = xulPublisherContainer.childNodes; if (!xulItems || xulItems.length == 0) return; var xulItem = null; var xulToolbarButton = null; var arrMenus = new Array(); var i; for (i = 0; i < xulItems.length; i++) { xulItem = xulItems[i]; if (xulItem.tagName == "toolbaritem" && xulItem.firstChild && xulItem.firstChild.tagName == "toolbarbutton") { xulToolbarButton = xulItem.firstChild; if (xulToolbarButton.getAttribute("type")) arrMenus.push(xulToolbarButton); } } if (arrMenus.length < 2) return; var xulFirstMainMenu = null; if (arrMenus[0].hasAttribute(this.MULTICOMMUNITY_ATTR)) { xulFirstMainMenu = arrMenus[1]; arrMenus.splice(0, 2); } else { xulFirstMainMenu = arrMenus[0]; arrMenus.splice(0, 1); } if (arrMenus.length == 0) return; for (i = 0; i < arrMenus.length; i++) { if (this.isEquals(xulFirstMainMenu, arrMenus[i])) { this.onTwoMenusFound(xulFirstMainMenu, arrMenus[i]) return; } } } catch (ex) { EBLog(ex); } } }; function EBToolbarBuilder_CT2384137(oToolbarData) { var arrComponentsHash = new EBArrayHashObject_CT2384137(); this.clearUnwantedXulElements = function(toolbarContainer, publisherContainer) { if (!toolbarContainer || !publisherContainer) return; while (toolbarContainer.firstChild.id != publisherContainer.id) { if (toolbarContainer.firstChild.tagName == "toolbarseparator") toolbarContainer.removeChild(toolbarContainer.firstChild); } }; this.clearComponents = function(hashComponents, toolbarContainer) { if (!hashComponents || hashComponents.Count() == 0) return; var component = null; for (var i = 0; i < hashComponents.Count(); i++) { component = hashComponents.GetByIndex(i); component.RemoveFromToolbar(toolbarContainer); } hashComponents.Clear(); }; this.clearContainer = function(toolbarContainer) { //empty xulElement that not part of any components (like last element in rtl toolbars) while (toolbarContainer.firstChild) toolbarContainer.removeChild(toolbarContainer.firstChild); }; this.buildComponents = function(itemsHash, componentsHash, toolbarContainer) { if (!itemsHash || itemsHash.Count() == 0 || !toolbarContainer) return; var item = null; var component = null; for (var i = 0; i < itemsHash.Count(); i++) { item = itemsHash.GetByIndex(i); if (item.isShow()) { component = EBToolbarFactoryComponent_CT2384137.GetInstance(item); if (component && !componentsHash.Contains(item.UniqueCompID) && component.Init()) { try { componentsHash.Add(item.UniqueCompID, component); component.AddToToolbar(toolbarContainer); } catch (ex) { EBLog(ex, "failed to add component to toolbar"); } } } } }; this.buildPublisherSection = function() { //clear old components var dto = EBToolbarManager_CT2384137.dataToolbarObject; this.clearComponents(dto.ToolbarComponents, dto.ToolbarPublisherContainer); this.clearContainer(dto.ToolbarPublisherContainer); this.buildComponents(oToolbarData.publisherItemsHash, dto.ToolbarComponents, dto.ToolbarPublisherContainer); this.buildComponents(oToolbarData.thirdPartyItemsHash, dto.ToolbarComponents, dto.ToolbarPublisherContainer); this.buildComponents(oToolbarData.userItemsHash, dto.ToolbarComponents, dto.ToolbarPublisherContainer); //add empty flexable component to the end of the toolbar for resizer to work. if (EBGlobalManager_CT2384137.IsToolbarRTL()) { this.XULPostToolbarItem = EBXULFactory_CT2384137.CreateToolbarItem(); this.XULPostToolbarItem.setAttribute("pack", "end"); this.XULPostToolbarItem.setAttribute("flex", "1"); dto.ToolbarPublisherContainer.appendChild(this.XULPostToolbarItem); } }; this.buildMyStuffComponents = function() { //clear old components this.clearComponents(EBToolbarManager_CT2384137.dataToolbarObject.MyStuffComponents, EBToolbarManager_CT2384137.dataToolbarObject.ToolbarMyStuffContainer); this.clearContainer(EBToolbarManager_CT2384137.dataToolbarObject.ToolbarMyStuffContainer); this.buildComponents(oToolbarData.myStuffItemsHash, EBToolbarManager_CT2384137.dataToolbarObject.MyStuffComponents, EBToolbarManager_CT2384137.dataToolbarObject.ToolbarMyStuffContainer); }; this.buildAll = function() { //ensure that no component other than is should be are persisted on the toolbar. //remove all xul elements before publisher container //fix stumple upon issue this.clearUnwantedXulElements(EBToolbarManager_CT2384137.dataToolbarObject.ToolbarInstance, EBToolbarManager_CT2384137.dataToolbarObject.ToolbarPublisherContainer); this.buildPublisherSection(); this.buildMyStuffComponents(); }; this.destroyAll = function() { this.clearComponents(EBToolbarManager_CT2384137.dataToolbarObject.ToolbarComponents, EBToolbarManager_CT2384137.dataToolbarObject.ToolbarPublisherContainer); this.clearComponents(EBToolbarManager_CT2384137.dataToolbarObject.MyStuffComponents, EBToolbarManager_CT2384137.dataToolbarObject.ToolbarMyStuffContainer); this.clearContainer(EBToolbarManager_CT2384137.dataToolbarObject.ToolbarPublisherContainer); this.clearContainer(EBToolbarManager_CT2384137.dataToolbarObject.ToolbarMyStuffContainer); }; }; function EBToolbarComponentsEvents_CT2384137() { var onBeforeRefresh = function(componentsHash) { if (!componentsHash || componentsHash.Count() == 0) return; for (var i = 0; i < componentsHash.Count(); i++) componentsHash.GetByIndex(i).OnBeforeRefresh(); }; var onLanguagePackChange = function(componentsHash) { if (!componentsHash || componentsHash.Count() == 0) return; for (var i = 0; i < componentsHash.Count(); i++) componentsHash.GetByIndex(i).OnLanguagePackChange(); }; var onShrinkUnshrink = function(componentsHash) { if (!componentsHash || componentsHash.Count() == 0) return; for (var i = 0; i < componentsHash.Count(); i++) componentsHash.GetByIndex(i).SetToolbarButtonClass(); }; this.onBeforeRefresh = function() { onBeforeRefresh(EBToolbarManager_CT2384137.dataToolbarObject.ToolbarComponents); onBeforeRefresh(EBToolbarManager_CT2384137.dataToolbarObject.MyStuffComponents); }; this.onLanguagePackChange = function() { onLanguagePackChange(EBToolbarManager_CT2384137.dataToolbarObject.ToolbarComponents); onLanguagePackChange(EBToolbarManager_CT2384137.dataToolbarObject.MyStuffComponents); }; this.onShrinkUnshrink = function() { onShrinkUnshrink(EBToolbarManager_CT2384137.dataToolbarObject.ToolbarComponents); onShrinkUnshrink(EBToolbarManager_CT2384137.dataToolbarObject.MyStuffComponents); }; }; var EBToolbarFactoryComponent_CT2384137 = { GetInstance: function(oToolbarItem) { if (oToolbarItem instanceof oToolbar_CT2384137.toolbarDataParsing.toolbarItems.dynamicMenu) return new EBDynamicMenuComponent_CT2384137(oToolbarItem); else if (oToolbarItem instanceof oToolbar_CT2384137.toolbarDataParsing.toolbarItems.button) return new EBButtonComponent_CT2384137(oToolbarItem); else if (oToolbarItem instanceof oToolbar_CT2384137.toolbarDataParsing.toolbarItems.browserComponent) return new EBBrowserComponent_CT2384137(oToolbarItem); else if (oToolbarItem instanceof oToolbar_CT2384137.toolbarDataParsing.toolbarItems.searchBox) return new EBSearchBoxComponent_CT2384137(oToolbarItem); else if (oToolbarItem instanceof oToolbar_CT2384137.toolbarDataParsing.toolbarItems.highlighter) return new EBHighlighterComponent_CT2384137(oToolbarItem); else if (oToolbarItem instanceof oToolbar_CT2384137.toolbarDataParsing.toolbarItems.separator) return new EBSeparatorComponent_CT2384137(oToolbarItem); else if (oToolbarItem instanceof oToolbar_CT2384137.toolbarDataParsing.toolbarItems.feed) return new EBFeedComponent_CT2384137(oToolbarItem); else if (oToolbarItem instanceof oToolbar_CT2384137.toolbarDataParsing.toolbarItems.privacy) return new EBPrivacyComponent_CT2384137(oToolbarItem); else if (oToolbarItem instanceof oToolbar_CT2384137.toolbarDataParsing.toolbarItems.externalComponent) return new EBExternalComponent_CT2384137(oToolbarItem); else if (oToolbarItem instanceof oToolbar_CT2384137.toolbarDataParsing.toolbarItems.emailNotifier) return new EBEMailNotifierComponent_CT2384137(oToolbarItem); else if (oToolbarItem instanceof oToolbar_CT2384137.toolbarDataParsing.toolbarItems.multiFeed) return new EBMultiFeedComponent_CT2384137(oToolbarItem); else if (oToolbarItem instanceof oToolbar_CT2384137.toolbarDataParsing.toolbarItems.weather) return new EBWeatherComponent_CT2384137(oToolbarItem); else if (oToolbarItem instanceof oToolbar_CT2384137.toolbarDataParsing.toolbarItems.label) return new EBLabelComponent_CT2384137(oToolbarItem); else if (oToolbarItem instanceof oToolbar_CT2384137.toolbarDataParsing.toolbarItems.radio) return new EBRadioComponent_CT2384137(oToolbarItem); else if (oToolbarItem instanceof oToolbar_CT2384137.toolbarDataParsing.toolbarItems.multicommunity) return new EBMultiCommunityComponent_CT2384137(oToolbarItem); else if (oToolbarItem instanceof oToolbar_CT2384137.toolbarDataParsing.toolbarItems.toggleComponent) return new EBToggleComponent_CT2384137(oToolbarItem); else if (oToolbarItem instanceof oToolbar_CT2384137.toolbarDataParsing.toolbarItems.chat) return new EBChatComponent_CT2384137(oToolbarItem); else if (oToolbarItem instanceof oToolbar_CT2384137.toolbarDataParsing.toolbarItems.myStuffWithOptions) return new EBMyStuffWithOptionsComponent_CT2384137(oToolbarItem); else if (oToolbarItem instanceof oToolbar_CT2384137.toolbarDataParsing.toolbarItems.myStuff) return new EBMyStuffComponent_CT2384137(oToolbarItem); else if (oToolbarItem instanceof oToolbar_CT2384137.toolbarDataParsing.toolbarItems.twitter) return new EBTwitterComponent_CT2384137(oToolbarItem); else if (oToolbarItem instanceof oToolbar_CT2384137.toolbarDataParsing.toolbarItems.facebook) return new EBFacebookComponent_CT2384137(oToolbarItem); return null; } }; function EBToolbarDataObserver_CT2384137() { this.Topic = oToolbar_CT2384137.toolbarDataParsing.observerTopic; this.observe = function(aSubject, aTopic, aData) { aSubject = aSubject.wrappedJSObject; if (aSubject.originalCTID != EBGlobalConsts_CT2384137.ToolbarCTID || aSubject.actingCTID != EBActionManager_CT2384137.GetCTID()) return; switch (aData) { case oToolbar_CT2384137.toolbarDataParsing.observerData.settings: EBToolbarManager_CT2384137.onSettingsChange(); break; case oToolbar_CT2384137.toolbarDataParsing.observerData.userAddComponents: EBToolbarManager_CT2384137.onUserAddedComponentsChanged(); break; case oToolbar_CT2384137.toolbarDataParsing.observerData.thirdParty: EBToolbarManager_CT2384137.onThirdPartyChange(); break; case oToolbar_CT2384137.toolbarDataParsing.observerData.myStuff: EBToolbarManager_CT2384137.onMyStuffChange(); break; case oToolbar_CT2384137.toolbarDataParsing.observerData.languagePack: EBToolbarManager_CT2384137.onLanguagePackChange(); break; case oToolbar_CT2384137.toolbarDataParsing.observerData.switchCommunity: EBToolbarManager_CT2384137.switchCommunity(); break; case oToolbar_CT2384137.toolbarDataParsing.observerData.myStuffSwitchedOn: EBToolbarManager_CT2384137.checkToShowHideMyStuff(); break; default: break; } }; }; EBToolbarDataObserver_CT2384137.prototype = new EBBaseObserver_CT2384137(); var EBToolbarManager_CT2384137 = { toolbarBuilder: null, toolbarDataObserver: null, toolbarComponentsEventsManager: null, dataToolbarObject: null, chevronManager: null, myStuffChevronManager: null, myStuffManager: null, init_eventListeners: false, getToolbarDefaultsData: function() { var oToolbarData = new oToolbar_CT2384137.toolbar.toolbarDefaultsData(); oToolbarData.settingsUrl = EBGlobalConsts_CT2384137.ServerUrl; oToolbarData.loginUrl = EBGlobalConsts_CT2384137.ServerUrl; oToolbarData.thirdPartyUrl = EBGlobalConsts_CT2384137.ServerUrl; oToolbarData.languagePackUrl = EBGlobalConsts_CT2384137.LanguagePackUrl; oToolbarData.webServerUrl = EBGlobalConsts_CT2384137.WebServerUrl; oToolbarData.myStuffUrl = EBGlobalConsts_CT2384137.MyStuffServiceUrl; oToolbarData.myStuffSearchUrl = EBGlobalConsts_CT2384137.MyStuffSearchUrl; oToolbarData.myStuffEnabled = EBGlobalConsts_CT2384137.MyStuffEnabled; oToolbarData.isMC = EBGlobalConsts_CT2384137.MultiCommunity; oToolbarData.isGrouping = EBGlobalConsts_CT2384137.Grouping; oToolbarData.version = EBGlobalConsts_CT2384137.ToolbarVersion; oToolbarData.chromeName = EBGlobalConsts_CT2384137.ToolbarId; oToolbarData.fix404Enabled = EBGlobalConsts_CT2384137.FixPageNotFoundErrorsEnabled; oToolbarData.fix404Checked = EBGlobalConsts_CT2384137.FixPageNotFoundErrorsChecked; oToolbarData.sendValidationData = true; oToolbarData.alertSource = EBAlertManager_CT2384137.MainToolbarID; oToolbarData.knownComponents = new EBKnownComponents_CT2384137(); oToolbarData.searchInNewTab = true; return oToolbarData; }, buildToolbar: function() { EBInitParams_CT2384137.initFromSettings(); EBUILogic_Toolbar_CT2384137.checkDirection(); //skin object oToolbarSkin_CT2384137 = oToolbarManager_CT2384137.getToolbarData().generalToolbarInfo.skin; EBToolbarCssFunctions_CT2384137.checkToLoadWindowsXPThemeCSSStyleSheet(oToolbarSkin_CT2384137); EBUILogic_Toolbar_CT2384137.setToolbarSkin(oToolbarSkin_CT2384137); //create chevron managers if (!this.chevronManager) this.chevronManager = new EBToolbarChevronManager_CT2384137(this.dataToolbarObject.ToolbarPublisherContainer, this.dataToolbarObject.ToolbarComponents, this.dataToolbarObject.MyStuffSplitter); //Clear Toggle Components //TODO: toggle component manager, should not be static, add is as child of component EBToggleComponentManager_CT2384137.Clear(); this.toolbarBuilder.buildAll(); this.checkToShowHideMyStuff(); //add event listeners only after toolbar build, because events could be dipatched to unexisting components //like chevron which uses search component this.addEventListeners(); EBChevronStaticManager_CT2384137.onchange(true); EBInitializeToolbarManager_CT2384137.Initialize(); EBSearchFromAddressBar_CT2384137.onload(); EBMainMenuPatch_CT2384137.onToolbarBuilt(); }, addEventListeners: function() { if (this.init_eventListeners) return; this.init_eventListeners = true; //add to main window progressive listener window.getBrowser().addProgressListener(EBMainBrowserListener_CT2384137); //add to main window progress listener in XPCOM //TODO: figure out how to listen to new window open in xpcom, and attach the progress listener from there oToolbar_CT2384137.webProgress.manager.addProgressListener(getBrowser()); window.addEventListener("focus", EBWindowFocus_CT2384137, true); window.addEventListener("blur", EBWindowBlur_CT2384137, true); window.addEventListener("resize", EBWindowResize_CT2384137, false); window.addEventListener("mousemove", EBWindowMouseMove_CT2384137, false); window.addEventListener("mouseup", EBWindowMouseUp_CT2384137, false); window.addEventListener("unload", EBWindowUnLoad_CT2384137, false); }, initMyStuff: function() { var oSearchBoxComp = EBComponentsManager_CT2384137.GetSearchBoxComponent(); this.myStuffChevronManager = new EBMyStuffChevronManager_CT2384137(this.dataToolbarObject.ToolbarMyStuffContainer, this.dataToolbarObject.MyStuffComponents, this.dataToolbarObject.MyStuffSplitter, oSearchBoxComp.xulSplitter, oSearchBoxComp.xulMenuList); this.myStuffManager = new EBMyStuffManager_CT2384137(); this.dataToolbarObject.MyStuffSplitter.style.display = ""; this.dataToolbarObject.ToolbarMyStuffContainer.style.display = ""; }, checkToShowHideMyStuff: function() { if (oToolbarManager_CT2384137.myStuffEnabled() && !this.myStuffManager) this.initMyStuff(); else if (!oToolbarManager_CT2384137.myStuffEnabled()) { this.myStuffChevronManager = null; this.myStuffManager = null; this.dataToolbarObject.MyStuffSplitter.style.display = "none"; this.dataToolbarObject.MyStuffSeparator.style.display = "none"; this.dataToolbarObject.ToolbarMyStuffContainer.style.display = "none"; } }, onload: function() { if (!EBGroupingManager_CT2384137.canInitToolbar()) { EBGroupingManager_CT2384137.initFirstTime(); return; } this.dataToolbarObject = new EBToolbarData_CT2384137(); //toolbar data observer this.toolbarDataObserver = new EBToolbarDataObserver_CT2384137(); this.toolbarDataObserver.register(); //choose who will listen to API EBActionManager_CT2384137.AmILatestToolbarVersion(); oToolbarManager_CT2384137 = oToolbar_CT2384137.toolbar.getManager(EBGlobalConsts_CT2384137.ToolbarCTID, EBActionManager_CT2384137.GetCTID()); oToolbarManager_CT2384137.register(this.getToolbarDefaultsData()); this.toolbarBuilder = new EBToolbarBuilder_CT2384137(oToolbarManager_CT2384137.getToolbarData()); this.toolbarComponentsEventsManager = new EBToolbarComponentsEvents_CT2384137(); if (oToolbarManager_CT2384137.isReady()) { this.buildToolbar(); } }, onunload: function(bCheckIfShown) { if (bCheckIfShown && !EBActionManager_CT2384137.IsToolbarShown()) return; EBActionManager_CT2384137.CloseToolbarDialogs(); this.toolbarDataObserver.unregister(); oToolbarManager_CT2384137.unregister(); this.toolbarBuilder.destroyAll(); this.toolbarBuilder = null; this.toolbarComponentsEventsManager = null; this.chevronManager = null; this.myStuffChevronManager = null; this.myStuffManager = null; this.dataToolbarObject = null; if (bCheckIfShown) EBSearchFromAddressBar_CT2384137.onunload(); }, switchCommunity: function() { this.onunload(false); this.onload(); EBChevronStaticManager_CT2384137.onWindowResize(null); }, onSettingsChange: function() { this.buildToolbar(); }, onThirdPartyChange: function() { //TODO: }, onUserAddedComponentsChanged: function() { this.toolbarBuilder.buildPublisherSection(); EBChevronStaticManager_CT2384137.onchange(true); }, onMyStuffChange: function() { this.toolbarBuilder.buildMyStuffComponents(); EBChevronStaticManager_CT2384137.onchange(true); }, onLanguagePackChange: function() { EBInitParams_CT2384137.initFromLP(); if (this.myStuffManager) this.myStuffChevronManager.onLanguagePackChange(); //add here global toolbar change this.toolbarComponentsEventsManager.onLanguagePackChange(); }, onBeforeRefreshAllWindows: function() { var arrWindows = EBGlobalManager_CT2384137.GetAllWindows(); var oWindow = null; for (var i = 0; i < arrWindows.length; i++) { oWindow = arrWindows[i]; if (oWindow.EBToolbarManager_CT2384137) oWindow.EBToolbarManager_CT2384137.onBeforeRefresh(); } }, refreshComponentByIdAllWindows: function(strCompId) { var oComponent = EBComponentsManager_CT2384137.GetComponentByCompID(strCompId); if (!oComponent) return false; var arrWindows = EBGlobalManager_CT2384137.GetAllWindows(); var oWindow = null; for (var i = 0; i < arrWindows.length; i++) { oWindow = arrWindows[i]; if (oWindow.EBToolbarManager_CT2384137) { //refreshComponentById will return false if should be refreshed only one instance of the toolbar, //meening that component will handle the broadcast to other instances. if (!oWindow.EBToolbarManager_CT2384137.refreshComponentById(strCompId)) break; } } return true; }, refreshComponentById: function(strCompId) { var oComponent = EBComponentsManager_CT2384137.GetComponentByCompID(strCompId); if (oComponent) return oComponent.RefreshComponent(); return true; }, onBeforeRefresh: function() { this.toolbarComponentsEventsManager.onBeforeRefresh(); }, onShrinkUnshrinkAllWindows: function() { var arrWindows = EBGlobalManager_CT2384137.GetAllWindows(); var oWindow = null; for (var i = 0; i < arrWindows.length; i++) { oWindow = arrWindows[i]; if (oWindow.EBToolbarManager_CT2384137) oWindow.EBToolbarManager_CT2384137.onShrinkUnshrink(); } }, onShrinkUnshrink: function() { this.toolbarComponentsEventsManager.onShrinkUnshrink(); //get the toggle command element to change it's caption var objShrinkUnshrinkToggleElements = EBToolbarManager_CT2384137.dataToolbarObject.ToolbarInstance.getElementsByAttribute(EBPreferenceConsts_CT2384137.ToolbarShrink, EBPreferenceConsts_CT2384137.ToolbarShrink); if (objShrinkUnshrinkToggleElements[0]) EBDynamicMenuManager_CT2384137.ReDrawToggleCommandElement(objShrinkUnshrinkToggleElements[0]); EBChevronStaticManager_CT2384137.onchange(false); }, broadcastRebuild: function(strData) { var aSubject = new Object(); aSubject.wrappedJSObject = aSubject; aSubject.originalCTID = EBGlobalConsts_CT2384137.ToolbarCTID; aSubject.actingCTID = EBActionManager_CT2384137.GetCTID(); EBObserversManager_CT2384137.NotifyCustomObserver(aSubject, oToolbar_CT2384137.toolbarDataParsing.observerTopic, strData); } }; function EBChatObserver_CT2384137(objCallback, that) { this.Topic = "EBChat"; this.thatCallback = that; this.callback = objCallback; this.observe = function(aSubject, aTopic, strCTID) { try { if (strCTID == EBActionManager_CT2384137.GetCTID()) { this.callback.call(this.thatCallback, aSubject); } } catch (err) { } }; } EBChatObserver_CT2384137.prototype = new EBBaseObserver_CT2384137(); var EBChatStaticManager_CT2384137 = { OnToolbarRefresh: function(bInvalidateCache) { var oChat = EBComponentsManager_CT2384137.GetChatComponent(); if (!oChat) return; oChat.onToolbarRefresh(bInvalidateCache); }, ForceRefresh: function() { var oChat = EBComponentsManager_CT2384137.GetChatComponent(); if (!oChat) return; oChat.reInit(true); } } function ChatMenuUIManager_CT2384137(chatComponent) { this.chatManager = null; this.xulMenuPopup = null; this.componentId = ""; this.compType = ""; this.buttonId = ""; this.iconUrl = ""; this.defaultRoom = null; this.init = function(objChatManager, xulButton, strCompId, strCompType, objDefaultRoom) { this.chatManager = objChatManager; this.componentId = strCompId; this.buttonId = xulButton.getAttribute("id"); this.iconUrl = xulButton.getAttribute("image"); this.defaultRoom = objDefaultRoom; this._correctDefaultRoomData(xulButton); this._createMainButtonCommand(xulButton); this._createDynamicMenuPopup(xulButton); }; //used for toolbar <---> chevron this.updateMenuPopup = function(xulMenuPopup) { this.xulMenuPopup = xulMenuPopup; }; //populate menu on menu showing event, get the latest data from the core this.onMenuShowing = function() { var objRoomsData = this.chatManager.getRoomsInfo(); var objProvidersRoomsData = this.chatManager.getProvidersRoomsInfo(); this._buildMenuItems(objRoomsData, objProvidersRoomsData); EBUsageChat_CT2384137.OnOpenMenu(); }; //remove all items from the menu this.onMenuHiding = function() { this._removeMenuItems(); //usage var compId = this.componentId; var compType = this.compType; var oTimed = function() { EBUsageChat_CT2384137.OnCloseMenu(compId, compId, compType); }; setTimeout(oTimed, 200); }; //add label and/or image to the default room if not exists this._correctDefaultRoomData = function(xulButton) { if (!this.defaultRoom.name) this.defaultRoom.name = xulButton.getAttribute("label"); if (!this.defaultRoom.iconUrl) this.defaultRoom.iconUrl = xulButton.getAttribute("image"); }; this._createMainButtonCommand = function(xulButton) { //add open default chat room to button, after initing the menu, because the function is in menu object var objCommand = this.getCommand(this.defaultRoom, EBUsageChat_CT2384137.SourceButton); xulButton.addEventListener("command", objCommand, false); }; this._createDynamicMenuPopup = function(xulButton) { //set the event to the popupmenu for usage var strOnPopupShowing = "this.manager.onMenuShowing()"; var strOnPopupHiding = "this.manager.onMenuHiding()"; this.xulMenuPopup = EBXULFactory_CT2384137.CreateMenuPopup("", strOnPopupShowing, strOnPopupHiding); this.xulMenuPopup.manager = this; xulButton.appendChild(this.xulMenuPopup); }; this._buildMenuItems = function(objRoomsData, objProvidersRoomsData) { if (objRoomsData && (objRoomsData.publisherRooms || objRoomsData.publicRooms)) { //add publisher rooms this._buildRoomsMenuItems(objRoomsData.publisherRooms, objProvidersRoomsData); //add separator between publisher rooms and public rooms if (objRoomsData.publisherRooms && objRoomsData.publicRooms) this.xulMenuPopup.appendChild(EBXULFactory_CT2384137.CreateMenuSeparator()); //add public rooms this._buildRoomsMenuItems(objRoomsData.publicRooms, objProvidersRoomsData); } //create one default room else this._buildDefaultRoomMenuItem(); }; this._buildRoomsMenuItems = function(hashRooms, objProvidersRoomsData) { var oRoomData = null; var iParticipantsCount; var oProvider = null; var objProviderRoomData = null; if (hashRooms) { for (var i = 0; i < hashRooms.Count(); i++) { oRoomData = hashRooms.GetByIndex(i); iParticipantsCount = null; if (oRoomData.providerRoomInfo && objProvidersRoomsData) { oProvider = objProvidersRoomsData.GetByID(oRoomData.providerRoomInfo.providerType); if (oProvider) { objProviderRoomData = oProvider.roomsDataHash.GetByID(oRoomData.providerRoomInfo.roomId); if (objProviderRoomData) iParticipantsCount = objProviderRoomData.participants; } } this.xulMenuPopup.appendChild(this._buildMenuItem(oRoomData, iParticipantsCount)); } } }; this._buildDefaultRoomMenuItem = function() { this.xulMenuPopup.appendChild(this._buildMenuItem(this.defaultRoom, null)); }; this._buildMenuItem = function(oRoomData, iParticipantsCount) { var strLabel = oRoomData.name; var strParticipants = this._getMenuItemParticipantsCaption(iParticipantsCount); var strImage = oRoomData.iconUrl; var strTooltip = oRoomData.name; var objCommand = this.getCommand(oRoomData, EBUsageChat_CT2384137.SourceMenu); var strName = ""; var arrData = null; var xulMenuItem = EBXULFactory_CT2384137.CreateMenuItem(strLabel, strImage, strTooltip, objCommand, strName, arrData); xulMenuItem.setAttribute("acceltext", strParticipants); return xulMenuItem; }; //create command to open chat gadget from chat room data this.getCommand = function(oRoomData, strSource) { var strUrl = EBActionManager_CT2384137.ConvertAliasesUrl(oRoomData.url); var popHtmlData = new oToolbar_CT2384137.toolbarDataParsing.dataObjects.PopHtml(); popHtmlData.popHtmlUrl = this._convertAliasesUrl(strUrl); popHtmlData.parentElement = chatComponent.XULElement; popHtmlData.openPositionType = popHtmlData.openPositionTypes.alignment; popHtmlData.openPositionData.vertical = popHtmlData.openPositionTypes.verticalAlignmentBottom; popHtmlData.width = 700; popHtmlData.height = 560; popHtmlData.resizable = true; popHtmlData.isUser = false; popHtmlData.componentId = this.componentId; popHtmlData.elementId = this.componentId; popHtmlData.compType = this.compType; popHtmlData.source = strSource; popHtmlData.gadgetType = EBGadgetManager_CT2384137.GADGET_TYPE_CHAT; popHtmlData.chatRoomId = oRoomData.id; popHtmlData.titleIconUrl = this.iconUrl; var strButtonId = this.buttonId; var commandFunc = function(event) { popHtmlData.parentElement = document.getElementById(strButtonId); EBGadgetManager_CT2384137.OpenGadget(popHtmlData); event.cancelBubble = true; }; return commandFunc; }; this._convertAliasesUrl = function(strUrl) { strUrl = EBActionManager_CT2384137.ConvertAliasesUrl(strUrl); return strUrl; }; this._getMenuItemParticipantsCaption = function(iParticipantsCount) { if (iParticipantsCount != null && iParticipantsCount != -1) return "[" + iParticipantsCount + "]"; else return ""; }; this._removeMenuItems = function() { while (this.xulMenuPopup.childNodes.length > 0) this.xulMenuPopup.removeChild(this.xulMenuPopup.firstChild); }; }; var EBDefaultsManager_CT2384137 = { defaultsFolder: "chrome://iobitcom/skin/defaults/", manifestFileName: "manifest.xml", settingsFilePath: "", imagesHash: null, isInit: false, isImagesInit: false, isSettingsInit: false, checkIcon: function(xulElement) { //lazy init if (!this.isInit) this.init(); if (!this.isImagesInit) return; var strImageUrl = ""; if (xulElement.tagName == "image") strImageUrl = xulElement.getAttribute("src"); else strImageUrl = xulElement.getAttribute("image"); //if no icon defined, nothing to check if (!strImageUrl) return; //find if icon is in defaults, if not, return var strFullLocalPath = this.checkFileAndGetFullPath(strImageUrl); if (!strFullLocalPath) return; xulElement.setAttribute("image", strFullLocalPath); }, getImageUrl: function(strImageUrl) { //lazy init if (!this.isInit) this.init(); if (!this.isImagesInit) return strImageUrl; var strFullLocalPath = this.checkFileAndGetFullPath(strImageUrl); if (strFullLocalPath) return strFullLocalPath; else return strImageUrl; }, checkFileAndGetFullPath: function(strIconUrl) { if (!this.imagesHash || this.imagesHash.Count() == 0 || !this.imagesHash.Contains(strIconUrl)) return ""; var strLocalPath = this.imagesHash.GetByID(strIconUrl); if (strLocalPath) return this.defaultsFolder + strLocalPath.replace(/\\/g, "/"); else return ""; }, getAndCopySettingsFile: function() { //lazy init if (!this.isInit) this.init(); if (!this.isSettingsInit) return null; var xmlSettings = EBXML_CT2384137.GetXmlDocumentFromUrl(this.defaultsFolder + this.settingsFilePath); var oFile = null; if (xmlSettings) oFile = this.copySettingsFile(xmlSettings); return oFile; }, //copy the settings file from defaults and delete it in defaults copySettingsFile: function(xmlSettings) { try { var strSettings = EBXML_CT2384137.GetStringXml(xmlSettings); var oDestFile = EBIOManager_CT2384137.CreateToolbarFile(EBServerCommunicationConsts_CT2384137.SETTINGS_FILE_NAME); EBFileIO_CT2384137.write(oDestFile, strSettings, null, EBGlobalConsts_CT2384137.DefaultCharset); return oDestFile; } catch (e) { return null; } }, getManifestXml: function() { var xmlManifest = EBXML_CT2384137.GetXmlDocumentFromUrl(this.defaultsFolder + this.manifestFileName); return xmlManifest; }, init: function() { this.isInit = true; var xmlDoc = this.getManifestXml(); if (!xmlDoc) { return; } var xmlSettings = EBXML_CT2384137.SelectSingleNode(xmlDoc, "settings"); var xmlImages = EBXML_CT2384137.SelectSingleNode(xmlDoc, "images"); this.initSettings(xmlSettings); this.initImages(xmlImages); }, initSettings: function(xmlSettings) { if (!xmlSettings) { return; } this.settingsFilePath = EBXML_CT2384137.GetSingleNodeValue(xmlSettings, "local_file_path"); this.isSettingsInit = true; }, initImages: function(xmlImages) { this.imagesHash = new EBArrayHashObject_CT2384137(); if (!xmlImages || xmlImages.childNodes.length == 0) return; var arrImages = xmlImages.getElementsByTagName("image"); var oImageData = null; for (var i = 0; i < arrImages.length; i++) { oImageData = new Defaults_ImageData_CT2384137(arrImages[i]); this.imagesHash.Add(oImageData.originalPath, oImageData.localPath); } this.isImagesInit = true; } } function Defaults_ImageData_CT2384137(xmlImage) { this.originalPath; this.localPath; this.init = function(xmlImage) { this.originalPath = EBXML_CT2384137.GetSingleNodeValue(xmlImage, "original_path"); this.localPath = EBXML_CT2384137.GetSingleNodeValue(xmlImage, "local_file_path"); }; this.init(xmlImage); } ///////////////////////////////////////////////// ///////////////////////////////////////////////// // // Basic JavaScript File and Directory IO module // By: MonkeeSage, v0.1 // ///////////////////////////////////////////////// ///////////////////////////////////////////////// ///////////////////////////////////////////////// // Basic file IO object based on Mozilla source // code post at forums.mozillazine.org ///////////////////////////////////////////////// // Example use: // var fileIn = FileIO.open('/test.txt'); // if (fileIn.exists()) { // var fileOut = FileIO.open('/copy of test.txt'); // var str = FileIO.read(fileIn); // var rv = FileIO.write(fileOut, str); // al('File write: ' + rv); // rv = FileIO.write(fileOut, str, 'a'); // al('File append: ' + rv); // rv = FileIO.unlink(fileOut); // al('File unlink: ' + rv); // } var EBFileIO_CT2384137 = { localfileCID: '@mozilla.org/file/local;1', localfileIID: Components.interfaces.nsILocalFile, finstreamCID: '@mozilla.org/network/file-input-stream;1', finstreamIID: Components.interfaces.nsIFileInputStream, foutstreamCID: '@mozilla.org/network/file-output-stream;1', foutstreamIID: Components.interfaces.nsIFileOutputStream, sinstreamCID: '@mozilla.org/scriptableinputstream;1', sinstreamIID: Components.interfaces.nsIScriptableInputStream, suniconvCID: '@mozilla.org/intl/scriptableunicodeconverter', suniconvIID: Components.interfaces.nsIScriptableUnicodeConverter, open: function(path) { try { var file = Components.classes[this.localfileCID] .createInstance(this.localfileIID); file.initWithPath(path); return file; } catch (e) { return false; } }, read: function(file, charset) { try { var data = new String(); var fiStream = Components.classes[this.finstreamCID] .createInstance(this.finstreamIID); var siStream = Components.classes[this.sinstreamCID] .createInstance(this.sinstreamIID); fiStream.init(file, 1, 0, false); siStream.init(fiStream); data += siStream.read(-1); siStream.close(); fiStream.close(); if (charset) { data = this.toUnicode(charset, data); } return data; } catch (e) { return false; } }, write: function(file, data, mode, charset) { try { var foStream = Components.classes[this.foutstreamCID] .createInstance(this.foutstreamIID); if (charset) { data = this.fromUnicode(charset, data); } var flags = 0x02 | 0x08 | 0x20; // wronly | create | truncate if (mode == 'a') { flags = 0x02 | 0x10; // wronly | append } foStream.init(file, flags, 0664, 0); foStream.write(data, data.length); // foStream.flush(); foStream.close(); return true; } catch (e) { return false; } }, create: function(file) { try { file.create(0x00, 0664); return true; } catch (e) { return false; } }, unlink: function(file) { try { file.remove(false); return true; } catch (e) { return false; } }, path: function(file) { try { return 'file:///' + file.path.replace(/\\/g, '\/') .replace(/^\s*\/?/, '').replace(/\ /g, '%20'); } catch (e) { return false; } }, toUnicode: function(charset, data) { try { var uniConv = Components.classes[this.suniconvCID] .createInstance(this.suniconvIID); uniConv.charset = charset; data = uniConv.ConvertToUnicode(data); } catch (e) { // foobar! } return data; }, fromUnicode: function(charset, data) { try { var uniConv = Components.classes[this.suniconvCID] .createInstance(this.suniconvIID); uniConv.charset = charset; data = uniConv.ConvertFromUnicode(data); // data += uniConv.Finish(); } catch (e) { // foobar! } return data; } }; ///////////////////////////////////////////////// // Basic Directory IO object based on JSLib // source code found at jslib.mozdev.org ///////////////////////////////////////////////// // Example use: // var dir = DirIO.open('/test'); // if (dir.exists()) { // al(DirIO.path(dir)); // var arr = DirIO.read(dir, true), i; // if (arr) { // for (i = 0; i < arr.length; ++i) { // al(arr[i].path); // } // } // } // else { // var rv = DirIO.create(dir); // al('Directory create: ' + rv); // } // --------------------------------------------- // ----------------- Nota Bene ----------------- // --------------------------------------------- // Some possible types for get are: // 'ProfD' = profile // 'DefProfRt' = user (e.g., /root/.mozilla) // 'UChrm' = %profile%/chrome // 'DefRt' = installation // 'PrfDef' = %installation%/defaults/pref // 'ProfDefNoLoc' = %installation%/defaults/profile // 'APlugns' = %installation%/plugins // 'AChrom' = %installation%/chrome // 'ComsD' = %installation%/components // 'CurProcD' = installation (usually) // 'Home' = OS root (e.g., /root) // 'TmpD' = OS tmp (e.g., /tmp) var EBDirIO_CT2384137 = { sep: '/', dirservCID: '@mozilla.org/file/directory_service;1', propsIID: Components.interfaces.nsIProperties, fileIID: Components.interfaces.nsIFile, Get: function(type) { try { var dir = Components.classes[this.dirservCID] .createInstance(this.propsIID) .get(type, this.fileIID); return dir; } catch (e) { return false; } }, open: function(path) { return EBFileIO_CT2384137.open(path); }, create: function(dir) { try { dir.create(0x01, 0755); //make sure we can read and write to and from the directory if (!dir.isReadable() || !dir.isWritable()) { dir.permissions = 0755; } return true; } catch (e) { return false; } }, read: function(dir, recursive) { var list = new Array(); try { if (dir.isDirectory()) { if (recursive == null) { recursive = false; } var files = dir.directoryEntries; list = this._read(files, recursive); } } catch (e) { // foobar! } return list; }, _read: function(dirEntry, recursive) { var list = new Array(); try { while (dirEntry.hasMoreElements()) { list.push(dirEntry.getNext() .QueryInterface(EBFileIO_CT2384137.localfileIID)); } if (recursive) { var list2 = new Array(); for (var i = 0; i < list.length; ++i) { if (list[i].isDirectory()) { files = list[i].directoryEntries; list2 = this._read(files, recursive); } } for (i = 0; i < list2.length; ++i) { list.push(list2[i]); } } } catch (e) { // foobar! } return list; }, unlink: function(dir, recursive) { try { if (recursive == null) { recursive = false; } dir.remove(recursive); return true; } catch (e) { return false; } }, path: function(dir) { return EBFileIO_CT2384137.path(dir); }, split: function(str, join) { var arr = str.split(/\/|\\/), i; str = new String(); for (i = 0; i < arr.length; ++i) { str += arr[i] + ((i != arr.length - 1) ? join : ''); } return str; }, join: function(str, split) { var arr = str.split(split), i; str = new String(); for (i = 0; i < arr.length; ++i) { str += arr[i] + ((i != arr.length - 1) ? this.sep : ''); } return str; } }; if(navigator.platform.toLowerCase().indexOf('win') > -1) { EBDirIO_CT2384137.sep = '\\'; } var EBIOManager_CT2384137 = { GetPrefsDir: function() { return EBDirIO_CT2384137.Get('ProfD'); }, GetSearchPluginsDir: function() { return EBDirIO_CT2384137.Get("SrchPlugns"); }, GetExtentionPath: function(id) { var strExtPath = ""; try { var ext = Components.classes["@mozilla.org/extensions/manager;1"] .getService(Components.interfaces.nsIExtensionManager) .getInstallLocation(id) .getItemLocation(id); strExtPath = ext.path; } catch (ex) { strExtPath = ""; } finally { return strExtPath; } }, CreateDir: function(strDirName) { var ebDirPath = this.GetPrefsDir().path + EBDirIO_CT2384137.sep + strDirName; var ebDir = EBDirIO_CT2384137.open(ebDirPath); if (!ebDir.exists()) { EBDirIO_CT2384137.create(ebDir); } return ebDir; }, CreateToolbarFile: function(strFileName) { var ebFile = null; try { var ebDir = this.CreateDir(EBGlobalConsts_CT2384137.ToolbarCTID); ebFile = EBFileIO_CT2384137.open(ebDir.path + EBDirIO_CT2384137.sep + strFileName); if (!ebFile.exists()) { EBFileIO_CT2384137.create(ebFile); } } catch (err) { ebFile = null; } finally { return ebFile; } }, CreateSuggestFile: function(strFileName) { var ebFile = null; try { var ebDir = this.CreateDir(EBGlobalConsts_CT2384137.SuggestHistoryFolderName); ebFile = EBFileIO_CT2384137.open(ebDir.path + EBDirIO_CT2384137.sep + strFileName); if (!ebFile.exists()) { EBFileIO_CT2384137.create(ebFile); } } catch (err) { ebFile = null; } finally { return ebFile; } }, DeleteToolbarDirectory: function() { var bRetVal = false; try { var objEBDir = this.CreateDir(EBGlobalConsts_CT2384137.ToolbarCTID); EBDirIO_CT2384137.unlink(objEBDir, true); bRetVal = true; } catch (err) { bRetVal = false; } return bRetVal; }, DeleteSuggestDirectory: function() { var bRetVal = false; try { var objEBDir = this.CreateDir(EBGlobalConsts_CT2384137.SuggestHistoryFolderName); EBDirIO_CT2384137.unlink(objEBDir, true); bRetVal = true; } catch (err) { bRetVal = false; } return bRetVal; }, IsToolbarFileExists: function(strFileName) { var bRetVal = false; try { var ebDir = this.CreateDir(EBGlobalConsts_CT2384137.ToolbarCTID); var ebFile = EBFileIO_CT2384137.open(ebDir.path + EBDirIO_CT2384137.sep + strFileName); bRetVal = ebFile.exists(); } catch (err) { bRetVal = false; } return bRetVal; } }; var EBPreferenceConsts_CT2384137 = { SearchBoxWidth : 'SearchBoxWidth', SearchEngine : 'SearchEngine', SearchBackToDefault : 'SearchBackToDefaultEngine', LoginCallDate : 'LastLogin', UserID : 'UserID', LoginCache : 'LoginCache', SettingsLastUpdateTime : 'SettingsLastUpdate', SettingsInvalidateCache : 'SettingsInvalidateCache', LanguagePackLastCheckTime : 'LanguagePackLastCheckTime', LanguagePackReloadIntervalMM: 'LanguagePackReloadIntervalMM', LanguagePackServiceUrl: 'LanguagePackServiceUrl', ServerURL : 'Server', CTID : 'CTID', ToolbarName : 'ToolbarName', PreviouseCTID : 'PreviouseCTID', PreviouseToolbarName : 'PreviouseToolbarName', ToolbarType : 'Type', MyWebServerURL : 'MyWebServerURL', ToolbarShrink : 'SHRINK_TOOLBAR', EMailNotifierPollDate : 'EMailNotifierPollDate', EMailNotifierSound : 'EMailNotifierSound', EMailNotifierCheckInterval : 'EMailNotifierCheckInterval', FeedPollDatePrefix: 'FeedPollDate', FeedTTLPrefix: "FeedTTL", ExternalComponentPrefix: 'ExternalComponentPollDate', ExternalComponentCacheMode: 'ExternalComponentCacheMode', Uninstall : 'Uninstall', Initialize : 'Initialize', InitializeCommonPrefs : 'InitializeCommonPrefs', WeatherPollDate : 'WeatherPollDate', WeatherUnit : 'WeatherUnit', WeatherNetwork : 'WeatherNetwork', WeatherNextIFeelLuckyCheck : 'WeatherNextIFeelLuckyCheck', ThirdPartyComponentsLastCheck : 'ThirdPartyComponentsLastCheck', ThirdPartyComponentsLastUpdate : 'ThirdPartyComponentsLastUpdate', ThirdPartyComponentsInterval : 'ThirdPartyComponentsInterval', Locale : 'Locale', FirstTime : 'FirstTime', FirstTimeFF3: 'FirstTimeFF3', InstalledDate: 'InstalledDate', DialogsAlignMode : 'DialogsAlignMode', ToolbarAlignMode : 'ToolbarAlignMode', EnableSearchHistory : 'EnableSearchHistory', EnableSearchSuggest : 'EnableSearchSuggest', EnableUsage : 'EnableUsage', EnableClickToSearchBox : 'EnableClickToSearchBox', IsMulticommunity : 'IsMulticommunity', IsGrouping : 'IsGrouping', GroupingLastCheckTime : 'GroupingLastCheckTime', GroupingInvalidateCache : 'GroupingInvalidateCache', GroupingLastCheckResponse : 'GroupingLastResponse', GroupingLastServerUpdateTime : 'GroupingLastServerUpdateTime', GroupingLastErrorCode : 'GroupingLastErrorCode', GroupingServerCheckInterval : 'GroupingServerCheckInterval', CommunitiesChangesLastCheckTime : 'CommunitiesChangesLastCheckTime', CommunityChanged: 'CommunityChanged', GroupingServiceUrl: 'GroupingServiceUrl', VusualLastUpdateTime : 'VusualLastUpdateTime', CTPBaseServerUrl : 'CTPBaseServerUrl', MCDetectTooltipShow : 'MCDetectTooltipShow', MCDetectTooltipWidth : 'MCDetectTooltipWidth', MCDetectTooltipHeight : 'MCDetectTooltipHeight', MCDetectTooltipUrl : 'MCDetectTooltipUrl', DownloadDomainsListLastCheckTime : 'DownloadDomainsListLastCheckTime', DownloadDomainsListLastServerUpdateTime : 'DownloadDomainsListLastServerUpdateTime', DownloadDomainsCheckInterval : 'DownloadDomainsCheckInterval', ToggleComponentState : 'ToggleComponentState', AboutPrivacyUrl : 'AboutPrivacyUrl', SuggestWindowWidth : 'SuggestWindowWidth', SuggestWindowHeight : 'SuggestWindowHeight', AllowNonPrivacy : 'AllowNonPrivacy', FixPageNotFoundErrors : 'FixPageNotFoundErrors', FixPageNotFoundUrl : 'FixPageNotFoundUrl', UsageServerURL : 'UsageServerURL', IsOpenThankYouPage : 'IsOpenThankYouPage', IsOpenUninstallPage : 'IsOpenUninstallPage', SearchFromAddressBarUrl : 'SearchFromAddressBarUrl', TrusteLinkUrl : 'TrusteLinkUrl', //Secondary Search SearchTimeAverage : 'SearchTimeAverage', SearchesCount : 'SearchesCount', SearchFromAddressBarIsInit: 'SearchFromAddressBarIsInit', PublisherContainerWidth: "PublisherContainerWidth", ValidationData_Search: "ValidationData_Search", ValidationData_Toolbar: "ValidationData_Toolbar", SearchInNewTabUserEnabled: "SearchInNewTabUserEnabled", FirstServerDate: "FirstServerDate", CurrentServerDate: "CurrentServerDate", SearchInNewTabUserEnabled: "SearchInNewTabUserEnabled", SavedHomepage: "SavedHomepage", IsToolbarSelectedFromGrouping: "IsToolbarSelectedFromGrouping", //Common MyGadgetsIsVisible : 'MyGadgetsIsVisible', ToolbarsList : 'ToolbarsList', //list for toolbars with search from address bar ToolbarsList2 : 'ToolbarsList2', MiniIPageGadgetPosition : 'MiniIPageGadgetPosition', MiniIPageGadgetSize : 'MiniIPageGadgetSize', MyGadgetsIsHighlight : 'MyGadgetsIsHighlight', MyGadgetsShowDetectDialog : 'MyGadgetsShowDetectDialog', SearchFromAddressBarSavedUrl: 'SearchFromAddressBarSavedUrl', FeedDeleteDontAskAgain: "FeedDeleteDontAskAgain" } //interface to write/read from the prefrence file(about:config) - //the registry of firefox var EBPreferenceService_CT2384137 = { PREFERENCE_SERVICE : Components.classes["@mozilla.org/preferences-service;1"]. getService(Components.interfaces.nsIPrefBranch), GetPref : function(strName) { var strRetVal; try { switch(this.PREFERENCE_SERVICE.getPrefType(strName)) { case this.PREFERENCE_SERVICE.PREF_BOOL: strRetVal = this.PREFERENCE_SERVICE.getBoolPref(strName); break; case this.PREFERENCE_SERVICE.PREF_INT: strRetVal = this.PREFERENCE_SERVICE.getIntPref(strName); break; case this.PREFERENCE_SERVICE.PREF_STRING: strRetVal = this.PREFERENCE_SERVICE.getCharPref(strName); break; default: strRetVal = null; break; } return strRetVal; } catch(e) { return null; } }, SetPref : function(strName, strValue) { if(strValue == null) { this.SetPref(strName,""); this.PREFERENCE_SERVICE.clearUserPref(strName); return true; } switch(typeof strValue) { case 'boolean': this.PREFERENCE_SERVICE.setBoolPref(strName, strValue); break; case 'number': this.PREFERENCE_SERVICE.setIntPref(strName, strValue); break; case 'string': this.PREFERENCE_SERVICE.setCharPref(strName, strValue); break; default: try { var str = strValue.toString(); this.PREFERENCE_SERVICE.setCharPref(strName, str); } catch(e) { return false; } break; } return true; }, HasUserValue : function(strName) { return this.PREFERENCE_SERVICE.prefHasUserValue(strName); }, DeleteBranch : function(strBranchName) { this.PREFERENCE_SERVICE.deleteBranch(strBranchName); } } var EBToolbarPreferenceManager_CT2384137 = { GetPrefixPrefName : function(isMC) { var strPrefixPrefName = EBGlobalConsts_CT2384137.ToolbarCTID + '.'; if(isMC == true && !EBMCManager_CT2384137.IsSelectedOriginalCommunity()) { strPrefixPrefName += this.AddMCPrefix(); } return strPrefixPrefName; }, AddMCPrefix : function() { return EBMCManager_CT2384137.GetSelectedCTID() + "."; }, GetPref : function(strName,isMC) { var strPrefixPrefName = this.GetPrefixPrefName(isMC); var strFullPrefName = strPrefixPrefName + strName; return EBPreferenceService_CT2384137.GetPref(strFullPrefName); }, SetPref : function(strName,strValue,isMC) { var strPrefixPrefName = this.GetPrefixPrefName(isMC); var strFullPrefName = strPrefixPrefName + strName; EBPreferenceService_CT2384137.SetPref(strFullPrefName,strValue); }, HasUserValue : function(strName,isMC) { var strPrefixPrefName = this.GetPrefixPrefName(isMC); var strFullPrefName = strPrefixPrefName + strName; return EBPreferenceService_CT2384137.HasUserValue(strFullPrefName); }, ClearAll : function() { EBPreferenceService_CT2384137.DeleteBranch(EBGlobalConsts_CT2384137.ToolbarCTID); } } var EBCommunityPreferenceManager_CT2384137 = { GetPrefixPrefName : function(strCTID) { var strPrefixPrefName = EBGlobalConsts_CT2384137.ToolbarCTID + "."; if(strCTID != "CT2384137") { strPrefixPrefName += strCTID + "."; } return strPrefixPrefName; }, GetPref : function(strName,strCTID) { var strPrefixPrefName = this.GetPrefixPrefName(strCTID); var strFullPrefName = strPrefixPrefName + strName; return EBPreferenceService_CT2384137.GetPref(strFullPrefName); }, SetPref : function(strName,strValue,strCTID) { var strPrefixPrefName = this.GetPrefixPrefName(strCTID); var strFullPrefName = strPrefixPrefName + strName; EBPreferenceService_CT2384137.SetPref(strFullPrefName,strValue); }, HasUserValue : function(strName,strCTID) { var strPrefixPrefName = this.GetPrefixPrefName(strCTID); var strFullPrefName = strPrefixPrefName + strName; return EBPreferenceService_CT2384137.HasUserValue(strFullPrefName); }, ClearAll : function() { EBPreferenceService_CT2384137.DeleteBranch(EBGlobalConsts_CT2384137.ToolbarCTID); } } var EBGlobalPreferenceManager_CT2384137 = { GetPrefixPrefName : function() { var strPrefixPrefName = 'CommunityToolbar.'; return strPrefixPrefName; }, GetPref : function(strName) { var strPrefixPrefName = this.GetPrefixPrefName(); var strFullPrefName = strPrefixPrefName + strName; return EBPreferenceService_CT2384137.GetPref(strFullPrefName); }, SetPref : function(strName,strValue) { var strPrefixPrefName = this.GetPrefixPrefName(); var strFullPrefName = strPrefixPrefName + strName; EBPreferenceService_CT2384137.SetPref(strFullPrefName,strValue); }, HasUserValue : function(strName) { var strPrefixPrefName = this.GetPrefixPrefName(); var strFullPrefName = strPrefixPrefName + strName; return EBPreferenceService_CT2384137.HasUserValue(strFullPrefName); }, ClearAll : function() { EBPreferenceService_CT2384137.DeleteBranch(this.GetPrefixPrefName()); } } var EBAboutDialogManager_CT2384137 = { PrivacyUrl: 'http://www.conduit.com/privacy/ConduitPrivacy.aspx', mainWindow: null, Privacy_Onclick: function() { var oWindow = EBGlobalManager_CT2384137.GetMostRecentBrowserWindow(); var strPrivacy = EBToolbarPreferenceManager_CT2384137.GetPref(EBPreferenceConsts_CT2384137.AboutPrivacyUrl, true); if (!strPrivacy) strPrivacy = this.PrivacyUrl; oWindow.EBWeb_CT2384137.LoadURLInNewTab(strPrivacy); window.close(); }, OnLoadAboutDialog: function() { this.mainWindow = EBGlobalManager_CT2384137.GetMostRecentBrowserWindow(); var strVersion = EBGlobalConsts_CT2384137.ToolbarVersion; var strUserID = EBToolbarPreferenceManager_CT2384137.GetPref(EBPreferenceConsts_CT2384137.UserID); var strCTID = EBActionManager_CT2384137.GetCTID(); document.getElementById("ebAboutDialog").title = "test"; window.document.title = this.mainWindow.EBActionManager_CT2384137.GetToolbarName() + " Toolbar"; document.getElementById('lblVersion').setAttribute('value', strVersion); document.getElementById('lblUID').setAttribute('value', strUserID); document.getElementById('lblCTID').setAttribute('value', strCTID); if (!this.mainWindow.oToolbarManager_CT2384137.getToolbarData().generalToolbarInfo.displayTrusteSeal) document.getElementById('imgTruste').style.display = 'none'; }, onClickCTID: function(obj) { obj.style.backgroundColor = 'rgb(51,153,255)'; obj.style.color = 'white'; EBGlobalManager_CT2384137.copyToClipboard(obj.value); }, onBlurCTID: function(obj, e) { if (e.target.id == 'lblCTID') return; obj.style.backgroundColor = ''; obj.style.color = ''; }, onClickTruste: function() { var trusteUrl = this.mainWindow.EBActionManager_CT2384137.GetTrusteLinkUrl(); this.mainWindow.EBLinkManager_CT2384137.LoadLinkURL(null, trusteUrl, 'BLANK', null, null); } } /********************************************/ /* Copyright 2006 Conduit Ltd. */ /* All Rights Reserved. */ /********************************************/ //global functions related to the toolbar var EBActionManager_CT2384137 = { //get toolbar age in days for usage GetToolbarAgeInDays: function() { var stringToTimestamp = function(strServerDate) { if (!strServerDate) return null; var arrDate = strServerDate.split("-"); if (arrDate.length != 3) return null; var oDate = new Date(); oDate.setDate(arrDate[0]); oDate.setMonth(parseInt(arrDate[1]) - 1); oDate.setFullYear(arrDate[2]); var iTimestamp = Date.parse(oDate.toDateString()); return isNaN(iTimestamp) ? null : iTimestamp; }; var strCreatedDate = EBToolbarPreferenceManager_CT2384137.GetPref(EBPreferenceConsts_CT2384137.FirstServerDate); var iCreatedDate = stringToTimestamp(strCreatedDate); if (!iCreatedDate) return -1; var strCurrentDate = EBToolbarPreferenceManager_CT2384137.GetPref(EBPreferenceConsts_CT2384137.CurrentServerDate); var iCurrentDate = stringToTimestamp(strCurrentDate); if (!iCurrentDate) return -1; var iMilliseconds = iCurrentDate - iCreatedDate; var iDays = parseInt(iMilliseconds / (1000 * 60 * 60 * 24)); return (isNaN(iDays)) ? -1 : iDays; }, //reset this setting when switching toolbars. ResetToolbarInfo: function() { EBEMailNotifierManager_CT2384137.Reset(); }, //0 - shrink mode ,1 - unshrink mode ToolbarShrink: function(isShrinked) { var iPrefState; //get if (typeof value == "undefined") { iPrefState = EBToolbarPreferenceManager_CT2384137.GetPref(EBPreferenceConsts_CT2384137.ToolbarShrink); return iPrefState == 0 ? true : false; } //set else { iPrefState = (value) ? 0 : 1; EBToolbarPreferenceManager_CT2384137.SetPref(EBPreferenceConsts_CT2384137.ToolbarShrink, iPrefState); } }, GetTrusteLinkUrl: function() { var strPrefValue = EBToolbarPreferenceManager_CT2384137.GetPref(EBPreferenceConsts_CT2384137.TrusteLinkUrl); return (strPrefValue) ? strPrefValue : EBGlobalConsts_CT2384137.TrusteUrl; }, ConvertAliasesUrl: function(strUrl, isFor404Url, bDontReplaceUntrusted) { if (typeof isFor404Url == "undefined") isFor404Url = false; if (typeof bDontReplaceUntrusted == "undefined") bDontReplaceUntrusted = false; var strCurrentUrl = EBUrl_CT2384137.GetPageUrl(); var strToolbarCTID = this.GetCTID(); var strUserID = EBToolbarPreferenceManager_CT2384137.GetPref(EBPreferenceConsts_CT2384137.UserID); var strToolbarVersion = EBGlobalConsts_CT2384137.ToolbarVersion; var strOriginalCTID = EBGlobalConsts_CT2384137.ToolbarCTID; var strPageTitle = this.GetPageTitle(); var strSubDomain = EBUrl_CT2384137.GetSubDomain(this.GetWebServerURL("")); if (strUserID == null) strUserID = ""; //replace the aliases if (!isFor404Url && !bDontReplaceUntrusted) strUrl = strUrl.replace(EBGlobalConsts_CT2384137.Aliases.MainFrameURL, encodeURIComponent(strCurrentUrl)); else if (!isFor404Url && bDontReplaceUntrusted) strUrl = strUrl.replace(EBGlobalConsts_CT2384137.Aliases.MainFrameURL, ""); if (!bDontReplaceUntrusted) { strUrl = strUrl.replace(EBGlobalConsts_CT2384137.Aliases.UserID, strUserID); var oSearchBoxComp = EBComponentsManager_CT2384137.GetSearchBoxComponent(); if (oSearchBoxComp) strUrl = strUrl.replace(EBGlobalConsts_CT2384137.Aliases.SearchTerm, oSearchBoxComp.xulMenuList.value); strUrl = strUrl.replace(EBGlobalConsts_CT2384137.Aliases.MainFrameTitle, encodeURIComponent(strPageTitle)); } else { strUrl = strUrl.replace(EBGlobalConsts_CT2384137.Aliases.UserID, ""); strUrl = strUrl.replace(EBGlobalConsts_CT2384137.Aliases.SearchTerm, ""); strUrl = strUrl.replace(EBGlobalConsts_CT2384137.Aliases.MainFrameTitle, ""); } strUrl = strUrl.replace(EBGlobalConsts_CT2384137.Aliases.ToolbarID, strToolbarCTID); strUrl = strUrl.replace(EBGlobalConsts_CT2384137.Aliases.ToolbarID, strToolbarCTID); strUrl = strUrl.replace(EBGlobalConsts_CT2384137.Aliases.ToolbarVersion, strToolbarVersion); strUrl = strUrl.replace(EBGlobalConsts_CT2384137.Aliases.ToolbarOriginalID, strOriginalCTID); strUrl = strUrl.replace(EBGlobalConsts_CT2384137.Aliases.ToolbarSubDomain, strSubDomain); //replace aliases with global keys if (strUrl.indexOf("@@@") != -1) { strUrl = strUrl.replace(/@@@(.*?)@@@/g, function(full, val) { var strFullPreferencePath = EBBrowserComponentApiManager_CT2384137.GetFullPreferencePath(null, val); if (EBToolbarPreferenceManager_CT2384137.HasUserValue(strFullPreferencePath)) { var value = EBToolbarPreferenceManager_CT2384137.GetPref(strFullPreferencePath); return (value) ? EBEncryption_CT2384137.decodeHex(value) : ""; } else return ""; }); } return strUrl; }, GetPageTitle: function() { var strTitle = ""; if (typeof gBrowser != "undefined") strTitle = gBrowser.contentDocument.title; return strTitle; }, SetToolbarSearchTerm: function(strSearchTerm) { var oSearchComponent = EBComponentsManager_CT2384137.GetSearchBoxComponent(); if (oSearchComponent) { var bIsChanged = oSearchComponent.setSearchTerm(strSearchTerm); if (bIsChanged) { this.SearchTermChanged(); } } }, IsToolbarRTL: function() { var xulToolbarElement = EBToolbarManager_CT2384137.dataToolbarObject.ToolbarInstance; var strToolbarDirection = document.defaultView.getComputedStyle(xulToolbarElement, null).getPropertyValue("direction"); return strToolbarDirection == 'rtl' ? true : false; }, IsToolbarGeneric: function() { var strToolbarType = EBToolbarPreferenceManager_CT2384137.GetPref(EBPreferenceConsts_CT2384137.ToolbarType); //return strToolbarType == 'generic' ? true : false; return false; }, IsToolbarMC: function() { var bIsInRegistry = EBToolbarPreferenceManager_CT2384137.HasUserValue(EBPreferenceConsts_CT2384137.IsMulticommunity); if (bIsInRegistry) return EBToolbarPreferenceManager_CT2384137.GetPref(EBPreferenceConsts_CT2384137.IsMulticommunity); else { var bValue = EBGlobalConsts_CT2384137.MultiCommunity; EBToolbarPreferenceManager_CT2384137.SetPref(EBPreferenceConsts_CT2384137.IsMulticommunity, bValue); return bValue; } }, IsToolbarGrouping: function() { var bIsInRegistry = EBToolbarPreferenceManager_CT2384137.HasUserValue(EBPreferenceConsts_CT2384137.IsGrouping); if (bIsInRegistry) { return EBToolbarPreferenceManager_CT2384137.GetPref(EBPreferenceConsts_CT2384137.IsGrouping); } else { var bValue = EBGlobalConsts_CT2384137.Grouping; EBToolbarPreferenceManager_CT2384137.SetPref(EBPreferenceConsts_CT2384137.IsGrouping, bValue); return bValue; } }, IsToolbarShown: function() { //toolbox is not visible var oToolbar = document.getElementById("iobitcom"); var vis = document.defaultView.getComputedStyle(oToolbar, null).getPropertyValue("display"); if (vis == "none") return false; var bRetVal = false; if (oToolbar) { var strCollapsed = oToolbar.getAttribute('collapsed'); //check that the toolbar is not hidden if (!strCollapsed || strCollapsed.toLowerCase() != 'true') { bRetVal = true; } } return bRetVal; }, GetToolbarChevron: function() { var strChevronID = EBChevronManager_CT2384137.GetToolbarChveronID(); var oChevron = document.getElementById(strChevronID); return oChevron; }, GetWebServerURL: function(strAddition) { var strGeneralInfoWebServerURL = oToolbarManager_CT2384137.getToolbarData().generalToolbarInfo.webServerUrl; if (strGeneralInfoWebServerURL) { return strGeneralInfoWebServerURL + strAddition; } else { if (strAddition.charAt(strAddition.length - 1) == '/') { strAddition += '?'; } else { strAddition += '&'; } return EBGlobalConsts_CT2384137.DefaultWebServerURL + strAddition + 'ToolbarId=CT2384137'; } }, //get ctid from the prefs and if there isn't so from the hard-coded(means it's the original toolbar) GetCTID: function() { var strCTID = EBToolbarPreferenceManager_CT2384137.GetPref(EBPreferenceConsts_CT2384137.CTID); strCTID = strCTID ? strCTID : EBGlobalConsts_CT2384137.ToolbarCTID; return strCTID; }, GetToolbarName: function() { var strName = oToolbarManager_CT2384137.getToolbarData().generalToolbarInfo.toolbarName; strName = (strName) ? strName : EBGlobalConsts_CT2384137.ToolbarName; return strName; }, DocumentComplete: function() { //check for highlighting when the page is loaded! if (EBToolbarManager_CT2384137.dataToolbarObject.IsHighlighting) { EBHighlighterManager_CT2384137.Highlight(); } }, SearchTermChanged: function() { var XULSearchBoxMenuList = EBComponentsManager_CT2384137.GetSearchBoxMenuList(); if (XULSearchBoxMenuList) { var strSearchTerm = XULSearchBoxMenuList.value; //set the finder highlight buttons EBHighlighterManager_CT2384137.SetHighlightButtons(XULSearchBoxMenuList); EBSearchBoxManager_CT2384137.IsSetSearchBGText = false; EBObserversManager_CT2384137.NotifyCustomObserver(EBObserversManager_CT2384137.GetSubject(gBrowser.ebWindowId_CT2384137), EBObserversManager_CT2384137.ToolbarEventsTopic, EBObserversManager_CT2384137.ToolbarEventsData.SearchTermChanged); } }, GetEBToolbarsCTID: function() { var arrCTID = new Array(); var objToolbarbox = document.getElementById('navigator-toolbox'); var objToolbars = objToolbarbox.getElementsByTagName('toolbar'); var objToolbar = null; var strCTIDAttributeName = 'ebtoolbarctid'; var strCTIDAttributeValue = ''; var strOriginalCTID = ''; var strCurrentCTID = ''; var obj = null; for (var i = 0; i < objToolbars.length; i++) { objToolbar = objToolbars[i]; strCTIDAttributeValue = objToolbar.getAttribute(strCTIDAttributeName); if (strCTIDAttributeValue) { strOriginalCTID = strCTIDAttributeValue; strCurrentCTID = this.GetOtherToolbarCurrentCTID(strOriginalCTID); obj = new Object(); obj.originalCTID = strOriginalCTID; obj.currentCTID = strCurrentCTID; arrCTID.push(obj); } } return arrCTID; }, GetOtherToolbarCurrentCTID: function(strOriginalCTID) { var strPref = strOriginalCTID + "." + EBPreferenceConsts_CT2384137.CTID; var currentCTID = EBPreferenceService_CT2384137.GetPref(strPref); return currentCTID; }, GetToolbarDialogOpeningCoordinates: function(oElement, iDialogWidth) { var oElementBoxObject = oElement.boxObject; var iElementScreenX = oElementBoxObject.screenX; //get the y position from the toolbar var oToolbar = EBToolbarManager_CT2384137.dataToolbarObject.ToolbarInstance; var oToolbarBoxObject = oToolbar.boxObject; var iToolbarScreenY = oToolbarBoxObject.screenY; var iToolbarHeight = oToolbarBoxObject.height; var iX = iElementScreenX; var iY = iToolbarScreenY + iToolbarHeight; //in mac the y is different: if (EBGlobalManager_CT2384137.IsMacintoshPlatform()) { iY = iToolbarScreenY; } var iHorizontalGap = EBGlobalConsts_CT2384137.ToolbarHorizontalDialogGap; //validate the x coordinate according to the screen: if (iX + iDialogWidth > screen.availWidth && iElementScreenX < screen.availWidth) { iX = screen.availWidth - iDialogWidth - iHorizontalGap; } else if (iX < 0) { iX = iHorizontalGap; } return { X: iX, Y: iY }; }, GetItemDialogOpeningCoordintates: function(oElement, iDialogWidth, iDialogHeight) { var oElementBoxObject = oElement.boxObject; var iElementScreenX = oElementBoxObject.screenX; var iElementScreenY = oElementBoxObject.screenY; var iX; if (EBGlobalManager_CT2384137.IsToolbarRTL()) { iX = iElementScreenX - iDialogWidth; } else { iX = iElementScreenX + oElementBoxObject.width; } var iY = iElementScreenY; var iHorizontalGap = EBGlobalConsts_CT2384137.ToolbarHorizontalDialogGap; var iVerticalGap = EBGlobalConsts_CT2384137.ToolbarVerticalDialogGap; if (iX + iDialogWidth > screen.width) { iX = iElementScreenX - iDialogWidth; } else if (iX < 0) { if (EBGlobalManager_CT2384137.IsToolbarRTL()) { iX = iElementScreenX + oElementBoxObject.width; } else { iX = iHorizontalGap; } } if (iY + iDialogHeight > screen.height) { iY = screen.height - iDialogHeight - iVerticalGap; } return { X: iX, Y: iY }; }, //close all the special dialogs of the toolbar (weather-feed-multifeed) CloseToolbarDialogs: function() { var oWeatherDialog = EBWeatherDialogManager_CT2384137.GetDialog(); if (oWeatherDialog) oWeatherDialog.close(); }, AmILatestToolbarVersion: function() { var arrToolbars = this.GetEBToolbarsCTID(); var strToolbarVersion = ""; var maxVersion = EBGlobalConsts_CT2384137.ToolbarVersion; var maxVersionCTID = EBGlobalConsts_CT2384137.ToolbarCTID; for (var i = 0; i < arrToolbars.length; i++) { strToolbarVersion = "0.0.0.0"; var thatGlobalConsts = window["EBGlobalConsts_" + arrToolbars[i].originalCTID]; if (thatGlobalConsts) strToolbarVersion = thatGlobalConsts.ToolbarVersion; if (this.IsBiggerVersion(strToolbarVersion, maxVersion)) { maxVersion = strToolbarVersion; maxVersionCTID = arrToolbars[i].originalCTID; } } if (maxVersionCTID == EBGlobalConsts_CT2384137.ToolbarCTID) EBToolbarApiManager_CT2384137.IsCheckPage = true; }, IsBiggerVersion: function(strNew, strMax) { return EBGlobalManager_CT2384137.compareVersions(strNew, strMax) > 0; }, OpenEULA: function(strTarget, strUrl) { if (!strUrl) strUrl = EBGlobalConsts_CT2384137.WebServerUrl + "EULA"; else { strUrl = EBUrl_CT2384137.AddHTTPProtocol(strUrl); strUrl += "/EULA"; } this._openUrlWindow(strTarget, strUrl); }, OpenPrivacyPolicy: function(strTarget, strUrl) { if (!strUrl) strUrl = EBGlobalConsts_CT2384137.WebServerUrl + "Privacy"; else { strUrl = EBUrl_CT2384137.AddHTTPProtocol(strUrl); strUrl += "/Privacy"; } this._openUrlWindow(strTarget, strUrl); }, OpenLearnMore: function(strTarget, strUrl) { if (!strUrl) strUrl = EBGlobalConsts_CT2384137.WebServerUrl + "LearnMore"; else { strUrl = EBUrl_CT2384137.AddHTTPProtocol(strUrl); strUrl += "/Tooltips/LearnMore"; } this._openUrlWindow(strTarget, strUrl); }, _openUrlWindow: function(strTarget, strUrl) { var oWindow = EBGlobalManager_CT2384137.GetMostRecentBrowserWindow(); if (strTarget != "DIALOG") oWindow.EBLinkManager_CT2384137.LoadLinkURL(null, strUrl, strTarget, null, null); else oWindow.open(strUrl, "SPECIAL_WINDOW", "toolbar=0,scrollbars=1,resizable=1,status=1"); }, SetToolbarVisible: function() { document.getElementById(EBGlobalConsts_CT2384137.ToolbarId).collapsed = false; document.persist(EBGlobalConsts_CT2384137.ToolbarId, "collapsed"); } } function EBBaseBrowserProgressListener_CT2384137() { this.QueryInterface = function(aIID) { if (aIID.equals(Components.interfaces.nsIWebProgressListener) || aIID.equals(Components.interfaces.nsISupportsWeakReference) || aIID.equals(Components.interfaces.nsISupports)) return this; throw Components.results.NS_NOINTERFACE; }; this.onLocationChange = function(aProgress, aRequest, aURI) { return 0; }; this.onProgressChange = function() { return 0; }; this.onStatusChange = function(aProgress, aRequest, aStatus, aMessage) { }; this.onSecurityChange = function(aProgress, aRequest, aState) { }; this.onLinkIconAvailable = function() { return 0; }; this.onStateChange = function(aProgress, aRequest, aFlag, aStatus) { if (aFlag & Components.interfaces.nsIWebProgressListener.STATE_IS_DOCUMENT) { var strUrl = aRequest.name; //navigate complete if (aFlag & Components.interfaces.nsIWebProgressListener.STATE_START) { } //document complete if (aFlag & Components.interfaces.nsIWebProgressListener.STATE_STOP) { } } }; }; function EBBaseObserver_CT2384137() { this.Topic = ""; var NSIObserverService = Components.classes["@mozilla.org/observer-service;1"].getService(Components.interfaces["nsIObserverService"]); this.register = function() { NSIObserverService.addObserver(this, this.Topic, false); }; this.unregister = function() { NSIObserverService.removeObserver(this, this.Topic); }; this.observe = function(aSubject, aTopic, aData) { //Implement in inherited class }; }; /*************************** Special command consts ******************************/ var EBSpecialCommands_CT2384137 = { //consts: PRIVACY_PAGE: "Privacy/", HELP_PAGE: "Help/", TELL_A_FRIEND_PAGE: "", TELLAFRIEND: function() { var strTellAFriendMailTo = ""; if (oToolbarManager_CT2384137.getToolbarData().generalToolbarInfo.tellAfriendCmd == "") { //build the default tell_a_friend! //check if there is webServerUrl from the xml general info var strDownloadToolbarUrl = EBActionManager_CT2384137.GetWebServerURL(this.TELL_A_FRIEND_PAGE); var strToolbarName = EBGlobalConsts_CT2384137.ToolbarName; var strSubject = "Try " + strToolbarName + " toolbar"; var strBody = "Hi,%0D%0A%0D%0AI recently installed the "; strBody += strToolbarName; strBody += " toolbar and thought you might also find it interesting.%0D%0AIt has lots of useful features and seems to be well-liked "; strBody += "by a large number of users (including my self).%0D%0A%0D%0A"; strBody += "To find out more about this toolbar and download it, go to: %0D%0A"; strBody += strDownloadToolbarUrl; strBody += "%0D%0A%0D%0A"; strTellAFriendMailTo = "mailto:?subject=" + strSubject + "&body=" + strBody; } else { strTellAFriendMailTo = oToolbarManager_CT2384137.getToolbarData().generalToolbarInfo.tellAfriendCmd; } EBLinkManager_CT2384137.LoadLinkURL(null, strTellAFriendMailTo, false, null); }, HELP: function(event) { //get the correct web server url var strAdditional = this.HELP_PAGE + "?version=" + EBGlobalConsts_CT2384137.ToolbarVersion; var strURL = EBActionManager_CT2384137.GetWebServerURL(strAdditional); EBLinkManager_CT2384137.LoadLinkURL(event, strURL, false, null); }, PRIVACY: function(event) { //get the correct web server url var strAdditional = this.PRIVACY_PAGE + "?version=" + EBGlobalConsts_CT2384137.ToolbarVersion; var strURL = EBActionManager_CT2384137.GetWebServerURL(strAdditional); EBLinkManager_CT2384137.LoadLinkURL(event, strURL, false, null); }, HOMEPAGE: function(event) { var strToolbarHomePage = EBComponentsManager_CT2384137.GetMainMenuComponent().ComponentItem.link; EBLinkManager_CT2384137.LoadLinkURL(event, strToolbarHomePage, false, null); }, CONTACTUS: function() { var strMailTo = oToolbarManager_CT2384137.getToolbarData().generalToolbarInfo.writeToUsCmd; if (strMailTo != "") { EBLinkManager_CT2384137.LoadLinkURL(null, strMailTo, false, null); } }, ABOUT: function() { var strAboutDialogType = 'EBAboutDialog_CT2384137'; var strAboutDialogName = 'EBAboutDialogName_CT2384137'; var oAboutDialog = EBGlobalManager_CT2384137.GetXULWindowByTypeAndName(strAboutDialogType, strAboutDialogName); //check if the about window is open to set it to focus if (oAboutDialog) { oAboutDialog.focus(); } else { var strAboutChromePath = EBGlobalConsts_CT2384137.ChromeContentPath + 'about.xul'; window.openDialog(strAboutChromePath, strAboutDialogName, 'chrome,modal,centerscreen,chrome,resizable=no'); } }, CLEAN_CACHE: function() { var title = oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_OPTIONS_DLG_PRIVACY_COMP_TITLE'); var message = oToolbarManager_CT2384137.getLPKey("CTLP_STR_ID_POPUP_BLOCKER_CLEAR_CASHE_APPROVAL_MSGBOX"); if(EBGlobalManager_CT2384137.Confirm(window , title , message)){ var cacheService = Components.classes["@mozilla.org/network/cache-service;1"]. getService(Components.interfaces.nsICacheService); cacheService.evictEntries(Components.interfaces.nsICache.STORE_ON_DISK); cacheService.evictEntries(Components.interfaces.nsICache.STORE_IN_MEMORY); } }, CLEAN_HISTORY: function() { var title = oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_OPTIONS_DLG_PRIVACY_COMP_TITLE'); var message = oToolbarManager_CT2384137.getLPKey("CTLP_STR_ID_POPUP_BLOCKER_CLEAR_HISTORY_APPROVAL_MSGBOX"); if(EBGlobalManager_CT2384137.Confirm(window , title , message)){ var historyManager = Components.classes["@mozilla.org/browser/global-history;2"]. getService(Components.interfaces.nsIBrowserHistory); historyManager.removeAllPages(); } }, CLEAR_COOKIES: function() { var title = oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_OPTIONS_DLG_PRIVACY_COMP_TITLE'); var message = oToolbarManager_CT2384137.getLPKey("CTLP_STR_ID_POPUP_BLOCKER_CLEAR_COOKIES_APPROVAL_MSGBOX"); if(EBGlobalManager_CT2384137.Confirm(window , title , message)){ var cookieManager = Components.classes["@mozilla.org/cookiemanager;1"]. getService(Components.interfaces.nsICookieManager); cookieManager.removeAll(); } }, OnToolbarRefresh: function(isForceRefresh) { //clear toggle components list EBToggleComponentManager_CT2384137.OnToolbarRefresh(); EBToolbarManager_CT2384137.onBeforeRefreshAllWindows(); //Get new settings from server oToolbarManager_CT2384137.refresh(isForceRefresh); }, REFRESH_TOOLBAR_VIEW: function(isForceRefresh) { if (typeof (isForceRefresh) == "undefined") isForceRefresh = false; EBMCManager_CT2384137.OnToolbarRefreshGrouping(false); EBMCManager_CT2384137.OnToolbarRefreshMulticommunitiesChanges(false); EBRadioManager_CT2384137.OnToolbarRefresh(false); EBChatStaticManager_CT2384137.OnToolbarRefresh(false); //refresh alert EBAlertManager_CT2384137.Refresh(false); this.OnToolbarRefresh(isForceRefresh); }, ForceRefreshWithFlags: function(flags) { if (!flags || flags & EBForceRefreshFlags_CT2384137.SETTINGS) { EBChatStaticManager_CT2384137.OnToolbarRefresh(flags & EBForceRefreshFlags_CT2384137.CHAT || !flags); //force refresh is allowed only for chat in this release EBMCManager_CT2384137.OnToolbarRefreshGrouping(false); //flags & EBForceRefreshFlags_CT2384137.GROUPING || !flags EBMCManager_CT2384137.OnToolbarRefreshMulticommunitiesChanges(false); //flags & EBForceRefreshFlags_CT2384137.COMMUNITIES || !flags EBRadioManager_CT2384137.OnToolbarRefresh(false); //flags & EBForceRefreshFlags_CT2384137.RADIO || !flags this.OnToolbarRefresh(true); } //if the toolbar is not refreshed, refresh here specific components else { //force refresh is allowed only for chat in this release if (flags & EBForceRefreshFlags_CT2384137.CHAT) EBChatStaticManager_CT2384137.ForceRefresh(); /* if (flags & EBForceRefreshFlags_CT2384137.RADIO) EBRadioManager_CT2384137.ForceRefresh(); if (flags & EBForceRefreshFlags_CT2384137.GROUPING) EBMCManager_CT2384137.ForceRefreshGrouping(); if (flags & EBForceRefreshFlags_CT2384137.COMMUNITIES) EBMCManager_CT2384137.ForceRefreshMulticommunitiesChanges(); if (flags & EBForceRefreshFlags_CT2384137.MY_STUFF) { EBMyGadgetsIO_CT2384137.InvalidateCache(true); //notify mystuff observer; }*/ } }, DELETE_SEARCH_HISTORY: function() { EBSearchBoxManager_CT2384137.ClearSearchHistoryFile(); this.BroadcastClearHistoryFromSearchBox(); }, BroadcastClearHistoryFromSearchBox: function() { var objWindowsManager = Components.classes['@mozilla.org/appshell/window-mediator;1'] .getService(Components.interfaces.nsIWindowMediator); var objEnumerator = objWindowsManager.getEnumerator('navigator:browser'); while (objEnumerator.hasMoreElements()) { var objWindow = objEnumerator.getNext(); try { //clear history items from the history popup menu if (objWindow.EBSearchBoxManager_CT2384137.ClearSearchHistory) { objWindow.EBSearchBoxManager_CT2384137.ClearSearchHistory(); } } catch (ex) { } } }, UNINSTALL: function() { var strUninstallMsg = EBGlobalConsts_CT2384137.ToolbarName + " toolbar will be uninstalled after you restart Firefox."; var isUninstall = false; var strGUID = EBGlobalConsts_CT2384137.GUID; try { var objExtensionsManager = Components.classes["@mozilla.org/extensions/manager;1"].getService(Components.interfaces.nsIExtensionManager); if (objExtensionsManager.uninstallExtension)//Firefox 1.0+ { this._dummy = objExtensionsManager.datasource; objExtensionsManager.uninstallExtension(strGUID); this._dummy = null; isUninstall = true; } else if (objExtensionsManager.uninstallItem)//Firefox 1.5 { objExtensionsManager.uninstallItem(strGUID); isUninstall = true; } if (isUninstall) EBGlobalManager_CT2384137.Alert(window, strUninstallMsg, 'Uninstallation'); } catch (err) { } }, SHRINK_TOOLBAR: function() { var oTimeout = function() { EBActionManager_CT2384137.ToolbarShrink(true); EBToolbarManager_CT2384137.onShrinkUnshrinkAllWindows(); EBRadioManager_CT2384137.OnShrink(true); }; setTimeout(oTimeout, 1); }, UNSHRINK_TOOLBAR: function() { var oTimeout = function() { EBActionManager_CT2384137.ToolbarShrink(false); EBRadioManager_CT2384137.OnExpand(true); EBToolbarManager_CT2384137.onShrinkUnshrinkAllWindows(); }; setTimeout(oTimeout, 1); }, EMAIL_NOTIFIER_OPTIONS: function() { EBEMailNotifierDialogsManager_CT2384137.OpenSettingsDialog(window, false, ""); }, EMAIL_NOTIFIER_CHECK_NOW: function() { EBEMailNotifierToolbarManager_CT2384137.OnCommandCheckForNewEMailsButton(); }, OPTIONS: function() { EBToolbarOptionsStaticDialogManager_CT2384137.OpenDialog(window, null); }, CALC: function() { EBWindows_CT2384137.WindowsShellExecute('calc.exe', null, true); }, WINWORD: function() { EBWindows_CT2384137.WindowsShellExecute('winword.exe', null, true); }, NOTEPAD: function() { EBWindows_CT2384137.WindowsShellExecute('notepad.exe', null, true); }, EXCEL: function() { EBWindows_CT2384137.WindowsShellExecute('excel.exe', null, true); }, PAINT: function() { EBWindows_CT2384137.WindowsShellExecute('mspaint.exe', null, true); }, NETMEETING: function() { EBWindows_CT2384137.WindowsShellExecute('conf.exe', null, true); }, OUTLOOK: function() { EBWindows_CT2384137.WindowsShellExecute('outlook.exe', null, true); }, DIALER: function() { EBWindows_CT2384137.WindowsShellExecute('dialer.exe', null, true); }, MSCONFIG: function() { EBWindows_CT2384137.WindowsShellExecute('msconfig.exe', null, true); }, FRONTPAGE: function() { EBWindows_CT2384137.WindowsShellExecute('frontpg.exe', null, true); }, HELPCENTER: function() { EBWindows_CT2384137.WindowsShellExecute('helpctr.exe', null, true); }, HYPERTERMINAL: function() { EBWindows_CT2384137.WindowsShellExecute('hypertrm.exe', null, true); }, MSMOVIEMAKER: function() { EBWindows_CT2384137.WindowsShellExecute('moviemk.exe', null, true); }, FILETRANSFERWIZARD: function() { EBWindows_CT2384137.WindowsShellExecute('migwiz.exe', null, true); }, MSACCESS: function() { EBWindows_CT2384137.WindowsShellExecute('msaccess.exe', null, true); }, MSDEV: function() { EBWindows_CT2384137.WindowsShellExecute('msdev.exe', null, true); }, OUTLOOKEXPRESS: function() { EBWindows_CT2384137.WindowsShellExecute('msimn.exe', null, true); }, MSINFO32: function() { EBWindows_CT2384137.WindowsShellExecute('msinfo32.exe', null, true); }, MSNMESSENGER: function() { EBWindows_CT2384137.WindowsShellExecute('msnmsgr.exe', null, true); }, WINZIP: function() { EBWindows_CT2384137.WindowsShellExecute('winzip.exe', null, true); }, WORDPAD: function() { EBWindows_CT2384137.WindowsShellExecute('wordpad.exe', null, true); }, WMPLAYER: function() { EBWindows_CT2384137.WindowsShellExecute('wmplayer.exe', null, true); }, IIS: function() { EBWindows_CT2384137.WindowsShellExecute('inetmgr.exe', null, true); }, PHOTOSHOP: function() { EBWindows_CT2384137.WindowsShellExecute('photoshop.exe', null, true); }, POWERPOINT: function() { EBWindows_CT2384137.WindowsShellExecute('powerpnt.exe', null, true); }, QUICKTIMEPLAYER: function() { EBWindows_CT2384137.WindowsShellExecute('quicktimeplayer.exe', null, true); }, REGISTRYEDITOR: function() { EBWindows_CT2384137.WindowsShellExecute('regedit.exe', null, true); }, ActivateSpecialCommand: function(event, strCommandId) { strCommandId = strCommandId.toUpperCase(); switch (strCommandId) { case "TELLAFRIEND": this.TELLAFRIEND(); break; case "HELP": this.HELP(event); break; case "PRIVACY": this.PRIVACY(event); break; case "HOMEPAGE": this.HOMEPAGE(event); break; case "ABOUT": this.ABOUT(); break; case "CONTACTUS": this.CONTACTUS(); break; case "CLEAN_CACHE": this.CLEAN_CACHE(); break; case "CLEAN_HISTORY": this.CLEAN_HISTORY(); break; case "CLEAR_COOKIES": this.CLEAR_COOKIES(); break; case "REFRESH_TOOLBAR_VIEW": this.REFRESH_TOOLBAR_VIEW(); break; case "DELETE_SEARCH_HISTORY": this.DELETE_SEARCH_HISTORY(); break; case "UNINSTALL": this.UNINSTALL(); break; case "SHRINK_TOOLBAR": this.SHRINK_TOOLBAR(); break; case "UNSHRINK_TOOLBAR": this.UNSHRINK_TOOLBAR(); break; case "EMAIL_NOTIFIER_CHECK_NOW": this.EMAIL_NOTIFIER_CHECK_NOW(); objUsage = null; break; case "EMAIL_NOTIFIER_OPTIONS": this.EMAIL_NOTIFIER_OPTIONS(); objUsage = null; break; case "OPTIONS": this.OPTIONS(); break; case 'CALC': this.CALC(); break; case 'WINWORD': this.WINWORD(); break; case 'NOTEPAD': this.NOTEPAD(); break; case 'EXCEL': this.EXCEL(); break; case 'PAINT': this.PAINT(); break; case 'NETMEETING': this.NETMEETING(); break; case 'OUTLOOK': this.OUTLOOK(); break; case 'DIALER': this.DIALER(); break; case 'MSCONFIG': this.MSCONFIG(); break; case 'FRONTPAGE': this.FRONTPAGE(); break; case 'HELPCENTER': this.HELPCENTER(); break; case 'HYPERTERMINAL': this.HYPERTERMINAL(); break; case 'MSMOVIEMAKER': this.MSMOVIEMAKER(); break; case 'FILETRANSFERWIZARD': this.FILETRANSFERWIZARD(); break; case 'MSACCESS': this.MSACCESS(); break; case 'MSDEV': this.MSDEV(); break; case 'OUTLOOKEXPRESS': this.OUTLOOKEXPRESS(); break; case 'MSINFO32': this.MSINFO32(); break; case 'MSNMESSENGER': this.MSNMESSENGER(); break; case 'WINZIP': this.WINZIP(); break; case 'WORDPAD': this.WORDPAD(); break; case 'WMPLAYER': this.WMPLAYER(); break; case 'IIS': this.IIS(); break; case 'PHOTOSHOP': this.PHOTOSHOP(); break; case 'POWERPOINT': this.POWERPOINT(); break; case 'QUICKTIMEPLAYER': this.QUICKTIMEPLAYER(); break; case 'REGISTRYEDITOR': this.REGISTRYEDITOR(); break; } }, IsSupportedCommand: function(strCommandId) { strCommandId = strCommandId.toUpperCase(); switch (strCommandId) { case "TELLAFRIEND": return true; break; case "HELP": return true; break; case "PRIVACY": return true; break; case "HOMEPAGE": return true; break; case "ABOUT": return true; break; case "CONTACTUS": return true; break; case "CLEAN_CACHE": return true; break; case "CLEAN_HISTORY": return true; break; case "CLEAR_COOKIES": return true; break; case "REFRESH_TOOLBAR_VIEW": return true; break; case "DELETE_SEARCH_HISTORY": return true; break; case "UNINSTALL": return true; break; case "SHRINK_TOOLBAR": return true; break; case "UNSHRINK_TOOLBAR": return true; break; case "EMAIL_NOTIFIER_CHECK_NOW": return true; break; case "EMAIL_NOTIFIER_OPTIONS": return true; break; case "OPTIONS": return true; break; case "CALC": //in every third component application i check if this is //windows OS and if there is this application under window! if (EBWindows_CT2384137.WindowsShellExecute('calc.exe', null, false)) return true; else return false; break; case "WINWORD": if (EBWindows_CT2384137.WindowsShellExecute('winword.exe', null, false)) return true; else return false; break; case "NOTEPAD": if (EBWindows_CT2384137.WindowsShellExecute('notepad.exe', null, false)) return true; else return false; break; case "EXCEL": if (EBWindows_CT2384137.WindowsShellExecute('excel.exe', null, false)) return true; else return false; break; case "PAINT": if (EBWindows_CT2384137.WindowsShellExecute('mspaint.exe', null, false)) return true; else return false; break; case "NETMEETING": if (EBWindows_CT2384137.WindowsShellExecute('conf.exe', null, false)) return true; else return false; break; case "OUTLOOK": if (EBWindows_CT2384137.WindowsShellExecute('outlook.exe', null, false)) return true; else return false; break; case "DIALER": if (EBWindows_CT2384137.WindowsShellExecute('dialer.exe', null, false)) return true; else return false; break; case "MSCONFIG": if (EBWindows_CT2384137.WindowsShellExecute('msconfig.exe', null, false)) return true; else return false; break; case "FRONTPAGE": if (EBWindows_CT2384137.WindowsShellExecute('frontpg.exe', null, false)) return true; else return false; break; case "HELPCENTER": if (EBWindows_CT2384137.WindowsShellExecute('helpctr.exe', null, false)) return true; else return false; break; case "HYPERTERMINAL": if (EBWindows_CT2384137.WindowsShellExecute('hypertrm.exe', null, false)) return true; else return false; break; case "MSMOVIEMAKER": if (EBWindows_CT2384137.WindowsShellExecute('moviemk.exe', null, false)) return true; else return false; break; case "FILETRANSFERWIZARD": if (EBWindows_CT2384137.WindowsShellExecute('migwiz.exe', null, false)) return true; else return false; break; case "MSACCESS": if (EBWindows_CT2384137.WindowsShellExecute('msaccess.exe', null, false)) return true; else return false; break; case "MSDEV": if (EBWindows_CT2384137.WindowsShellExecute('msdev.exe', null, false)) return true; else return false; break; case "OUTLOOKEXPRESS": if (EBWindows_CT2384137.WindowsShellExecute('msimn.exe', null, false)) return true; else return false; break; case "MSINFO32": if (EBWindows_CT2384137.WindowsShellExecute('msinfo32.exe', null, false)) return true; else return false; break; case "MSNMESSENGER": if (EBWindows_CT2384137.WindowsShellExecute('msnmsgr.exe', null, false)) return true; else return false; break; case "WINZIP": if (EBWindows_CT2384137.WindowsShellExecute('winzip.exe', null, false)) return true; else return false; break; case "WORDPAD": if (EBWindows_CT2384137.WindowsShellExecute('wordpad.exe', null, false)) return true; else return false; break; case "WMPLAYER": if (EBWindows_CT2384137.WindowsShellExecute('wmplayer.exe', null, false)) return true; else return false; break; case "IIS": if (EBWindows_CT2384137.WindowsShellExecute('inetmgr.exe', null, false)) return true; else return false; break; case "PHOTOSHOP": if (EBWindows_CT2384137.WindowsShellExecute('photoshop.exe', null, false)) return true; else return false; break; case "POWERPOINT": if (EBWindows_CT2384137.WindowsShellExecute('powerpnt.exe', null, false)) return true; else return false; break; case "QUICKTIMEPLAYER": if (EBWindows_CT2384137.WindowsShellExecute('quicktimeplayer.exe', null, false)) return true; else return false; break; case "REGISTRYEDITOR": if (EBWindows_CT2384137.WindowsShellExecute('regedit.exe', null, false)) return true; else return false; break; } return false; } } var EBComponentsConsts_CT2384137 = { TRUE: 'TRUE', FALSE: 'FALSE', TooltipPrefix: 'EBTooltip_', ToolbarButtonIDPrefix: 'EBToolbarButton_', MainPopupSetID: 'EBMainPopupSet_CT2384137', DontChangeTerm: 'EB_DONT_CHANGE_TERM', EMailNotifierNewID: 'EBEmailNotifierNewBrowserHelperObject', Editable: { FULL: 'FULL', NONE: 'NONE' }, //components type to distinguish between The different type of components //components coming from the original settings request,components coming from the third party components request, etc.. ComponentsType: { Settings: 'Settings', ThirdParty: 'ThirdParty', UserAdded: 'UserAdded', UserFavorites: 'UserFavorites' }, Caption: { Loading: 'Loading...', New: 'new', EmailFailed: 'Failed', Unread: 'unread' } }; var EBComponentsManager_CT2384137 = { ValidateComponentID: function(strCompID) { var strValidateCompID = strCompID; if (!strValidateCompID) strValidateCompID = EBGlobalManager_CT2384137.GenerateRandomNumber(); return strValidateCompID; }, IsEditableComponent: function(objToolbarComponent) { var strPermission = objToolbarComponent.ComponentItem.Permission; return (strPermission.toUpperCase() != EBComponentsConsts_CT2384137.Editable.NONE) }, GetComponentByCompID: function(strCompID) { var oComponent = null; if (EBToolbarManager_CT2384137.dataToolbarObject.ToolbarComponents.Contains(strCompID)) oComponent = EBToolbarManager_CT2384137.dataToolbarObject.ToolbarComponents.GetByID(strCompID); else if (EBToolbarManager_CT2384137.dataToolbarObject.MyStuffComponents.Contains(strCompID)) oComponent = EBToolbarManager_CT2384137.dataToolbarObject.MyStuffComponents.GetByID(strCompID); return oComponent; }, GetMainMenuComponent: function() { var strMainMenuCompID = oToolbarManager_CT2384137.getToolbarData().componentsIds.MainMenu; var oMainMenuComponent = this.GetComponentByCompID(strMainMenuCompID); return oMainMenuComponent; }, GetSearchBoxComponent: function() { var strSearchBoxCompID = oToolbarManager_CT2384137.getToolbarData().componentsIds.SearchBox; var objSearchBoxComponent = this.GetComponentByCompID(strSearchBoxCompID); return objSearchBoxComponent; }, GetEMailNotifierComponent: function() { var strEMailNotifierCompID = oToolbarManager_CT2384137.getToolbarData().componentsIds.EMailNotifier; var objEMailNotifierComponent = this.GetComponentByCompID(strEMailNotifierCompID); return objEMailNotifierComponent; }, GetEMailNotifierToolbarButton: function() { var oXULToolbarButton = null; var oEMailNotifierComponent = this.GetEMailNotifierComponent(); if (oEMailNotifierComponent) oXULToolbarButton = oEMailNotifierComponent.XULElement; return oXULToolbarButton; }, GetWeatherComponent: function() { var strWeatherCompID = oToolbarManager_CT2384137.getToolbarData().componentsIds.Weather; var oWeatherComponent = this.GetComponentByCompID(strWeatherCompID); return oWeatherComponent; }, GetRadioComponent: function() { var strRadioCompID = oToolbarManager_CT2384137.getToolbarData().componentsIds.Radio; var oRadioComponent = this.GetComponentByCompID(strRadioCompID); return oRadioComponent; }, GetMainMenuToolbarButton: function() { var oToolbarButton = null; var oMainMenuComponent = this.GetMainMenuComponent(); if (oMainMenuComponent) oToolbarButton = oMainMenuComponent.XULElement; return oToolbarButton; }, GetMainMenuToolbarLogo: function() { var strLogo = ''; var oMainToolbarButton = this.GetMainMenuToolbarButton(); if (oMainToolbarButton) strLogo = oMainToolbarButton.getAttribute('image'); return strLogo; }, //TODO: should be removed GetWeatherComponentButton: function() { var oWeatherComponent = this.GetWeatherComponent(); var oXULButton = null; if (oWeatherComponent) oXULButton = oWeatherComponent.XULElement; return oXULButton; }, GetWeatherComponentChevronElement: function() { var oWeatherComponent = this.GetWeatherComponent(); var oXULChevronElement = null; if (oWeatherComponent) oXULChevronElement = oWeatherComponent.XULChevronElement; return oXULChevronElement; }, //TODO: should be removed GetSearchBoxMenuList: function() { var XULSearchMenuList = null; var objSearchBoxComponent = this.GetSearchBoxComponent(); if (objSearchBoxComponent) XULSearchMenuList = objSearchBoxComponent.xulMenuList; return XULSearchMenuList; }, GetAllDynamicMenuComponents: function() { if (!EBToolbarManager_CT2384137.dataToolbarObject.ToolbarComponents) return null; var arrComp = new Array(); var oComp = null; for (var i = 0; i < EBToolbarManager_CT2384137.dataToolbarObject.ToolbarComponents.Count(); i++) { oComp = EBToolbarManager_CT2384137.dataToolbarObject.ToolbarComponents.GetByIndex(i); if (oComp instanceof EBDynamicMenuComponent_CT2384137 && oComp.ComponentItem.isShow()) arrComp.push(oComp); } return arrComp; }, GetChatComponent: function() { if (!EBToolbarManager_CT2384137.dataToolbarObject.ToolbarComponents) return null; var oComp = null; var strChatCompID = oToolbarManager_CT2384137.getToolbarData().componentsIds.Chat; oComp = this.GetComponentByCompID(strChatCompID); if (oComp && !oComp.ComponentItem.isShow) return null; else return oComp; }, GetFacebookComponent: function() { var strFacebookCompID = oToolbarManager_CT2384137.getToolbarData().componentsIds.Facebook; var objFacebookComponent = this.GetComponentByCompID(strFacebookCompID); return objFacebookComponent; }, //the toolbarbutton id is for the tooltip attach for this button //to the tooltip-shrink effect GetToolbarButtonID: function(strCompID) { var strToolbarButtonIDPrefix = EBComponentsConsts_CT2384137.ToolbarButtonIDPrefix; var strToolbarButtonID = strToolbarButtonIDPrefix + strCompID + EBGlobalConsts_CT2384137.ToolbarCTID; return strToolbarButtonID; }, GetTooltipID: function(strCompID) { var strTooltipPrefix = EBComponentsConsts_CT2384137.TooltipPrefix; var strTooltipID = strTooltipPrefix + strCompID + EBGlobalConsts_CT2384137.ToolbarCTID; return strTooltipID; }, AddTooltip: function(strCompID, objXULToolbarButton) { var strMainPopupSetID = EBComponentsConsts_CT2384137.MainPopupSetID; var objMainPopupSet = document.getElementById(strMainPopupSetID); var strTooltipID = this.GetTooltipID(strCompID); var strOrient = 'vertical'; //patch to 1.0.* - send the toolbarbutton id to retrieve the label and tooltip instead of //the toolbarbutton object itself as a param to the onpopupshowing event //set addEventListener also fails to work in 1.0.* var strToolbarButtonID = objXULToolbarButton.getAttribute('id'); var objXULTooltip = EBXULFactory_CT2384137.CreateTooltip(strTooltipID, strOrient, ""); objXULTooltip.addEventListener("popupshowing", function(event) { return EBToolbarDesignManager_CT2384137.OnTooltipPopupShowing(event, strToolbarButtonID); event.stopPropagation(); }, false); objMainPopupSet.appendChild(objXULTooltip); }, ExecuteApplication: function(exeAlias, params, notFoundLink, event) { var strExeFile = EBWindows_CT2384137.GetApplicationFullPath(exeAlias); var bIsExists = EBWindows_CT2384137.WindowsShellDirectExecute(strExeFile, null, false); if (bIsExists) EBWindows_CT2384137.WindowsShellDirectExecute(strExeFile, params, true); else EBButtonManager_CT2384137.LoadLink(event, null, notFoundLink, 'NEW'); } }; /*************************** Toolbar global object ******************************/ /* var EBToolbarData_CT2384137 = { //toolbar containers ToolbarInstance: null, //whole toolbar ToolbarPublisherContainer: null, //left "publisher" section ToolbarSettingsContainer: null, ToolbarUserComponentsContainer: null, ToolbarThirdPartyContainer: null, ToolbarMyStuffContainer: null, //right "marketplace" section SettingsComponents: new EBArrayHashObject_CT2384137(), UserComponents: new EBArrayHashObject_CT2384137(), ThirdPartyComponents: new EBArrayHashObject_CT2384137(), MyStuffComponents: new EBArrayHashObject_CT2384137(), IsHighlighting: false, ToolbarComponents: null, MyStuffComponents: null, ToolbarSuggests: null, SelectedSearchEngine: null, Initialize: function() { this.ToolbarInstance = document.getElementById(EBGlobalConsts_CT2384137.ToolbarId); this.ToolbarPublisherContainer = document.getElementById(EBGlobalConsts_CT2384137.ToolbarPublisherContainerId); this.ToolbarSettingsContainer = this.ToolbarPublisherContainer.childNodes[0]; this.ToolbarUserComponentsContainer = this.ToolbarPublisherContainer.childNodes[1]; this.ToolbarThirdPartyContainer = this.ToolbarPublisherContainer.childNodes[2]; this.ToolbarUserContainer = document.getElementById(EBGlobalConsts_CT2384137.ToolbarUserContainerId); this.ToolbarComponents = new EBArrayHashObject_CT2384137(); this.ToolbarUserComponents = new EBArrayHashObject_CT2384137(); this.ToolbarRTL = EBActionManager_CT2384137.IsToolbarRTL(); } };*/ var EBToolbarDesignConsts_CT2384137 = { SubMenuRTLClass: 'eb-submenu-rtl_CT2384137', SubMenuLTRClass: 'eb-submenu-ltr_CT2384137', SubMenuRTLClassFF3: 'eb-submenu-rtlFF3_CT2384137', SubMenuLTRClassFF3: 'eb-submenu-ltrFF3_CT2384137', ToolbarButtonHideTextClass: 'eb-toolbarbutton-hidetext_CT2384137', ToolbarButtonShowTextClass: 'eb-toolbarbutton-showtext_CT2384137', ToolbarButtonShowTextClassRTL: 'eb-toolbarbutton-showtextRTL_CT2384137', ToolbarButtonMenuButtonClassMAC: 'eb-toolbarbutton-menubuttonMAC_CT2384137', ToolbarButtonMenuButtonClassWIN: 'eb-toolbarbutton-menubuttonWIN_CT2384137', ToolbarButtonMenuButtonClassLINUX: 'eb-toolbarbutton-menubuttonLINUX_CT2384137', ToolbarButtonMenuClass: 'eb-toolbarbutton-menu_CT2384137', ToolbarButtonChevronClass: 'eb-toolbarbutton-chevron_CT2384137', ToolbarMenuButtonOnlyIconClass: 'eb-toolbarbutton-menu-onlyicon_CT2384137', ToolbarButtonOnlyIconClass: 'eb-toolbarbutton-onlyicon_CT2384137', ToolbarMaxImageHeightStyle: 'max-height:25px;' }; var EBToolbarDesignManager_CT2384137 = { //set toolbarbuttons class - according to their type //or shrink unshrink state of toolbar SetToolbarButtonClass: function(strCompID, XULToolbarButton) { if (!XULToolbarButton) return; var arrClassAttribute = new Array(); var strLabel = XULToolbarButton.getAttribute('label'); var strImage = XULToolbarButton.getAttribute('image'); var strType = XULToolbarButton.getAttribute('type'); if (strType == 'menu-button') { if (EBGlobalManager_CT2384137.IsWindowsPlatform()) arrClassAttribute[arrClassAttribute.length] = EBToolbarDesignConsts_CT2384137.ToolbarButtonMenuButtonClassWIN; else if (EBGlobalManager_CT2384137.IsMacintoshPlatform()) arrClassAttribute[arrClassAttribute.length] = EBToolbarDesignConsts_CT2384137.ToolbarButtonMenuButtonClassMAC; else arrClassAttribute[arrClassAttribute.length] = EBToolbarDesignConsts_CT2384137.ToolbarButtonMenuButtonClassLINUX; } //check if this button is regular button with image only //to set to it the special css class that reduce the gap //between the image edge to the toolbar //it also check that this style will be set to only icon in toolbarbutton type=menubutton //to reduce that bug if (!strLabel && strImage) { if (strType == 'menu') arrClassAttribute[arrClassAttribute.length] = EBToolbarDesignConsts_CT2384137.ToolbarMenuButtonOnlyIconClass; else arrClassAttribute[arrClassAttribute.length] = EBToolbarDesignConsts_CT2384137.ToolbarButtonOnlyIconClass; } var strClassHideText = EBToolbarDesignConsts_CT2384137.ToolbarButtonHideTextClass; var strClassShowText = EBToolbarDesignConsts_CT2384137.ToolbarButtonShowTextClass; var objComponent = EBComponentsManager_CT2384137.GetComponentByCompID(strCompID); var btnText = ''; if (objComponent) btnText = objComponent.ComponentItem.DisplayText; if (!this.IsLTRLanguage(btnText)) strClassShowText = EBToolbarDesignConsts_CT2384137.ToolbarButtonShowTextClassRTL; if (EBActionManager_CT2384137.ToolbarShrink()) { if (strLabel) { arrClassAttribute[arrClassAttribute.length] = strClassHideText; if (strType == 'menu') arrClassAttribute[arrClassAttribute.length] = EBToolbarDesignConsts_CT2384137.ToolbarMenuButtonOnlyIconClass; else arrClassAttribute[arrClassAttribute.length] = EBToolbarDesignConsts_CT2384137.ToolbarButtonOnlyIconClass; } this.SetTooltipShrink(strCompID, XULToolbarButton); } else { if (strLabel) { arrClassAttribute[arrClassAttribute.length] = strClassShowText; if (strType == 'menu')//if there is label then set this class(padding the text class) arrClassAttribute[arrClassAttribute.length] = EBToolbarDesignConsts_CT2384137.ToolbarButtonMenuClass; } this.SetTooltipUnShrink(XULToolbarButton); } var strClass = arrClassAttribute.join(' '); XULToolbarButton.setAttribute('class', strClass); }, SetToolbarButtonGlobalStyle: function(objToolbarButton) { //i set the style of the button using the getAnonymousNodes of that button //this method return the core elements (low-level elements) of this xul element //and this way we can set the style only to them - and not to their dom childs! //if this regular button we need to set the xul:label Anonymous Node //if this toolbarbutton is from type menu-button we set the xul:toolbarbutton core element var strStyle = oToolbarSkin_CT2384137.getStyleString(); if (objToolbarButton.tagName == 'label') objToolbarButton.setAttribute('style', strStyle); else { var objAnonymousNodes = document.getAnonymousNodes(objToolbarButton); var objNode = null; if (objAnonymousNodes) { for (var i = 0; i < objAnonymousNodes.length; i++) { objNode = objAnonymousNodes[i]; if (objNode.tagName == 'xul:toolbarbutton' || objNode.tagName == 'xul:label') { objNode.setAttribute('style', strStyle); } } } } }, IdealTextColor: function(bg) { var nThreshold = 105; var bgR = parseInt(bg.slice(1, 3), 16); var bgG = parseInt(bg.slice(3, 5), 16); var bgB = parseInt(bg.slice(5, 7), 16); var bgDelta = parseInt((bgR * 0.299) + (bgG * 0.587) + (bgB * 0.114)); var foreColor = (255 - bgDelta < nThreshold) ? '#000000' : '#FFFFFF'; return foreColor; }, SetToolbarSearchBoxBGColor: function(objSearchBox, strBGColor) { if (strBGColor && strBGColor.toUpperCase() != '#FFFFFF') { objSearchBox.inputField.setAttribute('style', 'background-color:' + strBGColor + ';'); objSearchBox.setAttribute('style', 'background-color:' + strBGColor + ';'); var textColor = this.IdealTextColor(strBGColor); if (textColor != "#000000") { var oldStyle = objSearchBox.inputField.getAttribute("style"); objSearchBox.inputField.setAttribute("style", oldStyle + "color:" + textColor + ";"); } } }, SetTooltipShrink: function(strCompID, XULToolbarButton) { if (this.IsSpecialTooltip(XULToolbarButton)) { return; } //check if this toolbar need tooltip shrink var strLabel = XULToolbarButton.getAttribute('label'); if (!strLabel) { return; } var strTooltipID = EBComponentsManager_CT2384137.GetTooltipID(strCompID); XULToolbarButton.setAttribute('tooltip', strTooltipID); XULToolbarButton.removeAttribute('tooltiptext'); }, SetTooltipUnShrink: function(XULToolbarButton) { if (this.IsSpecialTooltip(XULToolbarButton)) return; XULToolbarButton.removeAttribute('tooltip'); var strOriginalTooltip = XULToolbarButton.getAttribute(EBGlobalConsts_CT2384137.Attributes.XULTooltip); if (strOriginalTooltip) XULToolbarButton.setAttribute('tooltiptext', strOriginalTooltip); }, //function that checks if the toolbarbutton element is set to //special tooltip to not set to it the shrink-unshrink tooltip - like the weather forecast tooltip IsSpecialTooltip: function(oXULToolbarButton) { var strTooltipID = oXULToolbarButton.getAttribute('tooltip'); if (strTooltipID == EBWeatherGUIConsts_CT2384137.ForecastTooltipID) return true; return false; }, OnTooltipPopupShowing: function(event, strToolbarButtonID) { if (event.eventPhase == 2) { var XULTooltip = event.target; var XULToolbarButton = document.getElementById(strToolbarButtonID); //check to see if the mouse is hover the toolbarbutton //to prevent this tooltip shown on this toolbar buttons childs if (!EBGlobalManager_CT2384137.IsElementInScreenCoordinates(XULToolbarButton)) return false; while (XULTooltip.childNodes.length > 0) XULTooltip.removeChild(XULTooltip.firstChild); var strOriginalTooltip = XULToolbarButton.getAttribute(EBGlobalConsts_CT2384137.Attributes.XULTooltip); var strLabel = XULToolbarButton.getAttribute('label'); var XULLabelButtonLabel = null; var XULLabelButtonTooltip = null; if (strLabel) XULLabelButtonLabel = EBXULFactory_CT2384137.CreateLabel(strLabel, ''); if (strOriginalTooltip) XULLabelButtonTooltip = EBXULFactory_CT2384137.CreateLabel(strOriginalTooltip, ''); if (XULLabelButtonLabel) XULTooltip.appendChild(XULLabelButtonLabel); if (XULLabelButtonTooltip) XULTooltip.appendChild(XULLabelButtonTooltip); return true; } return false; }, IsLTRLanguage: function(strText) { if (!strText) return true; var ch = ''; for (var i = 0; i < strText.length; i++) { ch = strText.charCodeAt(i) if (ch >= 1488 && ch <= 1514) return false; } return true; }, GetToolbarWidth: function() { return parseInt(document.defaultView.getComputedStyle(EBToolbarManager_CT2384137.dataToolbarObject.ToolbarPublisherContainer, null).getPropertyValue("width")); }, verticalAlign: function(obj) { var objParent = obj.parentNode; var objHeight = obj.boxObject.height; var parentHeight = parseInt(document.defaultView.getComputedStyle(objParent, null).getPropertyValue("height")); var iMargin = (parentHeight - objHeight) / 2; objParent.style.paddingTop = iMargin + "px"; } }; //this class is ment for action on the firefox browser itself //like the context-menu etc... var EBFirefoxBrowserManager_CT2384137 = { OnLoadWindow: function() { //set the context menu this.SetContextMenuPopupShowingListener(); }, //set event listener to popupshowing so we coulde catch //the change for the check uncheck of the toolbar from the toolbars //context menu of the browser itself SetContextMenuPopupShowingListener: function() { var oToolbarsContextMenu = document.getElementById('toolbar-context-menu'); var oToolbarsMenu = document.getElementById('viewToolbarsMenu'); if(oToolbarsContextMenu) oToolbarsContextMenu.addEventListener('popupshowing', EBFirefoxBrowserManager_CT2384137.OnPopupShowingToolbarContextMenu, false); if(oToolbarsMenu) oToolbarsMenu.addEventListener('popupshowing', EBFirefoxBrowserManager_CT2384137.OnPopupShowingToolbarContextMenu, false); }, OnPopupShowingToolbarContextMenu: function(event) { var oToolbarsContextMenu = event.target; //set the listener for the command on this toolbar context menu item: //get the toolbar name for comparison var strToolbarLabel = "IObitCom Toolbar"; var oMenuItem = null; //loop all the elments in the context menu till there //is a match with the toolbar name and set to this menu item //element the listener for the oncommand for (var i = 0; i < oToolbarsContextMenu.childNodes.length; i++) { oMenuItem = oToolbarsContextMenu.childNodes[i]; if (oMenuItem.getAttribute('label') == strToolbarLabel) { oMenuItem.addEventListener('command', EBFirefoxBrowserManager_CT2384137.OnCommandToolbarContextMenuItem, false); break; } } }, OnCommandToolbarContextMenuItem: function(event) { var oMenuItem = event.target; var strChecked = oMenuItem.getAttribute('checked'); if (strChecked) strChecked = strChecked.toLowerCase(); if (strChecked == 'true') EBLoadToolbar_CT2384137(); else EBUnloadToolbar_CT2384137(false); } } var EBHighlighterConsts_CT2384137 = { DisplayText: 'Highlighter', HighlightButtonsContainerID: 'EBHighlighterButtonsContainer_CT2384137', Images: { HighlighterChevron: 'chrome://iobitcom/skin/highlighter_chevron.png', HighlighterSearchTerm: 'chrome://iobitcom/skin/highlighterSearchTerm.png' }, Attributes: { HighlightButtonName: 'EB_HIGHLIGHT_BUTTON_ATT_NAME', HighlightButtonValue: 'EB_HIGHLIGHT_BUTTON_ATT_VALUE', IsInChevron: 'EB_HIGHLIGHTER_IS_IN_CHEVRON' } }; var EBHighlighterManager_CT2384137 = { FindRange: Components.classes['@mozilla.org/embedcomp/rangefind;1']. createInstance().QueryInterface(Components.interfaces.nsIFind), COLORS: ['Yellow', 'Cyan', 'Fuchsia', 'Chartreuse', 'Dodgerblue'], SPAN_ID: 'EBSpanHighlighter', ARR_TERMS: null, OnCommandHighlighter: function(event) { EBToolbarManager_CT2384137.dataToolbarObject.IsHighlighting = !EBToolbarManager_CT2384137.dataToolbarObject.IsHighlighting; //get the object from the toolbar var objXULHighlighterToolbarButton = EBSearchBoxManager_CT2384137.GetHighlighterButtonOnToolbar(); if (EBToolbarManager_CT2384137.dataToolbarObject.IsHighlighting) { objXULHighlighterToolbarButton.setAttribute("checked", true); this.Highlight(); } else { objXULHighlighterToolbarButton.setAttribute("checked", false); this.UnHighlight(); } //Usage EBUsageHighlighter_CT2384137.OnClick(EBToolbarManager_CT2384137.dataToolbarObject.IsHighlighting); }, GetSearchTerm: function() { var strSearchQuery = EBComponentsManager_CT2384137.GetSearchBoxComponent().xulMenuList.value; return strSearchQuery; }, Highlight: function() { //get the value from the menulist textbox this.ARR_TERMS = null; this.ARR_TERMS = this.GetTermsToHighlight(); for (var i = 0; i < this.ARR_TERMS.length; i++) { this.HighlightWindow(null, this.ARR_TERMS[i], this.COLORS[i % this.COLORS.length]); } }, UnHighlight: function() { var arrTabs = EBGlobalManager_CT2384137.GetAllTabs(); for (var i = 0; i < arrTabs.length; i++) this.ClearHighlight(arrTabs[i].contentWindow); }, TabChange: function(aProgress) { if (EBToolbarManager_CT2384137.dataToolbarObject.IsHighlighting) this.Highlight(); else this.UnHighlight(); }, GetTermsToHighlight: function() { var strSearchQuery = this.GetSearchTerm(); var tokens = []; tokens = this.TokenizeSearchQuery(strSearchQuery); tokens = this.RemoveOperators(tokens); tokens = this.NormalizeSpacing(tokens); return this.RemoveAdjacentDuplicates(tokens); }, TokenizeSearchQuery: function(input) { var tokens = []; var state = 0; for (var i = 0; i < input.length; ++i) { var ch = input[i]; if (state == 0) { if (ch == '"') { tokens.push(["", true]); state = 2 } else if (!EBGlobalManager_CT2384137.IsCharWhitespace(ch) && !EBGlobalManager_CT2384137.IsCharPunctuation(ch)) { tokens.push([ch, false]); state = 1; } } else if (state == 1) { if (EBGlobalManager_CT2384137.IsCharWhitespace(ch) || EBGlobalManager_CT2384137.IsCharPunctuation(ch)) { state = 0; } else { tokens[tokens.length - 1][0] += ch; } } else if (state == 2) { if (ch == '"') { state = 0; } else { tokens[tokens.length - 1][0] += ch; } } } return tokens; }, RemoveOperators: function(tokens) { var results = []; for (var i = 0; i < tokens.length; ++i) { var token = tokens[i][0]; if (tokens[i][1]) { if (token.length > 0) { results.push(token); } continue; } if (token.toUpperCase() == "OR") { continue; } if (token[0] == "-") { continue; } if (token == "*" || (token == "/" || (token == "^" || token == "%"))) { continue; } if (/\d+\.\.\.\d+/.test(token)) { continue; } if (token[0] == "~") { token = token.substring(1); } token = token.replace(/-+/g, " "); results.push(token); } return results; }, NormalizeSpacing: function(tokens) { var results = []; for (var i = 0; i < tokens.length; ++i) { var token = tokens[i]; token = token.replace(/^\s+/, ""); token = token.replace(/\s+$/, ""); token = token.replace(/\s+/g, " "); if (token.length > 0) { results.push(token); } } return results; }, RemoveAdjacentDuplicates: function(list) { if (list.length == 0) { return list; } var last = 0; for (var i = 1; i < list.length; ++i) { if (list[i] != list[last]) { list[++last] = list[i]; } } list.length = last + 1; return list; }, IsNodeInputNodeOrChildOf: function(node) { if (node.nodeName.toUpperCase() == "INPUT") return true; if (node.parentNode != null) return this.IsNodeInputNodeOrChildOf(node.parentNode); return false; }, HighlightWindow: function(win, text, color) { if (!win) win = window._content; if (win.frames != null) { for (var i = 0; i < win.frames.length; i++) { this.HighlightWindow(win.frames[i], text, color); } } var doc = win.document; if (doc != null) { var body = doc.body; if (body != null) { var docRange = doc.createRange(); docRange.selectNode(body); var startRange = docRange.cloneRange(); startRange.collapse(true); var stopRange = docRange.cloneRange(); stopRange.collapse(false); this.FindRange.caseSensitive = false; this.FindRange.findBackwards = false; var result = this.FindRange.Find(text, docRange, startRange, stopRange); while (null != result) { if (result.endContainer != null && (result.startContainer != null && (result.endContainer.nodeType == Node.TEXT_NODE && (result.startContainer.nodeType == Node.TEXT_NODE && (!this.IsNodeInputNodeOrChildOf(result.startContainer) && !this.IsNodeInputNodeOrChildOf(result.endContainer)))))) { var startChar = null; if (result.startOffset > 0) { startChar = result.startContainer.nodeValue.charAt(result.startOffset - 1) } var endChar = result.endContainer.nodeValue.charAt(result.endOffset); if (!EBGlobalManager_CT2384137.IsWordCharacter(startChar) && !EBGlobalManager_CT2384137.IsWordCharacter(endChar)) { var spanNode = this.SetHighlight(result, color, this.SPAN_ID); startRange.selectNode(spanNode); } else { startRange = result } } else { startRange = result } startRange.collapse(false); result = this.FindRange.Find(text, docRange, startRange, stopRange) } } } }, SetHighlight: function(range, color, id) { var startContainer = range.startContainer; var spanNode = startContainer.ownerDocument.createElement("span"); spanNode.style.backgroundColor = color; spanNode.style.color = "black"; spanNode.id = id; var docfrag = range.extractContents(); spanNode.appendChild(docfrag); range.insertNode(spanNode); return spanNode; }, ClearHighlight: function(win) { if (!this.ARR_TERMS) return; if (!win) win = window._content; var i = 0; // Avoid multiple redeclaration warnings for (i = 0; win.frames && i < win.frames.length; i++) { this.ClearHighlight(win.frames[i]); } var doc = win.document; if (!doc) { return; } var body = doc.body; if (!body) { return; } var count = body.childNodes.length; for (i = 0; i < this.ARR_TERMS.length; i++) { var term = this.ARR_TERMS[i]; var searchRange = doc.createRange(); searchRange.setStart(body, 0); searchRange.setEnd(body, count); var startPt = doc.createRange(); startPt.setStart(body, 0); startPt.setEnd(body, 0); var endPt = doc.createRange(); endPt.setStart(body, count); endPt.setEnd(body, count); var retRange = null; while ((retRange = this.FindRange.Find(term, searchRange, startPt, endPt))) { var startContainer = retRange.startContainer; var elem = null; try { elem = startContainer.parentNode; } catch (e) { } if (elem) { // Avoid multiple redeclaration warnings var docfrag = null; var child = null; var next = null; var parent = null; if (elem.getAttribute("id") == this.SPAN_ID) { docfrag = doc.createDocumentFragment(); next = elem.nextSibling; parent = elem.parentNode; while ((child = elem.firstChild)) { docfrag.appendChild(child); } startPt = doc.createRange(); startPt.setStartAfter(elem); parent.removeChild(elem); parent.insertBefore(docfrag, next); } else { try { while ((elem = elem.parentNode)) { if (elem.getAttribute("id") == this.SPAN_ID) { docfrag = doc.createDocumentFragment(); next = elem.nextSibling; parent = elem.parentNode; while ((child = elem.firstChild)) { docfrag.appendChild(child); } startPt = doc.createRange(); startPt.setStartAfter(elem); parent.removeChild(elem); parent.insertBefore(docfrag, next); break; } } } catch (e) { } startPt = doc.createRange(); startPt.setStart(retRange.endContainer, retRange.endOffset); } } else { startPt = doc.createRange(); startPt.setStart(retRange.endContainer, retRange.endOffset); } startPt.collapse(true); } } }, OnCommandSearchTerm: function(event) { var strTerm = event.target.getAttribute("label"); //if shift key is pressed the search going backwards this.FindSingleTerm(strTerm, !event.shiftKey); EBUsageHighlighter_CT2384137.OnClickWord(); }, FindSingleTerm: function(text, forward) { var objFind = getBrowser().webBrowserFind; objFind.searchString = text; objFind.matchCase = false; objFind.wrapFind = true; objFind.findBackwards = !forward; var result = objFind.findNext(); }, SetHighlightButtons: function() { var XULHighlighter = EBSearchBoxManager_CT2384137.GetHighlighterButtonOnToolbar(); //check if the highlighter exists on the toolbar and if not return if (!XULHighlighter) return; //set the highlighter state if (EBGlobalManager_CT2384137.TotalTrim(this.GetSearchTerm())) { XULHighlighter.setAttribute('disabled', 'false'); XULHighlighter.setAttribute('image', oToolbarSkin_CT2384137.highlighterActiveImageUrl); } else { XULHighlighter.setAttribute('disabled', 'true'); XULHighlighter.setAttribute('image', oToolbarSkin_CT2384137.highlighterInactiveImageUrl); } } }; var EBInitializeToolbarManager_CT2384137 = { GetSetupFinishURL: function() { var strSetupFinish = EBActionManager_CT2384137.GetWebServerURL('SetUpFinish/') return strSetupFinish; }, GetInitializePrefName: function() { var strInitializePrefName = EBPreferenceConsts_CT2384137.Initialize; return strInitializePrefName; }, IsFirstRun: function() { var strInitializePrefName = this.GetInitializePrefName(); //if there isn't any value in this pref it's first time load return !EBToolbarPreferenceManager_CT2384137.HasUserValue(strInitializePrefName); }, IsFirstRunForCommonPrefs: function() { var strInitializePrefName = EBPreferenceConsts_CT2384137.InitializeCommonPrefs; //if there isn't any value in this pref it's first time load return !EBToolbarPreferenceManager_CT2384137.HasUserValue(strInitializePrefName); }, SetInitializePref: function() { var strInitializePrefName = this.GetInitializePrefName(); EBToolbarPreferenceManager_CT2384137.SetPref(strInitializePrefName, true); }, SetInitializeCommonPrefsPref: function() { var strInitializePrefName = EBPreferenceConsts_CT2384137.InitializeCommonPrefs; EBToolbarPreferenceManager_CT2384137.SetPref(strInitializePrefName, true); }, Initialize: function() { //check if there is any value in this pref and if not this is the first initialization if (this.IsFirstRun()) { //set the init pref this.SetInitializePref(); if (this.IsOpenSetupFinishPage()) this.LoadSetupFinishPage(); } if (this.IsFirstRunForCommonPrefs()) { //set the init pref this.SetInitializeCommonPrefsPref(); this.AddMeToInstalledToolbarsList(EBPreferenceConsts_CT2384137.ToolbarsList); } }, LoadSetupFinishPage: function() { //open the setup finish page in new process, because otherwise FF 2.* closes the new tab var strSetupFinish = EBInitializeToolbarManager_CT2384137.GetSetupFinishURL(); setTimeout(function() { EBLinkManager_CT2384137.LoadLinkURL(null, strSetupFinish, "TAB", "", ""); }, 500); }, IsOpenSetupFinishPage: function() { if (EBToolbarPreferenceManager_CT2384137.HasUserValue(EBPreferenceConsts_CT2384137.IsOpenThankYouPage)) return EBToolbarPreferenceManager_CT2384137.GetPref(EBPreferenceConsts_CT2384137.IsOpenThankYouPage) else return true; }, AddMeToInstalledToolbarsList: function(strPrefName) { var strToolbarsList = EBGlobalPreferenceManager_CT2384137.GetPref(strPrefName); if (!strToolbarsList) strToolbarsList = 'CT2384137'; else { var arrToolbars = strToolbarsList.split(','); var bFound = false; for (var i = 0; i < arrToolbars.length; i++) if (arrToolbars[i] == 'CT2384137') bFound = true; if (!bFound) arrToolbars.push('CT2384137'); strToolbarsList = arrToolbars.join(','); } EBGlobalPreferenceManager_CT2384137.SetPref(strPrefName, strToolbarsList); } } var EBLinkManager_CT2384137 = { //all calls for link loads from any place should be done with this function! LoadLinkURL: function(oEvent, strURL, strTarget, strPostParams, strParentId, oUploadStream, isUser, strAncestorId, strCompId, strCompType, strSource) { //check validation of the url if (!strURL || strURL.toLowerCase() == EBGlobalConsts_CT2384137.HTTP_PREFIX || EBGlobalManager_CT2384137.TotalTrim(strURL) == "") return; //convert aliases in the link strURL = EBActionManager_CT2384137.ConvertAliasesUrl(strURL); //check if the click is from middle button to open in a new tab if (oEvent && oEvent.button == 1) { strTarget = "TAB"; } //check if this link is function to open popHTML window. if (EBGlobalManager_CT2384137.IsFunctionNotLink(strURL)) { var oGadgetData = EBGlobalManager_CT2384137.GetGadgetInfoFromLink(strURL, oEvent, strParentId); var popHtmlData = new oToolbar_CT2384137.toolbarDataParsing.dataObjects.PopHtml(); popHtmlData.popHtmlUrl = oGadgetData.url; popHtmlData.width = oGadgetData.width; popHtmlData.height = oGadgetData.height; popHtmlData.parentElement = oEvent.target; popHtmlData.openPositionType = popHtmlData.openPositionTypes.alignment; popHtmlData.openPositionData.vertical = popHtmlData.openPositionTypes.verticalAlignmentBottom; popHtmlData.isUser = (isUser) ? true : false; popHtmlData.componentId = strAncestorId; popHtmlData.elementId = strCompId; popHtmlData.compType = strCompType; popHtmlData.source = strSource; popHtmlData.gadgetType = EBGadgetManager_CT2384137.GADGET_TYPE_REGULAR; popHtmlData.titleIconUrl = oGadgetData.titleIcon; popHtmlData.title = oGadgetData.title; EBGadgetManager_CT2384137.OpenGadget(popHtmlData); } //check for post else if (strPostParams || oUploadStream) this.LoadURLPostData(strURL, strPostParams, strTarget, oUploadStream); else { switch (strTarget) { case "TAB": case "NEW": EBWeb_CT2384137.LoadURLInNewTab(strURL); break; case "BLANK": EBWeb_CT2384137.LoadURLInNewWindow(strURL); break; default: EBWeb_CT2384137.LoadURL(strURL); break; } } }, LoadURLPostData: function(strPostURL, strPostParams, strTarget, oUploadStream) { var objMimeStream if (!oUploadStream) objMimeStream = EBWeb_CT2384137.SetupMimeStream(strPostParams); else objMimeStream = oUploadStream; if (strTarget == "TAB") { //first load a blank tab EBWeb_CT2384137.LoadURLInNewTab(''); } else if (strTarget == "NEW") { //first load a blank window //EBWeb_CT2384137.LoadURLInNewWindow(''); EBWeb_CT2384137.LoadURLInNewTab(''); } //login to the url using the mimeStream getBrowser().webNavigation.loadURI(strPostURL, Components.interfaces.nsIWebNavigation.LOAD_FLAGS_NONE, null, objMimeStream, null); } }; function EBLoadToolbar_CT2384137() { if (!EBActionManager_CT2384137.IsToolbarShown()) return; //set identifier to this window gBrowser.ebWindowId_CT2384137 = Math.random().toString(); setTimeout(function() { EBAlertManager_CT2384137.RunAlert(); }, 100); setTimeout(function() { EBToolbarManager_CT2384137.onload(); }, 120); }; //progressive listener of the main browser (actually the all toolbar) var EBMainBrowserListener_CT2384137 = { prevUrl: '', QueryInterface: function(aIID) { if (aIID.equals(Components.interfaces.nsIWebProgressListener) || aIID.equals(Components.interfaces.nsISupportsWeakReference) || aIID.equals(Components.interfaces.nsISupports)) return this; throw Components.results.NS_NOINTERFACE; }, onStateChange: function(aProgress, aRequest, aFlag, aStatus) { var strURL = (aRequest) ? aRequest.name : ''; /* TODO use when will be needed if (aFlag & Components.interfaces.nsIWebProgressListener.STATE_IS_DOCUMENT) { }*/ //navigate start event if (aFlag & Components.interfaces.nsIWebProgressListener.STATE_START) { var aSubject = EBObserversManager_CT2384137.GetSubject(gBrowser.ebWindowId_CT2384137); aSubject.url = strURL; EBObserversManager_CT2384137.NotifyCustomObserver(aSubject, EBObserversManager_CT2384137.ToolbarEventsTopic, EBObserversManager_CT2384137.ToolbarEventsData.NavigateComplete); if (EBActionManager_CT2384137.IsToolbarMC() && EBActionManager_CT2384137.IsToolbarShown()) EBMCManager_CT2384137.OnBeforeNavigate(strURL); } //document complete event if (aFlag & Components.interfaces.nsIWebProgressListener.STATE_STOP) { if (strURL == gBrowser.contentDocument.location.href) { var aSubject = EBObserversManager_CT2384137.GetSubject(gBrowser.ebWindowId_CT2384137); aSubject.url = strURL; EBObserversManager_CT2384137.NotifyCustomObserver(aSubject, EBObserversManager_CT2384137.ToolbarEventsTopic, EBObserversManager_CT2384137.ToolbarEventsData.DocumentComplete); } EBActionManager_CT2384137.DocumentComplete(); if (EBActionManager_CT2384137.IsToolbarMC() && aFlag != 65552) EBMCManager_CT2384137.DocumentComplete(); //notify the secondary search manager EBSecondarySearchManager_CT2384137.onDocCompleted(strURL); //notify toggle components EBToggleComponentManager_CT2384137.DocumentComplete(aProgress); //check the toolbar api EBToolbarApiManager_CT2384137.CheckPage(getBrowser()); } return 0; }, // This fires when the location bar changes i.e load event is confirmed // or when the user switches tabs onLocationChange: function(aProgress, aRequest, aURI) { var strURL = (aURI) ? aURI.spec : ""; // code for switch tab event if (!aProgress.isLoadingDocument || !strURL) { var aSubject = EBObserversManager_CT2384137.GetSubject(gBrowser.ebWindowId_CT2384137); aSubject.url = strURL; EBObserversManager_CT2384137.NotifyCustomObserver(aSubject, EBObserversManager_CT2384137.ToolbarEventsTopic, EBObserversManager_CT2384137.ToolbarEventsData.TabChange); } EBToggleComponentManager_CT2384137.TabChange(aProgress); EBHighlighterManager_CT2384137.TabChange(aProgress); //check suggests keywords EBSuggestsManager_CT2384137.CheckSuggests(); //check the toolbar api EBToolbarApiManager_CT2384137.CheckPage(getBrowser()); if (EBActionManager_CT2384137.IsToolbarMC() && strURL && this.prevUrl != strURL) { this.prevUrl = strURL; EBMCManager_CT2384137.LocationChange(strURL); } return 0; }, // For definitions of the remaining functions see XulPlanet.com onSecurityChange: function(aProgress, aRequest, aState) { //check the toolbar api EBToolbarApiManager_CT2384137.CheckPage(getBrowser()); return 0; }, onProgressChange: function() { return 0; }, onStatusChange: function(webProgress, request, status, message) { //check the toolbar api EBToolbarApiManager_CT2384137.CheckPage(getBrowser()); return 0; }, onLinkIconAvailable: function() { return 0; } }; var EBObserversManager_CT2384137 = { NSIObserverService : Components.classes["@mozilla.org/observer-service;1"].getService(Components.interfaces["nsIObserverService"]), ArrObservers : null, Delimiter : '!EBObserverDelim!', ToolbarEventsTopic : 'Topic_ConduitToolbar_CT2384137', ToolbarEventsData: { NavigateComplete: 'NavigateComplete', DocumentComplete: 'DocumentComplete', SearchTermChanged: 'SearchTermChanged', TabChange: 'TabChange', EBGlobalKeyChanged: 'GlobalStorageChange' }, Register : function() { //add installation observer EBInstallationObserver_CT2384137.register(); //all toolbar activity observer EBToolbarObserver_CT2384137.register(); }, UnRegister : function() { //remove installation observer EBInstallationObserver_CT2384137.unregister(); //remove custom observers try { if(this.ArrObservers && this.ArrObservers.length > 0) for(var i=0; i<this.ArrObservers.length; i++) this.ArrObservers[i].unregister(); } catch(e) { EBLogging_CT2384137.LogToConsole(e); } this.ArrObservers = null; }, RegisterCustomObserver : function(objObserver) { //lazy init if(!this.ArrObservers) this.ArrObservers = new Array(); //save observer to unregister it later on windows unload this.ArrObservers.push(objObserver); this.NSIObserverService.addObserver(objObserver, objObserver.Topic, false); }, NotifyCustomObserver : function(aSubject, strTopic, oData) { this.NSIObserverService.notifyObservers(aSubject, strTopic, oData); }, EncodeData : function() { if(arguments.length == 0) return; var arrData = new Array(); for(var i=0; i<arguments.length; arrData.push(arguments[i]), i++); var strData = arrData.join(this.Delimiter); return strData; }, DecodeData : function(strData) { return strData.split(this.Delimiter); }, GetSubject: function(strWindowId) { var objSubject = new Object(); objSubject.wrappedJSObject = objSubject; objSubject.windowId = strWindowId; return objSubject; } } //observe the installation process of the extensions //trigger when: //install extension //uninstall extension //enable extension //disable extension //upgrade extension //cancel extension var EBInstallationObserver_CT2384137 = { ACTION_REQUESTED_TOPIC: "em-action-requested", ITEM_INSTALLED: "item-installed", ITEM_UPGRADED: "item-upgraded", ITEM_UNINSTALLED: "item-uninstalled", ITEM_ENABLED: "item-enabled", ITEM_DISABLED: "item-disabled", ITEM_CANCEL: "item-cancel-action", register: function() { EBObserversManager_CT2384137.NSIObserverService.addObserver(this, this.ACTION_REQUESTED_TOPIC, false); }, unregister: function() { EBObserversManager_CT2384137.NSIObserverService.removeObserver(this, this.ACTION_REQUESTED_TOPIC); }, observe: function(aSubject, aTopic, aData) { try { if (aData == this.ITEM_UNINSTALLED) { var objExtensionItem = aSubject.QueryInterface(Components.interfaces.nsIUpdateItem); if (objExtensionItem.id == EBGlobalConsts_CT2384137.GUID) { EBLogging_CT2384137.LogToConsole("Initiate uninstall sequence"); EBUninstallManager_CT2384137.PostUninstallToolbar(); } } } catch (err) { EBLogging_CT2384137.LogToConsole(err, "Uninstall Error"); } } }; var EBToolbarObserver_CT2384137 = { Topic : 'Topic_ConduitToolbar_CT2384137', Action : { RefreshToolbar : 'RefreshToolbar' }, observe: function(aSubject, aTopic, aData) { switch(aData) { case this.Action.RefreshToolbar: //Add here functions to invoke on toolbar refresh break; } }, register : function() { EBObserversManager_CT2384137.RegisterCustomObserver(this); }, unregister : function() { EBObserversManager_CT2384137.NSIObserverService.removeObserver(this, this.Topic); } }; var EBSearchFromAddressBar_CT2384137 = { addressBarEngineURL: 'http://search.conduit.com/ResultsExt.aspx?ctid=CT2384137&q=', addressBarUrlPrefName: 'keyword.URL', addressBarEnabledPrefName: 'keyword.enabled', addressBarSelectedCtid: 'keywordURLSelectedCTID', firstTime: function(strUrl, bIsSet) { //save old one, if not saved before this.backup(); //save the new url EBToolbarPreferenceManager_CT2384137.SetPref(EBPreferenceConsts_CT2384137.SearchFromAddressBarUrl, strUrl); //set new url if (bIsSet) { this.setAddressBarSearchUrl(strUrl); this.setSelectedCtid(); this.setEnabledAddressBarSearch(); } EBInitializeToolbarManager_CT2384137.AddMeToInstalledToolbarsList(EBPreferenceConsts_CT2384137.ToolbarsList2); }, setAddressBarSearchUrl: function(strUrl) { EBPreferenceService_CT2384137.SetPref(this.addressBarUrlPrefName, strUrl); }, setSelectedCtid: function() { EBGlobalPreferenceManager_CT2384137.SetPref(this.addressBarSelectedCtid, EBGlobalConsts_CT2384137.ToolbarCTID); }, removeSelectedCtid: function() { EBGlobalPreferenceManager_CT2384137.SetPref(this.addressBarSelectedCtid, null); }, setEnabledAddressBarSearch: function() { var bIsEnabled = EBPreferenceService_CT2384137.GetPref(this.addressBarEnabledPrefName); if (!bIsEnabled) EBPreferenceService_CT2384137.SetPref(this.addressBarEnabledPrefName, true); }, getUrl: function() { var strUrl = EBToolbarPreferenceManager_CT2384137.GetPref(EBPreferenceConsts_CT2384137.SearchFromAddressBarUrl); if (!strUrl) strUrl = this.addressBarEngineURL; return strUrl; }, changeState: function(bIsEnabled) { if (bIsEnabled) { var strUrl = this.getUrl(); this.setAddressBarSearchUrl(strUrl); this.setSelectedCtid(); } else { this.setToDefaultSearch(); this.removeSelectedCtid(); } }, //backup only once per all toolbars installations backup: function() { var strSearchFromAddressOldUrl = EBPreferenceService_CT2384137.GetPref(this.addressBarUrlPrefName); //save the original value if not saved before if (!EBGlobalPreferenceManager_CT2384137.HasUserValue(EBPreferenceConsts_CT2384137.SearchFromAddressBarSavedUrl)) { EBGlobalPreferenceManager_CT2384137.SetPref(EBPreferenceConsts_CT2384137.SearchFromAddressBarSavedUrl, strSearchFromAddressOldUrl); } }, //restore to original, executed by the last toolbar uninstall restoreOriginal: function() { var strSavedUrl = EBGlobalPreferenceManager_CT2384137.GetPref(EBPreferenceConsts_CT2384137.SearchFromAddressBarSavedUrl); this.setAddressBarSearchUrl(strSavedUrl); }, setToDefaultSearch: function() { this.restoreOriginal(); }, restorePrevious: function() { var strCTIDs = EBGlobalPreferenceManager_CT2384137.GetPref(EBPreferenceConsts_CT2384137.ToolbarsList2); var arrCTIDs = strCTIDs.split(","); var strCTID = arrCTIDs.pop(); var strPrefName = strCTID + "." + EBPreferenceConsts_CT2384137.SearchFromAddressBarUrl; var strUrl = EBPreferenceService_CT2384137.GetPref(strPrefName); this.setAddressBarSearchUrl(strUrl); }, restoreOnUninstall: function() { var strPrefName = EBPreferenceConsts_CT2384137.ToolbarsList2; EBUninstallManager_CT2384137.RemoveMeFromInstalledToolbarsList(strPrefName); if (EBUninstallManager_CT2384137.IsLastToolbar(strPrefName)) this.restoreOriginal(); else if (this.isEnabled()) this.restorePrevious(); }, isEnabled: function() { return EBGlobalPreferenceManager_CT2384137.GetPref(this.addressBarSelectedCtid) == EBGlobalConsts_CT2384137.ToolbarCTID; }, updateFromSettings: function(strUrl) { strUrl = this.convertSettingsUrl(strUrl); //save the new url EBToolbarPreferenceManager_CT2384137.SetPref(EBPreferenceConsts_CT2384137.SearchFromAddressBarUrl, strUrl); }, convertSettingsUrl: function(strUrl) { strUrl = strUrl.replace(/MYSEARCHTERM/g, ''); strUrl = strUrl.replace(/EB_CTID/g, EBActionManager_CT2384137.GetCTID()); //fix server issue, the parameter q= must be at the end of the string if (strUrl.indexOf("q=&") != -1) { strUrl = strUrl.replace(/q=&/, "") + "&q="; } return strUrl; }, isThisToolbarRegisteredWithDefault: function() { var strUrl = EBPreferenceService_CT2384137.GetPref(this.addressBarUrlPrefName); return strUrl == this.addressBarEngineURL; }, onload: function(){ var selectedCtid = EBGlobalPreferenceManager_CT2384137.GetPref(this.addressBarSelectedCtid); if(!selectedCtid) return; if(this.isToolbarLive(selectedCtid)){ this.setAddressBarSearchUrl(this.getToolbarSearchFromAddressBarUrl(selectedCtid)); return; } var nextToolbarSerchUrl = this.getNextLiveToolbarSearchUrl(EBPreferenceConsts_CT2384137.ToolbarsList2); if (nextToolbarSerchUrl) this.setAddressBarSearchUrl(nextToolbarSerchUrl); else this.setAddressBarSearchUrl(EBGlobalPreferenceManager_CT2384137.GetPref(EBPreferenceConsts_CT2384137.SearchFromAddressBarSavedUrl)); }, onunload: function() { this.restoreOriginal(); }, getToolbarSearchFromAddressBarUrl: function(ctid) { var prefName = ctid + "." + EBPreferenceConsts_CT2384137.SearchFromAddressBarUrl; return EBPreferenceService_CT2384137.GetPref(prefName); }, isToolbarLive: function(ctid){ var activeToolbarsList = EBActionManager_CT2384137.GetEBToolbarsCTID(); var searchFromAddressBarUrl; for (var i = 0; i < activeToolbarsList.length; i++) { if(activeToolbarsList[i].originalCTID == ctid) return true; } return false; }, //get the first live toolbar getNextLiveToolbarSearchUrl: function(toolbarListPref){ var toolbarList = EBGlobalPreferenceManager_CT2384137.GetPref(toolbarListPref); if(!toolbarList) return null; // split the list to array var arrToolbars = toolbarList.split(','); var searchFromAddressBarUrl; for (var i = 0; i < arrToolbars.length; i++){ searchFromAddressBarUrl = this.getToolbarSearchFromAddressBarUrl(arrToolbars[i]); // if this live toolbar if (this.isToolbarLive(arrToolbars[i])) return searchFromAddressBarUrl; } //didn't find any live toolbar return null; } }; var EBSecondarySearchManager_CT2384137 = { TimeoutSecondary: null, IsSearchExecuted: false, SearchUrl: '', EngineId: '', //public onSearchStarted: function(objSecondarySearch, evnt, strPostParams, strSearchTerm, strSearchUrl) { if (objSecondarySearch == null) return; this.SearchStartTime = Date.parse(Date()); clearTimeout(this.TimeoutSecondary); this.IsSearchExecuted = true; this.SearchUrl = strSearchUrl; this.EngineId = objSecondarySearch.engineId; var oCheckIfLoaded = function() { if (EBSecondarySearchManager_CT2384137.IsSearchExecuted) { var strSearchUrl = objSecondarySearch.prefix.replace(objSecondarySearch.searchTermToReplace, strSearchTerm); strSearchUrl = EBActionManager_CT2384137.ConvertAliasesUrl(strSearchUrl); EBSecondarySearchManager_CT2384137.SearchUrl = ""; EBSecondarySearchManager_CT2384137.IsSearchExecuted = false; EBLinkManager_CT2384137.LoadLinkURL(evnt, strSearchUrl, false, strPostParams); } }; this.TimeoutSecondary = setTimeout(oCheckIfLoaded, this.getSecondarySearchTimeout(objSecondarySearch.engineId, objSecondarySearch.interval)); }, //public onDocCompleted: function(strUrl) { clearTimeout(this.TimeoutSecondary); if (strUrl == this.SearchUrl && this.IsSearchExecuted) { var iSearchTime = Date.parse(Date()) - this.SearchStartTime; this.setNewData(this.EngineId, iSearchTime); } else { this.IsSearchExecuted = false; this.SearchUrl = ''; } }, //private searchesCount: function(strEngineId, iCount) { var prefSearchesCount = EBPreferenceConsts_CT2384137.SearchesCount + '.' + strEngineId; //get if (typeof iCount == 'undefined') { var iCnt = EBToolbarPreferenceManager_CT2384137.GetPref(prefSearchesCount); if (!iCnt) iCnt = 0; return iCnt; } //set else EBToolbarPreferenceManager_CT2384137.SetPref(prefSearchesCount, iCount); }, //private searchesAverage: function(strEngineId, iAvg) { var prefSearchTimeAverage = EBPreferenceConsts_CT2384137.SearchTimeAverage + '.' + strEngineId; //get if (typeof iAvg == 'undefined') { var iAverage = EBToolbarPreferenceManager_CT2384137.GetPref(prefSearchTimeAverage); if (!iAverage) iAverage = 0; return iAverage; } //set else EBToolbarPreferenceManager_CT2384137.SetPref(prefSearchTimeAverage, iAvg); }, //private setNewData: function(strEngineId, iSearchTime) { //get data from prefs var iCount = this.searchesCount(strEngineId); var iAvg = this.searchesAverage(strEngineId); //calculate new average iAvg = (iAvg * iCount + iSearchTime) / (iCount + 1) //set new data to prefs this.searchesCount(strEngineId, iCount + 1); this.searchesAverage(strEngineId, iAvg); }, //private getSecondarySearchTimeout: function(strEngineId, iMinTimeout) { var iAvg = this.searchesAverage(strEngineId); if (iAvg == 0) return iMinTimeout * 2; else if (iAvg < iMinTimeout) return iMinTimeout; else return (1 + iMinTimeout / iAvg) * iAvg; } } var EBSelectToSearchBox_CT2384137 = { getTextFromClick: function(parent, offset, target) { if (parent.parentNode != target || parent.nodeType != Node.TEXT_NODE) return; var container = parent.parentNode; if (container) { var foundNode = false; for (var i = container.firstChild; i != null; i = i.nextSibling) { if (i == parent) { foundNode = true; break; } } if (!foundNode) return; } var range = parent.ownerDocument.createRange(); range.selectNode(parent); var str = range.toString(); if (offset < 0 || offset >= str.length) return; var start = offset; while (str.charAt(start) != " " && start > 0) { start--; } var end = offset + 1; while (str.charAt(end) != " " && end < str.length) { end++; } var text = str.substring(start, end); return text; }, getSelectionText: function(event) { var str = ""; if (!event.rangeParent) return true; if (getBrowser().contentWindow.getSelection()) str = getBrowser().contentWindow.getSelection().toString(); var node = document.commandDispatcher.focusedElement; try { if (node && 'selectionStart' in node && node.selectionStart != node.selectionEnd && node.type != "password" && node.nodeName != "html:input") { var offsetStart = Math.min(node.selectionStart, node.selectionEnd); var offsetEnd = Math.max(node.selectionStart, node.selectionEnd); str = node.value.substr(offsetStart, offsetEnd - offsetStart); } else if (node && node.nodeName == "html:input") str = EBComponentsConsts_CT2384137.DontChangeTerm; } catch (ex) { } return str; }, onmouseup: function(event) { var isEnabled = EBToolbarPreferenceManager_CT2384137.HasUserValue(EBPreferenceConsts_CT2384137.EnableClickToSearchBox) ? EBToolbarPreferenceManager_CT2384137.GetPref(EBPreferenceConsts_CT2384137.EnableClickToSearchBox) : true; if (event.button != 0 || !isEnabled) return; //check if there was selection made var text = this.getSelectionText(event); if (text == null) text = ""; if (text != EBComponentsConsts_CT2384137.DontChangeTerm && (text != "" || !EBSearchBoxConsts_CT2384137.IsUserInput)) { text = EBGlobalManager_CT2384137.Trim(text); if (text != null) { //take the text part up to enter try { text = text.substr(0, 255); text = text.replace(/\r\n/g, ""); text = text.replace(/\n/g, ""); } catch (ex) { EBLog(ex, "select to search box"); } EBActionManager_CT2384137.SetToolbarSearchTerm(text); EBSearchBoxConsts_CT2384137.IsUserInput = false; } } } }; function EBSuggestObject_CT2384137(strDomain,strSearchParam,strOutputCharset) { this.domain = strDomain; this.searchParam = strSearchParam; this.outputCharset = strOutputCharset; } var EBSuggestsManager_CT2384137 = { CheckSuggests : function() { var arrToolbarSuggests = EBToolbarManager_CT2384137.dataToolbarObject.ToolbarSuggests; if(arrToolbarSuggests) { for(var i=0;i<arrToolbarSuggests.length;i++) { this.SetSuggest(arrToolbarSuggests[i]); } } }, SetSuggest : function(ebSuggestObj) { var strKeyword = this.GetKeyword(ebSuggestObj) if(strKeyword) EBActionManager_CT2384137.SetToolbarSearchTerm(strKeyword); }, GetKeyword : function(ebSuggestObj) { var strKeyword = ""; var DELIMITER_PARAMS = '&'; var strDomain = ebSuggestObj.domain; var strSearchParam = ebSuggestObj.searchParam; var strOutputCharset = ebSuggestObj.outputCharset; //get the current url var strCurrentUrl = EBUrl_CT2384137.GetPageUrl(); //check the current url with the suggest element if(strCurrentUrl.indexOf(strDomain) != -1) { //get the index of the search param var iIndexOfParam = strCurrentUrl.indexOf(strSearchParam); if(iIndexOfParam != -1) { //get the url string from the search param till the end var strUrlFromParam = strCurrentUrl.substring(iIndexOfParam + strSearchParam.length); //check if this is the keyword by getting the next delimiter params(usually '&') var iIndexOfNextParam = strUrlFromParam.indexOf(DELIMITER_PARAMS); if(iIndexOfNextParam != -1) strKeyword = strUrlFromParam.substring(0,iIndexOfNextParam); else strKeyword = strUrlFromParam; } } strKeyword = this.ConvertKeyword(strKeyword,strOutputCharset); return strKeyword; }, ConvertKeyword : function(strKeyword,strCharset) { if(strKeyword == "") return ""; //convert the url spacing before!!! the main conversion itself. strKeyword = strKeyword.replace(/\+/g,' '); //convert the search keyword back from the url keyword to normal one strKeyword = unescape(strKeyword); strKeyword = EBFileIO_CT2384137.toUnicode(strCharset,strKeyword); //remove the site:<domain> from the keyword in case of site search if (strKeyword.indexOf("site:") != -1 && strKeyword.indexOf("site: ") == -1) { try { var iStart = strKeyword.indexOf("site2:"); var iBlank = strKeyword.indexOf(" ",iStart); strKeyword = strKeyword.substr(iBlank+1); } catch(ex) {} } return strKeyword; } } var EBToggleComponentConsts_CT2384137 = { MODE_TEMPORARY: 'TEMPORARY', MODE_PERMANENT: 'PERMANENT' }; var EBToggleComponentManager_CT2384137 = { //Lazy initiation of the toggle components hash table ArrToggleComponents: null, OnToolbarRefresh: function() { var objWindowsManager = Components.classes['@mozilla.org/appshell/window-mediator;1'] .getService(Components.interfaces.nsIWindowMediator); var objEnumerator = objWindowsManager.getEnumerator('navigator:browser'); while (objEnumerator.hasMoreElements()) { var objWindow = objEnumerator.getNext(); if (objWindow.EBToggleComponentManager_CT2384137.OnToolbarRefresh) { try { objWindow.EBToggleComponentManager_CT2384137.Clear(); } catch (ex) { } } } }, Clear: function() { this.ArrToggleComponents = null; }, Init: function() { if (!this.ArrToggleComponents) this.ArrToggleComponents = new EBArrayHashObject_CT2384137(); }, InitComponent: function(obj) { this.Init(); this.ArrToggleComponents.Add(obj.ComponentItem.UniqueCompID, obj); var bIsPressed = this.GetIsPressedStateFromPreferences(obj.ComponentItem.UniqueCompID); if (bIsPressed) obj.ToggleOn(); }, //Firefox Events DocumentComplete: function(aProgress) { if (!this.ArrToggleComponents) return; var objJSWrapped = EBGlobalManager_CT2384137.GetWebPageJavascriptObject(aProgress.DOMWindow); var objComponent; for (var i = 0; i < this.ArrToggleComponents.Count(); i++) { objComponent = this.ArrToggleComponents.GetByIndex(i); if (objComponent.IsChecked) { //if mode pemanent update without checking if (objComponent.ComponentItem.mode == EBToggleComponentConsts_CT2384137.MODE_PERMANENT) { if (!this.IsToSkip(aProgress.DOMWindow)) this.AddScript(objComponent.ComponentItem.scriptUrl, null, objJSWrapped); } //if mode temporary, check if selected on current window else if (EBGlobalManager_CT2384137.GetBooleanAttribute(gBrowser.selectedBrowser, "a" + objComponent.ComponentItem.UniqueCompID, false)) { if (!this.IsToSkip(aProgress.DOMWindow)) this.AddScript(objComponent.ComponentItem.scriptUrl, null, objJSWrapped); } } } }, TabChange: function(aProgress) { if (!this.ArrToggleComponents) return; var objJSWrapped = EBGlobalManager_CT2384137.GetWebPageJavascriptObject(aProgress.DOMWindow); var objComponent; for (var i = 0; i < this.ArrToggleComponents.Count(); i++) { objComponent = this.ArrToggleComponents.GetByIndex(i); if (objComponent.ComponentItem.mode == EBToggleComponentConsts_CT2384137.MODE_TEMPORARY) { if (objComponent.IsChecked && !EBGlobalManager_CT2384137.GetBooleanAttribute(gBrowser.selectedBrowser, "a" + objComponent.ComponentItem.UniqueCompID, false)) objComponent.ToggleOff(); else if (!objComponent.IsChecked && EBGlobalManager_CT2384137.GetBooleanAttribute(gBrowser.selectedBrowser, "a" + objComponent.ComponentItem.UniqueCompID, false)) objComponent.ToggleOn(); } } }, OnClick: function(event, UniqueCompID, compType) { objToggleComponent = this.ArrToggleComponents.GetByID(UniqueCompID); //usage if (objToggleComponent.IsChecked) EBUsageToggleComponent_CT2384137.OnClickOff(UniqueCompID, compType); else EBUsageToggleComponent_CT2384137.OnClickOn(UniqueCompID, compType); if (objToggleComponent.ComponentItem.mode == EBToggleComponentConsts_CT2384137.MODE_PERMANENT) { this.SetIsPressedStateFromPreferences(UniqueCompID, !objToggleComponent.IsChecked); this.BroadcastOnClick(UniqueCompID, objToggleComponent.IsChecked); } else this.OnClickOnCurrentTab(objToggleComponent); }, BroadcastOnClick: function(compId, bIsChecked) { var objWindowsManager = Components.classes['@mozilla.org/appshell/window-mediator;1'] .getService(Components.interfaces.nsIWindowMediator); var objEnumerator = objWindowsManager.getEnumerator('navigator:browser'); while (objEnumerator.hasMoreElements()) { var objWindow = objEnumerator.getNext(); if (objWindow.EBToggleComponentManager_CT2384137.OnClickOff && objWindow.EBToggleComponentManager_CT2384137.OnClickOn) { try { if (bIsChecked) objWindow.EBToggleComponentManager_CT2384137.OnClickOff(compId); else objWindow.EBToggleComponentManager_CT2384137.OnClickOn(compId); } catch (ex) { } } } }, //for mode temporary toggle components OnClickOnCurrentTab: function(objComponent) { var objSJWrapped = EBGlobalManager_CT2384137.GetWebPageJavascriptObject(gBrowser.selectedBrowser.contentWindow); if (objComponent.IsChecked) { gBrowser.selectedBrowser.removeAttribute("a" + objComponent.ComponentItem.UniqueCompID) this.OnClickOff(objComponent.ComponentItem.UniqueCompID, objSJWrapped) } else { gBrowser.selectedBrowser.setAttribute("a" + objComponent.ComponentItem.UniqueCompID, true) this.OnClickOn(objComponent.ComponentItem.UniqueCompID, objSJWrapped) } }, OnClickOff: function(compId, objJSWrapped) { objComponent = this.ArrToggleComponents.GetByID(compId); objComponent.ToggleOff(); this.ScriptOff(objComponent.ComponentItem.scriptOff, objComponent.ComponentItem.scriptUrl, objJSWrapped); }, OnClickOn: function(compId, objJSWrapped) { objComponent = this.ArrToggleComponents.GetByID(compId); objComponent.ToggleOn(); this.AddScript(objComponent.ComponentItem.scriptUrl, objComponent.ComponentItem.scriptOn, objJSWrapped); }, AddScript: function(strScriptSrc, strFunction, objJSWrapped) { //do not inject script into https sites. if (EBUrl_CT2384137.IsSecuredUrl()) return; var objScript; //fired from document complete or temporary toggle component if (objJSWrapped) { if (!this.IsScriptExists(objJSWrapped, strScriptSrc)) { objScript = this.GetScriptObjectFromUrl(objJSWrapped, strScriptSrc); this.AppendScriptIntoDocument(objJSWrapped, objScript, strScriptSrc); } else if (strFunction && strFunction in objJSWrapped) objJSWrapped[strFunction].apply(); } else { var arrTabs = EBGlobalManager_CT2384137.GetAllTabs(); var arrJSObjects; for (var i = 0; i < arrTabs.length; i++) { arrJSObjects = this.getAllBrowserObjects(arrTabs[i].contentWindow); for (var j = 0; j < arrJSObjects.length; j++) { objJSWrapped = arrJSObjects[j]; objScript = this.GetScriptObjectFromUrl(objJSWrapped, strScriptSrc); if (this.IsScriptExists(objJSWrapped, strScriptSrc) && strFunction in objJSWrapped) objJSWrapped[strFunction].apply(); else this.AppendScriptIntoDocument(objJSWrapped, objScript, strScriptSrc); } } //get all open tabs and inject the script //check if script exists, only execute function } }, ScriptOff: function(strFunction, strScriptSrc, objJSWrapped) { //do not inject script into https sites. if (EBUrl_CT2384137.IsSecuredUrl()) return; if (objJSWrapped) { if (this.IsScriptExists(objJSWrapped, strScriptSrc) && strFunction in objJSWrapped) objJSWrapped[strFunction].apply(); } else { var arrTabs = EBGlobalManager_CT2384137.GetAllTabs(); for (var i = 0; i < arrTabs.length; i++) { objJSWrapped = EBGlobalManager_CT2384137.GetWebPageJavascriptObject(arrTabs[i].contentWindow); if (this.IsScriptExists(objJSWrapped, strScriptSrc) && strFunction in objJSWrapped) objJSWrapped[strFunction].apply(); } } }, AppendScriptIntoDocument: function(objJSWrapped, objScript, strScriptSrc) { var objDoc = objJSWrapped.document; var objHead = objDoc.getElementsByTagName("head")[0]; objHead.appendChild(objScript); }, GetScriptObjectFromUrl: function(objJSWrapped, strScriptSrc) { var objScript = objJSWrapped.document.createElement('script'); objScript.setAttribute('src', strScriptSrc); objScript.setAttribute('type', 'text/javascript'); return objScript; }, IsScriptExists: function(objJSWarpped, strScriptSrc) { var objHead = objJSWarpped.document.getElementsByTagName('head')[0]; var arrScripts = objHead.getElementsByTagName('script'); if (arrScripts.length == 0) return false; var objScript = null; var strSrc = ''; for (var i = 0; i < arrScripts.length; i++) { objScript = arrScripts[i]; strSrc = objScript.getAttribute('src'); if (strSrc == strScriptSrc) return true; } return false; }, GetIsPressedStateFromPreferences: function(uniqueCompId) { var prefName = EBPreferenceConsts_CT2384137.ToggleComponentState + uniqueCompId; var bIsPressedState = EBToolbarPreferenceManager_CT2384137.GetPref(prefName, true); return bIsPressedState; }, SetIsPressedStateFromPreferences: function(uniqueCompId, bState) { var prefName = EBPreferenceConsts_CT2384137.ToggleComponentState + uniqueCompId; var bIsPressedState = EBToolbarPreferenceManager_CT2384137.SetPref(prefName, bState, true); }, IsToSkip: function(DomWindow) { var href = DomWindow.location.href; if (href == "about:blank") return true; else return false; }, getAllBrowserObjects: function(DOMWindow) { var arrJSObjects = new Array(); var mainJSObject = EBGlobalManager_CT2384137.GetWebPageJavascriptObject(DOMWindow); arrJSObjects.push(mainJSObject); var arrFrames = mainJSObject.document.getElementsByTagName("frame"); var i; if (arrFrames.length > 0) { for (i = 0; i < arrFrames.length; i++) arrJSObjects.push(arrFrames[i].contentWindow); } arrFrames = mainJSObject.document.getElementsByTagName("iframe"); if (arrFrames.length > 0) { for (i = 0; i < arrFrames.length; i++) arrJSObjects.push(arrFrames[i].contentWindow); } return arrJSObjects; } }; var EBUninstallManager_CT2384137 = { IsShowUninstallPage: function() { var bValue; if (EBToolbarPreferenceManager_CT2384137.HasUserValue(EBPreferenceConsts_CT2384137.IsOpenUninstallPage)) bValue = EBToolbarPreferenceManager_CT2384137.GetPref(EBPreferenceConsts_CT2384137.IsOpenUninstallPage) else bValue = EBGlobalConsts_CT2384137.ShowUninstallPage; return bValue; }, GetUninstallURL: function() { var strAdditional = 'Uninstall/?version=' + EBGlobalConsts_CT2384137.ToolbarVersion + '&platform=firefox'; var strUninstallURL = EBActionManager_CT2384137.GetWebServerURL(strAdditional); return strUninstallURL; }, //set this pref key when uninstall the toolbar in order to clear all //the toolbar data when the window is closing! SetUninstallPreference: function() { EBToolbarPreferenceManager_CT2384137.SetPref(EBPreferenceConsts_CT2384137.Uninstall, true); }, //check if it is uninstall mode with the pref uninstall key: IsUninstall: function() { var strUninstallPrefName = EBPreferenceConsts_CT2384137.Uninstall; return EBToolbarPreferenceManager_CT2384137.HasUserValue(strUninstallPrefName); }, ClearToolbarData: function() { if (EBGlobalConsts_CT2384137.IsAMO) this.ResetToDefaults(); //clear all preferences: EBToolbarPreferenceManager_CT2384137.ClearAll(); //remove toolbar main directory EBIOManager_CT2384137.DeleteToolbarDirectory(); //remove suggest file with it's directory EBIOManager_CT2384137.DeleteSuggestDirectory(); //update installed toolbars count this.RemoveMeFromInstalledToolbarsList(EBPreferenceConsts_CT2384137.ToolbarsList); }, PostUninstallToolbar: function() { //set the uninstall preference //toolbar hidden if (!oToolbarManager_CT2384137) EBToolbarManager_CT2384137.onload(); this.SetUninstallPreference(); this.sendUninstallLog(); if (this.IsShowUninstallPage()) { //load uninstall page var strUninstallURL = this.GetUninstallURL(); setTimeout(function() { EBLinkManager_CT2384137.LoadLinkURL(null, strUninstallURL, "TAB", null); }, 1); } }, sendUninstallLog: function() { var objData = new oToolbar_CT2384137.uninstallLog.uninstallLogDS( EBGlobalConsts_CT2384137.ToolbarVersion, EBGlobalConsts_CT2384137.ToolbarCTID, EBActionManager_CT2384137.GetCTID(), EBGlobalManager_CT2384137.GetOS(), EBGlobalManager_CT2384137.GetBrowserNameAndVersion(), EBToolbarPreferenceManager_CT2384137.GetPref(EBPreferenceConsts_CT2384137.UserID) ); oToolbar_CT2384137.uninstallLog.manager.send(objData); }, IsToClearToolbarData: function() { return this.IsUninstall() && EBGlobalManager_CT2384137.IsLastWindowInstance(); }, IsLastToolbar: function(strPrefName) { var strToolbarList = EBGlobalPreferenceManager_CT2384137.GetPref(strPrefName); if (strToolbarList) return false; else return true; }, RemoveMeFromInstalledToolbarsList: function(strPrefName) { var strToolbarList = EBGlobalPreferenceManager_CT2384137.GetPref(strPrefName); if (!strToolbarList) return; var arrToolbars = strToolbarList.split(','); for (var i = 0; i < arrToolbars.length; i++) if (arrToolbars[i] == 'CT2384137') arrToolbars.splice(i, 1); strToolbarList = (arrToolbars.length == 0) ? '' : arrToolbars.join(','); EBGlobalPreferenceManager_CT2384137.SetPref(strPrefName, strToolbarList); }, ClearCommonData: function() { EBGlobalPreferenceManager_CT2384137.ClearAll(); }, //after clearing the toolbar private data when the last browser closed we assure //that the toolbar is completley removed by closing all the remain Firefox windows: //like the extensions manager window CloseAllWindows: function() { var objWindowsManager = Components.classes['@mozilla.org/appshell/window-mediator;1'] .getService(Components.interfaces.nsIWindowMediator); var objEnumerator = objWindowsManager.getEnumerator(null); while (objEnumerator.hasMoreElements()) { var objWindow = objEnumerator.getNext(); objWindow.close(); } }, ResetToDefaults: function() { //remove search engine try { var strDestPath = EBInitParams_CT2384137.getProfileSearchPluginsFolder(); var oFile = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile); oFile.initWithPath(strDestPath); oFile.appendRelativePath('conduit.xml'); EBFileIO_CT2384137.unlink(oFile); } catch (ex) { EBLog(ex, "Unable to remove the search xml file"); } //reset homepage EBInitParams_CT2384137.ResetHomepage(); } }; function EBUnloadToolbar_CT2384137(bCheckToolbarVisible) { window.getBrowser().removeProgressListener(EBMainBrowserListener_CT2384137); EBToolbarManager_CT2384137.onunload(bCheckToolbarVisible); }; //User components functions var EBUserComponentsManager_CT2384137 = { filename: 'UserAdditionalComponents.xml', //returns XML of User Additional Components GetXMLFromURL: function(strURL) { var oCallBackFunction = function(strXML, o) { strXML = EBXML_CT2384137.LegalizeEBXML(strXML); var xmlComponent = EBXML_CT2384137.GetXmlDocument(strXML); if (!xmlComponent) return false; EBUserComponentsManager_CT2384137.AddComponentToFile(xmlComponent.documentElement); }; EBWeb_CT2384137.HTTPServerRequest(strURL, null, false, oCallBackFunction); }, LoadFromFile: function() { var oFile = EBIOManager_CT2384137.CreateToolbarFile(this.filename); var strXMLUserComponents = EBFileIO_CT2384137.read(oFile, EBGlobalConsts_CT2384137.DefaultCharset); //no file exists if (!strXMLUserComponents) return null; return EBXML_CT2384137.GetXmlDocument(strXMLUserComponents).documentElement; }, SaveComponentsToFile: function(xmlComponents) { var strComponents = EBXML_CT2384137.GetStringXml(xmlComponents); var oFile = EBIOManager_CT2384137.CreateToolbarFile(this.filename); EBFileIO_CT2384137.write(oFile, strComponents, "", EBGlobalConsts_CT2384137.DefaultCharset); }, AddComponentToFile: function(xmlComponent) { var xmlUserComponents = this.LoadFromFile(); var strXMLComponent = EBXML_CT2384137.GetStringXml(xmlComponent); var strXMLUserComponents = ''; if (!xmlUserComponents) { strXMLUserComponents = "<USER_ADDITIONAL_COMPONENTS/>"; xmlUserComponents = EBXML_CT2384137.GetXmlDocument(strXMLUserComponents); xmlUserComponents = xmlUserComponents.documentElement; } else { var componentId = this.GetComponentId(xmlComponent); if (this.isExists(xmlUserComponents, componentId)) return false; } xmlUserComponents.appendChild(xmlComponent); strXMLUserComponents = EBXML_CT2384137.GetStringXml(xmlUserComponents); var oFile = EBIOManager_CT2384137.CreateToolbarFile(this.filename); EBFileIO_CT2384137.write(oFile, strXMLUserComponents, "", EBGlobalConsts_CT2384137.DefaultCharset); oToolbarManager_CT2384137.reloadUserComponents(true); return true; }, RemoveFromFile: function(arrDeletedIds) { try { var strDeletedIds = '-' + arrDeletedIds.join('-') + '-'; var xmlUserComponents = this.LoadFromFile(); var compId = ''; for (var i = xmlUserComponents.childNodes.length - 1; i >= 0; i--) { compId = this.GetComponentId(xmlUserComponents.childNodes[i]); if (strDeletedIds.indexOf('-' + compId + '-') != -1) xmlUserComponents.removeChild(xmlUserComponents.childNodes[i]); } this.SaveComponentsToFile(xmlUserComponents); } catch (e) { } }, GetComponentNodeByComponentID: function(xmlComponents, compID) { var arrElements = xmlComponents.getElementsByTagName('UNIQUE_COMP_ID'); for (var i = 0; i < arrElements.length; i++) { if (EBXML_CT2384137.GetXmlNodeValue(arrElements.item(i)) == compID) { return arrElements.item(i).parentNode; } } }, RepositionComponents: function(arrPosition) { var xmlComponents = this.LoadFromFile() if (xmlComponents.childNodes.length == 0) return; var strXMLUserComponents = "<USER_ADDITIONAL_COMPONENTS/>"; var xmlUserComponents = EBXML_CT2384137.GetXmlDocument(strXMLUserComponents); var newXmlComponents = xmlUserComponents.documentElement; var xmlComponent = null; for (var i = 0; i < arrPosition.length; i++) { xmlComponent = this.GetComponentNodeByComponentID(xmlComponents, arrPosition[i]) newXmlComponents.appendChild(xmlComponent); } this.SaveComponentsToFile(newXmlComponents); oToolbarManager_CT2384137.reloadUserComponents(false); }, GetComponentId: function(xmlComponent) { var arrNodes = null; try { arrNodes = xmlComponent.parentNode.getElementsByTagName('UNIQUE_COMP_ID'); } catch (e) { arrNodes = xmlComponent.getElementsByTagName('UNIQUE_COMP_ID'); } if (arrNodes.length > 0) return EBXML_CT2384137.GetXmlNodeValue(arrNodes.item(0)) return null; }, isExists: function(xmlUserComponents, componentId) { var compId = ''; for (var i = 0; i < xmlUserComponents.childNodes.length; i++) { compId = this.GetComponentId(xmlUserComponents.childNodes[i]); if (compId == componentId) return true; } return false; } } var EBValidationManager_CT2384137 = { validate: function(prefName) { var value = (EBToolbarPreferenceManager_CT2384137.HasUserValue(prefName)) ? EBToolbarPreferenceManager_CT2384137.GetPref(prefName) : -1; value++; if (value > 2) value = 2; EBToolbarPreferenceManager_CT2384137.SetPref(prefName, value); } }; function EBWindowLoad_CT2384137(event) { EBToolbarCssFunctions_CT2384137.init(); oToolbar_CT2384137 = EBFManager_CT2384137.getService(); //Initialize the global object(currently for the sound xpcom class) EBGlobalManager_CT2384137.Initialize(); //register all observers EBObserversManager_CT2384137.Register(); EBFirefoxBrowserManager_CT2384137.OnLoadWindow(); EBLoadToolbar_CT2384137(); }; function EBWindowUnLoad_CT2384137(event) { //remove all observers: EBObserversManager_CT2384137.UnRegister(); //check if closing in uninstalltion to clear all toolbar private data //in the unload process - this prevents a bug if the user opened a //window after he does uninstall without closing all Firefox instances first - //so we sure delete all data when he close the last window if(EBUninstallManager_CT2384137.IsToClearToolbarData()) { //Restore search from address url to previous EBSearchFromAddressBar_CT2384137.restoreOnUninstall(); EBUninstallManager_CT2384137.ClearToolbarData(); if (EBUninstallManager_CT2384137.IsLastToolbar(EBPreferenceConsts_CT2384137.ToolbarsList)) EBUninstallManager_CT2384137.ClearCommonData(); //Clear Alert Info EBAlertManager_CT2384137.Uninstall(); //set toolbar visible, for next time installation EBActionManager_CT2384137.SetToolbarVisible(); //close all remain open windows to fully complete the uninstallation EBUninstallManager_CT2384137.CloseAllWindows(); } EBUnloadToolbar_CT2384137(true); }; function EBWindowClose_CT2384137(event) {}; function EBWindowMouseUp_CT2384137(event) { EBSelectToSearchBox_CT2384137.onmouseup(event); }; function EBWindowMouseMove_CT2384137(event) { //set the globals variable state the client coordinates EBGlobalVariables_CT2384137.ScreenCoordinateX = event.screenX; EBGlobalVariables_CT2384137.ScreenCoordinateY = event.screenY; }; //global event of the window to set focus // - start to be able catch the onfocus on the searchbox menulist //which does not have an auto onblur event function EBWindowFocus_CT2384137(event) { if (event.eventPhase == 2) EBChevronStaticManager_CT2384137.onWindowResize(event); if(event && event.target) { var XULSearchBoxMenuList = EBComponentsManager_CT2384137.GetSearchBoxMenuList(); if(XULSearchBoxMenuList && event.target == XULSearchBoxMenuList) EBSearchBoxManager_CT2384137.OnSearchBoxFocus(event); } }; //global event of the window to set blur(un-focus) // - start to be able catch the onblur on the searchbox menulist //which does not have an auto onblur event function EBWindowBlur_CT2384137(event) { if(event && event.target) { var XULSearchBoxMenuList = EBComponentsManager_CT2384137.GetSearchBoxMenuList(); if(XULSearchBoxMenuList && event.target == XULSearchBoxMenuList) { EBSearchBoxManager_CT2384137.OnSearchBoxBlur(event); } } }; function EBWindowResize_CT2384137(event) { if (event.eventPhase != 2) return; EBChevronStaticManager_CT2384137.onWindowResize(event); }; function EBAOLAccount_CT2384137(strEmail, strPassword) { this.MailAccount = null; //Constructor this.InitAccount = function(strEMail, strPassword) { //initialize the email account object this.MailAccount = new EBEMailAccount_CT2384137(EBEmailAccountsConsts_CT2384137.AOL.MailURL, strEMail, strPassword); } this._login = function(event, objExtractNewMessages) { var strMailURL = this.MailAccount.MailURL; var that = this; var objCallBackFunction = function() { var objLogin = function(strHtml) { var strPostData = that._GetPostData.call(that, strHtml); if (objExtractNewMessages) EBServerDataURL_CT2384137.ServerRequest(strMailURL, strPostData, null, null, objExtractNewMessages); else { var bIsInNewTab = event.button == 1; EBLinkManager_CT2384137.LoadLinkURL(event, strMailURL, bIsInNewTab, strPostData); } }; EBServerDataURL_CT2384137.ServerRequest(EBEmailAccountsConsts_CT2384137.AOL.MailURL, null, null, null, objLogin); }; //logout before navigating to the account this.DeleteSessionCookies(); EBWeb_CT2384137.NavigationWithCallBack(EBEmailAccountsConsts_CT2384137.AOL.MailLogoutURL, objCallBackFunction); }; this.Login = function(event) { var oNewTab = getBrowser().addTab("chrome://iobitcom/content/wait.xul"); getBrowser().selectedTab = oNewTab; var strMailURL = this.MailAccount.MailURL; var bIsInNewTab = event.button == 1; var goToAccount = function() { oNewTab.linkedBrowser.contentDocument.location.href = strMailURL; }; this.GetNewMessagesCount(goToAccount); }; this.Logout = function(event) { var strLogoutURL = EBEmailAccountsConsts_CT2384137.AOL.MailLogoutURL; var strLoginURL = EBEmailAccountsConsts_CT2384137.AOL.MailURL; var objCallBackFunction = function() { EBLinkManager_CT2384137.LoadLinkURL(event, strLogoutURL, false, null); }; EBWeb_CT2384137.NavigationWithCallBack(strLogoutURL, objCallBackFunction); }; this.DeleteSessionCookies = function() { var oCookieManager = Components.classes["@mozilla.org/cookieService;1"]. getService(Components.interfaces.nsICookieManager); //TODO if needed }; this.IsLoggedIn = function(objCallBackFunction) { //check if there an open window on yahoo mail and check to retrive the //new messages from this window using it html document var objWindowsManager = Components.classes['@mozilla.org/appshell/window-mediator;1'] .getService(Components.interfaces.nsIWindowMediator); var objEnumerator = objWindowsManager.getEnumerator('navigator:browser'); while (objEnumerator.hasMoreElements()) { var objWindow = objEnumerator.getNext(); var objTabBrowser = objWindow.document.getElementById('content'); var objTab = null; for (var i = 0; i < objTabBrowser.browsers.length; i++) { objTab = objTabBrowser.browsers[i]; var objTabDocument = objTab.contentWindow.document; var strLocationURL = objTabDocument.location.href; if (strLocationURL.toLowerCase().indexOf(EBEmailAccountsConsts_CT2384137.AOL.CheckLoginInURL) != -1) { iNewMessages = EBEmailAccountsConsts_CT2384137.LOGIN_ANOTHER_ACCOUNT; objCallBackFunction(iNewMessages); return true; } } } return false; }; this.GetNewMessagesCount = function(objCallBackFunction, bIsFromCheck) { var strMailURL = this.MailAccount.MailURL; var strEMail = this.MailAccount.EMail; var iNewMessages = null; if (this.IsLoggedIn(objCallBackFunction)) return; var objCheckFunction = function(objDoc) { var arrBody = objDoc.getElementsByTagName("body"); if (arrBody && arrBody.length != 0) { var strHtml = arrBody[0].innerHTML; var arrMatches = strHtml.match(/onClickMailCount\"\>(\d*)/); if (arrMatches && arrMatches.length >= 2 && !isNaN(parseInt(arrMatches[1]))) { var iCount = parseInt(arrMatches[1]); return iCount; } } return null; }; var strLogoutUrl = EBEmailAccountsConsts_CT2384137.AOL.MailLogoutURL; var strLoginUrl = EBEmailAccountsConsts_CT2384137.AOL.MailURL; var strUserName = this.MailAccount.UserName; var strPass = this.MailAccount.Password; var strUserNameFieldID = "lgnId1"; var strPassFieldID = "pwdId1"; var strSubmitID = "aolsubmit"; var strFormName = "AOLLoginForm"; var strFrameName = null; if (bIsFromCheck) { var strBrowserID = EBComponentsConsts_CT2384137.EMailNotifierNewID; EBEmailNotifierManager_CT2384137.xulBrowser = EBXULFactory_CT2384137.CreateBrowser(strBrowserID, '', 0, 0); document.getElementById('mainBox').appendChild(EBEmailNotifierManager_CT2384137.xulBrowser); } var loginToAOL = function() { EBEmailNotifierManager_CT2384137.CheckForEmails( objCallBackFunction, objCheckFunction, strLogoutUrl, strLoginUrl, strUserName, strPass, strUserNameFieldID, strPassFieldID, strSubmitID, strFrameName, strFormName); }; this._login(null, loginToAOL); }; this._GetPostData = function(strHtml) { var arrMatches = strHtml.match(/name=\"usrd\" value=\"(\d+)/); var strUsrd = (arrMatches) ? arrMatches[1] : ""; var strPostData = "loginId=" + this.MailAccount.UserName + "&password=" + this.MailAccount.Password; strPostData += "&siteId="; strPostData += "&sitedomain=sns.webmail.aol.com"; //strPostData += "&sitedomain="; strPostData += "&lang=en"; strPostData += "&locale=us"; strPostData += "&authLev=0"; strPostData += "&siteState="; strPostData += "&isSiteStateEncoded=false"; strPostData += "&mcState=initialized"; strPostData += "&uitype=std"; strPostData += "&use_aam=0"; strPostData += "&_sns_fg_color_="; strPostData += "&_sns_err_color_="; strPostData += "&_sns_link_color_="; strPostData += "&_sns_width_"; strPostData += "&_sns_height_"; strPostData += "&_sns_bg_color_"; strPostData += "&offerId=mail-second-en-us"; strPostData += "&seamless=novl"; strPostData += "®PromoCode="; strPostData += "&idType=SN"; strPostData += "&xchk=false"; strPostData += "&doSSL="; strPostData += "&redirType="; strPostData += "&rememberMe="; strPostData += "&usrd=" + strUsrd; return strPostData; }; this.InitAccount(strEmail, strPassword); }; /********************* GMail Account ****************************/ function EBGmailAccount_CT2384137(strEMail, strPassword) { this.MailAccount = null; //Constructor this.InitAccount = function(strEMail, strPassword) { //initialize the email account object this.MailAccount = new EBEMailAccount_CT2384137(EBEmailAccountsConsts_CT2384137.GMail.MailURL, strEMail, strPassword); } this.Login = function(event) { var oNewTab = getBrowser().addTab("chrome://iobitcom/content/wait.xul"); getBrowser().selectedTab = oNewTab; var strMailURL = "http://gmail.com"; var bIsInNewTab = event.button == 1; var goToAccount = function() { oNewTab.linkedBrowser.contentDocument.location.href = strMailURL; }; this._preLogin(goToAccount); }; this.Logout = function(event) { var strLogoutURL = EBEmailAccountsConsts_CT2384137.GMail.MailLogoutURL; var strLoginURL = EBEmailAccountsConsts_CT2384137.GMail.MailURLnoAuth; EBLinkManager_CT2384137.LoadLinkURL(event, strLogoutURL, false, null); EBLinkManager_CT2384137.LoadLinkURL(event, strLoginURL, false, null); }; this._GetGmailPostData = function() { var strPostData = "ltmpl=wsad<mplcache=2&continue=https%3A%2F%2Fmail.google.com%2Fmail%2F%3F&service=mail&rm=false<mpl=wsad&Email=" + encodeURIComponent(this.MailAccount.UserName) + "&Passwd=" + encodeURIComponent(this.MailAccount.Password) + "&null=Sign+in"; return strPostData; }; this.GetNewMessagesCount = function(objCallBackFunction) { //define the response function coming from the server //after retrieving the string data var objServerResponseFunction = function(strData, objRequest) { var iNewMessagesCount = EBEmailAccountsConsts_CT2384137.LOGIN_FAILED; //parse the data of the xml var XMLDoc = EBXML_CT2384137.GetXmlDocument(strData); var objXMLRoot = XMLDoc.documentElement; var objXMLChildNode = null; if (objXMLRoot.tagName == "feed") { for (var i = 0; i < objXMLRoot.childNodes.length; i++) { objXMLChildNode = objXMLRoot.childNodes[i]; if (objXMLChildNode.tagName == 'fullcount') { iNewMessagesCount = EBXML_CT2384137.GetXmlNodeValue(objXMLChildNode); break; } } } objCallBackFunction(iNewMessagesCount); }; //call a dummy request first to nullify the gmail feed session EBServerDataURL_CT2384137.ServerRequest(EBEmailAccountsConsts_CT2384137.GMail.FeedURL, '', 'dummy', 'dummy', null); EBServerDataURL_CT2384137.ServerRequest(EBEmailAccountsConsts_CT2384137.GMail.FeedURL, '', this.MailAccount.UserName, this.MailAccount.Password, objServerResponseFunction); }; this._preLogin = function(objCallBackFunction, bIsFromCheck) { var strMailURL = this.MailAccount.MailURL; var strEMail = this.MailAccount.EMail; var iNewMessages = null; //if (this.IsLoggedIn(objCallBackFunction)) return; var objCheckFunction = function(objDoc) { return (objDoc.location.href.indexOf("://www.google.com/accounts/ManageAccount") != -1) ? 1 : null; }; var strLogoutUrl = EBEmailAccountsConsts_CT2384137.GMail.MailLogoutURL; var strLoginUrl = EBEmailAccountsConsts_CT2384137.GMail.MailURL; var strUserName = this.MailAccount.UserName; var strPass = this.MailAccount.Password; var strUserNameFieldID = "Email"; var strPassFieldID = "Passwd"; var strSubmitID = "Passwd"; var strFormName = null; var strFrameName = null; if (bIsFromCheck) { var strBrowserID = EBComponentsConsts_CT2384137.EMailNotifierNewID; EBEmailNotifierManager_CT2384137.xulBrowser = EBXULFactory_CT2384137.CreateBrowser(strBrowserID, '', 0, 0); document.getElementById('mainBox').appendChild(EBEmailNotifierManager_CT2384137.xulBrowser); } var login = function() { EBEmailNotifierManager_CT2384137.CheckForEmails( objCallBackFunction, objCheckFunction, strLogoutUrl, strLoginUrl, strUserName, strPass, strUserNameFieldID, strPassFieldID, strSubmitID, strFrameName, strFormName); }; EBWeb_CT2384137.NavigationWithCallBack(EBEmailAccountsConsts_CT2384137.GMail.MailLogoutURL, login); }; //call the constructor when the object is raised this.InitAccount(strEMail, strPassword); }; /********************* Hotmail Account ****************************/ function EBHotmailAccount_CT2384137(strEMail, strPassword) { this.MailAccount = null; //Constructor this.InitAccount = function(strEMail, strPassword) { //initialize the email account object this.MailAccount = new EBEMailAccount_CT2384137('', strEMail, strPassword); }; this.Login = function(event) { var strPostData = this._GetHotmailPostData(); var oEvent = event; var bIsInNewTab = oEvent.button == 1; var objCallBackFunction = function(strFormAction, strPPFTHiddenValue) { if (strFormAction && strPPFTHiddenValue) { strPostData += strPPFTHiddenValue; EBLinkManager_CT2384137.LoadLinkURL(oEvent, strFormAction, bIsInNewTab, strPostData); } }; var objLogoutWithCallBackFunction = function() { EBHotmailAccountManager_CT2384137.GetLoginInformation(objCallBackFunction); }; this.DeleteSessionCookies(); EBWeb_CT2384137.NavigationWithCallBack(EBEmailAccountsConsts_CT2384137.Hotmail.MailLogoutURL, objLogoutWithCallBackFunction); }; this.Logout = function(event) { var strLogoutURL = EBEmailAccountsConsts_CT2384137.Hotmail.MailLogoutURL; var strLoginURL = EBEmailAccountsConsts_CT2384137.Hotmail.MailURL; EBLinkManager_CT2384137.LoadLinkURL(event, strLogoutURL, false, null); EBLinkManager_CT2384137.LoadLinkURL(event, strLoginURL, false, null); }; this._GetHotmailPostData = function() { var strPostData = 'PPSX=Pas&PwdPad=IfYouAreReadingThisYouHaveTooMuchFreeTime&login=' + encodeURIComponent(this.MailAccount.EMail) + '&passwd=' + encodeURIComponent(this.MailAccount.Password) + '&PPFT='; return strPostData; }; this.DeleteSessionCookies = function() { var oCookieManager = Components.classes["@mozilla.org/cookieService;1"]. getService(Components.interfaces.nsICookieManager); oCookieManager.remove('.msn.com', 'MSPAuth', '/', false); oCookieManager.remove('.msn.com', 'MSPProf', '/', false); oCookieManager.remove('.msn.com', 'MailToken', '/', false); oCookieManager.remove('.msn.com', 'PIM', '/', false); oCookieManager.remove('.msn.com', 'MUID', '/', false); oCookieManager.remove('.msn.com', 'ANON', '/', false); oCookieManager.remove('.msn.com', 'NAP', '/', false); oCookieManager.remove('.login.live.com', 'PPAuth', '/', false); oCookieManager.remove('.login.live.com', 'RPSTAuthTime', '/', false); oCookieManager.remove('.login.live.com', 'MSPVis', '/', false); oCookieManager.remove('.login.live.com', 'MSPSoftVis', '/', false); oCookieManager.remove('.login.live.com', 'MSPCID', '/', false); oCookieManager.remove('.login.live.com', 'MSPPre', '/', false); oCookieManager.remove('login.live.com', 'MSPRequ', '/', false); oCookieManager.remove('.live.com', 'PPLState', '/', false); oCookieManager.remove('.live.com', 'RPSTAuth', '/', false); oCookieManager.remove('.live.com', 'MSPAuth', '/', false); oCookieManager.remove('.live.com', 'MSPProf', '/', false); oCookieManager.remove('.live.com', 'MSPSecAuth', '/', false); oCookieManager.remove('.live.com', 'MUID', '/', false); oCookieManager.remove('by117w.bay117.mail.live.com', 'mt', '/', false); oCookieManager.remove('by123w.bay123.mail.live.com', 'mt', '/', false); oCookieManager.remove('.hotmail.msn.com', 'HMSC0899', '/', false); oCookieManager.remove('.hotmail.msn.com', 'HMSatchmo', '/', false); oCookieManager.remove('.hotmail.msn.com', 'HMP1', '/', false); oCookieManager.remove('.passport.com', 'MSPBack', '/', false); oCookieManager.remove('.passport.com', 'PPWLRedir', '/', false); oCookieManager.remove('.passport.com', 'PPStateXfer', '/', false); oCookieManager.remove('login.passport.com', 'MSPRequ', '/', false); oCookieManager.remove('.mail.live.com', 'KSC1108', '/', false); oCookieManager.remove('.mail.live.com', 'bic', '/', false); oCookieManager.remove('.mail.live.com', 'KVC', '/', false); }; this.IsLogIn = function(strLocation) { strLocation = strLocation.toLowerCase(); var arrLoginURL = EBEmailAccountsConsts_CT2384137.Hotmail.CheckLoginInURL; for (var i = 0; i < arrLoginURL.length; i++) { if (strLocation.indexOf(arrLoginURL[i]) != -1) { return true; } } return false; }; this.IsLoggedIn = function() { var objWindowsManager = Components.classes['@mozilla.org/appshell/window-mediator;1'] .getService(Components.interfaces.nsIWindowMediator); var objEnumerator = objWindowsManager.getEnumerator('navigator:browser'); while (objEnumerator.hasMoreElements()) { var objWindow = objEnumerator.getNext(); var objTabBrowser = objWindow.document.getElementById('content'); var objTab = null; for (var i = 0; i < objTabBrowser.browsers.length; i++) { objTab = objTabBrowser.browsers[i]; var objTabDocument = objTab.contentWindow.document; var objTabBody = objTabDocument.body; var strLocationURL = objTabDocument.location.href; //check if the user is logged in to Hotmail account //to prevent the check new messages (which log you out //from your current account!) if (this.IsLogIn(strLocationURL)) { //in hotmail i can't always check his new messages //because of the different pages so i always return login anouther //user to make him disconnect return true; } } } return false; }; this.GetNewMessagesCount = function(objCallBackNewMessagesFunction, bIsFromCheck) { var iNewMessages = null; //var strPostData = this._GetHotmailPostData(); var strEMail = this.MailAccount.EMail.toLowerCase(); //check if there an open window on hotmail mail and check to retrive the if (this.IsLoggedIn()) { iNewMessages = EBEmailAccountsConsts_CT2384137.LOGIN_ANOTHER_ACCOUNT; objCallBackNewMessagesFunction(iNewMessages); return; } iNewMessages = EBEmailAccountsConsts_CT2384137.LOGIN_FAILED; var objCheckFunction = function(objDocument) { var arrObjHTML = objDocument.getElementsByTagName('html'); var iInbox = null; var oUL; if (arrObjHTML.length > 0) { //try hotmail beta light first if (objDocument.location.href.indexOf('TodayLight.aspx') != -1) { oUL = objDocument.getElementById("folderList"); if (oUL) { iInbox = parseInt(oUL.firstChild.getAttribute("count")); if (!isNaN(iInbox)) return iInbox; } } //try hotmail beta else { oUL = objDocument.getElementById("FolderListPane"); if (oUL) { var strHTML = oUL.firstChild.innerHTML; var arrMatch = strHTML.match(/\((\d*)\)/); if (arrMatch) { iInbox = arrMatch[1]; if (!isNaN(iInbox)) return iInbox; } } //regular hotmail var innerHTML = arrObjHTML[0].innerHTML; //parse the source using indexOf and not regular expression cause there //is too many matching templates to the new messages templates var strFontClassK = innerHTML.substring(innerHTML.indexOf('<font class="K">')); var strNewMessages = strFontClassK.substring(strFontClassK.indexOf('(') + 1, strFontClassK.indexOf(')')); if (strNewMessages && isFinite(strNewMessages)) { iInbox = strNewMessages; } //sometimes the landing page is Today and not Mail else { strFontClassK = innerHTML.substring(innerHTML.lastIndexOf('<font class="K">')) strNewMessages = strFontClassK.substring(strFontClassK.indexOf('(') + 1, strFontClassK.indexOf(')')); if (strNewMessages && isFinite(strNewMessages)) { iInbox = strNewMessages; } } } } return iInbox; }; var strLogooutUrl = EBEmailAccountsConsts_CT2384137.Hotmail.MailLogoutURL; var strLoginUrl = 'http://login.live.com/login.srf?id=2'; //'http://hotmail.com/'; var strUserName = this.MailAccount.EMail; var strPass = this.MailAccount.Password; var strUserNameFieldID = 'i0116'; var strPassFieldID = 'i0118'; var strSubmitID = 'i0011'; var strFrameName = ''; if (bIsFromCheck) { var strBrowserID = EBComponentsConsts_CT2384137.EMailNotifierNewID; EBEmailNotifierManager_CT2384137.xulBrowser = EBXULFactory_CT2384137.CreateBrowser(strBrowserID, '', 0, 0); document.getElementById('mainBox').appendChild(EBEmailNotifierManager_CT2384137.xulBrowser); } EBEmailNotifierManager_CT2384137.CheckForEmails( objCallBackNewMessagesFunction, objCheckFunction, strLogooutUrl, strLoginUrl, strUserName, strPass, strUserNameFieldID, strPassFieldID, strSubmitID, strFrameName ); var objCallBackFunction = function(strFormAction, strPPFTHiddenValue) { if (strFormAction && strPPFTHiddenValue) { strPostData += strPPFTHiddenValue; var objServerResponseFunction = function(strData, aRequest) { var strInboxURL = ''; //first check within the javascript location.replace var arrMatches = strData.match(/location.replace\([\"|\']*([^\"|^\']+)[\"|\']*\).*/i); if (arrMatches) { strInboxURL = arrMatches[1]; } else { //second check in the meta tag arrMatches = strData.match(/URL=[\"|\']*([^\"|^\'|^\>]+)[\"|\']*.*/i); if (arrMatches) { strInboxURL = arrMatches[1]; } } if (strInboxURL) { var objServerResponseFunctionInner = function(strDataInner, aRequestInner) { var strSource = strDataInner; //check for hotmail beta: var strLocationReplaceURL = ''; var arrMatches = strSource.match(/location.replace\([\"|\']*([^\"|^\']+)[\"|\']*\).*/i); if (arrMatches) { strLocationReplaceURL = arrMatches[1]; } if (strLocationReplaceURL)//hotmail beta { EBHotmailBetaAccountManager_CT2384137.CheckNewMessages(strLocationReplaceURL, objCallBackNewMessagesFunction); } else //regular hotmail { iNewMessages = EBEmailAccountsConsts_CT2384137.LOGIN_FAILED; //parse the source using indexOf and not regular expression cause there //is too many matching templates to the new messages templates var strFontClassK = strSource.substring(strSource.indexOf('<font class="K">')); var strNewMessages = strFontClassK.substring(strFontClassK.indexOf('(') + 1, strFontClassK.indexOf(')')); if (strNewMessages && isFinite(strNewMessages)) { iNewMessages = strNewMessages; } //sometimes the landing page is Today and not Mail else { strFontClassK = strSource.substring(strSource.lastIndexOf('<font class="K">')) strNewMessages = strFontClassK.substring(strFontClassK.indexOf('(') + 1, strFontClassK.indexOf(')')); if (strNewMessages && isFinite(strNewMessages)) { iNewMessages = strNewMessages; } } objCallBackNewMessagesFunction(iNewMessages); } }; EBServerDataURL_CT2384137.ServerRequest(strInboxURL, null, null, null, objServerResponseFunctionInner); } else { objCallBackNewMessagesFunction(iNewMessages); } } EBServerDataURL_CT2384137.ServerRequest(strFormAction, strPostData, null, null, objServerResponseFunction); } else { objCallBackNewMessagesFunction(iNewMessages); } }; var objLogoutWithCallBackFunction = function() { EBHotmailAccountManager_CT2384137.GetLoginInformation(objCallBackFunction); }; //this.DeleteSessionCookies(); //EBWeb_CT2384137.NavigationWithCallBack(EBEmailAccountsConsts_CT2384137.Hotmail.MailLogoutURL,objLogoutWithCallBackFunction); }; this.InitAccount(strEMail, strPassword); }; var EBHotmailAccountManager_CT2384137 = { GetLoginInformation: function(objCallBackFunction) { var objServerResponseFunction = function(strDataInner, aRequestInner) { var strFormAction = ''; var strPPFTHiddenValue = ''; var arrMatches = strDataInner.match(/\<form\s+.*action=[\"|\']*([^\"|^\']+)[\"|\']*.*\>/i); if (arrMatches) { strFormAction = arrMatches[1]; } arrMatches = strDataInner.match(/\<input\s+.*name=[\"|\']*PPFT[\"|\']*\s+.*value=[\"|\']*([^\"|^\']+)[\"|\']*.*\>/i); if (arrMatches) { strPPFTHiddenValue = arrMatches[1]; } objCallBackFunction(strFormAction, strPPFTHiddenValue); }; EBServerDataURL_CT2384137.ServerRequest(EBEmailAccountsConsts_CT2384137.Hotmail.URL, null, null, null, objServerResponseFunction); } } var EBHotmailBetaAccountManager_CT2384137 = { CheckNewMessages: function(strLocationReplaceURL, objCallBackNewMessagesFunction) { var oServerResponseFunction = function(strData, oRequest) { var strMainFrameSrc = ''; //find the main frame src from the html frameset code: var arrMatches = strData.match(/frame\s+.*name=[\"|\']*main[\"|\']*\s+.*src=[\"|\']*([^\"|^\']+)[\"|\']*\s+/i); if (arrMatches) { strMainFrameSrc = arrMatches[1]; } else { var iNewMessages = 0; arrMatches = '' arrMatches = strData.match(/Inbox \(([^\"|^\']+)\)/); if (arrMatches) { iNewMessages = parseInt(arrMatches[1]); } objCallBackNewMessagesFunction(iNewMessages); return; } var strHotmailURLPath = strLocationReplaceURL.substring(0, strLocationReplaceURL.lastIndexOf('/') + 1); if (strMainFrameSrc) { var strFullApplicationMailURL = strHotmailURLPath + strMainFrameSrc; EBHotmailBetaAccountManager_CT2384137.ParseApplicationMailFrame(strHotmailURLPath, strFullApplicationMailURL, objCallBackNewMessagesFunction); } else { objCallBackNewMessagesFunction(EBEmailAccountsConsts_CT2384137.LOGIN_FAILED); } }; EBServerDataURL_CT2384137.ServerRequest(strLocationReplaceURL, null, null, null, oServerResponseFunction); }, ParseApplicationMailFrame: function(strHotmailURLPath, strApplicationMailURL, objCallBackNewMessagesFunction) { var arrMatches = null; var oServerResponseFunctionFirst = function(strData, oRequest) { var strSessionHash = ''; //looking for sessionidhash in the js code example: //"sessionidhash" : "yBUJQZ0rvmjNav9NBYv3iA%3d%3d",; arrMatches = strData.match(/[\"|\']*sessionidhash[\"|\']*\s*\:\s*[\"|\']([^\"|^\']+)[\"|\']/i); if (arrMatches) { strSessionHash = arrMatches[1]; } var strCheckInboxURL = ''; if (strSessionHash) { strCheckInboxURL = EBHotmailBetaAccountManager_CT2384137.GetFullCheckInboxURL(strHotmailURLPath, strSessionHash); } if (strCheckInboxURL) { var oServerResponseFunctionSecond = function(strData2, oRequest2) { var iNewMessages = 0; arrMatches = strData2.match(/[\"|\']i_inbox[\"|\']\D+(\d+)/i); if (arrMatches) { iNewMessages = parseInt(arrMatches[1]); } objCallBackNewMessagesFunction(iNewMessages); }; var uri = Components.classes["@mozilla.org/network/standard-url;1"].createInstance(Components.interfaces.nsIURI); var oCookieManager = Components.classes["@mozilla.org/cookieService;1"].getService(Components.interfaces.nsICookieService); var strMailToken = '' uri.spec = '.msn.com'; var strCookies = oCookieManager.getCookieString(uri, null); arrMyCookie = strCookies.match(/MailToken=([^\"|^\']+);/) if (arrMyCookie) { strMailToken = arrMyCookie[1]; } EBServerDataURL_CT2384137.ServerRequest(strCheckInboxURL, 'cn=Microsoft.Msn.Hotmail.MailBox&mn=Bootstrap&d={25,null,null,null,null,null,true,false,null}&v=1&mt=' + strMailToken, null, null, oServerResponseFunctionSecond); } else { objCallBackNewMessagesFunction(EBEmailAccountsConsts_CT2384137.LOGIN_FAILED); } }; EBServerDataURL_CT2384137.ServerRequest(strApplicationMailURL, null, null, null, oServerResponseFunctionFirst); }, GetFullCheckInboxURL: function(strHotmailURLPath, strSessionHash) { var strURL = strHotmailURLPath + 'mail.fpp?cnmn=Microsoft.Msn.Hotmail.MailBox.Bootstrap&ptid=0&a=' + strSessionHash; return strURL; } }; /********************* Pop3 Account ****************************/ function EBPop3Account_CT2384137(strUserName, strPassword, strServerURL, iPort) { this.MailAccount = null; this.Server = strServerURL; this.Port = iPort; //legalize port if (!this.Port) { this.Port = EBEmailAccountsConsts_CT2384137.Pop3.DefaultPort } //Constructor this.InitAccount = function(strEMail, strPassword) { //initialize the email account object this.MailAccount = new EBEMailAccount_CT2384137(this.Server, strUserName, strPassword); }; this.Login = function(event) { EBGlobalManager_CT2384137.OpenDefaultMailClient(); }; this.Logout = function(event) { }; this.GetNewMessagesCount = function(objCallBackNewMessagesFunction) { //set the check from the most recent browser cause it can come from //the test dialog(to prevent bug when the user closes the test dialog //before the process eneded!) var objWindow = EBGlobalManager_CT2384137.GetMostRecentBrowserWindow(); if (objWindow) { objWindow.EBPop3AccountManager_CT2384137.Start(this.MailAccount.MailURL, this.MailAccount.EMail, this.MailAccount.Password, this.Port, objCallBackNewMessagesFunction); } }; this.InitAccount(strUserName, strPassword); }; var EBPop3AccountManager_CT2384137 = { UserName: null, Password: null, InputStream: null, OutputStream: null, CallBack: null, //the callback function(gets new message param) //to execute when the process done EndOfLine: null, NewMessages: null, Start: function(strServerURL, strUserName, strPassword, iPort, objCallBackFunction) { this.UserName = strUserName; this.Password = strPassword; this.CallBack = objCallBackFunction; //the EndOfLine char according to operation system this.EndOfLine = EBGlobalManager_CT2384137.GetEndOfLine(); var objTransportSocket = Components.classes["@mozilla.org/network/socket-transport-service;1"] .getService(Components.interfaces.nsISocketTransportService); var objTransport = objTransportSocket.createTransport(null, 0, strServerURL, iPort, null); //initialize output stream: this.OutputStream = objTransport.openOutputStream(0, 0, 0); var objStream = objTransport.openInputStream(0, 0, 0); //initialize input stream: this.InputStream = Components.classes["@mozilla.org/scriptableinputstream;1"] .createInstance(Components.interfaces.nsIScriptableInputStream); this.InputStream.init(objStream); var objPump = Components.classes["@mozilla.org/network/input-stream-pump;1"] .createInstance(Components.interfaces.nsIInputStreamPump); objPump.init(objStream, -1, -1, 0, 0, false); objPump.asyncRead(this.Listener, null); }, Finish: function() { this.InputStream.close(); this.OutputStream.close(); this.CallBack(this.NewMessages); }, Listener: { onStartRequest: function(request, context) { EBPop3AccountManager_CT2384137.NewMessages = EBEmailAccountsConsts_CT2384137.LOGIN_FAILED; EBPop3AccountManager_CT2384137.Pop3Commands.State = EBEmailAccountsConsts_CT2384137.Pop3.StateStart; }, onStopRequest: function(request, context, status) { EBPop3AccountManager_CT2384137.Finish(); }, onDataAvailable: function(request, context, inputStream, offset, count) { var strData = EBPop3AccountManager_CT2384137.InputStream.read(count); EBPop3AccountManager_CT2384137.Pop3Commands.Execute(strData); } }, Pop3Commands: { State: null, CMD: '', Execute: function(strData) { //check the data if (EBGlobalManager_CT2384137.BeginsWith(strData, EBEmailAccountsConsts_CT2384137.Pop3.CommandOKPrefix)) { if (this.State == EBEmailAccountsConsts_CT2384137.Pop3.StateStatus) { this.ParseStatus(strData); } this.State++; switch (this.State) { case EBEmailAccountsConsts_CT2384137.Pop3.StateUserName: this.UserName(); break; case EBEmailAccountsConsts_CT2384137.Pop3.StatePassword: this.Password(); break; case EBEmailAccountsConsts_CT2384137.Pop3.StateStatus: this.Status(); break; case EBEmailAccountsConsts_CT2384137.Pop3.StateQuit: this.Quit(); break; } } else if (EBGlobalManager_CT2384137.BeginsWith(strData, EBEmailAccountsConsts_CT2384137.Pop3.CommandERRPrefix)) { this.Quit(); } }, UserName: function() { this.CMD = 'USER ' + EBPop3AccountManager_CT2384137.UserName + EBPop3AccountManager_CT2384137.EndOfLine; this.RequestData(); }, Password: function() { this.CMD = 'PASS ' + EBPop3AccountManager_CT2384137.Password + EBPop3AccountManager_CT2384137.EndOfLine; this.RequestData(); }, Status: function() { this.CMD = 'STAT' + EBPop3AccountManager_CT2384137.EndOfLine; this.RequestData(); }, Quit: function() { this.CMD = 'QUIT' + EBPop3AccountManager_CT2384137.EndOfLine; this.RequestData(); }, RequestData: function() { EBPop3AccountManager_CT2384137.OutputStream.write(this.CMD, this.CMD.length); }, ParseStatus: function(strData) { //parse the status string from the server to see how much messages there is: var arrMessages = strData.split(' '); var iNewMessages = 0; if (arrMessages[1]) iNewMessages = arrMessages[1]; EBPop3AccountManager_CT2384137.NewMessages = iNewMessages; } } }; function EBRRAccount_CT2384137(strEmail, strPassword) { var _pop3Account = null; this.MailAccount = null; //Constructor this.InitAccount = function(strEMail, strPassword) { //initialize the email account object this.MailAccount = new EBEMailAccount_CT2384137(EBEmailAccountsConsts_CT2384137.RR.MailURL, strEMail, strPassword); } this.Login = function(event) { //get the post data of the account var strPostData = this._GetPostData(); var strMailURL = this.MailAccount.MailURL; var oEvent = event; var bIsInNewTab = oEvent.button == 1; var objCallBackFunction = function() { EBLinkManager_CT2384137.LoadLinkURL(oEvent, strMailURL, bIsInNewTab, strPostData); }; //logout before navigating to the account this.DeleteSessionCookies(); EBWeb_CT2384137.NavigationWithCallBack(EBEmailAccountsConsts_CT2384137.RR.MailLogoutURL, objCallBackFunction); }; this.Logout = function(event) { var strLogoutURL = EBEmailAccountsConsts_CT2384137.RR.MailLogoutURL; var strLoginURL = EBEmailAccountsConsts_CT2384137.RR.MailURL; EBLinkManager_CT2384137.LoadLinkURL(event, strLogoutURL, false, null); EBLinkManager_CT2384137.LoadLinkURL(event, strLoginURL, false, null); }; this.DeleteSessionCookies = function() { var oCookieManager = Components.classes["@mozilla.org/cookieService;1"]. getService(Components.interfaces.nsICookieManager); //TODO if needed }; this.GetNewMessagesCount = function(objCallBackFunction) { if (!_pop3Account) { var strUrl = EBEmailAccountsConsts_CT2384137.RR.POP3ServerUrlPattern; var strLocal = this._getLocalFromEmail(strEmail); strUrl = stringFormat(strUrl, strLocal); _pop3Account = new EBPop3Account_CT2384137(strEmail, strPassword, strUrl, 110); } _pop3Account.GetNewMessagesCount(objCallBackFunction); }; this._GetPostData = function() { var strPostData = "account=" + strEmail + "&password=" + this.MailAccount.Password + "&client=html&variant=standard&domain=webmail.roadrunner.com&login=1&locale=en-US"; return strPostData; }; this._getLocalFromEmail = function(strEmail) { var arr = strEmail.match(/@(.*?)\./); if (arr && arr.length >= 2) return arr[1]; else return ""; }; this.InitAccount(strEmail, strPassword); }; function EBUnivisionAccount_CT2384137(strEmail, strPassword) { this.MailAccount = null; //Constructor this.InitAccount = function(strEMail, strPassword) { //initialize the email account object this.MailAccount = new EBEMailAccount_CT2384137(EBEmailAccountsConsts_CT2384137.Univision.MailURL, strEMail, strPassword); } this._login = function(event, objExtractNewMessages) { var strMailURL = this.MailAccount.MailURL; var that = this; var objCallBackFunction = function() { var objLogin = function(strHtml) { var strPostData = that._GetPostData.call(that, strHtml); if (objExtractNewMessages) EBServerDataURL_CT2384137.ServerRequest(strMailURL, strPostData, null, null, objExtractNewMessages); else { var bIsInNewTab = event.button == 1; EBLinkManager_CT2384137.LoadLinkURL(event, strMailURL, bIsInNewTab, strPostData); } }; EBServerDataURL_CT2384137.ServerRequest(EBEmailAccountsConsts_CT2384137.Univision.MailURL, null, null, null, objLogin); }; //logout before navigating to the account this.DeleteSessionCookies(); EBWeb_CT2384137.NavigationWithCallBack(EBEmailAccountsConsts_CT2384137.Univision.MailLogoutURL, objCallBackFunction); }; this.Login = function(event) { var oNewTab = getBrowser().addTab("chrome://iobitcom/content/wait.xul"); getBrowser().selectedTab = oNewTab; var strMailURL = EBEmailAccountsConsts_CT2384137.Univision.URL; var bIsInNewTab = event.button == 1; var goToAccount = function() { oNewTab.linkedBrowser.contentDocument.location.href = strMailURL; }; this.GetNewMessagesCount(goToAccount); }; this.Logout = function(event) { var strLogoutURL = EBEmailAccountsConsts_CT2384137.Univision.MailLogoutURL; var strLoginURL = EBEmailAccountsConsts_CT2384137.Univision.URL; var objCallBackFunction = function() { EBLinkManager_CT2384137.LoadLinkURL(event, strLogoutURL, false, null); }; EBWeb_CT2384137.NavigationWithCallBack(strLogoutURL, objCallBackFunction); }; this.DeleteSessionCookies = function() { var oCookieManager = Components.classes["@mozilla.org/cookieService;1"]. getService(Components.interfaces.nsICookieManager); //TODO if needed }; this.IsLoggedIn = function(objCallBackFunction) { //check if there an open window on yahoo mail and check to retrive the //new messages from this window using it html document var objWindowsManager = Components.classes['@mozilla.org/appshell/window-mediator;1'] .getService(Components.interfaces.nsIWindowMediator); var objEnumerator = objWindowsManager.getEnumerator('navigator:browser'); while (objEnumerator.hasMoreElements()) { var objWindow = objEnumerator.getNext(); var objTabBrowser = objWindow.document.getElementById('content'); var objTab = null; for (var i = 0; i < objTabBrowser.browsers.length; i++) { objTab = objTabBrowser.browsers[i]; var objTabDocument = objTab.contentWindow.document; var strLocationURL = objTabDocument.location.href; if (strLocationURL.toLowerCase().indexOf(EBEmailAccountsConsts_CT2384137.Univision.CheckLoginInURL) != -1) { iNewMessages = EBEmailAccountsConsts_CT2384137.LOGIN_ANOTHER_ACCOUNT; objCallBackFunction(iNewMessages); return true; } } } return false; }; this.GetNewMessagesCount = function(objCallBackFunction, bIsFromCheck) { var strMailURL = this.MailAccount.MailURL; var strEMail = this.MailAccount.EMail; var iNewMessages = null; if (this.IsLoggedIn(objCallBackFunction)) return; var objCheckFunction = function(objDoc) { var body = objDoc.body if (body) { var xpathResult = null; xpathResult = body.ownerDocument.evaluate("//table/tbody/tr/td/a[@href[starts-with(.,'/scripts/mail/mailbox.mail')]]/b", body, null, 2, null); if(xpathResult && xpathResult.stringValue) return parseInt(xpathResult.stringValue); } return null; }; var strLogoutUrl = EBEmailAccountsConsts_CT2384137.Univision.MailLogoutURL; var strLoginUrl = EBEmailAccountsConsts_CT2384137.Univision.MailURL; var strUserName = this.MailAccount.UserName; var strPass = this.MailAccount.Password; var strUserNameFieldID = "emailField"; var strPassFieldID = "passField"; var strSubmitID = "loginButton"; var strFormName = "MainForm"; var strFrameName = null; if (bIsFromCheck) { var strBrowserID = EBComponentsConsts_CT2384137.EMailNotifierNewID; EBEmailNotifierManager_CT2384137.xulBrowser = EBXULFactory_CT2384137.CreateBrowser(strBrowserID, '', 0, 0); document.getElementById('mainBox').appendChild(EBEmailNotifierManager_CT2384137.xulBrowser); } var loginToUnivision = function() { EBEmailNotifierManager_CT2384137.CheckForEmails( objCallBackFunction, objCheckFunction, strLogoutUrl, strLoginUrl, strUserName, strPass, strUserNameFieldID, strPassFieldID, strSubmitID, strFrameName, strFormName); }; this._login(null, loginToUnivision); }; this._GetPostData = function() { var strPostData = "email=" + strEmail; strPostData += "&password=" + strPassword; strPostData += "&loginErrorURL=/membershipservices/login.jhtml?partnerSystem=103818"; strPostData += "&loginSuccessURL=/membershipservices/login.jhtml?partnerSystem=103818"; strPostData += "&partnerSystem=103818"; return strPostData; }; this.InitAccount(strEmail, strPassword); }; /********************* Yahoo Account ****************************/ function EBYahooAccount_CT2384137(strEMail, strPassword) { this.MailAccount = null; //Constructor this.InitAccount = function(strEMail, strPassword) { //initialize the email account object this.MailAccount = new EBEMailAccount_CT2384137(EBEmailAccountsConsts_CT2384137.Yahoo.MailURL, strEMail, strPassword); } this.Login = function(event) { //in yahoo you have to logout first before login //so i login after i log out using NavigationWithCallBack function //get the post data of the account var strPostData = this._GetYahooPostData(); var strMailURL = this.MailAccount.MailURL; var oEvent = event; var bIsInNewTab = oEvent.button == 1; var objCallBackFunction = function() { EBLinkManager_CT2384137.LoadLinkURL(oEvent, strMailURL, bIsInNewTab, strPostData); }; //logout before navigating to the account this.DeleteSessionCookies(); EBWeb_CT2384137.NavigationWithCallBack(EBEmailAccountsConsts_CT2384137.Yahoo.MailLogoutURL, objCallBackFunction); }; this.Logout = function(event) { var strLogoutURL = EBEmailAccountsConsts_CT2384137.Yahoo.MailLogoutURL; var strLoginURL = EBEmailAccountsConsts_CT2384137.Yahoo.MailURL; EBLinkManager_CT2384137.LoadLinkURL(event, strLogoutURL, false, null); EBLinkManager_CT2384137.LoadLinkURL(event, strLoginURL, false, null); }; this.DeleteSessionCookies = function() { var oCookieManager = Components.classes["@mozilla.org/cookieService;1"]. getService(Components.interfaces.nsICookieManager); oCookieManager.remove('.yahoo.com', 'YGCV', '/', false); oCookieManager.remove('.mail.yahoo.com', 'YM.Gen', '/', false); }; this.GetNewMessagesCount = function(objCallBackFunction) { var strPostData = this._GetYahooPostData(); var strMailURL = this.MailAccount.MailURL; var strEMail = this.MailAccount.EMail; var iNewMessages = null; //check if there an open window on yahoo mail and check to retrive the //new messages from this window using it html document var objWindowsManager = Components.classes['@mozilla.org/appshell/window-mediator;1'] .getService(Components.interfaces.nsIWindowMediator); var objEnumerator = objWindowsManager.getEnumerator('navigator:browser'); while (objEnumerator.hasMoreElements()) { var objWindow = objEnumerator.getNext(); var objTabBrowser = objWindow.document.getElementById('content'); var objTab = null; for (var i = 0; i < objTabBrowser.browsers.length; i++) { objTab = objTabBrowser.browsers[i]; var objTabDocument = objTab.contentWindow.document; var strLocationURL = objTabDocument.location.href; if (strLocationURL.toLowerCase().indexOf(EBEmailAccountsConsts_CT2384137.Yahoo.CheckLoginInURL) != -1) { iNewMessages = EBEmailAccountsConsts_CT2384137.LOGIN_ANOTHER_ACCOUNT; objCallBackFunction(iNewMessages); return; } } } //if there isn't any page open in this account - i check it in the regular way //perform logut and then login to the account var objServerResponseFunction = function(strData, objRequest) { iNewMessages = EBEmailAccountsConsts_CT2384137.LOGIN_FAILED; //check classic first, if failed, check beta //find the new messages using regular expression on the page var arrResults = strData.match(/\<a\s+.*\>\s*Inbox\s*\D*\(\s*(\d+)\s*\)\s*\D*\<\/a\>/i); if (arrResults && arrResults.length > 1) { var strInbox = arrResults[1]; var iInbox = parseInt(strInbox); if (!isNaN(iInbox)) iNewMessages = iInbox; objCallBackFunction(iNewMessages); } else EBYahooBetaAccountManager_CT2384137.CheckFromWebService(strData, objCallBackFunction); }; var objLogoutWithCallBackFunction = function() { EBServerDataURL_CT2384137.ServerRequest(strMailURL, strPostData, null, null, objServerResponseFunction); }; this.DeleteSessionCookies(); EBWeb_CT2384137.NavigationWithCallBack(EBEmailAccountsConsts_CT2384137.Yahoo.MailLogoutURL, objLogoutWithCallBackFunction); }; this._GetYahooPostData = function() { var strPostData = '.tries=1&.intl=us&.v=0&hasMsgr=0&.chkP=Y&.done=http://mail.yahoo.com&.persistent=Y&login=' + this.MailAccount.UserName + '&passwd=' + this.MailAccount.Password; return strPostData; }; this.InitAccount(strEMail, strPassword); }; var EBYahooBetaAccountManager_CT2384137 = { CheckFromWebService: function(strSource, objCallBackFunction) { var iNewMessages = EBEmailAccountsConsts_CT2384137.LOGIN_FAILED; var xmlSoap = this.GetSoapXML(strSource); var xmlNode = null; for (var i = 0; i < xmlSoap.childNodes.length; i++) { xmlNode = xmlSoap.childNodes[i]; if (EBXML_CT2384137.GetStringXml(xmlNode).toLowerCase().indexOf(name = "inbox") != -1) { break; } } var strInbox = xmlNode.getAttribute("unread"); if (strInbox) { var iInbox = parseInt(strInbox); if (!isNaN(iInbox)) iNewMessages = iInbox; } objCallBackFunction(iNewMessages); }, GetSoapXML: function(strSource) { var iStart = strSource.indexOf("<ListFoldersResponse>"); var iEnd = strSource.indexOf("</ListFoldersResponse>"); var strXml = strSource.substring(iStart, iEnd + 22); var xmlDoc = EBXML_CT2384137.GetXmlDocument(strXml); return xmlDoc.documentElement; } }; //consts Class: var EBEmailAccountsConsts_CT2384137 = { LOGIN_FAILED: -1, LOGIN_ANOTHER_ACCOUNT: -2, CheckURL: 'http://www.conduit.com', DomainCaptionDelimiter: '/', GMail: { MailURL: 'https://www.google.com/accounts/ServiceLoginAuth', MailURLnoAuth: 'https://www.google.com/accounts/ServiceLogin', MailLogoutURL: 'https://mail.google.com/mail/?logout&hl=en', EMailDomain: ['@gmail.com', '@googlemail.com'], EMailDomainCaption: ['.com'], FeedURL: 'https://gmail.google.com/gmail/feed/atom', AccountName: 'Gmail' }, Yahoo: { MailURL: 'http://login.yahoo.com/config/login', MailLogoutURL: 'http://login.yahoo.com/config/login?logout=1', EMailDomain: ['@yahoo.com', '@yahoo.co.uk', '@yahoo.com.au', '@yahoo.ca'], EMailDomainCaption: ['.com', '.co.uk', '.com.au', '.ca'], AccountName: 'Yahoo', CheckLoginInURL: '.mail.yahoo.' }, Hotmail: { MailURL: 'http://www.hotmail.com/', MailLogoutURL: 'http://login.live.com/logout.srf', EMailDomain: ['@hotmail.com', '@hotmail.co.uk', '@msn.com', '@msn.co.uk'], EMailDomainCaption: ['.com', '.co.uk'], AccountName: 'Hotmail', URL: 'http://login.live.com/login.srf?id=2', CheckLoginInURL: ['.hotmail.msn.', '.mail.live.'] }, Pop3: { AccountName: 'POP3', StateStart: 0, StateUserName: 1, StatePassword: 2, StateStatus: 3, StateQuit: 4, DefaultPort: 110, CommandOKPrefix: '+OK', CommandERRPrefix: '-ERR' }, RR: { MailURL: 'https://webmail.roadrunner.com', MailLogoutURL: 'http://webmail.roadrunner.com/do/logout?l=en-US&v=standard', EMailDomain: ['@rr.com'], EMailDomainCaption: ['.com'], AccountName: 'RR', URL: 'https://webmail.roadrunner.com', CheckLoginInURL: ['webmail.roadrunner.'], POP3ServerUrlPattern: 'pop-server.{0}.rr.com' }, AOL: { MailURL: 'http://mail.aol.com', MailLogoutURL: 'http://my.screenname.aol.com/_cqr/logout/mcLogout.psp', EMailDomain: ['@aol.com'], EMailDomainCaption: ['aol.com'], AccountName: 'AOL', URL: 'https://my.screenname.aol.com/_cqr/login/login.psp', CheckLoginInURL: ['webmail.aol.'] }, Univision: { MailURL: 'http://www.univision.com/content/channel.jhtml?schid=15', MailLogoutURL: 'http://micorreo.univision.com/scripts/mail/Outblaze.mail?logout=1&.noframe=1&a=1&', EMailDomain: ['@univision.com'], EMailDomainCaption: ['univision.com'], AccountName: 'Univision', URL: 'https://www.univision.com/membershipservices/CRMLoginAPI.jhtml', CheckLoginInURL: ['micorreo.univision.com'] } }; var EBEmailAccountsTypes_CT2384137 = { GMail: 1, Yahoo: 2, Hotmail: 3, Pop3: 4, RR: 5, AOL: 6, Univision: 7 }; //the base class of the email notifier hierarchy function EBEMailAccount_CT2384137(strMailURL, strEMail, strPassword) { this.EMail = strEMail; this.Password = strPassword; this.MailURL = strMailURL; this.UserName = ''; this.Init = function() { this.UserName = EBEMailNotifierManager_CT2384137.GetUserNameByEMail(this.EMail); } this.Init(); }; var EmailWebListener_CT2384137 = { QueryInterface: function(aIID) { if (aIID.equals(Components.interfaces.nsIWebProgressListener) || aIID.equals(Components.interfaces.nsISupportsWeakReference) || aIID.equals(Components.interfaces.nsISupports)) return this; throw Components.results.NS_NOINTERFACE; }, onStateChange: function(aProgress, aRequest, aFlag, aStatus) { //get the url var strUrl = aRequest.name; if (aFlag & Components.interfaces.nsIWebProgressListener.STATE_STOP) EBEmailNotifierManager_CT2384137.DocumentComplete(aProgress, aFlag & Components.interfaces.nsIWebProgressListener.STATE_IS_DOCUMENT); return 0; }, onLocationChange: function(aProgress, aRequest, aURI) { // This fires when the location bar changes i.e load event is confirmed // or when the user switches tabs return 0; }, // For definitions of the remaining functions see XulPlanet.com onProgressChange: function() { return 0; }, onStatusChange: function() { return 0; }, onSecurityChange: function() { return 0; }, onLinkIconAvailable: function() { return 0; } }; var EBEMailNotifierDialogsConsts_CT2384137 = { WindowTypeAttributeName : 'EBEMailNotifierDialogs_CT2384137', XULDialogsDirectoryName : 'EMailNotifierDialogs', SettingsDialog : { FileName : 'enSettings.xul', Name : 'EBEmailNotifierXULSettingsDialogName_CT2384137', SupportSubjectCaption : 'E-mail Notifier Feedback [Firefox]', TreeCellPasswordAttribute : 'TreeCellPasswordAttribute', TreeCellTypeAttribute : 'TreeCellTypeAttribute', TreeCellAutoLoginAttribute : 'TreeCellAutoLoginAttribute', TreeCellServerAttribute : 'TreeCellServerAttribute' }, AddEditDialog : { FileName : 'enAddEdit.xul', Name : 'EBEmailNotifierXULAddEditDialogName_CT2384137', ModeAdd : 'ADD', ModeEdit : 'EDIT' }, ConfirmDialog : { FileName : 'enConfirm.xul', Name : 'EBEmailNotifierXULConfirmDialogName_CT2384137', MismatchErrorTitle : 'Check e-mail password', MismatchErrorContent : 'Incorrect password!\nPlease enter the password that you have defined in this account' }, TestAccountDialog : { FileName : 'enTestAccount.xul', ID : 'EBEmailNotifierXULTestAccountDialogID', Name : 'EBEmailNotifierXULTestAccountDialogName_CT2384137', AccountNameAlias : '{{ACCOUNT_NAME}}' } } //the default values of the dialogs captions //if there is xml it will change for the languages support! var EBEMailNotifierDialogsCaption_CT2384137 = { SettingsDialog : { Yes : 'Yes', No : 'No' }, AddEditDialog : { EmailAddress : 'E-mail Address:', Pop3EMailAddress : 'User Name:', AutoLogin : 'Auto Login (will not ask for password when logging into my account)', Pop3AutoLogin : 'Open Default Mail Client', ErrorTitleAlertMsg : 'Invalid E-mail address', ErrorMsgIncorrectEMailAddress : 'The E-mail address you have entered appears to be incorrect', ErrorMsgEmailAlreadyExist : 'You have already defined an account with that E-mail address', ErrorMsgPOP3AlreadyExist : 'You have already defined that account', ErrorMsgEmailAddressNotSupported : 'The E-mail address is not supported. We currently support Hotmail (.com/.co.uk), Gmail, and Yahoo(.com/.co.uk/.com.au/.ca).', ErrorMsgEmailTypeIncorrect : 'The E-mail address and the account type do not match.' }, TestAccountDialog : { TasksSuccessFinishMsg : 'Mail account tested successfully', TasksFailureFinishMsg : 'Failed testing mail account', TasksSuccess : 'Completed', TasksFailure : 'Failed', TaskSuccessDone : 'Done', ButtonOK : 'OK', TestWarningMsg1 : 'Please logout of all your ' + EBEMailNotifierDialogsConsts_CT2384137.TestAccountDialog.AccountNameAlias + ' accounts before testing your account settings.' } } var EBEMailNotifierDialogsManager_CT2384137 = { GetDialogWindow : function(strWindowName) { var strWindowType = EBEMailNotifierDialogsConsts_CT2384137.WindowTypeAttributeName; return EBGlobalManager_CT2384137.GetXULWindowByTypeAndName(strWindowType,strWindowName); }, OpenSettingsDialog : function(objParentWindow, isFromToolbarOptions, strCompType) { //check if one of the email notifier windows is open to make the focus on it var objSettingsWindow = this.GetDialogWindow(EBEMailNotifierDialogsConsts_CT2384137.SettingsDialog.Name); var objAddEditWindow = this.GetDialogWindow(EBEMailNotifierDialogsConsts_CT2384137.AddEditDialog.Name); var objTestAccountWindow = this.GetDialogWindow(EBEMailNotifierDialogsConsts_CT2384137.TestAccountDialog.Name); var objConfirmWindow = this.GetDialogWindow(EBEMailNotifierDialogsConsts_CT2384137.ConfirmDialog.Name); //check if the dialogs already open in a different browser to set //focus on them - the order is important! of course (from the last dialog shown to the first) if(objTestAccountWindow) objTestAccountWindow.focus(); else if(objConfirmWindow) objConfirmWindow.focus(); else if(objAddEditWindow) objAddEditWindow.focus(); else if(objSettingsWindow) objSettingsWindow.focus(); else { var strXULSettingsDialogChromePath = EBGlobalConsts_CT2384137.ChromeContentPath + EBEMailNotifierDialogsConsts_CT2384137.SettingsDialog.FileName; //adding the EBEMailNotifierDialogsXULEvents as a window argument //and retrieving it from the code inside the xul window using window.arguments[iIndex] objParentWindow.openDialog(strXULSettingsDialogChromePath, EBEMailNotifierDialogsConsts_CT2384137.SettingsDialog.Name, 'modal,centerscreen,chrome,resizable=no', isFromToolbarOptions, strCompType); } }, OpenAddEditDialog : function(oSettingsWindow,strMode,objAccountData) { if(oSettingsWindow) { var strXULAddEditDialogChromePath = EBGlobalConsts_CT2384137.ChromeContentPath + EBEMailNotifierDialogsConsts_CT2384137.AddEditDialog.FileName; oSettingsWindow.openDialog(strXULAddEditDialogChromePath, EBEMailNotifierDialogsConsts_CT2384137.AddEditDialog.Name, 'modal,centerscreen,chrome,resizable=no', strMode, objAccountData); } }, OpenConfirmDialog : function(oAddEditWindow,oAccountData) { if(oAddEditWindow) { var strXULConfirmDialogChromePath = EBGlobalConsts_CT2384137.ChromeContentPath + EBEMailNotifierDialogsConsts_CT2384137.ConfirmDialog.FileName; oAddEditWindow.openDialog(strXULConfirmDialogChromePath, EBEMailNotifierDialogsConsts_CT2384137.ConfirmDialog.Name, 'modal,centerscreen,chrome,resizable=no', oAccountData, oAddEditWindow.document); } }, OpenTestAccountDialog : function(oAddEditWindow) { if(oAddEditWindow) { var strXULTestAccountDialogChromePath = EBGlobalConsts_CT2384137.ChromeContentPath + EBEMailNotifierDialogsConsts_CT2384137.TestAccountDialog.FileName; oAddEditWindow.openDialog(strXULTestAccountDialogChromePath, EBEMailNotifierDialogsConsts_CT2384137.TestAccountDialog.Name, 'modal,centerscreen,chrome,resizable=no', oAddEditWindow.document); } } }; var EBEMailNotifierDialogsXULEvents_CT2384137 = { OnLoadSettingsDialog: function(event) { var objWindow = EBGlobalManager_CT2384137.GetMostRecentBrowserWindow(); var dialogsDirection = objWindow.EBGlobalManager_CT2384137.IsReverseDialogs(); if (dialogsDirection) EBUILogic_Dialog_CT2384137.setWindowDirection(dialogsDirection, "EBEmailNotifierXULSettingsDialogID"); EmailNotifierLanguagePack_CT2384137.SettingsDialog(); //set the global accounts object window.m_oDialogsMailAccountsCollection = new EBArrayCollection_CT2384137(); //loads the accounts from the file and set the xul tree according it //take them from the browser window(this window is the window of the xul dialog so the //EBEMailNotifierToolbarManager_CT2384137.MailAccountsCollection is not define in this scope!! var oBrowserWindow = EBGlobalManager_CT2384137.GetMostRecentBrowserWindow(); var objMailAccountsCollection = oBrowserWindow.EBEMailNotifierToolbarManager_CT2384137.MailAccountsCollection; if (objMailAccountsCollection) { var arrAccounts = objMailAccountsCollection.Arr; var objAccountData = null; for (var i = 0; i < arrAccounts.length; i++) { objAccountData = arrAccounts[i]; this.AddMailAccountTreeItem(objAccountData, false); } } //check if it's open from toolbar options to disable the toolbar option button: var isFromToolbarOptions = null; try { isFromToolbarOptions = window.arguments[0]; } catch (ex) { isFromToolbarOptions = false; } if (isFromToolbarOptions) document.getElementById('btnToolbarOptions').disabled = true; //set the check event to the sound checkbox var objCheckBoxPlaySound = document.getElementById('checkPlaySound'); //add event to the checkbox objCheckBoxPlaySound.addEventListener("CheckboxStateChange", EBEMailNotifierDialogsXULEvents_CT2384137.OnCheckBoxSettingsPlaySoundChange, false); //set the check interval according to the save value from pref this.SetCheckIntervalSelection(); //set the sound xul elements according to the saved sound (in the prefs) this.SetSoundSelection(); }, OnCheckBoxSettingsPlaySoundChange: function(event) { var objCheckBoxPlaySound = document.getElementById('checkPlaySound'); var objRadioGroupSound = document.getElementById('radioGroupSound'); var bCheck = objCheckBoxPlaySound.checked; var objButtonSoundChooseFile = document.getElementById('btnSoundChooseFile'); var objButtonSoundPlay = document.getElementById('btnSoundPlay'); var objTextBoxSoundFilePath = document.getElementById('txtSoundFilePath'); objRadioGroupSound.disabled = !bCheck; objButtonSoundChooseFile.disabled = !bCheck; objButtonSoundPlay.disabled = !bCheck; objTextBoxSoundFilePath.disabled = !bCheck; }, OnCommandSettingsChooseSoundFile: function(event) { var objRadioGroupSound = document.getElementById('radioGroupSound'); var objRadioSoundChoose = document.getElementById('radSoundChoose'); var objTextBoxSoundFilePath = document.getElementById('txtSoundFilePath'); var nsIFilePicker = Components.interfaces.nsIFilePicker; var objFilePicker = Components.classes["@mozilla.org/filepicker;1"].createInstance(nsIFilePicker); objFilePicker.init(window, "Select a File", nsIFilePicker.modeOpen); objFilePicker.appendFilter("Wav Files (*.wav)", "*.wav"); //set the display dir path to what he chose //and if he doesn't so to the windows xp media path as the default path: var strDisplayDir = objTextBoxSoundFilePath.value; if (!strDisplayDir) { strDisplayDir = EBWindows_CT2384137.GetWindowsMediaPath(); } var objDisplayDir = EBDirIO_CT2384137.open(strDisplayDir); if (objDisplayDir) { objFilePicker.displayDirectory = objDisplayDir; } var iResult = objFilePicker.show(); if (iResult == nsIFilePicker.returnOK) { objRadioGroupSound.selectedItem = objRadioSoundChoose; var strPath = objFilePicker.file.path; objTextBoxSoundFilePath.value = strPath; } }, OnCommandSettingsPlaySoundFile: function(event) { var objRadioGroupSound = document.getElementById('radioGroupSound'); var objRadioSoundChoose = document.getElementById('radSoundChoose'); var objRadioSoundDefault = document.getElementById('radSoundUseDefault'); var strFilePath = ''; if (objRadioGroupSound.selectedItem == objRadioSoundChoose) { strFilePath = document.getElementById('txtSoundFilePath').value; } else if (objRadioGroupSound.selectedItem == objRadioSoundDefault) { strFilePath = EBEMailNotifierConsts_CT2384137.Sound.DefaultWavChromePath; } if (strFilePath) { EBGlobalManager_CT2384137.PlaySound(strFilePath); } }, OnUnLoadSettingsDialog: function(event) { window.m_oDialogsMailAccountsCollection = null; //usage var objWindow = EBGlobalManager_CT2384137.GetMostRecentBrowserWindow(); objWindow.EBUsageEmailNotifier_CT2384137.OnMenuClose(window.arguments[0]); }, OnCommandSettingsOKButton: function() { try { this.SaveCheckIntervalSelection(); this.SaveSoundSelection(); var oBrowserWindow = EBGlobalManager_CT2384137.GetMostRecentBrowserWindow(); oBrowserWindow.EBEMailNotifierToolbarManager_CT2384137.OnCommandSettingsOKButton(window.m_oDialogsMailAccountsCollection); } catch (ex) { } }, SetCheckIntervalSelection: function() { //get value from pref var iMinutesFromPref = EBEMailNotifierToolbarManager_CT2384137.GetCheckIntervalPref(); if (!iMinutesFromPref || !isFinite(iMinutesFromPref)) { // set default to 5 minutes iMinutesFromPref = 5; } var oComboInterval = document.getElementById('cmbCheckInterval'); var oPopupMenu = oComboInterval.firstChild; var oMenuItem = null; for (var i = 0; i < oPopupMenu.childNodes.length; i++) { oMenuItem = oPopupMenu.childNodes[i]; if (oMenuItem.getAttribute('label') == iMinutesFromPref) { oComboInterval.selectedItem = oMenuItem; break; } } }, SetSoundSelection: function() { var objCheckBoxPlaySound = document.getElementById('checkPlaySound'); var objRadioGroupSound = document.getElementById('radioGroupSound'); var objRadioSoundChoose = document.getElementById('radSoundChoose'); var objRadioSoundDefault = document.getElementById('radSoundUseDefault'); var objTextBoxSoundFilePath = document.getElementById('txtSoundFilePath'); var strSound = EBEMailNotifierToolbarManager_CT2384137.GetSoundPref(); if (strSound != EBEMailNotifierConsts_CT2384137.Sound.NONE) { objCheckBoxPlaySound.checked = true; if (!strSound || strSound == EBEMailNotifierConsts_CT2384137.Sound.DEFAULT) { objRadioGroupSound.selectedItem = objRadioSoundDefault; } else { objTextBoxSoundFilePath.value = strSound; objRadioGroupSound.selectedItem = objRadioSoundChoose; } } else { objCheckBoxPlaySound.checked = false; } }, SaveCheckIntervalSelection: function() { var oComboInterval = document.getElementById('cmbCheckInterval'); var oSelectedMenuItem = oComboInterval.selectedItem; var iMinutesValue = oSelectedMenuItem.getAttribute('label'); EBEMailNotifierToolbarManager_CT2384137.SaveCheckIntervalPref(iMinutesValue); }, //save the sound SaveSoundSelection: function() { var objCheckBoxPlaySound = document.getElementById('checkPlaySound'); var objRadioGroupSound = document.getElementById('radioGroupSound'); var objRadioSoundChoose = document.getElementById('radSoundChoose'); var objRadioSoundDefault = document.getElementById('radSoundUseDefault'); var objTextBoxSoundFilePath = document.getElementById('txtSoundFilePath'); var strSound = ''; if (objCheckBoxPlaySound.checked) { var strTxtFilePathValue = objTextBoxSoundFilePath.value; if (objRadioGroupSound.selectedItem == objRadioSoundDefault || !strTxtFilePathValue) { strSound = EBEMailNotifierConsts_CT2384137.Sound.DEFAULT; } else if (objRadioGroupSound.selectedItem == objRadioSoundChoose) { strSound = strTxtFilePathValue; } } else { strSound = EBEMailNotifierConsts_CT2384137.Sound.NONE; } EBEMailNotifierToolbarManager_CT2384137.SaveSoundPref(strSound); }, AccountDataObjectToTreeRow: function(objSettingsDocument, objAccountData) { var strAccountName = objAccountData.AccountName; var strEMailAddress = objAccountData.EMailAddress; var strPassword = objAccountData.Password; var iAccountType = objAccountData.AccountType; var isAutoLogin = objAccountData.AutoLogin; var strPop3Server = objAccountData.Pop3Server; var objTreeRow = objSettingsDocument.createElement('treerow'); var objTreeCellAccountName = objSettingsDocument.createElement('treecell'); objTreeCellAccountName.setAttribute('label', strAccountName); var objTreeCellEMailAddress = objSettingsDocument.createElement('treecell'); objTreeCellEMailAddress.setAttribute('label', strEMailAddress); //save the password in the email treecell as an attribute objTreeCellEMailAddress.setAttribute(EBEMailNotifierDialogsConsts_CT2384137.SettingsDialog.TreeCellPasswordAttribute, strPassword); //save the pop3 server url as an attribute objTreeCellEMailAddress.setAttribute(EBEMailNotifierDialogsConsts_CT2384137.SettingsDialog.TreeCellServerAttribute, strPop3Server); var strAccountType = EBEMailNotifierManager_CT2384137.GetAccountNameByType(iAccountType); var objTreeCellAccountType = objSettingsDocument.createElement('treecell'); objTreeCellAccountType.setAttribute('label', strAccountType); //save the actual type in an attribute for retrieving it. objTreeCellAccountType.setAttribute(EBEMailNotifierDialogsConsts_CT2384137.SettingsDialog.TreeCellTypeAttribute, iAccountType); var strAutoLogin = isAutoLogin ? EBEMailNotifierDialogsCaption_CT2384137.SettingsDialog.Yes : EBEMailNotifierDialogsCaption_CT2384137.SettingsDialog.No; var objTreeCellAutoLogin = objSettingsDocument.createElement('treecell'); objTreeCellAutoLogin.setAttribute('label', strAutoLogin); //save the actual auto login value in an attribute for retrieving it. objTreeCellAutoLogin.setAttribute(EBEMailNotifierDialogsConsts_CT2384137.SettingsDialog.TreeCellAutoLoginAttribute, isAutoLogin); //build the dom elements objTreeRow.appendChild(objTreeCellAccountName); objTreeRow.appendChild(objTreeCellEMailAddress); objTreeRow.appendChild(objTreeCellAccountType); objTreeRow.appendChild(objTreeCellAutoLogin); return objTreeRow; }, OnSelectSettingsMailAccountsTree: function(event) { this.SetSettingsEditDeleteButtonsDisabled(false); }, OnDoubleClickSettingsMailAccountsTree: function(event) { //this is how you illustrate double click on a tree row element: var objTreeMailAccounts = document.getElementById('treeMailAccounts'); var iIndex = objTreeMailAccounts.treeBoxObject.getRowAt(event.clientX, event.clientY); if (iIndex > -1) { var objAccountDataToEdit = window.m_oDialogsMailAccountsCollection.GetItem(iIndex); EBEMailNotifierDialogsManager_CT2384137.OpenAddEditDialog(window, EBEMailNotifierDialogsConsts_CT2384137.AddEditDialog.ModeEdit, objAccountDataToEdit); } }, SetSettingsEditDeleteButtonsDisabled: function(isDisabled) { var objEditButton = document.getElementById('btnEdit'); var objEditDelete = document.getElementById('btnDelete'); objEditButton.disabled = isDisabled; objEditDelete.disabled = isDisabled; }, OnCommandSettingsToolbarOptionsButton: function(event) { //get this with the most recent browser window cause this function //is not in the email notifier scope var oRecentBrowserWindow = EBGlobalManager_CT2384137.GetMostRecentBrowserWindow(); //Usage oRecentBrowserWindow.EBUsageEmailNotifier_CT2384137.OnClickToolbarOptions(); //Open dialog oRecentBrowserWindow.EBToolbarOptionsStaticDialogManager_CT2384137.OpenDialog(window, true); }, OnCommandSettingsAddButton: function(event) { EBEMailNotifierDialogsManager_CT2384137.OpenAddEditDialog(window, EBEMailNotifierDialogsConsts_CT2384137.AddEditDialog.ModeAdd, null); }, OnCommandSettingsEditButton: function(event) { var objTreeMailAccounts = document.getElementById('treeMailAccounts'); var iIndex = objTreeMailAccounts.currentIndex; var objAccountDataToEdit = window.m_oDialogsMailAccountsCollection.GetItem(iIndex); EBEMailNotifierDialogsManager_CT2384137.OpenAddEditDialog(window, EBEMailNotifierDialogsConsts_CT2384137.AddEditDialog.ModeEdit, objAccountDataToEdit); }, OnCommandSettingsDeleteButton: function(event) { var objTreeMailAccounts = document.getElementById('treeMailAccounts'); var objTreeItemToDelete = this.GetSelectedTreeItem(objTreeMailAccounts); if (objTreeItemToDelete) { var iDeleteItemIndex = objTreeMailAccounts.currentIndex; var objTreeChildrenParent = objTreeItemToDelete.parentNode; objTreeChildrenParent.removeChild(objTreeItemToDelete); //delete it from the data object: window.m_oDialogsMailAccountsCollection.RemoveElement(iDeleteItemIndex); var iIndexToSelect = -1; if (iDeleteItemIndex > 0)//check to select the previous element: { iIndexToSelect = iDeleteItemIndex - 1; } else if (objTreeChildrenParent.childNodes.length > 0)//check to select the next element { iIndexToSelect = iDeleteItemIndex; } if (iIndexToSelect != -1)//select the treeItem { var objPrevElementTreeItem = objTreeChildrenParent.childNodes[iIndexToSelect]; this.SelectTreeItem(objPrevElementTreeItem); } else //if there isn't any elements left i disable the add-edit buttons { this.SetSettingsEditDeleteButtonsDisabled(true); } } }, GetSelectedTreeItem: function(objTree) { var objTreeItem = null; var iIndex = objTree.currentIndex; if (iIndex != -1) { objTreeItem = objTree.contentView.getItemAtIndex(iIndex); } return objTreeItem; }, OnLoadAddEditDialog: function(event) { var objWindow = EBGlobalManager_CT2384137.GetMostRecentBrowserWindow(); var dialogsDirection = objWindow.EBGlobalManager_CT2384137.IsReverseDialogs(); if (dialogsDirection) EBUILogic_Dialog_CT2384137.setWindowDirection(dialogsDirection, "EBEmailNotifierXULAddEditDialogID"); EmailNotifierLanguagePack_CT2384137.AddEditDialog(); var objEMailTextBox = document.getElementById('txtEMail'); var objRadioGroupEMails = document.getElementById('radioGroupEMails'); var objRadioHotmail = document.getElementById('radHotmail'); var objRadioYahoo = document.getElementById('radYahoo'); var objRadioGmail = document.getElementById('radGMail'); var objRadioRR = document.getElementById('radRR'); var objRadioAOL = document.getElementById('radAOL'); var objRadioUnivision = document.getElementById('radUnivision'); var objRadioPop3 = document.getElementById('radPop3'); if (MODE == EBEMailNotifierDialogsConsts_CT2384137.AddEditDialog.ModeEdit) { var objPasswordTextBox = document.getElementById('txtPassword'); var objAccountNameTextBox = document.getElementById('txtAccountName'); var objTextBoxPop3MailServer = document.getElementById('txtPop3MailServer'); var objTextBoxPop3Port = document.getElementById('txtPop3Port'); var objAutoLoginCheckBox = document.getElementById('checkAutoLogin'); var objButtonTestAccount = document.getElementById('btnTestAccount'); var objButtonOK = document.getElementById('btnOK'); //set the values objEMailTextBox.value = m_oAccountData.EMailAddress; objPasswordTextBox.value = m_oAccountData.Password; objAccountNameTextBox.value = m_oAccountData.AccountName; //check account type if (m_oAccountData.AccountType == EBEmailAccountsTypes_CT2384137.GMail) objRadioGroupEMails.selectedItem = objRadioGmail; else if (m_oAccountData.AccountType == EBEmailAccountsTypes_CT2384137.Yahoo) objRadioGroupEMails.selectedItem = objRadioYahoo; else if (m_oAccountData.AccountType == EBEmailAccountsTypes_CT2384137.Hotmail) objRadioGroupEMails.selectedItem = objRadioHotmail; else if (m_oAccountData.AccountType == EBEmailAccountsTypes_CT2384137.RR) objRadioGroupEMails.selectedItem = objRadioRR; else if (m_oAccountData.AccountType == EBEmailAccountsTypes_CT2384137.AOL) objRadioGroupEMails.selectedItem = objRadioAOL; else if (m_oAccountData.AccountType == EBEmailAccountsTypes_CT2384137.Univision) objRadioGroupEMails.selectedItem = objRadioUnivision; else if (m_oAccountData.AccountType == EBEmailAccountsTypes_CT2384137.Pop3) { objRadioGroupEMails.selectedItem = objRadioPop3; objTextBoxPop3MailServer.value = m_oAccountData.Pop3Server; var iPort = EBEmailAccountsConsts_CT2384137.Pop3.DefaultPort; var iPortFromObject = m_oAccountData.Pop3Port; if (iPortFromObject) { iPort = iPortFromObject; } objTextBoxPop3Port.value = iPort; } objAutoLoginCheckBox.checked = m_oAccountData.AutoLogin; objEMailTextBox.select(); objButtonTestAccount.disabled = false; objButtonOK.disabled = false; //if it's edit mode we are set the checkbox an oncheckcahnged event //for the confirm dialog var oCheckBoxAutoLogin = document.getElementById('checkAutoLogin'); oCheckBoxAutoLogin.addEventListener("CheckboxStateChange", EBEMailNotifierDialogsXULEvents_CT2384137.OnCheckBoxStateChangeAutoLogin, false); } else { objRadioGroupEMails.selectedItem = objRadioHotmail; } objEMailTextBox.focus(); }, OnCheckBoxStateChangeAutoLogin: function(event) { var oCheckBox = event.target; if (oCheckBox.checked) { EBEMailNotifierDialogsManager_CT2384137.OpenConfirmDialog(window, m_oAccountData); } }, OnAcceptConfirmDialog: function(event) { try { var oTextBoxPassword = document.getElementById('txtPassword'); var strPassword = oTextBoxPassword.value; var strAccountDataPassword = m_oAccountData.Password; if (strPassword != strAccountDataPassword) { var strTitle = EBEMailNotifierDialogsConsts_CT2384137.ConfirmDialog.MismatchErrorTitle; var strMsg = EBEMailNotifierDialogsConsts_CT2384137.ConfirmDialog.MismatchErrorContent; EBGlobalManager_CT2384137.Alert(window, strTitle, strMsg); m_bIsCloseAcceptDialog = false; } else { m_bIsCloseAcceptDialog = true; } } catch (ex) { //if there is any error we want to close the dialog m_bIsCloseAcceptDialog = true; } return m_bIsCloseAcceptDialog; }, OnLoadConfirmDialog: function(event) { var objWindow = EBGlobalManager_CT2384137.GetMostRecentBrowserWindow(); var dialogsDirection = objWindow.EBGlobalManager_CT2384137.IsReverseDialogs(); if (dialogsDirection) EBUILogic_Dialog_CT2384137.setWindowDirection(dialogsDirection, "EBEmailNotifierXULConfirmAccountDialogID"); EmailNotifierLanguagePack_CT2384137.ConfirmDialog(); }, OnUnloadConfirmDialog: function(event) { //in the onload document we set the addedit dialog autologin checkbox //according to the matching of the password if the user didn't //click on the accept button if (!m_bIsCloseAcceptDialog) { var oCheckBoxAutoLogin = m_oAddEditDocument.getElementById('checkAutoLogin'); oCheckBoxAutoLogin.checked = false; } }, OnInputAddEditEmailTextBox: function(event) { var objTextBoxEmail = event.target; var strEmail = objTextBoxEmail.value; var objTextBoxAccountName = document.getElementById('txtAccountName'); var objRadioGroupEMails = document.getElementById('radioGroupEMails'); var objRadioHotmail = document.getElementById('radHotmail'); var objRadioYahoo = document.getElementById('radYahoo'); var objRadioGmail = document.getElementById('radGMail'); var objRadioAOL = document.getElementById('radAOL'); var objRadioRR = document.getElementById('radRR'); var objRadioUnivision = document.getElementById('radUnivision'); objTextBoxAccountName.value = strEmail; var isGMailDmain = EBEMailNotifierManager_CT2384137.IsEMailDomain(EBEmailAccountsConsts_CT2384137.GMail, strEmail); var isYahooDomain = EBEMailNotifierManager_CT2384137.IsEMailDomain(EBEmailAccountsConsts_CT2384137.Yahoo, strEmail); var isHotmailDomain = EBEMailNotifierManager_CT2384137.IsEMailDomain(EBEmailAccountsConsts_CT2384137.Hotmail, strEmail); var isAOLDomain = EBEMailNotifierManager_CT2384137.IsEMailDomain(EBEmailAccountsConsts_CT2384137.AOL, strEmail); var isUnivisionDomain = EBEMailNotifierManager_CT2384137.IsEMailDomain(EBEmailAccountsConsts_CT2384137.Univision, strEmail); var isRRDomain = EBEMailNotifierManager_CT2384137.IsRRDomain(strEmail); if (isRRDomain) objRadioGroupEMails.selectedItem = objRadioRR; else if (isGMailDmain) objRadioGroupEMails.selectedItem = objRadioGmail; else if (isYahooDomain) objRadioGroupEMails.selectedItem = objRadioYahoo; else if (isHotmailDomain) objRadioGroupEMails.selectedItem = objRadioHotmail; else if (isAOLDomain) objRadioGroupEMails.selectedItem = objRadioAOL; else if (isUnivisionDomain) objRadioGroupEMails.selectedItem = objRadioUnivision; this.SetTestAccountOKButtonsState(); }, OnInputAddEditPasswordTextBox: function(event) { this.SetTestAccountOKButtonsState(); }, OnInputAddEditAccountNameTextBox: function(event) { this.SetTestAccountOKButtonsState(); }, OnInputAddEditPop3MailServerTextBox: function(event) { this.SetTestAccountOKButtonsState(); }, IsAddEditPop3Mode: function() { var objRadioGroupEMails = document.getElementById('radioGroupEMails'); var objRadioPop3 = document.getElementById('radPop3'); return objRadioGroupEMails.selectedItem == objRadioPop3; }, OnSelectAddEditRadioGroupEMails: function(event) { var objRadioGroupEMails = document.getElementById('radioGroupEMails'); var objRadioHotmail = document.getElementById('radHotmail'); var objRadioYahoo = document.getElementById('radYahoo'); var objRadioGmail = document.getElementById('radGMail'); var objRadioRR = document.getElementById('radRR'); var objRadioAOL = document.getElementById('radAOL'); var objRadioUnivision = document.getElementById('radUnivision'); var objRadioPOP3 = document.getElementById('radPop3'); var objLabelSupportedDomains = document.getElementById('lblSupportedDomains'); //set the caption domains: var strCaptionDomains = ''; if (objRadioGroupEMails.selectedItem == objRadioHotmail) strCaptionDomains = EBEMailNotifierManager_CT2384137.GetHotmailDomainCaption(); else if (objRadioGroupEMails.selectedItem == objRadioYahoo) strCaptionDomains = EBEMailNotifierManager_CT2384137.GetYahooDomainCaption(); else if (objRadioGroupEMails.selectedItem == objRadioGmail) strCaptionDomains = EBEMailNotifierManager_CT2384137.GetGMailDomainCaption(); else if (objRadioGroupEMails.selectedItem == objRadioRR) strCaptionDomains = EBEMailNotifierManager_CT2384137.GetRRDomainCaption(); else if (objRadioGroupEMails.selectedItem == objRadioAOL) strCaptionDomains = EBEMailNotifierManager_CT2384137.GetAOLDomainCaption(); else if (objRadioGroupEMails.selectedItem == objRadioUnivision) strCaptionDomains = EBEMailNotifierManager_CT2384137.GetUnivisionDomainCaption(); else if (objRadioGroupEMails.selectedItem == objRadioPOP3) strCaptionDomains = ''; objLabelSupportedDomains.setAttribute('value', strCaptionDomains); var objRowPop3MailServer = document.getElementById('rowPop3MailServer'); var objCheckBoxAutoLogin = document.getElementById('checkAutoLogin'); var objLabelEMail = document.getElementById('lblEMail'); var oTextBoxPop3MailServerURL = document.getElementById('txtPop3MailServer'); if (this.IsAddEditPop3Mode()) { objLabelEMail.setAttribute('value', EBEMailNotifierDialogsCaption_CT2384137.AddEditDialog.Pop3EMailAddress); objRowPop3MailServer.style.visibility = ''; objCheckBoxAutoLogin.setAttribute('accesskey', 'O'); objCheckBoxAutoLogin.setAttribute('label', EBEMailNotifierDialogsCaption_CT2384137.AddEditDialog.Pop3AutoLogin); oTextBoxPop3MailServerURL.focus(); } else { objLabelEMail.setAttribute('value', EBEMailNotifierDialogsCaption_CT2384137.AddEditDialog.EmailAddress); objRowPop3MailServer.style.visibility = 'hidden'; objCheckBoxAutoLogin.setAttribute('accesskey', 'A'); objCheckBoxAutoLogin.setAttribute('label', EBEMailNotifierDialogsCaption_CT2384137.AddEditDialog.AutoLogin); } //when selection check the state of the buttons: this.SetTestAccountOKButtonsState(); }, SetTestAccountOKButtonsState: function() { var objButtonTestAccount = document.getElementById('btnTestAccount'); var objButtonOK = document.getElementById('btnOK'); var objTextBoxEmail = document.getElementById('txtEMail'); var objTextBoxPassword = document.getElementById('txtPassword'); var objTextBoxAccountName = document.getElementById('txtAccountName'); var objTextBoxPop3MailServer = document.getElementById('txtPop3MailServer'); //get the values from the text boxes var strEMail = objTextBoxEmail.value; var strPassword = objTextBoxPassword.value; var strAccountName = objTextBoxAccountName.value; var strPop3MailServer = objTextBoxPop3MailServer.value; if (EBGlobalManager_CT2384137.TotalTrim(strEMail) != '' && strPassword != '' && EBGlobalManager_CT2384137.TotalTrim(strAccountName) != '') { objButtonTestAccount.disabled = false; objButtonOK.disabled = false; } else { objButtonTestAccount.disabled = true; objButtonOK.disabled = true; } if (this.IsAddEditPop3Mode()) { if (EBGlobalManager_CT2384137.TotalTrim(strPop3MailServer) != '') { objButtonTestAccount.disabled = false; objButtonOK.disabled = false; } else { objButtonTestAccount.disabled = true; objButtonOK.disabled = true; } } }, OnCommandAddEditTestAccountButton: function(event) { if (this.IsValidEMailAddress()) { EBEMailNotifierDialogsManager_CT2384137.OpenTestAccountDialog(window); } }, IsValidEMailAddress: function() { var objTextBoxEmail = document.getElementById('txtEMail'); var strEMail = objTextBoxEmail.value; //if it's pop3 there isn't any check if (this.IsAddEditPop3Mode()) { var strUserName = strEMail; var strMailServerURL = document.getElementById('txtPop3MailServer').value; if (this.IsPop3AccountExists(strUserName, strMailServerURL)) { EBGlobalManager_CT2384137.Alert(window, EBEMailNotifierDialogsCaption_CT2384137.AddEditDialog.ErrorTitleAlertMsg, EBEMailNotifierDialogsCaption_CT2384137.AddEditDialog.ErrorMsgPOP3AlreadyExist); objTextBoxEmail.select(); return false; } else { return true; } } //check incorrect email if (!EBGlobalManager_CT2384137.IsValidEMail(strEMail)) { EBGlobalManager_CT2384137.Alert(window, EBEMailNotifierDialogsCaption_CT2384137.AddEditDialog.ErrorTitleAlertMsg, EBEMailNotifierDialogsCaption_CT2384137.AddEditDialog.ErrorMsgIncorrectEMailAddress); objTextBoxEmail.select(); return false; } //check supported email if (!EBEMailNotifierManager_CT2384137.IsSupportedEMailAccounts(strEMail)) { EBGlobalManager_CT2384137.Alert(window, EBEMailNotifierDialogsCaption_CT2384137.AddEditDialog.ErrorTitleAlertMsg, EBEMailNotifierDialogsCaption_CT2384137.AddEditDialog.ErrorMsgEmailAddressNotSupported); objTextBoxEmail.select(); return false; } //check for existing email(using the data object account) if (this.IsEMailExists(strEMail)) { EBGlobalManager_CT2384137.Alert(window, EBEMailNotifierDialogsCaption_CT2384137.AddEditDialog.ErrorTitleAlertMsg, EBEMailNotifierDialogsCaption_CT2384137.AddEditDialog.ErrorMsgEmailAlreadyExist); objTextBoxEmail.select(); return false; } //check if the radio button suit to the account: //check the desirable type var iAcceptableAccountType = EBEMailNotifierManager_CT2384137.GetAccountTypeByEMail(strEMail); //check actual radio selection var iActualAccountType = 0; var objRadioGroupEMails = document.getElementById('radioGroupEMails'); var objRadioHotmail = document.getElementById('radHotmail'); var objRadioYahoo = document.getElementById('radYahoo'); var objRadioGmail = document.getElementById('radGMail'); var objRadioRR = document.getElementById('radRR'); var objRadioAOL = document.getElementById('radAOL'); var objRadioUnivision = document.getElementById('radUnivision'); if (objRadioGroupEMails.selectedItem == objRadioHotmail) iActualAccountType = EBEmailAccountsTypes_CT2384137.Hotmail; else if (objRadioGroupEMails.selectedItem == objRadioYahoo) iActualAccountType = EBEmailAccountsTypes_CT2384137.Yahoo; else if (objRadioGroupEMails.selectedItem == objRadioGmail) iActualAccountType = EBEmailAccountsTypes_CT2384137.GMail; else if (objRadioGroupEMails.selectedItem == objRadioRR) iActualAccountType = EBEmailAccountsTypes_CT2384137.RR; else if (objRadioGroupEMails.selectedItem == objRadioAOL) iActualAccountType = EBEmailAccountsTypes_CT2384137.AOL; else if (objRadioGroupEMails.selectedItem == objRadioUnivision) iActualAccountType = EBEmailAccountsTypes_CT2384137.Univision; if (iAcceptableAccountType != iActualAccountType) { EBGlobalManager_CT2384137.Alert(window, EBEMailNotifierDialogsCaption_CT2384137.AddEditDialog.ErrorTitleAlertMsg, EBEMailNotifierDialogsCaption_CT2384137.AddEditDialog.ErrorMsgEmailTypeIncorrect); objRadioGroupEMails.focus(); return false; } return true; }, IsEMailExists: function(strEMail) { //get the dialogs mail account collection: var oMailAccountsColl = this.GetDialogsMailAccountCollection(); if (oMailAccountsColl) { var arrAccounts = oMailAccountsColl.Arr; var objAccountData = null; for (var i = 0; i < arrAccounts.length; i++) { objAccountData = arrAccounts[i]; if (m_oAccountData != objAccountData && objAccountData.EMailAddress.toLowerCase() == strEMail.toLowerCase()) return true; } } return false; }, IsPop3AccountExists: function(strUserName, strMailServerURL) { var oMailAccountsColl = this.GetDialogsMailAccountCollection(); if (oMailAccountsColl) { var arrAccounts = oMailAccountsColl.Arr; var objAccountData = null; for (var i = 0; i < arrAccounts.length; i++) { objAccountData = arrAccounts[i]; if (m_oAccountData != objAccountData && objAccountData.EMailAddress == strUserName && objAccountData.Pop3Server.toLowerCase() == strMailServerURL.toLowerCase()) { return true; } } } return false; }, GetIndexByAccountDataObject: function(objCurrentAccountData) { var oMailAccountsColl = this.GetDialogsMailAccountCollection(); if (oMailAccountsColl) { var arrAccounts = oMailAccountsColl.Arr; var objAccountData = null; for (var i = 0; i < arrAccounts.length; i++) { objAccountData = arrAccounts[i]; if (objAccountData == objCurrentAccountData) { return i; } } } return -1; }, OnCommandAddEditOKButton: function(event) { try { var objTextBoxEmail = document.getElementById('txtEMail'); var strEMailAddress = objTextBoxEmail.value; if (!this.IsValidEMailAddress()) { return false; } var strPassword = document.getElementById('txtPassword').value; var strAccountName = document.getElementById('txtAccountName').value; var strPop3ServerURL = null; var strPop3Port = null; if (this.IsAddEditPop3Mode()) { strPop3ServerURL = document.getElementById('txtPop3MailServer').value; strPop3Port = document.getElementById('txtPop3Port').value; } var objRadioGroupEMails = document.getElementById('radioGroupEMails'); var objRadioHotmail = document.getElementById('radHotmail'); var objRadioYahoo = document.getElementById('radYahoo'); var objRadioGmail = document.getElementById('radGMail'); var objRadioAOL = document.getElementById('radAOL'); var objRadioRR = document.getElementById('radRR'); var objRadioUnivision = document.getElementById('radUnivision'); var objRadioPop3 = document.getElementById('radPop3'); var iAccountType; if (objRadioGroupEMails.selectedItem == objRadioGmail) { iAccountType = EBEmailAccountsTypes_CT2384137.GMail; } else if (objRadioGroupEMails.selectedItem == objRadioYahoo) { iAccountType = EBEmailAccountsTypes_CT2384137.Yahoo; } else if (objRadioGroupEMails.selectedItem == objRadioHotmail) { iAccountType = EBEmailAccountsTypes_CT2384137.Hotmail; } else if (objRadioGroupEMails.selectedItem == objRadioRR) { iAccountType = EBEmailAccountsTypes_CT2384137.RR; } else if (objRadioGroupEMails.selectedItem == objRadioAOL) { iAccountType = EBEmailAccountsTypes_CT2384137.AOL; } else if (objRadioGroupEMails.selectedItem == objRadioUnivision) { iAccountType = EBEmailAccountsTypes_CT2384137.Univision; } else if (objRadioGroupEMails.selectedItem == objRadioPop3) { iAccountType = EBEmailAccountsTypes_CT2384137.Pop3; } var isAutoLogin = document.getElementById('checkAutoLogin').checked; if (MODE == EBEMailNotifierDialogsConsts_CT2384137.AddEditDialog.ModeAdd) { var objAccountDataToAdd = new EBEMailAccountDataObject_CT2384137(strAccountName, strEMailAddress, strPassword, iAccountType, isAutoLogin, null, null, strPop3ServerURL, strPop3Port); this.AddMailAccountTreeItem(objAccountDataToAdd, true); } else { this.EditMailAccountTreeItem(strAccountName, strEMailAddress, strPassword, iAccountType, isAutoLogin, strPop3ServerURL, strPop3Port, m_oAccountData); } } catch (ex) { } return true; }, OnLoadTestAccountDialog: function(event) { var objWindow = EBGlobalManager_CT2384137.GetMostRecentBrowserWindow(); var dialogsDirection = objWindow.EBGlobalManager_CT2384137.IsReverseDialogs(); if (dialogsDirection) EBUILogic_Dialog_CT2384137.setWindowDirection(dialogsDirection, "EBEmailNotifierXULTestAccountDialogID"); //set focus to the ok button document.getElementById('btnOKCancel').focus(); EmailNotifierLanguagePack_CT2384137.TestAccountDialog(); //open the test from the browser window to prevent bug //when the user close the test before the end of the process if (objWindow) { objWindow.EmailNotifierLanguagePack_CT2384137.TestAccountDialogSub(); TestAccountDialogCheck_CT2384137.Start(document, m_oAddEditDialogDocument); } }, OnUnloadTestAccountDialog: function(event) { //open the test from the browser window to prevent bug //when the user close the test before the end of the process var objWindow = EBGlobalManager_CT2384137.GetMostRecentBrowserWindow(); if (objWindow) { objWindow.TestAccountDialogCheck_CT2384137.NullifyMemebers(); } }, //get the dialog account collection which define in the settings dialog! GetDialogsMailAccountCollection: function() { var objSettingsWindow = EBEMailNotifierDialogsManager_CT2384137.GetDialogWindow(EBEMailNotifierDialogsConsts_CT2384137.SettingsDialog.Name); return objSettingsWindow.m_oDialogsMailAccountsCollection; }, AddMailAccountTreeItem: function(objAccountData, isSelectItem) { var objSettingsWindow = EBEMailNotifierDialogsManager_CT2384137.GetDialogWindow(EBEMailNotifierDialogsConsts_CT2384137.SettingsDialog.Name); if (!objSettingsWindow) { return; } var objSettingsDocument = objSettingsWindow.document; var objTreeChildrenMailAccounts = objSettingsDocument.getElementById('treeChildrenMailAccounts'); var objTreeItem = objSettingsDocument.createElement('treeitem'); var objTreeRow = this.AccountDataObjectToTreeRow(objSettingsDocument, objAccountData); objTreeItem.appendChild(objTreeRow); objTreeChildrenMailAccounts.appendChild(objTreeItem); if (isSelectItem) { this.SelectTreeItem(objTreeItem); } //add the data to the dialog collection objSettingsWindow.m_oDialogsMailAccountsCollection.AppendElement(objAccountData); }, EditMailAccountTreeItem: function(strAccountName, strEMailAddress, strPassword, iAccountType, isAutoLogin, strPop3ServerURL, strPop3Port, objAccountData) { var objSettingsWindow = EBEMailNotifierDialogsManager_CT2384137.GetDialogWindow(EBEMailNotifierDialogsConsts_CT2384137.SettingsDialog.Name); if (!objSettingsWindow) return; var objSettingsDocument = objSettingsWindow.document; var iIndexToEdit = this.GetIndexByAccountDataObject(objAccountData); if (iIndexToEdit == -1) return; var objTreeChildren = objSettingsDocument.getElementById('treeChildrenMailAccounts'); var objTreeRowCollection = objTreeChildren.getElementsByTagName('treerow'); var objTreeRowToEdit = objTreeRowCollection.item(iIndexToEdit); var objTreeCellAccountName = objTreeRowToEdit.childNodes[0]; var objTreeCellEMailAddress = objTreeRowToEdit.childNodes[1]; var objTreeCellAccountType = objTreeRowToEdit.childNodes[2]; var objTreeCellAutoLogin = objTreeRowToEdit.childNodes[3]; objTreeCellAccountName.setAttribute('label', strAccountName); objTreeCellEMailAddress.setAttribute('label', strEMailAddress); objTreeCellEMailAddress.setAttribute(EBEMailNotifierDialogsConsts_CT2384137.SettingsDialog.TreeCellPasswordAttribute, strPassword); objTreeCellEMailAddress.setAttribute(EBEMailNotifierDialogsConsts_CT2384137.SettingsDialog.TreeCellServerAttribute, strPop3ServerURL); var strAccountType = EBEMailNotifierManager_CT2384137.GetAccountNameByType(iAccountType); objTreeCellAccountType.setAttribute('label', strAccountType); objTreeCellAccountType.setAttribute(EBEMailNotifierDialogsConsts_CT2384137.SettingsDialog.TreeCellTypeAttribute, iAccountType); var strIsAutoLogin = isAutoLogin ? EBEMailNotifierDialogsCaption_CT2384137.SettingsDialog.Yes : EBEMailNotifierDialogsCaption_CT2384137.SettingsDialog.No; objTreeCellAutoLogin.setAttribute('label', strIsAutoLogin); objTreeCellAutoLogin.setAttribute(EBEMailNotifierDialogsConsts_CT2384137.SettingsDialog.TreeCellAutoLoginAttribute, isAutoLogin); //set the data object objAccountData.AccountName = strAccountName; objAccountData.EMailAddress = strEMailAddress; objAccountData.Password = strPassword; objAccountData.AccountType = iAccountType; objAccountData.AutoLogin = isAutoLogin; objAccountData.Pop3Server = strPop3ServerURL; objAccountData.Pop3Port = strPop3Port; }, SelectTreeItem: function(objTreeItem) { var objTree = objTreeItem.parentNode.parentNode; var iIndex = objTree.contentView.getIndexOfItem(objTreeItem); objTree.view.selection.select(iIndex); objTree.focus(); }, Test: function(doc) { }, OnClickHelp: function(event) { var objWindow = EBGlobalManager_CT2384137.GetMostRecentBrowserWindow(); //usage objWindow.EBUsageEmailNotifier_CT2384137.OnClickFeedback(); //send feedback var strUrl = objWindow.EBActionManager_CT2384137.GetWebServerURL("help"); objWindow.EBWeb_CT2384137.LoadURLInNewWindow(strUrl, null); } }; var TestAccountDialogCheck_CT2384137 = { EMailAccountType: null, EMail: '', Password: '', Pop3ServerURL: '', Pop3Port: 0, TestDialogDocument: null, AddEditDialogDocument: null, IsTestAccountDialogExists: function() { var objTestAccountWindow = EBEMailNotifierDialogsManager_CT2384137.GetDialogWindow(EBEMailNotifierDialogsConsts_CT2384137.TestAccountDialog.Name); return objTestAccountWindow ? true : false; }, Start: function(oTestDialogDocument, oAddEditDialogDocument) { this.TestDialogDocument = oTestDialogDocument; this.AddEditDialogDocument = oAddEditDialogDocument; var objTextBoxEmail = this.AddEditDialogDocument.getElementById('txtEMail'); var objTextBoxPassword = this.AddEditDialogDocument.getElementById('txtPassword'); var objTextBoxPop3MailServer = this.AddEditDialogDocument.getElementById('txtPop3MailServer'); var objTextBoxPop3Port = this.AddEditDialogDocument.getElementById('txtPop3Port'); var objRadioGroupEMails = this.AddEditDialogDocument.getElementById('radioGroupEMails'); var objRadioHotmail = this.AddEditDialogDocument.getElementById('radHotmail'); var objRadioYahoo = this.AddEditDialogDocument.getElementById('radYahoo'); var objRadioGmail = this.AddEditDialogDocument.getElementById('radGMail'); var objRadioAOL = this.AddEditDialogDocument.getElementById('radAOL'); var objRadioRR = this.AddEditDialogDocument.getElementById('radRR'); var objRadioUnivision = this.AddEditDialogDocument.getElementById('radUnivision'); var objRadioPop3 = this.AddEditDialogDocument.getElementById('radPop3'); var iEMailAccountType = null; if (objRadioGroupEMails.selectedItem == objRadioGmail) { iEMailAccountType = EBEmailAccountsTypes_CT2384137.GMail; } else if (objRadioGroupEMails.selectedItem == objRadioYahoo) { iEMailAccountType = EBEmailAccountsTypes_CT2384137.Yahoo; } else if (objRadioGroupEMails.selectedItem == objRadioHotmail) { iEMailAccountType = EBEmailAccountsTypes_CT2384137.Hotmail; } else if (objRadioGroupEMails.selectedItem == objRadioRR) { iEMailAccountType = EBEmailAccountsTypes_CT2384137.RR; } else if (objRadioGroupEMails.selectedItem == objRadioAOL) { iEMailAccountType = EBEmailAccountsTypes_CT2384137.AOL; } else if (objRadioGroupEMails.selectedItem == objRadioUnivision) { iEMailAccountType = EBEmailAccountsTypes_CT2384137.Univision; } else if (objRadioGroupEMails.selectedItem == objRadioPop3) { iEMailAccountType = EBEmailAccountsTypes_CT2384137.Pop3; } //get the values from the text boxes var strEMail = objTextBoxEmail.value; var strPassword = objTextBoxPassword.value; var strPop3MailServerURL = objTextBoxPop3MailServer.value; var strPop3Port = objTextBoxPop3Port.value; //set the class members for later use this.EMailAccountType = iEMailAccountType; this.EMail = strEMail; this.Password = strPassword; this.Pop3ServerURL = strPop3MailServerURL; this.Pop3Port = strPop3Port; this.StepOneCheckInternetConnection(oTestDialogDocument); }, StepOneCheckInternetConnection: function(oTestDialogDocument) { //check internet connection: var strCheckURL = EBEmailAccountsConsts_CT2384137.CheckURL; var oCallBackFunction = function(oData, o) { if (o.value == EBGlobalConsts_CT2384137.NetworkError) { TestAccountDialogCheck_CT2384137.ConnectionFailed(); } else { TestAccountDialogCheck_CT2384137.ConnectionSuccess(oTestDialogDocument); } }; EBWeb_CT2384137.HTTPServerRequest(strCheckURL, null, false, oCallBackFunction); }, StepTwoLoginToMailServer: function() { var objMailAccount = EBEMailNotifierManager_CT2384137.GetAccountObjectByType(this.EMailAccountType, this.EMail, this.Password, this.Pop3ServerURL, this.Pop3Port); var objResponseFunction = function(iNewMessages) { TestAccountDialogCheck_CT2384137.ResponseLoginMailServer(iNewMessages); }; objMailAccount.GetNewMessagesCount(objResponseFunction, true); }, ConnectionSuccess: function(oTestDialogDocument) { //check if the user close the window in the middle of the check if (!this.IsTestAccountDialogExists()) return; //set the check connection tree cell to success this.SetTreeCellIndicatorSuccess('tcEstablishConnection'); //make time effect for the check function var objIntervalFunction = function() { //TestAccountDialogCheck_CT2384137.SetTreeCellIndicatorSuccess('tcFindMailServer'); TestAccountDialogCheck_CT2384137.StepTwoLoginToMailServer(); }; setTimeout(objIntervalFunction, 500); }, ResponseLoginMailServer: function(iNewMessages) { //check if the user close the window in the middle of the check //Fix it later, enable the check //if(!BEMailNotifierDialogsManager_CT2384137.IsTestAccountDialogExists())return; if (iNewMessages == EBEmailAccountsConsts_CT2384137.LOGIN_FAILED) { this.SetTreeCellIndicatorFailed('tcLoginMsg'); this.TestFailed(); } else if (iNewMessages == EBEmailAccountsConsts_CT2384137.LOGIN_ANOTHER_ACCOUNT) this.TestWarning(); else { this.SetTreeCellIndicatorSuccess('tcLoginMsg'); this.TestSuccess(); } }, ConnectionFailed: function() { //check if the user close the window in the middle of the check if (!this.IsTestAccountDialogExists()) return; this.SetTreeCellIndicatorFailed('tcEstablishConnection'); this.SetTreeCellIndicatorFailed('tcFindMailServer'); this.SetTreeCellIndicatorFailed('tcLoginMsg'); this.TestFailed(); }, SetTreeCellIndicatorSuccess: function(strTreeCellID) { var objTreeCellIndicator = this.TestDialogDocument.getElementById(strTreeCellID); var objTreeCellValue = this.TestDialogDocument.getElementById(strTreeCellID + 'Value'); objTreeCellIndicator.setAttribute('src', EBEMailNotifierConsts_CT2384137.Images.V_Image); objTreeCellValue.setAttribute('label', EBEMailNotifierDialogsCaption_CT2384137.TestAccountDialog.TasksSuccess); return objTreeCellIndicator; }, SetTreeCellIndicatorFailed: function(strTreeCellID) { var objTreeCellIndicator = this.TestDialogDocument.getElementById(strTreeCellID); var objTreeCellValue = this.TestDialogDocument.getElementById(strTreeCellID + 'Value'); objTreeCellIndicator.setAttribute('src', EBEMailNotifierConsts_CT2384137.Images.X_Image); objTreeCellValue.setAttribute('label', EBEMailNotifierDialogsCaption_CT2384137.TestAccountDialog.TasksFailure); return objTreeCellIndicator; }, TestSuccess: function() { var objTreeCellFinish = this.SetTreeCellIndicatorSuccess('tcFinishMsg'); objTreeCellFinish.setAttribute('label', ' ' + EBEMailNotifierDialogsCaption_CT2384137.TestAccountDialog.TasksSuccessFinishMsg); var objTreeCellFinishDone = this.TestDialogDocument.getElementById('tcFinishMsgDone'); objTreeCellFinishDone.setAttribute('properties', 'success'); objTreeCellFinishDone.setAttribute('label', EBEMailNotifierDialogsCaption_CT2384137.TestAccountDialog.TaskSuccessDone); objTreeCellFinishDone.setAttribute('src', EBEMailNotifierConsts_CT2384137.Images.V_Image); this.Finish(); }, TestFailed: function() { var objTreeCellFinish = this.SetTreeCellIndicatorFailed('tcFinishMsg'); objTreeCellFinish.setAttribute('label', ' ' + EBEMailNotifierDialogsCaption_CT2384137.TestAccountDialog.TasksFailureFinishMsg); objTreeCellFinish.setAttribute('properties', 'failed'); this.Finish(); }, TestWarning: function() { var objTreeCellEstablish = this.TestDialogDocument.getElementById('tcEstablishConnection'); var objTreeCellEstablishValue = this.TestDialogDocument.getElementById('tcEstablishConnectionValue'); var objTreeCellLogin = this.TestDialogDocument.getElementById('tcLoginMsg'); var objTreeCellLoginValue = this.TestDialogDocument.getElementById('tcLoginMsgValue'); //the string of the warning message devide into 2 strings because //of spacing problem //convert the warning string according to the account type var strWarning1 = EBEMailNotifierDialogsCaption_CT2384137.TestAccountDialog.TestWarningMsg1; var strAccountName = EBEMailNotifierManager_CT2384137.GetAccountNameByType(this.EMailAccountType); strWarning1 = strWarning1.replace(EBEMailNotifierDialogsConsts_CT2384137.TestAccountDialog.AccountNameAlias, strAccountName); this.TestDialogDocument.getElementById('treeChildren').style.display = "none"; this.TestDialogDocument.getElementById('txtWarning').innerHTML = strWarning1; this.TestDialogDocument.getElementById('errorLogoutDiv').style.display = ""; this.TestDialogDocument.getElementById('imgWarning').setAttribute('src', EBEMailNotifierConsts_CT2384137.Images.WarningImage); this.Finish(); }, Finish: function() { var objButtonOKCancel = this.TestDialogDocument.getElementById('btnOKCancel'); objButtonOKCancel.setAttribute('label', EBEMailNotifierDialogsCaption_CT2384137.TestAccountDialog.ButtonOK); }, NullifyMemebers: function() { this.EMailAccountType = null; this.EMail = ''; this.Password = ''; this.TestDialogDocument = null; this.AddEditDialogDocument = null; } }; var EmailNotifierLanguagePack_CT2384137 = { SettingsDialog: function() { var ID = 'EBEmailNotifierXULSettingsDialogID'; var acceptButton = document.getElementById(ID).getButton('accept'); var cancelButton = document.getElementById(ID).getButton('cancel'); var emailNotifierSettings = document.getElementById('emailNotifierSettings'); var getAlertsOfNewEmails = document.getElementById('getAlertsOfNewEmails'); var emailNotifierChecksTheseAccounts = document.getElementById('emailNotifierChecksTheseAccounts'); var tcAccountName = document.getElementById('tcAccountName'); var tcAccountAddress = document.getElementById('tcAccountAddress'); var tcAccountType = document.getElementById('tcAccountType'); var tcAccountAutoLogin = document.getElementById('tcAccountAutoLogin'); var checkForNewEmailsEvery = document.getElementById('checkForNewEmailsEvery'); var checkPlaySound = document.getElementById('checkPlaySound'); var radSoundUseDefault = document.getElementById('radSoundUseDefault'); var radSoundChoose = document.getElementById('radSoundChoose'); var btnSoundChooseFile = document.getElementById('btnSoundChooseFile'); var btnSoundPlay = document.getElementById('btnSoundPlay'); var aSupportLink = document.getElementById('aSupportLink'); var btnToolbarOptions = document.getElementById('btnToolbarOptions'); var btnAdd = document.getElementById('btnAdd'); var btnEdit = document.getElementById('btnEdit'); var btnDelete = document.getElementById('btnDelete'); var objWindow = EBGlobalManager_CT2384137.GetMostRecentBrowserWindow(); var locale = EBToolbarPreferenceManager_CT2384137.GetPref(EBPreferenceConsts_CT2384137.Locale, true); EBEMailNotifierDialogsCaption_CT2384137.SettingsDialog.Yes = objWindow.oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_GLOBAL_YES'); EBEMailNotifierDialogsCaption_CT2384137.SettingsDialog.No = objWindow.oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_GLOBAL_NO'); acceptButton.label = objWindow.oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_GLOBAL_OK'); cancelButton.label = objWindow.oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_GLOBAL_CANCEL'); window.title = objWindow.oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_EMAIL_NOTIFIER_SETTINGS_DLG_TITLE'); emailNotifierSettings.value = objWindow.oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_EMAIL_NOTIFIER_SETTINGS_DLG_INNER_TITLE'); getAlertsOfNewEmails.value = objWindow.oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_EMAIL_NOTIFIER_SETTINGS_DLG_INNER_DESCRIPTION'); emailNotifierChecksTheseAccounts.value = objWindow.oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_EMAIL_NOTIFIER_SETTINGS_DLG_LIST_TITLE'); tcAccountName.setAttribute('label', objWindow.oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_EMAIL_NOTIFIER_SETTINGS_DLG_LIST_CUL_NAME')); tcAccountAddress.setAttribute('label', objWindow.oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_EMAIL_NOTIFIER_SETTINGS_DLG_LIST_CUL_ADDRESS')); tcAccountType.setAttribute('label', objWindow.oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_EMAIL_NOTIFIER_SETTINGS_DLG_LIST_CUL_TYPE')); tcAccountAutoLogin.setAttribute('label', objWindow.oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_EMAIL_NOTIFIER_SETTINGS_DLG_LIST_CUL_AUTOLOGIN')); checkForNewEmailsEvery.value = objWindow.oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_EMAIL_NOTIFIER_SETTINGS_DLG_CHECK_EVERY_TEXT'); checkPlaySound.label = objWindow.oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_EMAIL_NOTIFIER_SETTINGS_DLG_PLAY_SOUND_TEXT'); checkPlaySound.setAttribute('accesskey', radSoundUseDefault.getAttribute('label').charAt(0)); radSoundUseDefault.label = objWindow.oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_EMAIL_NOTIFIER_SETTINGS_DLG_DEFAULT_SOUND_TEXT'); radSoundUseDefault.setAttribute('accesskey', radSoundUseDefault.getAttribute('label').charAt(0)); radSoundChoose.label = objWindow.oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_EMAIL_NOTIFIER_SETTINGS_DLG_DIFFERENT_SOUND_TEXT'); radSoundChoose.setAttribute('accesskey', radSoundChoose.getAttribute('label').charAt(0)); btnSoundChooseFile.label = objWindow.oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_GLOBAL_BROWSE'); btnSoundChooseFile.setAttribute('accesskey', btnSoundChooseFile.getAttribute('label').charAt(0)); btnSoundPlay.label = objWindow.oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_EMAIL_NOTIFIER_SETTINGS_DLG_BUTT_PLAY_TEXT'); btnSoundPlay.setAttribute('accesskey', btnSoundPlay.getAttribute('label').charAt(0)); aSupportLink.innerHTML = objWindow.oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_GLOBAL_HELP'); btnToolbarOptions.label = objWindow.oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_EMAIL_NOTIFIER_SETTINGS_DLG_BUTT_TBOPTIONS_TEXT'); btnToolbarOptions.setAttribute('accesskey', btnToolbarOptions.getAttribute('label').charAt(0)); btnAdd.setAttribute('label', objWindow.oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_EMAIL_NOTIFIER_SETTINGS_DLG_BUTT_ADD_TEXT')); btnAdd.setAttribute('accesskey', btnAdd.getAttribute('label').charAt(0)); btnEdit.label = objWindow.oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_EMAIL_NOTIFIER_SETTINGS_DLG_BUTT_EDIT_TEXT'); btnEdit.setAttribute('accesskey', btnEdit.getAttribute('label').charAt(0)); btnDelete.label = objWindow.oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_EMAIL_NOTIFIER_SETTINGS_DLG_BUTT_DELETE_TEXT'); btnDelete.setAttribute('accesskey', btnDelete.getAttribute('label').charAt(0)); }, TestAccountDialogSub: function() { var locale = EBToolbarPreferenceManager_CT2384137.GetPref(EBPreferenceConsts_CT2384137.Locale, true); EBEMailNotifierDialogsCaption_CT2384137.TestAccountDialog.TasksFailureFinishMsg = oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_EMAIL_NOTIFIER_TEST_DLG_FAILED_TESTING'); EBEMailNotifierDialogsCaption_CT2384137.TestAccountDialog.TasksSuccessFinishMsg = oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_EMAIL_NOTIFIER_TEST_DLG_COMPLETED_SUCC_TEXT'); EBEMailNotifierDialogsCaption_CT2384137.TestAccountDialog.TaskSuccessDone = oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_EMAIL_NOTIFIER_TEST_DLG_DONE_TESTING'); EBEMailNotifierDialogsCaption_CT2384137.TestAccountDialog.TasksSuccess = oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_EMAIL_NOTIFIER_TEST_DLG_COMPLETED'); EBEMailNotifierDialogsCaption_CT2384137.TestAccountDialog.TasksFailure = oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_EMAIL_NOTIFIER_TEST_DLG_FAILED'); EBEMailNotifierDialogsCaption_CT2384137.TestAccountDialog.ButtonOK = oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_GLOBAL_OK'); EBEMailNotifierDialogsCaption_CT2384137.TestAccountDialog.TestWarningMsg1 = oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_EMAIL_NOTIFIER_TEST_DLG_PLEASE_LOGOUT_TEXT'); // * EBEMailNotifierDialogsCaption_CT2384137.TestAccountDialog.TestWarningMsg2 = oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_EMAIL_NOTIFIER_TEST_DLG_FAILED_TESTING'); }, TestAccountDialog: function() { var ID = 'EBEmailNotifierXULTestAccountDialogID'; var acceptButton = document.getElementById(ID).getButton('accept'); var EmailAccountTest = document.getElementById('EmailAccountTest'); var tcEstablishConnection = document.getElementById('tcEstablishConnection'); var tcLoginMsg = document.getElementById('tcLoginMsg'); var tcFinishMsg = document.getElementById('tcFinishMsg'); var tcTasks = document.getElementById('tcTasks'); var tcStatus = document.getElementById('tcStatus'); var objWindow = EBGlobalManager_CT2384137.GetMostRecentBrowserWindow(); var locale = EBToolbarPreferenceManager_CT2384137.GetPref(EBPreferenceConsts_CT2384137.Locale, true); window.title = objWindow.oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_EMAIL_NOTIFIER_TEST_DLG_TITLE'); acceptButton.label = objWindow.oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_GLOBAL_CANCEL'); EmailAccountTest.value = objWindow.oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_EMAIL_NOTIFIER_TEST_DLG_INNER_TITLE'); tcEstablishConnection.setAttribute('label', objWindow.oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_EMAIL_NOTIFIER_TEST_DLG_ESTABLISH')); tcLoginMsg.setAttribute('label', objWindow.oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_EMAIL_NOTIFIER_TEST_DLG_LOGINTO')); tcFinishMsg.setAttribute('label', objWindow.oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_GLOBAL_CANCEL')); tcTasks.setAttribute('label', objWindow.oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_EMAIL_NOTIFIER_TEST_DLG_CUL_TASKS')); tcStatus.setAttribute('label', objWindow.oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_EMAIL_NOTIFIER_TEST_DLG_CUL_STATUS')); }, ConfirmDialog: function() { var ID = 'EBEmailNotifierXULConfirmAccountDialogID'; var acceptButton = document.getElementById(ID).getButton('accept'); var cancelButton = document.getElementById(ID).getButton('cancel'); var Description = document.getElementById('Description'); var Password = document.getElementById('Password'); var objWindow = EBGlobalManager_CT2384137.GetMostRecentBrowserWindow(); var locale = EBToolbarPreferenceManager_CT2384137.GetPref(EBPreferenceConsts_CT2384137.Locale, true); EBEMailNotifierDialogsConsts_CT2384137.ConfirmDialog.MismatchErrorTitle = objWindow.oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_EMAIL_NOTIFIER_ALERT_MSG_WRONG_PASSWORD_TITLE'); EBEMailNotifierDialogsConsts_CT2384137.ConfirmDialog.MismatchErrorContent = objWindow.oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_EMAIL_NOTIFIER_ALERT_MSG_WRONG_PASSWORD'); window.title = objWindow.oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_EMAIL_NOTIFIER_PASSWORD_DLG_TITLE'); acceptButton.label = objWindow.oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_GLOBAL_OK'); cancelButton.label = objWindow.oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_GLOBAL_CANCEL'); Description.setAttribute('innerHTML', objWindow.oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_EMAIL_NOTIFIER_PASSWORD_DLG_DESC')); Password.value = objWindow.oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_EMAIL_NOTIFIER_PASSWORD_DLG_PASSWORD'); }, AddEditDialog: function() { var ID = 'EBEmailNotifierXULAddEditDialogID'; var acceptButton = document.getElementById(ID).getButton('accept'); var cancelButton = document.getElementById(ID).getButton('cancel'); var EmailAccountDetails = document.getElementById('EmailAccountDetails'); var AccountType = document.getElementById('AccountType'); var SupportedDomains = document.getElementById('SupportedDomains'); var lblEMail = document.getElementById('lblEMail'); var Password = document.getElementById('Password'); var NameYourAccount = document.getElementById('NameYourAccount'); var IncomingMailServer = document.getElementById('IncomingMailServer'); var Port = document.getElementById('Port'); var btnTestAccount = document.getElementById('btnTestAccount'); var objWindow = EBGlobalManager_CT2384137.GetMostRecentBrowserWindow(); var locale = EBToolbarPreferenceManager_CT2384137.GetPref(EBPreferenceConsts_CT2384137.Locale, true); EBEMailNotifierDialogsCaption_CT2384137.SettingsDialog.Yes = objWindow.oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_GLOBAL_YES'); EBEMailNotifierDialogsCaption_CT2384137.SettingsDialog.No = objWindow.oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_GLOBAL_NO'); EBEMailNotifierDialogsCaption_CT2384137.AddEditDialog.AutoLogin = objWindow.oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_EMAIL_NOTIFIER_ADD_DLG_AUTO_LOGIN_TEXT'); EBEMailNotifierDialogsCaption_CT2384137.AddEditDialog.Pop3AutoLogin = objWindow.oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_EMAIL_NOTIFIER_ADD_DLG_OPEN_DEFAULT_CLIENT_TEXT'); // * EBEMailNotifierDialogsCaption_CT2384137.AddEditDialog.ErrorTitleAlertMsg = objWindow.oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_EMAIL_NOTIFIER_ADD_DLG_TITLE'); EBEMailNotifierDialogsCaption_CT2384137.AddEditDialog.ErrorMsgIncorrectEMailAddress = objWindow.oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_EMAIL_NOTIFIER_ALERT_MESSAGE_INCCORECT_ADDRESS'); EBEMailNotifierDialogsCaption_CT2384137.AddEditDialog.ErrorMsgEmailAlreadyExist = objWindow.oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_EMAIL_NOTIFIER_ALERT_MESSAGE_ACCOUNT_ALREADY_EXISTS'); EBEMailNotifierDialogsCaption_CT2384137.AddEditDialog.ErrorMsgPOP3AlreadyExist = objWindow.oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_EMAIL_NOTIFIER_ALERT_MESSAGE_ACCOUNT_ALREADY_EXISTS'); EBEMailNotifierDialogsCaption_CT2384137.AddEditDialog.ErrorMsgEmailAddressNotSupported = objWindow.oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_EMAIL_NOTIFIER_ALERT_MESSAGE_EMAIL_NOT_SUPPORTED'); EBEMailNotifierDialogsCaption_CT2384137.AddEditDialog.ErrorMsgEmailTypeIncorrect = objWindow.oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_EMAIL_NOTIFIER_ALERT_MESSAGE_INCCORECT_ADDRESS'); acceptButton.label = objWindow.oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_GLOBAL_OK'); cancelButton.label = objWindow.oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_GLOBAL_CANCEL'); window.title = objWindow.oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_EMAIL_NOTIFIER_ADD_DLG_TITLE'); EmailAccountDetails.value = objWindow.oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_EMAIL_NOTIFIER_ADD_DLG_INNER_TITLE'); AccountType.value = objWindow.oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_EMAIL_NOTIFIER_ADD_DLG_TYPE_TEXT'); SupportedDomains.value = objWindow.oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_EMAIL_NOTIFIER_ADD_DLG_SUPPORTED_DOMAINS_TEXT'); EBEMailNotifierDialogsCaption_CT2384137.AddEditDialog.EmailAddress = objWindow.oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_EMAIL_NOTIFIER_ADD_DLG_EMAIL_ADDRESS_TEXT'); EBEMailNotifierDialogsCaption_CT2384137.AddEditDialog.Pop3EMailAddress = objWindow.oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_EMAIL_NOTIFIER_ADD_DLG_USER_NAME_TEXT'); Password.value = objWindow.oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_EMAIL_NOTIFIER_ADD_DLG_PASSWORD_TEXT'); NameYourAccount.value = objWindow.oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_EMAIL_NOTIFIER_ADD_DLG_NAME_ACCOUNT_TEXT'); IncomingMailServer.value = objWindow.oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_EMAIL_NOTIFIER_ADD_DLG_INCOMMING_SERVER_TEXT'); Port.value = objWindow.oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_EMAIL_NOTIFIER_ADD_DLG_PORT_TEXT'); btnTestAccount.setAttribute('label', objWindow.oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_EMAIL_NOTIFIER_ADD_DLG_BUTT_TEST_MAIL_TEXT')); btnTestAccount.setAttribute('accesskey', btnTestAccount.getAttribute('label').charAt(0)); } }; var EBEMailNotifierConsts_CT2384137 = { EMailNotifierDirectory: 'emailnotifier', EMailNotifierAccountsFileName: 'acc', EncryptionPass: 'EBEMailNotifierAcc', DefaultIntervalMinutes: 5, Images: { V_Image: 'chrome://iobitcom/skin/v.png', X_Image: 'chrome://iobitcom/skin/x.png', BlankImage: 'chrome://iobitcom/skin/blank.png', EMailImage: 'chrome://iobitcom/skin/email.png', EMailNewImage: 'chrome://iobitcom/skin/emailnew.png', EMailNewSmallImage: 'chrome://iobitcom/skin/emailnewsmall.png', StarImage: 'chrome://iobitcom/skin/star.png', WarningImage: 'chrome://iobitcom/skin/warning.png' }, XML: { ACCOUNTS: 'ACCOUNTS', ACCOUNT: 'ACCOUNT', NAME: 'NAME', EMAIL: 'EMAIL', PASSWORD: 'PASSWORD', SERVER: 'SERVER', PORT: 'PORT', TYPE: 'TYPE', AUTO_LOGIN: 'AUTO_LOGIN', STARED: 'STARED', NEW_MESSAGES: 'NEW_MESSAGES' }, Attributes: { MAIL_ACCOUNT: 'EB_ATTRIBUTE_MAIL_ACCOUNT', MAIL_ACCOUNT_VALUE: 'EB_ATTRIBUTE_MAIL_ACCOUNT_VALUE', CHECK_NEW_EMAIL_INTERVAL: 'EB_ATTRIBUTE_CHECK_NEW_EMAIL_INTERVAL', SOUND: 'EB_ATTRIBUTE_SOUND', STARED_ICON_URL: 'EB_ATTRIBUTE_STARED_ICON_URL', STARED_TOOLTIP: 'EB_ATTRIBUTE_STARED_TOOLTIP', DEFAULT_TOOLTIP: 'EB_ATTRIBUTE_DEFAULT_TOOLTIP', DEFAULT_CAPTION: 'EB_ATTRIBUTE_DEFAULT_CAPTION', EMAIL: 'EB_ATTRIBUTE_EMAIL', PASSWORD: 'EB_ATTRIBUTE_PASSWORD', ACCOUNT_TYPE: 'EB_ATTRIBUTE_ACCOUNT_TYPE', AUTO_LOGIN: 'EB_ATTRIBUTE_AUTO_LOGIN', POP3_SERVER: 'EB_ATTRIBUTE_POP3_SERVER', POP3_PORT: 'EB_ATTRIBUTE_POP3_PORT', TOTAL_NEW_MESSAGES: 'EB_ATTRIBUTE_TOTAL_NEW_MESSAGES' }, Sound: { DefaultWavChromePath: 'chrome://iobitcom/skin/enSound.wav', NONE: 'NONE', DEFAULT: 'DEFAULT' } } var EBEMailNotifierManager_CT2384137 = { Reset: function() { EBEMailNotifierConsts_CT2384137.Images.EMailImage = 'chrome://iobitcom/skin/email.png'; }, GetAccountObjectByType: function(iAccountType, strEMail, strPassword, strPop3ServerURL, iPop3Port) { var objMailAccount = null; if (iAccountType == EBEmailAccountsTypes_CT2384137.GMail) { objMailAccount = new EBGmailAccount_CT2384137(strEMail, strPassword); } else if (iAccountType == EBEmailAccountsTypes_CT2384137.Yahoo) { objMailAccount = new EBYahooAccount_CT2384137(strEMail, strPassword); } else if (iAccountType == EBEmailAccountsTypes_CT2384137.Hotmail) { objMailAccount = new EBHotmailAccount_CT2384137(strEMail, strPassword); } else if (iAccountType == EBEmailAccountsTypes_CT2384137.RR) { objMailAccount = new EBRRAccount_CT2384137(strEMail, strPassword); } else if (iAccountType == EBEmailAccountsTypes_CT2384137.AOL) { objMailAccount = new EBAOLAccount_CT2384137(strEMail, strPassword); } else if (iAccountType == EBEmailAccountsTypes_CT2384137.Univision) { objMailAccount = new EBUnivisionAccount_CT2384137(strEMail, strPassword); } else if (iAccountType == EBEmailAccountsTypes_CT2384137.Pop3) { objMailAccount = new EBPop3Account_CT2384137(strEMail, strPassword, strPop3ServerURL, iPop3Port); } return objMailAccount; }, GetAccountNameByType: function(iAccountType) { var strAccountName = ''; if (iAccountType == EBEmailAccountsTypes_CT2384137.GMail) { strAccountName = EBEmailAccountsConsts_CT2384137.GMail.AccountName; } else if (iAccountType == EBEmailAccountsTypes_CT2384137.Yahoo) { strAccountName = EBEmailAccountsConsts_CT2384137.Yahoo.AccountName; } else if (iAccountType == EBEmailAccountsTypes_CT2384137.Hotmail) { strAccountName = EBEmailAccountsConsts_CT2384137.Hotmail.AccountName; } else if (iAccountType == EBEmailAccountsTypes_CT2384137.RR) { strAccountName = EBEmailAccountsConsts_CT2384137.RR.AccountName; } else if (iAccountType == EBEmailAccountsTypes_CT2384137.AOL) { strAccountName = EBEmailAccountsConsts_CT2384137.AOL.AccountName; } else if (iAccountType == EBEmailAccountsTypes_CT2384137.Univision) { strAccountName = EBEmailAccountsConsts_CT2384137.Univision.AccountName; } else if (iAccountType == EBEmailAccountsTypes_CT2384137.Pop3) { strAccountName = EBEmailAccountsConsts_CT2384137.Pop3.AccountName; } return strAccountName; }, GetAccountTypeByEMail: function(strEMail) { var iAccountType = 0; if (this.IsSupportedEMailGMail(strEMail)) { iAccountType = EBEmailAccountsTypes_CT2384137.GMail; } else if (this.IsSupportedEMailYahoo(strEMail)) { iAccountType = EBEmailAccountsTypes_CT2384137.Yahoo; } else if (this.IsSupportedEMailHotmail(strEMail)) { iAccountType = EBEmailAccountsTypes_CT2384137.Hotmail; } else if (this.IsSupportedEMailRR(strEMail)) { iAccountType = EBEmailAccountsTypes_CT2384137.RR; } else if (this.IsSupportedEMailAOL(strEMail)) { iAccountType = EBEmailAccountsTypes_CT2384137.AOL; } else if (this.IsSupportedEMailUnivision(strEMail)) { iAccountType = EBEmailAccountsTypes_CT2384137.Univision; } return iAccountType; }, GetUserNameByEMail: function(strFullEMail) { var strUserName = strFullEMail; var iIndexOfAT = strFullEMail.indexOf('@'); if (iIndexOfAT != -1) { strUserName = strFullEMail.substring(0, iIndexOfAT); } return strUserName; }, IsEMailDomain: function(AccountConstClass, strEMail) { var arrDomains = AccountConstClass.EMailDomain; for (var i = 0; i < arrDomains.length; i++) { if (strEMail.toLowerCase().indexOf(arrDomains[i]) != -1) return true; } return false; }, IsRRDomain: function(strEMail) { if (!strEMail || strEMail.indexOf("@") == -1) return false; var arr = strEMail.split("@"); var domain = arr[1]; var topLevelDomain = EBUrl_CT2384137.GetTopLevelDomainName(domain, true); return (topLevelDomain.toLowerCase() == "rr.com" || topLevelDomain.toLowerCase() == "roadrunner.com"); }, IsSupportedEMail: function(strEMail, arrDomains) { var isSupported = false; for (var i = 0; i < arrDomains.length; i++) { isSupported = EBGlobalManager_CT2384137.EndsWith(strEMail, arrDomains[i]); if (isSupported) break; } return isSupported; }, IsSupportedEMailGMail: function(strEMail) { var arrDomains = EBEmailAccountsConsts_CT2384137.GMail.EMailDomain; return this.IsSupportedEMail(strEMail, arrDomains); }, IsSupportedEMailYahoo: function(strEMail) { var arrDomains = EBEmailAccountsConsts_CT2384137.Yahoo.EMailDomain; return this.IsSupportedEMail(strEMail, arrDomains); }, IsSupportedEMailHotmail: function(strEMail) { var arrDomains = EBEmailAccountsConsts_CT2384137.Hotmail.EMailDomain; return this.IsSupportedEMail(strEMail, arrDomains); }, IsSupportedEMailAOL: function(strEMail) { var arrDomains = EBEmailAccountsConsts_CT2384137.AOL.EMailDomain; return this.IsSupportedEMail(strEMail, arrDomains); }, IsSupportedEMailRR: function(strEMail) { return this.IsRRDomain(strEMail); }, IsSupportedEMailUnivision: function(strEMail) { var arrDomains = EBEmailAccountsConsts_CT2384137.Univision.EMailDomain; return this.IsSupportedEMail(strEMail, arrDomains); }, IsSupportedEMailAccounts: function(strEMail) { return this.IsSupportedEMailGMail(strEMail) || this.IsSupportedEMailYahoo(strEMail) || this.IsSupportedEMailHotmail(strEMail) || this.IsSupportedEMailRR(strEMail) || this.IsSupportedEMailAOL(strEMail) || this.IsSupportedEMailUnivision(strEMail); }, GetEMailDomainCaption: function(arrCaptionDomains) { var strDelimiter = EBEmailAccountsConsts_CT2384137.DomainCaptionDelimiter; var strDomainCaptions = ''; for (var i = 0; i < arrCaptionDomains.length; i++) { if ((i + 1) == arrCaptionDomains.length) { strDelimiter = ''; } strDomainCaptions += arrCaptionDomains[i] + strDelimiter; } return strDomainCaptions; }, GetGMailDomainCaption: function() { var arrCaptionDomains = EBEmailAccountsConsts_CT2384137.GMail.EMailDomainCaption; return this.GetEMailDomainCaption(arrCaptionDomains); }, GetYahooDomainCaption: function(strEMail) { var arrCaptionDomains = EBEmailAccountsConsts_CT2384137.Yahoo.EMailDomainCaption; return this.GetEMailDomainCaption(arrCaptionDomains); }, GetHotmailDomainCaption: function(strEMail) { var arrCaptionDomains = EBEmailAccountsConsts_CT2384137.Hotmail.EMailDomainCaption; return this.GetEMailDomainCaption(arrCaptionDomains); }, GetRRDomainCaption: function(strEMail) { var arrCaptionDomains = EBEmailAccountsConsts_CT2384137.RR.EMailDomainCaption; return this.GetEMailDomainCaption(arrCaptionDomains); }, GetAOLDomainCaption: function(strEMail) { var arrCaptionDomains = EBEmailAccountsConsts_CT2384137.AOL.EMailDomainCaption; return this.GetEMailDomainCaption(arrCaptionDomains); }, GetUnivisionDomainCaption: function(strEMail) { var arrCaptionDomains = EBEmailAccountsConsts_CT2384137.Univision.EMailDomainCaption; return this.GetEMailDomainCaption(arrCaptionDomains); } }; //the object that the dialogs is used to handle the numbers of emails accoutns //that the user defined. the file of the emails is writing from this object. //and the loading of the menu item to the toolbar component email notifier is using //the file to read all that accounts function EBEMailAccountDataObject_CT2384137(strAccountName, strEMailAddress, strPassword, iAccountType, isAutoLogin, isStared, iNewMessages, strPop3Server, iPop3Port) { this.AccountName = strAccountName; this.EMailAddress = strEMailAddress; this.Password = strPassword; this.AccountType = iAccountType; this.AutoLogin = isAutoLogin; this.Stared = false; this.NewMessages = 0; this.Pop3Server = ''; this.Pop3Port = 0; if (isStared) { this.Stared = isStared; } if (iNewMessages) { this.NewMessages = iNewMessages; } if (strPop3Server) { this.Pop3Server = strPop3Server; } if (iPop3Port) { this.Pop3Port = iPop3Port; } } var EBEMailNotifierToolbarManager_CT2384137 = { MailAccountsCollection: null, TimeoutID: null, //var to check if the button is stared on the onhidden popup //so just if it is stared i nullify the stars and write to the file ButtonStared: false, Sound: null, OnLoadToolbarEMailNotifier: function() { //set the mail collection from the file this.MailAccountsCollection = this.AccountsFileToAccountsCollection(); //set the on hidden popup event (to clear the stars when it closed!) this.RemoveToolbarMailAccounts(); this.BuildToolbarMailAccounts(); this.CheckToolbarMenuItemsMailAccounts(false); }, OnUnloadToolbarEMailNotifier: function() { var oEmailNotifierToolbarButton = EBComponentsManager_CT2384137.GetEMailNotifierToolbarButton(); if (oEmailNotifierToolbarButton) { this.RemoveToolbarMailAccounts(); this.ClearMailAccountsTimeoutID(); } }, OnCommandSettingsOKButton: function(oMailAccountsCollection) { this.RemoveToolbarMailAccounts(); //get the accounts from the dialog accounts collection this.MailAccountsCollection = oMailAccountsCollection; //write the changes to the file this.AccountsCollectionToAccountsFile(this.MailAccountsCollection); //send the changes to the rest of the open browsers this.BroadcastChangesToAllBrowsers(); this.BuildToolbarMailAccounts(); this.CheckToolbarMenuItemsMailAccounts(true); }, OnPopupHiddenMailAccounts: function(event) { //check if the button is already not stared so no need to nullify it! if (!this.ButtonStared) return; //clear all the stars var arrAccounts = this.MailAccountsCollection.Arr; var i; for (i = 0; i < arrAccounts.length; i++) arrAccounts[i].Stared = false; //update the button and all the menu item //button image update this.SetToolbarButtonImageTooltip(false); //menu items image update var objMenuItemsMailAccounts = this.GetMenuItemsMailAccounts(); var objMenuItem = null; var strCurrentImage = ''; for (i = 0; i < objMenuItemsMailAccounts.length; i++) { objMenuItem = objMenuItemsMailAccounts.item(i); strCurrentImage = objMenuItem.getAttribute('image'); if (strCurrentImage == EBEMailNotifierConsts_CT2384137.Images.StarImage) objMenuItem.setAttribute('image', EBEMailNotifierConsts_CT2384137.Images.BlankImage); } //write the file this.AccountsCollectionToAccountsFile(this.MailAccountsCollection); this.BroadcastChangesToAllBrowsers(); }, GetMenuItemsMailAccounts: function() { var objXULMenuPopup = this.GetXULToolbarMenuPopup(); var objMenuItemsMailAccounts = objXULMenuPopup.getElementsByAttribute(EBEMailNotifierConsts_CT2384137.Attributes.MAIL_ACCOUNT, EBEMailNotifierConsts_CT2384137.Attributes.MAIL_ACCOUNT_VALUE); return objMenuItemsMailAccounts; }, GetMenuItemAccountIndex: function(objMenuItemMailAccount) { var objMenuItemsMailAccounts = this.GetMenuItemsMailAccounts(); for (var i = 0; i < objMenuItemsMailAccounts.length; i++) { if (objMenuItemsMailAccounts.item(i) == objMenuItemMailAccount) { return i; } } return -1; }, BuildToolbarMailAccounts: function() { var arrAccounts = this.MailAccountsCollection.Arr; var objAccountData; if (!arrAccounts || arrAccounts.length == 0) { //set the default caption of the button this.SetToolbarButtonDefaulCaption(); this.SetToolbarButtonImageTooltip(false); //remove the separator if there is no accounts this.ShowHideSeparatorCheckMenuItems(true); } else { //set button defalt caption with elements ([0 new]) this.SetToolbarButtonCaption(0); this.SetToolbarButtonImageTooltip(this.IsButtonToStared()); //add the separator and the check menu items this.ShowHideSeparatorCheckMenuItems(false); for (var i = 0; i < arrAccounts.length; i++) { objAccountData = arrAccounts[i]; this.BuildToolbarMenuItemMailAccount(objAccountData); } } }, //check if one of the accounts are stared to star //the main button IsButtonToStared: function() { var arrAccounts = this.MailAccountsCollection.Arr; for (var i = 0; i < arrAccounts.length; i++) { if (arrAccounts[i].Stared) { return true; } } return false; }, BuildToolbarMenuItemMailAccount: function(objAccountData) { var objXULMenuPopup = this.GetXULToolbarMenuPopup(); var strLabel = ''; var strImage = ''; var strAccelText = ''; var objCommand = function(event) { EBEMailNotifierToolbarManager_CT2384137.OnCommandMenuItemMailAccount(event); event.cancelBubble = true; }; var arrData = new Array(); objAccountData.NewMessages = parseInt(objAccountData.NewMessages); strLabel = this.GetMailAccountFullCaption(objAccountData); strImage = this.GetMailAccountImage(objAccountData); strAccelText = this.GetMailAccountAccelText(objAccountData); //build the attributes //special attribute to distinguish between mail account menu item and othe menu items(check,settings) arrData[EBEMailNotifierConsts_CT2384137.Attributes.MAIL_ACCOUNT] = EBEMailNotifierConsts_CT2384137.Attributes.MAIL_ACCOUNT_VALUE; arrData[EBEMailNotifierConsts_CT2384137.Attributes.EMAIL] = objAccountData.EMailAddress; arrData[EBEMailNotifierConsts_CT2384137.Attributes.PASSWORD] = objAccountData.Password; arrData[EBEMailNotifierConsts_CT2384137.Attributes.ACCOUNT_TYPE] = objAccountData.AccountType; arrData[EBEMailNotifierConsts_CT2384137.Attributes.AUTO_LOGIN] = objAccountData.AutoLogin; arrData[EBEMailNotifierConsts_CT2384137.Attributes.POP3_SERVER] = objAccountData.Pop3Server; arrData[EBEMailNotifierConsts_CT2384137.Attributes.POP3_PORT] = objAccountData.Pop3Port; var objXULMenuItem = EBXULFactory_CT2384137.CreateMenuItem(strLabel, strImage, objAccountData.EMailAddress, objCommand, "", arrData); objXULMenuItem.setAttribute("acceltext", strAccelText); var objXULSeparatorItem = this.GetXULToolbarSeparatorItem(); objXULMenuPopup.insertBefore(objXULMenuItem, objXULSeparatorItem); //update the main button caption if (objAccountData.NewMessages != EBEmailAccountsConsts_CT2384137.LOGIN_FAILED) this.UpdateButtonNewMessages(objAccountData.NewMessages); }, ClearMailAccountsTimeoutID: function() { if (this.TimeoutID) clearTimeout(this.TimeoutID); this.TimeoutID = null; }, RemoveToolbarMailAccounts: function() { var objMenuItemsMailAccounts = this.GetMenuItemsMailAccounts(); while (objMenuItemsMailAccounts.length > 0) { this.RemoveToolbarMailAccount(objMenuItemsMailAccounts.item(objMenuItemsMailAccounts.length - 1)); //get the objMenuItemsMailAccounts due to a bug in Firefox 1.0.7 //probably the getElementsByAttribute not related to the dom in 1.0.7 objMenuItemsMailAccounts = this.GetMenuItemsMailAccounts(); } }, RemoveToolbarMailAccount: function(objMenuItemMailAccount) { //remove the menu item var objXULMenuPopup = this.GetXULToolbarMenuPopup(); objXULMenuPopup.removeChild(objMenuItemMailAccount); }, OnCommandCheckForNewEMailsButton: function() { //re-check all accounts this.CheckToolbarMenuItemsMailAccounts(true); //usage EBUsageEmailNotifier_CT2384137.OnCheckForNewEmails(); }, CheckToolbarMenuItemsMailAccounts: function(isForceCheck) { if (isForceCheck || this.IsPollDateElapsed()) { this.CheckMailAccountsFromServers(); } //make the interval call this.SetTimeoutAccountsCheck(); }, //check if need to make a master check(check from server) or not(check from file) IsPollDateElapsed: function() { var strPollDate = EBToolbarPreferenceManager_CT2384137.GetPref(EBPreferenceConsts_CT2384137.EMailNotifierPollDate); if (strPollDate == null || strPollDate == "") { return true; } var objCurrentDate = new Date(); var objPollDate = new Date(strPollDate); var iCheckIntervalTime = this.GetCheckAccountIntervalTime(); var iDateDiff = objCurrentDate - objPollDate; return iDateDiff > iCheckIntervalTime; }, SetPollDatePreference: function() { var objCurrentDate = new Date(); var strDateValue = objCurrentDate.toString(); EBToolbarPreferenceManager_CT2384137.SetPref(EBPreferenceConsts_CT2384137.EMailNotifierPollDate, strDateValue); }, //this call actually check the accounts using the account objects(using GetNewMessages function) //and the rest of the open browsers update themselves from the file each interval time CheckMailAccountsFromServers: function() { //set the time of the check this.SetPollDatePreference(); this.SetCurrentSound(); var objMenuItemsMailAccounts = this.GetMenuItemsMailAccounts(); var objMenuItemMailAccount = null; var objAccountData = null; var iLastIndex = this.MailAccountsCollection.Arr.length - 1; //start the check from the last child(menu item mail account) and in the end of each check //the current child call the prev child email check till the first and vice-verse objMenuItemMailAccount = objMenuItemsMailAccounts.item(iLastIndex); objAccountData = this.MailAccountsCollection.GetItem(iLastIndex); if (objMenuItemMailAccount && objAccountData) { var objIntervalFunction = function() { EBEMailNotifierToolbarManager_CT2384137.CheckToolbarMenuItemMailAccount(objMenuItemMailAccount, objAccountData); } setTimeout(objIntervalFunction, 100); } }, CheckToolbarMenuItemMailAccount: function(objXULMenuItem, objAccountData) { var strLoginEMail = objAccountData.EMailAddress; var strLoginPassword = objAccountData.Password; var strPop3MailServerURL = objAccountData.Pop3Server; var iPop3Port = objAccountData.Pop3Port; var objMailAccount = EBEMailNotifierManager_CT2384137.GetAccountObjectByType(objAccountData.AccountType, strLoginEMail, strLoginPassword, strPop3MailServerURL, iPop3Port); if (objMailAccount) { var objCallBackFunction = function(iNewMessages) { EBEMailNotifierToolbarManager_CT2384137.CheckToolbarMenuItemMailAccountCallBack(objXULMenuItem, objAccountData, iNewMessages); }; objMailAccount.GetNewMessagesCount(objCallBackFunction); } }, IsMenuItemMailAccountChild: function(objMenuItemMailAccountChild) { var objMenuItemsMailAccounts = this.GetMenuItemsMailAccounts(); for (var i = 0; i < objMenuItemsMailAccounts.length; i++) { if (objMenuItemsMailAccounts.item(i) == objMenuItemMailAccountChild) { return true; } } return false; }, CheckToolbarMenuItemMailAccountCallBack: function(objXULMenuItem, objAccountData, iNewMessages) { //check to see if the callback menuitem is still part of the //email notifier dom elements - and if not terminate it //the check is perform due to too much reqeusts (the close dialogs,refresh toolbar) //so the timeouts can get out of mix - that is why i check it! if (!this.IsMenuItemMailAccountChild(objXULMenuItem)) { return; } //the changes coming back from the thread are only occur to the //data objects - the changes to the GUI (menu items) occur //in end of each cycle (and then broadcast to all browsers! iNewMessages = parseInt(iNewMessages); objAccountData.NewMessages = parseInt(objAccountData.NewMessages); var isStared = false; //flag determine if to perform new messages for this menuitem if (iNewMessages <= 0) { isStared = false; } else if (iNewMessages > objAccountData.NewMessages) { isStared = true; } else { //if this element was stared i don't change it if (objAccountData.Stared) { isStared = true; } } //update the object data: var iOldMessages = objAccountData.NewMessages; //if there is another login the data new messages is stay put if (iNewMessages != EBEmailAccountsConsts_CT2384137.LOGIN_ANOTHER_ACCOUNT) { objAccountData.NewMessages = iNewMessages; } objAccountData.Stared = isStared; this.UpdateToolbarMenuItemMailAccount(objXULMenuItem, objAccountData, iOldMessages); //check the previous account in the list (the check is one by one!) this.CheckPreviousAccount(objXULMenuItem); }, UpdateToolbarMenuItemMailAccount: function(objXULMenuItem, objAccountData, iOldMessages) { //set label and stared for this menu item: var isStared = objAccountData.Stared; var iNewMessages = objAccountData.NewMessages; var strLabel = this.GetMailAccountFullCaption(objAccountData); var strImage = this.GetMailAccountImage(objAccountData); var strAccelText = this.GetMailAccountAccelText(objAccountData); objXULMenuItem.setAttribute("label", strLabel); objXULMenuItem.setAttribute("image", strImage); EBUILogic_Functions_CT2384137.setAcceltext(objXULMenuItem, strAccelText); var isChanged = false; //update the button caption: if (iNewMessages != EBEmailAccountsConsts_CT2384137.LOGIN_ANOTHER_ACCOUNT) { if (iNewMessages != iOldMessages) { isChanged = true; //check if it's failed to set the message to zero (for the subtract from the main button the old messages) if (iNewMessages == EBEmailAccountsConsts_CT2384137.LOGIN_FAILED) { iNewMessages = 0; } else if (iOldMessages == EBEmailAccountsConsts_CT2384137.LOGIN_FAILED) { iOldMessages = 0; } var iDiffMessages = iNewMessages - iOldMessages; this.UpdateButtonNewMessages(iDiffMessages); } } if (isStared) { //update image and tooltip this.SetToolbarButtonImageTooltip(true); //play music only if it's stared (new email) //and it's not the state like before //only when the user got new email the first time if (isChanged) { //check if to play the sound this.CheckNewEMailPlaySound(); } } if (isChanged) { //write the changes to the accounts file: this.AccountsCollectionToAccountsFile(this.MailAccountsCollection); //broadcast to all elements this.BroadcastChangesToAllBrowsers(); } }, CheckPreviousAccount: function(objXULMenuItem) { var objMenuItemsMailAccounts = this.GetMenuItemsMailAccounts(); var objMenuItemMailAccount = null; var objAccountData = null; var iIndex = this.GetMenuItemAccountIndex(objXULMenuItem); var iAccountsLength = this.MailAccountsCollection.Arr.length; var iPreviousIndex = iIndex - 1; if (iPreviousIndex >= 0) { objMenuItemMailAccount = objMenuItemsMailAccounts.item(iPreviousIndex); objAccountData = this.MailAccountsCollection.GetItem(iPreviousIndex); this.CheckToolbarMenuItemMailAccount(objMenuItemMailAccount, objAccountData); } else { //check if there is new message to update the button //if there is no new messages we also need to update the button to be //not stared in case it was stared before and now there is no msg and need //to be stared off var bIsToStared = this.IsThereIsNewMessages(); this.SetToolbarButtonImageTooltip(bIsToStared); } }, //check from all the accounts if there is one that there is new message IsThereIsNewMessages: function() { var oCollection = this.MailAccountsCollection; if (oCollection) { var arrAccounts = oCollection.Arr; var oAccount = null; for (var i = 0; i < arrAccounts.length; i++) { oAccount = oCollection.GetItem(i); if (oAccount.Stared) { return true; } } } return false; }, //set the changes from the file to all open browsers BroadcastChangesToAllBrowsers: function() { var objWindowsManager = Components.classes['@mozilla.org/appshell/window-mediator;1'] .getService(Components.interfaces.nsIWindowMediator); var objEnumerator = objWindowsManager.getEnumerator('navigator:browser'); while (objEnumerator.hasMoreElements()) { var objWindow = objEnumerator.getNext(); if (objWindow != window) { if (objWindow.EBEMailNotifierToolbarManager_CT2384137.RebuildMailAccountsFromFile) { //try-catch to avoid other browsers when they email notifier //is hidden so the xul elements not loaded and it can cause an exception try { objWindow.EBEMailNotifierToolbarManager_CT2384137.RebuildMailAccountsFromFile(); } catch (ex) { } } } } }, RebuildMailAccountsFromFile: function() { this.MailAccountsCollection = this.AccountsFileToAccountsCollection(); this.RemoveToolbarMailAccounts(); this.BuildToolbarMailAccounts(); }, SetTimeoutAccountsCheck: function() { var iIntervalTime = this.GetCheckAccountIntervalTime(); var objIntervalFunction = function() { EBEMailNotifierToolbarManager_CT2384137.CheckToolbarMenuItemsMailAccounts(false); }; this.ClearMailAccountsTimeoutID(); this.TimeoutID = setTimeout(objIntervalFunction, iIntervalTime); }, GetCheckAccountIntervalTime: function() { var iMinutes = EBEMailNotifierConsts_CT2384137.DefaultIntervalMinutes; //check from the prefs and if there isn't take the default from the button settings definition var oEmailNotifierToolbarButton = EBComponentsManager_CT2384137.GetEMailNotifierToolbarButton(); if (oEmailNotifierToolbarButton) { iMinutes = oEmailNotifierToolbarButton.getAttribute(EBEMailNotifierConsts_CT2384137.Attributes.CHECK_NEW_EMAIL_INTERVAL); var iMinutesFromPref = this.GetCheckIntervalPref(); if (iMinutesFromPref && isFinite(iMinutesFromPref)) { iMinutes = iMinutesFromPref; } } return iMinutes * 60 * 1000; }, OnCommandMenuItemMailAccount: function(event) { var objXULMenuItem = event.target; var strEMail = objXULMenuItem.getAttribute(EBEMailNotifierConsts_CT2384137.Attributes.EMAIL); var strPassword = objXULMenuItem.getAttribute(EBEMailNotifierConsts_CT2384137.Attributes.PASSWORD); var iAccountType = objXULMenuItem.getAttribute(EBEMailNotifierConsts_CT2384137.Attributes.ACCOUNT_TYPE); var isAutoLogin = objXULMenuItem.getAttribute(EBEMailNotifierConsts_CT2384137.Attributes.AUTO_LOGIN); isAutoLogin = isAutoLogin == 'true' ? true : false; var strPop3Server = objXULMenuItem.getAttribute(EBEMailNotifierConsts_CT2384137.Attributes.POP3_SERVER); var strPop3Port = objXULMenuItem.getAttribute(EBEMailNotifierConsts_CT2384137.Attributes.POP3_PORT); var objMailAccount = EBEMailNotifierManager_CT2384137.GetAccountObjectByType(iAccountType, strEMail, strPassword, strPop3Server, strPop3Port); if (objMailAccount) { if (isAutoLogin) { objMailAccount.Login(event); } else { objMailAccount.Logout(event); } } //request usage EBUsageEmailNotifier_CT2384137.OnAccountOpen(); }, GetXULToolbarMenuPopup: function() { var oEmailNotifierComponent = EBComponentsManager_CT2384137.GetEMailNotifierComponent(); return oEmailNotifierComponent.dynamicMenuComponent.XULMenuPopup; }, OnMainPopupShowing: function(event) { if (event.eventPhase == 2) { var iNumOfAccunts = 0; if (this.MailAccountsCollection && this.MailAccountsCollection.Arr) { iNumOfAccunts = this.MailAccountsCollection.Arr.length; } } }, ShowHideSeparatorCheckMenuItems: function(isHide) { var objXULToolbarSeparatorItem = this.GetXULToolbarSeparatorItem(); var objXULToolbarCheckMenuItem = this.GetXULToolbarCheckForNewEMailMenuItem(); if (isHide) { objXULToolbarSeparatorItem.setAttribute('style', 'display:none;'); objXULToolbarCheckMenuItem.setAttribute('style', 'display:none;'); } else { objXULToolbarSeparatorItem.removeAttribute('style'); objXULToolbarCheckMenuItem.removeAttribute('style'); } }, //the separator that separates between the accounts and the configuration GetXULToolbarSeparatorItem: function() { var objXULMenuPopup = this.GetXULToolbarMenuPopup(); return objXULMenuPopup.childNodes[objXULMenuPopup.childNodes.length - 3]; }, GetXULToolbarCheckForNewEMailMenuItem: function() { var objXULMenuPopup = this.GetXULToolbarMenuPopup(); return objXULMenuPopup.childNodes[objXULMenuPopup.childNodes.length - 2]; }, UpdateButtonNewMessages: function(iNewMessages) { var iCurrentTotalNewMessages = this.GetToolbarButtonTotalNewMessages(); iCurrentTotalNewMessages += parseInt(iNewMessages); if (iCurrentTotalNewMessages < 0) { iCurrentTotalNewMessages = 0; } this.SetToolbarButtonCaption(iCurrentTotalNewMessages); }, SetToolbarButtonCaption: function(iNewMessages) { var oEmailNotifier = EBComponentsManager_CT2384137.GetEMailNotifierComponent(); if (oEmailNotifier) { var strCaption = '[' + iNewMessages + ']'; oEmailNotifier.UpdateUI(strCaption); var oEmailNotifierToolbarButton = EBComponentsManager_CT2384137.GetEMailNotifierToolbarButton(); oEmailNotifierToolbarButton.setAttribute(EBEMailNotifierConsts_CT2384137.Attributes.TOTAL_NEW_MESSAGES, iNewMessages); } }, GetToolbarButtonTotalNewMessages: function() { var iTotalNewMessages = 0; var oEmailNotifierToolbarButton = EBComponentsManager_CT2384137.GetEMailNotifierToolbarButton(); if (oEmailNotifierToolbarButton) { var strTotalNewMessages = oEmailNotifierToolbarButton.getAttribute(EBEMailNotifierConsts_CT2384137.Attributes.TOTAL_NEW_MESSAGES); iTotalNewMessages = parseInt(strTotalNewMessages); } return iTotalNewMessages; }, SetToolbarButtonDefaulCaption: function() { var oEmailNotifierToolbarButton = EBComponentsManager_CT2384137.GetEMailNotifierToolbarButton(); var oEmailNotifier = EBComponentsManager_CT2384137.GetEMailNotifierComponent(); if (oEmailNotifier) { var strDefaultCaption = oEmailNotifierToolbarButton.getAttribute(EBEMailNotifierConsts_CT2384137.Attributes.DEFAULT_CAPTION); oEmailNotifier.UpdateUI(strDefaultCaption); } }, SetToolbarButtonImageTooltip: function(isStared) { var oEmailNotifierToolbarButton = EBComponentsManager_CT2384137.GetEMailNotifierToolbarButton(); if (oEmailNotifierToolbarButton) { var strImage = EBEMailNotifierConsts_CT2384137.Images.EMailImage; var strTooltip = oEmailNotifierToolbarButton.getAttribute(EBEMailNotifierConsts_CT2384137.Attributes.DEFAULT_TOOLTIP); this.ButtonStared = isStared; if (isStared) { strTooltip = oEmailNotifierToolbarButton.getAttribute(EBEMailNotifierConsts_CT2384137.Attributes.STARED_TOOLTIP); } EBImageHandler_CT2384137.UpdateStar(oEmailNotifierToolbarButton, isStared); //ask if has attribute not to ruin the tooltip shrink if (oEmailNotifierToolbarButton.hasAttribute('tooltiptext')) { oEmailNotifierToolbarButton.setAttribute('tooltiptext', strTooltip); } } }, GetMailAccountFullCaption: function(objAccountData) { return objAccountData.AccountName; }, GetMailAccountAccelText: function(objAccountData) { var iNewMessages = objAccountData.NewMessages; var strCaption = ""; if (iNewMessages >= 0) strCaption = ' [' + iNewMessages + ' ' + oToolbarManager_CT2384137.getLPKey("CTLP_STR_ID_GLOBAL_UNREAD") + '] '; else if (iNewMessages == EBEmailAccountsConsts_CT2384137.LOGIN_FAILED) strCaption = this.GetMailAccountFailedCaption(); return strCaption; }, GetMailAccountFailedCaption: function() { return ' [' + oToolbarManager_CT2384137.getLPKey("CTLP_STR_ID_EMAIL_NOTIFIER_TEST_DLG_FAILED") + ']'; }, GetMailAccountImage: function(objAccountData) { var strImage = ''; if (objAccountData.Stared) { strImage = EBEMailNotifierConsts_CT2384137.Images.StarImage; } else if (objAccountData.NewMessages == EBEmailAccountsConsts_CT2384137.LOGIN_FAILED) { strImage = EBEMailNotifierConsts_CT2384137.Images.X_Image; } else { strImage = EBEMailNotifierConsts_CT2384137.Images.BlankImage; } return strImage; }, CreateEMailNotifierToolbarFile: function(strPath) { var strEMailNotifierPath = EBEMailNotifierConsts_CT2384137.EMailNotifierDirectory + EBDirIO_CT2384137.sep + strPath; var objFile = EBIOManager_CT2384137.CreateToolbarFile(strEMailNotifierPath); return objFile; }, GetToolbarAccountsXMLFile: function() { var objAccountsFile = this.CreateEMailNotifierToolbarFile(EBEMailNotifierConsts_CT2384137.EMailNotifierAccountsFileName); return objAccountsFile; }, CheckNewEMailPlaySound: function() { if (this.Sound && this.Sound != EBEMailNotifierConsts_CT2384137.Sound.NONE) { var strSoundFilePath = ''; if (this.Sound == EBEMailNotifierConsts_CT2384137.Sound.DEFAULT) { strSoundFilePath = EBEMailNotifierConsts_CT2384137.Sound.DefaultWavChromePath; } else { strSoundFilePath = this.Sound; } EBGlobalManager_CT2384137.PlaySound(strSoundFilePath); } }, SetCurrentSound: function() { this.Sound = this.GetSoundPref(); }, GetSoundPrefName: function() { var strPrefName = EBPreferenceConsts_CT2384137.EMailNotifierSound; return strPrefName; }, SaveSoundPref: function(strSound) { var strSoundPrefName = this.GetSoundPrefName(); EBToolbarPreferenceManager_CT2384137.SetPref(strSoundPrefName, strSound); }, GetSoundPref: function() { var strSoundPrefName = this.GetSoundPrefName(); var strSound = ''; if (!EBToolbarPreferenceManager_CT2384137.HasUserValue(strSoundPrefName)) { strSound = EBEMailNotifierConsts_CT2384137.Sound.NONE; } else { strSound = EBToolbarPreferenceManager_CT2384137.GetPref(strSoundPrefName); } return strSound; }, GetCheckIntervalPrefName: function() { var strPrefName = EBPreferenceConsts_CT2384137.EMailNotifierCheckInterval; return strPrefName; }, SaveCheckIntervalPref: function(iMinutesValue) { var strCheckIntervalPrefName = this.GetCheckIntervalPrefName(); EBToolbarPreferenceManager_CT2384137.SetPref(strCheckIntervalPrefName, iMinutesValue); }, GetCheckIntervalPref: function() { var strCheckIntervalPrefName = this.GetCheckIntervalPrefName(); var iMinutesValue = EBToolbarPreferenceManager_CT2384137.GetPref(strCheckIntervalPrefName); return iMinutesValue; }, AccountsFileToAccountsCollection: function() { var objAccountsCollection = new EBArrayCollection_CT2384137(); var strContent = this.LoadAccountsFile(); if (!strContent) return objAccountsCollection; var XMLDoc = EBXML_CT2384137.GetXmlDocument(strContent); var XMLRoot = XMLDoc.documentElement; var objAccountData = null; if (XMLRoot.tagName == EBEMailNotifierConsts_CT2384137.XML.ACCOUNTS) { var objXMLAccounts = XMLRoot.getElementsByTagName(EBEMailNotifierConsts_CT2384137.XML.ACCOUNT); var objXMLAccount = null; var objXMLNode = null; var strName = ''; var strEMail = ''; var strPassword = ''; var strServer = ''; var iPort = 0; var iType = -1; var isAutoLogin = true; var isStared = false; var iNewMessages = 0; for (var i = 0; i < objXMLAccounts.length; i++) { objXMLAccount = objXMLAccounts.item(i); for (var j = 0; j < objXMLAccount.childNodes.length; j++) { objXMLNode = objXMLAccount.childNodes[j]; if (objXMLNode.tagName == EBEMailNotifierConsts_CT2384137.XML.NAME) { strName = EBXML_CT2384137.GetXmlNodeValue(objXMLNode); } else if (objXMLNode.tagName == EBEMailNotifierConsts_CT2384137.XML.EMAIL) { strEMail = EBXML_CT2384137.GetXmlNodeValue(objXMLNode); } else if (objXMLNode.tagName == EBEMailNotifierConsts_CT2384137.XML.PASSWORD) { strPassword = EBXML_CT2384137.GetXmlNodeValue(objXMLNode); } else if (objXMLNode.tagName == EBEMailNotifierConsts_CT2384137.XML.SERVER) { strServer = EBXML_CT2384137.GetXmlNodeValue(objXMLNode); } else if (objXMLNode.tagName == EBEMailNotifierConsts_CT2384137.XML.PORT) { iPort = EBXML_CT2384137.GetXmlNodeValue(objXMLNode); } else if (objXMLNode.tagName == EBEMailNotifierConsts_CT2384137.XML.TYPE) { iType = EBXML_CT2384137.GetXmlNodeValue(objXMLNode); } else if (objXMLNode.tagName == EBEMailNotifierConsts_CT2384137.XML.AUTO_LOGIN) { var strIsLogin = EBXML_CT2384137.GetXmlNodeValue(objXMLNode); isAutoLogin = strIsLogin == 'true' ? true : false; } else if (objXMLNode.tagName == EBEMailNotifierConsts_CT2384137.XML.STARED) { var strIsStared = EBXML_CT2384137.GetXmlNodeValue(objXMLNode); isStared = strIsStared == 'true' ? true : false; } else if (objXMLNode.tagName == EBEMailNotifierConsts_CT2384137.XML.NEW_MESSAGES) { iNewMessages = EBXML_CT2384137.GetXmlNodeValue(objXMLNode); } } objAccountData = new EBEMailAccountDataObject_CT2384137(strName, strEMail, strPassword, iType, isAutoLogin, isStared, iNewMessages, strServer, iPort); objAccountsCollection.AppendElement(objAccountData); } } return objAccountsCollection; }, AccountsCollectionToAccountsFile: function(objAccountsCollection) { var strRootXML = '<' + EBEMailNotifierConsts_CT2384137.XML.ACCOUNTS + '></' + EBEMailNotifierConsts_CT2384137.XML.ACCOUNTS + '>' var XMLDoc = EBXML_CT2384137.GetXmlDocument(strRootXML); var XMLRoot = XMLDoc.documentElement; var XMLNodeAccount = null; var XMLNodeName = null; var XMLNodeEMail = null; var XMLNodePassword = null; var XMLNodeServer = null; var XMLNodePort = null; var XMLNodeType = null; var XMLNodeAutoLogin = null; var XMLNodeStared = null; var XMLNodeNewMessages = null; var arrAccounts = objAccountsCollection.Arr; for (var i = 0; i < arrAccounts.length; i++) { XMLNodeAccount = XMLDoc.createElement(EBEMailNotifierConsts_CT2384137.XML.ACCOUNT); XMLNodeName = EBXML_CT2384137.CreateXmlTextNode(XMLDoc, EBEMailNotifierConsts_CT2384137.XML.NAME, arrAccounts[i].AccountName); XMLNodeEMail = EBXML_CT2384137.CreateXmlTextNode(XMLDoc, EBEMailNotifierConsts_CT2384137.XML.EMAIL, arrAccounts[i].EMailAddress); XMLNodePassword = EBXML_CT2384137.CreateXmlTextNode(XMLDoc, EBEMailNotifierConsts_CT2384137.XML.PASSWORD, arrAccounts[i].Password); XMLNodeServer = EBXML_CT2384137.CreateXmlTextNode(XMLDoc, EBEMailNotifierConsts_CT2384137.XML.SERVER, arrAccounts[i].Pop3Server); XMLNodePort = EBXML_CT2384137.CreateXmlTextNode(XMLDoc, EBEMailNotifierConsts_CT2384137.XML.PORT, arrAccounts[i].Pop3Port); XMLNodeType = EBXML_CT2384137.CreateXmlTextNode(XMLDoc, EBEMailNotifierConsts_CT2384137.XML.TYPE, arrAccounts[i].AccountType); XMLNodeAutoLogin = EBXML_CT2384137.CreateXmlTextNode(XMLDoc, EBEMailNotifierConsts_CT2384137.XML.AUTO_LOGIN, arrAccounts[i].AutoLogin); XMLNodeStared = EBXML_CT2384137.CreateXmlTextNode(XMLDoc, EBEMailNotifierConsts_CT2384137.XML.STARED, arrAccounts[i].Stared); XMLNodeNewMessages = EBXML_CT2384137.CreateXmlTextNode(XMLDoc, EBEMailNotifierConsts_CT2384137.XML.NEW_MESSAGES, arrAccounts[i].NewMessages); XMLNodeAccount.appendChild(XMLNodeName); XMLNodeAccount.appendChild(XMLNodeEMail); XMLNodeAccount.appendChild(XMLNodePassword); XMLNodeAccount.appendChild(XMLNodeServer); XMLNodeAccount.appendChild(XMLNodePort); XMLNodeAccount.appendChild(XMLNodeType); XMLNodeAccount.appendChild(XMLNodeAutoLogin); XMLNodeAccount.appendChild(XMLNodeStared); XMLNodeAccount.appendChild(XMLNodeNewMessages); XMLRoot.appendChild(XMLNodeAccount); } var strXML = EBXML_CT2384137.GetStringXml(XMLDoc); this.SaveAccountsFile(strXML); }, SaveAccountsFile: function(strXMLContent) { var objAccountsFile = this.GetToolbarAccountsXMLFile(); //encrypt the data var strEncryptContent = EBTEAEncryptionManager_CT2384137.TEAencrypt(strXMLContent, EBEMailNotifierConsts_CT2384137.EncryptionPass); //write the data to the accounts xml file EBFileIO_CT2384137.write(objAccountsFile, strEncryptContent, "", EBGlobalConsts_CT2384137.DefaultCharset); }, LoadAccountsFile: function() { var strXMLContent = ''; var objAccountsFile = this.GetToolbarAccountsXMLFile(); var strEncryptContent = EBFileIO_CT2384137.read(objAccountsFile, EBGlobalConsts_CT2384137.DefaultCharset); //check if this data is encrypted first(for older version of the toolabr - before we encrypted the data). if (strEncryptContent) { //try to load it to an xml first if (strEncryptContent.indexOf(EBEMailNotifierConsts_CT2384137.XML.ACCOUNTS) != -1) { var XMLDoc = EBXML_CT2384137.GetXmlDocument(strEncryptContent); var XMLRoot = XMLDoc.documentElement; if (XMLRoot.tagName != "parsererror" && XMLRoot.tagName == EBEMailNotifierConsts_CT2384137.XML.ACCOUNTS) strXMLContent = strEncryptContent; } if (!strXMLContent) strXMLContent = EBTEAEncryptionManager_CT2384137.TEAdecrypt(strEncryptContent, EBEMailNotifierConsts_CT2384137.EncryptionPass); } return strXMLContent; } }; var EBEmailNotifierManager_CT2384137 = { xulBrowser: null, IsLogout: false, IsLoggedIn: false, IsListenerSet: false, Done: false, AccountInfo: { objCallback: null, objFindInboxFunc: null, loginUrl: '', userName: '', pass: '', userNameFieldId: '', passFieldId: '', submitButtonId: '', frameName: '', formName: '', secWarnEnt: null, secWarnExt: null, secWarnMixed: null }, ArrCheckedEmails: null, InitArray: function() { if (this.ArrCheckedEmails == null) { this.ArrCheckedEmails = new Array(); } }, EmailCheckedInbox: function(strEmail) { for (var i = 0; i < this.ArrCheckedEmails.length; i++) { if (this.ArrCheckedEmails[i].userName == strEmail) { return this.ArrCheckedEmails[i].iInbox; } } return -1; }, UpdateInboxOfAccount: function(iInbox) { this.ArrCheckedEmails[this.ArrCheckedEmails.length - 1].iInbox = iInbox; }, OnDone: function(iInbox) { try { this.xulBrowser.removeProgressListener(EmailWebListener_CT2384137); } catch (ex) { } var oWindow = EBGlobalManager_CT2384137.GetMostRecentBrowserWindow(); this.xulBrowser.loadURIWithFlags('about:blank', oWindow.nsIWebNavigation.LOAD_FLAGS_BYPASS_HISTORY, null, null); this.IsListenerSet = false; this.Done = true; this.UpdateInboxOfAccount(iInbox); this.AccountInfo.objCallback(iInbox); EBPreferenceService_CT2384137.SetPref("security.warn_entering_secure", this.AccountInfo.secWarnEnt); EBPreferenceService_CT2384137.SetPref("security.warn_leaving_secure", this.AccountInfo.secWarnExt); EBPreferenceService_CT2384137.SetPref("security.warn_viewing_mixed", this.AccountInfo.secWarnMixed); }, CheckError: function(strUserName, strLoginUrl) { if (strUserName == EBEmailNotifierManager_CT2384137.AccountInfo.userName && strLoginUrl == EBEmailNotifierManager_CT2384137.AccountInfo.loginUrl && !EBEmailNotifierManager_CT2384137.Done) { this.OnDone(EBEmailAccountsConsts_CT2384137.LOGIN_FAILED); } }, UpdateAccountInfo: function(objCallback, objFindInboxFunc, loginUrl, userName, pass, userNameFieldId, passFieldId, submitButtonId, frameName, formName) { this.AccountInfo.objCallback = objCallback; this.AccountInfo.objFindInboxFunc = objFindInboxFunc; this.AccountInfo.loginUrl = loginUrl; this.AccountInfo.userName = userName; this.AccountInfo.pass = pass; this.AccountInfo.userNameFieldId = userNameFieldId; this.AccountInfo.passFieldId = passFieldId; this.AccountInfo.submitButtonId = submitButtonId; this.AccountInfo.frameName = frameName; this.AccountInfo.formName = formName; this.AccountInfo.secWarnEnt = EBPreferenceService_CT2384137.GetPref("security.warn_entering_secure"); this.AccountInfo.secWarnExt = EBPreferenceService_CT2384137.GetPref("security.warn_leaving_secure"); this.AccountInfo.secWarnMixed = EBPreferenceService_CT2384137.GetPref("security.warn_viewing_mixed"); this.ArrCheckedEmails.push(new EBEmailAccount_CT2384137(userName)); }, ClearAccountInfo: function() { this.AccountInfo.objCallback = null; this.AccountInfo.objFindInboxFunc = null; this.AccountInfo.loginUrl = null; this.AccountInfo.userName = null; this.AccountInfo.pass = null; this.AccountInfo.userNameFieldId = null; this.AccountInfo.passFieldId = null; this.AccountInfo.submitButtonId = null; this.AccountInfo.frameName = null; this.AccountInfo.formName = null; }, CheckForEmails: function(objCallback, objFindInboxFunc, logoutUrl, loginUrl, userName, pass, userNameFieldId, passFieldId, submitButtonId, frameName, formName) { //check only once patch, for older FF versions (FF2 and down) this.InitArray(); if (!EBGlobalManager_CT2384137.IsFirefox3()) { var iInbx = this.EmailCheckedInbox(userName); if (iInbx != -1) { objCallback(iInbx); return; } } this.IsLoggedIn = false; this.Done = false; this.UpdateAccountInfo(objCallback, objFindInboxFunc, loginUrl, userName, pass, userNameFieldId, passFieldId, submitButtonId, frameName, formName); EBPreferenceService_CT2384137.SetPref("security.warn_entering_secure", false); EBPreferenceService_CT2384137.SetPref("security.warn_leaving_secure", false); EBPreferenceService_CT2384137.SetPref("security.warn_viewing_mixed", false); EBWeb_CT2384137.NavigationWithCallBack(logoutUrl, EBEmailNotifierManager_CT2384137.GoToLoginPage); this.IsLogout = false; var checkForError = function() { EBEmailNotifierManager_CT2384137.CheckError(userName, loginUrl); }; setTimeout(checkForError, 50000); EBEmailNotifierManager_CT2384137.xulBrowser.docShell.allowImages = false; }, GoToLoginPage: function() { var oWindow = EBGlobalManager_CT2384137.GetMostRecentBrowserWindow(); EBEmailNotifierManager_CT2384137.xulBrowser.loadURIWithFlags(EBEmailNotifierManager_CT2384137.AccountInfo.loginUrl, oWindow.nsIWebNavigation.LOAD_FLAGS_BYPASS_HISTORY, null, null); if (!EBEmailNotifierManager_CT2384137.IsListenerSet) { EBEmailNotifierManager_CT2384137.xulBrowser.addProgressListener(EmailWebListener_CT2384137); EBEmailNotifierManager_CT2384137.IsListenerSet = true; } }, Login: function(objDocument) { if (this.IsLoggedIn) return; var oName = objDocument.getElementById(this.AccountInfo.userNameFieldId); var oPass = objDocument.getElementById(this.AccountInfo.passFieldId); var oSubmit = objDocument.getElementById(this.AccountInfo.submitButtonId); if (oName && oPass && oSubmit) { oName.value = this.AccountInfo.userName; oPass.value = this.AccountInfo.pass; var oldValSignon = EBPreferenceService_CT2384137.GetPref("signon.rememberSignons"); EBPreferenceService_CT2384137.SetPref("signon.rememberSignons", false); if (this.AccountInfo.formName) oSubmit.click(); else objDocument.forms[0].submit(); EBPreferenceService_CT2384137.SetPref("signon.rememberSignons", oldValSignon); this.IsLoggedIn = true; } }, GetAllFrames: function(objDoc) { var arrFrames = objDoc.getElementsByTagName('frame'); var arrIFrames = objDoc.getElementsByTagName('iframe'); var arr = new Array(); var i; for (i = 0; i < arrFrames.length; i++) arr.push(arrFrames[i]); for (i = 0; i < arrIFrames.length; i++) arr.push(arrIFrames[i]); return arr; }, FindInbox: function(objDocument, isDocument) { //if continue button is found, click it and return if (this.CheckIntermidiatePage(objDocument, isDocument)) return; var iInbox = null; var arrFrames = this.GetAllFrames(objDocument); var oFrame; if (arrFrames.length > 0) { for (var i = 0; i < arrFrames.length; i++) { oFrame = arrFrames[i]; if (this.AccountInfo.frameName && oFrame.name == this.AccountInfo.frameName || !this.AccountInfo.frameName) { iInbox = this.AccountInfo.objFindInboxFunc(oFrame.contentWindow.document); if (iInbox != null) break; } } } if (iInbox == null && !this.AccountInfo.frameName) { iInbox = this.AccountInfo.objFindInboxFunc(objDocument); } if (iInbox != null) this.OnDone(iInbox); }, CheckIntermidiatePage: function(objDocument, isDocument) { var btnContinue = objDocument.getElementById("TakeMeToInbox"); if (btnContinue && isDocument) { btnContinue.click(); return true; } return false; }, DocumentComplete: function(aProgress, isDocument) { var objDocument = EBGlobalManager_CT2384137.GetWebPageJavascriptObject(aProgress.DOMWindow).document; if (this.IsLogout) { this.IsLogout = false; this.GoToLoginPage(objDocument); } else if (!this.IsLoggedIn) { this.Login(objDocument); } else { this.FindInbox(objDocument, isDocument); } } }; function EBEmailAccount_CT2384137(userName) { this.userName = userName; this.iInbox = 0; };/*************************** facebook commands ******************************/ var EBFacebookCommands_CT2384137 = { FB_LOGIN: function() { var facebookComp = EBComponentsManager_CT2384137.GetFacebookComponent(); var settingObj = oToolbar_CT2384137.facebook.manager.facebookSettings; var urlStr = settingObj.gadget.facebookLoginUrl; urlStr = urlStr.replace(/EB_FB_API_KEY/g, oToolbar_CT2384137.facebook.consts.FB_APP_API_KEY); urlStr = urlStr.replace(/EB_FB_CANCEL_URL/g, oToolbar_CT2384137.facebook.manager.facebookSettings.gadget.facebookFailureUrl); var perms = oToolbar_CT2384137.facebook.manager.facebookSettings.gadget.facebookGetInboxPermission + "," + oToolbar_CT2384137.facebook.manager.facebookSettings.gadget.facebookSetStatusPermission; urlStr = urlStr.replace(/EB_FB_PERMISSIONS_ARRAY/g, perms); var successUrl = oToolbar_CT2384137.facebook.manager.facebookSettings.gadget.facebookSuccessUrl; urlStr = urlStr.replace(/EB_FB_SUCCESS_URL/g, successUrl.substr(0, successUrl.indexOf("?xxRESULTTOKENxx"))); facebookComp.openFacebookGadgetWindow(urlStr, oToolbar_CT2384137.facebook.consts.gadgetType.login, settingObj.gadget.facebookLoginHeight, settingObj.gadget.facebookLoginWidth); }, FB_INBOX: function() { var facebookItem = EBComponentsManager_CT2384137.GetFacebookComponent().ComponentItem; EBUsageFacebook_CT2384137.OnItemClick(facebookItem.UniqueCompID, facebookItem.UniqueCompID, facebookItem.CompType); var urlStr = oToolbar_CT2384137.facebook.manager.facebookSettings.links.facebookInboxUrl; urlStr = urlStr.replace(/EB_FB_API_KEY/g, oToolbar_CT2384137.facebook.consts.FB_APP_API_KEY); urlStr = urlStr.replace(/EB_FB_SESSION_KEY/g, oToolbar_CT2384137.facebook.manager.sessionKey); EBLinkManager_CT2384137.LoadLinkURL(null, urlStr, "SELF"); }, FB_FRIENDS: function() { var facebookItem = EBComponentsManager_CT2384137.GetFacebookComponent().ComponentItem; EBUsageFacebook_CT2384137.OnItemClick(facebookItem.UniqueCompID, facebookItem.UniqueCompID, facebookItem.CompType); var urlStr = oToolbar_CT2384137.facebook.manager.facebookSettings.requests.facebookRequestsUrl; urlStr = urlStr.replace(/EB_FB_REQ_TYPE/g, oToolbar_CT2384137.facebook.manager.facebookSettings.requests.facebookReqFriend); urlStr = urlStr.replace(/EB_FB_API_KEY/g, oToolbar_CT2384137.facebook.consts.FB_APP_API_KEY); urlStr = urlStr.replace(/EB_FB_SESSION_KEY/g, oToolbar_CT2384137.facebook.manager.sessionKey); EBLinkManager_CT2384137.LoadLinkURL(null, urlStr, "SELF"); }, FB_GROUPS: function() { var facebookItem = EBComponentsManager_CT2384137.GetFacebookComponent().ComponentItem; EBUsageFacebook_CT2384137.OnItemClick(facebookItem.UniqueCompID, facebookItem.UniqueCompID, facebookItem.CompType); var urlStr = oToolbar_CT2384137.facebook.manager.facebookSettings.requests.facebookRequestsUrl; urlStr = urlStr.replace(/EB_FB_REQ_TYPE/g, oToolbar_CT2384137.facebook.manager.facebookSettings.requests.facebookReqGroup); urlStr = urlStr.replace(/EB_FB_API_KEY/g, oToolbar_CT2384137.facebook.consts.FB_APP_API_KEY); urlStr = urlStr.replace(/EB_FB_SESSION_KEY/g, oToolbar_CT2384137.facebook.manager.sessionKey); EBLinkManager_CT2384137.LoadLinkURL(null, urlStr, "SELF"); }, FB_EVENTS: function() { var facebookItem = EBComponentsManager_CT2384137.GetFacebookComponent().ComponentItem; EBUsageFacebook_CT2384137.OnItemClick(facebookItem.UniqueCompID, facebookItem.UniqueCompID, facebookItem.CompType); var urlStr = oToolbar_CT2384137.facebook.manager.facebookSettings.requests.facebookRequestsUrl; urlStr = urlStr.replace(/EB_FB_REQ_TYPE/g, oToolbar_CT2384137.facebook.manager.facebookSettings.requests.facebookReqEvent); urlStr = urlStr.replace(/EB_FB_API_KEY/g, oToolbar_CT2384137.facebook.consts.FB_APP_API_KEY); urlStr = urlStr.replace(/EB_FB_SESSION_KEY/g, oToolbar_CT2384137.facebook.manager.sessionKey); EBLinkManager_CT2384137.LoadLinkURL(null, urlStr, "SELF"); }, FB_SHARE: function() { var settingObj = oToolbar_CT2384137.facebook.manager.facebookSettings; var facebookItem = EBComponentsManager_CT2384137.GetFacebookComponent().ComponentItem; EBUsageFacebook_CT2384137.OnItemClick(facebookItem.UniqueCompID, facebookItem.UniqueCompID, facebookItem.CompType); var urlStr = settingObj.gadget.facebookSharerUrl; urlStr = urlStr.replace(/EB_MAIN_FRAME_URL/g, encodeURIComponent(EBGlobalManager_CT2384137.GetMostRecentBrowserWindow().EBUrl_CT2384137.GetPageUrl()).replace("'", "\\'", 'g')); var facebookComp = EBComponentsManager_CT2384137.GetFacebookComponent(); facebookComp.openFacebookGadgetWindow(urlStr, oToolbar_CT2384137.facebook.consts.gadgetType.share, settingObj.gadget.facebookSharerHeight, settingObj.gadget.facebookSharerWidth); }, FB_UPDATE_STATUS: function() { var settingObj = oToolbar_CT2384137.facebook.manager.facebookSettings; var facebookItem = EBComponentsManager_CT2384137.GetFacebookComponent().ComponentItem; EBUsageFacebook_CT2384137.OnItemClick(facebookItem.UniqueCompID, facebookItem.UniqueCompID, facebookItem.CompType); var callbackForGetPermissions = function(permissions) { if (permissions == "1") oToolbar_CT2384137.facebook.manager.getUserDataForUpdateStatus(function(strJson, type) { EBComponentsManager_CT2384137.GetFacebookComponent().callbackForGetDataForUpdateStatus(strJson, type); }); else { var facebookComp = EBComponentsManager_CT2384137.GetFacebookComponent(); var successUrl = oToolbar_CT2384137.facebook.manager.facebookSettings.gadget.facebookPermissionUrl; successUrl = successUrl.replace(/EB_FB_SUCCESS_URL/g, oToolbar_CT2384137.facebook.manager.facebookSettings.gadget.facebookSuccessUrl); successUrl = successUrl.replace(/EB_FB_API_KEY/g, oToolbar_CT2384137.facebook.consts.FB_APP_API_KEY); successUrl = successUrl.replace(/EB_FB_PERMISSION/g, oToolbar_CT2384137.facebook.manager.facebookSettings.gadget.facebookSetStatusPermission); var urlStr = settingObj.gadget.facebookLoginUrl; urlStr = urlStr.replace(/EB_FB_API_KEY/g, ""); urlStr = urlStr.replace(/EB_FB_CANCEL_URL/g, oToolbar_CT2384137.facebook.manager.facebookSettings.gadget.facebookFailureUrl); urlStr = urlStr.replace(/EB_FB_SUCCESS_URL/g, encodeURIComponent(successUrl).replace("'", "\\'", 'g')); facebookComp.openFacebookGadgetWindow(urlStr, oToolbar_CT2384137.facebook.consts.gadgetType.getUpdateStatusPermission, settingObj.gadget.facebookLoginHeight, settingObj.gadget.facebookLoginWidth); } }; oToolbar_CT2384137.facebook.manager.checkUpdateStatusPermission(callbackForGetPermissions); }, FB_LOGOUT: function() { var title = oToolbarManager_CT2384137.getLPKey("CTLP_STR_ID_FACEBOOK_LOGOUT_DIALOG_TITLE"); var message = oToolbarManager_CT2384137.getLPKey("CTLP_STR_ID_FACEBOOK_LOGOUT_DIALOG_TEXT"); if (EBGlobalManager_CT2384137.Confirm(window, title, message)) { var facebookItem = EBComponentsManager_CT2384137.GetFacebookComponent().ComponentItem; EBUsageFacebook_CT2384137.OnItemClick(facebookItem.UniqueCompID, facebookItem.UniqueCompID, facebookItem.CompType); oToolbar_CT2384137.facebook.manager.logout(); } }, FB_SETTINGS: function() { var facebookItem = EBComponentsManager_CT2384137.GetFacebookComponent().ComponentItem; EBUsageFacebook_CT2384137.OnItemClick(facebookItem.UniqueCompID, facebookItem.UniqueCompID, facebookItem.CompType); oToolbar_CT2384137.facebook.manager.alertsManager.openSettingsDialog(window); }, ActivateSpecialCommand: function(event, strCommandId) { switch (strCommandId.toUpperCase()) { case "FB_LOGIN": this.FB_LOGIN(); break; case "FB_INBOX": this.FB_INBOX(); break; case "FB_FRIENDS": this.FB_FRIENDS(); break; case "FB_GROUPS": this.FB_GROUPS(); break; case "FB_EVENTS": this.FB_EVENTS(); break; case "FB_SHARE": this.FB_SHARE(); break; case "FB_UPDATE_STATUS": this.FB_UPDATE_STATUS(); break; case "FB_LOGOUT": this.FB_LOGOUT(); break; case "FB_SETTINGS": this.FB_SETTINGS(); break; } }, IsSupportedCommand: function(strCommandId) { switch (strCommandId.toUpperCase()) { case "FB_LOGIN": return true; break; case "FB_INBOX": return true; break; case "FB_FRIENDS": return true; break; case "FB_GROUPS": return true; break; case "FB_EVENTS": return true; break; case "FB_SHARE": return true; break; case "FB_UPDATE_STATUS": return true; break; case "FB_LOGOUT": return true; break; case "FB_SETTINGS": return true; break; default: return false; } } }; function EBFacebookGadgetDialog_CT2384137(oWindow, popHtmlData) { var facebookManager = oWindow.oToolbar_CT2384137.facebook.manager; var facebookDataFormSetting = oWindow.oToolbar_CT2384137.facebook.manager.facebookSettings; var facebookConsts = oWindow.oToolbar_CT2384137.facebook.consts; var facebookItem = oWindow.EBComponentsManager_CT2384137.GetFacebookComponent().ComponentItem; var firstTime = true; var firstTimeExtPerms = true; var _state = "first.login"; var successUrlLength = facebookDataFormSetting.gadget.facebookSuccessUrl.indexOf("?xxRESULTTOKENxx"); var failureUrlLength = facebookDataFormSetting.gadget.facebookFailureUrl.length; var permissionUrlLength = facebookDataFormSetting.gadget.facebookPermissionUrl.indexOf("?"); var facebookPath = facebookConsts.FB_URL; var sendUsage = false; this.onDocumentComplete = function(xulBrowser) { var pathWIthoutParms = xulBrowser.currentURI.prePath + xulBrowser.currentURI.path.substring(0, 27); var usageStatus = facebookConsts.gadgetClosingType.cancel; var currentFullPath = xulBrowser.currentURI.prePath + xulBrowser.currentURI.path; if (currentFullPath.indexOf("login_attempt=") != -1 && firstTime) { window.resizeBy(0, 100); firstTime = false; } if (currentFullPath.indexOf("login_attempt=") == -1 && (xulBrowser.currentURI.prePath.indexOf("login") != -1 || currentFullPath.substring(0,56).indexOf("http://www.facebook.com/connect/prompt_permissions.php?") != -1)&& firstTimeExtPerms) { firstTimeExtPerms = false; window.resizeTo(facebookDataFormSetting.gadget.facebookPermissionWidth, facebookDataFormSetting.gadget.facebookPermissionHeight); } if (xulBrowser.currentURI.prePath == facebookPath) { if (currentFullPath.substring(0, successUrlLength) == facebookDataFormSetting.gadget.facebookSuccessUrl.substring(0, successUrlLength) || currentFullPath.substring(0, failureUrlLength) == facebookDataFormSetting.gadget.facebookFailureUrl.substring(0, failureUrlLength)) { switch (_state) { case ("first.login"): if (currentFullPath.substring(0, successUrlLength) == facebookDataFormSetting.gadget.facebookSuccessUrl.substring(0, successUrlLength)) { var resArray = xulBrowser.currentURI.path.split('&'); var reslut; for (var i = 0; i < resArray.length; i++) { reslut = resArray[i]; if (reslut.indexOf("session=") != -1) { var facebookLoginJsonObj = JSON.parse(decodeURIComponent(reslut.substring(reslut.indexOf("session=") + 8))); facebookManager.cleanData(); facebookManager.updateData(facebookLoginJsonObj); facebookManager.getUser(); break; } } usageStatus = facebookConsts.gadgetClosingType.success; window.close(); } else window.close(); break; case ("readMailbox.permission"): if (currentFullPath.substring(0, successUrlLength) == facebookDataFormSetting.gadget.facebookSuccessUrl.substring(0, successUrlLength) && xulBrowser.currentURI.path.substring(28, xulBrowser.currentURI.path.length)) { var resArray = xulBrowser.currentURI.path.split('&'); var reslut; for (var i = 0; i < resArray.length; i++) { reslut = resArray[i]; if (reslut.indexOf("session=") != -1) { var facebookLoginJsonObj = JSON.parse(decodeURIComponent(reslut.substring(reslut.indexOf("session=") + 8))); facebookManager.cleanData(); facebookManager.updateData(facebookLoginJsonObj); facebookManager.getUser(); break; } } usageStatus = facebookConsts.gadgetClosingType.success; } window.close(); break; case ("statusUpdate.permission"): if (currentFullPath.substring(0, successUrlLength) == facebookDataFormSetting.gadget.facebookSuccessUrl.substring(0, successUrlLength) && xulBrowser.currentURI.path.substring(28, xulBrowser.currentURI.path.length)) { facebookManager.getUserDataForUpdateStatus(function(strJson, type) { oWindow.EBComponentsManager_CT2384137.GetFacebookComponent().callbackForGetDataForUpdateStatus(strJson, type); }); usageStatus = facebookConsts.gadgetClosingType.success; } window.close(); break; } } else { if (currentFullPath.indexOf("nochrome=true") == -1 && currentFullPath.indexOf("xxRESULTTOKENxx") != -1 && _state == "readMailbox.permission" && !sendUsage) { oWindow.EBUsageFacebook_CT2384137.OnReadMailboxPermGadgetOpen(popHtmlData.elementId, popHtmlData.componentId, popHtmlData.compType); sendUsage = true; popHtmlData.facebookGagetType = facebookConsts.gadgetType.getReadMailboxPermission; } else if (currentFullPath.substring(0, permissionUrlLength) == facebookDataFormSetting.gadget.facebookPermissionUrl.substring(0, permissionUrlLength) && xulBrowser.currentURI.path.indexOf(facebookmanager.facebookSettings.gadget.facebookSetStatusPermission) != -1) { window.resizeTo(facebookDataFormSetting.gadget.facebookUpdateStatusWidth, facebookDataFormSetting.gadget.facebookUpdateStatusHeight); _state = "statusUpdate.permission"; } _state = "readMailbox.permission"; } window.ebCloseStatus = usageStatus; } } }; function EBFacebookSettingsDialog_CT2384137() { var dialogId = "EBFacebookSettingsId"; var lblAlertSettings = null; //var btnFaq = null; //var btnPrivacy = null; var lblChoose1 = null; var lblChoose2 = null; var btnAccept = null; var btnCancel = null; var chkEnabled = null; var chkFriendReq = null; var chkInbox = null; var chkGroups = null; var chkEvents = null; var chkNewsFeeds = null; var boxCheckboxesWrapper = null; var win = EBGlobalManager_CT2384137.GetMostRecentBrowserWindow(); var fbAlertManager = win.oToolbar_CT2384137.facebook.manager.alertsManager; this.enableDisableCheckboxes = function(bEnabled) { var arrChk = boxCheckboxesWrapper.getElementsByTagName("checkbox"); for (var i = 0; i < arrChk.length; i++) arrChk[i].disabled = !bEnabled; }; this.setLocalUIVars = function() { lblAlertSettings = document.getElementById("lblAlertSettings"); ; //btnFaq = document.getElementById("btnFaq"); ; //btnPrivacy = document.getElementById("btnPrivacy"); ; lblChoose1 = document.getElementById("lblChoose1"); ; lblChoose2 = document.getElementById("lblChoose2"); ; chkEnabled = document.getElementById("chkEnabled"); boxCheckboxesWrapper = document.getElementById("boxCheckboxesWrapper"); chkFriendReq = document.getElementById("chkFriendReq"); chkInbox = document.getElementById("chkInbox"); chkGroups = document.getElementById("chkGroups"); chkEvents = document.getElementById("chkEvents"); chkNewsFeeds = document.getElementById("chkNewsFeeds"); btnAccept = document.getElementById(dialogId).getButton("accept"); btnCancel = document.getElementById(dialogId).getButton("cancel"); }; this.initUI = function() { chkEnabled.checked = fbAlertManager.enabled; this.enableDisableCheckboxes(chkEnabled.checked); chkFriendReq.checked = fbAlertManager.friendReqEnabled; chkInbox.checked = fbAlertManager.inboxEnabled; chkGroups.checked = fbAlertManager.groupsEnabled; chkEvents.checked = fbAlertManager.eventsEnabled; chkNewsFeeds.checked = fbAlertManager.newsFeedsEnabled; }; this.saveChanges = function() { fbAlertManager.enabled = chkEnabled.checked; fbAlertManager.friendReqEnabled = chkFriendReq.checked; fbAlertManager.inboxEnabled = chkInbox.checked; fbAlertManager.groupsEnabled = chkGroups.checked; fbAlertManager.eventsEnabled = chkEvents.checked; fbAlertManager.newsFeedsEnabled = chkNewsFeeds.checked; }; this.onload = function() { this.setLocalUIVars(); this.initUI(); EBUILogic_Dialog_CT2384137.fadeIn(dialogId); this.applyLanguagePack(); }; this.onunload = function() { }; this.onclickClose = function() { EBUILogic_Dialog_CT2384137.fadeOut(dialogId); }; this.onclickAlertEnabled = function() { this.enableDisableCheckboxes(!chkEnabled.checked); }; this.onclickOk = function() { this.saveChanges(); EBUILogic_Dialog_CT2384137.fadeOut(dialogId); }; /* this.onclickFaq = function() { var strLink = win.EBActionManager_CT2384137.GetWebServerURL("FAQ"); win.EBWeb_CT2384137.LoadURLInNewWindow(strLink); }; this.onclickPrivacy = function() { var strLink = win.EBActionManager_CT2384137.GetWebServerURL("Privacy"); win.EBWeb_CT2384137.LoadURLInNewWindow(strLink); };*/ this.applyLanguagePack = function() { var dialogsDirection = win.EBGlobalManager_CT2384137.IsReverseDialogs(); if (dialogsDirection) EBUILogic_Dialog_CT2384137.setWindowDirection(dialogsDirection, dialogId); window.document.title = win.oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_FACEBOOK_SETTINGS_DLG_TITLE'); lblAlertSettings.value = win.oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_FACEBOOK_ALERT_SETTING_TITLE'); lblChoose1.value = win.oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_FACEBOOK_SETTINGS_DLG_SUBTITLE_FIRST'); lblChoose2.value = win.oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_FACEBOOK_SETTINGS_DLG_SUBTITLE_SECOND'); chkEnabled.setAttribute("label", win.oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_FACEBOOK_SETTINGS_CHOOSE_FROM_OPTIONS')); chkFriendReq.setAttribute("label", win.oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_FACEBOOK_SETTINGS_ALERT_FRIEND_REQUEST')); chkInbox.setAttribute("label", win.oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_FACEBOOK_SETTINGS_ALERT_INBOX')); chkGroups.setAttribute("label", win.oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_FACEBOOK_SETTINGS_ALERT_GROUP')); chkEvents.setAttribute("label", win.oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_FACEBOOK_SETTINGS_ALERT_EVENTS')); chkNewsFeeds.setAttribute("label", win.oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_FACEBOOK_SETTINGS_ALERT_NEWS_FEED')); btnAccept.setAttribute("label", win.oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_GLOBAL_OK')); btnCancel.setAttribute("label", win.oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_GLOBAL_CANCEL')); }; }; var EBFeedXMLConsts_CT2384137 = { FEED: 'FEED', DATA: 'DATA', TITLE: 'TITLE', LINK: 'LINK', STARED: 'STARED', LANGUAGE: 'LANGUAGE', ITEMS: 'ITEMS', ITEM: 'ITEM', TOOLTIP: 'TOOLTIP', STATUS: 'STATUS', VISITED: 'VISITED', HISTORY: 'HISTORY', TRUE: 'TRUE', FALSE: 'FALSE', READ: 'READ', UNREAD: 'UNREAD', RSS_FEED_ITEM: 'RSS_FEED_ITEM', PERMISSIONS: 'PERMISSIONS', USER_ATTRIBUTES: 'USER_ATTRIBUTES', UNIQUE_COMP_ID: 'UNIQUE_COMP_ID', DISPLAY_TEXT: 'DISPLAY_TEXT', DISPLAY_ICON: 'DISPLAY_ICON', INTERVAL: 'INTERVAL', LIVE_MODE: 'LIVE_MODE', PODCAST: 'PODCAST', ICON_NORMAL_URL: 'ICON_NORMAL_URL', IMAGE_STYLE: 'IMAGE_STYLE', UserAttributesValue: '<PERMISSION>FULL</PERMISSION><SHOW_IN_CHEVRON>True</SHOW_IN_CHEVRON>', PermissionsValue: '<EDIT>True</EDIT><MOVE>True</MOVE><DELETE>True</DELETE>' }; function EBHistoryData_CT2384137(oHistoryItemDataArrayHash) { this.ArrayHash = oHistoryItemDataArrayHash; this.XMLSerialize = function() { var strXMLHistory = EBFeedXMLConsts_CT2384137.HISTORY; var strXML = ''; strXML += '<' + strXMLHistory + '>'; var oHistoryItemData = null; var iCount = this.ArrayHash.Count(); for(var i=0;i<iCount;i++) { oHistoryItemData = this.ArrayHash.GetByIndex(i); strXML += oHistoryItemData.XMLSerialize(); } strXML += '</' + strXMLHistory + '>'; return strXML; }; }; function EBHistoryItemData_CT2384137(strLink) { this.Link = strLink; this.XMLSerialize = function() { var strXML = ''; var strXMLLink = EBFeedXMLConsts_CT2384137.LINK; strXML += '<' + strXMLLink+ '>' + EBXML_CT2384137.ToLegalXML(this.Link) + '</' + strXMLLink+ '>'; return strXML; }; }; function EBFeedData_CT2384137(oFeedDataData,oFeedItemArrayHashData) { this.Data = oFeedDataData; this.Items = oFeedItemArrayHashData; this.XMLSerialize = function() { var strXMLFeed = EBFeedXMLConsts_CT2384137.FEED; var strXML = ''; strXML += '<' + strXMLFeed + '>'; strXML += this.Data.XMLSerialize(); strXML += this.Items.XMLSerialize(); strXML += '</' + strXMLFeed + '>'; return strXML; }; }; function EBFeedDataData_CT2384137(strTitle,strLink,bIsStared,strLanguage) { this.Title = strTitle; this.Link = strLink; this.Stared = bIsStared; this.Language = strLanguage; this.XMLSerialize = function() { var strXMLData = EBFeedXMLConsts_CT2384137.DATA; var strXMLTitle = EBFeedXMLConsts_CT2384137.TITLE; var strXMLLink = EBFeedXMLConsts_CT2384137.LINK; var strXMLStared = EBFeedXMLConsts_CT2384137.STARED; var strXMLLanguage = EBFeedXMLConsts_CT2384137.LANGUAGE; var strXML = ''; strXML += '<' + strXMLData + '>'; strXML += '<' + strXMLTitle + '>' + EBXML_CT2384137.ToLegalXML(this.Title) + '</' + strXMLTitle + '>'; strXML += '<' + strXMLLink + '>' + EBXML_CT2384137.ToLegalXML(this.Link) + '</' + strXMLLink + '>'; strXML += '<' + strXMLLanguage + '>' + EBXML_CT2384137.ToLegalXML(this.Language) + '</' + strXMLLanguage + '>'; var strStared = this.Stared ? EBFeedXMLConsts_CT2384137.TRUE : EBFeedXMLConsts_CT2384137.FALSE; strXML += '<' + strXMLStared + '>' + strStared + '</' + strXMLStared + '>'; strXML += '</' + strXMLData + '>'; return strXML; }; }; function EBFeedItemArrayHashData_CT2384137() { this.ArrayHash = new EBArrayHashObject_CT2384137(); this.XMLSerialize = function() { var strXMLItems = EBFeedXMLConsts_CT2384137.ITEMS; var strXML = ''; strXML += '<' + strXMLItems + '>'; var oFeedItemData = null; var iCount = this.ArrayHash.Count(); for(var i=0;i<iCount;i++) { oFeedItemData = this.ArrayHash.GetByIndex(i); strXML += oFeedItemData.XMLSerialize(); } strXML += '</' + strXMLItems + '>'; return strXML; }; }; function EBFeedItemData_CT2384137(strTitle,strLink,strTooltip,strStatus,bVisited) { this.Title = strTitle; this.Link = strLink; this.Tooltip = strTooltip; this.Status = strStatus; this.Visited = bVisited; this.XMLSerialize = function() { var strXMLItem = EBFeedXMLConsts_CT2384137.ITEM; var strXMLTitle = EBFeedXMLConsts_CT2384137.TITLE; var strXMLLink = EBFeedXMLConsts_CT2384137.LINK; var strXMLTooltip = EBFeedXMLConsts_CT2384137.TOOLTIP; var strXMLStatus = EBFeedXMLConsts_CT2384137.STATUS; var strXMLVisited = EBFeedXMLConsts_CT2384137.VISITED; var strXML = ''; strXML += '<' + strXMLItem + '>'; strXML += '<' + strXMLTitle + '>' + EBXML_CT2384137.ToLegalXML(this.Title)+ '</' + strXMLTitle + '>'; strXML += '<' + strXMLLink + '>' + EBXML_CT2384137.ToLegalXML(this.Link) + '</' + strXMLLink + '>'; strXML += '<' + strXMLTooltip + '>' + this.Tooltip + '</' + strXMLTooltip + '>'; strXML += '<' + strXMLStatus + '>' + this.Status + '</' + strXMLStatus + '>'; var strVisited = this.Visited ? EBFeedXMLConsts_CT2384137.TRUE : EBFeedXMLConsts_CT2384137.FALSE; strXML += '<' + strXMLVisited + '>' + strVisited + '</' + strXMLVisited + '>'; strXML += '</' + strXMLItem + '>'; return strXML; }; }; var EBFeedDataFactory_CT2384137 = { XMLToHistoryData: function(XMLDoc) { var oHistoryData = null; var oHistoryItemDataArrayHash = null; var oHistoryItemData = null; var strXMLHistory = EBFeedXMLConsts_CT2384137.HISTORY; var XMLRoot = XMLDoc.documentElement; var XMLChildNode = null; if (XMLRoot.tagName == strXMLHistory) { oHistoryItemDataArrayHash = new EBArrayHashObject_CT2384137(); for (var i = 0; i < XMLRoot.childNodes.length; i++) { XMLChildNode = XMLRoot.childNodes[i]; oHistoryItemData = this.XMLToHistoryItemData(XMLChildNode); if (oHistoryItemData) { oHistoryItemDataArrayHash.Add(oHistoryItemData.Link, oHistoryItemData); } } oHistoryData = new EBHistoryData_CT2384137(oHistoryItemDataArrayHash); } return oHistoryData; }, XMLToHistoryItemData: function(XMLNode) { var oHistoryItemData = null; var strXMLLink = EBFeedXMLConsts_CT2384137.LINK; //get the correct root node (depends in this is the xml document or a regular dom node) var XMLRoot = XMLNode.ownerDocument ? XMLNode : XMLNode.documentElement; var XMLChildNode = null; var strLink = ''; if (XMLRoot.tagName == strXMLLink) { strLink = EBXML_CT2384137.GetXmlNodeValue(XMLRoot); if (strLink) { oHistoryItemData = new EBHistoryItemData_CT2384137(strLink); } } return oHistoryItemData; }, XMLToFeedData: function(XMLDoc) { var oFeedData = null; var oFeedDataData = null; var oFeedItemArrayHashData = null; var strXMLFeed = EBFeedXMLConsts_CT2384137.FEED; var strXMLData = EBFeedXMLConsts_CT2384137.DATA; var strXMLItems = EBFeedXMLConsts_CT2384137.ITEMS; var XMLRoot = XMLDoc.documentElement; var XMLChildNode = null; if (XMLRoot.tagName == strXMLFeed) { for (var i = 0; i < XMLRoot.childNodes.length; i++) { XMLChildNode = XMLRoot.childNodes[i]; if (XMLChildNode.tagName == strXMLData) { oFeedDataData = this.XMLToFeedDataData(XMLChildNode); } else if (XMLChildNode.tagName == strXMLItems) { oFeedItemArrayHashData = this.XMLToFeedItemArrayHashData(XMLChildNode); } } if (oFeedDataData && oFeedItemArrayHashData) { oFeedData = new EBFeedData_CT2384137(oFeedDataData, oFeedItemArrayHashData); } } return oFeedData; }, XMLToFeedDataData: function(XMLNode) { var oFeedDataData = null; var strXMLData = EBFeedXMLConsts_CT2384137.DATA; var strXMLTitle = EBFeedXMLConsts_CT2384137.TITLE; var strXMLLink = EBFeedXMLConsts_CT2384137.LINK; var strXMLStared = EBFeedXMLConsts_CT2384137.STARED; var strXMLLanguage = EBFeedXMLConsts_CT2384137.LANGUAGE; //get the correct root node (depends in this is the xml document or a regular dom node) var XMLRoot = XMLNode.ownerDocument ? XMLNode : XMLNode.documentElement; var XMLChildNode = null; if (XMLRoot.tagName == strXMLData) { var strTitle = ''; var strLink = ''; var strStared = ''; var strLanguage = ''; var bIsStared = false; for (var i = 0; i < XMLRoot.childNodes.length; i++) { XMLChildNode = XMLRoot.childNodes[i]; if (XMLChildNode.tagName == strXMLTitle) { strTitle = EBXML_CT2384137.GetXmlNodeValue(XMLChildNode); } else if (XMLChildNode.tagName == strXMLLink) { strLink = EBXML_CT2384137.GetXmlNodeValue(XMLChildNode); } else if (XMLChildNode.tagName == strXMLLanguage) { strLanguage = EBXML_CT2384137.GetXmlNodeValue(XMLChildNode); } else if (XMLChildNode.tagName == strXMLStared) { strStared = EBXML_CT2384137.GetXmlNodeValue(XMLChildNode); bIsStared = strStared == EBFeedXMLConsts_CT2384137.TRUE ? true : false; } } oFeedDataData = new EBFeedDataData_CT2384137(strTitle, strLink, bIsStared, strLanguage); } return oFeedDataData; }, XMLToFeedItemArrayHashData: function(XMLNode) { var oFeedItemArrayHashData = null; var strXMLItems = EBFeedXMLConsts_CT2384137.ITEMS; //get the correct root node (depends in this is the xml document or a regular dom node) var XMLRoot = XMLNode.ownerDocument ? XMLNode : XMLNode.documentElement; var XMLChildNode = null; if (XMLRoot.tagName == strXMLItems) { var oFeedItemData = null; oFeedItemArrayHashData = new EBFeedItemArrayHashData_CT2384137(); for (var i = 0; i < XMLRoot.childNodes.length; i++) { XMLChildNode = XMLRoot.childNodes[i]; oFeedItemData = this.XMLToFeedItemData(XMLChildNode); if (oFeedItemData) { oFeedItemArrayHashData.ArrayHash.Add(oFeedItemData.Link, oFeedItemData); } } } return oFeedItemArrayHashData; }, XMLToFeedItemData: function(XMLNode) { var oFeedItemData = null; var strXMLItem = EBFeedXMLConsts_CT2384137.ITEM; var strXMLTitle = EBFeedXMLConsts_CT2384137.TITLE; var strXMLLink = EBFeedXMLConsts_CT2384137.LINK; var strXMLTooltip = EBFeedXMLConsts_CT2384137.TOOLTIP; var strXMLStatus = EBFeedXMLConsts_CT2384137.STATUS; var strXMLVisited = EBFeedXMLConsts_CT2384137.VISITED; //get the correct root node (depends in this is the xml document or a regular dom node) var XMLRoot = XMLNode.ownerDocument ? XMLNode : XMLNode.documentElement; var XMLChildNode = null; if (XMLRoot.tagName == strXMLItem) { var strTitle = ''; var strLink = ''; var strTooltip = ''; var strStatus = ''; var strVisited = ''; var bVisited = false; for (var i = 0; i < XMLRoot.childNodes.length; i++) { XMLChildNode = XMLRoot.childNodes[i]; if (XMLChildNode.tagName == strXMLTitle) { strTitle = EBXML_CT2384137.GetXmlNodeValue(XMLChildNode); } else if (XMLChildNode.tagName == strXMLLink) { strLink = EBXML_CT2384137.GetXmlNodeValue(XMLChildNode); } else if (XMLChildNode.tagName == strXMLTooltip) { strTooltip = EBXML_CT2384137.GetXmlNodeValue(XMLChildNode); } else if (XMLChildNode.tagName == strXMLStatus) { strStatus = EBXML_CT2384137.GetXmlNodeValue(XMLChildNode); } else if (XMLChildNode.tagName == strXMLVisited) { strVisited = EBXML_CT2384137.GetXmlNodeValue(XMLChildNode); bVisited = strVisited == EBFeedXMLConsts_CT2384137.TRUE ? true : false; } } if (strLink) { oFeedItemData = new EBFeedItemData_CT2384137(strTitle, strLink, strTooltip, strStatus, bVisited); } } return oFeedItemData; } }; var EBFeedDialogConsts_CT2384137 = { Attributes : { Link : 'EBAttributeFeedLink', Index : 'EBIndex' }, Images : { EnvRead : 'chrome://iobitcom/skin/feed_env_read.png', EnvUnread : 'chrome://iobitcom/skin/feed_env_unread.png' }, Style : { BoxFeedItemFixedStyle : 'margin-left:5px;margin-right:5px;height:20px;width:220px;min-width:220px;', BoxFeedItemDefaultStyle : 'border:1px solid transparent;', BoxFeedItemHoverStyle : 'background-color:#C6D3EF;border:1px solid #316AC5;cursor:pointer;', BoxFeedItemDownStyle : 'padding-top:2px;padding-left:2px;', ImageFeedItemDownStyle : 'padding-top:1px;padding-left:1px;', LabelFeedItemFixedStyle : 'font-size:11px;margin-left:1px;width:210px;min-width:210px;', LabelFeedItemHoverStyle : 'cursor:pointer;', LabelTextUnVisitedStyleColor : 'color:black;', LabelTextVisitedStyleColor : 'color:#800080;', BoxLabelAlign : 'center' } } function EBFeedDialogManager_CT2384137(xulMenuPopup, oFeedComponent) { this.xulMenuPopup = xulMenuPopup; this.m_oFeedComponent = oFeedComponent; this.contextItem = null; this.xulContext = null; this.xulStack = null; this.xulContextWidth = null; this.xulContextHeight = null; this.imgComments = null; this.commentsFlexBox = null; this.imgRefresh = null; this.imgDelete = null; this.imgRead = null; this.imgUnread = null; this.lblTitle = null; this.usgDeleteItem = null; this.usgOpenItem = null; this.usgRefresh = null; this.usgDeleteAll = null; this.usgClose = null; this.usgOpen = null; this.initUsageObjects = function() { this.usgDeleteItem = EBUsageRss_CT2384137.DeleteItem; this.usgOpenItem = EBUsageRss_CT2384137.OpenItemLink; this.usgRefresh = EBUsageRss_CT2384137.Refresh; this.usgDeleteAll = EBUsageRss_CT2384137.DeleteAll; this.usgClose = EBUsageRss_CT2384137.OnRssClose; this.usgOpen = EBUsageRss_CT2384137.OnRssOpen; }; this.init = function() { this.contextItem = null; this.xulContext = document.getAnonymousElementByAttribute(this.xulMenuPopup, "id", "boxContext"); this.xulStack = document.getAnonymousElementByAttribute(this.xulMenuPopup, "id", "mainStack"); this.xulContextWidth = 0; this.xulContextHeight = 0; this.imgComments = document.getAnonymousElementByAttribute(this.xulMenuPopup, "id", "imageComments"); this.commentsFlexBox = document.getAnonymousElementByAttribute(this.xulMenuPopup, "id", "boxCommentsFlex"); this.imgRefresh = document.getAnonymousElementByAttribute(this.xulMenuPopup, "id", "imageRefresh"); this.imgDelete = document.getAnonymousElementByAttribute(this.xulMenuPopup, "id", "imageDelete"); this.imgRead = document.getAnonymousElementByAttribute(this.xulMenuPopup, "id", "imageRead"); this.imgUnread = document.getAnonymousElementByAttribute(this.xulMenuPopup, "id", "imageUnread"); this.lblTitle = document.getAnonymousElementByAttribute(this.xulMenuPopup, "id", "lblTitle"); //init usage objects this.initUsageObjects(); this.CheckForDialogRTL(); this.ApplyLanguagePack(); this._initUI(); this._handleCommentsLink(); //send usage if not multifeed dialog if (!this.m_oFeedComponent.IsMultiFeed || (typeof this.m_oFeedComponent.IsSingle != "undefined" && this.m_oFeedComponent.IsSingle)) this.usgOpen(); this.LoadDialogData(); }; this.reload = function(newFeedComponent) { newFeedComponent.ContainerScrollTop = 0; this.m_oFeedComponent = newFeedComponent; this.LoadDialogData(); }; this._initUI = function() { //init image buttons if (this.imgComments) EBUILogic_ImageButtons_CT2384137.setManager(this.imgComments); if (this.imgRefresh) EBUILogic_ImageButtons_CT2384137.setManager(this.imgRefresh); if (this.imgDelete) EBUILogic_ImageButtons_CT2384137.setManager(this.imgDelete); if (this.imgRead) EBUILogic_ImageButtons_CT2384137.setManager(this.imgRead); if (this.imgUnread) EBUILogic_ImageButtons_CT2384137.setManager(this.imgUnread); //init onclick actions var manager = this; if (this.imgRefresh) this.imgRefresh.onclick = function(e) { if (!this.manager.isDisabled) manager.OnClickRefresh(e); }; if (this.imgDelete) this.imgDelete.onclick = function(e) { if (!this.manager.isDisabled) manager.OnClickDeleteAll(e); }; if (this.imgRead) this.imgRead.onclick = function(e) { if (!this.manager.isDisabled) manager.OnClickMarkRead(e); }; if (this.imgUnread) this.imgUnread.onclick = function(e) { if (!this.manager.isDisabled) manager.OnClickMarkUnRead(e); }; if (this.lblTitle) this.lblTitle.onclick = function(e) { manager.OnClickLabelTitle(e); }; //hide context delete message button if live mode var xulDeleteItem = document.getAnonymousElementByAttribute(this.xulMenuPopup, "id", "contextDelete"); if (this.m_oFeedComponent.IsLiveMode) xulDeleteItem.style.display = "none"; this.xulContext.style.display = "none"; }; this._handleCommentsLink = function() { var strCommentsLink = this.m_oFeedComponent.ComponentItem.Comments; var manager = this; //show comments link button if (this.imgComments) { if (strCommentsLink) { this.imgComments.style.display = ""; this.commentsFlexBox.style.display = ""; this.imgComments.onclick = function(e) { manager.OnClickComments(e, strCommentsLink); }; } //hide comment link button else { this.imgComments.style.display = "none"; this.commentsFlexBox.style.display = "none"; } } }; this.CheckForDialogRTL = function() { var isUserAgentRtl = EBGlobalManager_CT2384137.IsUserAgentRtl(); var isFeedRtl = EBGlobalManager_CT2384137.IsLanguageRtl(this.m_oFeedComponent.FeedData.Data.Language); var direction = (isFeedRtl) ? 'rtl' : 'ltr'; //adjust text direction and alignment EBFeedDialogConsts_CT2384137.Style.BoxFeedItemFixedStyle += 'direction: ' + direction + ';text-align:left;'; var boxMain = document.getAnonymousElementByAttribute(this.xulMenuPopup, "id", "boxMain"); //adjust background if (isFeedRtl) this.xulMenuPopup.style.textAlign = "right"; //else // boxMain.className = "eb-feed"; }; this.LoadDialogData = function() { this.LoadHeaderData(); if (!this.m_oFeedComponent.IsLiveMode) this.LoadFeedItemsData(); else this.LoadLiveFeedItemsData(); }; this.LoadHeaderData = function() { var strFeedTitle = this.m_oFeedComponent.FeedData.Data.Title; strFeedTitle = EBXML_CT2384137.FromLegalXml(strFeedTitle); this.lblTitle.setAttribute('value', strFeedTitle); }; this.OnClickComments = function(event, strCommentsLink) { this.NavigateToURL(event, strCommentsLink); }; this.OnClickLabelTitle = function(event) { var strFeedLink = this.m_oFeedComponent.FeedData.Data.Link; this.NavigateToURL(event, strFeedLink); }; this.NullifyFeedItemsContainer = function() { var oContainer = document.getAnonymousElementByAttribute(this.xulMenuPopup, "id", 'rowsItems'); while (oContainer.childNodes.length > 0) oContainer.removeChild(oContainer.firstChild); }; this.LoadFeedItemsData = function() { this.NullifyFeedItemsContainer(); this.m_oFeedComponent.NumOfNew = 0; var oHistoryItemDataArrayHash = this.m_oFeedComponent.HistoryData.ArrayHash; var oFeedItemDataArrayHash = this.m_oFeedComponent.FeedData.Items.ArrayHash; var oFeedItemData = null; var strHashKey = ''; var iCount = oFeedItemDataArrayHash.Count(); for (var i = 0; i < iCount; i++) { oFeedItemData = oFeedItemDataArrayHash.GetByIndex(i); strHashKey = oFeedItemData.Link; //only if it's not in the history loads it if (!oHistoryItemDataArrayHash.Contains(strHashKey)) { if (oFeedItemData.Status == EBFeedXMLConsts_CT2384137.UNREAD) this.m_oFeedComponent.NumOfNew++; this.LoadFeedItemData(oFeedItemData, i); } } this.updateActionButtons(); //set the scroll top document.getAnonymousElementByAttribute(this.xulMenuPopup, "id", 'divContainer').scrollTop = this.m_oFeedComponent.ContainerScrollTop; }; this.updateActionButtons = function() { var iCount = this.m_oFeedComponent.FeedData.Items.ArrayHash.Count(); //Enable/Disbale action buttons if (this.m_oFeedComponent.NumOfNew == 0 && this.imgRead) this.imgRead.manager.disable(); if (iCount == 0) { if (this.imgDelete) this.imgDelete.manager.disable(); if (this.imgRead) this.imgRead.manager.disable(); if (this.imgUnread) this.imgUnread.manager.disable(); } else if (iCount == this.m_oFeedComponent.NumOfNew) { if (this.imgDelete) this.imgDelete.manager.enable(); if (this.imgRead) this.imgRead.manager.enable(); if (this.imgUnread) this.imgUnread.manager.disable(); } else { if (this.imgDelete) this.imgDelete.manager.enable(); if (this.imgRead) this.imgRead.manager.enable(); if (this.imgUnread) this.imgUnread.manager.enable(); } }; this.LoadLiveFeedItemsData = function() { this.NullifyFeedItemsContainer(); this.m_oFeedComponent.NumOfNew = 0; var oFeedItemDataArrayHash = this.m_oFeedComponent.FeedData.Items.ArrayHash; var oFeedItemData = null; var strHashKey = ''; var iCount = oFeedItemDataArrayHash.Count(); for (var i = 0; i < iCount; i++) { oFeedItemData = oFeedItemDataArrayHash.GetByIndex(i); this.LoadFeedItemData(oFeedItemData, i); } //Hide Buttons document.getAnonymousElementByAttribute(this.xulMenuPopup, "id", "eb-feed-icons").style.display = 'none'; //set the scroll top document.getAnonymousElementByAttribute(this.xulMenuPopup, "id", 'divContainer').scrollTop = this.m_oFeedComponent.ContainerScrollTop; }; this.LoadFeedItemData = function(oFeedItemData, iIndex) { var strTitle = oFeedItemData.Title; var strLink = oFeedItemData.Link; var strTooltip = oFeedItemData.Tooltip; var strStatus = oFeedItemData.Status; var bVisited = oFeedItemData.Visited; var manager = this; var oEnvImage = document.createElement('image'); var strImage = ''; if (strStatus == EBFeedXMLConsts_CT2384137.READ) strImage = EBFeedDialogConsts_CT2384137.Images.EnvRead; else strImage = EBFeedDialogConsts_CT2384137.Images.EnvUnread; var strLabelTextStyleColor = ''; if (bVisited) strLabelTextStyleColor = EBFeedDialogConsts_CT2384137.Style.LabelTextVisitedStyleColor; else strLabelTextStyleColor = EBFeedDialogConsts_CT2384137.Style.LabelTextUnVisitedStyleColor; oEnvImage.setAttribute('src', strImage); oEnvImage.setAttribute('width', '24'); oEnvImage.setAttribute('height', '16'); var oBoxLabel = document.createElement('box'); oBoxLabel.setAttribute('align', EBFeedDialogConsts_CT2384137.Style.BoxLabelAlign); oBoxLabel.setAttribute('style', EBFeedDialogConsts_CT2384137.Style.BoxFeedItemFixedStyle + EBFeedDialogConsts_CT2384137.Style.BoxFeedItemDefaultStyle); oBoxLabel.onmouseover = function(e) { manager.OnMouseOverBoxFeedItem(e, this); }; oBoxLabel.onmouseout = function(e) { manager.OnMouseOutBoxFeedItem(e, this); }; oBoxLabel.onmousedown = function(e) { manager.OnMouseDownBoxFeedItem(e, this); }; oBoxLabel.onmouseup = function(e) { manager.OnMouseUpBoxFeedItem(e, this); }; oBoxLabel.onclick = function(e) { manager.OnClickBoxFeedItem(e, this); }; //add link special attribute oBoxLabel.setAttribute(EBFeedDialogConsts_CT2384137.Attributes.Link, strLink); //add index special attribute oBoxLabel.setAttribute(EBFeedDialogConsts_CT2384137.Attributes.Index, iIndex); var oLabel = document.createElement('label'); strTitle = EBXML_CT2384137.FromLegalXml(strTitle); oLabel.setAttribute('value', EBGlobalManager_CT2384137.htmlDecode(strTitle)); oLabel.setAttribute('name', 'feedTitle'); if (EBGlobalManager_CT2384137.IsFirefox3()) oLabel.setAttribute('tooltiptext', strTooltip); oLabel.setAttribute('style', EBFeedDialogConsts_CT2384137.Style.LabelFeedItemFixedStyle + strLabelTextStyleColor); oLabel.onmouseover = function(e) { manager.OnMouseOverLabelFeedItem(e, this, strLabelTextStyleColor); }; oLabel.onmouseout = function(e) { manager.OnMouseOutLabelFeedItem(e, this, strLabelTextStyleColor); }; oBoxLabel.appendChild(oLabel); //create the hbox container: var oRow = document.createElement('hbox'); oRow.setAttribute('align', 'center'); oRow.setAttribute('height', '20'); //add the elements to the hbox oRow.appendChild(oEnvImage); oRow.appendChild(oBoxLabel); //add to the main container var oRowsItems = document.getAnonymousElementByAttribute(this.xulMenuPopup, "id", 'rowsItems'); oRowsItems.appendChild(oRow); if (this.m_oFeedComponent.IsLiveMode) oEnvImage.style.visibility = 'hidden'; }; this.OnCommandDeleteMessage = function(event) { //find the element associated with the popup menu: var oElement = this.contextItem; var oBoxLabel = null; var oRow = null; if (oElement.tagName == 'label') oBoxLabel = oElement.parentNode; else oBoxLabel = oElement; var strLink = oBoxLabel.getAttribute(EBFeedDialogConsts_CT2384137.Attributes.Link); var oFeedItemDataArrayHash = this.m_oFeedComponent.FeedData.Items.ArrayHash; //check to update num of new var oFeedItemData = oFeedItemDataArrayHash.GetByID(strLink); if (oFeedItemData) { if (oFeedItemData.Status == EBFeedXMLConsts_CT2384137.UNREAD) this.m_oFeedComponent.NumOfNew--; var iIndex = oFeedItemDataArrayHash.GetIndexByObjectValue(oFeedItemData); //remove it from feed data oFeedItemDataArrayHash.Remove(iIndex, strLink); //add it to the history data: var oHistoryItemDataArrayHash = this.m_oFeedComponent.HistoryData.ArrayHash; var oHistoryItemData = new EBHistoryItemData_CT2384137(strLink); oHistoryItemDataArrayHash.Add(oHistoryItemData.Link, oHistoryItemData); //remove the element from the main rows oRow = oBoxLabel.parentNode; var oContainer = document.getAnonymousElementByAttribute(this.xulMenuPopup, "id", 'rowsItems'); oContainer.removeChild(oRow); //update multi feed menu this.UpdateMultiFeedMenu(); //save the data to the files this.SaveDataAndUpdate(); } var strAncestorId = this.m_oFeedComponent.MultiFeedCompID; var strCompId = this.m_oFeedComponent.ComponentItem.UniqueCompID; var strCompType = this.m_oFeedComponent.ComponentItem.CompType; this.usgDeleteItem(strAncestorId, strCompId, strCompType); this.updateActionButtons(); }; this.sendMenuItemClickUsage = function(strLink, iIndex, oBoxLabel, bIsNewTab, bIsNewWindow) { var strAncestorId = this.m_oFeedComponent.MultiFeedCompID; var strCompId = this.m_oFeedComponent.ComponentItem.UniqueCompID; var iCount = this.m_oFeedComponent.FeedData.Items.ArrayHash.Count(); var strCompType = this.m_oFeedComponent.ComponentItem.CompType; //for twitter var twitterUserId = (this.m_oFeedComponent.ComponentItem.userId) ? this.m_oFeedComponent.ComponentItem.userId : ""; var userScreenName = (this.m_oFeedComponent.ComponentItem.screenName) ? this.m_oFeedComponent.ComponentItem.screenName : ""; this.usgOpenItem(strAncestorId, strCompId, this.m_oFeedComponent.ComponentItem.FeedURL, strLink, bIsNewWindow, bIsNewTab, iIndex, iCount, strCompType, twitterUserId, userScreenName); }; this.OnCommandShowInNewWindow = function(event, bIsTab) { //find the element associated with the popup menu: var oElement = this.contextItem; var oBoxLabel = null; var oRow = null; if (oElement.tagName == 'label') oBoxLabel = oElement.parentNode; else oBoxLabel = oElement; var strLink = oBoxLabel.getAttribute(EBFeedDialogConsts_CT2384137.Attributes.Link); var iIndex = oBoxLabel.getAttribute(EBFeedDialogConsts_CT2384137.Attributes.Index); var oFeedItemDataArrayHash = this.m_oFeedComponent.FeedData.Items.ArrayHash; var oFeedItemData = oFeedItemDataArrayHash.GetByID(strLink); //set not stared: this.setNotStarred(); //update read status and number of unread if (oFeedItemData.Status == EBFeedXMLConsts_CT2384137.UNREAD) { //update the num of new if (!this.m_oFeedComponent.IsLiveMode) this.m_oFeedComponent.NumOfNew--; oFeedItemData.Status = EBFeedXMLConsts_CT2384137.READ; } oFeedItemData.Visited = true; this.SaveDataAndUpdate(); //usage this.sendMenuItemClickUsage(strLink, iIndex, oBoxLabel, bIsTab, !bIsTab); strLink = EBXML_CT2384137.FromLegalXml(strLink); if (bIsTab) EBWeb_CT2384137.LoadURLInNewTab(oFeedItemData.Link); else oWindow = EBWeb_CT2384137.LoadURLInNewWindow(oFeedItemData.Link); EBFeedUIManager_CT2384137.closeFeed(this.xulMenuPopup); }; this.SetFeedItemsImages = function(strStatus) { var strImage = ''; if (strStatus == EBFeedXMLConsts_CT2384137.READ) strImage = EBFeedDialogConsts_CT2384137.Images.EnvRead; else strImage = EBFeedDialogConsts_CT2384137.Images.EnvUnread; var oContainer = document.getAnonymousElementByAttribute(this.xulMenuPopup, "id", 'rowsItems'); var oImages = oContainer.getElementsByTagName('image'); var oImage = null; for (var i = 0; i < oImages.length; i++) { oImage = oImages[i]; oImage.setAttribute('src', strImage); } }; this.OnClickBoxFeedItem = function(event, oElement) { //right click if (event.button == 2) this.openContextBox(event); //left or middle click else if (event.button != 2) { //get the special attribute to recieve this item from the hash var strLinkHashKey = oElement.getAttribute(EBFeedDialogConsts_CT2384137.Attributes.Link); var iIndex = oElement.getAttribute(EBFeedDialogConsts_CT2384137.Attributes.Index); var oFeedItemData = this.m_oFeedComponent.FeedData.Items.ArrayHash.GetByID(strLinkHashKey); if (oFeedItemData) { //set not stared: this.setNotStarred(); if (oFeedItemData.Status == EBFeedXMLConsts_CT2384137.UNREAD) { //update the num of new if (!this.m_oFeedComponent.IsLiveMode) this.m_oFeedComponent.NumOfNew--; oFeedItemData.Status = EBFeedXMLConsts_CT2384137.READ; } oFeedItemData.Visited = true; this.SaveDataAndUpdate(); //send usage this.sendMenuItemClickUsage(strLinkHashKey, iIndex, event.target, event.button == 1, false); this.NavigateToURL(event, oFeedItemData.Link); } } }; this.openContextBox = function(event) { this.xulContext.style.display = ""; var xulOpenInNewTab = document.getAnonymousElementByAttribute(this.xulMenuPopup, "id", "contextNewTab"); //this.xulContext.childNodes[1].firstChild; var xulOpenInNewWindow = document.getAnonymousElementByAttribute(this.xulMenuPopup, "id", "contextNewWindow"); //this.xulContext.childNodes[1].childNodes[1]; var xulDeleteItem = document.getAnonymousElementByAttribute(this.xulMenuPopup, "id", "contextDelete"); //this.xulContext.childNodes[1].childNodes[2]; var manager = this; //set manually the item associated with the context this.contextItem = event.currentTarget; //FF 3+ if (EBGlobalManager_CT2384137.IsFirefox3()) { var mouseX = event.layerX; var mouseY = event.layerY; var iScroll = parseInt(document.getAnonymousElementByAttribute(this.xulMenuPopup, "id", 'divContainer').scrollTop); mouseY -= iScroll; //lazy calculation of xulContext width if (!this.xulContextWidth) this.xulContextWidth = this.xulContext.boxObject.width; if (!this.xulContextHeight) this.xulContextHeight = this.xulContext.boxObject.height; if (mouseX + this.xulContextWidth > this.xulStack.boxObject.width) mouseX = this.xulStack.boxObject.width - this.xulContextWidth - 10; if (mouseY + this.xulContextHeight > this.xulStack.boxObject.height) mouseY = this.xulStack.boxObject.height - this.xulContextHeight; this.xulContext.setAttribute("top", mouseY); this.xulContext.setAttribute("left", mouseX); } //FF 2- else { var xulRows = document.getAnonymousElementByAttribute(this.xulMenuPopup, "id", "rowsItems"); xulRows.insertBefore(this.xulContext, event.currentTarget.parentNode.nextSibling); } }; this.NavigateToURL = function(event, strURL) { strURL = EBXML_CT2384137.FromLegalXml(strURL); EBLinkManager_CT2384137.LoadLinkURL(event, strURL, false, null); //close feed popup / meltifeed menupopup EBFeedUIManager_CT2384137.closeFeed(this.xulMenuPopup); }; this.OnMouseOverLabelFeedItem = function(event, oElement, strLabelTextStyleColor) { var strStyle = EBFeedDialogConsts_CT2384137.Style.LabelFeedItemFixedStyle + strLabelTextStyleColor + EBFeedDialogConsts_CT2384137.Style.LabelFeedItemHoverStyle; oElement.setAttribute('style', strStyle); }; this.OnMouseOutLabelFeedItem = function(event, oElement, strLabelTextStyleColor) { var strStyle = EBFeedDialogConsts_CT2384137.Style.LabelFeedItemFixedStyle + strLabelTextStyleColor; oElement.setAttribute('style', strStyle); }; this.OnMouseOverBoxFeedItem = function(event, oElement) { var strStyle = EBFeedDialogConsts_CT2384137.Style.BoxFeedItemFixedStyle + EBFeedDialogConsts_CT2384137.Style.BoxFeedItemHoverStyle; oElement.setAttribute('style', strStyle); if (this.contextItem && this.contextItem.getAttribute(EBFeedDialogConsts_CT2384137.Attributes.Index) != oElement.getAttribute(EBFeedDialogConsts_CT2384137.Attributes.Index)) this.xulContext.style.display = "none"; }; this.OnMouseOutBoxFeedItem = function(event, oElement) { var strStyle = EBFeedDialogConsts_CT2384137.Style.BoxFeedItemFixedStyle + EBFeedDialogConsts_CT2384137.Style.BoxFeedItemDefaultStyle; //clear the image style if (!this.m_oFeedComponent.IsLiveMode) oElement.parentNode.firstChild.setAttribute('style', ''); oElement.setAttribute('style', strStyle); }; this.OnMouseDownBoxFeedItem = function(event, oElement) { if (event.button == 0) { var strStyle = EBFeedDialogConsts_CT2384137.Style.BoxFeedItemFixedStyle + EBFeedDialogConsts_CT2384137.Style.BoxFeedItemHoverStyle + EBFeedDialogConsts_CT2384137.Style.BoxFeedItemDownStyle; //set the image to be click style as well if (!this.m_oFeedComponent.IsLiveMode) { oElement.parentNode.firstChild.setAttribute('style', EBFeedDialogConsts_CT2384137.Style.ImageFeedItemDownStyle); } oElement.setAttribute('style', strStyle); } }; this.OnMouseUpBoxFeedItem = function(event, oElement) { if (event.button == 0) { var strStyle = EBFeedDialogConsts_CT2384137.Style.BoxFeedItemFixedStyle + EBFeedDialogConsts_CT2384137.Style.BoxFeedItemHoverStyle; //clear the image style oElement.parentNode.firstChild.setAttribute('style', ''); oElement.setAttribute('style', strStyle); } }; this.OnClickRefresh = function(event) { EBFeedPreferencesManager_CT2384137.NullifyFeedPollDate(this.m_oFeedComponent); EBFeedManager_CT2384137.CheckServerRequest(this.m_oFeedComponent); //usage var strAncestorId = this.m_oFeedComponent.MultiFeedCompID; var strCompId = this.m_oFeedComponent.ComponentItem.UniqueCompID; var strCompType = this.m_oFeedComponent.ComponentItem.CompType; this.usgRefresh(strAncestorId, strCompId, strCompType); }; this.OnAcceptConfirmDialog = function(event) { oInput.value = true; }; this.OnClickDeleteAll = function(event) { //usage var strAncestorId = this.m_oFeedComponent.MultiFeedCompID; var strCompId = this.m_oFeedComponent.ComponentItem.UniqueCompID; var strCompType = this.m_oFeedComponent.ComponentItem.CompType; this.usgDeleteAll(strAncestorId, strCompId, strCompType); var locale = EBToolbarPreferenceManager_CT2384137.GetPref(EBPreferenceConsts_CT2384137.Locale); var strTitle = oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_RSS_DELETE_ALL_ITEMS_TITLE'); var strText = oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_RSS_DELETE_ALL_ITEMS_MESSAGE'); var strCheckboxText = oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_RSS_DELETE_ALL_ITEMS_DONT_ASK_AGAIN'); var checkboxValue = { "value": false }; var isDelete = EBGlobalPreferenceManager_CT2384137.GetPref(EBPreferenceConsts_CT2384137.FeedDeleteDontAskAgain); var bClearFeed = true; if (!isDelete) { bClearFeed = false; EBFeedUIManager_CT2384137.closeFeed(this.xulMenuPopup); isDelete = EBGlobalManager_CT2384137.ConfirmCheck(window, strTitle, strText, strCheckboxText, checkboxValue); } if (isDelete) { this._DeleteAll(event, bClearFeed); if (checkboxValue.value) EBGlobalPreferenceManager_CT2384137.SetPref(EBPreferenceConsts_CT2384137.FeedDeleteDontAskAgain, true); } }; this._DeleteAll = function(event, bClearFeed) { //add all items in structured data to the history data: var oHistoryItemDataArrayHash = this.m_oFeedComponent.HistoryData.ArrayHash; var oHistoryItemData = null; var oFeedItemDataArrayHash = this.m_oFeedComponent.FeedData.Items.ArrayHash; var oFeedItemData = null; var iCount = oFeedItemDataArrayHash.Count(); var strLink = ''; for (var i = 0; i < iCount; i++) { oFeedItemData = oFeedItemDataArrayHash.GetByIndex(i); strLink = oFeedItemData.Link; if (!oHistoryItemDataArrayHash.Contains(strLink)) { oHistoryItemData = new EBHistoryItemData_CT2384137(strLink); oHistoryItemDataArrayHash.Add(oHistoryItemData.Link, oHistoryItemData); } } //clear the feed items hash array oFeedItemDataArrayHash.Clear(); this.setNotStarred(); this.m_oFeedComponent.NumOfNew = 0; this.SaveDataAndUpdate(); if (bClearFeed) this.reload(this.m_oFeedComponent); }; this.OnClickMarkRead = function(event) { //set all images read this.SetFeedItemsImages(EBFeedXMLConsts_CT2384137.READ); //set data var oHistoryItemDataArrayHash = this.m_oFeedComponent.HistoryData.ArrayHash; var oFeedItemDataArrayHash = this.m_oFeedComponent.FeedData.Items.ArrayHash; var oFeedItemData = null; var iCount = oFeedItemDataArrayHash.Count(); for (var i = 0; i < iCount; i++) { oFeedItemData = oFeedItemDataArrayHash.GetByIndex(i); if (!oHistoryItemDataArrayHash.Contains(oFeedItemData.Link)) oFeedItemData.Status = EBFeedXMLConsts_CT2384137.READ; } this.m_oFeedComponent.NumOfNew = 0; this.setNotStarred(); if (this.imgRead) this.imgRead.manager.disable(); if (this.imgUnread) this.imgUnread.manager.enable(); //usage var strAncestorId = this.m_oFeedComponent.MultiFeedCompID; var strCompId = this.m_oFeedComponent.ComponentItem.UniqueCompID; var strCompType = this.m_oFeedComponent.ComponentItem.CompType; EBUsageRss_CT2384137.MarkAllRead(strAncestorId, strCompId, strCompType); this.SaveDataAndUpdate(); }; this.OnClickMarkUnRead = function(event) { //set all images unread this.SetFeedItemsImages(EBFeedXMLConsts_CT2384137.UNREAD); //set data this.m_oFeedComponent.NumOfNew = 0; var oHistoryItemDataArrayHash = this.m_oFeedComponent.HistoryData.ArrayHash; var oFeedItemDataArrayHash = this.m_oFeedComponent.FeedData.Items.ArrayHash; var oFeedItemData = null; var iCount = oFeedItemDataArrayHash.Count(); for (var i = 0; i < iCount; i++) { oFeedItemData = oFeedItemDataArrayHash.GetByIndex(i); if (!oHistoryItemDataArrayHash.Contains(oFeedItemData.Link)) { this.m_oFeedComponent.NumOfNew++; oFeedItemData.Status = EBFeedXMLConsts_CT2384137.UNREAD; } } if (this.imgUnread) this.imgUnread.manager.disable(); if (this.imgRead) this.imgRead.manager.enable(); //usage var strAncestorId = this.m_oFeedComponent.MultiFeedCompID; var strCompId = this.m_oFeedComponent.ComponentItem.UniqueCompID; var strCompType = this.m_oFeedComponent.ComponentItem.CompType; EBUsageRss_CT2384137.MarkAllUnRead(strAncestorId, strCompId, strCompType); this.SaveDataAndUpdate(); }; this.OnUnLoadDialog = function(event) { try { this.xulContext.style.display = "none"; if (this.xulContext.parentNode.id != this.xulStack.id) this.xulStack.appendChild(this.xulContext); //save the scroll top this.m_oFeedComponent.ContainerScrollTop = document.getAnonymousElementByAttribute(this.xulMenuPopup, "id", 'divContainer').scrollTop; //set the starred to false this.setNotStarred(); //empty container this.NullifyFeedItemsContainer(); //save the data to the files this.SaveDataAndUpdate(); //usage var strAncestorId = this.m_oFeedComponent.MultiFeedCompID; var strCompId = this.m_oFeedComponent.ComponentItem.UniqueCompID; var strFeedUrl = this.m_oFeedComponent.ComponentItem.FeedURL var strCompType = this.m_oFeedComponent.ComponentItem.CompType; this.usgClose(strAncestorId, strCompId, strFeedUrl, strCompType); } catch (ex) { EBLog(ex, "Rss.OnUnLoadDialog"); } }; this.setNotStarred = function() { this.m_oFeedComponent.FeedData.Data.Stared = false; //update multi rss menu if (this.m_oFeedComponent.IsMultiFeed && !this.m_oFeedComponent.IsLiveMode) EBFeedUIManager_CT2384137.removeStarOnMultiRssMenu(this.xulMenuPopup, this.m_oFeedComponent.MultiFeedCompID); }; this.SaveDataAndUpdate = function() { if (!this.m_oFeedComponent.IsLiveMode) { EBFeedManager_CT2384137.SaveFeedDataStructured(this.m_oFeedComponent); EBFeedManager_CT2384137.SaveFeedDataHistory(this.m_oFeedComponent); } EBFeedManager_CT2384137.notifyUpdate(this.m_oFeedComponent); }; this.UpdateMultiFeedMenu = function() { if (this.m_oFeedComponent.IsMultiFeed) EBFeedUIManager_CT2384137.updateMultiFeedMenu(this.m_oFeedComponent.MultiFeedCompID, this.xulMenuPopup.parentNode.parentNode, this.m_oFeedComponent.MultiFeedChildIndex); }; this.ApplyLanguagePack = function() { var xulOpenInNewTab = document.getAnonymousElementByAttribute(this.xulMenuPopup, "id", "contextNewTab"); var xulOpenInNewWindow = document.getAnonymousElementByAttribute(this.xulMenuPopup, "id", "contextNewWindow"); var xulDeleteItem = document.getAnonymousElementByAttribute(this.xulMenuPopup, "id", "contextDelete"); var locale = EBToolbarPreferenceManager_CT2384137.GetPref(EBPreferenceConsts_CT2384137.Locale); if (this.imgComments) this.imgComments.setAttribute("tooltiptext", oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_RSS_ADD_YOUR_COMMET_TO_BOX')); if (this.imgRefresh) this.imgRefresh.setAttribute("tooltiptext", oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_RSS_REFRESH_TOOLTIP')); if (this.imgDelete) this.imgDelete.setAttribute("tooltiptext", oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_RSS_DELETE_ALL_ITEMS_TOOLTIP')); if (this.imgRead) this.imgRead.setAttribute("tooltiptext", oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_RSS_MARK_ALL_AS_READ_TOOLTIP')); if (this.imgUnread) this.imgUnread.setAttribute("tooltiptext", oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_RSS_MARK_ALL_AS_UNREAD_TOOLTIP')); xulOpenInNewTab.value = oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_RSS_OPEN_IN_NEW_TAB'); xulOpenInNewWindow.value = oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_RSS_OPEN_IN_NEW_WINDOW'); xulDeleteItem.value = oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_RSS_DELETE_MESSAGE'); }; if(this.xulMenuPopup && this.m_oFeedComponent) this.init(); }; var EBFeedIOConsts_CT2384137 = { FolderName : 'feed', StructuredFileNameSuffix : '_structured.xml', HistoryFileNameSuffix : '_history.xml', LiveFileNameSuffix : '_live_structured.xml' } var EBFeedIOManager_CT2384137 = { GetLegalFeedFileNamePrefix: function(strURL) { var strFileNamePrefix = EBGlobalManager_CT2384137.ToLegalFileName(strURL); return strFileNamePrefix; }, GetFeedFullPath: function(strFullFileName) { var strFeedFolder = EBFeedIOConsts_CT2384137.FolderName; var strFeedFullPath = strFeedFolder + EBDirIO_CT2384137.sep + strFullFileName; return strFeedFullPath; }, GetFeedFile: function(strFileName) { var strFeedFullPath = this.GetFeedFullPath(strFileName); var oFile = EBIOManager_CT2384137.CreateToolbarFile(strFeedFullPath); return oFile; }, WriteFeedFile: function(strFileName, strContent) { var bSuccess = false; var oFile = this.GetFeedFile(strFileName); if (oFile) { bSuccess = EBFileIO_CT2384137.write(oFile, strContent, "", EBGlobalConsts_CT2384137.DefaultCharset); } return bSuccess; }, ReadFeedFile: function(strFileName) { var strContent = ''; var oFile = this.GetFeedFile(strFileName); if (oFile) { strContent = EBFileIO_CT2384137.read(oFile, EBGlobalConsts_CT2384137.DefaultCharset); } return strContent; }, GetFullStructuredFileName: function(strURL) { var strFileNamePrefix = this.GetLegalFeedFileNamePrefix(strURL); var strStructuredFileName = strFileNamePrefix + EBFeedIOConsts_CT2384137.StructuredFileNameSuffix; return strStructuredFileName; }, GetFullHistoryFileName: function(strURL) { var strFileNamePrefix = this.GetLegalFeedFileNamePrefix(strURL); var strHistoryFileName = strFileNamePrefix + EBFeedIOConsts_CT2384137.HistoryFileNameSuffix; return strHistoryFileName; }, GetFullLiveFileName: function(strURL) { var strFileNamePrefix = this.GetLegalFeedFileNamePrefix(strURL); var strLiveFileName = strFileNamePrefix + EBFeedIOConsts_CT2384137.LiveFileNameSuffix; return strLiveFileName; }, WriteStructured: function(strURL, strContent) { var strStructuredFileName = this.GetFullStructuredFileName(strURL); this.WriteFeedFile(strStructuredFileName, strContent); }, WriteHistory: function(strURL, strContent) { var strHistoryFileName = this.GetFullHistoryFileName(strURL); this.WriteFeedFile(strHistoryFileName, strContent); }, WriteLive: function(strURL, strContent) { var strLiveFileName = this.GetFullLiveFileName(strURL); this.WriteFeedFile(strLiveFileName, strContent); }, ReadStructured: function(strURL) { var strStructuredFileName = this.GetFullStructuredFileName(strURL); var strContent = this.ReadFeedFile(strStructuredFileName); return strContent; }, ReadHistory: function(strURL) { var strHistoryFileName = this.GetFullHistoryFileName(strURL); var strContent = this.ReadFeedFile(strHistoryFileName); return strContent; }, ReadLive: function(strURL) { var strLiveFileName = this.GetFullLiveFileName(strURL); var strContent = this.ReadFeedFile(strLiveFileName); return strContent; } } var EBFeedPreferencesManager_CT2384137 = { GetFeedPollDateFullPrefName : function(oFeedComponent) { var strPrefName = EBPreferenceConsts_CT2384137.FeedPollDatePrefix + oFeedComponent.ComponentItem.UniqueCompID; return strPrefName; }, GetFeedTTLFullPrefName: function(oFeedComponent) { var strPrefName = EBPreferenceConsts_CT2384137.FeedTTLPrefix + oFeedComponent.ComponentItem.UniqueCompID; return strPrefName; }, GetFeedPollDate : function(oFeedComponent) { var strPrefName = this.GetFeedPollDateFullPrefName(oFeedComponent); var strPrefValue = EBToolbarPreferenceManager_CT2384137.GetPref(strPrefName); return strPrefValue; }, SetFeedPollDate : function(oFeedComponent) { var strPrefName = this.GetFeedPollDateFullPrefName(oFeedComponent); var oDate = new Date(); var strPrefValue = oDate.toString(); EBToolbarPreferenceManager_CT2384137.SetPref(strPrefName,strPrefValue); }, NullifyFeedPollDate : function(oFeedComponent) { var strPrefName = this.GetFeedPollDateFullPrefName(oFeedComponent); EBToolbarPreferenceManager_CT2384137.SetPref(strPrefName,null); }, FeedTTL: function(oFeedComponent, iTTL) { var strPrefName = this.GetFeedTTLFullPrefName(oFeedComponent); //get if (typeof iTTL == "undefined") return EBToolbarPreferenceManager_CT2384137.GetPref(strPrefName); //set else { var bIsChanged = (EBToolbarPreferenceManager_CT2384137.HasUserValue(strPrefName)) ? EBToolbarPreferenceManager_CT2384137.GetPref(strPrefName) != iTTL : true; EBToolbarPreferenceManager_CT2384137.SetPref(strPrefName, iTTL); return bIsChanged; } } } var EBFeedConsts_CT2384137 = { DefaultInterval : 60, MaxStructuredItems : 50, MaxHistoryItems : 200, NoTitleCaption : '(no title)', NoItemsCaption : 'No Items', Timeout : 30000, PrefFeedCountPrefix : 'FeedLastCount', Observer: { Topic_FeedObserver: 'EBFeedObserverTopic_CT2384137', Data_FeedReload: 'EBFeed_FeedReload' } } var EBFeedManager_CT2384137 = { SetFeedsCount: function(strId, iCount) { var strPrefName = EBFeedConsts_CT2384137.PrefFeedCountPrefix + strId; EBToolbarPreferenceManager_CT2384137.SetPref(strPrefName, iCount, true); }, GetFeedsCount: function(strId) { var strPrefName = EBFeedConsts_CT2384137.PrefFeedCountPrefix + strId; var iCount = EBToolbarPreferenceManager_CT2384137.GetPref(strPrefName, true); if (iCount == null) iCount = 0; return iCount; }, LoadFeedStructured: function(oFeedComponent, strXML) { var oFeedData = null; if (strXML) { var XMLDoc = EBXML_CT2384137.GetXmlDocument(strXML); oFeedData = EBFeedDataFactory_CT2384137.XMLToFeedData(XMLDoc); } //bug fix for previous releases, if no title, nullify last poll time, to get new and write it with title if (!oFeedData) //if it's not succeed load blank feed data oFeedData = this.CreateBlankFeedData(); oFeedComponent.FeedData = oFeedData; }, //the load functions load the data into the object! (as oppose to return the object); LoadEditableFeedStructured: function(oFeedComponent) { var strURL = oFeedComponent.ComponentItem.FeedURL; var strXML = EBFeedIOManager_CT2384137.ReadStructured(strURL); this.LoadFeedStructured(oFeedComponent, strXML); }, LoadLiveFeedStructured: function(oFeedComponent) { var strURL = oFeedComponent.ComponentItem.FeedURL; var strXML = EBFeedIOManager_CT2384137.ReadLive(strURL); this.LoadFeedStructured(oFeedComponent, strXML); }, LoadFeedHistory: function(oFeedComponent) { var strURL = oFeedComponent.ComponentItem.FeedURL; var oHistoryData = null; var strXML = EBFeedIOManager_CT2384137.ReadHistory(strURL); if (strXML) { var XMLDoc = EBXML_CT2384137.GetXmlDocument(strXML); oHistoryData = EBFeedDataFactory_CT2384137.XMLToHistoryData(XMLDoc); } if (!oHistoryData) { oHistoryData = this.CreateBlankHistoryData(); } oFeedComponent.HistoryData = oHistoryData; }, CreateBlankFeedData: function() { var oFeedDataData = new EBFeedDataData_CT2384137('', '', false, ''); var oFeedItemArrayHashData = new EBFeedItemArrayHashData_CT2384137(); var oFeedData = new EBFeedData_CT2384137(oFeedDataData, oFeedItemArrayHashData); return oFeedData; }, CreateBlankHistoryData: function() { var oHistoryItemDataArrayHash = new EBArrayHashObject_CT2384137(); var oHistoryData = new EBHistoryData_CT2384137(oHistoryItemDataArrayHash); return oHistoryData; }, SaveStructured: function(oFeedComponent) { var oFeedData = oFeedComponent.FeedData; var strURL = oFeedComponent.ComponentItem.FeedURL; var strXML = oFeedData.XMLSerialize(); EBFeedIOManager_CT2384137.WriteStructured(strURL, strXML); }, SaveHistory: function(oFeedComponent) { var oHistoryData = oFeedComponent.HistoryData; var strURL = oFeedComponent.ComponentItem.FeedURL; var strXML = oHistoryData.XMLSerialize(); EBFeedIOManager_CT2384137.WriteHistory(strURL, strXML); }, SaveLive: function(oFeedComponent) { var oFeedData = oFeedComponent.FeedData; var strURL = oFeedComponent.ComponentItem.FeedURL; var strXML = oFeedData.XMLSerialize(); EBFeedIOManager_CT2384137.WriteLive(strURL, strXML); }, OnLoadFeedItem: function(oFeedComponent) { this.LoadComponentData(oFeedComponent); this.CheckServerRequest(oFeedComponent); }, OnUnloadFeedItem: function(oFeedComponent) { this.ClearTimeoutID(oFeedComponent); }, ClearTimeoutID: function(oFeedComponent) { if (oFeedComponent.TimeoutID) { clearTimeout(oFeedComponent.TimeoutID); } }, CheckServerRequest: function(oFeedComponent) { if (this.IsTimeElapsed(oFeedComponent)) { //save poll date to now EBFeedPreferencesManager_CT2384137.SetFeedPollDate(oFeedComponent); this.ServerRequest(oFeedComponent); } else this.UpdateFeedData(oFeedComponent); this.SetTimeoutCheck(oFeedComponent); }, SetTimeoutCheck: function(oFeedComponent) { var oFunction = function() { EBFeedManager_CT2384137.CheckServerRequest(oFeedComponent); }; var iIntervalMinutes = this.GetFeedInterval(oFeedComponent); var iMillisecondInterval = iIntervalMinutes * 60 * 1000; oFeedComponent.TimeoutID = setTimeout(oFunction, iMillisecondInterval); }, ResetTimeoutCheck: function(oFeedComponent) { if (oFeedComponent.TimeoutID) clearTimeout(oFeedComponent.TimeoutID); this.SetTimeoutCheck(oFeedComponent); }, LoadComponentData: function(oFeedComponent) { if (oFeedComponent.IsLiveMode) { this.LoadLiveFeedStructured(oFeedComponent); } else { this.LoadEditableFeedStructured(oFeedComponent); this.LoadFeedHistory(oFeedComponent); } }, ServerRequest: function(oFeedComponent) { var strURL = oFeedComponent.ComponentItem.FeedURL; //set the flag of the loading from server: oFeedComponent.LoadingFromServer = true; var oCallBackFunction = function(strXML, o) { //check if window is still exists if (typeof EBFeedManager_CT2384137 != "undefined") EBFeedManager_CT2384137.ServerResponse(oFeedComponent, strXML, o); }; var oRequest = EBWeb_CT2384137.HTTPServerRequest(strURL, null, false, oCallBackFunction); this.CheckServerTimeout(oFeedComponent, oRequest); }, CheckServerTimeout: function(oFeedComponent, oRequest) { var oThreadFunction = function() { if (oFeedComponent.LoadingFromServer) { oRequest.abort(); if (oFeedComponent.isCustom) oFeedComponent.Invoke(false); else EBFeedManager_CT2384137.ServerResponse(oFeedComponent, '', null); } }; setTimeout(oThreadFunction, EBFeedConsts_CT2384137.Timeout); }, ServerResponse: function(oFeedComponent, strXML, o) { //the request is back so set the flag that it's not loading nomore: oFeedComponent.LoadingFromServer = false; if (oFeedComponent.isCustom) this.ParsePodcastFeed(oFeedComponent, strXML); else { if (oFeedComponent.IsLiveMode) this.ParseLiveFeed(oFeedComponent, strXML); else this.ParseEditableFeed(oFeedComponent, strXML); } }, ParseEditableFeed: function(oFeedComponent, strXML) { var XMLDoc = null; if (strXML) XMLDoc = EBXML_CT2384137.GetXmlDocument(strXML); var bIsNewItemsFromServer = false; var oFeedParser = new EBFeedParser_CT2384137(XMLDoc, EBFeedConsts_CT2384137.MaxStructuredItems, oFeedComponent.ComponentItem.Podcast); //save the TTL if (oFeedParser.TTL) { var bIsChanged = EBFeedPreferencesManager_CT2384137.FeedTTL(oFeedComponent, oFeedParser.TTL); if (bIsChanged) this.ResetTimeoutCheck(oFeedComponent); } var oFeedElementArrayHash = oFeedParser.ArrayHash; var oHistoryItemDataArrayHash = oFeedComponent.HistoryData.ArrayHash; var oFeedItemDataArrayHash = oFeedComponent.FeedData.Items.ArrayHash; //update feeddata data from server var strFeedTitle = oFeedParser.Title; var strFeedLink = oFeedParser.Link; oFeedComponent.FeedData.Data.Language = oFeedParser.Language; if (strFeedTitle) oFeedComponent.FeedData.Data.Title = strFeedTitle; else //if there isn't title take the title from the settings oFeedComponent.FeedData.Data.Title = oFeedComponent.ComponentItem.Title; if (strFeedLink) oFeedComponent.FeedData.Data.Link = strFeedLink; else //if there isn't link from the feed take the feed URL oFeedComponent.FeedData.Data.Link = oFeedComponent.ComponentItem.FeedURL; //compare between the items from the server to the items in the history and the structured if (oFeedElementArrayHash.Count() > 0) { var strTitle = ''; var strLink = ''; var strTooltip = ''; var strStatus = ''; var bVisited = false; //run on the items from the server var iCount = oFeedElementArrayHash.Count(); var oFeedElement = null; var bIsItemInStructured = false; var bIsItemInHistory = false; var strHashKey = ''; var oFeedItemData = null; //go backwards in the server items to add the newset items in the feed to the top of the structured ArrayHash for (var i = iCount - 1; i >= 0; i--) { oFeedElement = oFeedElementArrayHash.GetByIndex(i); strHashKey = oFeedElement.Link; //check structured bIsItemInStructured = oFeedItemDataArrayHash.Contains(strHashKey); //check history bIsItemInHistory = oHistoryItemDataArrayHash.Contains(strHashKey); //check to add this item to the structured if it's not in structured or in history if (!bIsItemInStructured && !bIsItemInHistory) { bIsNewItemsFromServer = true; //insert the new item to the structured hasharray strTitle = this.GetTitle(oFeedElement.Title); strLink = oFeedElement.Link; strTooltip = this.GetTooltipCaption(oFeedElement.Date); strStatus = EBFeedXMLConsts_CT2384137.UNREAD; oFeedItemData = new EBFeedItemData_CT2384137(strTitle, strLink, strTooltip, strStatus, bVisited); //insert to the top oFeedItemDataArrayHash.Insert(0, oFeedItemData.Link, oFeedItemData); } } } //check to save the data if (bIsNewItemsFromServer) { oFeedComponent.FeedData.Data.Stared = true; this.SaveFeedDataStructured(oFeedComponent); //check if there is dialog open with this component to refill it with the new data this.CheckToRefillDialog(oFeedComponent); } this.UpdateFeedData(oFeedComponent); }, ParsePodcastFeed: function(oFeedComponent, strXML) { var XMLDoc = null; if (strXML) XMLDoc = EBXML_CT2384137.GetXmlDocument(strXML); var bIsNewItemsFromServer = false; var oFeedParser = new EBFeedParser_CT2384137(XMLDoc, EBFeedConsts_CT2384137.MaxStructuredItems, oFeedComponent.ComponentItem.Podcast); //save the TTL if (oFeedParser.TTL) { var bIsChanged = EBFeedPreferencesManager_CT2384137.FeedTTL(oFeedComponent, oFeedParser.TTL); if (bIsChanged) this.ResetTimeoutCheck(oFeedComponent); } var oFeedElementArrayHash = oFeedParser.ArrayHash; var oFeedItemDataArrayHash = oFeedComponent.FeedData.Items.ArrayHash; oFeedItemDataArrayHash.Clear(); //update feeddata data from server var strFeedTitle = oFeedParser.Title; var strFeedLink = oFeedParser.Link; oFeedComponent.FeedData.Data.Language = oFeedParser.Language; if (strFeedTitle) oFeedComponent.FeedData.Data.Title = strFeedTitle; else //if there isn't title take the title from the settings oFeedComponent.FeedData.Data.Title = oFeedComponent.ComponentItem.Title; if (strFeedLink) oFeedComponent.FeedData.Data.Link = strFeedLink; else //if there isn't link from the feed take the feed URL oFeedComponent.FeedData.Data.Link = oFeedComponent.ComponentItem.FeedURL; //compare between the items from the server to the items in the history and the structured if (oFeedElementArrayHash.Count() > 0) { var strTitle = ''; var strLink = ''; var strTooltip = ''; var strStatus = ''; var bVisited = false; //run on the items from the server var iCount = oFeedElementArrayHash.Count(); var oFeedElement = null; var bIsItemInStructured = false; var bIsItemInHistory = false; var strHashKey = ''; var oFeedItemData = null; //go backwards in the server items to add the newset items in the feed to the top of the structured ArrayHash for (var i = 0; i < iCount; i++) { oFeedElement = oFeedElementArrayHash.GetByIndex(i); strHashKey = oFeedElement.Link; strTitle = this.GetTitle(oFeedElement.Title); strLink = oFeedElement.Link; strTooltip = this.GetTooltipCaption(oFeedElement.Date); strStatus = EBFeedXMLConsts_CT2384137.UNREAD; oFeedItemData = new EBFeedItemData_CT2384137(strTitle, strLink, strTooltip, strStatus, bVisited); //insert to the top oFeedItemDataArrayHash.Add(oFeedItemData.Link, oFeedItemData); } } oFeedComponent.FeedData.Data.Stared = true; this.SaveFeedDataStructured(oFeedComponent); this.UpdateFeedData(oFeedComponent); }, ParseLiveFeed: function(oFeedComponent, strXML) { var XMLDoc = null; if (strXML) XMLDoc = EBXML_CT2384137.GetXmlDocument(strXML); var oFeedParser = new EBFeedParser_CT2384137(XMLDoc, EBFeedConsts_CT2384137.MaxStructuredItems); //save the TTL if (oFeedParser.TTL) { var bIsChanged = EBFeedPreferencesManager_CT2384137.FeedTTL(oFeedComponent, oFeedParser.TTL); if (bIsChanged) this.ResetTimeoutCheck(oFeedComponent); } var oFeedElementArrayHash = oFeedParser.ArrayHash; var oFeedItemDataArrayHash = oFeedComponent.FeedData.Items.ArrayHash; var strFeedTitle = oFeedParser.Title; oFeedComponent.FeedData.Data.Language = oFeedParser.Language; if (strFeedTitle) oFeedComponent.FeedData.Data.Title = strFeedTitle; else //if there isn't title take the title from the settings oFeedComponent.FeedData.Data.Title = oFeedComponent.ComponentItem.Title; //check first if there is something new from the server: var bIsNewItems = false; var iCount = oFeedElementArrayHash.Count(); var oFeedElement = null; var i; for (i = 0; i < iCount; i++) { oFeedElement = oFeedElementArrayHash.GetByIndex(i); strHashKey = oFeedElement.Link; //check if exists: if (!oFeedItemDataArrayHash.Contains(strHashKey)) { bIsNewItems = true; break; } } //if there is new items - clear all the existing ones and add what comes from the server if (bIsNewItems) { //clear all the items in the feed item data array hash: oFeedItemDataArrayHash.Clear(); var strTitle = ''; var strLink = ''; var strTooltip = ''; var strStatus = ''; var bVisited = false; var oFeedItemData = null; for (i = 0; i < iCount; i++) { oFeedElement = oFeedElementArrayHash.GetByIndex(i); //in the live mode there isn't any need for tooltip and status //but i keep them in case this live mode will become regular mode and becasue //the live and editable mode save in the same data structure type strTitle = this.GetTitle(oFeedElement.Title); strLink = oFeedElement.Link; strTooltip = this.GetTooltipCaption(oFeedElement.Date); strStatus = EBFeedXMLConsts_CT2384137.UNREAD; oFeedItemData = new EBFeedItemData_CT2384137(strTitle, strLink, strTooltip, strStatus, bVisited); //insert to the top oFeedItemDataArrayHash.Add(oFeedItemData.Link, oFeedItemData); } //save the data and broadcast oFeedComponent.FeedData.Data.Stared = true; this.SaveFeedDataStructured(oFeedComponent); } this.notifyUpdate(oFeedComponent); }, CheckToRefillDialog: function(oFeedComponent) { //if there is opened feed popup, update it try { var popup = EBFeedUIManager_CT2384137.currentFeedPopup; if (!popup || !popup.manager || !popup.manager.reload || popup.manager.m_oFeedComponent.ComponentItem.UniqueCompID != oFeedComponent.ComponentItem.UniqueCompID) return; EBFeedUIManager_CT2384137.currentFeedPopup.manager.reload(oFeedComponent); } catch (ex) { EBLog(ex); } }, SaveFeedDataStructured: function(oFeedComponent) { this.ValidateMaxStructuredItems(oFeedComponent.FeedData); if (oFeedComponent.IsLiveMode) this.SaveLive(oFeedComponent); else this.SaveStructured(oFeedComponent); }, ValidateMaxStructuredItems: function(oFeedData) { var oFeedItemDataArrayHash = oFeedData.Items.ArrayHash; var oFeedItemData = null; var iCount = oFeedItemDataArrayHash.Count(); var iLastIndex = 0; while (iCount > EBFeedConsts_CT2384137.MaxStructuredItems) { //remove the last element iLastIndex = iCount - 1; oFeedItemData = oFeedItemDataArrayHash.GetByIndex(iLastIndex); if (oFeedItemData) { oFeedItemDataArrayHash.Remove(iLastIndex, oFeedItemData.Link); iCount = oFeedItemDataArrayHash.Count(); } else //if there isn't item in that index for some reason break the loop! break; } }, SaveFeedDataHistory: function(oFeedComponent) { this.ValidateMaxHistoryItems(oFeedComponent.HistoryData); this.SaveHistory(oFeedComponent); }, ValidateMaxHistoryItems: function(oHistoryData) { var oHistoryItemDataArrayHash = oHistoryData.ArrayHash; var oHistoryItemData = null; var iCount = oHistoryItemDataArrayHash.Count(); var iLastIndex = 0; while (iCount > EBFeedConsts_CT2384137.MaxHistoryItems) { //remove the last element iLastIndex = iCount - 1; oHistoryItemData = oHistoryItemDataArrayHash.GetByIndex(iLastIndex); if (oHistoryItemData) { oHistoryItemDataArrayHash.Remove(iLastIndex, oHistoryItemData.Link); iCount = oHistoryItemDataArrayHash.Count(); } else //if there isn't item in that index for some reason break the loop! break; } }, //update the NumOfNew of the feed component and then set the button label to the current new messages UpdateFeedData: function(oFeedComponent) { if (!oFeedComponent.IsLiveMode) { var iNumOfNew = 0; var oFeedItemDataArrayHash = oFeedComponent.FeedData.Items.ArrayHash; var oHistoryItemDataArrayHash = oFeedComponent.HistoryData.ArrayHash; //go through all the items - check that they are not in history //and they are not read to increase the counter var oFeedItemData = null; var iCount = oFeedItemDataArrayHash.Count(); for (var i = 0; i < iCount; i++) { oFeedItemData = oFeedItemDataArrayHash.GetByIndex(i); //check that the item is not in the history and it's unread if (!oHistoryItemDataArrayHash.Contains(oFeedItemData.Link) && oFeedItemData.Status == EBFeedXMLConsts_CT2384137.UNREAD) iNumOfNew++; } //update the object data oFeedComponent.NumOfNew = iNumOfNew; } if (oFeedComponent.isCustom) oFeedComponent.Invoke(true); else this.notifyUpdate(oFeedComponent); }, notifyUpdate: function(oFeedComponent) { var subject = new Object(); subject.feedComponent = oFeedComponent; subject.uniqueCompID = (oFeedComponent.IsMultiFeed) ? oFeedComponent.MultiFeedCompID : oFeedComponent.ComponentItem.UniqueCompID; subject.wrappedJSObject = subject; EBObserversManager_CT2384137.NotifyCustomObserver(subject, EBFeedConsts_CT2384137.Observer.Topic_FeedObserver, EBFeedConsts_CT2384137.Observer.Data_FeedReload); }, //check if the time has passed to check again from the server IsTimeElapsed: function(oFeedComponent) { var bRetVal = true; var strPollDatePrefValue = EBFeedPreferencesManager_CT2384137.GetFeedPollDate(oFeedComponent); //check if that it's not empty if (strPollDatePrefValue) { //check difference between times: var iIntervalMinutes = this.GetFeedInterval(oFeedComponent); var oDateCurrent = new Date(); var oDatePollDate = new Date(strPollDatePrefValue); var iCheckIntervalTime = 1000 * 60 * iIntervalMinutes; var iDateDiff = oDateCurrent - oDatePollDate; bRetVal = iDateDiff > iCheckIntervalTime; } return bRetVal; }, GetFeedInterval: function(oFeedComponent) { var iInterval = oFeedComponent.ComponentItem.Interval; if (!iInterval || !isFinite(iInterval)) { iInterval = EBFeedConsts_CT2384137.DefaultInterval; } var iTTL = EBFeedPreferencesManager_CT2384137.FeedTTL(oFeedComponent); if (!iTTL) iTTL = 0; iInterval = Math.max(iInterval, iTTL); return iInterval; }, GetTitle: function(strTitle) { if (!strTitle) { strTitle = EBFeedConsts_CT2384137.NoTitleCaption; } else { strTitle = strTitle.replace(/\n/g, ''); strTitle = strTitle.replace(/\r/g, ''); strTitle = EBGlobalManager_CT2384137.TrimToOne(strTitle); strTitle = EBGlobalManager_CT2384137.ToStripHTML(strTitle); } return strTitle; }, GetTooltipCaption: function(strDate) { var strTooltip = 'Posted ' + strDate; return strTooltip; }, ConstructRSSFeedXML: function(uniqueCompId, url, interval, isPodcast, isLiveMode) { var strXML = EBXML_CT2384137.CreateXmlNodeStartString(EBFeedXMLConsts_CT2384137.RSS_FEED_ITEM); strXML += EBXML_CT2384137.CreateXmlNodeString(EBFeedXMLConsts_CT2384137.LINK, url); strXML += EBXML_CT2384137.CreateXmlNodeString(EBFeedXMLConsts_CT2384137.PERMISSIONS, EBFeedXMLConsts_CT2384137.PermissionsValue); strXML += EBXML_CT2384137.CreateXmlNodeString(EBFeedXMLConsts_CT2384137.USER_ATTRIBUTES, EBFeedXMLConsts_CT2384137.UserAttributesValue); strXML += EBXML_CT2384137.CreateXmlNodeString(EBFeedXMLConsts_CT2384137.UNIQUE_COMP_ID, uniqueCompId); strXML += EBXML_CT2384137.CreateXmlNodeString(EBFeedXMLConsts_CT2384137.DISPLAY_TEXT, ''); strXML += EBXML_CT2384137.CreateXmlNodeString(EBFeedXMLConsts_CT2384137.DISPLAY_ICON, ''); strXML += EBXML_CT2384137.CreateXmlNodeString(EBFeedXMLConsts_CT2384137.TITLE, ''); strXML += EBXML_CT2384137.CreateXmlNodeString(EBFeedXMLConsts_CT2384137.INTERVAL, interval); strXML += EBXML_CT2384137.CreateXmlNodeString(EBFeedXMLConsts_CT2384137.ICON_NORMAL_URL, ''); strXML += EBXML_CT2384137.CreateXmlNodeString(EBFeedXMLConsts_CT2384137.IMAGE_STYLE, ''); strXML += EBXML_CT2384137.CreateXmlNodeString(EBFeedXMLConsts_CT2384137.LIVE_MODE, isLiveMode); strXML += EBXML_CT2384137.CreateXmlNodeString(EBFeedXMLConsts_CT2384137.PODCAST, isPodcast); strXML += EBXML_CT2384137.CreateXmlNodeEndString(EBFeedXMLConsts_CT2384137.RSS_FEED_ITEM); return EBXML_CT2384137.GetXmlDocument(strXML).documentElement; } } var FeedParserConsts_CT2384137 = { TYPE : { RSS : 'RSS', ATOM : 'ATOM' }, RSS : { CHANNEL : 'channel', ITEM : 'item', TITLE : 'title', LINK : 'link', GUID : 'guid', PUBDATE : 'pubdate', DCDATE : 'dc:date', ISPERMALINK : 'isPermaLink', TRUE : 'true', FALSE : 'false', ENCLOSURE : 'enclosure', URL : 'url', LANGUAGE : 'language', TTL: 'ttl' }, ATOM : { ENTRY : 'entry', TITLE : 'title', LINK : 'link', HREF : 'href', MODIFIED : 'modified', TYPE : 'type', TEXTHTML : 'text/html', UPDATED : 'updated', REL : 'rel', ALTERNATE : 'alternate' } } function EBFeedElement_CT2384137(strTitle,strLink,strDate) { this.Title = strTitle; this.Link = strLink; this.Date = strDate; } function EBFeedParser_CT2384137(XMLDoc,iMaxElements,isPodcast) { this.Type = ''; this.Title = ''; this.Link = ''; this.ArrayHash = new EBArrayHashObject_CT2384137(); this.MaxElements = iMaxElements; this.Language = ''; this.TTL = 0; this.Init = function(XMLDoc) { if(XMLDoc) { var XMLRoot = XMLDoc.documentElement; if(XMLRoot.tagName != 'parsererror') { this.BuildFeed(XMLRoot); } } }; this.BuildFeed = function(XMLRoot) { var XMLFeedItems = this.GetFeedItems(XMLRoot); this.SetFeedLanguage(XMLRoot); this.SetFeedTTL(XMLRoot); if(XMLFeedItems) { if(this.Type == FeedParserConsts_CT2384137.TYPE.RSS) { this.SetRSSFeedTitleLink(XMLRoot); this.BuildRSSFeedItems(XMLFeedItems); } else if(this.Type == FeedParserConsts_CT2384137.TYPE.ATOM) { this.SetATOMFeedTitleLink(XMLRoot); this.BuildATOMFeedItems(XMLFeedItems); } } }; this.SetFeedLanguage = function(XMLRoot) { var lang = XMLRoot.getElementsByTagName(FeedParserConsts_CT2384137.RSS.LANGUAGE); if (lang.length > 0) { this.Language = EBXML_CT2384137.GetXmlNodeValue(lang.item(0)); } }; this.SetFeedTTL = function(XMLRoot) { this.TTL = EBXML_CT2384137.GetSingleNodeValueAsInteger(XMLRoot, FeedParserConsts_CT2384137.RSS.TTL, 0); }; this.BuildRSSFeedItems = function(XMLFeedItems) { var strTitle = ''; var strLink = ''; var strDate = ''; var strURLFromLinkNode = ''; var strURLFromEnclosureNode = ''; var oAttributes = null; var oAttURL = ''; var strURLFromGUIDPermaLinkNode = ''; var strTagName = ''; var XMLFeedItem = null; var XMLChildNode = null; for (var i = 0; i < XMLFeedItems.length; i++) { XMLFeedItem = XMLFeedItems.item(i); for (var j = 0; j < XMLFeedItem.childNodes.length; j++) { XMLChildNode = XMLFeedItem.childNodes[j]; strTagName = XMLChildNode.tagName; if (typeof (strTagName) == 'string') { strTagName = strTagName.toLowerCase(); } if (strTagName == FeedParserConsts_CT2384137.RSS.TITLE) { strTitle = EBXML_CT2384137.GetXmlNodeValue(XMLChildNode); } else if (strTagName == FeedParserConsts_CT2384137.RSS.ENCLOSURE) { oAttributes = XMLChildNode.attributes; oAttURL = oAttributes.getNamedItem(FeedParserConsts_CT2384137.RSS.URL); strURLFromEnclosureNode = oAttURL.nodeValue; } else if (strTagName == FeedParserConsts_CT2384137.RSS.LINK) { strURLFromLinkNode = EBXML_CT2384137.GetXmlNodeValue(XMLChildNode); } else if (strTagName == FeedParserConsts_CT2384137.RSS.GUID) { strURLFromGUIDPermaLinkNode = this.GetRSSLinkFromXMLGUIDNode(XMLChildNode); } else if (strTagName == FeedParserConsts_CT2384137.RSS.PUBDATE) { strDate = EBXML_CT2384137.GetXmlNodeValue(XMLChildNode); } else if (strTagName == FeedParserConsts_CT2384137.RSS.DCDATE) { strDate = EBXML_CT2384137.GetXmlNodeValue(XMLChildNode); } } if (isPodcast) { strLink = strURLFromEnclosureNode ? strURLFromEnclosureNode : strURLFromLinkNode; } else { strLink = strURLFromLinkNode ? strURLFromLinkNode : strURLFromGUIDPermaLinkNode; } if (strLink) { this.AddFeedElement(strTitle, strLink, strDate); } if (this.IsMaxElements()) { break; } } }; this.BuildATOMFeedItems = function(XMLFeedItems) { var strTitle = ''; var strLink = ''; var strDate = ''; var strURLFromLinkNodeTextHTML = ''; var strURLFromLinkNode = ''; var strTagName = ''; var XMLFeedItem = null; var xpathResult = null; for (var i = 0; i < XMLFeedItems.length; i++) { XMLFeedItem = XMLFeedItems.item(i); strTitle = EBXML_CT2384137.GetSingleNodeValue(XMLFeedItem, FeedParserConsts_CT2384137.ATOM.TITLE); strDate = EBXML_CT2384137.GetSingleNodeValue(XMLFeedItem, FeedParserConsts_CT2384137.ATOM.UPDATED); strLink = this.GetAtomLink(XMLFeedItem); if (strLink && strTitle) this.AddFeedElement(strTitle, strLink, strDate); if (this.IsMaxElements()) break; } }; this.GetAtomLink = function(xmlElement) { var arrLink = xmlElement.getElementsByTagName(FeedParserConsts_CT2384137.ATOM.LINK); var xmlLink = ""; //only one link tag, return it. if (arrLink.length == 1) return arrLink[0].getAttribute(FeedParserConsts_CT2384137.ATOM.HREF); for (var i = 0; i < arrLink.length; i++) { xmlLink = arrLink.item(i); if (xmlLink.getAttribute(FeedParserConsts_CT2384137.ATOM.TYPE) == FeedParserConsts_CT2384137.ATOM.TEXTHTML && xmlLink.getAttribute(FeedParserConsts_CT2384137.ATOM.REL) == FeedParserConsts_CT2384137.ATOM.ALTERNATE) return xmlLink.getAttribute(FeedParserConsts_CT2384137.ATOM.HREF); } return ""; }; this.AddFeedElement = function(strTitle,strLink,strDate) { var oFeedElement = new EBFeedElement_CT2384137(strTitle,strLink,strDate); this.ArrayHash.Add(oFeedElement.Link,oFeedElement); }; this.IsMaxElements = function() { var bRetVal = false; if(this.MaxElements && this.ArrayHash.Count() >= this.MaxElements) { bRetVal = true; } return bRetVal; }; this.GetFeedItems = function(XMLRoot) { var XMLFeedItems = null; //check rss XMLFeedItems = XMLRoot.getElementsByTagName(FeedParserConsts_CT2384137.RSS.ITEM); if(XMLFeedItems.length > 0) { this.Type = FeedParserConsts_CT2384137.TYPE.RSS; return XMLFeedItems; } //check atom XMLFeedItems = XMLRoot.getElementsByTagName(FeedParserConsts_CT2384137.ATOM.ENTRY); if(XMLFeedItems.length > 0) { this.Type = FeedParserConsts_CT2384137.TYPE.ATOM; return XMLFeedItems; } return null; }; this.SetRSSFeedTitleLink = function(XMLRoot) { var strFeedTitle = ''; var strFeedLink = ''; var XMLChildNode = null; var XMLChannelNode = null; var strTagName = ''; var i; for (i = 0; i < XMLRoot.childNodes.length; i++) { XMLChildNode = XMLRoot.childNodes[i]; strTagName = XMLChildNode.tagName; if (typeof (strTagName) == 'string') strTagName = strTagName.toLowerCase(); if (strTagName == FeedParserConsts_CT2384137.RSS.CHANNEL) { XMLChannelNode = XMLChildNode; break; } } if (XMLChannelNode) { for (i = 0; i < XMLChannelNode.childNodes.length; i++) { XMLChildNode = XMLChannelNode.childNodes[i]; strTagName = XMLChildNode.tagName; if (typeof (strTagName) == 'string') strTagName = strTagName.toLowerCase(); if (strTagName == FeedParserConsts_CT2384137.RSS.TITLE) strFeedTitle = EBXML_CT2384137.GetXmlNodeValue(XMLChildNode); else if (strTagName == FeedParserConsts_CT2384137.RSS.LINK) strFeedLink = EBXML_CT2384137.GetXmlNodeValue(XMLChildNode); if (strFeedTitle && strFeedLink) break; } } this.Title = strFeedTitle; this.Link = strFeedLink; }; this.SetATOMFeedTitleLink = function(XMLRoot) { var strFeedTitle = ''; var strFeedLink = ''; var XMLChildNode = null; var strTagName = ''; for(var i=0;i<XMLRoot.childNodes.length;i++) { XMLChildNode = XMLRoot.childNodes[i]; strTagName = XMLChildNode.tagName; if(typeof(strTagName) == 'string') { strTagName = strTagName.toLowerCase(); } if(strTagName == FeedParserConsts_CT2384137.ATOM.TITLE) { strFeedTitle = EBXML_CT2384137.GetXmlNodeValue(XMLChildNode); } else if(strTagName == FeedParserConsts_CT2384137.ATOM.LINK) { strFeedLink = this.GetATOMLinkFromXMLLinkNodeTextHTML(XMLChildNode); if(!strFeedLink) { strFeedLink = this.GetATOMLinkFromXMLLink(XMLChildNode); } } if(strFeedTitle && strFeedLink) { break; } } this.Title = strFeedTitle; this.Link = strFeedLink; }; this.GetATOMLinkFromXMLLinkNodeTextHTML = function(XMLLinkNode) { var strLink = ''; var oAttributes = null; var oAttType = null; var oAttHref = null; oAttributes = XMLLinkNode.attributes; oAttHref = oAttributes.getNamedItem(FeedParserConsts_CT2384137.ATOM.HREF); oAttType = oAttributes.getNamedItem(FeedParserConsts_CT2384137.ATOM.TYPE); if (oAttHref && oAttType && oAttType.nodeValue.toLowerCase() == FeedParserConsts_CT2384137.ATOM.TEXTHTML) strLink = oAttHref.nodeValue; if(strLink) strLink = EBUrl_CT2384137.AddHTTPProtocol(strLink); return strLink; }; this.GetATOMLinkFromXMLLink = function(XMLLinkNode) { var strLink = ''; var oAttributes = null; var oAttHref = null; oAttributes = XMLLinkNode.attributes; oAttHref = oAttributes.getNamedItem(FeedParserConsts_CT2384137.ATOM.HREF); if(oAttHref) strLink = oAttHref.nodeValue; if(strLink) strLink = EBUrl_CT2384137.AddHTTPProtocol(strLink); return strLink; }; this.GetRSSLinkFromXMLGUIDNode = function(XMLGUIDNode) { var strLink = ''; var oAttributes = null; var oAttIsPermaLink = null; oAttributes = XMLGUIDNode.attributes; oAttIsPermaLink = oAttributes.getNamedItem(FeedParserConsts_CT2384137.RSS.ISPERMALINK); if(!oAttIsPermaLink || oAttIsPermaLink.nodeValue.toLowerCase() == FeedParserConsts_CT2384137.RSS.TRUE) { strLink = EBXML_CT2384137.GetXmlNodeValue(XMLGUIDNode); } return strLink; }; this.Init(XMLDoc); } var EBFeedUIManager_CT2384137 = { currentFeedPopup: null, currentMultiFeedPopup: null, currentMultiFeedPopupCompId: null, onFeedShowing: function(e, strCompID, iMultiIndex) { if (e.eventPhase != 2) return false; this.currentFeedPopup = e.target; var oFeedComponent = (iMultiIndex == -1) ? EBComponentsManager_CT2384137.GetComponentByCompID(strCompID) : EBComponentsManager_CT2384137.GetComponentByCompID(strCompID).FeedComponents[iMultiIndex]; //close other feed dialog, it can remain opened in sertain conditions this._closeOtherFeedPopups(e.target); if (oFeedComponent) e.target.init(oFeedComponent); //event.target = feed menupopup return true; }, onFeedsMenuShowing: function(e, strCompID, bIsTwitter) { if (!e.target.hasAttribute("eb-main-feed-popup")) return true; if (e.eventPhase != 2) return false; var oComponent = EBComponentsManager_CT2384137.GetComponentByCompID(strCompID); oComponent.createFeedsMenu(e.target); this.currentMultiFeedPopup = e.target; this.currentMultiFeedPopupCompId = strCompID; //usage if (bIsTwitter) EBUsageTwitter_CT2384137.OnOpenMultiRss(); else EBUsageRss_CT2384137.OnOpenMultiRss(); return true; }, onFeedsMenuShown: function(e, strCompID) { if (!e.target.hasAttribute("eb-main-feed-popup")) return true; if (e.eventPhase != 2) return false; var oComponent = EBComponentsManager_CT2384137.GetComponentByCompID(strCompID); oComponent.updateStarsOnFeedsMenu(e.target); }, onFeedMenuHiding: function(e, strCompID, bIsTwitter) { if (!e.target.hasAttribute("eb-main-feed-popup")) return true; if (e.eventPhase != 2) return false; var oComponent = EBComponentsManager_CT2384137.GetComponentByCompID(strCompID); oComponent.emptyFeedsMenu(e.target); this.currentMultiFeedPopup = null; this.currentMultiFeedPopupCompId = null; if (bIsTwitter) EBUsageTwitter_CT2384137.OnCloseMultiRss(strCompID, oComponent.ComponentItem.CompType); else EBUsageRss_CT2384137.OnCloseMultiRss(strCompID, oComponent.ComponentItem.CompType); return true; }, _closeOtherFeedPopups: function(currentPopup) { var arrPopups = document.getElementsByTagName("menupopup"); var xulPopup = null; for (var i = 0; i < arrPopups.length; i++) { xulPopup = arrPopups[i]; if ((xulPopup.className.indexOf("ebFeedDialogPopup") != -1 || xulPopup.className.indexOf("ebTwitterDialogPopup") != -1) && xulPopup.id != currentPopup.id && xulPopup.closeMe) xulPopup.closeMe(false); } }, //this funcion will close feed popup and multi feed menu if opened closeFeed: function(xulPopup) { if (!xulPopup.closeMe) return; xulPopup.closeMe(true); var xulParent = xulPopup.parentNode.parentNode; //close multi feed menupopup (multi rss) if (xulParent.tagName == "menupopup") { xulParent.hidePopup(); //hide chevron (if in chevron) if (xulParent.parentNode && xulParent.parentNode.parentNode && xulParent.parentNode.parentNode.hidePopup) xulParent.parentNode.parentNode.hidePopup(); } }, updateMultiFeedMenu: function(multiFeedId, menupopup, feedIndex) { if (!menupopup) return; var oFeedComponent = EBComponentsManager_CT2384137.GetComponentByCompID(multiFeedId); oFeedComponent.updateFeedCountInMenu(menupopup, feedIndex); }, removeStarOnMultiRssMenu: function(xulFeedPopup, strCompID) { var xulMenu = xulFeedPopup.parentNode; var oComponent = EBComponentsManager_CT2384137.GetComponentByCompID(strCompID); oComponent.removeStarOnMenu(xulMenu, xulMenu.parentNode); }, //update the count in multifeed menu popup if open for specific multifeed updateMultifeedCountInMenu: function(uniqueCompId, iFeedIndex) { if (!this.currentFeedPopup || this.currentMultiFeedPopupCompId != uniqueCompId) return; this.updateMultiFeedMenu(uniqueCompId, this.currentMultiFeedPopup, iFeedIndex); }, Context_OnCommandShowInNewWindow: function(event, bIsTab) { this.currentFeedPopup.manager.xulContext.style.display = "none"; this.currentFeedPopup.manager.OnCommandShowInNewWindow(event, bIsTab); }, Context_OnCommandDeleteMessage: function(event) { this.currentFeedPopup.manager.xulContext.style.display = "none"; this.currentFeedPopup.manager.OnCommandDeleteMessage(event); } }; var EBIniFile_CT2384137 = { filename: 'setup.ini', getFile: function() { var extPath = EBIOManager_CT2384137.GetExtentionPath(EBGlobalConsts_CT2384137.GUID); try { var oFile = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile); oFile.initWithPath(extPath); oFile.appendRelativePath(this.filename); if (oFile.exists()) return oFile; else return null; } catch (ex) { return null; } }, getParamsFromFile: function() { var oFile = this.getFile(); if (!oFile) return null; var strText = EBFileIO_CT2384137.read(oFile, EBGlobalConsts_CT2384137.DefaultCharset); var arrLines = strText.split('\n'); var oParams = new ToolbarParams_CT2384137(); for (var i = 0; i < arrLines.length; i++) this.fillParam(arrLines[i], oParams); return oParams; }, fillParam: function(strLine, oParams) { if (!strLine || strLine.indexOf("=") == -1) return; var paramName = ""; var paramValue = ""; try { paramName = strLine.split('=')[0]; paramValue = (strLine.match(/=(.*)/))[1]; } catch (e) { return; } switch (paramName) { case '_SET_DEFAULT_SEARCH_': oParams.FFSearchIsDefault = EBGlobalManager_CT2384137.StringToBoolean(paramValue); oParams.FFSearchIsChecked = EBGlobalManager_CT2384137.StringToBoolean(paramValue); break; case '_DEFAULT_SEARCH_DISPLAY_NAME_': oParams.FFSearchCaption = paramValue; break; case '_DEFAULT_SEARCH_URL_': oParams.FFSearchUrl = paramValue; oParams.FFAddressBarSearchUrl = paramValue; break; case '_START_PAGE_': oParams.HomepageIsSet = EBGlobalManager_CT2384137.StringToBoolean(paramValue); break; case '_SETUP_FIX_404_CHK_BOX_VAL_': oParams.Fix404IsChecked = EBGlobalManager_CT2384137.StringToBoolean(paramValue); break; case '_CT_ID_': oParams.SelectedCTID = paramValue; break; case '_OPEN_THANKYOU_PAGE_': oParams.IsOpenThankYouPage = EBGlobalManager_CT2384137.StringToBoolean(paramValue); break; case '_OPEN_UNINSTALL_PAGE_': oParams.IsOpenUninstallPage = EBGlobalManager_CT2384137.StringToBoolean(paramValue); break; case '_OPEN_WELCOME_DIALOG_': oParams.IsOpenWelcomeDialog = EBGlobalManager_CT2384137.StringToBoolean(paramValue); break; case 'true': oParams.SearchFromAddress = EBGlobalManager_CT2384137.StringToBoolean(paramValue); break; } } }; function ToolbarParams_CT2384137() { this.FFSearchIsChecked = true; //boolean this.FFSearchIsDefault = null; //boolean this.FFSearchCaption = ''; this.FFSearchUrl = ''; this.FFAddressBarSearchUrl = ''; this.HomepageIsSet = null; //boolean this.Fix404IsChecked = null; //boolean this.SelectedCTID = ''; this.IsOpenThankYouPage = true; //boolean this.IsOpenUninstallPage = null; //boolean this.IsOpenWelcomeDialog = null; //boolean this.SearchFromAddress = null; //boolean } var EBInitParams_CT2384137 = { engineName: 'Search Powered by Google', srcFileName: 'conduit.src', xmlFileName: 'conduit.xml', imgFileName: 'conduit.gif', engineURL: 'http://search.conduit.com/ResultsExt.aspx?ctid=CT2384137&SearchSource=3&q={searchTerms}', homepageUrl: 'http://search.conduit.com/?ctid=CT2384137&SearchSource=13', homepageText: '', prefHomePage: 'browser.startup.homepage', homepageIsChecked: true, FFSearchIsDefault: true, WelcomeDialogMode: "full", settingsReady: false, languagePackReady: false, initDone: false, oParams: null, isAllInitDone: function() { var isInit = EBToolbarPreferenceManager_CT2384137.GetPref(EBPreferenceConsts_CT2384137.FirstTime); var isInitSearchFromAddressBar = EBToolbarPreferenceManager_CT2384137.GetPref(EBPreferenceConsts_CT2384137.SearchFromAddressBarIsInit); var isFF3FirstTime = this.isFF3FirstTime(); if (isInit && isFF3FirstTime && isInitSearchFromAddressBar) return true; else return false; }, initFromSettings: function() { if (this.isAllInitDone()) return; this.settingsReady = true; this.oParams = EBIniFile_CT2384137.getParamsFromFile(); if (this.oParams) { this.setIsOpenThankYouPage(this.oParams.IsOpenThankYouPage); //if show welcome dialog is set to false there is no need to wait for Language pack if (!this.oParams.IsOpenWelcomeDialog) { this._init(); return; } } if (this.languagePackReady) this._init(); else { var that = this; var oTimeout = function() { EBInitParams_CT2384137._init.call(that); }; setTimeout(oTimeout, 15000); } }, initFromLP: function() { if (this.isAllInitDone()) return; this.languagePackReady = true; if (this.settingsReady) this._init(); }, _init: function() { if (this.initDone) return; this.initDone = true; var isInit = EBToolbarPreferenceManager_CT2384137.GetPref(EBPreferenceConsts_CT2384137.FirstTime); var isInitSearchFromAddressBar = EBToolbarPreferenceManager_CT2384137.GetPref(EBPreferenceConsts_CT2384137.SearchFromAddressBarIsInit); var isFF3FirstTime = this.isFF3FirstTime(); if (isInit && isFF3FirstTime && isInitSearchFromAddressBar) return; //set not to init again search from address bar EBToolbarPreferenceManager_CT2384137.SetPref(EBPreferenceConsts_CT2384137.SearchFromAddressBarIsInit, true); if (!this.oParams) this.oParams = new ToolbarParams_CT2384137(); var bIsRebuildSearchEngine = (isInit) ? false : true; this.addDefaultsToParams(this.oParams, bIsRebuildSearchEngine); //set installed date to prefs EBToolbarPreferenceManager_CT2384137.SetPref(EBPreferenceConsts_CT2384137.InstalledDate, Date()); //init all if (bIsRebuildSearchEngine) { this.applyParams(this.oParams, this.oParams.IsOpenWelcomeDialog); if (this.oParams.IsOpenWelcomeDialog) EBWelcomeDialog_CT2384137.OpenWelcomeDialog(this.oParams); else { //first time login oToolbarManager_CT2384137.requestLogin(); //set not to init again EBToolbarPreferenceManager_CT2384137.SetPref(EBPreferenceConsts_CT2384137.FirstTime, true); if (this.oParams.SelectedCTID == EBGlobalConsts_CT2384137.ToolbarCTID) { if (!EBToolbarPreferenceManager_CT2384137.HasUserValue(EBPreferenceConsts_CT2384137.CTID)) EBToolbarPreferenceManager_CT2384137.SetPref(EBPreferenceConsts_CT2384137.CTID, EBGlobalConsts_CT2384137.ToolbarCTID); EBToolbarManager_CT2384137.broadcastRebuild(oToolbar_CT2384137.toolbarDataParsing.observerData.settings); } else oToolbar_CT2384137.toolbar.switchToCommunity(EBGlobalConsts_CT2384137.ToolbarCTID, EBGlobalConsts_CT2384137.ToolbarCTID, this.oParams.SelectedCTID); } } //init only the search from address bar else if (!isInitSearchFromAddressBar) { EBSearchFromAddressBar_CT2384137.firstTime(this.oParams.FFAddressBarSearchUrl, oParams.SearchFromAddress); } }, addDefaultsToParams: function(oParams, bIsRebuildSearchEngine) { var bIsRebuildEngineXml = false; if (oParams.FFSearchIsDefault == null) oParams.FFSearchIsDefault = this.FFSearchIsDefault; if (!oParams.FFSearchCaption) oParams.FFSearchCaption = this.engineName; else bIsRebuildEngineXml = true; if (!oParams.FFSearchUrl) { oParams.FFSearchUrl = this.engineURL; oParams.FFAddressBarSearchUrl = EBSearchFromAddressBar_CT2384137.addressBarEngineURL; } else bIsRebuildEngineXml = true; if (oParams.HomepageIsSet == null) oParams.HomepageIsSet = this.homepageIsChecked; if (oParams.Fix404IsChecked == null) oParams.Fix404IsChecked = EBGlobalConsts_CT2384137.FixPageNotFoundErrorsChecked; if (!oParams.SelectedCTID) oParams.SelectedCTID = EBGlobalConsts_CT2384137.ToolbarCTID; if (oParams.IsOpenUninstallPage == null) oParams.IsOpenUninstallPage = EBGlobalConsts_CT2384137.ShowUninstallPage; if (oParams.SearchFromAddress == null) oParams.SearchFromAddress = oParams.FFSearchIsDefault; if (oParams.IsOpenWelcomeDialog == null) oParams.IsOpenWelcomeDialog = (EBInitParams_CT2384137.WelcomeDialogMode == "none") ? false : true; if (bIsRebuildEngineXml && bIsRebuildEngineXml) this.rebuildEngineXml(oParams.FFSearchCaption, oParams.FFSearchUrl); }, rebuildEngineXml: function(strCaption, strSearchUrl) { var extPath = EBIOManager_CT2384137.GetExtentionPath(EBGlobalConsts_CT2384137.GUID); try { var oFile = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile); oFile.initWithPath(extPath); oFile.appendRelativePath('searchplugin'); oFile.appendRelativePath('conduit.xml'); if (!oFile) return; var strSearchXml = EBFileIO_CT2384137.read(oFile); var xmlSearch = EBXML_CT2384137.GetXmlDocument(strSearchXml); var xmlShortName = EBXML_CT2384137.SelectSingleNode(xmlSearch, "ShortName"); var xmlDescription = EBXML_CT2384137.SelectSingleNode(xmlSearch, "Description"); var xmlUrl = EBXML_CT2384137.SelectSingleNode(xmlSearch, "Url"); var xmlSeachForm = EBXML_CT2384137.SelectSingleNode(xmlSearch, "SearchForm"); xmlShortName.firstChild.nodeValue = strCaption; xmlDescription.firstChild.nodeValue = strCaption; xmlSeachForm.firstChild.nodeValue = strSearchUrl; xmlUrl.setAttribute("template", strSearchUrl); strSearchXml = EBXML_CT2384137.GetStringXml(xmlSearch); EBFileIO_CT2384137.write(oFile, strSearchXml, null, EBGlobalConsts_CT2384137.DefaultCharset); } catch (ex) { } }, applyParams: function(oParams, bIsUserInput) { this.setIsOpenThankYouPage(oParams.IsOpenThankYouPage); this.setIsOpenUninstallPage(oParams.IsOpenUninstallPage); if (!bIsUserInput) { this.SetEngine(oParams.FFSearchIsChecked, oParams.FFSearchIsDefault, oParams); if (oParams.HomepageIsSet) this.SetHomepage(); this.setFix404(oParams.Fix404IsChecked); EBSearchFromAddressBar_CT2384137.firstTime(oParams.FFAddressBarSearchUrl, oParams.SearchFromAddress); } }, isFF3FirstTime: function() { if (!EBGlobalManager_CT2384137.IsFirefox3() || EBToolbarPreferenceManager_CT2384137.GetPref(EBPreferenceConsts_CT2384137.FirstTimeFF3)) return true; EBToolbarPreferenceManager_CT2384137.SetPref(EBPreferenceConsts_CT2384137.FirstTimeFF3, true); var sep = EBDirIO_CT2384137.sep; var plugDir = EBIOManager_CT2384137.GetSearchPluginsDir(); var plug2Dir = this.getProfileSearchPluginsFolder(); var extPath = EBIOManager_CT2384137.GetExtentionPath(EBGlobalConsts_CT2384137.GUID); var engineSrc = EBFileIO_CT2384137.open(plugDir.path); engineSrc.appendRelativePath(this.xmlFileName); var engine2Src = EBFileIO_CT2384137.open(plug2Dir); engine2Src.appendRelativePath(this.xmlFileName); try { if (engineSrc.exists() || engine2Src.exists()) return true; else return false; } catch (e) { return true; } }, copyFile: function(fileObj, destdir, filename) { // get a component for the directory to copy to var aDir = Components.classes["@mozilla.org/file/local;1"] .createInstance(Components.interfaces.nsILocalFile); if (!aDir) return false; // next, assign URLs to the file components aDir.initWithPath(destdir); aDir.appendRelativePath(filename); try { aDir.remove(false); } catch (ex) { } aDir.initWithPath(destdir); // finally, copy the file, without renaming it try { if (aDir.isWritable()) fileObj.copyTo(aDir, null); else return false; } catch (ex) { EBLog(ex); } return true; }, CreatePluginsFolder: function(strPath) { var oDir = EBDirIO_CT2384137.open(strPath); if (!oDir.exists()) EBDirIO_CT2384137.create(oDir); }, getProfileSearchPluginsFolder: function() { var plugDir = EBIOManager_CT2384137.GetPrefsDir(); var strDestPath = plugDir.path + EBDirIO_CT2384137.sep + "searchplugins"; return strDestPath; }, removeHiddenSearch: function() { try { var prefDir = EBIOManager_CT2384137.GetPrefsDir(); //remove from .sqlite file var searchSqlite = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile); searchSqlite.initWithPath(prefDir.path); searchSqlite.appendRelativePath("search.sqlite"); if (searchSqlite.exists()) { var storageService = Components.classes["@mozilla.org/storage/service;1"] .getService(Components.interfaces.mozIStorageService); var dbConn = storageService.openDatabase(searchSqlite); dbConn.executeSimpleSQL("UPDATE engine_data SET name='order' WHERE (engineid='[profile]/conduit.xml' OR engineid='[pp]/conduit.xml') AND name='hidden'"); dbConn.close(); } //remove from json file. var searchJson = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile); searchJson.initWithPath(prefDir.path); searchJson.appendRelativePath("search.json"); if (searchJson.exists()) { var strSearchJson = EBFileIO_CT2384137.read(searchJson, "UTF-8"); var objSearchEngines = JSON.parse(strSearchJson); var engines = null; var conduitEngine = null; for (var i in objSearchEngines.directories) { engines = objSearchEngines.directories[i].engines; for (var j = 0; j < engines.length; j++) { if (engines[j].filePath.indexOf("conduit.xml") != -1) { conduitEngine = engines[j]; break; } } if (conduitEngine) break; } if (!conduitEngine) return; delete conduitEngine.hidden; strSearchJson = JSON.stringify(objSearchEngines); EBFileIO_CT2384137.write(searchJson, searchJson, null, "UTF-8"); } } catch (ex) { EBLog(ex); } }, SetEngine: function(isAddEngine, isDefaultEngine, oParams) { if (!isAddEngine) return; var win = EBGlobalManager_CT2384137.GetMostRecentBrowserWindow(); if (win.document == null) { return } var searchbar = win.document.getElementById("searchbar"); var sep = EBDirIO_CT2384137.sep; var strDestPath = this.getProfileSearchPluginsFolder(); this.CreatePluginsFolder(strDestPath); var extPath = EBIOManager_CT2384137.GetExtentionPath(EBGlobalConsts_CT2384137.GUID); var engineSrc = EBFileIO_CT2384137.open(extPath + sep + "searchplugin"); var engineGif = EBFileIO_CT2384137.open(extPath + sep + "searchplugin"); var bIsSuccess = false; try { // for FF 1.5.* copy plugin.src and plugin.ico file if (searchbar != null && searchbar.attributes["searchengine"] != null) { engineSrc.appendRelativePath(this.srcFileName); engineGif.appendRelativePath(this.imgFileName); bIsSuccess = this.copyFile(engineSrc, strDestPath, this.srcFileName) bIsSuccess = this.copyFile(engineGif, strDestPath, this.imgFileName) } // for FF 2.0 copy plugin.xml file else { engineSrc.appendRelativePath(this.xmlFileName); engineGif.appendRelativePath(this.imgFileName); bIsSuccess = this.copyFile(engineSrc, strDestPath, this.xmlFileName); this.removeHiddenSearch(); } } catch (ex) { EBLog(ex); } if (!isDefaultEngine) return; if (searchbar != null) { //for FF prior to 2.0 try { if (searchbar.attributes["searchengine"] != null) { searchbar.setAttribute("searchengine", "engine://" + escape(engineSrc.path)); searchbar.setAttribute("src", "file:///" + escape(engineGif.path)); bIsSuccess = true; } } catch (ex) { EBLog(ex); } } //set to be default if (bIsSuccess) { EBPreferenceService_CT2384137.SetPref("browser.search.defaultthis.engineName", oParams.FFSearchCaption); EBPreferenceService_CT2384137.SetPref("browser.search.defaulturl", oParams.FFSearchUrl); EBPreferenceService_CT2384137.SetPref("browser.search.selectedEngine", oParams.FFSearchCaption) } }, setFix404: function(bValue) { EBToolbarPreferenceManager_CT2384137.SetPref(EBPreferenceConsts_CT2384137.FixPageNotFoundErrors, bValue); }, setUsage: function(bValue) { EBUsageManager_CT2384137.enable = bValue; }, setIsOpenThankYouPage: function(bValue) { EBToolbarPreferenceManager_CT2384137.SetPref(EBPreferenceConsts_CT2384137.IsOpenThankYouPage, bValue); }, setIsOpenUninstallPage: function(bValue) { EBToolbarPreferenceManager_CT2384137.SetPref(EBPreferenceConsts_CT2384137.IsOpenUninstallPage, bValue); }, SetHomepage: function() { //save last home page. if (!EBToolbarPreferenceManager_CT2384137.HasUserValue(EBPreferenceConsts_CT2384137.SavedHomepage)) { var strHomepage = EBPreferenceService_CT2384137.GetPref(this.prefHomePage); EBToolbarPreferenceManager_CT2384137.SetPref(EBPreferenceConsts_CT2384137.SavedHomepage, strHomepage); } var strHomePage = this.homepageUrl; EBPreferenceService_CT2384137.SetPref(this.prefHomePage, strHomePage); }, ResetHomepage: function() { var strHomePage = EBToolbarPreferenceManager_CT2384137.GetPref(EBPreferenceConsts_CT2384137.SavedHomepage); EBPreferenceService_CT2384137.SetPref(this.prefHomePage, strHomePage); } }; var EBWelcomeDialog_CT2384137 = { dialogName: "welcome.xul", dialogRtlName: "welcomeRTL.xul", dialogLinuxMacName: "welcomeMacLinux.xul", btnFinish: null, lblBtnAbort: null, dscTitle: null, dscTitleWelcomeOnly: null, chkEmail: null, chkWeather: null, chkRadio: null, chkFacebook: null, dscSettingsTitle: null, chkWebSearch: null, chkHomePage: null, txtBottom: null, aEula: null, txtAnd: null, aPrivacy: null, boxPersonalComponents: null, boxSearchAndHomepage: null, boxWelcomeOnly: null, htmlTruste: null, _txtUninstallTitle: "", _txtUninstallBody: "", _isSingleComponent: false, _isPersonalComponents: true, params: null, dialog: null, oWindow: null, bDisplayTruste: false, OpenWelcomeDialog: function(oParams) { var strWelcomeChromePath = EBGlobalConsts_CT2384137.ChromeContentPath; var strWelcomeDialogName = "Welcome"; var oMainMenu = EBComponentsManager_CT2384137.GetMainMenuComponent(); var strPos, xulMainManuBox, x, y; if (!EBGlobalManager_CT2384137.IsWindowsPlatform()) { strWelcomeChromePath += this.dialogLinuxMacName; strPos = ",centerscreen"; } else if (!EBActionManager_CT2384137.IsToolbarRTL()) { strWelcomeChromePath += this.dialogName; //find open position if (oMainMenu && oMainMenu.XULElement) { xulMainManuBox = oMainMenu.XULElement.boxObject; x = xulMainManuBox.screenX + (xulMainManuBox.width / 2); y = xulMainManuBox.screenY + xulMainManuBox.height; strPos = ",screenX=" + x + ",screenY=" + y; } else strPos = ",centerscreen"; } else { strWelcomeChromePath += this.dialogRtlName; //find open position if (oMainMenu && oMainMenu.XULElement) { xulMainManuBox = oMainMenu.XULElement.boxObject; x = xulMainManuBox.screenX + (xulMainManuBox.width / 2) - 450; y = xulMainManuBox.screenY + xulMainManuBox.height; strPos = ",screenX=" + x + ",screenY=" + y; } else strPos = ",centerscreen"; } window.openDialog(strWelcomeChromePath, strWelcomeDialogName, 'chrome,modal,chrome,resizable=no,titlebar=yes' + strPos, oParams) }, onload: function(event) { this._setLocalUIVars(event); this._initUI(); if (EBInitParams_CT2384137.WelcomeDialogMode == "full") this._fillUIForFullDialog(); else this._fillUIForWelcomeOnlyDialog(); this._applyLP(); }, onunload: function() { }, onclickUninstall: function() { if (EBGlobalManager_CT2384137.Confirm(window, this._txtUninstallTitle, this._txtUninstallBody)) { var objExtManager = Components.classes["@mozilla.org/extensions/manager;1"] .getService(Components.interfaces.nsIExtensionManager); objExtManager.uninstallItem(EBGlobalConsts_CT2384137.GUID); window.close(); } }, onclickFinish: function() { if (this._isPersonalComponents) { if (this.chkEmail.style.display != "none") { var emailNotifierItem = this.oWindow.oToolbarManager_CT2384137.getToolbarData().getEmailNotifierItem(); if (emailNotifierItem) emailNotifierItem.setShowState(this.chkEmail.checked); } if (this.chkWeather.style.display != "none") { var weatherItem = this.oWindow.oToolbarManager_CT2384137.getToolbarData().getWeatherItem(); if (weatherItem) weatherItem.setShowState(this.chkWeather.checked); } if (this.chkRadio.style.display != "none") { var radioItem = this.oWindow.oToolbarManager_CT2384137.getToolbarData().getRadioItem(); if (radioItem) radioItem.setShowState(this.chkRadio.checked); } if (this.chkFacebook.style.display != "none") { var facebookItem = this.oWindow.oToolbarManager_CT2384137.getToolbarData().getFacebookItem(); if (facebookItem) facebookItem.setShowState(this.chkFacebook.checked); } } if (this.chkHomePage.checked) EBInitParams_CT2384137.SetHomepage(); if (this.chkWebSearch.checked) EBInitParams_CT2384137.SetEngine(true, true, this.params); EBSearchFromAddressBar_CT2384137.firstTime(this.params.FFAddressBarSearchUrl, this.chkWebSearch.checked); EBToolbarPreferenceManager_CT2384137.SetPref(EBPreferenceConsts_CT2384137.FirstTime, true); if (this.params.SelectedCTID == EBGlobalConsts_CT2384137.ToolbarCTID) { if (!EBToolbarPreferenceManager_CT2384137.HasUserValue(EBPreferenceConsts_CT2384137.CTID)) EBToolbarPreferenceManager_CT2384137.SetPref(EBPreferenceConsts_CT2384137.CTID, EBGlobalConsts_CT2384137.ToolbarCTID); this.oWindow.EBToolbarManager_CT2384137.broadcastRebuild(this.oWindow.oToolbar_CT2384137.toolbarDataParsing.observerData.settings); } else this.oWindow.oToolbar_CT2384137.toolbar.switchToCommunity(EBGlobalConsts_CT2384137.ToolbarCTID, EBGlobalConsts_CT2384137.ToolbarCTID, this.params.SelectedCTID); var oManager = this.oWindow.oToolbarManager_CT2384137; var asyncReqLogin = function() { oManager.requestLogin(); } this.oWindow.setTimeout(asyncReqLogin, 200); window.close(); }, onClickTruste: function() { var strTrusteUrl = this.oWindow.EBActionManager_CT2384137.GetTrusteLinkUrl(); EBActionManager_CT2384137._openUrlWindow("DIALOG", strTrusteUrl); }, _setLocalUIVars: function(event) { this.btnFinish = document.getElementById("btnFinish"); this.lblBtnAbort = document.getElementById("lblBtnAbort"); this.dscTitle = document.getElementById("dscTitle"); this.dscTitleWelcomeOnly = document.getElementById("dscTitleWelcomeOnly"); this.chkEmail = document.getElementById("chkEmail"); this.chkWeather = document.getElementById("chkWeather"); this.chkRadio = document.getElementById("chkRadio"); this.chkFacebook = document.getElementById("chkFacebook"); this.dscSettingsTitle = document.getElementById("dscSettingsTitle"); this.chkWebSearch = document.getElementById("chkWebSearch"); this.chkHomePage = document.getElementById("chkHomePage"); this.txtBottom = document.getElementById("txtBottom"); this.aEula = document.getElementById("aEula"); this.txtAnd = document.getElementById("txtAnd"); this.aPrivacy = document.getElementById("aPrivacy"); this.boxPersonalComponents = document.getElementById("boxPersonalComponents"); this.boxSearchAndHomepage = document.getElementById("boxSearchAndHomepage"); this.boxWelcomeOnly = document.getElementById("boxWelcomeOnly"); this.htmlTruste = document.getElementById("htmlTruste"); this.dialog = event.target; this.oWindow = EBGlobalManager_CT2384137.GetMostRecentBrowserWindow(); this.params = window.arguments[0]; }, _initUI: function() { if (!this.bDisplayTruste) this.htmlTruste.style.display = "none"; }, _fillUIForWelcomeOnlyDialog: function() { this.boxPersonalComponents.style.display = "none"; this.boxSearchAndHomepage.style.display = "none"; this._isPersonalComponents = false; this.chkHomePage.checked = this.params.HomepageIsSet; this.chkWebSearch.checked = this.params.FFSearchIsDefault; }, _fillUIForFullDialog: function() { this.boxWelcomeOnly.style.display = "none"; var oEmailNotifier = this.oWindow.oToolbarManager_CT2384137.getToolbarData().getEmailNotifierItem(); var oWeather = this.oWindow.oToolbarManager_CT2384137.getToolbarData().getWeatherItem(); var oRadio = this.oWindow.oToolbarManager_CT2384137.getToolbarData().getRadioItem(); var oFacebook = this.oWindow.oToolbarManager_CT2384137.getToolbarData().getFacebookItem(); var bShowEmailNotifier = (oEmailNotifier) ? oEmailNotifier.isShowInPersonalComponentsDialog() : false; var bShowWeather = (oWeather) ? oWeather.isShowInPersonalComponentsDialog() : false; var bShowRadio = EBGlobalManager_CT2384137.IsWindowsPlatform() && (oRadio) ? oRadio.isShowInPersonalComponentsDialog() : false; var bShowFacebook = (oFacebook) ? oFacebook.isShowInPersonalComponentsDialog() : false; if (!bShowEmailNotifier && !bShowWeather && !bShowRadio && !bShowFacebook) { this.boxPersonalComponents.style.display = "none"; this._isPersonalComponents = false; } else if (bShowEmailNotifier + bShowWeather + bShowRadio + bShowFacebook == 1) this._isSingleComponent = true; if (EBGlobalConsts_CT2384137.IsAMO) { this.chkHomePage.checked = false; this.chkWebSearch.checked = false; } else { this.chkHomePage.checked = this.params.HomepageIsSet; this.chkWebSearch.checked = this.params.FFSearchIsDefault; } var oComponent = null; var strImage = ""; if (this._isPersonalComponents) { if (!bShowEmailNotifier) this.chkEmail.style.display = "none"; else this.chkEmail.checked = !EBGlobalConsts_CT2384137.IsAMO; if (!bShowWeather) this.chkWeather.style.display = "none"; else this.chkWeather.checked = !EBGlobalConsts_CT2384137.IsAMO; if (!bShowRadio) this.chkRadio.style.display = "none"; else this.chkRadio.checked = !EBGlobalConsts_CT2384137.IsAMO; if (!bShowFacebook) this.chkFacebook.style.display = "none"; else this.chkFacebook.checked = !EBGlobalConsts_CT2384137.IsAMO; } }, _applyLP: function() { var locale = EBToolbarPreferenceManager_CT2384137.GetPref(EBPreferenceConsts_CT2384137.Locale, true); this.btnFinish.label = this.oWindow.oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_PERSONAL_COMP_DLG_FINISH_FF'); this.lblBtnAbort.value = this.oWindow.oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_PERSONAL_COMP_DLG_ABORT_INSTALLATION_FF'); if (this._isPersonalComponents) { var strTitle = (this._isSingleComponent) ? this.oWindow.oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_PERSONAL_COMP_DLG_INTRO_SINGLE') : this.oWindow.oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_PERSONAL_COMP_DLG_INTRO'); this.dscTitle.firstChild.nodeValue = strTitle; this.chkEmail.label = this.oWindow.oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_PERSONAL_COMP_DLG_EMAIL'); this.chkWeather.label = this.oWindow.oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_PERSONAL_COMP_DLG_WEATHER'); this.chkRadio.label = this.oWindow.oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_PERSONAL_COMP_DLG_RADIO'); this.chkFacebook.label = this.oWindow.oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_PERSONAL_COMP_DLG_FACEBOOK'); } this.dscSettingsTitle.firstChild.nodeValue = this.oWindow.oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_PERSONAL_COMP_DLG_SETTINGS_TITLE_FF'); this.chkWebSearch.label = this.oWindow.oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_PERSONAL_COMP_DLG_SET_SEARCH_FF').replace(/\{\{EB_TOOLBAR_NAME\}\}/g, EBGlobalConsts_CT2384137.ToolbarName); if (EBInitParams_CT2384137.homepageText) this.chkHomePage.label = EBInitParams_CT2384137.homepageText; else this.chkHomePage.label = this.oWindow.oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_PERSONAL_COMP_DLG_SET_HOMEPAGE_FF').replace(/\{\{EB_TOOLBAR_NAME\}\}/g, EBGlobalConsts_CT2384137.ToolbarName); this.txtBottom.innerHTML = this.oWindow.oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_PERSONAL_COMP_DLG_BOTTOM_FF'); this.aEula.innerHTML = this.oWindow.oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_GLOBAL_EULA'); this.txtAnd.innerHTML = this.oWindow.oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_GLOBAL_AND'); this.aPrivacy.innerHTML = this.oWindow.oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_GLOBAL_PRIVACY_POLICY'); this._txtUninstallTitle = this.oWindow.oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_PERSONAL_COMP_DLG_ABORT_INSTALLATION_FF'); this._txtUninstallBody = this.oWindow.oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_PERSONAL_COMP_CONFIRM_UNINSTALL_BODY_FF').replace(/\\n/g, "\n"); this.dscTitleWelcomeOnly.firstChild.nodeValue = this.oWindow.oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_PERSONAL_COMP_DLG_WELCOME_ONLY_TITLE_FF').replace(/\{\{EB_TOOLBAR_NAME\}\}/g, EBGlobalConsts_CT2384137.ToolbarName); } }; var EBFManager_CT2384137 = { CONDUIT_TOOLBARCT2384137ATTR_NAME: "ebtoolbarctid", VERSION_ATTR_NAME: "ebVersion", getService: function() { var arrConduitToolbars = this.getConduitToolbars(); var xulToolbar = this.getMaxVersionToolbar(arrConduitToolbars); var strMaxVersionCTID = xulToolbar.getAttribute(this.CONDUIT_TOOLBARCT2384137ATTR_NAME); var oToolbar = this._getService(strMaxVersionCTID); return oToolbar; }, getConduitToolbars: function() { var arrConduitToolbars = new Array(); var objToolbarbox = document.getElementById('navigator-toolbox'); var arrAllToolbars = objToolbarbox.getElementsByTagName('toolbar'); for (var i = 0; i < arrAllToolbars.length; i++) { if (arrAllToolbars[i].getAttribute(this.CONDUIT_TOOLBARCT2384137ATTR_NAME)) arrConduitToolbars.push(arrAllToolbars[i]); } return arrConduitToolbars; }, getMaxVersionToolbar: function(arrConduitToolbars) { if (arrConduitToolbars.length == 1) return arrConduitToolbars[0]; var xulMaxVersionToolbar = arrConduitToolbars[0]; var strMaxVersion = xulMaxVersionToolbar.getAttribute(this.VERSION_ATTR_NAME); var strVersion; for (var i = 1; i < arrConduitToolbars.length; i++) { strVersion = arrConduitToolbars[i].getAttribute(this.VERSION_ATTR_NAME); if (strVersion && EBGlobalManager_CT2384137.compareVersions(strVersion, strMaxVersion) > 0) { strMaxVersion = strVersion; xulMaxVersionToolbar = arrConduitToolbars[i]; } } return xulMaxVersionToolbar; }, _getService: function(strCTID) { try { return Components.classes["@conduit.com/toolbar;1=" + strCTID]. getService(Components.interfaces["nsIConduitToolbar_" + strCTID]).wrappedJSObject; } catch (e) { EBLogging_CT2384137.LogToConsole(e); } } }; function EBGadgetApi_CT2384137(xulBrowser, objManager, isAllowUntrustedFunctions) { this.getWidth = function() { return EBGadgetDialog_CT2384137.popHtmlData.width; }; this.getHeight = function() { return EBGadgetDialog_CT2384137.popHtmlData.height; }; this.storeKey = function(strKey, strValue) { var strFullPreferencePath = EBBrowserComponentApiManager_CT2384137.GetFullPreferencePath(_getUrl(), strKey); strValue = EBEncryption_CT2384137.encodeHex(strValue); EBToolbarPreferenceManager_CT2384137.SetPref(strFullPreferencePath, strValue); }; this.retrieveKey = function(strKey) { var strFullPreferencePath = EBBrowserComponentApiManager_CT2384137.GetFullPreferencePath(_getUrl(), strKey); var strValue = EBToolbarPreferenceManager_CT2384137.GetPref(strFullPreferencePath); if (strValue) strValue = EBEncryption_CT2384137.decodeHex(strValue); return strValue; }; this.deleteKey = function(strKey) { var strFullPreferencePath = EBBrowserComponentApiManager_CT2384137.GetFullPreferencePath(_getUrl(), strKey); EBToolbarPreferenceManager_CT2384137.SetPref(strFullPreferencePath, null); }; this.selfNavigate = function(strUrl, newWidth) { xulBrowser.loadURI(strUrl); if (newWidth) this.changeWidth(newWidth); }; this.changeWidth = function(newWidth) { EBGadgetDialog_CT2384137.ChangeSize(newWidth, null, false); }; this.changeHeight = function(newHeight) { EBGadgetDialog_CT2384137.ChangeSize(null, newHeight, false); }; this.navigateInMainFrame = function(strUrl) { if (objManager && objManager._isUserClick()) { var oWindow = EBGlobalManager_CT2384137.GetMostRecentBrowserWindow(); oWindow.EBLinkManager_CT2384137.LoadLinkURL(null, strUrl, "SELF", null); } }; this.getMainFrameUrl = function() { if (!isAllowUntrustedFunctions) { this.lastError = 1; return ""; } var oWindow = EBGlobalManager_CT2384137.GetMostRecentBrowserWindow(); return oWindow.EBUrl_CT2384137.GetPageUrl(); }; this.getMainFrameTitle = function() { if (!isAllowUntrustedFunctions) { this.lastError = 1; return ""; } var oWindow = EBGlobalManager_CT2384137.GetMostRecentBrowserWindow(); return oWindow.EBActionManager_CT2384137.GetPageTitle(); }; this.getSearchTerm = function() { if (!isAllowUntrustedFunctions) { this.lastError = 1; return ""; } var oWindow = EBGlobalManager_CT2384137.GetMostRecentBrowserWindow(); return oWindow.EBComponentsManager_CT2384137.GetSearchBoxComponent().xulMenuList.value; }; this.openGadget = function(strUrl, width, height, bIsResizable) { if (typeof bIsResizable == "undefined") bIsResizable = true; var oWindow = EBGlobalManager_CT2384137.GetMostRecentBrowserWindow(); var popHtmlData = new oWindow.oToolbar_CT2384137.toolbarDataParsing.dataObjects.PopHtml(); popHtmlData.popHtmlUrl = strUrl; popHtmlData.parentElement = EBGadgetDialog_CT2384137._oDialog; popHtmlData.openPositionType = popHtmlData.openPositionTypes.alignment; popHtmlData.openPositionData.vertical = popHtmlData.openPositionTypes.verticalAlignmentBottom; popHtmlData.width = width; popHtmlData.height = height; popHtmlData.resizable = bIsResizable; popHtmlData.isUser = isAllowUntrustedFunctions; popHtmlData.componentId = EBGadgetDialog_CT2384137.popHtmlData.componentId; popHtmlData.elementId = EBGadgetDialog_CT2384137.popHtmlData.elementId; popHtmlData.compType = EBGadgetDialog_CT2384137.popHtmlData.compType; popHtmlData.source = oWindow.EBUsageGadget_CT2384137.Other; popHtmlData.gadgetType = EBGadgetManager_CT2384137.GADGET_TYPE_REGULAR; oWindow.EBGadgetManager_CT2384137.OpenGadget(popHtmlData); }; this.openGadget2 = function(strUrl, width, height, features) { var oWindow = EBGlobalManager_CT2384137.GetMostRecentBrowserWindow(); var popHtmlData = new oWindow.oToolbar_CT2384137.toolbarDataParsing.dataObjects.PopHtml(); popHtmlData.popHtmlUrl = strUrl; popHtmlData.parentElement = EBGadgetDialog_CT2384137._oDialog; popHtmlData.width = width; popHtmlData.height = height; popHtmlData.isUser = isAllowUntrustedFunctions; popHtmlData.componentId = EBGadgetDialog_CT2384137.popHtmlData.componentId; popHtmlData.elementId = EBGadgetDialog_CT2384137.popHtmlData.elementId; popHtmlData.compType = EBGadgetDialog_CT2384137.popHtmlData.compType; popHtmlData.source = oWindow.EBUsageGadget_CT2384137.Other; popHtmlData.gadgetType = EBGadgetManager_CT2384137.GADGET_TYPE_REGULAR; popHtmlData.initFeatures(features); oWindow.EBGadgetManager_CT2384137.OpenGadget(popHtmlData); }; this.closeWindow = function() { window.close(); }; this.changeSize = function(newWidth, newHeight) { EBGadgetDialog_CT2384137.ChangeSize(newWidth, newHeight, false); }; this.refreshToolbar = function() { var oWindow = EBGlobalManager_CT2384137.GetMostRecentBrowserWindow(); var func = function() { oWindow.EBSpecialCommands_CT2384137.REFRESH_TOOLBAR_VIEW(false); }; oWindow.setTimeout(func, 1); }; var _getUrl = function() { var oWindow = EBGlobalManager_CT2384137.GetMostRecentBrowserWindow(); return oWindow.EBActionManager_CT2384137.ConvertAliasesUrl(xulBrowser.currentURI.spec); }; }; EBGadgetApi_CT2384137.prototype = new EBBrowserCompApi_CT2384137(); var EBGadgetDialog_CT2384137 = { popHtmlData: null, _oWindow: null, _oTitleBar: null, _oBoxTitle: null, _lblTitle: null, _oImgClose: null, _oBoxSpaceForClose: null, _oImgTitle: null, _oMainBox: null, _oDivError: null, _oDialog: null, _oResizer: null, _openTimeStamp: 0, _usageSentForClickInside: false, BrowserParentId: 'mainBox', _gadgetProgressListener: null, xulBrowser: null, _facebookGadgetDialog: null, OnLoad: function(event) { this.SetParameters(); this.SetLocalVariables(); this.ApplyParametersLogic(); window.totalWidth = this.popHtmlData.width + _widthDelta; window.totalHeight = this.popHtmlData.height + _heightDelta; if (!EBGlobalManager_CT2384137.IsMacintoshPlatform()) { window.max = (window.totalHeight > window.totalWidth) ? window.totalHeight : window.totalWidth; window.step = max / 12; var oResize = function() { EBGadgetDialog_CT2384137.ResizeWindow(2, 2, 1); }; setTimeout(oResize, 1); } else { var funcTimeout = function() { window.resizeTo(window.totalWidth, window.totalHeight); EBGadgetDialog_CT2384137.CreateBrowser(); }; setTimeout(funcTimeout, 1) } //usage if (_gadgetType == EBUsageGadget_CT2384137.GadgetTypes.Chat) this._oWindow.EBUsageChat_CT2384137.OnOpen(this.popHtmlData.componentId, this.popHtmlData.elementId, this.popHtmlData.popHtmlUrl, this.popHtmlData.source, this.popHtmlData.chatRoomId, this.popHtmlData.compType); else { if (this.popHtmlData.gadgetType == EBGadgetManager_CT2384137.GADGET_TYPE_FACEBOOK) { var facebookConsts = this._oWindow.oToolbar_CT2384137.facebook.consts; switch (this.popHtmlData.facebookGagetType) { case facebookConsts.gadgetType.login: this._oWindow.EBUsageFacebook_CT2384137.OnLoginGadgetOpen(this.popHtmlData.elementId, this.popHtmlData.componentId, this.popHtmlData.compType); break; case facebookConsts.gadgetType.getUpdateStatusPermission: this._oWindow.EBUsageFacebook_CT2384137.OnSetStatusPermGadgetOpen(this.popHtmlData.elementId, this.popHtmlData.componentId, this.popHtmlData.compType); break; case facebookConsts.gadgetType.updateStatusWithoutAfterGetPermission: this._oWindow.EBUsageFacebook_CT2384137.OnSetStatusGadgetOpen(this.popHtmlData.elementId, this.popHtmlData.componentId, this.popHtmlData.compType); break; case facebookConsts.gadgetType.updateStatusAfterGetPermission: this._oWindow.EBUsageFacebook_CT2384137.OnSetStatusGadgetShow(this.popHtmlData.elementId, this.popHtmlData.componentId, this.popHtmlData.compType); break; case facebookConsts.gadgetType.share: this._oWindow.EBUsageFacebook_CT2384137.OnShareGadgetOpen(this.popHtmlData.elementId, this.popHtmlData.componentId, this.popHtmlData.compType); break; } } else this._oWindow.EBUsageGadget_CT2384137.OnOpen(this.popHtmlData.componentId, this.popHtmlData.elementId, this.popHtmlData.popHtmlUrl, this.popHtmlData.source, _gadgetType, this.popHtmlData.compType); } }, OnUnLoad: function(event) { //unload gadget manager (progress listener and api) if (this._gadgetProgressListener) this._gadgetProgressListener.unload(); //remove this browser xul object from the hash array. if (this._oWindow && this._oWindow.EBGadgetManager_CT2384137) { var index = this._oWindow.EBGadgetManager_CT2384137.arrPopupHTMLWindows.GetIndexByObjectValue(this.xulBrowser); this._oWindow.EBGadgetManager_CT2384137.arrPopupHTMLWindows.Remove(index, this.popHtmlData.popHtmlUrl); } //calculate open duration var iOpenDuration = (Date.parse(Date()) - this._openTimeStamp) / 1000; //usage, if this dialog is closed because of main window closed, "this._oWindow.EBUsageGadget_CT2384137" will be null. if (this._oWindow && this._oWindow.EBUsageGadget_CT2384137) { if (_gadgetType == EBUsageGadget_CT2384137.GadgetTypes.Chat) this._oWindow.EBUsageChat_CT2384137.Close(this.popHtmlData.componentId, this.popHtmlData.elementId, this.popHtmlData.popHtmlUrl, this.popHtmlData.chatRoomId, iOpenDuration, this.popHtmlData.compType); else { if (this.popHtmlData.gadgetType == EBGadgetManager_CT2384137.GADGET_TYPE_FACEBOOK) { var facebookConsts = this._oWindow.oToolbar_CT2384137.facebook.consts; switch (this.popHtmlData.facebookGagetType) { case facebookConsts.gadgetType.login: this._oWindow.EBUsageFacebook_CT2384137.OnLoginGadgetClose(this.popHtmlData.elementId, this.popHtmlData.componentId, this.popHtmlData.compType, window.ebCloseStatus); break; case facebookConsts.gadgetType.getUpdateStatusPermission: this._oWindow.EBUsageFacebook_CT2384137.OnSetStatusPermGadgetClose(this.popHtmlData.elementId, this.popHtmlData.componentId, this.popHtmlData.compType, window.ebCloseStatus); break; case (facebookConsts.gadgetType.updateStatusWithoutAfterGetPermission): case (facebookConsts.gadgetType.updateStatusAfterGetPermission): this.SendSetStatusCloseUsage(); break; case facebookConsts.gadgetType.share: this._oWindow.EBUsageFacebook_CT2384137.OnShareGadgetClose(this.popHtmlData.elementId, this.popHtmlData.componentId, this.popHtmlData.compType); break; case facebookConsts.gadgetType.getReadMailboxPermission: this._oWindow.EBUsageFacebook_CT2384137.OnReadMailboxPermGadgetClose(this.popHtmlData.elementId, this.popHtmlData.componentId, this.popHtmlData.compType, window.ebCloseStatus); break; } } else this._oWindow.EBUsageGadget_CT2384137.Close(this.popHtmlData.componentId, this.popHtmlData.elementId, this.popHtmlData.popHtmlUrl, this.popHtmlData.source, _gadgetType, iOpenDuration, this.popHtmlData.compType); } } }, SendSetStatusCloseUsage: function() { if (window.ebCloseStatus == this._oWindow.oToolbar_CT2384137.facebook.consts.gadgetClosingType.clear) this._oWindow.EBUsageFacebook_CT2384137.OnSetStatusGadgetClear(this.popHtmlData.elementId, this.popHtmlData.componentId, this.popHtmlData.compType); else this._oWindow.EBUsageFacebook_CT2384137.OnSetStatusGadgetClose(this.popHtmlData.elementId, this.popHtmlData.componentId, this.popHtmlData.compType, window.ebCloseStatus); }, OnDocumentComplete: function(bIsSuccess, bIsMainBC) { if (bIsMainBC) { if (this.xulBrowser.contentTitle && (_syncTitle || !this.popHtmlData.title)) this.popHtmlData.title = this.xulBrowser.contentTitle; //remove the loading animation from the window and expand the browser xul object this._oDialog.className = _cssDialogLoaded; if (!bIsSuccess) this._onError(); else { this.SetTitle(); this._showResizer(); this._oDivError.style.display = 'none'; this._setColorForResizerAndTitle(this.GetBrowserBackgroundColor(this.xulBrowser)); } this.xulBrowser.focus(); } if (this.popHtmlData.gadgetType == EBGadgetManager_CT2384137.GADGET_TYPE_FACEBOOK) { if (!this._facebookGadgetDialog) this._facebookGadgetDialog = new EBFacebookGadgetDialog_CT2384137(this._oWindow, this.popHtmlData); this._facebookGadgetDialog.onDocumentComplete(this.xulBrowser); } //override the window.close function var innerJS = EBGlobalManager_CT2384137.GetWebPageJavascriptObject(this.xulBrowser.contentWindow); innerJS.window.close = function() { window.close(); }; var facebookConsts = this._oWindow.oToolbar_CT2384137.facebook.consts; if (this.popHtmlData.facebookGagetType == facebookConsts.gadgetType.updateStatusWithoutAfterGetPermission || this.popHtmlData.facebookGagetType == facebookConsts.gadgetType.updateStatusAfterGetPermission) { var innerJS = EBGlobalManager_CT2384137.GetWebPageJavascriptObject(this.xulBrowser.contentWindow); var win = this._oWindow; var that = this; innerJS.window.facebookSetStatus = function(state, status) { if (state == "post") { window.ebCloseStatus = facebookConsts.gadgetClosingType.success; win.oToolbar_CT2384137.facebook.manager.setStatus(status); } else if (state == "cancel") window.ebCloseStatus = facebookConsts.gadgetClosingType.cancel; if (state != "clear") window.close(); else { win.oToolbar_CT2384137.facebook.manager.setStatus(""); win.EBUsageFacebook_CT2384137.OnSetStatusGadgetClear(that.popHtmlData.elementId, that.popHtmlData.componentId, that.popHtmlData.compType); } }; } }, OnClick: function(event, strUrl) { if (this._usageSentForClickInside) return; if (this.popHtmlData.gadgetType == EBGadgetManager_CT2384137.GADGET_TYPE_CHAT) this._oWindow.EBUsageChat_CT2384137.OnClickInside(this.popHtmlData.componentId, this.popHtmlData.elementId, event, strUrl, this.popHtmlData.chatRoomId, this.popHtmlData.compType); else if (this.popHtmlData.gadgetType == EBGadgetManager_CT2384137.GADGET_TYPE_REGULAR) this._oWindow.EBUsageGadget_CT2384137.OnClickInside(this.popHtmlData.componentId, this.popHtmlData.elementId, event, this.popHtmlData.source, _gadgetType, strUrl, this.popHtmlData.compType); this._usageSentForClickInside = true; }, _onError: function() { //translate error message var locale = this._oWindow.EBToolbarPreferenceManager_CT2384137.GetPref(EBPreferenceConsts_CT2384137.Locale, true); var strErrorText = this._oWindow.oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_GADGETS_ERROR_TEXT'); this._oDivError.innerHTML = strErrorText; this._oDivError.style.display = ''; this._oDivError.style.width = this.popHtmlData.width + 'px'; this._oDivError.style.heigh = this.popHtmlData.height + 'px'; /* if (this._oResizer && this.popHtmlData.resizable) this._oResizer.style.display = 'none'; */ this.xulBrowser.style.display = 'none'; }, _setColorForResizerAndTitle: function(strColor) { //set resizer background color to be as document background color this._oResizer.style.backgroundColor = strColor; if (!this.popHtmlData.titlebar && this.popHtmlData.closeButton) this._oBoxSpaceForClose.style.backgroundColor = strColor; }, _showResizer: function() { if (this._oResizer && this.popHtmlData.resizable) { this._oResizer.style.display = ''; /* var curDirection = document.defaultView.getComputedStyle(this._oDialog, null).getPropertyValue("direction"); if(curDirection == 'rtl') this.SetResizerRtl(); */ } }, /* - disabled in this release //todo - create RTL css and change to it also on RTL platforms SetResizerRtl : function() { var xulResizer = document.getElementById('xulResizer'); xulResizer.dir = 'bottomleft'; var oImage = new Image(); oImage.src = "chrome://iobitcom/skin/resizeRTL.gif"; xulResizer.appendChild(oImage); }, */ GetBrowserBackgroundColor: function(xulCurrentBrowser) { try { var strColor = xulCurrentBrowser.contentDocument.defaultView.getComputedStyle(xulCurrentBrowser.contentDocument.getElementsByTagName('body')[0], null).getPropertyValue("background-color"); if (strColor == 'transparent') strColor = 'white'; return strColor; } catch (ex) { return 'white'; EBLogging_CT2384137.LogToConsole(ex); } }, SetParameters: function() { this._oWindow = EBGlobalManager_CT2384137.GetMostRecentBrowserWindow(); this.popHtmlData = window.arguments[0]; this.popHtmlData.popHtmlUrl = this._oWindow.EBActionManager_CT2384137.ConvertAliasesUrl(this.popHtmlData.popHtmlUrl); }, SetLocalVariables: function() { this._oTitleBar = document.getElementById('titleBar'); this._oBoxTitle = document.getElementById("boxTitle"); this._lblTitle = document.getElementById('lblTitle'); this._oImgClose = document.getElementById('imgClose'); this._oBoxSpaceForClose = document.getElementById("boxSpaceForClose"); this._oImgEdit = document.getElementById('imgEdit'); this._oImgTitle = document.getElementById('imgTitle'); this._oMainBox = document.getElementById('mainBox'); this._oResizer = document.getElementById('boxResize'); this._oDivError = document.getElementById('dscErrorLoading'); this._oDialog = document.getElementById('EBPopupHTMLWindow'); }, ApplyParametersLogic: function() { if (!this.popHtmlData.titlebar && !this.popHtmlData.closeButton) this._oBoxTitle.style.display = "none"; else { if (!this.popHtmlData.titlebar) { this._oTitleBar.style.display = "none"; this._oBoxSpaceForClose.style.display = ""; this._oBoxTitle.className = ""; } if (!this.popHtmlData.closeButton) this._oImgClose.style.display = "none"; } this._showResizer(); }, SetBrowserLogics: function() { if (!this.popHtmlData.scrollV && !this.popHtmlData.scrollH) this.xulBrowser.setAttribute("autoscroll", false); else { if (this.popHtmlData.scrollV) this.xulBrowser.style.overflowY = "auto"; if (this.popHtmlData.scrollH) this.xulBrowser.style.overflowX = "auto"; } }, ResizeWindow: function(newWidth, newHeight, i) { newWidth = parseInt(newWidth); newHeight = parseInt(newHeight); i = parseInt(i); // final resize if (i >= max) { window.resizeTo(parseInt(this.popHtmlData.width) + _widthDelta, parseInt(this.popHtmlData.height) + _heightDelta); this.CreateBrowser(); return; } i += Math.floor(step); if (i <= this.popHtmlData.height) { newHeight = i; } if (i <= this.popHtmlData.width) { newWidth = i; } window.resizeTo(newWidth, newHeight); var oResize = function() { EBGadgetDialog_CT2384137.ResizeWindow(newWidth, newHeight, i); }; setTimeout(oResize, 1); }, SetTitleFromDocument: function() { if (EBGadgetDialog_CT2384137.xulBrowser.contentTitle) EBGadgetDialog_CT2384137.popHtmlData.title = EBGadgetDialog_CT2384137.xulBrowser.contentTitle; EBGadgetDialog_CT2384137.SetTitle(); EBGadgetDialog_CT2384137.SetIcon(); if (!EBGadgetDialog_CT2384137.popHtmlData.titlebar) { EBGadgetDialog_CT2384137._oBoxTitle.style.backgroundColor = EBGadgetDialog_CT2384137.GetBrowserBackgroundColor(EBGadgetDialog_CT2384137.xulBrowser); } }, SetTitle: function() { this._lblTitle.value = this.popHtmlData.title; if (!this.IsCloseVisible()) { var strTitle; for (var i = this.popHtmlData.title.length; i >= 0; i--) { strTitle = this.popHtmlData.title.substring(0, i); this._lblTitle.value = strTitle; if (this.IsCloseVisible()) break; } } window.title = this._lblTitle.value; }, SetIcon: function() { var imageUrl = ""; if (this.popHtmlData.titleIconUrl) imageUrl = this.popHtmlData.titleIconUrl; /* - favicon disabled in this release else { var strUrl = this.xulBrowser.currentURI.host; strUrl = EBUrl_CT2384137.LegalizeLinkUrl(strUrl); imageUrl = strUrl + "/favicon.ico"; }*/ EBGadgetDialog_CT2384137._oImgTitle.src = imageUrl; }, IsCloseVisible: function() { var iBoxTitleWidth = this._oDialog.boxObject.width; var iCloseTopRight = this._oImgClose.boxObject.x + this._oImgClose.boxObject.width; return iCloseTopRight + _addCloseSpace <= iBoxTitleWidth; }, CreateBrowser: function() { this.xulBrowser = EBXULFactory_CT2384137.CreateBrowser(this.popHtmlData.popHtmlUrl, this.popHtmlData.popHtmlUrl, this.popHtmlData.width, this.popHtmlData.height); this.xulBrowser.setAttribute('flex', '1'); this.xulBrowser.setAttribute('type', 'content-primary'); var oBrowser = this._oWindow.EBGadgetManager_CT2384137.arrPopupHTMLWindows.GetByID(this.popHtmlData.popHtmlUrl); //add this browser xul object to hash table of objects if (!oBrowser) this._oWindow.EBGadgetManager_CT2384137.arrPopupHTMLWindows.Add(this.popHtmlData.popHtmlUrl, this.xulBrowser); this._oMainBox.appendChild(this.xulBrowser); this._setListeners(); this.OnFocus(); this.SetBrowserLogics(); }, _setListeners: function() { this._gadgetProgressListener = new EBGadgetProgressListener_CT2384137(); this._gadgetProgressListener.init(this.xulBrowser, this._isAllowUntrustedFunctions(), this.popHtmlData.width, this.popHtmlData.height, this.popHtmlData.componentId, this.popHtmlData.elementId, this.popHtmlData.compType); this._gadgetProgressListener.initGadgetData(this.popHtmlData.source, this.popHtmlData.gadgetType, EBGadgetDialog_CT2384137.OnDocumentComplete, EBGadgetDialog_CT2384137.OnClick, this); this.xulBrowser.addEventListener("DOMTitleChanged", EBGadgetDialog_CT2384137.SetTitleFromDocument, false); this.xulBrowser.addEventListener("blur", EBGadgetDialog_CT2384137.OnBrowserBlur, true); this.xulBrowser.addEventListener("mousemove", EBGadgetDialog_CT2384137.OnMouseMove, true); }, _isAllowUntrustedFunctions: function() { //if user component, always allow. if (this.popHtmlData.isUser) return true; return this._oWindow.oToolbarManager_CT2384137.getToolbarData().generalToolbarInfo.allowNonPrivacyFunctions; }, ChangeSize: function(newWidth, newHeight, isFromManualResize) { if (isFromManualResize) { newWidth = parseInt(document.defaultView.getComputedStyle(this.xulBrowser, null).getPropertyValue("width")); newHeight = parseInt(document.defaultView.getComputedStyle(this.xulBrowser, null).getPropertyValue("height")); } else { if (!newHeight) newHeight = parseInt(document.defaultView.getComputedStyle(this.xulBrowser, null).getPropertyValue("height")) + 5; if (!newWidth) newWidth = parseInt(document.defaultView.getComputedStyle(this.xulBrowser, null).getPropertyValue("width")); } this.popHtmlData.width = parseInt(newWidth); this.popHtmlData.height = parseInt(newHeight); var bAdjustSize = false; if (this._oDialog.boxObject.width < _minWidth + _widthDelta) { bAdjustSize = true; this.popHtmlData.width = _minWidth; } if (this._oDialog.boxObject.height < _minHeight + _heightDelta) { bAdjustSize = true; this.popHtmlData.height = _minHeight; } //don't resize if the window is already manually resized if (!isFromManualResize || bAdjustSize) window.resizeTo(this.popHtmlData.width + _widthDelta, this.popHtmlData.height + _heightDelta); //save new size var strGadgetName = (this.popHtmlData.gadgetType == EBGadgetManager_CT2384137.GADGET_TYPE_CHAT) ? EBGadgetManager_CT2384137.CHAT_DIALOG_NAME : this.popHtmlData.popHtmlUrl; if (this.popHtmlData.saveSize) this._oWindow.EBGadgetManager_CT2384137.GadgetSize(strGadgetName, this.popHtmlData.width, this.popHtmlData.height); this.SetTitle(); }, /////////////////////////////////////////////////////////// //Title bar events OnMouseDownMinMax: function(event) { window.minimize(); }, OnMouseUpMinMax: function(event) { event.target.src = _imgMin; }, OnMouseOverMinMax: function(event) { event.target.src = _imgMin_hover; }, OnMouseOutMinMax: function(event) { event.target.src = _imgMin; }, OnMouseDownClose: function(event) { event.target.src = _imgClose_dn; }, OnMouseUpClose: function(event) { event.target.src = _imgClose; window.ebCloseStatus = "Close"; window.close(); }, OnMove: function(event) { var strGadgetName = (this.popHtmlData.gadgetType == EBGadgetManager_CT2384137.GADGET_TYPE_CHAT) ? EBGadgetManager_CT2384137.CHAT_DIALOG_NAME : this.popHtmlData.popHtmlUrl; if (EBGadgetDialog_CT2384137.popHtmlData.saveLocation) this._oWindow.EBGadgetManager_CT2384137.GadgetCoordinates(strGadgetName, this._oDialog.boxObject.screenX, this._oDialog.boxObject.screenY); }, //Title bar events end /////////////////////////////////////////////////////////// OnResizeEnd: function(event) { this.ChangeSize(null, null, true); }, OnFocus: function(event) { var oBrowser = this._oMainBox.firstChild; if (oBrowser) this._oWindow.EBGadgetManager_CT2384137.selectedPopWindowId = oBrowser.id; }, //track mouse move from the dialog, because browser tracking stops when mouse over dialog. OnMouseMove: function(event) { EBGadgetDialog_CT2384137._oWindow.EBGlobalVariables_CT2384137.ScreenCoordinateX = event.screenX; EBGadgetDialog_CT2384137._oWindow.EBGlobalVariables_CT2384137.ScreenCoordinateY = event.screenY; }, OnBrowserBlur: function(event) { if (!EBGadgetDialog_CT2384137.popHtmlData.closeOnExternalClick) return; //check if the click is inside the gadget //usage global mouse position and gadget's box object var topLeft = { "x": EBGadgetDialog_CT2384137.xulBrowser.boxObject.screenX, "y": EBGadgetDialog_CT2384137.xulBrowser.boxObject.screenY }; var bottomRight = { "x": topLeft.x + EBGadgetDialog_CT2384137.xulBrowser.boxObject.width, "y": topLeft.y + EBGadgetDialog_CT2384137.xulBrowser.boxObject.height }; var mouseX = EBGadgetDialog_CT2384137._oWindow.EBGlobalVariables_CT2384137.ScreenCoordinateX; var mouseY = EBGadgetDialog_CT2384137._oWindow.EBGlobalVariables_CT2384137.ScreenCoordinateY; if (mouseX >= topLeft.x && mouseX <= bottomRight.x && mouseY >= topLeft.y && mouseY <= bottomRight.y) { return; } var oWin = EBGadgetDialog_CT2384137._oWindow; var bringToFrontOtherGadgets = function() { oWin.EBGadgetManager_CT2384137.BringToFront(); }; oWin.setTimeout(bringToFrontOtherGadgets, 50); window.close(); }, ChatRoomChange: function(strNewUrl) { this._gadgetProgressListener._selfNavigate(strNewUrl, null); window.focus(); //send usage EBUsageButton_CT2384137.OnItemClick(this.popHtmlData.componentId, this.popHtmlData.elementId, this.popHtmlData.compType); } } //inherits from nsIWebProgressListener function EBGadgetProgressListener_CT2384137() { this.isClickedInGadget = false; this.source = ""; this.gadgetType = ""; this.callbackDocumentComplete = null; this.callbackOnClick = null; this.callbackThis = null; this._onDocumentComplete = function(bIsSuccess, bIsMainBC) { if (this.callbackDocumentComplete) this.callbackDocumentComplete.call(this.callbackThis, bIsSuccess, bIsMainBC); }; this._initBrowserCompApi = function() { this.browserCompApi = new EBGadgetApi_CT2384137(this.xulBrowser, this, this.isAllowUntrustedFunctions); }; this.onclick = function(event) { this._logUserActionTimeStamp(event); //send usage if (this.callbackOnClick) this.callbackOnClick.call(this.callbackThis, event, this.xulBrowser.currentURI.spec); }; this.initGadgetData = function(strSource, strGadgetType, callbackDocumentComplete, callbackOnClick, that) { this.source = strSource; this.gadgetType = strGadgetType; this.isGadget = true; this.callbackDocumentComplete = callbackDocumentComplete; this.callbackThis = that; this.callbackOnClick = callbackOnClick; }; }; EBGadgetProgressListener_CT2384137.prototype = new EBBrowserCompProgressListener_CT2384137(); var EBGadgetManager_CT2384137 = { BrowserName: 'popupHTMLWindow', PopupHTMLWindowId: 'EBPopupHTMLWindow', arrPopupHTMLWindows: null, strChromePath: 'chrome://iobitcom/content/popup.xul', strChromePathChat: 'chrome://iobitcom/content/popup_chat.xul', selectedPopWindowId: null, GADGET_TYPE_REGULAR: 1, GADGET_TYPE_CHAT: 4, GADGET_TYPE_FACEBOOK: 5, CHAT_DIALOG_NAME: 'ChatGadgetWindowNameCT2384137', OpenGadget: function(objPopHtmlDataOriginal) { //clone the data object to ensure that changes that will be made in gadget will not reflect //next time that the same gadget will be opened var objPopHtmlData = EBGlobalManager_CT2384137.cloneObject(objPopHtmlDataOriginal); //check if already opened var strDialogName = (objPopHtmlData.gadgetType != this.GADGET_TYPE_CHAT) ? objPopHtmlData.popHtmlUrl : this.CHAT_DIALOG_NAME; var oDialog = this.GetGadgetWindow(strDialogName); if (oDialog) { //regular gadget if (objPopHtmlData.gadgetType != this.GADGET_TYPE_CHAT) oDialog.focus() //chat gadget, reload with new url else oDialog.EBGadgetDialog_CT2384137.ChatRoomChange(objPopHtmlData.popHtmlUrl); return; } this.initGadgetsHash(); var features = ""; var position = ""; var bHaveSavedLocation = false; //get saved size, if exists if (objPopHtmlData.saveSize) { var size = this.GadgetSize(objPopHtmlData.popHtmlUrl); if (size) { objPopHtmlData.width = size.width; objPopHtmlData.height = size.height; } } var x, y; //get saved location, if exists if (objPopHtmlData.saveLocation) { var coordinates = this.GadgetCoordinates(objPopHtmlData.popHtmlUrl); if (coordinates) { x = coordinates.x; y = coordinates.y; bHaveSavedLocation = true; } } if (!bHaveSavedLocation) { switch (objPopHtmlData.openPositionType) { case objPopHtmlData.openPositionTypes.click: x = EBGlobalVariables_CT2384137.ScreenCoordinateX; y = EBGlobalVariables_CT2384137.ScreenCoordinateY; break; case objPopHtmlData.openPositionTypes.center: x = screen.availWidth / 2 - (objPopHtmlData.width / 2); y = screen.availHeight / 2 - (objPopHtmlData.height / 2); break; case objPopHtmlData.openPositionTypes.alignment: if (objPopHtmlData.openPositionData.vertical == objPopHtmlData.openPositionTypes.verticalAlignmentTop) y = objPopHtmlData.parentElement.boxObject.screenY - objPopHtmlData.height - 38; else y = objPopHtmlData.parentElement.boxObject.screenY + objPopHtmlData.parentElement.boxObject.height; if (objPopHtmlData.openPositionData.horizontal == objPopHtmlData.openPositionTypes.horizontalAlignmentRight) x = objPopHtmlData.parentElement.boxObject.screenX + objPopHtmlData.parentElement.boxObject.width - objPopHtmlData.width - 2; else x = objPopHtmlData.parentElement.boxObject.screenX break; case objPopHtmlData.openPositionTypes.offset: x = objPopHtmlData.parentElement.boxObject.screenX + objPopHtmlData.openPositionData.offsetX; y = objPopHtmlData.parentElement.boxObject.screenY + objPopHtmlData.openPositionData.offsetY; break; } } //window is bigger then browser object, because of the borders and custom title if (objPopHtmlData.width + 2 > screen.availWidth + screen.availLeft) objPopHtmlData.width = screen.availWidth + screen.availLeft - 2; if (objPopHtmlData.height + 40 > screen.availHeight) objPopHtmlData.height = screen.availHeight - 40; // adjust window top left corner according to available portion of // the user screen if (x + objPopHtmlData.width + 2 > screen.availWidth + screen.availLeft) x = screen.availWidth + screen.availLeft - objPopHtmlData.width - 2; if (y + objPopHtmlData.height + 38 > screen.availHeight) y = screen.availHeight - objPopHtmlData.height - 38; position = "left=" + x + ",top=" + y; //regular gadget if (objPopHtmlData.gadgetType != this.GADGET_TYPE_CHAT) features = "dependent,"; if (EBGlobalManager_CT2384137.IsMacintoshPlatform() && !EBGlobalManager_CT2384137.IsFirefox36()) features += "titlebar = no," else features += "titlebar = yes," features += "chrome,resizable=yes,width=1,height=1," + position; var strChromePath = this.GetGadgetChromePath(objPopHtmlData.gadgetType); window.openDialog(strChromePath, strDialogName, features, objPopHtmlData); }, initGadgetsHash: function() { if (!EBGlobalManager_CT2384137.GetMostRecentBrowserWindow().EBGadgetManager_CT2384137.arrPopupHTMLWindows) EBGlobalManager_CT2384137.GetMostRecentBrowserWindow().EBGadgetManager_CT2384137.arrPopupHTMLWindows = new EBArrayHashObject_CT2384137(); }, GetGadgetWindow: function(strURL) { var oDialog = EBGlobalManager_CT2384137.GetXULWindowByTypeAndName("EBPopupDialog_CT2384137", strURL) return oDialog; }, RefreshContent: function(oDialog) { try { var oBrowser = oDialog.document.getElementsByTagName('browser')[0]; oBrowser.setAttribute('EBStopped', true); oBrowser.reload(); } catch (e) { EBLogging_CT2384137.LogToConsole(e); } }, GetGadgetChromePath: function(GadgetType) { GadgetType = parseInt(GadgetType); if (!GadgetType) GadgetType = this.GADGET_TYPE_REGULAR; var strPath = ''; switch (GadgetType) { case this.GADGET_TYPE_REGULAR: strPath = this.strChromePath; break; case this.GADGET_TYPE_FACEBOOK: strPath = this.strChromePath; break; case this.GADGET_TYPE_CHAT: strPath = this.strChromePathChat; break; } return strPath; }, IsGadget: function(xulBrowser) { if (xulBrowser.parentNode.getAttribute('id') == EBGadgetDialog_CT2384137.BrowserParentId) return true; else return false; }, BringToFront: function() { //enough to focus on one popup window, in order to bring all others to front window.focus(); var i; if (this.arrPopupHTMLWindows != null && this.arrPopupHTMLWindows.Count() != 0) { var xulBrowser = null; for (i = 0; i < this.arrPopupHTMLWindows.Count(); i++) { xulBrowser = this.arrPopupHTMLWindows.GetByIndex(i); try { xulBrowser = EBGlobalManager_CT2384137.GetXULWindowByTypeAndName("EBPopupDialog_CT2384137", xulBrowser.id); xulBrowser.focus(); break; } catch (ex) { EBLog(ex); } } } //no open pop-up windows in this toolbar, check if there are in other toolbars else { var cmndName = ''; var thatGlobalManager; var thatGadgetManager; var arrCTID = EBActionManager_CT2384137.GetEBToolbarsCTID(); for (i = 0; i < arrCTID.length; i++) { thatGlobalManager = window["EBGlobalManager_" + arrCTID[i].originalCTID]; thatGadgetManager = window["EBGadgetManager_" + arrCTID[i].originalCTID]; if (thatGlobalManager && thatGadgetManager) { oDialog = thatGlobalManager.GetXULWindowByTypeAndName("EBPopupDialog_" + arrCTID[i].originalCTID, thatGadgetManager.selectedPopWindowId); if (oDialog) { oDialog.focus(); break; } } } } }, GadgetCoordinates: function(strUrl, posX, posY) { var strPref = EBPreferenceConsts_CT2384137.MiniIPageGadgetPosition + '.' + strUrl; var strPos; //get if (typeof posX == 'undefined' && typeof posY == 'undefined') { strPos = EBGlobalPreferenceManager_CT2384137.GetPref(strPref); if (strPos) { var arrPos = strPos.split('x'); return { x: parseInt(arrPos[0]), y: parseInt(arrPos[1]) }; } else return null; } //set else { strPos = posX + 'x' + posY; EBGlobalPreferenceManager_CT2384137.SetPref(strPref, strPos); } }, GadgetSize: function(strUrl, width, height) { var strPref = EBPreferenceConsts_CT2384137.MiniIPageGadgetSize + '.' + strUrl; var strSize; //get if (typeof width == 'undefined' && typeof height == 'undefined') { strSize = EBGlobalPreferenceManager_CT2384137.GetPref(strPref); if (strSize) { var arrSize = strSize.split('x'); if (isNaN(parseInt(arrSize[0])) || isNaN(parseInt(arrSize[1]))) return null; else return { width: parseInt(arrSize[0]), height: parseInt(arrSize[1]) }; } else return null; } //set else { strSize = width + 'x' + height; EBGlobalPreferenceManager_CT2384137.SetPref(strPref, strSize); } } }; var EBMCTrusteDialog_CT2384137 = { dialogFilename: "truste.xul", dialogName: "EBTrusteDialogName", dialogId: "EBTrusteDialogId", downloadUrl: "", mainWindow: null, usageSource: "", //************** toolbar scope ************** open: function(strDownloadUrl, strUsageSource) { window.openDialog(EBGlobalConsts_CT2384137.ChromeContentPath + this.dialogFilename, this.dialogName, 'modal,centerscreen,chrome,resizable=no', strDownloadUrl, strUsageSource); }, //************** dialog scope ************** onload: function(event) { this.downloadUrl = window.arguments[0]; this.usageSource = window.arguments[1]; this.mainWindow = EBGlobalManager_CT2384137.GetMostRecentBrowserWindow(); this._applyLP(); }, onunload: function(event) { }, onaccept: function() { var strUsageSource = this.usageSource; var strUrl = this.downloadUrl; var oWin = this.mainWindow; var funcGetAndChangeCommunity = function() { oWin.EBMCManager_CT2384137.GetAndChangeCommunity(strUrl, strUsageSource); }; oWin.setTimeout(funcGetAndChangeCommunity, 1000); }, oncancel: function() { }, onclickEULA: function() { EBActionManager_CT2384137.OpenEULA("BLANK", this.downloadUrl); }, _applyLP: function() { var dialogsDirection = this.mainWindow.EBGlobalManager_CT2384137.IsReverseDialogs(); if (dialogsDirection) EBUILogic_Dialog_CT2384137.setWindowDirection(dialogsDirection, this.dialogId); var locale = this.mainWindow.EBToolbarPreferenceManager_CT2384137.GetPref(EBPreferenceConsts_CT2384137.Locale, true); window.title = this.mainWindow.oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_ADD_COMMUNITY_DLG_TITLE'); document.getElementById("dscText1").firstChild.nodeValue = this.mainWindow.oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_ADD_COMMUNITY_DLG_EXPLAIN1'); document.getElementById("dscText2").firstChild.nodeValue = this.mainWindow.oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_ADD_COMMUNITY_DLG_EXPLAIN2'); document.getElementById("lblEula").value = this.mainWindow.oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_ADD_COMMUNITY_DLG_LEARN_MORE'); document.getElementById("btnAccept").setAttribute("label", this.mainWindow.oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_GLOBAL_OK')); document.getElementById("btnCancel").setAttribute("label", this.mainWindow.oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_GLOBAL_CANCEL')); } } var EBGroupingManager_CT2384137 = { LOCALE_PREF_NAME: "general.useragent.locale", groupingReceived: false, canInitToolbar: function() { if (!EBGlobalConsts_CT2384137.IsSelectFromGroupingByLocale) return true; //this will be relevant when upgrade is done, if the new toolbar set to select from grouping if (EBToolbarPreferenceManager_CT2384137.HasUserValue(EBPreferenceConsts_CT2384137.FirstTime)) return true; return EBToolbarPreferenceManager_CT2384137.GetPref(EBPreferenceConsts_CT2384137.IsToolbarSelectedFromGrouping); }, initFirstTime: function() { EBMCServerComm_CT2384137.GetGroupInfoFromServer(true); var that = this; setTimeout(function() { that.checkGroupingReceived.call(that); }, 5000); }, onErrorGetting: function() { EBToolbarPreferenceManager_CT2384137.SetPref(EBPreferenceConsts_CT2384137.IsToolbarSelectedFromGrouping, true); if (!EBToolbarPreferenceManager_CT2384137.HasUserValue(EBPreferenceConsts_CT2384137.CTID)) EBToolbarPreferenceManager_CT2384137.SetPref(EBPreferenceConsts_CT2384137.CTID, EBGlobalConsts_CT2384137.ToolbarCTID); //TODO: set client error log EBToolbarManager_CT2384137.onload(); }, onGroupingResponse: function(objGroupingCommunities) { //grouping already selected or no need to select if (this.canInitToolbar()) return; this.groupingReceived = true; EBGroupingManager_CT2384137.selectToolbarFromGroupingByLocale(objGroupingCommunities); }, checkGroupingReceived: function() { if (!this.groupingReceived) this.onErrorGetting(); }, selectToolbarFromGroupingByLocale: function(objGroupingCommunities) { if (!objGroupingCommunities || objGroupingCommunities.IsEmpty()) this.onErrorGetting(); var systemLocale = EBPreferenceService_CT2384137.GetPref(this.LOCALE_PREF_NAME); if (!systemLocale) this.onErrorGetting(); var perfectMatchCTID = ""; var nearMatchCTID = EBGlobalConsts_CT2384137.ToolbarCTID; try { if (!stringEquals(systemLocale, EBGlobalConsts_CT2384137.ToolbarLanguage, true)) { var communities = objGroupingCommunities.CommunityList(); var community = null; for (var i = 0; i < communities.Count(); i++) { community = communities.GetByIndex(i); if (community.Locale && stringEquals(community.Locale, systemLocale, true)) { perfectMatchCTID = community.CTID; break; } if (community.Locale && stringEquals(community.Locale.substr(0, 2), systemLocale.substr(0, 2), true)) nearMatchCTID = community.CTID; } } var selectedCTID = (perfectMatchCTID) ? perfectMatchCTID : nearMatchCTID; EBToolbarPreferenceManager_CT2384137.SetPref(EBPreferenceConsts_CT2384137.CTID, selectedCTID); } catch (e) { EBToolbarPreferenceManager_CT2384137.SetPref(EBPreferenceConsts_CT2384137.CTID, EBGlobalConsts_CT2384137.ToolbarCTID); EBLog(e); } EBToolbarPreferenceManager_CT2384137.SetPref(EBPreferenceConsts_CT2384137.IsToolbarSelectedFromGrouping, true); EBToolbarManager_CT2384137.onload(); } }; var EBMCButtonManager_CT2384137 = { Consts: { CandidateIcon : 'chrome://iobitcom/skin/mc_add_candidate.png', TimeoutFuncRef : null, TooltipID : 'EBMulticommunityTooltipID_CT2384137' }, IsTooltipShown : false, DontShowTooltip : false, OnClickMainButton : function() { this.ClearTimeout(); EBUsageMyConduit_CT2384137.OnOpenDropDownMenu(); //star this.RemoveMainButtonStar(); var menuButton = EBMCMenu_CT2384137.xulMenuObj; var strImage = EBImageHandler_CT2384137.GetImageName(menuButton); if(strImage == oToolbarSkin_CT2384137.groupInactiveImageUrl) { this.ClearTimeout(); EBImageHandler_CT2384137.SetNewImage(menuButton,oToolbarSkin_CT2384137.groupInactiveImageUrl); } else if(strImage == this.Consts.CandidateIcon) this.CandidateDetected(); else this.CommunitiesDetectedStop(); }, CommunitiesDetected : function() { this.ClearTimeout(); var menuButton = EBMCMenu_CT2384137.xulMenuObj; EBImageHandler_CT2384137.SetNewImage(menuButton,oToolbarSkin_CT2384137.groupFlashingIconUrl); this.Consts.TimeoutFuncRef = setTimeout("EBMCButtonManager_CT2384137.CommunitiesDetectedStop()",12000); EBUsageMyConduit_CT2384137.ToolbarDetected(); }, CommunitiesDetectedStop : function() { var menuButton = EBMCMenu_CT2384137.xulMenuObj; EBImageHandler_CT2384137.SetNewImage(menuButton,oToolbarSkin_CT2384137.groupActiveImageUrl); }, CandidateDetected : function() { var menuButton = EBMCMenu_CT2384137.xulMenuObj; EBImageHandler_CT2384137.SetNewImage(menuButton,this.Consts.CandidateIcon); }, CommunitiesNotDetected : function() { this.ClearTimeout(); var menuButton = EBMCMenu_CT2384137.xulMenuObj; if(!menuButton) return; EBImageHandler_CT2384137.SetNewImage(menuButton,oToolbarSkin_CT2384137.groupInactiveImageUrl); var strBaseUrl = null; EBMCMenu_CT2384137.CommunitiesNotDetected(strBaseUrl); }, ClearTimeout : function() { try { clearTimeout(this.Consts.TimeoutFuncRef); } catch(ex){} }, SetMainButtonStar : function() { var objWindowsManager = Components.classes['@mozilla.org/appshell/window-mediator;1'] .getService(Components.interfaces.nsIWindowMediator); var objEnumerator = objWindowsManager.getEnumerator('navigator:browser'); while (objEnumerator.hasMoreElements()) { var objWindow = objEnumerator.getNext(); if (objWindow.EBMCButtonManager_CT2384137._SetMainButtonStar) { objWindow.EBMCButtonManager_CT2384137._SetMainButtonStar(); } } }, RemoveMainButtonStar: function() { var objWindowsManager = Components.classes['@mozilla.org/appshell/window-mediator;1'] .getService(Components.interfaces.nsIWindowMediator); var objEnumerator = objWindowsManager.getEnumerator('navigator:browser'); while (objEnumerator.hasMoreElements()) { var objWindow = objEnumerator.getNext(); if (objWindow.EBMCButtonManager_CT2384137._RemoveMainButtonStar) { objWindow.EBMCButtonManager_CT2384137._RemoveMainButtonStar(); } } }, _SetMainButtonStar: function() { var menuButton = EBMCMenu_CT2384137.xulMenuObj; EBImageHandler_CT2384137.SetStar(menuButton); }, _RemoveMainButtonStar: function() { var menuButton = EBMCMenu_CT2384137.xulMenuObj; EBImageHandler_CT2384137.RemoveStar(menuButton); }, // +++++++++++++++++++++++ POPUP ++++++++++++++++++++++++++ ShowPopup: function(arrA) { if (this.IsTooltipShown || this.DontShowTooltip) { this.DontShowTooltip = false; return; } var bShow = EBToolbarPreferenceManager_CT2384137.GetPref(EBPreferenceConsts_CT2384137.MCDetectTooltipShow); bShow = (bShow == null) ? true : bShow; if (!bShow) { return; } var menuButton = EBMCMenu_CT2384137.xulMenuObj; var x = menuButton.boxObject.screenX; var y = menuButton.boxObject.screenY + menuButton.boxObject.height; var strUrls = ''; for (var i = 0; i < arrA.length; i++) { strUrls += arrA[i].url; if (i < arrA.length - 1) { strUrls += ' '; } } var width = (EBToolbarPreferenceManager_CT2384137.GetPref(EBPreferenceConsts_CT2384137.MCDetectTooltipWidth)) ? EBToolbarPreferenceManager_CT2384137.GetPref(EBPreferenceConsts_CT2384137.MCDetectTooltipWidth) : EBMCDialog_CT2384137.Consts.BrowserWidth; var height = (EBToolbarPreferenceManager_CT2384137.GetPref(EBPreferenceConsts_CT2384137.MCDetectTooltipHeight)) ? EBToolbarPreferenceManager_CT2384137.GetPref(EBPreferenceConsts_CT2384137.MCDetectTooltipHeight) : EBMCDialog_CT2384137.Consts.BrowserHeight; //open dialog with timeout, if not, it will self close before even shown, //because of the onblur=window.close of the dialog var iTimeout = parseInt(Math.random() * 100) + 1; setTimeout(function() { EBMCDialog_CT2384137.OpenDetectedDialog(strUrls, x, y, parseInt(width), parseInt(height)); }, iTimeout); window.addEventListener("click", EBMCDialog_CT2384137.OnExternalClick, false); } // +++++++++++++++++++++++ POPUP ++++++++++++++++++++++++++ }; function EBCommunitiesList_CT2384137(objUserCommunities,objGroupingCommunities,objRecentCommunities) { //Original Info, with duplicates this.UserCommunities = objUserCommunities; this.GroupingCommunities = objGroupingCommunities; this.RecentCommunities = objRecentCommunities; //Info without duplication this.User = null; this.Grouping = null; this.Recent = null; //Info without duplication for options dialog (without recent) this.GroupingDialog = null; this.UserDialog = null; //Hash for all communities this.AllCommunities = null; this.Init = function() { var oCommunity = null; this.AllCommunities = new EBArrayHashObject_CT2384137(); var i; //Init Recent List if (this.RecentCommunities && !this.RecentCommunities.IsEmpty()) { this.Recent = new EBRecentCommunityList_CT2384137(null, this.RecentCommunities.FullFilePath) for (i = 0; i < this.RecentCommunities.Count(); i++) { oCommunity = this.RecentCommunities.GetByIndex(i); if (!this.AllCommunities.Contains(oCommunity.CTID) && oCommunity.Status == 0) { this.AllCommunities.Add(oCommunity.CTID, oCommunity); this.Recent.Add(oCommunity); } } } //Init Grouping List if (this.GroupingCommunities && !this.GroupingCommunities.IsEmpty()) { this.Grouping = new EBMCCommunityList_CT2384137(null, this.GroupingCommunities.FullFilePath) for (i = 0; i < this.GroupingCommunities.Count(); i++) { oCommunity = this.GroupingCommunities.GetByIndex(i); if (!this.AllCommunities.Contains(oCommunity.CTID) && oCommunity.Status == 0) { this.AllCommunities.Add(oCommunity.CTID, oCommunity); this.Grouping.Add(oCommunity); } } } //Init User List if (this.UserCommunities && !this.UserCommunities.IsEmpty()) { this.User = new EBMCCommunityList_CT2384137(null, this.UserCommunities.FullFilePath) for (i = 0; i < this.UserCommunities.Count(); i++) { oCommunity = this.UserCommunities.GetByIndex(i); if (!this.AllCommunities.Contains(oCommunity.CTID) && oCommunity.Status == 0) { this.AllCommunities.Add(oCommunity.CTID, oCommunity); this.User.Add(oCommunity); } } } //Add Original toolbar object to AllCommunities object var strOriginalToolbarXml = '<COMMUNITY>'; strOriginalToolbarXml += '<CTID>' + EBGlobalConsts_CT2384137.ToolbarCTID + '</CTID>'; strOriginalToolbarXml += '<NAME>' + EBGlobalConsts_CT2384137.ToolbarName + '</NAME>'; strOriginalToolbarXml += '<DESCRIPTION></DESCRIPTION>'; strOriginalToolbarXml += '<TAGS></TAGS>'; strOriginalToolbarXml += '<INSTALLATION_URL>' + EBGlobalConsts_CT2384137.WebServerUrl.replace(/http:\/\//, '') + '</INSTALLATION_URL>'; strOriginalToolbarXml += '</COMMUNITY>'; var xmlOriginalToolbar = EBXML_CT2384137.GetXmlDocument(strOriginalToolbarXml); xmlOriginalToolbar = xmlOriginalToolbar.documentElement; var oToolbar = new EBMCCommunityList_CT2384137(xmlOriginalToolbar, ''); this.AllCommunities.Add(oToolbar.CTID, oToolbar); }; this.InitForDialog = function() { var oCommunity = null; var DialogAllCommunities = new EBArrayHashObject_CT2384137(); var i; //Init Grouping List if (this.GroupingCommunities && !this.GroupingCommunities.IsEmpty()) { this.GroupingDialog = new EBMCCommunityList_CT2384137(null, this.GroupingCommunities.FullFilePath) for (i = 0; i < this.GroupingCommunities.Count(); i++) { oCommunity = this.GroupingCommunities.GetByIndex(i); if (!DialogAllCommunities.Contains(oCommunity.CTID) && oCommunity.Status != 2) { DialogAllCommunities.Add(oCommunity.CTID, oCommunity); this.GroupingDialog.Add(oCommunity); } } } //Init User List if (this.UserCommunities && !this.UserCommunities.IsEmpty()) { this.UserDialog = new EBMCCommunityList_CT2384137(null, this.UserCommunities.FullFilePath) for (i = 0; i < this.UserCommunities.Count(); i++) { oCommunity = this.UserCommunities.GetByIndex(i); if (!DialogAllCommunities.Contains(oCommunity.CTID)) { DialogAllCommunities.Add(oCommunity.CTID, oCommunity); this.UserDialog.Add(oCommunity); } } } //Init Recent List if (this.RecentCommunities && !this.RecentCommunities.IsEmpty()) { if (!this.UserDialog) { this.UserDialog = new EBMCCommunityList_CT2384137(null, this.UserCommunities.FullFilePath) } for (i = 0; i < this.RecentCommunities.Count(); i++) { oCommunity = this.RecentCommunities.GetByIndex(i); if (!DialogAllCommunities.Contains(oCommunity.CTID)) { DialogAllCommunities.Add(oCommunity.CTID, oCommunity); this.UserDialog.Add(oCommunity); } } } }; this.CommunitySelected = function(strCTID) { //if original toolbar selected, don't insert it to any list if (strCTID == EBGlobalConsts_CT2384137.ToolbarCTID) return; var oCommunity = null; //if this community from grouping, add it to user and recent list if (this.Grouping && this.Grouping.Contains(strCTID)) { oCommunity = this.Grouping.GetByID(strCTID); this.RecentCommunities.Add(oCommunity); if (!this.UserCommunities) { var strFullFilePath = EBMCConsts_CT2384137.FolderName + EBDirIO_CT2384137.sep + EBMCConsts_CT2384137.CommunitiesFileName; this.UserCommunities = new EBMCCommunityList_CT2384137(null, strFullFilePath); } this.UserCommunities.Add(oCommunity); this.UserCommunities.SaveToFile(); this.RecentCommunities.SaveToFile(); } //else, add it to recent list only else { oCommunity = this.AllCommunities.GetByID(strCTID); this.RecentCommunities.Add(oCommunity); this.RecentCommunities.SaveToFile(); } }; this.IsExists = function(strUrl) { var oCommunity = this.GetCommunityByInstallationUrl(strUrl); return (oCommunity) ? true : false; }; this.GetCommunityByCTID = function(strCTID) { return this.AllCommunities.GetByID(strCTID); }; this.GetCTIDByInstallationUrl = function(strUrl) { var oCommunity = this.GetCommunityByInstallationUrl(strUrl); return (oCommunity) ? oCommunity.CTID : null; }; this.GetCommunityByInstallationUrl = function(strUrl) { var strCommunityName = EBMCManager_CT2384137.GetCommunityNameFromInstallationUrl(strUrl) var strName = ''; var oCommunity = null; for (var i = 0; i < this.AllCommunities.Count(); i++) { oCommunity = this.AllCommunities.GetByIndex(i); strName = EBMCManager_CT2384137.GetCommunityNameFromInstallationUrl(oCommunity.InstallationUrl) if (strCommunityName.toLowerCase() == strName.toLowerCase()) { return oCommunity; } } return null; }; this.GetAllCTIDCommaSeparatedString = function() { var strCTIDs = ''; var oCommunity = null var arrLen = this.AllCommunities.Count(); for (var i = 0; i < arrLen; i++) { oCommunity = this.AllCommunities.GetByIndex(i); strCTIDs += oCommunity.CTID; if (i < arrLen - 1) { strCTIDs += ','; } } return strCTIDs; }; this.UpdateGrouping = function(oGrouping) { this.GroupingCommunities = oGrouping; this.Init(); }; this.UpdateCurrentGrouping = function(oCommunities) { var oCommunity = null; var oExistingCommunity = null; for (var i = 0; i < oCommunities.Count(); i++) { oCommunity = oCommunities.GetByIndex(i); if (!this.UserCommunities.Contains(oCommunity.CTID) && oCommunity.CTID != EBGlobalConsts_CT2384137.ToolbarCTID) { this.UserCommunities.Add(oCommunity); } } this.UserCommunities.SaveToFile(); this.Init(); }; this.Count = function() { return this.AllCommunities.Count(); }; //Init and fill communities this.Init(); }; //Radio Media Class function EBMCCommunity_CT2384137(XMLNode) { this.CTID = ''; this.Name = ''; this.Description = ''; this.Tags = ''; this.InstallationUrl = ''; this.Status = 0; this.Locale = ""; this.Init = function(XMLNode) { var XMLNodeChild = null; for (var i = 0; i < XMLNode.childNodes.length; i++) { XMLNodeChild = XMLNode.childNodes[i]; if (XMLNodeChild.tagName == EBMCConsts_CT2384137.xmlTags.CTID) this.CTID = EBXML_CT2384137.GetXmlNodeValue(XMLNodeChild); else if (XMLNodeChild.tagName == EBMCConsts_CT2384137.xmlTags.Name) this.Name = EBXML_CT2384137.GetXmlNodeValue(XMLNodeChild); else if (XMLNodeChild.tagName == EBMCConsts_CT2384137.xmlTags.Description) this.Description = EBXML_CT2384137.GetXmlNodeValue(XMLNodeChild); else if (XMLNodeChild.tagName == EBMCConsts_CT2384137.xmlTags.Tags) this.Tags = EBXML_CT2384137.GetXmlNodeValue(XMLNodeChild); else if (XMLNodeChild.tagName == EBMCConsts_CT2384137.xmlTags.InstallUrl) this.InstallationUrl = EBXML_CT2384137.GetXmlNodeValue(XMLNodeChild); else if (XMLNodeChild.tagName == EBMCConsts_CT2384137.xmlTags.Locale) this.Locale = EBXML_CT2384137.GetXmlNodeValue(XMLNodeChild); } this.Status = this.GetCommunityStatus(this.CTID); }; this.GetCommunityStatus = function(strCTID) { var strStatusBranch = EBMCConsts_CT2384137.CommunitiesStatusBranch; var strPrefName = strStatusBranch + '.' + strCTID; var iStatus = EBToolbarPreferenceManager_CT2384137.GetPref(strPrefName); if(!iStatus) iStatus = 0; return iStatus; }; this.Update = function(CTID,Name,Description,Tags,InstallationUrl) { this.CTID = CTID; this.Name = Name; this.Description = Description; this.Tags = Tags; this.InstallationUrl = InstallationUrl; }; this.toXML = function() { return EBXML_CT2384137.GetXmlDocument(this.toXMLString); }; this.toXMLString = function() { var strXML = EBXML_CT2384137.CreateXmlNodeStartString(EBMCConsts_CT2384137.xmlTags.Community); strXML += EBXML_CT2384137.CreateXmlNodeString(EBMCConsts_CT2384137.xmlTags.CTID, this.CTID); strXML += EBXML_CT2384137.CreateXmlNodeString(EBMCConsts_CT2384137.xmlTags.Name, this.Name); strXML += EBXML_CT2384137.CreateXmlNodeString(EBMCConsts_CT2384137.xmlTags.Description, this.Description); strXML += EBXML_CT2384137.CreateXmlNodeString(EBMCConsts_CT2384137.xmlTags.Tags, this.Tags); strXML += EBXML_CT2384137.CreateXmlNodeString(EBMCConsts_CT2384137.xmlTags.InstallUrl, this.InstallationUrl); strXML += EBXML_CT2384137.CreateXmlNodeString(EBMCConsts_CT2384137.xmlTags.Locale, this.Locale); strXML += EBXML_CT2384137.CreateXmlNodeEndString(EBMCConsts_CT2384137.xmlTags.Community); return strXML; }; this.SetStatus = function(iStatus) { this.Status = iStatus; var strStatusBranch = EBMCConsts_CT2384137.CommunitiesStatusBranch; var strPrefName = strStatusBranch + '.' + this.CTID; EBToolbarPreferenceManager_CT2384137.SetPref(strPrefName,iStatus); }; this.toListItem = function(bIsGrouping, doc) { if (this.Status == 2) return null; var strDisplayText = this.Name; var strDisplayIcon = EBMCDialog_CT2384137.Consts.DialogIcon; var strCheckBoxID = this.CTID; var objListItem = doc.createElement("listitem"); var objCheckBox = doc.createElement("listcell"); var objTextImage = doc.createElement("listcell"); objListItem.setAttribute('allowevents', 'true'); objListItem.setAttribute('style', 'height:20px'); objListItem.setAttribute('EB_GROUPING', bIsGrouping); objListItem.setAttribute('id', strCheckBoxID); objCheckBox.setAttribute('type', 'checkbox'); objCheckBox.addEventListener("click", function(event) { EBMCDialog_CT2384137.ListItem_OnClickCheckBox(event); }, false); objTextImage.setAttribute('image', strDisplayIcon); objTextImage.setAttribute('label', strDisplayText); objTextImage.setAttribute('class', 'listcell-iconic'); objTextImage.addEventListener("mouseover", function(event) { EBMCDialog_CT2384137.ListItem_MouseOver(this); }, false); objTextImage.addEventListener("mouseout", function(event) { EBMCDialog_CT2384137.ListItem_MouseOut(this); }, false); var isChecked = (this.Status == 0) ? true : false objCheckBox.setAttribute('checked', isChecked.toString()); objListItem.appendChild(objCheckBox); objListItem.appendChild(objTextImage); return objListItem; }; }; function EBMCCommunityList_CT2384137(XMLNode,strFullFilePath) { this.CommunitiesHash = new EBArrayHashObject_CT2384137(); this.Caption = ''; this.IconUrl = ''; this.Hint = ''; this.FullFilePath = ''; this.InitList = function(XMLNode) { var oCommunity = null; this.isList = true; var XMLNodeChild = null; for(var i=0;i<XMLNode.childNodes.length;i++) { XMLNodeChild = XMLNode.childNodes[i]; if(XMLNodeChild.tagName == 'COMMUNITY') { oCommunity = new EBMCCommunityList_CT2384137(XMLNodeChild); this.CommunitiesHash.Add(oCommunity.CTID, oCommunity); } else if(XMLNodeChild.tagName == 'COMMUNITIES') { oCommunity = new EBMCCommunityList_CT2384137(XMLNodeChild) this.CommunitiesHash.Add("CommunityList"+i,oCommunity); } else if(XMLNodeChild.tagName == 'CAPTION') this.Caption = EBXML_CT2384137.GetXmlNodeValue(XMLNodeChild); else if(XMLNodeChild.tagName == 'ICON_URL') this.IconUrl = EBXML_CT2384137.GetXmlNodeValue(XMLNodeChild); else if(XMLNodeChild.tagName == 'HINT') this.Hint = EBXML_CT2384137.GetXmlNodeValue(XMLNodeChild); } oCommunity = null; }; this.toXML = function() { var strXml = this.toString(); var xmlDoc = EBXML_CT2384137.GetXmlDocument(strXml); return xmlDoc; }; this.toString = function() { var oCommunity = ''; var strXML = '<COMMUNITIES>'; for(var i=0;i<this.CommunitiesHash.Count();i++) { oCommunity = this.CommunitiesHash.GetByIndex(i); strXML += oCommunity.toXMLString(); } strXML += '</COMMUNITIES>'; strXML = EBXML_CT2384137.LegalizeEBXML(strXML); return strXML; }; this.SaveToFile = function() { var strXml = this.toString(); var oFile = EBIOManager_CT2384137.CreateToolbarFile(this.FullFilePath); EBFileIO_CT2384137.write(oFile,strXml,'',EBGlobalConsts_CT2384137.DefaultCharset); }; this.Add = function(oCommunity) { if(!this.Contains(oCommunity.CTID)) this.CommunitiesHash.Add(oCommunity.CTID,oCommunity); }; this.AddFirst = function(oCommunity) { if(!this.Contains(oCommunity.CTID)) this.CommunitiesHash.Insert(0,oCommunity.CTID,oCommunity); }; this.GetByIndex = function(iIndex) { return this.CommunitiesHash.GetByIndex(iIndex); }; this.Count = function() { return this.CommunitiesHash.Count(); }; this.Remove = function(oCommunity) { if(this.Contains(oCommunity.CTID)) { var index = this.GetIndexByCommunity(oCommunity) this.CommunitiesHash.Remove(index,oCommunity.CTID); } }; this.GetIndexByCommunity = function(oCommunity) { var iCommunity = null; for(var i=0;this.CommunitiesHash.Count();i++) { iCommunity = this.CommunitiesHash.GetByIndex(i); if(iCommunity.CTID == oCommunity.CTID) { return i; } } return -1; }; this.CommunityList = function() { return this.CommunitiesHash; }; this.GetCommunityListFromArray = function(arrCommunity) { var arr = new EBArrayHashObject_CT2384137(); var oCommunity = null; for(var i=0;i<arrCommunity.Count();i++) { oCommunity = arrCommunity.GetByIndex(i); if(oCommunity.isList) { arr.Add('CommunityList'+i,oCommunity.arrCommunity); } } return arr; }; this.IsEmpty = function() { return (this.CommunitiesHash.Count() == 0) ? true : false; }; this._Contains = function(CTID,arrCommunity) { if(arrCommunity.Contains(CTID)) return true; else { var arrCommunityList = this.GetCommunityListFromArray(arrCommunity); for(var i=0;i<arrCommunityList.Count();i++) { if(this._Contains(CTID,arrCommunityList.GetByIndex(i))) return true; } } return false; }; this.Contains = function(CTID) { if(this.CommunitiesHash.Count() == 0) return false; return this._Contains(CTID,this.CommunitiesHash); }; this._GetByID = function(CTID,arrCommunity) { var oCommunity = arrCommunity.GetByID(CTID); if(oCommunity) return oCommunity; else { var arrCommunityList = this.GetCommunityListFromArray(arrCommunity); for(var i=0;i<arrCommunityList.Count();i++) { oCommunity = this._GetByID(CTID,arrCommunityList.GetByIndex(i)); if(oCommunity) return oCommunity; } return null; } return null; }; this.GetByID = function(CTID) { return this._GetByID(CTID,this.CommunitiesHash); }; // startup point if(XMLNode && XMLNode.tagName == 'COMMUNITY') this.Init(XMLNode); else if(XMLNode) this.InitList(XMLNode,strFullFilePath); this.FullFilePath = strFullFilePath; }; EBMCCommunityList_CT2384137.prototype = new EBMCCommunity_CT2384137; var EBMCConsts_CT2384137 = { BaseGroupingServiceUrl: "http://grouping.services.conduit.com/", CommunityServiceServerUrl : 'CommunityRequest.ctp?type=GetCommunity&CommunityPage=', GroupServiceServerUrl : 'GroupingRequest.ctp?type=GetGroup&ctid=CTxxxx&lut=', CommunitiesCheckServerUrl : 'GroupingRequest.ctp?type=ToolbarsInfo', DownloadDomainsServerUrl : 'Domains/DomainsManager.asmx/GetDomains?LastUpdateTime=', InvalidateCacheParam : '&ic=true', CommunitySearchUrl : 'http://search.conduit.com/?ctid=EB_TOOLBAR_ID&octid=EB_ORIGINAL_CTID&is=1&iss=1&q=', FolderName : 'communities', CommunitiesFileName : 'Communities.xml', GroupFileName : 'CommunitiesGroup.xml', RecentFileName : 'RecentCommunities.xml', DownloadDomainsFileName : 'DownloadDomains.xml', ExcludedDomainsFileName : 'ExcludedDomains.xml', CommunitiesXMLRootTag : '<COMMUNITIES/>', GroupNotModified : 'NOT_MODIFIED', Modified : 'MODIFIED', GroupingServerCheckInterval : 1440, //minutes GroupingServerOnErrorInterval : 720, //minutes DeletedGroupingBranch : 'DeletedGroupingToolbars', DownloadDomainsServerCheckInterval : 168, //hours (7 days) DownloadDomainsErrorServerCheckInterval : 3, //hours (3 hours) ERROR_REPLY : 'ERROR_REPLY', UrlParameter_CTIDs : '&ctids=', CommunitiesStatusBranch : 'CommunitiesStatus', xmlTags : { CTID : 'CTID', Name : 'NAME', Description : 'DESCRIPTION', Tags : 'TAGS', InstallUrl : 'INSTALLATION_URL', GroupingXMLRootTagName : 'GROUPING', LastUpdateTime : 'LAST_UPDATE_TIME', VisualLastUpdateTime : 'VISUAL_LAST_UPDATE_TIME', AlertChannelId : 'ALERT_CHANNEL_ID', Communities : 'COMMUNITIES', DownloadDomains : 'DOMAINS', DownloadDomain : 'DOMAIN', ExcludedDomains : 'EXCLUDED_DOMAINS', Interval : 'INTERVAL_IN_HOURS', Flags : 'FLAGS', Community : 'COMMUNITY', Locale: "LOCALE" }, CommunityFileType : { User : 'user', Grouping : 'grouping', Recent : 'recent' } }; var EBMCDetect_CT2384137 = { ArrDomainsList: null, ArrExcludedDomainsList: null, strSuffix1: "/exe", strSuffix2: "/xpi", Init: function(arrDomainsList, arrExcludedDomainsList) { //update download domains if (arrDomainsList) this.ArrDomainsList = arrDomainsList; else this.ArrDomainsList = new Array("qatoolbar.com", "ourtoolbar.com", "communitytoolbars.com", "forumtoolbar.com", "myblogtoolbar.com", "mycitytoolbar.com", "mycollegetoolbar.com", "myfamilytoolbar.com", "myforumtoolbar.com", "mylibrarytoolbar.com", "myradiotoolbar.com", "mystoretoolbar.com", "mytowntoolbar.com", "myuniversitytoolbar.com", "ourchurchtoolbar.com", "myxangatoolbar.com", "media-toolbar.com", "loyaltytoolbar.com", "myteamtoolbar.com", "greattoolbars.com", "ourorganizationtoolbar.com", "ourbusinesstoolbar.com"); //update excluded domains if (arrExcludedDomainsList) this.ArrExcludedDomainsList = arrExcludedDomainsList; else this.ArrExcludedDomainsList = new Array("search.conduit.com", "search15.conduit.com", "search16.conduit.com", "accounts.conduit.com", "translation.conduit.com") }, UpdateDomainsList: function(arrDownloadDomainsList, arrExcludedDomainsList) { if (arrDownloadDomainsList) this.ArrDomainsList = arrDownloadDomainsList; if (arrExcludedDomainsList) this.ArrExcludedDomainsList = arrExcludedDomainsList; }, IsExcludedDomain: function(strTLD) { if (!this.ArrDomainsList) this.Init(null, null) if (strTLD.toLowerCase() == "conduit" || strTLD.toLowerCase() == "google" || strTLD.toLowerCase() == "yahoo" || strTLD.toLowerCase() == "search" || strTLD.toLowerCase() == "msn" ) { return true; } for (var i = 0; i < this.ArrDomainsList.length; i++) { if (this.ArrDomainsList[i].indexOf(strTLD.toLowerCase()) != -1) { return true; } } return false; }, IsDownloadLink: function(strHref) { if (!this.ArrDomainsList) this.Init(null, null) //patch for toolbar directory if (strHref == "http://www.ourtoolbar.com") return false; var strBaseUrl = EBUrl_CT2384137.GetBaseUrlWithoutProtocol(strHref); for (var i = 0; i < this.ArrDomainsList.length; i++) { if (strBaseUrl.toLowerCase().indexOf(this.ArrDomainsList[i]) != -1) { return true; } } return false; }, IsExists: function(arr, elem) { for (var i = 0; i < arr.length; i++) { if (arr[i].url == elem) { return true; } } return false; }, Detect: function(win) { var bIsExists = null; var arrFoundA = new Array(); var arrMeta = win.document.getElementsByTagName("meta"); // <meta> tag search var nameAttr = ''; var contantAttr = ''; var i; for (i = 0; i < arrMeta.length; i++) { nameAttr = arrMeta[i].getAttribute('name'); if (nameAttr && nameAttr.toLowerCase() == 'toolbar') { contantAttr = arrMeta[i].getAttribute('content'); if (contantAttr && this.IsDownloadLink(contantAttr)) { contantAttr = this.ClearFoundUrl(contantAttr); bIsExists = EBMCManager_CT2384137.IsCommunityExists(contantAttr); if (bIsExists && EBMCManager_CT2384137.GetCTIDFromExistingCommunitiesByInstallUrl(contantAttr) != EBActionManager_CT2384137.GetCTID() || !bIsExists) { arrFoundA.push(new EBMCFoundObject_CT2384137(contantAttr, bIsExists)); } } } } //if toolbar meta tags exist on page, don't check for links if (arrFoundA.length > 0) { return arrFoundA; } //check for links, in case of none meta tags var arrA = win.document.getElementsByTagName("a"); if (arrA.length == 0 && arrMeta.length == 0) { return null; } var strHref = ""; // <a> tag search for (i = 0; i < arrA.length; i++) { strHref = arrA[i].getAttribute("href"); if (strHref && this.IsDownloadLink(strHref)) { strHref = this.ClearFoundUrl(strHref); if (!this.IsExists(arrFoundA, strHref)) { bIsExists = EBMCManager_CT2384137.IsCommunityExists(strHref); if (bIsExists && EBMCManager_CT2384137.GetCTIDFromExistingCommunitiesByInstallUrl(strHref) != EBActionManager_CT2384137.GetCTID() || !bIsExists) { arrFoundA.push(new EBMCFoundObject_CT2384137(strHref, bIsExists)); } } } } if (arrFoundA.length == 0) arrFoundA = null; return arrFoundA; }, IsFinalDownloadLink: function(strUrl) { if (strUrl.indexOf(this.strSuffix1) == strUrl.length - 4 || strUrl.indexOf(this.strSuffix2) == strUrl.length - 4) { return true; } return false; }, CheckUrl: function(strUrl) { var arrFound = new Array(); if (this.IsDownloadLink(strUrl) && this.IsFinalDownloadLink(strUrl)) { strUrl = this.ClearFoundUrl(strUrl); arrFound.push(strUrl); } return arrFound; }, ClearFoundUrl: function(strHref) { strHref = strHref.replace(/http:\/\//, ''); var iIndex = strHref.indexOf("/"); if (iIndex != -1) strHref = strHref.slice(0, iIndex); return EBGlobalManager_CT2384137.Trim(strHref); }, IsDontCheckThisUrl: function(strUrl) { if (!this.ArrExcludedDomainsList) this.Init(null, null); var strDomain = EBUrl_CT2384137.GetBaseUrlWithoutProtocol(strUrl); for (var i = 0; i < this.ArrExcludedDomainsList.length; i++) if (strDomain.indexOf(this.ArrExcludedDomainsList[i]) != -1) return true; return false; } } function EBMCFoundObject_CT2384137(strUrl,bIsExists) { this.url = strUrl; this.IsExists = bIsExists; } var EBMCDialog_CT2384137 = { Consts: { DialogFilename: 'multicommunity.xul', DownloadDialogFilename: 'multicommunity_download.xul', DetectedDialogFilename: 'multicommunity_detected.xul', DialogName: 'EBMulticommunityDetectedDialogName', DetectedDialogName: 'EBMulticommunityDetectedDialogNameDetected', DialogType: 'EBMulticommunityDialog_CT2384137', DialogIcon: 'chrome://iobitcom/skin/mc_community_dialog.png', DialogIcon_over: 'chrome://iobitcom/skin/mc_community_dialog_over.png', DownloadDialogName: 'EBMulticommunityDownloadDialogName', Delete_AreYouSure: 'Are you sure you want to remove ', BrowserWidth: 295, BrowserHeight: 83, BrowserID: 'MC_DETECTED_BROWSER_ID' }, xulBrowser: null, DetectedSelectedIndex: 0, DetectedArrUrls: null, DetectedUrl: 'http://@EB_INSTALL_LINK@/Rank/Tooltip/?version=1', WindowCloseTimeout: null, WindowCloseTimeoutMillisec: 10000, DetectedDialogWidthDelta: 2, DetectedDialogHeightDelta: 51, DetectDialog: null, oDownBtn: null, oUpBtn: null, oDeleteBtn: null, oAcceptBtn: null, oCancelBtn: null, oListBox: null, dialogChanged: false, OpenDialog: function(objWindow) { //check if the dialog exsits to focus on it var oDialog = this.GetDialog(); if (oDialog) { oDialog.focus(); } else { var strChromePath = EBGlobalConsts_CT2384137.ChromeContentPath + this.Consts.DialogFilename; objWindow.openDialog(strChromePath, this.Consts.DialogName, 'modal,centerscreen,chrome,resizable=no'); } }, OpenDownloadDialog: function(strUrl) { var strChromePath = EBGlobalConsts_CT2384137.ChromeContentPath + this.Consts.DownloadDialogFilename; window.openDialog(strChromePath, this.Consts.DownloadDialogName, 'modal,centerscreen,chrome,resizable=no', strUrl); EBUsageMyConduit_CT2384137.PopupShown(); }, OpenDetectedDialog: function(strUrls, dialogScreenX, dialogScreenY, width, height) { EBMCButtonManager_CT2384137.IsTooltipShown = true; //check if another toolbar is already showed the detection dialog var arrToolbars = EBActionManager_CT2384137.GetEBToolbarsCTID(); var thatButtonManager; for (var i = 0; i < arrToolbars.length; i++) { if (arrToolbars[i].originalCTID != EBGlobalConsts_CT2384137.ToolbarCTID) { thatButtonManager = window["EBMCButtonManager_" + arrToolbars[i].originalCTID]; if (thatButtonManager && thatButtonManager.IsTooltipShown) { EBMCButtonManager_CT2384137.IsTooltipShown = false; return; } } } var dialogWidth = width + this.DetectedDialogWidthDelta; var dialogHeight = height + this.DetectedDialogHeightDelta; var strChromePath = EBGlobalConsts_CT2384137.ChromeContentPath + this.Consts.DetectedDialogFilename; this.DetectDialog = window.openDialog(strChromePath, this.Consts.DetectedDialogName, 'chrome,dependent,resizable=no,titlebar=yes,screenX=' + dialogScreenX + ',screenY=' + dialogScreenY + ',width=' + dialogWidth + ',height=' + 1, strUrls, width, height); }, GetDialog: function() { var strOptionsDialogType = this.Consts.DialogType; var strOptionsDialogName = this.Consts.DialogName; var oOptionsDialog = EBGlobalManager_CT2384137.GetXULWindowByTypeAndName(strOptionsDialogType, strOptionsDialogName); return oOptionsDialog; }, // +++++++ Detected Dialog start +++++++++++++++++++++++++++++++ OnExternalClick: function(event) { if (EBMCDialog_CT2384137.DetectDialog) { EBMCDialog_CT2384137.DetectDialog.close(); window.removeEventListener("click", EBMCDialog_CT2384137.OnExternalClick, false); } }, Detected_OnLoad: function(event) { var objWindow = EBGlobalManager_CT2384137.GetMostRecentBrowserWindow(); document.getElementById('descriptionOnError').style.display = 'none'; //translate EBMCLanguagePack_CT2384137.Detected_OnLoad(objWindow); var strTooltipUrl = (objWindow.EBToolbarPreferenceManager_CT2384137.GetPref(EBPreferenceConsts_CT2384137.MCDetectTooltipUrl)) ? objWindow.EBToolbarPreferenceManager_CT2384137.GetPref(EBPreferenceConsts_CT2384137.MCDetectTooltipUrl) : this.DetectedUrl; this.DetectedArrUrls = strURLs.split(' '); this.DetectedSelectedIndex = 0; if (this.DetectedArrUrls.length > 1) this.Detected_ShowArrows(event); else { this._DisableNextButton(); this._DisablePrevButton(); } var strUrl = strTooltipUrl.replace(/@EB_INSTALL_LINK@/, this.DetectedArrUrls[0]); var browserId = this.Consts.BrowserID; //create and add browser this.xulBrowser = EBXULFactory_CT2384137.CreateBrowser(browserId, strUrl, browserWidth, browserHeight); var mainBox = document.getElementById('mainBrowserBox'); mainBox.appendChild(this.xulBrowser); //init progress listener and observers this._setListeners(); this._UpdateImagePositions(); this.SlideWindow(2); }, _setListeners: function() { var oWindow = EBGlobalManager_CT2384137.GetMostRecentBrowserWindow(); this._gadgetProgressListener = new EBGadgetProgressListener_CT2384137(); this._gadgetProgressListener.init(this.xulBrowser, true, browserWidth, browserHeight, oWindow.oToolbarManager_CT2384137.getToolbarData().componentsIds.MultiCommunity, oWindow.oToolbarManager_CT2384137.getToolbarData().componentsIds.MultiCommunity); this._gadgetProgressListener.initGadgetData("", "", EBMCDialog_CT2384137.Detected_OnDocumentComplete, null, this); }, SlideWindow: function(height) { var iHeight = parseInt(height); var newHeight = iHeight + 10; if (iHeight >= browserHeight + EBMCDialog_CT2384137.DetectedDialogHeightDelta) { window.resizeTo(browserWidth + EBMCDialog_CT2384137.DetectedDialogWidthDelta, browserHeight + EBMCDialog_CT2384137.DetectedDialogHeightDelta); } else { window.resizeTo(browserWidth + EBMCDialog_CT2384137.DetectedDialogWidthDelta, iHeight); setTimeout(function() { EBMCDialog_CT2384137.SlideWindow(newHeight); }, 25); } }, Detected_OnUnLoad: function(event) { var isChecked = document.getElementById('chkDontShowAgain').checked; //unload browser manager if (this._gadgetProgressListener) this._gadgetProgressListener.unload(); EBToolbarPreferenceManager_CT2384137.SetPref(EBPreferenceConsts_CT2384137.MCDetectTooltipShow, !isChecked); var objWindow = EBGlobalManager_CT2384137.GetMostRecentBrowserWindow(); objWindow.EBMCButtonManager_CT2384137.IsTooltipShown = false; //firefox bug is when you close one xul window, the others are moved //to back in z-order, so we focus() on the last focused PopHtmlWindow //and it gets all such window to front. (only on window platform) if (EBGlobalManager_CT2384137.IsWindowsPlatform()) objWindow.setTimeout(function() { objWindow.EBGadgetManager_CT2384137.BringToFront(); }, 1); objWindow.EBMCDialog_CT2384137.DetectDialog = null; }, Detected_OnBlur: function(event) { }, Detected_OnLearnMoreClick: function() { var strUrl = EBMCDialog_CT2384137.DetectedArrUrls[EBMCDialog_CT2384137.DetectedSelectedIndex]; EBActionManager_CT2384137.OpenLearnMore("TAB", strUrl); }, Detected_OnClick: function(event) { if (this.WindowCloseTimeout) clearTimeout(this.WindowCloseTimeout); }, Detected_OnDocumentComplete: function(bIsSuccess) { if (!bIsSuccess) this.Detected_OnErrorDocument(); }, Detected_OnErrorDocument: function() { var imgAddTo = document.getElementById('imgAddTo'); var oDescriptionOnError = document.getElementById('descriptionOnError'); this.xulBrowser.style.display = 'none'; oDescriptionOnError.style.display = ''; var descHeight = browserHeight - 8; var descWidth = browserWidth; oDescriptionOnError.width = descWidth; oDescriptionOnError.height = descHeight; this._DisableAddTo(imgAddTo); }, Detected_ShowArrows: function() { this._DisablePrevButton(); }, _UpdateImagePositions: function() { var imgPrev = document.getElementById('imgPrev'); var imgNext = document.getElementById('imgNext'); var imgClose = document.getElementById('imgClose'); var imgAddTo = document.getElementById('imgAddTo'); imgPrev.setAttribute('left', parseInt(browserWidth) / 2 - 21) imgNext.setAttribute('left', parseInt(browserWidth) / 2 + 11) imgClose.setAttribute('left', parseInt(browserWidth) - 14) imgAddTo.setAttribute('left', parseInt(browserWidth) - 100) }, _DisableAddTo: function(objImage) { objImage.src = 'chrome://iobitcom/skin/mc_tooltip_addTo_over.gif'; objImage.onmouseover = null; objImage.onmouseout = null; objImage.onmouseup = null; objImage.onmousedown = null; objImage.setAttribute('onclick', ''); objImage.onclick = null; }, _DisableNextButton: function() { var objImage = document.getElementById('imgNext'); objImage.src = 'chrome://iobitcom/skin/mc_tooltip_next_dis.gif'; objImage.onmouseover = null; objImage.onmouseout = null; objImage.onmouseup = null; objImage.onmousedown = null; objImage.setAttribute('onclick', ''); objImage.onclick = null; }, _EnableNextButton: function() { var objImage = document.getElementById('imgNext'); objImage.src = 'chrome://iobitcom/skin/mc_tooltip_next.gif'; objImage.setAttribute('onclick', 'EBMCDialog_CT2384137.Detected_OnNextClick(event);'); objImage.onmousedown = function() { this.src = 'chrome://iobitcom/skin/mc_tooltip_next_dn.gif'; }; objImage.onmouseup = function() { this.src = 'chrome://iobitcom/skin/mc_tooltip_next.gif'; }; objImage.onmouseover = function() { this.src = 'chrome://iobitcom/skin/mc_tooltip_next_over.gif'; }; objImage.onmouseout = function() { this.src = 'chrome://iobitcom/skin/mc_tooltip_next.gif'; }; }, _DisablePrevButton: function() { var objImage = document.getElementById('imgPrev'); objImage.src = 'chrome://iobitcom/skin/mc_tooltip_prev_dis.gif'; objImage.onmouseover = null; objImage.onmouseout = null; objImage.onmouseup = null; objImage.onmousedown = null; objImage.setAttribute('onclick', ''); objImage.onclick = null; }, _EnablePrevButton: function() { var objImage = document.getElementById('imgPrev'); objImage.src = 'chrome://iobitcom/skin/mc_tooltip_prev.gif'; objImage.setAttribute('onclick', 'EBMCDialog_CT2384137.Detected_OnPrevClick(event);'); objImage.onmousedown = function() { this.src = 'chrome://iobitcom/skin/mc_tooltip_prev_dn.gif'; }; objImage.onmouseup = function() { this.src = 'chrome://iobitcom/skin/mc_tooltip_prev.gif'; }; objImage.onmouseover = function() { this.src = 'chrome://iobitcom/skin/mc_tooltip_prev_over.gif'; }; objImage.onmouseout = function() { this.src = 'chrome://iobitcom/skin/mc_tooltip_prev.gif'; }; }, Detected_OnPrevClick: function(event) { this.CheckIfBrowserVisible(); //disable window close on user action; if (EBMCDialog_CT2384137.WindowCloseTimeout) clearTimeout(EBMCDialog_CT2384137.WindowCloseTimeout); var oPrev = event.target; var oNext = document.getElementById('imgNext'); //if next button is disabled, enable it if (EBMCDialog_CT2384137.DetectedSelectedIndex == EBMCDialog_CT2384137.DetectedArrUrls.length - 1) { EBMCDialog_CT2384137._EnableNextButton(); } EBMCDialog_CT2384137.DetectedSelectedIndex--; var objWindow = EBGlobalManager_CT2384137.GetMostRecentBrowserWindow(); var strTooltipUrl = (objWindow.EBToolbarPreferenceManager_CT2384137.GetPref(EBPreferenceConsts_CT2384137.MCDetectTooltipUrl)) ? objWindow.EBToolbarPreferenceManager_CT2384137.GetPref(EBPreferenceConsts_CT2384137.MCDetectTooltipUrl) : this.DetectedUrl; var strUrl = strTooltipUrl.replace(/@EB_INSTALL_LINK@/, EBMCDialog_CT2384137.DetectedArrUrls[EBMCDialog_CT2384137.DetectedSelectedIndex]); EBMCDialog_CT2384137.xulBrowser.setAttribute('src', strUrl); if (EBMCDialog_CT2384137.DetectedSelectedIndex == 0) { EBMCDialog_CT2384137._DisablePrevButton(); } }, Detected_OnNextClick: function(event) { this.CheckIfBrowserVisible(); //disable window close on user action; if (EBMCDialog_CT2384137.WindowCloseTimeout) clearTimeout(EBMCDialog_CT2384137.WindowCloseTimeout); var oNext = event.target; var oPrev = document.getElementById('imgPrev'); //if prev button is disabled, enable it if (EBMCDialog_CT2384137.DetectedSelectedIndex == 0) { EBMCDialog_CT2384137._EnablePrevButton(); } EBMCDialog_CT2384137.DetectedSelectedIndex++; var objWindow = EBGlobalManager_CT2384137.GetMostRecentBrowserWindow(); var strTooltipUrl = (objWindow.EBToolbarPreferenceManager_CT2384137.GetPref(EBPreferenceConsts_CT2384137.MCDetectTooltipUrl)) ? objWindow.EBToolbarPreferenceManager_CT2384137.GetPref(EBPreferenceConsts_CT2384137.MCDetectTooltipUrl) : this.DetectedUrl; var strUrl = strTooltipUrl.replace(/@EB_INSTALL_LINK@/, EBMCDialog_CT2384137.DetectedArrUrls[EBMCDialog_CT2384137.DetectedSelectedIndex]); EBMCDialog_CT2384137.xulBrowser.setAttribute('src', strUrl); if (EBMCDialog_CT2384137.DetectedSelectedIndex == EBMCDialog_CT2384137.DetectedArrUrls.length - 1) { EBMCDialog_CT2384137._DisableNextButton(); } }, CheckIfBrowserVisible: function() { var oDescriptionOnError = document.getElementById('descriptionOnError'); if (this.xulBrowser.style.display == 'none') { this.xulBrowser.style.display = ''; oDescriptionOnError.style.display = 'none' } }, Detected_AddToOnClick: function(event) { window.close(); var strUrl = EBMCDialog_CT2384137.DetectedArrUrls[EBMCDialog_CT2384137.DetectedSelectedIndex]; var objWindow = EBGlobalManager_CT2384137.GetMostRecentBrowserWindow(); if (objWindow.EBMCManager_CT2384137.IsCommunityExists(strUrl)) { //switch only var oCommunity = objWindow.EBMCManager_CT2384137.GetCommunityFromExistingCommunitiesByInstallUrl(strUrl); var oTimeout = function() { objWindow.EBMCManager_CT2384137.ChangeToCommunity(oCommunity.CTID, oCommunity.Name, true, null, objWindow.EBUsageMyConduit_CT2384137.SourceTooltip, false); }; objWindow.setTimeout(oTimeout, 100); } else { //add community and switch objWindow.EBMCTrusteDialog_CT2384137.open(strUrl, EBUsageMyConduit_CT2384137.SourceTooltip); } }, // +++++++ Detected Dialog end +++++++++++++++++++++++++++++++ // +++++++ Download Dialog start +++++++++++++++++++++++++++++++ Download_OnLoad: function() { var objWindow = EBGlobalManager_CT2384137.GetMostRecentBrowserWindow(); var dialogsDirection = objWindow.EBGlobalManager_CT2384137.IsReverseDialogs(); if (dialogsDirection) EBUILogic_Dialog_CT2384137.setWindowDirection(dialogsDirection, "ebMulticommunityDownloadDialog"); var iMode = 0; var strCommunityName = ''; var lnkLearnMore = document.getElementById('lnkLearnMore'); //There are 3 modes to the dialog //Regular(0) : Add to, Install //(1) : Switch to, Reinstall //(2) : Switch to, Install if (objWindow.EBMCManager_CT2384137.IsCommunityExists(strURL)) { if (objWindow.EBMCManager_CT2384137.IsDownloadUrlIsOriginalCommunity(strURL)) { iMode = 1; strCommunityName = " " + objWindow.EBActionManager_CT2384137.GetToolbarName(); } else { iMode = 2; strCommunityName = " " + objWindow.EBMCManager_CT2384137.GetCommunityNameFromInstallationUrl(strURL); } lnkLearnMore.style.display = 'none'; } else lnkLearnMore.style.display = ''; EBMCLanguagePack_CT2384137.DownloadDialog_OnLoad(objWindow, iMode, strCommunityName); }, Download_OnDialogAccept: function() { var oRadio = document.getElementById("radio_add"); var objWindow = EBGlobalManager_CT2384137.GetMostRecentBrowserWindow(); if (oRadio.selected) { if (objWindow.EBMCManager_CT2384137.IsCommunityExists(strURL)) { var oCommunity = objWindow.EBMCManager_CT2384137.GetCommunityFromExistingCommunitiesByInstallUrl(strURL); var oTimeout = function() { objWindow.EBMCManager_CT2384137.ChangeToCommunity(oCommunity.CTID, oCommunity.Name, false, null, objWindow.EBUsageMyConduit_CT2384137.SourceMessageBox, false); }; objWindow.setTimeout(oTimeout, 100); } else objWindow.EBMCTrusteDialog_CT2384137.open(strURL, EBUsageMyConduit_CT2384137.SourceMessageBox); objWindow.EBMCManager_CT2384137.NavigationStop(); } objWindow.setTimeout(function() { objWindow.ToolbarDetected = false; }, 500); }, Download_OnDialogCancel: function() { var objWindow = EBGlobalManager_CT2384137.GetMostRecentBrowserWindow(); objWindow.EBMCManager_CT2384137.NavigationStop(); }, Download_OnLearnMoreClick: function() { EBActionManager_CT2384137.OpenLearnMore("BLANK", strURL); }, // +++++++ Download Dialog end +++++++++++++++++++++++++++++++++ // +++++++ Manage toolbars dialog ++++++++++++++++++++++++++++++ StatusHash: null, ShowHideTexts: '', OnLoad: function() { this.StatusHash = new EBArrayHashObject_CT2384137(); var objWindow = EBGlobalManager_CT2384137.GetMostRecentBrowserWindow(); var dialogsDirection = objWindow.EBGlobalManager_CT2384137.IsReverseDialogs(); if (dialogsDirection) EBUILogic_Dialog_CT2384137.setWindowDirection(dialogsDirection, "ebMulticommunityDialog"); //this.oDownBtn = document.getElementById("btnMoveDown"); //this.oUpBtn = document.getElementById("btnMoveUp"); this.oDeleteBtn = document.getElementById("btnDelete"); this.oHideBtn = document.getElementById("btnHide"); this.oAcceptBtn = document.getElementById("ebMulticommunityDialog").getButton("accept"); this.oCancelBtn = document.getElementById("ebMulticommunityDialog").getButton("cancel"); this.oListBox = document.getElementById("listCommunities"); this.oDescription = document.getElementById("dscTitle"); this.ShowHideTexts = EBMCLanguagePack_CT2384137.Dialog_OnLoad(objWindow, this); var objCommunities = objWindow.EBMCManager_CT2384137.AllCommunities; objCommunities.InitForDialog(); var max = 0; var listItem = null; var oCommunity = null; if (objCommunities.GroupingDialog && !objCommunities.GroupingDialog.IsEmpty()) { max = this.CreateListItems(objCommunities.GroupingDialog, true, max); } if (objCommunities.UserDialog && !objCommunities.UserDialog.IsEmpty()) { max = this.CreateListItems(objCommunities.UserDialog, false, max); } //resize the listbox according to the biggest item. if (max != 0) { max += 40; strSize = max + 'px'; this.oListBox.width = strSize; } }, CreateListItems: function(oCommunities, bIsGrouping, iMax) { var strSize = ''; var iSize = 0; var max = iMax; for (var i = 0; i < oCommunities.Count(); i++) { oCommunity = oCommunities.GetByIndex(i); listItem = oCommunity.toListItem(bIsGrouping, document); this.oListBox.appendChild(listItem); strSize = document.defaultView.getComputedStyle(listItem, null).getPropertyValue("width"); strSize = strSize.replace(/px/, ""); iSize = parseInt(strSize); if (!isNaN(iSize) && iSize > max) { max = iSize; } } return max; }, // ---- List Items Functions ------------------------------------------- //check / uncheck ListItem_OnClickCheckBox: function(e) { var obj = e.target; var bIsChecked = EBGlobalManager_CT2384137.GetBooleanAttribute(obj, 'checked', false); bIsChecked = !bIsChecked; var strCTID = obj.parentNode.getAttribute('id'); this.CheckUncheckItem(obj, strCTID, bIsChecked); this.DialogChanged(); }, ListItem_MouseOver: function(obj) { obj.setAttribute('image', this.Consts.DialogIcon_over) }, ListItem_MouseOut: function(obj) { obj.setAttribute('image', this.Consts.DialogIcon) }, ListCommunities_OnSelect: function(event) { this.oDeleteBtn.disabled = false; this.oHideBtn.disabled = false; var oSelected = this.oListBox.selectedItem; var bIsChecked = EBGlobalManager_CT2384137.GetBooleanAttribute(oSelected.firstChild, 'checked', false); if (bIsChecked) { this.oHideBtn.setAttribute('label', this.ShowHideTexts.hide); } else { this.oHideBtn.setAttribute('label', this.ShowHideTexts.show); } // if(iSelectedIndex == 0) // { // this.DisableUpBtn(); // } // else // { // this.EnableUpBtn(); // } // if(iSelectedIndex == this.oListBox.childNodes.length - 2) // { // this.DisableDownBtn() // } // else // { // this.EnableDownBtn(); // } }, // DisableUpBtn : function() // { // this.oUpBtn.disabled = true; // }, // // DisableDownBtn : function() // { // this.oDownBtn.disabled = true; // }, // // EnableUpBtn : function() // { // this.oUpBtn.disabled = false; // }, // // EnableDownBtn : function() // { // this.oDownBtn.disabled = false; // }, //------------------------------- DialogChanged: function() { if (!this.dialogChanged) { this.dialogChanged = true; this.oAcceptBtn.disabled = false; } }, CheckUncheckItem: function(obj, strCTID, bIsChecked) { obj.setAttribute('checked', bIsChecked); var objStatus = this.StatusHash.GetByID(strCTID); //update if (objStatus) { objStatus.Status = (bIsChecked) ? 0 : 1; } //add new else { objStatus = new Object(); objStatus.Status = (bIsChecked) ? 0 : 1; this.StatusHash.Add(strCTID, objStatus); } if (bIsChecked) { EBMCDialog_CT2384137.oHideBtn.setAttribute('label', this.ShowHideTexts.hide); } else { EBMCDialog_CT2384137.oHideBtn.setAttribute('label', this.ShowHideTexts.show); } this.DialogChanged(); }, OnHideButtonClicked: function() { var oSelected = this.oListBox.selectedItem; var bIsChecked = EBGlobalManager_CT2384137.GetBooleanAttribute(oSelected.firstChild, 'checked', false); bIsChecked = !bIsChecked; this.CheckUncheckItem(oSelected.firstChild, oSelected.getAttribute('id'), bIsChecked); this.DialogChanged(); }, OnDeleteButtonClicked: function() { var strName = ""; var oSelectedItem = this.oListBox.selectedItem; try { strName = oSelectedItem.childNodes[1].getAttribute("label"); } catch (ex) { } var oWindow = EBGlobalManager_CT2384137.GetMostRecentBrowserWindow(); var locale = oWindow.EBToolbarPreferenceManager_CT2384137.GetPref(EBPreferenceConsts_CT2384137.Locale, true); var strTitle = oWindow.oToolbarManager_CT2384137.getLPKey("CTLP_STR_ID_MULTI_COMMUNITY_DELETE_WARNING_DLG_CAPTION", locale); var strText = oWindow.oToolbarManager_CT2384137.getLPKey("CTLP_STR_ID_MULTI_COMMUNITY_DELETE_WARNING_DLG_TEXT", locale); strText = strText.replace(/\[TOOLBAR NAME\]/, strName); if (!EBGlobalManager_CT2384137.Confirm(window, strTitle, strText)) return; var iSelectedIndex = this.oListBox.selectedIndex; var strCTID = oSelectedItem.getAttribute('id'); var objStatus = new Object(); objStatus.Status = 2; this.StatusHash.Add(strCTID, objStatus); this.oListBox.removeItemAt(iSelectedIndex); if (iSelectedIndex == this.oListBox.childNodes.length - 1) { iSelectedIndex--; } if (iSelectedIndex != -1) { var oItem = this.oListBox.getItemAtIndex(iSelectedIndex); if (oItem) { this.oListBox.selectItem(oItem); } } this.DialogChanged(); }, // OnMoveUpButtonClicked : function() // { // var oSelectedItem = this.oListBox.selectedItem; // var oUpper = this.oListBox.childNodes[this.oListBox.selectedIndex]; // this.oListBox.insertBefore(oSelectedItem,oUpper); // this.AfterMoveProcedures(oSelectedItem); // }, // // OnMoveDownButtonClicked : function() // { // var oSelectedItem = this.oListBox.selectedItem; // var oLower = this.oListBox.childNodes[this.oListBox.selectedIndex+2]; // this.oListBox.insertBefore(oLower,oSelectedItem); // this.AfterMoveProcedures(oSelectedItem); // }, // // AfterMoveProcedures : function(oSelectedItem) // { // this.oListBox.selectItem(oSelectedItem); // this.oListBox.ensureElementIsVisible(oSelectedItem); // this.ListCommunities_OnSelect(); // this.DialogChanged(); // }, // ---- List Items Functions End ------------------------------------------- UpdateGroupingChanges: function() { if (this.DeletedGroupingArray.length > 0) { for (var i = 0; i < this.DeletedGroupingArray.length; i++) { EBMCIO_CT2384137.SetGroupingDeleted(this.DeletedGroupingArray[i]); } } }, //Returns object with changes SyncCommunitiesStatus: function(oCommunities, bIsDelete, oReturn) { var oCommunity = null; var objStatus = null; for (var strCTID in this.StatusHash.HashArray) { objStatus = this.StatusHash.GetByID(strCTID); if (objStatus) { oCommunity = oCommunities.GetByID(strCTID); if (oCommunity) { oCommunity.SetStatus(objStatus.Status) switch (objStatus.Status) { case 0: if (oReturn) oReturn.ShownCTIDs.push(oCommunity.CTID); break; case 1: if (oReturn) oReturn.HiddenCTIDs.push(oCommunity.CTID); break; case 2: if (oReturn) oReturn.DeletedCTIDs.push(oCommunity.CTID); if (bIsDelete) oCommunities.Remove(oCommunity); break; } } } } return oReturn; }, OnDialogAccept: function() { var iStatus = 0; var objWindow = EBGlobalManager_CT2384137.GetMostRecentBrowserWindow(); var objCommunities = objWindow.EBMCManager_CT2384137.AllCommunities; var oReturn = new Object(); oReturn.HiddenCTIDs = new Array(); oReturn.DeletedCTIDs = new Array(); oReturn.ShownCTIDs = new Array(); if (objCommunities.UserCommunities && !objCommunities.UserCommunities.IsEmpty()) { this.SyncCommunitiesStatus(objCommunities.UserCommunities, true, oReturn); objCommunities.UserCommunities.SaveToFile(); } if (objCommunities.GroupingCommunities && !objCommunities.GroupingCommunities.IsEmpty()) this.SyncCommunitiesStatus(objCommunities.GroupingCommunities, false, oReturn); if (objCommunities.RecentCommunities && !objCommunities.RecentCommunities.IsEmpty()) { this.SyncCommunitiesStatus(objCommunities.RecentCommunities, true, null); objCommunities.RecentCommunities.SaveToFile(); } objCommunities.Init(); EBMCManager_CT2384137.BroadcastChanges(objCommunities); objWindow.EBUsageMyConduit_CT2384137.OpenEditdialog(objWindow.EBMCManager_CT2384137.AllCommunities.Count(), objWindow.EBUsageMyConduit_CT2384137.ExitCodeOK, oReturn.DeletedCTIDs, oReturn.HiddenCTIDs, oReturn.ShownCTIDs); }, OnDialogCancel: function() { var objWindow = EBGlobalManager_CT2384137.GetMostRecentBrowserWindow(); objWindow.EBUsageMyConduit_CT2384137.OpenEditdialog(objWindow.EBMCManager_CT2384137.AllCommunities.Count(), objWindow.EBUsageMyConduit_CT2384137.ExitCodeCancel, null, null, null); } } var EBMCIO_CT2384137 = { InitGrouping: function(bIsEmpty) { EBMCServerComm_CT2384137.InitGrouping(bIsEmpty); }, AddCommunityToFile: function(objCommunity) { //add to user file var oCommunities = this.LoadCommunities('user'); oCommunities.AddFirst(objCommunity); oCommunities.SaveToFile(); //add also to recent oCommunities = this.LoadCommunities('recent'); oCommunities.Add(objCommunity); oCommunities.SaveToFile(); }, LoadCommunities: function(strWhich) { var strFullPath = EBMCConsts_CT2384137.FolderName + EBDirIO_CT2384137.sep; if (strWhich == EBMCConsts_CT2384137.CommunityFileType.User) strFullPath += EBMCConsts_CT2384137.CommunitiesFileName; else if (strWhich == EBMCConsts_CT2384137.CommunityFileType.Grouping) strFullPath += EBMCConsts_CT2384137.GroupFileName; else if (strWhich == EBMCConsts_CT2384137.CommunityFileType.Recent) strFullPath += EBMCConsts_CT2384137.RecentFileName var oFile = EBIOManager_CT2384137.CreateToolbarFile(strFullPath); var strXMLFile = EBFileIO_CT2384137.read(oFile, EBGlobalConsts_CT2384137.DefaultCharset); var xmlCommunities = null; var objCommunities = null; if (strXMLFile) { xmlCommunities = EBXML_CT2384137.GetXmlDocument(strXMLFile); xmlCommunities = xmlCommunities.documentElement; } if (strWhich == EBMCConsts_CT2384137.CommunityFileType.Recent) objCommunities = new EBRecentCommunityList_CT2384137(xmlCommunities, strFullPath); else objCommunities = new EBMCCommunityList_CT2384137(xmlCommunities, strFullPath); return objCommunities; }, RemoveDeletedGroupingCommunities: function(xmlCommunities) { var strCTID = ''; var strPrefName = ''; var bIsDeleted = false; for (var i = xmlCommunities.childNodes.length - 1; i >= 0; i--) { strCTID = this.GetCTIDFromCommunityXML(xmlCommunities.childNodes[i]); strPrefName = EBMCConsts_CT2384137.DeletedGroupingBranch + '.' + strCTID; bIsDeleted = EBToolbarPreferenceManager_CT2384137.GetPref(strPrefName); if (bIsDeleted) { xmlCommunities.removeChild(xmlCommunities.childNodes[i]); } } }, ChangeToCommunity: function(strUrl, strSource) { EBMCServerComm_CT2384137.GetCommunityInfoFromServer(strUrl, strSource); }, GetNodeByCTID: function(xmlDoc, ctid) { var currCTID = ""; var xmlCommunity = null; var xmlNode = null; for (var i = 0; i < xmlDoc.childNodes.length; i++) { xmlCommunity = xmlDoc.childNodes[i]; for (var j = 0; xmlCommunity.childNodes.length; j++) { xmlNode = xmlCommunity.childNodes[j]; if (xmlNode.tagName == EBMCConsts_CT2384137.xmlTags.CTID) { currCTID = EBXML_CT2384137.GetXmlNodeValue(xmlNode); if (currCTID == ctid) { return xmlCommunity; } else { break; } } } } return null; }, GetValueFromCommunityXmlByTagName: function(xmlDoc, tagName) { for (var i = 0; i < xmlDoc.childNodes.length; i++) { if (xmlDoc.childNodes[i].tagName == tagName) { return EBXML_CT2384137.GetXmlNodeValue(xmlDoc.childNodes[i]); } } }, GetCTIDFromCommunityXML: function(xmlDoc) { return this.GetValueFromCommunityXmlByTagName(xmlDoc, EBMCConsts_CT2384137.xmlTags.CTID); }, GetNameFromCommunityXML: function(xmlDoc) { return this.GetValueFromCommunityXmlByTagName(xmlDoc, EBMCConsts_CT2384137.xmlTags.Name); }, GetInstallUrlFromCommunityXML: function(xmlDoc) { return this.GetValueFromCommunityXmlByTagName(xmlDoc, EBMCConsts_CT2384137.xmlTags.InstallUrl); }, GetObjectFromCommunityXML: function(xmlDoc) { var obj = new Object(); obj.ctid = ""; obj.name = ""; obj.InstallUrl = ""; obj.description = ""; obj.tags = ""; for (var i = 0; i < xmlDoc.childNodes.length; i++) { if (xmlDoc.childNodes[i].tagName == EBMCConsts_CT2384137.xmlTags.CTID) obj.ctid = EBXML_CT2384137.GetXmlNodeValue(xmlDoc.childNodes[i]); else if (xmlDoc.childNodes[i].tagName == EBMCConsts_CT2384137.xmlTags.Name) obj.name = EBXML_CT2384137.GetXmlNodeValue(xmlDoc.childNodes[i]); else if (xmlDoc.childNodes[i].tagName == EBMCConsts_CT2384137.xmlTags.InstallUrl) obj.installUrl = EBXML_CT2384137.GetXmlNodeValue(xmlDoc.childNodes[i]); else if (xmlDoc.childNodes[i].tagName == EBMCConsts_CT2384137.xmlTags.Tags) obj.tags = EBXML_CT2384137.GetXmlNodeValue(xmlDoc.childNodes[i]); else if (xmlDoc.childNodes[i].tagName == EBMCConsts_CT2384137.xmlTags.Description) obj.description = EBXML_CT2384137.GetXmlNodeValue(xmlDoc.childNodes[i]); } return obj; }, SetGroupingDeleted: function(strCTID) { var strPrefName = EBMCConsts_CT2384137.DeletedGroupingBranch + '.' + strCTID; EBToolbarPreferenceManager_CT2384137.SetPref(strPrefName, true); }, //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ //get grouping functions for current toolbar InitCurrentGrouping: function() { EBMCServerComm_CT2384137.InitCurrentGrouping(); }, SaveDomainsToFile: function(xmlDomains, strFileName) { var strXml = EBXML_CT2384137.GetStringXml(xmlDomains); var strFile = EBMCConsts_CT2384137.FolderName + EBDirIO_CT2384137.sep + strFileName; var oFile = EBIOManager_CT2384137.CreateToolbarFile(strFile); EBFileIO_CT2384137.write(oFile, strXml, '', EBGlobalConsts_CT2384137.DefaultCharset); }, SaveDownloadDomainsToFile: function(xmlDownloadDomains) { this.SaveDomainsToFile(xmlDownloadDomains, EBMCConsts_CT2384137.DownloadDomainsFileName); }, SaveExcludedDomainsToFile: function(xmlExludedDomains) { this.SaveDomainsToFile(xmlExludedDomains, EBMCConsts_CT2384137.ExcludedDomainsFileName); }, LoadDomainsFromFile: function(strFileName) { var strFile = EBMCConsts_CT2384137.FolderName + EBDirIO_CT2384137.sep + strFileName; var oFile = EBIOManager_CT2384137.CreateToolbarFile(strFile); var strXmlDomains = EBFileIO_CT2384137.read(oFile, EBGlobalConsts_CT2384137.DefaultCharset); var xmlDomains = null; if (strXmlDomains) { xmlDomains = EBXML_CT2384137.GetXmlDocument(strXmlDomains); xmlDomains = xmlDomains.documentElement; } else { EBToolbarPreferenceManager_CT2384137.SetPref(EBPreferenceConsts_CT2384137.DownloadDomainsListLastCheckTime, ''); EBToolbarPreferenceManager_CT2384137.SetPref(EBPreferenceConsts_CT2384137.DownloadDomainsListLastServerUpdateTime, null); } return xmlDomains; }, GetDomainArrayFromXml: function(xmlDomains) { if (!xmlDomains) return null; var xmlNode = null; var strDomain; var arrDownloadDomains = new Array(); for (var i = 0; i < xmlDomains.childNodes.length; i++) { xmlNode = xmlDomains.childNodes[i]; strDomain = EBXML_CT2384137.GetXmlNodeValue(xmlNode); if (strDomain) arrDownloadDomains.push(strDomain.toLowerCase()); } return arrDownloadDomains; }, LoadDownloadDomainsAsArray: function() { var xmlDomains = this.LoadDomainsFromFile(EBMCConsts_CT2384137.DownloadDomainsFileName); return this.GetDomainArrayFromXml(xmlDomains); }, LoadExcludedDomainsAsArray: function() { var xmlDomains = this.LoadDomainsFromFile(EBMCConsts_CT2384137.ExcludedDomainsFileName); return this.GetDomainArrayFromXml(xmlDomains); }, //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ // Download domains functions END NullifyTimesGrouping: function() { EBToolbarPreferenceManager_CT2384137.SetPref(EBPreferenceConsts_CT2384137.GroupingLastCheckTime, "0", true); EBToolbarPreferenceManager_CT2384137.SetPref(EBPreferenceConsts_CT2384137.GroupingLastServerUpdateTime, "0", true); }, InvalidateCacheGrouping: function(bInvalidateCache) { var bValue = EBToolbarPreferenceManager_CT2384137.GetPref(EBPreferenceConsts_CT2384137.GroupingInvalidateCache, true); if (typeof bInvalidateCache != "undefined") EBToolbarPreferenceManager_CT2384137.SetPref(EBPreferenceConsts_CT2384137.GroupingInvalidateCache, bInvalidateCache, true); return bValue; }, NullifyTimesCommunitiesChanges: function() { EBToolbarPreferenceManager_CT2384137.SetPref(EBPreferenceConsts_CT2384137.CommunitiesChangesLastCheckTime, "0"); } } var EBMCManager_CT2384137 = { UserCommunities: null, GroupingCommunities: null, RecentCommunities: null, AllCommunities: null, arrDetectedDomains: null, IsActive: false, MaxRecent: 10, Exception_CommunityNotExists: 'Exception_CommunityNotExists', Consts: { State: null }, OnLoad: function() { this.arrDetectedDomains = new EBArrayHashObject_CT2384137; //initialize detect manager, fill it with known domains if (!EBActionManager_CT2384137.IsToolbarGrouping() || EBActionManager_CT2384137.IsToolbarMC()) { var arrDownloadDomains = EBMCIO_CT2384137.LoadDownloadDomainsAsArray(); var arrExcludedDomains = EBMCIO_CT2384137.LoadExcludedDomainsAsArray(); EBMCDetect_CT2384137.Init(arrDownloadDomains, arrExcludedDomains); EBMCServerComm_CT2384137.InitMC(); } this.RecentCommunities = EBMCIO_CT2384137.LoadCommunities(EBMCConsts_CT2384137.CommunityFileType.Recent); if (EBActionManager_CT2384137.IsToolbarMC()) this.UserCommunities = EBMCIO_CT2384137.LoadCommunities(EBMCConsts_CT2384137.CommunityFileType.User); if (EBActionManager_CT2384137.IsToolbarGrouping()) { this.GroupingCommunities = EBMCIO_CT2384137.LoadCommunities(EBMCConsts_CT2384137.CommunityFileType.Grouping); EBMCIO_CT2384137.InitGrouping(this.GroupingCommunities.IsEmpty()); } //get grouping info for currently selected toolbar EBMCIO_CT2384137.InitCurrentGrouping(); this.AllCommunities = new EBCommunitiesList_CT2384137(this.UserCommunities, this.GroupingCommunities, this.RecentCommunities); EBMCMenu_CT2384137.OnLoad(this.AllCommunities); //star EBMCServerComm_CT2384137.GetCommunitiesChangesInfoFromServer(); }, GetCount: function() { return this.AllCommunities.Count(); }, OnClickSearch: function(event, strCompId, strSearchTerm) { var strLink = EBMCConsts_CT2384137.CommunitySearchUrl; if (strSearchTerm) strLink += strSearchTerm; EBLinkManager_CT2384137.LoadLinkURL(event, strLink, "SELF", null, null) }, OnClickOpenDialog: function(win) { EBMCDialog_CT2384137.OpenDialog(win); }, OnToolbarRefreshGrouping: function(bInvalidateCache) { EBMCIO_CT2384137.NullifyTimesGrouping(); EBMCIO_CT2384137.InvalidateCacheGrouping(bInvalidateCache); }, ForceRefreshGrouping: function() { this.OnToolbarRefresh(true); EBMCServerComm_CT2384137.GetCurrentGroupInfoFromServer(); }, OnToolbarRefreshMulticommunitiesChanges: function(bInvalidateCache) { EBMCIO_CT2384137.NullifyTimesCommunitiesChanges(); }, ForceRefreshMulticommunitiesChanges: function() { this.OnToolbarRefreshMulticommunitiesChanges(true); EBMCServerComm_CT2384137.GetCommunitiesChangesInfoFromServer(); }, LocationChange: function(strUrl) { if (!EBActionManager_CT2384137.IsToolbarShown()) { return; } if (EBMCDetect_CT2384137.IsDontCheckThisUrl(window._content.document.location.toString())) { EBMCButtonManager_CT2384137.CommunitiesNotDetected(); return; } //check the url before document complete. var arrA = EBMCDetect_CT2384137.CheckUrl(strUrl); if (arrA.length != 0) { EBMCMenu_CT2384137.UpdateMenu(arrA); EBMCButtonManager_CT2384137.CommunitiesDetected(); } EBMCButtonManager_CT2384137.CommunitiesNotDetected(); this.DocumentComplete(); }, DocumentComplete: function() { if (!EBActionManager_CT2384137.IsToolbarMC() || !EBActionManager_CT2384137.IsToolbarShown()) return; if (EBMCDetect_CT2384137.IsDontCheckThisUrl(window._content.document.location.toString())) { EBMCButtonManager_CT2384137.CommunitiesNotDetected(); return; } var cWin = getBrowser().contentWindow; var win = EBGlobalManager_CT2384137.GetWebPageJavascriptObject(cWin); var arrA = EBMCDetect_CT2384137.Detect(win); if (arrA != null) { EBMCMenu_CT2384137.UpdateMenu(arrA); EBMCButtonManager_CT2384137.CommunitiesDetected(); //var strUrl = window._content.document.location; if (!this.arrDetectedDomains.Contains(arrA[0].url)) { this.arrDetectedDomains.Add(arrA[0].url, true); EBMCButtonManager_CT2384137.ShowPopup(arrA); } } else EBMCButtonManager_CT2384137.CommunitiesNotDetected(); }, //Source parameter is for usage GetAndChangeCommunity: function(strUrl, strSource) { EBMCIO_CT2384137.ChangeToCommunity(strUrl, strSource); }, ChangeToCommunityFromApi: function(strCTID) { if (strCTID == EBGlobalConsts_CT2384137.ToolbarCTID) { this.ChangeToOriginal(EBUsageMyConduit_CT2384137.SourceApi); return; } objCommunity = this.GetCommunityFromExistingCommunitiesByCTID(strCTID); if (!objCommunity) throw (EBMCManager_CT2384137.Exception_CommunityNotExists) this.ChangeToCommunity(strCTID, objCommunity.Name, false, objCommunity, EBUsageMyConduit_CT2384137.SourceApi, false); }, ChangeToCommunity: function(strCTID, strName, isFromMenu, objCommunity, strSource, bIsNew) { if (strCTID == EBActionManager_CT2384137.GetCTID()) return; //Send usage if (bIsNew) { EBUsageMyConduit_CT2384137.AddNewCommunity(this.AllCommunities.Count() + 1, EBActionManager_CT2384137.GetCTID(), strCTID, strSource); EBMCIO_CT2384137.AddCommunityToFile(objCommunity); } else EBUsageMyConduit_CT2384137.SwitchCommunity(this.AllCommunities.Count(), EBActionManager_CT2384137.GetCTID(), strCTID, strSource); EBCommunityPreferenceManager_CT2384137.SetPref(EBPreferenceConsts_CT2384137.CommunityChanged, false, strCTID) if (!objCommunity) { objCommunity = this.GetCommunityFromExistingCommunitiesByCTID(strCTID); //if user previosly deleted this toolbar, and now he added it's again, //must set not deleted in registry objCommunity.SetStatus(0); } if (isFromMenu) this.AllCommunities.CommunitySelected(strCTID); //if user previosly deleted this toolbar, and now he added it's again, //must set not deleted in registry else objCommunity.SetStatus(0); oToolbar_CT2384137.toolbar.switchToCommunity(EBGlobalConsts_CT2384137.ToolbarCTID, EBActionManager_CT2384137.GetCTID(), objCommunity.CTID); }, RefreshAllToolbars: function(strCTID, objCommunity) { var objWindowsManager = Components.classes['@mozilla.org/appshell/window-mediator;1'] .getService(Components.interfaces.nsIWindowMediator); var objEnumerator = objWindowsManager.getEnumerator('navigator:browser'); var i = 0; while (objEnumerator.hasMoreElements()) { var objWindow = objEnumerator.getNext(); if (objWindow.EBServerCommunicationManager_CT2384137.OnLoadToolbar && objWindow.EBMCManager_CT2384137.DocumentComplete) { //only one toolbar will write new community to file if (i == 0) objWindow.EBServerCommunicationManager_CT2384137.OnLoadToolbar(strCTID, objCommunity); else objWindow.EBServerCommunicationManager_CT2384137.OnLoadToolbar(strCTID); objWindow.setTimeout(function() { objWindow.EBMCManager_CT2384137.DocumentComplete(); }, 1000); } i++; } }, //stars logic UpdateMenuForStarLogic: function() { var objWindowsManager = Components.classes['@mozilla.org/appshell/window-mediator;1'] .getService(Components.interfaces.nsIWindowMediator); var objEnumerator = objWindowsManager.getEnumerator('navigator:browser'); while (objEnumerator.hasMoreElements()) { var objWindow = objEnumerator.getNext(); if (objWindow.EBMCMenu_CT2384137.UpdateMenuForStarLogic) { objWindow.EBMCMenu_CT2384137.UpdateMenuForStarLogic(); } } }, UpdateDetectDomainsList: function(arrDownloadDomains, arrExcludedDomains) { try { var objWindowsManager = Components.classes['@mozilla.org/appshell/window-mediator;1'] .getService(Components.interfaces.nsIWindowMediator); var objEnumerator = objWindowsManager.getEnumerator('navigator:browser'); while (objEnumerator.hasMoreElements()) { var objWindow = objEnumerator.getNext(); if (objWindow.EBMCDetect_CT2384137.UpdateDomainsList) EBMCDetect_CT2384137.UpdateDomainsList(arrDownloadDomains, arrExcludedDomains); } } catch (ex) { } }, GetCommunityNameFromInstallationUrl: function(strUrl) { if (!strUrl) return null; var iDotIndex = strUrl.indexOf("."); if (iDotIndex != -1) return strUrl.slice(0, iDotIndex); return strUrl; }, IsOriginalToolbar: function(strUrl) { var strWebServerUrl = EBGlobalConsts_CT2384137.WebServerUrl; strWebServerUrl = strWebServerUrl.toLowerCase(); strUrl = strUrl.toLowerCase(); if (strWebServerUrl.indexOf(strUrl) != -1) return true; else return false; }, IsCommunityExists: function(strUrl) { if (this.AllCommunities) return this.AllCommunities.IsExists(strUrl); else return false; }, GetCTIDFromExistingCommunitiesByInstallUrl: function(strUrl) { return this.AllCommunities.GetCTIDByInstallationUrl(strUrl); }, GetCommunityFromExistingCommunitiesByInstallUrl: function(strUrl) { return this.AllCommunities.GetCommunityByInstallationUrl(strUrl); }, GetCommunityFromExistingCommunitiesByCTID: function(strCTID) { return this.AllCommunities.GetCommunityByCTID(strCTID); }, ChangeToOriginal: function(strSource) { strCTID = EBGlobalConsts_CT2384137.ToolbarCTID; this.ChangeToCommunity(strCTID, null, true, null, strSource, false); }, GetSelectedCTID: function() { return EBActionManager_CT2384137.GetCTID(); }, IsSelectedOriginalCommunity: function() { return (this.GetSelectedCTID() == "CT2384137") }, GetCommunitySettingsPath: function() { return EBMCConsts_CT2384137.FolderName + EBDirIO_CT2384137.sep + this.GetSelectedCTID() + EBDirIO_CT2384137.sep; }, BroadcastChanges: function(objCommunities) { var objWindowsManager = Components.classes['@mozilla.org/appshell/window-mediator;1'] .getService(Components.interfaces.nsIWindowMediator); var objEnumerator = objWindowsManager.getEnumerator('navigator:browser'); while (objEnumerator.hasMoreElements()) { var objWindow = objEnumerator.getNext(); if (objWindow.EBMCManager_CT2384137.UpdateCommunities) { objWindow.EBMCManager_CT2384137.UpdateCommunities(objCommunities); } } }, UpdateCommunities: function(objCommunities) { this.AllCommunities = objCommunities; EBMCMenu_CT2384137.OnLoad(this.AllCommunities); }, //Detect toolbar download OnBeforeNavigate: function(strUrl) { var arrA = EBMCDetect_CT2384137.CheckUrl(strUrl); if (arrA.length != 0 && !window.ToolbarDetected) { window.ToolbarDetected = true; this.ToolbarDownloadDetected(arrA[0]); } }, IsDownloadUrlIsOriginalCommunity: function(strUrl) { var strToolbarName = this.GetCommunityNameFromInstallationUrl(strUrl); var iStart = EBGlobalConsts_CT2384137.WebServerUrl.indexOf('.'); if (iStart != -1) { var strOToolbarName = EBGlobalConsts_CT2384137.WebServerUrl.substr(0, iStart); strOToolbarName = strOToolbarName.replace(/http:\/\//, ''); if (strToolbarName == strOToolbarName || strToolbarName == EBGlobalConsts_CT2384137.ToolbarCTID || strToolbarName == EBGlobalConsts_CT2384137.ToolbarId) { return true; } else { return false; } } return false; }, ToolbarDownloadDetected: function(strUrl) { //if downloading toolbar is the original toolbar and currently shown, don't popup selector dialog if (this.IsSelectedOriginalCommunity() && this.IsDownloadUrlIsOriginalCommunity(strUrl)) return; EBMCDialog_CT2384137.OpenDownloadDialog(strUrl); }, NavigationStop: function() { var objTimeout = function() { window.ToolbarDetected = false; }; setTimeout(objTimeout, 500); var oWebNav = getBrowser().webNavigation; var fStop = function() { oWebNav.stop(Components.interfaces.nsIWebNavigation.STOP_ALL); } setTimeout(fStop, 1); }, BroadcastGrouping: function(objGrouping) { this.AllCommunities.UpdateGrouping(objGrouping); var objWindowsManager = Components.classes['@mozilla.org/appshell/window-mediator;1'] .getService(Components.interfaces.nsIWindowMediator); var objEnumerator = objWindowsManager.getEnumerator('navigator:browser'); while (objEnumerator.hasMoreElements()) { var objWindow = objEnumerator.getNext(); if (objWindow.EBMCManager_CT2384137.UpdateCommunities) { objWindow.EBMCManager_CT2384137.UpdateCommunities(this.AllCommunities); } } }, BroadcastCurrentGrouping: function(objGrouping) { this.AllCommunities.UpdateCurrentGrouping(objGrouping); var objWindowsManager = Components.classes['@mozilla.org/appshell/window-mediator;1'] .getService(Components.interfaces.nsIWindowMediator); var objEnumerator = objWindowsManager.getEnumerator('navigator:browser'); while (objEnumerator.hasMoreElements()) { var objWindow = objEnumerator.getNext(); if (objWindow.EBMCManager_CT2384137.UpdateCommunities) { objWindow.EBMCManager_CT2384137.UpdateCommunities(this.AllCommunities); } } } } // +++++++++++ Multicommunity Language Pack +++++++++++++++++ var EBMCLanguagePack_CT2384137 = { OnLoad : function() { var locale = EBToolbarPreferenceManager_CT2384137.GetPref(EBPreferenceConsts_CT2384137.Locale,true); EBMCMenu_CT2384137.MenuItemInitText = oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_MULTI_CHANNEL_MENU_COMMUNITY_TOOLBAR_DETECTED'); EBMCMenu_CT2384137.ConduitNetworkText = oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_MULTI_CHANNEL_MENU_NETWORK'); EBMCMenu_CT2384137.OptionsText = oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_MULTI_CHANNEL_MENU_OPTIONS'); EBMCMenu_CT2384137.DetectedTooltipText = oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_MULTI_CHANNEL_MENU_COMMUNITY_TOOLBAR_DETECTED'); EBMCMenu_CT2384137.SwitchTo = oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_MULTI_CHANNEL_MENU_COMMUNITY_SWITCH_TO_DETECTED_TOOLBAR'); EBMCMenu_CT2384137.SearchForText = oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_MULTI_CHANNEL_CANDIDATE_SEARCH_FOR'); }, Dialog_OnLoad : function(objWindow,objDialog) { var locale = objWindow.EBToolbarPreferenceManager_CT2384137.GetPref(EBPreferenceConsts_CT2384137.Locale,true); var objShowHide = new Object(); objShowHide.show = objWindow.oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_OPTIONS_DLG_SHOW_COMPONENT_BUTTON'); objShowHide.hide = objWindow.oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_OPTIONS_DLG_HIDE_COMPONENT_BUTTON'); //objDialog.oDownBtn.setAttribute('label',objWindow.oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_MULTI_CHANNEL_OPTIONS_DLG_MOVE_DOWN_BUTT')); //objDialog.oUpBtn.setAttribute('label',objWindow.oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_MULTI_CHANNEL_OPTIONS_DLG_MOVE_UP_BUTT')); objDialog.oDeleteBtn.setAttribute('label',objWindow.oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_MULTI_CHANNEL_OPTIONS_DLG_REMOVE_BUTT')); objDialog.oHideBtn.setAttribute('label',objWindow.oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_OPTIONS_DLG_HIDE_COMPONENT_BUTTON')); objDialog.oAcceptBtn.setAttribute('label',objWindow.oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_GLOBAL_OK')); objDialog.oCancelBtn.setAttribute('label',objWindow.oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_GLOBAL_CANCEL')); objDialog.oDescription.innerHTML = objWindow.oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_MULTI_CHANNEL_OPTIONS_DLG_STATIC') window.title = objWindow.oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_MULTI_CHANNEL_OPTIONS_DLG_CAPTION'); return objShowHide; }, DownloadDialog_OnLoad : function(objWindow,iMode,strCommunityName) { var locale = objWindow.EBToolbarPreferenceManager_CT2384137.GetPref(EBPreferenceConsts_CT2384137.Locale,true); var descText = document.getElementById("descText"); var radio_add = document.getElementById("radio_add"); var radio_new = document.getElementById("radio_new"); var accept = document.getElementById("ebMulticommunityDownloadDialog").getButton("accept"); var cancel = document.getElementById("ebMulticommunityDownloadDialog").getButton("cancel"); var lblLearnMore= document.getElementById("lnkLearnMore"); window.title = objWindow.oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_MULTI_COMMUNITY_ADD_WARNING_DLG_CAPTION'); accept.setAttribute('label',objWindow.oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_GLOBAL_OK')); cancel.setAttribute('label',objWindow.oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_GLOBAL_CANCEL')); switch(iMode) { case 0: radio_add.setAttribute('label',objWindow.oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_MULTI_COMMUNITY_ADD_WARNING_DLG_ADD')); radio_new.setAttribute('label',objWindow.oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_MULTI_CHANNEL_ADD_COMMUNITY_WARNING_INSTALL')); break; case 1: radio_add.setAttribute('label',objWindow.oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_MULTI_CHANNEL_MENU_COMMUNITY_SWITCH_TO_DETECTED_TOOLBAR') + strCommunityName); radio_new.setAttribute('label',objWindow.oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_MULTI_CHANNEL_ADD_COMMUNITY_WARNING_REINSTALL').replace(/{TOOLBAR_NAME}/,strCommunityName)); break; case 2: radio_add.setAttribute('label',objWindow.oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_MULTI_CHANNEL_MENU_COMMUNITY_SWITCH_TO_DETECTED_TOOLBAR') + strCommunityName); radio_new.setAttribute('label',objWindow.oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_MULTI_CHANNEL_ADD_COMMUNITY_WARNING_INSTALL')); break; } descText.innerHTML = objWindow.oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_MULTI_COMMUNITY_ADD_WARNING_DLG_TXT').replace(/\n/g,''); lblLearnMore.setAttribute('label',objWindow.oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_GLOBAL_LEARN_MORE')); }, Detected_OnLoad : function(objWindow) { var locale = objWindow.EBToolbarPreferenceManager_CT2384137.GetPref(EBPreferenceConsts_CT2384137.Locale,true); var chkDontShow = document.getElementById('chkDontShowAgain'); chkDontShow.setAttribute('label',objWindow.oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_GLOBAL_DO_NOT_SHOW_AGAIN')); } } // +++++++++++ Multicommunity Language Pack +++++++++++++++++ var EBMCMenu_CT2384137 = { xulMenuObj: null, MenuItemNewCommunityNameAtt: 'communityNew', MenuItemCommunityNameAtt: 'community', MenuItemGroupingNameAtt: 'community_group', MenuItemRecentNameAtt: 'recent', MenuItemSeparatorNameAtt: 'separator', MenuItemDetectedPrefix: 'DetectedCommunity_CT2384137', MenuItemInitText: 'Community Toolbar Detected', ConduitNetworkText: 'Search the Conduit Network', SearchForText: 'Search the Conduit Network for', SwitchTo: 'Switch To - ', OptionsText: 'Edit', DetectedTooltipText: 'Communiy Toolbar Detected', MenuItemInitIcon: 'chrome://iobitcom/skin/mc_add_inactive.png', MenuItemCommunity: 'chrome://iobitcom/skin/mc_community.png', MenuItemCommunitySelected: 'chrome://iobitcom/skin/mc_community_selected.png', MenuItemCommunity50: 'chrome://iobitcom/skin/mc_community_50.png', MaxNewDetectedInMenu: 5, EmptyPrevCommunities: function(xulMenuPopup) { while (xulMenuPopup.firstChild.getAttribute('name') == this.MenuItemNewCommunityNameAtt) { xulMenuPopup.removeChild(xulMenuPopup.firstChild); } }, EmptyExistingCommunities: function(xulMenuPopup) { var attrName = ""; for (var i = xulMenuPopup.childNodes.length - 1; i > 4; i--) { attrName = xulMenuPopup.childNodes[i].getAttribute('name'); if ((attrName == this.MenuItemCommunityNameAtt || attrName == this.MenuItemSeparatorNameAtt + "2") && xulMenuPopup.childNodes[i].hasAttribute("EB_CHANGE_TO")) { xulMenuPopup.removeChild(xulMenuPopup.childNodes[i]); if (attrName == this.MenuItemSeparatorNameAtt + "2") return; } } }, EmptyExistingGroup: function(xulMenuPopup) { var attrName = ""; for (var i = xulMenuPopup.childNodes.length - 1; i >= 0; i--) { attrName = xulMenuPopup.childNodes[i].getAttribute('name'); if (attrName == this.MenuItemGroupingNameAtt || attrName == this.MenuItemSeparatorNameAtt + "1") { xulMenuPopup.removeChild(xulMenuPopup.childNodes[i]); if (attrName == this.MenuItemSeparatorNameAtt + "1") { return; } } } }, EmptyExistingRecent: function(xulMenuPopup) { var attrName = ""; for (var i = xulMenuPopup.childNodes.length - 1; i >= 0; i--) { attrName = xulMenuPopup.childNodes[i].getAttribute('name'); if (attrName == this.MenuItemRecentNameAtt || attrName == this.MenuItemSeparatorNameAtt + "3") { xulMenuPopup.removeChild(xulMenuPopup.childNodes[i]); if (attrName == this.MenuItemSeparatorNameAtt + "3") { return; } } } }, CreateNewCommunityXulMenuItem: function(objDetected) { var strCaption = objDetected.url; var objCommunity = null; if (objDetected.IsExists) { objCommunity = EBMCManager_CT2384137.GetCommunityFromExistingCommunitiesByInstallUrl(objDetected.url); strCaption = this.SwitchTo + " " + objCommunity.Name; } var xulMenuItem = EBXULFactory_CT2384137.CreateMenuItem(strCaption, oToolbarSkin_CT2384137.groupActiveImageUrl, "", "", "", null); xulMenuItem.setAttribute('id', this.MenuItemDetectedPrefix + objDetected.url); xulMenuItem.setAttribute('name', this.MenuItemNewCommunityNameAtt); xulMenuItem.addEventListener("command", function(e) { if (objDetected.IsExists && objCommunity) EBMCManager_CT2384137.ChangeToCommunity(objCommunity.CTID, objCommunity.Name, true, null, EBUsageMyConduit_CT2384137.SourceMenu, false); else { EBMCMenu_CT2384137.RemoveMeFromDetector(xulMenuItem); setTimeout(function() { EBMCTrusteDialog_CT2384137.open(objDetected.url, EBUsageMyConduit_CT2384137.SourceMenu); }, 1); } e.cancelBubble = true; }, false); return xulMenuItem; }, RemoveMeFromDetector: function(obj) { var xulMenu = this.xulMenuObj.childNodes[0]; xulMenu.removeChild(obj); //if this was the last detected community, create "no communities detected node", //and change to not detected icon. var firstNode = xulMenu.childNodes[0]; if (firstNode.getAttribute("name") == this.MenuItemSeparatorNameAtt + "0") { EBMCButtonManager_CT2384137.CommunitiesNotDetected(); } }, UpdateDetectedCommunities: function(xulMenuPopup, arrDetected) { var xulMenuItem = null; var obj = null; var numOfDetected = (arrDetected.length > this.MaxNewDetectedInMenu) ? this.MaxNewDetectedInMenu : arrDetected.length; for (var i = 0; i < numOfDetected; i++) { xulMenuItem = this.CreateNewCommunityXulMenuItem(arrDetected[i]); xulMenuPopup.insertBefore(xulMenuItem, xulMenuPopup.firstChild); } }, UpdateMenu: function(arrDetected) { var xulMenu = this.xulMenuObj.childNodes[0]; this.EmptyPrevCommunities(xulMenu); this.UpdateDetectedCommunities(xulMenu, arrDetected); }, UpdateMenuForStarLogic: function() { var xulMenuPopup = this.xulMenuObj.firstChild; if (!xulMenuPopup) return; var xulMenu = null; var strCTID = ""; for (var i = 0; i < xulMenuPopup.childNodes.length; i++) { xulMenu = xulMenuPopup.childNodes[i]; strCTID = xulMenu.getAttribute('EB_CTID'); if (strCTID && EBCommunityPreferenceManager_CT2384137.GetPref(EBPreferenceConsts_CT2384137.CommunityChanged, strCTID)) { this.ChangeIconToStar(xulMenu); } } }, ChangeIconToStar: function(xulMenu) { if (xulMenu.getAttribute('EBchecked').toLowerCase() == "true") { return; } else { xulMenu.setAttribute(EBImageHandler_CT2384137.Consts.IsToStarAttribute, 'true'); } }, CommunitiesNotDetected: function(strDomain) { var xulMenuPopup = this.xulMenuObj.childNodes[0]; this.EmptyPrevCommunities(xulMenuPopup); var strName = this.MenuItemInitText; var strIcon = this.MenuItemInitIcon; var strHint = this.MenuItemInitHint; var objCommand = null; var strDisabled = "true"; if (strDomain) { strName = this.SearchForText + " \"" + strDomain + "\""; objCommand = function(event) { EBMCManager_CT2384137.OnClickSearch(event, null, strDomain); event.cancelBubble = true; }; strDisabled = "false"; } var xulMenuItem = EBXULFactory_CT2384137.CreateMenuItem(strName, strIcon, strHint, objCommand, "", null); xulMenuItem.setAttribute('id', this.MenuItemDetectedPrefix); xulMenuItem.setAttribute('name', this.MenuItemNewCommunityNameAtt); xulMenuItem.setAttribute('disabled', strDisabled); xulMenuPopup.insertBefore(xulMenuItem, xulMenuPopup.firstChild) }, BuildSection: function(xulMenu, ObjCommunities, nameAttr, seperatorNameAttr, bIsReversedOrder) { if (ObjCommunities && !ObjCommunities.IsEmpty()) { var objFirst = null var j = ObjCommunities.Count(); var xulMenuItem, oCommunity; for (var i = 0; i < ObjCommunities.Count(); i++) { if (bIsReversedOrder) j--; else j = i; oCommunity = ObjCommunities.GetByIndex(j); if (oCommunity.Status == 0) { xulMenuItem = this.CreateNewCommunityMenuItem(oCommunity, nameAttr); xulMenu.appendChild(xulMenuItem); if (!objFirst) objFirst = xulMenuItem; } } if (objFirst) { var xulMenuSeparator = EBXULFactory_CT2384137.CreateMenuSeparator(); xulMenuSeparator.setAttribute('name', seperatorNameAttr); xulMenu.appendChild(xulMenuSeparator); xulMenu.insertBefore(xulMenuSeparator, objFirst); } } }, OnLoad: function(objCommunities) { var oCommunity = null; var xulMenu = this.xulMenuObj.childNodes[0]; this.EmptyExistingCommunities(xulMenu); this.EmptyExistingGroup(xulMenu); this.EmptyExistingRecent(xulMenu); //Build Recent menu section if (objCommunities.Recent && !objCommunities.Recent.IsEmpty()) { this.BuildSection(xulMenu, objCommunities.Recent, this.MenuItemRecentNameAtt, this.MenuItemSeparatorNameAtt + "3", true); } //Build Grouping menu section if (objCommunities.Grouping && !objCommunities.Grouping.IsEmpty()) { this.BuildSection(xulMenu, objCommunities.Grouping, this.MenuItemGroupingNameAtt, this.MenuItemSeparatorNameAtt + "1", false); } //Build User menu section if (objCommunities.User && !objCommunities.User.IsEmpty()) { this.BuildSection(xulMenu, objCommunities.User, this.MenuItemCommunityNameAtt, this.MenuItemSeparatorNameAtt + "2", false); } }, UpdateGrouping: function(xmlGroup) { var xulMenuItem = null; var xulMenu = this.xulMenuObj.childNodes[0]; this.EmptyExistingGroup(xulMenu); var xulMenuItemInsertBefore = this.FindInsertBeforeMenuItem(xulMenu); var xulMenuSeparator = EBXULFactory_CT2384137.CreateMenuSeparator(); xulMenuSeparator.setAttribute('name', this.MenuItemSeparatorNameAtt + "1"); xulMenuSeparator.style.display = 'none'; if (xulMenuItemInsertBefore) { xulMenu.insertBefore(xulMenuSeparator, xulMenuItemInsertBefore); } else { xulMenu.appendChild(xulMenuSeparator); } for (var i = 0; i < xmlGroup.childNodes.length; i++) { xulMenuItem = this.CreateNewCommunityMenuItemFromXML(xmlGroup.childNodes[i], this.MenuItemGroupingNameAtt); if (xulMenuItemInsertBefore) { xulMenu.insertBefore(xulMenuItem, xulMenuItemInsertBefore); } else { xulMenu.appendChild(xulMenuItem); } } }, FindInsertBeforeMenuItem: function(xulMenu) { var nameAtt = ""; var commandAtt = ""; for (var i = 0; i < xulMenu.childNodes.length; i++) { if (xulMenu.childNodes[i].hasAttribute("EB_CHANGE_TO")) { if (i < xulMenu.childNodes.length - 1) return xulMenu.childNodes[i + 1]; else return null; } } }, CreateNewCommunityMenuItem: function(oCommunity, nameAtt) { var strCaption = oCommunity.Name; var strCTID = oCommunity.CTID; var strHint = oCommunity.InstallationUrl var objCommand = function(event) { EBMCManager_CT2384137.ChangeToCommunity(strCTID, strCaption, true, null, EBUsageMyConduit_CT2384137.SourceMenu, false); }; var strIcon = this.MenuItemCommunity; if (EBMCManager_CT2384137.GetSelectedCTID() == strCTID) strIcon = this.MenuItemCommunitySelected; var xulMenuItem = EBXULFactory_CT2384137.CreateMenuItem(strCaption, this.MenuItemCommunity, strHint, objCommand, "", null); xulMenuItem.setAttribute('id', this.MenuItemDetectedPrefix + strCaption); xulMenuItem.setAttribute('name', nameAtt); xulMenuItem.setAttribute('EB_CTID', strCTID); if (EBMCManager_CT2384137.GetSelectedCTID() == strCTID) this.SetMenuSelected(xulMenuItem); return xulMenuItem; }, SetMenuSelected: function(xulMenuItem) { xulMenuItem.setAttribute('EBchecked', 'true'); xulMenuItem.setAttribute("class", "menuitem-iconic"); xulMenuItem.setAttribute("image", this.MenuItemCommunitySelected); xulMenuItem.setAttribute("style", EBToolbarDesignConsts_CT2384137.ToolbarMaxImageHeightStyle + ';font-weight:bold'); }, SetMenuNotSelected: function(xulMenuItem) { xulMenuItem.setAttribute('EBchecked', 'false'); xulMenuItem.setAttribute("class", "menuitem-iconic"); xulMenuItem.setAttribute("image", this.MenuItemCommunity); xulMenuItem.setAttribute("style", EBToolbarDesignConsts_CT2384137.ToolbarMaxImageHeightStyle); }, OnCommunitySelect: function(strId) { var xulMenu = this.xulMenuObj.childNodes[0]; var xulMenuItem = null; for (var i = 0; i < xulMenu.childNodes.length; i++) { xulMenuItem = xulMenu.childNodes[i]; if (xulMenuItem.getAttribute('name') == this.MenuItemCommunityNameAtt) { if (xulMenuItem.getAttribute('id') == strId) { this.SetMenuSelected(xulMenuItem); } else { this.SetMenuNotSelected(xulMenuItem); } } } }, OnNewCommunitySelect: function(xulSelected) { var xulMenu = this.xulMenuObj.childNodes[0]; var xulMenuItem, xulMenuItemInsertBefore = null; var isAppend = false; var foundFirst = true; for (var i = 0; i < xulMenu.childNodes.length; i++) { xulMenuItem = xulMenu.childNodes[i]; if (xulMenuItem.getAttribute('name') == this.MenuItemCommunityNameAtt) { if (foundFirst) { if (i == xulMenu.childNodes.length - 1) { isAppend = true; } else { xulMenuItemInsertBefore = xulMenu.childNodes[i + 1]; } foundFirst = false; } this.SetMenuNotSelected(xulMenuItem); } } xulSelected.setAttribute('name', this.MenuItemCommunityNameAtt); if (isAppend) { xulMenu.appendChild(xulSelected); } else { xulMenu.insertBefore(xulSelected, xulMenuItemInsertBefore); } this.SetMenuSelected(xulSelected); } }; //Radio Recent Media List Class function EBRecentCommunityList_CT2384137(XMLDoc,strFullFilePath) { this.Add = function(oCommunity) { if(this.Contains(oCommunity)) this.Remove(oCommunity); if(this.CommunitiesHash.Count() == EBMCManager_CT2384137.MaxRecent) { var oCommunityToRemove = this.CommunitiesHash.GetByIndex(0); this.CommunitiesHash.Remove(0,oCommunityToRemove.CTID); } this.CommunitiesHash.Add(oCommunity.CTID,oCommunity); }; this.Contains = function(oCommunity) { return this.CommunitiesHash.Contains(oCommunity.CTID); }; this.Remove = function(oCommunity) { if(this.Contains(oCommunity)) { var index = this.GetIndexByCommunity(oCommunity) this.CommunitiesHash.Remove(index,oCommunity.CTID); } }; this.GetIndexByCommunity = function(oCommunity) { var iCommunity = null; for(var i=0;this.CommunitiesHash.Count();i++) { iCommunity = this.CommunitiesHash.GetByIndex(i); if(iCommunity.CTID == oCommunity.CTID) { return i; } } return -1; }; if(XMLDoc && XMLDoc.childNodes.length != 0) { this.CommunitiesHash = new EBArrayHashObject_CT2384137(); this.InitList(XMLDoc); } else { this.CommunitiesHash = new EBArrayHashObject_CT2384137(); } this.FullFilePath = strFullFilePath; } EBRecentCommunityList_CT2384137.prototype = new EBMCCommunityList_CT2384137; var EBMCServerComm_CT2384137 = { timeoutFunc: null, timeoutFuncCurrent: null, //**************************************************************************** // Grouping //**************************************************************************** InitGrouping: function(bIsEmpty) { //Set grouping check interval. var iGroupingInterval = EBToolbarPreferenceManager_CT2384137.GetPref(EBPreferenceConsts_CT2384137.GroupingServerCheckInterval); if (iGroupingInterval != null && iGroupingInterval) { EBMCConsts_CT2384137.GroupingServerCheckInterval = iGroupingInterval; if (EBMCConsts_CT2384137.GroupingServerOnErrorInterval >= iGroupingInterval) { EBMCConsts_CT2384137.GroupingServerOnErrorInterval = parseInt(iGroupingInterval / 2); } } var timeOut; if (bIsEmpty) { EBToolbarPreferenceManager_CT2384137.SetPref(EBPreferenceConsts_CT2384137.GroupingLastCheckTime, '0'); EBToolbarPreferenceManager_CT2384137.SetPref(EBPreferenceConsts_CT2384137.GroupingLastServerUpdateTime, '0'); } var IsResponded; if (this.IsRequestGrouping()) { this.GetGroupInfoFromServer(); IsResponded = EBToolbarPreferenceManager_CT2384137.GetPref(EBPreferenceConsts_CT2384137.GroupingLastCheckResponse); IsResponded = (IsResponded == null) ? false : IsResponded; if (!IsResponded) timeOut = this.GetDifference(!IsResponded, true); else timeOut = EBMCConsts_CT2384137.GroupingServerCheckInterval * 60 * 1000; } else { IsResponded = EBToolbarPreferenceManager_CT2384137.GetPref(EBPreferenceConsts_CT2384137.GroupingLastCheckResponse); IsResponded = (IsResponded == null) ? false : IsResponded; timeOut = this.GetDifference(!IsResponded, true); } this.timeoutFunc = setTimeout(function() { EBMCServerComm_CT2384137.InitGrouping(false); }, timeOut); }, GetDifference: function(isError, isNextCheckTime, bIsCurrent) { var now = Date(); var lastCheckTime = ""; var milliDif = 0; if (!bIsCurrent) bIsCurrent = false; if (isError) { lastCheckTime = EBToolbarPreferenceManager_CT2384137.GetPref(EBPreferenceConsts_CT2384137.GroupingLastCheckTime, bIsCurrent); if (isNextCheckTime) milliDif = EBMCConsts_CT2384137.GroupingServerOnErrorInterval * 60 * 1000 - (Date.parse(now) - Date.parse(lastCheckTime)); else { if (lastCheckTime) milliDif = Date.parse(now) - Date.parse(lastCheckTime); else milliDif = EBMCConsts_CT2384137.GroupingServerCheckInterval * 60 * 1000; } } else { lastCheckTime = EBToolbarPreferenceManager_CT2384137.GetPref(EBPreferenceConsts_CT2384137.GroupingLastCheckTime, bIsCurrent); if (isNextCheckTime) milliDif = EBMCConsts_CT2384137.GroupingServerCheckInterval * 60 * 1000 - (Date.parse(now) - Date.parse(lastCheckTime)); else milliDif = Date.parse(now) - Date.parse(lastCheckTime); } return milliDif; }, IsRequestGrouping: function(bIsCurrent) { if (!bIsCurrent) bIsCurrent = false; var now = Date(); var timeOut = 0; var lastCheckTime = EBToolbarPreferenceManager_CT2384137.GetPref(EBPreferenceConsts_CT2384137.GroupingLastCheckTime, bIsCurrent); var IsResponded = EBToolbarPreferenceManager_CT2384137.GetPref(EBPreferenceConsts_CT2384137.GroupingLastCheckResponse, bIsCurrent); var lastErrorCode = EBToolbarPreferenceManager_CT2384137.GetPref(EBPreferenceConsts_CT2384137.GroupingLastErrorCode, bIsCurrent); if (!lastCheckTime || lastCheckTime == "0") { return true; } if (!IsResponded) { timeOut = EBMCConsts_CT2384137.GroupingServerOnErrorInterval * 60 * 1000; var timePased = this.GetDifference(true, false, bIsCurrent); if (timePased >= timeOut) return true; } else { var milliDif = this.GetDifference(false, false, bIsCurrent); timeOut = EBMCConsts_CT2384137.GroupingServerCheckInterval * 60 * 1000; if (milliDif >= timeOut) return true; } // all ok, no need to check return false; }, GetGroupInfoFromServer: function(bIsFromSelectFromGroupingByLocale) { var oCallBackFunction = function(strXML, o) { strXML = EBXML_CT2384137.LegalizeEBXML(strXML); var xmlGroup = EBXML_CT2384137.GetXmlDocument(strXML); if (!xmlGroup) { EBMCServerComm_CT2384137.GroupingErrorResponse(o); return false; } EBMCServerComm_CT2384137.GroupInfoResponse(xmlGroup.documentElement, bIsFromSelectFromGroupingByLocale); }; //set last request time EBToolbarPreferenceManager_CT2384137.SetPref(EBPreferenceConsts_CT2384137.GroupingLastCheckTime, Date()); //nullify last response EBToolbarPreferenceManager_CT2384137.SetPref(EBPreferenceConsts_CT2384137.GroupingLastCheckResponse, false); var strUrl = this.getGroupingServiceUrl() + EBMCConsts_CT2384137.GroupServiceServerUrl; strUrl = strUrl.replace(/CTxxxx/, EBGlobalConsts_CT2384137.ToolbarCTID); var lut = EBToolbarPreferenceManager_CT2384137.GetPref(EBPreferenceConsts_CT2384137.GroupingLastServerUpdateTime); if (lut == null) lut = 0; strUrl += lut; EBWeb_CT2384137.HTTPServerRequest(strUrl, null, false, oCallBackFunction); }, GroupInfoResponse: function(xmlDoc, bIsFromSelectFromGroupingByLocale) { var strNodeValue = EBXML_CT2384137.GetXmlNodeValue(xmlDoc); if (strNodeValue == EBMCConsts_CT2384137.ERROR_REPLY) { EBToolbarPreferenceManager_CT2384137.SetPref(EBPreferenceConsts_CT2384137.GroupingLastErrorCode, "ERROR_REPLY"); return false; } var lastUpdateTime = ""; var xmlCommunities = null; //update last grouping response time EBToolbarPreferenceManager_CT2384137.SetPref(EBPreferenceConsts_CT2384137.GroupingLastCheckResponse, true); //clear last error code EBToolbarPreferenceManager_CT2384137.SetPref(EBPreferenceConsts_CT2384137.GroupingLastErrorCode, ""); for (var i = 0; i < xmlDoc.childNodes.length; i++) { if (xmlDoc.childNodes[i].tagName == EBMCConsts_CT2384137.xmlTags.LastUpdateTime) { lastUpdateTime = EBXML_CT2384137.GetXmlNodeValue(xmlDoc.childNodes[i]); if (lastUpdateTime == EBMCConsts_CT2384137.GroupNotModified) return; } else if (xmlDoc.childNodes[i].tagName == EBMCConsts_CT2384137.xmlTags.Communities) { xmlCommunities = xmlDoc.childNodes[i]; } } EBToolbarPreferenceManager_CT2384137.SetPref(EBPreferenceConsts_CT2384137.GroupingLastServerUpdateTime, lastUpdateTime); if (xmlCommunities.childNodes.length == 0) return false; var strFullPath = EBMCConsts_CT2384137.FolderName + EBDirIO_CT2384137.sep + EBMCConsts_CT2384137.GroupFileName; var oGrouping = new EBMCCommunityList_CT2384137(xmlCommunities, strFullPath); oGrouping.SaveToFile(); if (bIsFromSelectFromGroupingByLocale) EBGroupingManager_CT2384137.onGroupingResponse(oGrouping); else EBMCManager_CT2384137.BroadcastGrouping(oGrouping); }, GroupingErrorResponse: function(objError) { EBToolbarPreferenceManager_CT2384137.SetPref(EBPreferenceConsts_CT2384137.GroupingLastErrorCode, objError.value); EBToolbarPreferenceManager_CT2384137.SetPref(EBPreferenceConsts_CT2384137.GroupingLastResponseTime, Date()); clearTimeout(this.timeoutFunc); this.timeoutFunc = setTimeout(function() { EBMCServerComm_CT2384137.InitGrouping(); }, EBMCConsts_CT2384137.GroupingServerOnErrorInterval * 60 * 1000); }, //**************************************************************************** // Community Info //**************************************************************************** GetCommunityInfoFromServer: function(strCommunityUrl, strSource) { var oCallBackFunction = function(strXML, o) { strXML = EBXML_CT2384137.LegalizeEBXML(strXML); var xmlCommunity = EBXML_CT2384137.GetXmlDocument(strXML); if (!xmlCommunity) return false; EBMCServerComm_CT2384137.CommunityInfoResponse(xmlCommunity.documentElement, strSource); }; var strUrl = this.getGroupingServiceUrl() + EBMCConsts_CT2384137.CommunityServiceServerUrl + strCommunityUrl; EBWeb_CT2384137.HTTPServerRequest(strUrl, null, false, oCallBackFunction); }, CommunityInfoResponse: function(xmlDoc, strSource) { var strNodeValue = EBXML_CT2384137.GetXmlNodeValue(xmlDoc); if (strNodeValue == EBMCConsts_CT2384137.ERROR_REPLY) return false; var objCommunity = new EBMCCommunityList_CT2384137(xmlDoc) EBMCManager_CT2384137.ChangeToCommunity(objCommunity.CTID, objCommunity.Name, false, objCommunity, strSource, true); }, //**************************************************************************** // Communities Changes //**************************************************************************** IsRequestCommunitiesChanges: function() { var lastCheckTime = EBToolbarPreferenceManager_CT2384137.GetPref(EBPreferenceConsts_CT2384137.CommunitiesChangesLastCheckTime); if (lastCheckTime) { var milliDif = Date.parse(Date()) - Date.parse(lastCheckTime); if (milliDif < 1000 * 60) return false; } return true; }, CreateCommunitiesChangesRequestParametersString: function() { var strParams = EBMCConsts_CT2384137.UrlParameter_CTIDs + EBMCManager_CT2384137.AllCommunities.GetAllCTIDCommaSeparatedString(); return strParams; }, GetCommunitiesChangesInfoFromServer: function() { if (!this.IsRequestCommunitiesChanges()) { EBMCManager_CT2384137.UpdateMenuForStarLogic(); return; } var oCallBackFunction = function(strXML, o) { strXML = EBXML_CT2384137.LegalizeEBXML(strXML); var xmlMCChanges = EBXML_CT2384137.GetXmlDocument(strXML); if (!xmlMCChanges) return false; EBMCServerComm_CT2384137.CommunitiesChangesInfoResponse(xmlMCChanges.documentElement); }; //set last request time EBToolbarPreferenceManager_CT2384137.SetPref(EBPreferenceConsts_CT2384137.CommunitiesChangesLastCheckTime, Date()); var strUrl = this.getGroupingServiceUrl() + EBMCConsts_CT2384137.CommunitiesCheckServerUrl; var strParams = this.CreateCommunitiesChangesRequestParametersString(); if (strParams) { strUrl += strParams; EBWeb_CT2384137.HTTPServerRequest(strUrl, null, false, oCallBackFunction); } }, CommunitiesChangesInfoResponse: function(xmlDoc) { var strNodeValue = EBXML_CT2384137.GetXmlNodeValue(xmlDoc); if (strNodeValue == EBMCConsts_CT2384137.ERROR_REPLY) return false; var GetCommunityInfo = function(xmlCommunity) { var objCommunity = new Object(); var strUpdated = ""; for (var i = 0; i < xmlCommunity.childNodes.length; i++) { if (xmlCommunity.childNodes[i].tagName == EBMCConsts_CT2384137.xmlTags.CTID) objCommunity.ctid = EBXML_CT2384137.GetXmlNodeValue(xmlCommunity.childNodes[i]); else if (xmlCommunity.childNodes[i].tagName == EBMCConsts_CT2384137.xmlTags.VisualLastUpdateTime) objCommunity.lut = EBXML_CT2384137.GetXmlNodeValue(xmlCommunity.childNodes[i]); else if (xmlCommunity.childNodes[i].tagName == EBMCConsts_CT2384137.xmlTags.AlertChannelId) objCommunity.alertChannelId = EBXML_CT2384137.GetXmlNodeValue(xmlCommunity.childNodes[i]); } return objCommunity; }; var bIsAnyChanges = false; var bIsAnyChangesFromLastTime = false; var objCommunity = null; var xmlCommunity = null; var strPrefLUT = ""; var strPrefUpdated = ""; var bLastState = null; var strLastVisualLUT = ""; var arrChannelsId = new Array(); //get the GROUPING node xmlDoc = xmlDoc.firstChild; for (var i = 0; i < xmlDoc.childNodes.length; i++) { objCommunity = GetCommunityInfo(xmlDoc.childNodes[i]); if (objCommunity.alertChannelId) arrChannelsId.push(objCommunity.alertChannelId); strLastVisualLUT = EBCommunityPreferenceManager_CT2384137.GetPref(EBPreferenceConsts_CT2384137.VusualLastUpdateTime, objCommunity.ctid); if (objCommunity.lut != strLastVisualLUT) { bIsAnyChanges = true; bLastState = EBCommunityPreferenceManager_CT2384137.GetPref(EBPreferenceConsts_CT2384137.CommunityChanged, objCommunity.ctid); if (!bLastState) bIsAnyChangesFromLastTime = true; EBCommunityPreferenceManager_CT2384137.SetPref(EBPreferenceConsts_CT2384137.CommunityChanged, true, objCommunity.ctid); } } if (bIsAnyChanges) EBMCManager_CT2384137.UpdateMenuForStarLogic(); if (bIsAnyChangesFromLastTime) EBMCButtonManager_CT2384137.SetMainButtonStar(); EBAlertManager_CT2384137.UpdateAlertMultiple(arrChannelsId); }, //**************************************************************************** // Current Toolbar Grouping //**************************************************************************** InitCurrentGrouping: function() { //do not request grouping for original toolbar, it has it's own mechanism. if (EBMCManager_CT2384137.IsSelectedOriginalCommunity()) return; var iGroupingInterval = EBToolbarPreferenceManager_CT2384137.GetPref(EBPreferenceConsts_CT2384137.GroupingServerCheckInterval); if (iGroupingInterval != null && iGroupingInterval) { EBMCConsts_CT2384137.GroupingServerCheckInterval = iGroupingInterval; if (EBMCConsts_CT2384137.GroupingServerOnErrorInterval >= iGroupingInterval) EBMCConsts_CT2384137.GroupingServerOnErrorInterval = parseInt(iGroupingInterval / 2); } var timeOut, IsResponded; if (this.IsRequestGrouping(true)) { this.GetCurrentGroupInfoFromServer(); IsResponded = EBToolbarPreferenceManager_CT2384137.GetPref(EBPreferenceConsts_CT2384137.GroupingLastCheckResponse, true); IsResponded = (IsResponded == null) ? false : IsResponded; if (!IsResponded) timeOut = this.GetDifference(!IsResponded, false, true); else timeOut = EBMCConsts_CT2384137.GroupingServerCheckInterval * 60 * 1000; } else { IsResponded = EBToolbarPreferenceManager_CT2384137.GetPref(EBPreferenceConsts_CT2384137.GroupingLastCheckResponse, true); IsResponded = (IsResponded == null) ? false : IsResponded; timeOut = this.GetDifference(!IsResponded, true, true); } this.timeoutFuncCurrent = setTimeout(function() { EBMCServerComm_CT2384137.InitCurrentGrouping(false); }, timeOut); }, GetCurrentGroupInfoFromServer: function() { var oCallBackFunction = function(strXML, o) { strXML = EBXML_CT2384137.LegalizeEBXML(strXML); var xmlGroup = EBXML_CT2384137.GetXmlDocument(strXML); if (!xmlGroup) { EBMCServerComm_CT2384137.CurrentGroupingErrorResponse(o); return false; } EBMCServerComm_CT2384137.CurrentGroupInfoResponse(xmlGroup.documentElement); }; //set last request time EBToolbarPreferenceManager_CT2384137.SetPref(EBPreferenceConsts_CT2384137.GroupingLastCheckTime, Date(), true); //nullify last response EBToolbarPreferenceManager_CT2384137.SetPref(EBPreferenceConsts_CT2384137.GroupingLastCheckResponse, false, true); var strUrl = this.getGroupingServiceUrl() + EBMCConsts_CT2384137.GroupServiceServerUrl; strUrl = strUrl.replace(/CTxxxx/, EBActionManager_CT2384137.GetCTID()); var lut = EBToolbarPreferenceManager_CT2384137.GetPref(EBPreferenceConsts_CT2384137.GroupingLastServerUpdateTime, true); if (lut == null) lut = 0; strUrl += lut; //get value and set false, in order to invalidate cache maximum one time. if (EBMCIO_CT2384137.InvalidateCacheGrouping(false)) strUrl += EBMCConsts_CT2384137.InvalidateCacheParam; EBWeb_CT2384137.HTTPServerRequest(strUrl, null, false, oCallBackFunction); }, CurrentGroupingErrorResponse: function(o) { }, CurrentGroupInfoResponse: function(xmlDoc) { var strNodeValue = EBXML_CT2384137.GetXmlNodeValue(xmlDoc); if (strNodeValue == "ERROR_REPLY") { EBToolbarPreferenceManager_CT2384137.SetPref(EBPreferenceConsts_CT2384137.GroupingLastErrorCode, "ERROR_REPLY", true); return false; } var lastUpdateTime = ""; var xmlCommunities = null; //update last grouping response time EBToolbarPreferenceManager_CT2384137.SetPref(EBPreferenceConsts_CT2384137.GroupingLastCheckResponse, true, true); //clear last error code EBToolbarPreferenceManager_CT2384137.SetPref(EBPreferenceConsts_CT2384137.GroupingLastErrorCode, "", true); for (var i = 0; i < xmlDoc.childNodes.length; i++) { if (xmlDoc.childNodes[i].tagName == EBMCConsts_CT2384137.xmlTags.LastUpdateTime) { lastUpdateTime = EBXML_CT2384137.GetXmlNodeValue(xmlDoc.childNodes[i]); if (lastUpdateTime == EBMCConsts_CT2384137.GroupNotModified) { return; } } else if (xmlDoc.childNodes[i].tagName == EBMCConsts_CT2384137.xmlTags.Communities) { xmlCommunities = xmlDoc.childNodes[i]; } } EBToolbarPreferenceManager_CT2384137.SetPref(EBPreferenceConsts_CT2384137.GroupingLastServerUpdateTime, lastUpdateTime, true); if (xmlCommunities.childNodes.length == 0) { return false; } var strFullPath = ''; //EBMCConsts_CT2384137.FolderName + EBDirIO_CT2384137.sep + EBMCConsts_CT2384137.GroupFileName; var oGrouping = new EBMCCommunityList_CT2384137(xmlCommunities, strFullPath); EBMCManager_CT2384137.BroadcastCurrentGrouping(oGrouping); }, //**************************************************************************** // Download and Excluded Domains //**************************************************************************** GetDownloadDomainsCheckInterval: function() { var iInterval = EBToolbarPreferenceManager_CT2384137.GetPref(EBPreferenceConsts_CT2384137.DownloadDomainsCheckInterval); if (!iInterval) iInterval = EBMCConsts_CT2384137.DownloadDomainsServerCheckInterval; return iInterval; }, IsRequestDownloadDomains: function() { var now = Date(); var lastCheckTime = EBToolbarPreferenceManager_CT2384137.GetPref(EBPreferenceConsts_CT2384137.DownloadDomainsListLastCheckTime); var lastServerUpdateTime = EBToolbarPreferenceManager_CT2384137.GetPref(EBPreferenceConsts_CT2384137.DownloadDomainsListLastServerUpdateTime); var milliDif = Date.parse(now) - Date.parse(lastCheckTime); //if never checked if (!lastCheckTime) return true; //if no server last update timestamp present, but checked before (in case of an error) //check only if error interval is passed if (!lastServerUpdateTime && milliDif >= EBMCConsts_CT2384137.DownloadDomainsErrorServerCheckInterval * 60 * 60 * 1000) return true; //normal interval passed if (milliDif >= this.GetDownloadDomainsCheckInterval() * 60 * 60 * 1000) return true; //all ok, no need to check. return false; }, //Download Domains request (if needed) InitMC: function() { //no need to check if (!this.IsRequestDownloadDomains()) return; //get last server update time var strLUT = EBToolbarPreferenceManager_CT2384137.GetPref(EBPreferenceConsts_CT2384137.DownloadDomainsListLastServerUpdateTime); if (!strLUT) strLUT = 0; //set last request time EBToolbarPreferenceManager_CT2384137.SetPref(EBPreferenceConsts_CT2384137.DownloadDomainsListLastCheckTime, Date()); //build the request url var strUrl = this.getGroupingServiceUrl() + EBMCConsts_CT2384137.DownloadDomainsServerUrl; //response function var oCallBackFunction = function(strXML, o) { strXML = EBXML_CT2384137.LegalizeEBXML(strXML); var xmlDomains = EBXML_CT2384137.GetXmlDocument(strXML); if (!xmlDomains) return false; EBMCServerComm_CT2384137.DownloadDomainsResponse(xmlDomains.documentElement); }; //Execute call EBWeb_CT2384137.HTTPServerRequest(strUrl, null, false, oCallBackFunction); }, DownloadDomainsResponse: function(xmlRoot) { var xmlDomains = null; var xmlExcludedDomains = null; var xmlLastUpdateTime = null; var xmlInterval = null; var xmlFlags = null; var xmlNode = null; var xmlTags = EBMCConsts_CT2384137.xmlTags; //Extract Domains and LastUpdateTime nodes for (var i = 0; i < xmlRoot.childNodes.length; i++) { xmlNode = xmlRoot.childNodes[i]; if (xmlNode.tagName == xmlTags.DownloadDomains) xmlDomains = xmlNode; else if (xmlNode.tagName == xmlTags.ExcludedDomains) xmlExcludedDomains = xmlNode; else if (xmlNode.tagName == xmlTags.LastUpdateTime) xmlLastUpdateTime = xmlNode; else if (xmlNode.tagName == xmlTags.Interval) xmlInterval = xmlNode; else if (xmlNode.tagName == xmlTags.Flags) xmlFlags = xmlNode; } try { //update check interval, set new interval into preferences var iInterval = EBXML_CT2384137.GetXmlNodeValue(xmlInterval); if (iInterval) EBToolbarPreferenceManager_CT2384137.SetPref(EBPreferenceConsts_CT2384137.DownloadDomainsCheckInterval, iInterval); //check if NOT_MODIFIED response var strFlags = EBXML_CT2384137.GetXmlNodeValue(xmlFlags); if (strFlags == EBMCConsts_CT2384137.GroupNotModified) return; //Save the last update time var strServerLastUpdateTime = EBXML_CT2384137.GetXmlNodeValue(xmlLastUpdateTime); EBToolbarPreferenceManager_CT2384137.SetPref(EBPreferenceConsts_CT2384137.DownloadDomainsListLastServerUpdateTime, strServerLastUpdateTime); //Save the domains in file EBMCIO_CT2384137.SaveDownloadDomainsToFile(xmlDomains); EBMCIO_CT2384137.SaveExcludedDomainsToFile(xmlExcludedDomains); var arrDownloadDomains = EBMCIO_CT2384137.GetDomainArrayFromXml(xmlDomains); var arrExcludedDomains = EBMCIO_CT2384137.GetDomainArrayFromXml(xmlExcludedDomains); //Update the list via manager EBMCManager_CT2384137.UpdateDetectDomainsList(arrDownloadDomains, arrExcludedDomains); } catch (ex) { } }, getGroupingServiceUrl: function() { var strUrl = EBToolbarPreferenceManager_CT2384137.GetPref(EBPreferenceConsts_CT2384137.GroupingServiceUrl); if (!strUrl) strUrl = EBMCConsts_CT2384137.BaseGroupingServiceUrl; return strUrl; } }; var EBMyStuffErrorDialog_CT2384137 = { dialogPath: "chrome://iobitcom/content/myStuffError.xul", dialogName: "EBMyStuffErrorDialogName_CT2384137", dialogId: "ebMyStuffError", divMsg: null, oWindow: null, btnOk: null, btnUpgrade: null, openDialog: function(flags) { window.openDialog(this.dialogPath, this.dialogName, 'chrome,modal,centerscreen,resizable=no', flags); }, onload: function(event) { this.divMsg = document.getElementById("divMsg"); this.btnOk = document.getElementById(this.dialogId).getButton("accept"); this.btnUpgrade = document.getElementById("btnUpgrade"); this.oWindow = EBGlobalManager_CT2384137.GetMostRecentBrowserWindow(); var flags = window.arguments[0]; this.applyLanguagePack(); this.initUI(flags); }, initUI: function(flags) { var responsFlags = this.oWindow.oToolbar_CT2384137.toolbarDataParsing.myStuff.responseFlags; var tooltipHtmlText = ""; var tooltipTitle = ""; switch (flags) { case responsFlags.DELETED: case responsFlags.COMPONENT_NOT_FOUND: tooltipHtmlText = this.oWindow.oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_MYSTUFF_ERROR_TOOLTIP_COMP_NOT_EXISTS'); tooltipTitle = this.oWindow.oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_MYSTUFF_ERROR_TOOLTIP_TITLE_UNVAVAILABLE'); break; case responsFlags.CONNECTION_ERROR: tooltipHtmlText = this.oWindow.oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_MYSTUFF_ERROR_TOOLTIP_TEMP_UNAVAILABLE'); tooltipTitle = this.oWindow.oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_MYSTUFF_ERROR_TOOLTIP_TITLE_TEMP_UNAVAILABLE'); break; case responsFlags.ERROR: tooltipHtmlText = this.oWindow.oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_MYSTUFF_ERROR_TOOLTIP_TECH_ERROR'); var contactCustomerSupportCaption = this.oWindow.oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_MYSTUFF_ERROR_TOOLTIP_CUSTOMER_SUPPORT_LINK_TEXT'); var customerSupportLink = "<html:a onclick=\"EBMyStuffErrorDialog_CT2384137.onclickCustomerSupport(event)\" href=\"#\" class=\"EBMyStuffTooltipA_CT2384137\"> " + contactCustomerSupportCaption + "</html:a>"; tooltipHtmlText += customerSupportLink; tooltipTitle = this.oWindow.oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_MYSTUFF_ERROR_TOOLTIP_TITLE_UNVAVAILABLE'); break; case responsFlags.SERVER_UNREACHABLE: tooltipHtmlText = this.oWindow.oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_MYSTUFF_ERROR_TOOLTIP_TEMP_UNAVAILABLE'); tooltipTitle = this.oWindow.oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_MYSTUFF_ERROR_TOOLTIP_TITLE_TEMP_UNAVAILABLE'); break; case responsFlags.INVALID_XML: tooltipHtmlText = this.oWindow.oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_MYSTUFF_ERROR_TOOLTIP_TEMP_UNAVAILABLE'); tooltipTitle = this.oWindow.oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_MYSTUFF_ERROR_TOOLTIP_TITLE_TEMP_UNAVAILABLE'); break; case responsFlags.UNSUPPORTED: //TODO: check if this toolbar is up to date. tooltipTitle = this.oWindow.oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_MYSTUFF_ERROR_TOOLTIP_TITLE_UPGRADE'); if (this.oWindow.oToolbarManager_CT2384137.isLatestVersion()) tooltipHtmlText = this.oWindow.oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_MYSTUFF_ERROR_TOOLTIP_COMP_NOT_EXISTS'); else { tooltipHtmlText = this.oWindow.oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_MYSTUFF_ERROR_TOOLTIP_UPGRADE_TOOLBAR_FULL_MSG'); this.btnUpgrade.style.display = ""; this.btnOk.label = this.oWindow.oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_GLOBAL_CANCEL'); } break; case responsFlags.BAD_INPUT: tooltipHtmlText = this.oWindow.oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_MYSTUFF_ERROR_TOOLTIP_COMP_NOT_EXISTS'); tooltipTitle = this.oWindow.oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_MYSTUFF_ERROR_TOOLTIP_TITLE_UNVAVAILABLE'); break; default: break; } this.divMsg.innerHTML = tooltipHtmlText; window.document.title = tooltipTitle; }, onclickCustomerSupport: function(event) { var strUrl = this.oWindow.EBActionManager_CT2384137.GetWebServerURL("support"); this.oWindow.EBWeb_CT2384137.LoadURLInNewTab(strUrl); window.close(); }, onclickUpgrade: function(event) { var strUrl = this.oWindow.EBActionManager_CT2384137.GetWebServerURL("upgrade"); this.oWindow.EBWeb_CT2384137.LoadURLInNewTab(strUrl); window.close(); }, applyLanguagePack: function() { var dialogsDirection = this.oWindow.EBGlobalManager_CT2384137.IsReverseDialogs(); if (dialogsDirection) EBUILogic_Dialog_CT2384137.setWindowDirection(dialogsDirection, this.dialogId); this.btnOk.label = this.oWindow.oToolbarManager_CT2384137.getLPKey("CTLP_STR_ID_GLOBAL_OK"); this.btnUpgrade.label = this.oWindow.oToolbarManager_CT2384137.getLPKey("CTLP_STR_ID_MYSTUFF_ERROR_TOOLTIP_UPGRADE_TOOLBAR_LINK_TEXT"); } }; function EBMyStuffManager_CT2384137() { var SEARCH_TERM_ALIAS = "SEARCH_TERM"; var tooltip = null; var tooltipManager = null; var BLINK_TIMES = 5; this.onclickAdd = function(event) { var strUrl = oToolbarManager_CT2384137.getMyStuffSearchUrl(); strUrl = EBActionManager_CT2384137.ConvertAliasesUrl(strUrl); strUrl = strUrl.replace(SEARCH_TERM_ALIAS, ""); EBWeb_CT2384137.LoadURL(strUrl); //usage EBUsageMyStuff_CT2384137.AddStuffClick(); }; this.onclickOptions = function(event) { EBToolbarOptionsStaticDialogManager_CT2384137.OpenDialog(window, false, true); //usage EBUsageMyStuff_CT2384137.OptionsClick(); }; this.onTooltipHidden = function(event) { }; this.getBlinkFunction = function(xulToolbarItem) { var blinkBGColor = oToolbarSkin_CT2384137.myStuffBlinkColor; var blinkFunction = function() { this.blinkStyle = "background-color: " + blinkBGColor; this.xulToolbarItem = xulToolbarItem; this.blinkCount = BLINK_TIMES; this.start = function() { this.xulToolbarItem.setAttribute("style", this.blinkStyle); setTimeout(this.end, 500); }; this.end = function() { this.blinkCount--; this.xulToolbarItem.setAttribute("style", ""); if (this.blinkCount > 0) setTimeout(this.start, 500); }; this.start(); }; return blinkFunction; }; this.onApiAddStuffResponse = function(flags, isSuccess) { if (!isSuccess) EBMyStuffErrorDialog_CT2384137.openDialog(flags); else { //set the onload event to this component, so when it's loaded, the visibility will be recalculated EBChevronStaticManager_CT2384137.setFirstMyStuffComponentVisible(); var myStuffComponents = EBToolbarManager_CT2384137.dataToolbarObject.MyStuffComponents; var oComponent = myStuffComponents.GetByIndex(1); if (!oComponent) return; var xulToolbarItem = oComponent.GetToolbarItemContainer(); var blinkCallback = this.getBlinkFunction(xulToolbarItem); var onImageLoaded = function() { EBChevronStaticManager_CT2384137.setFirstMyStuffComponentVisible(); blinkCallback(); }; oComponent.Onload(onImageLoaded); } }; }; function EBBaseSectionManager_CT2384137() { this.xulElements = new Object(); this.xulElements.showHideButton = null; this.xulElements.deleteButton = null; this.xulElements.btnUp = null; this.xulElements.btnDown = null; this.xulElements.listComponents = null; this.xulElements.listcolsComponents = null; var upArrow = "chrome://global/skin/arrow/arrow-up.gif"; var upArrowDis = "chrome://global/skin/arrow/arrow-up-dis.gif"; var downArrow = "chrome://global/skin/arrow/arrow-dn.gif"; var downArrowDis = "chrome://global/skin/arrow/arrow-dn-dis.gif"; this.oWindow = EBGlobalManager_CT2384137.GetMostRecentBrowserWindow(); this.onload = function(event) { }; this.onunload = function(event) { }; this.ondialogAccept = function(event) { }; this.applyLanguagePack = function() { }; this.changed = false; //common list functions this.btnCaptionHide = ""; this.btnCaptionShow = ""; this.onClickCheckBox = function(e) { //implement in inherited class }; this.onDelete = function(e) { var iSelectedIndex = this.xulElements.listComponents.selectedIndex; //select other node var offset = (this.xulElements.listComponents.getRowCount() == iSelectedIndex + 1) ? -1 : 1; if (this.xulElements.listComponents.getRowCount() > 1) { this.xulElements.listComponents.moveByOffset(offset, true, false); this.xulElements.listComponents.ensureElementIsVisible(this.xulElements.listComponents.selectedItem); this.listbox_onSelect(); } else this.disableAllButtons(); this.xulElements.listComponents.removeItemAt(iSelectedIndex); }; this.getComponentXulItem = function(item, isDeletable) { var strDisplayText = item.DisplayText; var strDisplayIcon = item.DisplayIcon; var strCompID = item.UniqueCompID; var objListItem = document.createElement("listitem"); var objCheckBox = document.createElement("listcell"); var objTextImage = document.createElement("listcell"); objListItem.setAttribute('allowevents', 'true'); objListItem.setAttribute('style', 'height:20px'); objCheckBox.setAttribute('isDeletable', isDeletable); objCheckBox.setAttribute('type', 'checkbox'); objCheckBox.onclick = this.onClickCheckBox; objCheckBox.setAttribute('checked', item.isShow().toString()); objCheckBox.setAttribute('id', strCompID); objTextImage.setAttribute('image', strDisplayIcon); objTextImage.setAttribute('label', strDisplayText); objTextImage.setAttribute('class', 'listcell-iconic'); objListItem.appendChild(objCheckBox); objListItem.appendChild(objTextImage); return objListItem; }; this.addComponents = function(itemsHash) { if (!itemsHash || itemsHash.Count() == 0) { this.disableAllButtons(); return; } var item = null; var xulElement = null var isDeletable = false; for (var i = 0; i < itemsHash.Count(); i++) { item = itemsHash.GetByIndex(i); if (item.Permission == this.oWindow.oToolbar_CT2384137.toolbarDataParsing.Editable.FULL) { //add to user components positions array if (item.CompType == this.oWindow.oToolbar_CT2384137.toolbarDataParsing.ComponentType.UserAdded || item.CompType == this.oWindow.oToolbar_CT2384137.toolbarDataParsing.ComponentType.MyStuff) isDeletable = true; else isDeletable = false; xulElement = this.getComponentXulItem(item, isDeletable); this.xulElements.listComponents.appendChild(xulElement); } } }; this.setShowHideBtnLabel = function(checked) { this.xulElements.showHideButton.label = (checked) ? this.btnCaptionHide : this.btnCaptionShow; }; this.enableDisableDeleteBtn = function(isDeletable) { if(!this.xulElements.deleteButton) return; this.xulElements.deleteButton.disabled = !isDeletable; }; this.enableDisableMoveBtns = function() { var manager = this; var upBtn = function(isEnabled) { var image = (isEnabled) ? upArrow : upArrowDis; manager.xulElements.btnUp.disabled = !isEnabled; manager.xulElements.btnUp.image = image; }; var dnBtn = function(isEnabled) { var image = (isEnabled) ? downArrow : downArrowDis; manager.xulElements.btnDown.disabled = !isEnabled; manager.xulElements.btnDown.image = image; }; //no moving buttons if (!this.xulElements.btnDown || !this.xulElements.btnUp) return; if (!this.xulElements.listComponents.selectedItem) { upBtn(false); dnBtn(false); return; } var checkbox = this.xulElements.listComponents.selectedItem.firstChild; var isDeletable = parseBool(checkbox.getAttribute("isDeletable")); //item is not deletable if (!isDeletable) { upBtn(false); dnBtn(false); return; } var iSelectedIndex = this.xulElements.listComponents.selectedIndex; //check previus item if (iSelectedIndex == 0) upBtn(false); else { if (!parseBool(this.xulElements.listComponents.getItemAtIndex(iSelectedIndex - 1).firstChild.getAttribute("isDeletable"))) upBtn(false); else upBtn(true); } //check next item if (iSelectedIndex + 1 == this.xulElements.listComponents.getRowCount()) dnBtn(false); else { if (!parseBool(this.xulElements.listComponents.getItemAtIndex(iSelectedIndex + 1).firstChild.getAttribute("isDeletable"))) dnBtn(false); else dnBtn(true); } }; this.onMoveUp = function(e) { var oSelected = this.xulElements.listComponents.selectedItem; var oUpper = this.xulElements.listComponents.getItemAtIndex(this.xulElements.listComponents.selectedIndex-1); this.xulElements.listComponents.insertBefore(oSelected, oUpper); this.xulElements.listComponents.selectItem(oSelected); this.enableDisableMoveBtns(); }; this.onMoveDown = function(e) { var oSelected = this.xulElements.listComponents.selectedItem; var oLower = this.xulElements.listComponents.getItemAtIndex(this.xulElements.listComponents.selectedIndex + 1); this.xulElements.listComponents.insertBefore(oLower, oSelected); this.xulElements.listComponents.selectItem(oSelected); this.enableDisableMoveBtns(); }; this.listbox_onSelect = function(e) { if (!this.xulElements.listComponents.selectedItem) return; var checkbox = this.xulElements.listComponents.selectedItem.firstChild; var isChecked = parseBool(checkbox.getAttribute("checked")); this.setShowHideBtnLabel(isChecked); var isDeletable = parseBool(checkbox.getAttribute("isDeletable")); this.enableDisableDeleteBtn(isDeletable); this.enableDisableMoveBtns(isDeletable); }; this.listbox_onKeyPress = function(e) { //delete if (e.keyCode == 46 && !this.xulElements.deleteButton.disabled) this.onDelete(); //space else if (e.charCode == e.DOM_VK_SPACE) { var event = new Object(); event.target = this.xulElements.listComponents.selectedItem.firstChild; this.onClickCheckBox(event); } }; this.disableAllButtons = function(e) { this.xulElements.deleteButton.disabled = true; this.xulElements.showHideButton.disabled = true; this.enableDisableMoveBtns(); }; this.onShowHide = function(e) { var selectedItem = this.xulElements.listComponents.selectedItem; var isChecked = parseBool(selectedItem.firstChild.getAttribute("checked")); selectedItem.firstChild.setAttribute("checked", (!isChecked).toString()); this.setShowHideBtnLabel(!isChecked); }; }; function EBToolbarOptions_MyStuffComponents_CT2384137(isFromMyStuff) { this.oWindow = EBGlobalManager_CT2384137.GetMostRecentBrowserWindow(); this.xulElements = new Object(); this.xulElements.tabMyStuffComponents = document.getElementById("tabMyStuffComponents"); this.xulElements.tpMyStuffComponents = document.getElementById("tpMyStuffComponents"); this.xulElements.lblMyStuffComponents = document.getElementById("lblMyStuffComponents"); this.xulElements.dscMyStuffComponents = document.getElementById("dscMyStuffComponents"); this.xulElements.listComponents = document.getElementById("listMyStuffComponents"); this.xulElements.listcolsComponents = document.getElementById("listcolsMyStuffComponents"); this.xulElements.showHideButton = document.getElementById("showHideButtonMyStuff"); this.xulElements.deleteButton = document.getElementById("deleteButtonMyStuff"); this.xulElements.btnUp = document.getElementById("btnUpMyStuff"); this.xulElements.btnDown = document.getElementById("btnDownMyStuff"); this.myStuffChanged = false; var disabled = false; var manager = this; this.onClickCheckBox = function(e) { var isChecked = parseBool(e.target.getAttribute("checked")); manager.setShowHideBtnLabel(!isChecked); e.target.setAttribute("checked", (!isChecked).toString()); }; this.onload = function() { var myStuffItemsHash = this.oWindow.oToolbarManager_CT2384137.getToolbarData().myStuffItemsHash; if (!this.oWindow.oToolbarManager_CT2384137.myStuffEnabled()) { disabled = true; this.xulElements.tpMyStuffComponents.style.visibility = "hidden"; this.xulElements.tabMyStuffComponents.style.display = "none"; return; } this.addComponents(myStuffItemsHash); if (isFromMyStuff) this.xulElements.tabMyStuffComponents.click(); if (!myStuffItemsHash || myStuffItemsHash.Count() <= 1) this.disableAllButtons(); }; this.onunload = function() { }; this.isMyStuffPositionChanged = function(positionsHash) { var myStuffItemsHash = this.oWindow.oToolbarManager_CT2384137.getToolbarData().myStuffItemsHash; if (positionsHash.Count() != myStuffItemsHash.Count()) return true; for (var i = 0; i < positionsHash.Count(); i++) { if (positionsHash.GetByIndex(i) != myStuffItemsHash.GetByIndex(i).UniqueCompID) return true; } return false; }; this.acceptUserComponents = function() { var checkBox = null; var item = null; var positionsHash = new EBArrayHashObject_CT2384137(); for (var i = 0; i < this.xulElements.listComponents.getRowCount(); i++) { checkBox = this.xulElements.listComponents.getItemAtIndex(i).firstChild; item = this.oWindow.oToolbarManager_CT2384137.getToolbarData().myStuffItemsHash.GetByID(checkBox.id); positionsHash.Add(checkBox.id, checkBox.id); if (item.isShow() != parseBool(checkBox.getAttribute("checked"))) { this.myStuffChanged = true; item.setShowState(!item.isShow()); } } if (this.isMyStuffPositionChanged(positionsHash)) { this.oWindow.oToolbarManager_CT2384137.updateMyStuffComponents(positionsHash); this.myStuffChanged = true; } }; this.ondialogAccept = function() { if (!disabled) this.acceptUserComponents(); }; this.applyLanguagePack = function() { this.xulElements.tabMyStuffComponents.setAttribute('label', this.oWindow.oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_OPTIONS_DLG_MY_STUFF_TAB_TITLE')); this.xulElements.lblMyStuffComponents.value = this.oWindow.oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_OPTIONS_DLG_MY_STUFF_TAB_TITLE'); this.xulElements.dscMyStuffComponents.innerHTML = this.oWindow.oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_OPTIONS_DLG_MY_STUFF_TAB_DESCRIPTION').replace(/\\n/g, "<html:br />"); this.xulElements.deleteButton.setAttribute('label', this.oWindow.oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_OPTIONS_DLG_DELETE_COMPONENT_BUTTON')); this.btnCaptionHide = this.oWindow.oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_OPTIONS_DLG_HIDE_COMPONENT_BUTTON'); this.btnCaptionShow = this.oWindow.oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_OPTIONS_DLG_SHOW_COMPONENT_BUTTON'); this.xulElements.listComponents.selectedIndex = 0; }; }; EBToolbarOptions_MyStuffComponents_CT2384137.prototype = new EBBaseSectionManager_CT2384137(); var EBToolbarOptionsPreferenceConsts_CT2384137 = { PrefPrefix: 'components' } var EBToolbarOptionsDialogConsts_CT2384137 = { FileName: 'options.xul', DialogName: 'optionsDialogName_CT2384137', DialogType: 'EBOptionsDialog_CT2384137', EditableCheckBoxPrefixID: 'checkBoxEditableComponent', EditableCheckBoxAttributeCompID: 'EB_EDITABLE_CHECK_BOX_COMP_ID', PersonalComponentsTabIndex: 0, PredefinedComponentsTabIndex: 1, ThirdPartyComponentsTabIndex: 2, AreYouSureConfirm: 'Are you sure?' } function EBToolbarOptionsDialogManager_CT2384137() { var dialogId = "ebOptionsDialog"; this.xulElements = new Object(); this.xulElements.okBtn = document.getElementById(dialogId).getButton("accept"); this.xulElements.cancelBtn = document.getElementById(dialogId).getButton("cancel"); var isFromEmailNotifier = (window.arguments) ? window.arguments[0] : false; var isFromMyStuff = (window.arguments) ? window.arguments[1] : false; this.oWindow = EBGlobalManager_CT2384137.GetMostRecentBrowserWindow(); this.managers = new Array(); this.personalComponentsDialogManager = new EBToolbarOptions_PersonalComponents_CT2384137(isFromEmailNotifier); this.managers.push(this.personalComponentsDialogManager); this.settingsDialogManager = new EBToolbarOptions_Settings_CT2384137(); this.managers.push(this.settingsDialogManager); this.predefinedComponentsDialogManager = new EBToolbarOptions_PredefinedComponents_CT2384137(); this.managers.push(this.predefinedComponentsDialogManager); this.MyStuffComponentsDialogManager = new EBToolbarOptions_MyStuffComponents_CT2384137(isFromMyStuff); this.managers.push(this.MyStuffComponentsDialogManager); this.thirdPartyComponentsDialogManager = new EBToolbarOptions_ThirdPartyComponents_CT2384137(); this.managers.push(this.thirdPartyComponentsDialogManager); this.onload = function(event) { for (var i = 0; i < this.managers.length; this.managers[i].onload(), i++); this.applyLanguagePack(); }; this.onunload = function(event) { for (var i = 0; i < this.managers.length; this.managers[i].onunload(), i++); }; this.broadcastChange = function(isMyStuff) { var data = (isMyStuff) ? this.oWindow.oToolbar_CT2384137.toolbarDataParsing.observerData.myStuff : this.oWindow.oToolbar_CT2384137.toolbarDataParsing.observerData.settings; this.oWindow.EBToolbarManager_CT2384137.broadcastRebuild(data); }; this.ondialogAccept = function() { var i; for (i = 0; i < this.managers.length; this.managers[i].ondialogAccept(), i++); var isChanged = false; for (i = 0; i < this.managers.length; isChanged |= this.managers[i].changed, i++); if (isChanged) this.broadcastChange(false); if (this.MyStuffComponentsDialogManager.myStuffChanged) this.broadcastChange(true); }; this.applyLanguagePack = function() { var dialogsDirection = this.oWindow.EBGlobalManager_CT2384137.IsReverseDialogs(); if (dialogsDirection) EBUILogic_Dialog_CT2384137.setWindowDirection(dialogsDirection, "ebOptionsDialog"); this.xulElements.okBtn.label = this.oWindow.oToolbarManager_CT2384137.getLPKey("CTLP_STR_ID_GLOBAL_OK"); this.xulElements.cancelBtn.label = this.oWindow.oToolbarManager_CT2384137.getLPKey("CTLP_STR_ID_GLOBAL_CANCEL"); for (var i = 0; i < this.managers.length; this.managers[i].applyLanguagePack(), i++); }; }; var EBToolbarOptionsStaticDialogManager_CT2384137 = { OpenDialog: function(objParentWindow, isFromEMailNotifier, isFromMyStuff) { //check if the dialog exsits to focus on it var oOptionsDialog = this.GetDialog(); if (oOptionsDialog) oOptionsDialog.focus(); else { var strChromePath = EBGlobalConsts_CT2384137.ChromeContentPath + EBToolbarOptionsDialogConsts_CT2384137.FileName; objParentWindow.openDialog(strChromePath, EBToolbarOptionsDialogConsts_CT2384137.DialogName, 'modal,centerscreen,chrome,resizable=no', isFromEMailNotifier, isFromMyStuff); } }, GetDialog: function() { var strOptionsDialogType = EBToolbarOptionsDialogConsts_CT2384137.DialogType; var strOptionsDialogName = EBToolbarOptionsDialogConsts_CT2384137.DialogName; var oOptionsDialog = EBGlobalManager_CT2384137.GetXULWindowByTypeAndName(strOptionsDialogType, strOptionsDialogName); return oOptionsDialog; } }; /// <reference path="BaseSectionManager.js" /> function EBToolbarOptions_PersonalComponents_CT2384137(isFromEmailNotifier) { this.oWindow = EBGlobalManager_CT2384137.GetMostRecentBrowserWindow(); this.xulElements = new Object(); this.xulElements.tabPersonalComponents = document.getElementById("tabPersonalComponents"); this.xulElements.tpPersonalComponents = document.getElementById("tpPersonalComponents"); this.xulElements.lblPersonalComponents = document.getElementById("lblPersonalComponents"); this.xulElements.dscPersonalComponents = document.getElementById("dscPersonalComponents"); this.xulElements.rowEmail = document.getElementById("rowEmail"); this.xulElements.checkEMailNotifier = document.getElementById("checkEMailNotifier"); this.xulElements.dscEmailNotifier = document.getElementById("dscEmailNotifier"); this.xulElements.btnEMailNotifier = document.getElementById("btnEMailNotifier"); this.xulElements.rowPrivacy = document.getElementById("rowPrivacy"); this.xulElements.checkPrivacy = document.getElementById("checkPrivacy"); this.xulElements.dscPrivacy = document.getElementById("dscPrivacy"); this.xulElements.rowWeather = document.getElementById("rowWeather"); this.xulElements.checkWeather = document.getElementById("checkWeather"); this.xulElements.dscWeather = document.getElementById("dscWeather"); this.xulElements.rowRadio = document.getElementById("rowRadio"); this.xulElements.checkRadio = document.getElementById("checkRadio"); this.xulElements.dscRadio = document.getElementById("dscRadio"); this.xulElements.rowFacebook = document.getElementById("rowFacebook"); this.xulElements.checkFacebook = document.getElementById("checkFacebook"); this.xulElements.dscFacebook = document.getElementById("dscFacebook"); this.xulElements.btnFacebook = document.getElementById("btnFacebook"); this.xulElements.rowAlertSettings = document.getElementById("rowAlertSettings"); this.xulElements.btnAlertSettings = document.getElementById("btnAlertSettings"); this.xulElements.dscAlertSettings = document.getElementById("dscAlertSettings"); var oEMailNotifierItem = this.oWindow.oToolbarManager_CT2384137.getToolbarData().getEmailNotifierItem(); var oPrivacyItem = this.oWindow.oToolbarManager_CT2384137.getToolbarData().getPrivacyItem(); var oWeatherItem = this.oWindow.oToolbarManager_CT2384137.getToolbarData().getWeatherItem(); var oRadioItem = this.oWindow.oToolbarManager_CT2384137.getToolbarData().getRadioItem(); var oFacebookItem = this.oWindow.oToolbarManager_CT2384137.getToolbarData().getFacebookItem(); var that = this; var emailNotifierCheckedEvent = function() { that.xulElements.btnEMailNotifier.setAttribute("disabled", !that.xulElements.checkEMailNotifier.checked); }; var facebookCheckedEvent = function() { that.xulElements.btnFacebook.disabled = !that.xulElements.checkFacebook.checked; }; this.onload = function() { if (oEMailNotifierItem && oEMailNotifierItem.isAvailable()) { this.xulElements.checkEMailNotifier.checked = oEMailNotifierItem.isShow(); this.xulElements.checkEMailNotifier.setAttribute("src", oEMailNotifierItem.DisplayIcon); this.xulElements.btnEMailNotifier.disabled = !oEMailNotifierItem.isShow(); this.xulElements.checkEMailNotifier.addEventListener("click", emailNotifierCheckedEvent, false); } else this.xulElements.rowEmail.style.display = "none"; if (oPrivacyItem && oPrivacyItem.isAvailable()) { this.xulElements.checkPrivacy.checked = oPrivacyItem.isShow(); this.xulElements.checkPrivacy.setAttribute("src", oPrivacyItem.DisplayIcon); } else this.xulElements.rowPrivacy.style.display = "none"; if (oWeatherItem && oWeatherItem.isAvailable()) { this.xulElements.checkWeather.checked = oWeatherItem.isShow(); this.xulElements.checkWeather.setAttribute("src", oWeatherItem.DisplayIcon); } else this.xulElements.rowWeather.style.display = "none"; if (oRadioItem && oRadioItem.isAvailable() && EBGlobalManager_CT2384137.IsWindowsPlatform()) { this.xulElements.checkRadio.checked = oRadioItem.isShow(); this.xulElements.checkRadio.setAttribute("src", oRadioItem.DisplayIcon); } else this.xulElements.rowRadio.style.display = "none"; if (oFacebookItem && oFacebookItem.isAvailable()) { this.xulElements.checkFacebook.checked = oFacebookItem.isShow(); this.xulElements.checkFacebook.setAttribute("src", oFacebookItem.DisplayIcon); this.xulElements.btnFacebook.disabled = !oFacebookItem.isShow(); this.xulElements.checkFacebook.addEventListener("click", facebookCheckedEvent, false); } else this.xulElements.rowFacebook.style.display = "none"; }; this.onunload = function() { this.xulElements.checkEMailNotifier.removeEventListener("click", emailNotifierCheckedEvent, false); }; this.ondialogAccept = function() { if (oEMailNotifierItem && oEMailNotifierItem.isAvailable()) { if (oEMailNotifierItem.isShow() != this.xulElements.checkEMailNotifier.checked) { oEMailNotifierItem.setShowState(this.xulElements.checkEMailNotifier.checked); this.changed = true; } } if (oPrivacyItem && oPrivacyItem.isAvailable()) { if (oPrivacyItem.isShow() != this.xulElements.checkPrivacy.checked) { oPrivacyItem.setShowState(this.xulElements.checkPrivacy.checked); this.changed = true; } } if (oWeatherItem && oWeatherItem.isAvailable()) { if (oWeatherItem.isShow() != this.xulElements.checkWeather.checked) { oWeatherItem.setShowState(this.xulElements.checkWeather.checked); this.changed = true; } } if (oRadioItem && oRadioItem.isAvailable() && EBGlobalManager_CT2384137.IsWindowsPlatform()) { if (oRadioItem.isShow() != this.xulElements.checkRadio.checked) { oRadioItem.setShowState(this.xulElements.checkRadio.checked); this.changed = true; } } if (oFacebookItem && oFacebookItem.isAvailable()) { if (oFacebookItem.isShow() != this.xulElements.checkFacebook.checked) { oFacebookItem.setShowState(this.xulElements.checkFacebook.checked); this.changed = true; } } }; this.applyLanguagePack = function() { this.xulElements.tabPersonalComponents.setAttribute('label', this.oWindow.oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_OPTIONS_DLG_PERSONAL_COMPONENTS_TAB_TITLE')); this.xulElements.lblPersonalComponents.value = this.oWindow.oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_OPTIONS_DLG_PERSONAL_COMPONENTS_TAB_TITLE'); this.xulElements.dscPersonalComponents.innerHTML = this.oWindow.oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_OPTIONS_DLG_PERSONAL_COMPONENTS_TAB_DESCRIPTION').replace(/\n/g, "<html:br />"); this.xulElements.checkEMailNotifier.setAttribute('label', this.oWindow.oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_OPTIONS_DLG_EMAIL_NOTIFIER_COMP_TITLE')); this.xulElements.btnEMailNotifier.setAttribute('label', this.oWindow.oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_OPTIONS_DLG_EMAIL_NOTIFIER_SETTINGS_BUTTON')); this.xulElements.dscEmailNotifier.innerHTML = this.oWindow.oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_OPTIONS_DLG_EMAIL_NOTIFIER_COMP_DESCRIPTION'); this.xulElements.dscPrivacy.innerHTML = this.oWindow.oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_OPTIONS_DLG_PRIVACY_COMP_DESCRIPTION'); this.xulElements.dscWeather.innerHTML = this.oWindow.oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_OPTIONS_DLG_WEATHER_COMP_DESCRIPTION'); this.xulElements.dscRadio.innerHTML = this.oWindow.oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_OPTIONS_DLG_RADIO_COMP_DESCRIPTION'); this.xulElements.checkPrivacy.setAttribute('label', this.oWindow.oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_OPTIONS_DLG_PRIVACY_COMP_TITLE')); this.xulElements.checkWeather.setAttribute('label', this.oWindow.oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_OPTIONS_DLG_WEATHER_COMP_TITLE')); this.xulElements.checkRadio.setAttribute('label', this.oWindow.oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_OPTIONS_DLG_RADIO_COMP_TITLE')); this.xulElements.btnAlertSettings.setAttribute('label', this.oWindow.oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_OPTIONS_DLG_ALERT_SETTINGS_BUTTON')); this.xulElements.dscAlertSettings.innerHTML = this.oWindow.oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_OPTIONS_DLG_ALERT_SETTINGS_DESCRIPTION'); this.xulElements.checkFacebook.setAttribute('label', this.oWindow.oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_OPTIONS_DLG_FACEBOOK_COMP_TITLE')); this.xulElements.dscFacebook.innerHTML = this.oWindow.oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_OPTIONS_DLG_FACEBOOK_COMP_DESCRIPTION'); this.xulElements.btnFacebook.setAttribute('label', this.oWindow.oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_OPTIONS_DLG_FACEBOOK_SETTINGS_BUTTON')); }; this.onCommandEMailNotifier = function(event) { this.oWindow.EBEMailNotifierDialogsManager_CT2384137.OpenSettingsDialog(window, true, ""); }; this.onCommandFacebook = function(event) { //if the facebook component is not initialized, init it, because otherwise facebook manager has no data var fbManager = this.oWindow.oToolbar_CT2384137.facebook.manager; if (!this.oWindow.EBComponentsManager_CT2384137.GetFacebookComponent()) { var fbItem = this.oWindow.oToolbarManager_CT2384137.getToolbarData().getFacebookItem(); if (!fbItem) return; fbManager.register(fbItem, this.oWindow.oToolbarManager_CT2384137.getToolbarData().languagePack, this.oWindow.EBActionManager_CT2384137.GetToolbarName()); } fbManager.alertsManager.openSettingsDialog(window); }; this.onCommandAlertSettings = function(event) { this.oWindow.EBAlertManager_CT2384137.OpenSettingsDialog(window); }; }; EBToolbarOptions_PersonalComponents_CT2384137.prototype = new EBBaseSectionManager_CT2384137(); function EBToolbarOptions_PredefinedComponents_CT2384137() { this.oWindow = EBGlobalManager_CT2384137.GetMostRecentBrowserWindow(); this.xulElements = new Object(); this.xulElements.tabPredefinedComponents = document.getElementById("tabPredefinedComponents"); this.xulElements.tpPredefinedComponents = document.getElementById("tpPredefinedComponents"); this.xulElements.lblPredefinedComponents = document.getElementById("lblPredefinedComponents"); this.xulElements.dscPredefinedComponents = document.getElementById("dscPredefinedComponents"); this.xulElements.listComponents = document.getElementById("listPredefinedComponents"); this.xulElements.listcolsComponents = document.getElementById("listcolsPredefinedComponents"); this.xulElements.showHideButton = document.getElementById("showHideButton"); this.xulElements.deleteButton = document.getElementById("deleteButton"); this.xulElements.btnUp = document.getElementById("btnUp"); this.xulElements.btnDown = document.getElementById("btnDown"); var firstUserComponentIndex = 0; var manager = this; this.onClickCheckBox = function(e) { var isChecked = parseBool(e.target.getAttribute("checked")); manager.setShowHideBtnLabel(!isChecked); e.target.setAttribute("checked", (!isChecked).toString()); }; this.onload = function() { this.addComponents(this.oWindow.oToolbarManager_CT2384137.getToolbarData().publisherItemsHash); var userItemsHash = this.oWindow.oToolbarManager_CT2384137.getToolbarData().userItemsHash; if (userItemsHash && userItemsHash.Count() > 0) { firstUserComponentIndex = this.xulElements.listComponents.getRowCount(); this.addComponents(this.oWindow.oToolbarManager_CT2384137.getToolbarData().userItemsHash); } }; this.onunload = function() { }; this.isUserPositionChanged = function(arrNewPositions) { var usersHash = this.oWindow.oToolbarManager_CT2384137.getToolbarData().userItemsHash; if (arrNewPositions.length != usersHash.Count()) return true; for (var i = 0; i < arrNewPositions.length; i++) { if (arrNewPositions[i] != usersHash.GetByIndex(i).UniqueCompID) return true; } return false; }; this.acceptPredefinedComponents = function() { var endIndex = (firstUserComponentIndex) ? firstUserComponentIndex : this.xulElements.listComponents.getRowCount(); var checkBox = null; var item = null; for (var i = 0; i < endIndex; i++) { checkBox = this.xulElements.listComponents.getItemAtIndex(i).firstChild; item = this.oWindow.oToolbarManager_CT2384137.getToolbarData().publisherItemsHash.GetByID(checkBox.id); if (item.isShow() != parseBool(checkBox.getAttribute("checked"))) { this.changed = true; item.setShowState(!item.isShow()); } } }; this.acceptUserComponents = function() { var checkBox = null; var item = null; var positionArr = new Array(); for (var i = firstUserComponentIndex; i < this.xulElements.listComponents.getRowCount(); i++) { checkBox = this.xulElements.listComponents.getItemAtIndex(i).firstChild; item = this.oWindow.oToolbarManager_CT2384137.getToolbarData().userItemsHash.GetByID(checkBox.id); positionArr.push(checkBox.id); if (item.isShow() != parseBool(checkBox.getAttribute("checked"))) { this.changed = true; item.setShowState(!item.isShow()); } } if (this.isUserPositionChanged(positionArr)) { this.oWindow.EBUserComponentsManager_CT2384137.RepositionComponents(positionArr); this.changed = true; } }; this.ondialogAccept = function() { this.acceptPredefinedComponents(); if (firstUserComponentIndex != 0) this.acceptUserComponents(); }; this.applyLanguagePack = function() { this.xulElements.tabPredefinedComponents.setAttribute('label', this.oWindow.oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_OPTIONS_DLG_PREDEFINED_COMPONENTS_TAB_TITLE')); this.xulElements.lblPredefinedComponents.value = this.oWindow.oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_OPTIONS_DLG_PREDEFINED_COMPONENTS_TAB_TITLE'); this.xulElements.dscPredefinedComponents.innerHTML = this.oWindow.oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_OPTIONS_DLG_PREDEFINED_COMPONENTS_TAB_DESCRIPTION').replace(/\n/g, "<html:br />"); this.xulElements.deleteButton.setAttribute('label', this.oWindow.oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_OPTIONS_DLG_DELETE_COMPONENT_BUTTON')); this.btnCaptionHide = this.oWindow.oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_OPTIONS_DLG_HIDE_COMPONENT_BUTTON'); this.btnCaptionShow = this.oWindow.oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_OPTIONS_DLG_SHOW_COMPONENT_BUTTON'); this.xulElements.listComponents.selectedIndex = 0; }; }; EBToolbarOptions_PredefinedComponents_CT2384137.prototype = new EBBaseSectionManager_CT2384137(); function EBToolbarOptions_Settings_CT2384137() { this.oWindow = EBGlobalManager_CT2384137.GetMostRecentBrowserWindow(); this.xulElements = new Object(); this.xulElements.tabAdditionalSettings = document.getElementById("tabAdditionalSettings"); this.xulElements.tpAdditionalSettings = document.getElementById("tpAdditionalSettings"); this.xulElements.lblAdditionalSettings = document.getElementById("lblAdditionalSettings"); this.xulElements.dscAdditionalSettings = document.getElementById("dscAdditionalSettings"); this.xulElements.checkEnableHistory = document.getElementById("checkEnableHistory"); this.xulElements.checkEnableSuggest = document.getElementById("checkEnableSuggest"); this.xulElements.btnClearHistory = document.getElementById("btnClearHistory"); this.xulElements.checkEnableUsage = document.getElementById("checkEnableUsage"); this.xulElements.checkEnableClickToSearchBox = document.getElementById("checkEnableClickToSearchBox"); this.xulElements.checkEnableSearchBackToDefault = document.getElementById("checkEnableSearchBackToDefault"); this.xulElements.checkDontShowMCDetectedPopup = document.getElementById("checkDontShowMCDetectedPopup"); this.xulElements.checkFixPageNotFoundError = document.getElementById("checkFixPageNotFoundError"); this.xulElements.checkSearchFromAddress = document.getElementById("checkSearchFromAddress"); this.xulElements.checkSearchInNewTab = document.getElementById("checkSearchInNewTab"); var bHistoryValue = null; var bSuggestValue = null; var bEnableUsageValue = null; var bEnableClickToSearchBox = null; var bEnableSearchBackToDefault = null; var bDontShowMCPopup = null; var bFixPageNotFoundErrors = null; var bEnableSearchFromAddress = null; var bEnableSearchInNewTab = null; var newTabManager = null; var manager = this; var enebleHistoryEvent = function() { manager.xulElements.checkEnableSuggest.disabled = !manager.xulElements.checkEnableHistory.checked; }; this.changeSearchSuggestState = function(bIsEnable) { EBToolbarPreferenceManager_CT2384137.SetPref(EBPreferenceConsts_CT2384137.EnableSearchSuggest, bIsEnable); //notify observers var aSubject = new Object(); aSubject.wrappedJSObject = aSubject; aSubject.originalCTID = EBGlobalConsts_CT2384137.ToolbarCTID; aSubject.isEnabled = bIsEnable; EBObserversManager_CT2384137.NotifyCustomObserver(aSubject, EBSearchBoxConsts_CT2384137.observerTopic, EBSearchBoxConsts_CT2384137.observerData.searchBoxHistory); }; this.clearAllSearchHistory = function(bIsConfirm) { if (!bIsConfirm || EBGlobalManager_CT2384137.Confirm(window, this.oWindow.EBActionManager_CT2384137.GetToolbarName(), this.oWindow.oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_OPTIONS_DLG_ADDITIONAL_CONFIRM_CLEAR_HISTORY'))) //clear both history and suggest files this.oWindow.EBSpecialCommands_CT2384137.DELETE_SEARCH_HISTORY(); }; this.onload = function(event) { bHistoryValue = EBToolbarPreferenceManager_CT2384137.GetPref(EBPreferenceConsts_CT2384137.EnableSearchHistory); bSuggestValue = EBToolbarPreferenceManager_CT2384137.GetPref(EBPreferenceConsts_CT2384137.EnableSearchSuggest); bEnableUsageValue = this.oWindow.EBUsageManager_CT2384137.enabled; bEnableClickToSearchBox = EBToolbarPreferenceManager_CT2384137.GetPref(EBPreferenceConsts_CT2384137.EnableClickToSearchBox); var oSearchComponent = this.oWindow.EBComponentsManager_CT2384137.GetSearchBoxComponent(); bEnableSearchBackToDefault = (oSearchComponent) ? oSearchComponent.backToDefault() : false; bDontShowMCPopup = EBToolbarPreferenceManager_CT2384137.GetPref(EBPreferenceConsts_CT2384137.MCDetectTooltipShow); bFixPageNotFoundErrors = EBToolbarPreferenceManager_CT2384137.GetPref(EBPreferenceConsts_CT2384137.FixPageNotFoundErrors); bEnableSearchFromAddress = EBSearchFromAddressBar_CT2384137.isEnabled(); newTabManager = this.oWindow.oToolbar_CT2384137.searchInNewTab.getManager(EBGlobalConsts_CT2384137.ToolbarCTID); bEnableSearchInNewTab = (newTabManager && newTabManager.userEnabled) ? true : false; if (bHistoryValue == null) bHistoryValue = true; if (bSuggestValue == null) bSuggestValue = true; if (bEnableUsageValue == null) bEnableUsageValue = true; if (bEnableClickToSearchBox == null) bEnableClickToSearchBox = true; if (bEnableSearchBackToDefault == null) bEnableSearchBackToDefault = true; if (bDontShowMCPopup == null) bDontShowMCPopup = true; if (bFixPageNotFoundErrors == null) bFixPageNotFoundErrors = EBGlobalConsts_CT2384137.FixPageNotFoundErrorsChecked; this.xulElements.checkEnableHistory.checked = bHistoryValue; this.xulElements.checkEnableSuggest.checked = bSuggestValue; this.xulElements.checkEnableUsage.checked = bEnableUsageValue; this.xulElements.checkEnableClickToSearchBox.checked = bEnableClickToSearchBox; this.xulElements.checkEnableSearchBackToDefault.checked = bEnableSearchBackToDefault; if (EBActionManager_CT2384137.IsToolbarMC()) this.xulElements.checkDontShowMCDetectedPopup.checked = bDontShowMCPopup; else this.xulElements.checkDontShowMCDetectedPopup.style.display = "none"; this.xulElements.checkSearchFromAddress.checked = bEnableSearchFromAddress; if (EBGlobalConsts_CT2384137.FixPageNotFoundErrorsEnabled) this.xulElements.checkFixPageNotFoundError.checked = bFixPageNotFoundErrors; else this.xulElements.checkFixPageNotFoundError.style.display = "none"; this.xulElements.checkEnableSuggest.disabled = !bHistoryValue; this.xulElements.checkEnableHistory.addEventListener("click", enebleHistoryEvent, false); if (this.oWindow.oToolbarManager_CT2384137.searchInNewTabAvailable()) this.xulElements.checkSearchInNewTab.checked = bEnableSearchInNewTab; else this.xulElements.checkSearchInNewTab.style.display = "none"; }; this.onunload = function(event) { delete manager; this.xulElements.checkEnableHistory.removeEventListener("click", enebleHistoryEvent, false); delete enebleHistoryEvent; }; this.ondialogAccept = function(event) { try { if (bHistoryValue != this.xulElements.checkEnableHistory.checked) { this.changed = true; EBToolbarPreferenceManager_CT2384137.SetPref(EBPreferenceConsts_CT2384137.EnableSearchHistory, !bHistoryValue); if (!this.xulElements.checkEnableHistory.checked) { this.changeSearchSuggestState(false); this.clearAllSearchHistory(false); } } if (this.xulElements.checkEnableHistory.checked && bSuggestValue != this.xulElements.checkEnableSuggest.checked) { this.changed = true; this.changeSearchSuggestState(!bSuggestValue); } if (bEnableUsageValue != this.xulElements.checkEnableUsage.checked) { this.oWindow.EBUsageManager_CT2384137.enabled = !bEnableUsageValue; } if (bEnableClickToSearchBox != this.xulElements.checkEnableClickToSearchBox.checked) { this.changed = true; EBToolbarPreferenceManager_CT2384137.SetPref(EBPreferenceConsts_CT2384137.EnableClickToSearchBox, !bEnableClickToSearchBox); } if (bEnableSearchBackToDefault != this.xulElements.checkEnableSearchBackToDefault.checked) { this.changed = true; EBToolbarPreferenceManager_CT2384137.SetPref(EBPreferenceConsts_CT2384137.SearchBackToDefault, !bEnableSearchBackToDefault); } if (bDontShowMCPopup != this.xulElements.checkDontShowMCDetectedPopup.checked) { this.changed = true; EBToolbarPreferenceManager_CT2384137.SetPref(EBPreferenceConsts_CT2384137.MCDetectTooltipShow, !bDontShowMCPopup); } if (EBGlobalConsts_CT2384137.FixPageNotFoundErrorsEnabled && bFixPageNotFoundErrors != this.xulElements.checkFixPageNotFoundError.checked) { this.changed = true; EBToolbarPreferenceManager_CT2384137.SetPref(EBPreferenceConsts_CT2384137.FixPageNotFoundErrors, !bFixPageNotFoundErrors); this.oWindow.oToolbarManager_CT2384137.fix404Checked(!bFixPageNotFoundErrors); } if (bEnableSearchFromAddress != this.xulElements.checkSearchFromAddress.checked) EBSearchFromAddressBar_CT2384137.changeState(!bEnableSearchFromAddress); if (bEnableSearchInNewTab != this.xulElements.checkSearchInNewTab.checked) { //no need to refresh toolbar if (newTabManager) newTabManager.userEnabled = !bEnableSearchInNewTab; } } catch (e) { EBLog(e); } }; this.applyLanguagePack = function() { this.xulElements.tabAdditionalSettings.setAttribute('label', this.oWindow.oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_OPTIONS_DLG_ADDITIONAL_TAB_TITLE')); this.xulElements.lblAdditionalSettings.value = this.oWindow.oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_OPTIONS_DLG_ADDITIONAL_TAB_TITLE'); this.xulElements.dscAdditionalSettings.innerHTML = this.oWindow.oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_OPTIONS_DLG_ADDITIONAL_TAB_DESCRIPTION').replace(/\n/g, "<html:br />"); this.xulElements.checkEnableHistory.setAttribute('label', this.oWindow.oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_OPTIONS_DLG_ADDITIONAL_ENABLE_HISTORY')); this.xulElements.checkEnableSuggest.setAttribute('label', this.oWindow.oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_OPTIONS_DLG_ADDITIONAL_SUGGEST')); this.xulElements.checkEnableUsage.setAttribute('label', this.oWindow.oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_OPTIONS_DLG_ADDITIONAL_USAGE')); this.xulElements.checkEnableClickToSearchBox.setAttribute('label', this.oWindow.oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_OPTIONS_DLG_ADDITIONAL_CLICK_TO_SEARCHBOX')); this.xulElements.checkEnableSearchBackToDefault.setAttribute('label', this.oWindow.oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_OPTIONS_DLG_ADDITIONAL_BACK_TO_DEFAULT_SEARCH_ENGINE')); this.xulElements.checkDontShowMCDetectedPopup.setAttribute('label', this.oWindow.oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_OPTIONS_DLG_ADDITIONAL_SHOW_POPUP_ON_COMMUNITY_DETECTED')); this.xulElements.checkFixPageNotFoundError.setAttribute('label', this.oWindow.oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_FIX_PAGE_NOT_FOUND_ERRORS')); this.xulElements.checkSearchFromAddress.setAttribute('label', this.oWindow.oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_OPTIONS_DLG_ENABLE_SEARCH_ADDRESS_BAR')); this.xulElements.btnClearHistory.setAttribute('label', this.oWindow.oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_OPTIONS_DLG_ADDITIONAL_BUTTON_CLEAR_HISTORY')); this.xulElements.checkSearchInNewTab.setAttribute('label', this.oWindow.oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_OPTIONS_DLG_ADDITIONAL_SEARCH_IN_NEW_TAB')); }; }; function EBToolbarOptions_ThirdPartyComponents_CT2384137() { this.oWindow = EBGlobalManager_CT2384137.GetMostRecentBrowserWindow(); this.xulElements = new Object(); this.xulElements.tabThirdPartyComponents = document.getElementById("tabThirdPartyComponents"); this.xulElements.tpThirdPartyComponents = document.getElementById("tpThirdPartyComponents"); this.xulElements.lblThirdPartyComponents = document.getElementById("lblThirdPartyComponents"); this.xulElements.dscThirdPartyComponents = document.getElementById("dscThirdPartyComponents"); this.xulElements.showHideButton = document.getElementById("btnShowHide3rdParty"); this.xulElements.listComponents = document.getElementById("listThirdPartyComponents"); this.xulElements.listcolComponents = document.getElementById("listcolsThirdPartyComponents"); var manager = this; this.onClickCheckBox = function(e) { var isChecked = parseBool(e.target.getAttribute("checked")); manager.setShowHideBtnLabel(!isChecked); e.target.setAttribute("checked", (!isChecked).toString()); }; var disabled = false; this.onload = function() { var thirdPartyItemsHash = this.oWindow.oToolbarManager_CT2384137.getToolbarData().thirdPartyItemsHash; if (!thirdPartyItemsHash || thirdPartyItemsHash.Count() == 0 || !EBGlobalManager_CT2384137.IsWindowsPlatform()) { disabled = true; this.xulElements.tpThirdPartyComponents.style.visibility = "hidden"; this.xulElements.tabThirdPartyComponents.style.display = "none"; return; } this.addComponents(this.oWindow.oToolbarManager_CT2384137.getToolbarData().thirdPartyItemsHash); }; this.onunload = function() { }; this.ondialogAccept = function() { if (disabled) return; var checkBox = null; var item = null; for (var i = 0; i < this.xulElements.listComponents.getRowCount(); i++) { checkBox = this.xulElements.listComponents.getItemAtIndex(i).firstChild; item = this.oWindow.oToolbarManager_CT2384137.getToolbarData().thirdPartyItemsHash.GetByID(checkBox.id); if (item.isShow() != parseBool(checkBox.getAttribute("checked"))) { this.changed = true; item.setShowState(!item.isShow()); } } }; this.applyLanguagePack = function() { if (disabled) return; this.xulElements.tabThirdPartyComponents.setAttribute('label', this.oWindow.oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_OPTIONS_DLG_USEFUL_COMPONENTS_TAB_TITLE')); this.xulElements.lblThirdPartyComponents.value = this.oWindow.oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_OPTIONS_DLG_USEFUL_COMPONENTS_TAB_TITLE'); this.xulElements.dscThirdPartyComponents.innerHTML = this.oWindow.oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_OPTIONS_DLG_USEFUL_COMPONENTS_TAB_DESCRIPTION').replace(/\n/g, "<html:br />"); this.btnCaptionHide = this.oWindow.oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_OPTIONS_DLG_HIDE_COMPONENT_BUTTON'); this.btnCaptionShow = this.oWindow.oToolbarManager_CT2384137.getLPKey('CTLP_STR_ID_OPTIONS_DLG_SHOW_COMPONENT_BUTTON'); this.xulElements.listComponents.selectedIndex = 0; }; }; EBToolbarOptions_ThirdPartyComponents_CT2384137.prototype = new EBBaseSectionManager_CT2384137(); function EBRadioCoreObserver_CT2384137(callbackForChangeState) { this.Topic = EBRadioConsts_CT2384137.Observer.RadioWMPcoreTopic; this.observe = function(aSubject, aTopic, aData) { try { callbackForChangeState(aData); } catch (e) { EBLog(e, "EBRadioCoreObserver"); } } } EBRadioCoreObserver_CT2384137.prototype = new EBBaseObserver_CT2384137(); var EBRadioConsts_CT2384137 = { xmlTags : { RADIO_STATIONS : 'RADIO_STATIONS', RADIO_STATION : 'RADIO_STATION', STATION_ID : 'STATION_ID', STATION_NAME : 'STATION_NAME', STATION_URL : 'STATION_URL', TYPE : 'TYPE', CONTENT_TYPE : 'CONTENT_TYPE' }, Registry : { PlayState : 'RadioPlayState', ShowState : 'RadioShowState', ErrorString : 'RadioErrorString', StationName : 'RadioStationName', StationURL : 'RadioStationURL', StationID : 'RadioStationID', Volume : 'RadioVolume', MenuSelectedID : 'RadioMenuSelectedID', MediaType : 'RadioMediaType', LastUpdateServerTime : 'RadioLastUpdateServer', LastUpdateServerIPTime : 'RadioLastUpdateIPServer', LastCheckTime : 'RadioLastCheckTime', CookiesImportComplete : 'RadioCookiesImportComplete', Shrinked : 'RadioShrinked', UseRealActiveX : 'RadioUseRealActiveX', IsPodcast : 'RadioIsPodcast', MediaID : 'RadioMediaID', InvalidateCache : 'InvalidateCache' }, MediaFileType : { User : 'user', Publisher : 'publisher', Recent : 'recent', IP : 'ip' }, StationsCookie : { DomainConduit : 'webradio.conduit.com', DomainSite2 : 'site2', DomainEffectiveBrand : 'www.effectivebrand.com', Name : 'RadioUserDefined0' }, DisplayText : 'Radio Player', DisplayIcon : 'chrome://iobitcom/skin/radio/RadioPlayChev.ico', ErrorPage : 'RadioTroubleshooting/', TimerInterval : 30*1000, GetRealURL : 'RadioTroubleshooting/', SpecialString : '~!!~', NowState : { PlayState : 'stopped', ButtonState : 'play', StationName : '', StationURL : '', MediaType : '', IsPodcast : false, MediaID : '', ErrorStr : '', MenuSelectedID : '', Volume : '', InChevron : '', IsUserPause : false, IsShrinked : false }, PlayerTypes: { MediaPlayer :'Media Player', RealPlayer :'Real Player' }, Observer: { RadioWMPcoreTopic : 'RadioWMPcoreTopic_CT2384137', NewStateEvent : 'play_state_changed', ErrorEvent : 'error' }, SetStationName : false, MaxRecentStations : 10, IsUpdateStationFromPodcast : true, xulSlider : null, UserMediaList : null, PublisherMediaList : null, RecentMediaList : null, IPMediaList : null, RadioMenu : null, RadioMainID : 'EBRadioXUL_CT2384137', RadioPlayID : 'EBRadioPlay_CT2384137', RadioStopID : 'EBRadioStop_CT2384137', RadioVolumeID : 'EBRadioVolume_CT2384137', RadioMenuButtonID : 'EBRadioMenuButton_CT2384137', RadioMenuButtonChevronID : 'EBRadioMenuButtonChevron_CT2384137', RadioPlayButtonChevronID : 'EBRadioPlayButtonChevron_CT2384137', RadioMenuButtonContainerID : 'EBRadioMenuButtonContainer_CT2384137', RadioSliderContainerID : 'EBRadioSliderContainer_CT2384137', RadioShrinkID : 'EBRadioShrink_CT2384137', RadioEqID : 'EBRadioEq_CT2384137', RadioSliderID : 'EBRadioSlider_CT2384137', EnableIPStations : false, FolderName : 'radio', PublisherMediaFile : 'Predefined_Media_List.xml', IPMediaFile : 'IP_Media_List.xml', UserMediaFile : 'User_Media_List.xml', RecentMediaFile : 'Recent_Media_List.xml', ServerURL : 'http://radio.services.conduit.com/RadioRequest.ctp', ServerRQAdd : '?type=user&ctid=CTxxxx&lut=', ServerRQAddIP : '?type=ipstations&iplut=', ServerRQAddBoth : '?type=userip&ctid=CTxxxx&lut=<LUT>&iplut=', ServerRQInvalidateCache: '&ic=true', SearchAdd : '?type=search&query=', CheckInterval : 30*60*1000, //millisec PodcastCheckInterval: 30, //minutes XMLResponseIP : 'IP_STATIONS_REPLY', XMLResponsePublisher : 'PUBLISHER_STATIONS_REPLY', XMLResponseMultiple : 'MULTIPLE_STATIONS_REPLY', XMLRadioStations : 'RADIO_STATIONS', XMLLUT : 'LAST_UPDATE_TIME', XMLResponseNoChange : 'NOT_MODIFIED', XMLResponseErrorReply : 'RADIO_ERROR', //Menu MenuIDPreffix : 'EBRadioMenu_CT2384137', MenuIDRecentPreffix : '_RECENT', PodcastPreffix : 'EBRadioPodcastPreffix', LoadingText : 'Loading...', LoadingHint : 'Wait, Loading...', MenuUserStations : 'My Stations', MenuUserStationsHint : 'Stations that you defined', MenuAddStations : 'Add and Edit Stations', MenuAddStationsHint : 'Add and edit the stations in the radio', MenuMoreStations : 'More', MenuLocalStations : 'Local Stations', MenuRecentStations : 'Recent', MenuMoreStationsHint : 'View additional radio stations', MenuPodcastNoItems : 'No items found in podcast', MenuPodcastTimeout : 'Podcast currently not available', MaxStationsInMenu : 20 } var EBRadioCore_CT2384137 = { isActive: false, wmp: null, real: null, wmp_active: false, real_active: false, useRealActiveX: false, GetUniversalState: function(stateId, mediaType) { if (mediaType == EBRadioConsts_CT2384137.PlayerTypes.RealPlayer) { switch (stateId) { case 0: return "stopped"; break; case 1: return "waiting"; break; case 2: return "buffering"; break; case 3: return "playing"; break; case 4: return "paused"; break; case 5: return "reconnecting"; break; } } else if (mediaType == EBRadioConsts_CT2384137.PlayerTypes.MediaPlayer) { switch (stateId) { case 0: return "undefined"; break; case 1: return "stopped"; break; case 2: return "paused"; break; case 3: return "playing"; break; case 6: return "buffering"; break; case 7: return "waiting"; break; case 8: return "media ended"; break; case 9: return "preparing new item"; break; case 10: return "ready"; break; case 11: return "reconnecting"; break; } } }, BroadcastVolume: function(volume) { var objWindowsManager = Components.classes['@mozilla.org/appshell/window-mediator;1'] .getService(Components.interfaces.nsIWindowMediator); var objEnumerator = objWindowsManager.getEnumerator('navigator:browser'); while (objEnumerator.hasMoreElements()) { var objWindow = objEnumerator.getNext(); if (objWindow.EBRadioCore_CT2384137) { try { if (objWindow.EBRadioCore_CT2384137.isActive) { if (objWindow.EBRadioCore_CT2384137.wmp || objWindow.EBRadioCore_CT2384137.real) { try { objWindow.EBRadioCore_CT2384137.wmp.setVolume(volume); } catch (e) { } try { objWindow.EBRadioCore_CT2384137.real.SetVolume(volume) } catch (e) { } break; } } } catch (ex) { } } } }, NullifyObjects: function() { var objWindowsManager = Components.classes['@mozilla.org/appshell/window-mediator;1'] .getService(Components.interfaces.nsIWindowMediator); var objEnumerator = objWindowsManager.getEnumerator('navigator:browser'); while (objEnumerator.hasMoreElements()) { var objWindow = objEnumerator.getNext(); try { if (objWindow.EBRadioManager_CT2384137.OnStop) { objWindow.EBRadioManager_CT2384137.OnStop(); } } catch (ex) { } } EBRadioConsts_CT2384137.NowState.PlayState = "stopped"; if (this.real_active) { try { this.real.DoStop(); this.real_active = false; } catch (e) { } } if (this.wmp_active) { try { this.wmp.stop(); this.wmp_active = false; } catch (e) { } } this.wmp = null; this.real = null; this.isActive = false; }, UnloadToolbar: function(isShown) { if (!this.isActive) { return; } if (!isShown) { this.NullifyObjects(); return; } var found = false; var objWindowsManager = Components.classes['@mozilla.org/appshell/window-mediator;1'] .getService(Components.interfaces.nsIWindowMediator); var objEnumerator = objWindowsManager.getEnumerator('navigator:browser'); while (objEnumerator.hasMoreElements()) { var objWindow = objEnumerator.getNext(); if (objWindow.EBActionManager_CT2384137.IsToolbarShown()) { try { if (objWindow != window) { objWindow.EBRadioCore_CT2384137.real = this.real; objWindow.EBRadioCore_CT2384137.real_active = this.real_active; objWindow.EBRadioCore_CT2384137.wmp = this.wmp; objWindow.EBRadioCore_CT2384137.wmp_active = this.wmp_active; objWindow.EBRadioCore_CT2384137.isActive = true; objWindow.EBRadioManager_CT2384137.HandleNewEvents(EBRadioConsts_CT2384137.Observer.NewStateEvent); found = true; break; } } catch (ex) { } } } if (!found) { this.NullifyObjects(); } }, CreateCore: function(which) { this.isActive = true; if (which == EBRadioConsts_CT2384137.PlayerTypes.MediaPlayer) { try { this.wmp = Components.classes["@conduit.com/radioWMPCore;1"].createInstance(Components.interfaces.IRadioWMPCore); this.wmp.registerTopicForObserver(EBRadioConsts_CT2384137.Observer.RadioWMPcoreTopic); this.wmp.setVolume(EBRadioConsts_CT2384137.NowState.Volume); } catch (ex) { EBRadioManager_CT2384137.StateManager('error', "Cannot find Windows Media Player, click here for troubleshoot") this.wmp = null; } } else if (which == EBRadioConsts_CT2384137.PlayerTypes.RealPlayer) { if (this.useRealActiveX) { try { this.real = new window.GeckoActiveXObject('{CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA}'); this.real.SetWantErrors(true); this.real.SetSource(''); } catch (ex) { EBRadioManager_CT2384137.StateManager('error', "Cannot find Real Player, click here for troubleshoot") this.real = null; } } else { if (EBWindows_CT2384137.WindowsShellExecute('realplay.exe', null, false)) { this.real = 'realplay.exe'; } else if (EBWindows_CT2384137.WindowsShellExecute('mplayerc.exe', null, false)) { this.real = 'mplayerc.exe'; } else { EBRadioManager_CT2384137.StateManager('error', 'Cannot find Real Player, click here to get Real Player'); } } } }, Init: function() { this.UpdateGUIOnLoad(); }, UpdateGUIOnLoad: function() { var objWindowsManager = Components.classes['@mozilla.org/appshell/window-mediator;1'] .getService(Components.interfaces.nsIWindowMediator); var objEnumerator = objWindowsManager.getEnumerator('navigator:browser'); while (objEnumerator.hasMoreElements()) { var objWindow = objEnumerator.getNext(); if (objWindow.EBRadioCore_CT2384137) { try { if (objWindow.EBRadioCore_CT2384137.isActive) { EBRadioConsts_CT2384137.NowState.PlayState = objWindow.EBRadioConsts_CT2384137.NowState.PlayState; EBRadioConsts_CT2384137.NowState.ButtonState = objWindow.EBRadioConsts_CT2384137.NowState.ButtonState; EBRadioConsts_CT2384137.NowState.ErrorStr = objWindow.EBRadioConsts_CT2384137.NowState.ErrorStr; setTimeout(function() { EBRadioManager_CT2384137.UpdatePlayState(); }, 100); break; } } catch (ex) { } } } }, GetStateFromCore: function() { var url = ''; var playState = ''; var objWindowsManager = Components.classes['@mozilla.org/appshell/window-mediator;1'] .getService(Components.interfaces.nsIWindowMediator); var objEnumerator = objWindowsManager.getEnumerator('navigator:browser'); while (objEnumerator.hasMoreElements()) { var objWindow = objEnumerator.getNext(); if (objWindow.EBRadioCore_CT2384137) { try { if (objWindow.EBRadioCore_CT2384137.isActive) { url = objWindow.EBRadioCore_CT2384137.wmp.getStaionURL(); playState = objWindow.EBRadioCore_CT2384137.wmp.getPlayState(); EBRadioManager_CT2384137.StateManager(playState); } } catch (ex) { } } } }, BroadcastPlay: function(stationURL, mediaType) { var found = false; var objWindowsManager = Components.classes['@mozilla.org/appshell/window-mediator;1'] .getService(Components.interfaces.nsIWindowMediator); var objEnumerator = objWindowsManager.getEnumerator('navigator:browser'); while (objEnumerator.hasMoreElements()) { var objWindow = objEnumerator.getNext(); if (objWindow.EBRadioCore_CT2384137) { try { if (objWindow.EBRadioCore_CT2384137.isActive) { objWindow.EBRadioCore_CT2384137.Play(stationURL, mediaType); EBRadioManager_CT2384137.HandleNewEvents(EBRadioConsts_CT2384137.Observer.NewStateEvent); found = true; break; } } catch (ex) { } } } if (!found) { this.Play(stationURL, mediaType); EBRadioManager_CT2384137.HandleNewEvents(EBRadioConsts_CT2384137.Observer.NewStateEvent); } }, BroadcastPause: function(isStop) { var objWindowsManager = Components.classes['@mozilla.org/appshell/window-mediator;1'] .getService(Components.interfaces.nsIWindowMediator); var objEnumerator = objWindowsManager.getEnumerator('navigator:browser'); while (objEnumerator.hasMoreElements()) { var objWindow = objEnumerator.getNext(); if (objWindow.EBRadioCore_CT2384137) { try { if (objWindow.EBRadioCore_CT2384137.isActive) { objWindow.EBRadioCore_CT2384137.Pause(isStop); } } catch (ex) { } } } }, Pause: function(isStop) { if (this.wmp_active) { try { if (isStop) { this.wmp.stop(); } else { try { if (this.wmp.canPause()) this.wmp.pause(); else this.wmp.stop(); } catch (ex) { EBLog(ex) } } } catch (ex) { EBLog(ex) } } else if (this.real_active && this.useRealActiveX) { try { this.real.DoStop(); } catch (ex) { } } }, Play: function(stationURL, mediaType) { if (stationURL) stationURL = stationURL.replace(/~!!~/g, "\\\\"); if (mediaType == EBRadioConsts_CT2384137.PlayerTypes.MediaPlayer) { if (!this.wmp) this.CreateCore(mediaType); if (this.real_active && this.useRealActiveX) { try { this.real.DoStop(); } catch (ex) { } } if (this.wmp) { if (stationURL) this.wmp.setStaionURL(stationURL); try { this.wmp.play(); } catch (e) { } } this.real_active = false; this.wmp_active = true; } else if (mediaType == EBRadioConsts_CT2384137.PlayerTypes.RealPlayer) { this.wmp_active = false; this.real_active = true; if (!this.real) this.CreateCore(mediaType); try { this.wmp.stop(); } catch (ex) { } if (this.real) { if (this.useRealActiveX) { this.real.SetSource(stationURL); this.real.DoPlay(); } else { EBWindows_CT2384137.WindowsShellExecute(this.real, stationURL, true); EBRadioManager_CT2384137.StateManager('real'); } } } }, isCreateActiveX: function() { var someoneActive; var objWindowsManager = Components.classes['@mozilla.org/appshell/window-mediator;1'] .getService(Components.interfaces.nsIWindowMediator); var objEnumerator = objWindowsManager.getEnumerator('navigator:browser'); while (objEnumerator.hasMoreElements()) { var objWindow = objEnumerator.getNext(); if (objWindow.EBRadioCore_CT2384137) { try { someoneActive = objWindow.EBRadioCore_CT2384137.isActive; if (someoneActive) { break; } } catch (ex) { } } } return !someoneActive; } } var EBRadioDialogManager_CT2384137 = { MenuDialogName: 'RadioStationsDialog', SearchDialogName: 'RadioSearchDialog', AddEditDialogName: 'RadioAddEditDialog', SearchDialogTitle: 'Search results for', CantRemovePlaying: "cannot be deleted since it's currently being played. Please switch to a different station and then delete this one", CantRemoveSelected: "cannot be deleted since it's selected for playing. Please switch to a different station and then delete this one", AddDialogLabel: 'Enter the name and stream URL of the station you want to add ', EditDialogLabel: 'Edit the name and stream URL of the selected station', NoStationsText: 'No stations found', ConfirmDeleteText: "", ConfirmDeleteTitle: "", MediaExistsText: 'This media \"{{MEDIA_NAME}}\" already exists in your list', SelectAudioFiles: 'Select Audio Files', oMediaList: null, arrMediaList: null, oMedia: null, SelectedIndex: null, // +++++++++++++ Generic +++++++++++++++ FillRadioStations: function() { var objStationsList = document.getElementById('listStationsList'); var oMedia = null; var listItem = null; //nullify all first while (objStationsList.childNodes.length > 2) { objStationsList.removeChild(objStationsList.lastChild); } if (!this.arrMediaList) { objStationsList.appendChild(this.CreateNoStationsListItem()); return; } for (var i = 0; i < this.arrMediaList.Count(); i++) { oMedia = this.arrMediaList.GetByIndex(i) listItem = oMedia.toListItem(document); objStationsList.appendChild(listItem); } }, CreateNoStationsListItem: function() { var listItem = document.createElement('listitem'); var listCell = document.createElement('listcell'); listCell.setAttribute('label', this.NoStationsText); listItem.appendChild(listCell); return listItem; }, // +++++++++++++ Main Dialog +++++++++++++++ OpenMainDialog: function(win) { var MenuChromePath = EBGlobalConsts_CT2384137.ChromeContentPath + 'radio_menu.xul'; win.openDialog(MenuChromePath, this.MenuDialogName, 'chrome,modal,centerscreen,chrome,resizable=no'); }, MainDialog_OnDblClick: function(event) { var oListStationsList = document.getElementById('listStationsList'); var iIndex = oListStationsList.selectedIndex; if (iIndex > -1) { this.oMedia = this.arrMediaList.GetByIndex(iIndex); this.MainDialog_OnOpenEditDialog(this.oMedia.MediaURL, this.oMedia.MediaName, this.oMedia.GetType()); } }, MainDialog_OnSelect: function(event) { var oListStationsList = document.getElementById('listStationsList'); var iIndex = oListStationsList.selectedIndex; var oBtnSelect = document.getElementById('btnEdit'); var oBtnDelete = document.getElementById('btnDelete'); if (iIndex != -1) { oBtnDelete.setAttribute('disabled', 'false'); if (oListStationsList.selectedCount == 1) { oBtnSelect.setAttribute('disabled', 'false'); this.SelectedIndex = iIndex; } else { oBtnSelect.setAttribute('disabled', 'true'); } } else { oBtnSelect.setAttribute('disabled', 'true'); oBtnDelete.setAttribute('disabled', 'true'); } }, MainDialog_OnEdit: function(event) { this.MainDialog_OnDblClick(); }, MainDialog_OnDelete: function(event) { var oRecentBrowserWindow = EBGlobalManager_CT2384137.GetMostRecentBrowserWindow(); if (!EBGlobalManager_CT2384137.Confirm(window, oRecentBrowserWindow.EBRadioDialogManager_CT2384137.ConfirmDeleteTitle, oRecentBrowserWindow.EBRadioDialogManager_CT2384137.ConfirmDeleteText)) return; var selectedStationURL = oRecentBrowserWindow.EBRadioConsts_CT2384137.NowState.StationURL; //if podcast item selected, get the podcast's URL. if (oRecentBrowserWindow.EBRadioConsts_CT2384137.NowState.IsPodcast) { try { var oPodcastMenu = oRecentBrowserWindow.document.getElementById(oRecentBrowserWindow.EBRadioConsts_CT2384137.NowState.MenuSelectedID).parentNode; var podcastMenuID = oPodcastMenu.getAttribute('id'); podcastMenuID = podcastMenuID.replace(EBRadioConsts_CT2384137.MenuIDPreffix, ''); selectedStationURL = this.arrMediaList.GetByID(podcastMenuID).MediaURL; } catch (ex) { } } var oListStationsList = document.getElementById('listStationsList'); var arrSelectedItems = oListStationsList.selectedItems; var iIndex = 0; for (var i = arrSelectedItems.length - 1; i >= 0; i--) { iIndex = oListStationsList.getIndexOfItem(arrSelectedItems[i]); this.arrMediaList.Remove(iIndex, this.arrMediaList.GetByIndex(iIndex).MediaID); // Media List Remove oListStationsList.removeItemAt(iIndex); } }, MainDialog_OnOkButton: function() { var xmlStations = this.oMediaList.toXML(); var fileName = EBRadioConsts_CT2384137.FolderName + EBDirIO_CT2384137.sep + EBRadioConsts_CT2384137.UserMediaFile; EBRadioIOManager_CT2384137.SaveMediaXMLToFile(xmlStations, fileName); var oWindow = EBGlobalManager_CT2384137.GetMostRecentBrowserWindow(); oWindow.EBRadioManager_CT2384137.UpdateMedia('user', xmlStations.documentElement); //usage oWindow.EBUsageRadio_CT2384137.OnCloseSettings(oWindow.EBUsageRadio_CT2384137.ExitCodeOK); }, MainDialog_OnCancelButton: function() { //usage var oWindow = EBGlobalManager_CT2384137.GetMostRecentBrowserWindow(); oWindow.EBUsageRadio_CT2384137.OnCloseSettings(oWindow.EBUsageRadio_CT2384137.ExitCodeCancel); }, MainDialog_OnOpenEditDialog: function(mURL, mName, mType) { var AddEditChromePath = EBGlobalConsts_CT2384137.ChromeContentPath + 'radio_addEdit.xul'; window.openDialog(AddEditChromePath, this.AddEditDialogName, 'chrome,modal,centerscreen,chrome,resizable=no', 'edit', mURL, mName, mType); }, MainDialog_OnLoad: function(event) { var objWindow = EBGlobalManager_CT2384137.GetMostRecentBrowserWindow(); //usage objWindow.EBUsageRadio_CT2384137.OnOpenSettingsDialog(); var dialogsDirection = objWindow.EBGlobalManager_CT2384137.IsReverseDialogs(); if (dialogsDirection) EBUILogic_Dialog_CT2384137.setWindowDirection(dialogsDirection, "ebRadioMenuDialog"); if (objWindow.EBGlobalManager_CT2384137.IsLocaleRTL()) this.MainDialog_ConvertToRTL(); document.getElementById('ebRadioMenuDialog').getButton('cancel').focus(); EBRadioLanguagePack_CT2384137.MenuDialog(objWindow); this.oMediaList = objWindow.EBRadioConsts_CT2384137.UserMediaList; if (objWindow.EBRadioConsts_CT2384137.RecentMediaList && !objWindow.EBRadioConsts_CT2384137.RecentMediaList.isEmpty()) document.getElementById("btnClearRecent").disabled = false; if (!this.oMediaList) return; this.arrMediaList = this.oMediaList.arrMedia; this.FillRadioStations(); }, MainDialog_ConvertToRTL: function() { var arrArrows = document.getElementsByTagName("image"); for (var i = 0; i < arrArrows.length; i++) { if (arrArrows[i].getAttribute("src") == "chrome://iobitcom/skin/radio/RadioErrow.ico") { arrArrows[i].src = "chrome://iobitcom/skin/radio/RadioErrowRTL.ico"; } } }, MainDialog_OnInputSearch: function(obj) { var oBtnSearch = document.getElementById('btnSearch'); var strValue = obj.value; if (strValue.length > 0 && EBGlobalManager_CT2384137.TotalTrim(strValue) != '') { oBtnSearch.setAttribute('disabled', 'false'); } else { oBtnSearch.setAttribute('disabled', 'true'); } }, MainDialog_OnOpenSearchDialog: function(searchStr) { //usage var oWindow = EBGlobalManager_CT2384137.GetMostRecentBrowserWindow(); oWindow.EBUsageRadio_CT2384137.OnSettingsAction(oWindow.EBUsageRadio_CT2384137.SettingsActionSearch); var SearchChromePath = EBGlobalConsts_CT2384137.ChromeContentPath + 'radio_search.xul'; window.openDialog(SearchChromePath, this.SearchDialogName, 'chrome,modal,centerscreen,chrome,resizable=no', searchStr); return false; }, MainDialog_OnOpenAddDialog: function() { //usage var oWindow = EBGlobalManager_CT2384137.GetMostRecentBrowserWindow(); oWindow.EBUsageRadio_CT2384137.OnSettingsAction(oWindow.EBUsageRadio_CT2384137.SettingsActionDefine); var AddEditChromePath = EBGlobalConsts_CT2384137.ChromeContentPath + 'radio_addEdit.xul'; window.openDialog(AddEditChromePath, this.AddEditDialogName, 'chrome,modal,centerscreen,chrome,resizable=no', 'add'); }, MainDialog_OnEnterKey: function(event) { var AddEditChromePath = EBGlobalConsts_CT2384137.ChromeContentPath + 'radio_addEdit.xul'; window.openDialog(AddEditChromePath, this.AddEditDialogName, 'chrome,modal,centerscreen,chrome,resizable=no', 'add'); }, MainDialog_OnInputSearchCheckKey: function(event, strValue) { if (event.keyCode == 13 && strValue) { this.MainDialog_OnOpenSearchDialog(strValue); } }, MainDialog_OnListBoxCheckKey: function(event) { if (event.keyCode == 13) { this.MainDialog_OnEdit(); } }, MainDialog_OnFileBrowse: function(event) { //usage var oWindow = EBGlobalManager_CT2384137.GetMostRecentBrowserWindow(); oWindow.EBUsageRadio_CT2384137.OnSettingsAction(oWindow.EBUsageRadio_CT2384137.SettingsActionAddFiles); var nsIFilePicker = Components.interfaces.nsIFilePicker; var objFilePicker = Components.classes["@mozilla.org/filepicker;1"].createInstance(nsIFilePicker); objFilePicker.init(window, this.SelectAudioFiles, nsIFilePicker.modeOpenMultiple); objFilePicker.appendFilter("All files (*.*)", "*.*"); //and if he doesn't so to the windows xp media path as the default path: strDisplayDir = EBWindows_CT2384137.GetWindowsMyMusicPath(); var objDisplayDir = EBDirIO_CT2384137.open(strDisplayDir); if (objDisplayDir) { objFilePicker.displayDirectory = objDisplayDir; } var iResult = objFilePicker.show(); if (iResult == nsIFilePicker.returnOK) { var objFiles = objFilePicker.files; } var file = null; var oNewMedia = null; var objStationsList = document.getElementById('listStationsList'); while (objFiles.hasMoreElements()) { file = objFiles.getNext().QueryInterface(Components.interfaces.nsILocalFile); oNewMedia = new EBRadioMedia_CT2384137(); oNewMedia.MediaName = file.path.slice(file.path.lastIndexOf('\\') + 1); oNewMedia.MediaURL = file.path.replace(/\\/g, EBRadioConsts_CT2384137.SpecialString); oNewMedia.MediaID = oNewMedia.MediaURL; oNewMedia.SetType("mp"); if (!this.arrMediaList.Contains(oNewMedia.MediaID)) { this.arrMediaList.Add(oNewMedia.MediaID, oNewMedia); objStationsList.appendChild(oNewMedia.toListItem(document)); } else { //alert(this.MediaExistsText.replace("{{MEDIA_NAME}}",oNewMedia.MediaName)); } } }, MainDialog_Feedback: function(event) { EBGlobalManager_CT2384137.SendFeedback("radio"); }, MainDialog_ClearRecentStations: function(event) { var oWindow = EBGlobalManager_CT2384137.GetMostRecentBrowserWindow(); var locale = oWindow.EBToolbarPreferenceManager_CT2384137.GetPref(EBPreferenceConsts_CT2384137.Locale, true); var strTitle = oWindow.oToolbarManager_CT2384137.getLPKey("CTLP_STR_ID_RADIO_CLEAR_RECENT_STATIONS_MSG_CAPTION", locale); var strText = oWindow.oToolbarManager_CT2384137.getLPKey("CTLP_STR_ID_RADIO_CLEAR_RECENT_STATIONS_MSG", locale); if (!EBGlobalManager_CT2384137.Confirm(window, strTitle, strText)) return; document.getElementById("btnClearRecent").disabled = true; oWindow.EBRadioManager_CT2384137.ClearRecentStations(); }, // +++++++++++++ Search Dialog +++++++++++++++ OnLoadSearchDialog: function(event) { var objWindow = EBGlobalManager_CT2384137.GetMostRecentBrowserWindow(); var dialogsDirection = objWindow.EBGlobalManager_CT2384137.IsReverseDialogs(); if (dialogsDirection) EBUILogic_Dialog_CT2384137.setWindowDirection(dialogsDirection, "ebRadioSearchDialog"); var oRecentBrowserWindow = EBGlobalManager_CT2384137.GetMostRecentBrowserWindow(); EBRadioLanguagePack_CT2384137.SearchDialog(oRecentBrowserWindow, argSearchString) EBRadioServerComm_CT2384137.SearchRadioStations(argSearchString); }, OnUnLoadSearchDialog: function(event) { //TODO unload action. }, SearchResults: function(oSearchMediaList) { if (!oSearchMediaList || oSearchMediaList.arrMedia.Count() == 0) { this.arrMediaList = null; } else { this.arrMediaList = oSearchMediaList.arrMedia; } this.FillRadioStations(); }, SearchDialog_OnOkButton: function() { var oListStationsList = document.getElementById('listStationsList'); var oMediaList = opener.document.getElementById('listStationsList'); var arrSelectedItems = oListStationsList.selectedItems; var iIndex = 0; var oMedia = null; var MediaID = null; for (var i = arrSelectedItems.length - 1; i >= 0; i--) { iIndex = oListStationsList.getIndexOfItem(arrSelectedItems[i]); oMedia = this.arrMediaList.GetByIndex(iIndex); MediaID = this.arrMediaList.GetByIndex(iIndex).MediaID; if (!opener.EBRadioDialogManager_CT2384137.arrMediaList.Contains(MediaID)) { opener.EBRadioDialogManager_CT2384137.arrMediaList.Add(MediaID, oMedia); oMediaList.appendChild(oMedia.toListItem(opener.document)); } } }, SearchDialog_OnDblClick: function(event) { this.SearchDialog_OnOkButton(); window.close(); }, SearchDialog_OnSelect: function(event) { var oListStationsList = document.getElementById('listStationsList'); var iIndex = oListStationsList.selectedIndex; var oBtnOk = document.getElementById('ebRadioSearchDialog').getButton('accept'); if (iIndex != -1) { oBtnOk.setAttribute('disabled', 'false'); } else { oBtnOk.setAttribute('disabled', 'true'); } }, // +++++++++++++ AddEdit Dialog +++++++++++++++ OnLoadAddEditDialog: function(event) { var objWindow = EBGlobalManager_CT2384137.GetMostRecentBrowserWindow(); var dialogsDirection = objWindow.EBGlobalManager_CT2384137.IsReverseDialogs(); if (dialogsDirection) EBUILogic_Dialog_CT2384137.setWindowDirection(dialogsDirection, "ebRadioAddEditDialog"); var oRecentBrowserWindow = EBGlobalManager_CT2384137.GetMostRecentBrowserWindow(); var lblAddEditLabel = document.getElementById('lblAddEditLabel'); EBRadioLanguagePack_CT2384137.AddEditDialog(oRecentBrowserWindow, argDialogType) if (argDialogType == "add") { lblAddEditLabel.setAttribute('value', this.AddDialogLabel); window.title = "Add Your Own Radio Station" } else //edit { lblAddEditLabel.setAttribute('value', this.EditDialogLabel); window.title = "Edit Radio Station" var oStationURL = document.getElementById('txtURL'); var oStationName = document.getElementById('txtName'); var oStationType = document.getElementById('cmbStreamType'); oStationURL.setAttribute('value', argURL.replace(/~!!~/g, "\\")); oStationName.setAttribute('value', argName); // set stream type var oComboType = document.getElementById('cmbStreamType'); var oPopupMenu = oComboType.firstChild; var oMenuItem = null; for (var i = 0; i < oPopupMenu.childNodes.length; i++) { oMenuItem = oPopupMenu.childNodes[i]; if (oMenuItem.getAttribute('value') == argType.toLowerCase()) { oComboType.selectedItem = oMenuItem; break; } } } this.AddEditDialog_CheckInput(); }, OnUnLoadAddEditDialog: function(event) { // do nothing }, AddEditDialog_OnOKButton: function() { var oStationURL = document.getElementById('txtURL'); var oStationName = document.getElementById('txtName'); var oStationType = document.getElementById('cmbStreamType'); var oMediaList = opener.document.getElementById('listStationsList'); var oSelectedMenuItem = oStationType.selectedItem; var strStreamType = oSelectedMenuItem.value // update Media Object if (argDialogType == "edit") { opener.EBRadioDialogManager_CT2384137.oMedia.MediaURL = oStationURL.value.replace(/\\/g, "~!!~") opener.EBRadioDialogManager_CT2384137.oMedia.MediaName = oStationName.value if (strStreamType == "podcast") { opener.EBRadioDialogManager_CT2384137.oMedia.SetPodCast(); } else { opener.EBRadioDialogManager_CT2384137.oMedia.SetType(strStreamType); } // update List var selectedIndex = opener.EBRadioDialogManager_CT2384137.SelectedIndex; var oListItem = oMediaList.getItemAtIndex(selectedIndex); oListItem.childNodes[0].setAttribute('label', oStationName.value); oListItem.childNodes[1].setAttribute('label', oStationURL.value); } else //add { var oNewMedia = new EBRadioMedia_CT2384137(); oNewMedia.MediaName = oStationName.value; oNewMedia.MediaURL = oStationURL.value.replace(/\\/g, "~!!~"); oNewMedia.MediaID = oNewMedia.MediaURL; if (strStreamType == "podcast") { oNewMedia.SetPodCast(); } else { oNewMedia.SetType(strStreamType); } if (!opener.EBRadioDialogManager_CT2384137.arrMediaList.Contains(oNewMedia.MediaID)) { opener.EBRadioDialogManager_CT2384137.arrMediaList.Add(oNewMedia.MediaID, oNewMedia); oMediaList.appendChild(oNewMedia.toListItem(opener.document)); } else { //alert(this.MediaExistsText.replace("{{MEDIA_NAME}}",oNewMedia.MediaName)); } } }, AddEditDialog_CheckInput: function(event) { var oStationURL = document.getElementById('txtURL').value; var oStationName = document.getElementById('txtName').value; var oStationType = document.getElementById('cmbStreamType').selectedItem.value; var oOkButton = document.getElementById('btnAccept'); if (!oStationURL || !oStationName || !oStationType) oOkButton.setAttribute('disabled', true); else oOkButton.setAttribute('disabled', false); }, // +++++++++++++ Volume Dialog +++++++++++++++++++ xulSlider: null, timeoutFunc: null, oWindow: null, Volume_OpenDialog: function(VolumeChromePath, VolumeDialogName, dWidth, dHeight, screenX, screenY) { window.openDialog(VolumeChromePath, VolumeDialogName, 'chrome,dependent,titlebar=yes,resizable=no,width=' + dWidth + ',height=' + dHeight + ',screenX=' + screenX + ',screenY=' + screenY, dWidth, dHeight); }, Volume_OnLoad: function(event) { //resize window onload to get exact size. window.resizeTo(window.arguments[0], window.arguments[1]); var GetGripper = function(xulElement) { var arrElements = document.getAnonymousNodes(xulElement); var xulGripper = null; if (arrElements) { for (var i = 0; i < arrElements.length; i++) { if (arrElements[i].tagName == 'xul:gripper') { xulGripper = arrElements[i]; break; } } } return xulGripper }; this.oWindow = EBGlobalManager_CT2384137.GetMostRecentBrowserWindow(); //usage this.oWindow.EBUsageRadio_CT2384137.OnClickVolume(); var oElement = this.oWindow.EBRadioSkinManager_CT2384137.Slider.sliderButton; var thumbWidth = oElement.width; thumbWidth += 'px'; var dHeight = this.oWindow.EBRadioSkinManager_CT2384137.Slider.height; var dWidth = this.oWindow.EBRadioSkinManager_CT2384137.Slider.width; var bgImage = this.oWindow.EBRadioSkinManager_CT2384137.Slider.normalUrl; bgImage = 'url(' + bgImage + ')'; var thImage = this.oWindow.EBRadioSkinManager_CT2384137.Slider.sliderButton.normalUrl; thImage = 'url(' + thImage + ')'; var oSlider = document.getElementById('slider'); var oThumb = document.getElementById('thumb'); var oDialog = document.getElementById('ebRadioVolumeDialog'); var oHbox = document.getElementById('hbox'); var oGripper = GetGripper(oThumb); var iVolume = this.oWindow.EBRadioConsts_CT2384137.NowState.Volume; this.xulSlider = oSlider; oSlider.style.backgroundImage = bgImage; oSlider.setAttribute('curpos', iVolume); oSlider.style.opacity = '0'; this.OnLoadEffect(0); var oThumb_mouseover = 'this.style.backgroundImage="url(' + oElement.hoverUrl + ')"'; var oThumb_mouseout = 'this.style.backgroundImage="url(' + oElement.normalUrl + ')"'; var oThumb_mousedown = 'this.style.backgroundImage="url(' + oElement.pressedUrl + ')"'; var oThumb_mouseup = 'this.style.backgroundImage="url(' + oElement.normalUrl + ')"'; oThumb.style.backgroundImage = thImage; oThumb.setAttribute('ondraggesture', oThumb_mousedown); oThumb.setAttribute('onmouseover', oThumb_mouseover); oThumb.setAttribute('onmouseout', oThumb_mouseout); oThumb.setAttribute('onmousedown', oThumb_mousedown); oThumb.setAttribute('onmouseup', oThumb_mouseup); oThumb.style.width = thumbWidth; oHbox.height = dHeight; this.CheckVolume(); }, OnLoadEffect: function(opacity) { var fOpacity = parseFloat(opacity); if (fOpacity < 1) { fOpacity += 0.2; this.xulSlider.style.opacity = fOpacity; setTimeout(function() { EBRadioDialogManager_CT2384137.OnLoadEffect(fOpacity); }, 40); } }, OnUnLoadEffect: function(opacity) { var fOpacity = parseFloat(opacity); if (fOpacity > 0) { fOpacity -= 0.2; this.xulSlider.style.opacity = fOpacity; setTimeout(function() { EBRadioDialogManager_CT2384137.OnUnLoadEffect(fOpacity); }, 40); } else { window.close(); } }, Volume_OnBlur: function(event) { this.OnUnLoadEffect(1); }, Volume_OnUnLoad: function(event) { clearTimeout(this.timeoutFunc); this.xulSlider.style.opacity = 0; }, CheckVolume: function() { var volume = this.xulSlider.getAttribute('curpos'); if (volume != this.oWindow.EBRadioConsts_CT2384137.NowState.Volume) { this.oWindow.EBRadioIOManager_CT2384137.SetVolumeToRegistry(volume); this.oWindow.EBRadioManager_CT2384137.BroadcastVolume(volume); } this.timeoutFunc = setTimeout(function() { EBRadioDialogManager_CT2384137.CheckVolume(); }, 100); } } var EBRadioGUIManager_CT2384137 = { xulPlay: null, xulStop: null, xulEq: null, xulMenuButton: null, xulMenuButtonContainer: null, xulSliderBG: null, xulSlider: null, xulVolume: null, xulShrinkUnshrink: null, TooltipID: 'EBRadioTooltipID_CT2384137', TooltipRealID: 'EBRadioTooltipRealID_CT2384137', RadioTooltipAnimationID: 'EBRadioTooltipAnimationID_CT2384137', Tooltips: { playing: 'Playing', stopped: 'Stopped', paused: 'Paused', buffering: 'Buffering', waiting: 'Connecting...', mediaEnded: 'Media ended', preparingNewItem: 'Preparing new item', ready: 'Ready', reconncting: 'Reconnecting', shrink: 'Shrink', expand: 'Expand', play: 'Play', stop: 'Stop', pause: 'Pause', volume: 'Volume', undefined: 'Undefined', playingReal: '[Playing in external Real player]' }, Images: { imgPlay: "chrome://iobitcom/skin/radio/RadioPlay.gif", imgPlay_dn: "chrome://iobitcom/skin/radio/RadioPlay_dn.gif", imgPlay_on: "chrome://iobitcom/skin/radio/RadioPlay_on.gif", imgStop: "chrome://iobitcom/skin/radio/RadioStop.gif", imgStop_dn: "chrome://iobitcom/skin/radio/RadioStop_dn.gif", imgStop_on: "chrome://iobitcom/skin/radio/RadioStop_on.gif", imgPause: "chrome://iobitcom/skin/radio/RadioPause.gif", imgPause_dn: "chrome://iobitcom/skin/radio/RadioPause_dn.gif", imgPause_on: "chrome://iobitcom/skin/radio/RadioPause_on.gif", imgRadioEqPause: "chrome://iobitcom/skin/radio/RadioEqualizerSilent.gif", bgCenter: "chrome://iobitcom/skin/radio/RadioStrip.gif", imgSliderLine: "chrome://iobitcom/skin/radio/RadioSliderBG.gif", imgSliderBall: "chrome://iobitcom/skin/radio/RadioSliderBall.gif", imgRadioEqSilent: "chrome://iobitcom/skin/radio/RadioEqualizerSilent.gif", imgRadioEqLoading: "chrome://iobitcom/skin/radio/RadioEqualizerLoading.gif", imgRadioEqPlay: "chrome://iobitcom/skin/radio/RadioEqualizerPlay.gif", imgRadioEqError: "chrome://iobitcom/skin/radio/RadioError.gif", bgCombo: "chrome://iobitcom/skin/radio/RadioCombo.gif", imgShrink: "chrome://iobitcom/skin/radio/RadioMini.gif", imgShrink_dn: "chrome://iobitcom/skin/radio/RadioMini_dn.gif", imgShrink_on: "chrome://iobitcom/skin/radio/RadioMini_on.gif", imgExpand: "chrome://iobitcom/skin/radio/RadioMaxi.gif", imgExpand_dn: "chrome://iobitcom/skin/radio/RadioMaxi_dn.gif", imgExpand_on: "chrome://iobitcom/skin/radio/RadioMaxi_on.gif", imgPlayChev: "chrome://iobitcom/skin/radio/RadioPlayChev.ico", imgStopChev: "chrome://iobitcom/skin/radio/RadioStopChev.ico", imgRadioChev: "chrome://iobitcom/skin/radio/RadioImgChev.ico", imgRealLogo: "chrome://iobitcom/skin/radio/RealLogo.png", imgRealLogo_hover: "chrome://iobitcom/skin/radio/RealLogo.png", imgWMPLogo: "chrome://iobitcom/skin/radio/WMPLogo.png", imgWMPLogo_hover: "chrome://iobitcom/skin/radio/WMPLogo.png", imgPodcast: "chrome://iobitcom/skin/radio/Podcast.png", imgPodcast_hover: "chrome://iobitcom/skin/radio/Podcast.png", imgPlayingReal: "chrome://iobitcom/skin/radio/RadioEqualizerReal.ico", imgRadioTooltip: "chrome://iobitcom/skin/radio/RadioTooltipStopped.gif", imgRadioTooltipPl: "chrome://iobitcom/skin/radio/RadioTooltipPlaying.gif", imgRadioTooltipSt: "chrome://iobitcom/skin/radio/RadioTooltipStopped.gif", imgVolume: "chrome://iobitcom/skin/radio/RadioVolume.gif", imgVolume_dn: "chrome://iobitcom/skin/radio/RadioVolume_dn.gif", imgVolume_on: "chrome://iobitcom/skin/radio/RadioVolume_on.gif", imgSliderBG: "" }, Init: function() { this.xulPlay = document.getElementById(EBRadioConsts_CT2384137.RadioPlayID); this.xulStop = document.getElementById(EBRadioConsts_CT2384137.RadioStopID); this.xulMenuButton = document.getElementById(EBRadioConsts_CT2384137.RadioMenuButtonID); this.xulMenuButtonContainer = document.getElementById(EBRadioConsts_CT2384137.RadioMenuButtonContainerID); this.xulSliderBG = document.getElementById(EBRadioConsts_CT2384137.RadioSliderContainerID); this.xulSlider = document.getElementById(EBRadioConsts_CT2384137.RadioSliderID); this.xulShrink = document.getElementById(EBRadioConsts_CT2384137.RadioShrinkID); this.xulEq = document.getElementById(EBRadioConsts_CT2384137.RadioEqID); //if radio expanded if (this.xulMenuButton) this.xulMenuButton.setAttribute('tooltip', this.TooltipID); this.CreateTooltip(); this.CreateRealTooltip(); }, SetNewState: function(strState, strError) { //states: 0-undefined, 1-stopped, 2-paused, 3-playing, 6-buffering, 7-waiting // 8-media ended, 9-preparing new media item, 10-ready, 11-reconnecting switch (strState) { case "undefined": this.SetUndefined(); break; case "stopped": this.SetStopped(); break; case "paused": this.SetPause(); break; case "playing": this.SetPlay(); break; case "buffering": this.SetBuffering(); break; case "waiting": this.SetWaiting(); break; case "media ended": this.SetMediaEnded(); break; case "preparing new item": this.SetPreparingNewItem; break; case "ready": this.SetReady(); break; case "reconnecting": this.Reconnecting(); break; case "error": this.SetError(strError); break; case "real": this.SetPlayingReal(); break; } }, SetPlayingReal: function() { if (this.xulEq) { this.xulEq.setAttribute('tooltip', this.TooltipRealID); this.xulVolume.setAttribute('tooltip', this.TooltipRealID); this.xulEq.removeAttribute('tooltiptext'); this.xulEq.setAttribute('src', EBRadioSkinManager_CT2384137.Indicator.stoppedUrl); this.xulEq.setAttribute('onclick', ''); this.xulEq.setAttribute('style', ''); } if (this.xulVolume) this.xulVolume.removeAttribute('tooltiptext'); EBRadioConsts_CT2384137.RadioMenu.SetActiveMenuItemImage(this.Images.imgRealLogo); this.Images.imgRadioTooltip = EBRadioSkinManager_CT2384137.Indicator.stoppedUrl; this.OnPause(); }, SetError: function(strError) { var strAdditional, troubleShootPage; if (this.xulEq) { this.xulEq.setAttribute('src', EBRadioSkinManager_CT2384137.Indicator.errorUrl); this.xulEq.setAttribute('tooltiptext', strError); } if (strError && strError.match('Cannot find Windows Media Player, click here for troubleshoot')) { strAdditional = EBRadioConsts_CT2384137.ErrorPage; troubleShootPage = EBActionManager_CT2384137.GetWebServerURL(strAdditional) + '#aFirefoxPlugin'; if (this.xulEq) { this.xulEq.onclick = function(e) { EBWeb_CT2384137.LoadURLInNewWindow(troubleShootPage); }; this.xulEq.setAttribute('style', 'cursor:pointer'); } } else if (strError && strError.match('Cannot find Real Player')) { strAdditional = EBRadioConsts_CT2384137.GetRealURL; troubleShootPage = EBActionManager_CT2384137.GetWebServerURL(strAdditional); if (this.xulEq) { this.xulEq.onclick = function(e) { EBWeb_CT2384137.LoadURLInNewWindow(troubleShootPage); }; this.xulEq.setAttribute('style', 'cursor:pointer'); } } if (this.xulVolume) { this.xulVolume.setAttribute('tooltiptext', EBRadioGUIManager_CT2384137.Tooltips.volume); this.xulVolume.removeAttribute('tooltip'); } EBRadioConsts_CT2384137.RadioMenu.SetActiveMenuItemImage(this.Images.imgRadioEqError); this.Images.imgRadioTooltip = this.Images.imgRadioEqError; this.OnPause(); }, SetUndefined: function() { if (this.xulEq) { this.xulEq.setAttribute('src', EBRadioSkinManager_CT2384137.Indicator.errorUrl); this.xulEq.setAttribute('tooltiptext', this.Tooltips.undefined); var strAdditional = EBRadioConsts_CT2384137.ErrorPage; var troubleShootPage = EBActionManager_CT2384137.GetWebServerURL(strAdditional); this.xulEq.setAttribute('onclick', 'EBWeb_CT2384137.LoadURLInNewWindow("' + troubleShootPage + '")'); this.xulEq.setAttribute('style', 'cursor:pointer'); } EBRadioConsts_CT2384137.RadioMenu.SetActiveMenuItemImage(this.Images.imgRadioEqError); if (this.xulVolume) { this.xulVolume.setAttribute('tooltiptext', EBRadioGUIManager_CT2384137.Tooltips.volume); this.xulVolume.removeAttribute('tooltip'); } this.Images.imgRadioTooltip = this.Images.imgRadioEqError; this.OnPause(); }, SetPlayChevron: function() { var btnPlay = document.getElementById(EBRadioConsts_CT2384137.RadioPlayButtonChevronID); var image = EBRadioSkinManager_CT2384137.ObjSkinDef.ChevronStopImageUrl; btnPlay.setAttribute('label', this.Tooltips.stop); btnPlay.setAttribute('image', image); btnPlay.setAttribute('oncommand', 'EBRadioManager_CT2384137.OnPause();event.cancelBubble = true;'); }, SetPauseChevron: function() { var btnPlay = document.getElementById(EBRadioConsts_CT2384137.RadioPlayButtonChevronID); var image = EBRadioSkinManager_CT2384137.ObjSkinDef.ChevronPlayImageUrl; btnPlay.setAttribute('label', this.Tooltips.play); btnPlay.setAttribute('image', image); btnPlay.setAttribute('oncommand', 'EBRadioManager_CT2384137.OnPlay();event.cancelBubble = true;'); }, SetPause: function() { if (this.xulEq) { this.xulEq.setAttribute('src', EBRadioSkinManager_CT2384137.Indicator.stoppedUrl); this.xulEq.setAttribute('tooltiptext', this.Tooltips.paused); this.xulEq.setAttribute('onclick', ''); this.xulEq.setAttribute('style', ''); } if (this.xulVolume) { this.xulVolume.setAttribute('tooltiptext', EBRadioGUIManager_CT2384137.Tooltips.volume); this.xulVolume.removeAttribute('tooltip'); } this.Images.imgRadioTooltip = this.Images.imgRadioTooltipSt; if (EBRadioConsts_CT2384137.NowState.InChevron) this.SetPauseChevron(); EBRadioConsts_CT2384137.RadioMenu.SetActiveMenuItemImage(this.Images.imgWMPLogo); }, SetPlay: function() { if (this.xulEq) { this.xulEq.setAttribute('src', EBRadioSkinManager_CT2384137.Indicator.playingUrl); this.xulEq.setAttribute('tooltiptext', this.Tooltips.playing); this.xulEq.setAttribute('onclick', ''); this.xulEq.setAttribute('style', ''); } EBRadioConsts_CT2384137.RadioMenu.SetActiveMenuItemImage(this.Images.imgRadioEqPlay); this.Images.imgRadioTooltip = this.Images.imgRadioTooltipPl; if (this.xulVolume) { this.xulVolume.setAttribute('tooltiptext', EBRadioGUIManager_CT2384137.Tooltips.volume); this.xulVolume.removeAttribute('tooltip'); } this.OnPlay(); if (EBRadioConsts_CT2384137.NowState.InChevron) this.SetPlayChevron(); }, SetBuffering: function() { if (this.xulEq) { this.xulEq.setAttribute('src', EBRadioSkinManager_CT2384137.Indicator.bufferingUrl); this.xulEq.setAttribute('tooltiptext', this.Tooltips.buffering); this.xulEq.setAttribute('onclick', ''); this.xulEq.setAttribute('style', ''); } if (this.xulVolume) { this.xulVolume.setAttribute('tooltiptext', EBRadioGUIManager_CT2384137.Tooltips.volume); this.xulVolume.removeAttribute('tooltip'); } EBRadioConsts_CT2384137.RadioMenu.SetActiveMenuItemImage(this.Images.imgRadioEqLoading); this.Images.imgRadioTooltip = this.Images.imgRadioTooltipSt; this.OnPlay(); }, SetWaiting: function() { if (this.xulEq) { this.xulEq.setAttribute('src', EBRadioSkinManager_CT2384137.Indicator.bufferingUrl); this.xulEq.setAttribute('tooltiptext', this.Tooltips.waiting); this.xulEq.setAttribute('onclick', ''); this.xulEq.setAttribute('style', ''); } if (this.xulVolume) { this.xulVolume.setAttribute('tooltiptext', EBRadioGUIManager_CT2384137.Tooltips.volume); this.xulVolume.removeAttribute('tooltip'); } EBRadioConsts_CT2384137.RadioMenu.SetActiveMenuItemImage(this.Images.imgRadioEqLoading); this.Images.imgRadioTooltip = this.Images.imgRadioTooltipSt; this.OnPlay(); }, SetMediaEnded: function() { if (this.xulEq) { this.xulEq.setAttribute('src', EBRadioSkinManager_CT2384137.Indicator.stoppedUrl); this.xulEq.setAttribute('tooltiptext', this.Tooltips.mediaEnded); this.xulEq.setAttribute('onclick', ''); this.xulEq.setAttribute('style', ''); } if (this.xulVolume) { this.xulVolume.setAttribute('tooltiptext', EBRadioGUIManager_CT2384137.Tooltips.volume); this.xulVolume.removeAttribute('tooltip'); } EBRadioConsts_CT2384137.RadioMenu.SetActiveMenuItemImage(this.Images.imgWMPLogo); this.Images.imgRadioTooltip = this.Images.imgRadioTooltipSt; this.OnPause(); }, SetPreparingNewItem: function() { if (this.xulEq) { this.xulEq.setAttribute('src', EBRadioSkinManager_CT2384137.Indicator.bufferingUrl); this.xulEq.setAttribute('tooltiptext', this.Tooltips.preparingNewItem); this.xulEq.setAttribute('onclick', ''); this.xulEq.setAttribute('style', ''); } if (this.xulVolume) { this.xulVolume.setAttribute('tooltiptext', EBRadioGUIManager_CT2384137.Tooltips.volume); this.xulVolume.removeAttribute('tooltip'); } EBRadioConsts_CT2384137.RadioMenu.SetActiveMenuItemImage(this.Images.imgRadioEqLoading); this.Images.imgRadioTooltip = this.Images.imgRadioTooltipSt; this.OnPlay(); }, SetStopped: function() { if (this.xulEq) { this.xulEq.setAttribute('src', EBRadioSkinManager_CT2384137.Indicator.stoppedUrl); this.xulEq.setAttribute('tooltiptext', this.Tooltips.stopped); this.xulEq.setAttribute('onclick', ''); this.xulEq.setAttribute('style', ''); } this.Images.imgRadioTooltip = this.Images.imgRadioTooltipSt; this.OnPause(); EBRadioConsts_CT2384137.RadioMenu.SetActiveMenuItemImage(this.Images.imgWMPLogo); if (EBRadioConsts_CT2384137.NowState.InChevron) this.SetStopChevron(); }, SetReady: function() { if (this.xulEq) { this.xulEq.setAttribute('src', EBRadioSkinManager_CT2384137.Indicator.stoppedUrl); this.xulEq.setAttribute('tooltiptext', this.Tooltips.ready); this.xulEq.setAttribute('onclick', ''); this.xulEq.setAttribute('style', ''); } if (this.xulVolume) { this.xulVolume.setAttribute('tooltiptext', EBRadioGUIManager_CT2384137.Tooltips.volume); this.xulVolume.removeAttribute('tooltip'); } EBRadioConsts_CT2384137.RadioMenu.SetActiveMenuItemImage(this.Images.imgWMPLogo); this.Images.imgRadioTooltip = this.Images.imgRadioTooltipSt; this.OnPause(); }, Reconnecting: function() { if (this.xulEq) { this.xulEq.setAttribute('src', EBRadioSkinManager_CT2384137.Indicator.bufferingUrl); this.xulEq.setAttribute('tooltiptext', this.Tooltips.reconnecting); this.xulEq.setAttribute('onclick', ''); } if (this.xulVolume) { this.xulVolume.setAttribute('tooltiptext', EBRadioGUIManager_CT2384137.Tooltips.volume); this.xulVolume.removeAttribute('tooltip'); } EBRadioConsts_CT2384137.RadioMenu.SetActiveMenuItemImage(this.Images.imgRadioEqLoading); this.Images.imgRadioTooltip = this.Images.imgRadioTooltipSt; this.OnPlay(); }, OnPlay: function() { EBRadioSkinManager_CT2384137.ChangePlayToPauseButton(null, null); }, OnPause: function() { EBRadioSkinManager_CT2384137.ChangePauseToPlayButton(null, null); }, SetShrink: function() { if (this.xulShrink) { EBRadioConsts_CT2384137.NowState.IsShrinked = true; EBRadioSkinManager_CT2384137.SetShrink(); } }, SetExpand: function() { if (this.xulShrink) { EBRadioConsts_CT2384137.NowState.IsShrinked = false; EBRadioSkinManager_CT2384137.SetExpand(); } }, SetStation: function(strName, strMediaType, strMediaURL) { //if radio expanded if (this.xulMenuButton) { this.xulMenuButton.setAttribute('label', strName); this.xulMenuButton.setAttribute('MediaType', strMediaType); this.xulMenuButton.setAttribute('MediaURL', strMediaURL); } }, GetRadioChevronImage: function() { var strImage = ''; if (EBRadioSkinManager_CT2384137.ObjSkinDef) strImage = EBRadioSkinManager_CT2384137.ObjSkinDef.ChevronMenuImageUrl; else strImage = this.Images.imgRadioChev; return strImage; }, CreateTooltip: function() { if (!this.xulMenuButton) return; var strMainPopupSetID = EBComponentsConsts_CT2384137.MainPopupSetID; var objMainPopupSet = document.getElementById(strMainPopupSetID); var strTooltipID = this.TooltipID; var strOrient = 'horisontal'; //patch to 1.0.* - send the toolbarbutton id to retrieve the label and tooltip instead of //the toolbarbutton object itself as a param to the onpopupshowing event //set addEventListener also fails to work in 1.0.* var strToolbarButtonID = this.xulMenuButton.getAttribute('id'); var strOnPopupShowing = ""; var objXULTooltip = EBXULFactory_CT2384137.CreateTooltip(strTooltipID, strOrient, strOnPopupShowing); objXULTooltip.addEventListener("popupshowing", function(event) { event.stopPropagation(); return EBRadioGUIManager_CT2384137.OnTooltipPopupShowing(false, event, strToolbarButtonID); }, false); objXULTooltip.setAttribute('noautohide', 'true'); objMainPopupSet.appendChild(objXULTooltip); }, CreateRealTooltip: function() { if (!this.xulMenuButton) return; var strMainPopupSetID = EBComponentsConsts_CT2384137.MainPopupSetID; var objMainPopupSet = document.getElementById(strMainPopupSetID); var strTooltipID = this.TooltipRealID; var strOrient = 'horisontal'; //patch to 1.0.* - send the toolbarbutton id to retrieve the label and tooltip instead of //the toolbarbutton object itself as a param to the onpopupshowing event //set addEventListener also fails to work in 1.0.* var strToolbarButtonID = this.xulMenuButton.getAttribute('id'); var strOnPopupShowing = ""; var objXULTooltip = EBXULFactory_CT2384137.CreateTooltip(strTooltipID, strOrient, strOnPopupShowing); objXULTooltip.addEventListener("popupshowing", function(event) { event.stopPropagation(); return EBRadioGUIManager_CT2384137.OnTooltipPopupShowing(true, event, strToolbarButtonID); }, false); objXULTooltip.setAttribute('noautohide', 'true'); objMainPopupSet.appendChild(objXULTooltip); }, OnTooltipPopupShowing: function(isReal, event, strToolbarButtonID) { if (event.eventPhase != 2) return false; var XULTooltip = event.target; var XULToolbarButton = document.getElementById(strToolbarButtonID); //check to see if the mouse is hover the toolbarbutton //to prevent this tooltip shown on this toolbar buttons childs if (!EBGlobalManager_CT2384137.IsElementInScreenCoordinates(XULToolbarButton) && !isReal) return false; while (XULTooltip.childNodes.length > 0) XULTooltip.removeChild(XULTooltip.firstChild); var mediaName = XULToolbarButton.getAttribute('label'); var mediaType = XULToolbarButton.getAttribute('MediaType'); var mediaURL = XULToolbarButton.getAttribute('MediaURL'); var strImage = ''; switch (mediaType) { case EBRadioConsts_CT2384137.PlayerTypes.MediaPlayer: strImage = this.Images.imgWMPLogo; break; case EBRadioConsts_CT2384137.PlayerTypes.RealPlayer: strImage = this.Images.imgRealLogo; mediaName += ' ' + this.Tooltips.playingReal; break; case "Podcast": strImage = this.Images.imgPodcast; break; } var XULTooltipCont = EBXULFactory_CT2384137.CreateHBox('', '', ''); var XULLeftCont = EBXULFactory_CT2384137.CreateHBox('', '', ''); var XULRightCont = EBXULFactory_CT2384137.CreateVBox('', '', ''); var XULRightTop = EBXULFactory_CT2384137.CreateHBox('', '', ''); var XULRightBottom = EBXULFactory_CT2384137.CreateHBox('', '', ''); var XULLeftImage = EBXULFactory_CT2384137.CreateImage(EBRadioGUIManager_CT2384137.Images.imgRadioTooltip, '', ''); var XULMediaImage = EBXULFactory_CT2384137.CreateImage(strImage, '', ''); var XULMediaName = EBXULFactory_CT2384137.CreateLabel(mediaName, ''); XULLeftCont.appendChild(XULLeftImage); XULLeftCont.setAttribute('style', 'margin: 3px 10px 3px 10px'); XULRightTop.appendChild(XULMediaImage); XULRightTop.appendChild(XULMediaName); XULRightTop.setAttribute('style', 'margin: 7px 3px 0px 0px'); XULRightCont.appendChild(XULRightTop); XULRightCont.appendChild(XULRightBottom); XULTooltipCont.appendChild(XULLeftCont); XULTooltipCont.appendChild(XULRightCont); XULTooltipCont.setAttribute('style', ''); XULTooltip.appendChild(XULTooltipCont); return true; } }; //Radio IO Manager Class var EBRadioIOManager_CT2384137 = { SetStationToRegistry: function(name, url, mediaType, menuID, isPodcast, mediaID) { EBToolbarPreferenceManager_CT2384137.SetPref(EBRadioConsts_CT2384137.Registry.StationName, encodeURIComponent(name)); EBToolbarPreferenceManager_CT2384137.SetPref(EBRadioConsts_CT2384137.Registry.StationURL, url); EBToolbarPreferenceManager_CT2384137.SetPref(EBRadioConsts_CT2384137.Registry.MediaType, mediaType); EBToolbarPreferenceManager_CT2384137.SetPref(EBRadioConsts_CT2384137.Registry.MenuSelectedID, menuID); EBToolbarPreferenceManager_CT2384137.SetPref(EBRadioConsts_CT2384137.Registry.IsPodcast, isPodcast); EBToolbarPreferenceManager_CT2384137.SetPref(EBRadioConsts_CT2384137.Registry.MediaID, mediaID); }, GetUseRealActiveX: function() { return EBToolbarPreferenceManager_CT2384137.GetPref(EBRadioConsts_CT2384137.Registry.UseRealActiveX); }, SetShrinkedToRegistry: function(state) { EBToolbarPreferenceManager_CT2384137.SetPref(EBRadioConsts_CT2384137.Registry.Shrinked, state); }, GetShrinkedFromRegistry: function() { return EBToolbarPreferenceManager_CT2384137.GetPref(EBRadioConsts_CT2384137.Registry.Shrinked); }, SetVolumeToRegistry: function(volume) { EBToolbarPreferenceManager_CT2384137.SetPref(EBRadioConsts_CT2384137.Registry.Volume, volume); }, GetVolumeFromRegistry: function() { return EBToolbarPreferenceManager_CT2384137.GetPref(EBRadioConsts_CT2384137.Registry.Volume); }, GetStationNameFromRegistry: function() { return decodeURIComponent(EBToolbarPreferenceManager_CT2384137.GetPref(EBRadioConsts_CT2384137.Registry.StationName)); }, GetStationURLFromRegistry: function() { return EBToolbarPreferenceManager_CT2384137.GetPref(EBRadioConsts_CT2384137.Registry.StationURL); }, GetMediaTypeFromRegistry: function() { return EBToolbarPreferenceManager_CT2384137.GetPref(EBRadioConsts_CT2384137.Registry.MediaType); }, GetMenuSelectedIdFromRegistry: function() { return EBToolbarPreferenceManager_CT2384137.GetPref(EBRadioConsts_CT2384137.Registry.MenuSelectedID); }, GetStationIdFromRegistry: function() { return EBToolbarPreferenceManager_CT2384137.GetPref(EBRadioConsts_CT2384137.Registry.MediaID); }, GetIsPodcastFromRegistry: function() { return EBToolbarPreferenceManager_CT2384137.GetPref(EBRadioConsts_CT2384137.Registry.IsPodcast); }, Init: function(oRadio) { if (oRadio.ComponentItem.PredefinedListInterval) { EBRadioConsts_CT2384137.CheckInterval = oRadio.ComponentItem.PredefinedListInterval * 60 * 1000; } if (oRadio.ComponentItem.PodcastInterval) { EBRadioConsts_CT2384137.PodcastCheckInterval = oRadio.ComponentItem.PodcastInterval; } if (oRadio.ComponentItem.RadioServerURL) { EBRadioConsts_CT2384137.ServerURL = oRadio.ComponentItem.RadioServerURL; } EBRadioServerComm_CT2384137.RequestPublisherMedia(); }, SaveMediaXMLToFile: function(XMLStationsNode, strRadioFullPath) { //var strRadioFolder = EBRadioConsts_CT2384137.FolderName; //var strRadioFullPath = strRadioFolder + EBDirIO_CT2384137.sep + MediaFile; var oFileMedia = EBIOManager_CT2384137.CreateToolbarFile(strRadioFullPath); var strXML = EBXML_CT2384137.GetStringXml(XMLStationsNode); EBFileIO_CT2384137.write(oFileMedia, strXML, "", EBGlobalConsts_CT2384137.DefaultCharset); }, LoadMediaFromFile: function(which) { var FileName = ''; var strRadioFolder = EBRadioConsts_CT2384137.FolderName; if (which == EBRadioConsts_CT2384137.MediaFileType.Publisher) { FileName = EBRadioConsts_CT2384137.PublisherMediaFile; if (!EBMCManager_CT2384137.IsSelectedOriginalCommunity()) strRadioFolder = EBMCManager_CT2384137.GetCommunitySettingsPath() + strRadioFolder; } else if (which == EBRadioConsts_CT2384137.MediaFileType.User) { this.GetUserMediaFromCookies(); FileName = EBRadioConsts_CT2384137.UserMediaFile; } else if (which == EBRadioConsts_CT2384137.MediaFileType.Recent) FileName = EBRadioConsts_CT2384137.RecentMediaFile; else if (which == EBRadioConsts_CT2384137.MediaFileType.IP) FileName = EBRadioConsts_CT2384137.IPMediaFile; else return null; var strRadioFullPath = strRadioFolder + EBDirIO_CT2384137.sep + FileName; var oFile = EBIOManager_CT2384137.CreateToolbarFile(strRadioFullPath); var strXMLMedia = EBFileIO_CT2384137.read(oFile, EBGlobalConsts_CT2384137.DefaultCharset); var XMLMedia = null; if (strXMLMedia) XMLMedia = EBXML_CT2384137.GetXmlDocument(strXMLMedia); //check if file is valid var isPublisherRadio = EBComponentsManager_CT2384137.GetRadioComponent().ComponentItem.objData.isPublisher; if (strXMLMedia.length == 0) { if (which == EBRadioConsts_CT2384137.MediaFileType.Publisher && isPublisherRadio) { EBToolbarPreferenceManager_CT2384137.SetPref(EBRadioConsts_CT2384137.Registry.LastCheckTime, "0", true) EBToolbarPreferenceManager_CT2384137.SetPref(EBRadioConsts_CT2384137.Registry.LastUpdateServerTime, "0", true); } else if (which == EBRadioConsts_CT2384137.MediaFileType.Recent) return new EBRadioRecentMediaList_CT2384137(); else if (which == EBRadioConsts_CT2384137.MediaFileType.IP && (!isPublisherRadio || (isPublisherRadio && EBRadioConsts_CT2384137.EnableIPStations))) { EBToolbarPreferenceManager_CT2384137.SetPref(EBRadioConsts_CT2384137.Registry.LastCheckTime, "0", true) EBToolbarPreferenceManager_CT2384137.SetPref(EBRadioConsts_CT2384137.Registry.LastUpdateServerIPTime, "0", true); } else return new EBRadioMediaList_CT2384137(); } if (!XMLMedia) return null; var MediaList = null; if (which == EBRadioConsts_CT2384137.MediaFileType.Recent) MediaList = new EBRadioRecentMediaList_CT2384137(XMLMedia.documentElement); else MediaList = new EBRadioMediaList_CT2384137(XMLMedia.documentElement); return MediaList; }, DeleteRecentStations: function() { var strFileName = EBRadioConsts_CT2384137.FolderName + EBDirIO_CT2384137.sep + EBRadioConsts_CT2384137.RecentMediaFile; if (!EBIOManager_CT2384137.IsToolbarFileExists(strFileName)) return; var oFile = EBIOManager_CT2384137.CreateToolbarFile(strFileName); if (oFile) EBFileIO_CT2384137.unlink(oFile); }, GetUserMediaFromCookies: function() { var Imported = EBToolbarPreferenceManager_CT2384137.GetPref(EBRadioConsts_CT2384137.Registry.CookiesImportComplete); if (Imported) return; var uri = Components.classes["@mozilla.org/network/standard-url;1"].createInstance(Components.interfaces.nsIURI); var oCookieManager = Components.classes["@mozilla.org/cookieService;1"].getService(Components.interfaces.nsICookieService); uri.spec = EBRadioConsts_CT2384137.StationsCookie.DomainConduit; var strCookies = oCookieManager.getCookieString(uri, null); if (!strCookies || !strCookies.match(EBRadioConsts_CT2384137.StationsCookie.Name)) { uri.spec = EBRadioConsts_CT2384137.StationsCookie.DomainSite2; strCookies = oCookieManager.getCookieString(uri, null); if (!strCookies || !strCookies.match(EBRadioConsts_CT2384137.StationsCookie.Name)) { uri.spec = EBRadioConsts_CT2384137.StationsCookie.DomainEffectiveBrand; strCookies = oCookieManager.getCookieString(uri, null); if (!strCookies) { return; } } } var arrCookies = strCookies.split(";"); var i = 0; while (!arrCookies[i].match(EBRadioConsts_CT2384137.StationsCookie.Name) && i < arrCookies.length - 1) { i++; } if (!arrCookies[i].match(EBRadioConsts_CT2384137.StationsCookie.Name)) { EBToolbarPreferenceManager_CT2384137.SetPref(EBRadioConsts_CT2384137.Registry.CookiesImportComplete, true); return; } var strMediaList = arrCookies[i].replace(EBRadioConsts_CT2384137.StationsCookie.Name + "=", "") strMediaList = decodeURIComponent(strMediaList); var arrMediaList = strMediaList.split("!!"); var strXMLMedia = EBXML_CT2384137.CreateXmlNodeStartString(EBRadioConsts_CT2384137.xmlTags.RADIO_STATIONS); var arrMedia = null; for (i = 0; i < arrMediaList.length; i++) { arrMedia = arrMediaList[i].split("|"); strXMLMedia += EBXML_CT2384137.CreateXmlNodeStartString(EBRadioConsts_CT2384137.xmlTags.RADIO_STATION); strXMLMedia += EBXML_CT2384137.CreateXmlNodeString(EBRadioConsts_CT2384137.xmlTags.STATION_ID, arrMedia[1]); strXMLMedia += EBXML_CT2384137.CreateXmlNodeString(EBRadioConsts_CT2384137.xmlTags.STATION_NAME, decodeURIComponent(arrMedia[2])); strXMLMedia += EBXML_CT2384137.CreateXmlNodeString(EBRadioConsts_CT2384137.xmlTags.STATION_URL, arrMedia[3]); strXMLMedia += EBXML_CT2384137.CreateXmlNodeString(EBRadioConsts_CT2384137.xmlTags.TYPE, arrMedia[4]); strXMLMedia += EBXML_CT2384137.CreateXmlNodeString(EBRadioConsts_CT2384137.xmlTags.CONTENT_TYPE, arrMedia[5]); strXMLMedia += EBXML_CT2384137.CreateXmlNodeEndString(EBRadioConsts_CT2384137.xmlTags.RADIO_STATION); } strXMLMedia += EBXML_CT2384137.CreateXmlNodeEndString(EBRadioConsts_CT2384137.xmlTags.RADIO_STATIONS); strXMLMedia = EBXML_CT2384137.LegalizeEBXML(strXMLMedia); var XMLMedia = EBXML_CT2384137.GetXmlDocument(strXMLMedia); var UserMediaFileName = EBRadioConsts_CT2384137.FolderName + EBDirIO_CT2384137.sep + EBRadioConsts_CT2384137.UserMediaFile; this.SaveMediaXMLToFile(XMLMedia, UserMediaFileName); EBToolbarPreferenceManager_CT2384137.SetPref(EBRadioConsts_CT2384137.Registry.CookiesImportComplete, true); }, SetPlayState: function(state) { EBToolbarPreferenceManager_CT2384137.SetPref(EBRadioConsts_CT2384137.Registry.PlayState, state); }, GetPlayState: function() { return EBToolbarPreferenceManager_CT2384137.GetPref(EBRadioConsts_CT2384137.Registry.PlayState); }, SetShowState: function(state) { EBToolbarPreferenceManager_CT2384137.SetPref(EBRadioConsts_CT2384137.Registry.ShowState, state); }, GetShowState: function() { return EBToolbarPreferenceManager_CT2384137.GetPref(EBRadioConsts_CT2384137.Registry.ShowState); }, SetPlayingStation: function(ID, name) { EBToolbarPreferenceManager_CT2384137.SetPref(EBRadioConsts_CT2384137.Registry.StationID, ID); EBToolbarPreferenceManager_CT2384137.SetPref(EBRadioConsts_CT2384137.Registry.StationName, name); }, GetPlayingStationName: function() { return EBToolbarPreferenceManager_CT2384137.GetPref(EBRadioConsts_CT2384137.Registry.StationName); }, GetPlayingStationID: function() { return EBToolbarPreferenceManager_CT2384137.GetPref(EBRadioConsts_CT2384137.Registry.StationID); }, SetErrorString: function(strError) { EBToolbarPreferenceManager_CT2384137.SetPref(EBRadioConsts_CT2384137.Registry.ErrorString, strError); }, GetErrorString: function() { return EBToolbarPreferenceManager_CT2384137.GetPref(EBRadioConsts_CT2384137.Registry.ErrorString); }, FillStationsInfo: function(xmlDoc, tagName) { var XMLPublisherNode = null; var xmlStations = null; var strXmlText = ''; var strLUT = '0'; var obj = new Object(); XMLPublisherNode = EBXML_CT2384137.SelectSingleNode(xmlDoc, tagName); if (XMLPublisherNode) { strXmlText = EBXML_CT2384137.GetXmlNodeValue(XMLPublisherNode); if (strXmlText != EBRadioConsts_CT2384137.XMLResponseErrorReply) { obj.error = false; for (var i = 0; i < XMLPublisherNode.childNodes.length; i++) { if (XMLPublisherNode.childNodes[i].tagName == EBRadioConsts_CT2384137.XMLRadioStations) { xmlStations = XMLPublisherNode.childNodes[i]; } else if (XMLPublisherNode.childNodes[i].tagName == EBRadioConsts_CT2384137.XMLLUT) { strLUT = EBXML_CT2384137.GetXmlNodeValue(XMLPublisherNode.childNodes[i]); } } if (xmlStations && xmlStations.childNodes.length == 0) xmlStations = null; } else obj.error = true; if (xmlStations) { strXmlText = EBXML_CT2384137.GetXmlNodeValue(xmlStations); if (strXmlText == EBRadioConsts_CT2384137.XMLResponseNoChange) xmlStations = null; } } obj.xmlStations = xmlStations; obj.lut = strLUT; return obj; }, NullifyTimes: function() { EBToolbarPreferenceManager_CT2384137.SetPref(EBRadioConsts_CT2384137.Registry.LastCheckTime, "0", true); EBToolbarPreferenceManager_CT2384137.SetPref(EBRadioConsts_CT2384137.Registry.LastUpdateServerTime, "0", true); EBToolbarPreferenceManager_CT2384137.SetPref(EBRadioConsts_CT2384137.Registry.LastUpdateServerIPTime, "0", true); }, InvalidateCache: function(bValue) { var bOldValud = EBToolbarPreferenceManager_CT2384137.GetPref(EBRadioConsts_CT2384137.Registry.InvalidateCache, true); if (typeof bValue != "undefined") EBToolbarPreferenceManager_CT2384137.SetPref(EBRadioConsts_CT2384137.Registry.InvalidateCache, bValue, true); return bOldValud; } } //Radio Manager var EBRadioManager_CT2384137 = { isAfterRefresh: false, observer: null, isLastEventError: false, UnloadToolbar: function(isShown) { EBRadioCore_CT2384137.UnloadToolbar(isShown); if (isShown) { var oRadio = EBComponentsManager_CT2384137.GetRadioComponent(); EBRadioSkinManager_CT2384137.UnloadSkin(oRadio, 1); } if (this.observer) { this.observer.unregister(); this.observer = null; } }, RadioBuildComplete: function() { this.Init(true); }, ApplySkin: function() { var oRadio = EBComponentsManager_CT2384137.GetRadioComponent(); EBRadioSkinManager_CT2384137.LoadSkin(oRadio, 1); }, CheckIfSkinLoaded: function() { if (!EBRadioSkinManager_CT2384137.ObjSkinDef) EBRadioSkinManager_CT2384137.LoadDefaultSkin(); }, BroadcastVolume: function(volume) { var objWindowsManager = Components.classes['@mozilla.org/appshell/window-mediator;1'] .getService(Components.interfaces.nsIWindowMediator); var objEnumerator = objWindowsManager.getEnumerator('navigator:browser'); while (objEnumerator.hasMoreElements()) { var objWindow = objEnumerator.getNext(); if (objWindow.EBRadioManager_CT2384137) { try { objWindow.EBRadioConsts_CT2384137.NowState.Volume = volume; objWindow.EBRadioConsts_CT2384137.xulSlider.setAttribute('curpos', volume); } catch (ex) { } } } EBRadioCore_CT2384137.BroadcastVolume(volume); }, SetInChevron: function(xulChevronMenu) { var XULMenu = EBRadioConsts_CT2384137.RadioMenu.GetXULMenu(); while (xulChevronMenu.childNodes.length > 0) { xulChevronMenu.removeChild(xulChevronMenu.firstChild); } xulChevronMenu.appendChild(XULMenu); EBRadioConsts_CT2384137.NowState.InChevron = true; }, SetOutChevron: function() { if (!EBRadioConsts_CT2384137.RadioMenu) return; var XULMenu = EBRadioConsts_CT2384137.RadioMenu.GetXULMenu(); var RadioMenuButtonID = EBRadioConsts_CT2384137.RadioMenuButtonID; var menuButton = document.getElementById(RadioMenuButtonID) if (menuButton) { while (menuButton.childNodes.length > 0) { menuButton.removeChild(menuButton.firstChild); } menuButton.appendChild(XULMenu); } EBRadioConsts_CT2384137.NowState.InChevron = false; }, StateManager: function(strState, strError) { if (EBRadioConsts_CT2384137.NowState.PlayState != strState) { if (!EBRadioConsts_CT2384137.NowState.IsUserPause) { if (strState == "stopped" && EBRadioConsts_CT2384137.NowState.IsPodcast) { this.PlayNextPodcastItem(); } } this.BroadcastNewState(strState, strError); //client log - radio error if (strState == "error") { if (!this.isAfterRefresh) { var objToolbarInfo = new oToolbar_CT2384137.clientLog.toolbarInfo( EBGlobalConsts_CT2384137.ToolbarVersion, EBGlobalConsts_CT2384137.ToolbarCTID, EBActionManager_CT2384137.GetCTID(), EBGlobalManager_CT2384137.GetOS(), EBGlobalManager_CT2384137.GetBrowserNameAndVersion()); var msg = ""; var data = EBXML_CT2384137.CreateXmlNodeStartString("ERR_DESCRIPTION"); data += EBXML_CT2384137.CreateXmlNodeString("PLAYER_MSG", strError); data += EBXML_CT2384137.CreateXmlNodeString("STATION_URL", EBRadioConsts_CT2384137.NowState.StationURL); data += EBXML_CT2384137.CreateXmlNodeEndString("ERR_DESCRIPTION"); var objEvent = new oToolbar_CT2384137.clientLog.event(20, "ERROR", msg, data); oToolbar_CT2384137.clientLog.manager.send(objToolbarInfo, objEvent); } this.broadcastIsAfterRefresh(false); } } }, PlayNextPodcastItem: function() { EBRadioConsts_CT2384137.RadioMenu.PlayNextPodcastItem(EBRadioConsts_CT2384137.NowState.MenuSelectedID); }, CheckIfStationLoaded: function() { var menuButton = document.getElementById(EBRadioConsts_CT2384137.RadioMenuButtonID) //if shrink mode, return if (!menuButton) return; var btnLabel = menuButton.getAttribute('label'); if (btnLabel == EBRadioConsts_CT2384137.LoadingText) menuButton.setAttribute('label', EBRadioDialogManager_CT2384137.NoStationsText); if (btnLabel == EBRadioDialogManager_CT2384137.NoStationsText) this.FindStationToSelect(); }, FindStationToSelect: function(lastPodcastId) { var userMediaList = EBRadioConsts_CT2384137.UserMediaList; var otherMediaList = (EBComponentsManager_CT2384137.GetRadioComponent().ComponentItem.objData.isPublisher) ? EBRadioConsts_CT2384137.PublisherMediaList : EBRadioConsts_CT2384137.IPMediaList; if ((!otherMediaList || otherMediaList.arrMedia.Count() == 0) && (!userMediaList || userMediaList.arrMedia.Count() == 0)) { EBRadioConsts_CT2384137.NowState.StationName = EBRadioDialogManager_CT2384137.NoStationsText; EBRadioConsts_CT2384137.NowState.StationURL = ''; EBRadioConsts_CT2384137.NowState.MenuSelectedID = ''; EBRadioConsts_CT2384137.NowState.IsPodcast = false; EBRadioConsts_CT2384137.NowState.MediaID = ''; EBRadioGUIManager_CT2384137.SetStation(EBRadioConsts_CT2384137.NowState.StationName, EBRadioConsts_CT2384137.NowState.MediaType, EBRadioConsts_CT2384137.NowState.StationURL); } else { //try to find station, not podcast var found = false; var i = 0; var mediaList = null; var noPublisherMedia = false; var switched = false; if (otherMediaList.arrMedia.Count() != 0) mediaList = otherMediaList.arrMedia; else { mediaList = userMediaList.arrMedia; switched = true; noPublisherMedia = true; } var media = null; do { media = mediaList.GetByIndex(i); if (!media.isPodCast) { found = true; } else { if (mediaList.Count() == i + 1 && !switched) { mediaList = userMediaList.arrMedia; i = 0; switched = true; } else { i++; } } } while (media.isPodCast && i < mediaList.Count()) if (found) { EBRadioConsts_CT2384137.NowState.StationURL = media.MediaURL; EBRadioConsts_CT2384137.NowState.StationName = media.MediaName; EBRadioConsts_CT2384137.NowState.MediaType = media.GetTypeString(); EBRadioConsts_CT2384137.NowState.MenuSelectedID = EBRadioConsts_CT2384137.MenuIDPreffix + media.MediaID; EBRadioConsts_CT2384137.NowState.IsPodcast = false; EBRadioConsts_CT2384137.NowState.MediaID = media.MediaID; } else { if (noPublisherMedia) { media = userMediaList.arrMedia.GetByIndex(0); } else { media = otherMediaList.arrMedia.GetByIndex(0); } var podcastMenuId = EBRadioConsts_CT2384137.MenuIDPreffix + media.MediaID; var oPodcastMenu = document.getElementById(podcastMenuId); var oFirstPodcastItem = oPodcastMenu.firstChild; var strMediaURL = oFirstPodcastItem.getAttribute('MediaURL'); if (strMediaURL) { EBRadioConsts_CT2384137.NowState.StationURL = strMediaURL; EBRadioConsts_CT2384137.NowState.MediaType = EBRadioConsts_CT2384137.PlayerTypes.MediaPlayer EBRadioConsts_CT2384137.NowState.StationName = oFirstPodcastItem.getAttribute('MediaName'); EBRadioConsts_CT2384137.NowState.MenuSelectedID = oFirstPodcastItem.getAttribute('id'); EBRadioConsts_CT2384137.NowState.IsPodcast = true; EBRadioConsts_CT2384137.NowState.MediaID = media.MediaID; found = true; } else { EBRadioConsts_CT2384137.NowState.StationName = EBRadioDialogManager_CT2384137.NoStationsText; EBRadioConsts_CT2384137.NowState.StationURL = ''; EBRadioConsts_CT2384137.NowState.MenuSelectedID = ''; EBRadioConsts_CT2384137.NowState.IsPodcast = false; EBRadioConsts_CT2384137.NowState.MediaID = ''; EBRadioGUIManager_CT2384137.SetStation(EBRadioConsts_CT2384137.NowState.StationName, EBRadioConsts_CT2384137.NowState.MediaType, EBRadioConsts_CT2384137.NowState.StationURL); EBRadioConsts_CT2384137.SetStationName = oFirstPodcastItem.getAttribute('id'); setTimeout(function() { EBRadioManager_CT2384137.CheckIfStationLoaded(); }, 500); } } } if (found) { EBRadioIOManager_CT2384137.SetStationToRegistry(EBRadioConsts_CT2384137.NowState.StationName, EBRadioConsts_CT2384137.NowState.StationURL, EBRadioConsts_CT2384137.NowState.MediaType, EBRadioConsts_CT2384137.NowState.MenuSelectedID, EBRadioConsts_CT2384137.NowState.IsPodcast, EBRadioConsts_CT2384137.NowState.MediaID); EBRadioGUIManager_CT2384137.SetStation(EBRadioConsts_CT2384137.NowState.StationName, EBRadioConsts_CT2384137.NowState.MediaType, EBRadioConsts_CT2384137.NowState.StationURL); EBRadioConsts_CT2384137.RadioMenu.OnMenuStationSelect(EBRadioConsts_CT2384137.NowState.MenuSelectedID); } }, UpdateMenuButtonAfterShrink: function(xulMenuButton) { if (EBRadioConsts_CT2384137.RadioMenu) { var menuPopup = EBRadioConsts_CT2384137.RadioMenu.XULMenu; xulMenuButton.appendChild(menuPopup); EBRadioGUIManager_CT2384137.SetStation(EBRadioConsts_CT2384137.NowState.StationName, EBRadioConsts_CT2384137.NowState.MediaType, EBRadioConsts_CT2384137.NowState.StationURL); } }, UpdateGUIOnLoad: function(forceFind) { EBRadioConsts_CT2384137.NowState.StationURL = EBRadioIOManager_CT2384137.GetStationURLFromRegistry(); EBRadioConsts_CT2384137.NowState.MediaType = EBRadioIOManager_CT2384137.GetMediaTypeFromRegistry(); EBRadioConsts_CT2384137.NowState.MenuSelectedID = EBRadioIOManager_CT2384137.GetMenuSelectedIdFromRegistry(); EBRadioConsts_CT2384137.NowState.IsPodcast = EBRadioIOManager_CT2384137.GetIsPodcastFromRegistry(); EBRadioConsts_CT2384137.NowState.StationName = EBRadioIOManager_CT2384137.GetStationNameFromRegistry(); EBRadioConsts_CT2384137.NowState.MediaID = EBRadioIOManager_CT2384137.GetStationIdFromRegistry(); var stationNotExists = false; if (EBRadioConsts_CT2384137.NowState.MenuSelectedID) { var selectedMenu = document.getElementById(EBRadioConsts_CT2384137.NowState.MenuSelectedID) if (!selectedMenu) { if (!EBRadioConsts_CT2384137.NowState.IsPodcast) stationNotExists = true; else setTimeout(function() { EBRadioManager_CT2384137.CheckIfStationLoaded(); }, 350); } } // no selected station or must f