/*
	AUTH.JS
	Holds all the security related routines to run the My-Community portal

	Functions:
		login( email, pass, remember ) : enables site login and community setup upon successful login
		logout() : manages deletion of all cookies and throws page to my-community.com homepage
		emailPassword( email ) : sends the email addresss holder an email with their password contained within
	
	Comments, Feedback, Questions & Bugs to : Peter Liu (peter@mystrata.com)
*/

function logout()
{
	// SAVE MAP COOKIES
	var lang = get_cookie( 'lang' );
	var homepageURL = get_cookie( 'homepageURL' );
	var communityName = get_cookie('selectedCommunityName');
	//alert( communityName );
	//alert( communityName.search(/Al Zeina/) );
	
	clearStorage( get_cookie( 'persist' ) );

	// DELETE ALL COOKIES
	if( delete_all_cookies() ) 
	{
		if( lang ) set_cookie( "lang", lang, 999, "/", "", "" );
		if( homepageURL ) set_cookie("homepageURL", homepageURL, 999, "/", "", "" );
		if( communityName.search(/Al Zeina/) != -1 )
		{
			document.location = '/community/alzeina'; 
		} else if( communityName.search(/Al Raha/) != -1 )	
			{
				document.location = '/community/alrahagardens'; 
			} else if( $('body').hasClass('aldar') )
				{
					document.location = "http://connect.aldar.com";
				} else	{
						document.location = '/'; 
					}
	} else	{
			alert( 'Error Deleting Your Cookies ... sending you back to the MyCommunity Homepage' );		
			document.location = '/'; 
		}
}

function newLogin()
{
	// CHECK FORM INPUT FIELDS
	if ( jQuery.trim( $('#loginForm #email').val() ) == '' || $('#loginForm #email').val() == 'Email' )
        {
                showError('#loginMsg','The Email address field cannot be blank.');
                return true ;
        }

        if ( jQuery.trim( $('#loginForm #password1').val() ) == '' && $('#loginForm #password').val() == 'Password' )
        {
                showError('#loginMsg','The Password field cannot be blank.');
                return true;
        }

	var persist = $("#remember").is(":checked");
	set_cookie( "persist", persist, 999, "/", "", "" );
	if( persist ) { var ttl = 999; } else { var ttl = 0; }

	var params = "func=newLogin&email=" + $('#email').val() + "&password=" + $('#password1').val() + "&persist=" + persist;
        //alert( params ); 

	openMsgBox();
	if( get_cookie('lang') == "ar" )
	{
		var message = 'التحقق من وثائق التفويض المستخدم';
	} else	{
			var message = "Verifying User Credentials";
		}
	$('#msgboxmsg').html( message ).hide().show( 750, function()
	{
        	$.ajax(
        	{
        	        type: "POST",
        	        async: true,
        	        url: "/cgi-bin/mycom.cgi",
        	        data: params,
        	        dataType: "xml",
        	        success: function(data)
        	        {
        	                var searchResults = '';
	
	                        $(data).find('RESULTS').each( function()
	                        {
	                                if( $(this).find('RESULT').text() == "TRUE" )
	                                {
						$(this).find('USERINFO').each( function()
						{
							var email = $(this).find('EMAIL').text();
							var mycomUUID = $(this).find('RECORDID').text();
	
							// SET COOKIES
							set_cookie( "mycomUUID", mycomUUID, ttl, "/", "", "" );
							set_cookie( "email", email, ttl, "/", "", "" );
							window.location = "/myaccount";
						});
	                                } else	{
							displayError( 'The Username or Password is incorrect' );
						} 
       		                });
                	}, // END AJAX SUCCESS
	 		error: function(jqXHR, textStatus, errorThrown)
			{
				displayError( errorThrown );
			} // END AJAX ERROR
        	}); // END AJAX METHOD
	}); // END AJAX LOADER
}

