// JavaScript Document

function set_cookie( cookie_name, cookie_value, lifespan_in_days, valid_domain )
{
    // http://www.thesitewizard.com/javascripts/cookies.shtml
    var domain_string = valid_domain ? ("; domain=" + valid_domain) : '' ;
	var cookie_string;
	if (lifespan_in_days <0){ // session cookie!
		cookie_string = cookie_name + "=" + encodeURIComponent( cookie_value ) + 
                       "; path=/" + domain_string ;
	} else {
		cookie_string = cookie_name + "=" + encodeURIComponent( cookie_value ) + 
						"; max-age=" + 60 * 60 * 24 * lifespan_in_days +
                       "; path=/" + domain_string ;
	}
					   
	document.cookie = cookie_string;
}

function set_position_cookie( cookie_name, value_x, value_y, lifespan_in_days, valid_domain ) {
	set_cookie(cookie_name, value_x+"x"+value_y, lifespan_in_days, valid_domain);
}

function has_cookie(name) {
	return get_cookie(name).length > 0;
}

function get_cookie(name) {
   var i=0;  //Suchposition im Cookie
   var suche = name + "=";
   while (i<document.cookie.length) {
      if (document.cookie.substring(i, i + suche.length)
      == suche) {
         var ende = document.cookie.indexOf(";", i
         + suche.length);
         ende = (ende > -1) ? ende :
         document.cookie.length;
         var cook = document.cookie.substring(i
            + suche.length, ende);
         return unescape(cook);
      }
      i++;
   }
   return "";
}

function get_position_cookie_x(name){
	var string_value = get_cookie(name);
	if (string_value.length<=0) return -1;
	var string_coordinate_x = string_value; 
	return parseInt(string_coordinate_x);
	
}

function get_position_cookie_y(name){
	var string_value = get_cookie(name);
	if (string_value.length<=0) return -1;
	var pos_ergebnis = string_value.search('x') + 1;
	var pos_ende = string_value.length - 1;
	var string_coordinate_y = string_value.substr(pos_ergebnis, pos_ende);
	return parseInt(string_coordinate_y);
}

function setRelativePositionX(element, value){
	//alert(jQuery('#container').position().left);
		element.css('left', value + jQuery('#container').position().left);	 
}
function setRelativePositionY(element, value){
		element.css('top', value + jQuery('#container').position().top);	
}
function getRelativePositionX(element){
		return element.position().left - jQuery('#container').position().left;	
}
function getRelativePositionY(element){
		return element.position().top - jQuery('#container').position().top;
}




var position_x_array = new Object();
var position_y_array = new Object();
var names = new Array();

function prepareDraggable(name){
	var element_top = name+'_top';
	var element_left = name+'_left';
	var element = jQuery('#'+name);
	element.draggable();
	
	element.css('cursor', 'pointer');
	
	names[names.length] = name;	
	
	var px = element.position().left;
	var py = element.position().top;	

	if (has_cookie(name)) { // custom (dragged) position => set position
		px = get_position_cookie_x(name);
		py = get_position_cookie_y(name);
		setRelativePositionX(element, px);
		setRelativePositionY(element, py);
	} else if (has_cookie(name+'_original')){ //original positon, prior position available => animate position
		setRelativePositionX(element, get_position_cookie_x(name+'_original'));
		setRelativePositionY(element, get_position_cookie_y(name+'_original'));
		
		
			var targetX = (px+jQuery('#container').position().left)+"px";
			var targetY = (py+jQuery('#container').position().top)+"px";
		
		
		element.animate({ 
				left: targetX,
				top: targetY
			  }, 5000 );
		set_position_cookie(name+'_original', px, py, -1);
	} else { //original positon, no prior position available => set position
		set_position_cookie(name+'_original', px, py, -1);
		setRelativePositionX(element, px);
		setRelativePositionY(element, py);
	}
	
	// save values for later window resize
	position_x_array[name] = px;
	position_y_array[name] = py;

	element.bind('dragstop', function(event, ui) {
		var rel_x = getRelativePositionX(element);
		var rel_y = getRelativePositionY(element);
		set_position_cookie( name, rel_x, rel_y, 1);
		position_x_array[name] = rel_x;
		position_y_array[name] = rel_y;
	});
}





