offer.AuthenticateView = function() {
	this.shopClientVO = offerInstance.shopClientVO = new cms2.offer.vo.ShopClientVO()
	offerInstance.shopClientVO.is_temporary = this.shopClientVO.is_temporary = true
}
offer.AuthenticateView.prototype = {
	shopClientVO : null,// new cms2.offer.vo.ShopClientVO()
	role : null,
	/**
	 *
	 */
	ROLE_ONLY_LOGIN : 1,
	ROLE_LOGIN_IN_PROCESS : 2,
	/**
	 * @type {String} stored e-mail send as restore account
	 */
	savedLoginText : "",
	createLoginPanel : function() {
		offerInstance.tabView.selectById("loginView", true)
		offerInstance.tabView.clearCurrent();
		var form = document.createElement("form")
		offerInstance.tabView.getCurrent().appendChild(form)
		form.id = "loginForm"
		var table = document.createElement("table")
		form.appendChild(table)
		table.className = "toolTable"
		offer.ViewHelper.decorateTableWithTitle(table, jslt.rb.DRB.getString(
				'authentication', 'loginClientHeader'))
		var tb = document.createElement("tbody")
		table.appendChild(tb)

		var tr = document.createElement("tr")
		tb.appendChild(tr);
		tr.className = "vertSpace1"
		var td = document.createElement("td")
		tr.appendChild(td)
		td.className = "labelTD"
		td.innerHTML = jslt.rb.DRB.getString('authentication',
				'loginInputLabel')
		td = document.createElement("td")
		tr.appendChild(td)
		var inp = document.createElement("input")
		td.appendChild(inp)
		inp.className = "inputStyle w2"
		inp.name = inp.id = "loginUserInput"
		tr = document.createElement("tr")
		tb.appendChild(tr);
		td = document.createElement("td")
		tr.appendChild(td)
		td.className = "labelTD"
		td.innerHTML = jslt.rb.DRB.getString('authentication',
				'loginInputPassword')
		td = document.createElement("td")
		tr.appendChild(td)
		inp = jslt.element.createElement(td, "input", {
			type : "password"
		})
		inp.id = inp.name = 'loginPasswordInput'
		inp.className = 'inputStyle w2'
		td.appendChild(inp)
		// interactions
		tr = document.createElement("tr")
		tb.appendChild(tr)
		tr.className = "interactionControls"
		td = document.createElement("td")
		tr.appendChild(td)
		td = document.createElement("td")
		tr.appendChild(td)
		offer.ViewHelper.createButton(td, jslt.rb.DRB.getString(
				'authentication', 'loginBtnLabel'), function() {
			offerInstance.authenticateView.evLoginClick()
		}, 'submit')
		offer.ViewHelper.createButton(td, jslt.rb.DRB.getString('common',
				'cancelBtn'), function() {
			offerInstance.tabView.back()
		}, 'button', ' anulujBtn')
		this.createLoginHelperBtns(tb)
		$("#loginForm").validate(
				{
					errorPlacement : function(error, element) {
						error.appendTo(element.parent());
					},
					rules : {
						loginPasswordInput : {
							required : true
						}, loginUserInput : {
							required : true, email : true
						}
					},
					messages : {
						loginPasswordInput : {
							required : jslt.rb.DRB.getString('authentication',
									'writePasswordError')
						},
						loginUserInput : jslt.rb.DRB.getString(
								'authentication', 'writeEmailError')
					}, submitHandler : function() {
					}
				});
	},
	createLoginHelperBtns : function(tb, spans) {
		if (!spans) {
			spans = [ 1, 1 ]
		}
		var tr = document.createElement("tr")
		tr.className = "interactionControls textLinksRow"
		tb.appendChild(tr)
		var td = document.createElement("td")
		td.colSpan = spans[0]
		tr.appendChild(td)
		td = document.createElement("td")
		td.colSpan = spans[1]
		tr.appendChild(td)
		var a = $(
				'<a href="#">'
						+ jslt.rb.DRB.getString('authentication',
								'remindPassword') + '</a>').click(function() {
			offerInstance.authenticateView.createPasswordRestorePanel()
		})[0]
		td.appendChild(a)
		a = $(
				'<a href="#">'
						+ jslt.rb.DRB.getString('authentication',
								'createAccount') + '</a>')
				.click(
						function() {
							if (offerInstance.config.authorization_available == 'past_acceptance') {
								offerInstance.authenticateView
										.createRegistrationFirmPanel()
							} else {
								offerInstance.authenticateView
										.createRegistrationPanel()
							}
						})[0]
		td.appendChild(a)
	},
	/**
	 * Login button click
	 */
	evLoginClick : function() {
		if ($("#loginForm").valid()) {
			var l = $("#loginUserInput").val()
			var p = $("#loginPasswordInput").val()
			offerInstance.serviceDelegate.login(l, p)
		}
	},
	/**
	 *
	 * @param {cms2.manager.vo.RequestResultVO}
	 *            token From server
	 */
	evLoginResult : function(requestResultVO) {
		if (offerInstance.tabView.getCurrentId() == "loginView") {
			if (requestResultVO.code == 0) {
				if (this.role == this.ROLE_ONLY_LOGIN) {
					offerInstance.tabView.back()
				}
			} else if (requestResultVO.code == 1) {// nie ma użytkownika
				offerInstance.inform(requestResultVO.messages[0])
			} else if (requestResultVO.code == 2) {// błedne hasło
				offerInstance.inform(requestResultVO.messages[0])
			} else if (requestResultVO.code == 3) {// not enabled
				offerInstance.inform(requestResultVO.messages[0])
			}
		}
		if (requestResultVO.code == 0) {
			offerInstance.serviceDelegate.readShopClientAccount()
			offerInstance.serviceDelegate.readShoppingCart()
		}
	},
	evReadShopClientAccountResponse : function(shopClientVO) {
		offerInstance.shopClientVO = this.shopClientVO = shopClientVO;
		if (!this.shopClientVO.is_temporary) {
			this.showUserHeader(this.shopClientVO.person.name,
					this.shopClientVO.person.surname)
		}
	},
	createRegistrationPanel : function() {
		offerInstance.tabView.selectById("registerView", true)
		offerInstance.tabView.clearCurrent();
		var form = document.createElement("form")
		offerInstance.tabView.getCurrent().appendChild(form)
		form.id = "registerForm"
		var table = document.createElement("table")
		form.appendChild(table)
		var tb = document.createElement("tbody")
		table.appendChild(tb)
		offer.ViewHelper.decorateTableWithTitle(table, jslt.rb.DRB.getString(
				'authentication', 'newAccountCreation'))
		// name
		var tr = document.createElement("tr")
		tb.appendChild(tr);
		tr.className = "vertSpace1"
		var td = document.createElement("td")
		tr.appendChild(td)
		td.innerHTML = jslt.rb.DRB.getString('authentication', 'userName')
		td.className = "labelTD"
		td = document.createElement("td")
		tr.appendChild(td)
		var inp = document.createElement("input")
		td.appendChild(inp)
		inp.className = "inputStyle w2"
		inp.name = inp.id = "registrationUserName"
		// surname
		tr = document.createElement("tr")
		tb.appendChild(tr);
		tr.className = "vertSpace1"
		td = document.createElement("td")
		tr.appendChild(td)
		td.className = "labelTD"
		td.innerHTML = jslt.rb.DRB.getString('authentication', 'userSurname')
		td = document.createElement("td")
		tr.appendChild(td)
		inp = document.createElement("input")
		td.appendChild(inp)
		inp.className = "inputStyle w2"
		inp.name = inp.id = "registrationUserSurname"
		// email
		tr = document.createElement("tr")
		tb.appendChild(tr);
		td = document.createElement("td")
		tr.appendChild(td)
		td.className = "labelTD"
		td.innerHTML = jslt.rb.DRB.getString('authentication', 'email')
		td = document.createElement("td")
		tr.appendChild(td)
		inp = document.createElement("input")
		td.appendChild(inp)
		inp.className = "inputStyle w2"
		inp.name = inp.id = "registrationUserEmail"
		tr = document.createElement("tr")
		tb.appendChild(tr)
		tr.className = "interactionControls"
		td = document.createElement("td")
		tr.appendChild(td)
		td = document.createElement("td")
		tr.appendChild(td)
		offer.ViewHelper.createButton(td, jslt.rb.DRB.getString(
				'authentication', 'registerAccount'), function() {
			offerInstance.authenticateView.evRegisterClick()
		})
		offer.ViewHelper.createButton(td, jslt.rb.DRB.getString('common',
				'cancelBtn'), function() {
			offerInstance.tabView.back()
		}, 'button', ' anulujBtn')
		$("#registerForm").validate(
				{
					errorPlacement : function(error, element) {
						error.appendTo(element.parent());
					},
					rules : {
						registrationUserName : {
							required : true
						}, registrationUserSurname : {
							required : true
						}, registrationUserEmail : {
							required : true, email : true
						}
					},
					messages : {
						registrationUserName : {
							required : jslt.rb.DRB.getString('authentication',
									'writeName')
						},
						registrationUserSurname : {
							required : jslt.rb.DRB.getString('authentication',
									'writeSurname')
						},
						registrationUserEmail : jslt.rb.DRB.getString(
								'authentication', 'writeValidEmail')
					}, submitHandler : function() {
					}
				});
	},
	evRegisterClick : function() {
		if ($("#registerForm").valid()) {
			var person = new cms2.persons2.vo.Person2VO();
			person.id_person = this.shopClientVO.person.id_person
			person.acl_user = new cms2.acl.vo.AclUserVO()
			person.acl_user.login = document
					.getElementById("registrationUserEmail").value
			person.name = document.getElementById("registrationUserName").value
			person.surname = document.getElementById("registrationUserSurname").value
			offerInstance.serviceDelegate.registerNewUser(person)
		}
	},
	/**
	 *
	 * @param {cms2.manager.vo.RequestResultVO}
	 *            res
	 */
	evRegisterResult : function(res) {
		if (res.code == 0) {
			offerInstance.inform(res.messages[0])
			offerInstance.tabView.selectById("productsView")
		} else if (res.code == 1) {
			offerInstance.inform(res.messages[0])
		}
	},
	createRegistrationFirmPanel : function() {
		this.registerFirmChandle = null
		offerInstance.tabView.selectById("registerView", true)
		offerInstance.tabView.clearCurrent();
		var form = document.createElement("form")
		offerInstance.tabView.getCurrent().appendChild(form)
		form.id = "registerForm"
		var table = document.createElement("table")
		form.appendChild(table)
		var tb = document.createElement("tbody")
		table.appendChild(tb)
		offer.ViewHelper.decorateTableWithTitle(table, jslt.rb.DRB.getString(
				'authentication', 'newAccountCreation'))
		/*// pomoc
		tr = document.createElement("tr")
		tb.appendChild(tr)
		tr.className = "interactionControls textLinksRow"
		td = document.createElement("td")
		tr.appendChild(td)
		td.innerHTML = jslt.rb.DRB.getString('authentication',
				'newAccountCreationHelp')
		// link do regulaminu
		td = document.createElement("td")
		tr.appendChild(td)
		var a = $(
				'<a href="#">'
						+ jslt.rb.DRB.getString('authentication',
								'regulationsLinkName') + '</a>').click(
				function() {
					offerInstance.staticContentView.evItemClick('regulamin',
							jslt.rb.DRB.getString('authentication',
									'regulationsLinkName'))
				})[0]
		td.appendChild(a)*/
		//required text
		tr = document.createElement("tr")
		tb.appendChild(tr)
		td = document.createElement("td")
		tr.appendChild(td)
		td.colSpan = 2;
		td.innerHTML = jslt.rb.DRB.getString('authentication',
		'requiredFields')
var rules={
		address_name_buyer : {
			required : true
		}, address_surname_buyer : {
			required : true
		}, address_name_contact_buyer : {
			required : true
		}, address_surname_contact_buyer : {
			required : true
		}, address_firm_buyer : {
			required : true
		}, address_province_buyer : {
			required : true
		}, address_place_buyer : {
			required : true
		}, address_street_buyer : {
			required : true
		}, address_post_buyer : {
			required : true
		}, address_post_code_buyer : {
			required : true
		}, address_phone_buyer : {
			required : true
		}, address_email_buyer : {
			required : true, email : true
		}
	};
		offerInstance.cartView.createRegistrationFields(tb, null, true, 'f4',rules)
		tr = document.createElement("tr")
		tb.appendChild(tr)
		tr.className = "interactionControls"
		td = document.createElement("td")
		tr.appendChild(td)
		td = document.createElement("td")
		tr.appendChild(td)
		offer.ViewHelper.createButton(td, jslt.rb.DRB.getString(
				'authentication', 'createAccount'), function() {
			offerInstance.authenticateView.evRegisterFirmClick()
		})
		offer.ViewHelper.createButton(td, jslt.rb.DRB.getString('common',
				'cancelBtn'), function() {
			offerInstance.tabView.back()
		}, 'button', ' anulujBtn')
		$("#registerForm").validate({
			errorPlacement : function(error, element) {
				error.appendTo(element.parent());
			}, rules : rules, submitHandler : function() {
			}
		});
	},
	evRegisterFirmClick : function() {
		if ($("#registerForm").valid()) {
			var person = new cms2.persons2.vo.Person2VO();
			person.id_person = this.shopClientVO.person.id_person
			person.acl_user = new cms2.acl.vo.AclUserVO()
			person.acl_user.login = document
					.getElementById('address_email_buyer').value
			person.name = document.getElementById('address_name_contact_buyer').value
			person.surname = document
					.getElementById('address_surname_contact_buyer').value
			var fields = offerInstance.cartView.registrationFields
			for ( var i = 0; i < fields.length; i++) {
				var vo = new cms2.contacts.vo.ContactChannelVO()
				vo.code_id = fields[i]
				vo.contact_value = document.getElementById(fields[i]).value;
				person.contact_channels.push(vo)
			}
			vo = new cms2.contacts.vo.ContactChannelVO()
			vo.code_id = 'groups_of_interests'
			var ar = []
			for (i = 0; i < offerInstance.cartView.interestKeys.length; i++) {
				var cbx = document.getElementById('zainteresowanie_'
						+ offerInstance.cartView.interestKeys[i])
				if (cbx.checked) {
					ar.push(jslt.rb.DRB.getString('offer_interesting_groups',
							offerInstance.cartView.interestKeys[i]))
				}
			}
			vo.contact_value = ar.join(',');
			person.contact_channels.push(vo)
			offerInstance.serviceDelegate.registerNewFirm(person)
		}
	},
	/**
	 *
	 * @param {cms2.manager.vo.RequestResultVO}
	 *            res
	 */
	evRegisterFirmResult : function(res) {
		if (res.code == 0) {
			if (this.registerFirmChandle) {
				this.registerFirmChandle.call(this.registerFirmChandle)
			} else {
				offerInstance.inform(res.messages[0])
				offerInstance.tabView.selectById("productsView")
			}
		} else if (res.code == 1) {
			offerInstance.inform(res.messages[0])
		}
	},
	createPasswordRestorePanel : function() {
		offerInstance.tabView.selectById("passwordRestoreView", true)
		offerInstance.tabView.clearCurrent();
		var form = document.createElement("form")
		offerInstance.tabView.getCurrent().appendChild(form)
		form.id = "passwordRestoreForm"
		var tb = document.createElement("table")
		form.appendChild(tb)
		offer.ViewHelper.decorateTableWithTitle(tb, jslt.rb.DRB.getString(
				'authentication', 'remindPassword'))
		// Info+e-mail
		var tr = document.createElement("tr")
		tb.appendChild(tr);
		var td = document.createElement("td")
		tr.appendChild(td)
		td.className = "labelTD"
		td.innerHTML = jslt.rb.DRB.getString('authentication',
				'remindPasswordEmail')
		td = document.createElement("td")
		tr.appendChild(td)
		var inp = document.createElement("input")
		td.appendChild(inp)
		inp.className = "inputStyle w2"
		inp.name = inp.id = "restoreEmail"
		tr = document.createElement("tr")
		tb.appendChild(tr)
		tr.className = "interactionControls"
		td = document.createElement("td")
		tr.appendChild(td)
		td = document.createElement("td")
		tr.appendChild(td)
		offer.ViewHelper.createButton(td, jslt.rb.DRB.getString(
				'authentication', 'remindPasswordSend'), function() {
			offerInstance.authenticateView.evRestoreClick()
		})
		offer.ViewHelper.createButton(td, jslt.rb.DRB.getString('common',
				'cancelBtn'), function() {
			offerInstance.tabView.back()
		}, 'button', ' anulujBtn')
		tr = document.createElement("tr");
		tb.appendChild(tr);
		td = document.createElement("td");
		td.className = 'warningInOffer'
		tr.appendChild(td);
		td.colSpan = 2
		td.innerHTML = jslt.rb.DRB.getString('authentication', 'remindHelper')
		$("#passwordRestoreForm").validate(
				{
					errorPlacement : function(error, element) {
						error.appendTo(element.parent());
					},
					rules : {
						restoreEmail : {
							required : true, email : true
						}
					},
					messages : {
						restoreEmail : jslt.rb.DRB.getString('authentication',
								'writeValidEmail')
					}, submitHandler : function() {
					}
				});
	},
	/**
	 *
	 * @method
	 */
	evRestoreClick : function() {
		if ($("#passwordRestoreForm").valid()) {
			var person = new cms2.persons2.vo.Person2VO();
			person.acl_user = new cms2.acl.vo.AclUserVO()
			person.acl_user.login = document.getElementById("restoreEmail").value
			offerInstance.serviceDelegate.restorePassword(person)
		}
	},
	/**
	 *
	 * @param {cms2.manager.vo.RequestResultVO}
	 *            res
	 */
	evRestoreResult : function(res) {
		if (res.code == 0) {
			offerInstance
					.inform("Przypomnienie hasła zostało wysłane na adres '"
							+ res.messages[0]
							+ "'\n Proszę odebrać e-maila i postępować zgodnie z instrukcjami tam zawartymi")
		} else if (res.code == 1) {
			offerInstance.inform("Podany adres e-mail '" + res.messages[0]
					+ "' nie jest znany")
		} else if (res.code == 2) {
			offerInstance.inform("Konto '" + res.messages[0]
					+ "' nie jest aktywne")
		}
	},
	launchOnlyLogin : function() {
		$(document)
				.trigger('EVENT_NAVIGATION_PATH_CHANGE', [ [ 'Logowanie' ] ])
		this.role = this.ROLE_ONLY_LOGIN
		this.createLoginPanel()
	},
	/**
	 * Binds template html do js
	 */
	bindHTML : function() {
		var el = document.getElementById("loginLaunchElement")
		this.savedLoginText = el.innerHTML = jslt.rb.DRB.getString(
				'authentication', 'authenticateBtn')
		// $("#loginLaunchElement").bind('click',$.bind(this.launchOnlyLogin, this))
		el.onclick = function() {
			offerInstance.authenticateView.launchOnlyLogin()
		}
		this.stateHandler()
	},
	stateHandler : function() {
		if (typeof (offerInstance.urlParams.state) == "string"
				&& offerInstance.urlParams.state == "login") {
			this.launchOnlyLogin()
		}
	},
	showUserHeader : function(name, surname) {
		var el = document.getElementById("loginLaunchElement")
		el.innerHTML = ""
		el.onclick = null
		// $(el).unbind('click', this.launchOnlyLogin)
		// console.log(el.className)
		var elName = document.createElement('div')
		elName.className = "elAbsolute authorizerUser"
		el.appendChild(elName)
		elName.innerHTML = jslt.rb.DRB.getString('authentication',
				'authenticated')
				+ "<br/>"
		elName.innerHTML += name + " " + surname
		if (!(offerInstance.config.authorization_available == 'past_acceptance')) {
			elName.onclick = function() {
				offerInstance.cartView.showAccount()
			}
			elName.title = jslt.rb.DRB.getString('authentication', 'myAccount')
			$(elName).tooltip()
			elName.className += ' pointerEl'
		}
		var elLogout = document.createElement('a')
		el.appendChild(elLogout)
		elLogout.className = "elAbsolute logoutLink pointerEl"
		elLogout.title = jslt.rb.DRB.getString('authentication', 'logout')
		$(elLogout).tooltip()
		elLogout.onclick = function() {
			offerInstance.authenticateView.evLogoutClick()
		}
	}, evLogoutClick : function() {
		offerInstance.serviceDelegate.logout()
	}, evLogoutResult : function() {
		var el = document.getElementById("loginLaunchElement")
		el.innerHTML = this.savedLoginText
		el.onclick = function() {
			offerInstance.authenticateView.launchOnlyLogin()
		}
		$(document).trigger('EVENT_LOGOUT')
	}
}

