﻿/// <reference name="MicrosoftAjax.debug.js" />
/// <reference name="MicrosoftAjaxTimer.debug.js" />
/// <reference name="MicrosoftAjaxWebForms.debug.js" />
/// <reference name="AjaxControlToolkit.ExtenderBase.BaseScripts.js" assembly="AjaxControlToolkit" />

Type.registerNamespace('Vamsoft');

Vamsoft.Preferences = function() {
    Vamsoft.Preferences.initializeBase(this);
}

Vamsoft.Preferences.prototype = {
    initialize: function() {
        Vamsoft.Preferences.callBaseMethod(this, 'initialize');
    },

    dispose: function() {
        Vamsoft.Preferences.callBaseMethod(this, 'dispose');
    },

    createCookie: function(name, value, days) {

        if (days) {
            var date = new Date();
            date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
            var expires = "; expires=" + date.toGMTString();
        }
        else var expires = "";

        document.cookie = name + "=" + value + expires + "; path=/";
    },

    readCookie: function(name) {
        var nameEQ = name + "=";
        var ca = document.cookie.split(';');

        for (var i = 0; i < ca.length; i++) {
            var c = ca[i];
            while (c.charAt(0) == ' ') c = c.substring(1, c.length);
            if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length, c.length);
        }

        return null;
    },

    eraseCookie: function(name) {
        createCookie(name, "", -1);
    },

    get_value: function(key) {
        return readCookie(key);
    },

    set_value: function(key, value) {
        createCookie(key, value);
    }
}

Vamsoft.Preferences.registerClass('Vamsoft.Preferences', Sys.Component);

Vamsoft.PreferencesDataSource = function() {
    Vamsoft.PreferencesDataSource.initializeBase(this);
    this._key = null;
    this._preferences = null;
    this._default = null;
    this._onpropertychanged = Function.createDelegate(this,this.onpropertychanged);
}

Vamsoft.PreferencesDataSource.prototype = {
    initialize: function() {
        Vamsoft.PreferencesDataSource.callBaseMethod(this, 'initialize');
        var value = this.get_value();
        if ((value == 'undefined' || value == null) && this._default!=null) this.set_value(this._default);
    },
    
    onpropertychanged: function(sender,args){
        var name = args.get_propertyName();
        
        if (name == 'value'){
            this.set_value(sender.get_value());
        }
    },

    dispose: function() {
        Vamsoft.PreferencesDataSource.callBaseMethod(this, 'dispose');
    },

    get_preferences: function() {
        return this._preferences;
    },

    set_preferences: function(value) {
        this._preferences = value;
    },

    get_key: function() {
        return this._key;
    },

    set_key: function(value) {
        this._key = value;
    },

    get_value: function() {
        return this._preferences.readCookie(this._key);
    },

    set_value: function(value) {
        if (value == 'undefined') return;
        if (this.get_value() == value) return;
        this._preferences.createCookie(this._key, value);
        this.raisePropertyChanged('value');
    }
}

Vamsoft.PreferencesDataSource.registerClass('Vamsoft.PreferencesDataSource', Sys.Component);

if (typeof (Sys) !== 'undefined') Sys.Application.notifyScriptLoaded();