﻿/***************************************************************************/
/******************* COMMON FUNCTIONS START ********************************/
/***************************************************************************/
var xmlhttp;
function GetXmlHttpObject(){
	if (window.XMLHttpRequest)	  {
	  	// code for IE7+, Firefox, Chrome, Opera, Safari
	  	return new XMLHttpRequest();
	}
	if (window.ActiveXObject) {
	  	// code for IE6, IE5
		return new ActiveXObject("Microsoft.XMLHTTP");
	}
	return null;
}

function parsePHPDateToShow(datum){
	var myStringList = datum.split('-');
	return myStringList[2] + "." + myStringList[1] + ".";
}
function parsePHPTimeToShow(vrijeme){
	return vrijeme.substring ( 0, 2) + ":" + vrijeme.substring ( 2, 4);
}

function showLoading(msg){
	grayOut(true);
	var divTermini = document.getElementById("loading");
	divTermini.style.display="block";
	document.getElementById("loading-msg").innerHTML=msg;
	
}
function hideLoading(){
	grayOut(false);
	var divTermini = document.getElementById("loading");
	divTermini.style.display="none";
	grayOut(false);
}
function showErrorMsg(errorMsg){
		var errorDiv = document.getElementById("error");
		if (errorDiv) {
			errorDiv.innerHTML = errorMsg;
			errorDiv.style.display = 'block';
		}		
}
function hideErrorMsg(){
	var errorDiv = document.getElementById("error");
	if(errorDiv)
		errorDiv.style.display='none';		
}
/***************************************************************************/
/******************* COMMON FUNCTIONS END***********************************/
/***************************************************************************/



/***************************************************************************/
/******************* RESERVATION FUNCTIONS START ***************************/
/***************************************************************************/
var reserv_date = null;
var reserv_time = null;
var reserv_mjesto = null;

function selectActiveDate(datum){
	if(reserv_date != null){
		var calItem = document.getElementById(reserv_date);
		if(calItem)
			calItem.style.border='none';		
	}
	reserv_date = datum;
	var calItem = document.getElementById(reserv_date);
	if(calItem)
		calItem.style.border='solid 3px #B00';
}

function selectActiveTermin(termin){
	if(reserv_time != null){
		var calItem = document.getElementById(reserv_time);
		if(calItem)
			calItem.style.border='none';		
	}
	reserv_time = termin;
	var calItem = document.getElementById(reserv_time);
	if(calItem)
		calItem.style.border='solid 3px #B00';
}

function getTermini(datum){
	
	selectActiveDate(datum);
	if(reload==false)
		hideReservBtn();
	xmlhttp = GetXmlHttpObject();
	if (xmlhttp==null){
	  alert ("Your browser does not support XMLHTTP!");
	  return;
	}	
	showLoading("Provjeravam termine za " + parsePHPDateToShow(datum) + "...");
	var url="ajax/getTermini.php";
	debugger;
	url=url+"?date="+datum;
	xmlhttp.onreadystatechange=showTermini;
	xmlhttp.open("GET",url,true);
	xmlhttp.send(null);
}
function showTermini()
{
	if (xmlhttp.readyState==4)
  	{
		hideLoading();
		var divTermini = document.getElementById("DivTermini");
		divTermini.style.display="block";
  		divTermini.innerHTML=xmlhttp.responseText;
		
		if (reload) {
			selectActiveTermin(reserv_time);
			reload = false;
		}
		
  	}
}

var reload=false;
function hideReservBtn(){
		var div = document.getElementById("Rezerviraj");
		div.style.display='none';
}
function showRezervirajBtn(datum, termin){
		selectActiveTermin(termin);	
		xmlhttp = GetXmlHttpObject();
		if (xmlhttp==null){
		  alert ("Your browser does not support XMLHTTP!");
		  return;
		}	
		showLoading("Provjeravam termin " + parsePHPDateToShow(reserv_date) + " u " + parsePHPTimeToShow(reserv_time) + "...");
		var url="ajax/reserve.php";
		debugger;
		url=url+"?date="+reserv_date;
		url=url+"&termin="+reserv_time;
		url=url+"&action=showRezervirajBtn";
		reload = false;
		xmlhttp.onreadystatechange=reservationComplete;
		xmlhttp.open("GET",url,true);
		xmlhttp.send(null);			
}
function showDodajNaListuBtn(datum, termin, mjesto){
		selectActiveTermin(termin);
		reserv_mjesto = mjesto;
		xmlhttp = GetXmlHttpObject();
		if (xmlhttp==null){
		  alert ("Your browser does not support XMLHTTP!");
		  return;
		}	
		showLoading("Provjeravam termin " + parsePHPDateToShow(reserv_date) + " u " + parsePHPTimeToShow(reserv_time) + "...");
		var url="ajax/reserve.php";
		debugger;
		url=url+"?date="+reserv_date;
		url=url+"&termin="+reserv_time;
		url=url+"&mjesto="+reserv_mjesto;
		url=url+"&action=showDodajNaListuBtn";
		reload = false;
		xmlhttp.onreadystatechange=reservationComplete;
		xmlhttp.open("GET",url,true);
		xmlhttp.send(null);		
}

