function Panel(name, descripton, panelType,indexId) {	
	var name;
	var description;
	var type;
	var images;
	var projects;
	var className;
	var indexId;
	var childId;
			
	projects = new Array();
	projects.shift();
	this.indexId = indexId;
	this.name = name;
	this.description = description;
	this.panelType = panelType;
	this.addProject = function(project) {
		projects.push(project);
	}
	
	this.getProjects = function() {
		return projects;
	}
	
}

function Project(filename, indexId) {
	var indexId;
	var filename;
	
	this.indexId = indexId;
	this.filename = filename;
	
}

jQuery.fn.DefinitionThumbnailSwitcher = function(settings) {
	var indexId = 1;
	var panelType;
	var panels 	= new Array();	
	var currentPanel = 1;
	var startingPanel;
	
	startingPanel = document.location.href.split("#");
	if(parseInt(startingPanel[1])>0) {
		currentPanel = startingPanel[1];
		startingPanel = startingPanel[1];
	} else {
		currentPanel = 1;
		startingPanel = 1;
	}
	
	settings = jQuery.extend({
		placeHolderClass: '.basetext',
		titleRule: '.details h2',
		descriptionRule: '.details p',
		imageClassNamePrefix: 'pic',
		imagePath: 'images/uploads/',
		fadeSpeed: 1000,
		panelCounterDownRule: '#stripNavL0',
		panelCounterUpRule: '#stripNavR0',
		thumbnailSuffix: '_thumb'
	});



	jQuery(settings.placeHolderClass).hide();
	function parseFilename(projectFilename) {
		var extension;
		var filename = "";
		for (var i = projectFilename.length - 1; (i >= 0 && filename != "undefined"); i--){
			if(i == (projectFilename.length - 1)) {
				extension = projectFilename[i];
			} else {

				filename = projectFilename[i] + "." + filename;
			}


		};
		return [filename,extension];
	}
	jQuery(".panel",this).each(function() {
	// Iterate through Panels
		
		jQuery(".details",this).each(function() {
			// Hide Details
			jQuery(this).hide();	
		});
		
		// Determine Active Project Filename
		mainPic = jQuery(".main-pic", this);

		jQuery(mainPic).each(function() {
			// Determine Panel Type
			
			if(jQuery(this).hasClass("single")) {
				activeProjectFilename = parseFilename(jQuery("img",mainPic).attr("src").split("."));
				panelType = "single";
			} else if(jQuery(this).hasClass("multi")) {
				panelType = "multi";
				activeProjectFilename = parseFilename(jQuery("img",mainPic).attr("src").split("."));
			}
			
		});	

		activeProjectFilename[0] = activeProjectFilename[0].substring(0, activeProjectFilename[0].length - 1);
		panelProjectName = jQuery(".details h2",this).html();
		panelProjectDescription = jQuery(".details p",this).html();
		
		var panel = new Panel(panelProjectName, panelProjectDescription, panelType,indexId);
		var projectIndexId = 1;
		var activeProjectIndexId;

		jQuery('.project',this).each(function() {
			// Iterate through Projects
			projectFilename = jQuery("img",this).attr("src").split(".");
			
			projectFilename = parseFilename(projectFilename);
			// console.log([filename,extension]);
			projectFilename[0] = projectFilename[0].substring(0,projectFilename[0].length - (settings.thumbnailSuffix.length + 1));

			
			// Determine Active Project IndexId

			if(activeProjectFilename[0] == projectFilename[0]) {

				activeProjectIndexId = projectIndexId;
				// Hide and Populate Place Holder <div class='placeHolderClass'> with .details
				jQuery(".panel:nth-child(" + (indexId) + ") .project:nth-child(" + (activeProjectIndexId) + ")").hide();
			}
			
			// Add Project to Panel
			panel.addProject(new Project(projectFilename, projectIndexId));
				projectIndexId++;
			
		});

		panels.push(panel);

		indexId++;
	});
	


	projects = panels[0].getProjects();
	for(var panelIndex = 0; panelIndex < panels.length; panelIndex++) {
		projects = panels[panelIndex].getProjects();
		for(projectIndex = 0; projectIndex < projects.length; projectIndex++) {
			project = projects[projectIndex];
			if(panels[panelIndex].panelType == "multi") {
				jQuery(".panel:nth-child(" + (panelIndex + 1) + ") .project:nth-child(" + (projectIndex + 1) + ")").bind("click",[panelIndex,projectIndex,panels,project],function(e) {
					// Project Click Callback
					project = e.data[3];
					panels = e.data[2];
					panelIndex = e.data[0];
					projectIndex = e.data[1];
				
					// Hide, Populate and Fade in Name & Description
					jQuery(".panel:nth-child(" + (panelIndex + 1) + ") .main-pic img").fadeOut(settings.fadeSpeed, function() {
						jQuery(".panel:nth-child(" + (panelIndex + 1) + ") .main-pic img").attr("src",project.filename[0] + "." + project.filename[1]).fadeIn(settings.fadeSpeed);			
					});
				
					// Show all project thumbnails and hide active
					jQuery(".panel:nth-child(" + (panelIndex + 1) + ") .project").each(function() { 
						jQuery(this).show();
					});
					jQuery(this).toggleClass("active").hide();

				});
			}
		}
	}
	
	function getActiveAndUpdate(currentPanel) {
		details = jQuery(".panel:nth-child(" + currentPanel + ") .details").html();
		
		jQuery(settings.placeHolderClass).fadeOut("fast",function() {
			jQuery(this).html(details).fadeIn(settings.fadeSpeed);
		});
		
	}
	
	jQuery(settings.panelCounterDownRule).bind("mouseup",function() {
		// Count Down Callback
		currentPanel--;
		if(currentPanel <= 0) {
			currentPanel = panels.length;
		}
		getActiveAndUpdate(currentPanel);
	});

	jQuery(settings.panelCounterUpRule).bind("mouseup", function(e) {
		// Count Up Callback
		currentPanel++;
		if(currentPanel > panels.length) {
			currentPanel = 1;
		}
		getActiveAndUpdate(currentPanel);
	});
		
	// Set starting details
	details = jQuery(".panel:nth-child(" + startingPanel + ") .details").html();
	jQuery(settings.placeHolderClass).html(details).fadeIn(settings.fadeSpeed);					


}