 


function Get_Cookie( check_name ) {
	// first we'll split this cookie up into name/value pairs
	// note: document.cookie only returns name=value, not the other components
	var a_all_cookies = document.cookie.split( ';' );
	var a_temp_cookie = '';
	var cookie_name = '';
	var cookie_value = '';
	var b_cookie_found = false; // set boolean t/f default f

	for ( i = 0; i < a_all_cookies.length; i++ )
	{
		// now we'll split apart each name=value pair
		a_temp_cookie = a_all_cookies[i].split( '=' );


		// and trim left/right whitespace while we're at it
		cookie_name = a_temp_cookie[0].replace(/^\s+|\s+$/g, '');

		// if the extracted name matches passed check_name
		if ( cookie_name == check_name )
		{
			b_cookie_found = true;
			// we need to handle case where cookie has no value but exists (no = sign, that is):
			if ( a_temp_cookie.length > 1 )
			{
				cookie_value = unescape( a_temp_cookie[1].replace(/^\s+|\s+$/g, '') );
			}
			// note that in cases where cookie is initialized but no value, null is returned
			return cookie_value;
			break;
		}
		a_temp_cookie = null;
		cookie_name = '';
	}
	if ( !b_cookie_found )
	{
		return null;
	}
}


function checkFileType(form,filefield,allowed) {
  var file = document.forms[form][filefield].value;
  var fileparts = file.split(".");
  var ext = fileparts[fileparts.length-1];
  ext = ext.toLowerCase();
  var allowed_ext = allowed.split("|");
  Array.prototype.hasElement = function(s){ 
    return new RegExp('(^|\,)'+s+'(\,|$)','gi').test(this);
  } 
  if(!allowed_ext.hasElement(ext)) {
  	document.forms[form][filefield].value='';
    alert('Nu sunt permise decat fisierele tip '+ allowed_ext.join(", ") +'.');
    return false;
  } else return true; 
}


function submitForm(formid) {
	var el = findObj(formid);
	el.submit();
	return true;	
}

function checkRoomsSelected(formid) {
	var elem = findObj(formid).elements;
	var str = '';
	var rooms = false;
	for(i = 0; i < elem.length; i++)
	{
		if (elem[i].type == 'select-one') {
			if (elem[i].value != '0') {
				//inseamna ca undeva este ceva selectat, deci e ok
				return true;
			}
		}
	}
	
	var langid = Get_Cookie('lang_id');
	if (langid==1) {
		alert('Va rugam sa selectati una sau mai multe camere pentru a face rezervarea!');
	} else {
		alert('Please select one or more rooms in order to continue booking!');
	}
	
	return false;	
}


if(!window.console){
	window.console=new function(){
		this.log=function(A){};
		this.info=function(A){}
	}
}
var gClientIsGecko=(window.controllers)?true:false;
var gClientIsOpera=(window.opera)?true:false;
var gClientIsIE=(document.all&&!gClientIsOpera)?true:false;
var gClientIsIE5=(gClientIsIE&&/MSIE 5\.0/.test(navigator.appVersion))?true:false;
var gClientIsIE55=(gClientIsIE&&/MSIE 5\.5/.test(navigator.appVersion))?true:false;
var gClientIsIE6=(gClientIsIE&&/MSIE 6\.0/.test(navigator.appVersion))?true:false;
var gClientIsIE7=(gClientIsIE&&/MSIE 7\.0/.test(navigator.appVersion))?true:false;
var gClientIsIElte55=(gClientIsIE&&(gClientIsIE5||gClientIsIE55)&&!gClientIsIE7);
var gClientIsIElte6=(gClientIsIE&&(gClientIsIElte55||gClientIsIE6)&&!gClientIsIE7);
var gClientIsMac=(/Mac/.test(navigator.appVersion))?true:false;


/* functii folosite la afisarea filtrelor */
function itemToggle(B) {
	var A=document.getElementById(B);
	A.style.display=(A.style.display!="none"?"none":"")
}

function hideEl(A) {
	var B;
	if(document.getElementById) {
		B=document.getElementById(A);
		if(B!==null) {
			if(B.style.display!=="none") {
				B.style.display="none";
			}
		}
	}
	return B;
}