function reserve(action){
	xmlhttp = GetXmlHttpObject();
	if (xmlhttp==null){
	  alert ("Your browser does not support XMLHTTP!");
	  return;
	}	
	showLoading("Rezerviram termin " + parsePHPDateToShow(reserv_date) + " u " + parsePHPTimeToShow(reserv_time) + "...");
	var url="ajax/reserve.php";
	debugger;
	url=url+"?date="+reserv_date;
	url=url+"&termin="+reserv_time;
	url=url+"&action="+action;
	url=url+"&mjesto="+reserv_mjesto;
	reload = true;
	xmlhttp.onreadystatechange=reservationComplete;
	xmlhttp.open("GET",url,true);
	xmlhttp.send(null);
	
}
function reservationComplete()
{
	if (xmlhttp.readyState==4)
  	{
		hideReservBtn();
		hideLoading();
		var divTermini = document.getElementById("Rezerviraj");
		divTermini.style.display="block";
  		divTermini.innerHTML=xmlhttp.responseText;	
		
		if (reload) {
			getCalendar();
		}
  	}
}
/*********** GET CALENDAR START******************/
 function getCalendar(){
	xmlhttp = GetXmlHttpObject();
	if (xmlhttp==null){
	  alert ("Your browser does not support XMLHTTP!");
	  return;
	}	
	showLoading("Učitavanje kalendara....");
	var url="ajax/calendar.php";
	xmlhttp.onreadystatechange=getCalendarComplete;
	xmlhttp.open("GET",url,true);
	xmlhttp.send(null);		
}
function getCalendarComplete(){
	
	if (xmlhttp.readyState == 4) {
		hideLoading();
		debugger;
		var calDiv = document.getElementById('calendar_wrap');
		calDiv.innerHTML=xmlhttp.responseText;
		
		if (reload) {
			getTermini(reserv_date);
		}
	}
}
/*********** GET CALENDAR END******************/

/***************************************************************************/
/******************* RESERVATION FUNCTIONS START ***************************/
/***************************************************************************/

 
function validateLogin(){ 	
		showLoading("Provjeravam unesene podatke...");
		var user = document.getElementById("username").value;
		if(user==""){
			showErrorMsg("***Korisničko ime je obavezno***")
			hideLoading();
			return false;
		}
		var pass = document.getElementById("password").value;
		if(pass==""){
			showErrorMsg("***Lozinka je obavezna***")
			hideLoading();
			return false;
		}
		return true;		
}

var activeSettingsMenu = null;
var activeSettingsDivId =null;
function openMenuItem(menuItem, menuDivId){
	selectActiveSettingsMenu(menuItem);
	openMenuDiv(menuDivId);	
}
function openMenuDiv(menuDivId){
	hideErrorMsg();
	if(activeSettingsDivId != null){
		document.getElementById(activeSettingsDivId).style.display='none';
	}
	if (menuDivId == 'enableConfirm') {
		adminDBFunction('checkConfirm');
	}
	activeSettingsDivId = menuDivId;
	document.getElementById(menuDivId).style.display = 'block';
}
function selectActiveSettingsMenu(menuId){
	if(activeSettingsMenu != null){
		document.getElementById(activeSettingsMenu).style.border='none';
	}
	activeSettingsMenu= menuId;
	document.getElementById(menuId).style.border='solid 3px #B00';	
}

