/*
function fbconnect_onlogin() {
	window.location.href=unescape(window.location.href)
}

function fbconnect_onloginRegister() {
	window.location.href=unescape(window.location.href)
}
*/



function absolutize(url) {
	if (url.substr(0, 1) != '/' && url.substr(0, 7) != 'http://')
		url = '/'+url;
	return url;
}




function filterListen() {

//	$("startcontent").fade('toggle');
//	$("liveresults").fade('toggle');	
	$("suchbegriff").value = "";
	$("suchbegriff").setStyles({color:'#000000'});
	$("infobubble").fade('out');
}

function filterMute() {
	if($("suchbegriff").get("value") == "") {
		$("suchbegriff").value="Name der/des Kandidierenden hier eingeben";
		$("suchbegriff").setStyles({color:'#b2b2b2'});
	}
}

function init() {
	var bodyClass = $(document.body).get('class');
	if(bodyClass == 'start') {
		// $("filterbutton").dispose();
		$("filterbutton").setStyle('left', -10000);

		var el = $("infobubble");
	    if(el.getStyle("visibility") == "hidden")
	    {
	        el.setStyle("visibility", "visible");
	        el.setStyle("opacity", 0);
	    }
	    el.fade("toggle");
		$("suchbegriff").set('class', 'live');
		$("suchbegriff").addEvent('focus', filterListen);
		$("suchbegriff").addEvent('blur', filterMute);
	}
	
	if($("user")) {	
		$("user").addEvent('focus', userClear);
		$("user").addEvent('blur', userDefault);
	}
	if($("openid")) {	
		$("openid").addEvent('focus', openIdClear);
		$("openid").addEvent('blur', openIdDefault);
	}
	if($('tologin-gruene')) {
		$("tologin-gruene").addEvent('click', enableLoginForm);
	}
	if($('tologin-openid')) {
		$("tologin-openid").addEvent('click', enableOpenIdForm);
	}	
	if($('commentarea')) {
		$("commentarea").addEvent('keyup', checkLength);
		$("commentarea").addEvent('focus', checkLength);
	}
	
	if($('openidinput')) {
		var logf = new Fx.Slide('openidinput');
		logf.slideOut();
	}


	
	if($('mapover')) {
		$("mapover").addEvent('mouseout', mapOut);
	}
	
	// init vienna map
	if($("bezirkskandidatinnen")) {
		 $("bezirkskandidatinnen").setStyle("display", "none");

	     
	     
	     var i=1;
	     for (i=1;i<=23;i++) {
	     	var id = "bezkand-" + i;
	     	if($(id)) {
	     		$(id).setStyle("display", "none");	     		
	    	}
		}
	}

	return;
}

function mischen() {
	// add function here
}

function userClear() {
	currentVal = $('user').get('value');
	if(currentVal == 'Username') {
		$("user").value = "";
	}
}
function openIdClear() {
	currentVal = $('openid').get('value');
	if(currentVal == 'Open-ID') {
		$("openid").value = "";
	}
}

function userDefault() {
	currentVal = $('user').get('value');	
	if(currentVal == "") {
		$("user").value = 'Username';
	}
}
function openIdDefault() {
	currentVal = $('openid').get('value');	
	if(currentVal == "") {
		$("openid").value = 'Open-ID';
	}
}




function enableLoginForm(e) {
	e.stop();
	var logf = new Fx.Slide('loginput');
	logf.slideIn();
	return false;
}
function enableOpenIdForm(e) {
	e.stop();
//	$('extloginheader').set('text', 'Einloggen via Open-ID:');
	var logf = new Fx.Slide('openidinput');
	logf.slideIn();
/*	$('tologin-openid').setStyle("display", "none");
	var logf = new Fx.Slide('facebookform'); 
	logf.slideOut(); */
	
	return false;	
}

function enableFacebookForm() {
 //$('extloginheader').set('text', 'Einloggen via Facebook:');
	var logf = new Fx.Slide('openidinput');
	logf.slideOut();
	
	return false;	
}




/******* map ******/

var lastBezirk = 0;

