/* http://quick.aero/@@/zojax.wizard.tabs */
function submitAndMove2Step(formId, action, saveAction, nextStep, index)
{
    var form = $(document.getElementById(formId));

    if (action) {
	//add hidden input for emulating press button action
	form.append('<input type="hidden" name="'+action+'" value="1"/>');
    }
    if (saveAction) {
	// save action
	form.append('<input type="hidden" name="'+saveAction+'" value="1"/>');
    }
    if (nextStep) {
	// add hidden with next step index
	form.append('<input type="hidden" name="'+nextStep+'" value="'+index+'"/>');
    }

    // submit form
    form.submit();

    return false;
}

var wizardTabsHandler = function(formId, action, save, nextStep, index) {
    return function(e)
    {
        return submitAndMove2Step(formId, action, save, nextStep, index);
    };
};

function subscribeWizardTabs(
    formId, prevActionName, nextActionName, 
    saveActionName, currentClass, searchLink, nextStep) {

    //subscribe tabs
    var elems = $(searchLink);
    var nextAction = false;
    for (var i = 0; i < elems.length; i++)
    {
      var el = $(elems[i]);
      if (el.parent('li').is("."+currentClass))
      {
          nextAction = true;
      }
      else if (nextAction)
      {
	  if (nextActionName) {
              el.bind("click", wizardTabsHandler(formId, nextActionName, saveActionName, nextStep, i));
	  }
      }
      else
      {
	  if (prevActionName) {
              el.bind("click", wizardTabsHandler(formId, prevActionName, saveActionName, nextStep, i));
	  }
      }
    }
}


/* http://quick.aero/@@/humandatetime.js */
var formatter_past_dictionary = {
    '%s year(s) ago'  : '%s year(s) ago',
    '%s month(s) ago'  : '%s month(s) ago',
    '%s week(s) ago': '%s week(s) ago',
    '%s day(s) ago' : '%s day(s) ago',
    '%s hour(s) ago' : '%s hour(s) ago',
    '%s minute(s) ago' : '%s minute(s) ago',
    '%s second(s) ago' : '%s second(s) ago'
};

var formatter_future_dictionary = {
    '%s year(s) ago'  : '%s year(s) ago',
    '%s month(s) ago'  : '%s month(s) ago',
    '%s week(s) ago': '%s week(s) ago',
    '%s day(s) ago' : '%s day(s) ago',
    '%s hour(s) ago' : '%s hour(s) ago',
    '%s minute(s) ago' : '%s minute(s) ago',
    '%s second(s) ago' : '%s second(s) ago'
};

function setHumandatetimeFormatter(el)
{
    var time = new Date();
    time.setTime(Date.parse(el.attr('value')));
    var new_time = new Date();
    delta = new_time-time;
    $.i18n.setDictionary(formatter_past_dictionary);
    if (delta < 0) {
        delta = Math.abs(delta);
        $.i18n.setDictionary(formatter_future_dictionary)
    }
    years = Math.floor(delta/(365*24*60*60*1000.0));
    months = Math.floor(delta/(30*24*60*60*1000.0));
    weeks = Math.floor(delta/(7*24*60*60*1000.0));
    days = Math.floor(delta/(24*60*60*1000.0));
    hours = Math.floor(delta/(60*60*1000.0));
    minutes = Math.floor(delta/(60*1000.0));
    seconds = Math.floor(delta/(1000.0));
    var res;
    if (years)
        res = $.i18n._('%s year(s) ago', [years])
    else if (months)
        res = $.i18n._('%s month(s) ago', [months])
    else if (weeks)
        res = $.i18n._('%s week(s) ago', [weeks])
    else if (days)
        res = $.i18n._('%s day(s) ago', [days])
    else if (hours)
        res = $.i18n._('%s hour(s) ago', [hours])
    else if (minutes)
        res = $.i18n._('%s minute(s) ago', [minutes])
    else
        res = $.i18n._('%s second(s) ago', [seconds])
    el.text(res);
    el.attr('processed', 'true')
}


$(document).ready(function() {
    var elems = $("span.zojax-formatter-humandatetime");
    for (var i = 0; i < elems.length; i++)
    {
        var el = $(elems[i]);
        if (!el.attr('processed')) {
            setHumandatetimeFormatter(el);
        }
    }
});

/* http://quick.aero/@@/fancydatetime.js */
function setFancydatetimeFormatter(el)
{
    var date = new Date();
    date.setTime(Date.parse(el.text()));
    
    var now = new Date();
    delta = Math.abs(now-date) + 60*1000*(parseInt(el.attr('offset'))-now.getTimezoneOffset());
    years = Math.floor(delta/(365*24*60*60*1000.0));
    months = Math.floor(delta/(30*24*60*60*1000.0));
    weeks = Math.floor(delta/(7*24*60*60*1000.0));
    days = Math.floor(delta/(24*60*60*1000.0));

    var res;

    if (!years && !months && !weeks && days == 1) {
        res = 'Yesterday at ' + el.attr('time');

    } else if (!years && !months && !weeks && days == 0) {
        res = 'Today at ' + el.attr('time');
    } else {
        res = el.attr('date') + ' ' + el.attr('time');
    }

    el.text(res);
    el.attr('processed', 'true')
}


$(document).ready(function() {
    
    var elems = $("span.zojax-formatter-fancydatetime");
    for (var i = 0; i < elems.length; i++)
    {
        var el = $(elems[i]);
        if (!el.attr('processed')) {
            setFancydatetimeFormatter(el);
        }
    }
});


/* http://quick.aero/@@/crosslinks */
var domains = [
    'http://quick.aero/global-resources/shipping-info-center/',
    'http://quick.aero/in-the-news/',
    'http://quick.aero/inthenews/',
    'http://quick.aero/siteadmin/',
    'http://quick.aero/quickstat/',
    'http://quick.aero/sterling/',
    'http://quick.aero/quickintl/',
    'http://quick.aero/it-projects/',
    'http://quick.aero/shippinginfocenter/',
    'http://quick.aero/'
]


function crosslinkHandler(el)
{
    var href = el.data.domain + '++session++' + el.data.session + '/' +
    this.href.substring(el.data.domain.length)
    window.location = href;

    return false;
}

function setLink(el, href)
{
    var oldref = href.attr('href');
    var link = el.domain + '++session++' + el.session + '/' +
        oldref.substring(el.domain.length);
    href.attr('href', link)
}


$(document).ready(function() {
    var session = null;

    if (document.cookie && document.cookie != '') {
        var cookies = document.cookie.split(';');
        for (var i = 0; i < cookies.length; i++) {
      var cookie = jQuery.trim(cookies[i]).split('=', 2);
            if (cookie[0].substring(0, 9) == 'zope3_cs_') {
                session = cookie[1];
                break;
            }
        }
    }
    if (!session) {
  return;
    }

    var local = $('head').attr('portal');

    var elems = $("a");

    for (var i = 0; i < elems.length; i++)
    {
      var el = $(elems[i]);
      for (var j = 0; j<domains.length; j++) {
          var href = el.attr('href');
          if (href) {
              if (href.substring(0, local.length) != local) {
                var domain = domains[j];
                if (href.substring(0, domain.length) == domain) {
                    setLink({domain: domain, session: session}, el);
                    //el.bind("click", {domain: domain, session: session}, crosslinkHandler);
                    break
            }
          }
          }
      }
    }
});


