function LogoutController(
	oElement,
	sType,
	sControllerUrl,
	sInfoPattern,
	sCountPattern
	) {

	this.oElement = oElement;
	this.sType = sType;
	this.sInfoPattern = sInfoPattern;
	this.sCountPattern = sCountPattern;
	this.oLogoutButton = null;

	this.oActionQueue = new	ActionQueue(sControllerUrl);
				
	if(Common.Cookie.get(LogoutController.COOKIE_NAME)) {
		
		this.createHtml();
		this.initLogoutButton();
		
	}
}

LogoutController.COOKIE_NAME        = 'user.first-name';
LogoutController.COOKIE_MIDDLE_NAME = 'user.middle-name';
LogoutController.COOKIE_PRESS_COUNT = 'user.freshArticlesCount';

LogoutController.prototype = {
	
	createHtml : function() {
		
		var sHtml = this.sInfoPattern.replace(
			/(\[user-name\])/,
			Common.Cookie.get(LogoutController.COOKIE_NAME) + ' ' + Common.Cookie.get(LogoutController.COOKIE_MIDDLE_NAME)
			),
			iPressCount = parseInt(Common.Cookie.get(LogoutController.COOKIE_PRESS_COUNT));
			;

		if(iPressCount > 0) {
			
			sHtml += "<br />" + this.sCountPattern.replace(
				/(\[press-count\])/,
				iPressCount + GetCorrectWord(iPressCount, [' свежая запись', ' свежих записи', ' свежих записей'])
				);
		}
		
		this.oElement.innerHTML = sHtml;
		
	},
	
	initLogoutButton : function(oLogoutButtonElement) {
		
		var oThis = this;
		
		this.oLogoutButton = new ActionButton(
			document.getElementById('button-logout'),
			[
				{
					fHandler : function() {
						
						oThis.doRequest();
						oThis.oLogoutButton.disable();
						
					}
				}
			]
		);		
		
	},
	
	doRequest : function() {

		this.oActionQueue.addAction(
			new Action(
				this.sType,
				[],
				null,
				this,
				'onSuccess',
				'onError'
				)
			);
			
		this.oActionQueue.process();
		
	},
	
	onSuccess : function(oData) {
		var aRedirectElement = oData.getElementsByTagName('url');
		document.location = aRedirectElement.length > 0? aRedirectElement.nodeValue : './';
	},
	
	onError : function(sErrorSign) {
		
		
	}
	
};


function GetCorrectWord(iNum, aWords){

	iNum = String(iNum);

	var iLast = Number(iNum.substr(iNum.length-1));
	var sResult;

	if (between(iNum, 5, 20))
		sResult=aWords[2];

	else {

		switch (iLast){
			case 1:  sResult=aWords[0]; break;
			case 2:
			case 3:
			case 4:  sResult=aWords[1]; break;
			default: sResult=aWords[2]; break;
		}
	}

	return sResult;
}


function between(iNum, iMin, iMax, bInclusive){

	if (bInclusive)
		return (iNum >= iMin && iNum <= iMax);
	else
		return (iNum > iMin && iNum < iMax);
}
