var slideshow_timer;
var countdown_seconds = 0;
var banner_timer;
var banner_index = 0;
var banner_seconds = 0;

function hide_image()
{
  var darken=document.getElementById("darken");
  if (darken) {
    darken.style.display='none';
  }
  var darken_table=document.getElementById("darken_table");
  if (darken_table) {
    darken_table.style.visibility='hidden';
  }
  document.body.style.overflow='auto';
}

function display_image()
{
  var darken=document.getElementById("darken");
  var darken_image=document.getElementById("darken_image");
  if (darken_image) {
    var x = browserWindowWidth()-100;
    var y = browserWindowHeight()-100;
    var w = darken_image.width;
    var h = darken_image.height;
    if (w > x) {
      h = h * (x / w);
      w = x;
      if (h > y) {
        w = w * (y / h);
        h = y;
      }
    } else if (h > y) {
      w = w * (y / h);
      h = y;
      if (w > x) {
        h = h * (x / w);
        w = x;
      }
    }
    darken_image.style.width=w+'px';
    darken_image.style.height=h+'px';
  }
  var darken_table=document.getElementById("darken_table");
  if (darken_table) {
    darken_table.style.visibility='visible';
  }
}

function show_image(product_number,title,prev_product,next_product,passed_forms)
{
  var str=new String();
  var darken=document.getElementById("darken");
  darken.style.display='';
  darken.style.left=browserScrollX();
  darken.style.top=browserScrollY();
  document.body.style.overflow='hidden';
  str ="<table id='darken_table' style='visibility: hidden; width: 100%; height: 100%; cursor: pointer;'>";
  str+="  <tr>";
  str+="    <td align=center valign=center nowrap>";
  str+="      <table style='background: black; border: 1px solid #808080;' cellspacing=16>";
  str+="        <tr>";
  str+="          <td colspan=2>";
  str+="            <img id='darken_image' onload='display_image();' style='border: 1px solid #404040;' src='/photos/products/"+product_number+"/0001.jpg'>";
  str+="          </td>";
  str+="        </tr>";
  str+="        <tr>";
  str+="          <td align=left>";
  str+="            <span style='color: white;'>"+title+"</span>";
  str+="          </td>";
  str+="          <td align=right>";
  str+="            <img src=/Themes/Gallery/close.gif>";
/*
  str+="          <td align=center>";
  str+="            <span onclick=\"go('/cgi-bin/pgmain?Faction=GALLERY&Findex='+document.sciform.Findex.value+'&file=products&value='+prev_product+passed_forms);\">Previous</span>";
  str+="            Play/Pause";
  str+="            <span onclick=\"go('/cgi-bin/pgmain?Faction=GALLERY&Findex='+document.sciform.Findex.value+'&file=products&value='+next_product+passed_forms);\">Next</span>";
 */
  str+="          </td>";
  str+="        </tr>";
  str+="      </table>";
  str+="    </td>";
  str+="  </tr>";
  str+="</table>";
  darken.innerHTML=str;
  //window.open('/cgi-bin/gallery?src=/photos/products/'+product_number+'/0001.jpg','_blank','scrollbars=no,resizable=no,status=no');
}

function update_slideshow()
{
  var obj = document.getElementById('countdown');
  if (obj) {
    if (slideshow_timer) {
      obj.innerHTML=countdown_seconds+'s';
    } else {
      obj.innerHTML='';
    }
  }
  var obj = document.getElementById('sstext');
  if (obj) {
    if (slideshow_timer) {
      obj.innerHTML='Pause';
    } else {
      obj.innerHTML='Play';
    }
  }
}

function countdown()
{
  // update label
  countdown_seconds--;
  if (countdown_seconds) {
    window.clearTimeout(slideshow_timer);
    slideshow_timer=window.setTimeout('countdown()',1000);
    update_slideshow();
  } else {
    document.sciform.value.value=document.sciform.Fnext.value;
    submit_sciform();
  }
}

function check_slideshow()
{
  if (document.sciform.Fslideshow && parseInt(document.sciform.Fslideshow.value)) {
    countdown_seconds=parseInt(document.sciform.Fslideshow.value);
    slideshow_timer=window.setTimeout('countdown()',1000);
  } else {
    // disable it
    if (slideshow_timer) {
      window.clearTimeout(slideshow_timer);
      slideshow_timer=null;
    }
  }
  update_slideshow();
}

function stop_slideshow()
{
  if (document.sciform.Fslideshow) {
    document.sciform.Fslideshow.value='0';
    check_slideshow();
  }
}

function toggle_slideshow()
{
  if (document.sciform.Fslideshow) {
    if (parseInt(document.sciform.Fslideshow.value)) {
      document.sciform.Fslideshow.value='0';
    } else {
      document.sciform.Fslideshow.value='5';
    }
    check_slideshow();
  }
}

add_onload("check_slideshow();");

function is_panoramic()
{
  var aspect=real(document.sciform.Dproducts__form_factor_width.value)/real(document.sciform.Dproducts__form_factor_height.value);
  if (aspect>0.5 && aspect<2.0) {
    return false;
  }
  return true;
}

function invalid_size(width,height)
{
  var w=real(width);
  var h=real(height);
  // check minimum
  if (is_panoramic()) {
    if (Math.max(w,h)<30.0) {
      alert('The long dimension must be at least 30 inches.');
      return true;
    }
  } else {
    if (Math.max(w,h)<20.0) {
      alert('The long dimension must be at least 20 inches.');
      return true;
    }
  }
  // check maximum
  if (Math.max(w,h)>real(document.sciform.Dproducts__maximum_size.value)) {
    alert('The long dimension must be no more than '+parseInt(document.sciform.Dproducts__maximum_size.value)+' inches.');
    return true;
  }
  return false;
}

