// Dom functions




// Multiple Onload Functions to be called
function addLoadListener(fn) {
	if (typeof window.addEventListener != 'undefined') {
		window.addEventListener('load', fn, false);
	} else if (typeof document.addEventListener != 'undefined') {
		document.addEventListener('load', fn, false);
	} else if (typeof window.attachEvent != 'undefined') {
		window.attachEvent('onload', fn);
	} else {
		var oldfn = window.onload;

		if (typeof window.onload != 'function') {
			window.onload = fn;
		} else {
			window.onload = function() {
				oldfn();
				fn();
			};
		}
	}
}

/*////////////////////////////////////////////////////////////
Get Elements By Class Script by Distin Diaz
Source: http://www.dustindiaz.com/getelementsbyclass/
////////////////////////////////////////////////////////////*/
function getElementsByClass(searchClass, node, tag) {
	var classElements = new Array();
	if ( node == null ) { node = document; }
	if ( tag == null ) { tag = '*'; }
	var els = node.getElementsByTagName(tag);
	var elsLen = els.length;
	var pattern = new RegExp('(^|\\s)'+searchClass+'(\\s|$)');
	for (i = 0, j = 0; i < elsLen; i++) {
		if ( pattern.test(els[i].className ) ) {
			classElements[j] = els[i];
			j++;
		}
	}
	return classElements;
}

function RAgetElementsByName(searchName, node, tag) {
	var nameElements = new Object();
	if ( node == null ) { node = document; }
	if ( tag == null ) { tag = '*'; }
	var els = node.getElementsByTagName(tag);
	var elsLen = els.length;
	var pattern = new RegExp('(^|\\s)'+searchName+'(\\s|$)');
	
	for (i = 0, j = 0; i < elsLen; i++) {
		if ( pattern.test(els[i].name ) ) {
			nameElements[j] = els[i];
			j++;
		}
	}
	return nameElements;
}


function linkNewWindow(strLoc) {
	window.open(strLoc,'_blank');
	return false;
}


function externalLinks() {
	var links = document.getElementsByTagName('a');
	for(var i = 0; i < links.length; i++) {
		if ( links[i].rel == 'external' ) {
			links[i].onclick = function() { 	window.open(this.href,'_blank');	return false; }

			links[i].title = links[i].title + '. This link will open in a new window.';
		}
	}
}

function printLinks() {
	var spans = getElementsByClass('print', null, 'span');
	for(var i = 0; i < spans.length; i++) {
		spans[i].innerHTML = '<img src="/_images/icons/printpage.gif" alt="" /><a href="#" title="Print Page" onclick="window.print(); return false;">Print Page</a>';
	}
}


function prepModels() {
    var oModel = document.getElementById('Model');
    var oMake = document.getElementById('Make');
    
    var iLen = oModel.options.length;
    document.iModels = iLen;
    
    document.ModelArray = new Object;
    for (var loop=1; loop < iLen; loop++) {
          var t = oModel.options[iLen-loop].text;
          var v = oModel.options[iLen-loop].value;
          if ( oModel.options[iLen-loop].selected ) {
            eval('document.ModelArray.o' + (iLen-loop) + ' = new Option(t,v,true);');
          } else {
            eval('document.ModelArray.o' + (iLen-loop) + ' = new Option(t,v,false);');
          }
          oModel.options[iLen-loop] = null;
    }
    
    
    
    
    oMake.onchange = function() {
        
        var oModel = document.getElementById('Model');
        var oMake = document.getElementById('Make');
        var iLen = oModel.options.length;
        
        for (var loop=1; loop < iLen; loop++) {
           oModel.options[iLen-loop] = null;
        }
        var iOpt = 1;
        oModel.options[0] = new Option('Any Model','', false);
        
        for (var loop=1; loop < document.iModels; loop++) {
            
            var o = eval('document.ModelArray.o' + (loop) + ';');
            var v = o.value;
            var t = o.text;
            var s = o.selected;
            var m = oMake.options[oMake.options.selectedIndex].value + '/';
            
            if ( ( v.indexOf(m) == 0) && ( m != '' ) ) {
                
                oModel.options[iOpt] = new Option(t,v,s);
                iOpt++;
                
            }
        }
        
    }
    
    
    if ( oMake.options[oMake.options.selectedIndex].value != '' ) {
        var iOpt = 1;
        oModel.options[0] = new Option('Any Model','');
        for (var loop=1; loop < document.iModels; loop++) {
            var o = eval('document.ModelArray.o' + parseInt(loop,10) + ';');
            var v = o.value;
            var t = o.text;
            var s = o.selected;
            var m = oMake.options[oMake.options.selectedIndex].value + '/';
            
            if ( ( v.indexOf(m) == 0) ) {
                oModel.options[iOpt] = new Option(t,v,s);
                iOpt++;    
            }
        }
    }
}

