/*js*/
var body,html;

_evt.onDOMReady
(
	function()
	{
		html = document.documentElement;
		body = document.getElementsByTagName('body')[0];
		if(YAHOO.env.ua.ie && (YAHOO.env.ua.ie < 7))
		{
			minWidth();
			_evt.on(window, 'resize', minWidth);
			setFixPng(_dom.getElementsByClassName('png', 'img'));
		};
		if(_dom.get('feedback-form')) checkFormFields();
		if(_dom.get('registration-form')) initRegFormCheck('registration-form');
		if(_dom.get('up_link')) checkContentHeight();
		//if(_dom.get('login-submit')) _evt.on(_dom.get('login-submit'), 'click', setCookie);
		
		if(_dom.get('login-phrase'))
		{
			_evt.on(_dom.get('login-phrase'), 'click', toggleLoginFrame);
			_evt.on(_dom.get('close-login-frame'), 'click', function(){ _dom.get('login-frame').style.display = 'none'; });
		}
		if(_dom.get('enter-link')) _evt.on(_dom.get('enter-link'), 'click', helpToLogin);
		if(_dom.get('c-form'))
		{
			_evt.on(_dom.get('comments-message'), 'click', toggleCommentForm);
			_evt.on(_dom.get('c-form'), 'submit', sendComment, { form:_dom.get('c-form')}, true);
			_evt.on(_dom.get('comment-body'), 'keyup', toggleSubmit, {txtarea:_dom.get('comment-body'), sbmit:_dom.get('add-comment')}, true);
		}
		if(_dom.get('pr-submit')) _evt.on(_dom.get('pr-submit'), 'click', sendPassRequest);
	}
);
//###################### FUNCTION FOR add bookmarks

function bookmark(a)
{
	var url = window.document.location,	title = window.document.title;
	if (YAHOO.env.ua.ie) window.external.AddFavorite(url,title);
	else if (YAHOO.env.ua.opera)
	{
		a.href = url;
		a.rel = "sidebar";
		a.title = title;
		return true;
	}
	else if (YAHOO.env.ua.gecko) window.sidebar.addPanel(title,url,"");
	else alert("Нажмите CTRL-D, чтобы добавить страницу в закладки.");
	return false;
}

//###################### FUNCTION FOR add bookmarks


//###################### FUNCTION FOR ALL
function checkContentHeight()
{
	if(_dom.get('right-column').offsetHeight < 800) _dom.get('up_link').style.display = 'none';
}

function minWidth()
{
	var wr = _dom.get('wrapper'), footer = _dom.get('footer');
	wr.style.width = (html.offsetWidth < 990) ? '990px' : '100%';
	footer.style.width = (html.offsetWidth < 990) ? '990px' : '100%';
}

function setFixPng(arr)
{
	if(arr)
	{
		for(var i=0, l=arr.length; i < l; i++)
		{
			fixPNG(arr[i]);
		}
	}
}

function fixPNG(el)
{
    var src;
    src = el.src;
    el.src = '/i/blank.gif';
    el.runtimeStyle.filter = 'progid:DXImageTransform.Microsoft.AlphaImageLoader(src=\'' + src + '\',sizingMethod=\'scale\')';
}

function scrollUp(e)
{
	_evt.preventDefault(e);
	if(document.documentElement.scrollTop) document.documentElement.scrollTop = 0;
	else if(document.getElementsByTagName('body')[0].scrollTop) document.getElementsByTagName('body')[0].scrollTop = 0;
}

function error(o){ alert('connection failure — '+o.statusText); _utils.loadingPanelHide('', '', '', '', 10); }
//###################### FUNCTION FOR ALL



//###################### LOGIN FUNCTION

function helpToLogin(e)
{
	_evt.preventDefault(e);
	scrollUp(e);
	_dom.get('login-frame').style.display = '';
	_dom.get('login-name').focus();
}

function toggleLoginFrame()
{
	var lf = _dom.get('login-frame');
	lf.style.display = (lf.offsetHeight == 0) ? '' : 'none';
	_dom.get('login-name').focus();
}
//###################### LOGIN FUNCTION







