/*****************************************************
* ysmenu
* 3/04/2001
*
* a nice little script to create exclusive, slide-out
* menus for ns4, ns6, mozilla, opera, ie4, ie5 on 
* mac and win32. I've got no linux or unix to test on but 
* it should(?) work... 
*
* Revised:
* - 08/29/2002 : added .hideAll()
*
* --youngpup--
*****************************************************/
ysmenu.Registry = []
ysmenu.aniLen = 300
ysmenu.hideDelay = 300
ysmenu.minCPUResolution = 10
// constructor
function ysmenu(id, dir, left, top, width, height)
{
this.ie = document.all ? 1 : 0
this.ns4 = document.layers ? 1 : 0
this.dom = document.getElementById ? 1 : 0
if (this.ie || this.ns4 || this.dom) {
this.id = id
this.dir = dir
this.orientation = dir == "left" || dir == "right" ? "h" : "v"
this.dirType = dir == "right" || dir == "down" ? "-" : "+"
this.dim = this.orientation == "h" ? width : height
this.hideTimer = false
this.aniTimer = false
this.open = false
this.over = false
this.startTime = 0
this.gRef = "ysmenu_"+id
eval(this.gRef+"=this")
ysmenu.Registry[id] = this
var d = document
d.write('<style type="text/css">')
d.write('#' + this.id + 'Container { visibility:hidden; ')
//d.write('left:' + left + 'px; ')
d.write('top:' + top + 'px; ')
d.write('overflow:hidden; }')
d.write('#' + this.id + 'Container, #' + this.id + 'Content { position:absolute; ')
d.write('width:' + width + 'px; ')
d.write('height:' + height + 'px; ')
d.write('z-index:1; ')
d.write('clip:rect(0 ' + width + ' ' + height + ' 0); ')
d.write('}')
d.write('</style>')
this.load()
}
}
ysmenu.prototype.load = function() {
var d = document
var lyrId1 = this.id + "Container"
var lyrId2 = this.id + "Content"
var obj1 = this.dom ? d.getElementById(lyrId1) : this.ie ? d.all[lyrId1] : d.layers[lyrId1]
if (obj1) var obj2 = this.ns4 ? obj1.layers[lyrId2] : this.ie ? d.all[lyrId2] : d.getElementById(lyrId2)
var temp
if (!obj1 || !obj2) window.setTimeout(this.gRef + ".load()", 100)
else {
this.container = obj1
this.menu = obj2
this.style = this.ns4 ? this.menu : this.menu.style
this.homePos = eval("0" + this.dirType + this.dim)
this.outPos = 0
this.accelConst = (this.outPos - this.homePos) / ysmenu.aniLen / ysmenu.aniLen 

// set event handlers.
if (this.ns4) this.menu.captureEvents(Event.MOUSEOVER | Event.MOUSEOUT);
this.menu.onmouseover = new Function("ysmenu.showMenu('" + this.id + "')")
this.menu.onmouseout = new Function("ysmenu.hideMenu('" + this.id + "')")

//set initial state
this.endSlide()
}
}
ysmenu.showMenu = function(id)
{
var reg = ysmenu.Registry
var obj = ysmenu.Registry[id]
if (obj.container) {
obj.over = true
for (menu in reg) if (id != menu) ysmenu.hide(menu)
if (obj.hideTimer) { reg[id].hideTimer = window.clearTimeout(reg[id].hideTimer) }
if (!obj.open && !obj.aniTimer) reg[id].startSlide(true)
}
}
ysmenu.hideMenu = function(id)
{
var obj = ysmenu.Registry[id]
if (obj.container) {
if (obj.hideTimer) window.clearTimeout(obj.hideTimer)
obj.hideTimer = window.setTimeout("ysmenu.hide('" + id + "')", ysmenu.hideDelay);
}
}
ysmenu.hideAll = function()
{
var reg = ysmenu.Registry
for (menu in reg) {
ysmenu.hide(menu);
if (menu.hideTimer) window.clearTimeout(menu.hideTimer);
}
}

