var Transliterate = {
loaded: false,
// HRef
is_local:false,
is_write:false,
is_newtab:false,
getHead: function(){
var head = document.getElementsByTagName('head')[0];
if (!head) {
return document.body;
}
return head;
},
addGlobalStyle: function(css) {
var head = Transliterate.getHead();
var style = document.createElement('style');
style.type = 'text/css';
style.innerHTML = css;
head.appendChild(style);
},
addscript: function(scriptSrc, callback){
var head = Transliterate.getHead();
var script = document.createElement('script');
script.language = "Javascript";
script.src = scriptSrc;
script.type = 'text/javascript';
if(callback){
script.onload = function(){
callback();
script.onload = null;
};
}
head.appendChild(script);
},
addStyles: function(){
Transliterate.addGlobalStyle('.goog-transliterate-indic-suggestion-menu {position: absolute;background-color: #EFEFEF;border: 1px outset #7F7F7F;cursor: default;font: small arial, helvetica, sans-serif;margin: 0px;padding: 0px;outline: none;z-index: 20000;}');
http://Transliterate.addGlobalStyle('.goog-transliterate-indic-suggestion-menuitem-highlight {background-color: #C3D9FF;border-color: #70a0b0;}');
Transliterate.addGlobalStyle('.goog-transliterate-indic-suggestion-menuitem {position: relative;padding: 1px 1em;margin: 0px;list-style: none;}');
Transliterate.addGlobalStyle('.fnts, .combo119922{font-family:arial,sans-serif;font-size:10px !important;}.lab{cursor: pointer;}');
http://Transliterate.addGlobalStyle('.cbut{background: #C3D9FF;border: 1px solid #5F9DFF;}');
// HRef
Transliterate.addGlobalStyle('.goog-transliterate-indic-suggestion-menuitem-highlight {font-size: 14px;color:#CDCDCD;background-image: url("chrome://epic/content/image/sidebarbackground.png");background-repeat: repeat-x;border-color: #70a0b0;}');
Transliterate.addGlobalStyle('.opt0, .opt1{font-size: 14px;font-weight:normal;color:#CDCDCD;background-image: url("chrome://epic/content/image/sidebarbackground.png");background-repeat: repeat-x;}');
Transliterate.addGlobalStyle('.opt0:hover, .opt1:hover{background:#FF6D00;}');
if ((this.is_local) || (this.is_write)) {
Transliterate.addGlobalStyle('.cbut{background: #CDCDCD;border: 1px solid #000000;}');
Transliterate.addGlobalStyle('.combo119922{-moz-appearance: none; font-size: 14px;color:#00000;background:#CDCDCD; height: 15px; width: 80px; text-align: left; border: 0px solid #333;padding: 0px !important; margin: 0px !important;}');
} else {
Transliterate.addGlobalStyle('.cbut{background: #CDCDCD;border: 1px solid #8A8384;}');
Transliterate.addGlobalStyle('.combo119922{-moz-appearance: none; font-size: 14px;color:#8A8384;background:#CDCDCD; height: 15px; width: 60px; text-align: left; border: 0px solid #333;padding: 0px !important; margin: 0px !important;}');
}
http://Transliterate.addGlobalStyle('.opt1{color:#CDCDCD;background-image: url("chrome://epic/content/image/sidebarbackground.png");background-repeat: repeat-x;}');
http://Transliterate.addGlobalStyle('.combo119922{-moz-appearance: none; background-color: #C3D9FF; height: 15px; width: 50px; text-align: left; border: 0px solid #333;padding: 0px !important; margin: 0px !important;}');
Transliterate.addGlobalStyle('.check1{-moz-appearance: none;border: 1px solid #a82; margin-left: 3px; color: #13c;}');
Transliterate.addGlobalStyle('.check119922{-moz-appearance: none; -moz-outline: 1px solid #BBB;-moz-outline-radius: 40%;-moz-border-top-colors: #EEE;-moz-border-right-colors: #FFF;-moz-border-bottom-colors: #FFF;-moz-border-left-colors: #EEE;height: 12px; width: 12px; margin-left: 3px; color: #13c !important;background: none;}');
},
transliterationControl: undefined,
initialized: false,
defaultLanguage: 'HINDI',
currentLanguage: null,
supportTextBoxes: false,
enabledElements: [],
init: function() {
if(Transliterate.initialized){
return;
}
var lang = Transliterate.getCookie('Transliterate_LANG');
lang = (lang)?lang: google.elements.transliteration.LanguageCode[Transliterate.defaultLanguage];
var enabled = Transliterate.getCookie('Transliterate_ENABLED');
if(!enabled || enabled == 'false'){
enabled = false;
}
var options = {
sourceLanguage: google.elements.transliteration.LanguageCode.ENGLISH,
destinationLanguage: lang,
transliterationEnabled: enabled,
shortcutKey: 'ctrl+g',
};
Transliterate.transliterationControl = new google.elements.transliteration.TransliterationControl(options);
Transliterate.transliterationControl.addEventListener(
google.elements.transliteration.TransliterationControl.EventType.STATE_CHANGED, Transliterate.transliterateStateChangeHandler);
Transliterate.transliterationControl.addEventListener(
google.elements.transliteration.TransliterationControl.EventType.SERVER_UNREACHABLE,
Transliterate.serverUnreachableHandler);
Transliterate.transliterationControl.addEventListener(
google.elements.transliteration.TransliterationControl.EventType.SERVER_REACHABLE,
Transliterate.serverReachableHandler);
if (this.is_local) {
document.getElementById('checkboxId').checked = true;
Transliterate.transliterationControl.toggleTransliteration();
Transliterate.setCookie('Transliterate_ENABLED', true);
} else {
document.getElementById('checkboxId').checked = Transliterate.transliterationControl.isTransliterationEnabled();
}
Transliterate.populateLanguageBox();
http://google.language.getBranding('poweredby');
Transliterate.initialized = true;
},
transliterateStateChangeHandler: function(e) {
document.getElementById('checkboxId').checked = e.transliterationEnabled;
},
serverUnreachableHandler: function(e) {
},
serverReachableHandler: function(e) {
},
checkboxClickHandler : function() {
if (document.getElementById("checkboxId").checked) {
document.getElementById("languageDropDown").style.background = "#92C166";
document.getElementById("languageDropDown").style.color = "#000000";
document.getElementById("languageDropDown").parentNode.style.background = "#92C166";
document.getElementById("languageDropDown").style.fontWeight = "bold";
if (!this.is_local) {
var dropdown = document.getElementById('languageDropDown');
var lang = dropdown.options[dropdown.selectedIndex].text;
dropdown.options[0].text = "Turn " + lang + " OFF";
dropdown.options[0].title = "Turn " + lang + " OFF";
dropdown.options[0].value = "Turn " + lang + " OFF";
}
} else {
document.getElementById("languageDropDown").style.background = "#CDCDCD";
document.getElementById("languageDropDown").style.color = "#8A8384";
document.getElementById("languageDropDown").parentNode.style.background = "#CDCDCD";
document.getElementById("languageDropDown").style.fontWeight = "normal";
if (!this.is_local) {
var dropdown = document.getElementById('languageDropDown');
var lang = dropdown.options[dropdown.selectedIndex].text;
dropdown.options[0].text = "Turn " + lang + " ON";
dropdown.options[0].title = "Turn " + lang + " ON";
dropdown.options[0].value = "Turn " + lang + " ON";
}
}
Transliterate.transliterationControl.toggleTransliteration();
Transliterate.setCookie('Transliterate_ENABLED', Transliterate.transliterationControl.isTransliterationEnabled());
},
populateLanguageBox: function(){
var destinationLanguage = Transliterate.transliterationControl.getLanguagePair().destinationLanguage;
var languageSelect = document.getElementById('languageDropDown');
var supportedDestinationLanguages = google.elements.transliteration.getDestinationLanguages(google.elements.transliteration.LanguageCode.ENGLISH);
var oc = 0;
if (!this.is_local) {
var opt = document.createElement('option');
opt.className = "opt0";
languageSelect.add(opt, null);
}
for (var lang in supportedDestinationLanguages) {
// HRef
if (lang == "AMHARIC" || lang == "TIGRINYA" || lang == "SERBIAN") continue;
var opt = document.createElement('option');
var langStr = Transliterate.getCamelizedStr(lang);
var locLang = langStr.substring(0, 1);
var langCode = supportedDestinationLanguages[lang];
opt.text = langStr;//Transliterate.getTransliterationStr(locLang, langCode, opt, function(res){opt.text=res;});
opt.title = langStr;
var f = function(ele, res){
ele.title = res+' ('+ele.title+')';
};
Transliterate.getTransliterationStr(langStr, langCode, opt, f);
opt.value = langCode;
opt.className = "opt"+((oc++)%2);
if (destinationLanguage == opt.value) {
opt.selected = true;
Transliterate._controlDiv.title = 'Type in '+opt.title;
}
try {
languageSelect.add(opt, null);
} catch (ex) {
languageSelect.add(opt);
}
}
if (!this.is_local) {
var opt = languageSelect.options[0];
var currLang = languageSelect.options[languageSelect.selectedIndex].text;
if (document.getElementById("checkboxId").checked) {
opt.text = "Turn " + currLang + " OFF";
opt.title = "Turn " + currLang + " OFF";
} else {
opt.text = "Turn " + currLang + " ON";
opt.title = "Turn " + currLang + " ON";
}
}
if (document.getElementById("checkboxId").checked) {
document.getElementById("languageDropDown").style.background = "#92C166";
document.getElementById("languageDropDown").style.color = "#000000";
document.getElementById("languageDropDown").parentNode.style.background = "#92C166";
document.getElementById("languageDropDown").style.fontWeight = "bold";
} else {
document.getElementById("languageDropDown").style.background = "#CDCDCD";
document.getElementById("languageDropDown").style.color = "#8A8384";
document.getElementById("languageDropDown").parentNode.style.background = "#CDCDCD";
document.getElementById("languageDropDown").style.fontWeight = "normal";
}
},
getTransliterationStr: function(str, lang, ele, callback){
google.language.transliterate([str], "en", lang, function(result) {
if (!result.error) {
if (result.transliterations && result.transliterations.length > 0 &&
result.transliterations[0].transliteratedWords.length > 0) {
var res = result.transliterations[0].transliteratedWords[0];
if(callback){
return callback(ele, res);
}
ele.innerHTML = res;
}
}
});
},
getLang: function(code){
for (l in google.language.Languages) {
if(google.language.Languages[l] == code){
return l;
}
}
},
getLanguageForCode: function(code){
var lang = Transliterate.getLang(code);
if(lang){
lang = Transliterate.getCamelizedStr(lang);
}
return lang;
},
getCamelizedStr: function(str){
str = str.toLowerCase();
str = str.substring(0, 1).toUpperCase()+str.substring(1, str.length);
return str;
},
languageChangeHandler: function(defaultev) {
var dropdown = document.getElementById('languageDropDown');
var selOpt = dropdown.options[dropdown.selectedIndex];
var selectedLang = selOpt.value;
if (!selectedLang.match("Turn")) {
Transliterate.transliterationControl.setLanguagePair(google.elements.transliteration.LanguageCode.ENGLISH, selectedLang);
Transliterate._controlDiv.title = 'Type in '+selOpt.title + '. Click on the checkbox to turn on/off the language setting.';
if(!defaultev){
Transliterate.setCookie('Transliterate_LANG', selectedLang);
}
Transliterate.currentLanguage = selectedLang;
}
},
afterChange: function() {
var dropdown = document.getElementById('languageDropDown');
var selOpt = dropdown.options[dropdown.selectedIndex];
var selectedLang = selOpt.value;
if (selectedLang.match("Turn")) {
for (var i = 0; i < dropdown.options.length; i++) {
if (dropdown.options[i].value == Transliterate.currentLanguage) {
dropdown.selectedIndex = i;
var lang = dropdown.options[i].text;
}
}
if (document.getElementById("checkboxId").checked) {
document.getElementById("checkboxId").checked = false;
document.getElementById("languageDropDown").style.background = "#CDCDCD";
document.getElementById("languageDropDown").style.color = "#8A8384";
document.getElementById("languageDropDown").parentNode.style.background = "#CDCDCD";
document.getElementById("languageDropDown").style.fontWeight = "normal";
dropdown.options[0].text = "Turn " + lang + " ON";
dropdown.options[0].title = "Turn " + lang + " ON";
dropdown.options[0].value = "Turn " + lang + " ON";
} else {
document.getElementById("checkboxId").checked = true;
document.getElementById("languageDropDown").style.background = "#92C166";
document.getElementById("languageDropDown").style.color = "#000000";
document.getElementById("languageDropDown").parentNode.style.background = "#92C166";
document.getElementById("languageDropDown").style.fontWeight = "bold";
dropdown.options[0].text = "Turn " + lang + " OFF";
dropdown.options[0].title = "Turn " + lang + " OFF";
dropdown.options[0].value = "Turn " + lang + " OFF";
}
Transliterate.transliterationControl.toggleTransliteration();
Transliterate.setCookie('Transliterate_ENABLED', Transliterate.transliterationControl.isTransliterationEnabled());
} else {
if (!document.getElementById("checkboxId").checked) {
document.getElementById("checkboxId").click();
} else {
if (!this.is_local) {
var currLang = dropdown.options[dropdown.selectedIndex].text;
if (document.getElementById("checkboxId").checked) {
dropdown.options[0].text = "Turn " + currLang + " OFF";
dropdown.options[0].title = "Turn " + currLang + " OFF";
dropdown.options[0].value = "Turn " + currLang + " OFF";
} else {
dropdown.options[0].text = "Turn " + currLang + " ON";
dropdown.options[0].title = "Turn " + currLang + " ON";
dropdown.options[0].value = "Turn " + currLang + " ON";
}
}
}
}
},
toggleLanguage: function(event) {
var dropdown = document.getElementById('languageDropDown');
if (event.target.innerHTML == dropdown.options[dropdown.selectedIndex].text) {
if (!document.getElementById("checkboxId").checked) {
document.getElementById("checkboxId").click();
}
}
},
_controlDiv: undefined,
createComponents: function(){
// HRef
var controlHTML = ""+
""+
""+
""+
""+
""+
"
"+
"
"+
"
";
var dDiv = document.createElement('div');
dDiv.innerHTML = controlHTML;
Transliterate._controlDiv = dDiv.firstChild;
http://document.importNode(Transliterate._controlDiv, true);
document.body.appendChild(Transliterate._controlDiv);
Transliterate._controlDiv.dimension = {'width': Transliterate._controlDiv.offsetWidth, 'height': Transliterate._controlDiv.offsetHeight};
if (this.is_local) {
Transliterate._controlDiv.style.display = 'block';
} else {
Transliterate._controlDiv.style.display = 'none';
}
},
parentWin: undefined,
performAction: function(){
google.load('language', "1");
google.load("elements", "1", {
packages: ["transliteration"],
});
google.setOnLoadCallback(Transliterate.init);
},
setCookie: function(cookieName, cookieValue, nDays) {
var today = new Date();
var expire = new Date();
if (nDays==null || nDays==0) nDays=30;
expire.setTime(today.getTime() + 3600000*24*nDays);
document