var element_path = new Array(930, 10, 1, 635);
var square_timing = 30000;

function initSquareRunner(name){
	var element = jQuery('#'+name);
	names[names.length] = name;	
	var px = element.position().left;
	var py = element.position().top;
	setRelativePositionX(element, px);
	setRelativePositionY(element, py);
	position_x_array[name] = px;
	position_y_array[name] = py;
	animateSquareRunner(name);
}
function setBackgroundOffset(name, offset){
	jQuery('#'+name).css('background-position', offset);
}

function animateSquareRunner(name){
	setBackgroundOffset(name, "0px");
	var element = jQuery('#'+name);
	
	var path_idx = 0;

	var targetX = (position_x_array[name]+jQuery('#container').position().left)+"px"; 
	var targetY = (position_y_array[name]+jQuery('#container').position().top)+"px";  
	
	element.animate(
			  { left: (parseInt(targetX) + element_path[0])  }, 
			  square_timing, 
			  "linear",
			  function() {  setBackgroundOffset(name, "135px"); }
			  );
	path_idx++;
	
	element.animate({ 
				top: element_path[1]
			  }, 
			  square_timing, 
			  "linear",
			  function() {  setBackgroundOffset(name, "90px"); }
			  );
	path_idx++;
	
	element.animate({ 
				left: (parseInt(targetX) + element_path[2])
			  }, 
			  square_timing, 
			  "linear",
			  function() {  setBackgroundOffset(name, "45px"); }
			  );
	path_idx++;
	
	element.animate({ 
				top: element_path[3]
			  }, square_timing, "linear", 
			  function() {  animateSquareRunner(name); }
			  );

	
}





/*var position_x_array_t2 = new Object();
var position_y_array_t2 = new Object();
var names_t2 = new Array(); */

function move_t2(name){
	var element_top = name+'_top';
	var element_left = name+'_left';
	var element = jQuery('#'+name);
	element.draggable();
	
	var element_path = new Array(10, 690);
	var path_idx = 0;

	var px = element.position().left;
	var py = element.position().top;
	
	if (has_cookie(name)) { // custom (dragged) position => set psotion
		px = get_position_cookie_x(name);
		py = get_position_cookie_y(name);
		setRelativePositionX(element, px);
		setRelativePositionY(element, py);
	} else if (has_cookie(name+'_original')) {
		setRelativePositionX(element, get_position_cookie_x(name+'_original'));
		setRelativePositionY(element, get_position_cookie_y(name+'_original'));
		var targetX = (px+jQuery('#container').position().left)+"px"; 
		var targetY = (py+jQuery('#container').position().top)+"px";  
	
		element.animate(
				  { 
					left: (parseInt(targetX) + element_path[path_idx])
				  }, 
				  5000 );
		path_idx++;
		
		element.animate({ 
					top: element_path[path_idx]
				  }, 10000 );
		path_idx = 0;
		
		
		
		set_position_cookie(name+'_original', px, py, -1);
		
	} else { //original positon, no prior position available => set position
		set_position_cookie(name+'_original', px, py, -1);
		setRelativePositionX(element, px);
		setRelativePositionY(element, py);
	}
	
	position_x_array[name] = px;
	position_y_array[name] = py;
	
	element.bind('dragstop', function(event, ui) {
		var rel_x = getRelativePositionX(element);
		var rel_y = getRelativePositionY(element);
		set_position_cookie( name, rel_x, rel_y, 1);
		position_x_array[name] = rel_x;
		position_y_array[name] = rel_y;
	});
}




function resizeWindow(){
	//alert("resize");
	jQuery("#drag03").stop(true);
	for (var i=0; i<names.length; i++){
		var element = jQuery('#'+names[i]);
		setRelativePositionX(element, position_x_array[names[i]]);
		setRelativePositionY(element, position_y_array[names[i]]);
	}
	animateSquareRunner("drag03");
}







