// JavaScript Document

function menuhover(menuId, ImagetoHighlight)
{
  	document.getElementById(menuId).src=ImagetoHighlight;
}

function preloadImage(imagePath)
{
 	 var newImage = new Image();
 	 newImage.src = imagePath;
}

function preLoadImages()
{
preloadImage('/assets/copyright.jpg');
preloadImage('/assets/header.jpg');
preloadImage('/assets/menubox.jpg');
preloadImage('/assets/bulletpoint.jpg');
preloadImage('/assets/Footer/tv_grey.jpg');
preloadImage('/assets/Footer/sat_grey.jpg');
preloadImage('/assets/Footer/mm_grey.jpg');
preloadImage('/assets/Footer/impact_grey.jpg');
preloadImage('/assets/Footer/security_grey.jpg');
preloadImage('/assets/Footer/aspire_grey.jpg');
preloadImage('/assets/Footer/riggers_grey.jpg');
preloadImage('/assets/Footer/webshop_grey.jpg');
preloadImage('/assets/Footer/tv_color.jpg');
preloadImage('/assets/Footer/sat_color.jpg');
preloadImage('/assets/Footer/mm_color.jpg');
preloadImage('/assets/Footer/impact_color.jpg');
preloadImage('/assets/Footer/security_color.jpg');
preloadImage('/assets/Footer/aspire_color.jpg');
preloadImage('/assets/Footer/riggers_color.jpg');
preloadImage('/assets/Footer/webshop_color.jpg');	
}
   
function showHide(elementId)
{
	var displayElement = document.getElementById(elementId);
        if (displayElement.style.display == 'none')
        {
          displayElement.style.display='block';
        }
        else
        {
          displayElement.style.display='none';
        }
}

var currentDiv = null;

function showdiv(Id)
{ 
        if (currentDiv != null && currentDiv != Id)
        {
          hideDiv(currentDiv);
        }
  	
        if (currentDiv != Id)
        {
          showDiv(Id);
	  currentDiv = Id;
        }
}

function showDiv(Id)
{
  document.getElementById(Id).style.display = 'block';
}

function hideDiv(Id)
{
  document.getElementById(Id).style.display = 'none';
}

function clearTextbox(textboxId, defaultMessage)
{
  var textbox;
  textbox = document.getElementById(textboxId)
  if (textbox != null)
  {
    if (textbox.value == defaultMessage)
    {
      textbox.value = "";
    }
  }
}

function defaultTextbox(textboxId, defaultMessage)
{
  var textbox;
  textbox = document.getElementById(textboxId)
  if (textbox != null)
  {
    if (textbox.value == "")
    {
      textbox.value = defaultMessage;
    }
  }
}

function verify(formObj)
{
  var message;
  var emptyFields = "";
  var errors = "";
  var invalidFields = "";
  
  for (var i = 0; i < formObj.length; i++)
  {
    var formElement = formObj.elements[i];
    if (((formElement.type == "text") || (formElement.type == "textarea")))
    {
      if (!formElement.optional)
      {
        if ((formElement.value == null) || (formElement.value == ""))
        {
          emptyFields += "\n          " + formElement.name;
          continue;
        }

        if (formElement.numeric || (formElement.min != null) || (formElement.max != null))
        {
          var value = parseFloat(formElement.value);
          if (isNaN(value) ||
		  ((formElement.min != null) && (value < formElement.min)) ||
		  ((formElement.max != null) && (value > formElement.max)))
          {
            errors += "- " + formElement.name + " must be a number";
            if (formElement.min != null)
            {
              errors += " that is greater than " + formElement.min;
            }
            if (formElement.max != null && formElement.min != null)
            {
              errors += " and less than " + formElement.max;
            }
            else if (formElement.max != null)
            {
              errors += " that is less than " + formElement.max;
            }
            errors += ".\n";
          }
        }
        
      }
      
      if (formElement.pattern != null)
      {
        if (formElement.value.search(formElement.pattern) == -1)
        {
          invalidFields += formElement.name + " must be " + formElement.patternDescription + "\n";
        }
      }
    }
  }

  if (!emptyFields && !errors && !invalidFields)
  {
    return true;
  }

  message  = "______________________________________________________\n\n";
  message += "The form was not submitted because of the following error(s).\n";
  message += "Please correct these error(s) and re-submit.\n";
  message += "______________________________________________________\n\n";

  if (emptyFields)
  {
    message += "- The following required field(s) are empty:" + emptyFields + "\n";
    if (errors)
    {
      message += "\n";
    }
  }

  if (errors)
  {
    message += errors;
    if (invalidFields)
    {
      message += "\n";
    }
  }
  
  if (invalidFields)
  {
    message += invalidFields;
  }
  
  alert(message);

  return false;
}