function purchase_price()
{
  var w = parseInt(document.sciform.Dpurchase__width.value)
  var h = parseInt(document.sciform.Dpurchase__height.value)
  var qty = parseInt(document.sciform.Dpurchase__quantity.value);
  var units = real(0.0);
  if (!qty) {
    qty=1;
  }
  units+=real(w);
  units+=real(h);
  if (is_panoramic()) {
    units+=Math.min(w,h);
  }
  document.sciform.Dpurchase__rate.value=format_number(units*5.0,2);
  document.sciform.Dpurchase__price.value=format_number(qty*units*5.0,2);
  document.sciform.Dpurchase__price_string.value='$'+format_number(qty*units*5.0,2);
}

function calc_purchase()
{
  var w = parseInt(document.sciform.Dpurchase__width.value)
  var h = parseInt(document.sciform.Dpurchase__height.value)
  if (w && h) {
    purchase_price();
  }
  else if (w) {
    document.sciform.Dpurchase__height.value=format_number(document.sciform.Dpurchase__width.value*document.sciform.Dproducts__form_factor_height.value/document.sciform.Dproducts__form_factor_width.value,0);
    h = parseInt(document.sciform.Dpurchase__height.value)
    purchase_price();
  }
  else if (h) {
    document.sciform.Dpurchase__width.value=format_number(document.sciform.Dpurchase__height.value*document.sciform.Dproducts__form_factor_width.value/document.sciform.Dproducts__form_factor_height.value,0);
    w = parseInt(document.sciform.Dpurchase__width.value)
    purchase_price();
  }
  if (!w || !h || invalid_size(w,h)) {
    document.sciform.Dpurchase__width.value='';
    document.sciform.Dpurchase__height.value='';
    document.sciform.Dpurchase__rate.value='';
    document.sciform.Dpurchase__price.value='';
    document.sciform.Dpurchase__price_string.value='';
  }
  document.sciform.Dpurchase__price_string.onchange();
}

function calc_cart(record_number)
{
  var rate = format_number(eval('document.sciform.Dcart_'+record_number+'_rate.value'),2);
  var quantity = format_number(eval('document.sciform.Dcart_'+record_number+'_quantity.value'),0);
  var price = eval('document.sciform.Dcart_'+record_number+'_price');
  price.value=format_number(rate*quantity,2);
  price.onchange(); // draw it
}

// var time_to_fade = 1250.0;
var time_to_fade = 625.0;


function animate_fade(lastTick, eid)
{
  var cur_tick = new Date().getTime();
  var elapsed_ticks = cur_tick - lastTick;

  var element = document.getElementById(eid);

  if (element.fade_time_left <= elapsed_ticks) {
    element.style.opacity = element.fade_state == 1 ? '1' : '0';
    element.style.filter = 'alpha(opacity = ' + (element.fade_state == 1 ? '100' : '0') + ')';
    element.fade_state = element.fade_state == 1 ? 2 : -2;
    if (element.fade_state == -2) {
      // fully faded out, advance to the next image
      element.src=banner_array[banner_index];
      fade_transition('banner'); // and fade it in
    } else {
      // start the timer
      banner_timer=window.setTimeout('cycle_banner()',5000);
    }
    return;
  }

  element.fade_time_left -= elapsed_ticks;
  var new_opacity_value = element.fade_time_left/time_to_fade;
  if (element.fade_state == 1)
    new_opacity_value = 1 - new_opacity_value;

  element.style.opacity = new_opacity_value;
  element.style.filter = 'alpha(opacity = ' + (new_opacity_value*100) + ')';

  setTimeout("animate_fade(" + cur_tick + ",'" + eid + "')", 33);
}

function fade_transition(eid)
{
  var element = document.getElementById(eid);
  if (element == null)
    return;

  if (element.fade_state == null) {
    if (element.style.opacity == null ||
       element.style.opacity == '' ||
       element.style.opacity == '1') {
      element.fade_state = 2;
      // fade in
    } else {
      element.fade_state = -2;
      // fade out
    }
  }

  if (element.fade_state == 1 || element.fade_state == -1) {
    element.fade_state = element.fade_state == 1 ? -1 : 1;
    element.fade_time_left = time_to_fade - element.fade_time_left;
  } else {
    element.fade_state = element.fade_state == 2 ? -1 : 1;
    element.fade_time_left = time_to_fade;
    setTimeout("animate_fade(" + new Date().getTime() + ",'" + eid + "')", 33);
  }
}

function cycle_banner()
{
  var banner = document.getElementById('banner');
  if (!banner) {
    // silently abort
    return;
  }
  if (!banner_array.length) {
    banner.style.display='none';
  } else {
    if (banner_index<0) {
      banner_index=0;
      banner.src=banner_array[banner_index];
      if (banner_array.length>1) {
        banner_timer=window.setTimeout('cycle_banner()',5000);
      }
    } else {
      banner_index++;
      if (banner_index>=banner_array.length) {
        banner_index=0;
      }
      fade_transition('banner');
    }
  }
}

function init_banner()
{
  banner_index=-1; // will advance to 0, and show the first banner if possible
  cycle_banner();
}

add_onload('init_banner();');

