// gets the position of the element
function layer_get_pos(el) {
	var SL = 0, ST = 0;
	var is_div = /^div$/i.test(el.tagName);
	if (is_div && el.scrollLeft)
		SL = el.scrollLeft;
	if (is_div && el.scrollTop)
		ST = el.scrollTop;
	var r = { x: el.offsetLeft - SL, y: el.offsetTop - ST };
	if (el.offsetParent) {
		var tmp = layer_get_pos(el.offsetParent);
		r.x += tmp.x;
		r.y += tmp.y;
	}

	return r;
}

// gets the position of the element, factoring in scrolling
function layer_get_abspos(el) {
	var pos = layer_get_pos(el);

	testel = el.parentNode;	
	while (testel) {
		if (testel.scrollTop) pos.y -= testel.scrollTop;
		if (testel.scrollLeft) pos.x -= testel.scrollLeft;
		
		testel = testel.parentNode;
	}

	return pos;
}

function get_event(e) {
	if (typeof e == 'undefined') e = window.event;
	if (typeof e.layerX == 'undefined') e.layerX = e.offsetX;
	if (typeof e.layerY == 'undefined') e.layerY = e.offsetY;
	if (typeof e.target == 'undefined') e.target = e.srcElement;
	if (e.target.nodeType == 3) targ = targ.parentNode; // defeat Safari bug, apparently

	if (typeof e.keyCode == 'undefined') e.keyCode = e.which;
	if (typeof e.which == 'undefined') e.which = e.button;
		
	return e;
}

function promo_mouseover(e) {
	e = get_event(e);
	//window.promo_mask.src = 'streamcaster/cast-medialib-over.png';
}

function promo_off() {
	window.promo_mask.src = 'streamcaster/spacer.gif';
	window.promo_activeimage = -1;
	window.promo_details.innerHTML = 'Move mouse over screenshots for details.';
	window.promo_mask.style.cursor = 'default';
}

function promo_on(i) {
	window.promo_mask.src = 'streamcaster/cast-'+window.promo_stateimages[i][0]+'-over.png';
	window.promo_activeimage = i;
	
	window.promo_details.innerHTML = window.promo_stateimages[i][5]+'  Click for details.';
	window.promo_mask.style.cursor = 'pointer';
}

function promo_mouseout(e) {
	e = get_event(e);
	promo_off();
}

function promo_mousemove(e) {
	e = get_event(e);
	var lp = layer_get_abspos(e.target);
	
	var x = (e.clientX-lp.x);
	var y = (e.clientY-lp.y);

//	var el = document.getElementById('promodetails'); el.innerHTML = x+','+y;
	
	for (var i=0; i<window.promo_stateimages.length; i++) {
		if (
			(x>=window.promo_stateimages[i][1]) && 
			(x<=window.promo_stateimages[i][3]) &&
			(y>=window.promo_stateimages[i][2]) && 
			(y<=window.promo_stateimages[i][4])
		) {
			if (window.promo_activeimage!=i) promo_on(i);
			return;
		}
	}

	if (window.promo_activeimage!=-1) promo_off();
}

function promo_mouseclick(e) {
	if (window.promo_activeimage!=-1) window.location = window.promo_stateimages[window.promo_activeimage][6];
}


function promo_demo_next() {
	window.promo_demo_pos++;
	if (window.promo_demo_pos>=window.promo_stateimages.length) {
		promo_on(0);
		setTimeout('promo_off()',1000);
		return;
	}
	promo_on(window.promo_demo_pos);
	setTimeout('promo_demo_next()',(window.promo_demo_pos==0)?1000:100);
}

function promo_demo() {
	if ( document.cookie && (document.cookie.indexOf('donepromodemo=1')!=-1) ) return;
	document.cookie = 'donepromodemo=1; path=/';
	window.promo_demo_pos = -1;
	setTimeout('promo_demo_next()',1000);
}

function promo_img_loaded() {
	window.promo_stateimage++;
	if (window.promo_stateimage>=window.promo_stateimages.length) {
		window.promo_container.onmouseover = promo_mouseover;
		window.promo_container.onmouseout = promo_mouseout;
		window.promo_container.onmousemove = promo_mousemove;
		window.promo_container.onclick = promo_mouseclick
		
		promo_demo();
	} else {
		setTimeout('promo_load_next()',1);
	}
}

function promo_load_next() {
	//alert('next: '+window.promo_stateimages[window.promo_stateimage]);
	window.promo_img = new Image();
	window.promo_img.onload = promo_img_loaded;
	window.promo_img.onerror = promo_img_loaded;
	window.promo_img.src = 'streamcaster/cast-'+window.promo_stateimages[window.promo_stateimage][0]+'-over.png';
}

function promo_initialize() {
	window.promo_stateimages = [
		[ 
			'medialib',
			30,32,385,190,
			'Drag and drop artists, albums, and tracks into your playlists using Stream Catser\'s industry-leading AJAX media library interface.',
			'http://christian-hosting-solutions.com/streamcaster/medialibrary.php'
		],
		[ 
			'accounts',
			8,190,108,264,
			'Manage accounts with ease from a centralized control panel, providing overviews of client information, resource usage, and more.',
			'http://christian-hosting-solutions.com/streamcaster/easysetup.php'
		],
		[ 
			'stats',
			109,190,207,264,
			'Keep track of your performances, listeners, and resource usage via ZStream Caster\'s comprehensive stream statistics system.',
			'http://christian-hosting-solutions.com/streamcaster/activity.php'
		],
		[ 
			'start',
			208,190,307,264,
			'Stream Caster provides a unique start page for each stream, offering now-playing information, recent tracks, live listener mapping, and more.',
			'http://christian-hosting-solutions.com/streamcaster/startstop.php'
		],
		[ 
			'reports',
			308,191,404,264,
			'Downloadable song performance reports make royalty reporting for music licensing purposes a breeze.',
			'http://christian-hosting-solutions.com/streamcaster/royalties.php'
		]
	]
	window.promo_stateimage = 0;
	window.promo_container = document.getElementById('promocontainer');
	window.promo_mask = document.getElementById('promomask');
	window.promo_details = document.getElementById('promodetails');
	window.promo_activeimage = -1;

	promo_load_next();
}

function promo_attach() {
	if (window.attachEvent) {
		//IE/Opera
		window.attachEvent("onload", promo_initialize);
	} else if (window.addEventListener) {
		// IE6
		window.addEventListener("load", promo_initialize, false);
	} else {
		//Firefox
		document.addEventListener("load", promo_initialize, false);
	}
}
promo_attach();