function showEl(B) {
	var A;
	if(document.getElementById) {
		A=document.getElementById(B);
		if(A!==null) {
			if(A.style.display!=="block") {
				A.style.display="block";
			}
		}
	}
	return A;
}

function showBlock(A) {
	if(document.getElementById) {
		document.getElementById(A).style.display="block";
	}
}

function hideDiv(B) {
	if(document.getElementById) {
		var A=document.getElementById(B);
		A.style.display="none";
		if(gClientIsIElte6&&document.getElementById("ifm")) {
			A.parentNode.removeChild(document.getElementById("ifm"))
		}
	}
}

/* verificare campuri input */
function typePhoneNum(evt){
	var charCode = (evt.which) ? evt.which : event.keyCode; 
	if (charCode > 32 && (charCode < 46 || charCode > 57))	{return false;}
	else {return true;}
}
function typePositiveInteger(evt){
	var charCode = (evt.which) ? evt.which : event.keyCode; 
	if (charCode!=8 && charCode!=13 && charCode!=127 && (charCode < 48 || charCode > 57))	{return false;}
	else {return true;}
}


/* scrie pe prima pagina titul boxului top hotels */
function writeTopHotelTitle(idCounty, CountyName, cleanCountyName) {
	
	var langid = Get_Cookie('lang_id');
	if (langid==1) {
		var title = "Top hoteluri in ";
		var seeall = "Vezi toate... ";
	} else {
		var title = "Top hotels in ";
		var seeall = "See all... ";
	}
	
	findObj('topHotelTitle').innerHTML = '<div>'+title+CountyName+'</div><div class=\"detaliibutton\" onclick=\"document.location.href=\'./hoteluri/'+cleanCountyName+'/'+idCounty+'\'\" style="cursor: pointer;\">'+seeall+'</div>';
}


/* face update in campul nopti in urma click-ului pe butoanele plus/minus */
function nights_nr_change(d) {
	switch(d) {
		case"+":
			findObj('nights').value++;
		break;
		case"-":
			if (findObj('nights').value > 1) {findObj('nights').value--;}
		break
	}
	var ckindate_value = findObj('checkindate').value;
	updateCheckOut(ckindate_value, findObj('nights').value);
}

/* face update in campul nopti in urma click-ului pe butoanele plus/minus IN BARA DE PERIOADA LA REZERVARE */
function rez_nights_nr_change(d, idHotel) {
	switch(d) {
		case"+":
			findObj('rez_nights').value++;
		break;
		case"-":
			if (findObj('rez_nights').value > 1) {findObj('rez_nights').value--;}
		break
	}
	var ckindate_value = findObj('rez_checkindate').value;
	updateRezCheckOut(ckindate_value, findObj('rez_nights').value, idHotel);
}


/* face update pe data plecarii in urma modificarii datei sosirii si/sau a numarului de nopti */
function updateCheckOut (ckindate_value, nights) {	
	if (ckindate_value!='') {
		var ckindate = new Date(ckindate_value);
		//var ckoutdate = new Date();
		//ckoutdate.setDate(ckindate.getDate() - 0 + parseFloat(nights));
		var ckoutdate = new Date(ckindate.getUTCFullYear(), ckindate.getMonth(), ckindate.getDate()-0+parseFloat(nights));
		findObj('dateCheckOut').value = dateFormat(ckoutdate, "dddd dd-mm-yyyy");
		findObj('checkoutdate').value = dateFormat(ckoutdate, "yyyy/mm/dd"); //hidden field
		updatePeriod(ckindate_value, nights, dateFormat(ckoutdate, "yyyy/mm/dd"));
	} else {
		findObj('dateCheckOut').value = '';
		findObj('checkoutdate').value = ''; //hidden field
	}
}

