  function changeArchiveYear(year) {
    if($('archive' + year) != null) {
        $$('#archive-calendar div').invoke('hide');
        $('archive' + year).show();
        changeArchiveNavigation(year);
    } else {
        new Ajax.Request(
            '/magazine/Archive.asmx/MagazineByYear',
            {
                parameters: {
                    year: year,
                    unique: (new Date()).getTime()
                },
                onComplete: function(originalRequest) {
                    var archive = originalRequest.responseXML.documentElement.firstChild.nodeValue.evalJSON();
                    
                    if(archive) {
                        if(!archive.error) {
                            var yearDiv = document.createElement('div');
                            yearDiv.setAttribute('id', 'archive' + year);
                            yearDiv.setAttribute('style', 'display: none');
                            var shortMonthList = ['янв', 'фев', 'мар', 'апр', 'май', 'июн', 'июл', 'авг', 'сен', 'окт', 'ноя', 'дек'];
                            for (var i = 0; i < 12; i++) {
                                var b = document.createElement('b');
                                var month = document.createElement((archive.magazine[i] != 0) ? 'a' : 'span');
                                if (archive.magazine[i] != 0)
                                    month.setAttribute('href', '/magazine/archive' + archive.magazine[i] + '.html');
                                
                                month.appendChild(document.createTextNode(shortMonthList[i]));
                                b.appendChild(month);
                                yearDiv.appendChild(b);
                            }
                            $('archive-calendar').appendChild(yearDiv);
                            
                            $$('#archive-calendar div').invoke('hide');
                            $('archive' + year).show();
                            changeArchiveNavigation(year);
                        }
                    }
                }
            }
        );
    }
  }
  
  function changeArchiveNavigation(year) {
    var currYear = parseInt(year, 10);
    var minYear = $('archiveMinYear').innerHTML;
    var maxYear = $('archiveMaxYear').innerHTML;
    minYear = parseInt(minYear, 10);
    maxYear = parseInt(maxYear, 10);
    
    $('archiveCurrYear').innerHTML = year;
    
    var prevYearText = currYear - 1;
    var prevYear;
    if (prevYearText < minYear) {
        prevYear = '<span>' + prevYearText + '</span>';
    } else {
        prevYear = '<a href="#' + prevYearText + '" onclick="changeArchiveYear(\'' + prevYearText + '\'); return false;">' + prevYearText + '</a>';
    }
    $('archivePrevYear').update(prevYear);
    
    var nextYearText = currYear + 1;
    var nextYear;
    if (nextYearText > maxYear) {
        nextYear = '<span>' + nextYearText + '</span>';
    } else {
        nextYear = '<a href="#' + nextYearText + '" onclick="changeArchiveYear(\'' + nextYearText + '\'); return false;">' + nextYearText + '</a>';
    }
    $('archiveNextYear').update(nextYear);
  }
  
  function changeBookmarkStatus(param) {
	var url = '/poffice/ArticleService.asmx/BookmarksManage';
	var pars = $H(param).toQueryString() + '&unique=' + (new Date()).getTime();
	
	var myAjax = new Ajax.Request(
		url,
		{
            method: 'post',
            parameters: pars,
			onComplete: function(originalRequest) {
				var bookmark = originalRequest.responseXML.documentElement.firstChild.nodeValue.evalJSON();

				if(bookmark){
					if(!bookmark.error){
						var id = bookmark.id;
						var articleStatus = bookmark.status;
						var nodes = $A($$('#bookmark' + id, '.bookmark' + id));
						
						nodes.each(function(node){
							if (articleStatus == 1) {
								node.innerHTML = 'Удалить из&nbsp;закладок';
								node.setAttribute('title', 'Удалить статью из закладок');
								node.addClassName('bold');
							} else {
								node.innerHTML = 'В&nbsp;мои закладки';
								node.setAttribute('title', 'Добавить статью в закладки');
								node.removeClassName('bold');
							}
						});
					}
				}
			}
		});

 }
 
 
 function addBookmark(id) {
	changeBookmarkStatus({'bookmarkID' : id, status: 1,type_id: 0});
 }
 
 
 function checkBookmarkStatus() {
    $$('A[id^=bookmark]').each(function(node){
        var objId = node.getAttribute('id');
        var id = objId.replace('bookmark', '');		
    	changeBookmarkStatus({'bookmarkID' : id, status:  0,type_id: 0});
    });
 }
 
 
