var ZipValidation = Class.create({
    /**
     * initialize()
     */
    initialize: function(options) {
        this.options = {
            address: 'address',
            origClass: null
        }
        Object.extend(this.options, options || {});
        this.address = this.options.address;
        this.origClass = this.options.origClass;
    },

    zipProcess: function() {
        var address = $F(this.address);
        var zipFormat = this.validateFormat(address);
        if (zipFormat) {
            this.validateWithMarket(address);
        }
    },

    checkForCookie: function() {
        var c = document.cookie.split(';');
        var cLength = c.length;
        var cName = 'USER';
        for (var i = 0; i < cLength; i++) {
            var thisC = c[i];
            if (thisC.include(cName)) {
                return this.getFromCookie(thisC);
            }
        }
        return null;
    },

    getFromCookie: function(cookie) {
        var c = cookie.split('=');
        var cValue = unescape(c[1]).split('=')[1];
        return cValue;
    },

    validateFormat: function(address) {
        var zip = '0123456789';
        var addLength = address.length;
        if (!address || address == '' || address == '00000' || (addLength < 5)) {
            this.origClass.zipShowError();
            return false;
        }
        for (var i = 0; i < addLength; i++) {
            if (zip.indexOf(address.charAt(i)) == -1) {
                this.origClass.zipShowError();
                return false;
            }
        }
        return true;
    },

    validateWithMarket: function(address) {
        var callback = function (data) {
            this.evaluateResults(data.zipCode);
        }.bind(this);
        MarketManager.getMarketByZipCode(address, callback);
    },

    evaluateResults: function(zip) {
        if (!zip || zip == null || zip == "") {
            this.origClass.zipShowError();
            return false;
        }
        document.cookie = 'USER=' + 'zip=' + zip + '; path=/';
        this.origClass.zipShowSuccess();
    }

})