﻿
    var isAuthenticated = true;// <%=Request.IsAuthenticated.ToString().ToLower() %>;
    var _saveSourceID = 0;
    var _savePropertyID = 0;
    var _saveLink = null;
    
    function login() {
        var form = document.forms['aspnetForm'];
        if (!form) {
            form = document.aspnetForm;
        }
        var email = form.lEmail.value.trim();
        var password = form.lPassword.value.trim();
        var msg = "";
        if(email == "") msg += "Enter Email Address\n";
        if(password == "") msg += "Enter Password\n";
        
        if(msg.length==0) {
            connect.Authenticate(email, password, true, onLogin, null, _saveLink);
        }
        else
        {
            alert(msg);
        }
        
    }
    
    function onLogin(success, saveLink)
    {
        if(success)
        {
            isAuthenticated = true;
            $find("mpe").hide();
            saveLink.onAuth();
            //saveListing(saveLink.sourceID, saveLink.propertyID);
        }
        else
        {
            alert("Login failed!\nPlease try again.");
        }
    }
    
    function registerUser() {
        var form = document.forms['aspnetForm'];
        if (!form) {
            form = document.aspnetForm;
        }
        var minPasswordLength = 4;
        var name = form.rName.value.trim();
        var email = form.rEmail.value.trim();
        var password = form.rPassword.value.trim();
        var passwordConfirm = form.rPasswordConfirm.value.trim();
        var msg = "";
        if( name == "") msg += "Enter Name\n";
        if( email == "" )
            msg += "Enter Email Address\n";
        else
            if ( !email.match(/\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*/))
                msg += "Invalid Email Address!\n";
        if( password == "" )
            msg += "Enter a Password\n";
        else 
            if( password.length < minPasswordLength ) msg += "Password must be at least " + minPasswordLength + " character long\n";
        if( msg.length==0 && password != passwordConfirm)
            msg += "Passwords do not match! Please enter again.\n";
        
        if(msg.length==0) {
            connect.RegisterUser(email, password, name, onRegister, null, _saveLink);
        }
        else
            alert(msg);
    }
    
    function onSave(success)
    {
        if(success) {
            if (_saveLink.newUser)
                alert("Thank you!\nThe listing has been saved to your 'Saved Listings'.\nYou can view this list from your 'Account' Page.");
        
            //Change the 'Save' link to 'Saved'
            var newNode = document.createElement("span");
            newNode.appendChild(document.createTextNode("Saved"));
            newNode.className = "saved";
            _saveLink.parentNode.replaceChild(newNode, _saveLink);
            _saveLink = null;
        }
        else
            alert("Unable to save listing!\nPlease try again.");
    }

    function saveRecentList(link) {
        if (link != undefined) {
            _saveLink = link;
            link.onAuth = function() { connect.SaveRecentList(onSaveRecent, onError, link); };
        }
        connect.SaveRecentList(onSaveRecent, onError, link);
        return false;
    }

    function onSaveRecent(success, link) {
        if (success) {
            if (link.newUser)
                alert("Thank you!\nThis list has been saved to your 'Saved Listings'.\nYou can view this list from your 'Account' Page.");
            else
                alert("This list has been saved to your 'Saved Listings'");
        }
         else {
             alert("Unable to save the list!\nPlease try again.");
         }
         
         link.onAuth = null;
         _saveLink = null;
    
    }
    
    function saveListing(sourceID, propertyID, saveLink)
    {
        if (saveLink != undefined) {
            _saveLink = saveLink;
            saveLink.onAuth = function() { connect.SaveProperty(sourceID, propertyID, onSave, onError, saveLink); };
        }
        
        if(isAuthenticated)
        {               
                connect.SaveProperty(sourceID, propertyID, onSave, onError, saveLink);
        }
        else {
            $find("mpe").show();
        }

        return false;
    }

    function onError(error) {
        //The failure is likely to be due to user being
        //Unauthenticated
        //alert(error.get_message());
        $find("mpe").show();
    }
    
    function onRegister(sucess, saveLink)
    {
        if(sucess)
        {
            isAuthenticated = true;
            //Proceed with saving listing
            saveLink.newUser = true;
            $find("mpe").hide();
            saveLink.onAuth();
        }
        else
            alert("Unable to create an account!\nThis Email is already in use");
    }

    function chkSubmit(event, func) {
        if (event.keyCode == 13) {
            func();
            event.cancelBubble = true;
            if (event.stopPropagation) event.stopPropagation();
            return false;
        }
    }