//######################## FEEDBACK FUNCTIONS
function checkFormFields()
{
	var n = _dom.get('mf-name'), em = _dom.get('mf-email'), m = _dom.get('mf-msg');
	_evt.on(n, 'keyup', checkForEmptyFields);
	_evt.on(em, 'keyup', checkForEmptyFields);
	_evt.on(m, 'keyup', checkForEmptyFields);
	_evt.on(_dom.get('ff'), 'submit', sendAjaxFeedback);
}

function checkForEmptyFields()
{
	var btn = _dom.get('mf-submit'), n = _dom.get('mf-name'), em = _dom.get('mf-email'), m = _dom.get('mf-msg');
	btn.disabled = ((n.value != '') || (em.value != '') || (m.value != '')) ? false : true;
}

function sendAjaxFeedback(e)
{
	_evt.preventDefault(e);
	_dom.get('feedback-form-error').innerHTML = 'Отправка сообщения<img src="/i/ajax-loader.gif" alt="" width="16" height="16" style="vertical-align:middle; margin-left:10px;" />';
	var q = 'name='+_dom.get('mf-name').value+'&email='+_dom.get('mf-email').value+'&message='+_dom.get('mf-msg').value+'&cache='+Math.random(),
		u = '/ajax/send_mail.ajax.php?',
		c = { success : showOk, failure : error };
	_connect.asyncRequest('POST', u, c, q);
}

function showOk(o)
{
	_dom.get('feedback-form-error').innerHTML = 'Cообщение отправлено.';
	_dom.get('feedback-form').style.display = 'none';
	_dom.get('feedback-again').style.display = '';
	_evt.on(_dom.get('feedback-again'), 'click', function(){ _dom.get('feedback-form').style.display = ''; _dom.get('feedback-again').style.display = 'none'; _dom.get('feedback-form-error').innerHTML = ''});
}
//######################## FEEDBACK FUNCTIONS





//###################### COMMENT FUNCTION
function toggleCommentForm()
{
	var cf = _dom.get('comments-frame');
	cf.style.display = (cf.offsetHeight == 0) ? '' : 'none';
}

function toggleSubmit()
{
	this.sbmit.disabled = (this.txtarea.value != '') ? false : true;
}

function sendComment(e)
{
	_utils.loadingPanelShow('Добавление комментария...', '#fff', '#c00', '', '');
	_evt.preventDefault(e);
	var form = this.form;
	_connect.setForm(form);
	var url = document.location,
		u = '/ajax/comments.ajax.php?',
		q = 'url='+url+'&mode=add&cache=' + Math.random(),
		c =
		{ 
			success : function(o){addComment(form, o)},
			failure : function(o){error(o)}
		};
	_connect.asyncRequest('POST', u+q, c);
}

function addComment(form,o)
{
	var error = _utils.isResponseError(o);
	if(!error)
	{
		_utils.loadingPanelHide('Комментарий добавлен.', '#fff', '#c00', '', 1000);
		if(!_dom.getElementsByClassName('comments-item')[0]) _dom.get('comments').innerHTML = '<h3>Комментарии:</h3>';
		_dom.get('comments').innerHTML += o.responseXML.getElementsByTagName('content')[0].firstChild.nodeValue;
		_dom.get('comment-body').value = '';
		_dom.get('add-comment').disabled = true;
	}
	else alert(error);
}

function deleteComment(id)
{
	if(confirm('Удалить этот комментарий?'))
	{
		_utils.loadingPanelShow('Удаление комментария...', '#fff', '#c00', '', '');
		var u = '/ajax/comments.ajax.php?',
			q = 'mode=delete&comment_id='+id+'&cache=' + Math.random(),
			c =
			{ 
				success : function(o){removeCommentHtml(o,id)},
				failure : function(o){error(o)}
			};
		_connect.asyncRequest('POST',u, c, q);
	}	
}

