	// functions begin
	function trimString (str) {
	        str = this != window? this : str;
	        return str.replace(/^\s+/g, '').replace(/\s+$/g, '');
	}
	
	var LtgForms = Class.create();
	
	LtgForms.initialize = function() { };

/**
 * Event Handler. Just a collection of userful event handlers. Checks the object 
 * which triggers the event for the below member variables, and if so, executes
 * the associated action(s).
 * "onevent_setDisplayNone"   - array of strings. Array of DOM ids. Each object
 *                              which correspond to each id in the array will have
 *                              its .style.display set to "none";
 * "onevent_setDisplayBlock"  - array of strings. Array of DOM ids. Each object
 *                              which correspond to each id in the array will have
 *                              its .style.display set to "block";
 * "onevent_setDisabledTrue"  - array of strings. Array of DOM ids. Each object
 *                              which correspond to each id in the array will have
 *                              its .disabled set to true;
 * "onevent_setDisabledFalse" - array of strings. Array of DOM ids. Each object
 *                              which correspond to each id in the array will have
 *                              its .disabled set to false;
 * "onevent_setValue"         - array of objects. Each object in array has 
 *                              member variables "id" and "value". Each object which 
 *                              correspond to the "id", will have its value set to "value"
 */
	LtgForms.defaultEventHandler = function(e) {
		obj = Event.element( e );
		if( obj.onevent_setDisplayNone ) LtgForms.__setDisplay( obj.onevent_setDisplayNone , 'none');
		if( obj.onevent_setDisplayBlock ) LtgForms.__setDisplay( obj.onevent_setDisplayBlock, 'block' );
		if( obj.onevent_setDisabledTrue )  LtgForms.__setDisable( obj.onevent_setDisabledTrue, true );
		if( obj.onevent_setDisabledFalse )  LtgForms.__setDisable( obj.onevent_setDisabledFalse, false );
		if( obj.onevent_setValue )  LtgForms.__setValue( obj.onevent_setValue );
	}
	
	LtgForms.__setDisplay = function( array_of_ids, display_value )
	{
		for( var i = 0; i < array_of_ids.length; i++)
		{
			$(array_of_ids[ i ]).style.display = display_value;
		}
	}

	LtgForms.__setDisable = function( array_of_ids, disabled_value )
	{
		for( var i = 0; i < array_of_ids.length; i++)
		{
			$(array_of_ids[ i ]).disabled = disabled_value;
		}
	}

	LtgForms.__setValue = function( array_of_id_value_pairs)
	{
		for( var i = 0; i < array_of_id_value_pairs.length; i++)
		{
			var id = $(array_of_id_value_pairs[ i ]).id;
			var value = $(array_of_id_value_pairs[ i ]).value;
                        var obj = $(id);
                        if( obj ) obj.value = value;
		}
	}

	
