 /*
 * sidenavi.js (mitsubishi sidenavi generate js)
 *  @require snavidata.js (sidenavi json data)
 *   Copyright Mitsubishi Corporation. All rights reserved.
 */

DIA.snavi = {
	country: '',
	init: function(category){
	this.country = location.pathname.replace(/^\/preview/, '');
	this.country = this.country.replace(/(\/[^\/]+\/[^\/]+).*/, '$1');
	var url = this.country+'/common/xml/snavi_'+category+'.xml';
		
		$.ajax({
			type: 'GET',
			datatype: 'xml',
			cache: false,
			timeout: 3000,
			url: url, 
			success: DIA.snavi.success,
			error: DIA.snavi.error
		});
	},
	
	/*
	 * ajax callback function
	 */
	success: function(xml){
		var path = location.pathname;
		path = path.replace(/^\/preview/, '');
		path = path.replace(/\/index.html$/, '/');
		var sidecategory = '';
		
		var navdata = $('<div>').addClass('nav');
		var btm = $('<div>').addClass('btm');
		btm.append($('<div>').addClass('inner'));
		var sideul = $('<ul style="display:none">').attr('id', 'side_nav');
		$('#side div.nav').append(btm);
		$('#side div.inner').html('<ul id="side_nav" class="json"></ul>');
		sideul = $('#side div.inner ul');
		
		var beforetype = 'B';
		$(xml).find('page').each(function(){
			var type = $(this).attr('type');
			//var name = type+$(this).attr('name');
			var name = $(this).attr('name');
			var href = '';
			if($(this).attr('href')){
				if($(this).attr('href').match(/^http/)){
					href = $(this).attr('href');
				}else if($(this).attr('chpath') == 'no'){
					href = $(this).attr('href');
				}else{
					href = DIA.snavi.country+$(this).attr('href');
				}
			}
			var target = ($(this).attr('target')) ? ' target="'+$(this).attr('target')+'" ': '';
			if(type == 'A'){
				sidecategory = href;
			}
			
			if(type.match('B')){
				if(type == 'B-1'){
					sideul.append($('<li>').html('<a'+target+' href="'+href+'">'+name+'</a>'));
				}else if(type == 'B-2'){
					sideul.append($('<li>').addClass('bind').html('<span class="ttl">'+name+'</span>'));
				}else if(type == 'B-3'){
					sideul.append($('<li>').addClass('bind3').html('<span>'+name+'</span>'));
				}else if(type == 'B-4'){
					sideul.append($('<li>').addClass('close').html('<a'+target+' href="'+href+'">'+name+'</a>'));
				}
			}else{
				if(type == 'C'){
					if(beforetype == 'A'){
						sideul.append($('<li>').html('<a'+target+' href="'+href+'">'+name+'</a>'));
					}else if(beforetype.match('B')){
						sideul.find('li:last').append($('<ul>').html('<li><a'+target+' href="'+href+'">'+name+'</a></li>'));
					}else if(beforetype == 'C'){
						sideul.find('li:last').parent().append($('<li>').html('<a'+target+' href="'+href+'">'+name+'</a>'));
					}else if(beforetype == 'D-2-2'){
						sideul.find('li:last').parent().parent().parent().append($('<li>').html('<a'+target+' href="'+href+'">'+name+'</a>'));
					}else if(beforetype.match('D')){
						sideul.find('li:last')
								.parent() //D ul
								.parent() //C li
								.parent() //C ul
								.append($('<li>').html('<a'+target+' href="'+href+'">'+name+'</a>'));
					}
				}else if(type == 'D-1'){
					
					if(beforetype == 'C'){
						sideul.find('li:last').append($('<ul>').html('<li><a'+target+' href="'+href+'">'+name+'</a></li>'));
					}else if(beforetype.match('B')){
						sideul.find('li:last').append($('<ul class="lvd1">').html('<li><a'+target+' href="'+href+'">'+name+'</a></li>'));
					}else{
						sideul.find('li:last').parent().append($('<li>').html('<a'+target+' href="'+href+'">'+name+'</a>'));
					}
				}else if(type == 'D-2-1'){
					if(beforetype == 'B'){
						sideul.find('li:last')
									.append($('<ul>').addClass('lvd2').html('<li class="bind"><span class="ttl">'+name+'</span></li>'));
					}else if(beforetype == 'C'){
						sideul.find('li:last').append($('<ul>').addClass('lvd2').html('<li class="bind"><span class="ttl">'+name+'</span></li>'));
					}else{
						sideul.find('li:last').parent().append($('<li>').html('<span>'+name+'</span>'));
					}
				}else if(type == 'D-2-2'){
					if(beforetype == 'D-2-1'){
						sideul.find('li:last').append($('<ul>').html('<li><a'+target+' href="'+href+'">'+name+'</a></li>'));
					}else if(beforetype == 'D-2-3'){
						sideul.find('li:last').append($('<ul>').html('<li><a'+target+' href="'+href+'">'+name+'</a></li>'));
					}else{
						sideul.find('ul.lvd2:last li ul').append($('<li>').html('<a'+target+' href="'+href+'">'+name+'</a>'));
					}
				}else if(type == 'D-2-3'){
					if(beforetype == 'D-2-3'){
						sideul.find('ul.lvd2:last').append($('<li>').html('<a'+target+' href="'+href+'">'+name+'</a>'));
					}else if(beforetype == 'D-2-2'){
						sideul.find('ul.lvd2:last').append($('<li>').html('<a'+target+' href="'+href+'">'+name+'</a>'));
					}else if(beforetype.match('B') || beforetype.match('C')){
						sideul.find('li:last').append($('<ul>').addClass('lvd2').html('<li><a'+target+' href="'+href+'">'+name+'</a></li>'));
					}
				}
			}
			beforetype = type;
		});
		
		
		//open
		var current = '';
		
		if(path == sidecategory){
			$('#side h2.category').hide();
		}
		
		// for IE6/7 href include (http://<server>/)
		if($.browser.msie) path = location.protocol+'//'+location.hostname+path; 
		//alert(path);
		$('#side_nav a').each(function(){
			path = path.replace(/\/info\/archive/, '/info');
			path = path.replace(/\/ir\/tse\/archive/, '/ir/tse');
			path = path.replace(/\/pr\/archive/, '/pr');
			if($(this).attr('href') == path){
				current = $(this).parent();
			}
		});
		
		var noindex = true;
		//deep path(not sidenavi xml)
		if(current == ''){
			var regexp = new RegExp("[0-9a-zA-Z_-]+\.[a-zA-Z]+$");
			if(path.match(regexp)) noindex = false; 
			path = path.replace(regexp, '');
						
			$('#side_nav a').each(function(){
				if($(this).attr('href') == path){
					current = $(this).parent();
				}
			});
			if(current == ''){
				path = path.replace(/sr2008\//, 'sr2008.html');
				path = path.replace(/[^\/]+\/$/, '');
				$('#side_nav a').each(function(){
					if($(this).attr('href') == path){
						current = $(this).parent();
					}
				});
			}
		}
		
		//current process
		if(current != ''){
			//display current
			current.addClass('cu')
						.parent().show()
						.parent().addClass('open');
			if (noindex) {
				var ctitle = current.children('a').html();
				current.children('a').remove()
						.end()
						.prepend($('<span>' + ctitle + '</span>'));
			}
			
			if(current.find('>ul').html() != null){
				current.addClass('open')
				current.find('>ul').show(); //child ul open
			}
		
			var j = 0;
			var parentOpen = function(i){
				var elem = i.parent();
				elem.parent().addClass('open');
				elem.show();
				j++;
				if(elem.attr('id') == 'side_nav' || j > 7){
					return 0;
				}else{
					parentOpen(elem);
				}
			}
			
			parentOpen(current);

			//when D-2-2 B -> border
			if(current.parent().parent().parent().hasClass('lvd2')){
				if(current.parent().parent().parent().parent().hasClass('open')){
					current.parent().parent().parent().parent().addClass('nd22');
					$('li.bind ul li:first').css('border-top','none')
				}
			}else if(current.parent().hasClass('lvd2')){
				if(current.parent().parent().hasClass('open')){
					current.parent().parent().addClass('nd22');
					$('li.bind ul li:first').css('border-top','none')
				}				
			}
		}
		$('ul#side_nav > li.bind ul.lvd2:last').css('border','none');

		
		
		//last item (add class last)
		if(sideul.find('li:last').parent().css('display') == 'none'){
			$('ul#side_nav > li:last').addClass('last');
		}else{
			sideul.find('li:last').addClass('last');
		}
		$('ul#side_nav > li:first').addClass('first');
		if($('#side_nav li.first').attr('class') == 'cu open first'){
			$('#side_nav li.first').addClass('cof')
		}
		
		//last border
		var last = sideul.find('li.last');
		if(last.parent().hasClass('lvd2')){
			last.parent().removeClass('lvd2').addClass('lvd2_last');
		}
		var lastparent = last.parent().parent();
		lastparent.css('borderBottom','none');
		if(lastparent.hasClass('cu')){
			lastparent.removeClass('cu').addClass('cu_last');
		}else if(lastparent.hasClass('close')){
			lastparent.removeClass('close').addClass('close_last');
		}
		
		//display
		$('#side div.inner > ul').fadeIn();
	},
	/*
	 * ajax error
	 */
	error: function(){
		
	}
};

