function getXmlDocument(file_name)
{
	var xmlDoc = null;
	
	if (window.XMLHttpRequest)
	{
		var req = new XMLHttpRequest();
		if (req.overrideMimeType) 
			req.overrideMimeType('text/xml');
		
		try
		{
		   //alert('Trying XMLHttpRequest for ' + file_name);
		   req.open("GET", file_name, false); 
		   req.send(null);
		}
		catch (e)
		{
		   //alert('xml request not loaded');
		   return null;
		}
		
		xmlDoc = req.responseXML;
	}
	else
	{
		try //Internet Explorer
		{
		  	xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
		}
		catch(e)
		{
	  		try //Firefox, Mozilla, Opera, etc.
	  		{
				xmlDoc=document.implementation.createDocument("","",null);
	  		}
	  		catch(e) {alert(e.message)}
		}	

		if (!xmlDoc)
		   return null;
		   
		try
		{
			xmlDoc.async=false;
			xmlDoc.load(file_name);
		}
		catch (e)
		{
			return null;
		}
	}
	
	/*try //Internet Explorer
	{
	  	xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
	}
	catch(e)
	{
	  	try //Firefox, Mozilla, Opera, etc.
	  	{
			xmlDoc=document.implementation.createDocument("","",null);
	  	}
	  	catch(e) {alert(e.message)}
	}

	if (!xmlDoc)
	   return null;
	   
	try
	{
	    alert('Load ' + file_name);
		xmlDoc.async=false;
		xmlDoc.load(file_name);
		alert('Loaded ' + file_name);
	}
	catch (e)
	{
		alert('Failed to load ' + file_name);
		if (!window.XMLHttpRequest)
		   return null;
		   
		var req = new XMLHttpRequest();
		if (req.overrideMimeType) 
			req.overrideMimeType('text/xml');
		
		try
		{
		   alert('Trying XMLHttpRequest for ' + file_name);
		   req.open("GET", file_name, false); 
		   req.send(null);
		}
		catch (e)
		{
		   alert('xml request not loaded');
		   return null;
		}
		
		xmlDoc = req.responseXML;
	}*/
	
	return xmlDoc;
}

/* change the colour scheme of the site, determined by the day of the week */
function chooseColourScheme()
{
    /*var current_date=new Date();
    var day_of_week = current_date.getTime();
    var random_number = Math.random() * 2;
    if ((random_number % 2) == 0)
    {
        document.getElementById('text-top').style.backgroundImage = 'url(images/text_top2_bg.gif)';    
        document.getElementById('text').style.backgroundColor = '#E1D6FF';    
        document.getElementById('text-bottom').style.backgroundImage = 'url(images/text_bottom2_bg.gif)';    
    }
    else
    {
        document.getElementById('text-top').style.backgroundImage = 'url(images/text_top_bg.gif)';    
        document.getElementById('text').style.backgroundColor = '#B3D9FF';    
        document.getElementById('text-bottom').style.backgroundImage = 'url(images/text_bottom_bg.gif)';    
    }*/
}

/* display the current date and time on all pages, refreshed every minute */        
function startTime()
{
    var sPath = window.location.pathname;
	if (sPath.indexOf("~bellissimo") != -1)
	   return;
	   
    var current_date = new Date();
    var h = current_date.getHours();
    var m = current_date.getMinutes();
    var s = current_date.getSeconds();
            
    // add a zero in front of numbers<10
    m = checkTime(m);
    s = checkTime(s);
    //document.getElementById('time').innerHTML = h + ":" + m;
    document.getElementById('time').innerHTML = current_date.toUTCString().slice(0, -7);
    t = setTimeout('startTime()', 1000 * 60);
}

function checkTime(i)
{
    if (i<10) 
        {i="0" + i};
        
    return i;
}

function drawStyleSwitcher()
{
	var sPath = window.location.pathname;
	if (sPath.indexOf("~bellissimo") != -1)
	   return;
	 
	document.getElementById('styleswitch').innerHTML =   
    			'<select onchange="setActiveStyleSheet(document.getElementById(\'styleswitcher\').value);" id="styleswitcher"><option value="boys colours">Boys</option><option value="girls colours">Girls</option>' +
        		'</select>';
}

