/* 
 **************************************************************************************************************************************************************
 **** Простые Ajax-функции  ***********************************************************************************************************************************
 ************************************************************************************************************************************************************** 
*/


/*
 *** Ajax-запрос для совершения действия ***
*/
// ***получаем:
// - act       - тип действия
// - params    - массив с параметрами, спецефичными для каждого действия
function AJSSimpleAjaxFuncs(act,params) {
	//default vars...
	var prgBarID      = 0;      //id прогресс-бара
	var errorID       = 0;      //id ошибки, если запрос не вернулся
	var ajax_do_query = false;  //делать ли запрос
	var ajax_method   = "GET";  //метод запроса 
	var ajax_cnt_type = "";     //ajax - заголовок
	var ajax_post_dat = ""      //post-данные
	//проверяем, разрешен ли запрос, если нет - выходим
	if(!AjaxCanQuery()) return;	
	//составляем базовый url
	var url = '/kernel/mod/php/ajax.simple.funcs.php?ajax=1&act=' + act;
	//смотрим действие
	switch(act) {
		//добавляем коммент к сну------------------------------------------------------------------------------------------------------------------
		case 'add_dream_cmt' :			
			//проверяем текст
			var dCmtText = document.getElementById('dCmtText');
			if(dCmtText.value.length < 3) {
				alert('Ошибка!!! Слишком короткий комментарий');
				break;			
			}
			//дополняем url
			url += '&did=' + params[0] + '&uid=' + params[1] + ((document.getElementById('sfcode')) ? ('&sfcode=' + encodeURIComponent(document.getElementById('sfcode').value)) : '');
			//post - данные
			ajax_method   = "POST";					
			ajax_post_dat = "comment=" + encodeURIComponent(dCmtText.value);
			ajax_do_query = true;
			break;
		//голосуем-----------------------------------------------------------------------------------------------------------------------
		case 'vote' :
			//дополняем url
			url += '&id=' + params[0] + '&mod=' + params[1] + '&val=' + params[2];
			ajax_do_query = true;
			break;
	}
	//если нужно сделать запрос
	if(ajax_do_query) {		
		//делаем запрос		
		ajaxRequest.onreadystatechange = AJSSimpleAjaxFuncsResult;		
		AjaxNewQuery(url,ajax_method,ajax_post_dat,'def',prgBarID,errorID);	
		//alert(url);
	}
}
/*
 *** Обработка результатов Ajax-запроса ****************************************************************************************************************************
*/
function AJSSimpleAjaxFuncsResult() {
	//если все норм.
	if(ajaxRequest.readyState == 4) {
		if(ajaxRequest.status == 200) {		
	
			//разбиваем вернувшееся значение
			var responseArr = ajaxRequest.responseText.split("|");
		
			//ост. таймер и разр. новый запрос				
			AjaxAbortQuery();				
			
			//alert(responseArr);
			
			//смотрим 1-ый элемент массива, если неудачно
			if(responseArr[0] != 'success') {
				//выводим сообщение
				alert('Ошибка!!! Попробуйте еще раз...');
				//выходим
				return;
			}			

			//если не было ошибки - смотрим какое было действие
			switch(responseArr[1]) {
				//добавляем комментарий-----------------------------------------------------------------------------------------------------
				case 'add_dream_cmt' :	
					//если неверно введен защитный код
					if(responseArr[2] == "wrong_sfcode") {
						alert("Неверно введен защитный код. Попробуйте еще раз...");
					}
					//успешно добавлено
					else if(responseArr[2] == "added") {
						var cmt_id = responseArr[3];  //id элемента
						var login  = responseArr[4];  //логин, добавившего пользователя
						var date   = responseArr[5];  //дата
						//берем div с комментами
						dCmtBox = document.getElementById('dCmtBox');	
						//берем textarea
						dCmtText = document.getElementById('dCmtText')
						dCmtTextSymCount = document.getElementById('dCmtTextSymCount')
						//если был div 'нет комментов' - удаляем его
						if(dCmtNone = document.getElementById('dCmtNone')) {
							dCmtBox.removeChild(dCmtNone);
						}
						//добавляем новый
						//row #1
						newP     = STDCrtWDOM('p','','',0);
						newSmall = STDCrtWDOM('small','','gray',0);
						newDate  = STDCrtWDOM('text',date + ' от ','',0);
						if(login == "") {
							newUser = STDCrtWDOM('span','анонима','',0);	
						}
						else newUser = STDCrtWDOM('a',login,'',[['href','/users/'+login+'/']]);	
						newRating = STDCrtWDOM('text',' | рейтинг: 0','',0);						
						newSmall.appendChild(newDate);	
						newSmall.appendChild(newUser);	
						newSmall.appendChild(newRating);	
						newP.appendChild(newSmall);	
						dCmtBox.appendChild(newP);	
						//row #2				
						var text = dCmtText.value;
						text = text.replace(/[\r]/gi,"\n")
						text = text.replace(/[\n]+/gi,"\n")
						text = text.replace(/[\n]/gi,"<br />")
						newP = STDCrtWDOM('p','','',0);
						newI = STDCrtWDOM('i',text,'',0);
						newP.appendChild(newI);
						dCmtBox.appendChild(newP);	
						//restore editor
						dCmtText.value = '';
						dCmtTextSymCount.parentNode.style.visibility = 'hidden';
						dCmtTextSymCount.parentNode.style.postion    = 'absolute';	
					}	
					//меняем каптчу
					if(document.getElementById('sfcode')) {						
						CPTCaptchaRefresh('captcha');		
						document.getElementById('sfcode').value = '';
					}
					break;
				//голосовали-----------------------------------------------------------------------------------------------------------------------
				case 'vote' :								
					//успешно
					if(responseArr[2] == "voted") {						
						var el_id  = responseArr[3];            //id объекта
						var mod_id = parseInt(responseArr[4]);  //id модуля
						var vt_val = parseInt(responseArr[5]);  //значение голосования
						var rate   = parseInt(responseArr[6]);  //результат голосования
						//если голосовали за сон
						if(mod_id == 1) {
							//если проголосовали - меняем
							if(rate == 2) {	
								var dCmtLikeTimes = document.getElementById('dCmtLikeTimes');												
								dCmtLikeTimes.innerHTML = '' + (parseInt(dCmtLikeTimes.innerHTML) + 1) + '';
							}							
							//удаляем ссылку
							var dCmtLike = document.getElementById('dCmtLike_' + el_id);												
							dCmtLike.parentNode.removeChild(dCmtLike);
						}
						//если голосовали за коммент						
						else if(mod_id == 2) {		
							//если проголосовали - меняем
							if(rate == 2) {														
								var dCmtRating = document.getElementById('dCmtRating_'+el_id);												
								dCmtRating.innerHTML = '' + (parseInt(dCmtRating.innerHTML) + vt_val) + '';
							}							
							//удалем линки для голосования
							var dCmtRateLinks = document.getElementById('dCmtRateLinks_' + el_id);						
							dCmtRateLinks.parentNode.removeChild(dCmtRateLinks);
						}		
						//если голосовали за толкование						
						else if(mod_id == 3) {	
							//если проголосовали - меняем
							if(rate == 2) {														
								var interpTrueC2 = document.getElementById('interpTrueC2');												
								interpTrueC2.innerHTML = '' + (parseInt(interpTrueC2.innerHTML) + 1) + '';
							}
							//отображаем кол-во
							document.getElementById('interpTrueC').style.display = 'block';
							//прячем кнопку
							document.getElementById('interpTrue').style.display = 'none';
							
						}
					}
					break;
			}
		}
	}
} 