/********************************************************************/
function getUser(action){
	if(action=='chPass')
		var userIdDiv = 'userId';
	else if(action=='loginUser')
		var userIdDiv = 'userId2';
	var userId = document.getElementById(userIdDiv).value;
	if(userId == ""){
		showErrorMsg("*** Upišite korisnički id ***");
		return false;
	}
	showLoading("Tražim korisnika....");
	xmlhttp = GetXmlHttpObject();
	if (xmlhttp==null){
	  alert ("Your browser does not support XMLHTTP!");
	  return;
	}		
	var url="ajax/admin.php";
	url=url+"?action=getUserById";
	url=url+"&userId="+userId;
	
	if(action=='chPass')	
		xmlhttp.onreadystatechange=getUserComplete;
	else if(action=='loginUser')
		xmlhttp.onreadystatechange=getLoginUserComplete;
	xmlhttp.open("GET",url,true);
	xmlhttp.send(null);
}
function getUserComplete(){
	if (xmlhttp.readyState == 4) {
		hideLoading();
		debugger;
		if (xmlhttp.responseText == '') {
			showErrorMsg('***Ne postoji korisnik s tim id-jem***');
		}
		else {
			var calDiv = document.getElementById('userNameSpan');
			calDiv.innerHTML = xmlhttp.responseText;
			hideErrorMsg();
			hideChPassDiv('block');
		}
	}
}
function getLoginUserComplete(){
	if (xmlhttp.readyState == 4) {
		hideLoading();
		debugger;
		if (xmlhttp.responseText == '') {
			showErrorMsg('***Ne postoji korisnik s tim id-jem***');
		}
		else {
			var calDiv = document.getElementById('userNameSpan2');
			calDiv.innerHTML = xmlhttp.responseText;
			hideErrorMsg();
			hideloginUserBtn('block');
		}
	}
}
function loginUser(){
	var userId = document.getElementById('userId2').value;
	showLoading("Tražim korisnika....");
	xmlhttp = GetXmlHttpObject();
	if (xmlhttp==null){
	  alert ("Your browser does not support XMLHTTP!");
	  return;
	}		
	var url="ajax/admin.php";
	url=url+"?action=loginUser";
	url=url+"&userId="+userId;
	xmlhttp.onreadystatechange=loginUserComplete;
	xmlhttp.open("GET",url,true);
	xmlhttp.send(null);
}
function loginUserComplete(){
	if (xmlhttp.readyState == 4) {
		//hideLoading();
		window.location="reservation.php";	
	}
	
}
function hideloginUserBtn(display){
	var chPassDiv = document.getElementById('loginUserBtn');
	if(chPassDiv != null)
		chPassDiv.style.display=display;	
}
function hideChPassDiv(display){
	var chPassDiv = document.getElementById('chPassDiv');
	if(chPassDiv != null)
		chPassDiv.style.display=display;
}
function changeUserPassword(){
	hideErrorMsg();
	var userId = document.getElementById('userId').value;
	var newPass = document.getElementById('newPass').value;
	var newPass2 = document.getElementById('newPass2').value;
	if(userId == ""){
		showErrorMsg("*** Upišite korisnički id ***");
		return false;
	}
	if(newPass == ""){
		showErrorMsg("*** Upišite novu lozinku ***");
		return false;
	}if(newPass2 == ""){
		showErrorMsg("*** Ponovite novu lozinku ***");
		return false;
	}if(newPass != newPass2){
		showErrorMsg("*** Nova lozika nije ispravno ponovljena ***");
		return false;
	}
	xmlhttp = GetXmlHttpObject();
	if (xmlhttp==null){
	  alert ("Your browser does not support XMLHTTP!");
	  return;
	}	
	showLoading("Promjena passworda...");
	var url="ajax/changePassword.php";
	url=url+"?userId="+userId;
	url=url+"&newPass="+newPass;
	xmlhttp.onreadystatechange=changeUserPasswordComplete;
	xmlhttp.open("GET",url,true);
	xmlhttp.send(null);
}
function changeUserPasswordComplete(){
	if (xmlhttp.readyState == 4) {
		hideLoading();
		showErrorMsg(xmlhttp.responseText);		
		document.getElementById('userId').value='';
		document.getElementById('newPass').value='';
		document.getElementById('newPass2').value='';
	
	}
}
function changePassword(){
	hideErrorMsg();
	var oldPass = document.getElementById('oldPass').value;
	var newPass = document.getElementById('newPass').value;
	var newPass2 = document.getElementById('newPass2').value;
	if(oldPass == ""){
		showErrorMsg("*** Upišite trenutnu lozinku ***");
		return false;
	}
	if(newPass == ""){
		showErrorMsg("*** Upišite novu lozinku ***");
		return false;
	}if(newPass2 == ""){
		showErrorMsg("*** Ponovite novu lozinku ***");
		return false;
	}if(newPass != newPass2){
		showErrorMsg("*** Nova lozika nije ispravno ponovljena ***");
		return false;
	}
	xmlhttp = GetXmlHttpObject();
	if (xmlhttp==null){
	  alert ("Your browser does not support XMLHTTP!");
	  return;
	}	
	showLoading("Promjena passworda...");
	var url="ajax/changePassword.php";
	url=url+"?oldPass="+oldPass;
	url=url+"&newPass="+newPass;	
	xmlhttp.onreadystatechange=changePasswordComplete;
	xmlhttp.open("GET",url,true);
	xmlhttp.send(null);
		
}
function changePasswordComplete(){
	if (xmlhttp.readyState == 4) {
		hideLoading();
		showErrorMsg(xmlhttp.responseText);
		
	document.getElementById('oldPass').value='';
	document.getElementById('newPass').value='';
	document.getElementById('newPass2').value='';
	
	}
}





