/**
 * $Id: kv_view.js 13682 2010-02-26 13:30:53Z teemuk $
 *
 * @author $Author: teemuk $
 * @version $Revision: 13682 $
 */

var map = null;
var lastCenter = null;
var kvContents = [];
var kvContentIds = [];
var kvMarkers = [];
var mapButtons = {'video':false, 'image':false, 'all':true};

function kv_getCompaniesBytCat(category) {
	$('#company_container').load('json/getCompanies.phtml?id='+category);
}

function kv_initialize_map() {
	var mapElement = document.getElementById("map");
	map = new GMap2(mapElement);
	kv_setCenter('vakkasuomi');

	if( !$(mapElement).hasClass('smallmap') && !$(mapElement).hasClass('picker') ) {	
		kv_setMapControls();
	
		GEvent.addListener(map, "moveend", function() {
			var distance = lastCenter.distanceFrom(map.getCenter());
			var viewSize = map.getBounds().getSouthWest().distanceFrom(map.getBounds().getNorthEast());
			if (distance == 0) distance = 1;
			
			if (distance/viewSize >= 0.05) {
				lastCenter = map.getCenter();
			    kv_drawContents();
			}
		});
	
		lastCenter = map.getCenter();
	    kv_drawContents();
	}
    if( $('#map').hasClass('smallmap') && $('#contentlat').val() && $('#contentlong').val() ) {
    	map.addControl(new GSmallZoomControl3D());
        var latlng = new GLatLng($('#contentlat').val(),$('#contentlong').val());
        var marker = kv_marker(latlng);
        map.setZoom(10);
        map.addOverlay(marker);
        map.panTo(latlng);
    }
    
	$(window).unload(function() { GUnload(); });
	$(window).resize(function() { map.checkResize(); GEvent.trigger(map,'moveend'); });
}

