/**
* Comments
**/
comment = (function(){
	var commentAddShow = 0;
	var url = 'ajax/comment.php';
	var act, id, actpage, load;
	var cid, uid, module, mid, text;
	var tmp, cajax;
	//setInterval('alert("ref");', 30000);
	function setData(set){
		module = ge('commodule').value;
		mid = ge('commid').value;
		uid = ge('comuid').value;
		guest = ge('comguest').value;
		load = geByClass('commentload')[0].style;
		if(set == 'text'){
			text = geByClass('commenttextadd')[0].value;
			//text = str_replace("\r\n","<br>",text);
			var pattern = /\r\n|\r|\n/g;
      text = text.replace(pattern, "<br>");
			text = str_replace("+","--plus--", text);
      text = trim(text);
		}
		if(set == 'page'){ actpage = ge('compage').value; }
	}
	function button(btn_class, btn_click, btn_text){
		var template;
		template = "<div class='"+btn_class+"'>";
		template+= "<b class='nc'><b class='nc1'><b></b></b><b class='nc2'><b></b></b></b>";
		template+= "<span class='ncc'><a href='"+btn_click+"'>"+btn_text+"</a></span>";
		template+= "<b class='nc'><b class='nc2'><b></b></b><b class='nc1'><b></b></b></b>";
		template+= "</div>";
		return template;
	}
	function endAddComments(){
		geByClass('commenttextadd')[0].value = '';
		load.display = "none";
		geByClass('commentadd')[0].style.display = 'none';
		commentAddShow = 0;
	}
  function showMessage(set){
		if(set == 'notext'){
			alert('Введите текст');
		}
		if(set == 'doubleText'){
			alert('Вы уже отправляли данный текст сообщения!');
			endAddComments();
		}
		if(set == 'noName'){
			ge('guestmsg').innerHTML = "Введите имя!";
		}
		if(set == 'noEmail'){
			ge('guestmsg').innerHTML = "Введите e-mail!";
		}
  }
  function showConfirm(cid){
		elem = 'message'+cid;
		var message = "Вы действительно желаете удалить комментарий?";
		var butttonYes = button('commentbutton1','javascript:comment.remove("'+cid+'",true);','Да');
		var butttonNo  = button('commentbutton1','javascript:comment.hidemsg("'+elem+'");','Нет');
		ge(elem).innerHTML = "<div class='commentmsg'><table><tr><td><div class='message'>"+ message +"</div></td><td>"+ butttonYes +"</td><td> "+ butttonNo +"</td></tr></table></div>";
		show(elem);
	}
 	var onDone = function(xml, text){
    var act_comments = false;
    if(act == 'add'){
      var status = xml.getElementsByTagName('status')[0].firstChild.nodeValue;
      var sub    = xml.getElementsByTagName('subscribe')[0].firstChild.nodeValue;
      if(status == 1){
        act_comments =  true;
        endAddComments()
      }else{
        showMessage('doubleText');
      }
      if(sub == 1){
				ge('commentsubscribe').innerHTML = "Отписаться от новых комментариев этой страницы";
				ge('commentsubscribe').href = "javascript:comment.unsubscribe();";
			}
    }
    if(act == 'remove'){
      var status = xml.getElementsByTagName('status')[0].firstChild.nodeValue;
      if(status == 1){
        act_comments =  true;
      }else{
        var error = xml.getElementsByTagName('error')[0].firstChild.nodeValue;
				elem = 'message'+cid;
				var buttonClose = button('commentbutton1', 'javascript:comment.hidemsg("'+elem+'");','Закрыть');
				ge(elem).innerHTML = "<div class='commentmsg'><table><tr><td><div class='message'>"+ error +"</div></td><td>"+ buttonClose +"</td></tr></table></div>";
      }
    }
    if(act == 'newPage'){
      act_comments =  true;
    }
    if(act_comments){
			var comments = xml.getElementsByTagName('comment')[0].firstChild.nodeValue;
			if(comments == 0){
				comments = '';
			}
      ge('commentbox').innerHTML = comments;
      var pages  = xml.getElementsByTagName('pages')[0];
      var status = pages.getElementsByTagName('status')[0].firstChild.nodeValue;
      if(status == '1'){
        var page = pages.getElementsByTagName('page')[0].firstChild.nodeValue;
        ge('commentpages').innerHTML = page;
      }
    }
    if(act == 'subscribe'){
			var status = xml.getElementsByTagName('status')[0].firstChild.nodeValue;
			if(status == 1){
				ge('commentsubscribe').innerHTML = "Отписаться от новых комментариев этой страницы";
				ge('commentsubscribe').href = "javascript:comment.unsubscribe();";
			}
		}
		if(act == 'unsubscribe'){
			var status = xml.getElementsByTagName('status')[0].firstChild.nodeValue;
			if(status == 1){
				ge('commentsubscribe').innerHTML = "Подписаться на новые комментарии этой страницы";
				ge('commentsubscribe').href = "javascript:comment.subscribe();";
			}
		}
	}
	var onFail = function(){
		alert("Произошла ошибка связи, попробуйте еще раз!");
		load.display = "none";
	}
	if(!cajax){
		cajax = new  Ajax(onDone, onFail);
	}
	return{
		show: function(){
      setData();
 			if(commentAddShow == 0){
				geByClass('commentadd')[0].style.display = 'block';
				geByClass('commenttextadd')[0].focus();
				commentAddShow = 1;
			}else{
				geByClass('commentadd')[0].style.display = 'none';
				commentAddShow = 0;
			}
		},
		add: function(){
			act = 'add';
			setData('text');
			if(text == '') {showMessage('notext'); return;}
			if(guest == 1){
				name = ge('gname').value;
				if(name == '') { showMessage('noName');   return; }
				email = ge('gemail').value;
				if(email == '') { showMessage('noEmail'); return; }
				cajax.post(url, {'module':module,'mid':mid,'text':text,'act':'add','guest':guest,'name':name,'email':email});
			}else{
				cajax.post(url, {'module':module,'mid':mid,'text':text,'act':'add'});
			}
			load.display = "block";
		},
		remove: function(id, die){
			cid = id;
			act = 'remove';
			elem = 'comment'+id;
			if(die){
				setData('page');
				cajax.post(url, {'module':module,'mid':mid,'cid':id,'start':actpage,'act':'remove'});
			}else{
				showConfirm(id);
			}
		},
		hidemsg: function(elem){
			hide(elem);
		},
		nextPage: function(start){
			act = 'newPage';
			setData();
			cajax.post(url, {'module':module,'mid':mid,'start':start,'act':'newPage'});
		},
		subscribe: function(){
			act = 'subscribe';
			setData();
			cajax.post(url, {'module':module,'mid':mid,'act':'subscribe'});
		},
		unsubscribe: function(){
			act = 'unsubscribe';
			setData();
			cajax.post(url, {'module':module,'mid':mid,'act':'unsubscribe'});
		}
	}
}())
