// sexyflow script by nosferathoo@o2.pl
// @_v
var sexyness=50; //60

var deadzone1=200;
var deadzone2=450;
var px=0;
var px2=0;
var width2=0;
var firstrun=true;


function m_move(e) {	
	if (!e) var e = window.event;
	if (e.pageX || e.pageY) {
		m_x = e.pageX;
	}
	else if (e.clientX || e.clientY) {
		m_x = e.clientX;
	}
	
//	w2=w/2;
//	px=Math.max(deadzone,Math.min(w2-deadzone,w2-m_x))/(w2-deadzone)*(Math.PI/2);
//	px=Math.cos(px);
//	px*=(w2-deadzone);
	px=Math.min(Math.max(deadzone1,m_x)-deadzone1,w-deadzone1-deadzone2);
	px=px/(w-deadzone1-deadzone2);
	px=Math.floor(-px*width2);
	m_x-=px;
	return true;
}

var ids=[
	"home",
	"haircolouringcorrecting",
	"haircolouringbutton",
	"stylecut",
	"clairetaylorbeautytherapiesdownstairscolstonstsalon01",
	"beauticianbutton",
	"weddingservices",
	"bridalhairbutton",
	"cutsbutton",
	"ladiescutfinish38restyle45washfinish",
	"hairextensionsbutton",
	"extensionspermingrelaxing",
	"tatmanbutton",
	"youcanfindmackdaddysat3bristollocations",
	"popinorring"		
	];
var levels=[1,1.05,1.2,1.4];
var divs=[
	{l:0,x:0,y:0},
	{l:1,x:137,y:168},
	{l:1,x:120,y:312},
	{l:1,x:316,y:285},
	{l:1,x:2270,y:254},
	{l:1,x:2184,y:409},
	{l:2,x:390,y:215},
	{l:2,x:589,y:279},
	{l:2,x:2022,y:290},
	{l:2,x:1812,y:258},
	{l:2,x:2758,y:241},
	{l:2,x:2915,y:169},
	{l:3,x:1509,y:215},
	{l:3,x:1710,y:219},
	{l:3,x:1798,y:333}
	];

var hud=["cosmicwaxbutton","decafcatbutton","arrowleft","arrowright"];

// fade in/outs
var opTable=[];

function isArray(obj) {
   if (obj.constructor.toString().indexOf("Array") == -1)
      return false;
   else
      return true;
}

function getElementsByClass(className)
{
	var c=0;
	var i=0;
	var tagCollect = [];
	var tags = document.getElementsByTagName("*");
	if (tags.length == 0) tags=document.getElementsByTagName("div");
	
	for (i=0; i < tags.length; i++)
	{
		if (tags[i].className==className)
		{
			tagCollect[c]=tags[i];
			c++;
		}
	}
	return(tagCollect);
}

function setOpacity(_class,_opacity) {
	_id=getElementsByClass(_class);

	for(j=0;j<_id.length;++j) {
		found=false;
		for(i=0;i<opTable.length;++i) {
			if (opTable[i].id==_id[j]) {
				found=true;
				opTable[i].to=_opacity;
				break;
			}		
		}
		
		if (!found) {
			opTable.push({id:_id[j],opacity:1-_opacity,to:_opacity});
		}
	}
}

var leftOpacity=1;
var rightOpacity=1;

function timer() {
	
	for(i=0;i<opTable.length;++i) {
		if (opTable[i].to!=opTable[i].opacity) {
			diff=opTable[i].to-opTable[i].opacity;
			if (Math.abs(diff)>0.1) {
				opTable[i].opacity+=(diff>0?0.1:-0.1);
			} else {
				opTable[i].opacity=opTable[i].to;				
			}
			el=opTable[i].id;
			if (opTable[i].opacity!=0) {
				el.style.MozOpacity = opTable[i].opacity;
				el.style.KhtmlOpacity = opTable[i].opacity;
				el.style.opacity = opTable[i].opacity;
				
				if((el.style.filter!=null)&&(el.style.filter!='undefined')) {
					el.style.zoom="1";
					el.style.filter="alpha(opacity="+(opTable[i].opacity*100)+")";
				}
				el.style.visibility = 'visible';
			} else {
				el.style.visibility = 'hidden';
			}
		} else {
		}
	}
	
	el=document.getElementById('home');

	w=document.body.clientWidth;
	if (el.innerWidth)
	width=el.innerWidth;
	else
	width=el.offsetWidth;
	width2=width-w;

	h=document.body.clientHeight;
	if (el.innerHeight)
	height=el.innerHeight;
	else
	height=el.offsetHeight;

	if (firstrun) {
		px=px2=-width2/2;
		firstrun=false;
	} else px2+=(px-px2)/sexyness;
	
	pxs=[];
	for(i=0;i<levels.length;++i) {
		pxs[i]=Math.ceil(levels[i]*px2);
	}
	
	py=Math.ceil((h-height)/2);
	for(i=0;i<ids.length;++i) {		
		el=document.getElementById(ids[i]);
		el.style.left=( divs[i].x + pxs[divs[i].l] ) + 'px';
		el.style.top=( divs[i].y + py )+'px';
	}
	
	for (i=0;i<hud.length;++i) {
		el=document.getElementById(hud[i]);
		if (el.innerHeight)
		height2=el.innerHeight;
		else
		height2=el.offsetHeight;		
		el.style.top=Math.min(py+height-height2-5,h-height2-5)+'px';
	}
	if ((-px2>deadzone1)!=leftOpacity) {
		leftOpacity=(-px2>deadzone1);
		setOpacity("arrowleft",leftOpacity?1:0);
	}
	if ((-px2<width2-deadzone2)!=rightOpacity) {
		rightOpacity=(-px2<width2-deadzone2);
		setOpacity("arrowright",rightOpacity?1:0);
	}
}

if (!document.all) document.captureEvents(Event.MOUSEMOVE);
document.onmousemove=m_move;

window.setInterval(timer,1000/sexyness);

