
function substitute() 
{ 
  var num = arguments.length; 
  var oStr = arguments[0];
  for (var i = 1; i < num; i++) 
  { 
    var pattern = "\\{" + (i-1) + "\\}"; 
    var re = new RegExp(pattern, "g"); 
    oStr = oStr.replace(re, arguments[i]); 
  } 
  return oStr; 
} 

var snap = 18
var width = 35

function ref(instance_or_id)
{
	return (typeof(instance_or_id)=="string") ? document.getElementById(instance_or_id) : instance_or_id;
}

var addListener = function()
{
	if(window.addEventListener)
	{
		return function(el,type,fn) {el.addEventListener(type,fn,false);};
	}
	else if(window.attachEvent)
	{
		return function(el,type,fn) { var f=function() { fn.call(el,window.event); }; el.attachEvent('on'+type,f); };
	}
	else
	{
		return function(el,type,fn) {el['on'+type]=fn;}
	}
}();


function hasAncestor(element,ancestor)
{
	var el=ref(element);
	var an=ref(ancestor);
	while(el!=document && el!=null)
	{
		if(el==an)return true;
		el=el.parentNode;
	}
	return false;
}

function GetElementPosition(obj) 
{
	var curleft = curtop = 0;
	if (obj.offsetParent) 
	{
		do 
		{
			curleft += obj.offsetLeft;
			curtop += obj.offsetTop;
		} 
		while (obj = obj.offsetParent);
		return [curleft,curtop];
	}	
}


function findPosX(e, elm)
{
	return e.offsetX ?  e.offsetX :  e.layerX - GetElementPosition(elm)[0] + document.getElementById("container").offsetLeft;
}

function ResetAllRate(e, id) 
{
	ResetRate("pay")
	ResetRate("respect")
	ResetRate("benefits")
	ResetRate("job_security")
	ResetRate("work_life_balance")
	ResetRate("career_potential_growth")
	ResetRate("location")
	ResetRate("work_environment")
	ResetRate("co_worker_competence")
	ResetRate("manager_competence")
	ResetRate("is_fun")
	ResetRate("ce")			
}

function ResetRate(id) 
{
	elm = document.getElementById("rate_scroll_" + id)
	value = document.getElementById("rate_field_" + id).value
	image = document.getElementById("rate_image_" + id)
	if (image)
		image.style.backgroundPosition = -value * width;
	elm.style.width = value * snap
}

function ShowDesc(e, name, desc) 
{
	elm = document.getElementById("ratingDesc")
	elm.innerHTML = "<h4>" + name + "</h4><span>" + desc + "<span>"; 
	elm.className = "ratingDescHighlight";
}

function ShowDefaultDesc(style) 
{
	elm = document.getElementById("ratingDesc");
	elm.innerHTML = "<h4>" + MESSAGES["add_review_advices_title"][g_lng] + "</h4>"
				+ "<span>" + MESSAGES["add_review_advices_content"][g_lng] + "<span>"; 
	elm.className = "ratingDescDefault";
}

function SetRateByValue(id, value)
{
	elm = document.getElementById("rate_scroll_" + id)
	image = document.getElementById("rate_image_" + id)
	elm.style.width = value * snap
	image.style.backgroundPosition = -value * width;
	document.getElementById("rate_field_" + id).value = value
}

function SetRate(e, id, setValue) 
{
	if(!e) e=window.event;
	elm = document.getElementById("rate_scroll_" + id)
	x = findPosX(e, elm)
	value = Math.ceil(x / snap)
	
	image = document.getElementById("rate_image_" + id)
	elm.style.width = value * snap
	image.style.backgroundPosition = -value *width;
	
	if (setValue)
		document.getElementById("rate_field_" + id).value = value
}

function AddRateFixed(id, name, score)
{
	var parent = document.getElementById(id)
	var child = document.createElement('div');
	child.innerHTML =
		"<div class='rating'>" 
			+ "<div class='ratingName'>" + name + "</div>"
			+ "<div class='ratingSliderBack'>"
				+ "<div id='rate_scroll_" + id + "' class='ratingSliderFront'></div>"
			+ "</div>"
		+ "<input class='ratingField' type='hidden' id='rate_field_" + id + "' name='" + id+ "' value='"+ score + "'></div>"
	 parent.appendChild(child);
	 ResetRate(id)
}

function AddRate(id, name, desc, style)
{
	var parent = document.getElementById(id)
	var child = document.createElement('div');
	child.innerHTML =
		"<div class='rating' onmousemove='ShowDesc(event, \"" + name + "\", \"" + desc + "\")'  >" 
			+ "<div class='ratingName'>" + name + "</div>"
			+ "<div class='ratingSliderBack' onmousemove='SetRate(event, \"" + id + "\") '>"
				+ "<div id='rate_scroll_" + id + "' class='ratingSliderFront' onmouseout='ResetAllRate(event)' onclick='SetRate(event, \"" + id + "\", true)'></div>"
			+ "</div>"
			+ "<div class='ratingSmiley' id='rate_image_" +  id +"'></div>"
		+ "<input class='ratingField' type='text' id='rate_field_" + id + "' name='" + id+ "' value='5'></div>"
	 parent.appendChild(child);
}

