/**
 *  Prototype Xtensions 
 *  
 *  @author    Simon Martins
 *  @copyright (c) 2008 Netatoo SARL <http://www.netatoo.fr>
 *  @license   MIT License <http://www.prototypextensions.com/#main=license>
 * 
 *  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 *  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 *  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 *  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 *  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 *  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 *  THE SOFTWARE.
 *
 */

/**
 * Cookie
 * 
 * @desc Set / Get / Unset cookie 
 */
var Cookie = {
    /**
     * isEnabled()
     *
     * @desc Return true if cookie is enabled, false else
     */
    isEnabled: function() {
        this.set('enabled', 'ok');
        var test = this.get('enabled');
        this.unset('enabled');
        return (test == 'ok') ? true : false;
    },
    
    /**
     * set()
     *
     * @desc Set a cookie
     */
    set: function(name, value, options) {
        var expire = '';
        var o      = options || {};
        var path   = (o.path)   ? '; path=' + o.path : '; path=/';
        var domain = (o.domain) ? '; domain=' + o.domain : '';
        var secure = (o.secure == true) ? '; secure' : '';
        var date = new Date();
        
        if(Object.isNumber(o)) {
            date.setTime(date.getTime() + (o * 1000));
            expire = '; expires=' + date.toGMTString();
        } else if(o.expires) {
            date.setTime(date.getTime() + (o.expires * 1000));
            expire = '; expires=' + date.toGMTString();
        }
        
        document.cookie = name + "=" + value + expire + path + domain + secure;
        
        return this;
    },
    
    /**
     * get()
     *
     * @desc Get a cookie
     * @attribution http://www.quirksmode.org/js/cookies.html
     */
    get: 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;
    },
    
    /**
     * get()
     *
     * @desc Unset a cookie
     */
    unset: function(name) {
        this.set(name, '', -1, true);
        return this;
    } 
};

