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) {
  var e = document.getElementById(element);
  
  if (e.style.display != "block") {
    e.style.display = "block";
  }
  else {
    e.style.display = "none";  
  }
}



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);
	});
}