function authenticate()
{

        if ( jQuery.trim( $('#loginForm #email').val() ) == '' || $('#loginForm #email').val() == 'Email' ) 
	{ 
		showError('#loginMsg','The Email address field cannot be blank.');
		return true ;
	}

        if ( jQuery.trim( $('#loginForm #password1').val() ) == '' && $('#loginForm #password').val() == 'Password' ) 
	{ 
		showError('#loginMsg','The Password field cannot be blank.');
		return true; 
	}

	$('#loginLoader').html('<span class="loading"></span>').fadeIn(100);

	var persist = $("#remember").is(":checked");
	var params = "func=getUserLogon2&email=" + $("#email").val() + "&pw=" + $("#password1").val() + "&persist=" + persist ;
	//alert( params );

        $.ajax(
        {
                type: "POST",
                async: false,
                url: "/cgi-bin/mycom.cgi",
                data: params,
                dataType: "xml",
                success: function(data, textStatus, XMLHttpRequest)
                {
                        //alert( unescape( XMLHttpRequest.responseText ) );
                        var xmlDoc = XMLHttpRequest.responseXML;
                        var result = xmlDoc.getElementsByTagName("RESULT")[0].childNodes[0].nodeValue;
                        if (result == "TRUE")
                        {
				// BAKE COOKIES
				if( persist ) { var expire = 999; } else { var expire = 0; } 
				if( persist ) { persist = 1; } else { persist = 0; }
				//alert( "expire = " + expire );
				set_cookie( "userid", xmlDoc.getElementsByTagName('USERID')[0].childNodes[0].nodeValue, expire, "/", "", "" ); 
				set_cookie( "persist", persist, expire, "/", "", "" ); 

				// STORE RELATIONSHIPS
                                var numrows = xmlDoc.getElementsByTagName( "RELATIONSHIP" );
                                var privs = "";
                                for ( i=0; i < numrows.length; i++ )
                                {
                                        if( i != 0 ) { privs += "§"; }

					// COMMUNITY ID & NAME
					var communityNode = xmlDoc.getElementsByTagName('COMMUNITY')[i].childNodes[0].nodeValue;
					var communityInfo = communityNode.split(";");
					var communityID = communityInfo[1];
					var communityName = communityInfo[0];
                                        privs += communityID + "±" + communityName + "±";

					// SYSTEM
					var system = xmlDoc.getElementsByTagName('SYSTEM')[i].childNodes[0].nodeValue;
					system = system.toLowerCase();
					privs += system + "±";

					// REGION
					var glregion = xmlDoc.getElementsByTagName('GLREGION')[i].childNodes[0].nodeValue;
					glregion = glregion.toLowerCase();
					privs += glregion + "±";

					// ROLES
					var roles = xmlDoc.getElementsByTagName('ROLES')[i].childNodes[0].nodeValue;
					roles = roles.toLowerCase();
					privs += roles + "±";

					if( system.toLowerCase() == "strataware" )
					{	
						// CTS
						var bldID = xmlDoc.getElementsByTagName('CTS')[i].childNodes[0].nodeValue;
						privs += bldID + "±";

						// SYSTEM LOT
						if( xmlDoc.getElementsByTagName('SYSTEMLOT')[i] ) 
						{ 
							var lotID = xmlDoc.getElementsByTagName('SYSTEMLOT')[i].childNodes[0].nodeValue; 
							privs += lotID; 
						} else	{
								privs += "";
							}
					}
	
					if( system.toLowerCase() == "asteco" )
					{
						// BLDID
						// LOTID
					} 
					
	                                // SET SELECTED COOKIES
					if( i == 0 )
	                                {
						set_cookie( "selectedCommunityID", communityID,expire,"/","","" );
	                                	set_cookie( "selectedCommunityName", communityName,expire,"/","","" );
	                                	set_cookie( "selectedSystem", system,expire,"/","","" );
	                                	set_cookie( "selectedRegion", region,expire,"/","","" );
	                                	set_cookie( "selectedRoles", roles,expire,"/","","" );
	                                	set_cookie( "selectedBldID", bldID ,expire,"/","","" );
	                                	if( lotID ) { set_cookie( "selectedLotID", lotID, expire,"/","","" ); } else { delete_cookie( "selectedLotID", "/" ); }
					}
				}

				//alert( "privs = " + privs ); 
                                setStorage( "privs", privs, persist );
				location.href = "/myaccount";
                        } else  {
					hideLoader('#loginLoader');
                                        showError('#loginMsg','The Username or Password is incorrect');
					return;
                                } // END - IF RESULT ==TRUE
                } // END - SUCCESS
        }); // END - AJAX
} // END - FUNCTION AUTHENTICATE

