function openWindow(url,ww,wh) {
  var windowName = "infoPopup";
  var w = screen.width;
  var h = screen.height;
  var x = (w/2) - (ww/2);
  var y = (h/2) - (wh/2);
  settings = "scrollbars=yes,toolbar = no,location=no,directories=no,status=no,menubar=no,width=" + ww + ",height=" + wh +",top=" + y + ",left="+ x;
  newWindow = window.open(url, windowName, settings);
  newWindow.focus();
}

function notImplementedYet() {
  alert("This bit hasn't been written yet.\n\nTry clicking on something else.");
}

function confirmation(message,url) {
  if(confirm('Are you sure you wish to delete this ' + message +'?'))
    window.location=url;
}

function opacity(id, opacStart, opacEnd, millisec) {
    //speed for each frame
    var speed = Math.round(millisec / 100); 
    var timer = 0;

    //determine the direction for the blending, if start and end are the same nothing happens
    if(opacStart > opacEnd) {
        for(i = opacStart; i >= opacEnd; i--) {
            setTimeout("changeOpac(" + i + ",'" + id + "')",(timer * speed));
            timer++;
        }
    } else if(opacStart < opacEnd) {
        for(i = opacStart; i <= opacEnd; i++)
            {
            setTimeout("changeOpac(" + i + ",'" + id + "')",(timer * speed));
            timer++;
        }
    }
}

//change the opacity for different browsers
function changeOpac(opacity, id) {
    var object = document.getElementById(id).style;
    if(opacity > 0) {
      object.visibility = "visible";
      object.opacity = (opacity / 100);
      object.MozOpacity = (opacity / 100);
      object.KhtmlOpacity = (opacity / 100);
      object.filter = "alpha(opacity=" + opacity + ")";
    } else {
      object.visibility = "hidden";
    }
}

//Highlight a link on the page selector
function highlightPageLink(elementId,mouseIsOver) {
  var thisContainer = document.getElementById(elementId + "_linkContainer");
  if(mouseIsOver) {
    thisContainer.style.borderColor = "#a8bf7c";
    thisContainer.style.borderWidth = "1px";
    thisContainer.style.borderStyle = "solid";
  } else {
    thisContainer.style.borderWidth = "1px";
    thisContainer.style.borderColor = "white";
  }
}

//Get a dress image
function showDress(dressCode) {
  //Show image loading panel
  document.getElementById("dressImage_1").style.display = "none";
  document.getElementById("imageLoadingPanel").style.visibility = "visible";
  //Disable image next/previous buttons
  document.getElementById("prevImage_link").disabled = true;
  document.getElementById("nextImage_link").disabled = true;
  for(var c = 2; c <= totalImageCount; c++) {
    //re-hide all images,thumbnails and captions
    document.getElementById("dressImage_" + c).style.visibility = "hidden";
    document.getElementById("dressThumbnail_" + c).style.display = "none";
    document.getElementById("dressImageCaption_" + c).style.display = "none";
  }
  var firstImage = document.getElementById("dressImage_1");
  firstImage.style.visibility = "visible";
  firstImage.style.opacity = 1;
  firstImage.style.MozOpacity = 1;
  firstImage.style.KhtmlOpacity = 1;
  firstImage.style.filter = "alpha(opacity=100)";
  document.getElementById("dressThumbnail_1").style.display = "block";
  document.getElementById("dressImageCaption_1").style.display = "block";
  //reset counts to 0
  currentlyShownDress = 1;
  totalImageCount = 0;
  //Show dress navigation container
  document.getElementById("dressNavigationContainer").style.display = "block";
  //Get dress details from the web server
  getDressDescription(dressCode);
  getDressImages(dressCode);
}

function nextDressImage() {
  if(totalImageCount > 0) {
    if(currentlyShownDress < totalImageCount) {
      //Make current image div invisible and make new one visible
      switchDressImage(currentlyShownDress, currentlyShownDress + 1);
      //Switch captions
      document.getElementById("dressImageCaption_" + currentlyShownDress).style.display = "none";
      currentlyShownDress++;
      document.getElementById("dressImageCaption_" + currentlyShownDress).style.display = "block";
      //Update count field
      document.getElementById("imageCount").innerHTML = currentlyShownDress + " of " + totalImageCount;
      //Since there must be more than one dress, highlight previous image button
      document.getElementById("prevImage_link").disabled = false;
      //If we're at the last image in the set, de-highlight next image button
      if(currentlyShownDress == totalImageCount)
        document.getElementById("nextImage_link").disabled = true;
    }
  }
}

function prevDressImage() {
  if(totalImageCount > 0) {
    if(currentlyShownDress > 1) {
      //Make current image div invisible and make new one visible
      switchDressImage(currentlyShownDress, currentlyShownDress - 1);
      document.getElementById("dressImageCaption_" + currentlyShownDress).style.display = "none";
      currentlyShownDress--;
      document.getElementById("dressImageCaption_" + currentlyShownDress).style.display = "block";
      //Update count field
      document.getElementById("imageCount").innerHTML = currentlyShownDress + " of " + totalImageCount;
      //If we've gone back to the first image, de-highlight previous button
      if(currentlyShownDress == 1)
        document.getElementById("prevImage_link").disabled = true;
      //There must be at least one dress after this one, so highlight next button
      document.getElementById("nextImage_link").disabled = false;
    }
  }
}

//Switch dress images by fading in/out.  Tasty.
function switchDressImage(oldDressIndex,newDressIndex) {
  //Fade in/out thumbnails
  document.getElementById("dressThumbnail_" + oldDressIndex).style.display = "none";
  document.getElementById("dressThumbnail_" + newDressIndex).style.display = "block";
  //Fade in/out main images
  opacity("dressImage_" + oldDressIndex,100,0,600);
  opacity("dressImage_" + newDressIndex,0,100,600);
}

//Get the x/y position of a DOM element
function getXYpos(elem) {
   if (!elem) {
      return {"x":0,"y":0};
   }
   var xy={"x":elem.offsetLeft,"y":elem.offsetTop}
   var par=getXYpos(elem.offsetParent);
   for (var key in par) {
      xy[key]+=par[key];
   }
   return xy;
}

function showCalendar(fieldId,offsetX,offsetY) {
  currentCalendarDate = document.getElementById(fieldId);
  if(currentCalendarDate.value.length == 0) {
    var thisDate = new Date();
    currentCalendarDate.value = thisDate.getDay() + "/" +
                                (thisDate.getMonth() + 1) + "/" +
                                thisDate.getFullYear().toString();
  }
  coords = getXYpos(currentCalendarDate);
  //alert("X: " + coords["x"] + ", Y: " + coords["y"]);
  var dateParts = currentCalendarDate.value.split("/");
  var usDate = new Date();
  if(dateParts.length == 3)
    usDate = new Date(dateParts[1] + "/" + dateParts[0] + "/" + dateParts[2]);
  $('#calendar').datepicker('setDate',usDate);
  var cal = document.getElementById("calendar");
  if(!offsetX)
    offsetX = - 50;
  if(!offsetY)
    offsetY = -150;
  cal.style.top = coords["y"] + offsetY;
  cal.style.left = coords["x"] + offsetX;
  cal.style.display = "block";
}