// $Id$
/**
 * @file
 * VRTstats - Nedstat
 * 
 * This script used for the Nedstat/Sitestat and Metriweb/CIM implementation.
 * 
 * @author Jo Bollen <jobolln@gmail.com> <jo.bollen@vrt.be>
 * @site http://www.drupal.org/project/vrtstats
 * @version : 1.1 (07/08/09 - 10:11)
 */

function sitestat(ns_l){
  ns_l+='&amp;ns__t='+(new Date()).getTime();ns_pixelUrl=ns_l; 
  ns_0=document.referrer; 
  ns_0=(ns_0.lastIndexOf('/')==ns_0.length-1)?ns_0.substring(ns_0.lastIndexOf('/'),0):ns_0; 
  if(ns_0.length>0)ns_l+='&amp;ns_referrer='+escape(ns_0); 
  if(document.images){ns_1=new Image();ns_1.src=ns_l;}else 
  document.write('<img src="'+ns_l+'" width="1" height="1" alt=""></img>');
}


function ns_onclick (a, url, name, type, winopt){
  var ns_l=Drupal.settings.vrtstats.ns.base_url; 
  ns_l+=name;
  ns_l+='&ns_type='+type+'&ns_action=view'; 
  ns_l+='&ns__t='+(new Date()).getTime();if(!url)url=a.href; 
  var ns_0=document.referrer;
  if(ns_0.lastIndexOf('/')==ns_0.length-1) 
    ns_0=ns_0.substring(ns_0.lastIndexOf('/'),0); 
  if (ns_0.length>0)
     ns_l+='&amp;ns_referrer='+escape(ns_0); 
//  winopt=winopt||"";
//  var target=(a&&a.target&&a.target!="")?(a.target.substring(0,1)=="_")?a.target.substring(1 ):a.target:"self"; 
  var ns_i=new Image();
//  if(target&&url){
//    if(window[target]){
//      window.ns_softclick_timer=function(target,url) {
//        return function(){
//            ns_i.onload=ns_i.onerror= function(){return;}; 
//            window[((window[target])?target:"self")].location.href=url;
//        }
//      }(target,url); 
//      window.setTimeout('ns_softclick_timer()',5000);
//      ns_i.onload=ns_i.onerror=window.ns_softclick_timer;
//    }
//    else { 
//      window.open(url,target,winopt);
//    }
//  }
  ns_i.src=ns_l;
//  return false;
}



/* VRTstats - Softclics - START */
function softclick() {
  var ns_tellernaam = Drupal.settings.vrtstats.ns.tellernaam;
    var clickout_hrefs = '';
    var clickin_hrefs = '';
    var window_obj = parseUri(window.location.href);
    $('a').each(function(idx , item) {
      var item_obj = {};
      var title = ''; 
      var van_teller = '';
      var naar_teller = '';
      var type = '';
      if($(this).text() != ''){
        title = '.' + clean_up_string($(this).text(),'_');
      }else if (item.title != ''){
        title = '.' + clean_up_string(item.title,'_');
      }else{
        title = '';
      }
      item_obj = parseUri(item.href);
      if(item_obj.domain != window_obj.domain) {
        if(Drupal.settings.vrtstats.ns.use_softclicks_clickout == 'yes'){
          if(item_obj.fileName != ''){
            if(Drupal.settings.vrtstats.ns.use_softclicks_download == 'yes'){
              var return_download = true;
              var ext = item_obj.fileName.slice(item_obj.fileName.indexOf(".")).toLowerCase();
              var common_files_web = Drupal.settings.vrtstats.common_files.web;
              for(var prop in common_files_web){
                if(ext == common_files_web[prop]) {
                  return_download = false;
                }
              }
              van_teller = ns_tellernaam + title;
              naar_teller = item_obj.domain + decodeURI(item_obj.directoryPath) + clean_up_string(item_obj.fileName,'_');
              if(return_download == true){
                type = 'pdf';
              }else{
                type = 'clickout';
              }
                  $(item).bind("click", function(){ vrtstats_softclick(this,'', van_teller ,  naar_teller , type); });
//                  var onclick = "vrtstats_softclick(this,'', '" + van_teller + "' , '" + naar_teller + "' , '" + type + "');return false;";
//                  $(this).attr({ onclick: onclick });
            }
          }else{
              van_teller = ns_tellernaam + title;
              naar_teller = item_obj.domain + decodeURI(item_obj.path);
              type = 'clickout';
              $(item).bind("click", function(){ vrtstats_softclick(this,'', van_teller ,  naar_teller , type); });
//                var onclick = "vrtstats_softclick(this,'', '" + van_teller + "' , '" + naar_teller + "' , '" + type + "');return false;";
//                $(this).attr({ onclick: onclick });
          }
        }
      }else {
        if(Drupal.settings.vrtstats.ns.use_softclicks_clickthrough == 'yes'){
          if(item_obj.fileName != ''){
            if(Drupal.settings.vrtstats.ns.use_softclicks_download == 'yes'){
              var return_download = true;
              var ext = item_obj.fileName.slice(item_obj.fileName.indexOf(".")).toLowerCase();
              var common_files_web = Drupal.settings.vrtstats.common_files.web;
              for(var prop in common_files_web){
                if(ext == common_files_web[prop]) {
                  return_download = false;
                }
              }
              van_teller = ns_tellernaam + title;
              naar_teller = Drupal.settings.vrtstats.ns.base_counter + decodeURI(item_obj.directoryPath) + clean_up_string(item_obj.fileName,'_');
              if(return_download == true){
                type = 'pdf';
              }else{
                type = 'clickin';
              }
              $(item).bind("click", function(){ vrtstats_softclick(this,'', van_teller ,  naar_teller , type); });
//                var onclick = "vrtstats_softclick(this,'', '" + van_teller + "' , '" + naar_teller + "' , '" + type + "');return false;";
//                $(this).attr({ onclick: onclick });
            }
          }else{
              van_teller = ns_tellernaam + title;
              naar_teller = Drupal.settings.vrtstats.ns.base_counter + '.' + decodeURI(item_obj.path);
              type = 'clickin';
              if(item_obj.path == '/' || item_obj.path.length == 0){
                naar_teller = Drupal.settings.vrtstats.ns.base_counter + '.homepage'; 
              }
              $(item).bind("click", function(){ vrtstats_softclick(this,'', van_teller ,  naar_teller , type); });
//                var onclick = "vrtstats_softclick(this,'', '" + van_teller + "' , '" + naar_teller + "' , '" + type + "');return false;";
//                $(this).attr({ onclick: onclick });
          }
        }
      }
    });
}

