function update_remaining_time(spanId, targetDay, mode)
{
  var updateFrequency = 1;
  var today = (new Date()).getTime();
  //var today = (new Date());

  //var isComing = targetDay.getTime() > today.getTime();
  var isComing = targetDay > today;
  //var t1 = isComing ? today : targetDay;
  //var t2 = isComing ? targetDay : today;

  var t1 = new Date();
  t1.setTime(Math.min(today, targetDay));
  var t2 = new Date();
  t2.setTime(Math.max(today, targetDay));

  var date1 = t1.getDate();
  var month1 = t1.getMonth();
  var year1 = t1.getYear();
  var hour1 = t1.getHours();
  var min1 = t1.getMinutes();
  var sec1 = t1.getSeconds();

  var date2 = t2.getDate();
  var month2 = t2.getMonth();
  var year2 = t2.getYear();
  var hour2 = t2.getHours();
  var min2 = t2.getMinutes();
  var sec2 = t2.getSeconds();

  var years=0, months=0, days=0, hours=0, mins=0, secs=0;
  years = year2 - year1;
  months = month2 - month1;
  days = date2 - date1;
  hours = hour2 - hour1;
  mins = min2 - min1;
  secs = sec2 - sec1; 

  if (secs < 0) { secs += 60; mins--; }
  if (mins < 0) { mins += 60; hours--; }
  if (hours < 0) { hours += 24; days--; }
  if (days < 0) { days += 31; months--; }
  if (months < 0) { months += 12; years--; }

  if (document.getElementById(spanId)) {
   var out = buildTimeSpan(mode, isComing, years, months, days, hours, mins, secs);
   document.getElementById(spanId).innerHTML = out;
  }

  setTimeout("update_remaining_time('" + spanId + "', " + eval(targetDay) + ", '" + mode + "')", updateFrequency);
}

function buildTimeSpan(mode, isComing, years, months, days, hours, mins, secs) {
  var timeSlice = "";

  if (years > 0) { timeSlice += buildTimeUnit(years, "year") + " "; }
  if (years > 0 || months > 0) timeSlice += buildTimeUnit(months, "month") +  " ";
  if (years > 0 || months > 0 || days > 0) timeSlice += buildTimeUnit(days, "day") +  " and ";

  timeSlice += buildTimeUnit(hours, "") + ":" +
              buildTimeUnit(mins, "") + ":" +
              buildTimeUnit(secs, "");

  var output;
  if (mode == "baby") {
    if (isComing) {
      output = "Our new baby boy will arrive in " + timeSlice + "...";
    } else {
      output = "Ian has joined our life for " + timeSlice + "...";
    }
  } else {
    if (isComing) {
      output = "See you at our wedding in " + timeSlice + "...";
    } else {
      output = "Yay, we've been married for " + timeSlice + "...";
    }
  }
  return output;
}

function buildTimeUnit(value, unit) {
  var zero = (unit == "" && value < 10) ? "0" : "";
  var word = "<span class='cd_val'>" + zero + value + "</span>";
  if (unit != "") {
    word += " " + unit;
    if (value > 1) {
      word += "s";
    }
  }
  return word;
}

function start_countdown(spanId, targetDate, mode) {
  var targetDay = (new Date(targetDate)).getTime();
  //var targetDay = (new Date(targetDate));
  update_remaining_time(spanId, targetDay, mode);
}

ix_array = new Array();
ix_array["wed_hi"] = 0;
ix_array["wed_low"] = 0;

span_array = new Array();
span_array["wed_hi"] = "pics/wed/hi";
span_array["wed_low"] = "pics/wed/low";

DURATION = 4000;
pic_ix = 0;
slide_pics = new Array();
slide_pics[pic_ix++] = "DSC_8338.jpg";
slide_pics[pic_ix++] = "DSC_8353.jpg";
slide_pics[pic_ix++] = "DSC_8364.jpg";
slide_pics[pic_ix++] = "DSC_8344.jpg";
slide_pics[pic_ix++] = "DSC_8410.jpg";
slide_pics[pic_ix++] = "DSC_8373.jpg";
slide_pics[pic_ix++] = "DSC_8394.jpg";
slide_pics[pic_ix++] = "DSC_8397.jpg";
slide_pics[pic_ix++] = "DSC_8427.jpg";
slide_pics[pic_ix++] = "DSC_8302.jpg";
slide_pics[pic_ix++] = "DSC_8424.jpg";
slide_pics[pic_ix++] = "pic023.jpg";

