﻿var elWidth;

var yearfromtextbox = false;
var yeartotextbox = false;

var slideBarWidth = 800;
var firstYear = 1437;
var lastYear = 2008;
var yearCount = lastYear-firstYear;

var currentSliderDiv = false;
var sliderOffsetLeft = false;
var currentZIndex = 20000;

var yearFrom = false;
var yearTo = false;

/* Returnerar X-position för ett årtal */
function getXPositionFromYear(year)
{
    return slideBarWidth - Math.sqrt((lastYear-year)*slideBarWidth*slideBarWidth/yearCount);
}

/* Returnerar årtal för en X-position */
function getYearFromXPosition(x)
{
    return lastYear - (1 - 2 * x / slideBarWidth + x * x / (slideBarWidth * slideBarWidth)) * yearCount;
}

/* Initierar flytt av slider */
function initSliding(e,inputObj)
{
    if(document.all)e = event;
    if(!inputObj) inputObj = this;
    currentSliderDiv = inputObj;
    currentZIndex = currentZIndex + 1;
    
    currentSliderDiv.style.zIndex = currentZIndex;	
    document.getElementById(currentSliderDiv.id+'Indicator').style.zIndex = currentZIndex;
    
    elWidth = inputObj.offsetWidth; // borde behöva användas?
	
	currentSliderDiv.style.display='block';
    return false;
}

/* Denna funktion anropas så fort muspekaren rör sig i fönstret. */
function schedulerMouseMove( e )
{
	if( document.all )
	{
		e = event;
	}
	if( currentSliderDiv ) // Flytt av slider initierad?
	{
	    var leftPos = e.clientX - sliderOffsetLeft;
		
		// Kod för att se till att inte slajdern flyttas utanför "spåret"
		leftPos = Math.min(leftPos, slideBarWidth);
		leftPos = Math.max(0, leftPos);
		// ... kod för att slajdern ska ligga inom spåret

		currentSliderDiv.style.left = leftPos + 'px';
		
		var otherSlider;
		if( currentSliderDiv.id == 'slider1')
		    otherSlider = document.getElementById('slider2');
		else
		    otherSlider = document.getElementById('slider1');
        var otherPos = otherSlider.style.left.replace('px','')/1;
        
        adjustRangeIndicator( Math.min(leftPos,otherPos), Math.max(leftPos,otherPos) );
        
	    document.getElementById(currentSliderDiv.id+'Indicator').innerHTML = parseInt(Math.round(getYearFromXPosition(leftPos)));
        
        yearFrom = parseInt(Math.round(getYearFromXPosition(Math.min(leftPos,otherPos))));
        yearTo = parseInt(Math.round(getYearFromXPosition(Math.max(leftPos,otherPos))));
//		
	}
}

/* Denna funktion anropas så fort musknappen släpps upp. Ger upphov till en ajax-förfrågan som hämtar
    författare inom den valda tidsperioden. */
function schedulerMouseUp()
{
	if( currentSliderDiv )
	{
	    // Hämta sökresultat mha ajax
	    ajax_loadContent( 'chronologyContent','/ajax/chronology.aspx?f=' +yearFrom + '&t=' + yearTo );
	}
	currentSliderDiv = false;
}

function adjustRangeIndicator( sliderMinX, sliderMaxX )
{
    var rangeIndicator = document.getElementById('rangeIndicator');
    rangeIndicator.style.left = sliderMinX + 'px';
    rangeIndicator.style.width = (sliderMaxX-sliderMinX) + 'px';
}

/* Returnerar x-positionen för ett objekt */
function getLeftPos(inputObj)
{
  var returnValue = inputObj.offsetLeft;
  while((inputObj = inputObj.offsetParent) != null)
  {
  	if(inputObj.tagName!='HTML')returnValue += inputObj.offsetLeft;
  }
  return returnValue;
}

/* Initialiserar slajdern.*/
function initSlider()
{
	document.documentElement.onmousemove = schedulerMouseMove;
	document.documentElement.onmouseup = schedulerMouseUp;
	
	lastYear = Math.max(2008, (new Date()).getFullYear());
    yearCount = lastYear-firstYear;
    
    var slider1 = document.getElementById('slider1');
    slider1.onmousedown = initSliding;
	slider1.style.cursor = 'move';
    var slider2 = document.getElementById('slider2');
    slider2.onmousedown = initSliding;
	slider2.style.cursor = 'move';
	
	// Initiera slajdarnas positioner till det som står i textlådorna
	if( !yearFrom || !yearTo )
	{
	    yearFrom = parseInt(document.getElementById('slider1Indicator').innerHTML);
	    yearTo = parseInt(document.getElementById('slider2Indicator').innerHTML);
	}
	else
	{
	    document.getElementById('slider1Indicator').innerHTML = yearFrom;
	    document.getElementById('slider2Indicator').innerHTML = yearTo;
	}
	var fromXPos = getXPositionFromYear(yearFrom);
	var toXPos = getXPositionFromYear(yearTo);
	slider1.style.left = fromXPos + 'px';
	slider2.style.left = toXPos + 'px';
	adjustRangeIndicator( fromXPos, toXPos);
	
    sliderOffsetLeft = getLeftPos(document.getElementById('sliderDiv'));
    
	ajax_loadContent( 'chronologyContent','/ajax/chronology.aspx?f=' +yearFrom + '&t=' + yearTo );
    
}

var dynamicContent_ajaxObjects = new Array();

function ajax_showContent(divId,ajaxIndex,url)
{   
	document.getElementById(divId).innerHTML = dynamicContent_ajaxObjects[ajaxIndex].response;
	dynamicContent_ajaxObjects[ajaxIndex] = false;
}

function ajax_loadContent( divId,url )
{
	var ajaxIndex = dynamicContent_ajaxObjects.length;
	document.getElementById(divId).innerHTML = 'Laddar... var god v&auml;nta';
	dynamicContent_ajaxObjects[ajaxIndex] = new sack();
	dynamicContent_ajaxObjects[ajaxIndex].requestFile = url;	// Specifying which file to get
	dynamicContent_ajaxObjects[ajaxIndex].onCompletion = function(){ ajax_showContent(divId,ajaxIndex,url); };	// Specify function that will be executed after file has been found
	dynamicContent_ajaxObjects[ajaxIndex].onError = ajaxErrorLoadingItems(divId);
	dynamicContent_ajaxObjects[ajaxIndex].runAJAX();		// Execute AJAX function	
}

function ajaxErrorLoadingItems( divId )
{
    //document.getElementById(divId).innerHTML = 'Tekniskt fel vid kommunikation med server. F&ouml;rs&ouml;k igen senare';
}

function onSuccess(result)
{
    yearFrom = result[0];
    yearTo = result[1];
    initSlider();
}

function onFail()
{
    initSlider();
}

function get_years()
{
    ret = YearSpan.GetYears(onSuccess,onFail,null);
}
