/*
	- shinhyosik(shs7717@congnamul.co.kr)
*/
var useragent = navigator.userAgent.toLowerCase();
var ie = (navigator&&navigator.appName=="Microsoft Internet Explorer") ? true : false;
var opera = (useragent.indexOf("opera") > -1) ? true : false;
var tab_imgs = new Array();	//tab images
var pre_imgs = new Array();	//preload images
var pre_idx = 0;			//preload idx;

var ButtonManager = new Object();

ButtonManager.addEvent = function(obj, type, func) {
	try {
		if(obj.attachEvent) {
			obj.attachEvent(type, func);
		} else {
			obj.addEventListener(type.replace("on",""), func, true);
		}
	} catch(e) {alert("error addEvent")}
}

function doClick(evt) {
	var el = ie ? event.srcElement : evt.target;
	var cont = true;
	if(el.userPreClickEvent) {
		cont  = el.userPreClickEvent();
	}
	if(cont) {
		if(el.clk_flag==false) {
			el.clk_flag = true;
			el.src = el.clk_src;
		} else {
			el.clk_flag = false;
			el.src = el.org_src;
		}
		if(el.userClickEvent) el.userClickEvent();
	}
}

function doOver(evt) {
	var el = ie ? event.srcElement : evt.target;
	if((el.clk_flag==null || el.clk_flag==false) && (el.tab_flag==null || el.tab_flag==false)) {
		el.src = el.ovl_src;
	}
	if(el.userOverEvent) el.userOverEvent();
}

function doOut(evt) {
	var el = ie ? event.srcElement : evt.target;
	if((el.clk_flag==null || el.clk_flag==false) && (el.tab_flag==null || el.tab_flag==false)) {
		el.src = el.org_src;
	}
	if(el.userOutEvent) el.userOutEvent();
}

function doTab(evt) {
	var el = ie ? event.srcElement : evt.target;
	doTabDelegate(el, true);
}

function onTab(imgname) {
	if(imgname && imgname!=null) {
		doTabDelegate(document.images[imgname], true);
	}
}

function onTabNoAction(imgname) {
	if(imgname && imgname!=null) {
		doTabDelegate(document.images[imgname], false);
	}
}

function doTabDelegate(el, isAction) {
	var group_name = el.getAttribute("TABGROUP");
	for(var i=0; i<tab_imgs.length; i++) {
		if(tab_imgs[i].getAttribute("TABGROUP")==group_name && tab_imgs[i].tab_flag == true) {
			tab_imgs[i].tab_flag = false;
			tab_imgs[i].src = tab_imgs[i].org_src;
		}
	}
	el.src = el.tab_src;
	el.tab_flag = true;
	if(isAction) {
		if(el.userClickEvent) el.userClickEvent();
	}
}

function onToggle(imgname) {
	if(imgname && imgname!=null) {
		doToggleDelegate(document.images[imgname], true);
	}
}

function onToggleNoAction(imgname) {
	if(imgname && imgname!=null) {
		doToggleDelegate(document.images[imgname], false);
	}
}

function doToggleDelegate(el, isAction) {
	if(el.clk_flag==false) {
		el.clk_flag = true;
		el.src = el.clk_src;
	} else {
		el.clk_flag = false;
		el.src = el.org_src;
	}
	if(isAction) {
		if(el.userClickEvent) el.userClickEvent();
	}
}

function doDown(evt) {
	var el = ie ? event.srcElement : evt.target;
	if((el.clk_flag==null || el.clk_flag==false) && (el.tab_flag==null || el.tab_flag==false)) {
		el.src = el.dwn_src;
	}
	if(el.userDownEvent) el.userDownEvent();
}

function doUp(evt) {
	var el = ie ? event.srcElement : evt.target;
	if((el.clk_flag==null || el.clk_flag==false) && (el.tab_flag==null || el.tab_flag==false)) {
		el.src = el.org_src;
	}
}

function doReset(imgname) {
	document.images[imgname].src = document.images[imgname].org_src;
	document.images[imgname].clk_flag = false;
}

