var xmlData = null;
$(function() {
	$.ajax({
		url: "/support/xml/product_list.xml",
		dataType: "xml",
		timeout: 15000,
		cache: false,
		async: false,
		faildMsg: "データの読込ができませんでした",
		error: function() {
			$("#select1").html($("<p/>").html(this.faildMsg));
			$("#select2").html($("<p/>").html(this.faildMsg));
			$("#select3").html($("<p/>").html(this.faildMsg));
			$("#productInfo").html($("<p/>").html(this.faildMsg));
		},
		success: function(data) {
			xmlData = new convXml(data);
		}
	});
});

// コンストラクタ
var convXml = function(req) {
	this.req = req;
	this.cName = new Array();		// 商品分野
	this.sName = new Array();		// 商品シリーズ
	this.pName = new Array();		// 商品
	this.pInfo = new Array();		// 商品情報
	this.dispId = {
		select1 : "#select1",
		select2 : "#select2",
		select3 : "#select3",
		productinfo : "#productInfo",
		favlink : ["#favLink", "favBg"]
	};
	this.msg = {
		select2 : "先に<em>1.商品分野</em>を選択してください",
		select3 : "先に<em>2.商品シリーズ</em>を選択してください",
		info : "<em>STEP1</em>で商品を選択してください",
		nonSeries : "直接、<em>3.商品を選択</em>してください"
	};
	this.noData = "%%nodata%%";

	// XMLデータコンバート
	var self = this;
	$(self.req).find("productsCategory").each(function(i) {
		// 商品分野: 配列格納
		self.cName[i] = $(this).find("categoryName").text();
		
		// 商品シリーズ: 配列多次元化
		self.sName[self.cName[i]] = new Array();
		
		$(this).find("series").each(function(j) {
			// 商品シリーズ: 配列格納
			self.sName[self.cName[i]][j] = $(this).find("seriesName").text();
			if (self.sName[self.cName[i]][j] == "") self.sName[self.cName[i]][j] = self.noData;
			
			// 商品: 配列多次元化
			self.pName[self.sName[self.cName[i]][j]] = new Array();
			
			$(this).find("product").each(function(k) {
				// 商品: 配列格納
				self.pName[self.sName[self.cName[i]][j]][k] = [$(this).find("productName").text(), $(this).find("productName").attr("supportUrl")];
				
				// 商品情報: 配列多次元化
				self.pInfo[self.pName[self.sName[self.cName[i]][j]][k][0]] = new Array();
				
				$(this).find("relatedLink").each(function(l) {
					// 商品情報: 配列格納
					self.pInfo[self.pName[self.sName[self.cName[i]][j]][k][0]][l] = [$(this).text(), $(this).attr("url")];
				});
			});
		});
	});
	
	// 選択エリアリセット
	this.listReset(this.dispId.select1, this.dispId.select2, this.dispId.select3, this.dispId.productinfo, this.dispId.favlink[0]);
	
	// 商品分野を選択 生成
	this.categoryListCreate();
}

