/*
 * Duke Automotive Scrolling Ad
 * Written By: James B. Gilbert
 * Date: August 29, 2008
 */


//Scroll Speed (fps) & Pixel Moves (pixels per frame)
var scrollSpeed = 20;
var scrollPixelMoves = 1;

//Scroll Quick Speed (fps) & Pixel Moves (pixels per frame)
var scrollQuickSpeed = 20;
var scrollQuickPixelMoves = 5;

//Main Click URL
var mainClickURL = "";

//Source URL -- the XML file, MUST BE ON THE SAME SERVER AS THIS PAGE
var srcURL = "http://ad.augusta.com/ads/zoom/output.xml";

//Internal Variables -- DO NOT CHANGE
var cars = [];
var stat = 0;
var height;
var scrollInterval;
var mouseDown = 0;

//Requests the XML File
function OnLoad() {
	new Ajax.Request( srcURL, { onSuccess: ParseCars } );
}

//Parse the XML File
function ParseCars( transport ) {
	var resp = transport.responseText;
	var i = resp.indexOf( "<news " );
	while( i != -1 ) {
		var car = {};
		var j = resp.indexOf( "href=\"", i ) + 6;
		car.link = resp.substring( j, resp.indexOf( "\"", j ) );
		car.img = resp.substring( resp.indexOf( "<img>", i ) + 5, resp.indexOf( "</img>", i ) );
		car.title = resp.substring( resp.indexOf( "<title>", i ) + 7, resp.indexOf( "</title>", i ) );
		cars.push( car );
		i = resp.indexOf( "<news ", i+3 );
	}
	ShowCars();
	stat = 1;
	StartScrollDown();
}

//Displays the cars
function ShowCars() {
	var i;
	var e = document.getElementById( 'cars' );
	for(i=0;i<cars.length;i++) {
		var div = document.createElement( 'div' );
		e.appendChild( div );
		div.align="center"
		div.id = "car_"+i;
		var img = new Image();
		img.src = cars[i].img;
		div.appendChild( img );
		div.appendChild( document.createElement( 'br' ) );
		div.appendChild( document.createTextNode( cars[i].title ) );
	}
	height = $(e).getHeight();
	e.innerHTML = e.innerHTML + e.innerHTML;
}

//Start the Scroller Going Down
function StartScrollDown() {
	KillScroll();
	scrollInterval = setInterval( "Scroll(-scrollPixelMoves)", 1000 / scrollSpeed );
}

//Start the Scroller Going Up
function StartScrollUp() {
	KillScroll();
	scrollInterval = setInterval( "Scroll(scrollPixelMoves)", 1000 / scrollSpeed );
}

//Start the Scroller Going Down
function StartQuickScrollDown() {
	KillScroll();
	scrollInterval = setInterval( "ScrollQuick(-scrollQuickPixelMoves)", 1000 / scrollQuickSpeed );
}

//Start the Scroller Going Up
function StartQuickScrollUp() {
	KillScroll();
	scrollInterval = setInterval( "ScrollQuick(scrollQuickPixelMoves)", 1000 / scrollQuickSpeed );
}

//Kill the Scroller
function KillScroll() {
	if ( scrollInterval ) {
		clearInterval( scrollInterval );
		scrollInterval = null;
	}
}

//Perform the scroll, moving it by value pixels
function Scroll( value ) {
	if ( stat != 1 ) return;
	var e = document.getElementById( 'cars' );
	var t = parseInt( e.style.top ) + value;
	if ( (-t) > height )
		t += height;
	else if ( t > 0 )
		t -= height;
	e.style.top = t;
}

//Perform the scroll, moving it by value pixels
function ScrollQuick( value ) {
	if ( stat != 2 ) return;
	var e = document.getElementById( 'cars' );
	var t = parseInt( e.style.top ) + value;
	if ( (-t) > height )
		t += height;
	else if ( t > 0 )
		t -= height;
	e.style.top = t;
	mouseDown++;
}

//Scroller Click Handler
function ScrollClick( evt ) {
	if ( mouseDown > 0 ) return;
	var y;
	if ( document.all )
		y = event.offsetY;
	else
		y = evt.layerY - scrollPlacement;
	stat = 1;
	if ( y < 10 )
		Scroll( 30 );
	else if ( y > ( scrollHeight - 10 ) )
		Scroll( -30 );
	stat = 0;
}

//Start Scroll Quickly
function ScrollMouseDown( evt ) {
	var x, y;
	mouseDown = 0;
	if ( document.all ) {
		if ( event.button != 1 ) return;
		y = event.offsetY;
	} else {
		if ( evt.button != 0 ) return;
		y = evt.layerY - scrollPlacement;
	}
	if ( y < 10 )
		StartQuickScrollUp();
	else if ( y > ( scrollHeight - 10 ) )
		StartQuickScrollDown();
}

//Stop Scrolling Quickly
function ScrollMouseUp( evt ) {
	var x, y;
	if ( document.all ) {
		x = event.offsetX;
		y = event.offsetY;
	} else {
		x = evt.layerX;
		y = evt.layerY;
	}
	KillScroll();
	setTimeout( "mouseDown = 0", 100 );
}

//Car Click Handler
function CarClick( evt ) {
	var ele;
	if ( document.all )
		ele = event.srcElement;
	else
		ele = evt.target;
	while( ele.id.indexOf( "car_" ) == -1 && ele.parentNode )
		ele = ele.parentNode;
	if ( ele.parentNode ) 
		GoToURL( cars[parseInt( ele.id.substr( 4 ) )].link );
}

//Stop the scroller when the mouse enters the scroller/scrollbar
function CarMouseOver( evt ) {
	KillScroll();
	stat = 0;
}

//Start the scroller when the mouse exits the scroller/scrollbar
function CarMouseOut( evt ) {
	stat = 1;
	StartScrollDown();
}

//Stop the scroller when the mouse enters the scroller/scrollbar
function ScrollMouseOver( evt ) {
	KillScroll();
	stat = 2;
}

//Start the scroller when the mouse exits the scroller/scrollbar
function ScrollMouseOut( evt ) {
	stat = 1;
	StartScrollDown();
}

//Send the user to the main click page
function MainClick( evt ) {
	GoToURL( "http://autos.augusta.com/mdTransit/Dealer_NewspaperAds/zoom.shtml" );
}

//Sends the user to a certain url.
function GoToURL( url ) {
	window.open( url, "_blank" );
}