function setStylesheetSelection()
{
    var sPath = window.location.pathname;
	if (sPath.indexOf("~bellissimo") != -1)
	   return;
	   
    var colour_select = document.getElementById('styleswitcher');
    for (var i = 0; i < colour_select.childNodes.length; i++)
    {
        var option = colour_select.childNodes[i];
        if (option.value == getActiveStyleSheet())
            option.selected = 'true';
    }
}

/* navigate to chosen photos */
function switchPhotoSet(new_photo_set)
{
    document.location.href = new_photo_set; 
}
        
/*const notWhitespace = /\S/;
    
function cleanWhitespace(node) 
{
    for (var x = 0; x < node.childNodes.length; x++) 
    {
        var childNode = node.childNodes[x];
        if ((childNode.nodeType == 3)&&(!notWhitespace.test(childNode.nodeValue))) 
        {
            // that is, if it's a whitespace text node
            node.removeChild(node.childNodes[x]);
            x--;
        }
        if (childNode.nodeType == 1) 
        {
            // elements can have text child nodes of their own
            cleanWhitespace(childNode);
        }
    }
}*/

function drawMenu(name)
{
	var sPath = window.location.pathname;
	var sPage = sPath.substring(sPath.lastIndexOf('/') + 1);

	if (sPath.indexOf("~bellissimo") != -1)
	   return;
	   
    var xmlDoc = getXmlDocument('xml/nav.xml');

	var x = xmlDoc.getElementsByTagName('link');
	var nav_html = '<table cellspacing="0" cellpadding="0" id="menu1" class="ddm1" width="779"><tr>';
				 
	for (i = 0; i < x.length; i++)
	{
	  nav_html +=
						 '<td' +
						 ((i == 1) ? ' style="z-index: 200;">' : '>') +
						 '<a class="item1' +
						 ((i == 0) ? ' left' : '') + 
						 ((i == (x.length-1)) ? ' right' : '') + 
						 ((sPage == x[i].getAttribute('href')) ? ' current" ' : '" ') +
						 'href="' + 
						 x[i].getAttribute('href') + 
						 '">' + 
						 x[i].getAttribute('text') +
						 '</a>' +
						 ((i == 1) ? drawPhotoDropdownMenu(xmlDoc, name) : '') + 
						 '</td>'; 
	}
	
	nav_html += '</tr></table>';
	
	document.getElementById('nav').innerHTML = nav_html;
}

function drawPhotoDropdownMenu(xmlDoc, name)
{
	var sPath = window.location.pathname;
	var sPage = sPath.substring(sPath.lastIndexOf('/') + 1);
	var source_page = sPage;
		
	var photo_nav_html = '<div class="section" id="photo_nav">';

	var x = xmlDoc.getElementsByTagName('photo');

	var page_name = getURLParameter(name, 'name');
	if (page_name)
	   source_page = page_name;

	for (var j = 0; j < x.length; j++)
	{
	  var nav_page = x[j].getAttribute('href');
	  if (getURLParameter(x[j].getAttribute('href'), 'name'))
	  	  nav_page = getURLParameter(x[j].getAttribute('href'), 'name');
	  
	  photo_nav_html += 
						 '<a class="item2' +
						 ((j == 0) ? ' top' : '') +
						 ((source_page == nav_page) ? ' current" ' : '" ') +
						 'href="' + 
						 x[j].getAttribute('href') + 
						 '">' + 
						 x[j].getAttribute('text') +
						 '</a>'; 
	}

	photo_nav_html += '</div>';
	
	return photo_nav_html;
}

function drawPhotoLinks()
{
 	var xmlDoc = getXmlDocument('xml/nav.xml');
	
	var sPath = window.location.pathname;
	var sPage = sPath.substring(sPath.lastIndexOf('/') + 1);

	var x = xmlDoc.getElementsByTagName('photo');
	var nav_html = '<table cellspacing="0" cellpadding="0" id="menu1" class="ddm1" width="779"><tr>';
				 
	for (i = 0; i < x.length; i++)
	{
	    document.getElementById('photo_links').innerHTML +=
						 '<li><p><a href="' +
						 x[i].getAttribute('href') +
						 '">' +
						 x[i].getAttribute('lookup_text') + 
						 '</a></p> - ' +
						 x[i].getAttribute('short_desc') +
						 '</li>'; 
	}		
}