/* face update pe data plecarii in urma modificarii datei sosirii si/sau a numarului de nopti IN BARA DE PERIOADA LA REZERVARE */
function updateRezCheckOut (ckindate_value, nights, idHotel) {	
	if (ckindate_value!='') {
		var ckindate = new Date(ckindate_value);
		var ckoutdate = new Date(ckindate.getUTCFullYear(), ckindate.getMonth(), ckindate.getDate()-0+parseFloat(nights));
		findObj('dateCheckOut').value = dateFormat(ckoutdate, "dddd dd-mm-yyyy");
		findObj('checkoutdate').value = dateFormat(ckoutdate, "yyyy/mm/dd"); //hidden field
		findObj('rez_dateCheckOut').value = dateFormat(ckoutdate, "dddd dd-mm-yyyy");
		findObj('rez_checkoutdate').value = dateFormat(ckoutdate, "yyyy/mm/dd"); //hidden field
		
		//facem update si pe campurile din boxul de la cautare
		findObj('dateDefault').value = findObj('rez_dateDefault').value;
		findObj('checkindate').value = findObj('rez_checkindate').value;
		findObj('nights').value = findObj('rez_nights').value;
		
		updatePeriod(ckindate_value, nights, dateFormat(ckoutdate, "yyyy/mm/dd"));
		
		show_rooms_info(idHotel, findObj('rez_checkindate').value, findObj('rez_nights').value, dateFormat(ckoutdate, "yyyy/mm/dd"));
		
	} else {
		findObj('dateCheckOut').value = '';
		findObj('checkoutdate').value = ''; //hidden field
		findObj('rez_dateCheckOut').value = '';
		findObj('rez_checkoutdate').value = ''; //hidden field
	}
}


/* face update pe date si nopti in valorile din sesiune */
function updatePeriod(ckindate_value, nights, ckoutdate_value) {
		$.post("../_ajax/update_period.php", {checkindate: ""+ckindate_value+"", nights: ""+nights+"",checkoutdate: ""+ckoutdate_value+"" }, function(data){
			if(data.length >0) {
				//$('#date_period').html(data);
			}
		});
} // update

/* face update currency din sesiune */
function updateCurrency(currency) {
		$.post("../_ajax/update_currency.php", {currency_options: ""+currency+""}, function(data){
			if(data.length >0) {
				//$('#date_period').html(data);
			}
		});
} // update


var dateFormat = function () {
	var	token = /d{1,4}|m{1,4}|yy(?:yy)?|([HhMsTt])\1?|[LloSZ]|"[^"]*"|'[^']*'/g,
		timezone = /\b(?:[PMCEA][SDP]T|(?:Pacific|Mountain|Central|Eastern|Atlantic) (?:Standard|Daylight|Prevailing) Time|(?:GMT|UTC)(?:[-+]\d{4})?)\b/g,
		timezoneClip = /[^-+\dA-Z]/g,
		pad = function (val, len) {
			val = String(val);
			len = len || 2;
			while (val.length < len) val = "0" + val;
			return val;
		};

	// Regexes and supporting functions are cached through closure
	return function (date, mask, utc) {
		var dF = dateFormat;

		// You can't provide utc if you skip other args (use the "UTC:" mask prefix)
		if (arguments.length == 1 && (typeof date == "string" || date instanceof String) && !/\d/.test(date)) {
			mask = date;
			date = undefined;
		}

		// Passing date through Date applies Date.parse, if necessary
		date = date ? new Date(date) : new Date();
		if (isNaN(date)) throw new SyntaxError("invalid date");

		mask = String(dF.masks[mask] || mask || dF.masks["default"]);

		// Allow setting the utc argument via the mask
		if (mask.slice(0, 4) == "UTC:") {
			mask = mask.slice(4);
			utc = true;
		}

		var	_ = utc ? "getUTC" : "get",
			d = date[_ + "Date"](),
			D = date[_ + "Day"](),
			m = date[_ + "Month"](),
			y = date[_ + "FullYear"](),
			H = date[_ + "Hours"](),
			M = date[_ + "Minutes"](),
			s = date[_ + "Seconds"](),
			L = date[_ + "Milliseconds"](),
			o = utc ? 0 : date.getTimezoneOffset(),
			flags = {
				d:    d,
				dd:   pad(d),
				ddd:  dF.i18n.dayNames[D],
				dddd: dF.i18n.dayNames[D + 7],
				m:    m + 1,
				mm:   pad(m + 1),
				mmm:  dF.i18n.monthNames[m],
				mmmm: dF.i18n.monthNames[m + 12],
				yy:   String(y).slice(2),
				yyyy: y,
				h:    H % 12 || 12,
				hh:   pad(H % 12 || 12),
				H:    H,
				HH:   pad(H),
				M:    M,
				MM:   pad(M),
				s:    s,
				ss:   pad(s),
				l:    pad(L, 3),
				L:    pad(L > 99 ? Math.round(L / 10) : L),
				t:    H < 12 ? "a"  : "p",
				tt:   H < 12 ? "am" : "pm",
				T:    H < 12 ? "A"  : "P",
				TT:   H < 12 ? "AM" : "PM",
				Z:    utc ? "UTC" : (String(date).match(timezone) || [""]).pop().replace(timezoneClip, ""),
				o:    (o > 0 ? "-" : "+") + pad(Math.floor(Math.abs(o) / 60) * 100 + Math.abs(o) % 60, 4),
				S:    ["th", "st", "nd", "rd"][d % 10 > 3 ? 0 : (d % 100 - d % 10 != 10) * d % 10]
			};

		return mask.replace(token, function ($0) {
			return $0 in flags ? flags[$0] : $0.slice(1, $0.length - 1);
		});
	};
}();