SLIDE_STATUS = "slide_status";
SLIDE_SPAN = "slide";
slide_status_array = new Array();
slide_status_array[0] = "[Stop]";
slide_status_array[2] = "[Fastest]";
slide_status_array[3] = "[Fast]";
slide_status_array[4] = "[Normal]";
slide_status_array[5] = "[Slow]";
slide_status_array[6] = "[Slowest]";

bride_ix = 0;
bride_slide_pics = new Array();
bride_slide_pics[bride_ix++] = "19780400.jpg";
bride_slide_pics[bride_ix++] = "19790126.jpg";
bride_slide_pics[bride_ix++] = "19790700.jpg";
bride_slide_pics[bride_ix++] = "19801200.jpg";
bride_slide_pics[bride_ix++] = "19810126.jpg";
bride_slide_pics[bride_ix++] = "19820000a.jpg";
bride_slide_pics[bride_ix++] = "19820000b.jpg";
bride_slide_pics[bride_ix++] = "19840300.jpg";
bride_slide_pics[bride_ix++] = "19850000.jpg";
bride_slide_pics[bride_ix++] = "19860000.jpg";
bride_slide_pics[bride_ix++] = "19890000.jpg";
bride_slide_pics[bride_ix++] = "19930000.jpg";
bride_slide_pics[bride_ix++] = "19950000.jpg";
bride_slide_pics[bride_ix++] = "19960414.jpg";
bride_slide_pics[bride_ix++] = "19960530b.jpg";
bride_slide_pics[bride_ix++] = "19960800.jpg";
bride_slide_pics[bride_ix++] = "19980000.jpg";
bride_slide_pics[bride_ix++] = "19980727.jpg";
bride_slide_pics[bride_ix++] = "20000000.jpg";
bride_slide_pics[bride_ix++] = "20020000.jpg";
bride_slide_pics[bride_ix++] = "20030500.jpg";

groom_ix = 0;
groom_slide_pics = new Array();
groom_slide_pics[groom_ix++] = "19770000.jpg";
groom_slide_pics[groom_ix++] = "19770925.jpg";
groom_slide_pics[groom_ix++] = "19780924.jpg";
groom_slide_pics[groom_ix++] = "19791019_sentosa.jpg";
groom_slide_pics[groom_ix++] = "19801006_2.jpg";
groom_slide_pics[groom_ix++] = "19820700.jpg";
groom_slide_pics[groom_ix++] = "19840801.jpg";
groom_slide_pics[groom_ix++] = "19851227.jpg";
groom_slide_pics[groom_ix++] = "19870700h.jpg";
groom_slide_pics[groom_ix++] = "19890720.jpg";
groom_slide_pics[groom_ix++] = "19910000.jpg";
groom_slide_pics[groom_ix++] = "19920000b.jpg";
groom_slide_pics[groom_ix++] = "19930808.jpg";
groom_slide_pics[groom_ix++] = "19940000.jpg";
groom_slide_pics[groom_ix++] = "19940600_bhk.jpg";
groom_slide_pics[groom_ix++] = "19941022.jpg";
groom_slide_pics[groom_ix++] = "19970711.jpg";
groom_slide_pics[groom_ix++] = "19980912.jpg";
groom_slide_pics[groom_ix++] = "19981006.jpg";
groom_slide_pics[groom_ix++] = "20010524.jpg";
groom_slide_pics[groom_ix++] = "20010526.jpg";

wed_ix = 0;
wed_pics = new Array();
wed_pics[wed_ix++] = "pic001.jpg";
wed_pics[wed_ix++] = "pic001a.jpg";
wed_pics[wed_ix++] = "pic001b.jpg";
wed_pics[wed_ix++] = "pic002a.jpg";
wed_pics[wed_ix++] = "pic002b.jpg";
wed_pics[wed_ix++] = "pic004.jpg";
wed_pics[wed_ix++] = "pic005.jpg";
wed_pics[wed_ix++] = "pic006.jpg";
wed_pics[wed_ix++] = "pic006a.jpg";
wed_pics[wed_ix++] = "pic006b.jpg";
wed_pics[wed_ix++] = "pic007.jpg";
wed_pics[wed_ix++] = "pic008.jpg";
wed_pics[wed_ix++] = "pic009.jpg";
wed_pics[wed_ix++] = "pic010.jpg";
wed_pics[wed_ix++] = "pic011.jpg";
wed_pics[wed_ix++] = "pic012.jpg";
wed_pics[wed_ix++] = "pic013.jpg";
wed_pics[wed_ix++] = "pic014.jpg";
wed_pics[wed_ix++] = "pic014a.jpg";
wed_pics[wed_ix++] = "pic015.jpg";
wed_pics[wed_ix++] = "pic016.jpg";
wed_pics[wed_ix++] = "pic017a.jpg";
wed_pics[wed_ix++] = "pic018.jpg";
wed_pics[wed_ix++] = "pic019.jpg";
wed_pics[wed_ix++] = "pic020.jpg";
wed_pics[wed_ix++] = "pic021.jpg";
wed_pics[wed_ix++] = "pic022.jpg";
wed_pics[wed_ix++] = "pic023.jpg";
wed_pics[wed_ix++] = "pic024.jpg";

