/**
 * Вывод информации в консоль, если объект консоли существует
 * @param value mixed - выводимое значение
 * @param string title - имя выводимого значения
 */
function printLog(value, title)
{
	if(typeof console != 'undefined')
	{
		if(typeof title != 'undefined')
		{
			console.log(title, value);
		}
		else
		{
			console.log(value);
		}
	}
}


/**
* Загрузка данных с сервера. Возращает данные в виде массива объектов
* @param object obj - объект, в который преобразуется ответ сервера
* @param method method - вызываемый метод
* @param string param - строка параметров
* @return array - массив объектов
*/
function getAll__ (/**string*/method,/**string*/param,/**object*/obj)
{
	if(typeof obj == 'undefined')
	{
		obj = null;
	}
	
	var parseResultArray=new Array();
	
	jQuery.ajax({
		ret:null,
		async:false,
		cache:false,
		type: "POST",
		data: param,
		url: cerebroHostUrl+"/responser.php?method="+method,
		dataType: "XML",
		success: function(rawxml)
		{
			//console.log('xml', rawxml);
			if (rawxml.substr(0,2)!="<?")
			{
				// TODO Убрать этот alert
				//alert("ERROR!!!! Wrong XML!\n"+rawxml);
				var objStatus = new ResponseStatus();
				objStatus.code = 'AJAX Error';
				objStatus.message = 'Wrong XML';
				parseResultArray.push(objStatus);
				return parseResultArray;
			}
			else
			{
				var xml;
				if(jQuery.browser.msie)
				{
					xml = new ActiveXObject("Microsoft.XMLDOM");
					xml.async = false;
					xml.loadXML(rawxml);
				}
				else xml = rawxml;
				
				var nodes = jQuery("node",xml);
				if(nodes.length == 0)
				{// Пришел XML без нодов
					//alert('ERROR!!!! Wrong XML!\n'+rawxml);
					alert('ERROR!!!! Wrong XML!');
					var objStatus = new ResponseStatus();
					objStatus.code = 'AJAX ERROR';
					objStatus.message = 'Wrong XML';
					parseResultArray.push(objStatus);
					return parseResultArray;
				}
				
				// Парсим статус ответа сервера
				var objStatus = new ResponseStatus();
				jQuery(nodes[0]).find("*").each (function(){
					for(var key in objStatus)
					{
						if (key==this.nodeName.toLowerCase()) eval ("objStatus."+this.nodeName.toLowerCase()+" = '"+jQuery(this).text().split('\n')[0]+"'");
					}
				});
				parseResultArray.push(objStatus);
				
				//console.log('objStatus', objStatus);
				
				// Парсим сам ответ сервера, если он пришел и если передан объект, в который нужно парсить XML
				if(obj != null && nodes.length > 1)
				{
					for(var i=1; i<nodes.length; i++)
					{
						var obj_clone = clone(obj);
						jQuery(nodes[i]).find("*").each (function(){
							for(var key in obj_clone)
							{
								if (key==this.nodeName.toLowerCase())
								{
									//console.log('name', this.nodeName.toLowerCase());
									//console.log('value', jQuery(this).text().split('\n')[0]);
									var value = jQuery(this).text();
									//printLog(name, "name");
									//name = name.replace('"', '\"');
									value = value.replace(/\'/, "\\'");
									//printLog(name, "name replaced");
									
									eval ("obj_clone."+this.nodeName.toLowerCase()+" = '"+value+"'");
								}
							}
						});
						//console.log('obj_clone', obj_clone);
						parseResultArray.push(obj_clone);
					}
				}
			}
		},
		error: function(err)
		{
			alert("Server connection error.");
		}
	});
	return parseResultArray;
};

/**
* Клонирование объекта
* @param object obj - объект для клонирования
* @return object - склонированный объект
*/
function clone(obj)
{
	if(obj == null || typeof(obj) != 'object') return obj;
	if( (obj instanceof Date) == true)
	{
		var temp = new Date();
		temp.setTime(obj.getTime());
		return temp;
	}

	var temp = new obj.constructor();
	for(var key in obj) temp[key] = clone(obj[key]);
	return temp;
};

/**
* Вывод сообщения об ошибке пользователю
* @param string msg - текст сообщения об ошибке
* @param string htmlMessageId - ид div в который вывести сообщение об ошибке
*/
function errorMessage(/**string*/msg, /**string*/htmlMessageId)
{
	if(typeof htmlMessageId == 'undefined')
	{
		alert(msg);
	}
	else
	{
		jQuery('#'+htmlMessageId).text(msg);
		jQuery('#'+htmlMessageId).removeClass('form-invisible');
	}
};

/**
* Скрываем все сообщения об ошибках, выведенных в форму
*/
function hideErrorMessages()
{
	jQuery('.error-message').text('');
	jQuery('.error-message').addClass('form-invisible');

};

function dateToStr(dateObj)
{
	var year = dateObj.getFullYear();
	var month = dateObj.getMonth()+1;
	var day = dateObj.getDate();
	
	if(month < 10)
	{month = '0'+month;}
	
	if(day < 10)
	{day = '0'+day;}
	
	return day+'.'+month+'.'+year;
}