var zmagsThumbnailsWidth = 0;
var zmagsThumbnailsTotalWidth = 0;
var numZmagsThumbnails = 0;
var zmagsThumbnailsPosition = 0;


function headerStoryCarousel(articleObj, speed) {

  $(document).ready(function() {
    var m_articleObj = $("#" + articleObj);  
    var m_speed = speed;
    var m_articles = m_articleObj.children('.fp_headerStory');
    
    var m_numArticles = m_articles.length;

    if(m_numArticles > 0) {
      var m_storyIndex = 0;

      $(m_articles[0]).show();

      var swapStory = function() {

        $(m_articles[m_storyIndex]).hide();

        m_storyIndex++

        if(m_storyIndex > m_numArticles - 1) {
          m_storyIndex = 0;
        }

        $(m_articles[m_storyIndex]).show();
      }

      var m_interval = setInterval(swapStory, m_speed * 1000);
    }
  });
}



var updateMenuFormField = function(menuID, selectionValue, selectionText) {
  $(document).ready(function() {
    $('#' + menuID).find('input').attr('value', selectionValue);
  });
}


var selectRegion = function(menuID, selectionValue, selectionText) {

  $(document).ready(function() {
    $('#regional_lists').children('table').hide();
    $($('#regional_lists').children('table')[selectionValue]).show();

    createCookie("UPSRegionalNewsSelection", "", -1);
    createCookie("UPSRegionalNewsSelection", selectionValue, 14);
  });
}



// Parameters: 
// menuID = The ID of the outer container element of the menu.
// selectFunction = Pointer to a function to be executed when the user makes a selection.

function dropDownMenu(menuID, selectFunction) {
  
  var selectionIndex = 0;
  var selectionValues = new Array();
  var selectionTexts = new Array();
  var selectionValue = "";
  var selectionText = "";


  this.addMenuEntry = function(text, value) {
    $(document).ready(function() {
      selectionValues.push(value);
      selectionTexts.push(text);

      $($('#' + menuID).find('ul')).append("<li>" + text + "</li>");

      var items = $($('#' + menuID).find('ul')).children('li');

      $(items[items.length - 1]).bind('click', select);

      // Necessary because IE only supports :hover on <a> elements.
      $(items[items.length - 1]).bind('mouseover', mouseOver);
      $(items[items.length - 1]).bind('mouseout', mouseOut);
    });
  }

  
  this.setSelectionByIndex = function(defaultSelectionIndex) {
    $(document).ready(function() {    
      selectionIndex = defaultSelectionIndex;    
      selectionValue = selectionValues[selectionIndex];
      selectionText = selectionTexts[selectionIndex];
      
      selectFunction(menuID, selectionValue, selectionText);
      $('#' + menuID).find('div').html(selectionText);
    });  
  }


  this.setSelectionByValue = function(defaultSelectionValue) {
    $(document).ready(function() {    
      selectionIndex = jQuery.inArray(defaultSelectionValue, selectionValues);
      selectionValue = selectionValues[selectionIndex];
      selectionText = selectionTexts[selectionIndex];
      
      selectFunction(menuID, selectionValue, selectionText);
      $('#' + menuID).find('div').html(selectionText);
    });  
  }


  var toggleMenu = function(event) {
    var menuClicked = false;
    var parents = $(event.target).parents();
    for(var i = 0; i < parents.length; i++) {
      if(parents[i].id == menuID) {
        menuClicked = true;
        break;
      }
    }

    if(menuClicked) {
      $('#' + menuID).find('ul').toggle();
    }
    else {
      $('#' + menuID).find('ul').hide();
    }
  }


  var select = function(event) {
    selectionIndex = $(event.target).parent().children().index($(event.target));
    selectionValue = selectionValues[selectionIndex];
    selectionText = selectionTexts[selectionIndex];
    
    selectFunction(menuID, selectionValue, selectionText);
    $('#' + menuID).find('div').html(selectionText);
  }


  // Necessary because IE only supports :hover on <a> elements.
  var mouseOver = function(event) {
    $(event.target).toggleClass('highlight');
  }


  // Necessary because IE only supports :hover on <a> elements.
  var mouseOut = function(event) {
    $(event.target).toggleClass('highlight');
  }


  $(document).ready(function() {
    $('#' + menuID).append("<ul></ul>");
    $('#' + menuID).show();

    //Attach events
    $("body").bind('click', toggleMenu);

  });
}



