/*MAIN*/
function IsNumeric (st) {
	var strValidChars = "0123456789";
	var strChar;
	var res = true;

	if (st.length == 0)
		return false;
	for (i = 0; i < st.length && res == true; i++) {
		strChar = st.charAt(i);
		if (strValidChars.indexOf(strChar) == -1)
			res = false;
	}
	return res;
}

var mapsLoaded = false,
map = null;

function init () {
	$("input[data-enables]").change(function(){
		var target = $("#id_"+$(this).data("enables"));
		var li = target.closest("li");
		if (this.checked)
			li.show('fast');
		else {
			li.hide('fast');
			target.attr("checked", false);
		}
	});
	
	$("input[data-enables]").change();

	$(".geolocate").click(openMapDialog);
	
	$(window).load(function(){
		console.log("loaded");
		mapsLoaded = true;
	});

	// basic version is: $('div.demo marquee').marquee() - but we're doing some sexy extras
//memberlist start
	var memberlist = $('#memberlist');
	var vist = 10;
	var antallmedlemmer = memberlist.find('dt').length;
	memberlist.find('dd:lt('+vist+')').show();
	memberlist.find('dt:lt('+vist+')').show();

	$('#visfleremedlemmer').click(function(){
		vist = vist + 10;
		
		memberlist.find('dd:lt('+vist+')').show();
		memberlist.find('dt:lt('+vist+')').show();
		if(vist >= antallmedlemmer){
			$('#visfleremedlemmer').hide();
		}
	});
//memberlist stopp
	$('#ticker').marquee('marquee').mouseover(function () {
		$(this).trigger('stop');
	}).mouseout(function () {
		$(this).trigger('start');
	}).mousemove(function (event) {
		if ($(this).data('drag') == true) {
			this.scrollLeft = $(this).data('scrollX') + ($(this).data('x') - event.clientX);
		}
	}).mousedown(function (event) {
		$(this).data('drag', true).data('x', event.clientX).data('scrollX', this.scrollLeft);
	}).mouseup(function () {
		$(this).data('drag', false);
	});


	$('.menypunkt').mouseover(function(){
		if ($('#topimagechooserwrap').attr('id') !== undefined) {
			temp = $(this).attr('id');
			neste = temp.substr(5);
			iliketomoveitmoveit();
		}
	});
	
	$('#wraptop').mouseover(mouseHandler).mouseout(mouseHandler);
	
	if ($('#topimagechooserwrap').attr('id') !== undefined)
		timer = setInterval('timerEvent()', 8000);
	
	$('#scroll').cycle({
		fx: 'custom',
		cssBefore: { top: 90, opacity:0 },
		animIn: { top: 0, opacity:1 },
		animOut: { top: -90, opacity:0 },
		pause: 1
	});

	// qTip-plugin
	$('img[title]').qtip({
		content: {
			text: false
		},
		style: 'cream'
	});

	// Til checkbox-cheat
	$('.checkboxCheat').live("click",function () {
		// Skal ikke kunne unchecke offentlig hvis søkbar er checked
		if ($(this).attr('id') == 'checkboxCheatOffentlig' && $('#formHiddenSokbar').val() == 'checked') 
			return false;
		
		if ($(this).attr('rel') == 'unchecked') {
			$(this).attr('src','assets/css/gfx/formCheckboxChecked.png');
			$(this).attr('rel','checked');
		}
		else {
			$(this).attr('src','assets/css/gfx/formCheckboxUnchecked.png');
			$(this).attr('rel','unchecked');
		}

		if ($(this).attr('id') == 'checkboxCheatOffentlig')
		{
			$('#formHiddenOffentlig').val($(this).attr('rel'));
		}
		else {
			$('#formHiddenSokbar').val($(this).attr('rel'));
			
			if ($('#formHiddenOffentlig').val() == 'unchecked' && $(this).attr('rel') == 'checked') {
				$('#checkboxCheatOffentlig').attr('src','assets/css/gfx/formCheckboxChecked.png');
				$('#checkboxCheatOffentlig').attr('rel','checked');
				$('#formHiddenOffentlig').val('checked');
			}
		}
	});
	
	$(function() {
		$('#id_birth_date').datepicker({
			"dateFormat" : 'dd-mm-yy',
			'dayNames' : ['Søndag', 'Mandag', 'Tirsdag', 'onsdag', 'Torsdag', 'Fredag', 'Lørdag'],
			'dayNamesMin': ['Sø', 'Ma', 'Ti', 'On', 'To', 'Fr', 'Lø'],
			'dayNamesShort' : ['Søn', 'Man', 'Tir', 'Ons', 'Tor', 'Fre', 'Lør'],
			'firstDay' : 1,
			'monthNames' : ['Januar', 'Februar', 'Mars', 'April', 'Mai', 'Juni', 'Juli', 'August', 'September', 'Oktober', 'November', 'Desember'],
			'monthNamesShort' : ['Jan', 'Feb', 'Mar', 'Apr', 'Mai', 'Jun', 'Jul', 'Aug', 'Sep', 'Okt', 'Nov', 'Des'],
			'yearRange' : '1940:2010',
			'changeYear' : true
		});
	});
	
	$('#profileForm').submit(function() {
		if ($('#formHiddenSokbar').val() == 'checked') {
			if ($('#id_lat').val() == '0.000000' && $('#id_lng').val() == '0.000000') {
				alert('Hvis du ønsker å være søkbar må vi ha posisjonen din. Du får det ved å starte å taste inn din golfklubb og velge den fra listen som dukker opp under.');
				return false;
			}
			else
				return true;
		}
		else
			return true;
	});
	
	$('#bio').keydown(function(e) {
		if (e.keyCode == '8')
			return true;
		var arr = $('#bio').val().split(/[\n\r]/g);
		var count = arr.length;
		if (count > 6 && e.keyCode == '13')
			return false;
		
		if (((450-parseInt($(this).val().length))) == 0)
			return false;
	});
	
	$('#bio').keyup(function(e) {
		var left = (450-parseInt($('#bio').val().length));
		if (left == 0)
			$('#bioCharLeft').html('Ingen tegn igjen');
		else
			$('#bioCharLeft').html(left + ' tegn igjen');
		setcolor(left);
	});
	
	function bioCountLoad () {
		var left = (450-parseInt($('#bio').val().length));
		if (left == 0)
			$('#bioCharLeft').html('Ingen tegn igjen');
		else
			$('#bioCharLeft').html(left + ' tegn igjen');
		setcolor(left);
	}
	
	function setcolor (e) {
		var ipt = 450 - e;
		var r =  Math.floor(163+(62/450)*ipt);
		var g = Math.floor(164-((164/450)*ipt));
		var b = Math.floor(168-((168/450)*ipt));
		$('#bioCharLeft').css('color','rgb('+r+','+g+','+b+')');
	}
	
	// Er på innstillings-siden?
	if ($('#bio').val() !== undefined) {
		// Henter antall tegn som er igjen i bio-feltet
		bioCountLoad();
		
		// Preloader bilder som trengs
		imgClck = new Image();
		imgClck.src = "assets/css/gfx/formBrowseClck.png";
	}
	
	$('.realupload').live("click", function () {
		$('.hackatron').css({'background':'url(assets/css/gfx/formBrowseClck.png) center center no-repeat'});
		setTimeout(function () { $('.hackatron').css({'background':'url(assets/css/gfx/formBrowse.png) center center no-repeat'})},250);
	});
	
	// Workaround thomas x2
	$('#location_selectorBtn, #location_selector_x').live('click', function () {
		$('#location_selector').remove();
		return false;
	});
	
	$( "#id_club_name" ).autocomplete({
		source: "assets/ajax/klubber.php",
		minLength: 2,
		select: function( event, ui ) {
			$('#id_club_address').val('Laster...').attr('disabled',true);
			$('#id_club_postal_code').val('Laster...').attr('disabled',true);
			$('#id_club_city').val('Laster...').attr('disabled',true);
			$('#id_club_website').val('Laster...').attr('disabled',true);
			
			$.ajax({
				url: "assets/ajax/klubb.php?id="+ui.item.id,
				cache: false,
				success: function(json) {
					var result = jQuery.parseJSON(json);
					if (result['error'] == 1)
						alert('Noe gikk galt!');
					else {
						$('#id_club_address').val(result['adresse']).attr('disabled',false);
						$('#id_club_postal_code').val(result['postnr']).attr('disabled',false);
						$('#id_club_city').val(result['poststed']).attr('disabled',false);
						$('#id_club_website').val(result['www']).attr('disabled',false);
						
						$('#id_lat').val(result['lat']);
						$('#id_lng').val(result['lng']);
					}
				}
			});
		}
	});
	
	// Submit formen om man ikke har satt geokordinater
	$('#profileForm').submit(function() {
		if($('#id_lat').val() == 0.000000 && $('#formHiddenSokbar').val() == 'unchecked') {
			var r = confirm('Du har ikke fylt ut hvilke golfklubb du hører til. Selv om du har valgt å ikke være søkbar er det fint om du registrerer dette. Ønsker du å fylle det ut nå?');
			if (r == true) {
				return false;
			}
			else {
				return true;
			}
		}
	});
}

