/**
 * Cookie plugin.
 *
 * Copyright (c) 2006 Klaus Hartl (stilbuero.de)
 * Dual licensed under the MIT and GPL licenses:
 * http://www.opensource.org/licenses/mit-license.php
 * http://www.gnu.org/licenses/gpl.html
**/
$.cookie = function( name, value, op ) {
    // 引数に名前と値があればクッキーを保存する 
    if ( typeof value !== 'undefined' ) {
        var op = op || {};
        
        // 第2引数に null で削除 
        if ( value === null ) {
            value = '';
            op.expires = -1;
        }
        
        // max-age は IE 非対応 
        var expires = '',  date;
        
        if ( op.expires && typeof op.expires === 'number' ) {
            date = new Date();
            date.setTime( date.getTime() + ( op.expires * 24 * 60 * 60 * 1000 ) );
            
            expires = '; expires=' + date.toUTCString();
        }
        
        var path = op.path  ?  '; path=' + op.path  :  '';
        var domain = op.domain  ?  '; domain=' + op.domain  :  '';
        var secure = op.secure  ?  '; secure'  :  '';
        
        document.cookie = [ name, '=', encodeURIComponent( value ), expires, path, domain, secure ].join( '' );
    }
    // 引数が名前のみならクッキーを読み込む 
    else {
        var cookieValue = null;
        
        if ( document.cookie && document.cookie !== '' ) {
            var cookies = document.cookie.split( ';' );
            
            for ( var i = -1, l = cookies.length;  ++i < l; ) {
                var cookie = $.trim( cookies[i] );
                
                if ( cookie.substring( 0, name.length + 1 ) === ( name + '=' ) ) {
                    cookieValue = decodeURIComponent( cookie.substring( name.length + 1 ) );
                    break;
                }
            }
        }
        
        return cookieValue;
    }
};

/**
 * settings for garage ost official site.
 *
 * @author: Yuya Fukuda : http://www.informarc.co.jp/
 * @created: 2011/01/24
 * @modified: 2011/01/24
**/
(function($) {
    $(function() {
        $.informarc.originalReferrer();
        $.informarc.pageviews();
        $.informarc.sessionviews();
    });
    
    $.informarc = {
        originalReferrer: function( options ) {
            var op = $.extend({
                name: 'originalReferrer',
                path: '/',
                expires: 730
            }, options );
            
            if ( $.cookie( op.name ) === null ) {
                if ( document.referrer !== '' && document.referrer.indexOf( document.domain ) === -1 ) {
                    $.cookie( op.name, document.referrer, { expires: op.expires, path: op.path } );
                }
            }
            else {
                $.cookie( op.name, $.cookie( op.name ), { expires: op.expires, path: op.path } );
            }
        },
        pageviews: function( options ) {
            var op = $.extend({
                name: 'pageviews',
                path: '/',
                expires: 730
            }, options );
            
            var lp = location.pathname,  flag = true;
            
            if ( $.cookie( op.name ) !== null ) {
                var before = $.cookie( op.name );
                var views = before.split( ',' );
                
                for ( var i = -1, l = views.length;  ++i < l; ) {
                    if ( views[i] === lp ) {
                        flag = false;
                        break;
                    }
                }
                
                if ( flag === true ) {
                    var after = before + ',' + lp;
                    $.cookie( op.name, after, { expires: op.expires, path: op.path } );
                }
                else {
                    $.cookie( op.name, before, { expires: op.expires, path: op.path } );
                }
            }
            else {
                $.cookie( op.name, lp, { expires: op.expires, path: op.path } );
            }
        },
        sessionviews: function( options ) {
            var op = $.extend({
                name: 'sessionviews',
                path: '/'
            }, options );
            
            var lp = location.pathname;
            
            if ( $.cookie( op.name ) !== null ) {
                var before = $.cookie( op.name );
                var views = before.split( ',' );
                
                if ( views[ views.length - 1 ] !== lp ) {
                    var after = before + ',' + lp;
                    $.cookie( op.name, after, { path: op.path } );
                }
            }
            else {
                $.cookie( op.name, lp, { path: op.path } );
            }
        }
    };
})(jQuery);
