var Alces = {};

(function(){
    Alces.Core = {
        Component: function(){
            this.onEvent = function(){
            };
            
            Alces.Core.register(this);
        },
        
        components: [],
        
        sendEvent: function(e){
            for (var i = 0, len = this.components.length; i < len; i++) {
                this.components[i].onEvent(e);
            }
        },
        
        register: function(comp){
            this.components.push(comp);
        }
    };

    Alces.Storage = {
        backend: null,

        userData: function(){
            var self = this;
            self.obj = null;

            self.init = function(){
                self.obj = jQuery('body').get(0);
                self.obj.style.behavior = "url('#default#userData')";
            };

            self.getItem = function(key){
                self.obj.load('userData');
                return self.obj.getAttribute(key);
            };

            self.setItem = function(key, value){
                self.obj.setAttribute(key, value);
                self.obj.save('userData');
            };

            self.init();
        },

        init: function(){
            if ('\v' == 'v') {
                this.backend = new this.userData();
            } else if (window.localStorage) {
                this.backend = window.localStorage;
            }
        },

        get: function(key){
            if (this.backend) {
                var val = this.backend.getItem(key);
                return JSON.parse(val);
            }

            return null;
        },

        set: function(key, value){
            if (!this.backend) {
                return;
            }

            this.backend.setItem(key, JSON.stringify(value));
        }
    };
    
    Alces.Geocoder = {
        Error: {
            NO_RESULTS: 1,
            CONNECTION_FAILED: 2
        },
        
        forward: function(address, success, error){
            
        },
        
        reverse: function(coords, success, error){
            var self = this;
            
            jQuery.ajax(
                Alces.settings.emapi_geocode_uri,
                {
                    data: {
                        xLng: coords.longitude,
                        yLat: coords.latitude,
                        country: 'FIN'
                    },
                    dataType: 'jsonp'
                }
            ).success(function(res){
                if (typeof res.places == 'object' && res.places.length > 0) {
                    var loc = res.places[0];
                    var address = loc.streetHouseNo
                        ? loc.streetHouseNo + ', ' + loc.municipality
                        : loc.address;
                        
                    success(address, res.places[0]);
                }
                
                if (typeof error == 'function') {
                    error(self.Error.NO_RESULTS);
                }
            }).error(function(){
                if (typeof error == 'function') {
                    error(self.Error.CONNECTION_FAILED);
                }
            });
        }
    };
    
    Alces.mboxHandler = {
        mboxes: {},
        
        register: function(mbox){
            if (typeof mboxDefine == 'function') {
                mboxDefine('', mbox);
                this.mboxes[mbox] = 1;
            }
        },
        
        update: function(mbox){
            mbox in this.mboxes && mboxUpdate(mbox);
        }
    };
    
    jQuery(document).ready(function(){
        Alces.Storage.init();
    });
})();



jQuery(document).ready(function(){
    var test = document.createElement('input');
    
    for (var i in test) {
        if (i == 'placeholder') {
            return;
        }
    }
    
    var inputs = jQuery('input[placeholder], textarea[placeholder]').each(function(){
        var input = jQuery(this);
        var pval = input.attr('placeholder');

        input.bind({
            focus: function(){
                if (input.hasClass('has-placeholder')) {
                    input.val('').removeClass('has-placeholder');
                }
            },
            
            blur: function(){
                if (input.val() == '') {
                    input.val(pval).addClass('has-placeholder');
                }
            }
        }).blur();
    });

    jQuery('form').submit(function(){
        inputs.filter('.has-placeholder').each(function(){
            jQuery(this).val('');
        });
    });
});



