var slideshow = function(obj) {

	// Configurable variables	

	this.timeout            = 3000;           // Timeout	

	this.slideShowContainer = 'hp_slideshow'; // Target div	

	this.objectName         = obj;            // Our given object name

	

	// Everything else

	this.ptr          = false;      // Timeout pointer

	this.currentIndex = -1;         // Current image

	this.images       = new Array();

	this.currentImage = false;

	this.wasInit      = false;

	this.imageID          = 'hp_slideshow_img';

	this.imageContainerID = 'hp_slideshow_image';

	this.linksContainerID = 'hp_slideshow_links';



	this.init = function(slides) {

		if (this.wasInit) return; // Prevent re-init		



		// Clear target div and add our structure		

		var target = document.getElementById(this.slideShowContainer);

		

		while(target.childNodes.length > 0)

			target.removeChild(target.childNodes[0]);		



		var d = document.createElement('DIV');

		d.id = this.imageContainerID;

		target.appendChild(d);

		

		d = document.createElement('DIV');

		d.id = this.linksContainerID;

		target.appendChild(d);

		

		// Get all references to images ready

		for (var i=0; i<slides.length; i++) {

		  	for (var j=0; j<slides[i][1].length; j++) {

		  		this.images.push(slides[i][1][j][2]);

		  		slides[i][1][j].push(this.images.length-1); // Store "id" in the array 

		  	}

		}		

		

		// Create slideshow image

		var img = document.createElement('IMG');

		img.id  = this.imageID;

		document.getElementById(this.imageContainerID).appendChild(img);

		this.currentImage = document.getElementById(this.imageID);

		

		// Build all links

		var container = document.getElementById(this.linksContainerID);		

		for (var i=0; i<slides.length; i++) {

			var ul   = document.createElement('UL');

			ul.id    = 'main'+i;

			ul.className = 'hp_slide_main';

			ul.appendChild(this.makeLI(slides[i][0],

												'hp_slideshow_head',

												false));



			for (var j=0; j<slides[i][1].length; j++) {

				ul.appendChild(this.makeLI(slides[i][1][j][0],

													'hp_slideshow_child',

													slides[i][1][j][1],

													slides[i][1][j][3]));

			}

			container.appendChild(ul);



			// Append spacer div

			if (i < slides.length-1) {			

				var spc = document.createElement('DIV');

				spc.className = 'hp_slideshow_spacer';

				container.appendChild(spc);

			}

		}



		// Start the show

		this.switchimg();

		this.start();

		this.wasInit = true;

	}

	

	this.makeLI = function (text, cssclass, link, id) {		

		var li = document.createElement('LI');

		if (cssclass) li.className = cssclass;

		if (link) {

			var a  = document.createElement('A');

			a.href = link;

			a.innerHTML = text;

			this.aEvent(a, 'mouseover', function(){hp_s.show(id);}, false);

			this.aEvent(a, 'mouseout', function(){hp_s.start();}, false);

		} else {

			var a = document.createTextNode(text);

		}

		li.appendChild(a);

		return li;

	}

	

	this.start = function() {				

		this.stop();		

		this.ptr = setTimeout( this.objectName+'.switchimg()', this.timeout);

	}

	

	this.stop = function() {

		if (this.ptr) clearTimeout(this.ptr);

	}	

	

	this.switchimg = function() {

		this.currentIndex++;

		if (this.currentIndex == this.images.length) this.currentIndex = 0;

		this.display(this.currentIndex);

		this.start();

	}

	

	this.show = function(id) {

		this.stop();

		this.display(id);

	}

	

	this.display = function(id) {

		this.currentIndex = id;

		this.currentImage.src = this.images[this.currentIndex];

	}

	

	this.aEvent = function(obj, evType, fn, useCapture){

	  if (obj.addEventListener){

    	obj.addEventListener(evType, fn, useCapture);

    	return true;

  	} else if (obj.attachEvent){

    	var r = obj.attachEvent("on"+evType, fn);

    	return r;

  	}

} 

}



