﻿vcc.xmlModels = null;
vcc.arSelectedEngines = [];
var iCarImgOrigH;
var arItemLinksToClick;
var bIsExpanding;
var elmExpandAll;
var elmCollapseAll;
var bOpenFeaturedItems = false;
var	oContentXml;
var	oConfigXml;
var sNormalTdDisplay = (vcc.ie) ? "block" : "table-cell";
var sNormalRowDisplay = (vcc.ie) ? "block" : "table-row";
var bHasFlash;
var iLastVisibleVehicle;
var bAllVehiclesVisible;
var elmCurLink;
var arOpenedItemElements = [];
var sXsltUrl;
var sCurPrintModelYear;
var bShowOnlyAccessories;

document.write("<style>#loadingSpecs { visibility:visible; }</style>");

vcc.initSpecification = function(bLoad, bOnlyAccessories) {
	bAllVehiclesVisible = !vcc.getObj("chkVehicle1");
	bHasFlash = DetectFlashVer(8,0,0);
	elmExpandAll = vcc.getObj("expandAll");
	elmCollapseAll = vcc.getObj("collapseAll");
	sEnlargeHTML = "<br/><table class=\"itemEnlargeLink\" cellspacing=\"0\" cellpadding=\"0\"><tr><td><a href=\"javascript:void(0)\" onclick=\"vcc.showBigImg(this)\"><img src=\"/_layouts/VolvoCars.Web.Sites/Images/btn_plus.gif\" alt=\"\" /></a> </td><td nowrap=\"nowrap\"> <a href=\"javascript:void(0)\" onclick=\"vcc.showBigImg(this)\">" + sEnlarge + "</a></td></tr></table>";
	sVideoHTML = "<br/><table class=\"itemEnlargeLink\" cellspacing=\"0\" cellpadding=\"0\"><tr><td><a href=\"javascript:void(0)\" onclick=\"vcc.showBigImg(this, true)\"><img src=\"/_layouts/VolvoCars.Web.Sites/Images/btn_play.gif\" alt=\"\" /></a> </td><td nowrap=\"nowrap\"> <a href=\"javascript:void(0)\" onclick=\"vcc.showBigImg(this, true)\">" + sPlayVideo + "</a></td></tr></table>";
	if (bOnlyAccessories)
		oContentXml = vcc.createXmlObj(sContentXml2);
	else
		oContentXml = vcc.createXmlObj(sContentXml);
	oConfigXml = vcc.createXmlObj(sConfigXml);
	if (!oContentXml || !oConfigXml) {
		vcc.showBrowserTooOld("loadingSpecs", sBrowserTooOld);
		return;
	}
	if (sPageMode.indexOf("accessories") == 0) {
		vcc.addFeaturedAccessories();
		sXsltUrl = "/_layouts/VolvoCars.Web.Sites/xslt/Specification_accessories.xslt";
		if (sPageMode == "accessoriesGlobal") {
			sCurPrintModelYear = arModelYear.shift();
			var sCurPrintModelYearId = arModelYearId.shift();
			vcc.prepareXml(sCurPrintModelYear, sCurPrintModelYearId);
		}
		else
			vcc.prepareXml();
	}
	else if (sPageMode == "techSpec") {
		sXsltUrl = "/_layouts/VolvoCars.Web.Sites/xslt/CompareModels.xslt";
		vcc.prepareXml();
		vcc.hide("symbols");
	}
	else if (sPageMode == "featuresAccessories") {
		sXsltUrl = "/_layouts/VolvoCars.Web.Sites/xslt/Specification_features_accessories.xslt";
		vcc.prepareXml();
		vcc.hide("symbols");
	}
	else {
		// If there are salesversions, these are listed in the 'vehicles'-node and there should be columns for each vehicle.
		if (oContentXml && oContentXml.documentElement && oContentXml.documentElement.firstChild && (oContentXml.documentElement.firstChild.nodeName == "vehicles" || oContentXml.documentElement.lastChild.nodeName == "vehicles")) {
			sXsltUrl = "/_layouts/VolvoCars.Web.Sites/xslt/Specification_features.xslt";
			vcc.prepareXml();
		}// Else the page should look like the accessories page, use the same XSLT
		else {
			sXsltUrl = "/_layouts/VolvoCars.Web.Sites/xslt/Specification_accessories.xslt";
			vcc.prepareXml();
		}
	}
	vcc.showActiveVehicles();
}

vcc.prepareXml = function(sModelYear, sModelYearId) {
	var bShowPrice = (!bShowPriceLocal) ? false : vcc.bShowPrice;
	var oParams = {
		sAllHeader: sDropdownHeader1,
		sFeaturedHeader: sDropdownHeader2, 
		sPriceStart:sPrice.substring(0, sPrice.indexOf("{price}")), 
		sPriceEnd:sPrice.substring(sPrice.indexOf("{price}") + 7), 
		sPageMode:sPageMode,
		sShowPrice:bShowPrice,
		sViewAsThumbnails:sViewAsThumbnails,
		sViewAsList:sViewAsList
	};
	if (sModelYear)
		oParams.sModelYear = sModelYear;
	if (sModelYearId)
		oParams.sModelYearId = sModelYearId;
	// If this is the Global Accessories Page, only featured items should be shown (if in presentationmode, in authoringmode all accessories should be shown so the featured Accessories can be chosen)
	if (sPageMode == "accessoriesGlobal") {
		if (!vcc.bIsInAuthoringMode)
			oParams.onlyFeaturedAccessories = "true";
	}
	
	vcc.transformXml(oContentXml, sXsltUrl, true, vcc.showSpecification, oParams);
	if (sContentXml.length < 1 && vcc.initSpecificationAuthoring)
		vcc.initSpecificationAuthoring();
}

vcc.addFeaturedAccessories = function() {
	if (oConfigXml.documentElement) {
		var oFeaturedNode = oContentXml.createElement("featuredAccessories");
		oContentXml.documentElement.insertBefore(oFeaturedNode, oContentXml.documentElement.firstChild);
		
		// Find featuredAccessories node without XSLT
		var arFeatured = [];
		for (var i=0; i<oConfigXml.documentElement.childNodes.length; i++) {
			if (oConfigXml.documentElement.childNodes[i].nodeName.toLowerCase() == 'featuredaccessories') {
				arFeatured = oConfigXml.documentElement.childNodes[i].childNodes;
			}
		}
		for (var i=0; i<arFeatured.length; i++) {
			if (arFeatured[i].nodeName && arFeatured[i].nodeName == "accessory") {
				var oAccessory = oContentXml.createElement("accessory");
				oFeaturedNode.appendChild(oAccessory);
				oAccessory.setAttribute("id", arFeatured[i].getAttribute("id"));
				bOpenFeaturedItems = true;
			}
		}
	}
}

vcc.findThumbviewCategories = function() {
	if (oConfigXml.documentElement) {
		// Find node without XSLT
		var arCategories = [];
		for (var i=0; i<oConfigXml.documentElement.childNodes.length; i++) {
			if (oConfigXml.documentElement.childNodes[i].nodeName == 'thumbviewCategories') {
				var oNodes = oConfigXml.documentElement.childNodes[i].childNodes;
				for (var j=0; j<oNodes.length; j++) {
					if (oNodes[j].nodeName && oNodes[j].nodeName == "category") {
						var sId = oNodes[j].getAttribute("id");
						var elmLink = vcc.getObj("categoryHeaderLink_" + sId);
						if (elmLink) {
							elmLink.setAttribute("listType", "thumbs");
							vcc.setListTypeImages(sId, false);
						}
					}
				}
				break;
			}
		}
	}
}

