/**
 * @overview Jigu Javascript Framework, v1.0
 * Copyright (c) 2009 Front-end Technology Center, Daum Communications.
 * 
 * $Version : 1.0 $
 * $Date : 2010-06-18 15:35 $
 * $Revision : 179 $
 * $Build : 493 $
 * 
 * Project site: http://play.daumcorp.com/display/ftst/Jigu+Javascript+Framework
 * Licensed under Daum Common License : http://dna.daumcorp.com/forge/docs/daum-license-1.0.txt
 */
(function(){if(!window.daum||!window.daum.extend){var a=window.daum={};a.extend=function(d,e,c){var b=c!==undefined?c:true,f;for(f in e){if(!d[f]||b){d[f]=e[f]}}return d}}else{return}a.extend(a,{version:"1.0_r179",Array:{compact:function(b){if(!b){return[]}var c=[],d;for(d=0;d<b.length;d+=1){if(!(b[d]===null||typeof(b[d])==="undefined")){c.push(b[d])}}return c},each:function(b,d){if(Array.prototype.forEach){return b.forEach(d)}for(var c=0;c<b.length;c+=1){d(b[c],c)}},indexOf:function(){if([].indexOf){return function(b,c){return b.indexOf(c)}}else{return function(b,d){for(var c=0;c<b.length;c+=1){if(b[c]===d){return c}}return -1}}}(),contains:function(b,c){return b.indexOf(c)>-1}},Browser:{ua:navigator.userAgent.toLowerCase(),offset:{width:0,height:0},browserInit:function(){this.ie=this.ua.indexOf("msie")!=-1;this.ie_sv1=this.ua.indexOf("sv1")!=-1;this.ie_sv2=this.ua.indexOf("sv2")!=-1;this.ie6=this.ua.indexOf("msie 6")!=-1;this.ie7=this.ua.indexOf("msie 7")!=-1;this.ie8=this.ua.indexOf("msie 8")!=-1;this.ie9=this.ua.indexOf("trident/5.0")!=-1;this.ff=this.ua.indexOf("firefox")!=-1&&this.ua.indexOf("navigator")==-1;this.ff2=this.ff&&this.ua.indexOf("firefox/2.")!=-1;this.ff3=this.ff&&this.ua.indexOf("firefox/3.")!=-1;this.sf=this.ua.indexOf("safari")!=-1&&this.ua.indexOf("chrome")==-1;this.webkit=this.ua.indexOf("applewebkit")!=-1;this.op=this.ua.indexOf("opera")!=-1;this.cr=this.ua.indexOf("chrome/")!=-1;this.ns=this.ua.indexOf("netscape")!=-1||(this.ua.indexOf("firefox")!=-1&&this.ua.indexOf("navigator")!=-1);this.gecko=this.ua.indexOf("gecko")!=-1;this.infopath=this.ua.indexOf("infopath")!=-1;this.etc=this.gecko&&this.ff&&this.ns;this.win=this.ua.indexOf("win")!=-1;this.vista=this.ua.indexOf("nt 6")!=-1;this.xp=this.ua.indexOf("nt 5.1")!=-1;this.w2k=this.ua.indexOf("nt 5.0")!=-1;this.w98=this.ua.indexOf("windows 98")!=-1;this.mac=this.ua.indexOf("mac")!=-1;this.unix=!(this.win||this.mac);this.versioning();return},versioning:function(){if(this.ie){if(this.ie8){this.ie7=this.ie6=this.ie_sv2=this.ie_sv1=false}if(this.ie7){this.ie6=this.ie_sv2=this.ie_sv1=false}}if(this.ff){if(this.ff3){this.ff2=false}}if(this.sf&&this.cr){this.sf=false}}},Element:{cleanBlankNodes:function(c){var d=a.$(c),b=d.firstChild;try{do{if(b.nodeType===3&&!/\S/.test(b.nodeValue)){d.removeChild(b)}}while(b=b.nextSibling)}catch(d){}return d},getChildElements:function(d){var c=a.$(d).firstChild,b=[];try{do{if(c.nodeType===1){b.push(c)}}while(c=c.nextSibling)}catch(f){}return b},getElementsByClassName:function(f,c){if(document.getElementsByClassName.toString().indexOf("code")>0){return a.$A(f.getElementsByClassName(c))}var g=f==document||f==document.body||f==window;if(g||f.id){return a.$$((g?"":"#"+f.id+" ")+"."+a.String.trim(c).replace(/\s+/g,"."))}var b=a.$(f).getElementsByTagName("*"),e=[],d;for(d=0;d<b.length;d+=1){if(a.Element.hasClassName(b[d],c)){e.push(b[d])}}return(e.length>0)?e:[]},getFirstChild:function(b){var c=a.$(b).firstChild;while(c&&c.nodeType!==1){c=c.nextSibling}return c},getLastChild:function(c){var b=a.$(c).lastChild;while(b&&b.nodeType!==1){b=b.previousSibling}return b},getNext:function(c){var b=a.$(c).nextSibling;while(b&&b.nodeType!==1){b=b.nextSibling}return b},getPrev:function(b){var c=a.$(b).previousSibling;while(c&&c.nodeType!==1){c=c.previousSibling}return c},getParent:function(b){return a.$(b).parentNode},getCoords:function(c,d,l){var g=d||false,m=a.$(l)||false,j=a.$(c),n=j.offsetWidth,f=j.offsetHeight,k={left:0,top:0,right:0,bottom:0},b;while(j){k.left+=j.offsetLeft||0;k.top+=j.offsetTop||0;j=j.offsetParent;if(g){if(j){if(j.tagName=="BODY"){break}b=a.Element.getStyle(j,"position");if(b!=="static"){break}}}if(m&&m==j){break}}k.right=k.left+n;k.bottom=k.top+f;return k},getCoordsTarget:function(c,b){return a.Element.getCoords(c,false,b)},getStyle:function(f,g,d){var j=a.$(f),b,h,c,k=d||g;if(g.toLowerCase()=="float"){c=(a.Browser.ie)?"styleFloat":"cssFloat"}else{c=g}if(j.currentStyle){h=(c.indexOf("-")!==-1)?c.replace(/[\-](.)/g,function(l,e){return e.toUpperCase()}):c;b=j.currentStyle[h]}else{h=(/[A-Z]/.test(k))?k.replace(/([A-Z])/g,function(l,e){return"-"+e.toLowerCase()}):k;b=document.defaultView.getComputedStyle(j,null).getPropertyValue(h)}return b},hasClassName:function(g,f){var j=a.String.trim(a.$(g).className),d=a.String.trim(f),c=0,b,h,e;if(d.indexOf(" ")>0){b=d.replace(/\s+/g," ").split(" "),h=j.split(" ");b.each(function(k){c+=(h.indexOf(k)>-1)?1:0});e=b.length===c}else{e=j.length>0&&(j==d||new RegExp("(^|\\s)"+d+"(\\s|$)").test(j))}return e},visible:function(b){var c=a.$(b);return !(c.offsetWidth===0&&c.offsetHeight===0)},show:function(b,d){var c=a.$(b);c.style.display=d||"block";return c},hide:function(b){var c=a.$(b);c.style.display="none";return c},toggle:function(b,d){var c=a.$(b);return(a.Element.visible(c))?a.Element.hide(c):a.Element.show(c,d||"block")},addClassName:function(c,b){var d=a.$(c);if(a.Element.hasClassName(d,b)){return d}d.className=(a.String.trim(d.className)==="")?b:d.className+" "+b;return d},removeClassName:function(c,b){return a.Element.replaceClassName(c,b,"")},replaceClassName:function(c,g,h){var d=a.$(c),f=d.className.split(" "),b;for(b=0;b<f.length;b+=1){if(f[b]==g){f[b]=h}}d.className=a.String.replaceAll(a.String.trim(f.join(" ")),/\s+/," ");return d},setOpacity:function(b,d){var c=a.$(b);c.style.filter="alpha(opacity="+d*100+")";c.style.opacity=c.style.MozOpacity=c.style.KhtmlOpacity=d;return c}},Event:{observer:[],EVENTID:0,crossEvent:function(){var b={};if(!!document.addEventListener){b.add=function(d){var c=d.type;if(c.toLowerCase()=="mousewheel"&&a.Browser.ff){c="DOMMouseScroll"}d.src.addEventListener(c,d.handler,d.isCapture)};b.remove=function(d){var c=d.type;if(c.toLowerCase()=="mousewheel"&&a.Browser.ff){c="DOMMouseScroll"}d.src.removeEventListener(c,d.handler,d.isCapture)}}else{b.add=function(d){var c=d.type;if(c.toLowerCase()=="dommousescroll"){c="mousewheel"}d.src.attachEvent("on"+c,d.handler)};b.remove=function(d){var c=d.type;if(c.toLowerCase()=="dommousescroll"){c="mousewheel"}d.src.detachEvent("on"+c,d.handler)}}return b}(),bindedHandlerRegister:[],getBindedHandler:function(g,f){var e=a.Event.bindedHandlerRegister,b=-1,d,c;for(d=0,loop=e.length;d<loop;d+=1){if(e[d].src===g&&e[d].handler===f){b=d;break}}if(b>=0){return e[b].bindedHandler}else{c=a.Function.bindAsEventListener(f,g);e.push({src:g,handler:f,bindedHandler:c});return c}},addEvent:function(f,j,k,e){var b=a.$(f),h=false,d=-1,c=a.Event.EVENTID++,g={src:b,type:j,handler:k,isCapture:e||false};a.Event.observer[c]=g;a.Event.crossEvent.add(g);return c},removeEvent:function(f,e,d,c){var b=a.Event.observer;if(!!f&&!e&&!d){a.Event.crossEvent.remove(b[f]);delete a.Event.observer[f]}else{var h=a.$(f);a.Event.crossEvent.remove({src:h,type:e,handler:d,isCapture:c||false});for(var g in b){if(b[g].src===h&&b[g].type===e&&b[g].handler===d&&b[g].isCapture===(c||false)){delete a.Event.observer[g];break}}}},stopObserving:function(b){if(a.Event.observer[b]){a.Event.removeEvent(b)}},hasObserver:function(f,d){if(typeof f==="number"){return !!a.Event.observer[f]}else{var c=false,b=a.Event.observer;for(var e in b){if(b[e].src===f&&b[e].type===d){c=true;break}}return c}},stopEvent:function(b){a.Event.stopPropagation(b);a.Event.preventDefault(b);return false},preventDefault:function(c){var b=c||window.event;if(b.preventDefault){b.preventDefault()}else{b.returnValue=false}return false},stopPropagation:function(c){var b=c||window.event;if(b.stopPropagation){b.stopPropagation()}else{b.cancelBubble=true}},GC:function(){if(a.Browser.ie){return function(){for(var b in a.Event.observer){var c=a.Event.observer[b].src;if(c&&c.ownerDocument){try{!c.offsetParent&&a.Event.stopObserving(b)}catch(c){a.Event.stopObserving(b)}}}}}else{return function(){for(var b in a.Event.observer){var d=a.Event.observer[b].src,c=false;if(d&&d.ownerDocument){if(!d.offsetParent){do{if(d===document.body){c=true;break}}while(d=d.parentNode);!c&&a.Event.stopObserving(b)}}}}}}},Function:{bind:function(e){var g=e,c=a.$A(arguments),b,d;c.shift();b=c.shift();d=function(){return g.apply(b,c.concat(a.$A(arguments)))};d.__Binded=true;return d},bindAsEventListener:function(e){var g=e,c=a.$A(arguments),b,d;c.shift();b=c.shift();d=function(f){return g.apply(b,[f||window.event].concat(c))};d.__Binded=true;return d},interval:function(e,b,d){var c=(d)?a.Function.bind(e,d):e;return window.setInterval(c,b)},timeout:function(e,b,d){var c=(d)?a.Function.bind(e,d):e;return window.setTimeout(c,b)}},Fx:{},Number:{},Object:{isArray:function(b){return(a.Object.getType(b)==="Array")},isBoolean:function(b){return(a.Object.getType(b)==="Boolean")},isFunction:function(b){return(a.Object.getType(b)==="Function")},isString:function(b){return(a.Object.getType(b)==="String")},isNumber:function(b){return(a.Object.getType(b)==="Number")},isObject:function(b){return(a.Object.getType(b)==="Object")},getType:function(b){return Object.prototype.toString.call(b).toString().match(/\[object\s(\w*)\]$/)[1]},toJSON:function(b){return a.toJSON(b)}},String:{trim:function(b){return b.replace(/^\s\s*/,"").replace(/\s\s*$/,"")},replaceAll:function(){return function(c,b,d){if(b.constructor==RegExp){return c.replace(new RegExp(b.toString().replace(/^\/|\/$/gi,""),"gi"),d)}return c.split(b).join(d)}}(),byteLength:function(c){var b=0;a.$A(c.toString()).each(function(d){b+=(escape(d).length>3)?2:1});return b},cutString:function(e,b,d){var g=d||"",f=b-g.length,j=0,h="",c;a.$A(e.toString()).each(function(k){c=(escape(k).length>3)?2:1;j+=c;f-=c;if(f>=0){h+=k}});return(b>=j)?e:h+=g}},$:function(b){return typeof b=="string"?document.getElementById(b):b},$A:function(c){if(!c){return[]}if(c instanceof Array&&!a.Browser.op){return c}var d=(typeof c=="string"&&(a.ie||a.op))?c.split(""):c,b;try{b=Array.prototype.slice.call(d)}catch(g){b=[];for(var f=0;f<c.length;f+=1){b.push(c[f])}}return b},$C:function(b,d){var c=a.$(b);return(c!==null)?a.Element.getElementsByClassName(c,d):null},$E:function(c){var b=a.$(c);if(b){a.extendMethods(b,a.Element,false);b.addEvent=a.methodize(a.Event.addEvent);b.removeEvent=a.methodize(a.Event.removeEvent)}return b},$F:function(d){var f=a.$(d)||document.getElementsByName(d)[0],c,g,b;if(!f||(f.tagName!=="INPUT"&&f.tagName!=="SELECT"&&f.tagName!=="TEXTAREA")){return""}if(f.type=="radio"||f.type=="checkbox"){for(c=0,g=document.getElementsByName(f.name),b=new Array();c<g.length;c+=1){if(g[c].checked){b.push(g[c].value)}}b=(f.type=="radio")?b[0]:b}else{if(f.type=="select-multiple"){for(c=0,g=a.Element.getChildElements(f),b=new Array();c<g.length;c+=1){if(g[c].selected){b.push(g[c].value)}}}else{if(f.value){b=f.value}}}return b},$T:function(b,c){return(c||document).getElementsByTagName(b)},activeX:function(){return function(l,d,c){var p=new Date(),f=c||false,o=p.getMinutes().toString()+p.getSeconds()+p.getMilliseconds(),j=l.param,k,n,h=false,b=null,m="<object ",g,e;m+='id="'+((!l.id)?"daumActiveX"+o+'" ':l.id+'" ');m+='name="'+((!l.name)?"daumActiveX"+o+'" ':l.name+'" ');m+=(l.type)?'type="'+l.type+'" ':"";m+=(l.classid)?'classid="'+l.classid+'" ':"";m+=(l.width)?'width="'+l.width+'" ':"";m+=(l.height)?'height="'+l.height+'" ':"";m+=(l.codebase)?'codebase="'+l.codebase+'" ':"";m+=">\r\n";for(k in j){if(j.hasOwnProperty(k)){m+='<param name="'+k+'" value="'+j[k]+'" />\r\n'}}m+="<embed ";m+='id="'+((!l.id)?"daumActiveX"+o+'" ':l.id+'" ');m+='name="'+((!l.name)?"daumActiveX"+o+'" ':l.name+'" ');m+=(l.type)?'type="'+l.type+'" ':"";m+=(l.width)?'width="'+l.width+'" ':"";m+=(l.height)?'height="'+l.height+'" ':"";for(k in j){if(j.hasOwnProperty(k)){n=k.toLowerCase();if(n){if(n=="movie"||n=="src"){b=j[k]}if(n!="flashvars"){m+=n+'="'+j[k]+'" '}else{h=j[k]}}}}m+=" />\r\n</object>\r\n";if(!!h&&!!b){m=m.replace('src="'+b+'"','src="'+b+(b.indexOf("?")==-1?"?":"&")+h+'"')}if(!f){g=a.$(d);if(a.Browser.ie||l.type=="application/x-shockwave-flash"||l.classid.toLowerCase()=="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"||(a.Browser.win&&l.classid.toLowerCase()=="clsid:22d6f312-b0f6-11d0-94ab-0080c74c7e95")){if(!f){g.innerHTML=m}}e=a.Element.getFirstChild(g);return(a.Browser.ie)?e:e.getElementsByTagName("embed")[0]}else{return m}}}(),documentLoaded:false,extendMethods:function(d,e,c){var b=c!==undefined?c:true,f;for(f in e){if(!d[f]||b){if(typeof(e[f])=="function"){d[f]=a.methodize(e[f])}}}return d},methodize:function(b){return function(){return b.apply(null,[this].concat(a.$A(arguments)))}},nativeExtend:function(){var b=[[a.Object,Object],[a.String,String.prototype],[a.Number,Number.prototype],[a.Array,Array.prototype],[a.Function,Function.prototype]],c;Array.prototype.isArray=true;Number.prototype.isNumber=true;String.prototype.isString=true;Function.prototype.isFunction=true;for(c=0;c<b.length;c+=1){a.extendMethods(b[c][1],b[c][0],false)}},random:function(c,b){return Math.floor(Math.random()*(b-c+1)+c)},showFlash:function(g,e,c,h,b){var d={quality:"high",wmode:"transparent",bgcolor:"#FFFFFF",pluginspace:"http://www.macromedia.com/go/getflashplayer",allowScriptAccess:"always",allowFullScreen:"true",htmltext:false},f={type:"application/x-shockwave-flash",classid:"clsid:d27cdb6e-ae6d-11cf-96b8-444553540000",codebase:"http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0",wmode:"transparent",width:e,height:c,param:{movie:g,src:g}};a.extend(d,b||{});a.extend(f.param,d);if(location.toString().indexOf("https://")!=-1){f.codebase=f.codebase.replace("http://","https://")}return a.activeX(f,h,d.htmltext)}})})();(function(){daum.Browser.browserInit();if(!document.getElementsByClassName){document.getElementsByClassName=daum.methodize(daum.Element.getElementsByClassName)}if(String.prototype.trim){daum.String.trim=function(a){return a.trim()}}return true})();daum.extend(daum,{createElement:function(g,f){var l,a="",j=daum.HTMLStack,d,b,h,k;if(!f){l=daum.String.startsWith(g,"<")?g:("<"+g+"></"+g+">")}else{for(i in f){a+=i+'="'+f[i]+'" '}l="<"+g+" "+a+"></"+g+">"}try{j.innerHTML=l;d=j.removeChild(j.firstChild);if(d.nodeType!==1){throw ({message:"shit browser!"})}else{return d}}catch(c){b=l.match(/\w+/).toString().toLowerCase();h={tbody:["<table>","</table>"],tr:["<table><tbody>","</tbody></table>"],td:["<table><tbody><tr>","</tr></tbody></table>"],option:["<select>","</select>"]};if(h[b]){j.innerHTML=h[b][0]+l+h[b][1];k=j.removeChild(j.firstChild);return k.getElementsByTagName(b)[0]}else{return document.createElement(l)}}},loadedScripts:{},loadTimer:{},load:function(e,a,b){if(daum.loadedScripts[e]){if(a){a()}return false}var c,d;c=document.createElement("script");c.type="text/javascript";for(d in b){if(b.hasOwnProperty(d)){c.setAttribute(d,b[d])}}c.src=e;daum.$T("head")[0].appendChild(c);if(!a){return false}c.onreadystatechange=function(){if(this.readyState=="loaded"||this.readyState=="complete"){if(!daum.loadedScripts[e]){daum.loadedScripts[e]=true;a()}}return};c.onload=function(){if(!daum.loadedScripts[e]){daum.loadedScripts[e]=true;a()}return};return true},urlParameter:function(){var e={},d=[],c,b=location.search.substr(1).split("&");for(c=0;c<b.length;c+=1){d=b[c].split("=");e[d[0]]=d[1]}return e}(),getParam:function(a){return this.urlParameter[a]||null},useHTMLPrototype:function(){daum.HTMLFragment=(document.createDocumentFragment)?document.createDocumentFragment():document.createElement("div");daum.HTMLPrototype=document.createElement("div");daum.HTMLStack=document.createElement("div");daum.HTMLPrototype.id="daum_html_prototype";daum.HTMLStack.id="daum_html_stack";daum.HTMLFragment.appendChild(daum.HTMLPrototype);daum.HTMLFragment.appendChild(daum.HTMLStack);daum.HTMLPrototype.style.position=daum.HTMLStack.style.position="absolute";daum.HTMLPrototype.style.left=daum.HTMLStack.style.left=daum.HTMLPrototype.style.top=daum.HTMLStack.style.top="-10000px";return true}(),toJSON:function(a){return JSON.stringify(a)},xmlToObject:function(c){var a=c.documentElement,b=function(g){var k={},l=daum.getChildElements(g),e,h;for(var f=0;f<l.length;f+=1){e=l[f].nodeName;h=(daum.getChildElements(l[f]).length>0)?b(l[f]):(l[f].firstChild==null)?"":l[f].firstChild.nodeValue;if(k[e]!=undefined||g.getElementsByTagName(e).length>1){if(k[e]==undefined){k[e]=[]}k[e].push(h)}else{k[e]=h}for(var d=0;d<l[f].attributes.length;d+=1){k[e+"@"+l[f].attributes[d].nodeName]=(l[f].attributes[d].nodeValue||"").toString()}}return k};return b(a)},jsonToObject:function(a){return JSON.parse(a)}});daum.extend(daum.Array,{copy:function(b){var e=[],c,d;for(c=0;c<b.length;c++){if(b[c].constructor==b.constructor){e[c]=daum.Array.copy(b[c])}else{if(typeof(b[c])=="object"){if(typeof(b[c].valueOf())=="object"){e[c]=b[c].constructor();for(d in b[c]){e[c][d]=b[c][d]}}else{e[c]=b[c].constructor(b[c].valueOf())}}else{e[c]=b[c]}}}return e},map:function(d,g){if(typeof Array.prototype.map==="function"&&Array.prototype.map.toString().indexOf("native")>0){return d.map(g)}for(var c=[],e=0,h=d.length;e<h;++e){c[e]=g(d[e],e)}return c},size:function(b){return daum.Array.compact(b).length},uniq:function(b){var c=[],d;for(d=0;d<b.length;d++){if(!daum.Array.contains(c,b[d])){c.push(b[d])}}return c},getFirst:function(b){return b[0]},getLast:function(b){return b[b.length-1]}});daum.extend(daum.Browser,{getWindowSize:function(){var a=(window.innerWidth||document.documentElement.clientWidth||document.body.clientWidth||1003)-2,b=(window.innerHeight||document.documentElement.clientHeight||document.body.clientHeight||650)-2;return{width:a,height:b}},getScrollOffsets:function(){return{left:window.pageXOffset||document.documentElement.scrollLeft||document.body.scrollLeft,top:window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop}},setCookie:function(c,e,a){var f=new Date(),b="";if(a){f.setDate(f.getDate()+a);b="expires="+f.toGMTString()+";"}document.cookie=c+"="+escape(e)+"; path=/;"+b},getCookie:function(c){var b=c+"=",d=document.cookie+";",e=d.indexOf(b),a;if(e!=-1){a=d.indexOf(";",e);return unescape(d.substring(e+b.length,a))}return},delCookie:function(a){document.cookie=a+"=;expires=Fri, 31 Dec 1987 23:59:59 GMT;"},setOffset:function(){var b=daum.Browser,a=oh=0;if(b.ie_sv1){a=10;oh=(b.infopath)?58:29}else{if(b.ie7){a=10;oh=81}else{if(b.etc){a=(b.mac)?0:6;oh=(b.mac)?68:54}else{if(b.ff2){a=(b.mac)?0:6;oh=(b.mac)?18:(b.infopath)?54:49}else{if(b.ff3){a=(b.mac)?0:8;oh=(b.mac)?68:(b.infopath)?85:75}else{if(b.sf){a=(b.mac)?0:4;oh=(b.mac)?23:27}else{if(b.ns){a=(b.mac)?0:6;oh=(b.mac)?18:54}else{if(b.op){a=(b.mac)?0:9;oh=(b.mac)?36:49}}}}}}}}b.offset.width=a;b.offset.height=oh}(),resizePop:function(b,d){var a=(typeof(b)=="object")?b.offsetHeight:d,c=(typeof(b)=="object")?b.offsetWidth:b;window.resizeTo(c+daum.Browser.offset.width,a+daum.Browser.offset.height)},popup:function(d,b,f,a){var c={name:"daumPopup",scroll:0,resize:0,status:0},g,e=function(h){return(h&&h!="no")?"yes":"no"};daum.extend(c,a||{},true);g="width="+b+",height="+f+",status="+e(c.status);g+=",resizable="+e(c.resize)+",scrollbars="+e(c.scroll);return window.open(d,c.name,g)}});daum.extend(daum.Function,{callBack:function(e){var d=e,b=daum.$A(arguments),c,a;b.shift();c=b.shift();return function(){b=b.concat(daum.$A(arguments));a=d.apply(null,b);c.apply(null,b);return a}},callFore:function(d){var c=d,a=daum.$A(arguments),b;a.shift();b=a.shift();return function(){a=a.concat(daum.$A(arguments));b(a);return c(a)}},inherit:function(e,d,a){var b=function(){},g;b.prototype=d.prototype;e.prototype=new b(),e.prototype.constructor=e;e.prototype.parent=(d.prototype.parent||[]).concat(d);e._parent=d;g=e.prototype.parent.length;e.prototype.$super=function(){this.constructor.prototype.parent[--g].apply(this,arguments);g=g==0?this.constructor.prototype.parent.length:g};if(a){daum.Function.members(e,a)}return e},members:function(c,d){var b,a=c._parent||c;for(var b in d){c.prototype[b]=(typeof(d[b])=="function")?(a.prototype[b])?(function(e,f){if(f.toString().indexOf("this.$super(")>-1){return function(){this.$prev_super=this.$super;this.$super=function(){this.$super=this.$prev_super;return a.prototype[e].apply(this,arguments)};return f.apply(this,arguments)}}return function(){return f.apply(this,arguments)}})(b,d[b]):(function(e,f){if(f.toString().indexOf("this.$super(")>-1){throw new Error(e+" function is not defined in "+c)}return function(){return f.apply(this,arguments)}})(b,d[b]):d[b]}return c},method:function(d,c,a){var b=d._parent||d;d.prototype[c]=(typeof(a)=="function")?(b.prototype[c])?(function(e,f){return function(){this.$super=function(){return b.prototype[e].apply(this,arguments)};return f.apply(this,arguments)}})(c,a):(function(e,f){return function(){this.$super=function(){return true};return f.apply(this,arguments)}})(c,a):a;return d}});daum.createFunction=function(d,a){var c="return function(",b;for(b=0;b<d.length;b++){c+=""+d[b]+","}c=c.replace(/,$/,"");c=c+"){"+a+"}";return(new Function(c))()};daum.extend(daum.Fx,{running:{},parse:function(e,c,d){if(c==="opacity"&&daum.ie){e=e===undefined?1:e}else{if(e==="transparent"||e.startsWith("rgba")){e="rgb(255,255,255)"}else{if(e==="auto"){e=daum.String.px(d["scroll"+c.charAt(0).toUpperCase()+c.substr(1)])}}}var a=parseFloat(e),b=e.toString().replace(/^\-?[\d\.]+/,"");return{value:isNaN(a)?b:a,unit:isNaN(a)?b.startsWith("rgb")||b.startsWith("#")?"color":"":b}},normalize:function(a){var h={},g,j=(typeof a==="object")?"":a,c,f=document.createElement("div"),e=("borderStyle backgroundColor borderBottomColor borderBottomWidth borderLeftColor borderLeftWidth borderRightColor borderRightWidth borderSpacing borderTopColor borderTopWidth bottom color fontSize fontWeight height left letterSpacing lineHeight marginBottom marginLeft marginRight marginTop maxHeight maxWidth minHeight minWidth opacity outlineColor outlineOffset outlineWidth paddingBottom paddingLeft paddingRight paddingTop right textIndent top width wordSpacing zIndex").split(" "),d=e.length,b;f.innerHTML='<div style="'+j+'"></div>';c=f.childNodes[0];if(""===j){for(b in a){c.style[b]=a[b].toString()}}while(d--){if(g=c.style[e[d]]){h[e[d]]=this.parse(g,e[d])}}return h},s:function(b,a,d){return b.substr(a,d||1)},stop:function(a,b){clearInterval(this.running[a.id]);delete daum.Fx.running[a.id];b&&b(a);a.id=a.id.toString().startsWith("__t")?"":a.id},color:function(b,g,k){var e=2,d,h,f,l=[],a=[];while(d=3,h=arguments[e-1],e--){if(this.s(h,0)==="r"){h=h.match(/\d+/g);while(d--){l.push(~~h[d])}}else{if(h.length===4){h="#"+this.s(h,1)+this.s(h,1)+this.s(h,2)+this.s(h,2)+this.s(h,3)+this.s(h,3)}while(d--){l.push(parseInt(this.s(h,1+d*2,2),16))}}}while(d--){f=~~(l[d+3]+(l[d]-l[d+3])*k);a.push(f<0?0:f>255?255:f)}return"rgb("+a.join(",")+")"},animate:function(g,n,o){var f=daum.$(g),a=o||{},k=this.normalize(n),h=f.currentStyle?f.currentStyle:getComputedStyle(f,null),c,j={},d=+new Date,b=(a.duration&&a.duration<=10?a.duration*1000:a.duration)||700,m=d+b,e,l=a.easing||function(q,p,s,r){return -s*(q/=r)*(q-2)+p};f.id=(!f.id)?"__t"+ +new Date+daum.random(1,10000):f.id;if(daum.ie6){f.style.zoom="1"}if(this.running[f.id]){clearInterval(this.running[f.id]);delete daum.Fx.running[f.id]}for(c in k){j[c]=this.parse(h[c],c,f)}if(daum.toJSON(j)===daum.toJSON(k)){this.stop(f,a.callback);return}e=setInterval(function(){var q=+new Date;for(c in k){try{f.style[c]=k[c].unit==="color"?daum.Fx.color(j[c].value,k[c].value,l(q-d,0,1,b)):l(q-d,j[c].value,k[c].value-j[c].value,b).toFixed(3)+k[c].unit}catch(p){f.style[c]=k[c].value;delete k[c]}if(c==="opacity"&&daum.ie){f.style.filter="alpha(opacity="+f.style[c]*100+")"}}if(q>m){for(c in k){f.style[c]=k[c].unit==="color"?daum.Fx.color(j[c].value,k[c].value,1):k[c].value+k[c].unit}this.stop(f,a.callback)}}.bind(this),13);this.running[f.id]=e},scrollTo:function(e,l){var d=daum.$E(e),a=l||{},f=(daum.ie)?document.documentElement.scrollTop:window.pageYOffset,c=+new Date,h=d.getCoords()["top"]+((a.offset)?a.offset:0),b=a.duration||700,j=c+b,g=a.easing||function(n,m,p,o){return -p*(n/=o)*(n-2)+m},k=setInterval(function(){var m=+new Date;window.scrollTo(0,g(m-c,f,h-f,b));if(m>j){window.scrollTo(0,h);clearInterval(k)}},13)}});daum.extend(daum.Element,{setLeft:function(a,c,b){return daum.Element.setStyleProperty(a,"left",c,b)},setTop:function(a,c,b){return daum.Element.setStyleProperty(a,"top",c,b)},setWidth:function(b,a,c){return daum.Element.setStyleProperty(b,"width",a,c)},setHeight:function(b,a,c){return daum.Element.setStyleProperty(b,"height",a,c)},setPosition:function(a,c,d,b){daum.Element.setStyleProperty(a,"left",c,b);return daum.Element.setStyleProperty(a,"top",d,b)},setSize:function(c,a,b,d){daum.Element.setStyleProperty(c,"width",a,d);return daum.Element.setStyleProperty(c,"height",b,d)},setStyleProperty:function(b,a,g,d){var f=daum.$(b),c;if(d||false){c=(isNaN(parseInt(f.style[a])))?parseInt(f["offset"+(a.replace(/^(.)/g,function(h,e){return e.toUpperCase()}))])+g:parseInt(f.style[a])+g}else{c=g}f.style[a]=daum.String.px(c);return f},setLeftByOffset:function(a,b){return daum.Element.setLeft(a,b,true)},setTopByOffset:function(a,b){return daum.Element.setTop(a,b,true)},setWidthByOffset:function(a,b){return daum.Element.setWidth(a,b,true)},setHeightByOffset:function(a,b){return daum.Element.setHeight(a,b,true)},setPositionByOffset:function(b,a,c){return daum.Element.setPosition(b,a,c,true)},setSizeByOffset:function(b,a,c){return daum.Element.setSize(b,a,c,true)},posHide:function(a){var b=daum.$(a);daum.Element.setPosition(b,-10000,-10000);return b},setCssText:function(){return(daum.Browser.ie)?function(b,a){b.style.cssText=a}:function(b,a){b.setAttribute("style",a)}}(),setPngOpacity:function(){if(daum.Browser.ie6){return function(a,c,d){var b=daum.$(a);b.style.filter='progid:DXImageTransform.Microsoft.AlphaImageLoader(src="'+c+'", sizingMethod="'+(d||"image")+'")';if(b.style.background!=""){b.style.background="none"}if(b.tagName.toLowerCase()=="img"){b.src="http://imap.daum-img.net/defaultimg/transparent.gif"}}}else{return function(b,d,f){var a=(f=="scale")?"repeat":"no-repeat",c=daum.$(b);if(c.tagName.toLowerCase()!="img"){c.style.background="url("+d+") "+a}else{c.src=d}}}}(),setStyle:function(c,d,b){if(b){return daum.Element.setStyleProperty(c,d,b,false)}var g=daum.$(c),a=g.style,f;if(d.length<1){return g}if(daum.Object.isString(d)){a.cssText+=";"+d}else{if(daum.Object.isObject(d)){for(f in d){a[(f=="float"||f=="cssFloat")?(undefined==a.styleFloat?"cssFloat":"styleFloat"):f]=d[f]}}}return g},destroy:function(b){var a="__daumGB",d=daum.$(a),c=daum.$(b);if(c.id===a){return}if(!d){d=daum.createElement("div",{id:a,style:"display:none;"});document.body.appendChild(d)}d.appendChild(c);d.innerHTML="";c=null}});daum.extend(daum.Event,{getWheel:function(a){var b=a||window.event,c=0;if(b.wheelDelta){c=b.wheelDelta/120}else{if(b.detail){c=-b.detail/3}}return c},getMouseButton:function(b){var c=b||window.event,a=c.button;return{left:(daum.Browser.ie)?a===1:a===0,middle:(daum.Browser.ie)?a===4:a===1,right:a==2}},getElement:function(a){var b=a||window.event;return b.srcElement||b.target}});daum.extend(daum.Number,{px:function(a){return daum.String.px(a)},fillZero:function(e,a){var d=a||0,b=e.toString();if(d<b.length){return b}while(b.length<d){b="0"+b}return b},toInt:function(b,a){return daum.String.toInt(b,a)},toFloat:function(a){return daum.String.toFloat(a)}});daum.extend(daum.String,{empty:function(a){return daum.String.isEmpty(a)},isEmpty:function(a){return(!a||a.length===0)},px:function(b){var a=parseInt(b);return(!isNaN(a))?a+"px":b},removeCR:function(a){return(a)?daum.String.replaceAll(a,/\n|\r/,""):null},toInt:function(b,a){return parseInt(b,a||10)},toFloat:function(a){return parseFloat(a)},startWith:function(b,a){return daum.String.startsWith(b,a)},startsWith:function(b,a){return b.indexOf(a)===0},endWith:function(b,a){return daum.String.endsWith(b,a)},endsWith:function(b,c){var a;return(a=b.length-c.length)>=0&&b.lastIndexOf(c)===a},cutPixel:function(c,f,e){if(!daum.documentLoaded){return false}var a=e||"",d,g,b;document.body.appendChild(daum.HTMLPrototype);daum.HTMLPrototype.innerHTML=a;d=daum.HTMLPrototype.offsetWidth;f-=d;daum.HTMLPrototype.innerHTML="";g=[];for(b=0;b<c.length;b+=1){daum.HTMLPrototype.innerHTML+=c.charAt(b);if(f>daum.HTMLPrototype.offsetWidth){g.push(c.charAt(b))}else{g.push(a);break}}daum.HTMLFragment.appendChild(daum.HTMLPrototype);return g.join("")},escape:function(b,a){return(a)?daum.String.escapeHTML(b):daum.String.unescapeHTML(b)},escapeHTML:function(a){return a.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#39;")},unescapeHTML:function(a){return daum.String.stripTags(a).replace(/&lt;/g,"<").replace(/&gt;/g,">").replace(/&amp;/g,"&").replace(/&quot;/g,'"').replace(/&#39;/g,"'")},toHTML:function(a){return daum.String.unescapeHTML(a)},stripTags:function(a){return a.replace(/<\w+(\s+("[^"]*"|'[^']*'|[^>])+)?>|<\/\w+>/gi,"")},stripTag:function(a){return daum.String.stripTags(a)}});daum.Ajax=function(a){this.options={url:"",method:"get",async:true,timeout:5000,paramString:"",encoding:"utf-8",onsuccess:function(){},onfailure:function(){},onloading:function(){},ontimeout:function(){},headers:{},link:"ignore"};daum.extend(this.options,a||{});this.init()};daum.Ajax.prototype={init:function(){if(window.XMLHttpRequest){this.XHR=new XMLHttpRequest()}else{if(window.ActiveXObject){try{this.XHR=new ActiveXObject("Msxml2.XMLHTTP")}catch(a){try{this.XHR=new ActiveXObject("Microsoft.XMLHTTP")}catch(a){this.XHR=null}}}}if(!this.XHR){return false}this.running=false},request:function(c,b){if(this.running){if(this.options.link==="cancel"){this.abort()}else{return}}this.setOptions(b);var a=c||this.options.url;if(this.options.paramString.length>0&&this.options.method=="get"){a=a+((a.indexOf("?")>0)?"&":"?")+this.options.paramString}this.open(a)},open:function(b){this.running=true;if(this.options.async){this.XHR.onreadystatechange=daum.Function.bindAsEventListener(this.stateHandle,this)}this.options.timer=daum.Function.timeout(this.abort,this.options.timeout,this);this.XHR.open(this.options.method,b,this.options.async);var c=this.options.headers;for(var a in c){this.XHR.setRequestHeader(a,c[a])}this.XHR.send(this.options.paramString);if(!this.options.async){this.stateHandle()}},abort:function(){if(this.XHR){this.XHR.abort();this.callTimeout();this.running=false}},stateHandle:function(a){switch(this.XHR.readyState){case 4:window.clearTimeout(this.options.timer);this.options.timer=null;if(this.XHR.status==200||this.XHR.status==304){this.callSuccess()}else{if(this.XHR.status>=400){this.callFailure(this.XHR.status)}}this.running=false;break;case 1:this.callLoading();break}},callSuccess:function(){this.options.onsuccess(this.XHR)},callFailure:function(){this.options.onfailure(this.XHR)},callLoading:function(){this.options.onloading(this.XHR)},callTimeout:function(){this.options.ontimeout(this.XHR)},setOptions:function(a){daum.extend(this.options,a||{});this.options.method=this.options.method.toLowerCase();this.setHeader("charset",this.options.encoding);if(this.options.method=="post"){this.setHeader("Content-Type","application/x-www-form-urlencoded")}},setHeader:function(a,b){if(typeof a==="object"){daum.extend(this.options.headers,a||{},true)}else{this.options.headers[a]=b}return this},getHeader:function(a){return this.XHR.getResponseHeader(a)}};daum.Ajax.xmlToObject=function(a){return daum.xmlToObject(a)};daum.Ajax.jsonToObject=function(a){return daum.jsonToObject(a)};daum.Template=function(a){this.template=a};daum.Template.prototype={evaluate:function(a){return this.template.replace(/#\{([A-Z_][\dA-Z_]*(?:\.[A-Z_][\dA-Z_]*)*)?\}/ig,function(d,e){var b=e?e.split("."):"";var c=a||"";while(b.length){c=c[b.shift()];if(c===undefined||c===null){return""}}return c})},toElement:function(a){return daum.createElement(this.evaluate(a))}};
/**
 * Sizzle CSS Selector Engine - v1.0
 *  Copyright 2009, The Dojo Foundation
 *  Released under the MIT, BSD, and GPL Licenses.
 *  More information: http://sizzlejs.com/
 */
(function(){var q=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?/g,j=0,d=Object.prototype.toString,o=false;var b=function(E,u,B,w){B=B||[];var e=u=u||document;if(u.nodeType!==1&&u.nodeType!==9){return[]}if(!E||typeof E!=="string"){return B}var C=[],D,z,H,G,A,t,s=true,x=p(u);q.lastIndex=0;while((D=q.exec(E))!==null){C.push(D[1]);if(D[2]){t=RegExp.rightContext;break}}if(C.length>1&&k.exec(E)){if(C.length===2&&f.relative[C[0]]){z=g(C[0]+C[1],u)}else{z=f.relative[C[0]]?[u]:b(C.shift(),u);while(C.length){E=C.shift();if(f.relative[E]){E+=C.shift()}z=g(E,z)}}}else{if(!w&&C.length>1&&u.nodeType===9&&!x&&f.match.ID.test(C[0])&&!f.match.ID.test(C[C.length-1])){var I=b.find(C.shift(),u,x);u=I.expr?b.filter(I.expr,I.set)[0]:I.set[0]}if(u){var I=w?{expr:C.pop(),set:a(w)}:b.find(C.pop(),C.length===1&&(C[0]==="~"||C[0]==="+")&&u.parentNode?u.parentNode:u,x);z=I.expr?b.filter(I.expr,I.set):I.set;if(C.length>0){H=a(z)}else{s=false}while(C.length){var v=C.pop(),y=v;if(!f.relative[v]){v=""}else{y=C.pop()}if(y==null){y=u}f.relative[v](H,y,x)}}else{H=C=[]}}if(!H){H=z}if(!H){throw"Syntax error, unrecognized expression: "+(v||E)}if(d.call(H)==="[object Array]"){if(!s){B.push.apply(B,H)}else{if(u&&u.nodeType===1){for(var F=0;H[F]!=null;F++){if(H[F]&&(H[F]===true||H[F].nodeType===1&&h(u,H[F]))){B.push(z[F])}}}else{for(var F=0;H[F]!=null;F++){if(H[F]&&H[F].nodeType===1){B.push(z[F])}}}}}else{a(H,B)}if(t){b(t,e,B,w);b.uniqueSort(B)}return B};b.uniqueSort=function(s){if(c){o=false;s.sort(c);if(o){for(var e=1;e<s.length;e++){if(s[e]===s[e-1]){s.splice(e--,1)}}}}return s};b.matches=function(e,s){return b(e,null,null,s)};b.find=function(y,e,z){var x,v;if(!y){return[]}for(var u=0,t=f.order.length;u<t;u++){var w=f.order[u],v;if((v=f.match[w].exec(y))){var s=RegExp.leftContext;if(s.substr(s.length-1)!=="\\"){v[1]=(v[1]||"").replace(/\\/g,"");x=f.find[w](v,e,z);if(x!=null){y=y.replace(f.match[w],"");break}}}}if(!x){x=e.getElementsByTagName("*")}return{set:x,expr:y}};b.filter=function(B,A,E,u){var t=B,G=[],y=A,w,e,x=A&&A[0]&&p(A[0]);while(B&&A.length){for(var z in f.filter){if((w=f.match[z].exec(B))!=null){var s=f.filter[z],F,D;e=false;if(y==G){G=[]}if(f.preFilter[z]){w=f.preFilter[z](w,y,E,G,u,x);if(!w){e=F=true}else{if(w===true){continue}}}if(w){for(var v=0;(D=y[v])!=null;v++){if(D){F=s(D,w,v,y);var C=u^!!F;if(E&&F!=null){if(C){e=true}else{y[v]=false}}else{if(C){G.push(D);e=true}}}}}if(F!==undefined){if(!E){y=G}B=B.replace(f.match[z],"");if(!e){return[]}break}}}if(B==t){if(e==null){throw"Syntax error, unrecognized expression: "+B}else{break}}t=B}return y};var f=b.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF-]|\\.)+)/,CLASS:/\.((?:[\w\u00c0-\uFFFF-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\((even|odd|[\dn+-]*)\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF-]|\\.)+)(?:\((['"]*)((?:\([^\)]+\)|[^\2\(\)]*)+)\2\))?/},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(e){return e.getAttribute("href")}},relative:{"+":function(y,e,x){var v=typeof e==="string",z=v&&!/\W/.test(e),w=v&&!z;if(z&&!x){e=e.toUpperCase()}for(var u=0,t=y.length,s;u<t;u++){if((s=y[u])){while((s=s.previousSibling)&&s.nodeType!==1){}y[u]=w||s&&s.nodeName===e?s||false:s===e}}if(w){b.filter(e,y,true)}},">":function(x,s,y){var v=typeof s==="string";if(v&&!/\W/.test(s)){s=y?s:s.toUpperCase();for(var t=0,e=x.length;t<e;t++){var w=x[t];if(w){var u=w.parentNode;x[t]=u.nodeName===s?u:false}}}else{for(var t=0,e=x.length;t<e;t++){var w=x[t];if(w){x[t]=v?w.parentNode:w.parentNode===s}}if(v){b.filter(s,x,true)}}},"":function(u,s,w){var t=j++,e=r;if(!/\W/.test(s)){var v=s=w?s:s.toUpperCase();e=n}e("parentNode",s,t,u,v,w)},"~":function(u,s,w){var t=j++,e=r;if(typeof s==="string"&&!/\W/.test(s)){var v=s=w?s:s.toUpperCase();e=n}e("previousSibling",s,t,u,v,w)}},find:{ID:function(s,t,u){if(typeof t.getElementById!=="undefined"&&!u){var e=t.getElementById(s[1]);return e?[e]:[]}},NAME:function(t,w,x){if(typeof w.getElementsByName!=="undefined"){var s=[],v=w.getElementsByName(t[1]);for(var u=0,e=v.length;u<e;u++){if(v[u].getAttribute("name")===t[1]){s.push(v[u])}}return s.length===0?null:s}},TAG:function(e,s){return s.getElementsByTagName(e[1])}},preFilter:{CLASS:function(u,s,t,e,x,y){u=" "+u[1].replace(/\\/g,"")+" ";if(y){return u}for(var v=0,w;(w=s[v])!=null;v++){if(w){if(x^(w.className&&(" "+w.className+" ").indexOf(u)>=0)){if(!t){e.push(w)}}else{if(t){s[v]=false}}}}return false},ID:function(e){return e[1].replace(/\\/g,"")},TAG:function(s,e){for(var t=0;e[t]===false;t++){}return e[t]&&p(e[t])?s[1]:s[1].toUpperCase()},CHILD:function(e){if(e[1]=="nth"){var s=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(e[2]=="even"&&"2n"||e[2]=="odd"&&"2n+1"||!/\D/.test(e[2])&&"0n+"+e[2]||e[2]);e[2]=(s[1]+(s[2]||1))-0;e[3]=s[3]-0}e[0]=j++;return e},ATTR:function(v,s,t,e,w,x){var u=v[1].replace(/\\/g,"");if(!x&&f.attrMap[u]){v[1]=f.attrMap[u]}if(v[2]==="~="){v[4]=" "+v[4]+" "}return v},PSEUDO:function(v,s,t,e,w){if(v[1]==="not"){if(q.exec(v[3]).length>1||/^\w/.test(v[3])){v[3]=b(v[3],null,null,s)}else{var u=b.filter(v[3],s,t,true^w);if(!t){e.push.apply(e,u)}return false}}else{if(f.match.POS.test(v[0])||f.match.CHILD.test(v[0])){return true}}return v},POS:function(e){e.unshift(true);return e}},filters:{enabled:function(e){return e.disabled===false&&e.type!=="hidden"},disabled:function(e){return e.disabled===true},checked:function(e){return e.checked===true},selected:function(e){e.parentNode.selectedIndex;return e.selected===true},parent:function(e){return !!e.firstChild},empty:function(e){return !e.firstChild},has:function(t,s,e){return !!b(e[3],t).length},header:function(e){return/h\d/i.test(e.nodeName)},text:function(e){return"text"===e.type},radio:function(e){return"radio"===e.type},checkbox:function(e){return"checkbox"===e.type},file:function(e){return"file"===e.type},password:function(e){return"password"===e.type},submit:function(e){return"submit"===e.type},image:function(e){return"image"===e.type},reset:function(e){return"reset"===e.type},button:function(e){return"button"===e.type||e.nodeName.toUpperCase()==="BUTTON"},input:function(e){return/input|select|textarea|button/i.test(e.nodeName)}},setFilters:{first:function(s,e){return e===0},last:function(t,s,e,u){return s===u.length-1},even:function(s,e){return e%2===0},odd:function(s,e){return e%2===1},lt:function(t,s,e){return s<e[3]-0},gt:function(t,s,e){return s>e[3]-0},nth:function(t,s,e){return e[3]-0==s},eq:function(t,s,e){return e[3]-0==s}},filter:{PSEUDO:function(x,t,u,y){var s=t[1],v=f.filters[s];if(v){return v(x,u,t,y)}else{if(s==="contains"){return(x.textContent||x.innerText||"").indexOf(t[3])>=0}else{if(s==="not"){var w=t[3];for(var u=0,e=w.length;u<e;u++){if(w[u]===x){return false}}return true}}}},CHILD:function(e,u){var x=u[1],s=e;switch(x){case"only":case"first":while((s=s.previousSibling)){if(s.nodeType===1){return false}}if(x=="first"){return true}s=e;case"last":while((s=s.nextSibling)){if(s.nodeType===1){return false}}return true;case"nth":var t=u[2],A=u[3];if(t==1&&A==0){return true}var w=u[0],z=e.parentNode;if(z&&(z.sizcache!==w||!e.nodeIndex)){var v=0;for(s=z.firstChild;s;s=s.nextSibling){if(s.nodeType===1){s.nodeIndex=++v}}z.sizcache=w}var y=e.nodeIndex-A;if(t==0){return y==0}else{return(y%t==0&&y/t>=0)}}},ID:function(s,e){return s.nodeType===1&&s.getAttribute("id")===e},TAG:function(s,e){return(e==="*"&&s.nodeType===1)||s.nodeName===e},CLASS:function(s,e){return(" "+(s.className||s.getAttribute("class"))+" ").indexOf(e)>-1},ATTR:function(w,u){var t=u[1],e=f.attrHandle[t]?f.attrHandle[t](w):w[t]!=null?w[t]:w.getAttribute(t),x=e+"",v=u[2],s=u[4];return e==null?v==="!=":v==="="?x===s:v==="*="?x.indexOf(s)>=0:v==="~="?(" "+x+" ").indexOf(s)>=0:!s?x&&e!==false:v==="!="?x!=s:v==="^="?x.indexOf(s)===0:v==="$="?x.substr(x.length-s.length)===s:v==="|="?x===s||x.substr(0,s.length+1)===s+"-":false},POS:function(v,s,t,w){var e=s[2],u=f.setFilters[e];if(u){return u(v,t,s,w)}}}};var k=f.match.POS;for(var m in f.match){f.match[m]=new RegExp(f.match[m].source+/(?![^\[]*\])(?![^\(]*\))/.source)}var a=function(s,e){s=Array.prototype.slice.call(s,0);if(e){e.push.apply(e,s);return e}return s};try{Array.prototype.slice.call(document.documentElement.childNodes,0)}catch(l){a=function(v,u){var s=u||[];if(d.call(v)==="[object Array]"){Array.prototype.push.apply(s,v)}else{if(typeof v.length==="number"){for(var t=0,e=v.length;t<e;t++){s.push(v[t])}}else{for(var t=0;v[t];t++){s.push(v[t])}}}return s}}var c;if(document.documentElement.compareDocumentPosition){c=function(s,e){if(!s.compareDocumentPosition||!e.compareDocumentPosition){if(s==e){o=true}return 0}var t=s.compareDocumentPosition(e)&4?-1:s===e?0:1;if(t===0){o=true}return t}}else{if("sourceIndex" in document.documentElement){c=function(s,e){if(!s.sourceIndex||!e.sourceIndex){if(s==e){o=true}return 0}var t=s.sourceIndex-e.sourceIndex;if(t===0){o=true}return t}}else{if(document.createRange){c=function(u,s){if(!u.ownerDocument||!s.ownerDocument){if(u==s){o=true}return 0}var t=u.ownerDocument.createRange(),e=s.ownerDocument.createRange();t.selectNode(u);t.collapse(true);e.selectNode(s);e.collapse(true);var v=t.compareBoundaryPoints(Range.START_TO_END,e);if(v===0){o=true}return v}}}}(function(){var s=document.createElement("div"),t="script"+(new Date).getTime();s.innerHTML="<a name='"+t+"'/>";var e=document.documentElement;e.insertBefore(s,e.firstChild);if(!!document.getElementById(t)){f.find.ID=function(v,w,x){if(typeof w.getElementById!=="undefined"&&!x){var u=w.getElementById(v[1]);return u?u.id===v[1]||typeof u.getAttributeNode!=="undefined"&&u.getAttributeNode("id").nodeValue===v[1]?[u]:undefined:[]}};f.filter.ID=function(w,u){var v=typeof w.getAttributeNode!=="undefined"&&w.getAttributeNode("id");return w.nodeType===1&&v&&v.nodeValue===u}}e.removeChild(s);e=s=null})();(function(){var e=document.createElement("div");e.appendChild(document.createComment(""));if(e.getElementsByTagName("*").length>0){f.find.TAG=function(s,w){var v=w.getElementsByTagName(s[1]);if(s[1]==="*"){var u=[];for(var t=0;v[t];t++){if(v[t].nodeType===1){u.push(v[t])}}v=u}return v}}e.innerHTML="<a href='#'></a>";if(e.firstChild&&typeof e.firstChild.getAttribute!=="undefined"&&e.firstChild.getAttribute("href")!=="#"){f.attrHandle.href=function(s){return s.getAttribute("href",2)}}e=null})();if(document.querySelectorAll){(function(){var e=b,t=document.createElement("div");t.innerHTML="<p class='TEST'></p>";if(t.querySelectorAll&&t.querySelectorAll(".TEST").length===0){return}b=function(x,w,u,v){w=w||document;if(!v&&w.nodeType===9&&!p(w)){try{return a(w.querySelectorAll(x),u)}catch(y){}}return e(x,w,u,v)};for(var s in e){b[s]=e[s]}t=null})()}if(document.getElementsByClassName&&document.documentElement.getElementsByClassName){(function(){var e=document.createElement("div");e.innerHTML="<div class='test e'></div><div class='test'></div>";if(e.getElementsByClassName("e").length===0){return}e.lastChild.className="e";if(e.getElementsByClassName("e").length===1){return}f.order.splice(1,0,"CLASS");f.find.CLASS=function(s,t,u){if(typeof t.getElementsByClassName!=="undefined"&&!u){return t.getElementsByClassName(s[1])}};e=null})()}function n(s,x,w,B,y,A){var z=s=="previousSibling"&&!A;for(var u=0,t=B.length;u<t;u++){var e=B[u];if(e){if(z&&e.nodeType===1){e.sizcache=w;e.sizset=u}e=e[s];var v=false;while(e){if(e.sizcache===w){v=B[e.sizset];break}if(e.nodeType===1&&!A){e.sizcache=w;e.sizset=u}if(e.nodeName===x){v=e;break}e=e[s]}B[u]=v}}}function r(s,x,w,B,y,A){var z=s=="previousSibling"&&!A;for(var u=0,t=B.length;u<t;u++){var e=B[u];if(e){if(z&&e.nodeType===1){e.sizcache=w;e.sizset=u}e=e[s];var v=false;while(e){if(e.sizcache===w){v=B[e.sizset];break}if(e.nodeType===1){if(!A){e.sizcache=w;e.sizset=u}if(typeof x!=="string"){if(e===x){v=true;break}}else{if(b.filter(x,[e]).length>0){v=e;break}}}e=e[s]}B[u]=v}}}var h=document.compareDocumentPosition?function(s,e){return s.compareDocumentPosition(e)&16}:function(s,e){return s!==e&&(s.contains?s.contains(e):true)};var p=function(e){return e.nodeType===9&&e.documentElement.nodeName!=="HTML"||!!e.ownerDocument&&e.ownerDocument.documentElement.nodeName!=="HTML"};var g=function(e,y){var u=[],v="",w,t=y.nodeType?[y]:y;while((w=f.match.PSEUDO.exec(e))){v+=w[0];e=e.replace(f.match.PSEUDO,"")}e=f.relative[e]?e+"*":e;for(var x=0,s=t.length;x<s;x++){b(e,t[x],u)}return b.filter(v,u)};window.Sizzle=b})();if(!daum.Browser.webkit){JSON=undefined}if(!this.JSON){this.JSON={}}(function(){function f(n){return n<10?"0"+n:n}if(typeof Date.prototype.toJSON!=="function"){Date.prototype.toJSON=function(key){return isFinite(this.valueOf())?this.getUTCFullYear()+"-"+f(this.getUTCMonth()+1)+"-"+f(this.getUTCDate())+"T"+f(this.getUTCHours())+":"+f(this.getUTCMinutes())+":"+f(this.getUTCSeconds())+"Z":null};String.prototype.toJSON=Number.prototype.toJSON=Boolean.prototype.toJSON=function(key){return this.valueOf()}}var cx=/[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,escapable=/[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,gap,indent,meta={"\b":"\\b","\t":"\\t","\n":"\\n","\f":"\\f","\r":"\\r",'"':'\\"',"\\":"\\\\"},rep;function quote(string){escapable.lastIndex=0;return escapable.test(string)?'"'+string.replace(escapable,function(a){var c=meta[a];return typeof c==="string"?c:"\\u"+("0000"+a.charCodeAt(0).toString(16)).slice(-4)})+'"':'"'+string+'"'}function str(key,holder){var i,k,v,length,mind=gap,partial,value=holder[key];if(value&&typeof value==="object"&&typeof value.toJSON==="function"){value=value.toJSON(key)}if(typeof rep==="function"){value=rep.call(holder,key,value)}switch(typeof value){case"string":return quote(value);case"number":return isFinite(value)?String(value):"null";case"boolean":case"null":return String(value);case"object":if(!value){return"null"}gap+=indent;partial=[];if(Object.prototype.toString.apply(value)==="[object Array]"){length=value.length;for(i=0;i<length;i+=1){partial[i]=str(i,value)||"null"}v=partial.length===0?"[]":gap?"[\n"+gap+partial.join(",\n"+gap)+"\n"+mind+"]":"["+partial.join(",")+"]";gap=mind;return v}if(rep&&typeof rep==="object"){length=rep.length;for(i=0;i<length;i+=1){k=rep[i];if(typeof k==="string"){v=str(k,value);if(v){partial.push(quote(k)+(gap?": ":":")+v)}}}}else{for(k in value){if(Object.hasOwnProperty.call(value,k)){v=str(k,value);if(v){partial.push(quote(k)+(gap?": ":":")+v)}}}}v=partial.length===0?"{}":gap?"{\n"+gap+partial.join(",\n"+gap)+"\n"+mind+"}":"{"+partial.join(",")+"}";gap=mind;return v}}if(typeof JSON.stringify!=="function"){JSON.stringify=function(value,replacer,space){var i;gap="";indent="";if(typeof space==="number"){for(i=0;i<space;i+=1){indent+=" "}}else{if(typeof space==="string"){indent=space}}rep=replacer;if(replacer&&typeof replacer!=="function"&&(typeof replacer!=="object"||typeof replacer.length!=="number")){throw new Error("JSON.stringify")}return str("",{"":value})}}if(typeof JSON.parse!=="function"){JSON.parse=function(text,reviver){var j;function walk(holder,key){var k,v,value=holder[key];if(value&&typeof value==="object"){for(k in value){if(Object.hasOwnProperty.call(value,k)){v=walk(value,k);if(v!==undefined){value[k]=v}else{delete value[k]}}}}return reviver.call(holder,key,value)}text=String(text);cx.lastIndex=0;if(cx.test(text)){text=text.replace(cx,function(a){return"\\u"+("0000"+a.charCodeAt(0).toString(16)).slice(-4)})}if(/^[\],:{}\s]*$/.test(text.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,"@").replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,"]").replace(/(?:^|:|,)(?:\s*\[)+/g,""))){j=eval("("+text+")");return typeof reviver==="function"?walk({"":j},""):j}throw new SyntaxError("JSON.parse")}}}());

/*!
 * Jigu Initialization
 *  more information: http://play.daumcorp.com/display/ftst/Jigu+Initialization
 */
/* @ cc_on _d = document; eval(‘var document = _d’) @*/
(function(){
/*
	if(!window.$) window.$ = daum.$;	
	if(!window.$A) window.$A = daum.$A;
	if(!window.$E) window.$E = daum.$E;
	if(!window.$T) window.$T = daum.$T;
	if(!window.$C) window.$C = daum.$C;
	if(window.Sizzle) window.$$ = daum.$$ = window.Sizzle;
*/
	if(window.Sizzle) daum.$$ = window.Sizzle;
	daum.extend(daum, daum.Event);
	daum.extend(daum, daum.Browser);
	daum.extend(daum, daum.Element);
	if(daum.Event.GC!=undefined){window.JiguEventGC = daum.Function.interval(daum.Event.GC, 60000, daum.Event);}
	daum.Event.addEvent(window, "load", function(){ daum.documentLoaded = true; });
	daum.nativeExtend();
	if(!window.console){window.console={debug:function(){},log:function(){}}}else{if(!window.console.log){window.console.debug=window.console.log=function(){}}else{if(!window.console.debug){window.console.debug=function(){for(var b=0,a=arguments.length;b<a;b++){window.console.log(arguments[b])}}}}};
	return true;
})();


/*	JSON
    
    http://www.JSON.org/json2.js
    2010-03-20
    
 	<example>	var ss = YZ.JSON.parse('{"a": "b"}'); 				
 */

if(!this.JSON){this.JSON={};}(function(){function f(n){return n<10?'0'+n:n;}if(typeof Date.prototype.toJSON!=='function'){Date.prototype.toJSON=function(key){return isFinite(this.valueOf())?this.getUTCFullYear()+'-'+f(this.getUTCMonth()+1)+'-'+f(this.getUTCDate())+'T'+f(this.getUTCHours())+':'+f(this.getUTCMinutes())+':'+f(this.getUTCSeconds())+'Z':null;};String.prototype.toJSON=Number.prototype.toJSON=Boolean.prototype.toJSON=function(key){return this.valueOf();};}var cx=/[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,escapable=/[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,gap,indent,meta={'\b':'\\b','\t':'\\t','\n':'\\n','\f':'\\f','\r':'\\r','"':'\\"','\\':'\\\\'},rep;function quote(string){escapable.lastIndex=0;return escapable.test(string)?'"'+string.replace(escapable,function(a){var c=meta[a];return typeof c==='string'?c:'\\u'+('0000'+a.charCodeAt(0).toString(16)).slice(-4);})+'"':'"'+string+'"';}function str(key,holder){var i,k,v,length,mind=gap,partial,value=holder[key];if(value&&typeof value==='object'&&typeof value.toJSON==='function'){value=value.toJSON(key);}if(typeof rep==='function'){value=rep.call(holder,key,value);}switch(typeof value){case'string':return quote(value);case'number':return isFinite(value)?String(value):'null';case'boolean':case'null':return String(value);case'object':if(!value){return'null';}gap+=indent;partial=[];if(Object.prototype.toString.apply(value)==='[object Array]'){length=value.length;for(i=0;i<length;i+=1){partial[i]=str(i,value)||'null';}v=partial.length===0?'[]':gap?'[\n'+gap+partial.join(',\n'+gap)+'\n'+mind+']':'['+partial.join(',')+']';gap=mind;return v;}if(rep&&typeof rep==='object'){length=rep.length;for(i=0;i<length;i+=1){k=rep[i];if(typeof k==='string'){v=str(k,value);if(v){partial.push(quote(k)+(gap?': ':':')+v);}}}}else{for(k in value){if(Object.hasOwnProperty.call(value,k)){v=str(k,value);if(v){partial.push(quote(k)+(gap?': ':':')+v);}}}}v=partial.length===0?'{}':gap?'{\n'+gap+partial.join(',\n'+gap)+'\n'+mind+'}':'{'+partial.join(',')+'}';gap=mind;return v;}}if(typeof JSON.stringify!=='function'){JSON.stringify=function(value,replacer,space){var i;gap='';indent='';if(typeof space==='number'){for(i=0;i<space;i+=1){indent+=' ';}}else if(typeof space==='string'){indent=space;}rep=replacer;if(replacer&&typeof replacer!=='function'&&(typeof replacer!=='object'||typeof replacer.length!=='number')){throw new Error('JSON.stringify');}return str('',{'':value});};}if(typeof JSON.parse!=='function'){JSON.parse=function(text,reviver){var j;function walk(holder,key){var k,v,value=holder[key];if(value&&typeof value==='object'){for(k in value){if(Object.hasOwnProperty.call(value,k)){v=walk(value,k);if(v!==undefined){value[k]=v;}else{delete value[k];}}}}return reviver.call(holder,key,value);}text=String(text);cx.lastIndex=0;if(cx.test(text)){text=text.replace(cx,function(a){return'\\u'+('0000'+a.charCodeAt(0).toString(16)).slice(-4);});}if(/^[\],:{}\s]*$/.test(text.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,'@').replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,']').replace(/(?:^|:|,)(?:\s*\[)+/g,''))){j=eval('('+text+')');return typeof reviver==='function'?walk({'':j},''):j;}throw new SyntaxError('JSON.parse');};}}());



/*	SWFObject v2.2 <http://code.google.com/p/swfobject/> 
	is released under the MIT License <http://www.opensource.org/licenses/mit-license.php> 
*/
var swfobject=function(){var D="undefined",r="object",S="Shockwave Flash",W="ShockwaveFlash.ShockwaveFlash",q="application/x-shockwave-flash",R="SWFObjectExprInst",x="onreadystatechange",O=window,j=document,t=navigator,T=false,U=[h],o=[],N=[],I=[],l,Q,E,B,J=false,a=false,n,G,m=true,M=function(){var aa=typeof j.getElementById!=D&&typeof j.getElementsByTagName!=D&&typeof j.createElement!=D,ah=t.userAgent.toLowerCase(),Y=t.platform.toLowerCase(),ae=Y?/win/.test(Y):/win/.test(ah),ac=Y?/mac/.test(Y):/mac/.test(ah),af=/webkit/.test(ah)?parseFloat(ah.replace(/^.*webkit\/(\d+(\.\d+)?).*$/,"$1")):false,X=!+"\v1",ag=[0,0,0],ab=null;if(typeof t.plugins!=D&&typeof t.plugins[S]==r){ab=t.plugins[S].description;if(ab&&!(typeof t.mimeTypes!=D&&t.mimeTypes[q]&&!t.mimeTypes[q].enabledPlugin)){T=true;X=false;ab=ab.replace(/^.*\s+(\S+\s+\S+$)/,"$1");ag[0]=parseInt(ab.replace(/^(.*)\..*$/,"$1"),10);ag[1]=parseInt(ab.replace(/^.*\.(.*)\s.*$/,"$1"),10);ag[2]=/[a-zA-Z]/.test(ab)?parseInt(ab.replace(/^.*[a-zA-Z]+(.*)$/,"$1"),10):0}}else{if(typeof O.ActiveXObject!=D){try{var ad=new ActiveXObject(W);if(ad){ab=ad.GetVariable("$version");if(ab){X=true;ab=ab.split(" ")[1].split(",");ag=[parseInt(ab[0],10),parseInt(ab[1],10),parseInt(ab[2],10)]}}}catch(Z){}}}return{w3:aa,pv:ag,wk:af,ie:X,win:ae,mac:ac}}(),k=function(){if(!M.w3){return}if((typeof j.readyState!=D&&j.readyState=="complete")||(typeof j.readyState==D&&(j.getElementsByTagName("body")[0]||j.body))){f()}if(!J){if(typeof j.addEventListener!=D){j.addEventListener("DOMContentLoaded",f,false)}if(M.ie&&M.win){j.attachEvent(x,function(){if(j.readyState=="complete"){j.detachEvent(x,arguments.callee);f()}});if(O==top){(function(){if(J){return}try{j.documentElement.doScroll("left")}catch(X){setTimeout(arguments.callee,0);return}f()})()}}if(M.wk){(function(){if(J){return}if(!/loaded|complete/.test(j.readyState)){setTimeout(arguments.callee,0);return}f()})()}s(f)}}();function f(){if(J){return}try{var Z=j.getElementsByTagName("body")[0].appendChild(C("span"));Z.parentNode.removeChild(Z)}catch(aa){return}J=true;var X=U.length;for(var Y=0;Y<X;Y++){U[Y]()}}function K(X){if(J){X()}else{U[U.length]=X}}function s(Y){if(typeof O.addEventListener!=D){O.addEventListener("load",Y,false)}else{if(typeof j.addEventListener!=D){j.addEventListener("load",Y,false)}else{if(typeof O.attachEvent!=D){i(O,"onload",Y)}else{if(typeof O.onload=="function"){var X=O.onload;O.onload=function(){X();Y()}}else{O.onload=Y}}}}}function h(){if(T){V()}else{H()}}function V(){var X=j.getElementsByTagName("body")[0];var aa=C(r);aa.setAttribute("type",q);var Z=X.appendChild(aa);if(Z){var Y=0;(function(){if(typeof Z.GetVariable!=D){var ab=Z.GetVariable("$version");if(ab){ab=ab.split(" ")[1].split(",");M.pv=[parseInt(ab[0],10),parseInt(ab[1],10),parseInt(ab[2],10)]}}else{if(Y<10){Y++;setTimeout(arguments.callee,10);return}}X.removeChild(aa);Z=null;H()})()}else{H()}}function H(){var ag=o.length;if(ag>0){for(var af=0;af<ag;af++){var Y=o[af].id;var ab=o[af].callbackFn;var aa={success:false,id:Y};if(M.pv[0]>0){var ae=c(Y);if(ae){if(F(o[af].swfVersion)&&!(M.wk&&M.wk<312)){w(Y,true);if(ab){aa.success=true;aa.ref=z(Y);ab(aa)}}else{if(o[af].expressInstall&&A()){var ai={};ai.data=o[af].expressInstall;ai.width=ae.getAttribute("width")||"0";ai.height=ae.getAttribute("height")||"0";if(ae.getAttribute("class")){ai.styleclass=ae.getAttribute("class")}if(ae.getAttribute("align")){ai.align=ae.getAttribute("align")}var ah={};var X=ae.getElementsByTagName("param");var ac=X.length;for(var ad=0;ad<ac;ad++){if(X[ad].getAttribute("name").toLowerCase()!="movie"){ah[X[ad].getAttribute("name")]=X[ad].getAttribute("value")}}P(ai,ah,Y,ab)}else{p(ae);if(ab){ab(aa)}}}}}else{w(Y,true);if(ab){var Z=z(Y);if(Z&&typeof Z.SetVariable!=D){aa.success=true;aa.ref=Z}ab(aa)}}}}}function z(aa){var X=null;var Y=c(aa);if(Y&&Y.nodeName=="OBJECT"){if(typeof Y.SetVariable!=D){X=Y}else{var Z=Y.getElementsByTagName(r)[0];if(Z){X=Z}}}return X}function A(){return !a&&F("6.0.65")&&(M.win||M.mac)&&!(M.wk&&M.wk<312)}function P(aa,ab,X,Z){a=true;E=Z||null;B={success:false,id:X};var ae=c(X);if(ae){if(ae.nodeName=="OBJECT"){l=g(ae);Q=null}else{l=ae;Q=X}aa.id=R;if(typeof aa.width==D||(!/%$/.test(aa.width)&&parseInt(aa.width,10)<310)){aa.width="310"}if(typeof aa.height==D||(!/%$/.test(aa.height)&&parseInt(aa.height,10)<137)){aa.height="137"}j.title=j.title.slice(0,47)+" - Flash Player Installation";var ad=M.ie&&M.win?"ActiveX":"PlugIn",ac="MMredirectURL="+O.location.toString().replace(/&/g,"%26")+"&MMplayerType="+ad+"&MMdoctitle="+j.title;if(typeof ab.flashvars!=D){ab.flashvars+="&"+ac}else{ab.flashvars=ac}if(M.ie&&M.win&&ae.readyState!=4){var Y=C("div");X+="SWFObjectNew";Y.setAttribute("id",X);ae.parentNode.insertBefore(Y,ae);ae.style.display="none";(function(){if(ae.readyState==4){ae.parentNode.removeChild(ae)}else{setTimeout(arguments.callee,10)}})()}u(aa,ab,X)}}function p(Y){if(M.ie&&M.win&&Y.readyState!=4){var X=C("div");Y.parentNode.insertBefore(X,Y);X.parentNode.replaceChild(g(Y),X);Y.style.display="none";(function(){if(Y.readyState==4){Y.parentNode.removeChild(Y)}else{setTimeout(arguments.callee,10)}})()}else{Y.parentNode.replaceChild(g(Y),Y)}}function g(ab){var aa=C("div");if(M.win&&M.ie){aa.innerHTML=ab.innerHTML}else{var Y=ab.getElementsByTagName(r)[0];if(Y){var ad=Y.childNodes;if(ad){var X=ad.length;for(var Z=0;Z<X;Z++){if(!(ad[Z].nodeType==1&&ad[Z].nodeName=="PARAM")&&!(ad[Z].nodeType==8)){aa.appendChild(ad[Z].cloneNode(true))}}}}}return aa}function u(ai,ag,Y){var X,aa=c(Y);if(M.wk&&M.wk<312){return X}if(aa){if(typeof ai.id==D){ai.id=Y}if(M.ie&&M.win){var ah="";for(var ae in ai){if(ai[ae]!=Object.prototype[ae]){if(ae.toLowerCase()=="data"){ag.movie=ai[ae]}else{if(ae.toLowerCase()=="styleclass"){ah+=' class="'+ai[ae]+'"'}else{if(ae.toLowerCase()!="classid"){ah+=" "+ae+'="'+ai[ae]+'"'}}}}}var af="";for(var ad in ag){if(ag[ad]!=Object.prototype[ad]){af+='<param name="'+ad+'" value="'+ag[ad]+'" />'}}aa.outerHTML='<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"'+ah+">"+af+"</object>";N[N.length]=ai.id;X=c(ai.id)}else{var Z=C(r);Z.setAttribute("type",q);for(var ac in ai){if(ai[ac]!=Object.prototype[ac]){if(ac.toLowerCase()=="styleclass"){Z.setAttribute("class",ai[ac])}else{if(ac.toLowerCase()!="classid"){Z.setAttribute(ac,ai[ac])}}}}for(var ab in ag){if(ag[ab]!=Object.prototype[ab]&&ab.toLowerCase()!="movie"){e(Z,ab,ag[ab])}}aa.parentNode.replaceChild(Z,aa);X=Z}}return X}function e(Z,X,Y){var aa=C("param");aa.setAttribute("name",X);aa.setAttribute("value",Y);Z.appendChild(aa)}function y(Y){var X=c(Y);if(X&&X.nodeName=="OBJECT"){if(M.ie&&M.win){X.style.display="none";(function(){if(X.readyState==4){b(Y)}else{setTimeout(arguments.callee,10)}})()}else{X.parentNode.removeChild(X)}}}function b(Z){var Y=c(Z);if(Y){for(var X in Y){if(typeof Y[X]=="function"){Y[X]=null}}Y.parentNode.removeChild(Y)}}function c(Z){var X=null;try{X=j.getElementById(Z)}catch(Y){}return X}function C(X){return j.createElement(X)}function i(Z,X,Y){Z.attachEvent(X,Y);I[I.length]=[Z,X,Y]}function F(Z){var Y=M.pv,X=Z.split(".");X[0]=parseInt(X[0],10);X[1]=parseInt(X[1],10)||0;X[2]=parseInt(X[2],10)||0;return(Y[0]>X[0]||(Y[0]==X[0]&&Y[1]>X[1])||(Y[0]==X[0]&&Y[1]==X[1]&&Y[2]>=X[2]))?true:false}function v(ac,Y,ad,ab){if(M.ie&&M.mac){return}var aa=j.getElementsByTagName("head")[0];if(!aa){return}var X=(ad&&typeof ad=="string")?ad:"screen";if(ab){n=null;G=null}if(!n||G!=X){var Z=C("style");Z.setAttribute("type","text/css");Z.setAttribute("media",X);n=aa.appendChild(Z);if(M.ie&&M.win&&typeof j.styleSheets!=D&&j.styleSheets.length>0){n=j.styleSheets[j.styleSheets.length-1]}G=X}if(M.ie&&M.win){if(n&&typeof n.addRule==r){n.addRule(ac,Y)}}else{if(n&&typeof j.createTextNode!=D){n.appendChild(j.createTextNode(ac+" {"+Y+"}"))}}}function w(Z,X){if(!m){return}var Y=X?"visible":"hidden";if(J&&c(Z)){c(Z).style.visibility=Y}else{v("#"+Z,"visibility:"+Y)}}function L(Y){var Z=/[\\\"<>\.;]/;var X=Z.exec(Y)!=null;return X&&typeof encodeURIComponent!=D?encodeURIComponent(Y):Y}var d=function(){if(M.ie&&M.win){window.attachEvent("onunload",function(){var ac=I.length;for(var ab=0;ab<ac;ab++){I[ab][0].detachEvent(I[ab][1],I[ab][2])}var Z=N.length;for(var aa=0;aa<Z;aa++){y(N[aa])}for(var Y in M){M[Y]=null}M=null;for(var X in swfobject){swfobject[X]=null}swfobject=null})}}();return{registerObject:function(ab,X,aa,Z){if(M.w3&&ab&&X){var Y={};Y.id=ab;Y.swfVersion=X;Y.expressInstall=aa;Y.callbackFn=Z;o[o.length]=Y;w(ab,false)}else{if(Z){Z({success:false,id:ab})}}},getObjectById:function(X){if(M.w3){return z(X)}},embedSWF:function(ab,ah,ae,ag,Y,aa,Z,ad,af,ac){var X={success:false,id:ah};if(M.w3&&!(M.wk&&M.wk<312)&&ab&&ah&&ae&&ag&&Y){w(ah,false);K(function(){ae+="";ag+="";var aj={};if(af&&typeof af===r){for(var al in af){aj[al]=af[al]}}aj.data=ab;aj.width=ae;aj.height=ag;var am={};if(ad&&typeof ad===r){for(var ak in ad){am[ak]=ad[ak]}}if(Z&&typeof Z===r){for(var ai in Z){if(typeof am.flashvars!=D){am.flashvars+="&"+ai+"="+Z[ai]}else{am.flashvars=ai+"="+Z[ai]}}}if(F(Y)){var an=u(aj,am,ah);if(aj.id==ah){w(ah,true)}X.success=true;X.ref=an}else{if(aa&&A()){aj.data=aa;P(aj,am,ah,ac);return}else{w(ah,true)}}if(ac){ac(X)}})}else{if(ac){ac(X)}}},switchOffAutoHideShow:function(){m=false},ua:M,getFlashPlayerVersion:function(){return{major:M.pv[0],minor:M.pv[1],release:M.pv[2]}},hasFlashPlayerVersion:F,createSWF:function(Z,Y,X){if(M.w3){return u(Z,Y,X)}else{return undefined}},showExpressInstall:function(Z,aa,X,Y){if(M.w3&&A()){P(Z,aa,X,Y)}},removeSWF:function(X){if(M.w3){y(X)}},createCSS:function(aa,Z,Y,X){if(M.w3){v(aa,Z,Y,X)}},addDomLoadEvent:K,addLoadEvent:s,getQueryParamValue:function(aa){var Z=j.location.search||j.location.hash;if(Z){if(/\?/.test(Z)){Z=Z.split("?")[1]}if(aa==null){return L(Z)}var Y=Z.split("&");for(var X=0;X<Y.length;X++){if(Y[X].substring(0,Y[X].indexOf("="))==aa){return L(Y[X].substring((Y[X].indexOf("=")+1)))}}}return""},expressInstallCallback:function(){if(a){var X=c(R);if(X&&l){X.parentNode.replaceChild(l,X);if(Q){w(Q,true);if(M.ie&&M.win){l.style.display="block"}}if(E){E(B)}}a=false}}}}();



/**
 * YOZM Apps Javascript API
 * Copyright (c) 2010 Community Development Team3, Daum Communications.
 * 
 * $Date : 2010-04-05
 */


/**
 * @package YZ
 * 
 */
if (!window.YZ) {
    YZ = {};
}


/**
 * @class Config
 * @static
 */
if(!YZ.Config) {
	YZ.Config = function() {
		return {
	        "appKey": "",
	        "baseUrl": "http:\/\/apps.yozm.daum.net\/"
	    }
	}();
}


/**
 *	@class Yzml
 * 	@static
 */
YZ.Yzml = function() {
	return {
		"yzmlActionMap": [],
		"resources": {
			"action": YZ.Config.baseUrl + "internal\/YzmlTemplate.json",
			"css": YZ.Config.baseUrl + "static\/css\/yzmlStyle.css"
		},

		/**
		* form 서브밋하기전에 request에 필요한 폼데이터들 설정	
		*
		* @method processForm
		* @param {String} uniqueId YZML UI의 컴퍼넌트별 식별자
		* @static
		*/
		"processForm": function(uniqueId){
			
			var formdata = daum.$("fdata" + uniqueId);		
			var isPopup = formdata["isPopup"].value;
			var isRealAction = formdata["isRealAction"].value;
			var funcname = formdata["funcname"].value;
			var processUrl = formdata["jsonAction"].value;
			
			console.log("formdata", formdata);
			
			if (isRealAction !== "true") {
				if (!funcname || !window[funcname] || (typeof window[funcname] !== 'function')) {
					console.log("invalid function name for form, please check  form action value(action is only URL type)  : " + funcname);
					return;
				}
			}
			
			var reqUrl = YZ.Config.baseUrl + processUrl;
			var callback = "YZ.Yzml.processFormCallback";
			
			var args = [];
			var argIdx = 0;		
			var argsStr = "";
			
			var formElement = daum.$("fin" + uniqueId);
			var formValueList;
			formValueList = daum.$$("textarea", formElement);
			for (var i = 0; i < formValueList.length; i++) {
				args[argIdx++] = formValueList[i].name;
				args[argIdx++] = formValueList[i].value;
				
				argsStr += formValueList[i].name + " " + formValueList[i].value + "\n";
			}
			formValueList = formElement.getElementsByTagName("input");
			for (var i = 0; i < formValueList.length; i++) {
				args[argIdx++] = formValueList[i].name;
				args[argIdx++] = formValueList[i].value;
				
				argsStr += formValueList[i].name + " " + formValueList[i].value + "\n";
			}
			
			YZ.XDCom.sendHttpRequest(reqUrl, callback, uniqueId, args);
		},
		
		/**
		* processForm 메소드가 호출된 후, swf proxy로부터 응답을 받기 위한 콜백 메소드	
		*
		* @method processFormCallback 
		* @param {Object} resultData 콜백 json 데이터
		* @param {String} uniqueId YZML UI의 컴퍼넌트별 식별자
		* @static
		*/
		"processFormCallback" : function(resultData, uniqueId){
			var processForm = resultData;	
			var success = false;
			var errorId = 0;
			var errorCode;
			var errorMsg = "";
			var errorInfo = "";
			var session = "";
			
			try {
				errorCode = processForm.status;
				console.log("errorCode", errorCode);
				if (200 !== errorCode) {
					errorId = processForm.errorId ? processForm.errorId : "";
					errorCode = processForm.status ? processForm.status : "";
					errorMsg = processForm.errorMsg ? processForm.errorMsg : "";
					errorInfo = processForm.errorInfo ? processForm.errorInfo : "";
				} else {
					session = processForm.result.session;
					success = true;
				}
			} catch (e) {
				if (!errorCode) {
					errorCode = 500;
				}
				errorMsg = e;
			}
			
			var formout = daum.$('fout' + uniqueId);
			formout["success"].value = success;
			formout["errorId"].value = errorId;
			formout["errorCode"].value = errorCode;
			formout["errorMsg"].value = errorMsg;
			formout["errorInfo"].value = errorInfo;
			
			if (session && session != "") {
				console.log("change session : " + session);
				formout["yozm_session"].value = session;
			}
			
			var formdata = daum.$('fdata' + uniqueId);
			var isPopup = formdata["isPopup"].value;
			var isRealAction = formdata["isRealAction"].value;
			var funcname = formdata["funcname"].value;
			
			if (isRealAction === "true") {
				console.log("it is real action");
				formout.submit();
			} else {
				if (funcname && window[funcname] && (typeof window[funcname] === 'function')) {
					window[funcname](formout);
				} else {
					console.log("processCallback : no function - " + funcname);
				}
			}
			
			if (isPopup === "true") YZ.Dialog.remove();
		}
	}
}();


/**
 * 인스턴스 맵
 * @class Instance 
 * @static
 */
YZ.Instance = function() {
	return {
		"instanceMap" : {},
		/**
		* 인스턴스 gettter	
		*
		* @method getInstance 
		* @param {String} elementID, YZML Form Element의 ID값
		* @static
		*/
		"getInstance": function(elementID){
			return this.instanceMap[elementID];
		},
		
		/**
		* 인스턴스 settter	
		*
		* @method setInstance 
		* @param {String} elementID, YZML Form Element의 ID값
		* @param {Object} instance, YZML Form(ReqForm, FavoriteForm...) Class의 인스턴스
		* @static
		*/
		"setInstance": function(elementID, instance){
			this.instanceMap[elementID] = instance;
		}
	}
}();


/**
 *	초기화 및 프록시 생성, 로그인 체크
 *	@class Bootstrap
 * 	@static
 */
YZ.Bootstrap = function() {
	var _authCheckUrl;

	return {
		/**
		* call initialize and appkey setting
		*
		* @method init
		* @param {String} appkey 개별 app에 발급된 appkey
		* @static
		*/
		"init" : function(appkey) {
			YZ.Config.appkey = appkey;
			this.initialize(); 
		},

		/**
		* load script, stylesheet file for yzml list
		*
		* @method initialize
		* @static
		*/
		"initialize": function() {
			var scriptResource = YZ.Yzml.resources.action + "?yzml_name=list&appkey=" + YZ.Config.appkey;
			YZ.Loader.loadJavascript(scriptResource);
			YZ.Loader.loadStyleSheet(YZ.Yzml.resources.css);
			
			daum.Event.addEvent(window, "load", function(){
				this.createProxy();
				this.checkLogin();
			}.bind(this));
		},

		/**
		* create swf proxy
		*
		* @method createProxy
		* @static
		*/
		"createProxy": function(){
			console.log("YZ.Bootstrap.createProxy");
			
			var divElement = document.createElement('div');
			divElement.id = "yzProxySwf";
			document.body.appendChild(divElement);

			var flashvars = "";
			var src = YZ.Config.baseUrl + "static\/swf\/proxy.swf";
			var wmode = "transparent";
			var dimensions = { width: "5px", height: "5px" };
			var attributes = {id:"yzProxySwf", name:"yzProxySwf"};
			
			YZ.Utility.embedSWF(src, "yzProxySwf", flashvars, attributes, wmode, dimensions);
		},

		/**
		* check login
		*
		* @method checkLogin
		* @static
		*/
		"checkLogin": function() {
			console.log("YZ.Bootstrap.checkLogin");
			var callback = "YZ.Bootstrap.callbackFunction";
																	
			_authCheckUrl = YZ.Config.baseUrl + "api\/json\/LoginCheck.json";
			var parameters = ["appkey",YZ.Config.appkey];
			YZ.XDCom.sendHttpRequest(_authCheckUrl, callback, "", parameters);
		},

		/**
		* callbackFunction for Bootstrap Class
		*
		* @method callbackFunction
		* @param {Object} proxy에서 받은 login관련 json data
		* @static
		*/
		"callbackFunction": function(){
			var resultData = arguments[0];
			console.log("YZ.Bootstrap.callbackFunction", resultData)
			
			try {
				if (200 === resultData.status) {
					YZ.Dom.traverseDom(document.body);
				} else {
					console.log("checkLogin callback error message: ", resultData.errorMsg);
					return;
				}
			} catch (e) {
				console.log("checkLogin callback execption: ", e);
			}
		}
	}
}();


/**
 *	request to server for using swf proxy
 *	@class XDCom
 * 	@static
 */
YZ.XDCom = function() {
	var _timeid = null;
	var _interval = 400;
	
	return {
		/**
		* request to server
		* 
		* @method sendHttpRequest
		* @param {String} url, request url
		* @param {String} callback, callback function name
		* @param {String} uniqueId, instance별 콜백 function호출을 위한 식별자 ID값
		* @param {Array} args, 요청시의 파라미터( 배열형태로 키, 값 쌍으로 들어가야함 ) ex) 키가 next 값이 1 인경우 [ "next", "1"]
		* @static
		*/
		"sendHttpRequest": function(url, callback, uniqueId, args) {
			this.uniqueId = uniqueId ? uniqueId : "";
			this.args = args ? args : [];
			
			var proxySwf = daum.Browser.ie ? window["yzProxySwf"] : document["yzProxySwf"];
			
			_timeid = setTimeout(function(){
				if (YZ.Utility.isProxy()) {
					console.log("YZ.XDCom.sendHttpRequest is called!, url, callbackname", url, callback);
					
					try {
						proxySwf.YZ_clientReceiver2(url, callback, uniqueId, args);
					} catch(e) {
						console.log("SWF Proxy method 'YZ_clientReceiver2' exception", e);
					}
				} else {
					try {
						this.sendHttpRequest(url, callback, uniqueId, args);
					} catch(e) {
						console.log("YZ.XDCom.sendHttpRequest exception", e);
					}
				}
			}.bind(this), _interval);
		},		
                		
		/**
		* callbackFunction for XDCom Class
		*	
		* @method callbackFunction 
		* @param {Object} resultData 콜백 json 데이터
		* @param {String} uniqueId YZML UI의 컴퍼넌트별 식별자
		* @static
		*/
		"callbackFunction": function() {
			var resultData = arguments[0];
			var elementID = arguments[1];
			var instance = YZ.Instance.getInstance(elementID);
			instance.callbackFunction(resultData, elementID);
		},
		
		"callbackFunction2": function() {
			var resultData = arguments[0];
			var elementID = arguments[1];
			var instance = YZ.Instance.getInstance(elementID);
			instance.callbackFunction2(resultData, elementID);
		}
	}
}();


/**
 *	json2.js에 있는 JSON Class의 wrapper Class ( parse string to json ) 
 *	@class JSON
 * 	@static
 */
YZ.JSON = function() {
    return {
		"parse": function(str){
            return JSON.parse(str);
        }
	}
}();


/**
 *	Utility성격의 메소드모음 클래스 
 *	@class Utility
 * 	@static
 */
YZ.Utility = function() {
	var _isLoadedProxy = false;
	
    return {
		/**
		*  swfobject.js의 swfobject.embedSWF wrapper method
		*	
		* @method embedSWF 
		* @param {String} src, resources url  
		* @param {String} div, target element for insert
		* @param {String} flashvars, flashvars
		* @param {Object} attributes, attributes of object element
		* @param {String} wmode, "transparent, opaque, window"
		* @param {Object} dimensions, set width and height
		* @static
		*/
        "embedSWF": function(src, div, flashvars, attributes, wmode, dimensions){
            this.flashvars = flashvars ? flashvars : "";
            this.attributes = attributes ? attributes : "";
            this.wmode = wmode ? wmode : "window";
            this.dimensions = dimensions ? dimensions : "";
            this.version = "9.0.0";
            this.params = {
                allowscriptaccess: "always",
                movie: src,
                src: src,
                pluginspage: "http:\/\/www.macromedia.com\/go\/getflashplayer",
                quality: "high",
                loop: "false",
                allowfullscreen: "true",
                flashvars: this.flashvars,
				wmode: this.wmode
            };
            swfobject.embedSWF(src, div, this.dimensions.width, this.dimensions.height, this.version, false, this.flashvars, this.params, this.attributes);
            
            proxySwf = daum.Browser.ie ? window["yzProxySwf"] : document["yzProxySwf"];
			if (proxySwf) {
				_isLoadedProxy = true;
			}
        },
        
        "isProxy": function() {
        	return _isLoadedProxy;
        },
		
		/**
		*  swfobject.js의 swfobject.embedSWF wrapper method
		*	
		* @method insertAfter
		* @param {Object} newElement, 삽입할 새로운 element
		* @param {Object} targetElement, 대상 element
		* @static
		*/
		"insertAfter": function(newElement, targetElement) {
			var parent = targetElement.parentNode;
			
			if (parent.lastChild == targetElement) {
				parent.appendChild(newElement);
			} else {
				parent.insertBefore(newElement,targetElement.nextSibling);
			}
		},

		/**
		*  swfobject.js의 swfobject.embedSWF wrapper method
		*	
		* @method setPng
		* @param {Object} newElement, 삽입할 새로운 element
		* @param {Object} targetElement, 대상 element
		* @static
		*/
		"setPng": function(elements){
			if (elements) {
				elements.each(function(obj){
					daum.Element.setPngOpacity(obj, obj.src, "scale");
				});
			}
		},
		
		/**
		*  count text number of textarea
		*	
		* @method countText
		* @param {Number} maxChar, set max character number
		* @param {Object} element, textarea element
		* @param {Object} target, 대상 element
		* @static
		*/
		"countText": function(maxChar, element, target) {
			this.maxChar = maxChar;
			this.element = element;
			this.target = target;
			
			var tmpStr = "";
			var timer = daum.Function.interval(function(){
				if( this.tmpStr != this.element.value ){
					if( this.element.value.length > this.maxChar ){
						alert("최대 " + maxChar + "자까지 가능합니다. 초과된 내용은 자동으로 삭제됩니다.");
						this.element.value = this.tmpStr;
					}
					this.tmpStr = this.element.value;
					this.target.innerHTML = this.element.value.length;
				}
			}.bind(this), 2);
			daum.Event.addEvent(this.element, "blur", function(e){
				clearInterval(timer);
			}.bind(this), false);
		},

		/**
		*  create overlay for prevent mouse action to page's background 
		*	
		* @method preventScreen
		* @static
		*/
		"preventScreen" : function() {
			var preventDiv;
			var preventStatus = false;
			
			return {
				"status" : preventStatus,
				"create" : function() {
					this.status = true;
					preventDiv = document.createElement("div");
					preventDiv.className = "yzPreventScreen";
					document.body.appendChild(preventDiv);

					var width = daum.getWindowSize().width + daum.getScrollOffsets().left;
					var height = daum.getWindowSize().height + daum.getScrollOffsets().top;				                    
					daum.Element.setSize(preventDiv, width, height);
				},
				"remove" : function() {
					this.status = false;
					document.body.removeChild(preventDiv);
					preventDiv = null;
				}
			}
		}(),
		
		"decodeUTF8Character" : function(strVal) {
			var buf = new Array(strVal.length);
			var bufIdx = 0;
			var idx = 0;
			
			var utf8;
			var utf8Cnt;
			
			var meetPerc = 0;
			var strLength = strVal.length;
			for( idx = 0; idx < strLength; idx++ ) {
				var ch = strVal.charAt(idx);

				if( meetPerc == 0 ) {
					if( ch == '%' ) {
						meetPerc = 1;
						continue;
					} else {
						buf[bufIdx++] = ch;
					}
				} else {
					if( ch == '%' ) {
						buf[bufIdx++] = '%';
					} else {
						var hexStr = "" + ch + strVal.charAt(++idx);
						var hex = parseInt(hexStr,16);
							
						if( (hex&0xE0) == 0xE0 ) {
							hex = (hex&0x0F);
							utf8Cnt = 2;					
							utf8 = (utf8<<4) + hex;
						} else if( (hex&0xC0) == 0xC0) {
							hex = (hex&0x1F);
							utf8Cnt = 1;
							utf8 = (utf8<<5) + hex;
						} else if( (hex&0x80) == 0x80) {
							hex = (hex&0x3F);
							utf8Cnt--;
							utf8 = (utf8<<6) + hex;
							
							if( 0 == utf8Cnt ) {
								buf[bufIdx++] = String.fromCharCode(utf8);
							}
						} else {
							utf8 = 0;
							utf8Cnt = 0;
							buf[bufIdx++] = String.fromCharCode(hex);
						}
					}
					meetPerc = 0;
				}
			}
			return buf.join("");
		}
	}
}();


/**
 *	JS, CSS 파일로더 Class
 *	@class Loader
 * 	@static
 */
YZ.Loader = function() {
	function _callbackFunction(){
		console.log("YZ.Loader _callbackFunction");
		var callback = arguments[0];
		if (callback) { callback(); }
	}
	
	return {
		"loadJavascript": function(url, callback){
			var script = document.createElement('script');
			script.type = 'text/javascript';
			script.charset = "utf-8";
			
			if (daum.Browser.ie) {
				script.onreadystatechange = function(){
					console.log("script readystatechange!!");
					if (script.readyState == 'loaded' || script.readyState == 'complete') {
						script.onreadystatechange = null;
						_callbackFunction(callback);
					}
				}.bind(this);
			} else {
				script.onload = function(){
					console.log("script onload!!");
					_callbackFunction(callback);
				}.bind(this);
			}
			
			script.src = url;
			document.getElementsByTagName('head')[0].appendChild(script);
		},
		"loadStyleSheet": function(url){
			var style = document.createElement('link');
			style.href = url;
			style.rel = 'stylesheet';
			style.type = 'text/css';
			document.getElementsByTagName('head')[0].appendChild(style);
		}
	}
}();


/**
 *	YZML Dom Class
 *	@class Dom
 * 	@static
 */
YZ.Dom = function() {
	var _currentNodeIndex = null;
	var _yzmlElements = [];
	var _isPopup = null;
	var _isLoaded=false;
	
	
	function _convertElementToString(element){
		var div = document.createElement("div");
		var temp = element.cloneNode(true);
		div.appendChild(temp);
		return div.innerHTML;
	}

	function _requestYzmlTemplate() {
		console.log("YZ.Dom _requestYzmlTemplate", _yzmlElements);
		
		var tagname;
		var listLength = _yzmlElements.length;
		var callback = "YZ.Dom.insertYzmlTemplateForCallback";
		
		for (var i = 0; i < listLength; i++) {			
			tagname = YZ.Dom.getYzmlTagName(_yzmlElements[i].node);
			reqUrl = YZ.Dom.getYzmlActionURL(tagname) + "&appkey=" + YZ.Config.appkey;
			
			if (_yzmlElements[i].status == "ready") {
				_currentNodeIndex = i;
				var args = [];
				var idx = 0;

				args[idx++] = 'yzmlString';
				args[idx++] = _convertElementToString(_yzmlElements[i].node);
				
				if (_isPopup) {
					args[idx++] = 'isPopup';
					args[idx++] = _isPopup;
				}
				YZ.XDCom.sendHttpRequest(reqUrl, callback, "", args);
				break;
			}
		}
	}
	
	function _travereDom(root) {
		var childE = root.firstChild;
		var elementName;

		while( null != childE ) {
			var isYzml = false;
			if (childE.nodeType === 1 && childE.tagName) {
				elementName = YZ.Dom.getYzmlTagName(childE);
				if (YZ.Yzml.yzmlActionMap[elementName]) {
					_yzmlElements.push( {"node" : childE, "status" : "ready"} );
					isYzml = true;
					console.log("finded " + elementName + " in YZ.Yzml.yzmlActionMap");
				}
			}
			if( !isYzml ) { _travereDom(childE); }		
			childE = childE.nextSibling;
		}
		_isLoaded=true;
	}
	
	return {
		"traverseDom": function(root, isPopup){
			_isPopup = isPopup;
			var rootElement = root ? root : document.body;
			_travereDom(rootElement);
			_requestYzmlTemplate();
		},
		"insertYzmlTemplateForCallback": function(returnVal) {
			setTimeout(function(){
				this.insertYzmlTemplate(returnVal);
			}.bind(this), 100);
		},
		"insertYzmlTemplate": function(returnVal) {
			var jsonData = returnVal;
			var currentNodes = _yzmlElements[_currentNodeIndex];
			console.log("insertYzmlTemplate", jsonData);
			
			try {
				if(200 === jsonData.status) {
					
					var contents = jsonData.contents;
					currentNodes.node.innerHTML = contents;
					
					YZ.Process.check(currentNodes.node);
				} else {
					console.log("insertYzmlTemplate error message: ", jsonData.errorMsg);
				}
			} catch(e) {
				console.log("insertYzmlTemplate execption: ", e);
			}
			currentNodes.status = "complete";
			_requestYzmlTemplate();
		},
		"getYzmlTagName": function(element){
			var elementName = element.tagName;
			if(!elementName.indexOf("yz:")) { return false; }

			if (daum.Browser.ie) {
				elementName = daum.$(element).tagName.toLowerCase();
				if (daum.Browser.ie9) {
					elementName = elementName.replace("yz:", "");
				}
			} else {
				elementName = daum.$(element).tagName.toLowerCase();
				elementName = elementName.replace("yz:", "");
			}
			return elementName;
		},
		"getYzmlTagNameNS": function(element){
			var elementName = element.tagName;
			if (daum.Browser.ie) {
				elementName = "yz:" + elementName.toLowerCase();
			} else {
				elementName = elementName.toLowerCase();
			}
			return elementName;
		},
		"getYzmlActionURL": function(key){
			if (YZ.Yzml.yzmlActionMap[key]) {
				return YZ.Yzml.yzmlActionMap[key];
			}
			return false;
		},
		"isLoaded" : function(){
			return _isLoaded;
		}
	}
}();


/**
 *	Proceess YZML Element 
 *	@class Process
 * 	@static
 */
YZ.Process = function() {
	return {
		"check": function(element) {
			var tagname = YZ.Dom.getYzmlTagName(element);
			var instance;
			
			if (tagname === "request_form") {
				new YZ.RequestForm().create(element);
			} else	if (tagname === "publish_form") {
				new YZ.Publish().create(element);
			}

			if (tagname == "req_form") {
				instance = new YZ.ReqForm();
				instance.create(element);
				YZ.Instance.setInstance(element.firstChild.getAttribute("id"), instance);
			} else if (tagname == "invite_form") {
				instance = new YZ.InviteForm();
				instance.create(element);
				YZ.Instance.setInstance(element.firstChild.getAttribute("id"), instance);
			} else if (tagname == "req_form_for_urlname") {
				instance = new YZ.ReqFormForUrlName();
				instance.create(element);
				YZ.Instance.setInstance(element.firstChild.getAttribute("id"), instance);
			} else if (tagname == "favorite_form") {
				instance = new YZ.FavoriteForm();
				instance.create(element);
				YZ.Instance.setInstance(element.firstChild.getAttribute("id"), instance);
			} else if (tagname == "pub_form") {			
				instance = new YZ.PubForm();
				instance.create(element);
				YZ.Instance.setInstance(element.firstChild.getAttribute("id"), instance);
			} else if (tagname == "recommend_form") {
				instance = new YZ.RecommendForm();
				instance.create(element);
				YZ.Instance.setInstance(element.firstChild.getAttribute("id"), instance);
			} 
		}
	}
}();



YZ.Hashmap = function(){
	var hashmap = new Array();
	
	return {
		"hashmap" : hashmap,
		
		/**
		 * 데이터 넣는 함수
		 * @param key String Name of key
		 * @param value String (or Object)
		 * @return void
		 */
		"put": function(key, value){
			this.hashmap["" + key] = value;
		},
		
		/**
		 * 데이터 가져오는 함수
		 * @param key String Name of key
		 * @return String (or Object)
		 */
		"get": function(key){
			return this.hashmap["" + key];
		},

		/**
		 * 데이터 삭제 함수
		 * @param key String Name of key
		 * @return String (or Object)
		 */
		"remove": function(key){
			this.hashmap["" + key] = null;
		},
		
		/**
		 * 데이터 배열을 가져오는 함수
		 * @return Array
		 */
		"getAll": function(){
			return this.hashmap;
		}	
	}
};


/*
 * submit 후 컴포넌트 영역 비활성화 처리 루틴
 */
YZ.submitDimLayer = function()
{ 
	return {
		"addDimmedDiv" : function(parentElem) {
			// image size
			var imageSize={x:50, y:50};
			
			var width = parentElem.offsetWidth;
			var height = parentElem.offsetHeight;
			
			var template =  '<div id="dimLayer">' +
								'<div class="dim_layer"><\/div>' + 
								'<div class="submited_screen"><\/div>' + 
							'<\/div>' 
			
			template = new daum.Template(template).toElement();
			
			var divLayer=template;
			var divDim=daum.$$(".dim_layer", template)[0];
			var divSubmitImg=daum.$$(".submited_screen", template)[0];
			
			//calcluate left/top of loading image
			var pos_top=(height/2) - (imageSize.y)/2;
			var pos_left=(width/2) - (imageSize.x)/2;
			
			daum.Element.setSize(divLayer, width, height);
			daum.Element.setSize(divSubmitImg, imageSize.x, imageSize.y);
			daum.Element.setPosition(divSubmitImg, pos_left, pos_top);
			
			parentElem.appendChild(template);
		},
		"showSubmitDim" : function(parentElem) {
			var dim_elem=daum.Element.getElementsByClassName(parentElem, "dim_layer")[0];
			dim_elem=daum.Element.getParent(dim_elem);
			daum.Element.show(dim_elem,'block');
		}
	}
}();


YZ.RequestForm = function() {
	var _element
	var _form;
	var _message;
	var _model = [];
	var _checkBoxList;
	var _list;
	var _visibleListCnt;
	var _selectedSetIndex;
	var _totalSetCnt;
	
	function _getFriendData(){
		var jsonData = YZ.Utility.decodeUTF8Character(_form["friendList"].value);
		jsonData = YZ.JSON.parse(jsonData);
		
		return jsonData;
	}
	
	function _updateReceiver(e){		
		var template = "";
		var targetNode = daum.$$(".yzFriendList ul", _element)[0];

		var first = _selectedSetIndex * _visibleListCnt;
		var last = first + _visibleListCnt;
	
		for (i = 0; i < _list.length; i++) {
			if (i >= first && i < last) {
				template = '<li>\n'
						+ '<input type="checkbox" id="f_' + _list[i].urlname + "_" + _key + '" name="friend" class="yzFriendCheckBox" value="' + _list[i].urlname + '" \/>\n'
						+ '<img src="' + _list[i].image + '" class="isPng" width="50" height="50" alt="" \/>\n'
						+ '<label for="f_' + _list[i].urlname + "_" + _key + '">' + _list[i].nickname + '<\/label>\n'
						+ '<\/li>\n';
								
				template = new daum.Template(template).toElement();
				targetNode.appendChild(template);
				
				YZ.Utility.setPng(daum.$$(".isPng", template));
			}
		}
	
		_updateTotalCount();
		_moveScroll(targetNode);
		
		if (_selectedSetIndex === (_totalSetCnt-1)) {
			_update.disabled = "disabled";
			_update.className = "yzOffMoreBtn";
			_update.title = "마지막 친구 리스트입니다.";
			return false;
		} else {	
			_selectedSetIndex = (_selectedSetIndex + _totalSetCnt+1) % _totalSetCnt;
		}				
	}
	
	function _moveScroll(element) {
			var scrollHeight = element.scrollHeight;
			element.scrollTop = scrollHeight;
	}
	
	function _checkForm(e) {							
		if (_checkBoxList.length < 1) {
			alert("현재 친구가 없습니다.");
			return;
		}
		if (_model.length < 1) {
			alert("선택한 친구가 없습니다.");
			daum.Event.stopEvent(e);
			return;
		}
		YZ.submitDimLayer.showSubmitDim(daum.Element.getFirstChild(_element));
		_form["urlnameList"].value = _model;
		_form["appkey"].value = YZ.Config.appkey;
	}
	
	function _dispatchEvent() {
		daum.Event.addEvent(_update, "click", _updateReceiver.bindAsEventListener(this));
		daum.Event.addEvent(_form, "submit", _checkForm.bindAsEventListener(this));
		
		var target = daum.$$(".yzMessageCnt em", _element)[0];
		daum.Event.addEvent(_message, "focus", function() {
			YZ.Utility.countText(100, _message, target);
		});
		
		_checkBoxDispatch();
	}

	function _checkBoxDispatch() {
		var checkbox, eventElmt;
		var friendList = daum.$$(".yzFriendList", _element)[0];
		
		daum.Event.addEvent(friendList, "click", function(e) {
			element = daum.Event.getElement(e);
			
			if(element.tagName.toLowerCase() === "img") {
				element = daum.Element.getPrev(element);
				element.checked? element.checked = false : element.checked = true;
			}
			if (element.tagName.toLowerCase() === "input") {
				_updateCount(element);
			}
		});
	}

	function _updateCount(element) {
		var selectCount = daum.$$(".yzFriendSelectedCount strong", _element)[0];
		var checkbox = element;
		
		if(checkbox.checked) {
			if (_selectLimit === _model.length) {
				alert("최대 " + _selectLimit + "개까지 선택할 수 있습니다.");
				element.checked = false;
				return;
			} else {
				_model.push(checkbox.value);
			}
		} else {
			var index = _model.indexOf(checkbox.value);
			_model.splice(index, 1);
		}

		selectCount.innerHTML = _model.length;
	}
	
	function _updateTotalCount() {
		var totalCount = daum.$$(".yzFriendSelectedCount dd", _element)[1];
		var label = daum.$$("label", _element);		

		totalCount.innerHTML = label.length;
	}

	return {
		"create": function(element){
			_element = element;
			_key = daum.Element.getFirstChild(_element).id;
			_form = daum.$$("form", _element)[0];
			_checkBoxList = daum.$$("input", _element);
			_update = daum.$$("button", _element)[0];
			_message = daum.$$("textarea", _element)[0];
			_selectLimit = _form["selectLimit"].value;
			
			YZ.submitDimLayer.addDimmedDiv(daum.Element.getFirstChild(_element));
			
			if(_selectLimit != "") {
				_selectLimit = parseInt(_selectLimit, 10);
			} else {
				_selectLimit = null;
			}
			
			_list = _getFriendData();
			_visibleListCnt = 12;
			_selectedSetIndex = 0;
			_totalSetCnt = parseInt(((_list.length -1) / _visibleListCnt)+1, 10);

			var pngImages = daum.$$(".isPng", _element);
			YZ.Utility.setPng(pngImages);

			_dispatchEvent();
		}				
	}
};



YZ.Form = function() {}


YZ.Form.RightList = function() {
	this.hashMap = new YZ.Hashmap();
	this.valueList = new Array();
};


YZ.Form.RightList.prototype = {
	add : function(userObj) {
		if( this.get(userObj.uid) ) {
			return 0;
		}
		this.hashMap.put(userObj.uid, userObj);
		this.valueList.push(userObj);
		return 1;
	},
	get : function(uid) {
		return this.hashMap.get(uid);
	},
	getList : function() {
		return this.valueList;
	},
	remove : function(uid) {
		this.hashMap.remove(uid);
		
		var valueListLength = this.valueList.length; 
		for(var i = 0; i < valueListLength; i++) {
			if(this.valueList[i].uid == uid) {
				this.valueList.splice(i, 1);
				break;
			}
		}
	}
};


YZ.Form.LeftList = function(excludeUids, rightList) {
	this.hashMap = new YZ.Hashmap();
	this.valueList = new Array();
	this.excludeUids = excludeUids;
	this.rightList = rightList;
};

YZ.Form.LeftList.prototype = {
	add : function(userObj) {
		if( this.excludeUids.get(userObj.uid) ) {
			return -1;
		}
		
		var selectedUser = this.rightList.get(userObj.uid);
		if( selectedUser ) {
			if( selectedUser.group.id == userObj.group.id ) {
				this.hashMap.put(userObj.uid, userObj);
				this.valueList.push(userObj);
				return 1;
			} else {
				return -1;
			}	
		} else {
			this.hashMap.put(userObj.uid, userObj);
			this.valueList.push(userObj);
			return 0;
		}
	},
	get : function(uid) {
		return this.hashMap.get(uid);
	},
	getList : function() {
		return this.valueList;
	}
};


YZ.Form.SelectList = function(uniqueID, leftAction, rightAction, leftUI, rightUI, excludeUids, selectLimit, includeImg) {
	var _MIN_LIST_COUNT = 14;	// the minimum number of  list

	var _uniqueID = uniqueID;
	var _leftAction = leftAction;
	var _rightAction = rightAction;
	var _leftUI = leftUI;
	var _rightUI = rightUI;
	
	var _excludeUids = excludeUids;
	var _selectLimit= selectLimit;
	var _leftList;
	var _rightList;
	var _eventId;
	var _nextValue;
	var _requestCount = 0;
	
	
	var _template = 
		'<li id="#ELEMENT_ID#" class="#ELEMENT_STYLE#">\
			<span title="#NICKNAME#">#NICKNAME#<\/span><em>#GROUP_NAME#<\/em>\
		<\/li>';
	
	var _templateImg = 
		'<li id="#ELEMENT_ID#" class="#ELEMENT_STYLE#">\
			<img src="#IMG_URL#"><\/img>\
			<span title="#NICKNAME#">#NICKNAME#<\/span><em>#GROUP_NAME#<\/em>\
			<a onclick="#HREF#"><\/a>\
		<\/li>';

	function _addToRight( userObj, notAlert ) {
		if( selectLimit <= _rightList.getList().length ) {
			if (!notAlert) {
				console.log("when this method is running by mouse click, notAlert is not called");
			}
			return -1;
		}
		
		if( 0 == _rightList.add( userObj) ) {
			return 1;
		}
		
		var nickName = (userObj.nickname.length > 7)? userObj.nickname.substr(0, 7) + ".." : userObj.nickname;
		var groupName = (userObj.group.name.length > 8)? userObj.group.name.substr(0, 9) + ".." : userObj.group.name;
		
		var template = '<li><span title="' + daum.String.escapeHTML(userObj.nickname) + '">' + daum.String.escapeHTML(nickName) + '<\/span><em title="' + daum.String.escapeHTML(userObj.group.name) + '">'+ daum.String.escapeHTML(groupName) +'<\/em><\/li>'; // styleType
		if(includeImg)
		{
			template = '<li><img src="' + daum.String.escapeHTML(userObj.miniImage) + '"><span title="' + daum.String.escapeHTML(userObj.nickname) + '">' + daum.String.escapeHTML(nickName) + '<\/span><em title="' + daum.String.escapeHTML(userObj.group.name) + '">'+ daum.String.escapeHTML(groupName) +'<\/em><\/li>'; // styleTyp
		}
		
		template = new daum.Template(template).toElement();
		template.id = "right_" + userObj.uid + "_" + _uniqueID;

		var list = daum.$$("#list", _rightUI)[0];
		if(daum.$$(".noData", list)[0]) {
			list.innerHTML = "";
		}
		list.appendChild(template);

		_updateSelectedCount()

		return 0;
	}

	function _updateSelectedCount() {
		daum.$$("#selectedTotalCount", _rightUI)[0].innerHTML = _rightList.getList().length;		
	}
	
	function _updateCurrentCount() {
		daum.$$("#currentCount", _leftUI)[0].innerHTML = _leftList.getList().length;
	}
	
	function _removeFromRight( uid ) {
		var rightItem = "right_" + uid + "_" + _uniqueID;
		rightItem = daum.$(rightItem);
		var leftItem = "left_" + uid + "_" + _uniqueID;
		leftItem = daum.$(leftItem);
		
		_rightList.remove(uid);
		
		var list = daum.$$("#list", _rightUI)[0]; 
		list.removeChild(rightItem);

		_updateSelectedCount();
		
		if (leftItem) {
			daum.Element.removeClassName(leftItem, "selected");
		}
		
		if(_rightList.getList().length == 0) {
			list.innerHTML = '<li class="noData">선택한 회원이 없습니다. 왼쪽 박스에서 회원을 선택하면 자동으로 추가됩니다.</li>';
		}
	}
	
	function _leftToRight( uid, notAlert ) {
			var userObj = _leftList.get(uid);
			var result = _addToRight(userObj, notAlert);
			
			if (0 == result) {
				var leftItem = "left_" + userObj.uid + "_" + _uniqueID;
				leftItem = daum.$(leftItem);
				daum.Element.addClassName(leftItem, "selected");
			}
			return result;
	}

	function _leftListClickEventListener(e) {
		daum.Event.stopEvent(e);
		var element = daum.Event.getElement(e);
		var tagName = element.tagName; 
		
		if(tagName.toLowerCase() === "li" || tagName.toLowerCase() === "span" || tagName.toLowerCase() === "em") {
			if(tagName.toLowerCase() === "span" || tagName.toLowerCase() === "em") {
				element = element.parentNode;
			}
			
			var uid = element.id.split("_")[1];
			var parentDIVElement = element.parentNode.parentNode.parentNode.parentNode;
			
			if (!element.className.match("selected")) {
				_leftToRight(uid);
			}
			else {
				_removeFromRight(uid);
			}
		}
	}

	function _rightListClickEventListener(e) {
		daum.Event.stopEvent(e);
		var element = daum.Event.getElement(e);
		var tagName = element.tagName; 
	
		if(tagName.toLowerCase() === "li" || tagName.toLowerCase() === "span" || tagName.toLowerCase() === "em") {
			if(tagName.toLowerCase() === "span" || tagName.toLowerCase() === "em") {
				element = element.parentNode;
			}
			
			var uid = element.id.split("_")[1];
			var parentDIVElement = element.parentNode.parentNode.parentNode.parentNode;
			
			_removeFromRight(uid);
		}
	}

	function _leftListOverEventListener(e) {
		daum.Event.stopEvent(e);
		element = daum.Event.getElement(e);
		var tagName = element.tagName; 
		
		if(tagName.toLowerCase() === "li" || tagName.toLowerCase() === "span" || tagName.toLowerCase() === "em" || tagName.toLowerCase() === "a") {
			if (tagName.toLowerCase() === "span" || tagName.toLowerCase() === "em" || tagName.toLowerCase() === "a") {
				element = element.parentNode;
			}
			if (!element.className.match("selected")) {
				daum.Element.addClassName(element, "hover");
			}
		}
	}
	
	function _leftListOutEventListener(e) {
		daum.Event.stopEvent(e);
		element = daum.Event.getElement(e);
		var tagName = element.tagName; 
		
		if(tagName.toLowerCase() === "li" || tagName.toLowerCase() === "span" || tagName.toLowerCase() === "em" || tagName.toLowerCase() === "a") {
			if (tagName.toLowerCase() === "span" || tagName.toLowerCase() === "em" || tagName.toLowerCase() === "a") {
				element = element.parentNode;
			}
			
			if(element.className.match("hover")) {
				daum.Element.removeClassName(element, "hover");
			}
		}
	}

	function _addToLeft( userObj , target) {
		var addType = _leftList.add( userObj );
		var styleType;
		if( 0 == addType ) {
			styleType = 0;
		} else if( 1 == addType ) {
			styleType = 1;
		} else { // -1 == addType			
			return;
		}
	
		var id = "left_" + userObj.uid + "_" + _uniqueID;
		var style = "";
		
		if( styleType ) style += " selected";
		
		var url="http://yozm.daum.net/" + userObj.urlname;
		//var yozmPage=encodeURIComponent(url);
		var yozmPop="window.open('"+url+"');";
		if(includeImg)
		{
			temp = _templateImg.replace("#ELEMENT_ID#", id);
			temp = temp.replace("#ELEMENT_STYLE#", style);
			temp = temp.split("#NICKNAME#").join(daum.String.escapeHTML(userObj.nickname));
			temp = temp.replace("#GROUP_NAME#", daum.String.escapeHTML(userObj.group.name));
			temp = temp.replace("#IMG_URL#", daum.String.escapeHTML(userObj.miniImage));
			temp = temp.replace("#HREF#", daum.String.escapeHTML(yozmPop));
		}
		else
		{
			temp = _template.replace("#ELEMENT_ID#", id);
			temp = temp.replace("#ELEMENT_STYLE#", style);
			temp = temp.split("#NICKNAME#").join(daum.String.escapeHTML(userObj.nickname));
			temp = temp.replace("#GROUP_NAME#", daum.String.escapeHTML(userObj.group.name));	
		}

		_updateCurrentCount();
		
		return temp;
	}
	
	function _requestRightList() {
		var callback = "YZ.XDCom.callbackFunction";
		var url = YZ.Config.baseUrl + _rightAction.url;
		var parameters = _rightAction.params;
		YZ.XDCom.sendHttpRequest(url, callback, _uniqueID, parameters);
	}
	
	function _requestLeftList(){
		var callback = "YZ.XDCom.callbackFunction";
		var url = YZ.Config.baseUrl + _leftAction.url;
		var parameters = new Array().concat(_leftAction.params);
		
		_showLoadingBar();
		
		if (_nextValue) {
			parameters.push("next_value");
			parameters.push(_nextValue);
		}
		daum.Event.stopObserving(_eventId);
		YZ.XDCom.sendHttpRequest(url, callback, _uniqueID, parameters);
	}
	
	function _decodeUserObj( userObj ) {
		userObj.nickname = decodeURIComponent(userObj.nickname.replace(/\+/g, " "));
		userObj.group.name = decodeURIComponent(userObj.group.name.replace(/\+/g, " "));
		return userObj;
	}
		
	function _showLoadingBar(){
		var targetElement = daum.$$(".listBody", _leftUI)[0];
		
		var loadingBar = daum.$$(".loadingBar", targetElement)[0];
		if ( loadingBar ) {
			daum.Element.removeClassName(loadingBar, "yzHiddenPhrase");
		} else {
			var template = '<div class="loadingBar"><p>친구 목록을 불러오고 있습니다.<\/p><span><\/span><\/div>';
			template = new daum.Template(template).toElement();
			targetElement.appendChild(template);
		}
	}
	
	function _hideLoadingBar(){
		var targetElement = daum.$$(".listBody", _leftUI)[0];

		var loadingBar = daum.$$(".loadingBar", targetElement)[0];
		setTimeout(function(){
			if (loadingBar) {
				daum.Element.addClassName(loadingBar, "yzHiddenPhrase");
			}
		}, 600);
	}
		
	return {
		"create": function(){
			if( _rightAction ) {
				_requestRightList();
			} else {
				_rightList = new YZ.Form.RightList();
				_requestLeftList();
			}
			
			daum.Event.addEvent(daum.$$(".listBody", _leftUI)[0], "click", _leftListClickEventListener.bindAsEventListener(this));
			daum.Event.addEvent(daum.$$(".listBody", _leftUI)[0], "mouseover", _leftListOverEventListener.bindAsEventListener(this));
			daum.Event.addEvent(daum.$$(".listBody", _leftUI)[0], "mouseout", _leftListOutEventListener.bindAsEventListener(this));
			daum.Event.addEvent(daum.$$(".listBody", _rightUI)[0], "click", _rightListClickEventListener.bindAsEventListener(this));
		},
		
		"getSelectedList" : function() {
			if( _rightList ) {
				return _rightList.getList();
			} else {
				return new Array();
			}
			
		},
		
		"selectAll" : function() {
			var leftItems = _leftList.getList();
			var leftItemsLength = leftItems.length;
			for( var i = 0; i < leftItemsLength; i++ ) {
				var result = _leftToRight(leftItems[i].uid, true);
				if( 0 == result ) {
				} else if( 1 == result ) {
				} else { // -1 == result
					if( 0 == i ) {
						alert("최대 " + _selectLimit + "개까지 선택할 수 있습니다.");
					}
					break;
				}
			}
		},
		
		"deleteAll" : function() {
			var rightItems = new Array().concat(_rightList.getList());
			var rightItemsLength = rightItems.length;
			for( var i = 0; i < rightItemsLength; i++ ) {
				_removeFromRight(rightItems[i].uid);
			}
			
			if(_rightList.getList().length == 0) {
				daum.$$("#list", _rightUI)[0].innerHTML = '<li class="noData">선택한 회원이 없습니다. 왼쪽 박스에서 회원을 선택하면 자동으로 추가됩니다.</li>';
			} else {
				daum.$$("#list", _rightUI)[0].innerHTML = "";	
			}
		},
		
		"changeLeft" : function(leftAction) {
			_leftAction = leftAction;
			_leftList = null;
			_nextValue = null;

			var ulElements = daum.$$(".listBody ul", _leftUI);
			var ulElementsLength = ulElements.length;
			if(ulElementsLength > 0 ) {
				for(i = 0; i < ulElementsLength; i++) {
					daum.$$(".listBody div", _leftUI)[0].removeChild(ulElements[i]);
				}				
			}
			_requestLeftList();
		},

		"callbackFunction" : function() {
			var jsonData = arguments[0];
			
			var templateBuffer = [];
		
			if (200 === jsonData.status) {
				// for requestFavoriteList
				if ( !_rightList ) { 
					_rightList = new YZ.Form.RightList();
					for ( var i=0; i<jsonData.result.length; i++ ) {
						_addToRight( _decodeUserObj(jsonData.result[i]), true );
					}
										
					if ( _rightList.getList().length == 0) {						
						daum.$$("#list", _rightUI)[0].innerHTML = '<li class="noData">선택한 회원이 없습니다. 왼쪽 박스에서 회원을 선택하면 자동으로 추가됩니다.</li>';
					}
					_requestLeftList();
					return;
				} 
				// for requestFriendList
				else { 
					_nextValue = jsonData.nextValue;

					if ( !_leftList ) { 
						_leftList = new YZ.Form.LeftList(_excludeUids, _rightList);
					}
		
					for ( var i=0; i<jsonData.result.length; i++ ) {
						daum.$$("#totalCount", _leftUI)[0].innerHTML = jsonData.totalCount;
						var result = _addToLeft( _decodeUserObj(jsonData.result[i]), ul );
						templateBuffer.push(result);
					}
			
					var ul = document.createElement("ul");
					ul.className = (_requestCount == 0)? "firstList" : "";
					ul.innerHTML = templateBuffer.join("");
					daum.$$(".listBody div", _leftUI)[0].appendChild(ul);

					_hideLoadingBar();

					_requestCount += 1;
		
					if (_leftList.getList().length == 0) {
						ul.innerHTML = '<li class="noData">선택할 수 있는 회원이 없습니다.</li>';
					}

					if (_nextValue && _nextValue > 0) {
						if( (_MIN_LIST_COUNT > _leftList.getList().length) && !(_MIN_LIST_COUNT > jsonData.totalCount) ) {
							_requestLeftList();
						} else {
							// if next list is exist, scroll event dispatch
							var target = daum.Element.getParent(ul);
							
							_eventId = daum.Event.addEvent(target, "scroll", function(e){
								var scrollHeight = target.scrollHeight;
								var offsetHeight = target.offsetHeight;
								var scrollTop = target.scrollTop;
								
								if( scrollHeight == scrollTop + offsetHeight ) {
									daum.Event.stopEvent(e);	
									_requestLeftList();
								}
							});							
						}
					}
				}
			} else {
				console.log("requestFriendList callback error message: ", jsonData.errorMsg);
				return;
			}
		}
	}
}


YZ.ReqForm = function() {
	var _excludeUids = new YZ.Hashmap();
	
	var _element ;
	var _formin, _formout;
	var _formdata;
	
	var _selectList;
	var _selectLimit;
	var _maxCount = 50;
	var _searchText;
	var _message;
	var _set;
	
	var _groupOption;

	function search(e) {
		daum.Event.stopEvent(e);
		
		var viewListButton = daum.$$("#viewListButton", _element)[0];
		daum.Element.removeClassName(viewListButton, "yzHiddenPhrase");
		
		var searchText =_searchText.value;
		var leftAction = {
			"url" : "api/json/GroupMembers.json",
			"params" : [ 
				"appkey" , YZ.Config.appkey, "urlname", _formdata["urlname"].value, "group_option", _groupOption, "set", _set,
				"max_count", _maxCount, "list_option", "page", "encode", "true", "search_value", searchText	
			]
		};
		_selectList.changeLeft(leftAction);
	}
	
	function submitForm(e) {
		daum.Event.stopEvent(e);
			
		var selectedList = _selectList.getSelectedList();
		if (selectedList.length < 1) {
			alert("선택한 친구가 없습니다."); 
			return false;
		}
			
		if (length > 100) {
			alert('공백 포함 100자 까지 쓸 수 있습니다.');
			return false;
		} else {
			if (!confirm("선택한 친구에게 보내시겠습니까?")) {
				return false;
			}
			
			if (_message && ("회원을 검색하세요" == _message.value)) {
				_message.value = "";
			}
			
			YZ.submitDimLayer.showSubmitDim(daum.Element.getFirstChild(_element));

			var uidList = new Array();
			var groupIdList = new Array();
			var selectedListLength = selectedList.length;
			for( var i=0; i < selectedListLength; i++ ) {
				uidList.push(selectedList[i].uid);
				groupIdList.push(selectedList[i].group.id); 
			}
			
			var submitBtn = daum.$$(".yzSubmitBtn", _element)[0];
			submitBtn.disabled = "disabled";
			
			if(_message && _formdata["message"].value != "친구에게 보낼 메세지를 입력하세요") {
				_formin["message"].value = _formdata["message"].value;
				_formout["message"].value = _formdata["message"].value;
			} 
			
			_formout["receiver_uids"].value = uidList;
			_formin["uidList"].value = uidList;
			_formin["groupIdList"].value = groupIdList;
			
			var uniqueId = _formin["uniqueId"].value;
			YZ.Yzml.processForm(uniqueId);
		}
	}
	
	function dispatchEvent() {
		daum.Event.addEvent(daum.$$("#selectAllButton", _element)[0], "click",  _selectList.selectAll);
		daum.Event.addEvent(daum.$$("#deleteAllButton", _element)[0], "click",  _selectList.deleteAll);
		daum.Event.addEvent(daum.$$(".searchForm", _element)[0], "submit",  search.bindAsEventListener(this));
		daum.Event.addEvent(daum.$$(".yzSubmitBtn", _element)[0], "click",  submitForm.bindAsEventListener(this));
		daum.Event.addEvent(daum.$$("#searchFriendInput", _element)[0], "focus",  function() {
			_searchText.value = "";
		});

		if (daum.$$("#viewType", _element)[0]) {
			daum.Event.addEvent(daum.$$("#viewType", _element)[0], "click", function(e){
				var searchText = _searchText.value;
				if (searchText == "회원을 검색하세요") {
					searchText = ""
				}
				if (daum.$("viewType").checked) {
					_groupOption = "all";
					leftAction = {
						"url": "api/json/Friends.json",
						"params": [
							"appkey", YZ.Config.appkey, "urlname", _formdata["urlname"].value, "group_option", _groupOption, 
							"max_count", _maxCount, "list_option", "page", "encode", "true", "search_value", searchText
						]
					};
				}
				else {
					leftAction = {
						"url": "api/json/GroupMembers.json",
						"params": ["appkey", YZ.Config.appkey, "urlname", _formdata["urlname"].value, "group_option", _groupOption, "set", _set, 
											"max_count", _maxCount, "list_option", "page", "encode", "true", "search_value", searchText]
					};
				}
				_selectList.changeLeft(leftAction);
			});
		}
		
		var viewListButton = daum.$$("#viewListButton", _element)[0];
		daum.Event.addEvent(viewListButton, "click", function() {
			_searchText.value = "회원을 검색하세요";
			daum.Element.addClassName(viewListButton, "yzHiddenPhrase");			
			
			leftAction = {
				"url": "api/json/GroupMembers.json",
				"params": [
					"appkey", YZ.Config.appkey, "urlname", _formdata["urlname"].value, "group_option", _groupOption, "set", _set, 
					"max_count", 15, "list_option", "page", "encode", "true"
				]
			};
			_selectList.changeLeft(leftAction);
		});

		if(_message) {
			var target = daum.$$(".yzMessageCnt em", _element)[0];		
			daum.Event.addEvent(_message, "focus", function() { 
				YZ.Utility.countText(100, _message, target);
			});
	
	 		daum.Event.addEvent(_message, "focus", function() {
				if(_message.value === "친구에게 보낼 메세지를 입력하세요") {
					_message.value = ""; 
				}
			});
		}
	}
	
	return {
		"create" : function(element) {
			_element = element;
			_formdata =  daum.$$(".formData", _element)[0];
			_formin = daum.$$(".formIn", _element)[0];
			_formout = daum.$$(".formOut", _element)[0];
			_searchText = daum.$$("#searchFriendInput", _element)[0];
			_groupOption = "group";
			_selectLimit = _formdata["selectLimit"].value;
			_set = _formdata["set"].value;
			
			YZ.submitDimLayer.addDimmedDiv(daum.Element.getFirstChild(_element));
			
			if(daum.$$(".yzUserMessage textarea", _element)[0]) {				
				_message = daum.$$(".yzUserMessage textarea", _element)[0];
			}
			
			if( !_selectLimit ) _selectLimit = 100;
						                      
			var leftAction =  {
				"url" : "api/json/GroupMembers.json",
				"params" : [	"appkey" , YZ.Config.appkey, "group_option", _groupOption, "set", _set, 
									"list_option", "page",  "max_count", _maxCount ,  "encode", "true" ]
			};
			var rightAction = null;
			var uniqueID = _formin["uniqueId"].value;
			var leftUI = daum.$$("#leftList", _element)[0]; 
			var rightUI = daum.$$("#rightList", _element)[0];

			var excludeUids = _formdata["excludeUids"].value;
			excludeUids = excludeUids.split(",");
			
			var excludeUidsLength = excludeUids.length;
			for(i = 0; i < excludeUidsLength; i++) {
				var excludeUid = daum.String.trim(excludeUids[i]);
				_excludeUids.put(excludeUid, excludeUid);
			}
			
			daum.$$("#list", rightUI)[0].innerHTML = '<li class="noData">선택한 회원이 없습니다. 왼쪽 박스에서 회원을 선택하면 자동으로 추가됩니다.</li>';
			
			_selectList = new YZ.Form.SelectList("s"+uniqueID, leftAction, rightAction, leftUI, rightUI, _excludeUids, _selectLimit);
			YZ.Instance.setInstance("s"+uniqueID, _selectList);
			_selectList.create();

			dispatchEvent();
		}
	}
}

YZ.InviteForm = function() {
	var _excludeUids = new YZ.Hashmap();
	
	var _element ;
	var _formin, _formout;
	var _formdata;
	
	var _selectList;
	var _selectLimit;
	var _maxCount = 50;
	var _searchText;
	var _message;

	var _groupOption;

	function search(e) {
		daum.Event.stopEvent(e);
		
		var viewListButton = daum.$$("#viewListButton", _element)[0];
		daum.Element.removeClassName(viewListButton, "yzHiddenPhrase");
		
		var searchText =_searchText.value;
		var leftAction = {
			"url" : "api/json/RandomMembers.json",
			"params" : [ 
				"appkey" , YZ.Config.appkey, "urlname", _formdata["urlname"].value, "group_option", _groupOption, "set", "others",
				"list_option", "page", "encode", "true", "search_value", searchText	
			]
		};
		_selectList.changeLeft(leftAction);
	}
	
	function submitForm(e) {
		daum.Event.stopEvent(e);
			
		var selectedList = _selectList.getSelectedList();
		if (selectedList.length < 1) {
			alert("선택한 친구가 없습니다."); 
			return false;
		}
			
		if (length > 100) {
			alert('공백 포함 100자 까지 쓸 수 있습니다.');
			return false;
		} else {
			if (!confirm("선택한 친구에게 보내시겠습니까?")) {
				return false;
			}
			
			if (_message && ("회원을 검색하세요" === _message.value)) {
				_message.value = "";
			}
			
			YZ.submitDimLayer.showSubmitDim(daum.Element.getFirstChild(_element));

			var uidList = new Array();
			var nicknameList = new Array();
			
			var selectedListLength = selectedList.length; 
			for( var i = 0; i < selectedListLength; i++ ) {
				uidList.push(selectedList[i].uid);
				nicknameList.push(selectedList[i].nickname); 
			}
			
			var submitBtn = daum.$$(".yzSubmitBtn", _element)[0];
			submitBtn.disabled = "disabled";
			
			if (_message && _formdata["message"].value != "친구에게 보낼 메세지를 입력하세요") {
				_formin["message"].value = _formdata["message"].value;
				_formout["message"].value = _formdata["message"].value;
			}
			
			_formout["receiver_uids"].value = uidList;
			_formin["uidList"].value = uidList;
			_formin["nicknameList"].value = nicknameList;
			
			var uniqueId = _formin["uniqueId"].value;
			YZ.Yzml.processForm(uniqueId);
		}
	}
	
	function dispatchEvent() {
		daum.Event.addEvent(daum.$$("#selectAllButton", _element)[0], "click",  _selectList.selectAll);
		daum.Event.addEvent(daum.$$("#deleteAllButton", _element)[0], "click",  _selectList.deleteAll);
		daum.Event.addEvent(daum.$$(".searchForm", _element)[0], "submit",  search.bindAsEventListener(this));
		daum.Event.addEvent(daum.$$(".yzSubmitBtn", _element)[0], "click",  submitForm.bindAsEventListener(this));
		daum.Event.addEvent(daum.$$("#searchFriendInput", _element)[0], "focus",  function() {
			_searchText.value = "";
		});

		if (_message) {
			var target = daum.$$(".yzMessageCnt em", _element)[0];
			daum.Event.addEvent(_message, "focus", function(){
				YZ.Utility.countText(100, _message, target);
			});
			
			daum.Event.addEvent(_message, "focus", function(){
				if (_message.value === "친구에게 보낼 메세지를 입력하세요") {
					_message.value = "";
				}
			});
		}

		var viewListButton = daum.$$("#viewListButton", _element)[0];
		daum.Event.addEvent(viewListButton, "click", function() {
			_searchText.value = "회원을 검색하세요";
			daum.Element.addClassName(viewListButton, "yzHiddenPhrase");			
			
			leftAction = {
				"url": "api/json/RandomMembers.json",
				"params": [
					"appkey", YZ.Config.appkey, "urlname", _formdata["urlname"].value, "group_option", _groupOption, "set", "others",
					"list_option", "page", "encode", "true"
				]
			};
			_selectList.changeLeft(leftAction);
		});
	}
	
	return {
		"create" : function(element) {
			_element = element;
			_formdata =  daum.$$(".formData", _element)[0];
			_formin = daum.$$(".formIn", _element)[0];
			_formout = daum.$$(".formOut", _element)[0];
			_searchText = daum.$$("#searchFriendInput", _element)[0];
			_groupOption = "group";
			
			YZ.submitDimLayer.addDimmedDiv(daum.Element.getFirstChild(_element));

			if(daum.$$(".yzUserMessage textarea", _element)[0]) {				
				_message = daum.$$(".yzUserMessage textarea", _element)[0];
			}
						
			_selectLimit = _formdata["selectLimit"].value;
			if( !_selectLimit ) _selectLimit = 100;
						 
			var leftAction =  {
				"url" : "api/json/RandomMembers.json",
				"params" : [	"appkey" , YZ.Config.appkey, "group_option", _groupOption, "list_option", "page", "set", "others",  "max_count", _maxCount ,  "encode", "true" ]
			};
			var rightAction = null;
			var uniqueID = _formin["uniqueId"].value;
			var leftUI = daum.$$("#leftList", _element)[0]; 
			var rightUI = daum.$$("#rightList", _element)[0];

			var excludeUids = _formdata["excludeUids"].value;
			excludeUids = excludeUids.split(",");
			
			var excludeUidsLength = excludeUids.length;
			for(i = 0; i < excludeUidsLength; i++) {
				var excludeUid = daum.String.trim(excludeUids[i]);
				_excludeUids.put(excludeUid, excludeUid);
			}
			
			daum.$$("#list", rightUI)[0].innerHTML = '<li class="noData">선택한 회원이 없습니다. 왼쪽 박스에서 회원을 선택하면 자동으로 추가됩니다.</li>';
			
			_selectList = new YZ.Form.SelectList("s"+uniqueID, leftAction, rightAction, leftUI, rightUI, _excludeUids, _selectLimit);
			YZ.Instance.setInstance("s"+uniqueID, _selectList);
			_selectList.create();

			dispatchEvent();
		}
	}
}

YZ.Cookie = function()
{
	//쿠키 조정 함수
	return {
		"createCookie" : function(name,value,days) {
			 if (days) {
			      var date = new Date();
			      date.setTime(date.getTime()+(days*24*60*60*1000));
			      var expires = "; expires="+date.toGMTString();
			   }
			   else var expires = "";
			   document.cookie = name+"="+value+expires+"; path=/ ";
		},
		"createCookieByMinutes" : function(name,value,minutes) {
			 if (minutes) {
			      var date = new Date();
			      date.setTime(date.getTime()+(minutes*60*1000));
			      var expires = "; expires="+date.toGMTString();
			   }
			   else var expires = "";
			   document.cookie = name+"="+value+expires+"; path=/ ";
		},
		"readCookie" : function(name) {
			var nameEQ = name + "=";
			var ca = document.cookie.split(';');
			for(var i=0;i < ca.length;i++) {
				var c = ca[i];
				while (c.charAt(0)==' ') c = c.substring(1,c.length);
				if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
			}
			return null;
		},
		"eraseCookie" : function(name) {
			this.createCookie(name,"",-1);
		}
	}
}();


YZ.RecommendForm = function() {

	var _excludeUids = new YZ.Hashmap();
	
	var _element ;
	var _formin, _formout;
	var _formdata;
	
	var _selectList;
	var _selectLimit;
	var _maxCount = 100;
	var _searchText;
	var _message;
	var _set;
	
	var _groupOption;
	
	var _randomSeedNumber;
	
	function search(e) {
		daum.Event.stopEvent(e);
		
		var viewListButton = daum.$$("#viewListButton", _element)[0];
		daum.Element.removeClassName(viewListButton, "yzHiddenPhrase");
		
		var searchText =_searchText.value;
		var leftAction = {
			"url" : "api/json/RecommendedFriends.json",
			"params" : [ 
				"appkey" , YZ.Config.appkey, "urlname", _formdata["urlname"].value, "group_option", _groupOption, "set", _set,
				"max_count", _maxCount, "list_option", "all", "encode", "true", "search_value", searchText, "random_seed", _randomSeedNumber
			]
		};
		_selectList.changeLeft(leftAction);
	}
	
	function submitForm(e) {
		daum.Event.stopEvent(e);
		
		var selectedList = _selectList.getSelectedList();
		if (selectedList.length < 1) {
			alert("선택한 친구가 없습니다."); 
			return false;
		}
		else{
			
			if (!confirm("선택한 친구를 친구로 추가하시겠습니까?")) {
				return false;
			}
			
			if (_message && ("회원을 검색하세요" == _message.value)) {
				_message.value = "";
			}
			
			YZ.submitDimLayer.showSubmitDim(daum.Element.getFirstChild(_element));

			var uidList = new Array();
			var groupIdList = new Array();
			var selectedListLength = selectedList.length;
			for( var i=0; i < selectedListLength; i++ ) {
				uidList.push(selectedList[i].uid);
				groupIdList.push(selectedList[i].group.id); 
			}
			
			var submitBtn = daum.$$(".yzSubmitBtn", _element)[0];
			submitBtn.disabled = "disabled";
			
			if(_message && _formdata["message"].value != "친구에게 보낼 메세지를 입력하세요") {
				_formin["message"].value = _formdata["message"].value;
				_formout["message"].value = _formdata["message"].value;
			}
			
			_formin["uidList"].value = uidList;
			
			var uniqueId = _formin["uniqueId"].value;
			YZ.Yzml.processForm(uniqueId);
		}
		
	}
	
	function dispatchEvent() {
		daum.Event.addEvent(daum.$$("#selectAllButton", _element)[0], "click",  _selectList.selectAll);
		daum.Event.addEvent(daum.$$("#deleteAllButton", _element)[0], "click",  _selectList.deleteAll);
		daum.Event.addEvent(daum.$$(".searchForm", _element)[0], "submit",  search.bindAsEventListener(this));
		daum.Event.addEvent(daum.$$(".yzSubmitBtn", _element)[0], "click",  submitForm.bindAsEventListener(this));
		if (daum.$$("#hideCheckBox", _element)[0]) {
			daum.Event.addEvent(daum.$$("#hideCheckBox", _element)[0], "click",  function(){
				if(daum.$("hideCheckBox").checked) {
					YZ.Cookie.createCookie("recommendPop" + YZ.Config.appkey, "popup_disable", 7);
				} else {
					YZ.Cookie.eraseCookie("recommendPop" + YZ.Config.appkey);
				}
			});
		}
		
		
		daum.Event.addEvent(daum.$$("#searchFriendInput", _element)[0], "focus",  function() {
			_searchText.value = "";
		});

		var viewListButton = daum.$$("#viewListButton", _element)[0];
		daum.Event.addEvent(viewListButton, "click", function() {
			_searchText.value = "회원을 검색하세요";
			daum.Element.addClassName(viewListButton, "yzHiddenPhrase");			
			
			leftAction = {
				"url": "api/json/RecommendedFriends.json",
				"params": [
					"appkey", YZ.Config.appkey, "urlname", _formdata["urlname"].value, "group_option", _groupOption, "set", _set, 
					"max_count", _maxCount, "list_option", "all", "encode", "true", "random_seed", _randomSeedNumber
				]
			};
			_selectList.changeLeft(leftAction);
		});

	}
	
	return {
		"create" : function(element) {
			_element = element;
			_formdata =  daum.$$(".formData", _element)[0];
			_formin = daum.$$(".formIn", _element)[0];
			_formout = daum.$$(".formOut", _element)[0];
			_searchText = daum.$$("#searchFriendInput", _element)[0];
			_groupOption = "group";
			
			_randomSeedNumber = Math.random();
			
			YZ.submitDimLayer.addDimmedDiv(daum.Element.getFirstChild(_element));
			
			if(daum.$$(".yzUserMessage textarea", _element)[0]) {				
				_message = daum.$$(".yzUserMessage textarea", _element)[0];
			}
			
			if( !_selectLimit ) _selectLimit = 100;
						                      
			var leftAction = {
				"url" : "api/json/RecommendedFriends.json",
				"params" : [	"appkey" , YZ.Config.appkey, "group_option", _groupOption,
									"list_option", "all",  "max_count", _maxCount ,  "encode", "true", "random_seed", _randomSeedNumber ]
			};
			var rightAction = {
					"url" : "api/json/RecommendedFriends.json",
					"params" : [	"appkey" , YZ.Config.appkey, "group_option", _groupOption,
										"list_option", "all",  "max_count", _maxCount ,  "encode", "true", "random_seed", _randomSeedNumber ]
			};
			
			var uniqueID = _formin["uniqueId"].value;
			var leftUI = daum.$$("#leftList", _element)[0]; 
			var rightUI = daum.$$("#rightList", _element)[0];
			
			daum.$$("#list", rightUI)[0].innerHTML = '<li class="noData">선택한 회원이 없습니다. 왼쪽 박스에서 회원을 선택하면 자동으로 추가됩니다.</li>';
			
			_selectList = new YZ.Form.SelectList("s"+uniqueID, leftAction, rightAction, leftUI, rightUI, _excludeUids, _selectLimit, true);
			YZ.Instance.setInstance("s"+uniqueID, _selectList);
			_selectList.create();

			dispatchEvent();
		}
	}
}


YZ.FavoriteForm = function() {
	var _excludeUids = new YZ.Hashmap();
	
	var _element ;
	var _formin, _formout;
	var _formdata;
	
	var _selectList;
	var _selectLimit = 300;
	var _maxCount = 50;
	var _searchText;
	
	var _groupOption = "all";
	
	function search(e) {
		daum.Event.stopEvent(e);
		
		var viewListButton = daum.$$("#viewListButton", _element)[0];
		daum.Element.removeClassName(viewListButton, "yzHiddenPhrase");
		
		var searchText =_searchText.value;
		var leftAction = {
			"url" : "api/json/GroupMembers.json",
			"params" : [ 
				"appkey" , YZ.Config.appkey, "urlname", _formdata["urlname"].value, "group_option", _groupOption, 
				"max_count", _maxCount, "list_option", "page", "encode", "true", "search_value", searchText
			]
		};
		_selectList.changeLeft(leftAction);
	}
	
	function submitForm(e) {
		daum.Event.stopEvent(e);
		YZ.submitDimLayer.showSubmitDim(daum.Element.getFirstChild(_element));
		
		var submitBtn = daum.$$(".yzSubmitBtn", _element)[0];
		submitBtn.disabled = "disabled";
		
		var selectedList = _selectList.getSelectedList();
		var uidList = new Array();
		var groupIdList = new Array();
		
		var selectedListLength = selectedList.length;
		for( var i = 0; i < selectedListLength; i++ ) {
			uidList.push(selectedList[i].uid);
			groupIdList.push(selectedList[i].group.id); 
		}
		
		_formin["uidList"].value = uidList;
		_formin["groupIdList"].value = groupIdList;
			
		var uniqueId = _formin["uniqueId"].value;
		YZ.Yzml.processForm( uniqueId );
	}
	
	function dispatchEvent() {
		daum.Event.addEvent(daum.$$("#selectAllButton", _element)[0], "click",  _selectList.selectAll);
		daum.Event.addEvent(daum.$$("#deleteAllButton", _element)[0], "click",  _selectList.deleteAll);
		daum.Event.addEvent(daum.$$(".searchForm", _element)[0], "submit",  search.bindAsEventListener(this));
		daum.Event.addEvent(daum.$$(".yzSubmitBtn", _element)[0], "click",  submitForm.bindAsEventListener(this));
		if (daum.$$("#hideCheckBox", _element)[0]) {
			daum.Event.addEvent(daum.$$("#hideCheckBox", _element)[0], "click",  function(){
				if(daum.$("hideCheckBox").checked) {
					YZ.Cookie.createCookie("cafeFavPop" + YZ.Config.appkey, "popup_disable", 7);
				} else {
					YZ.Cookie.eraseCookie("cafeFavPop" + YZ.Config.appkey);
				}
			});
		}
		
		daum.Event.addEvent(daum.$$("#searchFriendInput", _element)[0], "focus",  function() {
			_searchText.value = "";
		});

		if (daum.$$("#viewType", _element)[0]) {
			daum.Event.addEvent(daum.$$("#viewType", _element)[0], "click", function(e){
				var searchText = _searchText.value;
				if (searchText == "회원을 검색하세요") {
					searchText = ""
				}
				if (daum.$("viewType").checked) {
					_groupOption = "follower";
					leftAction = {
						"url": "api/json/Friends.json",
						"params": [
							"appkey", YZ.Config.appkey, "urlname", _formdata["urlname"].value, "group_option", _groupOption, 
							"max_count", _maxCount, "list_option", "page", "encode", "true", "search_value", searchText
						]
					};
				}
				else {
					leftAction = {
						"url" : "api/json/GroupMembers.json",
						"params" : [	
							"appkey" , YZ.Config.appkey, "urlname", _formdata["urlname"].value, "group_option", _groupOption,
						 	"max_count",_maxCount, "list_option", "page", "encode", "true", "search_value", searchText ]
					};
				}
				_selectList.changeLeft(leftAction);
			});
		}

		var viewListButton = daum.$$("#viewListButton", _element)[0];
		daum.Event.addEvent(viewListButton, "click", function() {
			_searchText.value = "회원을 검색하세요";
			daum.Element.addClassName(viewListButton, "yzHiddenPhrase");			
			
			leftAction = {
				"url": "api/json/GroupMembers.json",	
				"params": [
					"appkey", YZ.Config.appkey, "urlname", _formdata["urlname"].value, "group_option", _groupOption,
					"max_count", _maxCount, "list_option", "page", "encode", "true"
				]
			};
			_selectList.changeLeft(leftAction);
		});
	}
	
	return {
		"create" : function(element) {
			_element = element;
			_formin = daum.$$(".formIn", _element)[0];
			_formout = daum.$$(".formOut", _element)[0]
			_formdata =  daum.$$(".formData", _element)[0];
			_searchText = daum.$$("#searchFriendInput", _element)[0];
			_groupOption = "group";
			
			YZ.submitDimLayer.addDimmedDiv(daum.Element.getFirstChild(_element));
			
			var leftAction = {
				"url" : "api/json/GroupMembers.json",
				"params" : [ "appkey", YZ.Config.appkey, "urlname", _formdata["urlname"].value, "group_option", "all", "max_count",_maxCount, "list_option", "page", "encode", "true" ]
			};
			var rightAction = {
				"url" : "api/json/Friends.json",
				"params" : [ "appkey", YZ.Config.appkey, "group_option", "all", "list_option", "all", "encode", "true" ]
			};
			var uniqueID = _formin["uniqueId"].value;
			var leftUI = daum.$$("#leftList", _element)[0]; 
			var rightUI = daum.$$("#rightList", _element)[0];
			
			_selectList = new YZ.Form.SelectList("s"+uniqueID, leftAction, rightAction, leftUI, rightUI, _excludeUids, _selectLimit);
			YZ.Instance.setInstance("s"+uniqueID, _selectList);
			_selectList.create();

			dispatchEvent();
		}
	}
}


YZ.Publish = function() {
	var _message;
	var _form;
	var _element;

	return	{ 
		"create": function(element) {
			_element = element;
			_message = daum.$$("textarea", element)[0];
			_form = daum.$$("form", element)[0];		

			var pngImages = daum.$$(".isPng", _element);
			YZ.Utility.setPng(pngImages);
			
			var target = daum.$$(".yzMessageCnt em", _element)[0];
			daum.Event.addEvent(_message, "focus", function() { 
				YZ.Utility.countText(150, _message, target);
			});
		}
	}
};


YZ.PubForm = function() {
	var _message;
	var _formin;
	var _formout;
	var _element;
	
	function _checkForm(e){
		daum.Event.stopEvent(e);
		
		var submitBtn = daum.$$(".yzSubmitBtn", _formin)[0];

		if (daum.$$(".yzMessageOption", _element)[0]) {
			var checkBoxs = daum.$$("input[type=checkbox]", _element);
			var flag = false;

			for (var i = 0; i < checkBoxs.length; i++) {
				if (checkBoxs[i].checked) {
					checkBoxs[i].value = "on";
					flag = true;
				} else {
					checkBoxs[i].value = "";
				}
			}
				
			var boardType = daum.$$("#cafeBoardType", _element)[0];		
			if (boardType.value == "") {
				if(!flag) {
					alert("게시판을 선택해주세요.");
					boardType.focus();
					return;					
				}
			}
			if(_formin["message"].value != "친구에게 보낼 메세지를 입력하세요") {
				_formout["message"].value = _formin["message"].value;
			}
			
			_formin["cafeBoardId"].value = boardType.value;
			
		}

		YZ.submitDimLayer.showSubmitDim(daum.Element.getFirstChild(_element));
		submitBtn.disabled = "disabled";
		var uniqueId = _formin["uniqueId"].value;
		YZ.Yzml.processForm(uniqueId);
	}

	function _dispatchEvent() {
		daum.Event.addEvent(daum.$$(".yzSubmitBtn", _element)[0], "click", _checkForm.bindAsEventListener(this));
	}
	
	return	{ 
		"create": function(element) {
			_element = element;
			_formin = daum.$$(".formIn", _element)[0];
			_formout = daum.$$(".formOut", _element)[0]		
			_message = daum.$$("textarea", _formin)[0];
			
			YZ.submitDimLayer.addDimmedDiv(daum.Element.getFirstChild(_element));
			
			var pngImages = daum.$$(".isPng", _element);
			YZ.Utility.setPng(pngImages);
						
			var target = daum.$$(".yzMessageCnt em", _element)[0];
			daum.Event.addEvent(_message, "focus", function() { 
				YZ.Utility.countText(150, _message, target);
			});
			
			_dispatchEvent();
		}
	}
};


YZ.Billing = function() {
	var _productId;
	var _url;	
	var _popWrap;
	var _callback;
	var _positionY;
	
	return {
		"create": function(pid, callback, positionY, isPreventScreen) {
			_productId = pid;
			_callback = callback? callback : null;
			_url = YZ.Config.baseUrl + "payment/PayMain.html?appkey=" + YZ.Config.appkey + "&productId=" + _productId;

			this.positionY = positionY? positionY : 150;
			this.isPreventScreen = isPreventScreen? isPreventScreen : false;

			var template = "<iframe src=\"" + _url + "\" id=\"frameWrap\" class=\"yzBillingFrame\" frameborder=\"0\" width=\"542\" height=\"281\" allowtransparency=\"true\" scrolling=\"no\"><\/iframe>";
			var titleText = "아이템 구매";
			YZ.Dialog.create(template, titleText, 40, 40, true, callback);
		}
	}
}();


YZ.Dialog = function(){
	var _dialogWindow;
	var _preventDiv;
	var _yzmlString;
	var _titleText;
	var _positionX; 
	var _positionY;
	var _isPreventScreen;
	var _callback;
	
	function _callbackFunction(callback, data) {
		console.log("callbackFunction", data);
		
		this.data = data? data: {"actionName": "close" };
		if( callback && typeof callback === "function" ) {
			callback(this.data);
		} else {
			console.log("Dialog callback function type is " , typeof callback, ". it isn't called. ");
		}
	}
	
	return { 
		"create": function(yzmlString, titleText, positionX, positionY, isPreventScreen, callback) {
			_yzmlString = yzmlString;
			_titleText = titleText;
			_positionX = positionX;
			_positionY = positionY;

			_isPreventScreen = isPreventScreen? isPreventScreen : false;			
			_callback = callback? callback : null;
			
			var _timeid = setTimeout(function(){
				if (YZ.Utility.isProxy()) {					
					this.check(positionX, positionY);
				} else {
					try {	
						this.create(_yzmlString, _titleText, _positionX, _positionY, _isPreventScreen, _callback);
					} catch(e) {
						console.log("exception", e);
					}
				}
			}.bind(this), 300);
		},
		"check": function() {
			if (_isPreventScreen && !YZ.Utility.preventScreen.status) {
				YZ.Utility.preventScreen.create();
			}
			
			if (!_dialogWindow) {
				_dialogWindow = document.createElement("div");
				_dialogWindow.className = "yzDialogWindow";
				_dialogWindow.style.display = "none";
				document.body.appendChild(_dialogWindow);
						
				if(_positionX) {
					daum.Element.setLeft(_dialogWindow, _positionX);	
				}
				
				if (_positionY) {
					daum.Element.setTop(_dialogWindow, _positionY);
				}
				
				var title = document.createElement("div");
				title.className = "yzDialogTitle";
				_dialogWindow.appendChild(title);

				if (_titleText && (_titleText !== "")) {
					var header = document.createElement("h2");
					header.innerHTML = _titleText;
					title.appendChild(header);
				}
				
				var closeButton = document.createElement("button");
				closeButton.title = "닫기";
				closeButton.className = "yzCloseButton";
				closeButton.innerHTML = "닫기";
				daum.Event.addEvent(closeButton, "click", YZ.Dialog.remove);
				_dialogWindow.appendChild(closeButton);
				
				var content = document.createElement("div");
				content.className = "yzDialogContent";
				_dialogWindow.appendChild(content);
				content.innerHTML = _yzmlString;
				
				var iframe = daum.$$('iframe', content)[0];
				var yzCloseButton = daum.$C(_dialogWindow, "yzCloseButton")[0];
				if(iframe && iframe.id === "frameWrap") {
					daum.Element.hide(yzCloseButton);
				}
				YZ.Dom.traverseDom(content, true);
				
				var timeid = setTimeout( function() {
					_dialogWindow.style.display = "block";									
				}, 500);
			}
		},
		
		"remove": function(data) {
			document.body.removeChild(_dialogWindow);		
			_dialogWindow = null;
			
			if (YZ.Utility.preventScreen.status) {
				YZ.Utility.preventScreen.remove();
			}
			_callbackFunction(_callback, data);
		}
	}
}();