function emailPassword( email )
{
        if( jQuery.trim( email ) == "" || jQuery.trim( email ) == "Email" )
        {
                displayError('Please enter an email address');
                return;
        }

        var params = "func=emailPassword&email=" + email;
        //alert( params ); return;

        openMsgBox();
        if( get_cookie('lang') == "ar" )
        {
                var message =  "ﻒﺤﺻ ﻭﺇﺮﺳﺎﻟ ﻚﻠﻣﺓ ﺎﻠﺳﺭ ﻞﺤﺳﺎﺑ ﺎﻠﺑﺮﻳﺩ ﺍﻺﻠﻜﺗﺭﻮﻨﻳ ﻢﺴﺠﻟ";
        } else  {
                        var message = "Checking and Sending your Password to your Registered eMail Account";
                }
        $('#msgboxmsg').html( message ).hide().show( 750, function()
        {               
                $.ajax(
                {
                        type: "POST",
                        async: false, 
                        url: "/cgi-bin/mycom.cgi",
                        data: params,
                        dataType: "xml",
                        success: function(data, textStatus, XMLHttpRequest)
                        {
                                if( $(data).find('RESULT').text() == "TRUE")
                                {
                                        displaySuccess('Your password has been emailed to the address provided');
                                        window.setTimeout(function()
                                        {
                                                $('#loginContainer').hide().html( loginHtml ).fadeIn(700);
                                        },5000);
                                } else  {
                                                displayError( $(data).find('ERROR').text() );
                                        }       
                        } // END AJAX SUCCESS
                }); // END AJAX METHOD
        }); // END AJAX LOADER                  
}       

function redirectCommunityUrl( communityID )
{
	var params = "func=getCommunityURL&communityID=" + communityID;
        //alert( params );

        $.ajax(
        {
                type: "POST",
                async: true,
                url: "/cgi-bin/mycom.cgi",
                data: params,
                dataType: "xml",
                success: function(data, textStatus, XMLHttpRequest)
                {
                        //alert( XMLHttpRequest.responseText );
                        var xmlDoc = XMLHttpRequest.responseXML;
                        var result = xmlDoc.getElementsByTagName("RESULT")[0].childNodes[0].nodeValue;
                        if (result == "TRUE")
                        {
				var communityUrl = xmlDoc.getElementsByTagName("URL")[0].childNodes[0].nodeValue;
				//alert( communityUrl );
				location.href = "/community/" + communityUrl;
			}
		}
	});
}

function getCommunityUrl( communityID )
{
        var params = "func=getCommunityURL&communityID=" + communityID;
        //alert( params );

	var communityUrl;
        $.ajax(
        {
                type: "POST",
                async: true,
                url: "/cgi-bin/mycom.cgi",
                data: params,
                dataType: "xml",
                success: function(data, textStatus, XMLHttpRequest)
                {
                        //alert( XMLHttpRequest.responseText );
                        var xmlDoc = XMLHttpRequest.responseXML;
                        var result = xmlDoc.getElementsByTagName("RESULT")[0].childNodes[0].nodeValue;
                        if (result == "TRUE")
                        {
                                communityUrl = xmlDoc.getElementsByTagName("URL")[0].childNodes[0].nodeValue;
                        }
                }
        });
	return ( communityUrl );
}


