// set global defaults

var lang;
lang = "en";
var modes = new Array('general','vc','event','public');
var mode;
mode = "0";
var style;
var detail;
detail = false;
var currentPid;
var projectImages;
var projectImagesFull;
var projectImagesCaptions;
var imageId;
var nextAid;
var prevAid;
var randomAid;
var nextPid;
var prevPid;
var randomPid;
var nProjects;
nProjects = 0;

// advertisement
var adTimeout = 10000;
var adTimer;

// slideshow timer
var slideshowTimeout = 3500;
var slideshowTimer;

var calendarMode;

// init application
function init() {	
	initHistory();	
	setBodyMargin();
	lang = 'de';
	setStyle('02');	
	activateAdTimer();
}

// ad timer functions
function resetAdTimer() {	
	if (adTimer) {
		 window.clearTimeout(adTimer)
	}
}
function activateAdTimer() {	
	adTimer = window.setTimeout("adTimerCallBack()", adTimeout);
}
function adTimerCallBack() {
	 loadAdvertisement(randomAid);
	 activateAdTimer();
}

// slideshow timer functions
function resetSlideshowTimer() {	
	if (slideshowTimer) {
		 window.clearTimeout(slideshowTimer)
	}
}
function activateSlideshowTimer() {	
	resetSlideshowTimer();
	slideshowTimer = window.setTimeout("slideshowTimerCallBack()", slideshowTimeout);
}

function slideshowTimerCallBack() {
	loadProjectImage('+'); 
  	activateSlideshowTimer();
}





function getRandomStyle() {	
	var theStyle = "0"+Math.round(Math.random()+1).toString();
	return theStyle;
}

function setStyle(newStyle) {
	style=newStyle;
	switchLang(lang);
	var container = document.getElementById('container');	
	container.style.backgroundImage = "url('./fileadmin/dialekt.org/templates/img."+style+"/background.png')";
}

// update tutti
function loadContent() {
	resetAdTimer();
	//clearMailForm();
	detail = false;	
	
	loadContentArea('id=dialekt&tx_dialekt[mode]='+ mode +'&tx_dialekt[show]=profile&tx_dialekt[lang]='+ lang +'&cHash=ugu','profile');	
	
	loadContentArea('id=dialekt&tx_dialekt[mode]='+ mode +'&tx_dialekt[show]=project&tx_dialekt[lang]='+ lang +'&cHash=ugu','project',true);		
	closeFullImage();
	//updateCalendarNavi();		
}

// load certain area
function loadContentArea(pars,target,javascriptEval){	
	
	var url = 'index.typo3.php';
	pars = pars + '&tx_dialekt[style]='+style;
	var theTarget = $(target);
	
	theTarget.innerHTML = 'loading ...';	

	if (javascriptEval) {		
		theAjax = new Ajax.Updater(target, url, {method: 'get', parameters: pars, evalScripts: true});		
	} else {
		theAjax = new Ajax.Updater(target, url, {method: 'get', parameters: pars});	
	}	
}