// Some common format strings
dateFormat.masks = {
	"default":      "ddd mmm dd yyyy HH:MM:ss",
	shortDate:      "m/d/yy",
	mediumDate:     "mmm d, yyyy",
	longDate:       "mmmm d, yyyy",
	fullDate:       "dddd, mmmm d, yyyy",
	shortTime:      "h:MM TT",
	mediumTime:     "h:MM:ss TT",
	longTime:       "h:MM:ss TT Z",
	isoDate:        "yyyy-mm-dd",
	isoTime:        "HH:MM:ss",
	isoDateTime:    "yyyy-mm-dd'T'HH:MM:ss",
	isoUtcDateTime: "UTC:yyyy-mm-dd'T'HH:MM:ss'Z'"
};

/* autocomplete */

function lookup_autosuggest(inputString, divContainer, divList, phpFile, inputField) {
	divContainer = '#'+divContainer;
	divList = '#'+divList;
	if(inputString.length == 0) {
		// Hide the suggestion box.
		$(divContainer).hide();
	} else {
		$.post("../_ajax/"+phpFile+".php", {search_keyword: ""+inputString+"", div_container: ""+divContainer+"", input_field: ""+inputField+""}, function(data){
			if(data.length >0) {
				$(divContainer).show();
				$(divList).html(data);
			}
		});
	}
} // lookup_autosuggest

function fill_autosuggest(thisValue, inputField, divContainer) {
	$('#'+inputField).val(thisValue);
	divContainer = '#'+divContainer;
	setTimeout("$(\'"+divContainer+"\').hide();", 200);
}



function lookup(inputString) {
	if(inputString.length == 0) {
		// Hide the suggestion box.
		$('#suggestions').hide();
	} else {
		$.post("../_ajax/hotel_autocomplete.php", {search_keyword: ""+inputString+""}, function(data){
			if(data.length >0) {
				$('#suggestions').show();
				$('#autoSuggestionsList').html(data);
			}
		});
	}
} // lookup

/* autocomplete */
function lookup_sala(inputString) {
	if(inputString.length == 0) {
		// Hide the suggestion box.
		$('#sala_suggestions').hide();
	} else {
		$.post("../_ajax/sala_autocomplete.php", {search_keyword: ""+inputString+""}, function(data){
			if(data.length >0) {
				$('#sala_suggestions').show();
				$('#sala_autoSuggestionsList').html(data);
			}
		});
	}
} // lookup sala

function lookup_personcounty(inputString) {
	if(inputString.length == 0) {
		// Hide the suggestion box.
		$('#suggestions_personcounty').hide();
	} else {
		$.post("../_ajax/county_autocomplete.php", {search_keyword: ""+inputString+""}, function(data){
			if(data.length >0) {
				$('#suggestions_personcounty').show();
				$('#autoSuggestionsList_personcounty').html(data);
			}
		});
	}
} // lookup

	
function fill(thisValue) {
	$('#search_keyword').val(thisValue);
	setTimeout("$('#suggestions').hide();", 200);
}