function preload(imgsrc) {
	pre_imgs[pre_idx] = new Image()
	pre_imgs[pre_idx].src = imgsrc;
	pre_idx++;
}

function initButton() {
	var tab_idx = 0;
	for(var i=0; i<document.images.length; i++) {
	
		if (document.images[i].getAttribute("TOGGLE")&&document.images[i].getAttribute("TAB")) {
			alert("ButtonManager : [toggle] and [tab] it will not be able to use together.")
		}
		if (document.images[i].getAttribute("TOGGLE")) {
			document.images[i].org_src = document.images[i].src;
			document.images[i].clk_src = document.images[i].getAttribute("TOGGLE");
			document.images[i].clk_flag = false;
			// add user event
			if(document.images[i].getAttribute("ONCLICK")) {
				if(ie) {
					document.images[i].userClickEvent = document.images[i].getAttribute("ONCLICK");
				} else {
					document.images[i].userClickEvent = new Function(document.images[i].getAttribute("ONCLICK"));
				}
			}
			// add user preclick event
			if(document.images[i].getAttribute("ONPRECLICK")) {
			      document.images[i].userPreClickEvent = new Function("return "+document.images[i].getAttribute("ONPRECLICK"));
			}
			document.images[i].onclick = doClick;
			// image preload
			preload(document.images[i].clk_src);
		}


		if (document.images[i].getAttribute("DOWN")) {
			document.images[i].org_src = document.images[i].src;
			document.images[i].dwn_src = document.images[i].getAttribute("DOWN");
			document.images[i].dwn_flag = false;
			// add user event
			if(document.images[i].getAttribute("ONMOUSEDOWN")) {
				if(ie) {
					document.images[i].userDownEvent = document.images[i].getAttribute("ONMOUSEDOWN");
				} else {
					document.images[i].userDownEvent = new Function(document.images[i].getAttribute("ONMOUSEDOWN"));
				}
			}
			document.images[i].onmousedown = doDown;
			document.images[i].onmouseup = doUp;
			// image preload
			preload(document.images[i].dwn_src);
		}

		
		if (document.images[i].getAttribute("ROLLOVER")) {
			document.images[i].org_src = document.images[i].src;
			document.images[i].ovl_src = document.images[i].getAttribute("ROLLOVER");
			// add user event
			if(document.images[i].getAttribute("ONMOUSEOVER")) {
				if(ie) {
					document.images[i].userOverEvent = document.images[i].getAttribute("ONMOUSEOVER");
				} else {
					document.images[i].userOverEvent = new Function(document.images[i].getAttribute("ONMOUSEOVER"));
				}
			}
			if(document.images[i].getAttribute("ONMOUSEOUT")) {
				document.images[i].userOutEvent = document.images[i].getAttribute("ONMOUSEOUT");
			}
			document.images[i].onmouseover = doOver;
			document.images[i].onmouseout = doOut;
			// image preload
			preload(document.images[i].ovl_src);
		}


		if (document.images[i].getAttribute("TAB")) {
			document.images[i].org_src = document.images[i].src;
			document.images[i].tab_src = document.images[i].getAttribute("TAB");
			document.images[i].tab_flag = false;
			// add user event
			if(document.images[i].getAttribute("ONCLICK")) {
				if(ie) {
					document.images[i].userClickEvent = document.images[i].getAttribute("ONCLICK");
				} else {
					document.images[i].userClickEvent = new Function(document.images[i].getAttribute("ONCLICK"));
				}
			}
			document.images[i].onclick = doTab;
			tab_imgs[tab_idx++] = document.images[i];
			
			// default
			if(opera) {
				if(document.images[i].getAttribute("DEFAULT")=="true") {
					document.images[i].tab_flag = true;
					document.images[i].src = document.images[i].getAttribute("TAB");
				}
			} else {
				if(document.images[i].getAttribute("DEFAULT")!=null) {
					document.images[i].tab_flag = true;
					document.images[i].src = document.images[i].getAttribute("TAB");
				}
			}
			// image preload
			preload(document.images[i].tab_src);
		}
		
	}
}

ButtonManager.addEvent(window, "onload", initButton);

