/*
 *  Open Source Routing Machine (OSRM) - Web (GUI) Interface
 *	Copyright (C) Pascal Neis, 2011
 *
 *	This program is free software; you can redistribute it and/or modify
 *	it under the terms of the GNU AFFERO General Public License as published by
 *	the Free Software Foundation; either version 3 of the License, or
 *	any later version.
 *
 *	This program is distributed in the hope that it will be useful,
 *	but WITHOUT ANY WARRANTY; without even the implied warranty of
 *	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *	GNU General Public License for more details.
 *
 *	You should have received a copy of the GNU Affero General Public License
 *	along with this program; if not, write to the Free Software
 *	Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 *	or see http://www.gnu.org/licenses/agpl.txt.
 */
 
/**
 * Title: Slide.js
 * Description: Fixme
 *
 * @author Pascal Neis, pascal@neis-one.org 
 * @version 0.1 2011-05-15
 */
 
var timerlen = 5;
var slideAniLen = 250;

var timerID = new Array();
var startTime = new Array();
var obj = new Array();
var endWidth = new Array();
var moving = new Array();
var dir = new Array();

function toggleSlide(objname){
	document.getElementById('panzoombar').style.top="25px";
	document.getElementById('panzoombar').style.display = "none";
	document.getElementById('slide').style.display = "none";
	if(document.getElementById(objname).style.display == "none"){
	 	// div is hidden, so let's slide right
		slide_right(objname);
	}else{
		// div is not hidden, so slide left
		slide_left(objname);
	}
}

function slide_right(objname){
	if(moving[objname]){ return; }
	if(document.getElementById(objname).style.display != "none"){
		return; // cannot slide right something that is already visible
	}
	moving[objname] = true; dir[objname] = "right"; startslide(objname);
}

function slide_left(objname){
	if(moving[objname]){ return; }
	if(document.getElementById(objname).style.display == "none"){
		return; // cannot slide left something that is already hidden
	}
	moving[objname] = true; dir[objname] = "left"; startslide(objname);
}

function startslide(objname){
	obj[objname] = document.getElementById(objname);
	endWidth[objname] = parseInt(obj[objname].style.width);
	startTime[objname] = (new Date()).getTime();	
	if(dir[objname] == "right"){ obj[objname].style.width = "1px"; }
    obj[objname].style.display = "block";
    timerID[objname] = setInterval('slidetick(\'' + objname + '\');',timerlen);
}

function slidetick(objname){
	var elapsed = (new Date()).getTime() - startTime[objname];
	if (elapsed > slideAniLen){ endSlide(objname); }
	else {
		var d = Math.round(elapsed / slideAniLen * endWidth[objname]);
		if(dir[objname] == "left"){ d = endWidth[objname] - d; }
		obj[objname].style.width = d + "px";
	}
    return;
}

function endSlide(objname){
	clearInterval(timerID[objname]);
	
	if(dir[objname] == "left"){
		obj[objname].style.display = "none";
		document.getElementById('panzoombar').style.left="25px";
		document.getElementById('panzoombar').style.display = "";
		document.getElementById('slide').style.left="5px";
		document.getElementById('slide').innerHTML = "<a class=\"btn-slide\" href=\"javascript:;\" onmousedown=\"toggleSlide('data');\">>></a>";
        document.getElementById('slide').style.display = "";
    }
    else{
    	document.getElementById('panzoombar').style.left="400px";
    	document.getElementById('panzoombar').style.display = "";document.getElementById('slide').style.left="365px";
    	document.getElementById('slide').innerHTML = "<a class=\"btn-slide\" href=\"javascript:;\" onmousedown=\"toggleSlide('data');\"><<</a>";
    	document.getElementById('slide').style.display = "";
    }
   	obj[objname].style.width = endWidth[objname] + "px";
   	
   	delete(moving[objname]);
   	delete(timerID[objname]);
   	delete(startTime[objname]);
   	delete(endWidth[objname]);
   	delete(obj[objname]);
   	delete(dir[objname]);
   	return;
}