//
// Music Website javascript functions
//
var xmlHttp;
var mainPanelName = "mainContent";
var isTrue = new Boolean(1);
var isFalse = new Boolean(0);

//
// The nav bars have traditional links.  Replace
// the href attribute with a call to the Javascript
// code that will insert the page into the main content frame.
//
function doMainSetup() {
	var navbar = document.getElementById("navBar");
	var navAnchors = navbar.getElementsByTagName("a");
	for (var i = 0; i < navAnchors.length; i++) {
		var thisNav = navAnchors[i];
		if (thisNav.href.indexOf('index') > 0)
                {
			thisNav.href = "javascript:showWelcome(); hsOn();";
		} else {
			var hr = thisNav.href;
			var command = "javascript:includeFrame('" + hr + "');hsOff();";
			thisNav.href = command;
		}
	}
}

//
// Show welcome page
//
function showWelcome() {
       	var mainFrame = document.getElementById(mainPanelName);
	clearKids(mainFrame);
	addHeader(mainFrame, 'Welcome!');
	addParagraph(mainFrame, 'This site has lots of examples of music I\'ve written for various projects.');
	addParagraph(mainFrame, 'Click on the tabs on the left for examples.');
	addParagraph(mainFrame, '');
	addParagraph(mainFrame, 'Thanks for visiting!');
}
	
//
// Fetch info from SQL and format it into the main panel
// @param pageName The type to look for.
//
function fetch(pageName) {
    showMainPanel(mainPanelName, pageName);
}

//
// Show the center content by inserting another HTML page.
// Will append ".html" if necessary to name.
// @param fname Name of page to insert.
//
function includeFrame(fname) {
       var mainFrame = document.getElementById(mainPanelName);
       clearKids(mainFrame);
       if (fname.indexOf('html') < 0) {
           fname = fname + ".html";
       }
       insertHtmlFrame(mainFrame, fname);
}

// Add a header element
// @param parentObj parent to add to
// @param txt Text of header
//
function addHeader(parentObj, txt) {
    var h = document.createElement("h2");
    h.className = "subHeader";
    var tNode = document.createTextNode(txt);
    h.appendChild(tNode);
    parentObj.appendChild(h);
}

// Add a paragraph element
// @param parentObj parent to add to
// @param txt Text of paragraph 
//
function addParagraph(parentObj, txt) {
    var p = document.createElement("p");
    p.className = "bodyText";
    var tNode = document.createTextNode(txt);
    p.appendChild(tNode);
    parentObj.appendChild(p);
}

//
// Show/not show headshot
//
function hsOn() {
	var hs = document.getElementById('headshot').style;
	hs.display = 'inline';
}
function hsOff() {
	var hs = document.getElementById('headshot').style;
	hs.display = 'none';
}

//
// Add local audio file to parent
// @param parentObj element to add to
// @param fileName relative to current page
//
function addAudio(parentObj, fileName) 
{
    var obj = document.createElement("object");
    var embed = document.createElement("embed");
    embed.src = "Media/" + fileName;
    embed.type = "audio/mp3"; 
    embed.autostart = "false";
    embed.controller = "true";
    embed.width = "120";
    embed.height = "15";
    var p1 = document.createElement("param");
    p1.name = "autostart";
    p1.value = "false";
    obj.appendChild(p1);
    obj.appendChild(embed);
    parentObj.appendChild(obj);
}

// 
// Linked video file from other site.
// Must be Flash type (YouTube)
// @param parentObj element to add to
// @param url URL to link to
//
function addVideoLink(parentObj, url) 
{
    var obj = document.createElement("object");
    var embed = document.createElement("embed");
    embed.src = url;
    embed.type = "application/x-shockwave-flash"; 
    embed.width = "332";
    embed.height = "293";
    obj.appendChild(embed);
    parentObj.appendChild(obj);
}

//
// Clear out the 'main' content area
//
function clearAll () {
       var mainFrame = document.getElementById(mainPanelName);
       clearKids(mainFrame);
}

//
// Clear out a labelled DOM object and kids
//
function removeDiv(divName) {
	var div = document.getElementById(divName);
        if (!div) return;
	clearKids(div);
}
	
//
// Clear all the children of parentObj
//
function clearKids (parentObj) {
        if (!parentObj.childNodes) return;
        var count = parentObj.childNodes.length; 
	for (var j = 0; j < count; j++) {
	    var n = parentObj.childNodes[0];
            parentObj.removeChild(n);
 	}
}

//
// Insert an iframe whose src is 'pageName'
//
function insertHtmlFrame(parentObj, pageName) {
    var fr = document.createElement("iframe");
    fr.src = pageName;
    fr.id = "content-iframe";
    fr.scrolling = "auto";

    // Object variant
    // var fr = document.createElement("object");
    // fr.data = pageName;
    // fr.id= content-iframe;

    parentObj.appendChild(fr);
}

//
// Show the center content via AJAX.
// @param str name of type (of music: Film, Sukey, etc)
//
function showMainPanel(mainName, str)
{
   mainPanelName = mainName;
   if (str.length == 0)
   { 
      document.getElementById(mainPanelName).innerHTML="<p>Blank page!</p>";
      return;
   }
   xmlHttp = GetXmlHttpObject()
   if (xmlHttp == null)
   {
      alert ("Browser does not support HTTP Request");
      return;
   } 
   var url = "music_db.php";
   url = url + "?type=" + str;
   url = url + "&sid=" + Math.random();
   xmlHttp.onreadystatechange = showTable;
   xmlHttp.open("GET", url, true);
   xmlHttp.send(null);
} 

function showTable() 
{ 
   if (xmlHttp.readyState == 4 || xmlHttp.readyState == "complete")
   { 
       var mainFrame = document.getElementById(mainPanelName);
       if (mainFrame) clearKids(mainFrame);

       if (xmlHttp.responseXML == null) {
           alert("No XML!");
           return;
       }
       var m_items = xmlHttp.responseXML.getElementsByTagName("music-item");
       for (var i = 0; i < m_items.length; i++) {
           for (var j = 0; j < m_items[i].childNodes.length; j++) {
               var node = m_items[i].childNodes[j];
               var elem = node.nodeName;
               var val = null;
	       if (node.firstChild) {
                   val = node.firstChild.nodeValue;
               }
               if (elem == "title") {
                   addHeader(mainFrame, val);
               } else if (elem == "file") {
                   addAudio(mainFrame, val);
               } else if (val) {
                   addParagraph(mainFrame, val);
               }
           }
       }
   }
}


function GetXmlHttpObject()
{ 
   var objXMLHttp = null;
   if (window.XMLHttpRequest)
   {
      objXMLHttp = new XMLHttpRequest();
   }
   else if (window.ActiveXObject)
   {
      objXMLHttp = new ActiveXObject("Microsoft.XMLHTTP");
   }
   return objXMLHttp;
} 

function convertToHtml(infoDoc) 
{
    var itemArr = infoDoc.getElementsByTagName("music-item");
    for (var i in itemArr) {
        var hd = createElement("h1");
    } 
}
