// Аякс запроссы

// простой запросс
/*  url- путь к файлу к которому осуществляетс запросс
	params- что передается серверу
	backFunction - название функции, которая обрабатывает ответ сервера */
function reqvest(url,params,backFunction)
{			   
	$.post(
	  url,
	  {
		params: params // то что передается серверу
	  },
	  eval(backFunction) 
	);
}
/*Прмер использования:
var qvest=reqvest('/ajaxtest.php','type: "test-request",param1: "param1",param2: 2','show');
function show(data)
{
	alert(data);// ответ сервера
}*/


  /* Работа с куками */

/*function setCookie (name, value) {
   var curCookie = name + "=" + escape(value) + ";expires=Sun, 31-Dec-34 23:59:59 GMT";
   if ((escape(value)).length <= 4000) document.cookie = curCookie+";";
}

function getCookie (name) {
  var prefix = name + "=";
   var cookieStartIndex = document.cookie.indexOf(prefix);
   if (cookieStartIndex == -1) return null;
   var cookieEndIndex = document.cookie.indexOf(";", cookieStartIndex + prefix.length);
   if (cookieEndIndex == -1) cookieEndIndex = document.cookie.length;
   return unescape(document.cookie.substring(cookieStartIndex + prefix.length, cookieEndIndex));
}*/
  
function createCookie(name,value,days) {
	if (days) {
		var date = new Date();
		date.setTime(date.getTime()+(days*24*60*60*1000));
		var expires = "; expires="+date.toGMTString();
	}
	else var expires = "";
	document.cookie = name+"="+value+expires+"; path=/";
}

function readCookie(name) {
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for(var i=0;i < ca.length;i++) {
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
	}
	return null;
}
	
	
  /*Раскрывающиеся меню*/

function revalMenu()
{
	var uls=$("ul.reval");	
	if(uls[0])
	{		
		$(uls).each(
		function()
		{
			
			
			var ulId=$(this).attr("id");
			
			var cocFlag=0;
			if(readCookie("ul"+ulId))
			{
				cocFlag=readCookie("ul"+ulId);//    
				//alert(cocFlag);			
			}
			var liList=$(this).find("li");
			//alert(cocFlag);
			if(cocFlag=='1')
			{
				$(liList).show();			
			}
			else
			{
				$(liList).hide();	
			}				
			var span=$(this).find("span");
			span=span[0];
			span.onclick= function()
			{
				var nowSpan=this;
				var nowUl=this.parentNode;
				var lis=$(nowUl).find('li');
				var index=0;
				$(lis).each(
				function ()
				{
					
					var vis=this.style.display;
					//alert(vis);
					if(vis!='none')
					{
						if(index==0)
						{
							createCookie("ul"+ulId,0,20);
						}
						this.style.display='none';
						
					}
					else
					{
						if(index==0)
						{
							createCookie("ul"+ulId,1,20);
						}
						this.style.display='block';
						
					}
					index++;
				}
				);
			}
			
			
		}
		);			
	}
	
}


 /* ПОдгрузка контента при клике на пункты меню */
 
function contentLoadInit()
{
	var ul=$("#tabs_menu");
	if(ul)
	{
		var spans=$(ul).find("span.act");
		
		var x=0;
		
		$(spans).each(
		function()
		{
			var li=this.parentNode;
			var className=li.className;
			//alert(className);
			var y=x;
			
			if(readCookie("tab"))
			{
				if(className=='current')
				{
					//alert(li);
					$(li).attr("class","");
					className=null;
				}				
				var tabFlag=readCookie("tab");
				if(tabFlag==x)
				{
					$(li).attr("class","current");
					className='current';										
				}
			}
			
			if(className=='current')
			{
				loadList(this,y);	
			}
			this.onclick= function()
			{
				loadList(this,y);	
			}
			x++;
		}
		);	
	}
}
function loadList(span,x)
{
	//alert(x);
	createCookie("tab",x,20);
	var oldCurrLink=$("#tabs_menu").find("li.current");
	$(oldCurrLink).attr("class","");
	var li=span.parentNode;
	$(li).attr("class","current");	
	var post=$(li).attr("post");
	$("#pageBox").html("<img align='center' src='/img/autocomplete_indicator.gif'/>");
	//alert(post);
	$.post(
	  post,
	  {},
	  loadAccess
	)	
	
}

function loadAccess(data)// ответ сервера
{
  // Здесь мы получаем данные, отправленные сервером
 // alert(data);
 	$("#pageBox").html(data);
 	$("#addObjectButtonContainer").show();
}
  