function addBanner(id) {
	var url = '/banners/AdOutput.aspx';
	var pars = 'ID=' + id + '&unique=' + (new Date()).getTime();
	var banner = $(id + 'Banner');
	
	var myAjax = new Ajax.Request(
            url,
            {
                    method: 'get',
                    parameters: pars,
                    onComplete: function(originalRequest) {
						if(originalRequest.responseText != '<a></a>') {
							$(banner).update(originalRequest.responseText);
							manageBlock(banner, 1);
							//Element.show(banner);
						} else {
							manageBlock(banner, 0);
							//Element.hide(banner);
						}
					}
            });
}
function getArticleComments(article_id)
{
  new Ajax.Request('/magazine/article/Comment.aspx', {
    method: 'get',
    parameters: {
      id: article_id,
      unique: (new Date()).getTime()
    },
	onComplete: function(originalRequest) {
	  var xmlDoc = originalRequest.responseXML;
	  var root = xmlDoc.documentElement;

	  if(root){
	    var commentsElement = root.firstChild;
	    var articleId = commentsElement.getAttribute('article-id');
	    var comments = commentsElement.childNodes;
	    if (comments.length > 0) {
	      var commentTemplate = new Template('<div><p class="author"><b>#{author}</b> | #{date}</p><p class="body">#{body}</p></div>');
	
	      new Insertion.Bottom($('article_' + articleId), '<div id="commentBlock_' + articleId + '" class="articleCommentsBlock">'
		                                                + '<h6 class="grey">Комментарии</h6>'
		                                                + '<div id="comments_' + articleId + '" class="comments"></div>'
		                                                + '<p><a href="#" onclick="showArticleComments(' + articleId + '); return false;">Скрыть комментарии</a>'
		                                                + ' | <a href="/magazine/article/' + articleId + '.html#addComment">Добавить комментарий</a></p>'
		                                                + '</div>');
	
	      for (var i = 0; i < comments.length; i++) {
		    var commentData = {date: comments.item(i).getAttribute('date')
                             , author: comments.item(i).getAttribute('author')
                             , body: (comments.item(i).textContent != undefined) ? comments.item(i).textContent : comments.item(i).text};
            new Insertion.Bottom($('comments_' + articleId), commentTemplate.evaluate(commentData));
          }
          //$('commentsLink_' + articleId).setAttribute('onclick', 'showArticleComments(' + articleId + ');return false;');
          $('commentsLink_' + articleId).toggleClassName('bold');
        }
      }
	}
  });
}