function kv_setMapControls() {
	map.enableScrollWheelZoom();
	
	function KvMapControl() {
	}
	
	KvMapControl.prototype = new GControl();
	
	KvMapControl.prototype.initialize = function(map) {
		var container = document.createElement("div");

		$(container).css({
			'width': '85px',
			'height': '163px'
		});
		if( $.browser.msie && /MSIE\s(5\.5|6\.)/.test(navigator.userAgent) ) {
			/*
			$(container).css({
				'filter': "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='images/map_images/controls_bg.png', sizingMethod='crop');"
			});
			*/
		} else {
			$(container).css({
				'backgroundImage': 'url(images/map_images/controls_bg.png)'
			});
		}
		
		var zoomInDiv = document.createElement("div");
		$(container).append(zoomInDiv);
		$(zoomInDiv).append('<img src="images/map_images/zoomin.gif">');
		$(zoomInDiv).css({
			'position': 'absolute',
			'top': '25px',
			'left': '26px',
			'cursor': 'pointer'
		});
		GEvent.addDomListener(zoomInDiv, "click", function() {
			map.zoomIn();
		});

		var zoomOutDiv = document.createElement("div");
		$(container).append(zoomOutDiv);
		$(zoomOutDiv).append('<img src="images/map_images/zoomout.gif">');
		$(zoomOutDiv).css({
			'position': 'absolute',
			'top': '50px',
			'left': '26px',
			'cursor': 'pointer'
		});
		GEvent.addDomListener(zoomOutDiv, "click", function() {
			map.zoomOut();
		});

		var panLeftDiv = document.createElement("div");
		$(container).append(panLeftDiv);
		$(panLeftDiv).append('<img src="images/map_images/moveleft.gif">');
		$(panLeftDiv).css({
			'position': 'absolute',
			'top': '100px',
			'left': '20px',
			'cursor': 'pointer'
		});
		GEvent.addDomListener(panLeftDiv, "click", function() {
			map.panDirection(1,0);
		});
		
		var panRightDiv = document.createElement("div");
		$(container).append(panRightDiv);
		$(panRightDiv).append('<img src="images/map_images/moveright.gif">');
		$(panRightDiv).css({
			'position': 'absolute',
			'top': '100px',
			'left': '40px',
			'cursor': 'pointer'
		});
		GEvent.addDomListener(panRightDiv, "click", function() {
			map.panDirection(-1,0);
		});
		
		var panUpDiv = document.createElement("div");
		$(container).append(panUpDiv);
		$(panUpDiv).append('<img src="images/map_images/moveup.gif">');
		$(panUpDiv).css({
			'position': 'absolute',
			'top': '83px',
			'left': '31px',
			'cursor': 'pointer'
		});
		GEvent.addDomListener(panUpDiv, "click", function() {
			map.panDirection(0,1);
		});
		var panDownDiv = document.createElement("div");
		$(container).append(panDownDiv);
		$(panDownDiv).append('<img src="images/map_images/movedown.gif">');
		$(panDownDiv).css({
			'position': 'absolute',
			'top': '117px',
			'left': '31px',
			'cursor': 'pointer'
		});
		GEvent.addDomListener(panDownDiv, "click", function() {
			map.panDirection(0,-1);
		});
		
		map.getContainer().appendChild(container);
		return container;
	}
	
	KvMapControl.prototype.getDefaultPosition = function() {
		return new GControlPosition(G_ANCHOR_TOP_LEFT, new GSize(0, 0));
	}
	
	map.addControl(new KvMapControl());

	function KvMediaControl() {
	}
	
	KvMediaControl.prototype = new GControl();
	
	KvMediaControl.prototype.initialize = function(map) {
		var container = document.createElement("div");

		$(container).css({
			'width': '134px',
			'height': '72px'
		});
		if( $.browser.msie && /MSIE\s(5\.5|6\.)/.test(navigator.userAgent) ) {
			/*
			$(container).css({
				'filter': "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='images/map_images/filter_bg.png', sizingMethod='crop');"
			});
			*/
		} else {
			$(container).css({
				'backgroundImage': 'url(images/map_images/filter_bg.png)'
			});
		}

		var photoDiv = document.createElement("div");
		$(container).append(photoDiv);
		$(photoDiv).append('<img src="images/map_images/image_off.gif" id="imagecontrol" title="Näytä vain kuvalliset jutut">');
		$(photoDiv).css({
			'position': 'absolute',
			'top': '22px',
			'left': '20px',
			'cursor': 'pointer'
		});
		GEvent.addDomListener(photoDiv, "click", function() {
			kv_setMapMediatype('image');
		});

		var videoDiv = document.createElement("div");
		$(container).append(videoDiv);
		$(videoDiv).append('<img src="images/map_images/video_off.gif" id="videocontrol" title="Näytä vain jutut joissa videoita">');
		$(videoDiv).css({
			'position': 'absolute',
			'top': '22px',
			'left': '52px',
			'cursor': 'pointer'
		});
		GEvent.addDomListener(videoDiv, "click", function() {
			kv_setMapMediatype('video');
		});

		var textDiv = document.createElement("div");
		$(container).append(textDiv);
		$(textDiv).append('<img src="images/map_images/all.gif" id="allcontrol" title="Näytä kaikki jutut">');
		$(textDiv).css({
			'position': 'absolute',
			'top': '22px',
			'left': '83px',
			'cursor': 'pointer'
		});
		GEvent.addDomListener(textDiv, "click", function() {
			kv_setMapMediatype('all');
		});
		
		map.getContainer().appendChild(container);
		return container;
	}
	
	// By default, the control will appear in the top left corner of the
	// map with 7 pixels of padding.
	KvMediaControl.prototype.getDefaultPosition = function() {
		return new GControlPosition(G_ANCHOR_BOTTOM_LEFT, new GSize(10, 10));
	}
	
	map.addControl(new KvMediaControl());
}

