// 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];
	Element.update('job_current', index+1+offset+'');
	if(change) {
//		Effect.Fade('job-2');
		Element.hide('job-2');
//		Effect.Appear('job-1', { queue: 'end'});
		Element.show('job-1', { queue: 'end'});
	}
};

function fixTableSlide() {
	var window_height = getClientHeight();
	setHeight('table-slide',window_height-1);
}

function fixTableSlideJob() {
	var window_height = getClientHeight();
	td_height = $('portfolio-item').getHeight();		
	setHeight('table-slide',window_height-1);
	setHeight('table-slide-line1', (window_height - 15 - td_height) / 2);
	setHeight('table-slide-line3', (window_height - 15 - td_height) / 2);
}

function centerSpinner() {
	var window_width = getClientWidth();
	var window_height = getClientHeight()-20;
        
	setLeft('spinner',0-(19-window_width)/2);
	setTop('spinner',0-(19-window_height)/2);
}

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

function hideTooltip(event, type) {
	if(1 == type) {
		Element.hide('tooltip');
	}
	else {
		Element.hide('tooltip-back');
		Element.hide('tooltip-next');
	}
}

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

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

function updateTooltip(e, type) {
	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;
	
	mouseX = Event.pointerX(e);
	mouseY = Event.pointerY(e);

	if(1 == type) {
		Element.show('tooltip');
		setLeft('tooltip', getTooltipLeft('tooltip', mouseX));
		setTop('tooltip', getTooltipTop('tooltip', mouseY));
	}
	else {
		if ('main' == target.id || 'table-slide-td' == target.id || 'job-1' == target.id || 'table-slide-line1' == target.id || 'table-slide-line3' == target.id) {
			if ('right' == getSide(e)) {
				Element.hide('tooltip-back');
				Element.show('tooltip-next');
				setLeft('tooltip-next', getTooltipLeft('tooltip-next', mouseX));
				setTop('tooltip-next', getTooltipTop('tooltip-next', mouseY));
			}
			else {
				Element.hide('tooltip-next');
				Element.show('tooltip-back');
				setLeft('tooltip-back', getTooltipLeft('tooltip-back', mouseX));
				setTop('tooltip-back', getTooltipTop('tooltip-next', mouseY));
			}
		}
	}
}

function npSlide(e) {
	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' == target.id || 'table-slide-td' == target.id || 'job-1' == target.id) {
		if ('right' == getSide(e)) nextSlide();
		else previousSlide();
	}
	fixTableSlideJob();
}

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

	if (images.length+offset-1 == index && job_has_text) {
//		Effect.Fade('text-slide');
		Element.hide('text-slide');
		changeImage(images.length-1, false);
//		Effect.Appear('image-slide', { queue: 'end'});
		Element.show('image-slide');
	}
	else if (index == 0 && job_has_text) {
//		Effect.Fade('image-slide');
		Element.hide('image-slide');
//		Effect.Appear('text-slide', { queue: 'end'});
		Element.show('text-slide');
	}
	else {
		changeImage(index-offset, true);
	}
};

function nextSlide() {
	if (index >= images.length+(offset*2)-1) index = offset;
	else index++;
	
	window.status=index;
	
	if (1 == index && job_has_text) {
		Element.hide('text-slide');
//		Effect.Fade('text-slide');
		changeImage(index-offset, false);
//		Effect.Appear('image-slide', { queue: 'end'});
		Element.show('image-slide');
	}
	else if (index > images.length-1+offset && job_has_text) {
//		Effect.Fade('image-slide');
		Element.hide('image-slide');
//		Effect.Appear('text-slide', { queue: 'end'});
		Element.show('text-slide');
	}
	else {
		changeImage(index-offset, true);
	}
};

function getScrollX()
{
  var x = window.pageXOffset ||
          document.body.scrollLeft ||
          document.documentElement.scrollLeft;

  return x ? x : 0;
}

function getScrollY()
{
  var x = window.pageYOffset ||
          document.body.scrollTop ||
          document.documentElement.scrollTop;

  return x ? x : 0;
}

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;
};

function fixFixedDivs() {
	$('container').setStyle({
		width: getClientWidth()+'px',
		height: (getClientHeight())+'px'
	})
	$('footer').setStyle({
		top: (getClientHeight()-28)+'px'
	})
}