function fill_sala(thisValue) {
	$('#sala_search_keyword').val(thisValue);
	setTimeout("$('#sala_suggestions').hide();", 200);
}

function fill_personcounty(thisValue) {
	$('#person_county').val(thisValue);
	setTimeout("$('#suggestions_personcounty').hide();", 200);
}


/* tophotels */
function gettophotels(idCounty) {
		$('#top_hotels').html('<div class="ajax-loader">&nbsp;</div>');
		$.post("../_ajax/top_hotel.php", {id_county: ""+idCounty+""}, function(data){
			if(data.length >0) {
				$('#top_hotels').html(data);
			}
		});
} // tophotels

/* completare automata campuri in cazul completarii de agent la rezervare */
function person_autocomplete(idPerson) {
		$('#person_autocomplete').html('<img src="http://www.bookahotel.ro/_ajax/loading.gif" border="0" />');
		$.post("../_ajax/person_autocomplete.php", {id_person: ""+idPerson+""}, function(data){
			if(data.length >0) {
				$('#person_autocomplete').html(data);
			}
		});
} // completare automata campuri in cazul completarii de agent la rezervare

/* completare automata campuri in cazul completarii de agent la rezervare */
function company_autocomplete(idCompany) {
		$('#company_autocomplete').html('<img src="http://www.bookahotel.ro/_ajax/loading.gif" border="0" />');
		$.post("../_ajax/company_autocomplete.php", {id_company: ""+idCompany+""}, function(data){
			if(data.length >0) {
				$('#company_autocomplete').html(data);
			}
		});
} // completare automata campuri in cazul completarii de agent la rezervare



/* hotel info */
function get_hotel_info(idHotel, phpFile) {
	
		$('#hotel_info').html('<div class="ajax-loader">&nbsp;</div>');
		
		$.post("../_ajax/"+phpFile+".php", {id_hotel: ""+idHotel+""}, function(data){
			if(data.length >0) {
				$('#hotel_info_'+idHotel).html(data);
			}
		});
} // hotel info

/* rooms info */
function show_rooms_info(idHotel, arrivalDate, nights, departureDate) {
	
		$('#rooms_loader').html('<img src="http://www.bookahotel.ro/_ajax/loading.gif" border="0" />');
		/*$('#rooms_loader').html('<div class="small_ajax-loader">&nbsp;</div>');*/
		
		$.post("http://www.bookahotel.ro/_ajax/rooms_info.php", {id_hotel: ""+idHotel+"", arrival_date: ""+arrivalDate+"", nights: ""+nights+"", departure_date: ""+departureDate+""}, function(data){
			if(data.length >0) {
				$('#rooms_table').html(data);
				$('#rooms_loader').html('&nbsp;');
			}
		});
} // rooms info



/* gaseste elementul */
function findElement(elementID) {
  var elem;
  if(document.getElementById) {// DOM
    elem = document.getElementById(elementID);
  } else if(document.all) { // old MSIE
      elem = document.all[elementID];
  } else if(document.layers) { // NN4
    elem = document.layers[elementID];
  } else {
  	elem = null;
  }
  return elem;
}
function findObj(elementID) {
  return findElement(elementID);
}
function showElement(elementID) {
	if(findElement(elementID)!=null) {findElement(elementID).style.display='block';}
}
function showTableRow(elementID) {
	if(findElement(elementID)!=null) {findElement(elementID).style.display='table-row';}
}
function hideElement(elementID) {
	if(findElement(elementID)!=null) {findElement(elementID).style.display='none';}
}

/* schimba tab-urile la search */
function switchSearchTabs() {
	if(findObj('searchHotel').style.display=='none') {
		findObj('searchHotel').style.display='block';
		findObj('searchhoteltab').className='searchtableft selected';
		findObj('searchSala').style.display='none';
		findObj('searchsalatab').className='searchtabright';
	} else {
		findObj('searchHotel').style.display='none';
		findObj('searchhoteltab').className='searchtableft';
		findObj('searchSala').style.display='block';
		findObj('searchsalatab').className='searchtabright selected';
	}	
}

