/***
 * Delegate
 * inspired by AS2 pixlib by F.Bourre
 * (c)2008 Alban Creton, alban@ultrasupernew.com
 * */
Delegate = {
  create: function (o, f)
          {
            var aa = [];
            if( arguments.length > 2 )
              for(var a=2; a<arguments.length; a++)
              {
                aa.push(arguments[a]);
              }
          
            var _f = function()
            { 
              var aaa = [];
              for(var a=0; a<arguments.length; a++)
              {
                aaa.push(arguments[a]);
              }
              
              return f.apply(o, aaa.concat(aa)); 
            }
            return _f;
          }
};

function getClassVar(element, var_name)
{
  var_name = var_name+"-";
  var elem    = document.getElementById($(element).attr("id"));
  var classes = elem.className.split(" ");
  for(var a = classes.length-1; a>=0; a--)
  {
    if(classes[a].indexOf(var_name) == 0)
    {
      return classes[a].split(var_name).join("");
      break;
    }
  }
  return false;
}

function strstr( haystack, needle, bool ) {
    // Finds first occurrence of a string within another  
    // 
    // version: 905.3010
    // discuss at: http://phpjs.org/functions/strstr
    // +   original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +   bugfixed by: Onno Marsman
    // +   improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // *     example 1: strstr('Kevin van Zonneveld', 'van');
    // *     returns 1: 'van Zonneveld'
    // *     example 2: strstr('Kevin van Zonneveld', 'van', true);
    // *     returns 2: 'Kevin '
    // *     example 3: strstr('name@example.com', '@');
    // *     returns 3: '@example.com'
    // *     example 4: strstr('name@example.com', '@', true);
    // *     returns 4: 'name'
    var pos = 0;
    
    haystack += '';
    pos = haystack.indexOf( needle );
    if (pos == -1) {
        return false;
    } else{
        if( bool ){
            return haystack.substr( 0, pos );
        } else{
            return haystack.slice( pos );
        }
    }
}


function distance_of_time_in_words($from_time, $include_seconds)
{
  $to_time = (((new Date()).getTime())/1000 >> 0);

  $distance_in_minutes = Math.floor(Math.abs($to_time - $from_time) / 60);
  $distance_in_seconds = Math.floor(Math.abs($to_time - $from_time));

  $string = '';
  $parameters = [];

  if ($distance_in_minutes <= 1)
  {
    if (!$include_seconds)
    {
      $string = $distance_in_minutes == 0 ? 'less than a minute' : '1 minute';
    }
    else
    {
      if ($distance_in_seconds <= 5)
      {
        $string = 'less than 5 seconds';
      }
      else if ($distance_in_seconds >= 6 && $distance_in_seconds <= 10)
      {
        $string = 'less than 10 seconds';
      }
      else if ($distance_in_seconds >= 11 && $distance_in_seconds <= 20)
      {
        $string = 'less than 20 seconds';
      }
      else if ($distance_in_seconds >= 21 && $distance_in_seconds <= 40)
      {
        $string = 'half a minute';
      }
      else if ($distance_in_seconds >= 41 && $distance_in_seconds <= 59)
      {
        $string = 'less than a minute';
      }
      else
      {
        $string = '1 minute';
      }
    }
  }
  else if ($distance_in_minutes >= 2 && $distance_in_minutes <= 44)
  {
    $string = '%minutes% minutes';
    $parameters['%minutes%'] = $distance_in_minutes;
  }
  else if ($distance_in_minutes >= 45 && $distance_in_minutes <= 89)
  {
    $string = 'about 1 hour';
  }
  else if ($distance_in_minutes >= 90 && $distance_in_minutes <= 1439)
  {
    $string = 'about %hours% hours';
    $parameters['%hours%'] = Math.round($distance_in_minutes / 60);
  }
  else if ($distance_in_minutes >= 1440 && $distance_in_minutes <= 2879)
  {
    $string = '1 day';
  }
  else if ($distance_in_minutes >= 2880 && $distance_in_minutes <= 43199)
  {
    $string = '%days% days';
    $parameters['%days%'] = Math.round($distance_in_minutes / 1440);
  }
  else if ($distance_in_minutes >= 43200 && $distance_in_minutes <= 86399)
  {
    $string = 'about 1 month';
  }
  else if ($distance_in_minutes >= 86400 && $distance_in_minutes <= 525959)
  {
    $string = '%months% months';
    $parameters['%months%'] = Math.round($distance_in_minutes / 43200);
  }
  else if ($distance_in_minutes >= 525960 && $distance_in_minutes <= 1051919)
  {
    $string = 'about 1 year';
  }
  else
  {
    $string = 'over %years% years';
    $parameters['%years%'] = Math.floor($distance_in_minutes / 525960);
  }

  for(var it in $parameters)
  {
    $string = $string.split(it).join($parameters[it])
  }
  return $string;
  
}