From 1617dbb6a45ccd1fa6fc74ab6c47026804c7a1e0 Mon Sep 17 00:00:00 2001
From: alecpl <alec@alec.pl>
Date: Tue, 23 Feb 2010 12:22:39 -0500
Subject: [PATCH] - Fix IE spellcheck suggestion popup issue (#1486471)

---
 program/js/googiespell.js |  114 ++++++++++++++++++++++++++++-----------------------------
 1 files changed, 56 insertions(+), 58 deletions(-)

diff --git a/program/js/googiespell.js b/program/js/googiespell.js
index dc26c45..5f201b7 100644
--- a/program/js/googiespell.js
+++ b/program/js/googiespell.js
@@ -80,7 +80,7 @@
     this.cnt_errors = 0;
     this.cnt_errors_fixed = 0;
     
-    //Set document on click to hide the language and error menu
+    //Set document's onclick to hide the language and error menu
     $(document).bind('click', function(e) {
         if($(e.target).attr('googie_action_btn') != '1' && ref.isLangWindowShown())
 	    ref.hideLangWindow();
@@ -94,10 +94,10 @@
 
     if (this.text_area) {
         if (!this.spell_container && this.decoration) {
-            var table = document.createElement('TABLE');
-            var tbody = document.createElement('TBODY');
-            var tr = document.createElement('TR');
-            var spell_container = document.createElement('TD');
+            var table = document.createElement('table');
+            var tbody = document.createElement('tbody');
+            var tr = document.createElement('tr');
+            var spell_container = document.createElement('td');
 
             var r_width = this.isDefined(this.force_width) ? this.force_width : this.text_area.offsetWidth;
             var r_height = this.isDefined(this.force_height) ? this.force_height : 16;
@@ -122,7 +122,6 @@
 /////
 this.setSpellContainer = function(id) {
     this.spell_container = typeof(id) == 'string' ? document.getElementById(id) : id;
-
 }
 
 this.setLanguages = function(lang_dict) {
@@ -225,7 +224,7 @@
         this.removeIndicator();
         return;
     }
-    
+
     this.createEditLayer(this.text_area.offsetWidth, this.text_area.offsetHeight);
     this.createErrorWindow();
     $('body').append(this.error_window);
@@ -309,6 +308,7 @@
     	}
         results.push(item);
     }
+
     return results;
 }
 
@@ -317,7 +317,7 @@
 // Error menu functions
 /////
 this.createErrorWindow = function() {
-    this.error_window = document.createElement('DIV');
+    this.error_window = document.createElement('div');
     $(this.error_window).addClass('googie_window').attr('googie_action_btn', '1');
 }
 
@@ -349,8 +349,8 @@
 }
 
 this.createListSeparator = function() {
-    var td = document.createElement('TD');
-    var tr = document.createElement('TR');
+    var td = document.createElement('td');
+    var tr = document.createElement('tr');
 
     $(td).html(' ').attr('googie_action_btn', '1')
 	.css({'cursor': 'default', 'font-size': '3px', 'border-top': '1px solid #ccc', 'padding-top': '3px'});
@@ -395,20 +395,18 @@
     $(this.error_window).css({'visibility': 'visible',
 	'top': (pos.top+20)+'px', 'left': (pos.left)+'px'}).html('');
 
-    var table = document.createElement('TABLE');
-    var list = document.createElement('TBODY');
+    var table = document.createElement('table');
+    var list = document.createElement('tbody');
 
     $(table).addClass('googie_list').attr('googie_action_btn', '1');
 
     //Check if we should use custom menu builder, if not we use the default
     var changed = false;
-    if (this.custom_menu_builder != []) {
-        for (var k=0; k<this.custom_menu_builder.length; k++) {
-            var eb = this.custom_menu_builder[k];
-            if(eb[0]((this.results[id]))){
-                changed = eb[1](this, list, elm);
-                break;
-            }
+    for (var k=0; k<this.custom_menu_builder.length; k++) {
+        var eb = this.custom_menu_builder[k];
+        if(eb[0]((this.results[id]))){
+            changed = eb[1](this, list, elm);
+            break;
         }
     }
     if (!changed) {
@@ -418,9 +416,9 @@
         var len = this.results[id]['attrs']['l'];
 
         if (suggestions.length == 0) {
-            var row = document.createElement('TR');
-            var item = document.createElement('TD');
-            var dummy = document.createElement('SPAN');
+            var row = document.createElement('tr');
+            var item = document.createElement('td');
+            var dummy = document.createElement('span');
 
             $(dummy).text(this.lang_no_suggestions);
             $(item).attr('googie_action_btn', '1').css('cursor', 'default');
@@ -431,9 +429,9 @@
         }
 
         for (i=0; i < suggestions.length; i++) {
-            var row = document.createElement('TR');
-            var item = document.createElement('TD');
-            var dummy = document.createElement('SPAN');
+            var row = document.createElement('tr');
+            var item = document.createElement('td');
+            var dummy = document.createElement('span');
 
             $(dummy).html(suggestions[i]);
             
@@ -449,9 +447,9 @@
         //The element is changed, append the revert
         if (elm.is_changed && elm.innerHTML != elm.old_value) {
             var old_value = elm.old_value;
-            var revert_row = document.createElement('TR');
-            var revert = document.createElement('TD');
-            var rev_span = document.createElement('SPAN');
+            var revert_row = document.createElement('tr');
+            var revert = document.createElement('td');
+            var rev_span = document.createElement('span');
 	    
 	    $(rev_span).addClass('googie_list_revert').html(this.lang_revert + ' ' + old_value);
 
@@ -467,13 +465,13 @@
             revert_row.appendChild(revert);
             list.appendChild(revert_row);
         }
-        
+
         //Append the edit box
-        var edit_row = document.createElement('TR');
-        var edit = document.createElement('TD');
-        var edit_input = document.createElement('INPUT');
-        var ok_pic = document.createElement('IMG');
-	var edit_form = document.createElement('FORM');
+        var edit_row = document.createElement('tr');
+        var edit = document.createElement('td');
+        var edit_input = document.createElement('input');
+        var ok_pic = document.createElement('img');
+	var edit_form = document.createElement('form');
 
         var onsub = function () {
             if (edit_input.value != '') {
@@ -515,8 +513,8 @@
                     var e_elm = ref.extra_menu_items[i];
 
                     if (!e_elm[2] || e_elm[2](elm, ref)) {
-                        var e_row = document.createElement('TR');
-                        var e_col = document.createElement('TD');
+                        var e_row = document.createElement('tr');
+                        var e_col = document.createElement('td');
 
 			$(e_col).html(e_elm[0])
                     	    .bind('mouseover', ref.item_onmouseover)
@@ -545,11 +543,11 @@
     //Dummy for IE - dropdown bug fix
     if ($.browser.msie) {
 	if (!this.error_window_iframe) {
-            var iframe = $('<iframe>').css('position', 'absolute').css('z-index', 0);
+            var iframe = $('<iframe>').css({'position': 'absolute', 'z-index': -1});
 	    $('body').append(iframe);
     	    this.error_window_iframe = iframe;
         }
-	
+
 	$(this.error_window_iframe).css({'visibility': 'visible',
 	    'top': this.error_window.offsetTop, 'left': this.error_window.offsetLeft,
     	    'width': this.error_window.offsetWidth, 'height': this.error_window.offsetHeight});
@@ -561,10 +559,10 @@
 // Edit layer (the layer where the suggestions are stored)
 //////
 this.createEditLayer = function(width, height) {
-    this.edit_layer = document.createElement('DIV');
+    this.edit_layer = document.createElement('div');
     $(this.edit_layer).addClass('googie_edit_layer').width(width-10).height(height);
 
-    if (this.text_area.nodeName != 'INPUT' || $(this.text_area).val() == '') {
+    if (this.text_area.nodeName.toLowerCase() != 'input' || $(this.text_area).val() == '') {
         $(this.edit_layer).css('overflow', 'auto').height(height-4);
     } else {
         $(this.edit_layer).css('overflow', 'hidden');
@@ -613,7 +611,7 @@
 }
 
 this.createErrorLink = function(text, id) {
-    var elm = document.createElement('SPAN');
+    var elm = document.createElement('span');
     var ref = this;
     var d = function (e) {
     	    ref.showErrorWindow(elm, id);
@@ -637,13 +635,13 @@
     txt_part = txt_part.replace(/^ /g, "&nbsp;");
     txt_part = txt_part.replace(/ $/g, "&nbsp;");
     
-    var span = document.createElement('SPAN');
+    var span = document.createElement('span');
     $(span).html(txt_part);
     return span;
 }
 
 this.showErrorsInIframe = function() {
-    var output = document.createElement('DIV')
+    var output = document.createElement('div')
     var pointer = 0;
     var results = this.results;
 
@@ -700,22 +698,22 @@
 // Choose language menu
 //////
 this.createLangWindow = function() {
-    this.language_window = document.createElement('DIV');
+    this.language_window = document.createElement('div');
     $(this.language_window).addClass('googie_window')
 	.width(100).attr('googie_action_btn', '1');
 
     //Build up the result list
-    var table = document.createElement('TABLE');
-    var list = document.createElement('TBODY');
+    var table = document.createElement('table');
+    var list = document.createElement('tbody');
     var ref = this;
 
     $(table).addClass('googie_list').width('100%');
     this.lang_elms = new Array();
 
     for (i=0; i < this.langlist_codes.length; i++) {
-        var row = document.createElement('TR');
-        var item = document.createElement('TD');
-        var span = document.createElement('SPAN');
+        var row = document.createElement('tr');
+        var item = document.createElement('td');
+        var span = document.createElement('span');
 	
 	$(span).text(this.lang_to_word[this.langlist_codes[i]]);
         this.lang_elms.push(item);
@@ -805,13 +803,13 @@
     var img = $('<img>')
 	.attr({src: this.img_dir + 'change_lang.gif', 'alt': 'Change language', 'googie_action_btn': '1'});
 
-    var switch_lan = document.createElement('SPAN');
+    var switch_lan = document.createElement('span');
     var ref = this;
 
     $(switch_lan).addClass('googie_lang_3d_on')
 	.append(img)
 	.bind('click', function(e) {
-    	    var elm = this.tagName == 'IMG' ? this.parentNode : this;
+    	    var elm = this.tagName.toLowerCase() == 'img' ? this.parentNode : this;
     	    if($(elm).hasClass('googie_lang_3d_click')) {
         	elm.className = 'googie_lang_3d_on';
         	ref.hideLangWindow();
@@ -826,7 +824,7 @@
 }
 
 this.createSpellDiv = function() {
-    var span = document.createElement('SPAN');
+    var span = document.createElement('span');
 
     $(span).addClass('googie_check_spelling_link').text(this.lang_chck_spell);
 
@@ -891,7 +889,7 @@
     if (this.show_change_lang_pic)
         this.switch_lan_pic = this.createChangeLangPic();
     else
-        this.switch_lan_pic = document.createElement('SPAN');
+        this.switch_lan_pic = document.createElement('span');
 
     var span_chck = this.createSpellDiv();
     var ref = this;
@@ -939,12 +937,12 @@
 }
 
 this.createButton = function(name, css_class, c_fn) {
-    var btn_row = document.createElement('TR');
-    var btn = document.createElement('TD');
+    var btn_row = document.createElement('tr');
+    var btn = document.createElement('td');
     var spn_btn;
 
     if (css_class) {
-        spn_btn = document.createElement('SPAN');
+        spn_btn = document.createElement('span');
 	$(spn_btn).addClass(css_class).html(name);
     } else {
         spn_btn = document.createTextNode(name);
@@ -972,7 +970,7 @@
     if (window.rcmail)
 	rcmail.set_busy(true, 'checking');
 /*    
-    this.indicator = document.createElement('IMG');
+    this.indicator = document.createElement('img');
     $(this.indicator).attr('src', this.img_dir + 'indicator.gif')
 	.css({'margin-right': '5px', 'text-decoration': 'none'}).width(16).height(16);
     
@@ -984,7 +982,7 @@
 }
 
 this.createFocusLink = function(name) {
-    var link = document.createElement('A');
+    var link = document.createElement('a');
     $(link).attr({'href': 'javascript:;', 'name': name});
     return link;
 }

--
Gitblit v1.9.1