//¸Þ´º hidden ½ÃÅ³¶§ select ¸Þ´º ´Ù½Ã º¸ÀÌ°Ô ÇÏ´Â ÄÚµå »ðÀÔºÎºÐ
ysmenu.hide = function(id)
{
var obj = ysmenu.Registry[id]
obj.over = false
if (obj.hideTimer) window.clearTimeout(obj.hideTimer)
obj.hideTimer = 0
if (obj.open && !obj.aniTimer) obj.startSlide(false)
var BPselects = document.getElementsByTagName("select");
   for (BPfu=0;BPfu<BPselects.length;BPfu++) {
    BPselects[BPfu].style.visibility="visible";
}
}
ysmenu.prototype.startSlide = function(open) {
this[open ? "onactivate" : "ondeactivate"]()
this.open = open
if (open) this.setVisibility(true)
this.startTime = (new Date()).getTime() 
this.aniTimer = window.setInterval(this.gRef + ".slide()", ysmenu.minCPUResolution)
}
ysmenu.prototype.slide = function() {
var elapsed = (new Date()).getTime() - this.startTime
if (elapsed > ysmenu.aniLen) this.endSlide()
else {
var d = Math.round(Math.pow(ysmenu.aniLen-elapsed, 2) * this.accelConst)
if (this.open && this.dirType == "-") d = -d
else if (this.open && this.dirType == "+") d = -d
//else if (!this.open && this.dirType == "-") d = -this.dim + d
else d = this.dim + d
this.moveTo(d)
}
}
ysmenu.prototype.endSlide = function() {
this.aniTimer = window.clearTimeout(this.aniTimer)
this.moveTo(this.open ? this.outPos : this.homePos)
if (!this.open) this.setVisibility(false)
if ((this.open && !this.over) || (!this.open && this.over)) {
this.startSlide(this.over)
}
}
ysmenu.prototype.setVisibility = function(bShow) { 
var s = this.ns4 ? this.container : this.container.style
s.visibility = bShow ? "visible" : "hidden"
}
ysmenu.prototype.moveTo = function(p) { 
this.style[this.orientation == "h" ? "left" : "top"] = this.ns4 ? p : p + "px"
}
ysmenu.prototype.getPos = function(c) {
return parseInt(this.style[c])
}
ysmenu.prototype.onactivate = function() { }
ysmenu.prototype.ondeactivate = function() { }

//select ¸Þ´º °¨Ãß±â
var CAselects = document.getElementsByName("category");
var PRselects = document.getElementsByName("price");
var SCselects = document.getElementsByName("scategory");

function CaSelect() {
  for (CAfu=0;CAfu<CAselects.length;CAfu++) {
   CAselects[CAfu].style.visibility="hidden";
  }
}

function PrSelect() {
  for (PRfu=0;PRfu<PRselects.length;PRfu++) {
   PRselects[PRfu].style.visibility="hidden";
  }
}

function ScSelect() {
  for (SCfu=0;SCfu<SCselects.length;SCfu++) {
   SCselects[SCfu].style.visibility="hidden";
  }
}

	//id, dir, left, top, width, height
	var top = 110 ;
	var menus = [
		new ysmenu("menu1", "down", 0, top, 160, 200),
		new ysmenu("menu2", "down", 0, top, 215, 200),
		new ysmenu("menu3", "down", 0, top, 280, 200),
		new ysmenu("menu4", "down", 0, top, 333, 200),
		new ysmenu("menu5", "down", 0, top, 410, 200),
		new ysmenu("menu6", "down", 0, top, 471, 200),
		new ysmenu("menu7", "down", 0, top, 491, 200)
	]

	for (var i = 0; i < menus.length; i++) {
		menus[i].onactivate = new Function("document.getElementById('act" + i + "').className='active';");
		menus[i].ondeactivate = new Function("document.getElementById('act" + i + "').className='';");
	}
