// JavaScript Document
SezMes = [ 1, 2, 4, 9, 11, 12];
SezVr  = [ 2, 1, 2, 3,  1,  2];
Intervali = [1, 3, 7, 15]
		//p2, v1,p2,s3,v1, p2
		
mes_sr = ['Januar','Februar','Mart','April','Maj','Juni','Juli','Avgust','Septembar','Oktobar','Novembar','Decembar'];

$.datepicker.regional['sr'] = {
	closeText: 'zatvori',
	prevText: '&#x3c;prethodni',
	nextText: 'sledeći&#x3e;',
	currentText: 'Sada',
	monthNames: mes_sr,
	monthNamesShort: ['Jan','Feb','Mar','Apr','Maj','Jun',
	'Jul','Avg','Sep','Okt','Nov','Dec'],
	/*dayNames: ['Sonntag','Montag','Dienstag','Mittwoch','Donnerstag','Freitag','Samstag'],*/
	dayNamesShort: ['Ned','Pon','Uto','Sre','Čet','Pet','Sub'],
	dayNamesMin: ['Ne','Po','Ut','Sr','Če','Pe','Su'],
	weekHeader: 'Wo',
	dateFormat: 'dd.mm.yy.',
	firstDay: 1,
	autoSize: true,
	isRTL: false,
	showMonthAfterYear: false,
	defaultDate: "-0y",
	yearRange:"+0:+1",
	maxDate: '+1y',
	minDate: new Date(),
	yearSuffix: '',
	changeMonth: false,
	changeYear: false,
	constrainInput: false,
	showAnim: 'fold'/*,
	onSelect: function(dateText, inst) { 
		CenaOdDo(dateText, inst);
	},
	onClose: function(dateText, inst) { 
		CenaOdDo(dateText, inst);
	}*/
};
$.datepicker.setDefaults($.datepicker.regional['sr']);

$.timepicker.regional['sr'] = {
	timeOnlyTitle: 'Izaberite vreme',
	timeText: 'Vreme',
	hourText: 'Sat',
	minuteText: 'Minut',
	secondText: 'Sekund',
	currentText: 'Sada',
	closeText: 'Zatvori',
	ampm: false
};
$.timepicker.setDefaults($.timepicker.regional['sr']);

var OdInit = DoInit = false;

function Cena(kal){
	sad = new Date();
	/*if(!$('#od').val()){
		zaSat = new Date();
		zaSat.setTime(sad.getTime()+1000*60*60*Do_pocetka_rezervacije);
		$('#od').val(formatDate('d.m.yy. h:ii', zaSat));
	}
	if(!$('#do').val()){
		zaSat.setTime(zaSat.getTime()+1000*60*60*24*Podrazumevani_interval+1000*60*60*Do_pocetka_rezervacije);
		$('#do').val(formatDate('d.m.yy. h:ii', zaSat));
	}*/
	oddt =  new Date();
	dodt = new Date();
	if(kal == 'do') DoInit = true;
	if(kal == 'od' && !DoInit) {
		oddt = parseDate('d.m.y. h:i', $('#od').val());
		dodt.setTime(oddt.getTime()+1000*60*60*24*Podrazumevani_interval);
		$('#do').effect('highlight', { color: 'green' });
		$('#do').val(formatDate('d.m.yy. h:ii', dodt));
		DoInit = true;
	}
	if($('#od').val() && $('#do').val()){
		oddt = parseDate('d.m.y. h:i', $('#od').val());
		dodt = parseDate('d.m.y. h:i', $('#do').val());
		
		if(kal == 'od'){
			if(oddt.getTime()>=dodt.getTime()-1000*60*60*Minimalna_rezervacija){
				dodt.setTime(oddt.getTime()+1000*60*60*24*Podrazumevani_interval);
				$('#do').effect('highlight', { color: 'green' });
			}
			
		}else if(kal == 'do') {
			if(oddt.getTime()>=dodt.getTime()-1000*60*60*Minimalna_rezervacija){
				oddt.setTime(dodt.getTime()-1000*60*60*24*Podrazumevani_interval);
				if(oddt.getTime() < sad.getTime()){
					oddt.setTime(sad.getTime()+1000*60*60*Do_pocetka_rezervacije);
					
					if(oddt.getTime() >= dodt.getTime()-1000*60*60*Minimalna_rezervacija) dodt.setTime(oddt.getTime()+1000*60*60*Minimalna_rezervacija);
				}
				$('#od').effect('highlight', { color: 'green' });
			}
		}
		$('#od').val(formatDate('d.m.yy. h:ii', oddt));
		$('#do').val(formatDate('d.m.yy. h:ii', dodt));
		
		brojDana = Math.ceil((dodt.getTime() - oddt.getTime())/1000/60/60/24);
		
		sezona = Sezona(oddt.getMonth()+1);
	} else { brojDana = 0; sezona=0; }
	if($('#kartica').val()==-1 || $('#klasa').val()==-1  || $('#lokacija').val()==-1){
		cenaDana = 0;
		$('#cena').html((brojDana*cenaDana).toFixed(2));
		$('#dan').html(cenaDana.toFixed(2));
	}else {
		cenaDana = CenaDana(brojDana, sezona, $('#klasa').val(), $('#lokacija').val()) * (1-Popust[$('#kartica').val()]/100);
		$('#dan').html(cenaDana.toFixed(2));
		$('#cena').fadeTo( 200, .5, function(){ $('#cena').html((brojDana*cenaDana).toFixed(2)); $('#cena').fadeTo(200,1); })
	}
}