function showArticleComments(article_id)
{
  if ($('commentBlock_' + article_id) != null) {
    $('commentBlock_' + article_id).toggle();
    $('commentsLink_' + article_id).toggleClassName('bold');
  } else {
    getArticleComments(article_id);
  }
}
function changeArticleRStatus(article_id)
{
  new Ajax.Request('/magazine/article/ManageRStatus.aspx', {
    method: 'post',
    parameters: {
      action: 'get',
      id: article_id
    },
    onComplete: function (t) {
      var xmlDoc = t.responseXML;
      var root = xmlDoc.documentElement;

      if(root){
        var currElem = root.firstChild;

        if(!currElem.getAttribute('error')){
          var id = currElem.getAttribute('id');
          var el = $$('#articleR' + id + ' a')[0];

          if(el){
            el.innerHTML = (currElem.getAttribute('status') == 1) ? 'Прочитано' : 'Ещё не прочитано';
            el.setAttribute('title', (currElem.getAttribute('status') == 0) ? 'Отметить как прочитано' : 'Отметить как не прочитано');

            if (currElem.getAttribute('status') == 1)
            {
              $('articleR' + id).removeClassName('inv');
              el.removeClassName('bold');
            }
            else
            {
              $('articleR' + id).addClassName('inv');
              el.addClassName('bold');
            }
          }
        }
      }
    }
  });
}
function showBookmarkAddFilterForm(article_id,type_id) {
	formTmpl = [];
	
	formTmpl.push('<label for="addFilterInput');
	formTmpl.push(article_id);
	formTmpl.push('">добавить</label><input type="text" id="addFilterInput');
	formTmpl.push(article_id);
	formTmpl.push('" /><input type="button" value="Добавить" onclick="addBookmarkFilter(');
	formTmpl.push(article_id);
	formTmpl.push(', $(\'addFilterInput');
	formTmpl.push(article_id);
	formTmpl.push('\').value');
	formTmpl.push(',');
	formTmpl.push(type_id);
	formTmpl.push('); return false;" />');
	
	$$('#filters' + article_id + ' .add')[0].innerHTML = formTmpl.join('');
	$('addFilterInput' + article_id).focus();
}
function addBookmarkFilter(article_id, tag, type_id) {
	new Ajax.Request('/poffice/bookmarks/Filter.aspx', {
		method: 'post',
		parameters: {
			id: article_id,
			tag: tag,
			type: type_id
		},
		onComplete: function(t) {
			var xmlDoc = t.responseXML;
			var root = xmlDoc.documentElement;

			if(root){
				var currElem = root.firstChild;

				if(!currElem.getAttribute('error') && currElem.getAttribute('status') == '0'){
					var id = currElem.getAttribute('id');
					new Insertion.Before($$('#filters' + article_id + ' .add')[0], ', <a href="/poffice/bookmarks/tag/' + tag + '.html">' + tag + '</a>');
				}
			}
		}
	});
	formTmpl = [];
	formTmpl.push('<a href="#" onclick="showBookmarkAddFilterForm(');
	formTmpl.push(article_id);
	formTmpl.push(',');
	formTmpl.push(type_id);
	formTmpl.push('); return false;">добавить</a>');
	$$('#filters' + article_id + ' .add')[0].innerHTML = formTmpl.join('');
}
function showRatingForm(article_id)
{
	$('ratingBlock').toggleClassName('ratingPopup');
	$('ratingPopupContent').toggle();
	$$('.togglePopup')[0].toggleClassName('activePopup');
}

function updateRating(article_id)
{
	new Ajax.Request('/poffice/ArticleService.asmx/UpdateRating', {
		method: 'post',
		parameters: {
			id: article_id,
			type_id: 0
		},
		onComplete: function(t) {
			var json = t.responseXML.documentElement.firstChild.nodeValue.evalJSON();
			if ( json.rating > 0 )
			{
			    $('ratingValue' + article_id).update(json.rating);
			    /*var currRating = $('ratingValue' + article_id).innerHTML;
		        $("ratingValue"+article_id).innerHTML = (currRating.indexOf('&nbsp;')!=currRating.lastIndexOf('&nbsp;')?"&nbsp;":"")+json.rating+"&nbsp;";*/
		    }
		    var rate = $('rateArticle');
		    rate.removeClassName('pseudoLink');
            rate.update('Спасибо за рекомендацию!');
		}
	});

}

function updateDocumentRating(document_id)
{
	new Ajax.Request('/poffice/ArticleService.asmx/UpdateDocumentRating', {
		method: 'post',
		parameters: {
			id: document_id
		},
		onComplete: function(t) {
			var json = t.responseXML.documentElement.firstChild.nodeValue.evalJSON();
			if ( json.rating > 0 )
			{
			    if($('ratingValue' + document_id)) {
			        $('ratingValue' + document_id).update(json.rating);
			    } else {
			        $('ratingPlaceHolder' + document_id).update('Количество рекомендаций: <b id="ratingValue' + document_id + '">' + json.rating + '</b>');
			    }
		    }
		    var rate = $('rateDocument' + document_id);
		    rate.removeClassName('pseudoLink');
            rate.update('Спасибо за рекомендацию!');
		}
	});

}


