1 | var cp = new cpaint(); cp.set_transfer_mode('post'); cp.set_response_type('text'); var currObj; var spellingSuggestionsDiv = null; if(document.onclick)
|
---|
2 | { var old_onclick = document.onclick; document.onclick = function(e)
|
---|
3 | { checkClickLocation(e); old_onclick(e);}
|
---|
4 | }
|
---|
5 | else
|
---|
6 | { document.onclick = checkClickLocation;}
|
---|
7 | if(window.onload)
|
---|
8 | { var old_onload = window.onload; window.onload = function(e)
|
---|
9 | { setupSpellCheckers(e); old_onload(e);}
|
---|
10 | }
|
---|
11 | else
|
---|
12 | { window.onload = setupSpellCheckers;}
|
---|
13 | function setupSpellCheckers()
|
---|
14 | { var textareas = document.getElementsByTagName('textarea'); var numSpellCheckers = 0; var tempSpellCheckers = Array(); for(var i=0; i < textareas.length; i++)
|
---|
15 | { if(textareas[i].getAttribute("title") == "spellcheck" || textareas[i].getAttribute("title") == "spellcheck_icons")
|
---|
16 | { tempSpellCheckers[numSpellCheckers] = textareas[i]; var tempWidth = tempSpellCheckers[numSpellCheckers].offsetWidth + 'px'; var tempHeight = tempSpellCheckers[numSpellCheckers].offsetHeight + 'px'; eval('spellCheckers' + numSpellCheckers + '= new ajaxSpell("spellCheckers' + numSpellCheckers + '", tempWidth, tempHeight, tempSpellCheckers[' + numSpellCheckers + '].getAttribute("accesskey"), "spellCheckDiv' + numSpellCheckers + '", tempSpellCheckers[' + numSpellCheckers + '].getAttribute("name"), tempSpellCheckers[' + numSpellCheckers + '].id, tempSpellCheckers[' + numSpellCheckers + '].title, tempSpellCheckers[' + numSpellCheckers + '].value);'); numSpellCheckers++;}
|
---|
17 | }
|
---|
18 | }; function ajaxSpell(varName, width, height, spellUrl, divId, name, id, title, value)
|
---|
19 | { currObj = this; currObj.config = new Array(); currObj.config['varName'] = varName; currObj.config['width'] = width; currObj.config['height'] = height; currObj.config['spellUrl'] = spellUrl; currObj.config['divId'] = divId; currObj.config['name'] = name; currObj.config['id'] = id; currObj.config['title'] = title; currObj.config['value'] = value; currObj.config['value'] = currObj.config['value'].replace(/<br *\/?>/gi, "\n"); currObj.config['useIcons'] = false; if(currObj.config['title'] == "spellcheck_icons")
|
---|
20 | { currObj.config['useIcons'] = true;}
|
---|
21 | spellContainer = document.createElement('DIV'); spellContainer.id = currObj.config['divId']; spellContainer.className = 'spell_container'; spellContainer.style.width = currObj.config['width']; oldElement = document.getElementById(currObj.config['id']); oldElement.parentNode.replaceChild(spellContainer, oldElement); currObj.controlPanelDiv = document.createElement('DIV'); currObj.controlPanelDiv.className = 'control_panel'; document.getElementById(currObj.config['divId']).appendChild(currObj.controlPanelDiv); currObj.actionSpan = document.createElement('SPAN'); currObj.actionSpan.className = "action"; currObj.actionSpan.id = "action"; if(currObj.config['useIcons'])
|
---|
22 | { currObj.actionSpan.innerHTML = "<a class=\"check_spelling\" onclick=\"setCurrentObject(" + currObj.config['varName'] + "); " + currObj.config['varName'] + ".spellCheck();\"><img src=\"images/spellcheck.png\" width=\"16\" height=\"16\" title=\"Check Spelling & Preview\" alt=\"Check Spelling & Preview\" border=\"0\" /></a>";}
|
---|
23 | else
|
---|
24 | { currObj.actionSpan.innerHTML = "<a class=\"check_spelling\" onclick=\"setCurrentObject(" + currObj.config['varName'] + "); " + currObj.config['varName'] + ".spellCheck();\">Check Spelling & Preview</a>";}
|
---|
25 | currObj.controlPanelDiv.appendChild(currObj.actionSpan); currObj.statusSpan = document.createElement('SPAN'); currObj.statusSpan.className = "status"; currObj.statusSpan.id = "status"; currObj.statusSpan.innerHTML = ""; currObj.controlPanelDiv.appendChild(currObj.statusSpan); oldElement.value = currObj.config['value']; document.getElementById(currObj.config['divId']).appendChild(oldElement); currObj.objToCheck = document.getElementById(currObj.config['id']); currObj.spellingResultsDiv = null; ajaxSpell.prototype.spellCheck = spellCheck; ajaxSpell.prototype.spellCheck_cb = spellCheck_cb; ajaxSpell.prototype.showSuggestions = showSuggestions; ajaxSpell.prototype.showSuggestions_cb = showSuggestions_cb; ajaxSpell.prototype.replaceWord = replaceWord; ajaxSpell.prototype.switchText = switchText; ajaxSpell.prototype.switchText_cb = switchText_cb; ajaxSpell.prototype.resumeEditing = resumeEditing; ajaxSpell.prototype.resetSpellChecker = resetSpellChecker; ajaxSpell.prototype.resetAction = resetAction;}; function setCurrentObject(obj)
|
---|
26 | { currObj = obj;}; function spellCheck_cb(new_data)
|
---|
27 | { with(currObj); new_data = new_data.toString(); var isThereAMisspelling = new_data.charAt(0); new_data = new_data.substring(1); if(currObj.spellingResultsDiv)
|
---|
28 | { currObj.spellingResultsDiv.parentNode.removeChild(spellingResultsDiv);}
|
---|
29 | currObj.spellingResultsDiv = document.createElement('DIV'); currObj.spellingResultsDiv.className = 'edit_box'; currObj.spellingResultsDiv.style.width = currObj.objToCheck.style.width; currObj.spellingResultsDiv.style.height = currObj.objToCheck.style.height; currObj.spellingResultsDiv.innerHTML = new_data; currObj.objToCheck.style.display = "none"; currObj.objToCheck.parentNode.insertBefore(currObj.spellingResultsDiv,currObj.objToCheck); currObj.statusSpan.innerHTML = ""; if(currObj.config['useIcons'])
|
---|
30 | { currObj.actionSpan.innerHTML = "<a class=\"resume_editing\" onclick=\"setCurrentObject(" + currObj.config['varName'] + "); " + currObj.config['varName'] + ".resumeEditing();\"><img src=\"images/page_white_edit.png\" width=\"16\" height=\"16\" title=\"Resume Editing\" alt=\"Resume Editing\" border=\"0\" /></a>";}
|
---|
31 | else
|
---|
32 | { currObj.actionSpan.innerHTML = "<a class=\"resume_editing\" onclick=\"setCurrentObject(" + currObj.config['varName'] + "); " + currObj.config['varName'] + ".resumeEditing();\">Resume Editing</a>";}
|
---|
33 | if(isThereAMisspelling != "1")
|
---|
34 | { if(currObj.config['useIcons'])
|
---|
35 | { currObj.statusSpan.innerHTML = "<img src=\"images/accept.png\" width=\"16\" height=\"16\" title=\"No Misspellings Found\" alt=\"No Misspellings Found\" border=\"0\" />";}
|
---|
36 | else
|
---|
37 | { currObj.statusSpan.innerHTML = "No Misspellings Found";}
|
---|
38 | currObj.objToCheck.disabled = false;}
|
---|
39 | }; function spellCheck() { with(currObj); var query; if(currObj.spellingResultsDiv)
|
---|
40 | { currObj.spellingResultsDiv.parentNode.removeChild(currObj.spellingResultsDiv); currObj.spellingResultsDiv = null;}
|
---|
41 | if(currObj.config['useIcons'])
|
---|
42 | { currObj.actionSpan.innerHTML = "<img src=\"images/spellcheck.png\" width=\"16\" height=\"16\" title=\"Check Spelling & Preview\" alt=\"Check Spelling & Preview\" border=\"0\" />";}
|
---|
43 | else
|
---|
44 | { currObj.actionSpan.innerHTML = "<a class=\"check_spelling\">Check Spelling & Preview</a>";}
|
---|
45 | if(currObj.config['useIcons'])
|
---|
46 | { currObj.statusSpan.innerHTML = "<img src=\"images/working.gif\" width=\"16\" height=\"16\" title=\"Checking...\" alt=\"Checking...\" border=\"0\" />";}
|
---|
47 | else
|
---|
48 | { currObj.statusSpan.innerHTML = "Checking...";}
|
---|
49 | query = currObj.objToCheck.value; query = query.replace(/\r?\n/gi, "<br />"); cp.call(currObj.config['spellUrl'], 'spellCheck', spellCheck_cb, query, currObj.config['varName']);}; function addWord(id)
|
---|
50 | { var wordToAdd = document.getElementById(id).innerHTML; with(currObj); if(spellingSuggestionsDiv)
|
---|
51 | { spellingSuggestionsDiv.parentNode.removeChild(spellingSuggestionsDiv); spellingSuggestionsDiv = null;}
|
---|
52 | if(currObj.config['useIcons'])
|
---|
53 | { currObj.statusSpan.innerHTML = "<img src=\"images/working.gif\" width=\"16\" height=\"16\" title=\"Adding Word...\" alt=\"Adding Word...\" border=\"0\" />";}
|
---|
54 | else
|
---|
55 | { currObj.statusSpan.innerHTML = "Adding Word...";}
|
---|
56 | cp.call(currObj.config['spellUrl'], 'addWord', addWord_cb, wordToAdd);}; function addWord_cb(returnedData)
|
---|
57 | { alert(returnedData); with(currObj); currObj.statusSpan.innerHTML = ""; resumeEditing(); spellCheck();}; function checkClickLocation(e)
|
---|
58 | { if(spellingSuggestionsDiv)
|
---|
59 | { if(spellingSuggestionsDiv.ignoreNextClick){ spellingSuggestionsDiv.ignoreNextClick = false;}
|
---|
60 | else
|
---|
61 | { var theTarget = getTarget(e); if(theTarget != spellingSuggestionsDiv)
|
---|
62 | { spellingSuggestionsDiv.parentNode.removeChild(spellingSuggestionsDiv); spellingSuggestionsDiv = null;}
|
---|
63 | }
|
---|
64 | }
|
---|
65 | return true;}; function getTarget(e)
|
---|
66 | { var value; if(checkBrowser() == "ie")
|
---|
67 | { value = window.event.srcElement;}
|
---|
68 | else
|
---|
69 | { value = e.target;}
|
---|
70 | return value;}; function checkBrowser()
|
---|
71 | { var theAgent = navigator.userAgent.toLowerCase(); if(theAgent.indexOf("msie") != -1)
|
---|
72 | { if(theAgent.indexOf("opera") != -1)
|
---|
73 | { return "opera";}
|
---|
74 | else
|
---|
75 | { return "ie";}
|
---|
76 | }
|
---|
77 | else if(theAgent.indexOf("netscape") != -1)
|
---|
78 | { return "netscape";}
|
---|
79 | else if(theAgent.indexOf("firefox") != -1)
|
---|
80 | { return "firefox";}
|
---|
81 | else if(theAgent.indexOf("mozilla/5.0") != -1)
|
---|
82 | { return "mozilla";}
|
---|
83 | else if(theAgent.indexOf("\/") != -1)
|
---|
84 | { if(theAgent.substr(0,theAgent.indexOf('\/')) != 'mozilla')
|
---|
85 | { return navigator.userAgent.substr(0,theAgent.indexOf('\/'));}
|
---|
86 | else
|
---|
87 | { return "netscape";}
|
---|
88 | }
|
---|
89 | else if(theAgent.indexOf(' ') != -1)
|
---|
90 | { return navigator.userAgent.substr(0,theAgent.indexOf(' '));}
|
---|
91 | else
|
---|
92 | { return navigator.userAgent;}
|
---|
93 | }; function showSuggestions_cb(new_data)
|
---|
94 | { with(currObj); spellingSuggestionsDiv.innerHTML = new_data; spellingSuggestionsDiv.style.display = 'block'; currObj.statusSpan.innerHTML = "";}; function showSuggestions(word, id)
|
---|
95 | { with(currObj); if(currObj.config['useIcons'])
|
---|
96 | { currObj.statusSpan.innerHTML = "<img src=\"images/working.gif\" width=\"16\" height=\"16\" title=\"Searching...\" alt=\"Searching...\" border=\"0\" />";}
|
---|
97 | else
|
---|
98 | { currObj.statusSpan.innerHTML = "Searching...";}
|
---|
99 | var x = findPosXById(id); var y = findPosYById(id); var scrollPos = 0; if(checkBrowser() != "ie")
|
---|
100 | { scrollPos = currObj.spellingResultsDiv.scrollTop;}
|
---|
101 | if(spellingSuggestionsDiv)
|
---|
102 | { spellingSuggestionsDiv.parentNode.removeChild(spellingSuggestionsDiv);}
|
---|
103 | spellingSuggestionsDiv = document.createElement('DIV'); spellingSuggestionsDiv.style.display = "none"; spellingSuggestionsDiv.className = 'suggestion_box'; spellingSuggestionsDiv.style.position = 'absolute'; spellingSuggestionsDiv.style.left = x + 'px'; spellingSuggestionsDiv.style.top = (y+16-scrollPos) + 'px'; spellingSuggestionsDiv.ignoreNextClick = true; document.body.appendChild(spellingSuggestionsDiv); cp.call(currObj.config['spellUrl'], 'showSuggestions', showSuggestions_cb, word, id);}; function replaceWord(id, newWord)
|
---|
104 | { document.getElementById(id).innerHTML = trim(newWord); if(spellingSuggestionsDiv)
|
---|
105 | { spellingSuggestionsDiv.parentNode.removeChild(spellingSuggestionsDiv); spellingSuggestionsDiv = null;}
|
---|
106 | document.getElementById(id).className = "corrected_word";}; function switchText()
|
---|
107 | { with(currObj); var text = currObj.spellingResultsDiv.innerHTML; text = text.replace(/<br *\/?>/gi, "~~~"); text = '*' + text; cp.call(currObj.config['spellUrl'], 'switchText', switchText_cb, text);}; function switchText_cb(new_string)
|
---|
108 | { with(currObj); new_string = new_string.replace(/~~~/gi, "\n"); new_string = new_string.substr(1); currObj.objToCheck.style.display = "none"; currObj.objToCheck.value = new_string; currObj.objToCheck.disabled = false; if(currObj.spellingResultsDiv)
|
---|
109 | { currObj.spellingResultsDiv.parentNode.removeChild(currObj.spellingResultsDiv); currObj.spellingResultsDiv = null;}
|
---|
110 | currObj.objToCheck.style.display = "block"; currObj.resetAction();}; function resumeEditing()
|
---|
111 | { with(currObj); if(currObj.config['useIcons'])
|
---|
112 | { currObj.actionSpan.innerHTML = "<a class=\"resume_editing\"><img src=\"images/page_white_edit.png\" width=\"16\" height=\"16\" title=\"Resume Editing\" alt=\"Resume Editing\" border=\"0\" /></a>";}
|
---|
113 | else
|
---|
114 | { currObj.actionSpan.innerHTML = "<a class=\"resume_editing\">Resume Editing</a>";}
|
---|
115 | if(currObj.config['useIcons'])
|
---|
116 | { currObj.statusSpan.innerHTML = "<img src=\"images/working.gif\" width=\"16\" height=\"16\" title=\"Working...\" alt=\"Working...\" border=\"0\" />";}
|
---|
117 | else
|
---|
118 | { currObj.statusSpan.innerHTML = "Working...";}
|
---|
119 | if(spellingSuggestionsDiv)
|
---|
120 | { spellingSuggestionsDiv.parentNode.removeChild(spellingSuggestionsDiv); spellingSuggestionsDiv = null;}
|
---|
121 | currObj.switchText();}; function resetAction()
|
---|
122 | { with(currObj); if(currObj.config['useIcons'])
|
---|
123 | { currObj.actionSpan.innerHTML = "<a class=\"check_spelling\" onclick=\"setCurrentObject(" + currObj.config['varName'] + "); " + currObj.config['varName'] + ".spellCheck();\"><img src=\"images/spellcheck.png\" width=\"16\" height=\"16\" title=\"Check Spelling & Preview\" alt=\"Check Spelling & Preview\" border=\"0\" /></a>";}
|
---|
124 | else
|
---|
125 | { currObj.actionSpan.innerHTML = "<a class=\"check_spelling\" onclick=\"setCurrentObject(" + currObj.config['varName'] + "); " + currObj.config['varName'] + ".spellCheck();\">Check Spelling & Preview</a>";}
|
---|
126 | currObj.statusSpan.innerHTML = "";}; function resetSpellChecker()
|
---|
127 | { with(currObj); currObj.resetAction(); currObj.objToCheck.value = ""; currObj.objToCheck.style.display = "block"; currObj.objToCheck.disabled = false; if(currObj.spellingResultsDiv)
|
---|
128 | { currObj.spellingResultsDiv.parentNode.removeChild(currObj.spellingResultsDiv); currObj.spellingResultsDiv = null;}
|
---|
129 | if(spellingSuggestionsDiv)
|
---|
130 | { spellingSuggestionsDiv.parentNode.removeChild(spellingSuggestionsDiv); spellingSuggestionsDiv = null;}
|
---|
131 | currObj.statusSpan.style.display = "none";}; function findPosXById(object)
|
---|
132 | { var curleft = 0; var obj = document.getElementById(object); if(obj.offsetParent)
|
---|
133 | { while(obj.offsetParent)
|
---|
134 | { curleft += obj.offsetLeft - obj.scrollLeft; obj = obj.offsetParent;}
|
---|
135 | }
|
---|
136 | else if(obj.x)
|
---|
137 | { curleft += obj.x;}
|
---|
138 | return curleft;}; function findPosYById(object)
|
---|
139 | { var curtop = 0;var curtop = 0; var obj = document.getElementById(object); if(obj.offsetParent)
|
---|
140 | { while(obj.offsetParent)
|
---|
141 | { curtop += obj.offsetTop - obj.scrollTop; obj = obj.offsetParent;}
|
---|
142 | }
|
---|
143 | else if(obj.y)
|
---|
144 | { curtop += obj.y;}
|
---|
145 | return curtop;}; function trim(s)
|
---|
146 | { while(s.substring(0,1) == ' ')
|
---|
147 | { s = s.substring(1,s.length);}
|
---|
148 | while(s.substring(s.length-1,s.length) == ' ')
|
---|
149 | { s = s.substring(0,s.length-1);}
|
---|
150 | return s;}; |
---|