function update_slide_status() {
  slide_status_ix = DURATION / 1000;
  if(slide_status_ix > 6)
  	slide_status_ix = 6;
  if(document.getElementById(SLIDE_STATUS)) {
    document.getElementById(SLIDE_STATUS).innerHTML = slide_status_array[slide_status_ix];
  }
}

function make_faster() {
  if(DURATION > 2000) {
  	DURATION -= 1000;
	update_slide_status();
  }
}

function make_slower() {
  if(DURATION <= 6000) {
    DURATION += 1000;
	update_slide_status();
  }
}

function make_stop() {
  DURATION = 0;
  update_slide_status();
}

function make_play() {
  DURATION = 4000;
  update_slide_status();
}

function update_pic(span_id) {

  interval_duration = DURATION;
  callback = "update_pic('" + span_id + "')";
  
  if(span_id != 'slide' && span_id != 'wed_pics')
  	interval_duration = 4000;
	
  if(interval_duration == 0) {
    setTimeout(callback, 4000);
	return;
  }

  pic_array = get_pic_array(span_id);   
  if(pic_array != null) {
  	load_pic(span_id, pic_array);

	pic_index = get_pic_ix(span_id);
    pic_index++;
	set_pic_ix(span_id, pic_index);

	if(pic_index >= pic_array.length) {
  	  pic_index = 0;
	  set_pic_ix(span_id, pic_index);
    }
  }
  
  setTimeout(callback, interval_duration);
}

function load_pic(span_id, pic_array) {
  // only called from index.html
  pic_index = get_pic_ix(span_id);

  /*
  if(init_load == 1) {
  	if(pic_index >= pic_array.length) {		
	  pic_index = 0;
	  set_pic_ix(span_id, pic_index);
    }
  	DURATION = 3000;
  }
  */

  pic_html = "<img src='pics/" + span_id + "/" + pic_array[pic_index] + "'/>"; 
  if(document.getElementById(span_id))
    document.getElementById(span_id).innerHTML = pic_html;
}

function get_pic_array(span_id) {
  if(span_id == 'slide')
  	return slide_pics;
  else if(span_id == 'bride_slide')
  	return bride_slide_pics;
  else if(span_id == 'groom_slide')
  	return groom_slide_pics;
  else if(span_id == 'wed_pics')
  	return wed_pics;
  return null;
}

function get_pic_ix(span_id) {
  if(span_id == 'slide')
  	return pic_ix;
  else if(span_id == 'bride_slide')
  	return bride_ix;
  else if(span_id == 'groom_slide')
  	return groom_ix;
  else if(span_id == 'wed_pics')
  	return wed_ix;
  else
  	return 0;
}

function set_pic_ix(span_id, new_ix) {
  if(span_id == 'slide')
  	pic_ix = new_ix;
  else if(span_id == 'bride_slide')
  	bride_ix = new_ix
  else if(span_id == 'groom_slide')
  	groom_ix = new_ix
  else if(span_id == 'wed_pics')
  	wed_ix = new_ix
}

function start_slideshow() {
  update_pic(SLIDE_SPAN);
}

function display_slideshow() {
  pic_ix = 0;
  DURATION = 4000;
}


function start_storyshow() {  
  display_storyshow();
  update_pic('bride_slide');
  update_pic('groom_slide');
}

function display_storyshow() { 
  bride_ix = 0;
  groom_ix = 0;
  DURATION = 4000;
}

function start_wedshow() {
  update_pic('wed_pics');
}

function display_wedshow() {
  wed_ix=0;
  DURATION = 4000;
}