// set new lang mode
function switchLang(newLang){		
	lang = newLang;		
	//updateHeadlines();
	//updateImages('public');
	//updateImages('event');
	//updateImages('vc');
	//updateImages('general');
	//updateImages('detail');
	/*updateImages('list');*/
	//updateImages('send');
	//updateImages('prev');
	//updateImages('next');
	//updateImages('random');
	loadContent();
	loadContentArea('id=dialekt&tx_dialekt[mode]='+ mode +'&tx_dialekt[show]=links&tx_dialekt[lang]='+ lang +'&cHash=ugu','links');	
	//loadContentArea('id=gw&tx_dialekt[mode]='+ mode +'&tx_dialekt[show]=contact&tx_dialekt[lang]='+ lang +'&cHash=ugu','contact');	
	//loadContentArea('id=gw&tx_dialekt[mode]=0&tx_dialekt[show]=area&tx_dialekt[lang]='+ lang +'&cHash=ugu','areaPick',true);
	loadContentArea('id=dialekt&tx_dialekt[mode]='+ mode +'&tx_dialekt[show]=advertisement&tx_dialekt[lang]='+ lang +'&cHash=ugu','advertisement',true);
	//loadContentArea('id=gw&tx_dialekt[calendarMode]='+ calendarMode +'&tx_dialekt[show]=calendar&tx_dialekt[lang]='+ lang +'&cHash=ugu','calendar');	
}
/*
function switchCalendarMode(newMode){	
	calendarMode = newMode
	loadContentArea('id=gw&tx_dialekt[calendarMode]='+ calendarMode +'&tx_dialekt[show]=calendar&tx_dialekt[lang]='+ lang +'&cHash=ugu','calendar');
	updateCalendarNavi();	
}

function updateCalendarNavi(){	
	var internalObj = document.getElementsByClassName('internal')[0];	
	var externalObj = document.getElementsByClassName('external')[0];	
	if (calendarMode) {		
		internalObj.innerHTML = '<img src="./fileadmin/dialekt.org/templates/img.'+style+'/navigation/internal.'+lang+'.gif" />';		
		externalObj.innerHTML = '<img src="./fileadmin/dialekt.org/templates/img.'+style+'/navigation/external.ro.'+lang+'.gif" />';
		
	} else {			
		internalObj.innerHTML = '<img src="./fileadmin/dialekt.org/templates/img.'+style+'/navigation/internal.ro.'+lang+'.gif" />';		
		externalObj.innerHTML = '<img src="./fileadmin/dialekt.org/templates/img.'+style+'/navigation/external.'+lang+'.gif" />';
		
	}		
}
*/
// update set of items defined by class name
function updateImages(theClassName){
	//alert(theClassName+' - '+modes[mode]);
	var ro = '';	
	if (modes[mode] === theClassName) {		
		ro = '.ro';		
	}	
	var items = document.getElementsByClassName(theClassName);	
	for (i in items) {		
		items[i].innerHTML = '<img src="./fileadmin/dialekt.org/templates/img.'+style+'/navigation/'+theClassName+ro+'.'+lang+'.gif"/>';	 
	}	
}

function switchMode(newMode,isHistoryCall){
	hideImprint();
	
	// reset old mode buttons
	resetMode = mode;
	mode = '';
	updateImages(modes[resetMode]);	
	// set new buttons
	mode = newMode;
	updateImages(modes[newMode]);
	// update content
	loadContent();
	
	if (!isHistoryCall) {		
		var historyObj = new Object();								
		historyObj['mode'] = mode;
		historyObj['action'] = 'init';	
		historyObj['info'] = 'init mode '+modes[mode];
		setHistoryStorage("init_"+modes[mode],historyObj);
	}	
}
// load project details
function loadProjectDetail(pid) {
	currentPid = pid;
	detail = true;
	updateProjectNavi();
	loadContentArea('id=dialekt&tx_dialekt[mode]='+ mode +'&tx_dialekt[show]=projectDetail&tx_dialekt[projectId]='+pid+'&tx_dialekt[lang]='+ lang +'&cHash=ugu','project',true);
	
	
	
		// define history storage object	
		var historyObj = new Object();
		historyObj['mode'] = mode;			
		historyObj['pid'] = pid;
		historyObj['action'] = 'projectDetails';	
		historyObj['info'] = 'load project detail for project '+pid;
		setHistoryStorage("projectDetails_"+pid,historyObj);
	
	
}
function loadAdvertisement(aId){	
	resetAdTimer();
	loadContentArea('id=dialekt&tx_dialekt[mode]='+ mode +'&tx_dialekt[show]=advertisement&tx_dialekt[lang]='+ lang +'&tx_dialekt[aId]='+ aId +'&cHash=ugu','advertisement',true);
}


// debug object
function debug(input) {
	var ret;
	for (var i in input) {		
		ret += "["+i+"] = "+input[i]+"\n";		
	}
	alert(ret);
	
}
// swap image based on class name
// if onelang set then dont add .en / .de
function swapImage(callingObj,oneLang) {	
	var theLang = '.'+lang;	
	if (oneLang) {		
		theLang = '';
	}	
	callingObj.firstChild.src = './fileadmin/dialekt.org/templates/img.'+style+'/navigation/'+callingObj.className+'.ro'+theLang+'.gif';
}
// restore image based on class name of calling obj
// special handling of project and image navi
// if onelang set then dont add .en / .de
function swapImgRestore(callingObj,oneLang) {
	var theLang = '.'+lang;	
	if (oneLang) {		
		theLang = '';
	}
	var ro = '';	
	
	if (modes[mode] === callingObj.className || (callingObj.className === 'list' && !detail) || (callingObj.className === 'detail' && detail) || (callingObj.className - 1) == imageId || ((callingObj.className === 'external' && calendarMode) || (callingObj.className === 'internal' && !calendarMode))) {		
		ro = '.ro';		
	} 	
	callingObj.firstChild.src = './fileadmin/dialekt.org/templates/img.'+style+'/navigation/'+callingObj.className+ro+theLang+'.gif';
}
// update top list detail switch
// and hid bottom of project box navi
function updateProjectNavi() {	
	var listObj = document.getElementsByClassName('list')[0];	
	var detailObj = document.getElementsByClassName('detail')[0];
	//var modeNavi_2 = document.getElementById('modeNavi_2');	
	//var bottomNavi = document.getElementById('browserProject');	
	updateImages('detail');
	updateImages('list');	
	if (detail) {		
		listObj.innerHTML = '<img src="./fileadmin/dialekt.org/templates/img.'+style+'/navigation/list.'+lang+'.gif" />';	
		detailObj.innerHTML = '';
	} else {			
		listObj.innerHTML = '';
		detailObj.innerHTML = '';
	}		
	if (detail && nProjects > 1) {		
		//modeNavi_2.style.visibility = 'hidden';
	} else {
		//modeNavi_2.style.visibility = 'visible';
	}	
}


