/**
* Comments
**/
comments = (function(){
	var url = 'ajax/comment.php';
	var commentAddShow = 0;
	var commain, comadd, combox, compages, comtext, comload, comsub;
	var text;
	var module, mid, guest, pages; 
	var act, cajax;
	
	function setData(set){
		if(set == 'text'){
			text = comtext.value;
			var pattern = /\r\n|\r|\n/g;
      text = text.replace(pattern, "<br>");
			text = str_replace("+","--plus--", text);
      text = trim(text);
		}
	}
	
	
	function initBox(e, level){
		var obj = e;
		for(i=0; i<level; i++){
			obj = obj.parentNode;
		}
		
		for(i=0; i<obj.childNodes.length; i++){
			var obj1 = obj.childNodes[i];
			
			if(obj1.nodeType == 1 && obj1.id == "commodule"){
				module = obj1.value;
			}
			if(obj1.nodeType == 1 && obj1.id == "commid"){
				mid = obj1.value;
			}
			if(obj1.nodeType == 1 && obj1.id == "comguest"){
				guest = obj1.value;
			}
			if(obj1.nodeType == 1 && obj1.id == "compage"){
				pages = obj1.value;
			}
			if(obj1.nodeType == 1 && obj1.id == "commentbox"){
				combox = obj1;
			}
			if(obj1.nodeType == 1 && obj1.id == "commentpages"){
				compages = obj1;
			}
			if(obj1.nodeType == 1 && obj1.id == "commentform"){
				for(j=0; j<obj1.childNodes.length; j++){
					var obj2 = obj1.childNodes[j];
					if(obj2.nodeType == 1 && obj2.className == "commentmenu"){
						comsub = obj2.lastChild;
					} 
					if(obj2.nodeType == 1 && obj2.className == "commentadd"){
						comadd = obj2;
						for(c=0; c<obj2.childNodes.length; c++){
							var obj3 = obj2.childNodes[c];
							if(obj3.nodeType == 1 && obj3.className == "commenttextadd"){
								comtext = obj3;
							}
							if(obj3.nodeType == 1 && obj3.tagName == "TABLE"){
								comload = obj3.firstChild.firstChild.lastChild.firstChild;
							}
						}
					}
				}
			}
		}
	}
	function endAddComments(){
		comtext.value = '';
		hide(comload);
		hide(comadd);
	}
	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 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 showConfirm(cid){
		elem = 'message'+cid;
		var message = "Вы действительно желаете удалить комментарий?";
		var butttonYes = button('commentbutton1','javascript:comments.remove("'+cid+'", null, true);','Да');
		var butttonNo  = button('commentbutton1','javascript:comments.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){
				comsub.innerHTML = "Отписаться от новых комментариев этой страницы";
				comsub.onclick = function() {return comments.unsubscribe(this);}
			}
    }
		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:comments.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 comment_temp = xml.getElementsByTagName('comment')[0].firstChild.nodeValue;
			if(comment_temp == 0){
				comment_temp = '';
			}
      combox.innerHTML = comment_temp;
      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;
        compages.innerHTML = page;
      }
    }
		if(act == 'subscribe'){
			var status = xml.getElementsByTagName('status')[0].firstChild.nodeValue;
			if(status == 1){
				comsub.innerHTML = "Отписаться от новых комментариев этой страницы";
				comsub.onclick = function() {return comments.unsubscribe(this);}
			}
		}
		if(act == 'unsubscribe'){
			var status = xml.getElementsByTagName('status')[0].firstChild.nodeValue;
			if(status == 1){
				comsub.innerHTML = "Подписаться на новые комментарии этой страницы";
				comsub.onclick = function() {return comments.subscribe(this);}
			}
		}
	}
	var onFail = function(){
		alert("Произошла ошибка связи, попробуйте еще раз!");
		hide(comload);
	}
	if(!cajax){
		cajax = new  Ajax(onDone, onFail);
	}
	return{
		show: function(e){
			setData();
			initBox(e, 3);
			toggle(comadd);
		},
		add: function(e){
			act = 'add';
			initBox(e, 5);
			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'});
			}
			show(comload);
		},
		remove: function(id, e, die){
			cid = id;
			act = 'remove';
			elem = 'comment'+id;
			if(die){
				cajax.post(url, {'module':module,'mid':mid,'cid':id,'start':pages,'act':'remove'});
			}else{
				initBox(e, 8);
				showConfirm(id);
			}
		},
		hidemsg: function(elem){
			hide(elem);
		},
		nextPage: function(start,e){
			initBox(e, 2);
			act = 'newPage';
			cajax.post(url, {'module':module,'mid':mid,'start':start,'act':'newPage'});
		},
		subscribe: function(e){
			initBox(e, 3);
			act = 'subscribe';
			cajax.post(url, {'module':module,'mid':mid,'act':'subscribe'});
		},
		unsubscribe: function(e){
			initBox(e, 3);
			act = 'unsubscribe';
			cajax.post(url, {'module':module,'mid':mid,'act':'unsubscribe'});
		}
	}
}())