/////////////////////////////////
// Image Fades / Div Rotations //
/////////////////////////////////
var totalObjects = 0;
var currentIndex = -1;
var fadeInActive = false;
var fadeOutActive = false;
var updateImagesTimeout = null;
var opacity = 0;

var displayTime = 5000;
var fadeTime = 1000;

var imageArray = new Array(0);
var divArray = new Array(0);

function setupFades(newTotalObjects, newDisplayTime, newFadeTime)
{
  totalObjects = newTotalObjects;
  displayTime = newDisplayTime;
  fadeTime = newFadeTime;
}

function addImage(imagePrefix)
{
  imageArray.push(imagePrefix);
}

function addDiv(divPrefix)
{
  divArray.push(divPrefix);
}

function hideObjects()
{
  var currentDiv;
  var div;

  if (currentIndex != -1)
  {
    for (div in divArray)
    {
      currentDiv = document.getElementById(divArray[div] + currentIndex);
      currentDiv.style.display = 'none';
    }
  }

  fadeOutActive = true;
  updateImages();
}

function showObjects()
{
  var currentImage;

  if (currentIndex != -1)
  {
    for (image in imageArray)
    {
      currentImage = document.getElementById(imageArray[image] + currentIndex);
      currentImage.style.display = 'none';
    }
  }
    
  currentIndex += 1;
  if (currentIndex >= totalObjects)
  {
    currentIndex = 0;
  }

  opacity = 0;
  for (image in imageArray)
  {
    currentImage = document.getElementById(imageArray[image] + currentIndex);
    currentImage.style.display = 'block';
  }

  fadeInActive = true;
  updateImages();
}

function showDivs()
{
  var div;
  var currentDiv;
    
  for (div in divArray)
  {
    currentDiv = document.getElementById(divArray[div] + currentIndex);
    currentDiv.style.display = 'block';
  }
}

function updateImages()
{
  var currentImage;

  if (fadeOutActive)
  {
    if (opacity <= 0)
    {
      fadeOutActive = false;
      clearTimeout(updateImagesTimeout);
      setTimeout(showObjects, 0);
    }
    else
    {
      opacity -= 5;
      for (image in imageArray)
      {
        currentImage = document.getElementById(imageArray[image] + currentIndex);
        currentImage.style.opacity = (opacity / 100);
        currentImage.style.filter = 'alpha(opacity=' + opacity + ')';
      }
      updateImagesTimeout = setTimeout(updateImages, (fadeTime / 20));
    }
  }
  else if (fadeInActive)
  {
    if (opacity >= 100)
    {
      fadeInActive = false;
      clearTimeout(updateImagesTimeout);
      showDivs();
      setTimeout(hideObjects, displayTime);
    }
    else
    {
      opacity += 5;
      for (image in imageArray)
      {
        currentImage = document.getElementById(imageArray[image] + currentIndex);
        currentImage.style.opacity = (opacity / 100);
        currentImage.style.filter = 'alpha(opacity=' + opacity + ')';
      }

      updateImagesTimeout = setTimeout(updateImages, (fadeTime / 20));
    }
  }
}
