﻿// Ensure Root Namespaces are existing..

if( aspdnsf == undefined || aspdnsf == null ) {
    var aspdnsf = new function(){};
}

if( aspdnsf.Pages == undefined || aspdnsf.Pages == null ) {
    aspdnsf.Pages = new function(){};
}

aspdnsf.Pages.Account = {
    
    initialize : function() {
        Object.extend(this, aspdnsf.Pages.BasePage);
        
        this.billingAddressControl = null;
    },
    
    setBillingAddressControlId : function(id) {
        this.loadControl(id, aspdnsf.Controls.AddressController, this.setBillingAddressControl.bind(this));
    },
    
    setBillingAddressControl : function(control) {
        if(control) {
            this.billingAddressControl = control;
        }
    },    
    
    clearValidations : function() {
        this.billingAddressControl.clearValidationSummary();
    },
    
    validate : function() {
        var isValid = false;
        var clear = false;
        
        this.clearValidations();
        
        isValid = this.billingAddressControl.validate(clear);
        
        return isValid;
    }
}

aspdnsf.Pages.Account.initialize();

aspdnsf.Pages.Account.OrderHistoryControl = Class.create();
aspdnsf.Pages.Account.OrderHistoryControl.prototype = {

    initialize : function(id){
        this.content = $(id + '_Content');
        this.page = $(id + '_Pager');
        
        this.pageHeader = $(id + '_PagingHeader');
        this.pageFooter = $(id + '_PagingFooter');
        
        this.page.hide();
        this.txtPages = $(id + '_Pages');
        this.lnkReset = $(id + '_Reset');
        this.lnkReset.onclick = this.onResetClick.bind(this);
    },
    
    onResetClick : function() {
        this.changePage(1);
    },
    
    getPages : function() {
        return this.txtPages.value;
    },
    
    setDisplay : function(html) {
        if(this.content) {
            this.content.innerHTML = html;
        }
    },
    
    changePage : function(current) {
        var pages = this.getPages();
        var params = 'Pages=' + pages + '&Current=' + current;
        
        var request = 
        new Ajax.Request(
            'action.axd?action=orderHistory',
            {
                method : 'post',
                parameters : params,
                onSuccess : this.onLoadOrderHistoryComplete.bind(this),
                onFailure : function(transport) {
                    alert(transport.responseText);
                }
            }
        );
    },
    
    onLoadOrderHistoryComplete : function(transport) {
        if(transport.status == 200) {
            var result = transport.responseText.evalJSON();
            this.setDisplay(result.html);
            this.buildPages(this.pageHeader, result.current, result.all);
            this.prePareReOrderCapability();
            //this.buildPages(this.pageFooter, result.current, result.all);
            this.page.show();
        }
    },
    
    prePareReOrderCapability : function() {
        var reOrderLinks = document.getElementsByClassName('lnkReOrder');
        reOrderLinks.each(
            function(link) {
                var code = $(link).readAttribute('so');
              /*  var prompt = 'Are you sure you want to re-order this order?';*/
              var prompt = 'Tem a certeza que deseja voltar a encomendar?';
                link.onclick = function() {
                    if(confirm(prompt)) {
                        link.href = 'reorder.aspx?so=' + code;
                        return true;
                    }
                }
            }
        )
    },
    
    buildPages : function(onPanel, current, all) {
        // clear
        onPanel.innerHTML = '';
        var range = 5;
        
        var start = current - range;
        var end = current + range;
        
        var dlgChangePage = this.changePage.bind(this);
        var pages = this.getPages();
        var dlgWritePage = function(text, page, noLink){
            var p = null;
            if(noLink){
              p = document.createElement('span');
              p.className = 'OrderHistoryCurrentSelectedPage';
            }
            else {
              p = document.createElement('a');
              p.href = 'javascript:void(0);';
              p.onclick = function(){dlgChangePage(page?page:text)};
            }
            p.innerHTML = text;
            onPanel.appendChild(p);
        }
        
        var dlgWriteSpace = function() {
            var space = document.createElement('span');
            space.innerHTML = '&nbsp;';
            onPanel.appendChild(space);
        }        
        
        start = (start > 0)? start : 1;
        var writeFirst = start > 1;
        
        if(writeFirst) {
            dlgWriteSpace();
            dlgWritePage('First', 1);
            dlgWriteSpace();
        }
        
        var ctr = start;
        while(ctr < current) {
            dlgWriteSpace();
            dlgWritePage(ctr);
            dlgWriteSpace();
            ctr++;
        }
        
        dlgWriteSpace();
        dlgWritePage(current, current, true);
        dlgWriteSpace();
        
        if(end > all) {
          end = all;
        }
        
        var writeLast = end < all;
        
        ctr = current+1;
        while(ctr <= end) { 
            dlgWriteSpace();           
            dlgWritePage(ctr);
            dlgWriteSpace();
            ctr++;
        }
        
        if(writeLast) {
            dlgWriteSpace();
            dlgWritePage('Last', all);
            dlgWriteSpace();
        }        
    }

}