/*
JavaScript Library for Browser dependent CSS swapping
Version:	0.3
Author:	stephen.elson@bbc.co.uk

Version History:
0.4 Added ie6up t0 pbStore
0.3 Removed swap argument, now adds additional CSS everytime
0.2 Added swap argument to ifl_getCSS()
0.1 First Evaluation Version

Filename: ifl_getCSS.js;
Language: JavaScript1.1
Dependencies: /eoltools/detect/ifl_detect.js
Script functions in this file:
  ifl_getCSS(combos, path, basename, debug)
  ifl_pbCombos([combo1[, combo2[,...[,comboN]]]])

*/
// AGENT STRING
var agt = navigator.userAgent.toLowerCase();
// VERSION NUMBER
var is_major = parseInt(navigator.appVersion);
var is_minor = parseFloat(navigator.appVersion);
// PLATFORMS
var is_win = 	((agt.indexOf("win")!=-1) || (agt.indexOf("16bit")!=-1) );
var is_mac = 	(agt.indexOf("mac")!=-1);
var is_linux = 	(agt.indexOf("inux")!=-1);	
// BROWSERS
var is_nav = 	((agt.indexOf('mozilla')!=-1) && (agt.indexOf('spoofer')==-1) 
				&& (agt.indexOf('compatible') == -1) && (agt.indexOf('opera')==-1) 
				&& (agt.indexOf('webtv')==-1) && (agt.indexOf('hotjava')==-1));
var is_nav2 = (is_nav && (is_major == 2));
var is_nav3 = (is_nav && (is_major == 3));
var is_nav4 = (is_nav && (is_major == 4));
var is_nav4up = (is_nav && (is_major >= 4));
var is_navOnly      = (is_nav && ((agt.indexOf(";nav") != -1) ||
                      (agt.indexOf("; nav") != -1)) );
var is_nav6 = (is_nav && (is_major == 5));
var is_nav6up = (is_nav && (is_major >= 5));
var is_gecko = (agt.indexOf('gecko') != -1);
	
var is_ie = 	((agt.indexOf("msie") != -1) && (agt.indexOf("opera") == -1));  
var is_ie3    = (is_ie && (is_major < 4));
var is_ie4    = (is_ie && (is_major == 4) && (agt.indexOf("msie 4")!=-1) );
var is_ie4up  = (is_ie && (is_major >= 4));
var is_ie5    = (is_ie && (is_major == 4) && (agt.indexOf("msie 5.0")!=-1) );
var is_ie5_5  = (is_ie && (is_major == 4) && (agt.indexOf("msie 5.5") !=-1));
var is_ie5up  = (is_ie && !is_ie3 && !is_ie4);
var is_ie5_5up =(is_ie && !is_ie3 && !is_ie4 && !is_ie5);
var is_ie6    = (is_ie && (is_major == 4) && (agt.indexOf("msie 6.")!=-1) );
var is_ie6up  = (is_ie && !is_ie3 && !is_ie4 && !is_ie5 && !is_ie5_5); 

var is_opera = 	(agt.indexOf("opera") != -1);
var is_opera2 = (agt.indexOf("opera 2") != -1 || agt.indexOf("opera/2") != -1);
var is_opera3 = (agt.indexOf("opera 3") != -1 || agt.indexOf("opera/3") != -1);
var is_opera4 = (agt.indexOf("opera 4") != -1 || agt.indexOf("opera/4") != -1);
var is_opera5 = (agt.indexOf("opera 5") != -1 || agt.indexOf("opera/5") != -1);
var is_opera5up = (is_opera && !is_opera2 && !is_opera3 && !is_opera4);
//******************************************************************************
// PLATFORM/BROWSER CONSTANTS - DO NOT CHANGE!!
var win = 		1;
var mac = 		2;
var linux = 	4;
var ie  = 		8;
var nav = 		16;
var opera =		32;
var ie5up =		64;
var nav6up =	128;
var ie6up = 	256;
// PLATFORM/BROWSER ARRAY - DO NOT CHANGE!!
var pbStore = new Array('win','mac','linux','ie','nav','opera','ie5up','nav6up','ie6up');
//******************************************************************************

// CSS swapping function
function ifl_getCSS(path, basename, combos){
	linkElement = '<link rel="stylesheet" type="text/css" href="../BBC%20-%20Science%20&%20Nature%20-%20Horizon%20-%20transcript_files/%27%20%2B%20path%20%2B%20basename%20%2B%20%27.css">\n\n';
	document.write(linkElement);
	if(combos){
		pbStr = eval("ifl_pbCombos(" + combos + ");");
		if(pbStr!=""){
			linkElement = '<link rel="stylesheet" type="text/css" href="../BBC%20-%20Science%20&%20Nature%20-%20Horizon%20-%20transcript_files/%27%20%2B%20path%20%2B%20basename%20%2B%20pbStr%20%2B%20%27.css">\n\n';
			document.write(linkElement);	
			//alert (linkElement);
		}
	}
} // end CSS swapping

// platform/browser combo parser
function ifl_pbCombos(){
	// for each combo argument
	for (a=0; a<arguments.length; a++){
		var isPbCombo = true;
		var isPbComboStr = new String();
		// convert combo to binary operand
		operand = parseInt(arguments[a]).toString(2);
		// for each digit of operand, in 'reverse' order
		for (i=operand.length, j=0; i>0; i--, j++){
			digit = parseInt(operand.substring(i,i-1));
			// if digit is 1 and j is in pbStore do boolean AND
			if (digit==1 && j<pbStore.length){
				isPbCombo = isPbCombo && eval("is_" + pbStore[j]);
				isPbComboStr += '.' + pbStore[j];
			}
		}
		// if pbCombo matches return isPbComboStr
		if (isPbCombo){
			
			return isPbComboStr;
		} 
	}
	// return empty string if no matches
	return "";
} // end platform/browser combo parser

