var jc_isDOM=document.getElementById;
var jc_isO=window.opera&&jc_isDOM;
var jc_isO8=jc_isO&&document.createProcessingInstruction&&(new XMLHttpRequest()).getAllResponseHeaders;
var jc_isO9=jc_isO&&window.getSelection;
var jc_isIE=document.all&&document.all.item&&!jc_isO;
var jc_isMZ=jc_isDOM&&(navigator.appName=="Netscape");
var jc_cache=new Array();

function jc_addComment(){jc_setup();return xajax.call('addComment',arguments,1);}
function jc_applyComment(){jc_setup();return xajax.call('saveComment',arguments,1);}
function jc_deleteComment(){jc_setup();return xajax.call('deleteComment',arguments,1);}
function jc_editComment(i){jc_setup();var a=new Array();a[0]=i;if((jc_cache[i]=='')||(!jc_def(jc_cache[i]))) return xajax.call('editComment',a,1);}
function jc_cancelComment(){jc_setup();return xajax.call('cancelComment',arguments,1);}
function jc_publishComment(){jc_setup();return xajax.call('publishComment',arguments,1);}
function jc_quoteComment(){jc_setup();return xajax.call('quoteComment',arguments,1);}
function jc_showPage(){jc_setup(); return xajax.call('showPage',arguments,1);}
function jc_showComment(){jc_setup();return xajax.call('showComment',arguments,1);}
function jc_jump2email(){jc_setup();return xajax.call('jump2email',arguments,1);}
function jc_sendComment(){jc_addComment(xajax.getFormValues('comments-form'));return false;}
function jc_saveComment(i){jc_applyComment(xajax.getFormValues('comment-edit-form-'+i));return false;}

function jc_cancelEditComment(i){if(jc_cache[i]!=''){xajax.$('comment-body-'+i).innerHTML=jc_cache[i];jc_cache[i]='';jc_cancelComment(i);}}
function jc_geteditor(){return xajax.$('comments-form-comment');}
function jc_scrollTo(n){var e=xajax.$(n),t=e.offsetTop;for(var p=e.offsetParent;p;p=p.offsetParent){t+=p.offsetTop;}scrollTo(0,t);}
function jc_storeCaret(){var ta=jc_geteditor();if(typeof(ta.createTextRange)!="undefined")ta.caretPos=document.selection.createRange().duplicate();}
function jc_def(v){return (typeof(v)!="undefined");}
function jc_bbcode(e){return jc_surroundText('['+e+']','[/'+e+']');}
function jc_bbcode_list(e){return jc_surroundText('[list][*]','[/list]');}
function jc_smile(t){return jc_insertText(' '+t+' ');}
function jc_goto(l){window.open(l);return;}

function jc_updateafterdelete(id) {
 var l=xajax.$('comments-list'),i=0,f=false,c='';
 for(var i=0;i<l.childNodes.length;i++){
 var n=l.childNodes[i];
 if((n.tagName!=undefined)&&(n.tagName!='')){
 if(n.getAttribute('id')==('comment-'+id)){f=true;c=n.getAttribute('class');}
 else if(f){var s=n.getAttribute('class');n.setAttribute('class',c);c=s;}
 }
 }
}

function jc_insertText(text) {
 var ta=jc_geteditor();
 if(jc_def(ta.caretPos)&&ta.createTextRange){ta.focus();var sel=document.selection.createRange();sel.text=sel.text+text;ta.focus();}
 else if(jc_def(ta.selectionStart)){var ss=ta.value.substr(0, ta.selectionStart);
 var se=ta.value.substr(ta.selectionEnd),sp=ta.scrollTop;
 ta.value=ss+text+se;
 if(ta.setSelectionRange){ta.focus();ta.setSelectionRange(ss.length+text.length,ss.length+text.length);}
 ta.scrollTop=sp;
 } else {
 ta.value+=text;
 ta.focus(ta.value.length - 1);
 }
}