function toggleElement(element) {
  $(document).ready(function() {
    $("#" + element).toggle();
  });  
}



var calendarSelect = function(calID, day, month, year) {
  $('#' + calID).find('input').attr('value', day + "-" + (month + 1) + "-" + year);
  $('#' + calID).find('.toggle_button').html(day + "-" + (month + 1) + "-" + year);
}



function createCookie(name, value, days) {
  if (days) {
    var date = new Date();
    date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
    var expires = "; expires=" + date.toGMTString();
  }
  else {
    var expires = "";
  }

  document.cookie = name + "=" + value + expires + "; path=/";
}



function readCookie(name) {
  var nameEQ = name + "=";
  var ca = document.cookie.split(';');
  for(var i = 0; i < ca.length; i++) {
    var c = ca[i];
    while (c.charAt(0) == ' ') {
      c = c.substring(1, c.length);
      if (c.indexOf(nameEQ) == 0) {
        return c.substring(nameEQ.length, c.length);
      }
    }
  }
  return null;
}



var radioButtonSelect = function(fieldID, value) {
  $('#' + fieldID).attr('value', value);
}



function radioButton(formID, fieldID, clickFunction) {

  var values = new Array();
  
  this.addButton = function(value) {
    values.push(value);
    document.write("<div id='" + fieldID + "_rb" + (values.length - 1) + "' class='radiobutton'></div>");
  }


  var click = function(e) {
    $(document).ready(function() {

      var buttonIndex = 0;

      for(var i = 0; i < values.length; i++) {
        $("#" + fieldID + "_rb" + i).removeClass("radiobutton_clicked");
        if(e.target.id == fieldID + "_rb" + i) {
          buttonIndex = i;
        }
      }
      $(e.target).addClass("radiobutton_clicked");
      clickFunction(fieldID, values[buttonIndex]);
    });
  }


  $(document).ready(function() {

    for(var i = 0; i < values.length; i++) {
      if(values[i] == $('#' + fieldID).attr('value')) {
        $("#" + fieldID + "_rb" + i).addClass("radiobutton_clicked");
      }
      $("#" + fieldID + "_rb" + i).bind('click', click);
    }
  });
}



function checkbox(checkboxID, value) {

  var status = false;


  var toggleChecked = function() {
    $(document).ready(function() {
      if(status) {
        status = false;
      }
      else {
        status = true;
      }

      updateCheckbox();
    });
  }


  var updateCheckbox = function() {
    if(status) {
      $("#" + checkboxID).addClass("checked");
      $('#' + checkboxID).find('input').attr('value', value);
    }
    else {
      $("#" + checkboxID).removeClass("checked");
      $('#' + checkboxID).find('input').attr('value', "");
    }
  }


  this.setChecked = function(s) {
    status = s;
    updateCheckbox();
  }


  $(document).ready(function() {
    $("#" + checkboxID).bind("click", toggleChecked);
  });
}



var shareMenuHandler = function(menuID, selectionValue, selectionText) {
  if(selectionValue == 0) {
    delicious();
  }
  else if(selectionValue == 1) {
    facebook();
  }
  else if(selectionValue == 2) {
    googleBookmarks();
  }
  else if(selectionValue == 3) {
    mySpace();
  }
  else if(selectionValue == 4) {
    digg();
  }
}



function delicious() {
  window.open('http://del.icio.us/post?v=4;url=' + 
              encodeURIComponent(location.href) + 
              '; title=' + 
              encodeURIComponent(document.title),'');
}



