/*
 * xmlLoading.js - Display On Parsing Multiple XML Files
 */

// 基準パス
var www_pass   = 'http://www.ntv.co.jp/announcer/new/';
var www1_pass  = 'http://www1.ntv.co.jp/announcer/';
var www_slash  = www_pass.match(/\//g).length;
var www1_slash = www1_pass.match(/\//g).length;

// 各種ディレクトリ、ファイル名
var xml_dir   = 'xml/'
var xml_file  = 'announcer.xml'
var img_dir   = 'images/'

// 出力先div格納用変数
var header_div = 'head';
var footer_div = 'foot';

// ディレクトリ指定用変数
var position = '';

/*** Script Start  ***/
// OnLoad Function (Main)
/**
 * 「アナウンスルーム」ヘッダー＋フッター表示用関数
 * pass：呼び出し元(www or www1)
 */
setHeaderAndFooter = function(pass) {
	var base_pass;
	var dir_len;

	// 呼び出し元を判別して、基準パスを決定する
	if(pass == 'www'){
		base_pass = www_pass;
		dir_len   = www_slash;
	}else if(pass == 'www1'){
		base_pass = www1_pass;
		dir_len   = www1_slash;
	}else{
		base_pass = www_pass;
		dir_len   = www_slash;
	}

	// XML URL Path
	var filepath = location.href;
	var dir = filepath.match(/\//g);

	for(i=0;i<dir.length-dir_len;i++){
		position += '../';
	}
	var url = position + xml_dir + xml_file;
	//var url = xml_dir + xml_file;

	// Parse Each XMLs
	var http = new JKL.ParseXML(url);
	var func = "";

	func = function(data){
		var i;
		var j;
		var k;
		var set_div;

		for(i=0;i<data.contents.itemList.length;i++){
			var str = '';
			var data_node = data.contents.itemList[i];

			// <base>タグ内のデータ格納用リスト
			var data_list  = new Array();
			var value_list = new Array();
			for(j=0;j<data_node.base.attribute.length;j++){
				data_list[j]  = data_node.base.attribute[j].name;
				value_list[j] = data_node.base.attribute[j].value;
			}

			// ヘッダー設定
			if(data_node.id=='header'){
				set_div = header_div;

				// 独立ヘッダー設定(日テレ、アナウンサー、アナザワールド)
				for(k=0;k<data_node.top.length;k++){
					if(data_node.top[k].id == 'ntv'){
						str += '<p class="ntv">';
						str += setHeaderImg(data_node.top[k], data_list, value_list);
						str += '</p>';
					}else if(data_node.top[k].id == 'announcer'){
						str += '<h1>' + setHeaderImg(data_node.top[k], data_list, value_list) + '</h1>';
					}else if(data_node.top[k].id == 'another'){
						str += '<p id="another">';
						str += setHeaderImg(data_node.top[k], data_list, value_list);
						str += '</p>';
					}
				}
			// フッター設定
			}else if(data_node.id=='footer'){
				set_div = footer_div;
			}
			// HTML設定
			str += setHTML(data_node, data_list, value_list, data_node.id, pass);

			// HTML書き出し(<div id=set_div>)
			var element = document.getElementById(set_div);
			if (element) {
				document.getElementById(set_div).innerHTML = str;
			}
		}
	}
	http.async(func);
	http.parse();
}

/**
 * 空判定
 */
function isEmpty(obj){ return (obj == null || obj == undefined || obj == '')? true: false; }

/**
 * 独立ヘッダー用HTML設定関数
 * data_node ：対象データ
 * data_list ：属性名格納リスト
 * value_list：属性値格納リスト
 */
function setHeaderImg(data_node, data_list, value_list){
	var str = '';

	// リンク先URLの有無
	if(!isEmpty(data_node.url)){
		var url_name = data_node.url;
		// 絶対パス指定か相対パス指定かをチェック
		if(url_name.indexOf("http://") == -1 && url_name.indexOf("https://") == -1){
			str += '<a href="' + www_pass + data_node.url + '"';
			if(!isEmpty(data_node.target)){
				str += ' target="' + data_node.target + '"';
			}
			str += '>';
		}else{
			str += '<a href="' + data_node.url + '"';
			if(!isEmpty(data_node.target)){
				str += ' target="' + data_node.target + '"';
			}
			str += '>';
		}
		str += setImageHTML(data_node, data_list, value_list);
		str += '</a>';
	}else{
		str += setImageHTML(data_node, data_list, value_list);
	}
	return str;
}

/**
 * 画像部HTML設定用関数
 * data_node ：対象データ
 * data_list ：属性名格納リスト
 * value_list：属性値格納リスト
 */
function setImageHTML(data_node, data_list, value_list){
	var i;
	var str = '';

	var img_name = data_node.images;
	// 絶対パス指定か相対パス指定かをチェック
	if(img_name.indexOf("http://") == -1 && img_name.indexOf("https://") == -1){
		str += '<img src="' + position + img_dir + data_node.images + '" ';
	}else{
		str += '<img src="' + data_node.images + '" ';
	}

	// 各種属性のチェック
	// alt属性
	if(!isEmpty(data_node.alt)){
		str += 'alt="' + data_node.alt + '" ';
	}
	// 幅(width)
	if(!isEmpty(data_node.width)){
		str += 'width="' + data_node.width + '" ';
	}else{
		str += 'width="' + value_list[0] + '" ';
	}
	// 高さ(height)
	if(!isEmpty(data_node.height)){
		str += 'height="' + data_node.height + '" ';
	}else{
		str += 'height="' + value_list[1] + '" ';
	}
	// その他設定されている属性がある場合
	for(i=2;i<data_list.length;i++){
		str += data_list[i] + '="' + value_list[i] + '"';
	}
	str += ' />';
	return str;
}

/**
 * HTML設定用関数
 * data_node ：対象データ
 * data_list ：属性名格納リスト
 * value_list：属性値格納リスト
 */
function setHTML(data_node, data_list, value_list, id, pass){
	var i;
	var str = '';

	// <item>が2個以上の場合のみ動作
	for(i=0;i<data_node.item.length;i++){
		if(i==0){
			str += '<ul>';
		}

		// class属性指定の有無
		if(data_node.item[i].name=='none'){
			str += '<li>';
		}else{
			str += '<li class="' + data_node.item[i].name + '">';
		}

		// リンク先URLの有無
		if(!isEmpty(data_node.item[i].url)){

			var url_name = data_node.item[i].url;
			// 絶対パス指定か相対パス指定かをチェック
			if(url_name.indexOf("http://") == -1 && url_name.indexOf("https://") == -1){
				if(pass == 'www'){
					if(id == 'header'){
						str += '<a href="' + position + data_node.item[i].url + '"';
					}else if(id == 'footer'){
						str += '<a href="' + www1_pass + data_node.item[i].url + '"';
					}
				}else if(pass == 'www1'){
					if(id == 'header'){
						str += '<a href="' + www_pass + data_node.item[i].url + '"';
					}else if(id == 'footer'){
						str += '<a href="' + position + data_node.item[i].url + '"';
					}
				}else{
					if(id == 'header'){
						str += '<a href="' + position + data_node.item[i].url + '"';
					}else if(id == 'footer'){
						str += '<a href="' + www1_pass + data_node.item[i].url + '"';
					}
				}
				if(!isEmpty(data_node.item[i].target)){
					str += ' target="' + data_node.item[i].target + '"';
				}
				str += '>';
			}else{
				str += '<a href="' + data_node.item[i].url + '"';
				if(!isEmpty(data_node.item[i].target)){
					str += ' target="' + data_node.item[i].target + '"';
				}
				str += '>';
			}
			str += setImageHTML(data_node.item[i], data_list, value_list);
			str += '</a>';
		}else{
			str += setImageHTML(data_node.item[i], data_list, value_list);
		}
		str += '</li>';
		if(i==data_node.item.length-1){
			str += '</ul>';
		}
	}
	return str;
}

