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

	// Country Selection
	$("#country_closed").click(function() {
		$("#country_opened").show().bind("mouseleave",function(){
			$(this).hide();
		});
		return false;
	});

	// main Offer
	$("#mainOfferAction").click(function() {
		$(".actions").toggle();
		return false;
	});
	$("#mainOfferCountry").click(function() {
		$(".countries2").toggle();
		return false;
	});

	$(".actions > a").bind("click", function() {
		$("#mainAction").val($(this).attr("todo"));
		$("#mainOfferAction").removeClass("register review find").addClass($(this).attr("todo"));
		$(".actions").hide();
		return false;
	});

	$(".countries2 > a").bind("click", function() {
		$("#mainCountry").val($(this).attr("todo"));
		$("#mainOfferCountry").removeClass("uk us ca au ie in").addClass($(this).attr("todo"));
		$(".countries2").hide();
		return false;
	});

	$("#mainOfferGo").bind("click",function(){
		var action=$("#mainAction").val();
		var country=$("#mainCountry").val();

		if (action=="find") {
			document.location.href="http://www.whichwebdesigncompany.com/"+country+"/designers?mainSelection";
		} else if (action=="register") {
			document.location.href="http://www.whichwebdesigncompany.com/"+country+"/register?mainSelection";
		} else if (action=="review") {
			document.location.href="http://www.whichwebdesigncompany.com/"+country+"/search?review&mainSelection";
		}
	});