vcc.setListTypeImages = function(sId, bList) {
	var elmListImg = vcc.getObj("listImg_" + sId);
	if (!elmListImg)
		return;
	var elmThumbImg = vcc.getObj("thumbsImg_" + sId);
	if (bList) {
		if (elmListImg.src.indexOf("sub_off") > -1)
			elmListImg.src = elmListImg.src.replace("sub_off", "sub_on");
		if (elmThumbImg.src.indexOf("sub_on") > -1)
			elmThumbImg.src = elmThumbImg.src.replace("sub_on", "sub_off");
	}
	else {
		if (elmThumbImg.src.indexOf("sub_off") > -1)
			elmThumbImg.src = elmThumbImg.src.replace("sub_off", "sub_on");
		if (elmListImg.src.indexOf("sub_on") > -1)
			elmListImg.src = elmListImg.src.replace("sub_on", "sub_off");
	}
}

vcc.showSpecification = function(sHtml) {
	sHtml = sHtml.replace(/&amp;nbsp;/g, "&nbsp;"); // Firefox doesn't support disable-output-escaping in XSLT...
	var elmData = vcc.getObj("modelData");
	if (sPageMode == "accessoriesGlobal")
		elmData.innerHTML += "<p><b>" + sModelYearFormat.replace("{year}", "20" + sCurPrintModelYear) + "</b></p>";
	elmData.innerHTML += sHtml;

	// Open featured accessories
	if (bOpenFeaturedItems && arModelYear.length < 1) {
		var arLinks = vcc.getElementsByAttribute("class", "featuredAccessoryLink", null, "a");
		for (var i=0; i<arLinks.length; i++) {
			arLinks[i].onclick.call();
		}
	}
	if (vcc.getObj("modelData").getElementsByTagName("tr").length > 0) {
		var arCells = vcc.getObj("modelData").getElementsByTagName("tr")[0].getElementsByTagName("td");
		var iCellsW = 0;
		for (var i=0; i<arCells.length; i++) {
			if (vcc.getStyle(arCells[i], "display") != "none")
				iCellsW += vcc.getW(arCells[i]);
		}
		var iTableW = vcc.getW("modelData");
		var iW = (iTableW > iCellsW) ? iTableW : iCellsW;
		//if (!isNaN(iW) && iW > 701)
		//	vcc.moveTo("rightcontent", iW + 15, null, vcc.bIsRtl);
	}
	
	if (sPageMode == "accessoriesGlobal" && arModelYear.length > 0) {
		sCurPrintModelYear = arModelYear.shift();
		var sCurPrintModelYearId = arModelYearId.shift();
		vcc.prepareXml(sCurPrintModelYear, sCurPrintModelYearId);
	}
	else {
		vcc.showActiveVehicles();
		vcc.hide("loadingSpecs");
		if (vcc.bIsInAuthoringMode)
			vcc.initSpecificationAuthoring();
	}
	if (sPageMode == "featuresAccessories") {
		vcc.findThumbviewCategories();
	
		/*
		// Find the headers that only has items that are features (NOT accessories)
		var arHeaders = vcc.getElementsByAttribute("class", "modelCategorySubHeader2", null, "tr");
		for (var i=0; i<arHeaders.length; i++) {
			var sIsFeature = "true";
			var elmCurRow = arHeaders[i].nextSibling;
			while (elmCurRow && elmCurRow.className.indexOf("modelCategorySubHeader2") < 0) {
				if (elmCurRow.className.indexOf("dataRow") > -1) {
					var bIsFeature = (elmCurRow.getAttribute("isfeature") == "true");
					if (!bIsFeature) { // It is an accessory
						sIsFeature = "false";
						break;
					}
				}
				elmCurRow = elmCurRow.nextSibling;
			}
			arHeaders[i].setAttribute("isfeature", sIsFeature);
		}
		var arHeaders = vcc.getElementsByAttribute("class", "modelCategorySubSubHeader2", null, "tr");
		for (var i=0; i<arHeaders.length; i++) {
			var sIsFeature = "true";
			var elmCurRow = arHeaders[i].nextSibling;
			while (elmCurRow && elmCurRow.className.indexOf("modelCategorySub") < 0) {
				if (elmCurRow.className.indexOf("dataRow") > -1) {
					var bIsFeature = (elmCurRow.getAttribute("isfeature") == "true");
					if (!bIsFeature) { // It is an accessory
						sIsFeature = "false";
						break;
					}
				}
				elmCurRow = elmCurRow.nextSibling;
			}
			arHeaders[i].setAttribute("isfeature", sIsFeature);
		}*/		
	}
}

vcc.checkSelectedCars = function(elmThisCheck) {
	var iChecked = 0;
	var i = 1;
	while ((elmCheck = vcc.getObj("chkVehicle" + i))) {
		if (elmCheck.checked)
			iChecked++;
		i++;
	}
	if (iChecked < 1)
		elmThisCheck.checked = true;
	if ((sPageMode == "featuresOptions" && iChecked > 6) || (sPageMode == "techSpec" && iChecked > 4)) {
		elmThisCheck.checked = false;
		vcc.show("chooseCarAlert");
		document.onmousedown = function() {
			vcc.hide('chooseCarAlert');
		}
	}
}

vcc.showActiveVehicles = function() {
	if (vcc.bIsRtl)
		vcc.addCssRule(".itemHeaderRowActive .vehicle" + iLastVisibleVehicle, "border-left:none !important");
	else
		vcc.addCssRule(".itemHeaderRowActive .vehicle" + iLastVisibleVehicle, "border-right:none !important");
	//var oStyleSheet = document.styleSheets[document.styleSheets.length - 1];
	// If no checkboxes, show all vehicles
	if (bAllVehiclesVisible) {
		for (var i=0; i<20; i++) {
			vcc.addCssRule(".vehicle" + i, "display:" + sNormalTdDisplay);
		}
		if (oContentXml && oContentXml.documentElement && oContentXml.documentElement.firstChild)
			iLastVisibleVehicle = oContentXml.documentElement.firstChild.childNodes.length;
	}
	// Else, show only the vehicles with their checkbox checked
	else {
		var i = 1;
		while ((elmCheck = vcc.getObj("chkVehicle" + i))) {
			if (elmCheck.checked) {
				vcc.addCssRule(".vehicle" + i, "display:" + sNormalTdDisplay);
				vcc.addCssRule(".dataCell" + (i-1), "display:" + sNormalTdDisplay);
				iLastVisibleVehicle = i;
			}
			else {
				vcc.addCssRule(".vehicle" + i, "display:none");
				vcc.addCssRule(".dataCell" + (i-1), "display:none");
			}
			i++;
		}	
	}
	if (vcc.bIsRtl)
		vcc.addCssRule(".itemHeaderRowActive .vehicle" + iLastVisibleVehicle, "border-left:solid 5px #ffffff !important");
	else
		vcc.addCssRule(".itemHeaderRowActive .vehicle" + iLastVisibleVehicle, "border-right:solid 5px #ffffff !important");

	if (sPageMode == 'techSpec') {
		// Color the rows, or hide if they show no data
		var elmData = vcc.getObj("modelData");
		var sClass = "dataRow altColor";
		var arRows = elmData.getElementsByTagName("tr");
		for (var i=0; i<arRows.length; i++) {
			if (arRows[i].className.indexOf("dataRow") > -1) {
				var bRowHasData = false;
				// Check if the row has any visible data, else hide it
				for (var c=1; c<arRows[i].cells.length; c++) {
					if ((bAllVehiclesVisible || vcc.getObj("chkVehicle" + c).checked) && arRows[i].cells[c].innerHTML.toLowerCase().indexOf("<br") > 0) {
						bRowHasData = true;
					}
				}
				// If the row has cells that displays data, color it
				if (bRowHasData) {
					arRows[i].className = sClass;
					vcc.show(arRows[i]);
					sClass = (sClass == "dataRow") ? "dataRow altColor" : "dataRow";
				}
				else {
					arRows[i].className = "dataRow hidden";
				}
			}
			else
				sClass = "dataRow altColor";
		}
	}
	else if (sPageMode == 'accessoriesGlobal' || sPageMode == 'featuresAccessories') {
		var arRows = vcc.getElementsByAttribute("class", "dataRow", "modelData", "tr", false, true);
		for (var i=0; i<arRows.length; i++) {
			var sClass = (i % 2 == 0) ? "dataRow altColor" : "dataRow";
			if (arRows[i].className.indexOf("hidden") > -1)
				sClass += " hidden";
			arRows[i].className = sClass;
		}
	}
}