function jc_surroundText(t1,t2){
 var ta=jc_geteditor();
 if (jc_def(ta.caretPos) && ta.createTextRange){
 var cp=ta.caretPos,tl=cp.text.length;
 cp.text=cp.text.charAt(cp.text.length-1)==' '?t1+cp.text+t2+' ':t1+cp.text+t2;
 if(tl==0){cp.moveStart("character",-t2.length);cp.moveEnd("character",-t2.length);cp.select();}
 else{ta.focus(cp)};
 }else if(jc_def(ta.selectionStart)){
 var ss=ta.value.substr(0,ta.selectionStart),se=ta.value.substr(ta.selectionEnd);
 var sl=ta.value.substr(ta.selectionStart,ta.selectionEnd-ta.selectionStart);
 var nc=ta.selectionStart,sp=ta.scrollTop;
 ta.value=ss+t1+sl+t2+se;
 if(ta.setSelectionRange){
 if(sl.length==0){ta.setSelectionRange(nc+t1.length,nc+t1.length);}
 else{ta.setSelectionRange(nc,nc+t1.length+sl.length+t2.length);}
 ta.focus();
 }
 ta.scrollTop=sp;
 }else{ta.value+=t1+t2;ta.focus(ta.value.length-1);}
 return true;
}

function jc_checkKey(k){
if(k==4181||k==4169||k==2097||k==2098||k==2099||k==2100||k==4172||k==2124||k==2126||k==2127
||k==2114||k==2131||k==2133||k==2120||k==2121||k==2122||k==2132||k==2109||k==2156||k==2158
||k==2159||k==2146||k==2163||k==2165||k==2153||k==2152||k==2154){return true;}else{return false;}}

function jc_keydown(e) {
 var s,sl,r=false,code=e.keyCode,ta=jc_geteditor();
 if(!e) var e=window.event;
 if(code==0) code=e.charCode;
 if(e.altKey&&!e.ctrlKey) code=code+4096;
 if(e.ctrlKey) code=code+2048;
 if(jc_isMZ&&e.type=="keypress"&&jc_checkKey(code)){e.preventDefault();e.stopPropagation();return false;}
 if(jc_isMZ&&e.type=="keyup"&&(code==13||code==2061)) return false;
 if(jc_isIE&&code==2048+187) code=2048+61;
 if(jc_isIE&&code==2048+189&&e.shiftKey) code=2048+95;

 s=jc_isIE?document.selection.createRange().text:ta.value.substr(ta.selectionStart,ta.selectionEnd-ta.selectionStart);
 sl=(s.length>0);

 switch (code) {
 case 43:
 case 2091: 
 case 2109:
 if(e.ctrlKey&&e.shiftKey){ta.style.height=ta.clientHeight+12+'px';r=true;}break;
 case 45:
 case 2093: 
 case 2143:
 if(e.ctrlKey&&e.shiftKey){if(ta.clientHeight>50) ta.style.height=ta.clientHeight-12+'px';r=true;}break;
 case 2114:
 if(sl)r=jc_bbcode('b');break;
 case 2131:
 if(sl)r=jc_bbcode('s');break;
 case 2133:
 if(sl)r=jc_bbcode('u');break;
 case 2121:
 if(sl)r=jc_bbcode('i');break;
 case 2129:
 case 2146:
 var txt=null;if(document.getSelection){txt=document.getSelection();}
 else{var ds=document.selection;if(ds){var rn=ds.createRange();if(rn){txt=rn.text;}}}
 if(txt!=null){jc_insertText('[quote]'+txt+'[/quote]')}r=true;
 break;
 case 13:
 case 2061:
 case 4109:
 if(e.ctrlKey&&(ta.value.length>0)){jc_sendComment();r=true;}break;
 }
 if(r){ta.focus();if(jc_isMZ||jc_isO8){e.cancelBubble=true;e.preventDefault();e.stopPropagation();}e.returnValue=false;return false;} 
}

function jc_dblclick(e){
 var o=jc_isMZ?e.target:((jc_isIE||jc_isO)?e.srcElement:null);
 while (o!=null&&o.tagName!="BODY") {
 var id=(o.getAttribute("id")!=null)?o.getAttribute("id"):"";
 if(id.substring(0,13)=='comment-body-'){jc_editComment(id.substring(13,id.length));break;}
 o=jc_isMZ?o.parentNode:((jc_isIE||jc_isO)?o.parentElement:null);
 }
}

if(jc_isIE||jc_isO8){
 document.attachEvent("ondblclick",jc_dblclick);
 document.attachEvent((jc_isIE?"onkeydown":"onkeypress"),jc_keydown);
}else if(jc_isMZ){
 document.addEventListener("dblclick",jc_dblclick,true);
 document.addEventListener("keypress",jc_keydown,true);
 document.addEventListener("keyup",jc_keydown,true);
}
