//---- sept 10: otamere -dynamically generate the styles for the saab vehicle pages to handle the different color bars---
// refresh 09 kn - a little cleanup 

// localized array-appender to add Cobalt dealer keys to config in createLink
function XaddDealerKeys(targetArray){
	var newArr = new Array()
	for (var item in targetArray){
		newArr[item] = targetArray[item];
	}
	newArr["static pieces"]["dealer"] = "";
	newArr["static pieces"]["dc"] = "";
	newArr["static pieces"]["ds"] = "";
	newArr["static pieces"]["dealer-site-url"] = "";
	
	return newArr;
} 

// localized array-appender to add Cobalt dealer keys to config in createLink
function addDealerKeys(targetArray){
	targetArray["static pieces"]["dealer"] = "";
	targetArray["static pieces"]["dc"] = "";
	targetArray["static pieces"]["ds"] = "";
	targetArray["static pieces"]["dealer-site-url"] = "";
	targetArray["static pieces"]["pageType"] = "";

	
	return targetArray;
} 

var colorStyle="";
var myStyle="";
var imgPath="";
		var locbar1 = document.location.href
		if (locbar1.indexOf("saab") > -1 ) {
			var tmp1 = locbar1.lastIndexOf("/")
			var substra = locbar1.substring(0,tmp1)
			var tmp2 = substra.lastIndexOf("/")+1
			imgPath = substra.substr(tmp2,substra.length - tmp2)
		}
		
		switch (imgPath)
		{
		 case "93conv":
		 	colorStyle="#BAB750;";
		 	break;
		 case "93sedan":
		 	colorStyle="#9F011A;";
		 	break;
		 case "93combi":
		 	colorStyle="#354B7E;";
		 	break;
		case "97x":
		 	colorStyle="#97B95A;";
			break;
		case "92x":
		 	colorStyle="#F2AD07;";
			break;
		case "95sedan":
		 	colorStyle="#193D4D;";
			break;
		case "95sportcombi":
		 	colorStyle="#BDD0E7;";
			break;
		 case "":
		 break;
		 default: 
		 colorStyle="#354B7E;";
		}

	  myStyle +=('<style Type="text/css" >td.third-nav-bg {'); 
			myStyle +=('font-size: 11px;'); 
			myStyle +=('font-weight: bold;'); 
			myStyle +=('color: #ffffff;'); 
			myStyle +=(' background-color:'+colorStyle); 
			//myStyle +=('}</style>'); 
			myStyle +=('}');
			myStyle +=('td.overview-nav-bg {'); 
			myStyle +=('font-size: 11px;'); 
			myStyle +=('font-weight: bold;'); 
			myStyle +=('color: #ffffff;'); 
			myStyle +=(' background-color:'+colorStyle); 
			//myStyle +=('}</style>'); 
			myStyle +=('}');
			myStyle +=('.gallery-tier1-nav {'); 
			myStyle +=('font-size: 11px;'); 
			myStyle +=('font-weight: bold;'); 
			myStyle +=('color: #ffffff;'); 
			myStyle +=(' background-color:'+colorStyle); 
			myStyle +=('}</style>'); 

			
		//alert(myStyle);
		document.write (myStyle);

function URLEncode(plaintext)

