var kunstnerAutocomplete = [];
var pageTracker = null;
var initialize = function() {
	if ($('kunstnerTabs')) make_kunstner_links();
	init_javascript();
	
}

var searchSelectArea = function(ele) {
	if ($F(ele)) {
		var id = $F(ele);
		var test = 'area'+id;
		if ($('landsdelReal')) {
			$('landsdelReal').parentNode.removeChild($('landsdelReal'));
		}
		var cityReal = new Element('select',{id:'landsdelReal',name:'landsdel'});
		var cityHolder = $('landsdelHolder');
		var optCount = 0;
		$$('#landsdel option').each(function(opt){
			if (opt.value == 0 || opt.hasClassName(test)) {
				var option = new Option(opt.text,opt.value);
				cityReal.options[optCount] = option;
				++optCount;
			}
		})
		if (optCount > 2) {
			cityHolder.appendChild(cityReal);
		}
	}
}

var searchSelectLandsdel = function(ele) {
	if ($F(ele)) {
		var id = $F(ele);
		var test = 'landsdel'+id;
		if ($('cityReal')) {
			$('cityReal').parentNode.removeChild($('cityReal'));
		}
		var cityReal = new Element('select',{id:'cityReal',name:'city'});
		var cityHolder = $('cityHolder');
		var optCount = 0;
		$$('#city option').each(function(opt){
			if (opt.value == 0 || opt.hasClassName(test)) {
				var option = new Option(opt.text,opt.value);
				cityReal.options[optCount] = option;
				++optCount;
			}
		})
		if (optCount > 1) {
			cityHolder.appendChild(cityReal);
		}
	}
}

var searchSelectLimit = function(form,fLimit,limit) {
	$(fLimit).value = limit;
	var txt = $('searchResults') ? $('searchResults') : form;
	if ($('searchLoad')) $('searchLoad').show();
	$(form).request({
			onComplete:function(xml,json) {
				txt.update(xml.responseText);
				if ($('searchLoad')) $('searchLoad').hide();
				//init_javascript();
				return false;
			}
		}
	);
}


var doSearch = function(form) {
	var txt = $('searchResults') ? $('searchResults') : form;
	$(form).request({
			onComplete:function(xml,json) {
				txt.update(xml.responseText);
				if ($('searchLoad')) $('searchLoad').hide();
				//init_javascript();
				return false;
			}
		}
	);
}

var init_javascript = function() {
	fix_favoritter();
	fix_forms();
	fix_booking();
	fix_sendtofriend();
	fix_targets();
	fix_topsearch();
}

var fix_topsearch = function() {
	$('lookingGlass').down('a').onclick = function() {
		var v = $F($('lookingGlass').down('input'));
		location.href = '/search.html?q='+escape(v);
		return false;
	}
	$('lookingGlass').down('input').onkeypress = function(e) {
		var e = Event.extend(e);
		var k = e.keyCode;
		if (Prototype.Browser.IE) {
			var k = window.event.keyCode;
		}
		if (k == Event.KEY_RETURN) {
			$('lookingGlass').down('a').onclick();
		}
	}
}

var fix_targets = function() {
	$$('a.new-win').each(function(ele){
			ele.onclick = function() {
				window.open(ele.href);
				return false;
			}
		}
	);
}

var fix_favoritter = function() {
	$$('.kategori-favorit').each(function(link){
		link.onclick = favorit_kunstner;
	});
}

var fix_sendtofriend = function() {
	if (a = $('togglesendtofriend')) {
		var div = $('sendtofriend');
		a.onclick = function() {
			switch(div.visible()) {
				case true:
					new Effect.Fade(div,{
							duration:.2
						}
					);
				break;
				case false:
					new Effect.Appear(div,{
							duration:.4
						}
					);
				break;
			}
			return false;
		}
		$$('#sendtofriend input').each(function(input){
				input.setAttribute('tmpvalue',input.value);
				input.onfocus = function() {
					var val = $F(this);
					var tmp = this.getAttribute('tmpvalue');
					if (val && val == tmp) {
						this.value = '';
					} else if (!val) {
						this.value = tmp;
					}
				}
				input.onblur = function() {
					var val = this.value;
					var tmp = this.getAttribute('tmpvalue');
					if (!val) {
						this.value = tmp;
					}
				}
			}
		);
	}
}