/*
	// Quick Search
	$("#searchForm select, #searchForm input").bind("change keyup", function() {
		$.ajax({
			type: "GET",
			url: "http://www.ubytovanienaslovensku.eu/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).find("span").length>0) {
				if ( $(this).find("span").html().length>0) {
					$(this).find("span").html("Remove Favourite");
				}
			} else if ($(this).html().length>0) {
				$(this).html("Remove company from favourites");
			}


			updateFavorites();

			$(this).TransferTo({
				duration: 1000,
				to: 'fav'+thisIndex,
				className: 'transferer1',
				easing: 'easein'
			}).removeClass("ico_favorites").addClass("ico_favorites_rem");
		} else {
			delete favCookie[storedAs];
			cookieArrayWrite("favCookie", favCookie);
			thisIndex=storedAs;
			if ($(this).find("span").length>0) {
				if ( $(this).find("span").html().length>0) {
					$(this).find("span").html("Add to Favourites");
				}
			} else if ($(this).html().length>0) {
				$(this).html("Add company to favourites");
			}

			$(this).removeClass("ico_favorites_rem").addClass("ico_favorites");
			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).find("span").length>0) {
						if ( $(this).find("span").html().length>0) {
							$(this).find("span").html("Remove Favourite");
						}
					} else if ($(this).html().length>0) {
						$(this).html("Remove company from favourites");
					}

					$(this).removeClass("ico_favorites_rem").addClass("ico_favorites");
				}
			}
		}
	});

	// Update Favorites
	updateFavorites();

	
	// Main Form validation
	$('form#mainForm :text, form#mainForm :password, form#mainForm textarea, form#mainForm select').bind("change blur", formValidateField);
	$('form#mainForm :file').bind("change", formValidateField);
	$('form#mainForm input:radio, form#mainForm input:checkbox').bind("change click", formValidateField);

	$('form#mainForm #name_parsed').bind("change click blur focus keyup", updateNameParsed);


	$("[toolTip]").hover(
		function(e) {
            $('#toolTip')
				.html($(this).attr("toolTip"))
				.css("top",(e.pageY + 30) + "px")
				.css("left",(e.pageX + 0) + "px")
				.show()
		},
		function() {
			$('#toolTip').hide();
		}
	);

	$("[toolTip]").mousemove(function(e){
		$("#toolTip")
			.css("top",(e.pageY + 30) + "px")
			.css("left",(e.pageX + 0) + "px");
	});
});

function websiteClick(id, hash) {
	$.ajax({
		type: "POST",
		url: "http://www.whichwebdesigncompany.com/ajax/website_click.php",
		data: "id="+id+"&hash="+hash,
		dataType: "text"
	});

}

function toggleReview(id, a) {
	if ($("#reviewDetails"+id).attr("status")=="open") {
		var action="close";
	} else {
		var action="open";
	}

	$("[rel=reviewDetails]").hide().attr("status", "");
	$("[rel=reviewClick]").removeClass("ico_up").addClass("ico_down");

	if (action=="open") {
		$("#reviewDetails"+id).show().attr("status", "open");
		$(a).removeClass("ico_down").addClass("ico_up");
	}
	a.blur();
}

// 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) {
	var regex = /^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i;
	return regex.test(value);
}

function formIsUrl(s) {
	var v = new RegExp();
    v.compile("^[A-Za-z]+://[A-Za-z0-9-_]+\\.[A-Za-z0-9-_%&\?\/.=,]+$");
	return v.test(s);
}

function formWordCount(s) {
	var a=s.split(" ");
	return a.length;
}

function formValidateField(event) {
	var el=$(this);
	if (el.attr("type")=="checkbox" || el.attr("type")=="radio") {
		if (el.attr("valcond")>0) {
			var v=el.is(":checked");
			eval('var result='+v.attr("valCond")+';');
			if (result==true) {
				el.next().removeClass("pink").css("font-weight", "normal");
			} else {
				el.next().addClass("pink").css("font-weight", "bold");
				invalidFields++
			}
		} else {
			var parentDiv=el.parents("div.check");
			if (!parentDiv.attr("valCond")) return;
			var c=parentDiv.find(":checked").length;
			eval('var result='+parentDiv.attr("valCond")+';');
			if (result==true) {
				parentDiv.find("p.warning").hide();
				parentDiv.find(".group").removeClass("inv");
			} else {
				parentDiv.find("p.warning").show();
			}
		}
	} else if (el.attr("type")=="file") {
		if (!el.attr("valCond")) return false;
		var v=el.val();
		var types=el.attr("valCond").split(",");
		if (v.length==0 && types[0]==0) return false;
		var matched=0;
		for (i in types) {
			if (v.indexOf("."+types[i])>1) matched++
		}
		if (matched>0) {
			el.parent().find("p.warning").html("");
			el.removeClass("inv");
		} else {
			el.parent().find("p.warning").show();
		}
	} else {
		if (!el.attr("valCond")) return;
		var v=el.val();
		eval('var result='+el.attr("valCond")+';');
		if (result==true) {
			el.parent().find("p.warning").hide();
			el.removeClass("inv");
			if ((el.attr("type")=="text" || el.attr("type")=="password") && event.keyCode==13) formValidateMain() ;
		} else {
			el.parent().find("p.warning").show();
		}
	}
}

function formValidateMain(cont) {
	var checkedFields=new Object();
	var invalidFields=0;
	var formEl=$("form#mainForm");
	formEl.find(":text, :checkbox, :radio, :file, textarea, select, :password, :hidden").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") {
				if (el.attr("valcond")!=undefined) {
					var v=el.is(":checked");
					eval('var result='+el.attr("valCond")+';');
					if (result==true) {
						el.next().removeClass("pink").css("font-weight", "normal");
					} else {
						el.next().addClass("pink").css("font-weight", "bold");
						invalidFields++
					}
				} else {
					var parentDiv=el.parents("div.check");
					var c=parentDiv.find(":checked").length;
					if (!parentDiv.attr("valCond")) return false;
					eval('var result='+parentDiv.attr("valCond")+';');
					if (result==true) {
						parentDiv.find("p.warning").hide();
						parentDiv.find(".group").removeClass("inv");
					} else {
						parentDiv.find("p.warning").show();
						parentDiv.find(".group").addClass("inv");
						//alert(el.attr("name"));
						invalidFields++
					}
				}
			} else if (el.attr("type")=="file") {
				if (!el.attr("valCond")) return false;
				var v=el.val();
				var types=el.attr("valCond").split(",");
				if (v.length==0 && types[0]==0) return false;
				var matched=0;
				for (i in types) {
					if (v.indexOf("."+types[i])>1) matched++
				}
				if (matched>0) {
					el.parent().find("p.warning").hide();
					el.removeClass("inv");
				} else {
					el.parent().find("p.warning").show();
					el.addClass("inv");
					invalidFields++
				}
			} else {
				if (!el.attr("valCond")) return false;
				var v=el.val();
				eval('var result='+el.attr("valCond")+';');
				if (result==true) {
					el.parent().find("p.warning").hide();
					el.removeClass("inv");
				} else {
					el.parent().find("p.warning").show();
					el.addClass("inv");
					invalidFields++
				}
			}
		}
		return false;
	});
	if (invalidFields>0) {
		formEl.find("#mainFormSending").hide();
		//formEl.find(".inv:first").scrollIntoView();
		formEl.find(".inv:first").focus();
	} else {
		formEl.find("#mainFormSending").show();
		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 userfileToggle(field) {
	if (document.getElementById(field+'_delete').value==0) {
		document.getElementById(field+'_delete').value=1;
		document.getElementById(field+'_linkRemove').style.display='none';
		document.getElementById(field+'_linkUndo').style.display='';
	} else {
		document.getElementById(field+'_delete').value=0;
		document.getElementById(field+'_linkRemove').style.display='';
		document.getElementById(field+'_linkUndo').style.display='none';
	}
	return false;
}

function updateNameParsed() {
	$('form#mainForm #urlNameSpot').html($('form#mainForm #name_parsed').val());

}





//////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////

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="pic sml fl" id="fav'+ii+'" href="'+data[0]+'" title="'+data[1]+'"><img src="'+data[2]+'" alt="'+data[1]+'" width="70"/></a>';
					ii++;
				}
			}
		}
	}
	if (favHtml.length>0) {
		$("#favoritesPanel").show();
		$("#favoritesBox").html(favHtml);
	} else {
		$("#favoritesPanel").hide();
		$("#favoritesBox").html("");
	}
	cookieArrayWrite("favCookie", newFavs);
}

function clearFavorites() {
	cookieArrayWrite("favCookie", "");
	$('[addtofavs]').removeClass("ico_favorites_rem").addClass("ico_favorites").find("span").html("Add to favorites");
	updateFavorites();
}

function showLogin(t) {
	$('#loginPanel').slideDown('normal', function() {
		$(t).TransferTo({
			duration: 1000,
			to: 'loginEmailField',
			className: 'transferer1',
			easing: 'easein'
		});
	});
	//document.location.href="#loginEmailAnchor";
}

function sendFeedback() {
	if ($("#feedbackField").val().length<4) {
		alert("No feedback supplied.");
		return;
	}
	$.ajax({
		type: "POST",
		url: "http://www.whichwebdesigncompany.com/ajax/feedback.php?feedback="+$("#feedbackField").val(),
		dataType: "text",
		success: function(msg, status){
			if (msg.length>3) alert(msg);
		}
	});
	$("#feedbackField").val("");
}

// Rating Bar
var rbWidths=new Array(12, 7, 10, 9, 10, 9, 10, 9, 10, 11);
var rbWidthsT=new Array(12, 19, 29, 38, 48, 57, 67, 76, 86, 97);

function rbCreate(rating, field, text, compulsory, missing) {
	var o="";
	if (!text) text="Rating";
	if (rating==0 && !field) {
		document.write('<div class="rbi" style="position: static;"></div>');
	} else if (!field) {
		var ratingStars=Math.ceil(97*(rating/5));
		document.write('<div class="rb_sel_wrapper" toolTip="Rating: '+rating+'"><div class="rb_background r0" style="width: 97px;"></div><div class="rb_sel_10" style="width: '+ratingStars+';"></div></div>');
	} else if (field) {
		o='<div class="rb_sel_wrapper'+(missing==1?" missing":"")+'" onMouseOut="rbUpdate(\''+field+'\')"><div class="rb_sel_10" id="rb_'+field+'"></div><div class="rb_sel_out">';
		var tw=0;
		for (i in rbWidths) {
			if (i=="indexOf") continue;
			tw=tw-(-(rbWidths[i]));
			o+='<div class="br_sel_selector" style="width: '+rbWidths[i]+'px;" onMouseOver="document.getElementById(\'rb_'+field+'\').style.width=\''+tw+'px\'" onClick="rbSet(\''+field+'\', '+i+')">&nbsp;</div>';
		}
		o+='</div>';
		o+='<div class="rbi r0"></div>';
		o+='</div>';
		o+='<input name="'+field+'" id="'+field+'" type="hidden" value="'+rating+'" '+((compulsory==1)?('valCond="v>0"'):(''))+'>';
		document.write(o);
		rbUpdate(field);
	}
}

function rbUpdate(field) {
	value=document.getElementById(field).value;
	for (i=0; i<5.5; i=i+0.5) {
		if (i>=value) {
			var ratingStars=i/0.5;
			break;
		}
	}
	var px=rbWidthsT[ratingStars-1];
	if (!px) px="0";
	document.getElementById('rb_'+field).style.width=px+'px';
}

function rbSet(field, value) {
	document.getElementById(field).value=(value+1)*0.5;
	rbUpdate(field);
}