﻿if (!terra.map.user) terra.map.user = {};

terra.map.user = {

    login: function() {

        terra.map.user.clearLogin();
    
        $("#dialogLogin").dialog({
            autoOpen: false,
            bgiframe: true,
            resizable:false,
            modal: true,
            width: 300,
            height: 250,
            buttons: {

                "Login": function() {

                    var email = $("#loginEmail").val();
                    var password = $("#loginPassword").val();

                    var emailCheck = new RegExp("([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$");
                    if (!email.match(emailCheck)) {
                        alert('Παρακαλώ ελέγξτε το email');
                        return;
                    }

                    terra.map.user.executeLogin(email, password);

                },

                "Άκυρο": function() {
                    terra.map.user.clearLogin();
                    $(this).dialog('close');
                }

            }

        });

        $("#dialogLogin").dialog('open');


    },

    clearLogin: function() {
        $("#loginUserName").html('');
        $("#loginEmail").val('');
        $("#loginPassword").val('');
    },

    clearRegister: function() {
        $("#registerEmail").val('');
        $("#registerPassword").val('');
        $("#registerName").val('');
        $("#registerCaptcha").val('');

    },

    executeLogin: function(email, password) {

        $.ajax({
            type: "POST",
            url: "webservice.asmx/login",
            dataType: "xml",
            data:
		            {
		                "email": email,
		                "password": password

		            },
            success: function(xml) {

                var data = $.evalJSON($(xml).find("string").text());

                terra.map.user.refreshCaptcha();

                if (data.resType == 1) {
                    terra.map.user.clearLogin();
                    terra.map.user.loginSuccess(data.message);
                    $("#dialogLogin").dialog('close');
                }
                else {
                    alert(data.message);
                }

            }

        });
    },

    loginSuccess: function(username) {
        
        this.isLoggedIn = true;
        this.logginName = username;
        
        terra.map.graphManager.getSavedGraphics();
        
        $('#loginTemplate').hide();
        $('#logoutTemplate').show('fast');
        $("#loginUserName").html(username);

    },

    logoutSuccess: function(username) {
    
        terra.map.graphManager.getSavedGraphics();
        this.isLoggedIn = false;
        this.logginName = "";
        
        $('#logoutTemplate').hide();
        $('#loginTemplate').show('fast');
        $("#loginUserName").html('');

    },
    
    logout: function() {

        $.ajax({
            type: "POST",
            url: "webservice.asmx/logout",
            dataType: "xml",
            success: function(xml) {

                var data = $.evalJSON($(xml).find("string").text());

                terra.map.user.refreshCaptcha();

                if (data.resType == 1) {
                    terra.map.user.clearLogin();
                    terra.map.user.logoutSuccess();
                }
                else {
                    alert(data.message);
                }

            }

        });
    },

    register: function() {
    
        terra.map.user.clearRegister();

        this.refreshCaptcha();

        $("#dialogRegister").dialog({
            autoOpen: false,
            bgiframe: true,
            modal: true,
            width: 270,
            height: 440,
            resizable: false,
            buttons: {

                "Εγγραφή": function() {

                    var email = $("#registerEmail").val();
                    var password = $("#registerPassword").val();
                    var name = $("#registerName").val();
                    var captcha = $("#registerCaptcha").val();

                    var emailCheck = new RegExp("([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$");
                    if (!email.match(emailCheck)) {
                        alert('Παρακαλώ ελέγξτε το email');
                        return;
                    }

                    var passCheck = new RegExp(".{5,20}$");
                    if (!password.match(passCheck)) {
                        alert('Ο κωδικός σας πρέπει να είναι από 5 μέχρι 20 χαρακτήρες');
                        return;
                    }

                    var captchaCheck = new RegExp(".{1,30}$");
                    if (!captcha.match(captchaCheck)) {
                        alert('Παρακαλώ συμπληρώστε τον κωδικό που φαίνεται στην εικόνα');
                        return;
                    }

                    terra.map.user.sendRegistration(email, password, name, captcha);


                },

                "Άκυρο": function() {
                    terra.map.user.clearRegister();
                    $(this).dialog('close');
                }

            }

        });

        $("#dialogRegister").dialog('open');

        return;


    },

    refreshCaptcha: function() {

        $("#registerCaptchaImage").attr("src", "services/getCaptcha.ashx?g=" + guid());
        $("#registerCaptcha").val('');

    },

    sendRegistration: function(email, password, name, captcha) {


        $.ajax({
            type: "POST",
            url: "webservice.asmx/register",
            dataType: "xml",
            data:
		            {
		                "email": email,
		                "password": password,
		                "name": name,
		                "captcha": captcha
		            },
            success: function(xml) {

                var data = $.evalJSON($(xml).find("string").text());

                terra.map.user.refreshCaptcha();

                if (data.resType == 1) {

                    terra.map.user.clearRegister();
                    terra.map.user.executeLogin(email, password);
                    $("#dialogRegister").dialog('close');
                    
                    


                }
                else {
                    alert(data.message);
                }

            }

        });

    },

    sendRegistrationSuccess: function() {

        //

        $("#dialogRegisterSuccess").dialog({
            autoOpen: false,
            bgiframe: true,
            modal: true,
            width: 300,
            buttons: {

                Ok: function() {

                    $(this).dialog('close');

                }

            }

        });



    }





}