$(document).ready(
	function()
	{
		revalMenu();//Раскрывающиеся меню
		contentLoadInit();//ПОдгрузка контента при клике на пункты меню 
	}
);

function setFormItemsDisable(fields, attr)
{
    disabled = (attr?"disabled":"");
    for (i in fields)
    {    
        $('#' + fields[i]).attr("disabled",disabled);
//        alert('#' + fields[i] + " = " + disabled);
    }
}


function JSONToArray(data)
{
    return eval( "(" + data + ")" );
}

function getFormFieldsDataArray(formFields)
{
    var value = 0;
    var data = new Object();
     for (var i in formFields)
    {    
//        alert(formFields[i] + "  " + $('#' + formFields[i]).val());
        value = $('#' + formFields[i]).val();
        if ($('#' + formFields[i]).attr("type") == "checkbox")
        {
            if ($('#' + formFields[i]).attr("checked"))
            {                
                if (value == "on") value = 1;
            }
            else
            {
                value = 0;
            }
        }
        data[formFields[i]] = value;
    }   
    return data;
}

function setFormProgressBar(formName, visible)
{
    if(visible)
    {
       $('#' + formName + 'Submit').hide();
       $('#' + formName + 'ProgressBar').show();
    }
        else
    {
       $('#' + formName + 'Submit').show();
       $('#' + formName + 'ProgressBar').hide();     
    }
}

function hideFormResultMessage(resultMessageId)
{
   $("#" + resultMessageId).hide();        
}

function showFormResultMessage(resultMessageId)
{
   $("#" + resultMessageId).show();        
}

function setFormResultMessage(successful, resultMessageId, msg)
{
     var className = "b-warning-message";
     if (successful)
     {
        className = "b-success-message";
     }    
    $("#" + resultMessageId).attr("class", className);
    $("#" + resultMessageId).html(msg);
    showFormResultMessage(resultMessageId);
}

function formPost(url, formName, formFields, resultMessageId)
{
    hideFormResultMessage(resultMessageId);
    setFormItemsDisable(formFields, true);
    setFormProgressBar(formName, true);

    var dataArray = getFormFieldsDataArray(formFields);
     $.post(url, dataArray,  function(data)
     {
         try
         {
            var value = JSONToArray(data);
            setFormResultMessage(value.isSuccessful, resultMessageId, value.message);            
            return value;
         }
         catch(Exception)
         {
            setFormResultMessage(false, resultMessageId, "Произошла внутренняя ошибка при сохранении данных:\n\n" + data);
         }

         setFormProgressBar(formName, false);
         setFormItemsDisable(formFields, false);
    });
    
}

function formPostCB(url, formName, formFields, resultMessageId, callback)
{
hideFormResultMessage(resultMessageId);
    setFormItemsDisable(formFields, true);
    setFormProgressBar(formName, true);

    var dataArray = getFormFieldsDataArray(formFields);
     $.post(url, dataArray,  function(data)
     {
         try
         {
            //var value = JSONToArray(data);
            if(typeof(callback) == 'function')
            {
                callback(data);
            }
         }
         catch(Exception)
         {
            setFormResultMessage(false, resultMessageId, "Произошла внутренняя ошибка при сохранении данных:\n\n" + data);
         }

         setFormProgressBar(formName, false);
         setFormItemsDisable(formFields, false);
    });    
}

function formPostContent(url, formName, formFields, resultMessageId, content)
{
    formPostContentCB(url, formName, formFields, resultMessageId, content, function(data)
    {
            var value = JSONToArray(data);
            setFormResultMessage(value.isSuccessful, resultMessageId, value.message); 
            $("#text_parent").removeAttr("disabled");     
    });
}

function formPostContentCB(url, formName, formFields, resultMessageId, content, callback)
{
    hideFormResultMessage(resultMessageId);
    setFormItemsDisable(formFields, true);
    setFormProgressBar(formName, true);
jQuery("#text_parent").attr("disabled","disabled");
    var dataArray = getFormFieldsDataArray(formFields);
//    dataArray['content'] = content;
     $.post(url, {text:content},  function(data)
//     $.post(url, {content:content},  function(data)
     {
         try
         {
            if(typeof(callback) == 'function')
            {
                callback(data);
            }             
          
         }
         catch(Exception)
         {
            setFormResultMessage(false, resultMessageId, "Произошла внутренняя ошибка при сохранении данных:\n\n" + data);
         }

         setFormProgressBar(formName, false);
         setFormItemsDisable(formFields, false);
    });
    
}
