var serverRoot='http://lugavchik.blogdns.org:888';
var serverRoot='';
var NoCss=false;

function showReplyForm(post,comment){
var form=document.getElementById('replyForm');
var parent = document.getElementById((comment&&(comment!=0))?'c'+ comment:'e'+ post);
var display= ((parent==form.parentNode)&&(form.style.display==''))?'none':'';
form.style.display='none';
var subj='';
if (comment){
	var che=parent.childNodes;
	for (var i=0, len=che.length; i<len; i++) {
        	if (che[i].className=='commentSubj'){
			subj='RE: '+che[i].innerHTML.replace('RE: ','');
			break;
		}
	}
}
parent.appendChild(form);
SetValue('ReplyComment',(comment)?comment:0);
SetValue('ReplyPostId',post);
SetValue('ReplySubj',subj);
//alert(display);
form.style.display=display;
//if (post) alert(post);
return true;
}

function SendReply(){
if (GetValue('ReplyText')==''){
	alert('Please Enter text');
	return true;
}
try{
  var oRequest = CreateAjaxRequest(this,serverRoot+"/reply.php",'SendReplyOk','SendReplyFail',[GetValue('ReplyPostId'),GetValue('ReplyComment')]);
  if (oRequest){
	CreateThrobber(document.getElementById('replyForm'));
    oRequest.setMethod('POST');
	oRequest.setTimeout(30000);
	oRequest.setParam('ajax','true');
    oRequest.setParam('post',		GetValue('ReplyPostId'));
    oRequest.setParam('comment',	GetValue('ReplyComment'));
    oRequest.setParam('subj',		GetValue('ReplySubj'));
    oRequest.setParam('text',		GetValue('ReplyText'));
    return oRequest.start();
  }
  return false;
}catch(e){
alert("ErrorQuery: "+e.description);
}
return false;
}

function CreateThrobber(element){
	HideThrobber();
	var img=appendElement(element,'img',{src:"/img/throbber2.gif",'id':"throbber"});
	img.style.padding='0px';
	img.style.position='absolute';

}

function SendReplyOk(r,a){
	eval(r);
if (result.result!='Ok'){
	alert(result.Error);
	return false;
}
	t=document.createElement('div');
	t.innerHTML=result.text;
	
	form=document.getElementById('replyForm');
if ((a[1])&&(a[1]!=0)){
	after=document.getElementById('c'+a[1]);
//	alert('c'+a[1]);
}
	else
	{
a[1]=undefined;
//alert('e');
	after = document.getElementById('e'+a[0]);
	}
//	alert(after);
//	alert(after.parentNode);
//	alert(after.nextSibling);
//	alert(t.firstChild);
	after.parentNode.insertBefore(t,after.nextSibling);
	UpdateCommentCount(result.Entry,result.CommentCount);
	SetValue('ReplyPostId','');
	SetValue('ReplyComment','');
	SetValue('ReplySubj','');
	SetValue('ReplyText','');
	showReplyForm(a[0],a[1]);
	HideThrobber();
}

function UpdateCommentCount(Entry,CommentCount){
	var c=document.getElementById('e'+Entry+'cc');
	if (c) {
		c.innerHTML=CommentCount;
		c.parentNode.parentNode.className=(CommentCount==0)?'hide':'';
		ShowHide(c.parentNode.parentNode,(CommentCount!=0));
	}
	var c=document.getElementById('me'+Entry+'cc');
	if (c) c.innerHTML=CommentCount;
}

function SendReplyFail(){
	HideThrobber();
}

function HideThrobber(){
	var throbber=document.getElementById('throbber')
	if (throbber)	throbber.parentNode.removeChild(throbber);	
}

function ShowPreview(){
	alert('Временно не работает');
	return true;
}

function GetValue(name){
var el=(typeof(name)=='object')?name:document.getElementById(name);
if (!el) return null;
if (el.value) return el.value;
return  el.value || el.textContent || el.nodeText || el.nodeValue || el.innerHTML || null;
}

function SetValue(name,value){
var el=document.getElementById(name);
if (!el)
	return false;
el.value=value;
return true;
}

function getElementsByClass(searchClass,node,tag) {
	var classElements = new Array();
	if ( node == null )
		node = document;
	if ( tag == null )
		tag = '*';
	var els = node.getElementsByTagName(tag);
	var elsLen = els.length;
	var pattern = new RegExp("(^|\\s)"+searchClass+"(\\s|$)");
	for (i = 0, j = 0; i < elsLen; i++) {
		if ( pattern.test(els[i].className) ) {
			classElements[j] = els[i];
			j++;
		}
	}
	return classElements;
}

function FixLinks(){
var links=document.getElementsByTagName('a');
for (var i=0; i<links.length;i++){
	links[i].onmousedown=function(){ ReplaceLink(this);};
	if (links[i].className=='cut'){
		links[i].onclick=function (){return !LoadCut(this);};
	}
	}
}


function NoCSS(){
NoCss=true;
}