function showRatingStat(article_id)
{
	var statNodes = $$('.ratingStat');
	statNodes.each(function(node) {
		if (node.getAttribute('id') != 'ratingStat' + article_id) {
			node.hide();
		}
	});
	var starNodes = $$('.articleListRating');
	starNodes.each(function(node) {
		if (node.getAttribute('id') != 'articleListRating' + article_id) {
			node.removeClassName('articleListRatingActive');
		}
	});
	
	$('articleListRating' + article_id).toggleClassName('articleListRatingActive');
	$('ratingStat' + article_id).toggle();
}



function sendArticle2Friend(f){
	var data = Form.serialize(f);
    var unique=(new Date()).getTime();
    var url = '/magazine/article/SendToFriend.aspx?unique=' + unique;
    var myAjax = new Ajax.Request(
            url,
            {
                    asynchronous: true,
                    method: 'post',
                    postBody: data,
                    onCreate: function () {
                        f.getInputs('submit').invoke('disable');
                    },
                    onComplete: send2FriendResponse
            });
}

function send2FriendResponse(r) {
	var xmlDoc = r.responseXML;
	var xmlRoot = xmlDoc.documentElement;
	var f = $$('#sendToFriend form')[0];
	var notifyContainer = $$('DIV#send2FriendNotifyBlock ul')[0];
	notifyContainer.innerHTML = "";
	if(xmlRoot){
		var currElem = xmlRoot.firstChild;
		
		if(currElem.firstChild.tagName == 'error') {
			var errorNodes = currElem.firstChild.childNodes;
			for (var i = 0, errLength = errorNodes.length; i < errLength; i++) {
				new Insertion.Bottom(notifyContainer, "<li>" + errorNodes.item(i).getAttribute('text') + "</li>");
			}
			$('send2FriendSuccess').hide();
			$('send2FriendNotifyBlock').show();
		} else if (currElem.firstChild.tagName == 'return-code' && currElem.firstChild.getAttribute('value') == '1') {
			$('send2FriendNotifyBlock').hide();
			$('send2FriendSuccess').show();
			f.getInputs('text', 'email').invoke('clear');
		}
	}
	f.getInputs('submit').invoke('enable');
}

function addArticleComment(f) {
    var url = '/poffice/ArticleService.asmx/AddComment';
	var pars = Form.serialize(f) + '&unique=' + (new Date()).getTime();
    
     var myAjax = new Ajax.Request(
            url,
            {
                    asynchronous: true,
                    method: 'post',
                    postBody: pars,
                    onComplete: addArticleResponse
            });
}

function addArticleResponse(r){
    var resp = r.responseXML.documentElement.firstChild.nodeValue.evalJSON();
	var notifyContainer = $$('DIV#addCommentNotifyBlock ul')[0];
	notifyContainer.innerHTML = "";
	
	if(resp){
		if(resp.error){
		    var iErrorCode = parseInt(resp.error, 10);
			var sErrorDescription = null;
			switch(iErrorCode) {
				case -1:
					sErrorDescription = "Комментарий могут оставлять только зарегистрированные пользователи";
					break;
				case -2:
					sErrorDescription = "Не заполнено поле Комментарий";
					break;
			}
			
			new Insertion.Bottom(notifyContainer, "<li>" + sErrorDescription + "</li>");
			notifyContainer.parentNode.show();
		} else if (resp.status && resp.status > 0) {
			notifyContainer.parentNode.hide();
			$('addCommentSuccess').show();
			$('addCommentForm').hide();
		}
	}
}

var globalPriceList = [];
var globalBooksID = [];
function getPriceList()
{
	new Ajax.Request('/subscription/SubscriptionService.asmx/GetPriceList', {
		method: 'post',
		onComplete: function(t) {
			globalPriceList = t.responseXML.documentElement.firstChild.nodeValue.evalJSON();
		}
	});
}

function getGroupedIssues()
{
	new Ajax.Request('/subscription/SubscriptionService.asmx/GetGroupedIssuesIDList', {
		method: 'post',
		onComplete: function(t) {
			globalBooksID = t.responseXML.documentElement.firstChild.nodeValue.evalJSON();
		}
	});
}