vcc.showItemInfo = function(sId, bIsFeaturedItem, elmLink, sThisModelYearId, bIsCategoryHeader, bList) {
	if (!bIsFeaturedItem)
		bOpenFeaturedItems = false;
	var sFeatured = bIsFeaturedItem ? "featured" : "";
	if (bIsFeaturedItem) {
		var elmTd = vcc.getObj("featureditem_" + sId);
		if (elmTd)
			elmLink = elmTd.getElementsByTagName("a")[0];
		else
			return;
	}
	
	if (!elmLink || !elmLink.parentNode)
		elmLink = elmCurLink;
	if (!elmLink)
		elmLink = vcc.getObj("itemLink_" + sId);
	elmLink.blur();
	
	var elmItemHeaderRow = elmLink.parentNode.parentNode;
	var elmItemInfo = elmItemHeaderRow.nextSibling;
	
	if (bIsCategoryHeader) {
		elmItemInfo = vcc.getObj("categoryInfo_" + sId);
		var sListType = elmLink.getAttribute("listType");
		var bList = !(sListType && sListType == "thumbs");
	}
	//Safari fix
	while (elmItemInfo.nodeType != 1) {
		if (elmItemInfo.nextSibling)
			elmItemInfo = elmItemInfo.nextSibling;
		else
			break;
	}
	if (elmItemInfo)
		var sLoaded = elmItemInfo.getAttribute("itemLoaded");
	if (!sLoaded || sLoaded == "false") {
		if (elmItemInfo)
			arOpenedItemElements[sId] = elmItemInfo;
		sThisModelYearId = sThisModelYearId || sModelYearId;		
		if (bIsCategoryHeader)
			VolvoCars.Web.Sites.WebServices.SCNG.GetCategory(sMarketModelYear, sId, sModelId, vcc.iGlobalState, vcc.GetCategory_CallBack);			
			//vcc.callAjax("", "VolvoCars.Web.Sites.SCWrapper", "GetCategory", [sMarketModelYear, sId, sModelId], vcc.onCategoryInfoLoad, [vcc.iGlobalState]);
		else
			VolvoCars.Web.Sites.WebServices.SCNG.GetItem(sMarketId, sThisModelYearId, sId, sModelId, vcc.iGlobalState, vcc.GetItem_CallBack);			
			//vcc.callAjax("", "VolvoCars.Web.Sites.SCWrapper", "GetItem", [sMarketId, sThisModelYearId, sId, sModelId], vcc.onItemInfoLoad, [vcc.iGlobalState]);
		if (elmItemInfo)
			elmItemInfo.setAttribute("itemLoaded", "false");
		if (bIsCategoryHeader) {
			elmLink.className = "open";
			vcc.showItems(sId, bList);
		}
		else {
			if (elmItemHeaderRow.className.indexOf("itemHeaderRowActive") < 0)
				elmItemHeaderRow.className += " itemHeaderRowActive";
			if (elmItemInfo)
				elmItemInfo.style.display = sNormalRowDisplay;
		}
		if (elmItemInfo)
			var elmItemText = vcc.getElementsByAttribute("id", sFeatured + "itemtext_" + sId, elmItemInfo)[0];
		if (!bIsFeaturedItem && !bIsCategoryHeader)
			elmItemText.innerHTML = "<b>" + sLoading + "</b>";
	}
	else {
		if (bIsCategoryHeader) {
			if (elmLink.className == "open") {
				elmLink.className = "";
				if (elmItemInfo)
					elmItemInfo.className = "hidden";
				vcc.showItems(sId, bList, true);
				elmItemInfo.style.display = "none";
			}
			else {				
				elmLink.className = "open";
				if (elmItemInfo && elmItemInfo.getAttribute("hasinfo"))
					elmItemInfo.className = "";
				vcc.showItems(sId, bList);
				if (elmItemInfo.getAttribute("hasinfo") == "true")
					elmItemInfo.style.display = sNormalRowDisplay;
			}
		}
		else {
			if (bIsExpanding)
				vcc.clickNextItemLink();
			if (vcc.getStyle(elmItemInfo, "display") == sNormalRowDisplay) {
				if (!bIsExpanding) {
					elmItemInfo.style.display = "none";
					elmItemHeaderRow.className = elmItemHeaderRow.className.replace(" itemHeaderRowActive", "");
				}
			}
			else {
				elmItemInfo.style.display = sNormalRowDisplay;
				elmItemHeaderRow.className += " itemHeaderRowActive";
			}
		}
	}
}

vcc.GetCategory_CallBack = function(result, eventArgs) {
	var sXml = result;
	var oXml = vcc.createXmlObj(sXml);
	if (!oXml.documentElement) {
		vcc.showError("returned XML:<br/>" + sXml);
		return;
	}
	if (oXml.documentElement.childNodes.length < 1) {
		vcc.showError("This item doesn't exist:<br/>" + sXml.replace("<", "&lt;"));
		return;
	}
	var arHeaders = oXml.documentElement.childNodes;
	for (var i=0; i<arHeaders.length; i++) {
		var sId = arHeaders[i].getAttribute("id");
		var elmItemInfo = arOpenedItemElements[sId];
		if (!elmItemInfo)
			elmItemInfo = vcc.getObj("categoryInfo_" + sId);
		if (!elmItemInfo || elmItemInfo.getAttribute("itemLoaded") == "true")
			return;
		elmItemInfo.setAttribute("itemLoaded", "true");
		
		var elmTextCell = vcc.getObj("itemtext_" + sId);
		var elmContainer = vcc.getObj("categoryInfo_" + sId);
		var elmImgCell = vcc.getObj("itemimg_" + sId);
		
		var sImg = arHeaders[i].getAttribute("image1");
		var sImgLarge = arHeaders[i].getAttribute("image2");
		var sFlash = arHeaders[i].getAttribute("flash1");
		var sName = arHeaders[i].getAttribute("displayname");
		var sText = (arHeaders[i].firstChild.firstChild) ? arHeaders[i].firstChild.firstChild.nodeValue : "";
		
		elmItemInfo.setAttribute("hasinfo", "false");
		var bHasInfo = false;
		if (sText.length > 0 || sImg || sFlash) {
			elmItemInfo.className = "";
			elmItemInfo.setAttribute("hasinfo", "true");
			elmTextCell.innerHTML = sText;
			elmContainer.style.display = "block";
		}
		
		elmContainer.setAttribute("image2", sImgLarge);
		elmContainer.setAttribute("flash", sFlash);
		elmContainer.setAttribute("displayname", sName);
		
		if (sImg && sImg.length > 0) {
			var elmImg = document.createElement("img");
			elmImgCell.appendChild(elmImg);
			elmImg.src = sImg;
			elmImg.className = "itemImg";
		}
		if (arHeaders[i].getAttribute("flash1") && bHasFlash)
			elmTextCell.innerHTML += sVideoHTML;
		else if (arHeaders[i].getAttribute("image2"))
			elmTextCell.innerHTML += sEnlargeHTML;
	}
}