function isLinkExternal(link)
{
    var r = new RegExp('^[\\w]+://(?:www.)?' + location.host.replace(/^www./, ''));
    return !r.test(link);
}


function ReplaceLink(el){
	if (isLinkExternal(el.href))
		el.href="/out.php?url="+encodeURIComponent(el.href);
	else{
		
/*
 var pattern = "^"+
 // $1 http://
            '((?:http|ftp):\/\/)'+                 
 // $2 логин:пароль@
            '((?:[a-z\d\-_\.!~*();=+$,]|&[\w]+;|%[a-f\d]{2})*(?:\:(?:[a-z\d\-_.!~*();=+$,]|&[\w]+;|%[a-f\d]{2})*)@)?'+            
 // $3 хост 
//            '([a-z\d\-.]+)'+  
 // $4 :порт
//            '(:\d*)?'+
 // $5 путь
//            '(\/(?:(?:[a-z\d\-_.!~*():=+$,]|&[\w]+;|%[a-f\d]{2})*\/)*)?'+
 // $6 файл
//            '((?:[a-z\d\-_.!~*()=+$,]|&[\w]+;|%[a-f\d]{2})*)?'+
 // $7 параметры
//            '(\?[^#]*)?'+
 // $8 Хеш
//	    '(#.*)?'+
            "$";
*/
var result = new RegExp(/^(?:((?:http|ftp):\/\/)((?:[a-z\d\-_\.!~*();=+$,]|&[\w]+;|%[a-f\d]{2})*(?:\:(?:[a-z\d\-_.!~*();=+$,]|&[\w]+;|%[a-f\d]{2})*)@)?([a-z\d\-.]+)(:\d*)?)?(\/(?:(?:[a-z\d\-_.!~*():=+$,]|&[\w]+;|%[a-f\d]{2})*\/)*)?((?:[a-z\d\-_.!~*()=+$,]|&[\w]+;|%[a-f\d]{2})*)?(\?[^#]*)?(#.*)?$/i).exec(el.href);
result.shift();
var query=[];
if (result[6])
	query.push(result[6]);
if (NoCss)
	query.push('nocss');
//alert(result);
//alert(result[6]);
if (query.length>0)
result[6]='?'+query.join('&').replace(/^\?/,'');
el.href=result.join('');
	}
		
return true;
}

function LoadCut(el){
 info=el.href.match(/(\d+)\.html(?:\?.*?)?#cut(\d+)/);
if (info[1]>0){
el.id="cut_"+info[1]+'_'+info[2];
try{
   oRequest = CreateAjaxRequest(this,serverRoot+"/ajax.php",'AjaxLoadOk','AjaxLoadFail',{'entry':info[1],'cut':info[2]});
  if (oRequest){
	CreateThrobber(el);
	oRequest.setMethod('POST');
	oRequest.setTimeout(30000);
    oRequest.setParam('action',		'LoadCut');
    oRequest.setParam('entry',		info[1]);
    oRequest.setParam('cut',	 	info[2]);
    return oRequest.start();
  }
  return false;
}catch(e){
alert("ErrorQuery: "+e.description);
}
return false;

}
return false;
}

function LoadCutOk(data,local){
	var div=document.createElement('div');
	div.innerHTML=data.CutText;
	var cut=document.getElementById('cut_'+local.entry+'_'+local.cut)
	cut.parentNode.replaceChild(div,cut);
}

function AjaxLoadOk(r,a){
HideThrobber();
try{

eval (r)

}catch(e){
	alert('Error:\n'+r);
}

	if (result.result!='Ok')
		{
		alert(result.Error);
		return false;
		}
	var funct=result.Action+'Ok';
	eval (funct+'(result.Data,a)');

}

function AjaxLoadFail(a){
HideThrobber();
}


function autoshow(){

var elements=getElementsByClass('show');
for (var i=0; i<elements.length;i++)
	elements[i].style.display='';

}

function autohide(){

var elements=getElementsByClass('hide');
for (var i=0; i<elements.length;i++)
	elements[i].style.display='none';

}

function ShowHide(element,visible){
if (typeof(element)!='object')
	element=document.getElementById(element);
element.style.display=(
	(visible==null)?
		((element.style.display=='none')?'':'none'):
		((visible==true)?'':'none'));
return true;

}


function appendElement(to,tag,value){
var el=document.createElement(tag);
for (var name in value)
	if (value.hasOwnProperty(name))
		el[name]=value[name];
to.appendChild(el);
return el;
}

function RunAjax(path,param,arg,post){

try{
  var oRequest = CreateAjaxRequest(this,path,"AjaxLoadOk","AjaxLoadFail",arg);
  if (oRequest){
	if (post)
	    oRequest.setMethod('POST');
	for (var name in param)
		if (param.hasOwnProperty(name))
			oRequest.setParam(name, param[name]);
  	return oRequest.start   ();
  }
  return false;
}catch(e){
	alert("ErrorQuery: "+e.description);
}

return false;
}

DOM.addEventListener(window, 'load', FixLinks);