// preload navi elements

var myimages = new Array();
var naviImages = new Array('./fileadmin/dialekt.org/templates/img.02/navigation/vc.de.gif','./fileadmin/dialekt.org/templates/img.02/navigation/vc.ro.de.gif','./fileadmin/dialekt.org/templates/img.02/navigation/event.de.gif','./fileadmin/dialekt.org/templates/img.02/navigation/event.ro.de.gif','./fileadmin/dialekt.org/templates/img.02/navigation/general.de.gif','./fileadmin/dialekt.org/templates/img.02/navigation/general.ro.de.gif','./fileadmin/dialekt.org/templates/img.02/navigation/public.ro.de.gif','./fileadmin/dialekt.org/templates/img.02/navigation/public.de.gif');


function preload(preloadImages){
	for (i=0;i<preloadImages.length;i++)
	{
		if (!myimages[preloadImages[i]]) {
			myimages[preloadImages[i]]=new Image();
		}		
		myimages[preloadImages[i]].src=preloadImages[i];		
	}	
}

preload(naviImages);

function loadProjectList (){
	detail = false;
	loadContentArea('id=dialekt&tx_dialekt[mode]='+ mode +'&tx_dialekt[show]=project&tx_dialekt[lang]='+ lang +'&cHash=ugu','project',true);
	updateProjectNavi();
}

//var headLines = new Array('gw','departments','calendar','links','projects','profile','email','ad','contact');
/*
function updateHeadlines(){
	var hlObj;
	for (headLine in headLines) {		
		hlObj = document.getElementById('headLine_'+headLines[headLine]);		
		if (hlObj) {		
			hlObj.innerHTML = '<img src="./fileadmin/dialekt.org/templates/img.'+style+'/headlines/'+headLines[headLine]+'.'+lang+'.gif" />';
		}		
	}	
}
*/
function loadProjectImage(action){	
	switch (action) {					
		case "+":
			imageId ++;
			if (imageId > (projectImages.length-1)) {
				imageId = 0;
			}
			break;
		case "-":
			imageId --;
			if (imageId < 0) {
				imageId = projectImages.length-1;
			}
			break;		
		default:
			imageId = action;
			break;
	}
	
	// check if caption, otherwise set to null
	
	var projectImagesCaption;
	if (projectImagesCaptions[imageId]) {			
		projectImagesCaption = projectImagesCaptions[imageId];
	} else {
		projectImagesCaption = '';	
	}
	
	if (FullscreenMode){
		
		var imageBrowser = document.getElementsByClassName('browserImage');	
		imageBrowser = imageBrowser[0];
		
		var projectImageDiv = document.getElementById('imageFull');
		// update image div
		
		projectImageDiv.innerHTML = '<a href="javascript:closeFullImage();">'+projectImagesFull[imageId]+'</a><div id="projectImageCaption">'+projectImagesCaption+'</div>';
		
	} else {
		
		var projectImageDiv = document.getElementById('projectImage');
		// update image div
		
		if (projectImageDiv) {		
			projectImageDiv.innerHTML = '<a href="javascript:loadImageFull();">'+projectImages[imageId]+'</a><div id="projectImageCaption">'+projectImagesCaption+'</div>';	
		}
		
	}
	updateImageNavi();
}

var FullscreenMode;
FullscreenMode = false;