function CenaDana(brojDana, sezona, klasa, lokacija){
	return Cene[lokacija][sezona-1][IntDani(brojDana)][klasa];
}
function Sezona(mes){
	for(i=0; i<Sezone[0].length; i++){
		if(mes <= Sezone[0][i]) return Sezone[1][i];
	}
}
function IntDani(brojDana){
	for(i=0; i<Intervali.length; i++)
		if(brojDana <= Intervali[i]) return i;
	return i;
}

var Oddtp, Dodtp;
$(function(){
	 sad = new Date(); zaSat = new Date();
	zaSat.setTime(sad.getTime()+1000*60*60*Do_pocetka_rezervacije);
	//$('#od').val(formatDate('d.m.yy. h:ii', zaSat));
	sad.setTime(sad.getTime()+1000*60*60*24*Podrazumevani_interval+1000*60*60*Do_pocetka_rezervacije);
	
	Oddtp = $('#od').datetimepicker({minDate: zaSat});
	//$('#od').datetimepicker('setDate', zaSat );
	
	zaSat.setTime(zaSat.getTime()+1000*60*60*Minimalna_rezervacija);
	//$('#do').val(formatDate('d.m.yy. h:ii', sad));
	Dodtp = $('#do').datetimepicker({minDate: zaSat, defaultDate: sad, hour: sad.getHours(), minute: sad.getMinutes()});
	//$('#do').datetimepicker('setDate', sad );
	
	$('#od').change(function(){Cena('od');});
	$('#do').change(function(){Cena('do');});
	$('#klasa').change(function(){Cena('');});
	$('#kartica').change(function(){Cena('');});
	$('#lokacija').change(function(){Cena('');});
	Cena();
});







