var banner_image_files;
var banner_image_files_loaded = false;
var num_banner_images = 0;
var fade_timer;
var opacity_delta = 0.02; //0~1.0
var fade_speed = 50; //ms

function load_banner_images_into_javascript(filenames)
{
 if (false == banner_image_files_loaded)
 {
  //alert(filenames);
  //banner_image_files = filenames.split(",");
  banner_image_files = decode_banner_image_filenames(filenames);
  start_timer();
  num_banner_images = banner_image_files.length;
  banner_image_files_loaded = true;
 }
}

function start_timer()
{
  //Start timer to invoke image_change() every 7 seconds.
  timer = setInterval("image_banner_change()", 7000);
}

function image_banner_change()
{
 var random_panel_number=Math.floor(Math.random()*3)+1;
 var random_image_filename = banner_image_files[Math.floor(Math.random()*num_banner_images)];

 //Ensure we don't have duplicate images in banner!
/* var other_panel_number = random_panel_number%3+1;
 var other_other_panel_number = other_panel_number%3+1;
 var other_image_a = document.getElementById("test_image_banner"+other_panel_number).src;
 var other_image_b = document.getElementById("test_image_banner"+other_other_panel_number).src;
*/
 var attempts = 1;

 while (!banner_image_is_different(random_image_filename) && (attempts < 10))
 {
  random_image_filename = banner_image_files[Math.floor(Math.random()*num_banner_images)];
  attempts++;
 }

 if (attempts < 10)
 {
  swap_image("test_image_banner"+random_panel_number, random_image_filename);
 }
 else
 {
  //Give up on changing banner image.
 }
}

function banner_image_is_different(new_image)
{
 var panel1_image = document.getElementById("test_image_banner1").src;
 var panel2_image = document.getElementById("test_image_banner2").src;
 var panel3_image = document.getElementById("test_image_banner3").src;

 var is_different = (new_image != panel1_image && new_image != panel2_image && new_image != panel3_image) ? true : false;

 return is_different;
}

function swap_image(img_id, new_img_src)
{
 fade_timer = setInterval("fade_transition(\""+img_id+"\",\""+new_img_src+"\")", fade_speed);
}

function fade_transition(img_id, new_img_src)
{
 var current_style = document.getElementById(img_id).style;
 var new_opacity = parseFloat(current_style.opacity) - opacity_delta;

 if (new_opacity < 0.1)
 {
  clearTimeout(fade_timer);
  current_style.opacity = "0.0"; //CSS 3
  current_style.filter = "alpha(opacity=0)"; //For MSIE

  //replace old image (and alt text) with new image
  document.getElementById(img_id).src = new_img_src;
  document.getElementById(img_id).alt = new_img_src;

  //now fade in
  fade_timer = setInterval("fade_transition2(\""+img_id+"\")", fade_speed);
 }
 else
 {
  current_style.opacity = ""+new_opacity; //CSS 3
  current_style.filter = "alpha(opacity="+(new_opacity*100)+")"; //For MSIE
 }
}


function fade_transition2(img_id)
{
 var current_style = document.getElementById(img_id).style;
 var new_opacity = parseFloat(current_style.opacity) + opacity_delta;

 if (new_opacity > 1.0)
 {
  clearTimeout(fade_timer);
  current_style.opacity = "1.0"; //CSS 3
  current_style.filter = "alpha(opacity=100)"; //For IE
 }
 else
 {
  current_style.opacity = ""+new_opacity; //CSS 3
  current_style.filter = "alpha(opacity="+(new_opacity*100)+")"; //For MSIE
 }
}

function decode_banner_image_filenames(encoded_filenames_string)
{
 var key = "SASAmatsu";
 var char_to_shift = 0;
 var shift = 0;
 var decoded_filenames_array = new Array();
 var decoded_filenames_string = "";
/*
 decoded_filenames_array.push("http://www.sasamatsu.com/beta/images/banner/banner_image_2_2.jpg","http://www.sasamatsu.com/beta/images/banner/banner_image_2_0.jpg","http://www.sasamatsu.com/beta/images/banner/banner_image_1_0.jpg","http://www.sasamatsu.com/beta/images/banner/banner_image_0_0.jpg","http://www.sasamatsu.com/beta/images/banner/banner_image_2_1.jpg");
*/

 for (var i=0; i<encoded_filenames_string.length; i++)
 {
  char_to_shift = encoded_filenames_string.charCodeAt(i) - 35;
  shift = (key.charAt(i % 9)).charCodeAt() - 35;
  if (shift > char_to_shift) char_to_shift += 92;
  decoded_char = String.fromCharCode((char_to_shift - shift) % 92 +35);
  decoded_filenames_string += decoded_char;
 }

 decoded_filenames_array = decoded_filenames_string.split(",");
 return decoded_filenames_array;
}
