function WBUser() {
	var dublicate = this;
	this.name = getCookie("WB.UserName") || "";
	this.logged = getCookie("WB.IsUserLogged");
	var login, logout, remPass;
	
	this.setLoginNode = function(node) {
		login = nodeOrId(node);
		return dublicate;
	};

	this.setLogoutNode = function(node) {
		logout = nodeOrId(node);
		return dublicate;
	};

	this.setRemPassNode = function(node) {
		remPass = nodeOrId(node);
		return dublicate;
	};
	
	this.showError = function(er, strError) {
		var section = upToSection(er[0].node);
		if (section) {
			var target = getErrorTarget(section);
			if (target) {
				target.innerHTML = strError || "Value is invalid";
				target.style.display = "block";
				document.getElementById("login").className = "withEr";
			}
		}
	};
	
	this.hideError = function(er) {
		var section = upToSection(er[0].node);
		if (section) {
			var target = getErrorTarget(section);
			if (target) {
				target.innerHTML = "";
				target.style.display = "none";
				document.getElementById("login").className = "";
			}
		}
	};
	
	this.checkLogged = function() {
		if (dublicate.logged) {
			if (login)   login.style.display = "none";
			if (logout)  logout.style.display = "block";
			if (remPass && window.location.href.indexOf("error")==-1 ) remPass.style.display = "none";
		} else {
			if (login)   login.style.display = "block";
			if (logout)  logout.style.display = "none";
			if (remPass) remPass.style.display = "block";
			if (remPass && remPass.title && remPass.title!="") {
				var node = document.createElement("a");
				node.href = "#";
				node.className = "dashed";
				// node.id = "remPassToggler";
				node.appendChild( document.createTextNode(remPass.title) );
				remPass.parentNode.insertBefore(node, remPass);
				remPass.title = "";
				if ( window.location.href.indexOf("error")==-1 ) remPass.style.display = "none";
				node.onclick = function() {
					remPass.style.display = remPass.style.display=="none" ? "block" : "none"; 
					return false;
				}
			}
		}
		return dublicate;
	};
	
	this.checkLoggedDefault = function() {
		return dublicate.setLoginNode("wb-user-login").setLogoutNode("wb-user-logout").setRemPassNode("wb-user-rempass").checkLogged();
	};

	function getCookie(name) {
		for( var i=0, cookies=document.cookie.split(";"), l=cookies.length, cookie; i < l; i++ ) {
			cookie = cookies[i].split('=');
			if (cookie[0]=="name") return cookie[1] == "true" ? true : cookie[1] == "false" ? false : cookie[1];
		}
		return false; 
	}
	
	function nodeOrId(mix) {
		if (typeof(mix)=="string") mix = document.getElementById(mix);
		if (!mix) throw new Error("mix должен быть HTML-элементом");
		if (mix.nodeType!=1) throw new Error("mix должен быть HTML-элементом");
		return mix;
	}
	
	function getErrorTarget(nodeSection) {
		var form = nodeSection.getElementsByTagName("form")[0];
		var divs = form.getElementsByTagName("*");
		for (var i=0, l=divs.length; i<l; i++) {
			if ( /(^|\s)error($|\s)/.test(divs[i].className || "") ) return divs[i];
		}
		return false;
	}
	
	function upToSection(node) {
		var el = node;
		while(el && el != login && el != logout && el != remPass) el = el.parentNode;
		return el;
	}
}

var wbUser = new WBUser();

if (navigator.userAgent.indexOf('Safari')>-1 && navigator.userAgent.indexOf('Version/3')==-1) {
	// saf2
	var _timer = setInterval(function() {
	if (/loaded|complete/.test(document.readyState)) {
		clearInterval(_timer);
		delete _timer;
		wbUser.checkLoggedDefault();
	}
	}, 50);
} else {
	if (window.addEventListener) {
		// fox + opera
		window.addEventListener('DOMContentLoaded', wbUser.checkLoggedDefault, false);
	} else {
		// ie
		var _timer = setInterval(function() {
		if ( document.getElementById("wb-user-rempass") ) {
			clearInterval(_timer);
			delete _timer;
			wbUser.checkLoggedDefault();
		}
		}, 50);
	}
}