﻿/// <reference name="MicrosoftAjax.js"/>


/** constructor **/
    function mineLib() 
    {   
    }   

/** static properties & methods **/
    mineLib.prototype = (function()
    {    
        var totalImages = 0;
        var currentPage = 0;
        var mycurrentPage = 0;

        /**Mine.Services.ImageService.GetTotalTemplateImages(function(result)
        {
            totalImages = result;
        }); **/

        function constructor() 
        {

        }   
        
        constructor.get_TotalTemplateImages = function()
        {
            return totalImages;
        }

        constructor.Login = function(user, password, delegate)
        {
             Mine.Services.UserService.Login(user, password, function(result)
             {
                delegate(result);
             });
        }

        constructor.LoadTemplateImages = function(page, pageSize, delegate)
        {
            currentPage = page;
            Mine.Services.ImageService.GetTemplatePage(page, pageSize, delegate);  
        };
        
        
        constructor.LoadMyTemplateImages = function(page, pageSize, delegate)
        {

            
            mycurrentPage = page;
            
            Mine.Services.ImageService.GetMyTemplatePage(page, pageSize, delegate);  
        };
        
        constructor.ConfirmLogOut = function ()
        {
            if(confirm("Are you sure you want to log out?") == true)
            {
            }
            else
            {
                return -1;
            }
        };
        constructor.NextPage = function(delegate)
        {
            if((currentPage + 1) >= totalpages )
                return;

            currentPage++;   

            Mine.Services.ImageService.GetTemplatePage(currentPage, pageSize, delegate);
            
            return (currentPage >= totalpages);
        };

        constructor.PreviousPage = function(delegate)
        {
            if(currentPage == 0)
                return true;

            currentPage--;

            Mine.Services.ImageService.GetTemplatePage(currentPage, pageSize, delegate);

            return (currentPage == 0);
        };

        constructor.GenerateImage = function(source, top, middle, bottom, font, color, fontsize,bold, italic, underlined, style, opacity, topalignment, middlealignment, bottomalignment, name, email, website, imgSource, subscribe, insert, delegate)
        {            
                Mine.Services.ImageService.GenerateCompletedImage(source, top, middle, bottom, font, color, fontsize || "50" ,bold, italic, underlined, style, opacity || "100", topalignment, middlealignment, bottomalignment, name, email, website, imgSource, subscribe, insert, delegate);
        };
        
        constructor.PageLoaded = function(idUsername, idPassword, idRememberMe, idOk, idCancel)
        {
            // we wait 100ms to make sure everything is ok
            setTimeout(function()
            {
                // we want to set everything up when the window is being showed
                var lb = $find("LoginBehavior");
                if (!lb)
                    return;
                    
                lb.add_showing(function()
                {
                    var elUsername, elPassword, elRememberMe, elOk, elCancel;
                    
                    // Get the form elements
                    elUsername = document.getElementById(idUsername);
                    elPassword = document.getElementById(idPassword);
                    elRememberMe = document.getElementById(idRememberMe);
                    elOk = document.getElementById(idOk);
                    elCancel = document.getElementById(idCancel);
                    
                    // focus on the username field
                    setTimeout(function() { elUsername.focus(); }, 100);
                
                    // This function will click in both IE and FF
                    function click(el)
                    {
                        if (el.click)
                        {
                            el.click();
                            return;
                        }
                            
                        if (el.href)
                        {
                            var href = el.href;
                            if (href.startsWith("javascrtipt:"))
                            {
                                var code = href.substr(12, href.length - 12);
                                eval(code);
                            }
                            else
                                window.location = href;
                        }
                    }
                    
                    // when the user presses enter we submit
                    // when the user presses esc we cancel
                    function onKeyPress(event)
                    {
                        if (!event) event = window.event;
                        var key = event.which || event.keyCode;
                        if (key == 13 || key == 27)
                        {
                            if (key == 13)
                                click(elOk);
                            else
                                click(elCancel);
                            event.cancelBubble = true;
                            event.returnValue = false;
                            return false;
                        }
                    }
                    
                    // Attach our event to the form controls
                    elUsername.onkeypress = onKeyPress;
                    elPassword.onkeypress = onKeyPress;
                    elRememberMe.onkeypress = onKeyPress;
                });
                
            }, 100);
        };

        constructor.SaveImage = function(imagedata, metadata, name, email, submit, delegate)
        {
                Mine.Services.ImageService.SaveImage(imagedata, metadata, name, email, submit, delegate, 
                function(error)
                {
    var stackTrace = error.get_stackTrace();
    var message = error.get_message();
    var statusCode = error.get_statusCode();
    var exceptionType = error.get_exceptionType();
    var timedout = error.get_timedOut();
    var msg = 
        "Stack Trace: " +  stackTrace + "<br/>" +
        "Service Error: " + message + "<br/>" +
        "Status Code: " + statusCode + "<br/>" +
        "Exception Type: " + exceptionType + "<br/>" +
        "Timedout: " + timedout;
        alert(msg);
                });
        };

        return constructor;
    })();

/** Setup the instance **/
    var mine = new mineLib();