function mapOver(bezirk){	
	$('mapover').set('class', "b"+bezirk);

}
function mapOut() {
	if(lastBezirk > 0) {
		$('mapover').set('class', "b"+lastBezirk);	
	}
}
function mapClick(bezirk) {
	$("bezirkskandidatinnen").setStyle("display", "block");
	$("bezirkskandidatinnen").setStyle("clear", "both");
//	$("bezirkskandidatinnen").fade('in');
	lastBezirk = bezirk;
	$('mapover').set('class', "b"+bezirk);
	var i=1;
    for (i=1;i<=23;i++) {
    	var id = "bezkand-" + i;
    	if($(id) && i==bezirk)
    		$(id).setStyle("display", "block");	     		
   		else if ($(id))
   			$(id).setStyle("display", "none");
   	}
   	return false;
}



/********** search **********/

var SEARCH_DELAY = 500; // (ms) delay before search ajax request is sent

var delayedSearchTimer = null;


function el(name) {
	var els = document.getElementsByName(name);
	if (els.length > 0)
		return els[0];
	return null;
}

function ajaxSearch() {
	delayedSearchTimer = null;
	// throbber:
	document.getElementById('search_throbber').style.display = 'block';
	
	try {
		var data = {};
		data['s[m]'] = el('s[m]').checked ? 1 : 0;
		data['s[f]'] = el('s[f]').checked ? 1 : 0;
		data['s[age]'] = el('s[age]').options[el('s[age]').selectedIndex].value;
		data['s[th]'] = el('s[th]').options[el('s[th]').selectedIndex].value;
		data['s[pl]'] = el('s[pl]').options[el('s[pl]').selectedIndex].value;
		data['s[key]'] = el('s[key]').value;
		data['search'] = 1;
		var req = new Request({
			method: 'get',
			url: absolutize($('ajax_search_url').value),
			data: data,
			onComplete: function(response) {
				document.getElementById('startcontent').innerHTML = response ? response : '';
				document.getElementById('search_throbber').style.display = 'none';
			}
		}).send();
	} catch (e) {
		alert(e);
		return true;
	}
	return false;
}

var lastKeyword = '';
function onKeywordKeyUp() {
	onKeywordChange();
}
function onKeywordChange() {
	var val = $('suchbegriff').value;
	if (val == 'Name der/des Kandidierenden hier eingeben')
		val = '';
	if (val != lastKeyword)
		autoSearch();
	lastKeyword = val;
}

function autoSearch(immediate) {
	if (delayedSearchTimer)
		clearTimeout(delayedSearchTimer);
	if (immediate)
		delayedSearchTimer = setTimeout('ajaxSearch()', 10);
	else
		delayedSearchTimer = setTimeout('ajaxSearch()', SEARCH_DELAY);
}

function remix() {
	delayedSearchTimer = null;
	// throbber:
	document.getElementById('search_throbber').style.display = 'block';
	
	try {
		var req = new Request({
			method: 'get',
			url: absolutize($('ajax_remix_url').value),
			onComplete: function(response) {
				document.getElementById('randomsearch').innerHTML = response ? response : '';
				document.getElementById('search_throbber').style.display = 'none';
			}
		}).send();
	} catch (e) {
		return true;
	}
	return false;	
}


function checkLength() {
	var id = "commentarea";
	max_length = 350; //set the max length of the form
	if ($(id).value.length >= max_length) {
		$(id).value = $(id).value.substring(0, max_length);
		$('zaehler').set('text', '0');
	} else {
		$('zaehler').set('text', 'noch ' + (max_length - $(id).value.length));
	}
}


/***************** Slider *****************/
Slider = function(conf) {
	this.conf = conf;
}
Slider.prototype.init = function() {
	this.slide_container = $(this.conf.slide_container_id);
	this.cur_page = this.conf.cur_page;
	this.max_page = Math.ceil(this.conf.item_count / this.conf.items_per_page) - 1;

	this.attachButtonEvents();

	// setting initial onclicks
	var cont = $(this.conf.slide_container_id);
	var as = cont.getElementsByTagName('a');
	var startOfs = this.cur_page * this.conf.items_per_page;
	for (var i = 0; i < as.length; i++) {
		this.prepareInitialItemLink(as[i], i + startOfs);
	};
}
Slider.prototype.attachButtonEvents = function() {
	if ($(this.conf.prev_link_id))
		$(this.conf.prev_link_id).addEvent('click', this.onPrevClick.bind(this));
	if ($(this.conf.next_link_id))
		$(this.conf.next_link_id).addEvent('click', this.onNextClick.bind(this));
}
Slider.prototype.prepareInitialItemLink = function(a, i) {
	$(a).addEvent('click', function(ev){
		ev.stop();
		this.fetchItems(function(){
			eval(this.conf.item_click_func+'('+i+')');
		}.bind(this));
	}.bind(this));
}