function parseDate(format, value, settings) {
		if (format == null || value == null)
			throw 'Invalid arguments';
		value = (typeof value == 'object' ? value.toString() : value + '');
		if (value == '')
			return null;/*
		var shortYearCutoff = (settings ? settings.shortYearCutoff : null) || this._defaults.shortYearCutoff;
		var dayNamesShort = (settings ? settings.dayNamesShort : null) || this._defaults.dayNamesShort;
		var dayNames = (settings ? settings.dayNames : null) || this._defaults.dayNames;
		var monthNamesShort = (settings ? settings.monthNamesShort : null) || this._defaults.monthNamesShort;
		var monthNames = (settings ? settings.monthNames : null) || this._defaults.monthNames;*/
		var year = -1;
		var month = -1;
		var day = -1;
		var hour = -1;
		var minute = -1;
		var literal = false;
		// Check whether a format character is doubled
		var lookAhead = function(match) {
			var matches = (iFormat + 1 < format.length && format.charAt(iFormat + 1) == match);
			if (matches)
				iFormat++;
			return matches;	
		};
		// Extract a number from the string value
		var getNumber = function(match) {
			lookAhead(match);
			var size = (match == 'y' ? 4 : 2);
			var num = 0;
			while (size > 0 && iValue < value.length &&
					value.charAt(iValue) >= '0' && value.charAt(iValue) <= '9') {
				num = num * 10 + (value.charAt(iValue++) - 0);
				size--;
			}
			if (size == (match == 'y' ? 4 : 2))
				throw 'Missing number at position ' + iValue;
			return num;
		};
		// Extract a name from the string value and convert to an index
		var getName = function(match, shortNames, longNames) {
			var names = (lookAhead(match) ? longNames : shortNames);
			var size = 0;
			for (var j = 0; j < names.length; j++)
				size = Math.max(size, names[j].length);
			var name = '';
			var iInit = iValue;
			while (size > 0 && iValue < value.length) {
				name += value.charAt(iValue++);
				for (var i = 0; i < names.length; i++)
					if (name == names[i])
						return i + 1;
				size--;
			}
			throw 'Unknown name at position ' + iInit;
		};
		// Confirm that a literal character matches the string value
		var checkLiteral = function() {
			if (value.charAt(iValue) != format.charAt(iFormat))
				throw 'Unexpected literal at position ' + iValue;
			iValue++;
		};
		var iValue = 0;
		for (var iFormat = 0; iFormat < format.length; iFormat++) {
			if (literal)
				if (format.charAt(iFormat) == "'" && !lookAhead("'"))
					literal = false;
				else
					checkLiteral();
			else
				switch (format.charAt(iFormat)) {
					case 'h':
						hour = getNumber('h');
						break;
					case 'i':
						minute = getNumber('i');
						break;
					case 'd':
						day = getNumber('d');
						break;
					case 'D': 
						getName('D', dayNamesShort, dayNames);
						break;
					case 'm': 
						month = getNumber('m');
						break;
					case 'M':
						month = getName('M', monthNamesShort, monthNames); 
						break;
					case 'y':
						year = getNumber('y');
						break;
					case "'":
						if (lookAhead("'"))
							checkLiteral();
						else
							literal = true;
						break;
					default:
						checkLiteral();
				}
		}
		if (year < 100) {
			year += new Date().getFullYear() - new Date().getFullYear() % 100 +
				(year <= shortYearCutoff ? 0 : -100);
		}
		var date = new Date(year, month - 1, day,hour,minute);
		if (date.getFullYear() != year || date.getMonth() + 1 != month || date.getDate() != day) {
			throw 'Invalid date'; // E.g. 31/02/*
		}
		return date;
}
function formatDate(format, date, settings) {
	if (!date)
		return '';/*
	var dayNamesShort = (settings ? settings.dayNamesShort : null) || this._defaults.dayNamesShort;
	var dayNames = (settings ? settings.dayNames : null) || this._defaults.dayNames;
	var monthNamesShort = (settings ? settings.monthNamesShort : null) || this._defaults.monthNamesShort;
	var monthNames = (settings ? settings.monthNames : null) || this._defaults.monthNames;*/
	// Check whether a format character is doubled
	var lookAhead = function(match) {
		var matches = (iFormat + 1 < format.length && format.charAt(iFormat + 1) == match);
		if (matches)
			iFormat++;
		return matches;	
	};
	// Format a number, with leading zero if necessary
	var formatNumber = function(match, value) {
		return (lookAhead(match) && value < 10 ? '0' : '') + value;
	};
	// Format a name, short or long as requested
	var formatName = function(match, value, shortNames, longNames) {
		return (lookAhead(match) ? longNames[value] : shortNames[value]);
	};
	var output = '';
	var literal = false;
	if (date) {
		for (var iFormat = 0; iFormat < format.length; iFormat++) {
			if (literal)
				if (format.charAt(iFormat) == "'" && !lookAhead("'"))
					literal = false;
				else
					output += format.charAt(iFormat);
			else
				switch (format.charAt(iFormat)) {
					case 'h':
						output += formatNumber('h', date.getHours());
						break;
					case 'i':
						output += formatNumber('i', date.getMinutes());
						break;
					case 'd':
						output += Pad(formatNumber('d', date.getDate()), 2); 
						break;
					case 'D': 
						output += formatName('D', date.getDay(), dayNamesShort, dayNames);
						break;
					case 'm': 
						output += Pad(formatNumber('m', date.getMonth() + 1), 2); 
						break;
					case 'M':
						output += formatName('M', date.getMonth(), monthNamesShort, monthNames); 
						break;
					case 'y':
						output += (lookAhead('y') ? date.getFullYear() : 
							(date.getYear() % 100 < 10 ? '0' : '') + date.getYear() % 100);
						break;
					case "'":
						if (lookAhead("'"))
							output += "'";
						else
							literal = true;
						break;
					default:
						output += format.charAt(iFormat);
				}
		}
	}
	return output;
}
function Pad(number, length) {
   
    var str = '' + number;
    while (str.length < length) {
        str = '0' + str;
    }
   
    return str;

}

