$(document).ready( function() {
	/* START obsługa kliknięć na liście z artykułami */
	$('a').click( function() {
		var linkThis = $(this).attr('href');
		var reloadContent = $(this).attr('rel');
		if (linkThis.substring(0,2)=='#!'&&$(this).attr('rel')) {
			var daddy = $(this).parent().parent();
			$(daddy).children().children().each( function(){
				$(this).removeClass('active');
			})
			$(this).addClass('active');
			reloadSpecifyContent(linkThis, reloadContent);
		}
	});
	/* END obsługa kliknięć na liście z artykułami */
	var relIncrement=0;
	var rellinks = new Array;
	var relRels;
	/* START odpalanie pierwszego linku ajaxowego (jak jest) jeśli nie ma #! w linku */
	$('a').each(function() {
		if ($(this).attr('href') != undefined && $(this).attr('href').substring(0,2)=='#!'&&$(this).attr('rel')) {
			relRels = $(this).attr('rel');
			rellinks[relIncrement]=$(this).attr('href');
			relIncrement++;
		}
	});
	if (rellinks[0]&&relRels) {
		reloadSpecifyContent(rellinks[0],relRels);
	}
	/* END odpalanie pierwszego linku ajaxowego (jak jest) jeśli nie ma #! w linku */
	/* START zczytywanie czy link jest wklejony i czy trzeba załadować konkretny artykuł */
	var currentLocation = window.location;
	var re = /\#\!/;
	var hashDetector = re.exec(currentLocation);
	if (hashDetector) {
		var myString = new String(currentLocation); 
		var myArray = myString.split('#!'); 
		var slugFromLink = myArray[1]; 
		$('a').each( function() {
			if ($(this).attr('href')=='#!'+slugFromLink) {
				$(this).addClass('active');
				reloadSpecifyContent('#!'+slugFromLink, $(this).attr('rel'));
			}
		});
	}
	/* END zczytywanie czy link jest wklejony i czy trzeba załadować konkretny artykuł */
});
function reloadSpecifyContent(action,contentID) {
	$('#'+contentID).load('/ajx-article.php?id='+action.substring(2,action.length));
}

function trim (str, charlist) {
    // http://kevin.vanzonneveld.net
    // +   original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +   improved by: mdsjack (http://www.mdsjack.bo.it)
    // +   improved by: Alexander Ermolaev (http://snippets.dzone.com/user/AlexanderErmolaev)
    // +      input by: Erkekjetter
    // +   improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +      input by: DxGx
    // +   improved by: Steven Levithan (http://blog.stevenlevithan.com)
    // +    tweaked by: Jack
    // +   bugfixed by: Onno Marsman
    // *     example 1: trim('    Kevin van Zonneveld    ');
    // *     returns 1: 'Kevin van Zonneveld'
    // *     example 2: trim('Hello World', 'Hdle');
    // *     returns 2: 'o Wor'
    // *     example 3: trim(16, 1);
    // *     returns 3: 6
    var whitespace, l = 0,
        i = 0;
    str += '';

    if (!charlist) {
        // default list
        whitespace = " \n\r\t\f\x0b\xa0\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u200b\u2028\u2029\u3000";
    } else {
        // preg_quote custom list
        charlist += '';
        whitespace = charlist.replace(/([\[\]\(\)\.\?\/\*\{\}\+\$\^\:])/g, '$1');
    }

    l = str.length;
    for (i = 0; i < l; i++) {
        if (whitespace.indexOf(str.charAt(i)) === -1) {
            str = str.substring(i);
            break;
        }
    }

    l = str.length;
    for (i = l - 1; i >= 0; i--) {
        if (whitespace.indexOf(str.charAt(i)) === -1) {
            str = str.substring(0, i + 1);
            break;
        }
    }
    return whitespace.indexOf(str.charAt(0)) === -1 ? str : '';
}