var booking_last = '';
var fix_booking_add_kunstner = function(str) {
	if (booking_last.capitalize() != str.capitalize() && str.strip()) {
		var label = new Element('label');
		var span = new Element('span').update("&nbsp;");
		var del = new Element('a',{'class':'icon icon-del',title:'Fjern denne kunstner fra forespørgslen',href:'#'});
		var strong = new Element('strong').update(str);
		var input = new Element('input',{type:'hidden',name:'kunstnere[]',value:str});
		label.appendChild(span)
		label.appendChild(del)
		label.appendChild(strong)
		label.appendChild(input)
		$('booking_list').appendChild(label);
		del.onclick = function() {
			return fix_booking_del(del);
		}
		booking_last = str;
		$('kunstner').value = '';
	}
}

var fix_booking_del = function(ele) {
	var lbl = ele.up('label');
	new Effect.Opacity(lbl,{
			duration:.3,
			transition: Effect.Transitions.linear,
			from:1,
			to:.2,
			afterFinish: function() {
				lbl.up().removeChild(lbl);
			}
		}
	);
	return false;
}

var fix_booking = function() {
	if ($('booking_list')) {
		$$('.booking-kunstner-del').each(function(ele){
				ele.onclick = function() {
					return fix_booking_del($(ele));
				}
			}
		);
	}
	if ($('autocompleteholder') && kunstnerAutocomplete.length > 0) {
		var auto = new Autocompleter.Local('kunstner','autocompleteholder',kunstnerAutocomplete,{
				fullSearch: true,
				partialSearch: true,
				onHide: function(element, update){ 
					new Effect.Fade(update,{duration:0.15});
				//	fix_booking_add_kunstner($F(element));
				}
			}
		);
		$('kunstner').onkeypress = function(e) {
			var e = Event.extend(e);
			if (Prototype.Browser.IE) {
				var k = window.event.keyCode;
			} else {
				var k = e.keyCode;
			}
			if (k == Event.KEY_RETURN) { // enter
				fix_booking_add_kunstner($F('kunstner'));
				return false;
			}
		}
	}
	/*
	if ($('postnr') && $('bynavn')) {
		$('postnr').onkeyup = function(e) {
			var val = $F(Event.element(e));
			if (val && val.length >= 3) {
				var ax = new Ajax.Request('/postnr',{
						method:'post',
						parameters:val,
						onComplete:function(xml,json) {
							if (json['bynavn']) {
								$('bynavn').value = json['bynavn'];
							}
						}
					}
				);
			}
		}
	}
	*/
}

var upInt = {};
var favorit_kunstner = function() {
	var parms = {kunstner:this.getAttribute('rel')};
	var icon = this.down() ? this.down() : this;
	var up = this.up('.favorit-liste') || false;
	var ax = new Ajax.Request('/favorit',{
			method:'post',
			parameters:Object.toJSON(parms),
			onComplete: function(xml,json) {
				switch(json.favorit) {
					case 'true':
						icon.title = (icon.title.gsub('Tilføj','Fjern'));
						icon.removeClassName('icon-star');
						icon.addClassName('icon-star-white');
						if (up) {
							up.setOpacity(1);
							window.clearTimeout(upInt[up.identify()]);
						}
					break;
					case 'false':
						icon.title = (icon.title.gsub('Fjern','Tilføj'));
						icon.removeClassName('icon-star-white');
						icon.addClassName('icon-star');
						if (up) {
							up.setOpacity(.5);
							var hr = up.next('.hr-light');
							upInt[up.identify()] = window.setTimeout(function(){
								icon.parentNode.removeChild(icon);
								new Effect.Fade(up,{
										duration:.5,
										afterFinish: function() {
											up.parentNode.removeChild(up);
											hr.parentNode.removeChild(hr);
											var left = $$('.favorit-liste').length;
											if (left == 0) {
												favorit_ryd(true);
											}
										}
									}
								);
							},2000);
						}
					break;
				}
			}
		}
	);
	return false;
}