function ShowCompanyMenu()
{	

	var menuCompany = document.getElementById("menuCompany")
	menuCompany.onmouseover = 0
	
	var menuCompanyExpanded = document.getElementById("menuCompanyExpanded")
	menuCompanyExpanded.style.display = "block";
}

function HideCompanyMenu()
{
	var menuCompanyExpanded = document.getElementById("menuCompanyExpanded")
	menuCompanyExpanded.style.display = "none";	
	
	//var menuCompany = document.getElementById("menuCompany")
	//menuCompany.onmouseover = ShowCompanyMenu()			
}

function ComparePassword() 
{
	var e1 = document.getElementById("registerPassword")
	var e2 = document.getElementById("registerPasswordConfirm")
	var e3 = document.getElementById("passwordMatch")
	if ((e1.value == e2.value) && (e1.value.length >= 4))
		e3.innerHTML = "OK" ;
	else
		e3.innerHTML = "";
}

function CountCharacters() 
{
	var elm = document.getElementById("characterNumber")
	elm.innerHTML = document.addRating.review.value.length;	
}

function OpenLoginBox()
{
	var elm = document.getElementById("floatboxLogin");
	if (elm.style.display != "block")
	{
		elm.style.display = "block";
		document.getElementById("homeLoginEmail").focus();
	}
	else
		elm.style.display = "none";
	return false;
}

function CloseLoginBox()
{
	var elm = document.getElementById("floatboxLogin");
	if (elm.style.display != "none")
		elm.style.display = "none";
}

addListener(document,'click', 
	function(e)
	{
		var element=e.target || e.srcElement;
		if(!hasAncestor(element,'floatboxLogin') && element.className.indexOf('floatboxLoginOpener')==-1)
		{
			CloseLoginBox();
		}
	}
);

function ToggleAnonymousCommentVisibility(elm)
{
	var content = elm.parentNode.nextSibling;
	if (content.style.display == "block")
	{
		elm.innerHTML = "Afficher";
		content.style.display = "none";
	}
	else
	{
		elm.innerHTML = "Masquer";
		content.style.display = "block";
	}
	
}

function ToggleJobs(elm)
{
	var elm = document.getElementById("companyJobsMore");
	if (elm.style.display == "block")
	{
		elm.style.display = "none";
	}
	else
	{
		elm.style.display = "block";
	}
	
}

function ShowComment(id)
{
	var elm = document.getElementById("commentPopup" + id);
	
	if (elm.style.display == "none")
		elm.style.display = "block"
	new Effect.ScrollTo(elm, {duration: .5, offset: -300});
	
	review_comment_update(id);
}

function ShowMessage(id, username, companyName, me)
{
	var elm = document.getElementById("messagePopup" + id);
	var area = $("textareaMessage" + id)
	if (area)
		area.value = substitute(MESSAGES["review_message_text"][g_lng], username, companyName, me);
	
	if (elm.style.display == "none")
		elm.style.display = "block"
	new Effect.ScrollTo(elm, {duration: .5, offset: -300});
	
	review_message_update(id);
}

function TogglePopupVisibility(e, self, id, name)
{

	var elm1 = document.getElementById("commentPopup" + id)
	var elm2 = document.getElementById("inappropriatePopup" + id)
	var elm3 = document.getElementById("sendFriendPopup" + id)
	var elm4 = document.getElementById("messagePopup" + id)
	var elm5 = document.getElementById("quickMessagePopup" + id)
	var elm = document.getElementById(name + id)
	
	if (elm && elm.style.display == "block")
	{
		elm.style.display = "none"
		return
	}
	
	if (elm1) elm1.style.display = "none"
	if (elm2) elm2.style.display = "none"
	if (elm3) elm3.style.display = "none"
	if (elm4) elm4.style.display = "none"
	if (elm5) elm5.style.display = "none"
	if (elm)  elm.style.display = "block"
}


function StickSidebar()
{
	var offsetY = 5;	
	var offsetX = 5;
	
	$("sidebar").style.display = "block"
	
	var sideX = GetElementPosition($("container"))[0] + 800 + offsetX
	$("sidebar").style.left = sideX + "px";
	
	var sideY = (window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0) + offsetY
	if($("container").offsetHeight > sideY + $("sidebar").offsetHeight)
		$("sidebar").style.top = sideY + "px";
}




 window.onscroll = StickSidebar
 window.onresize = StickSidebar
 onload = StickSidebar