/* Lokalizacja dla datepickerów */
jQuery(function($){
	$.datepicker.regional['pl'] = {
		closeText: 'Zamknij',
		prevText: '&#x3c;Poprzedni',
		nextText: 'Następny&#x3e;',
		currentText: 'Dziś',
		monthNames: ['Styczeń','Luty','Marzec','Kwiecień','Maj','Czerwiec',
		'Lipiec','Sierpień','Wrzesień','Październik','Listopad','Grudzień'],
		monthNamesShort: ['Sty','Lu','Mar','Kw','Maj','Cze',
		'Lip','Sie','Wrz','Pa','Lis','Gru'],
		dayNames: ['Niedziela','Poniedziałek','Wtorek','Środa','Czwartek','Piątek','Sobota'],
		dayNamesShort: ['Nie','Pn','Wt','Śr','Czw','Pt','So'],
		dayNamesMin: ['Nd','Pn','Wt','Śr','Cz','Pt','So'],
		weekHeader: 'Tydz.',
		dateFormat: 'yy-mm-dd',
		firstDay: 1,
		isRTL: false,
		showMonthAfterYear: false,
		yearSuffix: ''};
	$.datepicker.setDefaults($.datepicker.regional['pl']);
});

function trimThat() {
	var odd = $('#od').attr('value');
	var doo = $('#do').attr('value');
	$('#od').attr('value', trim(odd));
	$('#do').attr('value', trim(doo));
}

$.trimThat = function() {
	var odd = $('#od').attr('value');
	var doo = $('#do').attr('value');
	$('#od').attr('value', trim(odd));
	$('#do').attr('value', trim(doo));
}

$(function() {
	$.Lightbox.construct({
		"text": {
			"image":		"Zdjęcie",
			"of":			"z",
			"close":		"Zamknij",
			"closeInfo":	"",
			"download":		"Zapisz",
			"help": {
				"close":	"",
				"interact":	""
			},
			"about": {
				"text":		"",
				"title":	"",
				"link":		""
			}
		},
		"files": {
			"images": {
				"prev":		"images/prev.png",
				"next":		"images/next.png"
			}
		}
	});
});

$.maxZIndex = $.fn.maxZIndex = function(opt) {
	// <summary>
	// Returns the max zOrder in the document (no parameter)
	// Sets max zOrder by passing a non-zero number
	// which gets added to the highest zOrder.
	// </summary>    
	// <param name="opt" type="object">
	// inc: increment value, 
	// group: selector for zIndex elements to find max for
	// </param>
	// <returns type="jQuery" />
	var def = {inc: 10, group: "*"};
	$.extend(def, opt);
	var zmax = 0;
	$(def.group).each(function() {
		var cur = parseInt($(this).css('z-index'));
		zmax = cur > zmax ? cur : zmax;
	});
	if (!this.jquery)
		return zmax;

	return this.each(function() {
		zmax += def.inc;
		$(this).css("z-index", zmax);
	});
}

// GOOGLE MAP START
function showMarkers(map,id) {

  var image = '/images/gmap-point-active.png';
  var bounds = new google.maps.LatLngBounds();

  for (i=0; i<markers[id].length; i++) {

    var lat = markers[id][i].lat;
    var lng = markers[id][i].lng;
    
    var point = new google.maps.LatLng( lat, lng );
    
    var marker = new google.maps.Marker({
      //icon:     image,
      title:    markers[id][i].title,
      position: point, 
      map:      map 
    });
    
    bounds.extend(point);
    
    if (markers[id][i].url) {
      marker.url = markers[id][i].url; 
      google.maps.event.addListener(marker, 'click', function() {
        /*if (this.url.indexOf("http://")!=-1) {
          window.open(this.url,'_blank');
        } else {
          window.open(this.url,'_self');
        }*/
        window.open(this.url,'_self');
      });     
    }    
  }
  
  if (markers[id].length > 1) {
    map.fitBounds(bounds);
  } else {
    map.setCenter(point);
    map.setZoom(9);
  }
}