/*arata campurile rezervarii diferit, functie de tipul de plata */
function showReservationFields(payment_type) {
	showElement('customer-details-coordonnees'); //afisam tot div-ul
	switch (payment_type) {
		case 1:
		case 4:
			//cazul platii la receptie si plata garantata: mail, nume,prenume, localitate, tara, mobil, butonul doresc factura pe firma nu il vad necesar aici (daca ar putea fi inhibat) 
			hideElement('company_fields'); //ascundem tot div-ul cu datele companiei
			hideElement('tbl-cnp_ci');
			hideElement('tr-ci_issuer');
			break;
		case 2:
		case 3:
			//cazul in avans cu carte de credit:asa cum e acum
			showElement('company_fields');
			showElement('tbl-cnp_ci');
			break;
	} //end switch
}

/*schimba explicatiile de la metoda de plata la rezervare*/
function showPTDescription(selected_pt, max_pt) {
	for (var i=0;i<=max_pt;i++)	{
		hideElement('payment_type_'+i);
	}
	showElement('payment_type_'+selected_pt);
}

/* schimba tab-urile la hotel */
function switchHotelTabs(activeTab) {
	
	findObj('link_geninfo').className='inactiv';
	findObj('link_photogallery').className='inactiv';
	findObj('link_conference').className='inactiv';
	findObj('link_feedbacks').className='inactiv';
	
	findObj(activeTab).className='activ';	
}



var BrowserDetect = {
	init: function () {
		this.browser = this.searchString(this.dataBrowser) || "An unknown browser";
		this.version = this.searchVersion(navigator.userAgent)
			|| this.searchVersion(navigator.appVersion)
			|| "an unknown version";
		this.OS = this.searchString(this.dataOS) || "an unknown OS";
	},
	searchString: function (data) {
		for (var i=0;i<data.length;i++)	{
			var dataString = data[i].string;
			var dataProp = data[i].prop;
			this.versionSearchString = data[i].versionSearch || data[i].identity;
			if (dataString) {
				if (dataString.indexOf(data[i].subString) != -1)
					return data[i].identity;
			}
			else if (dataProp)
				return data[i].identity;
		}
	},
	searchVersion: function (dataString) {
		var index = dataString.indexOf(this.versionSearchString);
		if (index == -1) return;
		return parseFloat(dataString.substring(index+this.versionSearchString.length+1));
	},
	dataBrowser: [
		{ 	string: navigator.userAgent,
			subString: "OmniWeb",
			versionSearch: "OmniWeb/",
			identity: "OmniWeb"
		},
		{
			string: navigator.vendor,
			subString: "Apple",
			identity: "Safari"
		},
		{
			prop: window.opera,
			identity: "Opera"
		},
		{
			string: navigator.vendor,
			subString: "iCab",
			identity: "iCab"
		},
		{
			string: navigator.vendor,
			subString: "KDE",
			identity: "Konqueror"
		},
		{
			string: navigator.userAgent,
			subString: "Firefox",
			identity: "Firefox"
		},
		{
			string: navigator.vendor,
			subString: "Camino",
			identity: "Camino"
		},
		{		// for newer Netscapes (6+)
			string: navigator.userAgent,
			subString: "Netscape",
			identity: "Netscape"
		},
		{

			string: navigator.userAgent,
			subString: "MSIE",
			identity: "Explorer",
			versionSearch: "MSIE"
		},
		{
			string: navigator.userAgent,
			subString: "Gecko",
			identity: "Mozilla",
			versionSearch: "rv"
		},
		{ 		// for older Netscapes (4-)
			string: navigator.userAgent,
			subString: "Mozilla",
			identity: "Netscape",
			versionSearch: "Mozilla"
		}
	],
	dataOS : [
		{
			string: navigator.platform,
			subString: "Win",
			identity: "Windows"
		},
		{
			string: navigator.platform,
			subString: "Mac",
			identity: "Mac"
		},
		{
			string: navigator.platform,
			subString: "Linux",
			identity: "Linux"
		}
	]

};
BrowserDetect.init();