function removeCommentHtml(o, id)
{
	var comment = _dom.get('comment-'+id);
	comment.parentNode.removeChild(comment);
	if(!_dom.getElementsByClassName('comments-item')[0]) _dom.get('comments').innerHTML = '';
	_utils.loadingPanelHide('Комментарий удален.', '#fff', '#c00', '', 1000);
}

var readyToEdit = false;

function editComment(id)
{
	if(!readyToEdit)
	{
		readyToEdit = true;
		_utils.loadingPanelShow('Редактирование комментария...', '#fff', '#c00', '', '');
		var comment = _dom.getElementsByClassName('body', 'div', 'comment-'+id)[0],
			u = '/ajax/comments.ajax.php?',
			q = 'comment_id='+id+'&cache=' + Math.random(),
			c =
			{ 
				success : function(o)
				{
					_utils.loadingPanelHide('', '#fff', '#c00', '', 10);
					var txtarea = document.createElement('textarea'),
						button = document.createElement('button'),
						buttonClose = document.createElement('button'),
						text = _utils.getXMLcontent(o);
				
					txtarea.id = 'comment-txt-'+id;
					txtarea.value = text;
					oldText = text;
					button.id = 'edit-comment-button';
					buttonClose.id = 'close-comment-button';
					button.appendChild(document.createTextNode('Ок'));
					buttonClose.appendChild(document.createTextNode('Отмена'));
					comment.innerHTML = '';
					comment.appendChild(txtarea);	
					comment.appendChild(button);	
					comment.appendChild(buttonClose);
					_evt.on(button, 'click', sendNewComment, {id:id}, true);
					_evt.on(buttonClose, 'click', cancelEditComment, {id:id, oldText:oldText}, true);
				},
				failure : function(o){error(o)}
			};
		_connect.asyncRequest('POST',u, c, q);
	}
}


function sendNewComment()
{
	_utils.loadingPanelShow('Редактирование комментария...', '#fff', '#c00', '', '');
	var id = this.id,
		text = _dom.get('comment-txt-'+id).value,
		u = '/ajax/comments.ajax.php?',
		q = 'mode=edit&comment_id='+id+'&comment='+text+'&cache=' + Math.random(),
		c =
		{ 
			success : function(o){closeEditFrame(id,o)},
			failure : function(o){error}
		};
	_connect.asyncRequest('POST',u, c, q);
	_evt.removeListener(_dom.get('edit-comment-button'), 'click', sendNewComment);
	_evt.removeListener(_dom.get('close-comment-button'), 'click', cancelEditComment);
}

function closeEditFrame(id,o)
{
	_utils.loadingPanelHide('Комментарий отредактирован.', '#fff', '#c00', '', 1000);
	var comment = _dom.getElementsByClassName('body', 'div', 'comment-'+id)[0];
	comment.innerHTML = _utils.getXMLcontent(o);;
	readyToEdit = false;
}

function cancelEditComment()
{
	_utils.loadingPanelShow('Редактирование комментария...', '#fff', '#c00', '', '');
	var id = this.id,
		text = _dom.get('comment-txt-'+id).value,
		u = '/ajax/comments.ajax.php?',
		q = 'mode=edit&comment_id='+id+'&comment='+this.oldText+'&cache=' + Math.random(),
		c =
		{ 
			success : function(o){closeEditFrame(id,o)},
			failure : function(o){error}
		};
	_connect.asyncRequest('POST',u, c, q);
	_evt.removeListener(_dom.get('edit-comment-button'), 'click', sendNewComment);
	_evt.removeListener(_dom.get('close-comment-button'), 'click', cancelEditComment);
	readyToEdit = false;
}
//###################### COMMENT FUNCTION