/*vcc.onCategoryInfoLoad = function(oAjaxXml) {
	var sXml = oAjaxXml.responseText;
	var oXml = vcc.createXmlObj(sXml);
	if (!oXml.documentElement) {
		vcc.showError("returned XML:<br/>" + sXml);
		return;
	}
	if (oXml.documentElement.childNodes.length < 1) {
		vcc.showError("This item doesn't exist:<br/>" + sXml.replace("<", "&lt;"));
		return;
	}
	var arHeaders = oXml.documentElement.childNodes;
	for (var i=0; i<arHeaders.length; i++) {
		var sId = arHeaders[i].getAttribute("id");
		var elmItemInfo = arOpenedItemElements[sId];
		if (!elmItemInfo)
			elmItemInfo = vcc.getObj("categoryInfo_" + sId);
		if (!elmItemInfo || elmItemInfo.getAttribute("itemLoaded") == "true")
			return;
		elmItemInfo.setAttribute("itemLoaded", "true");
		
		var elmTextCell = vcc.getObj("itemtext_" + sId);
		var elmContainer = vcc.getObj("categoryInfo_" + sId);
		var elmImgCell = vcc.getObj("itemimg_" + sId);
		
		var sImg = arHeaders[i].getAttribute("image1");
		var sImgLarge = arHeaders[i].getAttribute("image2");
		var sFlash = arHeaders[i].getAttribute("flash1");
		var sName = arHeaders[i].getAttribute("displayname");
		var sText = (arHeaders[i].firstChild.firstChild) ? arHeaders[i].firstChild.firstChild.nodeValue : "";
		
		elmItemInfo.setAttribute("hasinfo", "false");
		var bHasInfo = false;
		if (sText.length > 0 || sImg || sFlash) {
			elmItemInfo.className = "";
			elmItemInfo.setAttribute("hasinfo", "true");
			elmTextCell.innerHTML = sText;
			elmContainer.style.display = "block";
		}
		
		elmContainer.setAttribute("image2", sImgLarge);
		elmContainer.setAttribute("flash", sFlash);
		elmContainer.setAttribute("displayname", sName);
		
		if (sImg && sImg.length > 0) {
			var elmImg = document.createElement("img");
			elmImgCell.appendChild(elmImg);
			elmImg.src = sImg;
			elmImg.className = "itemImg";
		}
		if (arHeaders[i].getAttribute("flash1") && bHasFlash)
			elmTextCell.innerHTML += sVideoHTML;
		else if (arHeaders[i].getAttribute("image2"))
			elmTextCell.innerHTML += sEnlargeHTML;
	}
}*/

vcc.GetItem_CallBack = function(result, eventArgs) {
	var sFeatured = bOpenFeaturedItems ? "featured" : "";
	var sXml = result;
	var oXml = vcc.createXmlObj(sXml);
	if (!oXml.documentElement) {
		vcc.showError("returned XML:<br/>" + sXml);
		return;
	}
	var sId = oXml.documentElement.getAttribute("id");
	var elmItemRow = arOpenedItemElements[sId];
	if (elmItemRow.getAttribute("itemLoaded") == "true")
		return;
	var elmTextCell = vcc.getElementsByAttribute("id", sFeatured + "itemtext_" + sId, elmItemRow)[0];
	if (oXml.documentElement.childNodes.length < 1) {
		vcc.showError("This item doesn't exist:<br/>" + sXml.replace("<", "&lt;"));
		elmTextCell.innerHTML = "<b>" + sCommunicationError + "</b>";
		return;
	}
	elmItemRow.setAttribute("itemLoaded", "true");
	//var elmTextCell = vcc.getObj(sFeatured + "itemtext_" + sId);
	var sText = (oXml.documentElement.firstChild.firstChild) ? oXml.documentElement.firstChild.firstChild.nodeValue : "";
	elmTextCell.innerHTML = sText;
		
	if (sPageMode == "accessoriesGlobal") {
		var sModels = "";
		var arModels = oXml.documentElement.lastChild.childNodes;
		for (var i=0; i<arModels.length; i++) {
			sModels += arModels[i].firstChild.nodeValue;
			if (i < arModels.length - 1)
				sModels += ", ";
		}
		elmTextCell.innerHTML += '<p class="availFor">' + sAvailableFor.replace("{models}", sModels) + "</p>";
	}
	
	// Add more info-link if it exists
	var sLink = oXml.documentElement.getAttribute("externalinfourl");
	if (sLink && sLink.length > 0) {
		var sLinkText = oXml.documentElement.getAttribute("externalinfotext");
		if (!sLinkText || sLinkText.length < 1)
			sLinkText = sLink;
		var sOnClick = "";
		if (sLink.toLowerCase().indexOf("javascript:") == 0) {
			sOnClick = sLink.substring(11);
			sLink = "javascript:void(0)";
		}
		var sLinkHtml = '<p><a href="' + sLink + '" onclick="' + sOnClick + '">' + sLinkText + "</a></p>";
		elmTextCell.innerHTML += sLinkHtml;
	}
	
	//var elmImgCell = vcc.getObj(sFeatured + "itemimg_" + sId);
	var elmImgCell = vcc.getElementsByAttribute("id", sFeatured + "itemimg_" + sId, elmItemRow)[0];
	elmImgCell.setAttribute("image2", oXml.documentElement.getAttribute("image2"));
	elmImgCell.setAttribute("flash", oXml.documentElement.getAttribute("flash1"));
	elmImgCell.setAttribute("displayname", oXml.documentElement.getAttribute("displayname"));
	var sImg = oXml.documentElement.getAttribute("image1");
	if (sImg && sImg.length > 0) {
		var elmImg = document.createElement("img");
		elmImgCell.appendChild(elmImg);
		elmImg.src = sImg;
		elmImg.className = "itemImg";
	}
	if (oXml.documentElement.getAttribute("flash1") && bHasFlash)
		elmImgCell.innerHTML += sVideoHTML;
	else if (oXml.documentElement.getAttribute("image2"))
		elmImgCell.innerHTML += sEnlargeHTML;
	if (bIsExpanding)
		vcc.clickNextItemLink();
}