/************ Validate date Start*****************/
function validateDate(){
	var dt=document.getElementById('datum');
	if (isDate(dt.value)==false){
		dt.focus()
		return false
	}
    return true
}
var dtCh= ".";
var minYear=1900;
var maxYear=2100;

function isInteger(s){
	var i;
    for (i = 0; i < s.length; i++){   
        // Check that current character is number.
        var c = s.charAt(i);
        if (((c < "0") || (c > "9"))) return false;
    }
    // All characters are numbers.
    return true;
}

function stripCharsInBag(s, bag){
	var i;
    var returnString = "";
    // Search through string's characters one by one.
    // If character is not in bag, append to returnString.
    for (i = 0; i < s.length; i++){   
        var c = s.charAt(i);
        if (bag.indexOf(c) == -1) returnString += c;
    }
    return returnString;
}
function daysInFebruary (year){
	// February has 29 days in any year evenly divisible by four,
    // EXCEPT for centurial years which are not also divisible by 400.
    return (((year % 4 == 0) && ( (!(year % 100 == 0)) || (year % 400 == 0))) ? 29 : 28 );
}
function DaysArray(n) {
	for (var i = 1; i <= n; i++) {
		this[i] = 31
		if (i==4 || i==6 || i==9 || i==11) {this[i] = 30}
		if (i==2) {this[i] = 29}
   } 
   return this
}
function isDate(dtStr){
	var daysInMonth = DaysArray(12)
	var pos1=dtStr.indexOf(dtCh)
	var pos2=dtStr.indexOf(dtCh,pos1+1)
	var strDay=dtStr.substring(0,pos1)
	var strMonth=dtStr.substring(pos1+1,pos2)
	var strYear=dtStr.substring(pos2+1)
	strYr=strYear
	if (strDay.charAt(0)=="0" && strDay.length>1) strDay=strDay.substring(1)
	if (strMonth.charAt(0)=="0" && strMonth.length>1) strMonth=strMonth.substring(1)
	for (var i = 1; i <= 3; i++) {
		if (strYr.charAt(0)=="0" && strYr.length>1) strYr=strYr.substring(1)
	}
	month=parseInt(strMonth)
	day=parseInt(strDay)
	year=parseInt(strYr)
	if (pos1==-1 || pos2==-1){
		showErrorMsg("Molimo unesite datum u formatu dd.mm.GGGG");
		return false
	}
	if (strMonth.length<1 || month<1 || month>12){
		showErrorMsg("Upisali ste nepostojeći mjeses");
		return false
	}
	if (strDay.length<1 || day<1 || day>31 || (month==2 && day>daysInFebruary(year)) || day > daysInMonth[month]){
		showErrorMsg("Upisali ste nepostojeći datum");
		return false
	}
	if (strYear.length != 4 || year==0 || year<minYear || year>maxYear){
		showErrorMsg("Molimo upišite ispravnu godinu");
		return false
	}
	if (dtStr.indexOf(dtCh,pos2+1)!=-1 || isInteger(stripCharsInBag(dtStr, dtCh))==false){
		showErrorMsg("Molimo upišite ispravan datum");
		return false
	}
return true
}
/************ Validate date END*****************/


/************ Checkbox handler *********/
function chbFunction(checkBox, elemId){
	var elem = document.getElementById(elemId);
	elem.disabled=!checkBox.checked;
	if(elemId == 'datum')
		document.getElementById('dateLogic').disabled=!checkBox.checked;
}


function getUsersByTerm(){   	

	var datum = document.getElementById('datum');
	var termin = document.getElementById('termin');
	
	showLoading("Učitavanje podataka....");
	xmlhttp = GetXmlHttpObject();
	if (xmlhttp==null){
	  alert ("Your browser does not support XMLHTTP!");
	  return;
	}	
	
	var url="ajax/adminGetUser.php";
	url=url+"?";

	if (datum.value!="") {
		url = url + "datum=" + datum.value;
	}
	if(termin.value!="")
		url=url+"&termin="+termin.value;

	xmlhttp.onreadystatechange=getAdminReviewComplete;
	xmlhttp.open("GET",url,true);
	xmlhttp.send(null);		
}

