var Tool = function()
{
}

Tool.getGeoLocalisation = function(successCallBack, errorCallBack)
{
  if (navigator.geolocation) 
  {
    navigator.geolocation.getCurrentPosition(successCallBack, errorCallBack);
  }
}

Tool.getCookie = function(c_name)
{
  if (document.cookie.length > 0)
  {
    c_start=document.cookie.indexOf(c_name + "=");
    if (c_start!=-1)
    {
      c_start=c_start + c_name.length+1;
      c_end=document.cookie.indexOf(";",c_start);
      if (c_end==-1) c_end=document.cookie.length;
        return unescape(document.cookie.substring(c_start,c_end));
    }
  }
  return null;
}

Tool.setCookie = function(c_name, value, expiredays, expireminutes, path)
{
  var exdate=new Date();
  exdate.setDate(exdate.getDate()+expiredays);
  exdate.setMinutes(exdate.getMinutes()+expireminutes);
  document.cookie = c_name + "=" + escape(value) + ((expiredays==null) ? "" : ";expires="+exdate.toGMTString()) + (path ? ";path=" + path : "/");
}

Tool.openPopup = function(href, width, height)
{
  window.open(href,'popup','toolbar=no,menubar=no,scrollbars=no,resizable=no,location=no,directories=no,status=no,width=' + width + ',height=' + height);
}

Tool.isIntNumeric = function(value)
{
  if (value == null || value.length == 0 || !value.toString().match(/^[-]?\d*$/)) return false;
  return true;
}

Tool.isEmail = function(value)
{
	if (!value) return false;
  var regExp = new RegExp("^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]{2,}[.][a-zA-Z]{2,3}$");
  if (value.toString().match(regExp)) return true;
  return false;
}

Tool.isPhone = function(value)
{
  if (!value) return false;
  var regExp = new RegExp("^(0)[0-9]{9}$");
  if (value.toString().match(regExp)) return true;
  return false;
}
Tool.isMobilePhone = function(value)
{
 if (!value) return false;
  var regExp = new RegExp("^(06|07)[0-9]{8}$");
  if (value.toString().match(regExp)) return true;
  return false;
}


Tool.sendStats = function(object, event, completeHandler)
{ 
  var userId = Tool.getCookie("user_id"); 

  if (!userId)
  {
    userId = Tool.getUniqId(application.affiliate.id);
      
    Tool.setCookie("user_id", userId, 365 * 2)
  }
  
  var sessionId = Tool.getCookie("session_id");
  var beginSession = false;
  
  if (!sessionId)
  {
    sessionId = Tool.getUniqId(application.affiliate.id);
    beginSession = true;  
  }
  
  Tool.setCookie("session_id", sessionId, 0, 30);
  
  try
  {
    var stat = new Object();
    stat.website = {core:{type:"proxiweb", id:application.webSite.id, affiliateId:application.affiliate.id}};
    stat.visitor = {core:{id:userId, sessionId:sessionId}, location:application.user.location, preferences:application.user.preferences};
    stat.visitor.agent = {text:navigator.userAgent, browserCodeName:navigator.appCodeName, browserName:navigator.appName, browserVersion:navigator.appVersion, os:navigator.oscpu, platform:navigator.platform, language:navigator.language, screenWidth:screen.width, screenHeight:screen.height};
    stat.visitor.navigation = {href:window.location.href, referrer:document.referrer};
    
    var date = new Date();
    var dateString = Tool.getYmdHisDateFormat(date);
    event.date = {local:dateString};
    
    stat.event = event;
    stat.jsoncallback = "?";
    
    var params = Tool.buildDataUrl(stat, "");
    
    var url = "http://" + window.location.host + "/stats/record.php?" + params;
    
    $.getJSON(url, function(response)
    {
      if (completeHandler)
        completeHandler();
    });
  }
  catch(err)
  {
  } 
}

Tool.padLeft = function(value, pad, count)
{
  value = value.toString();
  for (var index = value.length; index < count; index++)
  {
    value = pad + value;
  }
  
  return value;
}
  
Tool.getYmdHisDateFormat = function(date)
{
    var day = Tool.padLeft(date.getDate(), "0", 2);
    var month = Tool.padLeft(date.getMonth() + 1, "0", 2);
    var hours = Tool.padLeft(date.getHours(), "0" , 2);
    var minutes = Tool.padLeft(date.getMinutes(), "0", 2);
    var seconds = Tool.padLeft(date.getSeconds(), "0", 2);
    
    return date.getFullYear() + "-" + month + "-" + day + " " + hours + ":" + minutes + ":" + seconds;
}

Tool.getUniqId = function(prefix)
{
  var time = new Date().getTime();
  
  time = prefix + time.toString(16);
  
  for (var i = 0; i < 32; i++)
  {
    time += Math.floor(Math.random() * 16).toString(16);  
  }
  
  return time;
}

Tool.buildDataUrl = function(data, name)
{
  var dataString = "";
  
  for (var field in data)
  {
    if (field && typeof(eval(data)[field]) != "undefined" && data[field] !== null)
    {
      if (typeof(data[field]) == "object" || data[field].push)
      {
        if (dataString.length > 0)
          dataString += "&";
        
        dataString += Tool.buildDataUrl(data[field], name.length > 0 ? name + "[" + field + "]" : field);
      }
      else if (typeof(data[field]) != "function")
      {
        if (dataString.length > 0)
          dataString += "&";
        
        dataString +=  (name.length > 0 ? name + "[" + field + "]" : field) + "=" + (field != "jsoncallback" ? encodeURIComponent(data[field]) : data[field]);
      }
    }  
  }
  
  return dataString;
}