//######################## ZOOM IMAGE FUNCTIONS
function openBigImage(src,desc,e)
{
	_evt.stopPropagation(e);
	_evt.preventDefault(e);
	removeBigImage(e);
	_utils.loadingPanelShow('Загрузка...', '#fff', '#c00', '', 100);
	var div = document.createElement('div'), img = new Image(), closer = document.createElement('div'), description = document.createElement('div');
	//create image container properties
	div.id = 'xxx-image';
	div.style.border = '2px solid #153408';
	div.style.position = 'absolute';
	div.style.zIndex = '10000';
	div.style.font = 'normal 12px Arial';
	//create description container
	description.style.padding = '10px 5px';
	description.style.background = '#153408';
	description.style.color = '#fff';
	//create closer container
	closer.id = 'xxx-image-close';
	closer.style.position = 'absolute';
	closer.style.top = '0';
	closer.style.right = (YAHOO.env.ua.ie) ? ((YAHOO.env.ua.ie < 7) ? '-1px' : '0') : '0';
	closer.style.background = '#F5373E';
	closer.style.color = '#fff';
	closer.style.padding = '2px 4px';
	closer.style.fontSize = '11px';
	closer.style.cursor = 'pointer';
	//after image has loaded
	img.onload = function()
	{ 
		scrollFix = (YAHOO.env.ua.webkit) ? body.scrollTop : html.scrollTop;
		div.style.width = this.offsetWidth + 'px';
		div.style.top = Math.round((html.clientHeight - div.offsetHeight)/2) + scrollFix + 'px';
		div.style.left = Math.round((html.clientWidth - div.offsetWidth)/2) + 'px';
		div.style.visibility = 'visible';
		_evt.on(html, 'click', removeBigImage);
		_evt.on(this, 'click', removeBigImage);
		_utils.loadingPanelHide('', '', '', '', 10);
	}
	
	body.appendChild(div);
	div.appendChild(img);
	div.appendChild(closer);
	div.appendChild(description);
	div.style.visibility = 'hidden';
	closer.innerHTML = 'закрыть';
	description.innerHTML = desc ? desc : 'Фото';
	img.src = src;
	img.style.verticalAlign = 'bottom';
	_evt.on(closer, 'click', removeBigImage);
}

function removeBigImage(e)
{
	_evt.stopPropagation(e);
	if(_dom.get('xxx-image')) body.removeChild(_dom.get('xxx-image'));
}
//######################## ZOOM IMAGE FUNCTIONS


//######################## REGISTRATION FUNCTIONS
function duplicateParanoyaValue(e)
{
	_evt.stopPropagation(e);
	if(_dom.get('pass').offsetHeight != 0) _dom.get('pass1').value =  _dom.get('pass').value
	else _dom.get('pass').value =  _dom.get('pass1').value
	
}

function togglePasswordView()
{
	_dom.get('pass').type = (_dom.get('paranoya').checked) ? 'text' : 'password';
}

function togglePasswordViewIe()
{
	var text = _dom.get('pass'), pass = _dom.get('pass1'), paranoya = _dom.get('paranoya').checked;
	
	pass.style.display = paranoya ? 'none' : '';
	text.style.display = paranoya ? '' : 'none';
	pass.className = paranoya ? '' : 'imperial';
	text.className = paranoya ? 'imperial' : '';
	if(paranoya) text.value = pass.value;
	else pass.value = text.value;
	_dom.get('paranoya-label').style.color = paranoya ? '#0b9444' : '#c00';
	setFormCheckListeners();
}


function initResetErrorMessage()
{
	var fields = _dom.getElementsByClassName('imperial', 'input', 'registration-form');
	for(var i = 0; i < fields.length; i++)
	{
		_evt.on(fields[i], 'focus', function(){ _dom.get('registration-form-error').innerHTML = '' }, {obj:fields[i]}, true)
	}
}
//######################## REGISTRATION FUNCTIONS

//######################## COOKIE
function setCookie(e)
{
	return true;
}

function sendPassRequest(e)
{
	_evt.preventDefault(e);
	var fields = _dom.getElementsByClassName('pr-imperial', 'input', 'pr-form'), empty = 0;
	for(var i = 0; i < fields.length; i++){ if(fields[i].value == '') empty = 1; }
	if(!empty)
	{
		_dom.get('pr-info').innerHTML = '<img src="/i/ajax-loader.gif" />'
		var u = '/ajax/pass_recovery.ajax.php?',
			q = 'nickname='+_dom.get('pr-nick').value+'&email='+_dom.get('pr-email').value+'&cache=' + Math.random(),
			c =
			{ 
				success : sprCallback,
				failure : error
			};
		_connect.asyncRequest('POST',u, c, q);
	}
	else
	{
		_dom.get('pr-info').innerHTML = 'Заполните все поля, пожалуйста.';
	}
}

