// Place your application-specific JavaScript functions and classes here
// This file is automatically included by javascript_include_tag :defaults

//***Cross browser attach event function. For 'evt' pass a string value with the leading "on" omitted
//***e.g. AttachEvent(window,'load',MyFunctionNameWithoutParenthesis,false);
function AttachEvent(obj,evt,fnc,useCapture){
	if (!useCapture) useCapture=false;
	if (obj.attachEvent) {
		return obj.attachEvent("on"+evt,fnc);
	}
	else if (obj.addEventListener){
		obj.addEventListener(evt,fnc,useCapture);
		return true;
	}
	else{
		MyAttachEvent(obj,evt,fnc);
		obj['on'+evt]=function(){ MyFireEvent(obj,evt) };
	};
};

//The following are for browsers like NS4 or IE5Mac which don't support either
//attachEvent or addEventListener
function MyAttachEvent(obj,evt,fnc){
	if (!obj.myEvents) obj.myEvents={};
	if (!obj.myEvents[evt]) obj.myEvents[evt]=[];
	var evts = obj.myEvents[evt];
	evts[evts.length]=fnc;
};
function MyFireEvent(obj,evt){
	if (!obj || !obj.myEvents || !obj.myEvents[evt]) return;
	var evts = obj.myEvents[evt];
	for (var i=0,len=evts.length;i<len;i++) evts[i]();
};

function changeImage(index, change) {
	if(change) {
		$('job-2').src = '/images/common/spacer.gif' // Workaround p/ Bug no safari: http://www.quirksmode.org/bugreports/archives/2005/03/Safari_Image_src_swap_resize_bug.html
		$('job-2').src = $('job-1').src;
		Element.hide('job-1');
		Element.show('job-2');
	}
	$('job-1').src = '/images/common/spacer.gif' // Workaround p/ Bug no safari: http://www.quirksmode.org/bugreports/archives/2005/03/Safari_Image_src_swap_resize_bug.html
	$('job-1').src = images[index];
	if(change) {
		Effect.Fade('job-2', { duration: 0.5 });
		Effect.Appear('job-1', { duration: 0.5, queue: 'end'});
	}
};


function getSide(evt) {
	return (mouseX >= getClientWidth()/2) ? 'right' : 'left';
}

function hideTooltip(event) {
	Element.hide('tooltip-back');
	Element.hide('tooltip-next');
}

function resetTooltip() {
	hideTooltip();
	setLeft('tooltip-back', 0);
	setTop('tooltip-back', 0);
	setLeft('tooltip-next', 0);
	setTop('tooltip-next', 0);
}

function getTooltipLeft(tooltip, mouseX) {
	tooltip_width = Element.getDimensions(tooltip)['width'];
	if(mouseX+8 > getClientWidth()-tooltip_width-20 || mouseX <= 10) {
		return getClientWidth()-tooltip_width-20;
	}
	else {
		return mouseX+8;
	}
}

function getTooltipTop(tooltip, mouseY) {
	tooltip_height = Element.getDimensions(tooltip)['height'];
	if(mouseY+15 > getClientHeight()-tooltip_height-60 || mouseY <= 10) {
		return getClientHeight()-tooltip_height-60;
	}
	else {
		return mouseY+15;
	}
}

function updateTooltip(e) {
	if(!npActive) return;

	var target;
	if (!e) var e = window.event;
	if (e.target) target = e.target;
	else if (e.srcElement) target = e.srcElement;
	if (target.nodeType == 3) // defeat Safari bug
		target = target.parentNode;

	mouseX=e.pageX?e.pageX:e.clientX;
	mouseY=e.pageY?e.pageY:e.clientY;

	if ('main-text' != target.id && 'main-text-p' != target.id) {
		if ('right' == getSide(e)) {
			left = getTooltipLeft('tooltip-next', mouseX);
			right = getTooltipTop('tooltip-next', mouseY);
			if(left && right) {
				Element.hide('tooltip-back');
				Element.show('tooltip-next');
				setLeft('tooltip-next', left);
				setTop('tooltip-next', right);
			}
			else hideTooltip();
		}
		else {
			left = getTooltipLeft('tooltip-back', mouseX);
			right = getTooltipTop('tooltip-back', mouseY);
			if(left && right) {
				Element.hide('tooltip-next');
				Element.show('tooltip-back');
				setLeft('tooltip-back', getTooltipLeft('tooltip-back', mouseX));
				setTop('tooltip-back', getTooltipTop('tooltip-back', mouseY));
			}
			else hideTooltip();
		}
	}
	else hideTooltip();
}

function npSlide(e) {
	if(!npActive) return;

	var target;
	if (!e) var e = window.event;
	if (e.target) target = e.target;
	else if (e.srcElement) target = e.srcElement;
	if (target.nodeType == 3) // defeat Safari bug
		target = target.parentNode;

	if ('main-text' != target.id && 'main-text-p' != target.id) {
		if ('right' == getSide(e)) nextSlide();
		else previousSlide();
	}
}

function previousSlide() {
	var queue = Effect.Queues.get('global');
	if(0 != queue.effects.length) return;


	if (index == 0) index = images.length+offset-1;
	else index--;

	if(0 == index && job_has_text) {
		Effect.Appear('main-text');
	}
	else if (images.length+offset-1 == index && job_has_text) {
		Effect.Fade('main-text');
		changeImage(index-offset, true);
	}
	else {
		changeImage(index-offset, true);
	}
	Element.update('job_current', index-offset+1+'');
};

function nextSlide() {
	var queue = Effect.Queues.get('global');
	if(0 != queue.effects.length) return;

	if (index >= images.length+offset-1) index = 0;
	else index++;
	
	if(0 == index && job_has_text) {
		Effect.Appear('main-text');
		changeImage(index, true);
	}
	else if (1 == index && job_has_text) {
		Effect.Fade('main-text');
	}
	else {
		changeImage(index-offset, true);
	}
	Element.update('job_current', index-offset+1+'');
};

function getClientWidth()
{
  var x = window.innerWidth ||
          document.documentElement.clientWidth ||
          document.body.clientWidth;

  return x ? x : 0;
};

function getClientHeight()
{
  var x = window.innerHeight ||
          document.documentElement.clientHeight ||
          document.body.clientHeight;


  return x ? x : 0;
};

function setTop(obj, x)
{
  obj = $(obj);
  obj.style ? obj.style.top = x + "px" : obj.top = x;
};

function setLeft(obj, x)
{
  obj = $(obj);
  obj.style ? obj.style.left = x + "px" : obj.left = x;
};

function setWidth(obj, x)
{
  obj = $(obj);
  obj.style ? obj.style.width = x + "px" : obj.width = x;
};

function setHeight(obj, x)
{
  obj = $(obj);
  obj.style ? obj.style.height = x + "px" : obj.height = x;
};
