// Custom utility functions

var lastFlashVar = '';

function toTitleCase(str) {
    return str.substr(0,1).toUpperCase() + str.substr(1).toLowerCase();
}      

function formatTitle(title) {
    var formatted =  'Lotus Showroom' + (title != '/' ? ' / ' + toTitleCase(title.substr(1, title.length - 2).replace(/\//g, ' / ')) : '');
    
    // Remove the .htm file if it has been appended
    if(formatted.substring(formatted.length-4) == '.htm')
    {
    	formatted = formatted.substring(0, formatted.lastIndexOf("/")-1);
    	formatted = trim(formatted);
    }
    
    return formatted;
}

function hashChange()
{
	var event = SWFAddress.getPath();
	
	// Do differently for Safari
	if(navigator.userAgent.search(/Safari/) != -1)
	{
		var hashevent = location.hash.replace('#', '').split('/')[3];
		var evarr = event.split('/');
		if(evarr.length == 4)
		{
			event = '/'+evarr[1]+'/'+evarr[2]+'/'+((hashevent != undefined && hashevent != '')?hashevent:evarr[2])+'.html'; 
		}

		// document.getElementById('debug').innerHTML = 'event: '+event+'<br/>'+document.getElementById('debug').innerHTML;
		// document.getElementById('debug').innerHTML = 'hash: '+hashevent+'<br/>'+document.getElementById('debug').innerHTML;
	}
	
	// var links = document.getElementsByTagName('a');
	//     for (var i = 0, link; link = links[i]; i++) {
	//         link.className = link.rel == event ? 'selected' : '';
	//     }
    var pars = '';
    //     for (var p in event.parameters) {
    //         pars += '&' + p + '=' + event.parameters[p];
    //     }

	var hr = new Array();
	var hr = trimSlash(event).split('/');

	if(hr.length > 1 && hr[1]!='')
	{
		if(hr.length > 2 && hr[2]!='')
			h = '/ajax~cars/'+ hr[2];
		else
			h = '/ajax~cars/'+ hr[1] + '.html';
	}
	else
		var h = '/ajax~cars/showroom.html';
	
	var flashVar = formatTitle(event);
	
	// Show loading in bottom container
	var contentSection = document.getElementById('content-section');
	var div = document.createElement('div');
	div.setAttribute('id', 'content-loading');
	var p = document.createElement('p');
	p.innerHTML = "Loading Content";
	var img = document.createElement('img');
	img.setAttribute("src", "/staticfiles/img/global/ajax-loading.gif");
	img.setAttribute("alt", "loading...");
	img.setAttribute("height", "50");
	img.setAttribute("width", "50");
	
	div.appendChild(p);
	div.appendChild(img);
	
	while ( contentSection.childNodes.length >= 1 )
    contentSection.removeChild( contentSection.firstChild );       

	contentSection.appendChild(div);

	var myAjax = new Ajax.Updater('content-section', h, {method: 'get', parameters: pars, onComplete:myAddAjax});
	
	if(flashVar != lastFlashVar)
	  SWFAddress.setTitle(flashVar);    
	  
	lastFlashVar = flashVar;
	return false;
}

//SWFAddress.addEventListener(SWFAddressEvent.CHANGE, hashChange);

SWFAddress.onChange = hashChange;

function myAddAjax()
{
	if (!document.getElementsByClassName) return false;
	myAddAjaxProc( document.getElementsByClassName("section-ajax") );
	myAddAjaxProc( document.getElementsByClassName("ajax-link") );
}

function myAddAjaxProc( divs )
{
	for (var j=0; j < divs.length; j++)
	{
		divs[j].onclick = function()
		{
			var hr = this.href.replace('/content/', '/ajax~content/');
			hr = hr.replace('/cars/', '/ajax~cars/');
			hr = hr.replace('/link/', '/ajax~link/');
			hr = hr.replace('/engineering/', '/ajax~engineering/');
			
			// Build a string of the current hash without the html file
			var currentHash = trimSlash(window.location.hash.substring(1));
			var ch = currentHash.split('/');
			var newHash = '';
			
			if(ch.length >= 3)
			{
				newHash += "/"+ch[0]+"/"+ch[1]+"/";	
			}
			else
			{
				newHash += "/"+ch[0]+"/";
				
				if(ch.length > 1)
					newHash += ch[1]+"/";
			}
						
			//var myAjax = new Ajax.Updater('content-section', hr, {method: 'get', onComplete:myAddAjax});
			
			// Get name of the html file
			var hrefDump = this.href.split('/');
			var htmlFile = hrefDump[hrefDump.length-1];
				
			// Set hash to show newly selected page
			window.location.hash = newHash + htmlFile;
			
			return false;
		}
	}
}

function trimSlash(stringToTrim)
{
	return stringToTrim.replace(/^\/+|\/+$/g,"");
}

function trim(stringToTrim)
{
	return stringToTrim.replace(/^\s*(\S*(\s+\S+)*)\s*$/, "$1");

}