var favorit_ryd = function() {
	var skipEffects = arguments[0] || false;
	var parms = {clearall:true};
	var ax = new Ajax.Request('/favorit',{
			method:'post',
			parameters:Object.toJSON(parms),
			onComplete: function(xml,json) {
				switch(json.favorit) {
					case 'true':
						alert('Favoritlisten kunne ikke ryddes');
					break;
					case 'false':
						var liste = $$('.kategori-liste')[0];
						if (skipEffects == true) {
							liste.parentNode.removeChild(liste);
							$('kunstnerFunktioner').hide();
							$$('.kategori-tekst')[0].show();
						} else {
							new Effect.Fade(liste,{
									duration:.5,
									afterFinish: function() {
										liste.parentNode.removeChild(liste);
										$('kunstnerFunktioner').hide();
										$$('.kategori-tekst')[0].show();
									}
								}
							);
						}
					break;
				}
			}
		}
	);
	return false;
}

var fix_forms = function() {
	//var txt = $('kunstner_text');
	$$('form').each(function(form){
			var txt = $('searchResults') ? $('searchResults') : form;
			form.onsubmit = function() {
				return false;
			}
			var vali = new Validation(form,{
					useTitles:true,
					onFormValidate:function(validated,form) {
						if (validated == true) {
							$(form).onsubmit = function() {
								return false;
							}
							if ($('searchLoad')) $('searchLoad').show();
							$(form).request({
									onComplete:function(xml,json) {
										txt.update(xml.responseText);
										if ($('searchLoad')) $('searchLoad').hide();
										if (!$('searchResults')) init_javascript();
										if (friend = txt.up('#sendtofriend')) {
											setTimeout(function(){
												new Effect.Fade(friend,{
														duration:.3
													}
												);
											},3000);
										}
										return false;
									}
								}
							);
							return false;
						}
					}
				}
			);
		}
	);
}

var kunstner_current_page = false;
var make_kunstner_links = function() {
	var links = $$('#kunstnerTabs a');
	var txt = $('kunstner_text');
	var effects = false;
	links.each(function(link){
		switch (link.id) {
			case 'kunstner_favorit':
				link.onclick = favorit_kunstner;
			break;
			case 'favorit_ryd':
				link.onclick = favorit_ryd;
			break;
			default:
        if ($(link).hasClassName('no-xhr')) break;
				link.onclick = function() {
					links.each(function(icon){
						$($(icon).down()).removeClassName('icon-active');
					});
					if (!Prototype.Browser.IE)
						$($(this).down()).addClassName('icon-active');
					if (kunstner_current_page == this.href) {
					//	return false;
					} else {
						kunstner_current_page = this.href;
					}
					var parms = {url:basename(this.href).sub('.html',''),id:this.id.sub('kunstner_','')};
					if (parms.url == 'favoritter') {
						$('kunstnerFunktioner').hide();
					}
					var effectdone = false;
					var linkdone = false;
					var showtext = function(ele,html) {
						clearInterval(linkdone);
						if (effectdone) {
							ele.update(html);
							if (effects == true) {
								new Effect.BlindDown(ele);
							}
							fix_forms();
							fix_booking();
							effectdone = false;
						} else {
							linkdone = setTimeout(function(){showtext(ele,html)},100);
						}
					}
					var ax = new Ajax.Request('/info',{
						parameters:Object.toJSON(parms),
						onCreate: function() {
							if (effects == true) {
								new Effect.BlindUp(txt,{
									afterFinish:function() {
										effectdone = true;
										txt.update('');
									}
								});
							} else {
								effectdone = true;
								txt.update('Vent venligts...');
							}
						},
						onSuccess: function(xml) {
							var html = xml.responseText;
//							if (console && console.log) {
//								console.log(xml);
//							}
//							if (!html) {
//								alert($H(xml).toJSON());
//							}
							showtext(txt,html);
							fix_topsearch();
						}
					});
					return false;
				}
			break;
		}
	})
}

var basename = function(name) {
	var baseA = name.split('/');
	var newName = baseA[baseA.length-1];
	return newName;	
}
