	function Personnel_Rec() {
		this.Name = null;
		this.Role = null;
	}
	
	Personnel_Rec.prototype.Get_Person = function (Person) {
		for (P_Index = 0; P_Index < Person.childNodes.length; P_Index++) {
			P_Element = Person.childNodes[P_Index];
			if (P_Element.tagName == 'name')
				this.Name = P_Element.firstChild.nodeValue;
			else if (P_Element.tagName == 'role')
				this.Role = P_Element.firstChild.nodeValue;
		}
	}
	
	Personnel_Rec.prototype.Grab_Details = function () {
		return this.Name.bold()+' : '.bold()+this.Role+'<br><br>';
	}
	
	function Song_Rec() {
		this.Title = null;
		this.Songwriters = null;
		this.Song_Length = null;
	}
	
	Song_Rec.prototype.Get_Song = function (Song) {
		for (S_Index = 0; S_Index < Song.childNodes.length; S_Index++) {
			S_Element = Song.childNodes[S_Index];
			if (S_Element.tagName == 'title')
				this.Title = S_Element.firstChild.nodeValue;
			else if (S_Element.tagName == 'songwriters')
				this.Songwriters = S_Element.firstChild.nodeValue;
			else if (S_Element.tagName == 'length')
				this.Song_Length = S_Element.firstChild.nodeValue;
		}
	}
	
	Song_Rec.prototype.Grab_Details = function () {
		return '. '.bold()+this.Title.italics()+' ('+this.Song_Length+')<br>Written by '+this.Songwriters+'<br><br>';
	}
	
	function Charts_Rec() {
		this.Clear();
	}
	
	Charts_Rec.prototype.Clear = function() {
		this.Black = null;
		this.Pop = null;
		this.Dance = null;
	}
	
	Charts_Rec.prototype.Get_Chart_Info = function (Charts) {
		for (BC_Index = 0; BC_Index < Charts.childNodes.length; BC_Index++) {
			BC_Element = Charts.childNodes[BC_Index];
			if (BC_Element.tagName == 'black')
				this.Black = BC_Element.firstChild.nodeValue;
			else if (BC_Element.tagName == 'pop')
				this.Pop = BC_Element.firstChild.nodeValue;
			else if (BC_Element.tagName == 'dance')
				this.Dance = BC_Element.firstChild.nodeValue;
		}
	}
	
	Charts_Rec.prototype.Grab_Details = function () {
		var Billboard = 'Billboard R&amp;B : '.bold();
		if (this.Black == null)
			Billboard += 'N/A';
		else
			Billboard += this.Black;
		Billboard += '<br><br>';
		Billboard += 'Billboard Pop : '.bold();
		if (this.Pop == null)
			Billboard += 'N/A';
		else
			Billboard += this.Pop;
		if (this.Dance != null)
			Billboard += 'Billboard Dance : '.bold()+this.Pop+'<br><br>';
		return Billboard;
	}
	
	function LP_Rec(XML_File) {
		this.Year = null;															// The <year> element of an <album> entry in the XML
		this.Label = null;														// The <label> element of an <album> entry in the XML
		this.Producer = null;													// The <producer> element of an <album> entry in the XML
		this.Photo_Credit = null;											// The <credits> element of the <cover> element of an <album> entry in the XML
		this.Information = null;											// The <information> element of an <album> entry in the XML
		this.Chart_Info = new Charts_Rec;							// The <billboard> element of an <album> entry in the XML
		this.Main_Personnel = new Array();						// List of personnel from the <main> element of an <album> entry's <personnel> element in the XML
		this.Additional_Personnel = new Array();			// List of personnel from the <additional> element of an <album> entry's <personnel> element in the XML
		this.Songs = new Array();											// Track listing from the <songs> element of an <album> entry
		this.Load_XML(XML_File);
	}
	
	LP_Rec.prototype.Load_XML = function (XML_File) {
		var xmlDoc;
		if (window.ActiveXObject) {
		  xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
		  xmlDoc.async=false;
		  xmlDoc.load(XML_File);
		  this.XMLDOM = xmlDoc;
  	}
		else if (window.XMLHttpRequest) {
		  xmlDoc=new window.XMLHttpRequest();
		  xmlDoc.open("GET",XML_File,false);
		  xmlDoc.send("");
		  this.XMLDOM = xmlDoc.responseXML;
	  }
	  else {
	  	do {
	  		xmlDoc = document.getElementById('CMilk').XMLDocument;
	  	}	while (xmlDoc == null);
	  	this.XMLDOM = xmlDoc;
	  }
	}

	LP_Rec.prototype.Get_Album = function (Index) {
		var Album,Root = this.XMLDOM.documentElement;
		if (Index > Root.childNodes.length)
			Album = null;
		else {
			Album_Count = 0;
			for (Node_Index = 0; Node_Index < Root.childNodes.length && Album_Count < Index; Node_Index++) {
				Album = Root.childNodes[Node_Index];
				if (Album.tagName == 'album')
					Album_Count++;
			}
			if (Album_Count != Index)
				Album = null;
			else {
				this.Chart_Info.Clear();
				for (Node_Index = 0; Node_Index < Album.childNodes.length; Node_Index++) {
					Element = Album.childNodes[Node_Index];
					if (Element.tagName == 'year')
						this.Year = Element.firstChild.nodeValue;
					else if (Element.tagName == 'label')
						this.Label = Element.firstChild.nodeValue;
					else if (Element.tagName == 'producer')
						this.Producer = Element.firstChild.nodeValue;
					else if (Element.tagName == 'cover') {
						Found = false;
						for (Cover_Index = 0; Cover_Index < Element.childNodes.length && !Found; Cover_Index++) {
							Cover = Element.childNodes[Cover_Index];
							if (Cover.tagName == 'credits') {
								Found = true;
								this.Photo_Credit = Cover.firstChild.nodeValue;
							}
						}
					}
					else if (Element.tagName == 'information') {
						if (Element.firstChild.nextSibling)
							this.Information = Element.firstChild.nextSibling.nodeValue;
						else
							this.Information = Element.firstChild.nodeValue;
					}
					else if (Element.tagName == 'billboard')
						this.Chart_Info.Get_Chart_Info(Element);
					else if (Element.tagName == 'personnel') {
						this.Main_Personnel.length = 0;
						this.Additional_Personnel.length = 0;
						for (Personnel_Index = 0; Personnel_Index < Element.childNodes.length; Personnel_Index++) {
							Group = Element.childNodes[Personnel_Index];
							if (Group.tagName == 'main') {
								for (Main_Index = 0; Main_Index < Group.childNodes.length; Main_Index++) {
									Personnel = Group.childNodes[Main_Index];
									if (Personnel.tagName == 'person') {
										this.Main_Personnel[this.Main_Personnel.length] = new Personnel_Rec;
										this.Main_Personnel[this.Main_Personnel.length-1].Get_Person(Personnel);
									}
								}
							}
							else if (Group.tagName == 'additional') {
								for (Additional_Index = 0; Additional_Index < Group.childNodes.length; Additional_Index++) {
									Personnel = Group.childNodes[Additional_Index];
									if (Personnel.tagName == 'person') {
										this.Additional_Personnel[this.Additional_Personnel.length] = new Personnel_Rec;
										this.Additional_Personnel[this.Additional_Personnel.length-1].Get_Person(Personnel);
									}
								}
							}
						}
					}
					else if (Element.tagName == 'songs') {
						this.Songs.length = 0;
						for (Song_Index = 0; Song_Index < Element.childNodes.length; Song_Index++) {
							Track = Element.childNodes[Song_Index];
							if (Track.tagName == 'song') {
								this.Songs[this.Songs.length] = new Song_Rec;
								this.Songs[this.Songs.length-1].Get_Song(Track);
							}
						}
					}
				}
			}
		}
		return (Album) ? true : false;
	}
	
	LP_Rec.prototype.Show_Basic_Info = function () {
		document.getElementById('LP_Copyright').innerHTML = 'Copyright &copy; '+this.Year+' '+this.Label;
		document.getElementById('Producer').innerHTML = this.Producer;
		document.getElementById('LP_Img_Credits').innerHTML = this.Photo_Credit;
	}
	
	LP_Rec.prototype.Show_LP_Info = function () {
		document.getElementById('LP_Details').innerHTML = this.Information;
	}
	
	LP_Rec.prototype.Show_Chart_Info = function () {
		document.getElementById('LP_Details').innerHTML = this.Chart_Info.Grab_Details();
	}
	
	LP_Rec.prototype.Show_Personnel = function () {
		Personnel_Details = '';
		if (this.Main_Personnel.length > 0) {
			Personnel_Details += 'MAIN PERSONNEL'.bold();
			Personnel_Details += '<br><br>';
			for (Kount = 0; Kount < this.Main_Personnel.length; Kount++)
				Personnel_Details	+= this.Main_Personnel[Kount].Grab_Details();
		}
		if (this.Additional_Personnel.length > 0) {
			Personnel_Details += '<br><br>ADDITIONAL PERSONNEL'.bold();
			Personnel_Details += '<br><br>';
			for (Kount = 0; Kount < this.Additional_Personnel.length; Kount++)
				Personnel_Details	+= this.Additional_Personnel[Kount].Grab_Details();
		}
		document.getElementById('LP_Details').innerHTML = Personnel_Details;
	}
	
	LP_Rec.prototype.Show_Songs = function () {
		Track_Listing = '';
		if (this.Songs.length > 0) {
			for (Kount = 1; Kount <= this.Songs.length; Kount++) {
				Track_Listing += Kount.toString();
				Track_Listing	+= this.Songs[Kount-1].Grab_Details();
			}
		}
		document.getElementById('LP_Details').innerHTML = Track_Listing;
	}
	
