		var g_urlBase = "http://www.bugs.co.kr";
		var g_urlWww = "http://www.bugs.co.kr";
		var g_urlSecure = "https://secure.bugs.co.kr";
		var g_urlMusic = "http://music.bugs.co.kr";
		var g_urlMember = "https://secure.bugs.co.kr/member";
		var g_urlFile = "http://file.bugsm.co.kr/nbugs";
		var g_urlSwf = "http://www.bugs.co.kr/swf";
		var g_urlJs = "http://www.bugs.co.kr/js";
		var g_urlMe = "http://www.bugs.co.kr/user";
		var g_urlThumbnail = "http://nboardr.bugs.co.kr/thumbnail";
		var g_urlOpenalbum = "http://music.bugs.co.kr/openalbum";
		var g_urlClipimg = "http://image.bugsm.co.kr";
		//var g_urlLikes = "http://www.bugs.co.kr/like";
		//var g_urlPlaylists = "http://www.bugs.co.kr/playlist";
		var g_urlAward = "http://award.bugs.co.kr";
		var g_urlLikes = "http://www.bugs.co.kr/like";
		var g_urlPlaylists = "http://www.bugs.co.kr/playlist"
		var g_urlListen = "http://www.bugs.co.kr/listen";
		var g_urlMyinfo = "http://www.bugs.co.kr/myinfo";
		var g_urlSecureMyinfo = "https://secure.bugs.co.kr/myinfo";
		var g_urlSearch = "http://search.bugs.co.kr";
		var g_urlChart = "http://music.bugs.co.kr/chart";
		var g_urlPay = "http://www.bugs.co.kr/pay";
		var g_urlBilling = "https://pay.bugs.co.kr";
		var g_urlPartner = "http://www.bugs.co.kr/Partner";
		var g_urlSecurePay = "http://secure.bugs.co.kr/pay";
		var g_urlNadmin = "http://nadmin.bugs.co.kr";
		var g_urlOtu = "http://otu.bugs.co.kr";
		var g_urlBoard = "http://board.bugs.co.kr/notice";
				
		var g_storageServerRead = "http://nboardr.bugs.co.kr";
		var g_storageServerWrite = "http://nboardw.bugs.co.kr";

		var g_urlAjax = "http://www.bugs.co.kr";

		var g_isLogged = false;
		var g_msrl = false; 