/*vcc.onItemInfoLoad = function(oAjaxXml) {
	var sFeatured = bOpenFeaturedItems ? "featured" : "";
	var sXml = oAjaxXml.responseText;
	var oXml = vcc.createXmlObj(sXml);
	if (!oXml.documentElement) {
		vcc.showError("returned XML:<br/>" + sXml);
		return;
	}
	var sId = oXml.documentElement.getAttribute("id");
	var elmItemRow = arOpenedItemElements[sId];
	if (elmItemRow.getAttribute("itemLoaded") == "true")
		return;
	var elmTextCell = vcc.getElementsByAttribute("id", sFeatured + "itemtext_" + sId, elmItemRow)[0];
	if (oXml.documentElement.childNodes.length < 1 || oAjaxXml.status == 500) {
		vcc.showError("This item doesn't exist:<br/>" + sXml.replace("<", "&lt;"));
		elmTextCell.innerHTML = "<b>" + sCommunicationError + "</b>";
		return;
	}
	elmItemRow.setAttribute("itemLoaded", "true");
	//var elmTextCell = vcc.getObj(sFeatured + "itemtext_" + sId);
	var sText = (oXml.documentElement.firstChild.firstChild) ? oXml.documentElement.firstChild.firstChild.nodeValue : "";
	elmTextCell.innerHTML = sText;
		
	if (sPageMode == "accessoriesGlobal") {
		var sModels = "";
		var arModels = oXml.documentElement.lastChild.childNodes;
		for (var i=0; i<arModels.length; i++) {
			sModels += arModels[i].firstChild.nodeValue;
			if (i < arModels.length - 1)
				sModels += ", ";
		}
		elmTextCell.innerHTML += '<p class="availFor">' + sAvailableFor.replace("{models}", sModels) + "</p>";
	}
	
	// Add more info-link if it exists
	var sLink = oXml.documentElement.getAttribute("externalinfourl");
	if (sLink && sLink.length > 0) {
		var sLinkText = oXml.documentElement.getAttribute("externalinfotext");
		if (!sLinkText || sLinkText.length < 1)
			sLinkText = sLink;
		var sOnClick = "";
		if (sLink.toLowerCase().indexOf("javascript:") == 0) {
			sOnClick = sLink.substring(11);
			sLink = "javascript:void(0)";
		}
		var sLinkHtml = '<p><a href="' + sLink + '" onclick="' + sOnClick + '">' + sLinkText + "</a></p>";
		elmTextCell.innerHTML += sLinkHtml;
	}
	
	//var elmImgCell = vcc.getObj(sFeatured + "itemimg_" + sId);
	var elmImgCell = vcc.getElementsByAttribute("id", sFeatured + "itemimg_" + sId, elmItemRow)[0];
	elmImgCell.setAttribute("image2", oXml.documentElement.getAttribute("image2"));
	elmImgCell.setAttribute("flash", oXml.documentElement.getAttribute("flash1"));
	elmImgCell.setAttribute("displayname", oXml.documentElement.getAttribute("displayname"));
	var sImg = oXml.documentElement.getAttribute("image1");
	if (sImg && sImg.length > 0) {
		var elmImg = document.createElement("img");
		elmImgCell.appendChild(elmImg);
		elmImg.src = sImg;
		elmImg.className = "itemImg";
	}
	if (oXml.documentElement.getAttribute("flash1") && bHasFlash)
		elmImgCell.innerHTML += sVideoHTML;
	else if (oXml.documentElement.getAttribute("image2"))
		elmImgCell.innerHTML += sEnlargeHTML;
	if (bIsExpanding)
		vcc.clickNextItemLink();
}*/

var sFlashHtml = '<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab" width="480" height="293" id="accessories" align="middle"><param name="allowScriptAccess" value="sameDomain" /><param name="movie" value="/_layouts/VolvoCars.Web.Sites/include/swf/videoplayer_specification.swf?flvURL={video}" /><param name="quality" value="high" /><param name="bgcolor" value="#eaeaea" /><embed src="/_layouts/VolvoCars.Web.Sites/include/swf/videoplayer_specification.swf?flvURL={video}" quality="high" bgcolor="#eaeaea" width="480" height="293" name="accessories" align="middle" allowScriptAccess="sameDomain" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" /></object>';

vcc.showBigImg = function(elmLink, bFlash) {
	var elmPopUp = vcc.getObj("itemPopUp");
	var iTop = vcc.getDocScroll().y;
	vcc.moveTo(elmPopUp, 130, iTop, vcc.bIsRtl);
	var sTitle = vcc.getParentNode(elmLink, "div").getAttribute("displayname");
	var elmPopUpTitle = vcc.getObj("itemPopUpTitle");
	elmPopUpTitle.innerHTML = sTitle;
	vcc.getObj("itemPopUp").style.display = "block";
	vcc.hide("selectFilter"); // Otherwise, the select might show though the image
	var elmFlashRow = vcc.getObj("itemPopUpFlashRow");
	var elmImgRow = vcc.getObj("itemPopUpImgRow");
	if (bFlash) {
		elmImgRow.style.display = "none";
		elmFlashRow.style.display = sNormalRowDisplay;
		var sThisFlash = sFlashHtml.replace(/{video}/g, vcc.getParentNode(elmLink, "div").getAttribute("flash"));
		elmFlashRow.cells[0].innerHTML = sThisFlash;
		setTimeout('vcc.getObj("itemPopUpFlashRow").style.display = "' + sNormalRowDisplay + '"', 1); // Due to stupid bug in Safari 2.0, the flash movie is invisible until one does something with the layer...
	}
	else {
		elmFlashRow.style.display = "none";
		elmImgRow.style.display = sNormalRowDisplay;
		var sImgUrl = vcc.getParentNode(elmLink, "div").getAttribute("image2");
		setTimeout('vcc.getObj("itemPopUpImg").src = "' + sImgUrl + '"', 1); // Due to stupid bug in IE6, the img doesn't show if this delay is used.
		setTimeout('vcc.getObj("itemPopUpImgRow").style.display = "' + sNormalRowDisplay + '"', 2); // Due to stupid bug in Safari 2.0, the img is invisible until one does something with the layer...
	}
}

vcc.hidePopup = function() {
	vcc.getObj("itemPopUp").style.display = "none";
	var elmFlashRow = vcc.getObj("itemPopUpFlashRow");
	elmFlashRow.cells[0].innerHTML = "";
	vcc.show("selectFilter");
}

vcc.expandAll = function(bCollapse) {
	var elmDataTable = vcc.getObj("modelData");
	var arRows = elmDataTable.getElementsByTagName("tr");
	arItemLinksToClick = [];
	for (var i=0; i<arRows.length; i++) {
		if (arRows[i].id.indexOf("modelCategory" + iActiveCategory) > -1) {
			var arLinks = arRows[i].getElementsByTagName("a");
			if (arLinks.length == 1) {
				if (!bCollapse) // If all links should be expanded, collect them in an array
					arItemLinksToClick.push(arLinks[0]);
				else { // If the should be folded, do this at once
					if (arRows.length > i && vcc.getStyle(arRows[i+1], "display") != "none") {
						arRows[i+1].style.display = "none";
						arRows[i].className = arRows[i].className.replace(" itemHeaderRowActive", "");
					}
				}
			}
		}
	}
	if (!bCollapse) {
		bIsExpanding = true;
		var elmSelect = vcc.getObj("selectFilter");
		if (elmSelect)
			elmSelect.disabled = true;
		vcc.clickNextItemLink();
		if (elmExpandAll)
			elmExpandAll.style.display = "none";
	}
	else {
		if (elmExpandAll && elmCollapseAll) {
			elmExpandAll.style.display = "inline";
			elmCollapseAll.style.display = "none";
		}
	}
}

vcc.clickNextItemLink = function() {
	if (arItemLinksToClick.length > 0 && bIsExpanding) {
		elmCurLink = arItemLinksToClick.shift();
		elmCurLink.onclick.call();
	}
	else {
		bIsExpanding = false;
		var elmCollapseAll = vcc.getObj("collapseAll");
		if (elmCollapseAll)
			elmCollapseAll.style.display = "inline";
		var elmSelect = vcc.getObj("selectFilter");
		if (elmSelect)
			elmSelect.disabled = false;
	}
}

vcc.filterCategories = function(iCategory) {
	iActiveCategory = iCategory;
	var elmDataTable = vcc.getObj("modelData");
	var arRows = elmDataTable.getElementsByTagName("tr");
	for (var i=0; i<arRows.length; i++) {
		
		// Make all headers inactive
		arRows[i].className = arRows[i].className.replace(" itemHeaderRowActive", "");
		
		// Show all rows if "all" is chosen
		if (iCategory.length < 1) {
			if (arRows[i].id.indexOf("featuredinforow") > -1)
				arRows[i].style.display = sNormalRowDisplay;
			else
				arRows[i].style.display = "";
		}
		// Show only the active category
		else {
			if (arRows[i].id.indexOf("modelCategory") > -1 && arRows[i].id.indexOf("modelCategory" + iCategory + "_") < 0)
				arRows[i].style.display = "none";
			else
				arRows[i].style.display = "";
		}
	}
	elmExpandAll.style.display = (iCategory.length > 0) ? "inline" : "none";
	elmCollapseAll.style.display = "none";
}

