

citysam.login = (function() {
		var loginUrl="";
	var objUsername;
	var objPassword;
	var objLoginFrm;
	var objLoginCnt;
	var logged_in = false;
	var data_available = false;
	var lAj;
	var usern="";
	var passw="";
	var passw_cs="";
	var eClass="";
	var menulogin = {
		loginUrl : "",
		objMenu : "",
		sLid : "",
		active : false,
		lAj : false
	};
	var options = new Array();
	options["reload_menu_on_login"] = true;
	options["change_page_on_login"] = false;
	options["change_page_url"] = "";
	options["call_function_after_login"] = null;
	options["submit_form_after_login"] = false;
	options["update_cnt"] = true;
	options["show_lngerror"] = true;
	options["show_lnglck"] = true;
	options["lgnerrorid"] = "ce1algnerr";
	options["lgnacid"] = "ce1algnac";
	options["lglckid"] = "ce1alglck";
	
	function dcp(p) {
		if (!p) return "";
		var l=p.length;
		var sum=0;
		for(i=0; i<l; i++) {
			sum+=p.charCodeAt(i);
		}
		sum=sum.toString();
		var w=sum.substr(sum.length-1,1);
		w=parseInt(w);
		if (w<2) w=2;
		var s=p;
		for(i=0; i<w; i++) {
			var g=0;
			var l=s.length;
			for(j=0; j<l; j++) {
				var sinx=10*(s.charCodeAt(j)+parseInt(sum)+l+j);
				sinx=Math.abs(Math.sin(sinx) * 10e+015);
				g+=parseInt(sinx.toString().substr(0,13));
			}
			s=g.toString();
		}
		return s;
	}
	
	function loginresult(data) {
		var r = /<!\-\- rt::([0-9]+) \-\->/;
		r.exec(data);
		var rt=RegExp.$1;
		
		if (options["reload_menu_on_login"]) ajaxmenulogin();
		if (rt==5) {
			objPassword.className=eClass;
			objUsername.className=eClass;
			objPassword.value="";
			logged_in = true;
			if (options["show_lnglck"]) {
				var o1=document.getElementById(options["lgnerrorid"]);
				var o2=document.getElementById(options["lgnacid"]);
				var o3=document.getElementById(options["lglckid"]);
				if (o1) o1.style.display="none";
				if (o2) o2.style.display="none";
				if (o3) o3.style.display="";
			}
			return false;
		} else if (rt==3 || rt==4) {
			objPassword.className=eClass;
			objUsername.className=eClass;
			objPassword.value="";
			logged_in = true;
			if (options["show_lngerror"]) {
				var o1=document.getElementById(options["lgnerrorid"]);
				var o2=document.getElementById(options["lgnacid"]);
				var o3=document.getElementById(options["lglckid"]);
				var et=true;
				if (o2 && rt==4) et=false;
				if (o1) o1.style.display=et ? "" : "none";
				if (o2) o2.style.display=et ? "none" : "";
				if (o3) o3.style.display= "none";
			}
			return false;
		} else if (rt==2) {
			var tstr = "loginname=" + usern + "&loginpass=" + passw + "&ulogindt=0";
			return lAj.getData(loginUrl, tstr, loginresult);
		} else if (rt==1) {
			data = data.replace(r, "");
			if (options["update_cnt"]) objLoginCnt.innerHTML = data;
			if (options["call_function_after_login"])
				options["call_function_after_login"]();
			if (options["change_page_on_login"])
				window.location=options["change_page_url"];
		}
		
	}
	
	function ajaxmenulogin() {
		if (!menulogin.active) return false;
		var tstr="";
		if (menulogin.sLid) tstr="amli=" + menulogin.sLid;
		menulogin.lAj.getData(menulogin.loginUrl, tstr, ajaxmenuresult);
	}
	
	function ajaxmenuresult(data) {
		if (!menulogin.active) return false;
		menulogin.objMenu.innerHTML = data;
	}
	
		return {
		init : function(lurl,un,up,frm,cnt) {
			var ret=true;
			loginUrl=lurl;
			if (!un) un="ce1ausern";
			if (!up) up="ce1apassw";
			if (!frm) frm="ce1aloginfrm";
			if (!cnt) cnt="ce1alogincnt";
			if (o=document.getElementById(un)) objUsername=o; else ret=false;
			if (o=document.getElementById(up)) objPassword=o; else ret=false;
			if (o=document.getElementById(frm)) objLoginFrm=o; else ret=false;
			if (o=document.getElementById(cnt)) objLoginCnt=o; else ret=false;
			data_available = ret;
			if (ret) {
				lAj = new csAjax(true);
				citysam.DOM.bindEvent("onsubmit", objLoginFrm, citysam.login.ajaxlogin);
			}
			
			return ret;
		},
		set_options : function() {
			var al = Math.floor(arguments.length / 2);
			if (!al) return false;
			for(i=0; i<al; i++) {
				options[arguments[(i*2)]]=arguments[(i*2+1)];
			}
			return true;
		},
		get_options : function() {
			var ret = new Array();
			var al = arguments.length;
			for(i=0; i<al; i++) {
				ret[arguments[i]]=options[arguments[i]];
			}
			return ret;
		},
		ajaxlogin : function() {
			if (!data_available) return false;
			if (logged_in) return true;
			usern = objUsername.value;
			passw = objPassword.value;
			passw_cs = dcp(passw);
			
			var tstr = "loginname=" + usern + "&loginpass=" + passw_cs + "&ulogindt=1";
			lAj.getData(loginUrl, tstr, loginresult);
			
			return false;
		},
		setErrorClass : function(c) {
			eClass=c;
		},
		registermenulogin : function(lurl,slid,div) {
			var ret=true;
			menulogin.loginUrl=lurl;
			menulogin.sLid=slid;
			if (!div) div="ajlmce1a";
			if (o=document.getElementById(div)) menulogin.objMenu=o; else ret=false;
			menulogin.active=ret;
			if (ret) {
				menulogin.lAj = new csAjax(true);
				ajaxmenulogin();
			}
			
			return ret;
		},
		getDcp : function(pass) {
			return dcp(pass);
		}
	}
})();