function loadImageFull(){
	
	FullscreenMode = true;	
	var imageBrowser = document.getElementsByClassName('browserImage');	
	imageBrowser = imageBrowser[0];

	//var container = document.getElementById('imageFullContainer');	
	//container.style.backgroundImage = "url('./fileadmin/dialekt.org/templates/img."+style+"/imageFull.png')";	
	
	var fullScreenNavi = document.getElementById('imageFullNavi');		
	fullScreenNavi.innerHTML = '';	
	fullScreenNavi.innerHTML = imageBrowser.innerHTML;	
	
	
	//var fullScreenCaption = $('imageFullCaption');		
	//fullScreenCaption.innerHTML = '';	
	//fullScreenCaption.innerHTML = $('projectImageCaption').innerHTML;
	var captionContent = '<div id="projectImageCaption">'+$('projectImageCaption').innerHTML+'</div>';
	//alert(captionContent);
	//alert( $('projectImageCaption').innerHTML);
	var fullScreenImage = document.getElementById('imageFull');		
	fullScreenImage.innerHTML = '';	
	fullScreenImage.innerHTML = '<a href="javascript:closeFullImage();">'+projectImagesFull[imageId]+'</a><br />'+captionContent;
	
	
	var fullScreenLayer = document.getElementById('imageFullContainer');	
	//fullScreenLayer.style.visibility = 'visible';	
	fullScreenLayer.style.display = 'inline';
	fullScreenLayer.style.zIndex = '100';	
	
	// hack for ff mac to hide the scrollbar of underlying divs!
	
	var projectDiv = document.getElementById('project');
	projectDiv.style.display = 'none';
	
	//var calendarDiv = document.getElementById('calendar');
	//calendarDiv.style.display = 'none';
	
	//var linksDiv = document.getElementById('links');
	//linksDiv.style.display = 'none';
	
	var adDiv = document.getElementById('advertisement');
	adDiv.style.display = 'none';
}

function closeFullImage(){	

	FullscreenMode = false;
	
	var fullScreenLayer = document.getElementById('imageFullContainer');	
	//fullScreenLayer.style.visibility = 'hidden';
	fullScreenLayer.style.display = 'none';
	fullScreenLayer.style.zIndex = '-1';	

	var projectDiv = document.getElementById('project');
	projectDiv.style.display = 'block';
	
	//var calendarDiv = document.getElementById('calendar');
	//calendarDiv.style.display = 'block';
	
	//var linksDiv = document.getElementById('links');
	//linksDiv.style.display = 'block';
	
	var adDiv = document.getElementById('advertisement');
	adDiv.style.display = 'block';
	
}

// update image navigation
function updateImageNavi() {
	var imageNaviButton;
	for (i=1;i<=projectImages.length+1;i++) {
		imageNaviButton = document.getElementsByClassName(i)[0];		
		if (imageNaviButton) {		
			if ((i-1) == imageId) {			
				imageNaviButton.innerHTML = '<img src="./fileadmin/dialekt.org/templates/img.'+style+'/navigation/'+i+'.ro.gif" />';			
			} else {	
				imageNaviButton.innerHTML = '<img src="./fileadmin/dialekt.org/templates/img.'+style+'/navigation/'+i+'.gif" />';				
			}
		}
		imageNaviButton = document.getElementsByClassName(i)[1];		
		if (imageNaviButton) {		
			if ((i-1) == imageId) {			
				imageNaviButton.innerHTML = '<img src="./fileadmin/dialekt.org/templates/img.'+style+'/navigation/'+i+'.ro.gif" />';			
			} else {	
				imageNaviButton.innerHTML = '<img src="./fileadmin/dialekt.org/templates/img.'+style+'/navigation/'+i+'.gif" />';				
			}
		}
	}	
}
// update the area navigation (typo3 content doesnt know the style id!)
function updateAreaNavi() {
	updateImages('event');
	updateImages('vc');
	updateImages('general');
	updateImages('public');
}
// check browser
var isIE  = (navigator.appVersion.indexOf("MSIE") != -1) ? true : false;
var isWin = (navigator.appVersion.toLowerCase().indexOf("win") != -1) ? true : false;

// check if screen resolution is small, then 0px top margin
function setBodyMargin(){	
	if (screen.height<=768){
	 document.body.style.marginTop = "0px";
	} else {
	 document.body.style.marginTop = "20px";
	}	
}

// imprint popup
function showImprint() {
	$('imprintPopup').style.visibility = "visible";
}
function hideImprint() {
	$('imprintPopup').style.visibility = "hidden";
}