function mapInit(contID,dataID) {
  var latlng = new google.maps.LatLng(0,0);
  var mapOptions = {
    backgroundColor: '#ffffff',
    zoom: 0,
    center: latlng,
    streetViewControl: false,
    mapTypeControl: true,
    mapTypeId: google.maps.MapTypeId.HYBRID
  };

  if (window.markers) {
    var map = new google.maps.Map(document.getElementById('gmap-'+contID),mapOptions);
    showMarkers(map,dataID);
  } else {
    var targetGmap = '#gmap-'+contID;
    $(targetGmap).html('<em>Brak danych do wyświetlenia mapy!</em>');
  }
}
// GOOGLE MAP STOP

/***
 * Przypominanie hasła klienta
 */
var dialogStandardButtons = {
	"Anuluj": function(event) {
		$(this).dialog('close');
	},
	"Przypomnij": function() {
		if ($('#remind-password').validate().form()) {
			remindPasswordEmail();
		}
	}
};

$('document').ready(function() {
	$('#forgotten-password-dialog').dialog({
		modal: true,
		title: 'Przypominanie hasła',
		draggable: false,
		closeOnEscape: false,
		resizable: false,
		autoOpen: false,
		buttons: dialogStandardButtons,
		open: function(event, ui) {
			$(this).dialog('option', 'buttons', dialogStandardButtons);

			if ($('#email').val() != '')
				$('#remind-email').val($('#email').val());
			if ($('#login_email').val() != '')
				$('#remind-email').val($('#login_email').val());
		},
		close: function(event, ui) {
			$('#remind-password').val('');
			$('#remind-password-errors').html('');
			$('#remind-password-loader, #remind-password-result').hide();
			$('#remind-password-form').show();
		}
	});

	$('body').delegate('#forgotten-password', 'click', function(e) {
		e.preventDefault();
		$('#forgotten-password-dialog').dialog('open');
	});

	if (jQuery.fn.validate) {
		$('#remind-password').validate({
			submitHandler: function(form) {
			},
			errorPlacement: function(error, element) {
				$('#remind-password-errors').html(error);
			}
		});
	}
});

remindPasswordEmail = function() {
	$.remindPasswordMessage = '';
	
	$.ajax({
		url: '/templates/clients/ajx-remindPassword.php',
		type: 'post',
		dataType: 'json',
		data: {
			email: $('#remind-email').val()
		},
		success: function(msg) {
			if (msg !== undefined && msg.result !== undefined && msg.result !== '') {
				if (msg.result == 'ok') {
					$.remindPasswordMessage = 'E&ndash;mail z przypomnieniem hasła został wysłany na podany adres.';
					hideDialogSendButton();
				}
				else if (msg.result == 'no_client') {
					$.remindPasswordMessage = 'Żaden klient nie jest zarejestrowany pod podanym adresem. Jeśli chcesz założyć konto, kliknij tutaj:<br /><a href="/rejestracja.html" target="_blank" class="link_orange">http://wygodatravel.pl/rejestracja.html</a>';
					hideDialogSendButton();
				}
				else {
					$.remindPasswordMessage = 'Wystąpił błąd systemowy. Prosimy spróbować ponownie.';
				}
			}
		},
		error: function() {
			$('#remind-password-loader').hide();
			$('#remind-password-form').slideDown();
		},
		beforeSend: function() {
			$('#remind-password-form').hide();
			$('#remind-password-loader').show();
		},
		complete: function() {
			$('#remind-password-loader').hide();
			$('#remind-password-result').html($.remindPasswordMessage).slideDown();
		}
	});
};

hideDialogSendButton = function() {
	$('#forgotten-password-dialog').dialog('option', 'buttons', {
		"Zamknij": function(event) {
			$(this).dialog('close');
		}
	});
};

showDialogSendButton = function() {
	$('#forgotten-password-dialog').dialog('option', 'buttons', dialogStandardButtons);
};