function vrtstats_softclick(this_, url, van_teller , naar_teller, type){
  var softclick, van, naar;
  switch(type){
  case 'pdf':
    softclick = 'download';
    break;
  case 'clickout':
    softclick = 'clickout'
    break;
  case 'clickin':
  default:
    softclick = 'clickthrough'
    break;
  }
  van = clean_up_string(van_teller,'.');
  naar = clean_up_string(naar_teller,'.');
//  alert(softclick + '.VAN.' + van + '.NAAR.' + naar);
  ns_onclick(this_,url, softclick + '.VAN.' + van + '.NAAR.' + naar, type);
}


/* parseUri JS v0.1, by Steven Levithan (http://badassery.blogspot.com/2007/02/parseuri-split-urls-in-javascript.html) */
function parseUri(sourceUri){
    var uriPartNames = ["source","protocol","authority","domain","port","path","directoryPath","fileName","query","anchor"];
    var uriParts = new RegExp("^(?:([^:/?#.]+):)?(?://)?(([^:/?#]*)(?::(\\d*))?)?((/(?:[^?#](?![^?#/]*\\.[^?#/.]+(?:[\\?#]|$)))*/?)?([^?#/]*))?(?:\\?([^#]*))?(?:#(.*))?").exec(sourceUri);
    var uri = {};
    
    for(var i = 0; i < 10; i++){
        uri[uriPartNames[i]] = (uriParts[i] ? uriParts[i] : "");
    }
    
    // Always end directoryPath with a trailing backslash if a path was present in the source URI
    // Note that a trailing backslash is NOT automatically inserted within or appended to the "path" key
    if(uri.directoryPath.length > 0){
        uri.directoryPath = uri.directoryPath.replace(/\/?$/, "/");
    }
    return uri;
}

function clean_up_string(string,space_replacer){
  // als we geen correcte tellernaam hebben, cleanen we de url 'the hard way'
  // toegelaten karakters zijn 1234567890abcdefghijklmnopqrstuvwxyz-_.
  
  string = unescape(string).toLowerCase();
  string = clean_up_string_extra(string);
  string = string.replace(/[^a-z0-9\-_]/g, " ");
  string = trim_(string);
  string = string.replace(/\s+/g," ");
  string = string.replace(/[^a-z0-9\-_]/g, space_replacer);
  return string;
}


function clean_up_string_extra(string){
  try{
    //omdat de replace van speciale chars niet mogelijk is
    //maken we er escaped chars van...  daarna unescapen
    //we de string terug.
    
    string = escape(string)
    string = string.replace(/%27|%C3|%AA/g, '');        //è|'

    string = string.replace(/%E0|%E1|%E2|%E3|%E4|%E5|%E6/g, 'a'); //à|á|â|ã|ä|å|æ
    string = string.replace(/%E7/g, 'c');             //ç
    string = string.replace(/%E8|%E9|%EA|%EB/g, 'e');       //è|é|ê|ë
    string = string.replace(/%EC|%ED|%EE|%EF/g, 'i');       //ì|í|î|ï
    string = string.replace(/%F1/g, 'n');             //ñ
    string = string.replace(/%F2|%F3|%F4|%F5|%F6|%F8/g, 'o');   //ò|ó|ô|õ|ö|ø   
    string = string.replace(/%F9|%FA|%FB|%FC/g, 'u');       //ù|ú|û|ü
    string = string.replace(/%FD|%FF/g, 'y');           //ý|ÿ

    string = unescape(string);
    return string;
  }
  catch(e){
    
  }
}

function trim_ (str) {
  str = str.replace(/^\s+/, '');
  for (var i = str.length - 1; i >= 0; i--) {
    if (/\S/.test(str.charAt(i))) {
      str = str.substring(0, i + 1);
      break;
    }
  }
  return str;
}
/* VRTstats - Softclics - END */