function drawPhotoSelection(name)
{
    var xmlDoc = getXmlDocument('xml/nav.xml');

	var sPath = window.location.pathname;
	var sPage = sPath.substring(sPath.lastIndexOf('/') + 1);
	var source_page = sPage;

	var x = xmlDoc.getElementsByTagName('photo');

	if (name)
	   source_page = name;

	for (var i = 0; i < x.length; i++)
	{
	  var nav_page = x[i].getAttribute('href');
	  if (getURLParameter(x[i].getAttribute('href'), 'name'))
	  	  nav_page = getURLParameter(x[i].getAttribute('href'), 'name');

	  var value = x[i].getAttribute('href');
	  if (getURLParameter(x[i].getAttribute('name'), 'href'))
	  	 value = 'thumbnails.shtml?name=' + getURLParameter(x[i].getAttribute('href'), 'name') + '&count=' + getURLParameter(x[i].getAttribute('href'), 'count');
					 
	  var photo_list = document.getElementById('photo_list');
	  
	  //alert('Add option: ' + photo_list.options.length + ' Name: ' + x[i].getAttribute('lookup_text') + ' Value: ' + value + ' Selected: ' + ((source_page == nav_page) ? 'true' : 'false')); 
	  photo_list.options[photo_list.options.length] = new Option(x[i].getAttribute('lookup_text'), value);
	  if (source_page == nav_page)
	  	  photo_list.options[photo_list.options.length-1].selected = true;
	}
}

function drawSlideshowDescription(name)
{
    var xmlDoc = getXmlDocument('xml/nav.xml');

	var sPath = window.location.pathname;
	var sPage = sPath.substring(sPath.lastIndexOf('/') + 1);
	var source_page = sPage;

	var x = xmlDoc.getElementsByTagName('photo');
	
	for (var i = 0; i < x.length; i++)
	{
	    if (x[i].getAttribute('name') == name)
    	   document.getElementById('slideshow_desc').innerHTML = x[i].getAttribute('desc');
	}
}

function drawSlideshowLink(name, count)
{
    document.getElementById('slideshow_link').innerHTML =
    			'View the <a href="slideshow.html?name=' + 
				name + 
				'&count=' + 
				count +
				'" target="_blank">slideshow</a> with full size pictures.';
}

function drawThumbnails(count, folder)
{
    var xmlDoc = getXmlDocument('xml/' + folder + '.xml');

	x = xmlDoc ? xmlDoc.getElementsByTagName('description') : null;

	for (i = 0; i < count; i++)
	{
		//alert(x);
		
    	document.getElementById('thumbnails').innerHTML 
		+= '<div class="img-shadow ' +
		   		 				   	   ((x && x[i] && x[i].getAttribute('panorama')) ? 'img-shadow-panorama">' : '">') + 
       		   '<a href="images/' + folder + '/' + (i + 1) + '.jpg" target="_blank"><img alt="' + folder + (i + 1) + '" src="images/' + folder + '/' + (i + 1) + '_tn.jpg" width="160" height="120"/>' + 
       	   '</div>';   

       	document.getElementById('thumbnails').innerHTML 
	    += '<div class="desc-shadow ' +
		   		 					   ((x && x[i] && x[i].getAttribute('panorama')) ? 'desc-shadow-panorama ' : '') + 
		   		 					   (((i % 2) == 0) ? 'gap">' : '">') +
       			'<div class="innerbox" ' +
				         			   ((Math.floor(i / 2) % 2 == 1) ? 'style="background-color: #E1D6FF;">' : '>') + 
           			'<!-- the text is in a table as this is the only way to get it vertically aligned -->' +
           			'<table style="width: 100%; height: 100%;">' +
            			'<tr><td style="vertical-align: middle; ' +
								 								((x && x[i] && x[i].getAttribute('panorama')) ? 'text-align: center;">' : '">') + 
	          			((x && x[i]) ? x[i].getAttribute('text') : '') +
               			'</td></tr>' +
           			'</table>' +
       		    '</div>'+
       	   '</div>';
		   
	    		
		if ((i % 2) == 1 && i > 0)
		{
       	   document.getElementById('thumbnails').innerHTML 
		   += '<!-- use an empty div to clear the float (needed for IE to work) -->' +
       		  '<div style="height: 1px; clear: left;"/>';
    	}
    }
}
 