vcc.setListType = function(sId, bList, bHide) {
	var elmLink = vcc.getObj("categoryHeaderLink_" + sId);
	var sListType = elmLink.getAttribute("listType");
	if (sListType && ((sListType == "list" && bList) || (sListType == "thumbs" && !bList))) // The desired displaytype (list/thumbs) is already active, don't do anything
		return;
	var sNewListType = bList ? "list" : "thumbs";
	elmLink.setAttribute("listType", sNewListType);
	vcc.setListTypeImages(sId, bList);
	if (elmLink.className == "open")
		vcc.showItems(sId, bList, null);
	else
		vcc.showItemInfo(sId, null, elmLink, null, true, bList);
	
	if (typeof _bIsAuthoring != "undefined" && _bIsAuthoring)
		vcc.storeListType(sId, bList);
}

vcc.showItems = function(sId, bList, bHide) {
	var elmHeaderRow = vcc.getObj("categoryHeader_" + sId);
	var elmExpandLink = vcc.getObj("expandLink_" + sId);
	var bIsSubSubHeader = (elmHeaderRow.className.indexOf("SubSub") > -1);
	if (elmExpandLink)
		elmExpandLink.innerHTML = bList ? sExpand : "";
	var elmCurRow = elmHeaderRow.nextSibling;
	var sChildGuids = "";
	var bCurIsThumbs = false;
	var bIsSubList = false;
	while (elmCurRow) {
		//Safari fix
		if (elmCurRow.nodeType != 1) {
			elmCurRow = elmCurRow.nextSibling;
			continue;
		}
		
		if (elmCurRow.className.indexOf("dataRow") > -1) {
			if (!bCurIsThumbs && (!bIsSubList || bHide)) {
				elmCurRow.style.display = (bHide) ? "none" : (bList || bIsSubList) ? sNormalRowDisplay : "none";
				elmCurRow.className = elmCurRow.className.replace(" itemHeaderRowActive", "");
				vcc.show(elmCurRow);
				elmCurRow.setAttribute("parentIsOpened", (bHide ? "false" : "true"));
				
				// Collect the guids of the child-items, these are submitted to the server to get all the item-info in thumbview (GetItems)
				var sItemGuid = elmCurRow.id.replace("dataRow_", "");
				sChildGuids += sItemGuid + ","
			}
		}
		else if (elmCurRow.className.toLowerCase().indexOf("inforow") > -1 || elmCurRow.className.indexOf("modelCategorySubSubHeader2") > -1) {
			var sDisplay = (bHide) ? "none" : ((!bList && elmCurRow.id == "infoRowThumbs_" + sId) || elmCurRow.className.indexOf("modelCategorySubSubHeader2") > -1) ? sNormalRowDisplay : "none";
			if (elmCurRow.className.indexOf("modelCategorySubSubHeader2") > -1) {
				if (bIsSubSubHeader)
					break;
				var sThisId = elmCurRow.getAttribute("guid");
				var elmLink = vcc.getObj("categoryHeaderLink_" + sThisId);
				elmLink.className = "";
				var elmItemInfo = vcc.getObj("categoryInfo_" + sThisId);
				elmItemInfo.style.display = "none";
				bCurIsThumbs = (elmLink.getAttribute("listType") == "thumbs");
				if (bCurIsThumbs) {
					bIsSubList = false;
				}
				else {
					bIsSubList = true;
				}
				var elmThisExpandLink = vcc.getObj("expandLink_" + sThisId);
				elmThisExpandLink.innerHTML = !bCurIsThumbs ? sExpand : "";
				elmCurRow.setAttribute("parentIsOpened", (bHide ? "false" : "true"));
			}
			elmCurRow.style.display = sDisplay;
			vcc.show(elmCurRow);
		}
		else {			
			break;
		}		
		elmCurRow = elmCurRow.nextSibling;
	}	
	if (!bList) {
		
		var oThumbsContainer = document.getElementById("infoTdThumbs_" + sId);
		var oThumbsRow = document.getElementById("infoRowThumbs_" + sId);
		oThumbsRow.setAttribute("parentIsOpened", (bHide ? "false" : "true"));
		if (oThumbsContainer != null && oThumbsContainer.getElementsByTagName("ul").length == 0) { //.innerHTML && oThumbsContainer.innerHTML.length < 10) {
			oThumbsContainer.innerHTML = "<strong>" + sLoading + "</strong>";
			sChildGuids = sChildGuids.substring(0, sChildGuids.length - 1);
			VolvoCars.Web.Sites.WebServices.SCNG.GetItems(sMarketId, sModelYearId, sChildGuids, sModelId, sId, vcc.iGlobalState, vcc.GetItems_CallBack);
			//vcc.callAjax("", "VolvoCars.Web.Sites.SCWrapper", "GetItems", [sMarketId, sModelYearId, sChildGuids, sModelId, sId], vcc.onItemsInfoLoad, [vcc.iGlobalState]);
		}
	}
	var elmTable = vcc.getObj("modeTable_" + sId);
	if (elmTable) {
		if (bHide) {
			vcc.hide(elmTable);
			elmHeaderRow.setAttribute("isexpanded", "false");
			arItemLinksToClick = [];
		}
		else
			vcc.show(elmTable);
	}
}

vcc.expandAllFeatAcc = function(sId, bIsSubSubHeader) {
	var elmHeaderRow = vcc.getObj("categoryHeader_" + sId);
	var sIsExpanded = elmHeaderRow.getAttribute("isexpanded");
	var bIsExpanded = (sIsExpanded && sIsExpanded == "true");
	elmHeaderRow.setAttribute("isexpanded", bIsExpanded ? "false" : "true");
	var elmExpandLink = vcc.getObj("expandLink_" + sId);
	if (elmExpandLink)
		elmExpandLink.innerHTML = bIsExpanded ? sExpand : sCollapse;
	bCurIsThumbs = false;
	arItemLinksToClick = [];
	var elmCurRow = elmHeaderRow.nextSibling;
	while (elmCurRow) {
		if (elmCurRow.className.indexOf("dataRow") > -1) {
			if (!bCurIsThumbs) {
				if (bIsExpanded) {
					elmCurRow.nextSibling.style.display = "none";
					elmCurRow.className = elmCurRow.className.replace(" itemHeaderRowActive", "");
				}
				else if (elmCurRow.className.indexOf("itemHeaderRowActive") < 0) {
					//var elmLink = vcc.getObj("itemLink_" + elmCurRow.getAttribute("guid"));
					var elmLink = elmCurRow.getElementsByTagName("a")[0];
					arItemLinksToClick.push(elmLink);
				}
			}
		}
		/*else if (elmCurRow.className.indexOf("modelCategorySubSubHeader2") > -1) {
			if (bIsSubSubHeader)
				break;
			var sThisId = elmCurRow.getAttribute("guid");
			var elmLink = vcc.getObj("categoryHeaderLink_" + sThisId);
			bCurIsThumbs = (elmLink.getAttribute("listType") == "thumbs");
		}*/		
		else if (elmCurRow.className.indexOf("modelCategorySubHeader") > -1 || elmCurRow.className.indexOf("modelCategorySubSubHeader2") > -1)
			break;
		elmCurRow = elmCurRow.nextSibling;
	}
	bIsExpanding = true;
	vcc.clickNextItemLink();
}

