﻿// Cookies - Write, Read, Array support
function cookieWrite(name, value, hours) {
  var expire = "";
  if(hours != null) {
    expire = new Date((new Date()).getTime() + hours * 3600000);
    expire = "; expires=" + expire.toGMTString();
  }
  var path="; path=/";
  document.cookie = name + "=" + escape(value) + expire + path;
}

function cookieRead(name) {
  var cookieValue = "";
  var searchString = name + "=";
  if(document.cookie.length > 0) {
    offset = document.cookie.indexOf(searchString);
    if (offset != -1) {
      offset += searchString.length;
      end = document.cookie.indexOf(";", offset);
      if (end == -1) end = document.cookie.length;
      cookieValue = unescape(document.cookie.substring(offset, end));
    }
  }
  return cookieValue;
}

function cookieArrayWrite(name, v, hours) {
	var valueArray=new Array();
	var a=0;
	var i;
	for (i in v) {
		valueArray.push(i+"^"+v[i]);
	};
	var valueJoined=valueArray.join("~");
	cookieWrite(name, valueJoined, 750);
}

function cookieArrayRead(name) {
	var v=""+cookieRead(name);
	var newValue=new Array();
	if (v.length>0) {
		v=v.split("~");
		for (var i in v) {
			v[i]=v[i]+"";
			if (v[i].length>0){
				temp=v[i].split("^");
				newValue[temp[0]]=temp[1];
			}
		}
	}
	return newValue;
}

$(document).ready(function(){
	( function( $ ) {
		$.dequeue = function( a , b ){
		return $(a).dequeue(b);
		};
	})( jQuery ); 
 
	// Language Selection
	$(".dropdown_flag").click(function() {
		$(".languages").slideToggle("fast");
		return false;
	});

	// Dropdown Options
	$(".order_by > span > a, .green_cell_our_cottage > a").each( function (i) {
		$(this).mouseover(function() {
			$(this).parent().parent().find(".roll_over").show().bind("mouseleave",function(){
				$(this).hide();
			});
		});
	});

	// AutoHide value of INPUT field
	$("input[autohide], textarea[autohide]").each( function (i) {
		$(this)
		.focus(function() {
			$(this).val('');
			//if (this.value==$(this).attr("autohide")) this.value='';
		})
		.blur(function() {
			if ($(this).val()=='') $(this).val($(this).attr("autohide"));
		});
	});

  	// Format Nice Tables
	$("table.nice").each( function (i) {
		if ($(this).find("td").length==0) {
			$(this).hide();
			return;
		}
		var cols=$(this).find("tr:eq(1) td").length;
		$(this).find("th:first").addClass("left");
		$(this).find("th:last").addClass("right");
		$(this).find("tr:last").each( function (i) {
			$(this).find("td").each(function (i) {
				$(this).addClass("noBorder");
			});
			var a="<tr>";
			for (i=0; i<cols; i++) {
				a=a+"<td>&nbsp;</td>";
			}
			a=a+"</tr>";
			$(this).after(a);
		});
		$(this).find("tr").each( function (i) {
			$(this).find("td:first").addClass("left");
			$(this).find("td:last").addClass("right");
		});
		$(this).find("tr:last").addClass("last");
	});
	
	// Favorites
	$('[addtofavs]').bind("click", function() {
		var data=$(this).attr("addtofavs");
		var favCookie=cookieArrayRead("favCookie");
		var thisIndex=favCookie.length;
		var stored=0;
		for (i in favCookie) {
			if (favCookie[i]==data) {
				stored=1; var storedAs=i;
				break;
			}
		}
		if (stored==0) {
			if (thisIndex==10) {
				return false;
			}
			favCookie[thisIndex]=data;
			cookieArrayWrite("favCookie", favCookie);
			if ($(this).html().length>0) {
				$(this).html(lang.favorites.remove);
			}
			updateFavorites();

			$(this).TransferTo({
				duration: 300,
				to: 'fav'+thisIndex,
				className: 'transferer1',
				easing: 'easein'
			}).addClass("selected");
	
			var nameParsed=data.split(",,");
			var namePos=nameParsed[0].lastIndexOf("/");
			nameParsed=nameParsed[0].substr(namePos+1);
            submitSupplyStats(nameParsed, 7);
		} else {
			delete favCookie[storedAs];
			cookieArrayWrite("favCookie", favCookie);
			thisIndex=storedAs;
			if ($(this).html().length>0) {
				$(this).html(lang.favorites.add);
			} else {
				$(this).removeClass("selected");
			}
			updateFavorites();
		}
		return false;
	});
	
	$('[addtofavs]').each(function(i) {
		var data=$(this).attr("addtofavs");
		var favCookie=cookieArrayRead("favCookie");
		if (favCookie.length>0) {
			for (i in favCookie) {
				if (favCookie[i]==data) {
					if ($(this).html().length>0) {
						$(this).html(lang.favorites.remove);
					} else {
						$(this).addClass("selected")
					}
				}
			}
		}
	});
	
	// Update Favorites
	updateFavorites();
	
	// Main Form validation
	$('form.main :text, form.main :password, form.main textarea, form.main select').bind("blur keyup focus change", formValidateField);
	$('form.main :file').bind("change", formValidateField);
	$('form.main input:radio, form.main input:checkbox').bind("change click", formValidateField);


	// Prepare the Search
	var html="";
	for (i in s_o) {
		if (s_o[i][2]==undefined || s_o[i][2]=='') continue;
		html+="<option value='"+s_o[i][0]+"' class='"+s_o[i][1]+"'>"+s_o[i][2]+"</option>"
	}
	$("#searchForm #lfObjectType").prepend(html);

	var html="";
	for (i in s_a) {
		if (s_a[i][2]==undefined || s_a[i][2]=='') continue;
		html+="<option value='"+s_a[i][0]+"' class='"+s_a[i][1]+"'>"+s_a[i][2]+"</option>"
	}
	$("#searchForm #lfArea").prepend(html);

	var html="";
	for (i in s_l) {
		if (s_l[i][2]==undefined || s_l[i][2]=='') continue;
		html+="<option value='"+s_l[i][0]+"' class='"+s_l[i][1]+"'>"+s_l[i][2]+"</option>"
	}
	$("#searchForm #lfLangSpoken").prepend(html);

	var html="";
	for (i in s_p) {
		if (s_p[i][2]==undefined || s_p[i][2]=='') continue;
		html+="<option value='"+s_p[i][0]+"' class='"+s_p[i][1]+"'>"+s_p[i][2]+"</option>"
	}
	$("#searchForm #lfPriceLevel").prepend(html);

	var html="";
	for (i in s_c) {
		if (s_c[i][2]==undefined || s_c[i][2]=='') continue;
		html+="<option value='"+s_c[i][0]+"' class='"+s_c[i][1]+"'>"+s_c[i][2]+"</option>"
	}
	$("#searchForm #lfCapacity").prepend(html);

	var html="";
	for (i in s_m) {
		if (s_m[i][2]==undefined || s_m[i][2]=='') continue;
		html+="<option value='"+s_m[i][0]+"' class='"+s_m[i][1]+"'>"+s_m[i][2]+"</option>"
	}
	$("#searchForm #lfMeal").prepend(html);

	setTimeout("setSearchStatus()", 1);

	
	// Quick Search
	$("#searchForm select, #searchForm input").bind("change keyup", function() {
		$.ajax({
			type: "GET",
			url: "http://"+thisDomain+"/ajax/search_results.php",
			data: $("#searchForm").serialize(),
			dataType: "text",
			success: function(msg, status){
				$("#searchForm .resultsResponse").css("display", "block").html(msg);
			}
		});
	});

});

