

if (NUANCE == undefined) {
    var NUANCE = {};
}

new function() {

    NUANCE.menu = {
	def: {
	    info:	{ id:"info", 
				img:"images/info_2.gif" ,
				url:"info.html"  },
	    price:	{ id:"price", 
				img:"images/pri_2.gif" ,
				url:"price.html" },
	    recommend:
			{ id:"rec", 
				img:"images/rco_2.gif",
				url:"recommend.html" },
	    style:	{ id:"sty", 
				img:"images/sty_2.gif",
javascript:"var w1 = window.open('style3.cgi','window2','width=818,height=700,esizable=yes,scrollbars=yes,toolbar=no,location=no,status=no,directories=no');w1.focus();"
			},
	    staff:	{ id:"sta", 
				img:"images/sta_2.gif" ,
				url:"staff.html"},
	    logo:	{ id:"logo", 
				url:"index.html" },
	    pmark:	{ id:"pmark",  
				imgsrc:"images/tenpo_privacy_2.gif",
				action: 'inner',
				ajax:"policy.html" ,
				target: 'target3'
				},
	    pmark2:	{ id:"pmark2",  
				remove: true,
				color: "#ed145b",
				action: 'inner',
				ajax:"policy.html" ,
				target: 'target3'
				},
	    aboutus:	{ id:"aboutus", 
				imgsrc:"images/tenpo_about_2.gif",
				action: 'inner',
				ajax:"about.html" ,
				target: 'target4'
				},
	    aboutus2:	{ id:"aboutus2", 
				remove: true,
				color:"#ed145b",
				action: 'inner',
				ajax:"about.html" ,
				target: 'target4'
				},
	    tenpo1:	{ id:"tenpo1",  
				img:"images/tenpo_omotesando_2.gif",
				action: 'inner',
				ajax:"omotesando.html" ,
				target: 'target1'
				},
	    tenpo2:	{ id:"tenpo2",  
				img:"images/tenpo_ebisu_2.gif",
				action: 'inner',
				ajax:"ebisu.html" ,
				target: 'target2'
			},
	    tenpo3:	{ id:"tenpo3",  
				remove: true,
				imgsrc:"images/tenpo_1_2.gif",
				action: 'inner',
				ajax:"omotesando.html" ,
				target: 'target1'
				},
	    tenpo4:	{ id:"tenpo4",  
				remove: true,
				imgsrc:"images/tenpo_2_2.gif",
				action: 'inner',
				ajax:"ebisu.html" ,
				target: 'target2'
			},
	    campaign:	{ id:"campaign",  
				remove: true,
				action: 'top',
				ajax:"campaign.html" ,
				target: 'target'
			},
	    party:	{ id:"party",  
				remove: true,
				action: 'top',
				ajax:"party.html" ,
				target: 'target'
			},
	    an2:	{ id:"an2", 
				remove: true,
				action: 'inner',
				ajax:"about.html" ,
				target: 'target4'
				}
	},
	menu: [],
	acctive_menu: undefined,
	init: function()
	{
	    for(var name in this.def) {
		var m1 = this.def[ name ];
		var div = document.getElementById(m1.id);
		if (!div) {
		    if (m1.hissu)
			alert("Not found " + name);
		    continue;
		}
	    	if (!m1.remove)
		    THREAD.utl.clear(div);
		m1.div = div;
		if (m1.img)
		    m1.orgImg = THREAD.utl.getStyle(div,'backgroundImage');
		if (m1.imgsrc)
		    m1.imgsrcOrg = div.src;
		if (m1.remove) {
		    var p = div.parentNode;
		    var pp = div.parentNode.parentNode;
		    p.removeChild(div);
		    pp.insertBefore(div,p);
		    pp.removeChild(p);
		}
		if (m1.color)
		    m1.colorOrg = THREAD.utl.getStyle(div,'color');
		THREAD.event.addEventListenerBind(div,'mouseover',m1,this.over);
		THREAD.event.addEventListenerBind(div,'mouseout',m1,this.out);
		THREAD.event.addEventListenerBind(div,'click',m1,this.click);
		this.menu.push(m1);
	    }
	},
	over: function(evt) 	
	{
	    var m1 = this;
	    if (m1.img)
	        m1.div.style.backgroundImage = "url(" + m1.img + ")";
	    else if (m1.imgsrc) 
	        m1.div.src = m1.imgsrc;
	    else if (m1.color) 
	        m1.div.style.color = m1.color;
	 
	},
	out: function(evt) 	
	{
	    var m1 = this;
	    if (m1.img) 
	        m1.div.style.backgroundImage = m1.orgImg;
	    else if (m1.imgsrc) 
	        m1.div.src = m1.imgsrcOrg;
	    else if (m1.color) 
	        m1.div.style.color = m1.colorOrg;
	},
	inner: undefined,
	click: function(evt) 	
	{
	    /* this は、menu1 */
	    var m1 = this;
	    if (m1.url) {
	        location = m1.url;
		return;
	    }
	    if (m1.javascript) {
		eval(m1.javascript);
		return;
	    }
	    var menu = NUANCE.menu;
	    var div;
	    if ((m1.action == 'inner') || (m1.action == 'top')) {
		if (menu.acctive_menu == m1) {
		     if (m1.action == 'top')
		         menu.stop();
		     else
		         menu.goAway.apply(m1,[]);
		    return;
		}
		if (!menu.inner) {
		    div = menu.inner = document.getElementById('inner');
		    if (!div) {
			alert('No div inner');
			return;
		    }
		}
		NUANCE.template.get(m1.ajax,m1.target,m1,menu.setInner);
		return;
	    }
	},
	goLeft: function(div)
	{
	    div.x -= 100;
	    if (div.x < 0) 
		div.x = 0;
	    div.style.left = div.x + 'px';
	    if (div.x == 0)
		return;
	    function xx(div)
	    {
		return function() {
	            NUANCE.menu.goLeft(div);
		}
	    }
	    setTimeout(xx(div),1);
	},
	goAway: function(evt)
	{
	    if (evt) {
        	var tar = THREAD.event.target(evt);
       		if (tar.nodeName == 'A')
		    return;
		if (tar.parentNode.nodeName == 'A')
		    return;
                THREAD.event.stopPropagation(evt);
                THREAD.event.preventDefault(evt);
	    }
	    var menu = NUANCE.menu;
	    var m1;
	    if (m1 = menu.acctive_menu) {
	        menu.acctive_menu = undefined;
		var div;
		if (div = m1.m_div) {
		    m1.m_div = undefined;
		    menu.goRight.apply(div);
		}
	    }
	},
	close1: function(evt)
	{
	    if (evt) {
        	var tar = THREAD.event.target(evt);
       		if (tar.nodeName == 'A')
		    return;
                THREAD.event.stopPropagation(evt);
                THREAD.event.preventDefault(evt);
	    }
	    var menu = NUANCE.menu;
	    var m1;
	    if (m1 = menu.acctive_menu) {
	        menu.acctive_menu = undefined;
		var div;
		if (div = m1.m_div) {
		    m1.m_div = undefined;
		    if (div.parentNode)
			div.parentNode.removeChild(div);
		}
	   }
	   var div = menu.inner;
	   while(div.hasChildNodes())
              div.removeChild(div.lastChild);
	   menu.inner.style.zIndex = 100;
	   menu.inner.style.display = 'none';
	},
	goRight: function()
	{
	    var div = this;
	    if (div.x == undefined)
		div.x = 0;
	    div.x += 100;
	    div.style.left = div.x + 'px';
	    if (div.x > 600) {
	        var menu = NUANCE.menu;
	        var div = menu.inner;
	        while(div.hasChildNodes())
                  div.removeChild(div.lastChild);
	        menu.inner.style.zIndex = 100;
	        menu.inner.style.display = 'none';
		return;
	    }
	    function xx(div)
	    {
		return function() {
	            NUANCE.menu.goRight.apply(div,[]);
		}
	    }
	    setTimeout(xx(div),10);
	},
	stop: function()
	{
	    var menu = NUANCE.menu;
 	    var m1;
	    if (m1 = menu.acctive_menu) {
	        menu.acctive_menu = undefined;
		if (m1.action == 'top') {
		    var d1;
		    if ((d1 = m1.m_div) && d1.parentNode)
		    	d1.parentNode.removeChild(d1);
		    m1.m_div = undefined;
		}
	    }
	    var div = menu.inner;
	    while(div.hasChildNodes())
                  div.removeChild(div.lastChild);
	    div.style.display = 'none';
	},
	setTop: function( tar )
	{
try {
	    var m1 = this;
	    var menu = NUANCE.menu;
	    menu.stop();

	    var div = menu.inner;
	    menu.acctive_menu =  m1;

	    var div = menu.inner;

	    var ndiv = tar.cloneNode(true);


	    ndiv.style.position = 'absolute';
	    ndiv.x = 300;
	    ndiv.style.left = ndiv.x + 'px';
	    ndiv.style.top = 100 + 'px';

	    var divs = THREAD.utl.findByClassName(ndiv,'close1');
	    if (divs) {
	        var d1;
	        for(var i = 0; d1 = divs[i];i++) {
		    THREAD.event.addEventListenerBind(d1,'click',m1,NUANCE.menu.close1);
		}
	    }
	    m1.m_div = ndiv;
	    THREAD.event.addEventListenerBind(ndiv,'click',m1,NUANCE.menu.close1);
	    document.body.appendChild( ndiv );
	    return;
} catch(e) {
    alert("setInner" + e);
}
	},
	setInner: function( tar )
	{
try {
	    var m1 = this;
	    var menu = NUANCE.menu;

	    if (m1.action == 'top')
		return menu.setTop.apply(this,[tar]);

	    menu.stop();

	    menu.acctive_menu =  m1;
	    var div = menu.inner;

	    var ndiv = tar.cloneNode(true);
	    THREAD.event.addEventListenerBind(ndiv,'click',m1,NUANCE.menu.goAway);
	    ndiv.style.position = 'absolute';
	    ndiv.x = 600;
	    ndiv.style.left = ndiv.x + 'px';
	    ndiv.style.top = '0px';

	    var divs = THREAD.utl.findByClassName(ndiv,'close1');
	    if (divs) {
	        var d1;
	        for(var i = 0; d1 = divs[i];i++) {
		    THREAD.event.addEventListenerBind(d1,'click',m1,NUANCE.menu.goAway);
		}
	    }
	    m1.m_div = ndiv;
	    div.appendChild( ndiv );
	    div.style.zIndex = 1000;
	    div.style.display = 'block';
	    if (m1.action == 'inner')
	        NUANCE.menu.goLeft(ndiv);
	    return;
} catch(e) {
    alert("setInner" + e);
}
	}
    }
    NUANCE.template = {
	cache: {},
	set: function(url,div)
        {
	    NUANCE.template.cache[ url ] = div;
	},
	lookup: function(url) 
	{
	    return NUANCE.template.cache[ url ];
	},
	reply_error: function()
	{
	    alert("error:ajax:");
	},
	get: function(url,target,tar,func)
        {
	    /*
		url:
		target: url 中のターゲット
		tar:  func に渡す this
		func: 
	    */
	    var ret = this.lookup(url);
	    if (ret) {
	 	func.apply(tar,[ ret ]);
		return;
		}

		function xxx(url,target,tar,func)
		{
		    return function(obj)
		    {
                        var dx = document.createElement('div');
                        dx.innerHTML = obj.responseText;
                        var div = THREAD.utl.findId(dx,target);
                        if (!div) {
			    alert('No target');
			    return;
			}
                        div.parentNode.removeChild(div);
		        NUANCE.template.set(url,div);
			func.apply(tar,[NUANCE.template.lookup(url)]);
		    }
		}
	    var param = '';
	    new Ajax.Request(url, 
		{
                        method: "post",
                        parameters: param,
                        asynchronous : true,
                        onSuccess: xxx(url,target,tar,func),
                        onFailure: NUANCE.template.reply_error,
                        onException: NUANCE.template.reply_error
                });
	}
    }
    NUANCE.initFunc = [
		{ func: NUANCE.menu.init, tar:NUANCE.menu }
	];
    NUANCE.addInit = function(tar,func,arg)
    {
	var f1 = { func:func ,tar: tar, arg: arg }
	NUANCE.initFunc.push(f1);
    } 
    NUANCE.init = function()
    {
	var f1;
	for(var i = 0;  f1 = this.initFunc[i];i++) {
	    if (f1.tar)
		f1.func.apply(f1.tar,[f1.arg])
	    else
		f1.func(f1.arg);
	}
    }
    NUANCE.json = {
	reply_error: function()
	{
	    alert("error:ajax:json");
	},
	get: function(url,tar,func)
        {
		function xxx(url,tar,func)
		{
		    return function(obj)
		    {
try {
		 	var ret = eval('(' + obj.responseText +')');
			func.apply(tar,[ret]);
} catch(e)
{
	alert(e);
}
		    }
		}
	    var param = '';
	    new Ajax.Request(url, 
		{
                        method: "post",
                        parameters: param,
                        asynchronous : true,
                        onSuccess: xxx(url,tar,func),
                        onFailure: NUANCE.json.reply_error,
                        onException: NUANCE.json.reply_error
                });
	}
    }
    NUANCE.utl = {
	a1_tid: undefined,
	alpha: function(div)
	{
	    div.alpha += 1;
	    if (div.alpha > 10)
	        div.alpha = 10;
	    THREAD.utl.tomei(div,div.alpha);
	    if (div.alpha == 10) {
		NUANCE.utl.a1_tid = undefined;
		return;
	    }
	    function xx(div) {
		return function()
		{
		    NUANCE.utl.alpha(div);
		}
	    }
	    if (THREAD.browser.IE)
		NUANCE.utl.a1_tid = setTimeout(xx(div),40);
	    else
		NUANCE.utl.a1_tid = setTimeout(xx(div),10);
	},
	b_tid: undefined,
	beta: function(div)
	{
	    div.alpha -= 1;
	    if (div.alpha <= 0) {
	        div.alpha = 0;
		div.style.visibility = 'hidden';
		NUANCE.utl.b_tid = undefined;
		return;
	    }
	    THREAD.utl.tomei(div,div.alpha);
	    function xx(div) {
		return function()
		{
		    NUANCE.utl.beta(div);
		}
	    }
	    if (THREAD.browser.IE)
		NUANCE.utl.b_tid = setTimeout(xx(div),10);
	    else
		NUANCE.utl.b_tid = setTimeout(xx(div),1);
	},
	a2_tid: undefined,
	alpha2: function(div)
	{
	    div.alpha += 2;
	    if (div.alpha > 10)
	        div.alpha = 10;
	    THREAD.utl.tomei(div,div.alpha);
	    if (div.alpha == 10) {
		NUANCE.utl.a2_tid = undefined;
		return;
	    }
	    function xx(div) {
		return function()
		{
		    NUANCE.utl.alpha2(div);
		}
	    }
	    if (THREAD.browser.IE)
		NUANCE.utl.a2_tid = setTimeout(xx(div),10);
	    else
		NUANCE.utl.a2_tid = setTimeout(xx(div),1);
	}
    }
}
window.onload = function() 
{
    NUANCE.init();
}

