function shiftSnapshot(gigapan_id, n) {
	var f = document.getElementById("edit_gigapan_snapshot_id_" + gigapan_id);
	var snapshotPositionText = document.getElementById("snapshot_position_" + gigapan_id);
	var p = document.getElementById("snapshot_gigapan_id_" + gigapan_id);
	var snapshotKeys = eval("snapshotKeys_" + gigapan_id);
	var i = eval("snapshotPosition_" + gigapan_id);

	if(! snapshotKeys || ! f || ! snapshotPositionText || ! p)
		return false;

	if(! i)
		i = 0;

	if(snapshotKeys[i + n]) {
		f.value = snapshotKeys[i + n][0];
		p.src = snapshotKeys[i + n][1];
		eval("snapshotPosition_" + gigapan_id + " += " + n);
	}

   var numSnapshots = snapshotKeys.length;
   var selectedPosition = (snapshotKeys.length <= 0) ? 0 : eval("snapshotPosition_" + gigapan_id) + 1;
   snapshotPositionText.innerHTML = selectedPosition + " of " + numSnapshots;

	return true;
}

function nextSnapshot(gigapan_id) {
	return shiftSnapshot(gigapan_id, 1);
}

function previousSnapshot(gigapan_id) {
	return shiftSnapshot(gigapan_id, -1);
}

function includeJavascript(script_filename) {
	var html_doc = document.getElementsByTagName('head').item(0);
	var js = document.createElement('script');
	js.setAttribute('language', 'javascript');
	js.setAttribute('type', 'text/javascript');
	js.setAttribute('src', script_filename);
	html_doc.appendChild(js);
	return false;
}

function initializeGigapanDisplayWidgetMap() {
	includeJavascript("/js/crosshairMapControl.js");
	includeJavascript("/js/latLongFromToMap.js");
}

function initializeGigapanDisplayWidget(gigapan_id, snapshot_id)
   {

   // DH - Map has been moved to placementControls
   // initializeGigapanDisplayWidgetMap();

   var p = document.getElementById("snapshot_gigapan_id_" + gigapan_id);
   var f = document.getElementById("edit_gigapan_snapshot_id_" + gigapan_id);
   var c = eval("snapshotKeys_" + gigapan_id);

   var j = 0;
   for(var i = 0; i < c.length - 1; i++)
      {
      if(snapshot_id == c[i][0])
         {
         break;
         }

      j++;
      }

   return shiftSnapshot(gigapan_id, j);
   }

function GetCookie(name) {
  if(document.cookie.length == 0) return "";

  start = document.cookie.indexOf(name + '=');
  if(start == -1) return '';

  start = start + name.length + 1;
  end = document.cookie.indexOf(';', start);
  if(end == -1) end = document.cookie.length;

  return unescape(document.cookie.substring(start, end));
}

var is_placing = false;
var php_sess_id = '';
function PlacementSubmitForm() {
  if(!is_placing) return;

  new Ajax.Request('/placementUpdate.php?' + php_sess_id, {
    method: 'post',
    parameters: $('gigapan_edit_form').serialize(),
    onFailure: function() { alert("Uh Oh, something is wrong"); }
  });
}

function PlacementInitialize(sessionCookieName) {
  var sliders = { 
    alt: {
      axis: 'horizontal',
      range: $R(0, 500)
    },
    tilt: { 
      axis: 'horizontal',
      range: $R(0, 180)
    },
    heading: {
      axis: 'horizontal',
      range: $R(0, 360)
    },
    roll: {
      axis: 'horizontal',
      range: $R(-90, 90)
    },
    fovw: {
      axis: 'horizontal',
      range: $R(0, 360)
    },
    near: {
      axis: 'horizontal',
      range: $R(50, 600)
    },
    bot: {
      axis: 'horizontal',
      range: $R(-90, 90)
    }
  };

  php_sess_id = sessionCookieName + "=" + GetCookie(sessionCookieName);

  var make = function(i) {
    return function(v) { $(i).value = Math.floor(v); };
  };
  var make_change = function(i) {
    return function() { 
      sliders[i].slider.setValue($(i).value); 
    };
  };

  for(var i in sliders) {
    var slider = 
      new Control.Slider(i + '_handle', i + '_track', sliders[i]);
    sliders[i].slider = slider;
    slider.setValue($(i).value);
    sliders[i].sliderValue = $(i).value;
    slider.options.onChange = PlacementSubmitForm;

    slider.options.onSlide = make(i);
    $(i).value = sliders[i].sliderValue;
    $(i).onchange = make_change(i);
  }

  $('placement_link').onclick = function() {
    is_placing = true;
    return true;
  }

}