function setSearchStatus() {
	$("#searchForm #lfObjectType").val(searchStatus[0]);
	$("#searchForm #lfArea").val(searchStatus[1]);
	$("#searchForm #lfLangSpoken").val(searchStatus[2]);
	$("#searchForm #lfPriceLevel").val(searchStatus[3]);
	$("#searchForm #lfCapacity").val(searchStatus[4]);
	$("#searchForm #lfMeal").val(searchStatus[5]);
	$("#searchForm #lfKeyword").val(searchStatus[10]);
}

function sendToFriendSubmit() {
	var valData=new Object();
	valData.message={cond: "v.length>0", text: lang.friend.wrongMessage};
	valData.email_from={cond: "formIsEmail(v)", text: lang.friend.wrongEmailFrom};
	valData.email_to={cond: "formIsEmail(v)", text: lang.friend.wrongEmailTo};

	if (validateForm($("#sendToFriend"), valData, $("#sendToFriend .resultsResponse"))!=false) {
		$("#sendToFriend .resultsResponse").css("display", "block").html(lang.friend.sendSending);
		//document.write("http://"+thisDomain+"/ajax/send_to_friend.php?"+$("#sendToFriend").serialize())
		$.ajax({
			type: "GET",
			url: "http://"+thisDomain+"/ajax/send_to_friend.php",
			data: $("#sendToFriend").serialize(),
			dataType: "text",
			success: function(msg, status){
				$("#sendToFriend .resultsResponse").css("display", "block").html(lang.friend.sendSuccess);
			}
		});
        submitSupplyStats(objectId, 5);
	}
	return false;
}