// メソッド
convXml.prototype = {
	
	// リスト生成 商品分野を選択
	categoryListCreate: function() {
		this.listReset(this.dispId.select2, this.dispId.select3, this.dispId.productinfo, this.dispId.favlink[0]);
		var self = this;
		var ulObj = null;
		var liObj = null;
		ulObj = $("<ul/>");
		for (var c = 0; c < this.cName.length; c++) {
			liObj = $("<li/>");
			liObj.html($("<a/>").attr("href", "javascript:xmlData.seriesListCreate('" + this.cName[c] + "');").html(this.cName[c]));
			liObj.children("a").attr("onclick" , "firstTracker._trackEvent('Support - Drill-Down','Step1','" + this.cName[c] + "');");
			liObj.click(function() { self.selectItemActive(this); });
			ulObj.append(liObj);
		}
		$(this.dispId.select1).html(ulObj);
	},
	
	// リスト生成 商品シリーズを選択
	seriesListCreate: function(key) {
		this.listReset(this.dispId.select2, this.dispId.select3, this.dispId.productinfo, this.dispId.favlink[0]);
		var self = this;
		var ulObj = null;
		var liObj = null;
		ulObj = $("<ul/>");
		for (var s = 0; s < this.sName[key].length; s++) {
			if (this.sName[key][s] != this.noData) {
				liObj = $("<li/>");
				liObj.html($("<a/>").attr("href", "javascript:xmlData.productListCreate('" + this.sName[key][s] + "');").html(this.sName[key][s]));
				liObj.children("a").attr("onclick" , "firstTracker._trackEvent('Support - Drill-Down','Step2','" + this.sName[key][s] + "');");
				liObj.click(function() { self.selectItemActive(this); });
				ulObj.append(liObj);
			}
			else {
				ulObj = $("<p/>").html(this.msg.nonSeries);
				this.productListCreate(this.sName[key][s]);
				break;
			}
		}
		$(this.dispId.select2).html(ulObj);
	},
	
	// リスト生成 商品を選択
	productListCreate: function(key) {
		this.listReset(this.dispId.select3, this.dispId.productinfo, this.dispId.favlink[0]);
		var self = this;
		var ulObj = null;
		var liObj = null;
		ulObj = $("<ul/>");
		for (var p = 0; p < this.pName[key].length; p++) {
			liObj = $("<li/>");
			liObj.append($("<a/>").attr("href", "javascript:xmlData.supportInfoCreate('" + this.pName[key][p][0] + "', '" + this.pName[key][p][1] + "');").html(this.pName[key][p][0]));
			liObj.children("a").attr("onclick" , "firstTracker._trackEvent('Support - Drill-Down','Step3', '" + this.pName[key][p][0] + "');");
			liObj.click(function() { self.selectItemActive(this); });
			ulObj.append(liObj);
		}
		$(this.dispId.select3).html(ulObj);
	},
	
	// サポート情報生成
	supportInfoCreate: function(key, uri) {
		this.listReset(this.dispId.productinfo, this.dispId.favlink[0]);
		var infoAncObj = null;
		// サポート情報リンク
		span1 = $("<span/>").html(key + "<br />のサポート情報へ");
		span2 = $("<span/>").html(span1);
		span3 = $("<span/>").html(span2);
		span4 = $("<span/>").html(span3);
		infoAncObj = $("<a/>").attr("href", uri).addClass("btnText").html(span4);
		var resultUri = infoAncObj[0];
		infoAncObj.attr("onclick" , "firstTracker._trackEvent('Support - Drill-Down','Click', '" + resultUri + "');");
		$(this.dispId.productinfo).html(infoAncObj);
		
		// よく見られているページ
		if (this.pInfo[key] != "") {
			var ulObj = null;
			var liObj = null;
			var favObj = null;
			var dtObj = null;
			var ddObj = null;
			ulObj = $("<ul/>");
			for (var i = 0; i < this.pInfo[key].length; i++) {
				liObj = $("<li/>");
				liObj.append($("<a/>").attr("href", this.pInfo[key][i][1]).html(this.pInfo[key][i][0]));
				var childResultUri = liObj.children("a").attr("href");
				liObj.children("a").attr("onclick" , "firstTracker._trackEvent('Support - Drill-Down','Click', '" + childResultUri + "');");
				ulObj.append(liObj);
			}
			dtObj = $("<dt/>").append('<img src="/support/index_res/images/txt_fav_page.gif" alt="よく見られているページ" width="131" height="12">');
			ddObj = $("<dd/>").html(ulObj);
			favObj = $("<dl/>").append(dtObj).append(ddObj);
			$(this.dispId.favlink[0]).addClass(this.dispId.favlink[1]);
			$(this.dispId.favlink[0]).html(favObj);
		}
		else {
			this.listReset(this.dispId.favlink[0]);
		}
	},
	
	// リスト表示リセット
	listReset: function() {
		var rstListId = this.listReset.arguments;
		for (var r = 0; r < rstListId.length; r++) {
			switch(rstListId[r]) {
				// 商品シリーズを選択
				case this.dispId.select2 :
					$(this.dispId.select2).html($("<p/>").html(this.msg.select2));
					break;
				// 商品を選択
				case this.dispId.select3 :
					$(this.dispId.select3).html($("<p/>").html(this.msg.select3));
					break;
				// サポート情報リンク
				case this.dispId.productinfo :
					$(this.dispId.productinfo).html($("<p/>").html(this.msg.info));
					break;
				// よく見られているページ
				case this.dispId.favlink[0] :
					$(this.dispId.favlink[0]).removeClass(this.dispId.favlink[1]).html("");
					break;
				default :
					$(rstListId[r]).html("");
					break;
			}
		}
	},
	
	// 選択項目アクティブ
	selectItemActive: function(obj) {
		var actAncObj = $(obj.firstChild);
		var ulObj = $(obj.parentNode);
		ulObj.find("A").each(function() { $(this).removeClass("act"); })
		actAncObj.addClass("act");
		actAncObj.blur();
	}
}