var ___bugsGnb = function($){

Function.prototype.bind = function(){
    // http://developer.mozilla.org/en/docs/Core_JavaScript_1.5_Reference:Functions:arguments
    var _$A = function(a){return Array.prototype.slice.call(a);}
    if(arguments.length < 2 && (typeof arguments[0] == "undefined")) return this;
    var __method = this, args = _$A(arguments), object = args.shift();
    return function() {
      return __method.apply(object, args.concat(_$A(arguments)));
    }
};

jQuery.fn.extend({
	getClasses : function() {
		var classes = new Array();

		jQuery(this).each(function() {
			classes = classes.concat(jQuery(this).attr("class").split(" "));
		});
		
		return classes;
	},
	
	eachClass : function(callback) {
		jQuery(this).each(function() {
			var _class = jQuery(this).attr("class");
			if(typeof _class != "undefined")
				jQuery.each(_class.split(" "), callback);
		});
		
		return this;
	},
	
	setTextField : function(e, maxLength) {
		jQuery(this).focus(function() {
			jQuery(this).removeClass("default").addClass("focus").unbind("focus");
		}).keyup(function() {
			if(!e || !maxLength) return;

			var bytes = bugs.utils.byteSize($(this).val());
			
			var html = "(" + bytes + " / " + maxLength + ")";
			if(bytes > maxLength) html = "<em>글자수가 초과되었습니다. 다시 입력해 주세요.</em>" + html;
			e.html(html);
		});
		
		return this;
	},
	
	openWindow : function(callback) {
		jQuery(this).click(function() {
			var href = jQuery(this).attr("href");
			window.open(href);
			
			if(typeof(callback) == "function") callback();
			
			return false; 		
		});
		return this;
	},

	nextInput : function(nextElem, maxLength) {
		jQuery(this).keyup(function() {
			if(!nextElem || !maxLength) return;
			if ($(this).val().length >= maxLength) {
				jQuery(this).removeClass("focus").addClass("default");
				$(nextElem).focus();
			}
		});
		return this;
	}
});



bugs = {
	create : function() {
		return function() { this.initialize.apply(this, arguments); } 
	},
	overed : function(destination, source) {
		for (var property in source) {destination[property] = source[property];}
		return destination;
	},
	extend : function(ext, sup) {
		var ext_prototype = ext.prototype; var sup_prototype = sup.prototype;
		for (var property in sup_prototype) { if(!ext_prototype[property]) ext_prototype[property] = sup_prototype[property]; }
	},
	clone : function(obj) {
		var newObj = {};
		for (var property in obj) newObj[property] = obj[property];
		return newObj;
	},
	log : {
		LEVEL : 2,
		levels: {
			DEBUG:0,
			INFO:1,
			ERROR:2
		},
		setLogLevel : function(lv) {
			if(lv == "DEBUG") bugs.log.LEVEL = bugs.log.levels.DEBUG; 
			else if(lv == "INFO") bugs.log.LEVEL = bugs.log.levels.DEBUG;
			else if(lv == "ERROR") bugs.log.LEVEL = bugs.log.levels.DEBUG;
		},
		log : function(s) {
			try {
				if(typeof(console) != "undefined") console.log(s);
				//else alert(bugs.object.toString(s));
			} catch(e) {}
		},
		debug : function(s) {
			if(bugs.log.LEVEL <= bugs.log.levels.DEBUG) bugs.log.log(s);;
		},
		info : function(s) {
			if(bugs.log.LEVEL <= bugs.log.levels.INFO) bugs.log.log(s);;
		},
		error : function(s) {
			if(bugs.log.LEVEL <= bugs.log.levels.ERROR) bugs.log.log(s);;
		}
	},
	date : {
		yyyyMMdd : function(d) {
			if(!d) d = new Date();
			return d.yyyyMMdd();
		}
	},
	math : {
		abs : function(x) {
			return Math.abs(x);
		},
		random : function(n) {
			if(typeof(n) == "undefined") return Math.random();
			else return bugs.math.floor(Math.random() * n, 0);
		},
		round : function(n, index) {
			return bugs.math._get(Math.round, n, index);
		},
		ceil : function(n, index) {
			return bugs.math._get(Math.ceil, n, index);
		},
		floor : function(n, index) {
			return bugs.math._get(Math.floor, n, index);
		},
		_get : function(type, n, index) {
			if(typeof(index) == "undefined" || index == null) {
				index = 0;
			}
			//if(index==0) return eval("Math."+type+"(n)");
			if(index==0) return type(n);
			else {
				var p = Math.pow(10, index);
//				return eval("Math."+type+"(n * p) / p");
				return type(n * p) / p;
			}
		}
	},
	cookie : {
		set : function(name, value) {
			var argc = arguments.length;
			var argv = arguments;
			var expires = ( argc > 2) ? argv[2]:null;
			var path = ( argc > 3) ? argv[3]:null;
			var domain = ( argc > 4) ? argv[4]:null;
			var secure = ( argc > 5) ? argv[5]:false;
			var encode = ( argc > 6) ? argv[6]:true;

			var expireDate = new Date();
			expireDate.setTime(expires);

			document.cookie = name + "=" + (encode ? escape(value) : value) +
				((expires == null) ? "" : ("; expires =" + expireDate.toGMTString())) +
				((path == null) ? "" : ("; path =" + path)) +
				((domain == null) ? "" : ("; domain =" + domain)) +
				((secure == true) ? "; secure" : "");
		},
		get : function(name) {
			var dcookie = document.cookie;
			var cname = name + "=";
			var clen = dcookie.length;
			var cbegin = 0;
			while (cbegin < clen) {
				var vbegin = cbegin + cname.length;
					if (dcookie.substring(cbegin, vbegin) == cname) {
						var vend = dcookie.indexOf (";", vbegin);
						if (vend == -1) vend = clen;
					return unescape(dcookie.substring(vbegin, vend));
				}
				cbegin = dcookie.indexOf(" ", cbegin) + 1;
				if (cbegin == 0) break;
			}
			return "";
		},
		del : function(name) {
			var expTime = new Date();
			expTime.setTime(expTime.getTime() - 1);
			
			var cookieVal = bugs.cookie.get(name);
			if(cookieVal != null) {
				bugs.cookie.set(name, cookieVal, expTime);
			}
		}
	},
	visible : function(e) {
		var _is_display = false;
		if(e) {
			return (e.get(0).style.display != "none");
		} else
			return false;
		/*
		if(e) e.each(function() {if(this.style.display != "none") _is_display = true; });
		return _is_display;
		*/
	},
	focusNblur : function(selector, focusClass, blurClass) {
		if(typeof focusClass == "undefined") focusClass = "focus";
		if(typeof blurClass == "undefined") blurClass = "default";
		$(selector).focus(function(e) {
			var ee = $(e.target);
			ee.removeClass(blurClass);
			ee.addClass(focusClass);
		}).blur(function(e) {
			var ee = $(e.target);
			ee.removeClass(focusClass);
			ee.addClass(blurClass);
		});
	},
	object : {
		toString : function(obj) {
			var str = "";
			if(typeof obj == "string") return obj;
			else {
				for (var property in obj) {
					str += property + ":" + "{" + bugs.object.toString(obj[property])+ "}";
				}
				return str;
			}
		},
		empty : function(obj) {
			if(typeof obj == "undefine" || obj == null) return true;
			if(typeof obj == "string") return bugs.valid.empty(obj);
			if(typeof obj == "object") {
				var _ret = true;
				for (var property in obj) {
					_ret = false; break;
				}
				return _ret;
			}
		}
	},
	utils : {
		stripTag : function(s) {
			s = s.replace(/&(lt|gt);/g, function (strMatch, p1){	return (p1 == "lt")? "<" : ">"; });
			return s.replace(/<\/?[^>]+(>|$)/g, "");
		},
		toTag : function(s) {
			s = s.replace(/&(lt|gt);/g, function (strMatch, p1){	return (p1 == "lt")? "<" : ">"; });
			return s;
		},
		cutstring : function(s, length, postfix) {
			if(!s) return "";
			if(!postfix) postfix = "";
			if(s.length <= length) return s;
//			if(bugs.utils.byteSize(s) <= length) return s;
			else return s.substring(0, length) + postfix;
		},
		cutstring1 : function(s, length) {
			return bugs.utils.cutstring(s, length, "...");
		},
		
		cutstring2 : function(s,length){
			if(s.length <= length){
				return s;
			}else{
				return bugs.utils.trim(s.substring(0, length))+"...";
			}
		},
		
		trim : function(str) {
			return str.replace(/(^\s*)|(\s*$)/g, "");
		},
		replaceAll : function(str, srchStr, toStr) {
			while( str.indexOf( srchStr ) != -1 )
				str = str.replace( srchStr, toStr );
			
			return str;
		},
		byteSize : function(str, twoByteWeight) {
			if(typeof twoByteWeight == "undefined") twoByteWeight = 2;
			if(!str ||  typeof str != 'string') return 0;
			var cnt = 0;
			for (var i = 0; i < str.length; i++) {
				if (str.charCodeAt(i) > 127)
					cnt += twoByteWeight;
				else
					cnt++;
			}
			
			return Math.ceil(cnt);
		},
		strlengthByByte : function(str, size, twoByteWeight) {
			if(typeof twoByteWeight == "undefined") twoByteWeight = 2;
			if(!str ||  typeof str != 'string') return 0;
			var cnt = 0, len = 0;
			
			for (var i = 0; i < str.length; i++) {
				if (str.charCodeAt(i) > 127)
					cnt += twoByteWeight;
				else
					cnt++;
				if(cnt > size) return len;
				len++;

			}
			return len;
		},
		strlen : function(str) {
			var len = 0;
			for ( var i = 0; i < str.length; i++) {
				if (str.charCodeAt(i) > 128)
					len += 2;
				else
					len++;
			}
			return len;
		},
		numToStr : function (num) {
	    	if (num.length < 4)	return num;
	    	
	    	while(num.indexOf(",") >= 0) {
	    		num = num.replace(",", "");
	    	}
	    	
	    	return num;
		},
		strToNum : function (str) {
	    	var num = "";
	    	var getString = ""+str;
	    	
	    	while(getString.length > 3) {
	    		num = ","+getString.substring(getString.length-3, getString.length)+num;
	    		getString = getString.substring(0, getString.length-3);
	    	}
	    	
	    	if (getString != "")	num = ""+getString+num;
	    	
	    	return num;
		},
		cutbytestring : function(s, size, postfix, twoByteWeight) {
			if(!s) return "";
			if(!postfix) postfix = "";
			if(bugs.utils.byteSize(s) <= size) return s;
			else return s.substring(0, bugs.utils.strlengthByByte(s, size, twoByteWeight)) + postfix;
		},
		cutbytestring1 : function(s, size, twoByteWeight) {
			return bugs.utils.cutbytestring(s, size, "...", twoByteWeight);
		},
		cut : function(str, size, postfix) {
			if(typeof(postfix) == 'undefined') postfix = '...';

			var bytes = bugs.utils.byteSize(str);
			if(bytes < size) return str;
			
			var cnt = 0, len = 0, t = -1;

			for(var i = 0; i < str.length; i++) {
				cnt += (str.charCodeAt(i) > 127) ? 2 : 1;
				
				if(t < 0 && (cnt + postfix.length > size)) t = len;
				
				if(cnt > size) break;
				len++;
			}
			
			if(cnt <= size) return str.substring(0, len);
			else return str.substring(0, t) + postfix;
		},
		cutline : function(str, size, line, postfix) {
			if(typeof(postfix) == 'undefined') postfix = '...';
			
			var cnt = 0, ln = 0, start = 0, end = 0;
			var result = '';
			
			for(var i = 0; i < str.length; i++) {
				cnt += (str.charCodeAt(i) > 127) ? 2 : 1;
				if(cnt > size) {
					var tmp = str.substring(start, end);
					ln++;
					
					if(ln < line) result += tmp + "\n";
					else {
						if(i <= str.length - 1) tmp = bugs.utils.cut(tmp + postfix, size, postfix);
						
						result += tmp;
						break;
					}
					
					start = end++;
					cnt = (str.charCodeAt(i) > 127) ? 2 : 1;
				}
				else end++;
			}
			
			if(ln < line && end > start) result += str.substring(start, end);
			
			return result;
		},
		countLine : function(str) {
			var line = 1;
			for(var i = 0; i < str.length; i++) {
				if(str.charCodeAt(i) == 10) line++;
			}
			
			return line;
		},
		addCommas : function(nStr) {
			nStr += '';
			x = nStr.split('.');
			x1 = x[0];
			x2 = x.length > 1 ? '.' + x[1] : '';
			var rgx = /(\d+)(\d{3})/;
			while (rgx.test(x1)) {
				x1 = x1.replace(rgx, '$1' + ',' + '$2');
			}
			return x1 + x2;
		},
		// img out over
		imgOver : function(obj) { 
			obj.src = obj.src.replace("Off.gif", "Over.gif");
		},
		imgOut : function(obj) { 
			obj.src = obj.src.replace("Over.gif", "Off.gif");
		},
		/*
		imgError : function(obj, defaultSize) {
			if(!obj) return;
			
			// defaultSize가 argument에 있다면 소스 이미지가 썸네일이 아닌 오리지날 이미지로 
			// 해당 이미지가 없으면 바로 default 이미지를 보여줌. (썸네일 서버 부하 줄임)
			if(defaultSize) {
				obj.onerror = null;
				obj.src = bugs.url.defaultThumbnail(obj.src, defaultSize);
				//obj.src = g_urlThumbnail + "/requestDefaultImage?url=" + encodeURIComponent(obj.src);
			}
			else {
				obj.onerror = function() {
					obj.onerror = null;
					obj.src = bugs.url.defaultThumbnail(obj.src);
				};
				obj.src = g_urlThumbnail + "/request?url=" + encodeURIComponent(obj.src);
			}
		},
		setImgError : function(selector) {
			return $(selector).one("error", function() {
				$(this).one("error", function() {
					$(this).attr("src", bugs.url.defaultThumbnail($(this).attr("src")));
				});
				
				$(this).attr("src", g_urlThumbnail + "/request?url=" + encodeURIComponent($(this).attr("src")));
			});
		},
		*/
		imgError : function(obj, defaultSize) {
			if(!obj) return;
			
			// defaultSize가 argument에 있다면 소스 이미지가 썸네일이 아닌 오리지날 이미지로 
			// 해당 이미지가 없으면 바로 default 이미지를 보여줌. (썸네일 서버 부하 줄임)
			if(defaultSize) {
				obj.onerror = null;
				obj.src = bugs.url.defaultThumbnail(obj.src, defaultSize);
				//obj.src = g_urlThumbnail + "/requestDefaultImage?url=" + encodeURIComponent(obj.src);
			}
			else {
				obj.onerror = function() {
					obj.onerror = null;
					obj.src = bugs.url.defaultThumbnail(obj.src);
				};
				obj.src = g_urlThumbnail + "/request?url=" + encodeURIComponent(obj.src);
			}
		},
		setImgError : function(selector) {
			return $(selector).one("error", function() {
				$(this).one("error", function() {
					$(this).attr("src", bugs.url.defaultThumbnail($(this).attr("src")));
				});
				
//				$(this).attr("src", g_urlThumbnail + "/request?url=" + encodeURIComponent($(this).attr("src")));
			});
		},
		
		bannerError : function(obj) {
			if(!obj) return;
			
			obj.onerror = null;
			obj.src = "http://file.bugsm.co.kr/bugs/images/common/noalbumD.gif";
		},
		setBannerError : function(selector) {
			return $(selector).one("error", function() {
				$(this).attr("src", "http://file.bugsm.co.kr/bugs/images/common/noalbumD.gif");
			});
		},
		moreView : function(anchor, obj, height) {
			if(typeof obj == "undefined") return;
			if(typeof obj == "string") obj = $(obj);
			if(typeof height == "undefined") height = 80;
			anchor = $(anchor);
			if(obj.css("overflow") == "hidden") {
				obj.css({"height":null, "overflow":"visible"});
				anchor.parent().addClass("close");
				anchor.html(anchor.html().replace("더보기", "닫기"));
			} else {
				bugs.log.log(obj.find("img"));
				obj.find("img").hide();
				
				obj.css({"height":height, "overflow":"hidden"});
				anchor.parent().removeClass("close");
				anchor.html(anchor.html().replace("닫기", "더보기"));
			}
			
		},
		toggleMoreView : function(anchor) {
			anchor = $(anchor);
			if(anchor.text() == "더보기") {
				anchor.parent().addClass("close");
				anchor.html(anchor.html().replace("더보기", "닫기"));
			} else {
				anchor.parent().removeClass("close");
				anchor.html(anchor.html().replace("닫기", "더보기"));
			}
		},
		parentOpenClose : function(obj, headSelector, listSelector) {
			var oo = $(headSelector);
			if(oo.hasClass("open")) {
				oo.removeClass("open").addClass("close");
				$(listSelector).hide();
			} else if(oo.hasClass("close")) {
				oo.removeClass("close").addClass("open");
				$(listSelector).show();
			}
			
		},
		focus : function(obj) {
			var oo = $(obj);
			if( typeof oo.get(0) != "undefined") oo.get(0).focus();
		},
		openWindow : function(obj) {
			window.open(obj.href);
			return false;
		},
		anchor : function(target, speed, callback) {
			if(arguments.length == 1) {
				speed = 1000;
				callback = function() {};
			} else if(arguments.length == 2) {
				if(typeof speed == "undefind") {
					speed = 1000;
					callback = function() {};
				} else if(typeof speed == "function") {
					callback = speed;
					speed = 1000;
				}
			}
			
			target = $(target);
			var targetOffset = target.offset().top;
			$('html,body').animate({scrollTop: targetOffset}, speed, callback);
		},
		urlParam : function(paramsName, url) {
			if(bugs.valid.empty(paramsName)) return null;
			if(typeof url == "undefined") url = document.location.href;
			
			var idx = url.indexOf("?");
			if(idx > 0) {
				var queryString = url.substring(idx + 1);
				if(!bugs.valid.empty(queryString)) {
					var params = queryString.split("&");
					if(typeof params != "undefined" && params.length > 0) {
						for(var i=0;i<params.length;i++) {
							var pStr = params[i].split("=");
							var pName = pStr[0];
							var pValue = pStr[1];
							if(paramsName == pName) return pValue;
						}
					}
				}
			} 
			return null;
		}
	},	
	valid : {
		empty : function(str) {
			if(typeof str == "string" && bugs.utils.trim(str).length > 0) 
				return false;
			return true;
		},
		email : function(str) {
			return (/\w+([-+.]\w+)*@\w+([-.]\w+)*\.[a-zA-Z]{2,4}$/).test(str);
		},
		kor : function(str) {
			str = bugs.utils.trim(str);
			return (/^[가-힝]+$/).test(str);
		},
		eng : function(str) {
			str = bugs.utils.trim(str);
			return (/^[a-zA-Z]+$/).test(str);
		},		
		numeng : function(str) {
			str = bugs.utils.trim(str);
			return (/^[0-9a-zA-Z]+$/).test(str);
		},
		notnumeng : function(str) {
			str = bugs.utils.trim(str);
			return (/[^0-9a-zA-Z]+$/).test(str);
		},
		numengkor : function(str) {
			str = bugs.utils.trim(str);
			return (/^[가-힝0-9a-zA-Z]+$/).test(str);
		},
		notkor : function(str) {
			str = bugs.utils.trim(str);
			return (/[가-힝]+/).test(str);
		},
		numdash : function(str) {
			str = bugs.utils.trim(str);
			return (/^[0-9]{1}[0-9\-]+$/).test(str);
		},
		url : function(str) {
			str = bugs.utils.trim(str);
			return (/^http:\/\/([\w\-]+\.)+/).test(str);
		},
		num : function(str) {
			str = bugs.utils.trim(str);
			return (/^[0-9]+$/).test(str);
		},
		special : function(str) {
			str = bugs.utils.trim(str);
			return (/^[\!,\@,\#,\$,\%,\^,\&,\*,\?,\_,\~]+$/).test(str);
		},
		numengspecial : function(str) {
			str = bugs.utils.trim(str);
			return (/^[0-9a-zA-Z\!,\@,\#,\$,\%,\^,\&,\*,\?,\_,\~]+$/).test(str);
		},
		phone : function(str) {
			str = bugs.utils.trim(str);
			return (/^[0-9]{1,3}-[0-9]{3,4}-[0-9]{4}$/).test(str);
		},
		dateYMD : function(str) {
			str = bugs.utils.trim(str);
			return (/^[0-9]{4}-[0-9]{2}-[0-9]{2}$/).test(str);
		},
		dateYMDHS : function(str) {
			str = bugs.utils.trim(str);
			return (/^[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}$/).test(str);
		},
		include2byte : function(str) {
			if(!str ||  typeof str != 'string') return false;
			for (var i = 0; i < str.length; i++) {
				if (str.charCodeAt(i) > 127)
					return true;
			}
			return false;
		},
		isSsnCheck : function(strSsn) {
			strSsn = bugs.utils.trim(strSsn);
			if (strSsn.length != 13) return false;
			var isForeigner = false;
			switch (strSsn.substr(6,1)) {
				case '5'	:
				case '6'	:
				case '7'	:
				case '8'	: isForeigner = true;	break;
				default		: isForeigner = false;	break;
			}

			if (isForeigner) {
				return bugs.valid.isFgnSsnCheck(strSsn);
			}
			else {
				var strCheckKey = '234567892345';
				var nCheckNo = 0, nCheckVal= 0, rVal;

				for (var i=0;i<strCheckKey.length;i++) {
					nCheckNo += strSsn.charAt(i) * strCheckKey.charAt(i);
				}
				nCheckVal = strSsn.charAt(i);

				rVal = 11 - (nCheckNo % 11)
				if (rVal > 9) rVal = (rVal % 10);

				return (nCheckVal == rVal) ? true : false;
			}
		},
		isFgnSsnCheck : function(strSsn) {
			strSsn = bugs.utils.trim(strSsn);
			if (strSsn.length != 13) return false;
			var strCheckKey = '234567892345';
			var nCheckNo = 0, nCheckVal= 0, rVal;
			var nList = new Array(13);

			for (var i=0;i<13;i++) {
				nList[i] = strSsn.charAt(i);
			}

			if(nList[11] < 6) return false;
			if((nList[7]*10 + nList[8])&1) return false;

			for (var i=0;i<strCheckKey.length;i++) {
				nCheckVal += nList[i] * strCheckKey.charAt(i);
			}

			if ((nCheckVal  = 11 - (nCheckVal%11)) >= 10) nCheckVal -= 10;
			if ((nCheckVal += 2) >= 10) nCheckVal -= 10;

			return (nCheckVal != nList[12]) ? false : true;
		}
	},
	mainurl : function() {
		var url = document.location.href;
		//return url;
		if(url.indexOf("www.bugs.co.kr") > 0) {
			return "http://www.bugs.co.kr";
		} else return _staticUrl;
	},
	url : {
		artistPage : function(artist_id) {
			if(typeof artist_id == "undefined") return;
			return g_urlMusic +  "/artist/"+artist_id;
		},
		albumPage : function(album_id) {
			if(typeof album_id == "undefined") return;
			return g_urlMusic +  "/album/"+album_id;
		},
		esAlbumPage : function(es_album_id){
			if(typeof es_album_id == "undefined") return;
			return g_urlMusic + "/musicpd/albumview/"+es_album_id;
		},
		trackPage : function(track_id) {
			if(typeof track_id == "undefined") return;
			return g_urlMusic +  "/track/"+track_id;
		},
		memberPage : function(userId) {
			if(typeof userId == "undefined") return;
			return g_urlMe +  "/"+userId;
		},
		albumThumbnail : function(album_id, size, ext) {
			if(typeof album_id == "undefined") return;
			if(typeof ext == "undefined") ext = ".jpg";
			return g_urlClipimg + "/album/images/" + size + "/" + Math.floor(album_id / 100) + "/" + album_id + ext;
		},
		mvThumbnail : function(mv_id, size) {
			if(typeof mv_id == "undefined") return;
			return g_urlClipimg + "/mv/images/" + size + "/" + Math.floor(mv_id / 100) + "/" + mv_id + ".jpg";
		},
		artistThumbnail : function(artist_id, size, ext) {
			if(typeof artist_id == "undefined") return;
			if(typeof ext == "undefined") ext = ".jpg";
			return g_urlClipimg + "/artist/images/" + size + "/" + Math.floor(artist_id / 100) + "/" + artist_id + ext;
		},
		defaultThumbnail : function(src, defaultSize) {
			var index = src.indexOf("?");
			src = decodeURIComponent(src.substring(index + 5));

			var tmp = src.split("/");
			var type = tmp[tmp.length - 7];
			var width, height;
			
			if(type == "member" || type == "playlist") {
				if(type == "member") type = "user";
				else type = "albumUser";
				width = height = defaultSize ? defaultSize : tmp[tmp.length - 5];
			}
			else {
				type = tmp[tmp.length - 5];
				if(type == "poll") type = "artist";
				else if(type == "essential") type = "album";
				
				width = defaultSize ? defaultSize : tmp[tmp.length - 3];
				height = width;
				if(type == "mv" && width == "100") height = "75";
			}

			return "http://file.bugsm.co.kr/nbugs/common/i_" + type + width + "x" + height + ".gif";
		}
	}
}

bugs.template = bugs.create();
bugs.template.prototype = {
	initialize : function(tmpl, json) {
		this.setTemplate(tmpl);
		this.setData(json);
	}, 
	setFile : function(src) {
		// TODO
	},
	setTemplate : function(tmpl) { if(tmpl) this._template = tmpl;},
	
	setData : function(data) {
		if(data && data != "") {
			this._data = bugs.overed(this._data||{}, data||{});
		} else {
			this._data = {};
		}
	},
	html : function() {
		var js = this._template.replace(/[\r\t\n]/g, " ")
			.replace(/'(?=[^%]*%>)/g, "\t")
			.split("'").join("\\'")
			.split("\t").join("'")
			.replace(/<%=(.+?)%>/g, "',$1,'")
			.split("<%").join("');")
			.split("%>").join("write.push('");
		var f = new Function('obj', "var write=[];with (obj){write.push('"+js+"');}return write.join('');");
		if (!this._data) return f;
		var r = f(this._data);
		return r;
	}
	
}

bugs.layermenu = {
	TEMP_MV : '<div id="mvLayerMenu" class="layerMenu layerMenuMV <% if(obj.mvAdultYn == "Y") {%>layerAdultMsg<% } %>">' + 
		'<% if(obj.mvAdultYn == "Y") {%><div class="adultMsg">청소년 유해 매체물입니다.</div><% } %>' +
		'<ul>' +
		'	<% if(obj.mediaYn == "Y") {%><li><a href="javascript:bugs.music.viewMV(<%=id%>,\'<%=obj.mvAdultYn%>\');">뮤비보기</a></li><% } %>' +
		'	<% if(obj.svcFullhdYn == "Y") {%><li><a href="javascript:bugs.music.dnFullMV(<%=id%>,\'<%=obj.mvAdultYn%>\');">FULL HD 다운</a></li><% } %>' +
		'	<% if(obj.svcHdYn == "Y") {%><li><a href="javascript:bugs.music.dnHdMV(<%=id%>,\'<%=obj.mvAdultYn%>\');">HD 다운</a></li><% } %>' +
		'	<% if(obj.svcSdYn == "Y") {%><li><a href="javascript:bugs.music.dnSdMV(<%=id%>,\'<%=obj.mvAdultYn%>\');">일반화질 다운</a></li><% } %>' +
		'</ul>' +
		'<div class="layerBg bgTR"></div>' +
		'<div class="layerBg bgTL"></div>' +
		'<div class="layerBg bgTC"></div>' +
		'</div>',
	TEMP_PHONE : '<div id="phoneLayerMenu" class="layerMenu layerMenuPhone">' +
		'<ul>' +
		'	<% if(obj.livebellYn == "Y"){ %><li><a href="javascript:void(0);" onclick="bugs.music.setLivebell(<%=id%>);">라이브벨</a></li><% } %>' +
		'	<% if(obj.ringYn == "Y"){ %><li><a href="javascript:void(0);" onclick="bugs.music.setColoring(<%=id%>);">컬러링</a></li><% } %>' +
		'</ul>' +
		'<div class="layerBg bgTR"></div>' +
		'<div class="layerBg bgTL"></div>' +
		'<div class="layerBg bgTC"></div>' +
		'</div>',
	TEMP_PHONE_SET : '<div id="phoneSetLayerMenu" class="layerMenu layerMenuPhoneSetting" style="right:17px;top:40px;">'+
				'<ul>'+
				'	<li><a href="javascript:void(0);">설정</a></li>'+
				'	<li><a href="javascript:void(0);">선물</a></li>'+
				'</ul>'+
				'<div class="layerBg bgTR"></div>'+
				'<div class="layerBg bgTL"></div>'+
				'<div class="layerBg bgTC"></div>'+
			'</div>',
	mv : function(obj, mv_id, mediaYn, svcFullhdYn, svcHdYn, svcSdYn, mediaNo, mvAdultYn) {
		if(typeof mediaNo == "undefined") mediaNo = 0;
		if(typeof mvAdultYn == "undefined") mvAdultYn = 'N';
		
		if($("#mvLayerMenu").length > 0) {
			$(document).unbind("click", bugs.layermenu.mvHideWhenDocumentClick);
			$("#mvLayerMenu").hide().remove();
			bugs.layermenu.mv(obj, mv_id, mediaYn, svcFullhdYn, svcHdYn, svcSdYn, mediaNo);
			return;
		}
			
		var _tmp = new bugs.template(bugs.layermenu.TEMP_MV, {
			id : mv_id, mediaYn : mediaYn, 
			svcFullhdYn : svcFullhdYn, svcHdYn : svcHdYn, svcSdYn : svcSdYn, mediaNo : mediaNo, mvAdultYn: mvAdultYn
		});
		var oobj = $(obj);
		var span = $(obj).parent();
		
		var layer = $(_tmp.html()).appendTo("body");;
		bugs.layermenu.layerEventHandler(oobj, layer, 3, 0);
		$(document).bind("click", {button : span, layer : layer}, bugs.layermenu.mvHideWhenDocumentClick);
	},
	mvHideWhenDocumentClick :  function(e) {
		if(e.data.button.index(e.target) < 0 && e.data.button.children().index(e.target) < 0
			&& e.data.layer.index(e.target) < 0 && e.data.layer.children().index(e.target) < 0) { 
			e.data.layer.hide().remove();
			$(document).unbind("click", bugs.layermenu.mvHideWhenDocumentClick);
		}
	},
	phone : function(obj, trackId, livebellYn, ringYn, _top, _left) {
		if(typeof _top == "undefined") _top = 3;
		if(typeof _left == "undefined") _left = 0;
		if($("#phoneLayerMenu").length > 0) {
			$(document).unbind("click", bugs.layermenu.phoneHideWhenDocumentClick);
			$("#phoneLayerMenu").hide().remove();
			bugs.layermenu.phone(obj, trackId, livebellYn, ringYn, _top, _left);
			return;
		}
			
		var _tmp = new bugs.template(bugs.layermenu.TEMP_PHONE, {id : trackId, "ringYn" : ringYn , "livebellYn" : livebellYn});
		var oobj = $(obj);
		var span = $(obj).parent();
		
		var layer = $(_tmp.html()).appendTo("body");;
		bugs.layermenu.layerEventHandler(oobj, layer, _top, _left);
		$(document).bind("click", {button : span, layer : layer}, bugs.layermenu.phoneHideWhenDocumentClick);
	},
	phoneHideWhenDocumentClick :  function(e) {
		if(e.data.button.index(e.target) < 0 && e.data.button.children().index(e.target) < 0
			&& e.data.layer.index(e.target) < 0 && e.data.layer.children().index(e.target) < 0) { 
			e.data.layer.hide().remove();
			
			if(typeof bugs.home != "undefined")	{
				if((typeof bugs.home.chartTop10!='undefined') && bugs.home.chartTop10.isPhoneShow) {
					bugs.home.chartTop10.isPhoneShow = false;
					$("#content .top10 ul.top10List li").eq(bugs.home.chartTop10.phoneListNo).trigger("mouseout");
				}
			}
			$(document).unbind("click", bugs.layermenu.phoneHideWhenDocumentClick);
		}
	}, 
	phoneSet : function(obj, trackId, type) {
		if($("#phoneSetLayerMenu").length > 0) {
			$(document).unbind("click", bugs.layermenu.phoneSetHideWhenDocumentClick);
			$("#phoneSetLayerMenu").hide().remove();
		}
			
		var _tmp = new bugs.template(bugs.layermenu.TEMP_PHONE_SET, {id : trackId});
		var oobj = $(obj);
		var span = $(obj).parent();
		/*
		<ul>'+
		'	<li><a href="javascript:void(0);">설정</a></li>'+
		'	<li><a href="javascript:void(0);">선물</a></li>'+
		'</ul>'+
		*/
		
		
		var layer = $(_tmp.html());
		layer.find("ul li a").each(function(idx){
			if(type=="livebell") {
				if(idx == 0) 
					$(this).click(function() {
						bugs.music.setLivebell(trackId);
					});
				else if(idx == 1)
					$(this).click(function() {
						bugs.music.setLivebellTo(trackId);
					});
			} else if(type=="coloring") {
				if(idx == 0) 
					$(this).click(function() {
						bugs.music.setColoring(trackId);
					});
				else if(idx == 1)
					$(this).click(function() {
						bugs.music.setColoringTo(trackId);
					});
			}
		});
		
		layer.appendTo("body");
		bugs.layermenu.layerEventHandler(oobj, layer, 3, 0);
		$(document).bind("click", {button : span, layer : layer}, bugs.layermenu.phoneHideWhenDocumentClick);
	},
	phoneSetHideWhenDocumentClick :  function(e) {
		if(e.data.button.index(e.target) < 0 && e.data.button.children().index(e.target) < 0
			&& e.data.layer.index(e.target) < 0 && e.data.layer.children().index(e.target) < 0) { 
			e.data.layer.hide().remove();
			
			$(document).unbind("click", bugs.layermenu.phoneSetHideWhenDocumentClick);
		}
	}, 
	layerEventHandler : function(caller, layer, _top, _left) {
		var span = caller.parent();
		layer.css({
			"top":caller.offset().top + span.height() + _top, 
			"left":caller.offset().left - (layer.width() / 2) + (span.width() / 2) + _left
		}).show();
		
		$(window).resize(function() {
			layer.css({
				"top":caller.offset().top + span.height() + _top, 
				"left":caller.offset().left - (layer.width() / 2) + (span.width() / 2) + _left
			});
		});

	},
	layerEventHandler2 : function(caller, layer, _top, _left) {
		//------------------ 브라우져별 예외 처리 -----------------//
		var yy = 0;
		var xx = 0;
		if ($.browser.name == "msie")
		{
			yy = -44;
			if ($.browser.versionNumber == "6")
				yy = -14;
		} else if ($.browser.name == "firefox"){
			yy = -10
		}
		if (caller.find("img").width() < 30) { // 뮤직라이프 작은 스타
			xx= xx - caller.find("img").width()-3;
			if ($.browser.name == "msie") yy = yy + 10;
		} else if (caller.find("img").height()== 57) { // TOP 아티스트
			if ($.browser.name == "msie") yy = yy - 20;
		} else if (caller.find("img").width() == 83){ // TOP 아티스트  TOP3
			if ($.browser.name == "msie") yy = yy + 20;
		} else if (caller.find("img").width() == 35 && caller.find("img").height() == 35){ // 타인의 뮤직라이프 사람좋아
			xx = xx - 17;
		}
		
		if (caller.attr("type") == "image") { // 구매보관함/뮤비 > 좋아
			xx = xx - 10;
			yy = yy + 20;
			if ($.browser.name == "msie") yy = yy + 25;
		} 
		//------------------ 브라우져별 예외 처리 -----------------//

		var e = caller.offset(); 
    	var x = e.left + _left + xx;
 		var y = e.top + caller.find("img").height() + _top  + yy + 10;	
	
		
		layer.css("left", x+"px");
		layer.css("top", y+"px");
		layer.show();
	},	
	tracksClose : function() {
	},
	tracksSuccess : function(html, id, type, obj, left, top) {
		html = html.replace(/^\s*/,'');
		if (html != "") {
			var _layer = $("<div id=\""+type+id+"\" class=\"layerPopup noTitle layerListenAll\" style='display:none;position:absolute;'></div>").appendTo($("body")).css("z-index", "1000");
			bugs.layermenu.trackLayerPosition(_layer, obj, left, top);
			_layer.html(html).show('blind');
			$(window).resize(function() {
				bugs.layermenu.trackLayerPosition(_layer, obj, left, top);
			});
		}
    },
    trackLayerPosition : function(layer, caller, left, top) {
    	var e = caller.offset();
		var x = e.left + left;
		var y = e.top+caller.height() + top;
		layer.css({top : y, left : x});
    },
    tracks : function (id, type, obj, msrl) {
    	if (false) {
    		$("#"+type+id).remove();
    	}
    	$(".layerPopup.layerListenAll").hide();
    	
    	if(typeof obj == "undefined") {
    		obj = $("#_"+type+id);
    	} else obj = $(obj);
    	
    	var url, left, top, data;
    	if (type == "PLAYLIST") {
    		url = g_urlAjax+"/user/ajax/playlist/other/track";
    		left = -32;
    		top = 0;
    		data = {"playlist_id" : id, "msrl" : msrl, "decorator" : "blank"};
    	} else if (type == "ALBUM") {
    		url = g_urlAjax+"/user/ajax/album/other/track/"+id;
    		left = -1;
    		top = 0;
    		data =  {"decorator" : "blank"};
    	} else if (type == "ESALBUM") {
    		url = g_urlAjax+"/openalbum/esential/ajax/track";
    		left = -1;
    		top = 0;
    		data =  {"id" : id, "decorator" : "blank"};
    	} else {
    		url = g_urlMe+"/ajax/album/other/track/"+id;
    		left = -30;
    		top = 0;
    		data = {};
    	}
    	
    	
    	if($("#"+type+id).html() == null) {
    		$.get(url, data, function(html) {
	    		bugs.layermenu.tracksSuccess(html, id, type, obj, left, top);
	    	});
    	} else {
    		var e = obj.offset();
			var x = e.left + left;
			var y = e.top+obj.height() + top;
    		$("#"+type+id).css({"top" : y, "left" : x}).show('blind');
    	}
    }, 
    esTracks : function(id, obj) {
    	bugs.layermenu.tracks(id, "ESALBUM", obj);
    },
    openalbumTracks : function(id, obj) {
    	bugs.layermenu.tracks(id, "PLAYLIST", obj);
    },
    showClickLayer : function(sel) {
		$(sel).toggle();
		$(sel).find('.content').css('width', $(sel).width() - 5);
		$(sel).find('.bgTR').css('height', $(sel).find('.content').outerHeight());
	}
};



bugs.form ={};
bugs.form.checkbox = bugs.create();
bugs.form.checkbox.prototype = {
	initialize : function(selector, name, value, option) {
		if(typeof selector != "string") this.checkbox = selector;
		else this.checkbox = $(selector);
		
		var _inp = this.checkbox.find("input");
		
		if(_inp.length > 0 && this.checkbox.find("input").get(0).disabled == true) {
			this._disabled = true;
			return;
		}
		
		this.name = name;
		if(arguments.length == 3 && typeof(value) != "string") {
			option = value;
		} else {
			if(typeof value == "string") this.value = value;
			this.value = value;
		}
		
		this.option = bugs.overed({
			checkedClass : "click",
			onchange : function() {},
			onclick : function() {},
			checked : function() {},
			unchecked : function() {}
		}, option || {});

		var _span = this.checkbox.find("span.checkbox:last");
		if(_span.length < 1) {
			this.checkbox.children().remove();
			_span = $("<span class=\"checkbox\"></span>").appendTo(this.checkbox);
		}
		this.clickObject = _span;
		
		var _inp = this.checkbox.find("span.checkbox:last input:checkbox:last");
		if(_inp.length < 1) {
			_inp = $('<input type="checkbox"/>').attr("name", this.name).attr("value", this.value).appendTo(_span);
		} else {
			if(bugs.valid.empty(_inp.attr("name"))) _inp.attr("name", this.name)
			/*
			if(!bugs.valid.empty(_inp.attr("value"))) {
				this.value = _inp.attr("value");
			}
			else*/ _inp.attr("value", this.value);
		}
		
		this.hiddenObject = _inp;
		if(this.hiddenObject.get(0).checked == true) {
			this.checked(); 
		}

		this.checkbox.unbind("click", this._clickFunc);
		this.checkbox.click($.proxy(this._clickFunc, this));
	},
	_clickFunc : function(event) {
		//event.formObject = _formObject;
		var _input = this.hiddenObject.get(0);
		this.option.onclick(event);
		if(this.isChecked()){
			this.unchecked();
		} else {
			this.checked();
		}
	},
	isDisabled : function() {
		if(this._disabled != "undefined" && this._disabled == true) return true;
		else return false;
	},
	isChecked : function() {
		return this.hiddenObject.get(0).checked;
	},
	checked : function() {
		this.checkbox.addClass(this.option.checkedClass);
		this.option.checked();
		this.hiddenObject.get(0).checked = true;
	},
	unchecked : function() {
		this.checkbox.removeClass(this.option.checkedClass);
		this.option.unchecked();
		this.hiddenObject.get(0).checked = false;
		
		
	},
	disabled : function() {
	},
	val : function(val) {
		if(typeof val != "string")
			return this.hiddenObject.attr("value");
		else
			this.hiddenObject.attr("value", val);
	},
	onchange : function(f) {
		var old = this.option.onchange; 
		this.option.onchange = function(o, n) { old(o, n); f(o, n); }.bind(this);
	},
	onclick : function(f) {
		var old = this.option.onclick;
		this.option.onclick = function(o, n) { old(o, n); f(o, n); }.bind(this);
	},
	hide : function(speed) {
		if(speed) this.checkbox.hide(speed);
		else this.checkbox.hide();
	},
	show : function(speed) {
		if(speed) this.checkbox.show(speed);
		else this.checkbox.show();
	}
}

bugs.logging = {
	clientYN : false,	//true => bugsplayer4
	url : g_urlAjax + "/logging/add",
	add : function(id, cols, nums, scriptYn) {
		if(typeof scriptYn == "undefined") scriptYn = false;
		if(this.clientYN) scriptYn = true;
		
		if(typeof id == "undefined" || id == null) return;	//jhjung WAS null exception 추가 12.01.05
		if(typeof cols == "undefined" || cols == null) cols = [];
		if(typeof nums == "undefined" || nums == null) nums = [];
		if(cols.length == 0 && nums.length == 0) return;
		if(this.clientYN)
			cols.push("","bugsplayer4");
		
		try {
			if(scriptYn){
				jQuery.ajax({ 
				url: g_urlWww + "/logging/add", 
				dataType : "script",
				data:{id : id, "cols[]" : cols, "nums[]" : nums},
				success: function(result) {} 
				}); 

			}else{
				var _cols = [];
				$(cols).each(function() {
					_cols.push(encodeURIComponent (this));
				});
				jQuery.post(bugs.logging.url, {id : id, "cols[]" : _cols, "nums[]" : nums}, function(result) {
					
				});
			}
		} catch(ex) {
			bugs.log.log(ex);
		}
		
	
	}
}
		

bugs.gnb = {
	moreMenu : function() {
		var layerMore = $('.layerMore');
		if(layerMore.get(0).style.display == "none") {
			layerMore.show();
			
			var _close = function(event) {
				if($('#tmMore, .layerMore, .layerMore *').index(event.target) < 0) {
					layerMore.hide();
					$(document).unbind("click", _close);
				}
			};
			$(document).bind("click", _close);
		} else {
			layerMore.hide();
		}
	},
	openMoreMenu : function() {
		$('.layerMore').show();
	},
	closeMoreMenu : function() {
		$('.layerMore').hide();
	},
	initSearch : function() {
		var _search = $("#gnbSearch");
		if(_search.length > 0) {
			_search.find("button").click(function() {
			});
		}
	},
	funcMemberBox : function(event) {
		if($(".layerMyInfo, .layerMyInfo *, .viewMyInfo").index(event.target) < 0) {
			bugs.gnb.closeMemberBox();
			$(document).unbind("click", bugs.gnb.funcMemberBox);
		}
	},
	openMemberBox : function() {
		$('.layerMyInfo').slideDown(300);
		$(document).click(bugs.gnb.funcMemberBox);
	},
	closeMemberBox : function() {
		$('.layerMyInfo').slideUp(300);
	},
	toggleMemberBox : function() {
		if(bugs.visible($('.layerMyInfo'))) {
			bugs.gnb.closeMemberBox();
		} else {
			bugs.gnb.openMemberBox();
		}
		//javascript:void($('.layerMyInfo').show())
	},
	_topSearchHeight : function(ol) {
		var _h = 0;
		$("li", ol).each(function() {
			_h += $(this).height();
		});
		return _h;
	},
	topSearchRolling : function() {
		
		var rankList = $("#rankList");
		var isMouseOver = false;
		var dd = $("dd", rankList);
		var ol = dd.find("ol");
		
		if(rankList.length == 0 || dd.length == 0 || ol.length == 0) return;
		
		var _timeoutId;
		var rollingHeight = 40;
		//ol.height(bugs.gnb._topSearchHeight(ol));
		var _rollingFunc = function() {
			var _t, _h;
			if(ol.css("top") == "auto") 
				_t = 0;
			else
				_t = bugs.math.abs(ol.position().top);
			
			if(ol.css("height") == "auto") 
				_h = 0;
			else
				_h = bugs.gnb._topSearchHeight(ol);
			
			if(_t >= _h) {
				ol.css("top", rollingHeight);
				ol.animate({top : "-="+rollingHeight}, 1000, _rollingFunc);
			} else {
				_timeoutId = setTimeout(function() {
						ol.animate({top : "-="+rollingHeight}, 1000, _rollingFunc);
					}, 3000);
			}
			
		};
		
		rankList.hover(
			function(event) {
				dd.find("ol:animated").stop();
				ol.css("top", 0);
				if(typeof _timeoutId != "undefined" && _timeoutId != null) {
					clearTimeout(_timeoutId);
					_timeoutId = null;
				}
				rankList.removeClass("rankList").addClass("layerRank");
				$('.rankup').css({'z-index':'10'});
			}, function(event) {
				rankList.removeClass("layerRank").addClass("rankList");
				$('.rankup').css({'z-index':'1'});
				_rollingFunc();
			}
		);
		_rollingFunc();
	},
	topComingSoonRolling : function() {
		
		var comingsoon = $("#comingsoon");
		var isMouseOver = false;
		var dd = $("dd", comingsoon);
		var ul = dd.find("ul");
		
		if(comingsoon.length == 0 || dd.length == 0 || ul.length == 0) return;
		
		bugs.log.log(comingsoon);
		var _timeoutId;
		var rollingHeight = 16;
		ul.height(bugs.gnb._topSearchHeight(ul));
		
		var _rollingFunc = function() {
			var _t, _h;
			if(ul.css("top") == "auto") 
				_t = 0;
			else
				_t = bugs.math.abs(ul.position().top);
			
			if(ul.css("height") == "auto") 
				_h = 0;
			else
				_h = bugs.gnb._topSearchHeight(ul);
			
			if(_t >= _h) {
				ul.css("top", rollingHeight);
				ul.animate({top : "-="+rollingHeight}, 1000, _rollingFunc);
			} else {
				_timeoutId = setTimeout(function() {
						ul.animate({top : "-="+rollingHeight}, 1000, _rollingFunc);
					}, 3000);
			}
			
		};
		
		dd.hover(
			function(event) {
				dd.find("ul:animated").stop();
				if(typeof _timeoutId != "undefined" && _timeoutId != null) {
					clearTimeout(_timeoutId);
					_timeoutId = null;
				}
			}, function(event) {
				_rollingFunc();
			}
		);
		_rollingFunc();
	},
	_topKeywordsHtml : '<% for(var i=0; i < obj.list.length; i++) { var item = obj.list[i]; %>' +
		'<li class="<%=item.info.rankClass%> <%= item.info.class2%>">' +
		'<span class="ranking"><%=item.info.rank%>.</span>' + 
		'<span class="word"><a href="<%=g_urlSearch + \"/total?q=\" + encodeURIComponent(item.query)%>"><%=item.query%></a></span> ' + 
		'<span class="updown"><em><%=item.info.rackName%></em> <% if(typeof item.deltaRanking != "undefined") { %><strong><%=item.info.rankStr%></strong><% } %></span></li>' +
		'<% } %>',
	_topKeywordsHtmlMain : '<% for(var i=0; i < obj.list.length; i++) { var item = obj.list[i]; %>' +
		'<li class="<%=item.info.rankClass%> <%= item.info.class2%>">' +
		'<span class="ranking"><%=item.info.rank%>.</span>' + 
		'<span class="word"><a href="<%=g_urlSearch + \"/total?q=\" + encodeURIComponent(item.query)%>&wl_ref=gnb_search<% if(i<9){%>0<%}%><%=i+1%>"><%=item.query%></a></span> ' + 
		'<span class="updown"><em><%=item.info.rackName%></em> <% if(typeof item.deltaRanking != "undefined") { %><strong><%=item.info.rankStr%></strong><% } %></span></li>' +
		'<% } %>',
	topKeywords : function() {
		$.ajax({
			url : g_urlAjax + "/search/top",
			success : function(result) {
				if(typeof result == "undefined" || $.isArray(result) == false || result.length == 0) return;
				$(result).each(function(idx) {
					var _rank = {};
					_rank.rank = idx + 1;
					if(typeof this.deltaRanking == "undefined" || this.deltaRanking == null) {
						_rank.rankClass= "new";
						_rank.rankName = "NEW";
						_rank.rankStr = "";
					} else if(this.deltaRanking > 0) {
						_rank.rankClass= "down";
						_rank.rankName = "하락";
						_rank.rankStr = this.deltaRanking;
					}else if(this.deltaRanking == 0) {
						_rank.rankClass= "same";
						_rank.rankName = "동일";
						_rank.rankStr = "-";
					}else if (this.deltaRanking < 0) {
						_rank.rankClass= "up";
						_rank.rankName = "NEW";
						_rank.rankStr = this.deltaRanking * (-1);
					}

					if(idx < 2) _rank.class2 = " top3";
					else if(idx == 2) _rank.class2 = " top3 divider";
					else _rank.class2 = "";
					
					this.info = _rank;
				});
				if($("#container").hasClass("main"))
					var _tmp = new bugs.template(bugs.gnb._topKeywordsHtmlMain, {"list" : result});
				else
					var _tmp = new bugs.template(bugs.gnb._topKeywordsHtml, {"list" : result});
				$("#rankList dd ol").html(_tmp.html());
				
				// top keywords scrolling
				//bugs.gnb.topSearchRolling();
			},
			dataType : "json"
		});
	},
	chkLoginCode : function() {
		var code = bugs.utils.urlParam("loginCode");
		var msrl = bugs.utils.urlParam("msrl");
		if(!bugs.valid.empty(code)) {
			bugs.ui.showLoginAlert(code, {msrl : "", msrl : ((typeof msrl == "undefined" || msrl == null)?"":msrl) ,layerLogin : false});
		}
		
	}
}


var debug = {
	dump : function() {
		var retVal='', argVal = arguments[0] || '';

		switch((typeof argVal).toLowerCase()) {
			case 'object' :
				$.each(argVal, function(key, value) { 
					retVal += '[' + (typeof value) + '] ' + key + ' => ' + value +'\n';
				});
				break;

			case 'string'	:
			default			:
				retVal += (typeof argVal) + '/' + argVal;
		}
		return retVal;
	}
};

searchBoxAd = {
	enable : true,
	url : null,
	init : function(url) {
		if(typeof url == "undefined") {
			searchBoxAd.url = $("#_searchBoxAdUrl").val();
		} else {
			searchBoxAd.url = url;
		}
		jQuery(".commonHeader .header .searchField .btnClearQuery").bind("click",searchBoxAd.close).focus(function() {
			this.blur();
		});
		jQuery("#searchInput").bind("focus",searchBoxAd.close);
		jQuery(".commonHeader .header .searchField button[type=button]").click(searchBoxAd.clickButton);
	},
	close : function(event) {
		var clearAnchor = jQuery(".searchField .btnClearQuery");
		var input = jQuery("#searchInput"); 
		event.preventDefault();
		clearAnchor.hide().remove();
		input.val("")
			.unbind("focus", searchBoxAd.close)
			.removeClass("adKeyword")
			.focus();
		searchBoxAd.enalbe = false;
		jQuery(".header .searchField button[type=button]").unbind("click", searchBoxAd.clickButton);
	},
	clickButton : function(event) {
		document.location.href = searchBoxAd.url;
		event.stopPropagation();
	}
};
/*
searchBoxAd = {
	enable : true,
	url : null,
	init : function(url) {
		if(typeof url == "undefined") {
			searchBoxAd.url = $("#_searchBoxAdUrl").val();
		} else {
			searchBoxAd.url = url;
		}
		$(".commonHeader .search .searchField .btnClearAd").bind("click",searchBoxAd.close).focus(function() {
			this.blur();
		});
		$("#searchInput").bind("focus",searchBoxAd.close);
		$(".commonHeader .search .searchField button[type=button]").click(searchBoxAd.clickButton);
	},
	close : function(event) {
		var clearAnchor = $(".searchField .btnClearAd");
		var input = $("#searchInput"); 
		event.preventDefault();
		clearAnchor.hide().remove();
		input.val("")
			.unbind("focus", searchBoxAd.close)
			.removeClass("adKeyword")
			.focus();
		searchBoxAd.enalbe = false;
		$(".commonHeader .searchField button[type=button]").unbind("click", searchBoxAd.clickButton);
	},
	clickButton : function(event) {
		document.location.href = searchBoxAd.url;
		event.stopPropagation();
	}
};
*/
searchBoxAdRadio = {
	enable : true,
	enableAgain : true,
	url : null,
	init : function(url) {
		if(typeof url == "undefined") {
			searchBoxAdRadio.url = $("#_searchBoxAdUrlRadio").val();
		} else {
			searchBoxAdRadio.url = url;
		}
		
		
		jQuery("#searchInputRadio").bind("focus",searchBoxAdRadio.close,function(){this.blur();});
		jQuery("#searchMainButton").click(searchBoxAdRadio.clickButton,function(){this.blur();});
		if(bugs.suggestRadioAgain.isAgain){
			
			jQuery("#searchInputRadioAgain").bind("focus",searchBoxAdRadio.closeAgain,function(){this.blur();});
			jQuery("#searchAgainButton").click(searchBoxAdRadio.clickButtonAgain,function(){this.blur();});
		}
	},
	close : function(event) {
		var input = jQuery("#searchInputRadio");
		event.preventDefault();
		input.val("")
			.unbind("focus", searchBoxAdRadio.close)
			.removeClass("adKeyword")
			.focus();
		searchBoxAdRadio.enable = false;
	},
	
	closeAgain : function(event){
		var inputAgain = jQuery("#searchInputRadioAgain");
		event.preventDefault();
		inputAgain.val("")
			.unbind("focus", searchBoxAdRadio.closeAgain)
			.removeClass("adKeyword")
			.focus();
		searchBoxAdRadio.enableAgain = false;
	},
	
	clickButton : function(event) {
		if(bugs.suggestRadio.isRadio){
			$('#searchInputRadio').addClass('focus');
			radioLoggingHandler("search_enter");
			bugs.radio.searchSeed(jQuery("#searchInputRadio").val(),1,"pmain");
		}else{
			bugs.music.listenRadio(jQuery("#searchInputRadio").val(),false);
		}
		
		event.stopPropagation();
	},
	
	clickButtonAgain : function(event) {
		radioLoggingHandler("search_enter");
		bugs.radio.searchSeed(jQuery("#searchInputRadioAgain").val(),1,"pagain");
		event.stopPropagation();
	}
};


$(document).ready(function () {
	if ($(document.body).length > 0) {
		var brName = $.browser.name;
		if (brName == "msie") {
			var verNumber = $.browser.versionNumber; 
			if (verNumber == 5) {
			} else if (verNumber == 6) {
				$("body").addClass("ie6");
			} else if (verNumber == 7) {
				$("body").addClass("ie7");
			}
		} else if (brName == "firefox") {
			$("body").addClass("ff3_5");
		}
	}
	
	var url = location.href;
	var arrUrl = url.split("?");
	if(arrUrl[1] != null){
		var vari = arrUrl[1].split("&");
		if(vari.length > 0){
			var result = null;
			var delStr = null;
			for(var i=0; i<vari.length; i++){
				if(vari[i].match("isTrans=")){
					result = vari[i].split("=");
					delStr = ((i == 0) ? "" : "&") + vari[i];
				}
			}
			
			if(result != null){
				if(result[1] == "true"){
					rUrl = url.replace(delStr, "");
					forTransMember(rUrl);
				}
			}
		}
	}
});

var forTransMember = function(rUrl) {
	var transPage = g_urlMember + "/transJoin/memberMain";
	
	var popup = window.open(transPage, "_blank", "");
	var brName = $.browser.name;
	
	var result = "";
	
	if(popup != null){
		result = "open";
	}
	
	if(result != "" && result == "open"){
		if(brName != 'chrome'){
			location.href = rUrl;
		}
	}
	else{
		var layerAlert = new bugs.ui.showAlert("모바일 가입회원으로 웹서비스 이용이 제한됩니다.<br />회원 전환을 위해 <b>팝업차단 해제 후</b> <br />다시 로그인해 주세요.",{css:"layerPopup noTitle layerMusicPD"});
		layerAlert.show();
	}
};

var buyCash = function () {
	window.open(g_urlBilling+'/pay/pg/popProcess', 'cash','top=10, left=10, width=750, height=564, toolbar=0, directories=0, status=0, menubar=0, scrollbars=0, resizable=0');
};


if ("undefined" == typeof bugs.fb) {
	bugs.fb = {
		appid : "122936701116206",
		scope : [ 'email', 'read_stream', 'publish_actions' ],
		loginPage : g_urlWww + "/facebook/paramgate2?gourl=" + location.href,
		getMyByAccessToken : function(access_token) {
			var path = 'https://graph.facebook.com/me?access_token='
					+ access_token;

			var queryParams = [ 'access_token=' + access_token,
					'redirect_uri=' + window.location ];
			var query = queryParams.join('&');
			var url = path + query;
			location.href = url;
		},
		getHost : function() {
			if (location.href.indexOf(g_urlMusic) != -1)
				return g_urlMusic;
			else if (location.href.indexOf(g_urlSearch) != -1)
				return g_urlSearch;
			else if (location.href.indexOf(g_urlSecure) != -1)
				return g_urlSecure;
			else
				// if (location.href.indexOf(g_urlWww ) != -1)
				return g_urlWww;
		},
		goFBConnect : function(access_token, data_agree) {
			var params = {
				"agree" : data_agree,
				"access_token" : access_token
			};
			$.post(this.getHost() + "/facebook/ajax/login", params, function(
					data) {
				if (data) {
					// alert(data.result);
					if (data.result == "OK" || data.result == "OK_NEW") {
						if (typeof (g_msrl) == "undefined")
							;
						{
							location.reload();
						}
					} else if (data.result == "NOT_AGREE") {
						// 동의 페이지로 이동
						location.href = g_urlWww + "/fb/agree?access_token="
								+ access_token;
					}
				} else {
					// 기타 오류 발생
				}
			}, "json");
		},
		doAuth : function() {

			FB.login(function() {
				if (typeof (fbResponse) != "undefined"
						&& fbResponse.authResponse) {
					var accessToken = fbResponse.authResponse.accessToken;
					var uid = 0;
					FB.api('/me', function(response) {
						uid = response.id;
						alert(uid);
					});

				} else {
					// 회원이 로그인 취소 했을 경우
				}
			}, {
				scope : 'email,user_activities,user_likes,user_birthday,offline_access,publish_stream,publish_actions'
			});

		},
		
		openLogin : function() {
			window.open(this.getHost() + "/facebook/login?returl="
					+ location.href, "FBLOGIN",
					'scrollbars=yes,resizable=yes,width=1000,height=570');
			/*	
			window.open(this.getHost() + "/facebook/login?returl="
					+ location.href, "FBLOGIN",
					"width=1000,height=570,resizable=yes;scrollbars=yes");
			*/
		},

		openForConnect : function() {
			window.open(this.getHost() + "/facebook/connect?returl="
					+ location.href, "FBLOGIN",
					"width=1000,height=570,resizable=0");

		}
	};
}

if(typeof(bugs.ui) == "undefined") bugs.ui = {};

bugs.ui.DEFAULT_POPUP_OPTION = {
	title : null,
	css : "",
	modal : true,
	alertButtons : true,
	onInit : function(popup) {},
	onOk : function(popup) {return true;},
	onCancel : function(popup) {return true;},
	onHide : function() {}
};

bugs.ui.modalLayer = {
	layer : null,
	show : function() {
		if(!this.layer) {
			this.layer = $("<div></div>").attr("id", "_modalLayer").css({
				"z-index" : "99",
				"filter" : "alpha(opacity=30)",
				"opacity" : "0.2",
				"-moz-opacity" : "0.2",
				"position" : "absolute",
				"top" : 0,
				"left" : 0,
				"background-color" : "black"
			}).appendTo("body");
		}

		var width = $(document).width();
		var height = $(document).height();
		if($.browser.msie) {
			var bodyHeight = $("body").height();
			var windowHeight = $(window).height();
			/* Block layer 버그로 주석처리(영화,폰꾸미기등)
			try {
				var wrapHeight = $("#wrap").height();
				
				height = (windowHeight > bodyHeight ? windowHeight : bodyHeight) > wrapHeight ? (windowHeight > bodyHeight ? windowHeight : bodyHeight) : wrapHeight;
			} catch (e) {
				height = windowHeight > bodyHeight ? windowHeight : bodyHeight;
			}
			*/
		}

		this.layer.css({width : "100%", height : height}).show();
	},
	
	hide : function() {
		if(this.layer) this.layer.hide();
		
		if(typeof this.callLater == "function"){
			this.callLater();
			this.callLater = null;
		}
	},
	
	callLater : null
};

bugs.ui.TITLE_LOGO = "LOGO";

bugs.ui.popup = bugs.create();
bugs.ui.popup.prototype = {
	type : "popup",
	
	initialize : function(msg, option) {
		this.msg = msg;
		this.option = bugs.overed(bugs.clone(bugs.ui.DEFAULT_POPUP_OPTION), option || {}); 

		this.makeLayer();
	},
	
	makeLayer : function() {
		if(typeof(this.msg) == "string") {
			this.layer = $(this.getHtml()).appendTo("body");
		}
		else {
			// 이미 있는 dom object로 레이어 생성
			this.layer = $(this.msg).appendTo("body");
			if(this.layer.find("h1").length) {
				if(this.layer.find("h1 span.logo").length) this.option.title = bugs.ui.TITLE_LOGO;
				else this.option.title = this.layer.find("h1").html();
			}
			
			var css = new Array();
			this.layer.eachClass(function(index, item) {
				if(item == "layerPopup" || item == "layerAlert") return;
				
				css.push(item);
			}.bind(this));

			if(css.length == 1) this.option.css = css[0];
			else this.option.css = css;
		}
		
		this.layer.find("div.btnClose a").click(function() {
			this.hide();
			//실시간 스타방송 시 로그인 레이어가 뒤로 숨기 때문에 숨긴 플레시플레이어 레이어를 다시 보여준다.
			if(typeof castType != "undefined" && castType=="live"){
				if((jQuery(".layerAlert") && jQuery(".layerAlert").css("display") == "none" 
					&& jQuery(".layerPopup") && jQuery(".layerPopup").css("display") == "none") 
					|| (typeof jQuery(".layerAlert") != "undefined" && jQuery(".layerPopup") && jQuery(".layerPopup").css("display") == "none")
					|| jQuery(".layerAlert") == null){
					
					showVideoLayerFlag = false;
					showVideoLayer();
				}
			}
			return false;
		}.bind(this));

		this.makeButtons();
		
		this.onInit();
	},
	
	makeButtons : function() {
		this.layer.find("a[type=ok]").unbind("click").click(function() {
			if(this.option.onOk(this)) this.hide();
			return false;
		}.bind(this));
		
		this.layer.find("button[btnType=ok]").unbind("click").click(function() {
			if(this.option.onOk(this)) this.hide();
		}.bind(this));
		
		this.layer.find("a[type=cancel]").unbind("click").click(function() {
			if(this.option.onCancel(this)) this.hide();
			return false;
		}.bind(this));
	},
	
	getHtml : function() {
		var html = "<div class=\"layerPopup " + (!this.option.title ? "noTitle " : "") + this.option.css + "\" style=\"display:none;\">";
		
		if(this.option.title) {
			if(this.option.title == bugs.ui.TITLE_LOGO)
				html += "<h1><span class=\"logo\"><img src=\"" + g_urlFile + "/common/header/logo_bugsLayer.gif\" alt=\"Bugs!\" /></span></h1>";
			else
				html += "<h1>" + this.option.title + "</h1>";
		}
			
		html += "<div class=\"content\">" + this.msg + 
			"<div class=\"btnClose\">";
		
		if(this.option.alertButtons){
			html += "<a href=\"#\"><span>닫기</span></a>";
		}
		
		html += "</div>" +
			"</div>";
			
		if(!this.option.title) html += "<div class=\"layerBg bgTL\"></div>";
			
		html += "</div>";
		
		return html;
	},
	innerHtml : function(html) {
		if(typeof html != "undefined") {
			$("div.content", this.layer).children().not("div.btnClose").remove();
			$("div.content", this.layer).prepend(html);
			//$("div.content", this.layer).html(html);
		}
	},
	onInit : function() {
		this.option.onInit(this);
	},

	show : function(msg, option) {
		if(msg) {
			if(this.type == "alert")
				this.layer.find("div.content > p").html(msg);
			else {
				this.innerHtml(msg);
				this.makeButtons();
			}
		}
		
		this.option = bugs.overed(this.option, option || {});
		var css = this.option.css;

		this.layer.eachClass(function(index, item) {
			if(item == "layerPopup" || item == "layerAlert") return;
			
			$(this).removeClass(item);
		}.bind(this.layer));
		
		if(typeof(this.option.css) == "object") {
			for(var i in this.option.css)
				this.layer.addClass(this.option.css[i]);
		}
		else this.layer.addClass(css);

		//----- modal dialog 처리 -----------------------------------------------
		if(this.option.modal) bugs.ui.modalLayer.show();
		//---------------------------------------------------------------------
		
		var left = $(window).scrollLeft() + (($(window).width() - this.layer.width()) >> 1);
		var top = $(window).scrollTop() + (($(window).height() - this.layer.height()) >> 1);

		this.layer.css({left : left, top : top}).show();
		
		return this;
	},
	
	hide : function() {
		if(this.option.modal) bugs.ui.modalLayer.hide();
		if(this.option.onHide)	this.option.onHide();
		this.layer.hide(
			//$.proxy(function() { this.remove(); }, this)
		);
		
	},
	
	addModalMsg : function(id, msg) {
		var html = "" +
			"<div class=\"layerModal\" style=\"top:0px;display:none;\">" +
			"	<div class=\"content\">" +
			"		<p>" + msg + "</p>" +
			"		<div class=\"btnArea\"><span class=\"button typeME\"><a href=\"#\">확인</a></span></div>" +
			"	</div>" +
			"	<div class=\"layerBg bgTR\"></div>" +
			"	<div class=\"layerBg bgTL\"></div>" +
			"</div>";
		
		this.modalMsgList[id] = $(html).appendTo(this.layer);
	},
	
	showModalMsg : function(msg, option) {
		this.option = bugs.overed(this.option, option || {});
		if(!this.modalMsgLayer) {
			var html = "" +
				"<div class=\"layerModal\" style=\"top:0px;display:none;\">" +
				"	<div class=\"content\">" +
				"		<p></p>" +
				"		<div class=\"btnArea\"><span class=\"button typeME\"><a href=\"#\">확인</a></span></div>" +
				"	</div>" +
				"	<div class=\"layerBg bgTR\"></div>" +
				"	<div class=\"layerBg bgTL\"></div>" +
				"</div>";
			
			this.modalMsgLayer = $(html).appendTo(this.layer).find("div.btnArea a").click(function() {
				this.modalMsgLayer.hide();
				this.option.onOk();
				return false;
			}.bind(this)).end();
		}
		this.modalMsgLayer.find("div.content p").html(msg);
		var left = (this.modalMsgLayer.parent().width() - this.modalMsgLayer.width()) >> 1;
		var top = (this.modalMsgLayer.parent().height() - this.modalMsgLayer.height()) >> 1;
		this.modalMsgLayer.css({top : top, left : left}).show();
		
	},
	
	getLayer : function() {
		return this.layer;
	},
	
	reposition : function() {
		var left = $(window).scrollLeft() + (($(window).width() - this.layer.width()) >> 1);
		var top = $(window).scrollTop() + (($(window).height() - this.layer.height()) >> 1);

		this.layer.css({left : left, top : top});
	},
	remove : function() {
		if(this.layer) this.layer.remove();
		this.layer == null;
	}
};

bugs.ui.loadingLayer = bugs.create();
bugs.ui.loadingLayer.prototype = {
	html : '<div class="layerAlert layerLoading" style="left: 250px; top: 300px; display: none; border-width:1px; ">' +
		'<div class="content">' + 
		'<p><%=obj.title%></p>' + 
		'</div>' + 
		'<div class="layerBg bgTR"></div>' + 
		'<div class="layerBg bgTL"></div>' + 
		'</div>',
	initialize : function(title, option) {
		this.title = title;
		var tmp = new bugs.template(this.html, {title : title});
		this.layer = $(tmp.html()).appendTo("body");
		
	},
	show : 	function(css) {
		if(typeof css == "undefined") {
			css = {position : "absolute", left : "50%", top : 316, "margin-left" : -146};
		}	
		this.layer.css(css).show();
		
	},
	hide : function() {
		this.layer.hide();
	},
	remove : function() {
			this.layer.remove();
	}
}

bugs.ui.alert = bugs.create();
bugs.ui.alert.prototype = {
	getHtml : function() {
		var _layerClass = "layerAlert";
		if(typeof this.option.layerClass !="undefined") _layerClass = this.option.layerClass;
		
		var html = "<div class=\""+_layerClass+" " + this.option.css + "\" style=\"display:none;\">" + 
			"<div class=\"content\"><p></p>";
		
		if(this.option.alertButtons) {
			html +=
				"<div class=\"btnArea\">" +
				"<span class=\"button typeME\"><a href=\"javascript:void(0);\">확인</a></span>" + 
				"</div>";					
		}
		
		html += "</div>";
		
		if(this.option.alertButtons)
			html += "<div class=\"btnClose\"><a href=\"#\"><span>닫기</span></a></div>";
		
		html +=
			"<div class=\"layerBg bgTR\"></div>" +
			"<div class=\"layerBg bgTL\"></div>" +
			"</div>";
		
		return html;
	},
	
	onInit : function() {
		this.type = "alert";
		
		this.layer.find("div.content > p").html(this.msg);
		
		this.layer.find("span.button a").click(function() {
			this.hide();
			if(typeof(this.option.onOk) == "function") this.option.onOk(this);
			return false;
		}.bind(this));
		
		this.layer.find(".btnClose a").click(function() {
			this.hide();
			if(typeof(this.option.onCancel) == "function") this.option.onCancel(this);
			return false;
		}.bind(this));
		
		
		if(typeof this.option.onInit == "function") {
			this.option.onInit(this);
		}
	}
};
bugs.extend(bugs.ui.alert, bugs.ui.popup);

bugs.ui.showPopup = function(msg, option) {
	if(!bugs.ui._popup) bugs.ui._popup = new bugs.ui.popup(msg, option).show();
	else bugs.ui._popup.show(msg, bugs.overed(bugs.clone(bugs.ui.DEFAULT_POPUP_OPTION), option || {}));
};

bugs.ui.showAlert = function(msg, option) {
	if(!bugs.ui._alert) bugs.ui._alert = new bugs.ui.alert(msg, option).show();
	else bugs.ui._alert.show(msg, bugs.overed(bugs.clone(bugs.ui.DEFAULT_POPUP_OPTION), option || {}));
};

bugs.ui.showLoginAlert = function(code, option) {
	var opt = bugs.overed({
		msrl : "", 
		layerLogin : true,
		css : "layerLoginMsg"
	}, option || {});
	
	if (code != "OK") {
		switch (code) {
			case "VSTATC" : 
				if (!bugs.object.empty(opt.msrl)) {
					var popUp = window.open(g_urlMember + "/join/parentAgreeEmail/popup/" + opt.msrl, "parentAgree", "width=582,height=524,resizable=0");
					popUp.focus();
				}
				else {
					bugs.ui.showAlert("잘못된 로그인 정보입니다.", opt);
				}
				break;
			case "CHECK_NAME_SSN" : 
				var msg = "<p>"
						+ "	현재 회원님은 회원 가입 시 입력한 정보 중<br />" 
						+ "	로그인시 반드시 필요한 정보에 문제(누락)가 있어<br />" 
						+ "	로그인이 불가능합니다.<br /> "
						+ "	정상적으로 로그인을 하시려면<br />" 
						+ "	<a href=\"http://helpdesk.bugs.co.kr\">벅스고객센터</a>로 문의해 주시기 바랍니다."  
						+ "	</p> "
						+ "	<div class=\"btnArea\"><span class=\"button typeME\"><a href=\"javascript:void(0);\">확인</a></span></div>";
				bugs.ui.showPopup(msg, {title : "로그인 불가 안내", css : "layerLoginError", onInit : function(popup) {
					popup.getLayer().find("span.typeME a").click(function() {
						popup.hide();
						if(typeof(popup.option.onOk) == "function") popup.option.onOk();
						return false;
					});
				}});
				break;
			case "PAUSE" : 
				bugs.ui.showAlert("일시 정지된 아이디입니다.", opt);
				break;
			case "ALREADY_LOGGED" : 
				bugs.ui.showAlert("이미 로그인 되어 있습니다.", opt);
				break;			
			default :
				if(opt.layerLogin) {
					bugs.ui.showLoginLayer();
				}
				bugs.ui.showAlert("올바른 아이디/비밀번호를 찾아<br />입력하여 주세요.", opt);
				break;			
		}
	}else{		
		//Pc 정보 추출
		var f_ver = swfobject.getFlashPlayerVersion();
		var browserName;	//브라우저명
		var browserVer;		//브라우저 버전
		var browserLang;		//브라우저 언어
		var browserResolution;	//해상도
		var browserWidth;	//최대 가로길이
		var browserHeight;	//최대 세로길이
		var browserOS="Win";	//OS종류
		var browserFlashVer;	//flash버전
		
		browserWidth = 0;		// 초기화
		browserHeight = 0;		// 초기화
		
		if(navigator.appName.match(/Explorer/i)){
			browserName = navigator.appName;
			browserVer = navigator.appVersion.match(/MSIE \d+.\d+/)[0].split(" ")[1];
		  }else if(navigator.appName.match(/opera/i)){
			  browserName = navigator.appName;
			  browserVer = window.opera.version();
		  }else if(navigator.appName.match(/Netscape/i)){
		  	if(navigator.appVersion.match(/RockMelt/i)){
		  		browserName = "RockMelt";
		  		browserVer = navigator.appVersion.match(/\d+.\d+.\d+.\d+ /)[0].split(" ")[0];
		  	}else if(navigator.appVersion.match(/chrome/i)){  	 
		  		browserName = "Chrome";  	 
		  		browserVer = navigator.appVersion.match(/\d+.\d+.\d+.\d+ /)[0].split(" ")[0];
		  	}else if(navigator.appVersion.match(/safari/i)){
		  		browserName = "Safari";
		  		browserVer = navigator.appVersion.match(/\d+.\d+.\d +Safari/)[0].split(" ")[0];
		  	}else{
		  		browserName = "Firefox";
		  		browserVer = navigator.userAgent.match(/rv:\d+.\d+.\d/)[0].split(":")[1];
		  	}
		  }
		  if(navigator.userAgent.indexOf('Mac') != -1){
			  browserOS = "Mac";
		  }
		  browserLang = navigator.browserLanguage;
		  browserResolution = screen.width+" x "+screen.height;
		  browserWidth = screen.availWidth;
		  browserHeight = screen.availHeight;
		  browserFlashVer = f_ver.major+"."+f_ver.minor+"."+f_ver.release;
		  if(browserWidth==null || browserHeight==null){
			  browserWidth = 0;
			  browserHeight = 0;
		  }
		  if(browserWidth=="" || browserHeight==""){
			  browserWidth = 0;
			  browserHeight = 0;
		  }		  
		  
		objParams = {
				browserName: browserName,
				browserVer: browserVer,
				browserLang: browserLang,
				browserResolution: browserResolution,
				browserWidth: browserWidth,
				browserHeight: browserHeight,
				browserOS: browserOS,
				browserFlashVer: browserFlashVer,
				decorator : "blank"
			};
			$.post(
					g_urlAjax+"/logging/pcLogInsert",
				objParams,
				function(response) {					
					//location.href=g_urlWww+"/index/";	
				}
			);	
	}
}
bugs.ui.showLoginLayer = function(option) {
	var opt = bugs.overed({
		rUrl : location.href,
		openWindow : false,
		rType : "X"
	}, option || {});
	
	var saveId = bugs.cookie.get('saveId');
	if(!bugs.ui._loginLayer) {
		var msg = "" +
			"<div id=\"login\">" +
			"	<p class=\"msg\">로그인 하신 후 이용해주세요.</p>" +
			"	<fieldset>" +
			"	<legend>로그인</legend>" +			
			"	<form method=\"post\" id=\"frmLoginLayer\" name=\"frmLoginLayer\" action=\"" + g_urlMember + "/login/process\" onSubmit=\"return false;\">" +
			"		<input type=\"hidden\" id=\"rUrl\" name=\"rUrl\" value=\"" + opt.rUrl + "\"  />";
			
			if(option != null && option.encodeType != null && option.encodeType != undefined){
				msg += "		<input type=\"hidden\" id=\"encode\" name=\"encode\" value=\"" + option.encodeType + "\"  />";
			}
			
			msg += "		<div class=\"enterIDPW\">" +
			"			<label for=\"아이디\">아이디</label> <input type=\"text\" id=\"user_id\" name=\"user_id\" class=\"text default\" tabindex=\"101\" />" +
			"			<label for=\"비밀번호\">비밀번호</label><input type=\"password\" id=\"passwd\" name=\"passwd\" class=\"password default\" tabindex=\"102\" />" +
			"		</div>" +
			"		<button type=\"button\" class=\"btnLogin\" tabindex=\"103\">로그인</button>" +
			"		<div class=\"check\">" +
			"			<input type=\"checkbox\" class=\"checkbox\" id=\"checkSaveId\" name=\"checkSaveId\" value=\"1\" /><label for=\"keepUid\">아이디저장</label>" +
			"			<input type=\"checkbox\" class=\"checkbox\" id=\"checkSsl\" name=\"checkSsl\" value=\"1\" checked=\"checked\" disabled /><label for=\"security\">보안접속</label>" +
			"		</div>" +
			"	</form>" +
			"	</fieldset>";
		
			if (opt.rType != "X"){
				msg += "	<span class=\"signup\"><a href=\"" + g_urlMember + "/join/memberMain?rUrl=" + encodeURIComponent(opt.rUrl) + "\">회원가입</a></span>";
			}else{
				msg += "	<span class=\"signup\"><a href=\"" + g_urlMember + "/join/memberMain\">회원가입</a></span>";
			}
			msg += "	<span class=\"forgot\"><a href=\"" + g_urlMember + "/find/id\">아이디</a>/<a href=\"" + g_urlMember + "/find/pw\">비번 찾기</a></span>" +
			"</div>";
		
		bugs.ui._loginLayer = new bugs.ui.popup(msg, {title : bugs.ui.TITLE_LOGO, css : "layerLogin", onInit : function(popup) {
			var id = popup.layer.find("input.text");
			var passwd = popup.layer.find("input.password");
			
			bugs.focusNblur($("#user_id,#passwd"));
			$(id).focus(function () {
				if (!bugs.object.empty($(this).val())) $(this).removeClass("text");
				else $(this).addClass("text");
			}).blur(function () {
				if (!bugs.object.empty($(this).val())) $(this).removeClass("text");
				else $(this).addClass("text");
			});
			$(passwd).focus(function () {
				if (!bugs.object.empty($(this).val())) $(this).removeClass("password");
				else $(this).addClass("password");
			}).blur(function () {
				if (!bugs.object.empty($(this).val())) $(this).removeClass("password");
				else $(this).addClass("password");
			});
			
			if (!bugs.valid.empty(saveId)) {
				id.val(saveId).focus();
				$("#checkSaveId").attr("checked","checked");
			}
			$("#checkSaveId").click(function() {
				if ($(this).is(":checked")) {
					popup.showModalMsg( "<p><strong>현재 사용하시는 PC에<br />아이디를 저장하시겠습니까?</strong></p>" +
										"<p>PC방 등 공공장소에서는 개인정보가<br />유출될 수있으니 주의해 주시기 바랍니다.</p>");
				}
			});
			
			var _submitFunc = function() {
				if(bugs.valid.empty(id.val())) {
					popup.showModalMsg("아이디를 입력해주세요!");
					return false;
				}
				if(bugs.valid.empty(passwd.val())) {
					popup.showModalMsg("비밀번호를 입력해주세요!");
					return false;
				}

				var oDate = new Date();
				if ($("#checkSaveId").is(":checked")) {
					oDate.setDate(oDate.getDate() + 30);	
					bugs.cookie.set("saveId", id.val(), oDate, "/", "bugs.co.kr");
				}
				else {
					oDate.setDate(oDate.getDate() - 1);
					bugs.cookie.set("saveId", "", oDate, "/", "bugs.c8o.kr");
				}
				
				$("#frmLoginLayer").submit();
			};
			
			popup.layer.find("button.btnLogin").click(_submitFunc);
		 	popup.layer.find("input:text, input:password").keypress(function(event) {
				if (event.keyCode == '13') {
					_submitFunc();
				}
			});
		 	
			//웹플레이어에서 로그인 실패 후 자동으로 뜨는 로그인 레이어에서 링크 버튼(회원가입, 비번, id 찾기 클릭 시 새창으로 뜨도록 변경) 
		 	if(location.href.indexOf("player?trackId=") > -1) opt.openWindow = true;
		 	
		 	if(opt.openWindow) {
		 		popup.layer.find("span.signup a").openWindow(function() {
		 			popup.hide();
		 		});
		 		popup.layer.find("span.forgot a").openWindow(function() {
		 			popup.hide();
		 		});
		 	}
		}}).show();
	}
	else {
		bugs.ui._loginLayer.layer.find("#rUrl").val(opt.rUrl);
		bugs.ui._loginLayer.show();
	}
	
	
	$("#user_id").focus();
	
	//실시간 스타방송 때문에 로그인 레이어가 플래시플레이어 뒤로 숨기때문에 플래시플레이어 레이어 숨김
	if(typeof castType != "undefined" && castType=="live"){
		hideVideoLayer();
	}
};


bugs.ui.alertAdultNotice = function() {
	var msg = "해당곡은 청소년 유해매체물로서 정보통신망<br />"+ 
				"이용 촉진 및 정보보호 등에 관한 법률 및<br />"+
				"청소년보호법의 규정에 의하여<br />"+ 
				"19세 미만의 청소년이 이용할 수 없습니다. ";
	var _alert = new bugs.ui.showAlert(msg, {css : "layerAdultNotice"});
	//_alert.show();
};

bugs.ui.alertFacebookCpNotice = function() {
	var msg = '<p>선택하신 서비스는 준비 중 입니다.<br />가능한 빨리 서비스 할 수 있도록 하겠습니다.<br />감사합니다.</p><div class="btnArea"><span class="button typeME"><a href="javascript:void(bugs.ui.modalLayer.hide());" type="ok">확인</a></span></div><div class="btnClose"><a href="#"><span>닫기</span></a></div>';
	var popup = new bugs.ui.popup(msg, {title : "LOGO", css : "layerFbServiceNot"});
	popup.show();	
};

//----- clipboard 카피 버튼 -------------------------------------------------------
bugs.ui.clipboardButtonManager = {
	id : 1,
	
	buttons : {},
	
	getUniqueId : function() {
		return bugs.ui.clipboardButtonManager.id++;
	},

	handleEvent : function(event, id) {
		if(this.buttons[id]) this.buttons[id].handleEvent(event);
	}
};

bugs.ui.clipboardButton = bugs.create();
bugs.ui.clipboardButton.prototype = {
	containerId : "BugsClipboardUtilContainer",
	
	id : 0,

	initialize : function(selector, option) {
		this.id = bugs.ui.clipboardButtonManager.getUniqueId();
		bugs.ui.clipboardButtonManager.buttons[this.id] = this;
		
		this.button = $(selector).mouseover(this.reposition.bind(this));
		this.option = bugs.overed({
			copyData : "",
			addClass : "",
			zIndex : 100,
			onComplete : function() {}
		}, option || {});
		
		if($("#" + this.containerId).length > 0) {
			this.container = $("#" + this.containerId);
			this.swf = $("#BugsClipboardUtil")[0];
			if(this.swf.tagName == "DIV") this.swf = null;
		}
		else {
			// firefox에서는 일단 화면에 플래쉬가 보여야 ExternalInterface.addCallback()이 되기 때문에
			// 일단 화면에 보이게끔 scrollTop으로 container를 생성함
			var top = $(document).scrollTop();
			this.container = $("<div id=\"" + this.containerId + "\"><div id=\"BugsClipboardUtil\"></div></div>").appendTo("body").css({position : "absolute", width : 10, height : 10, top : top, "z-index" : this.option.zIndex});
			
			var flashvars = {
				id : this.id,
				copyData : this.option.copyData,
				eventHandler : "bugs.ui.clipboardButtonManager.handleEvent"
			};
			
			var params = {
				wmode : "transparent",
				allowScriptAccess : "always" 
			};
			
			var attr = {
				id : "BugsClipboardUtil"
			};
			
			swfobject.embedSWF(g_urlSwf + "/BugsClipboardUtil.swf", "BugsClipboardUtil", "100%", "100%", "9.0.0", "expressInstall.swf", flashvars, params, attr, function(e) {
				if(e.success) this.swf = e.ref;
			}.bind(this));
		}
	},
	
	reposition : function() {
		if(!this.swf) {
			var swf = $("#BugsClipboardUtil")[0];
			if(!swf || swf.tagName == "DIV") return false;
			
			this.swf = swf;
		}
		
		var offset = this.button.offset();
		var width = this.button.outerWidth();
		var height = this.button.outerHeight();

		this.container.offset(offset).width(width).height(height);
		if(this.swf.setId) {
			this.swf.setId(this.id);
			this.swf.setCopyData(this.option.copyData);
		}
	},
	
	setCopyData : function(copyData) {
		this.option.copyData = copyData;
		
		if(!this.swf) {
			var swf = $("#BugsClipboardUtil")[0];
			if(!swf || swf.tagName == "DIV") return false;
			
			this.swf = swf;
		}
		
		if(this.swf.setCopyData)
			this.swf.setCopyData(this.option.copyData);
	},
	
	handleEvent : function(e) {
		//alert(e);
		switch(e) {
			case "mouseOver" :
				this.button.addClass(this.option.addClass);
				break;
			case "mouseOut" :
				this.button.removeClass(this.option.addClass);
				break;
			case "complete" :
				this.option.onComplete();
				break;
			case "mouseDown" :
				break;
			case "mouseUp" :
				break;
		}
	}
};
//-----------------------------------------------------------------------------

if ("undefined" == typeof bugs) bugs = {};
	
bugs.login = {
	initGnb : function() {
		bugs.login.init("frmLoginGnb", 
			jQuery("#frmLoginGnb button.btnLogin"), jQuery("p input"), 
			"inputID", "inputPW", "focus", "focus", "endInput");
		bugs.login.initLogged();
	},
	initPopup : function() {
		bugs.login.init("frmLoginPopup", 
			jQuery("#frmLoginPopup button.btnLogin"), jQuery(".enterIDPW input"), 
			"default", "default", "focus", "focus", "focus");
	},
	initCp : function() {
		bugs.login.init("frmLoginCp", 
			jQuery("#frmLoginCp button.btnLogin"), jQuery("p input"), 
			"inputID", "inputPW", "focus", "focus", "endInput");
	},
	initLogged : function() {
		$(".myInfo .layerMyInfo .infoB .cash .btn").click(buyCash);
	}, 
	init : function(formId, submitButton, inputs, 
			defaultInputClass, defaultPasswdClass, focusInputClass, focusPasswdClass, endInputClass) {
		var _form  = jQuery("#" + formId);
		var userId = jQuery("input[name=user_id]", _form);
		if(!bugs.login.empty(userId.val())) userId.addClass(endInputClass);
	
		var passWd = jQuery("input[name=passwd]", _form);;
		if(!bugs.login.empty(passWd.val())) passWd.addClass(endInputClass);

		passWd.keypress(function(event) {
			if(event.keyCode == 13) {
				bugs.login.submit(_form, userId, passWd);
			}
		});
		
		inputs.each(function(idx) {
			jQuery(this).bind("focus", function(event) {
				var className;
				if(idx == 0) {
					jQuery(event.target).removeClass(endInputClass);
					jQuery(event.target).addClass(focusInputClass);
				} else if(idx == 1) {
					jQuery(event.target).removeClass(endInputClass);
					jQuery(event.target).addClass(focusPasswdClass);
				}
			}).bind("blur", function(event) {
				if(!bugs.login.empty(this.value)) {
					jQuery(event.target).addClass(endInputClass);
				} else {
					if(idx == 0) {
						jQuery(event.target).removeClass(focusInputClass);							
						jQuery(event.target).addClass(defaultInputClass);
					} else if(idx == 1) {
						jQuery(event.target).removeClass(focusPasswdClass);
						jQuery(event.target).addClass(defaultPasswdClass);
					}
				}
			});
		});
		
		if(jQuery("#keepUid", _form).length > 0) {
			jQuery("#keepUid", _form).click(function() {
				if (jQuery(this).is(":checked")) {
					bugs.login.alert("<p><strong>현재 사용하시는 PC에<br />아이디를 저장하시겠습니까?</strong></p>" +
							"<p>PC방 등 공공장소에서는 개인정보가<br />유출될 수있으니 주의해 주시기 바랍니다.</p>", 
							{css : "layerLoginMsg"});
				}
			});
		}
		submitButton.click(function(event) {
			bugs.login.submit(_form, userId, passWd);
		});
		//
		//jQuery("#frmLoginGnb button.btnLogin").click(function(event) {
		//	gnbLoginSubmit(_for, userId, passWd);
		//});
	}, 
	alert : function(text, option) {
		if(typeof bugs.ui.showAlert == "undefined") alert(text);
		else bugs.ui.showAlert(text, option);
	},
	empty : function(str) {
		if(typeof str == "string" && bugs.utils.trim(str).length > 0) 
			return false;
		return true;
	},
	
	submit : function(_form, userId, passWd) {
		if(typeof castType != "undefined" && castType=="live"){
			hideVideoLayer();
		}
		if(bugs.login.empty(userId.val())) {
			bugs.login.alert("아이디를 입력해주세요!", {css : "layerLoginMsg", onOk : function() {
				userId.get(0).focus();
				if(typeof castType != "undefined" && castType=="live"){
					showVideoLayer();
				}
			}, onCancel : function() {
				userId.get(0).focus();
			}});
			
			return false;
		}
		if(bugs.login.empty(passWd.val())) {
			bugs.login.alert("비밀번호를 입력해주세요!", {css : "layerLoginMsg", onOk : function() {
				passWd.get(0).focus();
				if(typeof castType != "undefined" && castType=="live"){
					showVideoLayer();
				}
			}, onCancel : function() {
				passWd.get(0).focus();
			}});
			
			return false;
		}
		
		if(jQuery("#keepUid", _form).length > 0) {
			var oDate = new Date();
			if (jQuery("#keepUid", _form).is(":checked")) {
				oDate.setDate(oDate.getDate() + 30);	
				bugs.cookie.set("saveId", userId.val(), oDate, "/");
			} else {
				oDate.setDate(oDate.getDate() - 1);
				bugs.cookie.set("saveId", "", oDate, "/");
			}
		}
		var rUrl = jQuery("input[name=rUrl]", _form);
		if(bugs.login.empty(rUrl.val())) {
			//rUrl.val(g_urlBase);
			rUrl.val(document.location.href);
		}
		
		_form.submit();
	}
		
}
document.write("<div id=\"headerWrap\" class=\"cpHeader\">	<div id=\"header\" class=\"header\">		<ul class=\"topMenu\">			<li class=\"musicOff\">				<a href=\"http://www.bugs.co.kr?wl_ref=new_gnb\" class=\"tmMusic\">음악</a>			</li>			<li class=\"gameOff\"><a href='http://game.bugs.co.kr/?wl_ref=new_gnb' class=\"tmGame\">게임</a></li>			<li class=\"movieOff\"><a href='http://movie.bugs.co.kr/' class=\"tmMovie\">영화</a></li>			<li onmouseover=\"bugs.gnb.openMoreMenu();\" onmouseout=\"bugs.gnb.closeMoreMenu();\"><a class=\"tmMore\">더보기</a>				<ul class=\"layerMore\">					<li><a href=\"http://phone.bugs.co.kr?wl_ref=new_gnb\">폰꾸미기</a></li>					<li><a href='http://sing.bugs.co.kr/bugs/songroom/pList.php?P=01'>노래방</a></li>					<li><a href=\"http://www.tapsonic.co.kr?wl_ref=new_gnb\" target=\"_blank\">탭소닉</a></li>					<li><a href='http://shotonline.bugs.co.kr?wl_ref=new_gnb'>샷온라인</a></li>					<li><a href='http://audition.bugs.co.kr?wl_ref=new_gnb'>벅스오디션</a></li>									<li class=\"all\"><a href=\"http://www.bugs.co.kr/sitemap?wl_ref=new_gnb\">전체보기</a></li>									</ul>			</li>		</ul>		<!-- //topMenu -->		<div class=\"aboutCoupon\">			<a href=\"http://www.bugs.co.kr/pay/recommend?wl_ref=new_gnb\" class=\"buy\">이용권 구매</a>			<a href=\"http://secure.bugs.co.kr/pay/gifticon?wl_ref=new_gnb\" class=\"register\">상품권 등록</a>		</div><script type=\"text/javascript\">jQuery(function() {bugs.login.initGnb();});</script><fieldset class=\"login\"><legend>로그인</legend><form onsubmit=\"return false;\" action=\"https://secure.bugs.co.kr/member/login/process\" name=\"frmLoginGnb\" id=\"frmLoginGnb\" method=\"post\"><input type=\"hidden\" value=\"\" name=\"rUrl\" /><p><label>아이디 </label><input type=\"text\" name=\"user_id\" class=\"inputID\" maxlength=\"100\" tabindex=\"1\"/><label>비밀번호 </label><input type=\"password\" name=\"passwd\" class=\"inputPW\" maxlength=\"20\" tabindex=\"2\"/><button type=\"button\" tabindex=\"3\" class=\"btnLogin\">로그인</button></p><span class=\"findIDPW\"><a href=\"https://secure.bugs.co.kr/member/find/id?wl_ref=new_gnb\">ID / PW 찾기</a></span><span class=\"join\"><a href=\"https://secure.bugs.co.kr/member/join/memberMain?wl_ref=new_gnb\">회원가입</a></span></form></fieldset>		<script type=\"text/javascript\">	var rBannerIndex = 0;	var rBannerCnt = 0;	var rolling = function(){		rBannerIndex++;		if(rBannerIndex >= rBannerCnt) rBannerIndex = 0;		jQuery(\"#HeaderRollingBanner\").children().each(function(index){			if(index == rBannerIndex){				jQuery(this).show();			}else{				jQuery(this).hide();			}		});	};	jQuery(document).ready(function(){		rBannerCnt = jQuery(\"#HeaderRollingBanner\").children().length;		setInterval(rolling, 3000);			});</script><div class=\"marketingArea\">	<ul id=\"HeaderRollingBanner\">		<li><a href=\"http://music.bugs.co.kr/musicpd?wl_ref=new_gnb_ad_1\"><img src=\"http://file.bugsm.co.kr/nbugs/banner/main/bn_hdMusicpd.jpg\" alt=\"벅스만의 선곡 전문가 뮤직PD\" /></a></li>		<li style=\"display:none;\"><a href=\"http://sing.bugs.co.kr/bugs/songroom/pList.php?P=01?wl_ref=new_gnb_ad_3\"><img src=\"http://file.bugsm.co.kr/nbugs/banner/main/bn_hdSongroom.jpg\" alt=\"벅스노래방\" /></a></li>		<li style=\"display:none;\"><a href=\"http://audition.bugs.co.kr/?wl_ref=new_gnb_ad_3\" target=\"_blank\"><img src=\"http://file.bugsm.co.kr/nbugs/banner/main/bn_hdOpeningParty.jpg\" alt=\"온라인댄스게임 벅스오디션\" /></a></li>	</ul></div>		<!-- //maketingArea -->	</div></div><!-- //headerWrap -->");
/* bugs gnb js */

try { bugs.login.initGnb(); } catch(e) { bugs.log.log(e); }
try { bugs.gnb.topSearchRolling(); } catch(e) { bugs.log.log(e); }
try { bugs.gnb.chkLoginCode(); } catch(e) { bugs.log.log(e); }
if(jQuery("#_searchBoxAdUrl").length > 0) {
	try { searchBoxAd.init(); } catch(e) { bugs.log.log(e); }
}

}; 
 ___bugsGnb(jQuery);