function getURLParameter(url, name)
{
  name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
  var regexS = "[\\?&]"+name+"=([^&#]*)";
  var regex = new RegExp( regexS );
  var results = regex.exec( url );
  if( results == null )
    return "";
  else
    return results[1];
}
            

function drawFonts()
{
	var xmlDoc = getXmlDocument('xml/fonts.xml');

	x = xmlDoc.getElementsByTagName('font');
	document.getElementById('fonts').innerHTML = '';
	
	for (i = 0; i < x.length; i++)
	{
		document.getElementById('fonts').innerHTML += 
		'<div id="' + x[i].getAttribute('name') + '-tap">' +
		  '<div class="tap-header" id="' + x[i].getAttribute('name') + '-header" onclick="toggleDetails(this.parentNode.id, 4);" onmouseover="this.style.backgroundColor=\'#CC6666\'" onmouseout="this.style.backgroundColor=\'#BF4040\'">' + 
			'<span>' + x[i].getAttribute('text') + '</span>' + 
			'<img alt="star rating" style="left: 200px;" src="images/' + x[i].getAttribute('rating') + '_star_rating.gif" width="89" height="18"/>' + 
			'<img id="' + x[i].getAttribute('name') + '-arrow" alt="down arrow" src="images/link_down_yellow.gif" width="24" height="21"/>' + 
		  '</div>' +  
		  '<div class="tap-text" id="' + x[i].getAttribute('name') + '-body">' + 
		  '</div>' + 
		  '<div class="tap-footer" id="' + x[i].getAttribute('name') + '-footer">' + 
			'<span><a href="javascript:void(null)" onclick="if(this.blur)this.blur(); switchTAPBody(\'' + x[i].getAttribute('name') + '\', \'description\');">Description</a>' + 
			'&nbsp;&nbsp;&nbsp;&nbsp;' + 
			'<a href="javascript:void(null)" onclick="if(this.blur)this.blur(); switchTAPBody(\'' + x[i].getAttribute('name') + '\', \'screenshots\');">Screenshot</a>' + 
			'&nbsp;&nbsp;&nbsp;&nbsp;' + 
			'<a href="fonts/' + x[i].getAttribute('name') + '.zip" target="_blank">Download</a></span>' + 
		  '</div>' + 
		  '<div style="display: none; padding: 10px 15px; text-align: center;" class="tap-text" id="' + x[i].getAttribute('name') + '-screenshots">' + 
			'<a href="images/fonts/' + x[i].getAttribute('name') + '.jpg" target="_blank"><img alt="' + x[i].getAttribute('name') + ' font" title="' + x[i].getAttribute('text') + '" src="images/fonts/' + x[i].getAttribute('name') + '.jpg" width="450" height="360" border="0"/></a>' +              
		  '</div>' + 
		  '<div style="display: none;" class="tap-text" id="' + x[i].getAttribute('name') + '-description">' + 
			  '<table><tbody>' + 
			  '<tr><td>Small height</td><td>' + x[i].getAttribute('small') + '</td></tr>' + 
			  '<tr><td>Medium height</td><td>' + x[i].getAttribute('medium') + '</td></tr>' + 
			  '<tr><td>Large height</td><td>' + x[i].getAttribute('large') + '</td></tr>' + 
			  '</tbody></table>' + 
		  '</div>' + 
		'</div>' + 
		'<br/>';
	}
}

function initMenu()
{
    var sPath = window.location.pathname;
	if (sPath.indexOf("~bellissimo") != -1)
	   return;

    var ddm1 = new DropDownMenu1('menu1');
    ddm1.position.top = -1;
    ddm1.init();
}

