$(document).ready(function(){
    var webcamInterval = new Array();
    var webcamLast = new Array();
    var lastSelection = 0;
    
    $('#tabs').tabs();
    $('#tabs ul').css('margin-left','0');

    $('.button, a.controls')
      .addClass('ui-state-default')
      .addClass('ui-corner-all');
    
    //hover states on the static widgets
    $('.ui-state-default, #dialog_link, ul#icons li, .button').hover(
				 function() { $(this).addClass('ui-state-hover'); },
				 function() { $(this).removeClass('ui-state-hover'); }
				 );
    
    //$('.nav li:nth-child(even)').addClass('evenNav');

    // Randomly select a single class from all of the classes on a single element

    $(".random").each(function() {
	var classString = "";
	var randomClassString = "";
	var possibleClasses = [];
	var selection = "-1";
	var i = 0;
	
	classString = $(this).attr("class");
	
	randomClassString = classString.substring(classString.indexOf("random ") + 7);
	classString = classString.substring(0,(classString.indexOf("random") - 1));
	
	$(this).attr("class", classString);
	
	possibleClasses = randomClassString.split(" ");
	
	selection = Math.floor(Math.random()*(possibleClasses.length - 1));
	while (lastSelection == selection) {
	  selection = Math.floor(Math.random()*(possibleClasses.length - 1));
	}

	$(this).addClass(possibleClasses[selection]);
	lastSelection = selection;
	
      });

    // Accordion
    $(".accordion").accordion({ header: "h3" });

    // Dialog
    $('#dialog').dialog({
      autoOpen: false,
	  width: 600,
	  buttons: {
	  "Ok": function() {
	    $(this).dialog("close");
	  },
	    "Cancel": function() {
	      $(this).dialog("close");
	    }
	}
      });

    // Dialog Link
    $('#dialog_link').click(function(){
	$('#dialog').dialog('open');
	return false;
      });

    // Datepicker
    $('#datepicker').datepicker({
	inline: true
	  });

    // Slider
    $('#slider').slider({
      range: true,
	  values: [17, 67]
	  });

    // Progressbar
    $("#progressbar").progressbar({
      value: 20
	  });
    
    // Drag and Drop Sorting
    $('.sortable').sortable({
      update: function(event, ui) {
	  $('#' + $(this).attr('id') + 'Order').attr('value', $(this).sortable('toArray', {'attribute' : 'position'}));
	},
	  placeholder: 'ui-state-highlight',
	  forcePlaceholderSize: 'true'
	  });
    
    // Select all
    $("A[href='#select_all']").click( function() {
	$("#" + $(this).attr('rel') + " INPUT[type='checkbox']").attr('checked', true);
	return false;
      });
    
    // Select none
    $("A[href='#select_none']").click( function() {
	$("#" + $(this).attr('rel') + " INPUT[type='checkbox']").attr('checked', false);
	return false;
      });
    
    // Invert selection
    $("A[href='#invert_selection']").click( function() {
	$("#" + $(this).attr('rel') + " INPUT[type='checkbox']").each( function() {
	    $(this).attr('checked', !$(this).attr('checked'));
	  });
	return false;
      }); 
    
    // Flowplayer configuration
    flowplayer("a.flowplayer", "flowplayer/flowplayer-3.1.0.swf", {
      clip: {
	autoPlay: false,
	    autoBuffer: true,
	    scaling: 'orig'
	    }
      });

    // Webcam refresh
    var webcams;
    var webcamCount;
    var i;
    var now = new Date();
    var minRefresh = 0;
    var cam;

    webcams = $(".webcam");
    webcamCount = webcams.length;
    now = now.getTime() / 1000;

    for (i = 0; i < webcamCount; i++) {
      cam = $(webcams.get(i));
      webcamInterval[i] = parseInt(cam.attr("refresh"));
      webcamLast[i] = now;
      if (!minRefresh || webcamInterval[i] < minRefresh)
	minRefresh = webcamInterval[i];
    }

    setInterval("refreshImage()", minRefresh * 1000);
  });

function refreshImage() {
  var webcams;
  var webcamCount;
  var i;
  var now = new Date();
  var minRefresh = 0;
  var oldURL, newURL;
  var cam;

  webcams = $(".webcam");
  webcamCount = webcams.length;
  now = now.getTime() / 1000;

  for (i = 0; i < webcamCount; i++) {
    cam = $(webcams.get(i));
    if (webcamLast[i] + webcamInterval[i] <= now) {
      webcamLast[i] = now;
      oldURL = cam.attr("src");
      newURL = oldURL.replace(/\?.*/, '') + '?' + new Date();
      cam.attr("src", newURL);
    }
  }
  return false;
}