vcc.showOnlyAccessories = function(bOnlyAccessories, elmLink) {
	elmLink.blur();
	var elmOnlyAcc = vcc.getObj("onlyAccLink");
	var elmBoth = vcc.getObj("featAccLink");
	if (bOnlyAccessories) {
		elmOnlyAcc.className = "last active";
		elmBoth.className = "first";
	}
	else {
		elmOnlyAcc.className = "last";
		elmBoth.className = "first active";
	}	
	vcc.getObj('modelData').innerHTML = '';
	vcc.initSpecification(null, bOnlyAccessories);
}

vcc.GetItems_CallBack = function(result, eventArgs) {
	var sXml = result;
	var oXml = vcc.createXmlObj(sXml, true, null, null);
	var sCategoryId = oXml.getElementsByTagName("category")[0].getAttribute("id");
	var oThumbsContainer = document.getElementById("infoTdThumbs_" + sCategoryId);
	if (oThumbsContainer == null) return;	
	oThumbsContainer.innerHTML = "";
	var aItems = oXml.getElementsByTagName("item");
	var oList = vcc.createElement("ul", null, oThumbsContainer);
	oList.className = "thumbs fixfloat";
	var iMaxImageHeight = 0;
	var iMaxTitleHeight = 0;
	for (var i = 0; i < aItems.length; i++) {
		var oItem = aItems[i];
		var sThumbUrl = oItem.getAttribute("image1");
		var sLargeImageUrl = oItem.getAttribute("image2");
		var sFlashUrl = oItem.getAttribute("flash1");
		var sTitle = oItem.getAttribute("displayname");
		var oDescription = (oItem.getElementsByTagName("description").length == 0) ? null : oItem.getElementsByTagName("description")[0];
		var sDescription = vcc.getXmlNodeValue(oItem, "description");
		if (sDescription == "") sDescription = null;
		var sExternalLinkTitle = oItem.getAttribute("externalinfotext");
		var sExternalLinkUrl =  oItem.getAttribute("externalinfourl");
		var oListItem = vcc.createElement("li",null, oList);
		oListItem.className = "fixfloat";
		var oInner = vcc.createElement("div",null, oListItem);
		oInner.className = "inner";
		var oLink = vcc.createElement("a",null,oInner);
		oLink.href = "javascript:void(0)";
		oLink.onfocus = function() {
			this.blur();
		}
		if (sDescription != null || sLargeImageUrl != null || sFlashUrl != null) {
			oLink.onclick = function() {
				vcc.showThumbnailDescription(this);
				return false;
			}
		} else {
			oLink.onclick = function() {
				return false;
			}
		}
		var oImageSpan = vcc.createElement("span",null, oLink);
		oImageSpan.className = "image";
		var oImage = vcc.createElement("img", null, oImageSpan);
		oImage.src = sThumbUrl || "/_layouts/VolvoCars.Web.Sites/Images/1x1.gif";
		oImage.alt = sTitle;
		var oTitle = vcc.createElement("span", null, oLink);
		oTitle.innerHTML = sTitle;
		oTitle.className = "title";
		//Larger image/flash link
		var oEnlarge = vcc.createElement("div", null, oListItem);
		oEnlarge.className = "enlarge";
		if (sLargeImageUrl != null || sFlashUrl != null) {
			oEnlarge.setAttribute("displayname", sTitle);
			if (sFlashUrl != null) {
				oEnlarge.setAttribute("flash",sFlashUrl);
				oEnlarge.innerHTML = "<a href=\"#\" onfocus=\"this.blur();\" class=\"flash\" onclick=\"vcc.showBigImg(this,true);return false;\">" + sPlayVideo + "</a>";
			} else {				
				oEnlarge.setAttribute("image2",sLargeImageUrl);
				oEnlarge.innerHTML = "<a href=\"#\" onfocus=\"this.blur();\" class=\"img\" onclick=\"vcc.showBigImg(this);return false;\">" + sEnlarge + "</a>";
			}
		}
		//Description
		if (sDescription != null || sExternalLinkUrl != null) {
			var oDescription = vcc.createElement("div", null, oListItem);
			oDescription.className = "description";
			if (sDescription != null) {
				var oParagraph = vcc.createElement("p", null, oDescription);
				oParagraph.innerHTML = sDescription;
			}
			if (sExternalLinkUrl != null) {
				var oParagraphLink = vcc.createElement("p",null, oDescription);
				var sOnClick = "";
				if (sExternalLinkUrl.toLowerCase().indexOf("javascript:") == 0) {
					sOnClick = sExternalLinkUrl.substring(11);
					sExternalLinkUrl = "javascript:void(0)";
				}				
				oParagraphLink.innerHTML = "<a href=\"" + sExternalLinkUrl + "\" onclick=\"" + sOnClick + "\">" + sExternalLinkTitle + "</a>";
			}
		}		
		if (iMaxImageHeight < vcc.getH(oImage)) iMaxImageHeight = vcc.getH(oImage);
		if (iMaxTitleHeight < vcc.getH(oTitle))	iMaxTitleHeight = vcc.getH(oTitle);
	}
	//Loop through all items again to set properties
	var aItems = oList.childNodes;
	for (var i = 0; i < aItems.length; i++) {
		var oItem = aItems[i];
		if (iMaxTitleHeight > 0)
			vcc.getElementsByAttribute("class", "title", oItem)[0].style.height = iMaxTitleHeight + "px";
		//vcc.getElementsByAttribute("class", "image", oItem)[0].style.height = iMaxImageHeight + "px";
		var oImage = vcc.getElementsByAttribute("class", "image", oItem)[0].childNodes[0];
		if (oImage.src.indexOf("1x1.gif") != -1) {
			oImage.style.height = 110 + "px";
			oImage.style.width = 165 + "px";
		}
	}
}

