PageSourceSearch

http://www.volley4all.net/components/com_comment/joscomment/jscripts/client.js

js volley4all.net collected 2026-10-04 22:57:17 UTC 31,758 bytes, 934 lines download raw bytes

1var JOSC_http = (window.XMLHttpRequest ? new XMLHttpRequest : (window.ActiveXObject ? new ActiveXObject("Microsoft.XMLHTTP") : false));
2var JOSC_operaBrowser = (navigator.userAgent.toLowerCase().indexOf("opera") != -1);
3var JOSC_rsearchphrase_selection="any";
4/* in case of modify */
5var JOSC_userName = ''; 
6var JOSC_userEmail = ''; 
7var JOSC_userWebsite = '';
8var JOSC_userNotify = '';
9/* ***************** */
10var JOSC_XmlErrorAlert = false; /* will be redefined by setting */
11var JOSC_AjaxDebug = false; /* will be redefined by setting */
12var JOSC_AjaxDebugLevel = 2; /* will be redefined by setting */
13
14var JOSC_postREFRESH=false;
15
16var JOSC_clientPC = navigator.userAgent.toLowerCase();
17var JOSC_clientVer = parseInt(navigator.appVersion);
18
19var JOSC_is_ie = ((JOSC_clientPC.indexOf("msie") != -1) && (JOSC_clientPC.indexOf("opera") == -1));
20var JOSC_is_nav = ((JOSC_clientPC.indexOf('mozilla')!=-1) && (JOSC_clientPC.indexOf('spoofer')==-1)
21                && (JOSC_clientPC.indexOf('compatible') == -1) && (JOSC_clientPC.indexOf('opera')==-1)
22                && (JOSC_clientPC.indexOf('webtv')==-1) && (JOSC_clientPC.indexOf('hotjava')==-1));
23var JOSC_is_moz = 0;
24
25var JOSC_is_win = ((JOSC_clientPC.indexOf("win")!=-1) || (JOSC_clientPC.indexOf("16bit") != -1));
26var JOSC_is_mac = (JOSC_clientPC.indexOf("mac")!=-1);
27
28var JOSC_scrollTopPos = 0;
29var JOSC_scrollLeftPos = 0;
30
31function JOSC_insertAdjacentElement( object, where, parsedNode ) {
32        if (!object.JOSCinsertAdjacentElement)
33				object.insertAdjacentElement(where, parsedNode);
34        else
35                object.JOSCinsertAdjacentElement(where, parsedNode);
36}
37
38function JOSC_insertAdjacentHTML( object, where, htmlStr ) {
39        if (!object.JOSCinsertAdjacentHTML)
40				object.insertAdjacentHTML(where, htmlStr);
41        else
42                object.JOSCinsertAdjacentHTML(where, htmlStr);
43}
44
45if (typeof HTMLElement != "undefined" && !
46    HTMLElement.prototype.JOSCinsertAdjacentElement) {
47    HTMLElement.prototype.JOSCinsertAdjacentElement = function
48    (where, parsedNode)
49    {
50        switch (where) {
51            case 'beforeBegin':
52                this.parentNode.insertBefore(parsedNode, this)
53                break;
54            case 'afterBegin':
55                this.insertBefore(parsedNode, this.firstChild);
56                break;
57            case 'beforeEnd':
58                this.appendChild(parsedNode);
59                break;
60            case 'afterEnd':
61                if (this.nextSibling)
62                    this.parentNode.insertBefore(parsedNode, this.nextSibling);
63                else this.parentNode.appendChild(parsedNode);
64                break;
65        }
66    }
67
68    HTMLElement.prototype.JOSCinsertAdjacentHTML = function
69    (where, htmlStr)
70    {
71        var r = this.ownerDocument.createRange();
72        r.setStartBefore(this);
73        var parsedHTML = r.createContextualFragment(htmlStr);
74        this.JOSCinsertAdjacentElement(where, parsedHTML)
75    }
76
77/*    HTMLElement.prototype.JOSCinsertAdjacentText = function
78    (where, txtStr)
79    {
80        var parsedText = document.createTextNode(txtStr)
81        this.JOSCinsertAdjacentElement(where, parsedText)
82    }
83    */
84}
85
86/***************************
87 * F U N C T I O N S
88 ***************************/
89 
90function JOSC_HTTPParam()
91{
92}
93
94JOSC_HTTPParam.prototype.create = function(josctask, id)
95{
96    this.result = 'option=com_comment';
97    this.insert('no_html', 1);
98    var form = document.joomlacommentform;
99    this.insert('component', form.component.value);
100    this.insert('joscsectionid', form.joscsectionid.value);
101    this.insert('josctask', josctask);
102    this.insert('comment_id', id);
103    return this.result;
104}
105
106JOSC_HTTPParam.prototype.insert = function(name, value)
107{
108    this.result += '&' + name + '=' + value;
109    return this.result;
110}
111
112JOSC_HTTPParam.prototype.encode = function(name, value)
113{
114    return this.insert(name, encodeURIComponent(value));
115}
116
117function JOSC_BusyImage()
118{
119}
120
121JOSC_BusyImage.prototype.create = function(id)
122{
123//	var form = document.joomlacommentform;
124    var image = document.createElement('img');
125    image.setAttribute('src', JOSC_template + '/images/busy.gif');
126    image.setAttribute('id', id+"Image");
127    var element = document.getElementById(id);
128    if (!element.innerHTML) element.appendChild(image);
129    JOSC_ajaxNotActive = false;
130}
131
132JOSC_BusyImage.prototype.destroy = function(id)
133{
134    var image = document.getElementById(id+"Image");
135    image.parentNode.removeChild(image);
136    JOSC_ajaxNotActive = true;
137}
138
139var JOSC_ajaxNotActive = true; /* will be set in create/destroy BusyImage */
140var JOSC_busyImage = new JOSC_BusyImage();
141
142function JOSC_ajaxSend(data, onReadyStateChange)
143{
144    document.joomlacommentform.bsend.disabled = true;
145    JOSC_busyImage.create('JOSC_busypage');
146    JOSC_busyImage.create('JOSC_busy');
147    var URL = JOSC_ConfigLiveSite+'index.php';
148    JOSC_http.open("POST", URL , true);
149    JOSC_http.onreadystatechange = onReadyStateChange;
150    JOSC_http.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
151    if (JOSC_AjaxDebug) alert('###AJAXSEND:\n##URL=' + URL + ' ?' + data  + '\n##onReadyStateChange=' + onReadyStateChange);
152    JOSC_http.send(data);
153}
154
155function JOSC_ajaxReady()
156{
157    if (JOSC_http.readyState == 4) {
158    	/* received */
159        JOSC_busyImage.destroy('JOSC_busy');
160        JOSC_busyImage.destroy('JOSC_busypage');
161        document.joomlacommentform.bsend.disabled = false;
162        if (JOSC_http.status == 200) {
163        	/* response is ok */
164          	if (JOSC_AjaxDebug) alert('AJAXREADY: OK !' );
165            return true;
166        } else {
167          	if (JOSC_AjaxDebug) alert('AJAXREADY: KO ! Status=' + JOSC_http.status );
168		    return false;
169        }	
170    }
171    return false;
172}
173
174function JOSC_goToAnchor(name)
175{
176    clearTimeout(self.timer);
177    action = function()
178    {
179		var url = window.location.toString();
180		var index = url.indexOf('#');
181		if (index == -1) { window.location = url + '#' + name; }
182		else { window.location = url.substring(0, index) + '#' + name; }
183        if (JOSC_operaBrowser) window.location = '##';
184    }
185    if (JOSC_operaBrowser) self.timer = setTimeout(action, 50);
186    else action();
187}
188
189function JOSC_refreshPage(msg, id) 
190{
191	if (msg) alert(msg);
192
193    clearTimeout(self.timer);
194    action = function()
195    {
196		var url = window.location.toString();
197		var index = url.indexOf('?option=');
198		if (index == -1) { var sep = '?'; } /* SEF */
199		else			 { var sep = '&'; } /* normal */
200		window.location = JOSC_linkToContent + sep + 'comment_id=' + id + '#josc' + id;
201        //if (JOSC_operaBrowser) window.location = '##';
202    }
203    if (JOSC_operaBrowser) self.timer = setTimeout(action, 50);
204    else action();
205}
206
207function JOSC_getXmlResponse(withalert) {
208/* return DOM (W3C) if no parsing xml error else null  (alert will show a javascript alert) */
209  if (JOSC_http.responseXML && JOSC_http.responseXML.parseError &&(JOSC_http.responseXML.parseError.errorCode !=0)) {
210    error = JOSC_getXmlError(withalert);
211    return null; 
212  } else {
213  	if (JOSC_AjaxDebug) alert('###GETXMLRESPONSE:\n' + JOSC_http.responseText );
214/*    if (JOSC_operaBrowser && JOSC_AjaxDebug && JOSC_AjaxDebugLevel>1) {
215         txt = '';
216         for (prop in JOSC_http.responseXML)
217         {
218             txt = txt + '\n' + prop + '=' + JOSC_http.responseXML[prop];
219         }
220         alert('JOSC_getXmlResponse:http.responseXML='+txt);
221    }*/
222    return JOSC_http.responseXML;
223  }
224}
225
226function JOSC_getXmlError(withalert) {
227  if (JOSC_http.responseXML.parseError.errorCode !=0 ) {
228     line = JOSC_http.responseXML.parseError.line;
229     pos = JOSC_http.responseXML.parseError.linepos;
230     error = JOSC_http.responseXML.parseError.reason;
231     error = error + "Contact the support ! and send the following informations:\n error is line " + line + " position " + pos;
232	 error = error + " >>" + JOSC_http.responseXML.parseError.srcText.substring(pos);
233         error = error + "\nGLOBAL:" + JOSC_http.responseText;
234     if (withalert)
235       alert(error);
236     return error;
237   } else {
238     return "";
239   }
240}
241
242/*
243 * Form type function
244 */
245function JOSC_modifyForm(formTitle, buttonValue, onClick)
246{
247    document.getElementById('CommentFormTitle').innerHTML = formTitle;
248    button = document.joomlacommentform.bsend;
249    button.value = buttonValue;
250    button.onclick = onClick;
251}
252
253function JOSC_xmlValue(xmlDocument, tagName)
254{
255    try {
256        var result = xmlDocument.getElementsByTagName(tagName).item(0).firstChild.data;
257    }
258    catch(e) {
259        var result = '';
260    }
261    return result;
262}
263
264function JOSC_removePost(post)
265{
266    document.getElementById('Comments').removeChild(post);
267}
268
269/********************* 
270 * ajax call functions
271 */
272function JOSC_deleteComment(id)
273{
274    if (window.confirm(_JOOMLACOMMENT_MSG_DELETE)) {
275        var data = new JOSC_HTTPParam().create('ajax_delete', id);
276        JOSC_ajaxSend(data, function()
277            {
278                if (JOSC_ajaxReady()) {
279                    if (JOSC_http.responseText != '') alert(JOSC_http.responseText);
280                    else JOSC_removePost(document.getElementById('post' + id));
281                }
282            }
283            );
284    }
285}
286
287function JOSC_deleteAll()
288{
289	if (window.confirm(_JOOMLACOMMENT_MSG_DELETEALL)) {
290        var form = document.joomlacommentform;
291		var param = new JOSC_HTTPParam();
292		param.create('ajax_delete_all', -1);
293        JOSC_ajaxSend(param.insert('content_id',form.content_id.value), function()
294            {
295                if (JOSC_ajaxReady()) {
296                    if (JOSC_http.responseText != '') alert(JOSC_http.responseText);
297                    else {
298                    	/* JOSC_addNew();  why ? */
299                    	document.getElementById('Comments').innerHTML='';
300					}
301                }
302            }
303            );
304    }
305}
306
307
308function JOSC_editComment(id)
309{
310    JOSC_modifyForm(_JOOMLACOMMENT_EDITCOMMENT, _JOOMLACOMMENT_EDIT,
311        function(event)
312        {
313            JOSC_editPost(id, -1);}
314        );
315    JOSC_goToAnchor('CommentForm');
316    var data = new JOSC_HTTPParam().create('ajax_modify', id);
317    JOSC_ajaxSend(data, JOSC_editResponse);
318}
319
320function JOSC_quote(id)
321{
322    var data = new JOSC_HTTPParam().create('ajax_quote', id);
323    JOSC_goToAnchor('CommentForm');
324    JOSC_ajaxSend(data, JOSC_quoteResponse);
325}
326
327function JOSC_voting(id, yes_no)
328{
329    var data = new JOSC_HTTPParam().create('ajax_voting_' + yes_no, id);
330    JOSC_ajaxSend(data, JOSC_votingResponse);
331}
332
333function JOSC_reloadCaptcha()
334{
335    var data = new JOSC_HTTPParam().create('ajax_reload_captcha', 0);
336    JOSC_ajaxSend(data, JOSC_editPostResponse);
337}
338
339function JOSC_searchForm()
340{
341	JOSC_removeSearchResults();
342	var searchform = document.joomlacommentsearch;
343	var form = document.joomlacommentform;
344    if (searchform) {
345        searchform.parentNode.removeChild(searchform);
346        if (!JOSC_operaBrowser) document.joomlacommentsearch = null;
347    } else {
348        var param = new JOSC_HTTPParam();
349        param.create('ajax_insert_search', 0);
350        JOSC_ajaxSend(param.insert('content_id', form.content_id.value), JOSC_searchFormResponse);
351    }
352}
353
354function JOSC_search()
355{
356	JOSC_removeSearchResults();
357	var keyword = document.joomlacommentsearch.tsearch.value;
358	if (keyword=='') return 0;
359	var param = new JOSC_HTTPParam();
360	param.create('ajax_search', 0);
361	param.encode('search_keyword', keyword)
362	JOSC_ajaxSend(param.insert('search_phrase',JOSC_rsearchphrase_selection), JOSC_searchResponse);
363}
364
365//function editPost(id, parentid) {
366//	/* for backward compatibility with templates */
367//	return JOSC_editPost(id, parentid);
368//}
369
370function JOSC_editPost(id, parentid)
371{
372	var form = document.joomlacommentform;
373    if (form.tcomment.value == '') 
374    {
375        alert(_JOOMLACOMMENT_FORMVALIDATE);
376        return 0;
377    }
378    if  ( document.getElementsByName('tnotify')[0]  && document.getElementsByName('temail')[0] )
379    {   if ( form.tnotify.selectedIndex && form.temail.value == '') {
380            alert(_JOOMLACOMMENT_FORMVALIDATE_EMAIL);
381            return 0;
382        }
383    }
384    if (JOSC_captchaEnabled && form.security_try.value == '')
385    {
386        alert(_JOOMLACOMMENT_FORMVALIDATE_CAPTCHA);
387        return 0;
388    }
389  
390    
391    if (JOSC_ajaxEnabled)
392    {
393        var param = new JOSC_HTTPParam();
394        param.create(id == -1 ? 'ajax_insert' : 'ajax_edit', id);
395        param.insert('content_id', form.content_id.value);
396        if (JOSC_captchaEnabled) 
397        {
398            param.insert('security_try', form.security_try.value);
399            param.insert('security_refid', form.security_refid.value);
400        }
401        if (parentid != -1) param.insert('parent_id', parentid);
402        param.encode('tname', form.tname.value);
403	    /* optional */
404        if (document.getElementsByName('tnotify')[0])  { if (form.tnotify.selectedIndex) param.encode('tnotify', '1'); else param.encode('tnotify', '0'); };
405        if (document.getElementsByName('temail')[0])    param.encode('temail', form.temail.value);
406        if (document.getElementsByName('twebsite')[0])  param.encode('twebsite', form.twebsite.value);
407        /************/
408        param.encode('ttitle', form.ttitle.value);
409		JOSC_ajaxSend(param.encode('tcomment', form.tcomment.value), JOSC_editPostResponse);
410    } 
411    else 
412    {
413    	/* should we use JOSC_ConfigLiveSite ? */
414        form.action = JOSC_ConfigLiveSite+'/index.php?option=com_comment&josctask=noajax';
415        form.submit();
416    }
417}
418
419function JOSC_getComments(id, limitstart) 
420{
421    
422	var form = document.joomlacommentform;
423	if (JOSC_ajaxEnabled && JOSC_ajaxNotActive) 
424    {
425	    JOSC_ShowHide('', 'joscPageNavNoLink', 'joscPageNavLink')
426        var param = new JOSC_HTTPParam();
427        param.create('ajax_getcomments', id);
428        param.insert('content_id',form.content_id.value);
429    	JOSC_ajaxSend(param.insert('josclimitstart', limitstart), JOSC_getCommentsResponse);
430    }
431}
432
433/*
434 * END of ajax call functions
435 */
436 
437/********************
438 * response functions
439 */
440function JOSC_editResponse()
441{
442    if (JOSC_ajaxReady()) {
443        if (JOSC_http.responseText.indexOf('invalid') == -1) {
444            var form = document.joomlacommentform;
445            var xmlDocument = JOSC_getXmlResponse(JOSC_XmlErrorAlert);; /*JOSC_http.responseXML;*/
446            if (xmlDocument) {
447
448    	        JOSC_userName = form.tname.value;
449    	        form.tname.value = JOSC_xmlValue(xmlDocument, 'name');
450
451          		form.ttitle.value = JOSC_xmlValue(xmlDocument, 'title');
452          	  	form.tcomment.value = JOSC_xmlValue(xmlDocument, 'comment');
453
454           		/* optional values of the templates ! */
455            	if (document.getElementsByName('tnotify')[0]) {
456            	   JOSC_userNotify = form.tnotify.selectedIndex; 
457            	   form.tnotify.selectedIndex = new Boolean(JOSC_xmlValue(xmlDocument, 'notify')*1);
458            	}
459            	if (document.getElementsByName('temail')[0]) {
460            	  JOSC_userEmail = form.temail.value; 
461            	  form.temail.value = JOSC_xmlValue(xmlDocument, 'email');
462            	}
463            	if (document.getElementsByName('twebsite')[0]) {
464            		JOSC_userWebsite = form.twebsite.value;
465            	    form.twebsite.value = JOSC_xmlValue(xmlDocument, 'website');
466            	}
467            	/* ********************** */
468            } else {
469            	form.tcomment.value = 'failed to retrieve datas';
470            }
471            if (self.JOSC_afterAjaxResponse) JOSC_afterAjaxResponse('response_edit');
472        }
473    }
474}
475
476function JOSC_quoteResponse()
477{
478    if (JOSC_ajaxReady()) {
479        if (JOSC_http.responseText.indexOf('invalid') == -1) {
480            var form = document.joomlacommentform;
481            var xmlDocument = JOSC_getXmlResponse(true);
482            if (xmlDocument) {
483	            name = JOSC_xmlValue(xmlDocument, 'name');
484    	        if (name == '') name = _JOOMLACOMMENT_ANONYMOUS;
485        	    if (form.ttitle.value == '') form.ttitle.value = 're: ' +
486            	    JOSC_xmlValue(xmlDocument, 'title');
487	            form.tcomment.value += '[quote=' + name + ']' +
488    	        JOSC_xmlValue(xmlDocument, 'comment') + '[/quote]';
489        	} else {
490            	form.tcomment.value = 'failed to retrieve datas';
491            }
492            if (self.JOSC_afterAjaxResponse) JOSC_afterAjaxResponse('response_quote');
493        }
494    }
495}
496
497function JOSC_votingResponse()
498{
499    if (JOSC_ajaxReady()) {
500        if (JOSC_http.responseText.indexOf('invalid') == -1) {
501            var form = document.joomlacommentform;
502            var xmlDocument = JOSC_getXmlResponse(JOSC_XmlErrorAlert); /*JOSC_http.responseXML;*/
503            var id = JOSC_xmlValue(xmlDocument, 'id');
504            var yes = JOSC_xmlValue(xmlDocument, 'yes');
505            var no = JOSC_xmlValue(xmlDocument, 'no');
506            document.getElementById('yes' + id).innerHTML = yes;
507            document.getElementById('no' + id).innerHTML = no;
508			if (self.JOSC_afterAjaxResponse) JOSC_afterAjaxResponse('response_voting');
509        }
510    }
511}
512
513function JOSC_editPostResponse()
514{
515    if (JOSC_ajaxReady()) {
516        if (JOSC_http.responseText.indexOf('invalid') == -1) {
517            var form = document.joomlacommentform;
518            var element = document.getElementById('Comments');
519			var xmlDocument = JOSC_getXmlResponse(true); /*JOSC_http.responseXML;*/
520			if (!xmlDocument) {
521                return 0;
522            }
523            var id = JOSC_xmlValue(xmlDocument, 'id');
524            var captcha = JOSC_xmlValue(xmlDocument, 'captcha');
525            if (captcha) {
526                JOSC_refreshCaptcha(captcha);
527                if (id == 'captchaalert') {
528                	alert(_JOOMLACOMMENT_FORMVALIDATE_CAPTCHA_FAILED);
529                 	return 0;
530                }
531                if (id == 'captcha') {
532                	return 0;
533                }
534            }
535            anchor = 'josc' + id;
536            var idsave = id;
537            id = 'post' + id;
538            var body = JOSC_xmlValue(xmlDocument, 'body');
539			var post = document.getElementById(id);
540            var after = JOSC_xmlValue(xmlDocument, 'after');
541            JOSC_clearInputbox();
542            var noerror = JOSC_xmlValue(xmlDocument, 'noerror');
543			if (noerror==0) {
544				alert(_JOOMLACOMMENT_REQUEST_ERROR);
545				form.tcomment.value=JOSC_http.responseText;
546				return 0;
547            }
548            var published = JOSC_xmlValue(xmlDocument, 'published');
549			if (published==0) {
550				alert(_JOOMLACOMMENT_BEFORE_APPROVAL);
551				form.tcomment.value="";
552				if (self.JOSC_afterAjaxResponse) JOSC_afterAjaxResponse('response_approval');
553				return 0;
554            }
555            if (post) {
556				var className = JOSC_getPostClass(post);
557                var indent = post.style.paddingLeft;
558                JOSC_insertAdjacentHTML(post, 'beforeBegin', body);
559                JOSC_removePost(post);
560                newPost = document.getElementById(id);
561                JOSC_setPostClass(newPost, className);
562                newPost.style.paddingLeft = indent;
563                JOSC_modifyForm(_JOOMLACOMMENT_WRITECOMMENT, _JOOMLACOMMENT_SENDFORM,
564                    function(event)
565                    {
566                        JOSC_editPost(-1, -1);
567                    });
568                form.tname.value = JOSC_userName;
569            	if (document.getElementsByName('temail')[0])   form.temail.value = JOSC_userEmail;
570            	if (document.getElementsByName('website')[0])   form.website.value = JOSC_userWebsite;
571		if (self.JOSC_afterAjaxResponse) JOSC_afterAjaxResponse('response_editpost');
572
573            } else {
574                if (!after || after == -1)
575                	if (JOSC_sortDownward != 0) {
576                		if (JOSC_postREFRESH)
577    	            		JOSC_refreshPage(_JOOMLACOMMENT_MSG_NEEDREFRESH, idsave);
578	                	else
579	                		JOSC_insertAdjacentHTML(element, 'afterBegin', body);
580               		} else {
581                		if (JOSC_postREFRESH)
582    	            		JOSC_refreshPage(_JOOMLACOMMENT_MSG_NEEDREFRESH, idsave);
583	                	else
584                			JOSC_insertAdjacentHTML(element, 'beforeEnd', body);
585               		}
586                else {
587                	if (document.getElementById('post' + after))
588                		JOSC_insertAdjacentHTML(document.getElementById('post' + after), 'afterEnd', body);
589                	else
590                		/* pagination or post has been deleted or new one from another users...=> refresh */
591                		JOSC_refreshPage(_JOOMLACOMMENT_MSG_NEEDREFRESH, idsave);
592                }
593
594                JOSC_setPostClass(document.getElementById(id), 'sectiontableentry' + JOSC_postCSS);
595                JOSC_postCSS == 1 ? JOSC_postCSS = 2 : JOSC_postCSS = 1;
596		if (self.JOSC_afterAjaxResponse) JOSC_afterAjaxResponse('response_posted');
597            }
598            JOSC_goToAnchor(anchor);
599       		//JOSC_refreshPage('', idsave);
600        }
601	}
602}
603
604function JOSC_getCommentsResponse() {
605
606    //JOSC_ShowHide('', 'joscPageNavLink', 'joscPageNavNoLink');
607    
608    if (JOSC_ajaxReady()) {
609
610        if (JOSC_http.responseText.indexOf('invalid') == -1) {
611
612			JOSC_resetFormPos(); /* if reply... */
613			
614            var element = document.getElementById('Comments');
615            var elementPN = document.getElementById('joscPageNav');
616
617			var xmlDocument = JOSC_getXmlResponse(true); /*JOSC_http.responseXML;*/
618			if (!xmlDocument) {
619                return 0;
620            }
621
622            element.innerHTML='';
623            elementPN.innerHTML='';
624
625            var body 	= JOSC_xmlValue(xmlDocument, 'body');
626            var pagenav	= JOSC_xmlValue(xmlDocument, 'pagenav');
627
628            if (JOSC_sortDownward != 0)
629				JOSC_insertAdjacentHTML(element, 'afterBegin', body);
630            else {
631                JOSC_insertAdjacentHTML(element, 'beforeEnd', body);
632            }
633			JOSC_insertAdjacentHTML(elementPN, 'afterBegin', pagenav);
634
635			if (self.JOSC_afterAjaxResponse) JOSC_afterAjaxResponse('response_getcomments');
636		}
637	}
638}
639
640function JOSC_searchFormResponse()
641{
642	if (JOSC_ajaxReady()) {
643        form = JOSC_http.responseText;
644        if (form != '') {
645            JOSC_insertAdjacentHTML(document.getElementById('CommentMenu'), 'afterEnd', form);
646			if (self.JOSC_afterAjaxResponse) JOSC_afterAjaxResponse('response_searchform');
647		}
648    }
649}
650
651function JOSC_searchResponse()
652{
653    if (JOSC_ajaxReady()) {
654        form = JOSC_http.responseText;
655		if (form != '') {
656            JOSC_insertAdjacentHTML(document.joomlacommentsearch, 'afterEnd', form);
657			if (self.JOSC_afterAjaxResponse) JOSC_afterAjaxResponse('response_search');
658		}
659    }
660}
661
662/*
663 * END of response functions
664 */
665
666/*
667 * Template functions
668 */
669//function JOSC_goToPost(contentid, id)
670//{
671//	var form = document.joomlacommentform;
672//	if (form.content_id.value==contentid) JOSC_goToAnchor('josc'+id); /* not correct in case of pagination. use JOSC_viewPost */
673//	else window.location = 'index.php?option=' + form.component + '&task=view&id=' + contentid + '#josc' + id;
674//	if (JOSC_operaBrowser) window.location = '##';
675//}
676//
677//function JOSC_viewPost(contentid, id, itemid)
678//{
679//	var form = document.joomlacommentform;
680//	window.location = 'index.php?option=' + form.component + '&task=view&id=' + contentid + (itemid ? ('&Itemid='+itemid) : '') + '&comment_id=' + id + '#josc' + id;
681//	if (navigator.userAgent.toLowerCase().indexOf("opera") != -1) window.location = '##';
682//}
683
684function JOSC_reply(id)
685{
686    var form = document.joomlacommentform;
687    var post = document.getElementById('post' + id);
688    var postPadding = post.style.paddingLeft.replace('px','')*1;
689    form.style.paddingLeft = ( postPadding + 20 ) + 'px';
690    JOSC_modifyForm(_JOOMLACOMMENT_WRITECOMMENT, _JOOMLACOMMENT_SENDFORM,
691    function(event)
692    {
693        JOSC_editPost(-1, id);
694	});
695    JOSC_insertAdjacentElement(post, 'afterEnd', form);
696    if (self.JOSC_afterAjaxResponse) JOSC_afterAjaxResponse('response_reply');
697}
698
699function JOSC_resetFormPos() {
700    var form = document.joomlacommentform;   
701    var formpos = document.getElementById('JOSC_formpos');
702    if (form.parentNode.id != 'comment' || (formpos && form.parentNode.id != 'JOSC_formpos')) 
703    {
704	    form.style.paddingLeft = '0px';
705    	form.bsend.onclick = function(event)
706    	{
707	        JOSC_editPost(-1, -1);
708	    } ;
709	    if (!formpos)
710        	JOSC_insertAdjacentElement(document.getElementById('Comments'), 'afterEnd', form);
711        else
712			JOSC_insertAdjacentElement(formpos, 'afterEnd', form);
713	}
714}
715		    
716function JOSC_insertUBBTag(tag)
717{
718    JOSC_insertTags('[' + tag + ']', '[/' + tag + ']');
719}
720
721function JOSC_fontColor(){
722  var color = document.joomlacommentform.menuColor.selectedIndex;
723  switch (color){
724    case 0: color=''; break;
725    case 1: color='aqua'; break;
726    case 2: color='black'; break;
727    case 3: color='blue'; break;
728    case 4: color='fuchsia'; break;
729    case 5: color='gray'; break;
730    case 6: color='green'; break;
731    case 7: color='lime'; break;
732    case 8: color='maroon'; break;
733    case 9: color='navy'; break;
734    case 10: color='olive'; break;
735    case 11: color='purple'; break;
736    case 12: color='red'; break;
737    case 13: color='silver'; break;
738    case 14: color='teal'; break;
739    case 15: color='white'; break;
740    case 16: color='yellow'; break;
741  }
742  if (color!='') JOSC_insertTags('[color='+color+']','[/color]');
743}
744
745function JOSC_fontSize()
746{
747    var size = document.joomlacommentform.menuSize.selectedIndex;
748    switch (size) {
749        case 0: size = '';
750            break;
751        case 1: size = 'x-small';
752            break;
753        case 2: size = 'small';
754            break;
755        case 3: size = 'medium';
756            break;
757        case 4: size = 'large';
758            break;
759        case 5: size = 'x-large';
760            break;
761    }
762    if (size != '') JOSC_insertTags('[size=' + size + ']', '[/size]');
763}
764
765function JOSC_emoticon(icon)
766{
767  var txtarea = document.joomlacommentform.tcomment;
768  JOSC_scrollToCursor(txtarea, 0);
769  txtarea.focus();
770  JOSC_pasteAtCursor(txtarea, ' ' + icon + ' ');
771  JOSC_scrollToCursor(txtarea, 1);
772}
773/*
774 * END of template function
775 */
776 
777/*
778 * ALL OTHERS UTILS FUNCTION
779 */
780function JOSC_insertTags(bbStart, bbEnd) {
781  var txtarea = document.joomlacommentform.tcomment;
782  JOSC_scrollToCursor(txtarea, 0);
783  txtarea.focus();
784
785  if ((JOSC_clientVer >= 4) && JOSC_is_ie && JOSC_is_win) {
786    theSelection = document.selection.createRange().text;
787    if (theSelection) {
788      document.selection.createRange().text = bbStart + theSelection + bbEnd;
789      theSelection = '';
790      return;
791    } else {
792      JOSC_pasteAtCursor(txtarea, bbStart + bbEnd);
793	}
794  } else if (txtarea.selectionEnd && (txtarea.selectionEnd - txtarea.selectionStart > 0)) {
795    var selLength = txtarea.textLength;
796    var selStart = txtarea.selectionStart;
797    var selEnd = txtarea.selectionEnd;
798    var s1 = (txtarea.value).substring(0,selStart);
799    var s2 = (txtarea.value).substring(selStart, selEnd)
800    var s3 = (txtarea.value).substring(selEnd, selLength);
801    txtarea.value = s1 + bbStart + s2 + bbEnd + s3;
802    txtarea.selectionStart = selStart + (bbStart.length + s2.length + bbEnd.length);
803    txtarea.selectionEnd = txtarea.selectionStart;
804    JOSC_scrollToCursor(txtarea, 1);
805    return;
806  } else {
807    JOSC_pasteAtCursor(txtarea, bbStart + bbEnd);
808	JOSC_scrollToCursor(txtarea, 1);
809  }
810}
811
812function JOSC_scrollToCursor(txtarea, action) {
813  if (JOSC_is_nav) {
814    if (action == 0) {
815      JOSC_scrollTopPos = txtarea.scrollTop;
816      JOSC_scrollLeftPos = txtarea.scrollLeft;
817    } else {
818      txtarea.scrollTop = JOSC_scrollTopPos;
819      txtarea.scrollLeft = JOSC_scrollLeftPos;
820    }
821  }
822}
823
824function JOSC_pasteAtCursor(txtarea, txtvalue) {
825  if (document.selection) {
826    var sluss;
827    txtarea.focus();
828    sel = document.selection.createRange();
829    sluss = sel.text.length;
830    sel.text = txtvalue;
831    if (txtvalue.length > 0) {
832      sel.moveStart('character', -txtvalue.length + sluss);
833    }
834  } else if (txtarea.selectionStart || txtarea.selectionStart == '0') {
835    var startPos = txtarea.selectionStart;
836    var endPos = txtarea.selectionEnd;
837    txtarea.value = txtarea.value.substring(0, startPos) + txtvalue + txtarea.value.substring(endPos, txtarea.value.length);
838    txtarea.selectionStart = startPos + txtvalue.length;
839    txtarea.selectionEnd = startPos + txtvalue.length;
840  } else {
841    txtarea.value += txtvalue;
842  }
843}
844
845function JOSC_clearInputbox()
846{
847    var form = document.joomlacommentform;
848    form.ttitle.value = '';
849    form.tcomment.value = '';
850}
851
852function JOSC_getPostClass(post)
853{
854    return post.getElementsByTagName('ul')[0].getElementsByTagName('li')[0].className;
855}
856
857function JOSC_setPostClass(post, value)
858{
859    post.getElementsByTagName('ul')[0].getElementsByTagName('li')[0].className = value;
860}
861
862function JOSC_refreshCaptcha(captcha)
863{
864    document.getElementById('captcha').innerHTML = captcha;
865    document.joomlacommentform.security_try.value = '';
866}
867
868function JOSC_removeSearchResults()
869{
870    var searchResults = document.getElementById('SearchResults');
871    if (searchResults) searchResults.parentNode.removeChild(searchResults);
872}
873
874function JOSC_addNew()
875{
876	JOSC_resetFormPos();
877/*
878    var form = document.joomlacommentform;
879    form.style.paddingLeft = '0px';
880    form.bsend.onclick = function(event)
881    {
882        JOSC_editPost(-1, -1);
883    } ;
884    if (form.parentNode.id != 'comment')
885        JOSC_insertAdjacentElement(document.getElementById('Comments'), 'afterEnd', form);
886*/
887    JOSC_goToAnchor('CommentForm');
888}
889
890function JOSC_ShowHide(emptyvalue, showId, hideId) {
891
892	if (showId && showId!=emptyvalue) {
893		document.getElementById(showId).style.visibility='visible';
894		document.getElementById(showId).style.display = '';
895	}
896	if (hideId && hideId!=emptyvalue) {    
897		document.getElementById(hideId).style.visibility = 'hidden';
898		document.getElementById(hideId).style.display = 'none';
899	}
900	return(showId);    
901}
902
903function JOSC_toogle(ElementId) {
904     		    
905	if (ElementId) {
906		if (document.getElementById(ElementId).style.visibility=='hidden') {
907			document.getElementById(ElementId).style.visibility='visible';
908			document.getElementById(ElementId).style.display = '';
909		} else {
910			document.getElementById(ElementId).style.visibility = 'hidden';
911			document.getElementById(ElementId).style.display = 'none';
912		}
913	}
914}
915
916/*
917 * return 0 if nothing done
918 * return 1 if hidden->visible
919 * return 2 if visible->hidden
920 */
921function JOSC_toogleR(ElementId) {
922     		    
923	if (ElementId) {
924		if (document.getElementById(ElementId).style.visibility=='hidden') {
925			document.getElementById(ElementId).style.visibility='visible';
926			document.getElementById(ElementId).style.display = '';
927			return 1;
928		} else {
929			document.getElementById(ElementId).style.visibility = 'hidden';
930			document.getElementById(ElementId).style.display = 'none';
931			return 2;
932		}
933	} else return 0;
934} 

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.