function getAdminReview(){	
	var firstName = document.getElementById('firstName');
	var lastName = document.getElementById('lastName');
	var datum = document.getElementById('datum');
	var termin = document.getElementById('termin');
	var dateLogic =document.getElementById('dateLogic');
	var type = document.getElementById('type');
	
	if (!datum.disabled) {
		if (validateDate() == false) {
			return;
		}
	}
	
	showLoading("Učitavanje podataka....");
	xmlhttp = GetXmlHttpObject();
	if (xmlhttp==null){
	  alert ("Your browser does not support XMLHTTP!");
	  return;
	}	
	
	var url="ajax/adminReview.php";
	url=url+"?action=review";
	if(!firstName.disabled && firstName.value!="")
		url=url+"&firstName="+firstName.value;
	if(!lastName.disabled && lastName.value!="")
		url=url+"&lastName="+lastName.value;
	if (!datum.disabled && datum.value!="") {
		url = url + "&datum=" + datum.value;
		url = url + "&dateLogic=" + dateLogic.value;
	}
	if(!termin.disabled && termin.value!="")
		url=url+"&termin="+termin.value;
	if(!type.disabled && type.value!="")
		url=url+"&type="+type.value;		
	xmlhttp.onreadystatechange=getAdminReviewComplete;
	xmlhttp.open("GET",url,true);
	xmlhttp.send(null);		
}
function getAdminReviewComplete(){
	
	if (xmlhttp.readyState == 4) {
		hideLoading();
		debugger;
		var calDiv = document.getElementById('ajaxResult');
		calDiv.innerHTML=xmlhttp.responseText;
		openMenuDiv('ajaxResult');
	}
}

/***********************************************/
function adminDBFunction(action){
	showLoading("Učitavanje podataka....");
	xmlhttp = GetXmlHttpObject();
	if (xmlhttp==null){
	  alert ("Your browser does not support XMLHTTP!");
	  return;
	}		
	var url="ajax/admin.php";
	url=url+"?action="+action;
		
	xmlhttp.onreadystatechange=adminDBFunctionConplete;
	xmlhttp.open("GET",url,true);
	xmlhttp.send(null);
}
function adminDBFunctionConplete(){
	if (xmlhttp.readyState == 4) {
		hideLoading();
		var calDiv = document.getElementById('enableConfirm');
		calDiv.innerHTML=xmlhttp.responseText;		
	}
}
/***********************************************/

/***************************************************************************/
/******************* PAGE CLOCK FUNCTIONS START ****************************/
/***************************************************************************/
/**
* Numbers < 10 should be presented with a zero in front
*/
function fixNumber(number) {
 return (number < 10) ? '0' + number : number;
}
/**
* Fixed look for month
*/
function fixMonth(number) {
 number = number + 1;
 return (number < 10) ? '0' + number : number;
}
function getLocalDate(year, month, day, dateFormat) {
 if (dateFormat.length < 2) { // When not logged in there is no dateformat
 	dateFormat = 'yyyy-mm-dd';
 }
 dateFormat = dateFormat.replace('yyyy', year);
 dateFormat = dateFormat.replace('mm', month);
 dateFormat = dateFormat.replace('dd', day);
 dateFormat = dateFormat.replace('d', day);
 dateFormat = dateFormat.replace('m', month);

 return dateFormat;
}

/**
* Show clock
*/
function runClock(timeDiff, dateFormat) {
 var now = new Date();

 var newTime;
 newTime = now.getTime() - timeDiff;
 now.setTime(newTime);

 var localDate = getLocalDate(now.getFullYear(), fixMonth(now.getMonth()), fixNumber(now.getDate()), dateFormat);

 document.getElementById('time').innerHTML = localDate + ' ' + fixNumber(now.getHours()) + ':' + fixNumber(now.getMinutes()) + ':' + fixNumber(now.getSeconds());

 setTimeout('runClock(timeDiff,"' + dateFormat + '");', 1000);
}

/**
* Calculates a time difference between client and server, to make js clock to run correctly
*/
function timeDiff(Year, Month, Day, Hour, Minute, Second, dateFormat) {
 var timeDifferense;
 var serverClock = new Date(Year, Month - 1, Day, Hour, Minute, Second);

 var clientClock = new Date();
 var serverSeconds;
 var clientSeconds;
 timeDiff = clientClock.getTime() - serverClock.getTime() - 3000;
 runClock(timeDiff, dateFormat);
}
/***************************************************************************/
/****************** PAGE CLOCK FUNCTIONS END *******************************/
/***************************************************************************/ 
