/*
 * analytics.js v1.0.0
 * Google Analytics のトラッキングコード関係の設定を行う。
 */

// #### 設定情報 ####
// 内部リンクの場合、トラッキングしない拡張子
var fileTypes = ["html","htm","php","pl","cgi","asp","aspx","jsp"];

// Google Analytics UA
var gaUA = "UA-10062225-1";

// #### js 読み込み時処理 ####
// ga.js の読み込み
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));

var pageTracker;

// #### function ####
// Google Analytics 初期処理(ページ読み込み時)
function initGoogleAnalytics() {
  // Google Analytics を開始し、現在の html をトラッキング
  try {
    pageTracker = _gat._getTracker(gaUA);
    pageTracker._trackPageview();
  } catch(err) {}
}

// Google Analytics で内部リンク(exe など普通にトラッキング出来ないもの)や外部リンクの数をトラッキング
function tracInOutgoing(url) {

var trac_path = "";

  // 外部リンク or 内部リンク判定
  if ( (url.match(/^[https]/)) && (! url.match(document.domain)) ) {
    // url が外部リンクの場合、外部リンクへの誘導数をトラッキング
    trac_path = "/outgoing/" + url;
    pageTracker._trackPageview(trac_path);
  } else {
    // url が内部リンクの場合、html、htm、php、pl、cgi など普通にトラッキング出来るもの以外の拡張子だったらトラッキング(/で終わるURL、ページ内リンクも除外)
    if ( (url.charAt(url.length - 1) != "/") && (! url.match("#")) ) {
      var urlArray = url.split(".");
      var extension = urlArray[urlArray.length - 1];
      urlArray = extension.split("?");
      extension = urlArray[0];

      if ($.inArray(extension,fileTypes) == -1) {
        if ( (url.match(/^[https]/)) && ( url.match(document.domain)) ) {
          var d_pos = url.indexOf(document.domain);
          var d_len = document.domain.length;
          trac_path = url.substring( (d_pos + d_len) , url.length );
        } else {
          trac_path = url;
        }

        pageTracker._trackPageview(trac_path);
      }
    }
  }
}

// #### イベントごとの処理 ####
$(document).ready(function(){

  initGoogleAnalytics();

  // <a> タグのクリック時の制御を行う
  $("a").click(function(){
    tracInOutgoing(this.href);
  });

  // submit クリック時の制御を行う
  $(":submit").click(function(){
    tracInOutgoing( $(this).parents("form").attr("action") );
  });

});
