﻿// 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);
}

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").mouseover(function() {
//		$(".languages").animate({ height: 'show' }, 'fast').bind("mouseleave", function(){
//			$(this).animate({ height: 'hide'}, 'fast');
//		});
		$(".languages").show().bind("mouseleave",function(){
			$(this).hide();
		});
	});
	
	// 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]").each( function (i) {
		$(this)
		.focus(function() {
			if (this.value==$(this).attr("autohide")) this.value='';
		})
		.blur(function() {
			if (this.value=='') this.value=$(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");
	});
	
	
	// 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);
			}
		});
	});

	// 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);
			$.ajax({
				type: "GET",
				url: "http://"+thisDomain+"/ajax/favorites_count.php",
				data: "id="+nameParsed,
				dataType: "text"
			});
		} 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();

	// Prepare the Search
	if (setSearch==1) {
		var html="";
		for (i in s_su) {
			if (s_su[i][1]==undefined) continue;
			html+="<option value='"+s_su[i][0]+"'>"+s_su[i][1]+"</option>"
		}
		$("#searchForm #lfSupplyType").prepend(html);
	
		var html="";
		for (i in s_ar) {
			if (s_ar[i][1]==undefined) continue;
			html+="<option value='"+s_ar[i][0]+"'>"+s_ar[i][1]+"</option>"
		}
		$("#searchForm #lfArea").prepend(html);
		
		var html="";
		for (i in s_mi) {
			if (s_mi[i][1]==undefined) continue;
			html+="<option value='"+s_mi[i][0]+"'>"+s_mi[i][1]+"</option>"
		}
		$("#searchForm #lfMinPrice").prepend(html);
	
		var html="";
		for (i in s_ma) {
			if (s_ma[i][1]==undefined) continue;
			html+="<option value='"+s_ma[i][0]+"'>"+s_ma[i][1]+"</option>"
		}
		$("#searchForm #lfMaxPrice").prepend(html);
	
		var html="";
		for (i in s_up) {
			if (s_up[i][1]==undefined) continue;
			html+="<option value='"+s_up[i][0]+"'>"+s_up[i][1]+"</option>"
		}
		$("#searchForm #lfUpdated").prepend(html);

		var html="";
		for (i in s_pa) {
			if (s_pa[i][1]==undefined) continue;
			html+="<option value='"+s_pa[i][0]+"'>"+s_pa[i][1]+"</option>"
		}
		$("#searchForm #lfPayType").prepend(html);

		setTimeout("setSearchStatus()", 1);
	}

	// 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);

});

function setSearchStatus() {
	$("#searchForm #lfSupplyType").val(searchStatus[0]);
	$("#searchForm #lfArea").val(searchStatus[1]);
	$("#searchForm #lfMinPrice").val(searchStatus[2]);
	$("#searchForm #lfMaxPrice").val(searchStatus[3]);
	$("#searchForm #lfUpdated").val(searchStatus[4]);
	$("#searchForm #lfPayType").val(searchStatus[6]);
}

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);
		//window.open("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);
			}
		});
	}
	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>0", text: lang.reserve.wrongPhone};
	valData.people_count={cond: "parseInt(v)>0", text: lang.reserve.wrongPeopleCount};
	valData.children_count={cond: "true", 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);
		$.ajax({
			type: "GET",
			url: "http://"+thisDomain+"/ajax/reservation.php",
			data: $("#reservationForm").serialize(),
			dataType: "text",
			success: function(msg, status){
				$("#reservationForm .resultsResponse").css("display", "block").html(lang.reserve.sendSuccess);
			}
		});
	}
	return false;
}

// 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(problems.join("<br/>"));
		return false;
	} else {
		return true;
	}
}

function formIsEmail(value) {
	var regex = /^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i;
	return regex.test(value);
}

function objectGetContact(id, column, returnObject) {
	$(returnObject).html(lang.details.reading);
	$.ajax({
		type: "GET",
		url: "http://"+thisDomain+"/ajax/get_contact.php",
		data: "id="+id+"&column="+column,
		dataType: "text",
		success: function(msg, status) {
			if (msg.length==0) msg=lang.details.noInfo;
			if (formIsEmail(msg)==true) {
				$(returnObject).html(msg).attr("href", "mailto:"+msg).removeAttr("onclick");
			} else {
				$(returnObject).html(msg).attr("href", "#").attr("onclick", "return false;");
			}
			return false;
		}
	});
	return false;
}

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();
		v=v.toLowerCase();
		var types=el.attr("valCond").split(",");
		var matched=0;
		if (v.indexOf(".jpg")>0 || v.indexOf(".gif")>0 || v.indexOf(".jpeg")>0) matched=1;
		if (matched==1) {
			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(cont) {
	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();
				v=v.toLowerCase();
				var types=el.attr("valCond").split(",");
				var matched=0;
				if (v.indexOf(".jpg")>0 || v.indexOf(".gif")>0 || v.indexOf(".jpeg")>0) matched=1
				if (matched==1) {
					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)
	} else {
		var t=formEl.find("#mainFormResponse");
		if (formtext.sending) {
			formEl.find("#mainFormResponse").html(formtext.sending);
		} else {
			formEl.find("#mainFormResponse").html("Posielam dáta...");
		}
		if (cont==1) {
			$("input:hidden[name=continue]").val(1)
		}
		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 setAgent() {
	if (
		$('#searchForm #lfSupplyType').val()=='' &&
		$('#searchForm #lfArea').val()=='' &&
		$('#searchForm #lfMinPrice').val()=='' &&
		$('#searchForm #lfMaxPrice').val()=='' &&
		$('#searchForm #lfUpdated').val()=='' &&
		$('#searchForm #lfPayType').val()=='' &&
		$('#searchForm #lfKeyword').val()==''
		) {
		alert("Nezadali ste žiadne kritériá vyhľadávania. Vyberte, prosím, aspoň jedno kritérium.");
	} else if (!formIsEmail($('#searchForm #agent').val())) {
		alert("Zadajte správnu emailovú adresu.");
	} else {
		$('#searchForm').submit(); return false;
	}
}