function kv_setCenter(location) {
	var locations = {
		"vakkasuomi":	{ "lat": 60.758802, "long": 21.483765, "zoom": 9 },
		"uusikaupunki":	{ "lat": 60.80031, "long": 21.408931, "zoom": 11 },
		"laitila":		{ "lat": 60.874502, "long": 21.697311, "zoom": 11 },
		"kustavi":		{ "lat": 60.547996, "long": 21.356049, "zoom": 11 },
		"taivassalo":	{ "lat": 60.560992, "long": 21.616974, "zoom": 11 },
		"pyharanta":	{ "lat": 60.949526, "long": 21.446686, "zoom": 11 },
		"vehmaa":		{ "lat": 60.68335, "long": 21.711044, "zoom": 11 },
		
		"kalanti":		{ "lat": 60.8186, "long": 21.5562, "zoom": 9 }
	};
	if( locations[location] ) {
		map.setCenter(new GLatLng(locations[location]['lat'],locations[location]['long']),locations[location]['zoom']);
	}
	
}

function kv_marker(latlng, type) {
	var kalantiIcon = new GIcon(G_DEFAULT_ICON);
	kalantiIcon.shadow = false;
	kalantiIcon.shadowSize = false;
	kalantiIcon.iconSize = new GSize(20, 21);
	kalantiIcon.iconAnchor = new GPoint(19, 19);
	kalantiIcon.infoWindowAnchor = new GPoint(8, 12);
	kalantiIcon.image = $('base').attr('href') + "images/map_images/marker"+(type?"_"+type:"")+".png";
	kalantiIcon.transparent = $('base').attr('href') + "images/map_images/marker_transp.png";
	kalantiIcon.imageMap = [4,0,0,7,1,13,13,18,18,20,16,5,12,0];

	var markerOptions = { 'icon':kalantiIcon, 'draggable': false };
	var marker = new GMarker(latlng, markerOptions);
	
	return marker;
}

function kv_drawContents() {
	var bounds = map.getBounds();
	$.getJSON("json/contents.phtml",
		{
			type: 'all',
			start_lat: bounds.getSouthWest().lat(),
			start_long: bounds.getSouthWest().lng(),
			end_lat: bounds.getNorthEast().lat(),
			end_long: bounds.getNorthEast().lng()
		},
		function(data) {
			$.each(data, function(i,content) {
				if ($.inArray(content['id'],kvContentIds)==-1) {
			        var latlng = new GLatLng(content['lat'],content['long']);
			        //var marker = new GMarker(latlng, {draggable: false});
			        var type = '';
			        if ( content['imagecount'] > 0 && content['videocount'] == 0 ) {
			        	type = 'image';
			        }
			        if ( content['videocount'] > 0 && content['imagecount'] == 0 ) {
			        	type = 'video';
			        }
			        var marker = kv_marker(latlng,type);
					GEvent.addListener(marker, "click", function() {
						marker.openInfoWindowHtml(kv_createContentHtml(content));
					});
			        map.addOverlay(marker);
			        kvContentIds.push(content['id']);
			        kvContents[content['id']] = content;
			        kvMarkers[content['id']] = marker;
			        /* test:
			        if (content['id']==11) {
			        	GEvent.trigger(marker,'click');
			        }
			        */
				}
			});
		});
}

function kv_createContentHtml(content) {
	var infoContent = $('#infowindow_content').clone().css('display','block');
	var boxContent = $('#box_media').clone().css('display','block');
	var url = './jasenet/'+content['profile']+'/'+content['type']+'/'+content['shortcut']+'.html';
	
	$(infoContent).find('h1').html(content['name']);
	$(infoContent).find('.box_date').html(content['date']);
	$(infoContent).find('.box_description').html(content['description']).append('<br><a href="'+url+'">Lue Lisää</a>');
	$(infoContent).find('img.box_profilethumb').attr('src',content['profilethumbnail']);
	if (content['imagecount'] > 0 || content['videocount'] > 0) {
		boxContent.find('.box_mediathumb a').attr('href',url);
		boxContent.find('.box_mediathumb a img').attr('src',content['thumbnail']);
		if (content['imagecount'] > 0) {
			boxContent.find('.box_mediaimage').html(content['imagecount']+' kuva'+(content['imagecount']!=1?'a':''));
		}
		if (content['videocount'] > 0) {
			boxContent.find('.box_mediavideo').html(content['videocount']+' video'+(content['videocount']!=1?'a':''));
		}
		boxContent.find('.box_mediavideo').append('<p><a href="'+url+'">Katso</a></p>');
		boxContent.appendTo($(infoContent).find('.box_content'));
	} else {
		$(infoContent).find('.box_content').css('height',100);
	}
	
	return infoContent.html();
}