function makeNumeric(sText)
{
	var ValidChars = "0123456789.";
	var Char;
	var returnString = "";
	
	for (i = 0; i < sText.length; i++) 
	{ 
		Char = sText.charAt(i); 
		if (ValidChars.indexOf(Char) != -1) 
		{
			returnString += Char;
		}
	}
	
	return returnString;
}

function FormatNumber(num,decimalNum)
{ 
    if (isNaN(parseInt(num))) return "NaN";

	var tmpNum = num;
	
	// Adjust number so only the specified number of numbers after
	// the decimal point are shown.
	tmpNum *= Math.pow(10,decimalNum);
	tmpNum = Math.round(Math.abs(tmpNum));
	tmpNum /= Math.pow(10,decimalNum);
	
	tmpNum = String(tmpNum);
	
	if(tmpNum.indexOf(".") == -1)
		tmpNum += ".00";
	
	if((tmpNum.length - tmpNum.indexOf(".")) <= 2)
		tmpNum += "0";

	return tmpNum;
}

function taxcalc()
{
	var baseval = document.getElementById("Year").value;
	
	var coef = document.getElementById("CO2").value;
	var vehval = document.getElementById("Value").value;
	var fuelsup = document.getElementById("Fuel").value;
	var taxrate = document.getElementById("TaxRate")[document.getElementById("TaxRate").selectedIndex].value;
	
	var roundcoef = ((parseInt(coef)) - (parseInt(coef) % 5));	
	var percentagetaxed = ((((roundcoef - (baseval))/5)+15) + parseInt(fuelsup, 10));	

	if (percentagetaxed < 15)
		percentagetaxed = 15;
		
	if (percentagetaxed > 35)
		percentagetaxed = 35;
	
	vehval = makeNumeric(vehval); //remove any non-numeric characters
	
	if (vehval > 80000)
		vehval = 80000;
	
	
	var amounttaxed = (vehval / 100) * percentagetaxed;
	var yearlytax = (amounttaxed / 100) * taxrate;	
	var monthlytax = yearlytax / 12;
	
	document.getElementById("resultbox").innerHTML = '£' + FormatNumber(yearlytax,2) +  "pa / £" + FormatNumber(monthlytax,2) + "pcm";

}

function bookmarkLinks() {
    
	var spans = getElementsByClass('favourites', null, 'span');
	for(var i = 0; i < spans.length; i++) {
		spans[i].innerHTML = '<a href="#" onclick="CreateBookmarkLink(); return false;">' + spans[i].title +'</a>';
	}
}

addLoadListener(bookmarkLinks);


function CreateBookmarkLink() {
    title = document.title; 
    url = document.URL;
    if (window.sidebar) { // Mozilla Firefox Bookmark
        window.sidebar.addPanel(title, url,"");
    } else if( window.external ) { // IE Favorite
        window.external.AddFavorite( url, title);
    }
}



function parentElement( strTag, el) {

if (!(el.parentNode)) return null;

if ( (el.parentNode.tagName.toLowerCase() == strTag.toLowerCase() ) ) return el.parentNode;

return parentElement(strTag, el.parentNode);

}

 

var flashObjectRules = {

'.flashobject' : function(el) {

var rExp = /(.jpg|.gif)/gi;

var fLoc = el.src.replace(rExp,'.swf');

var fo2 = new FlashObject(fLoc, "viewer", el.width, el.height, "7","#000");

fo2.addParam("wmode","transparent");

fo2.addParam("menu","false");

fo2.addParam("quality","high");

fo2.write( parentElement('div',el).id );

} 

};

Behaviour.register(flashObjectRules);