function reservationSubmit() {
	var valData=new Object();
	valData.name={cond: "v.length>0", text: lang.reserve.wrongName};
	valData.email={cond: "formIsEmail(v)", text: lang.reserve.wrongEmail};
	valData.phone={cond: "v.length>8", text: lang.reserve.wrongPhone};
	valData.people_count={cond: "parseInt(v)>0", text: lang.reserve.wrongPeopleCount};
	valData.children_count={cond: "v.length==0 || v=='0' || parseInt(v)>0", text: lang.reserve.wrongChildrenCount};
	valData.date_from={cond: "v.length>0", text: lang.reserve.wrongDateFrom};
	valData.date_to={cond: "v.length>0", text: lang.reserve.wrongDateTo};
	valData.message={cond: "true", text: lang.reserve.wrongMessage};
	
	if (validateForm($("#reservationForm"), valData, $("#reservationForm .resultsResponse"))!=false) {
		$("#reservationForm .resultsResponse").css("display", "block").html(lang.reserve.sendSending);
		//window.open("http://"+thisDomain+"/ajax/reservation.php?"+$("#reservationForm").serialize());
		$.ajax({
			type: "GET",
			url: "http://"+thisDomain+"/ajax/reservation.php",
			data: $("#reservationForm").serialize(),
			dataType: "text",
			success: function(msg, status){
				//alert(msg);
				$("#reservationForm .resultsResponse").css("display", "block").html(msg);
			}
		});
        submitSupplyStats(objectId, 4);
	}
	return false;
}

function reservationFocus() {
	$("#reservationForm #name")
	.animate({backgroundColor: "#ff0000"}, 100 )
	.animate({backgroundColor: ""}, 100 )
	.animate({backgroundColor: "#ff0000"}, 100 )
	.animate({backgroundColor: ""}, 100 )
	.animate({backgroundColor: "#ff0000"}, 100 )
	.animate({backgroundColor: ""}, 100 )
	.animate({backgroundColor: "#ff0000"}, 100 )
	.animate({backgroundColor: ""}, 100 )
	.focus()
}

// Form Validation
function validateForm(formObject, valData, resultObject) {
	var formData=new Object();
	$(formObject).find("input, textarea").each(function(i) {
		formData[$(this).attr("name")]=$(this).val();
	});
	var problems=new Array();
	for (i in valData) {
		var v=formData[i];
		eval('var result='+valData[i].cond+';');
		if (result==true) {
			$(formObject).find("#"+i).removeClass("inv");
		} else {
			$(formObject).find("#"+i).addClass("inv");
			problems[problems.length]=valData[i].text;

		}
	}
	if (problems.length>0) {
		$(resultObject).css("display", "block").html(lang.reserve.wrong);
		//$(resultObject).css("display", "block").html(problems.join("<br/>"));
		return false;
	} else {
		return true;
	}
}