function kv_setMapMediatype(type) {
	var types = ['video','image','all'];
	if( mapButtons[type] == true ) {
		mapButtons['all'] = true;
		$('#'+type+'control').attr('src','images/map_images/all.gif');
		type = 'all';
	} else {
		mapButtons[type] = true;
		$('#'+type+'control').attr('src','images/map_images/'+type+'.gif');
	}
	$.each(kvContentIds,function(i,contentId) {
		var showThis = false;
		switch(type) {
			case 'all':
				showThis = true;
				break;
			case 'video':
				if( kvContents[contentId].videocount > 0 ) {
					showThis = true;
				}
				break;
			case 'image':
				if( kvContents[contentId].imagecount > 0 ) {
					showThis = true;
				}
				break;
		}
		if( showThis == true ) {
			kvMarkers[contentId].show();
		} else {
			kvMarkers[contentId].hide();
		}
	});
	
	$.each(types,function(i,eachtype) {
		if( eachtype != type ) {
			mapButtons[eachtype] = false;
			$('#'+eachtype+'control').attr('src','images/map_images/'+eachtype+'_off.gif');
		}
	});
}

function kv_viewContentAttachment(type,filename,url) {
	switch(type) {
		case 'video':
			var so = new SWFObject("http://www.kalantivayla.fi/mjs/mediaclip/1.0/player.swf", filename, "300", "300","9", "#000000");
			so.addParam("quality","high");
			so.addParam("allowscriptaccess","samedomain");
			so.addParam("allowfullscreen","true");
			so.addVariable("file", url);
			so.addVariable("streamer", url);
			so.addVariable("autostart", "true");
			so.write("mediacontainer");
			break;
		case 'image':
			$('#mediacontainer').html('<img src="'+url+'">');
			break;
	}
	return false;
}

function kv_slidePics(direction) {
	var containerHeight = $('#newestpics #container').height();
	var viewportHeight = $('#newestpics #viewport').height();
	var posPx = parseInt($('#newestpics #container').css('top'));
	
	switch(direction) {
		case 'up':
			posPx += viewportHeight;
			break;
		case 'down':
			posPx -= viewportHeight;
			break;
	}
	if( posPx == 0 ) {
		$('.arrowup img').hide();
	} else {
		$('.arrowup img').show();
	}
	if( containerHeight-(Math.abs(posPx)+20) < viewportHeight ) {
		$('.arrowdown img').hide();
	} else {
		$('.arrowdown img').show();
	}
	$('#newestpics #container').animate({top: posPx},500);
	return false;
}

function kv_slidePicsHor(direction) {
	var containerWidth= $('#newestpics #container').width();
	var viewportWidth = $('#newestpics #viewport').width();
	var posPx = parseInt($('#newestpics #container').css('left'));
	
	if (!posPx) {
		posPx = 33;
	}

	switch(direction) {
		case 'left':
			posPx += viewportWidth+12;
			break;
		case 'right':
			posPx -= viewportWidth+12;
			break;
	}
	
	if( posPx == 33 ) {
		$('.arrowleft img').hide();
	} else {
		$('.arrowleft img').show();
	}
	if( containerWidth-(Math.abs(posPx)+20) < viewportWidth) {
		$('.arrowright img').hide();
	} else {
		$('.arrowright img').show();
	}
	$('#newestpics #container').animate({left: posPx},500);
	return false;
}