Slider.prototype.onPrevClick = function(ev) {
	ev.stop();
	if (this.req) // waiting for items 
		return;
	if (! this.itemsFetched) {
		this.fetchItems(this.doPrev.bind(this));
	} else {
		this.doPrev();
	}
}
Slider.prototype.doPrev = function() {
	if (! this.items || this.fx)
		return;

	var dest_page = this.cur_page - 1;

	if (this.conf && dest_page < 0)
		dest_page = this.max_page;
	if (dest_page != this.cur_page && dest_page >= 0) {
		this.slide(this.pageToOffset(this.cur_page), this.pageToOffset(dest_page));
		this.cur_page = dest_page;
	}
}

Slider.prototype.onNextClick = function(ev) {
	ev.stop();
	if (this.req) // waiting for items
		return;
	if (! this.itemsFetched) {
		this.fetchItems(this.doNext.bind(this));
	} else {
		this.doNext();
	}
}
Slider.prototype.doNext = function() {
	if (! this.items || this.fx)
		return;

	var dest_page = this.cur_page + 1;
	if (this.conf.cycle_items && dest_page > this.max_page)
		dest_page = 0;
	if (dest_page != this.cur_page && dest_page <= this.max_page) {
		this.slide(this.pageToOffset(this.cur_page), this.pageToOffset(dest_page));
		this.cur_page = dest_page;
	}
}

Slider.prototype.pageToOffset = function(page) {
	return page * this.conf.page_width;
}
Slider.prototype.slide = function(from, to) {
	this.fx = new Fx({
		duration: 1000
	})
	this.fx.set = function(value){
		this.slide_container.setStyle("left", Math.round(value));
	}.bind(this);
	this.fx.addEvent('complete', function(){
		this.onSlideComplete();
	}.bind(this));
	this.fx.start(-from, -to);
}
Slider.prototype.onSlideComplete = function() {
	this.fx = null;
	this.rerenderButtons();
}
Slider.prototype.rerenderButtons = function() {
	// rerendering buttons
	arr = [];
	if (this.cur_page > 0) {
		var html = '<a title="Videos zur&uuml;ckbl&auml;ttern" href="#" class="prev" id="'+this.conf.prev_link_id+'">Zur&uuml;ck</a>';
		arr.push(html);
	}
	if (this.cur_page < this.max_page) {
		var html = '<a title="Videos weiterbl&auml;ttern" href="#" class="next" id="'+this.conf.next_link_id+'">Weiter</a>';
		arr.push(html);		
	}
	$(this.conf.pager_container_id).innerHTML = arr.join(' | ');
	this.attachButtonEvents();
}

Slider.prototype.fetchItems = function(callback) {
	if (this.itemsFetched)
		return;
	this.showThrobber(true);
	this.req = new Request({
		method: 'get',
		url: absolutize(this.conf.items_url),
		onComplete: function(response) {
			this.onItemsArrived(response);
			callback();
		}.bind(this)
	}).send();
}
Slider.prototype.onItemsArrived = function(response) {
	this.req = null;
	var items;
	var str = 'items = '+response;
	try {
		eval(str);
	} catch (e){}
	this.items = items;
	
	var arr = [];
	for (var i = 0; i < items.length; i++) {
		var item = items[i];
		var html = '<li><a href="'+item.url+'" onclick="'+ this.conf.item_click_func +'('+i+'); return false"><img alt="'+item.title+'" src="'+item.src+'" />'+(item.dur ? '<em>'+item.dur+' </em>' : '')+item.title+'</a></li>';
		if (i > 0 && i % this.conf.items_per_page == 0)
			arr.push('</ul><ul>');
		arr.push(html);
	}
	
	var cont = $(this.conf.slide_container_id);
	cont.innerHTML = '<ul>'+arr.join('')+'</ul>';
	cont.setStyle('left', - this.pageToOffset(this.cur_page));
	this.itemsFetched = true;
	this.showThrobber(false);
}

Slider.prototype.showThrobber = function(flag) {
	if (! this.conf.throbber_id)
		return;
	$(this.conf.throbber_id).setStyle('display', flag ? 'block' : 'none');
	// $(this.conf.throbber_id).setStyle('display', 'block');
}