function openMapDialog() {
	if (!google)
		setTimeout(openMapDialog, 1000);
	else {
		// Fields for populating lat and lng
		var lat = $("#id_lat");
		var lng = $("#id_lng");

		var defaultLocation = new google.maps.LatLng(61.143235, 9.09668);
		var startLocation = false;

		if (lat.val().length != 0 && lng.val().length != 0) {
			startLocation = new google.maps.LatLng(lat.val(), lng.val());
			latlng = startLocation;
		}
		else
			latlng = defaultLocation; // Oslo

		$.get("assets/templates/modal_map.html", function(data, xhr) {
			$("body").append(data);
			var modal = $("#location_selector");
			modal.overlay({
				mask: {
					color: "#333",
					loadSpeed: 200,
					opacity: 0.8
				},
				closeOnClick: false,
				load: true
			});

			// Workaround thomas gogo
			$('#location_selector').show();
			
			map = new google.maps.Map(modal.find(".map_container")[0], {
				zoom: 5,
				center: latlng,
				mapTypeId: google.maps.MapTypeId.ROADMAP
			});
			
			var geocoder = new google.maps.Geocoder();
			var marker = new google.maps.Marker({map: map});

			if (startLocation) {
				marker.setPosition(startLocation);
				map.setZoom(7);
			}

			modal.find(".reset").click(function() {
				map.setCenter(startLocation);
				lat.val(latlng.lat());
				lng.val(latlng.lat());
				marker.setVisible(!!startLocation);
			});

			var search = function() {
				// Vise informasjon
				$('.locInformasjon').show();
				
				// Search
				var q = $('#map_search').val();
				var geocode = geocoder.geocode({
					address: q,
					region: 'no'
				}, function(results, status) {
					if (status == google.maps.GeocoderStatus.OK) {
						var loc = results[0].geometry.location;
						map.setCenter(loc);
						map.setZoom(7);
						marker.setPosition(loc);

						lat.val(loc.lat());
						lng.val(loc.lng());
						$('.location .address').html("<b>Resultat:</b> "+results[0].formatted_address + '<br />');
						$('input[name=location_address]').val(results[0].formatted_address);
						
						// Fyller inn i feltene
						var resS = results[0].formatted_address.split(", ");
						var fantPostNr = false;
						var postNrArrayi = 0;
						for (var i = 0;i<resS.length;i++) {
							if (IsNumeric(resS[i])) {
								fantPostNr = true;
								postNrArrayi = i;
							}
						}
						
						if (fantPostNr == true) {
							if (postNrArrayi != 0)
								$('#id_club_address').val(resS[postNrArrayi-1]);
							$('#id_club_postal_code').val(resS[postNrArrayi]);
							if (postNrArrayi < (resS.length-1))
								$('#id_club_city').val(resS[postNrArrayi+1]);
						}
						else
						{
							$('#id_club_address').val(resS[0]);
							if (resS.length > 1)
								$('#id_club_city').val(resS[1]);
							$('#id_club_postal_code').val('');
						}
					}
					else {
						modal.find(".output").text("Kunne ikke finne adressen.");
					}
				});
			}
			
			$("#location_selector #map_search").keypress(function(e){
				if (e.keyCode == 13)
					search();
			});
			
			$("#map_searchBtn").keypress(function(e){
				if (e.keyCode == 13)
					search();
			});
			
			$("#location_selector #map_search").blur(function(){
				search();
			});
		});
	}

	return false;
}

function gotMapResponse(data) {
	console.log(data);
}

function iliketomoveitmoveit() {
	$('#meny_' + aktiv).removeClass('active');
	$('#img_' + aktiv).removeClass('active');
	$('#meny_' + neste).addClass('active');
	$('#img_' + neste).addClass('active');
	aktiv = neste;
	if (aktiv == 1)
		$('#proforma').show();
	else
		$('#proforma').hide();
}

function timerEvent() {
	if (active) {
		temp = $('.menypunkt.active').attr('id');
		aktiv = temp.substr(5);
		neste = aktiv;
		neste++;
		if(neste > 3)
			neste = 1;
		iliketomoveitmoveit();
	}
}

function mouseHandler () {
	active = !active;
} 

var aktiv = '1';
var neste = '';
var temp = '';
var timer;
var active = true;
$(document).ready(init);