function facebook() {
  window.open('http://www.facebook.com/sharer.php?u=' + 
              encodeURIComponent(location.href) + 
              '&t=' + 
              encodeURIComponent(document.title), 'sharer', 'toolbar=0, status=0, width=626, height=436');
}



function googleBookmarks() {
  window.open("http://www.google.com/bookmarks/mark?op=edit&output=popup&bkmk=" + 
              encodeURIComponent(document.location) + 
              "&title=" + 
              encodeURIComponent(document.title), "bkmk_popup", "left=" + 
              ((window.screenX || window.screenLeft) + 10) + 
              ";top=" + 
              ((window.screenY || window.screenTop) + 10) + 
              ", height=420px, width=550px, resizable=1, alwaysRaised=1");
}



function mySpace() {
  window.open('http://www.myspace.com/index.cfm?fuseaction=postto&' + 
              't=' + 
              encodeURIComponent(document.title) + 
              '&c=""&u=' + 
              encodeURIComponent(location.href) + 
              '&l=2');
}



function digg() {
  window.open('http://digg.com/submit?url=' + 
              encodeURIComponent(location.href) + 
              '&title=' + 
              encodeURIComponent(document.title) + 
              '&bodytext=&media=news&topic=business_finance', '');
}



var toggleEmailForm = function(event) {
  var formClicked = false;
  var parents = $(event.target).parents();
  for(var i = 0; i < parents.length; i++) {
    if(parents[i].id == "email_a_friend" || event.target.id == "email_a_friend_toggle") {
      formClicked = true;
      break;
    }
  }

  if(!formClicked) {
    $("#email_a_friend").hide();
  }
}



var postMailform = function(event) {
    $(document).ready(function() {
    $.post("/notify/email_ajax.htm", 
           $('#email_a_friend_form').serialize(false),
           function(data){mailformFeedback(data);}, "json");
    
    document.getElementById('email_a_friend_form').reset();
    });
}



var mailformFeedback = function(data) {

  if (data.message == "E-mail is sent.") {
    $("#error_message").html(data.message);
  }
  else {
    $("#error_message").html(data.message);
    $("#error_message").css("display", "block");
  }
}



function initZmagsThumbnails(thumbnailWidth, numThumbnails) {
  zmagsThumbnailsWidth = thumbnailWidth;
  numZmagsThumbnails = numThumbnails;
  zmagsThumbnailsTotalWidth = numZmagsThumbnails * zmagsThumbnailsWidth; 
  document.getElementById('zmags_thumbnails').style.width = zmagsThumbnailsTotalWidth + "px";
}



function scrollZmagsThumbnails(direction) {

  if(numZmagsThumbnails > 6) {
    if(direction == "left") {
      var limit = -(zmagsThumbnailsTotalWidth - (6 * zmagsThumbnailsWidth));

      zmagsThumbnailsPosition -= zmagsThumbnailsWidth;
      if(zmagsThumbnailsPosition < limit) {
        zmagsThumbnailsPosition = limit;
      }
    }

    if(direction == "right") {
      zmagsThumbnailsPosition += zmagsThumbnailsWidth;
      if(zmagsThumbnailsPosition > 0) {
        zmagsThumbnailsPosition = 0;
      }
    }
  }

  document.getElementById('zmags_thumbnails').style.left = zmagsThumbnailsPosition + "px";
}



function centerZmagsThumbnails() {
  var element = document.getElementById('zmags_thumbnails_container');
  element.style.cssFloat = "none";
  element.style.margin = "0 auto 15px auto";
  element.style.width = (zmagsThumbnailsTotalWidth - 35) + "px";
}


function initFragments(url) {
  $(document).ready(function () {
    $("#manamind_front_graph").load(url);
  });
}

function initGoogleMaps(latitude, longitude) {
  $(document).ready(function () {
    var latlng = new google.maps.LatLng(latitude, longitude);
    var myOptions = {
          zoom: 8,
          center: latlng,
          mapTypeId: google.maps.MapTypeId.ROADMAP
        };
        var map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
  });


}