function sprCallback(o)
{
	_utils.executeXML(o);
	_dom.get('pr-info').innerHTML = (_utils.executeXML.error) ? _utils.executeXML.error : _utils.executeXML.content;
	_dom.get('pr-info').style.color = (_utils.executeXML.error) ? '#c00' : '#4FA64C'; 
}


function initRegFormCheck(formId)
{
	_evt.addListener(_dom.get(formId), 'submit', stopSubmit, {obj:_dom.get(formId)},true);
	if(_dom.get('paranoya')) initParanoyaCheck();
	formCheck();
	setFormCheckListeners();
	_evt.on(document.documentElement, 'click', formCheck);
}

function setFormCheckListeners()
{
	var els = _dom.getElementsByClassName('imperial');
	for(var i = 0, len = els.length; i < len; i++)
	{
		_evt.on(els[i], 'keyup', formCheck);
		_evt.on(els[i], 'blur', formCheck);
	}
}

function initParanoyaCheck()
{
	_dom.get('paranoya-label').style.color = (_dom.get('paranoya').checked) ? '#0b9444' : '#c00';
	if(!YAHOO.env.ua.ie)
	{
		_evt.on(_dom.get('paranoya'), 'change', togglePasswordView);
		_evt.on(_dom.get('paranoya-label'), 'click', function(){ _dom.get('paranoya').checked =  !_dom.get('paranoya').checked; togglePasswordView();});
	}
	else
	{
		_evt.on(_dom.get('paranoya'), 'click', togglePasswordViewIe);
		_evt.on(_dom.get('paranoya-label'), 'click', function(){ _dom.get('paranoya').checked =  !_dom.get('paranoya').checked; togglePasswordViewIe();});
	}
	if(YAHOO.env.ua.ie)
	{
		_evt.on(_dom.get('pass'), 'keyup', duplicateParanoyaValue);
		_evt.on(_dom.get('pass1'), 'keyup', duplicateParanoyaValue);
		_evt.on(_dom.get('pass'), 'change', duplicateParanoyaValue);
		_evt.on(_dom.get('pass1'), 'change', duplicateParanoyaValue);
	}
}

function duplicateParanoyaValue(e)
{
	_evt.stopPropagation(e);
	if(_dom.get('pass').offsetHeight != 0) _dom.get('pass1').value =  _dom.get('pass').value
	else _dom.get('pass').value =  _dom.get('pass1').value
	
}

function togglePasswordView()
{
	_dom.get('pass').type = (_dom.get('paranoya').checked) ? 'text' : 'password';
	_dom.get('paranoya-label').style.color = (_dom.get('paranoya').checked) ? '#0b9444' : '#c00';
}

function togglePasswordViewIe()
{
	var text = _dom.get('pass1'), pass = _dom.get('pass'), paranoya = _dom.get('paranoya').checked;
	
	pass.style.display = paranoya ? 'none' : '';
	text.style.display = paranoya ? '' : 'none';
	pass.className = paranoya ? '' : 'imperial';
	text.className = paranoya ? 'imperial' : '';
	if(paranoya) text.value = pass.value;
	else pass.value = text.value;
	_dom.get('paranoya-label').style.color = paranoya ? '#0b9444' : '#c00';
	setFormCheckListeners();
}

function formCheck(e)
{
	if(e) _evt.stopPropagation(e);
	_utils.formStatus('imperial');
	_dom.get('registration-submit').disabled = _utils.formStatus.status ? false : true;
}

function stopSubmit(e)
{
	_utils.formStatus('imperial');
	if(_utils.formStatus.status) this.obj.submit();
	else _evt.preventDefault(e);
}