if (document.images) {

	var slides = new Array(

			[ "Northern California",

				[				

					["Redwoods Coast / Eureka",

			 		"http://www.cabbi.com/search/regions/Eureka%20-%20Redwoods%20Coast/",

			 		"http://www.cabbi.com/images/regionslides_00004.jpg"],

	

					["Mount Shasta / Cascades",

			 		"http://www.cabbi.com/search/regions/Mt.%20Shasta%20-%20Cascades/",

			 		"http://www.cabbi.com/images/regionslides_00010.jpg"],

			 		

			 		["Mendocino",

			 		"http://www.cabbi.com/search/regions/Mendocino/",

			 		"http://www.cabbi.com/images/regionslides_00008.jpg"],

			 		

			 		["Clear Lake",

			 		"http://www.cabbi.com/search/regions/Clear%20Lake/",

			 		"http://www.cabbi.com/images/regionslides_00003.jpg"],

			 		

			 		["Sonoma",

			 		"http://www.cabbi.com/search/regions/Sonoma/",

			 		"http://www.cabbi.com/images/regionslides_00022.jpg"],

			 		

			 		["Napa",

			 		"http://www.cabbi.com/search/regions/Napa/",

			 		"http://www.cabbi.com/images/regionslides_00011.jpg"]

			 	]

			],

			////////////////////////////

			[ "Gold County / High Sierra",

				[				

					["Sacramento Valley",

			 		"http://www.cabbi.com/search/regions/Sacramento%20Valley/",

			 		"http://www.cabbi.com/images/regionslides_00026.jpg"],

			 		

			 		["Lake Tahoe",

			 		"http://www.cabbi.com/search/regions/Lake%20Tahoe/",

			 		"http://www.cabbi.com/images/regionslides_00006.jpg"],
					
					
					["Sierra Nevada Foothills / Mountains",

			 		"http://www.cabbi.com/search/regions/Sierra%20Nevada%20Foothills%20-%20Mountains/",

			 		"http://www.cabbi.com/images/regionslides_00028.jpg"],

			 		

			 		["Yosemite / Sequoia",

			 		"http://www.cabbi.com/search/regions/Yosemite%20-%20Sequoia/",

			 		"http://www.cabbi.com/images/regionslides_00023.jpg"]

			 	]

			],

			////////////////////////////

			[ "San Francisco Bay Area",

				[				

					["Point Reyes / Marin County",

			 		"http://www.cabbi.com/search/regions/Point%20Reyes%20-%20Marin%20County/",

			 		"http://www.cabbi.com/images/regionslides_00015.jpg"],

			 		

			 		["San Francisco",

			 		"http://www.cabbi.com/search/regions/San%20Francisco/",

			 		"http://www.cabbi.com/images/regionslides_00018.jpg"],

			 		

			 		["Berkeley / East Bay",

			 		"http://www.cabbi.com/search/regions/Berkeley%20-%20East%20Bay/",

			 		"http://www.cabbi.com/images/regionslides_00001.jpg"],

			 		

			 		["Half Moon Bay",

			 		"http://www.cabbi.com/search/regions/South%20Bay%20-%20Half%20Moon%20Bay/",

			 		"http://www.cabbi.com/images/regionslides_00005.jpg"]

			 	]

			],

			////////////////////////////

			[ "Central Coast / Valley",

				[				

					["Santa Cruz",

			 		"http://www.cabbi.com/search/regions/Santa%20Cruz/",

			 		"http://www.cabbi.com/images/regionslides_00021.jpg"],

			 		

			 		["Monterey Bay / Pacific Grove",

			 		"http://www.cabbi.com/search/regions/Monterey%20Bay%20-%20Pacific%20Grove/",

			 		"http://www.cabbi.com/images/regionslides_00025.jpg"],
					
					
					["Carmel",

			 		"http://www.cabbi.com/search/regions/Carmel/",

			 		"http://www.cabbi.com/images/regionslides_00024.jpg"],

			 		

			 		["San Luis Obispo / Cambria",

			 		"http://www.cabbi.com/search/regions/San%20Luis%20Obispo%20-%20Cambria/ ",

			 		"http://www.cabbi.com/images/regionslides_00027.jpg"],

			 		

			 		["Paso Robles",

			 		"http://www.cabbi.com/search/regions/Paso%20Robles%20Area/",

			 		"http://www.cabbi.com/images/regionslides_00014.jpg"]

			 	]

			],

			////////////////////////////

			[ "Southern California",

				[				

					["Santa Barbara",

			 		"http://www.cabbi.com/search/regions/Santa%20Barbara/",

			 		"http://www.cabbi.com/images/regionslides_00020.jpg"],

	

					["Los Angeles",

			 		"http://www.cabbi.com/search/regions/Los%20Angeles/",

			 		"http://www.cabbi.com/images/regionslides_00007.jpg"],

			 		

			 		["Palm Springs / Desert",

			 		"http://www.cabbi.com/search/regions/Palm%20Springs%20-%20Desert/ ",

			 		"http://www.cabbi.com/images/regionslides_00013.jpg"],

			 		

			 		["Big Bear",

			 		"http://www.cabbi.com/search/regions/Mountains%20-%20Big%20Bear/",

			 		"http://www.cabbi.com/images/regionslides_00002.jpg"],

			 		

			 		["Laguna Beach / Orange County",

			 		"http://www.cabbi.com/search/regions/Orange%20County%20-%20Laguna%20Beach/",

			 		"http://www.cabbi.com/images/regionslides_00012.jpg"],

			 		

			 		["San Diego",

			 		"http://www.cabbi.com/search/regions/San%20Diego/",

			 		"http://www.cabbi.com/images/regionslides_00017.jpg"]

			 	]

			]

	);

	// Preload images

	for (var i=0; i<slides.length; i++) {

	  	var imgs = new Array();  

	  	for (var j=0; j<slides[i][1].length; j++) {

	    	var img = new Image();

	    	img.src = slides[i][1][j][2];

	  	}

	}

	

	hp_s = new slideshow('hp_s');

	hp_s.init(slides);

}