function kv_slidePicsHorProducts(direction) {
	var containerWidth= $('#newestpics_products #container_products').width();
	var viewportWidth = $('#newestpics_products #viewport_products').width();
	var posPx = parseInt($('#newestpics_products #container_products').css('left'));
	
	if (!posPx) {
		posPx = 33;
	}
	
	//var posPx = $('#newestpics_products #container_products').css('left');
	//console.log('start posPx:', posPx);
	//console.log('start viewportWidth:', viewportWidth);	
	//console.log('start containerWidth:', containerWidth);
	
	//alert('start posPx:'+ posPx);

	switch(direction) {
		case 'left':
			posPx += viewportWidth+12;
			break;
		case 'right':
			posPx -= viewportWidth+12;
			break;
	}
	//console.log('posPx:', posPx);

	if( posPx == 33 ) {
		$('.arrowleft_products img').hide();
	} else {
		$('.arrowleft_products img').show();
	}
	if( containerWidth-(Math.abs(posPx)+20) < viewportWidth) {
		$('.arrowright_products img').hide();
	} else {
		$('.arrowright_products img').show();
	}
	$('#newestpics_products #container_products').animate({left: posPx},500);
	return false;
}
// On ready
$(function() {

	if( $('#map').length > 0 && !$('#map').hasClass('picker') ) {
		google.load("maps", "2", {"callback" : kv_initialize_map, "language": "fi", "other_params": "sensor=false"});

		$('.map_locations a').click(function() {
			$('.map_locations a[class=locations_selected]').removeClass('locations_selected');
			$(this).addClass('locations_selected');
			kv_setCenter(this.id.replace('locationlink_',''));
		});
	}

	$("a[rel^='prettyPhoto']").prettyPhoto();

	if( $('#newestpics').length > 0 ) {
		var containerHeight = $('#newestpics #container').height();
		var viewportHeight = $('#newestpics #viewport').height();
		
		$('.arrowup img').hide();
		if( containerHeight <= viewportHeight+20 ) {
			$('.arrowdown img').hide();
		}
		$('.arrowdown a').click(function() {
			this.blur();
			return kv_slidePics('down');
		});
		$('.arrowup a').click(function() {
			this.blur();
			return kv_slidePics('up');
		});
		
		
		// horizontal
		
		var productContainerWidth = $('#newestpics_products #container_products').height();
		var productViewportWidth = $('#newestpics_products #viewport_products').height();
		
		$('.arrowleft_products img').hide();
		if( productContainerWidth <= productViewportWidth+20 ) {
			$('.arrowleft_products img').hide();
		}
		//alert('simpukka');
		$('.arrowleft_products a').click(function() {
			this.blur();
			return kv_slidePicsHorProducts('left');
		});
		$('.arrowright_products a').click(function() {

			this.blur();
			return kv_slidePicsHorProducts('right');
		});
	
		var containerWidth = $('#newestpics #container').height();
		var viewportWidth = $('#newestpics #viewport').height();
		
		$('.arrowleft img').hide();
		if( containerWidth <= viewportWidth+20 ) {
			$('.arrowleft img').hide();
		}
		$('.arrowleft a').click(function() {

			this.blur();
			return kv_slidePicsHor('left');
		});
		$('.arrowright a').click(function() {
			this.blur();
			return kv_slidePicsHor('right');
		});
	}
	
		if ($('#add_company_form').length>0) {		
			$('#add_company_form').bind('submit', function(){
				if ($('#add_company_password2').val() == $('#add_company_password1').val()) 
				{
					return true;
				} else {
					alert('Salasanat eivät täsmää!');
					return false;	
				}
			});
		}
	
		if ($('#frontPageAllButton1').length>0) {
			$('#frontPageAllButton1').click(function(e) {
				alert($('td.leftbottom_left .multi_tabs').children());
			});
		}


});