/**
 *  Event handler. The object that triggers this event should have member variables
 *  "passwordfieldid" - string. DOM id of the password field.
 *  "usernamefieldid" - string. DOM id of the username field.
 *  "loginmsgbox"     - string. DOM id of the div (or anything for that matter) that will 
                        receive messages regarding the login attempt.
 *  "timeout"         - integer. Timeout in milliseconds.
 *  "createacctmsg"   - string. Message. Displayed after request to create account is sent.
 *  "loginmsg"        - string. Message. Displayed after request to login is sent.
 *  "success"         - string. Message. Displayed after successful login/create account.
 *  "failLogin"       - string. Message. Displayed after unsuccessful login.
 *  "failCreateAcct"  - string. Message. Displayed after unsuccessful account creation.
 */
	LtgForms.loginOnClickHandler = function (e) {
		obj = Event.element( e );
		
		if (!obj.passwordfieldid || !obj.usernamefieldid)
			return;
        var p = false;
        var u = false;
        var n = false;
        var t = false; // Tania added t for usertype
        var k = '0'; // Tania added k for keeplogin
        
        if( $(obj.passwordfieldid).value ) 
        {
                var tmpusername = trimString( $(obj.passwordfieldid).value );
                if( tmpusername.length != 0 )
                    p = $(obj.passwordfieldid).value;
        }
        if( $(obj.usernamefieldid).value ) 
        {
                var tmpusername = trimString( $(obj.usernamefieldid).value );
                if( tmpusername.length != 0 )
                    u = $(obj.usernamefieldid).value;
        }
         if( $(obj.keeplogin).checked==true ) 
        {
            k = '1';
        }
//Gerard obsolete if( obj.loginMethod == "CREATE" && obj.namefieldid)
		if( (obj.loginMethod == "CREATE") ||
		    (obj.namefieldid && $($(obj.namefieldid).wrapperdivid).style.display == 'block'))
		{
		        // Login account we need password(p), name (n) and email(u) 
		        if( $(obj.usertypefieldid).value ) 
        		{
                var tmpusername = trimString( $(obj.usertypefieldid).value );
                if( tmpusername.length != 0 )
                    t = $(obj.usertypefieldid).value;
        		}
		        if( $(obj.namefieldid).value ) 
		        {
		                var tmpname = trimString( $(obj.namefieldid).value );
		                if( tmpname.length != 0 )
		                    n = $(obj.namefieldid).value;
		        }
		        if( n && u && p)
		        {
		                if( obj.loginmsgbox )
		                        $(obj.loginmsgbox).innerHTML = obj.createacctmsg;
		                obj.disabled = true;
		                //alert("CREATE:" + u + ":" + p + ":" + n);
		                LtgForms.ajaxLogin( u, p, k, n, 'c', t, obj.id);
		                window.setTimeout("LtgForms._serverTimedout(obj.id)",obj.timeout); 
		        }
		}
		else //if(obj.loginMethod == "LOGIN")
		{
		        // Login account we need password(p) and email(u)
		        		        
		        if( p && u)
		        {
		                if( obj.loginmsgbox )
		                        $(obj.loginmsgbox).innerHTML = obj.loginmsg;
		                obj.disabled = true;
		                //alert("LOGIN:" + u + ":" + p + ":" + n);
		                LtgForms.ajaxLogin( u, p, k, '', 'l','', obj.id);
		        }
		}
	};
	      
        /**
         * Does an ajax Login. Should not normally be called outside this class, because
         * one really should do some kind of form input checking before calling ajaxLogin.
         * \param  email
         * \param  password. If empty, creates an account and logs user in.
         * \param  not sure what this does. Ask Ries.
         * \param  DOM Id of the login button. The login button DOM object should have a 
         *         member variable "loginmsgbox" which is the DOM ID of a div (or anything
         *         for that matter) which will be contain a message about the login success. 
         *         Whew.
         *         You can specify the exact text by placing the text in the member variables
         *         "success", and "failLogin" of the login button DOM object.
         *         e.g. 
         *         HTML : 
         *             <input type="submit" value="login" id="login_button" />
         *             <div id="login_messages_here"></div>
         *         JS :
         *             $('login_button').success = "successful login congratulations!";
         *             $('login_button').failLogin = "Error in login, please try again.";
         *             $('login_button').loginmsgbox = "login_messages_here";
         *
         */
	LtgForms.ajaxLogin = function (email, password, keeplogin, name, method, usertype , loginbuttonid) {
		LtgForms.ajaxInProgress = 1;
		LtgForms.loginButtonId = loginbuttonid;
		//var url = "" + document.location.href + ""; 		
		//alert(url);
		var url = "/index.php";
		var pars = "id=2351&logintype=login&pid=1&user=" + email + "&pass=" + password + "&keeplogin=" + keeplogin + "&name=" + name + "&method=" + method + "&usertype=" + usertype + "&submit=login";

		// index.php?id=106485&logintype=login&pid=1&user=ries&pass=&keeplogin=" + keeplogin + "&submit=login
		new Ajax.Request(
			url, 
		  	{
		   		method: 'get', 
		   		parameters: pars, 
		   		onComplete: LtgForms._showComplete
		  	}
		);		
	}
	
	LtgForms._showComplete = function (resp) {
	    LtgForms.ajaxInProgress = 0;
            /*var res = resp.responseText.parseJSON();*/
	    var res = eval('(' + resp.responseText + ')');
            if( res.login == '1')
            {
            	var msg = $(LtgForms.loginButtonId).success;
            	if( $(LtgForms.loginButtonId).autoRedirectUrl )
            	{
            		msg = msg + '<br />' + $(LtgForms.loginButtonId).autoRedirectMessage;
		            window.setTimeout ( 'window.location = $(LtgForms.loginButtonId).autoRedirectUrl', $('loginbutton').autoRedirectSeconds * 1000);
            	}
            	
            	if( $(LtgForms.loginButtonId).moveNextStep ){
            		window.location.href = window.location.href;
            	}
            	 
    	        $($(LtgForms.loginButtonId).loginmsgbox).innerHTML = msg;
    	        
            }
            else if(res.login == '2') {
            	$($(LtgForms.loginButtonId).loginmsgbox).innerHTML = $(LtgForms.loginButtonId).usernameTaken;
            	$(LtgForms.loginButtonId).disabled = false;
            }
            else if(res.login == '3') {
            	$($(LtgForms.loginButtonId).loginmsgbox).innerHTML = $(LtgForms.loginButtonId).emailTaken;
            	$(LtgForms.loginButtonId).disabled = false;
            }
            else if(res.login == '4') {
            	//$($(LtgForms.loginButtonId).loginmsgbox).innerHTML = $(LtgForms.loginButtonId).checkConfMail;
            	window.setTimeout ( "window.location = '/index.php?id=2481&ltgAuthmsg=checkemail'", 500);
            }
            else
            {
    	        $($(LtgForms.loginButtonId).loginmsgbox).innerHTML = $(LtgForms.loginButtonId).failLogin;
                $(LtgForms.loginButtonId).disabled = false;
            }
            
	}
	      
	LtgForms._serverTimedout = function ( loginbuttonid ){
		if( LtgForms.ajaxInProgress == 1 )
		{
	        $($(loginbuttonid).loginmsgbox).innerHTML = 'server has timed out';
	        $(loginbuttonid).disabled = false;
	        LtgForms.ajaxInProgress = 0;
	    }
	}
    // functions end