{
            // The Javascript escape and unescape functions do not correspond

            // with what browsers actually do...

            var SAFECHARS = "0123456789" +          // Numeric
			"ABCDEFGHIJKLMNOPQRSTUVWXYZ" +          // Alphabetic
            "abcdefghijklmnopqrstuvwxyz" +
			"-_.!~*'()";                            // RFC2396 Mark characters

            var HEX = "0123456789ABCDEF";

 

            //plaintext = document.URLForm.F1.value;

            var encoded = "";

            for (var i = 0; i < plaintext.length; i++ ) {

                        var ch = plaintext.charAt(i);

                if (ch == " ") {

                            encoded += "+";                                            // x-www-urlencoded, rather than %20

                        } else if (SAFECHARS.indexOf(ch) != -1) {

                            encoded += ch;

                        } else {

                            var charCode = ch.charCodeAt(0);

                                    if (charCode > 255) {

                                        alert( "Unicode Character '" 

                        + ch 

                        + "' cannot be encoded using standard URL encoding.\n" +

                                                          "(URL encoding only supports 8-bit characters.)\n" +

                                                                          "A space (+) will be substituted." );

                                                encoded += "+";

                                    } else {

                                                encoded += "%";

                                                encoded += HEX.charAt((charCode >> 4) & 0xF);

                                                encoded += HEX.charAt(charCode & 0xF);

                                    }

                        }

            } // for

 

            //document.URLForm.F2.value = encoded;

            return encoded;

};


function escapeConfiguratorUrl(url) {
	var arrTmp = url.split("goto=");
	var strReturn = arrTmp[0] +"goto="+ URLEncode(arrTmp[1]);
	return strReturn
}

	  
/**
createLink(config,key,extras)
	config - reference to hash which holds configuration (raq.js has an example)
	key - the data key being refered to
	extras - a pipe-delimited list of key-value pairs. must be an even number of values. these are used to pass and override variables passed to app
	kn Oct 08 - mod to skip query params where value is null
*/
function createLink(config,key,extras) {
	//alert(config.ToString +" ~ "+ config["static pieces"]["ComponentName"]);
	//alert(globalmd[key]);
	//alert(key);
	//alert(config["base url"]);
	
	var item=globalmd[key];
	if (item!=undefined) {
		
		var extraPairs=new Array();
		if (extras!="" && extras!=null) {
			var extraArray=extras.split("|");
			for (i=0;i<=extraArray.length;i+=2) {
				extraPairs[extraArray[i]]=extraArray[i + 1];
			}
		}
		
		// add dealer params kn Dec3
		config = addDealerKeys(config);
		
		var queryString="";
		for(var configkey in config["keys"]) {
			var datakey=config["keys"][configkey]["data"];
			var urlkey=config["keys"][configkey]["url"];
			
			if (item[datakey]!=undefined && item[datakey]!= "null") {
				if (queryString!="") {
					queryString+="&";
				}
				
				queryString+=urlkey+"="+encodeURI(item[datakey]);
			}
		}
		
		for(var configkey in config["static pieces"]) {
			var val = extraPairs[configkey]!=undefined?extraPairs[configkey]:config["static pieces"][configkey];
			//if (configkey == "search_postal_code" || configkey == "POSTLCD") val = getPostalCode();
			
			if (val.charAt(0)=="$") {
				val=eval(val.substring(1,val.length));
			}
			
			if (val != "") {
				if (queryString!="") {
					queryString+="&";
				}
				queryString+=configkey+"="+encodeURI(val);
			}	
		}
		
		var strReturn = config["base url"] + queryString;
		//alert("createLink: " + strReturn);
		if (strReturn.indexOf("request=access,lastsavedconfig") > -1) strReturn = escapeConfiguratorUrl(strReturn);
		return strReturn;
	} else {
		return null;
	}
	
}

function goToLink(config,key,extras) {
	//alert(createLink(config,key,extras));
	window.location.href=createLink(config,key,extras);
}

// revised goToLink method for Flash "ExternalInterface" js call kn Sept 17/08
function flashLink(configStr,key,extras) {
	var config = this[configStr]; // hopefully finds the config array by that name
	
	//alert("flashLink for " + configStr + " -> " + createLink(config,key,extras));
	
	window.location.href=createLink(config,key,extras);
}

function getPostalCode() {
	var strReturn = "";
	
	//try {
		//getCookie("pc");
	//}
	//catch(e) {}	
	//if (strReturn == null || typeof(strReturn) == "undefined") strReturn = "";
	strReturn = document.forms["regForm"].pc.value;
	return strReturn
}