/*vcc.onItemsInfoLoad = function(oAjaxXml) {
	var sXml = oAjaxXml.responseText;
	var oXml = vcc.createXmlObj(sXml, true, null, null);
	var sCategoryId = oXml.getElementsByTagName("category")[0].getAttribute("id");
	var oThumbsContainer = document.getElementById("infoTdThumbs_" + sCategoryId);
	if (oThumbsContainer == null) return;	
	oThumbsContainer.innerHTML = "";
	var aItems = oXml.getElementsByTagName("item");
	var oList = vcc.createElement("ul", null, oThumbsContainer);
	oList.className = "thumbs fixfloat";
	var iMaxImageHeight = 0;
	var iMaxTitleHeight = 0;
	for (var i = 0; i < aItems.length; i++) {
		var oItem = aItems[i];
		var sThumbUrl = oItem.getAttribute("image1");
		var sLargeImageUrl = oItem.getAttribute("image2");
		var sFlashUrl = oItem.getAttribute("flash1");
		var sTitle = oItem.getAttribute("displayname");
		var oDescription = (oItem.getElementsByTagName("description").length == 0) ? null : oItem.getElementsByTagName("description")[0];
		var sDescription = vcc.getXmlNodeValue(oItem, "description");
		if (sDescription == "") sDescription = null;
		var sExternalLinkTitle = oItem.getAttribute("externalinfotext");
		var sExternalLinkUrl =  oItem.getAttribute("externalinfourl");
		var oListItem = vcc.createElement("li",null, oList);
		oListItem.className = "fixfloat";
		var oInner = vcc.createElement("div",null, oListItem);
		oInner.className = "inner";
		var oLink = vcc.createElement("a",null,oInner);
		oLink.href = "javascript:void(0)";
		oLink.onfocus = function() {
			this.blur();
		}
		if (sDescription != null || sLargeImageUrl != null || sFlashUrl != null) {
			oLink.onclick = function() {
				vcc.showThumbnailDescription(this);
				return false;
			}
		} else {
			oLink.onclick = function() {
				return false;
			}
		}
		var oImageSpan = vcc.createElement("span",null, oLink);
		oImageSpan.className = "image";
		var oImage = vcc.createElement("img", null, oImageSpan);
		oImage.src = sThumbUrl || "/_layouts/VolvoCars.Web.Sites/Images/1x1.gif";
		oImage.alt = sTitle;
		var oTitle = vcc.createElement("span", null, oLink);
		oTitle.innerHTML = sTitle;
		oTitle.className = "title";
		//Larger image/flash link
		var oEnlarge = vcc.createElement("div", null, oListItem);
		oEnlarge.className = "enlarge";
		if (sLargeImageUrl != null || sFlashUrl != null) {
			oEnlarge.setAttribute("displayname", sTitle);
			if (sFlashUrl != null) {
				oEnlarge.setAttribute("flash",sFlashUrl);
				oEnlarge.innerHTML = "<a href=\"#\" onfocus=\"this.blur();\" class=\"flash\" onclick=\"vcc.showBigImg(this,true);return false;\">" + sPlayVideo + "</a>";
			} else {				
				oEnlarge.setAttribute("image2",sLargeImageUrl);
				oEnlarge.innerHTML = "<a href=\"#\" onfocus=\"this.blur();\" class=\"img\" onclick=\"vcc.showBigImg(this);return false;\">" + sEnlarge + "</a>";
			}
		}
		//Description
		if (sDescription != null || sExternalLinkUrl != null) {
			var oDescription = vcc.createElement("div", null, oListItem);
			oDescription.className = "description";
			if (sDescription != null) {
				var oParagraph = vcc.createElement("p", null, oDescription);
				oParagraph.innerHTML = sDescription;
			}
			if (sExternalLinkUrl != null) {
				var oParagraphLink = vcc.createElement("p",null, oDescription);
				var sOnClick = "";
				if (sExternalLinkUrl.toLowerCase().indexOf("javascript:") == 0) {
					sOnClick = sExternalLinkUrl.substring(11);
					sExternalLinkUrl = "javascript:void(0)";
				}				
				oParagraphLink.innerHTML = "<a href=\"" + sExternalLinkUrl + "\" onclick=\"" + sOnClick + "\">" + sExternalLinkTitle + "</a>";
			}
		}		
		if (iMaxImageHeight < vcc.getH(oImage)) iMaxImageHeight = vcc.getH(oImage);
		if (iMaxTitleHeight < vcc.getH(oTitle))	iMaxTitleHeight = vcc.getH(oTitle);
	}
	//Loop through all items again to set properties
	var aItems = oList.childNodes;
	for (var i = 0; i < aItems.length; i++) {
		var oItem = aItems[i];
		if (iMaxTitleHeight > 0)
			vcc.getElementsByAttribute("class", "title", oItem)[0].style.height = iMaxTitleHeight + "px";
		//vcc.getElementsByAttribute("class", "image", oItem)[0].style.height = iMaxImageHeight + "px";
		var oImage = vcc.getElementsByAttribute("class", "image", oItem)[0].childNodes[0];
		if (oImage.src.indexOf("1x1.gif") != -1) {
			oImage.style.height = 110 + "px";
			oImage.style.width = 165 + "px";
		}
	}
}*/

vcc.showThumbnailDescription = function(oLink) {
	var oItem = vcc.getParentNode(oLink, "li");
	var bItemIsActive = (oItem.className.indexOf("active") != -1);
	var oParentUl = vcc.getParentNode(oLink, "ul");
	var aItems = oParentUl.childNodes;
	oItem.className = bItemIsActive ? "" : "active";
	var oDescription = vcc.getElementsByAttribute("class", "description", oItem)[0];
	var oEnlarge = vcc.getElementsByAttribute("class", "enlarge", oItem)[0];
	var bFirstItem = (oItem.previousSibling == null);
	var bLastItem = (oItem.nextSibling == null);
	var oFirstItemOnRow = oItem;
	var oLastItemOnRow = oItem;
	var iFirstItemOnRowIndex = 0;
	var iLastItemOnRowIndex = 0;
	if (aItems.length > 1) {		
		if (!bFirstItem) {
			while (oFirstItemOnRow.previousSibling != null) {
				if (vcc.bIsRtl) {
					if (vcc.getX(oFirstItemOnRow.previousSibling) < vcc.getX(oFirstItemOnRow)) {
						break;
					}
				} else {
					if (vcc.getX(oFirstItemOnRow.previousSibling) > vcc.getX(oFirstItemOnRow)) {
						break;
					}
				}
				oFirstItemOnRow = oFirstItemOnRow.previousSibling;
			}
		}
		iFirstItemOnRowIndex = vcc.getNodeIndex(oFirstItemOnRow);
		if (!bLastItem) {
			while (oLastItemOnRow.nextSibling != null) {
				if (vcc.bIsRtl) {
					if (vcc.getX(oLastItemOnRow.nextSibling) > vcc.getX(oLastItemOnRow)) {
						break;
					}
				} else {
					if (vcc.getX(oLastItemOnRow.nextSibling) < vcc.getX(oLastItemOnRow)) {
						break;
					}
				}
				oLastItemOnRow = oLastItemOnRow.nextSibling;
			}
		}
		iLastItemOnRowIndex = vcc.getNodeIndex(oLastItemOnRow);
	}
	var iMaxHeight = 0;	
	for (var i = 0; i < aItems.length; i++) {
		if (vcc.safari)
			aItems[i].style.height = vcc.getH(vcc.getElementsByAttribute("class", "image", aItems[i])[0]) + vcc.getH(vcc.getElementsByAttribute("class", "title", aItems[i])[0]);
		else
			aItems[i].style.height = "auto";
		//ugly fix for Opera
		if (vcc.opera) {
			vcc.sleepThread();			
		}
		if (!bItemIsActive) {
			if (i >= iFirstItemOnRowIndex && i <= iLastItemOnRowIndex) {
				if (vcc.getH(aItems[i]) > iMaxHeight)
					iMaxHeight = vcc.getH(aItems[i]);
			}
		}
	}
	if (!bItemIsActive) {
		if (oDescription)
			oDescription.style.width = vcc.getW(oParentUl) + "px";
		var iDescriptionHeight = vcc.getH(oDescription);
		for (var i = 0; i < aItems.length; i++) {
			if (i >= iFirstItemOnRowIndex && i <= iLastItemOnRowIndex) {
				aItems[i].style.height = (iMaxHeight + iDescriptionHeight) + "px";
			}
			if (aItems[i] != oItem) aItems[i].className = "";
		}
		//Position description layer
		if (oDescription) {
			vcc.moveTo(oDescription, 0, vcc.getY(oItem) + vcc.getH(oItem) - iDescriptionHeight);			
		}
	}
}

vcc.sleepThread = function() {
	var oXml = vcc.createXmlObj("/_layouts/VolvoCars.Web.Sites/empty.html", true, null, null);
	oXml = null;
}

vcc.getNodeIndex = function(oNode) {
	var oParent = oNode.parentNode;
	var aChildren = oParent.childNodes;
	var iIndex = 0;
	for (var i = 0; i < aChildren.length; i++) {
		if (oNode == aChildren[i]) {
			iIndex = i;
			break;
		}
	}
	return iIndex;
}

function OnTimeout(result) 
{
	status = "Timed out";
}




vcc.addEvent(window, "load", "vcc.initSpecification");
