﻿Type.registerNamespace('AAP');

AAP.EditZipCode = function(element) {
    AAP.EditZipCode.initializeBase(this, [element]);
    this._PostalCode = {};
    this._changeDelegate = null;
    this._ValidZipCode = false;
}

AAP.EditZipCode.prototype = {
    initialize : function() {

        AAP.EditZipCode.callBaseMethod(this, 'initialize');
        if(this._changeDelegate == null) {
           this._changeDelegate = Function.createDelegate(this,this._changeHanlder);
        }
        $addHandler($get(this._PostalCode.id), "keyup",this._changeDelegate);
        $addHandler($get(this._PostalCode.id), "blur",this._changeDelegate);
        if(this.isValidZipCode($get(this.get_PostalCode().id).value)) {
            this.set_ValidZipCode(true);
        }
    },
    _changeHanlder: function(e) {
        if(this.isValidZipCode($get(this.get_PostalCode().id).value)) {
            this.set_ValidZipCode(true);
        } else {
            this.set_ValidZipCode(false);
        }
    },
    get_PostalCode: function() {
        return this._PostalCode;
    },
    isValidZipCode:function(text) {
        return text.match(/^\d{5}$/) && text != "00000";
    },
    get_ValidZipCode:function() {
        return this._ValidZipCode;
    },
    set_ValidZipCode:function(value) {
        if (this._ValidZipCode != value) {
            this._ValidZipCode = value;
            this.raisePropertyChanged('ValidZipCode');
        }
        if(value == true) {
            this._setZipCode( $get(this.get_PostalCode().id).value );
        } else {
            this._removeZipCode();
        }
    },
    _setZipCode:function(zipCode) {
        if(!this.isValidZipCode(zipCode)) return;
        ASPCode.net.CookieManager.setCookie('zipcode', zipCode , {path:"/"} );
    },
    _getZipCode:function() {
        return ASPCode.net.CookieManager.getCookie('zipcode');
    },
    _removeZipCode: function() {
        ASPCode.net.CookieManager.deleteCookie('zipcode');
    }
}

AAP.EditZipCode.registerClass('AAP.EditZipCode', Sys.UI.Control);
if (typeof(Sys) !== 'undefined') Sys.Application.notifyScriptLoaded();
