var parseUri =  function (str) {
  this.url = str;
  this.options = {
    strictMode: false,
    key: ["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"],
    q:   {
      name:   "queryKey",
      parser: /(?:^|&)([^&=]*)=?([^&]*)/g
    },
    parser: {
      strict: /^(?:([^:\/?#]+):)?(?:\/\/((?:(([^:@]*):?([^:@]*))?@)?([^:\/?#]*)(?::(\d*))?))?((((?:[^?#\/]*\/)*)([^?#]*))(?:\?([^#]*))?(?:#(.*))?)/,
      loose:  /^(?:(?![^:@]+:[^:@\/]*@)([^:\/?#.]+):)?(?:\/\/)?((?:(([^:@]*):?([^:@]*))?@)?([^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/
    }
  }
  
  this.parse = function(){
    var o   = this.options,
      m   = o.parser[o.strictMode ? "strict" : "loose"].exec(this.url),
      uri = {},
      i   = 14;

    while (i--) uri[o.key[i]] = m[i] || "";

    uri[o.q.name] = {};
    uri[o.key[12]].replace(o.q.parser, function ($0, $1, $2) {
      if ($1) uri[o.q.name][$1] = $2;
    });

    return uri;
  }
  
  this.hier = function(strD){
    var u = strD;
    var c = u.split('/');
    c[0] = 'home';
    for(i = 0; i < c.length; i++){
     if(c[i].length == 0){
      c.splice(i,1);
     }
    }
    if (c[c.length - 1].match(/[^0-9]/g)) {
    }else{
      c.splice(c.length - 1,1);
    }
    return c.join(':');
    
  }

  this.type = function(strD){
    var u = strD;
    var c = u.split('/');
    c[0] = 'home';
    for(i = 0; i < c.length; i++){
     if(c[i].length == 0){
      c.splice(i,1);
     }
    }
    return 
    
  }

  
  this.itemID = function(strD){
    var u = strD;
    var c = u.split('/');
    c.reverse();
    for(i = 0; i < c.length; i++){
     if(c[i].length == 0){
      c.splice(i,1);
     }
    }
    if (c[0].match(/[^0-9]/g)) {
      return '';
      }else{
      return c[0];
    }
  }
  
};


function sc_adclick(adid) {
  var s=s_gi(s_account);
  s.linkTrackVars='products,eVar15,events'; 
  s.linkTrackEvents='event4'; 
  s.events='event4'; 
  s.eVar15= adid; 
  s.products = adid;
  s.tl(this,'o','Ad Click');
}


// SiteCatalyst
// arena: event5, evar14
// hottopics: event5, evar14
function arena_click(o){
    var s=s_gi(s_account);
    s.linkTrackVars='products,eVar14,events';
    s.linkTrackEvents='event5';
    s.events='event5';
    s.eVar14= o;
    s.products = o;
    s.tl(this,'o','Arena Click');
}


function hottopics_click(o){
    var s=s_gi(s_account);
    s.linkTrackVars='products,eVar14,events';
    s.linkTrackEvents='event5';
    s.events='event5';
    s.eVar14= o;
    s.products = o;
    s.tl(this,'o','Hottopics Click');
}


// クロスブラウザ用イベント監視
// http://liosk.blog103.fc2.com/blog-entry-61.html
function observe(target, type, listener) {
    if (target.addEventListener) target.addEventListener(type, listener, false);
    else if (target.attachEvent) target.attachEvent('on' + type, function() { listener.call(target, window.event); });
    else target['on' + type] = function(e) { listener.call(target, e || window.event); };
}


// オンデマンドロード
// http://www.ibm.com/developerworks/jp/web/library/wa-speedweb/
function $import(src){
  var scriptElem = document.createElement('script');
  scriptElem.setAttribute('src',src);
  scriptElem.setAttribute('type','text/javascript');
  scriptElem.setAttribute('charset','utf-8');
  document.getElementsByTagName('head')[0].appendChild(scriptElem);
}


// key属性にイベント追加
function set_link_event(key) {
    var links = document.getElementsByTagName('a');
    for(var i=0;i<links.length;i++) {
           if (links[i].rel == key) {
            observe(links[i], 'click', function(e) {
                    // click要素のhrefと座標
                    //Googleに変更
                    //pageTracker._trackEvent('LinkClick:'+key, this, location.href);
                    sc_click_count(location.href, key+':'+this, key+':'+e.clientX+','+e.clientY+','+document.body.clientWidth);
            });
           }
    }
}


// クリックカウント
function sc_click_count(v1, v2, v3) {
    var s=s_gi(s_account);
    s.linkTrackVars='products,eVar17,eVar18,events';
    s.linkTrackEvents='event2';
    s.events='event2';
    s.products = ';' + v1;
    s.eVar17= v2;
    s.eVar18= v3;
    s.tl(this,'o','Link Click');
}


// // ユーザ取得
// function sc_user(){
//   var request = new Ajax.Request('/api/user',{
//       method: 'post',
//       asynchronous: false,
//       onFailure: function (response, options) {
//           return '';
//       }
//   });
//   try {
//       var result = eval('(' + request.transport.responseText + ')');
//       return result.shopper_id;
//   } catch(err) {
//       return '';
//   }
// }


// ユーザ取得
function sc_user(){
  var jx=jQuery.ajax({
    url: "/api/user",
    dataType: "json",
    async: false
   }).responseText;
  var result = eval('(' + jx + ')');
  return result.shopper_id;
}
// リファラードメイン取得
function sc_referrer(){
  if(document.referrer.replace(/http[s]?:\/\/([^\/]+?)\/.*/i,"$1") == location.hostname){
    return "";
  }
  return document.referrer.replace(/http[s]?:\/\/([^\/]+?)\/.*/i,"$1");
}


function ov_click_count(v1, v2, v3) {
  var s=s_gi(s_account);
  s.linkTrackVars='products,eVar19,eVar20,events';
  s.linkTrackEvents='event4';
  s.events='event4';
  s.products = 'ov;' + v1;
  s.eVar19= v2;
  s.eVar20= v3;
  s.tl(this,'o','Overture Click');
}