function formIsEmail(value) {
	value=value.toLowerCase();
	var regex = /^([\w-+]+(?:\.[\w-+]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i;
	return regex.test(value);
}

function updateFavorites() {
	var favCookie=cookieArrayRead("favCookie");var favHtml=""; var newFavs=new Array();
	var ii=0;
	if (favCookie.length>0) {
		for (var i=0; i<favCookie.length; i++) {
			if (favCookie[i]) {
				var data=favCookie[i].split(",,");
				if (data.length==3) {
					newFavs[ii]=favCookie[i];
					favHtml=favHtml+'<a class="fav'+ii+'" id="fav'+ii+'" href="'+data[0]+'" title="'+data[1]+'"><span><img src="'+data[2]+'" alt="'+data[1]+'" width="100"/>'+data[1]+'</span></a>';
					ii++;
				}
			}
		}
	}
	$(".favorites_cottage").html(favHtml);
	cookieArrayWrite("favCookie", newFavs);
}

function formValidateField(event) {
	var el=$(this);
	if (el.attr("type")=="checkbox" || el.attr("type")=="radio") {
		var parentDiv=el.parents("div.row");
		var c=parentDiv.find(":checked").length;
		if (!parentDiv.attr("valCond")) return;
		eval('var result='+parentDiv.attr("valCond")+';');
		if (result==true) {
			parentDiv.find("label.form_help").html("").hide();
			parentDiv.find(".radio_group").removeClass("inv");
		} else {
			parentDiv.find("label.form_help").html(parentDiv.attr("valText")).show();
		}
	} else if (el.attr("type")=="file") {
		if (!el.attr("valCond")) return;
		var v=el.val();
		var types=el.attr("valCond").split(",");
		var matched=0;
		for (i in types) {
			if (v.indexOf("."+types[i])>0) matched++
		}
		if (matched>0) {
			el.parent().find("label.form_help").html("");
			el.removeClass("inv");
			if (formtext.autosubmit==1) {
				$("form.main").find("#mainFormResponse").html(formtext.sending);
				$("form.main").submit();
			}
		} else {
			el.parent().find("label.form_help").html(el.attr("valText"));
		}
	} else {
		if (!el.attr("valCond")) return;
		var v=el.val();
		eval('var result='+el.attr("valCond")+';');
		if (result==true) {
			el.parent().find("label.form_help").html("");
			el.removeClass("inv");
			//if ((el.attr("type")=="text" || el.attr("type")=="password") && event.keyCode==13) formValidateMain() ;
		} else {
			el.parent().find("label.form_help").html(el.attr("valText"));
		}
	}
}

function formValidateMain() {
	var checkedFields=new Object();
	var invalidFields=0;
	var formEl=$("form.main");
	formEl.find(":text, :checkbox, :radio, :file, textarea, select, :password").map( function (i) {
		var el=$(this);
		if (checkedFields[el.attr("name")]==1) {
			return false;
		} else {
			checkedFields[el.attr("name")]=1;
			if (el.attr("type")=="checkbox" || el.attr("type")=="radio") {
				var parentDiv=el.parents("div.row");
				var c=parentDiv.find(":checked").length;
				if (!parentDiv.attr("valCond")) return false;
				eval('var result='+parentDiv.attr("valCond")+';');
				if (result==true) {
					parentDiv.find("label.form_help").html("").hide();
					parentDiv.find(".radio_group").removeClass("inv");
				} else {
					parentDiv.find("label.form_help").html(parentDiv.attr("valText")).show();
					parentDiv.find(".radio_group").addClass("inv");
					invalidFields++
				}
			} else if (el.attr("type")=="file") {
				if (!el.attr("valCond")) return false;
				var v=el.val();
				var types=el.attr("valCond").split(",");
				var matched=0;
				for (i in types) {
					if (v.indexOf("."+types[i])>0) matched++
				}
				if (matched>0) {
					el.parent().find("label.form_help").html("");
					el.removeClass("inv");
				} else {
					el.parent().find("label.form_help").html(el.attr("valText"));
					invalidFields++
				}
			} else {
				if (!el.attr("valCond")) return false;
				var v=el.val();
				eval('var result='+el.attr("valCond")+';');
				if (result==true) {
					el.parent().find("label.form_help").html("");
					el.removeClass("inv");
				} else {
					el.parent().find("label.form_help").html(el.attr("valText"));
					el.addClass("inv");
					invalidFields++
				}
			}
		}
		return false;
	});
	if (invalidFields>0) {
		formEl.find("#mainFormResponse").html(formtext.wrongCount)
        formEl.find(".inv:first").focus();
	} else {
		var t=formEl.find("#mainFormResponse");
		if (formtext.sending) {
			formEl.find("#mainFormResponse").html(formtext.sending);
		} else {
			formEl.find("#mainFormResponse").html("Posielam dáta...");
		}
		formEl.submit();
	}
	return false;
}

function onlyChars(text, validChars) {
	var Char;
	for (i = 0; i < text.length; i++) { 
		Char = text.charAt(i); 
		if (validChars.indexOf(text.charAt(i)) == -1) return false;
	}
	return true;
}

function submitFeedback() {
	$.ajax({
		type: "GET",
		url: "http://"+thisDomain+"/ajax/submit_feedback.php",
		data: "feedback="+$("#feedback").val()+"&"+"contact="+$("#feedbackContact").val(),
		dataType: "text",
		success: function(msg, status){
			alert("Ďakujeme za Váš odkaz.");
			$("#feedback").val($("#feedback").attr("autohide"));
		}
	});
	$("#feedback").val("Posielam...")
}

function submitSupplyStats(id, action) {
	$("#supplyStatsHolder").attr("src", "/ajax/set_supply_stats.php?action="+action+"&supply="+id+"&r="+Math.floor(Math.random()*1000000));
	if (action==3) {
		$("#contactPanel").slideDown("normal");
		$("#contactLink").hide();
		$("#contactSpaceLink"+id).hide();
		$("#contactSpace"+id).show();
	}
}

function keepLogged() {
	$.ajax({
		type: "GET",
		url: "http://"+thisDomain+"/?keepLogged",
		dataType: "text"
	});
}

function initKeepLogged() {
	setInterval("keepLogged();", 60000);
}

function round2(a) {
	return Math.round(a*100)/100;
}