var Ivy = {
  version: '2.5.2',
  domain:'', // »çÀÌÆ® µµ¸ÞÀÎ Æ÷Æ®ÁöÁ¤½Ã Æ÷ÇÔµÊ
  name:'Ivy',

  isGecko:0,
  isIE:0,
  dwIE7:0, // "1" ÀÌ¸é IE 7 ¹Ì¸¸
  isOpera:0,

  html:'',
  ajaxLoader:null,
  errMsg:{
    'argument':'ÇÔ¼ö ÀÎÀÚ ÁöÁ¤ÀÌ ¿Ã¹Ù¸£Áö ¾Ê½À´Ï´Ù.',
    'option':'¿É¼ÇÇ×¸ñ ÁöÁ¤ÀÌ ¿Ã¹Ù¸£Áö ¾Ê½À´Ï´Ù.',
    '403':'Á¢±Ù°ÅºÎ.',
    '404':'ÆäÀÌÁö¸¦ Ã£À» ¼ö ¾ø½À´Ï´Ù.',
    '500':'¼­¹ö ¿À·ù ¹ß»ý.',
    'object':'ÁöÁ¤ÇÑ °´Ã¼¸¦ Ã£À» ¼ö ¾ø½À´Ï´Ù.'
  },

  init: function()
  {
    this.domain=document.URL.split('/');
    this.domain=this.domain[2];
    var agt = navigator.userAgent.toLowerCase();
    if(navigator.product == "Gecko") {this.isGecko = 1;return;}
    if(agt.indexOf("msie")) { 
      this.isIE =1;
      if(agt.indexOf("msie 5") != -1) {this.dwIE7 = 1;return;}
      if(agt.indexOf("msie 6") != -1) {this.dwIE7 = 1;return;}
      return;
    }
    if(agt.indexOf("opera")) this.isOpera =1;
  },
  
  setPanels: function()
  {
/**  ¾Æ·¡ ÄÚµå´Â »çÀÌÆ® ÀüÃ¼Å©±â(Height) ±âº» 100% »ç¿ë½Ã  **/

    var docHeight = Math.max(document.documentElement.clientHeight,document.body.offsetHeight) - (parseInt($('layHead').getStyle('height')) + parseInt($('layTail').getStyle('height')));
    $('layBody').setStyle({minHeight:docHeight+'px'});
    if(this.isIE && this.dwIE7) {
      $('layBody').setStyle({height:docHeight+'px'});
    }

    this.dialogue.init();
    this.dialogue2.init();
    this.toggle.init();
  },

/**
 * »ç¿ëÀÚ ´ëÈ­Ã¢1
 * ¹®¼­ÀüÃ¼ ºñÈ°¼ºÈ­ÇÔ
 * ´ëÈ­Ã¢Àº »ç¿ëÀÚ ÇØ»óµµÀÇ °¡¿îµ¥ À§Ä¡ÇÔ
 * ½ºÅ©·Ñ ÀÌµ¿½Ã »ó´ëÀûÀ¸·Î À§Ä¡ Àç¼³Á¤ÇÔ
*/

  dialogue:{
    handler:null,  // dialogue ½ºÅ©·Ñ ÀÌµ¿ º¯È­¿¡ µû¸¥ Á¦¾î
    comDialogue:null,
    docDisable:null,
    statusBar:null,
    fieldSet:null,
    name:'',

    init:function()
    {
      this.name = Ivy.name;
      var comDialoguePanel = document.createElement("div");
      comDialoguePanel.id = this.name+'_comDialogue';
      document.body.appendChild(comDialoguePanel);
//      $('layHead').parentNode.insertBefore(comDialoguePanel,$('layHead'));
      this.comDialogue = $(comDialoguePanel.id);  // communication dialogue
      this.comDialogue.setStyle({
        position:'absolute',
        display:'none',
        zIndex:995
      });

      var statusBarPanel = document.createElement('div');
      statusBarPanel.id = this.name+'_statusBar';
      this.comDialogue.appendChild(statusBarPanel); // create fieldset panel
      this.statusBar = $(statusBarPanel.id);
      this.statusBar.setStyle({
        position:'relative',
        width:'100%',
        height:'25px'
      });
      var html = '<div style="position:absolute;background:url(/Images/uiComponent/statBar_left.gif) no-repeat left top;left:0;width:25px;height:25px;padding-left:3px;padding-top:3px;z-index:997;"><img src="/Images/uiComponent/base.gif" name="dialoguePanelIcon" /></div>';
      html += '<div id="panelTitle" style="position:absolute;background:url(/Images/uiComponent/statBar_ptn.gif) repeat-x top;left:4px;right:4px;text-indent:25px;color:#ffffff;padding-top:4px;width:97%;height:25px;z-index:996;">&nbsp;</div>';
      html += '<div style="position:absolute;background:url(/Images/uiComponent/statBar_right.gif) no-repeat right top;width:70px;height:25px;right:0;z-index:998;text-align:right;"><a href="javascript:void(0);" onclick="Ivy.dialogue.close();" class="tinyBtn"><span class="panelClose">&nbsp;</span></a>&nbsp;</div>';
      this.statusBar.innerHTML = html;

      var fieldSetPanel = document.createElement('div');
      fieldSetPanel.id = this.name+'_fieldSet';
      this.comDialogue.appendChild(fieldSetPanel); // create button panel
      this.fieldSet = $(fieldSetPanel.id);
      this.fieldSet.setStyle({
        position:'relative',
        minHeight:'21px',
        padding:'5px',
        overflow:'auto',
        clear:'both',
        border:'3px solid #6F58C2',
        borderTop:'0px',
        background:'#FFFFFF'
      });

      var docDisablePanel = document.createElement("div");
      docDisablePanel.id = this.name+'_docDisable';
      document.body.appendChild(docDisablePanel);
//      $('layHead').parentNode.insertBefore(docDisablePanel,$('layHead'));
      this.docDisable = $(docDisablePanel.id);  // document disabled
      this.docDisable.setStyle({
        position:'absolute',
        top:0,
        left:0,
        display:'none',
        backgroundColor:'#000000',
        width:'100%',
        height:document.body.offsetHeight+'px',
        zIndex:990,
        opacity:0.7
      });
    },

    open: function(options)
    {
      var sess = Math.random();
      var scrollTop = Math.max(document.documentElement.scrollTop, document.body.scrollTop);
      var url=arguments[2];
      var offsetWidth = document.documentElement.offsetWidth;
      
      this.options = Object.extend({
         width:200,
         height:100,
         method:'',
         icon:'/Images/uiComponent/base.gif',
         title:'Panel',
         onLoad:null,
         onClose:null
      }, options || {});

      if(this.options.width == 0) {
        this.comDialogue.setStyle({width:'100%'});
        this.options.width = offsetWidth;
      } else {
        this.comDialogue.setStyle({width:this.options.width+'px'});
      }

      if(this.options.height == 0) this.options.height = document.documentElement.clientHeight;

      this.comDialogue.setStyle({
        display:'block',
        height:this.options.height+'px',
        top:(Math.round((document.documentElement.clientHeight + this.options.height)/2) - this.options.height + scrollTop)+'px',
        left:Math.round((offsetWidth - this.options.width)/2)+'px'
      });

      this.docDisable.setStyle({
        display:'block'
      });
      this.fieldSet.setStyle({height:(this.options.height-38)+'px'});

      document.getElementsByName('dialoguePanelIcon')[0].src = this.options.icon;
      $('panelTitle').innerHTML = this.options.title;

      this.loading();

      switch (this.options.method)
      {
        case 'url':
          if(this.options.url == '')
          {
            Ivy.alert('option','Function > Ivy.dialogue: need option {url:}');
            return;
          }
          this.options.url+=(this.options.url.indexOf('?') == -1)?'?sess='+sess:'&sess='+sess;
          Ivy.getHtml.send(this.fieldSet.id,this.options.url);
        break;
        case 'html':
          if(this.options.html == '')
          {
            Ivy.alert('option','Function > Ivy.dialogue: need option {html:}');
            return;
          }
          this.fieldSet.innerHTML = this.options.html;
        break;
        default :
          Ivy.alert('option','Function > Ivy.dialogue: need option {method:url | html}');
          return;
        break;
      }
      this.handler = new PeriodicalExecuter(this.observer,0.2);
      if(this.options.onLoad) this.options.onLoad();
    },

    loading:function()
    {
      this.fieldSet.innerHTML = "<table height='100%' align='center'><tr><td><img src='/Images/uiComponent/loader_120_15.gif' /></td></tr><tr><td align='center'><strong>·ÎµùÁß...</strong></td></tr></table>";
    },

    processing:function()
    {
      this.fieldSet.innerHTML = "<table height='100%' align='center'><tr><td><img src='/Images/uiComponent/loader_120_15.gif' /></td></tr><tr><td align='center'><strong>Ã³¸®Áß...</strong></td></tr></table>";
    },

    close:function()
    {
      this.comDialogue.setStyle({display:'none'});
      this.docDisable.setStyle({display:'none'});
      this.handler.stop();
      if(this.options.onClose) this.options.onClose();
    },

    observer:function()
    {
      var scrollTop = Math.max(document.documentElement.scrollTop, document.body.scrollTop);
      var ph=parseInt($(Ivy.name+'_comDialogue').getStyle('height'));
      $(Ivy.name+'_comDialogue').setStyle({
        top:(Math.round((document.documentElement.clientHeight + ph)/2) - ph + scrollTop)+'px'
      });
    }

  },

/**
 * »ç¿ëÀÚ ´ëÈ­Ã¢2
 * ´ëÈ­Ã¢1°ú ´Þ¸® ¹®¼­ÀüÃ¼ ºñÈ°¼ºÈ­ ¾øÀ½
 * ÀÌº¥Æ® À§Ä¡¿¡¼­ ÇØ»óµµ Å©±â¸¦ ¹þ¾î³ªÁö ¾Ê°Ô ¿­¸²(ÁÂ¿ìÀ§Ä¡ Á¶Á¤µÊ)
 * Å¸ÀÌÆ²¹Ù¿¡¼­ ´ëÈ­Ã¢ Drag °¡´É
*/

  dialogue2:{
    comDialogue:null,
    statusBar:null,
    fieldSet:null,
    name:'',

    init:function()
    {
      this.name = Ivy.name;
      var comDialoguePanel = document.createElement("div");
      comDialoguePanel.id = this.name+'_comDialogue2';
      document.body.appendChild(comDialoguePanel);
//      $('layHead').parentNode.insertBefore(comDialoguePanel,$('layHead'));
      this.comDialogue = $(comDialoguePanel.id);  // communication dialogue
      this.comDialogue.setStyle({
        position:'absolute',
        display:'none',
        zIndex:996
      });

      var statusBarPanel = document.createElement('div');
      statusBarPanel.id = this.name+'_statusBar2';
      this.comDialogue.appendChild(statusBarPanel); // create fieldset panel
      this.statusBar = $(statusBarPanel.id);
      this.statusBar.setStyle({
        position:'relative',
        width:'100%',
        height:'25px'
      });
      var html = '<div style="position:absolute;background:url(/Images/uiComponent/statBar_left.gif) no-repeat left top;left:0;width:25px;height:25px;padding-left:3px;padding-top:3px;z-index:983;"><img src="/Images/uiComponent/base.gif" name="dialogue2PanelIcon" /></div>';
      html += '<div id="panelTitle2" class="moveHandler" style="position:absolute;cursor:move;background:url(/Images/uiComponent/statBar_ptn.gif) repeat-x top;left:4px;right:4px;text-indent:25px;color:#ffffff;padding-top:4px;width:97%;height:25px;z-index:982;">&nbsp;</div>';
      html += '<div style="position:absolute;background:url(/Images/uiComponent/statBar_right.gif) no-repeat right top;width:70px;height:25px;right:0;z-index:984;text-align:right;"><a href="javascript:void(0);" onclick="Ivy.dialogue2.close();" class="tinyBtn"><span class="panelClose">&nbsp;</span></a>&nbsp;</div>';
      this.statusBar.innerHTML = html;

      var fieldSetPanel = document.createElement('div');
      fieldSetPanel.id = this.name+'_fieldSet2';
      this.comDialogue.appendChild(fieldSetPanel); // create button panel
      this.fieldSet = $(fieldSetPanel.id);
      this.fieldSet.setStyle({
        position:'relative',
        minHeight:'21px',
        padding:'5px',
        clear:'both',
        border:'3px solid #6F58C2',
        borderTop:'0px',
        background:'#FFFFFF'
      });
      new Draggable(this.comDialogue.id,{handle:'moveHandler'});
    },

    open:function(event,options)
    {
      var e = event || window.event;
      var evtX = Event.pointerX(e);
      var evtY = Event.pointerY(e);
      var sess = Math.random();
      this.options = Object.extend({
         width:150,
         height:70,
         method:'',
         icon:'/Images/uiComponent/base.gif',
         title:'Panel'
      }, options || {});

      this.comDialogue.setStyle({
        display:'block',
        height:this.options.height+'px',
        width:this.options.width+'px',
        top:(evtY + 2)+'px'
      });
      this.fieldSet.setStyle({height:(this.options.height-38)+'px'});

      if( (evtX + this.options.width) < document.body.offsetWidth ) {
        this.comDialogue.setStyle({right:'',left:evtX+'px'});
      } else {
        this.comDialogue.setStyle({left:'',right:(document.body.offsetWidth - evtX)+'px'});
      }

      document.getElementsByName('dialogue2PanelIcon')[0].src = this.options.icon;
      $('panelTitle2').innerHTML = this.options.title;
      this.fieldSet.innerHTML = "<table height='100%' align='center'><tr><td><img src='/Images/uiComponent/loader_15x15.gif' /></td></tr></table>";

      switch (this.options.method)
      {
        case 'url':
          if(this.options.url == '')
          {
            Ivy.alert('option','Function > Ivy.dialogue2: need option {url:}');
            return;
          }
          this.options.url+=(this.options.url.indexOf('?') == -1)?'?sess='+sess:'&sess='+sess;
          Ivy.getHtml.send(this.fieldSet.id,this.options.url);
        break;
        case 'html':
          if(this.options.html == '')
          {
            Ivy.alert('option','Function > Ivy.dialogue2: need option {html:}');
            return;
          }
          this.fieldSet.innerHTML = this.options.html;
        break;
        default :
          Ivy.alert('option','Function > Ivy.dialogue2: need option {method:url | html}');
          return;
        break;
      }
    },

    close:function()
    {
      this.comDialogue.setStyle({display:'none'});
    }

  },

/**
 * º¸Á¶¾Ë¸²
*/
  toggle:{
    ivyToggle:null,
    name:'',
    init:function()
    {
      this.name = Ivy.name;
      var togglePanel = document.createElement("div");
      togglePanel.id = this.name+'_toggle';  // id=Ivy_toggle
//      $('layHead').parentNode.insertBefore(togglePanel,$('layHead'));
      document.body.appendChild(togglePanel);
      this.ivyToggle = $(togglePanel.id);  // toggle Object
      this.ivyToggle.setStyle({
        position:'absolute',
        minHeight:'45px',
        minWidth:'100px',
        maxWidth:parseInt(document.body.offsetWidth / 2)+'px',
        background:'url(/Images/uiComponent/layer_shadow.gif) #FFFDE8 no-repeat right bottom',
        display:'none',
        padding:'3px 7px 7px 3px',
        color:'#1B1B1B',
        borderTop:'1px solid #EAE9E6',
        borderLeft:'1px solid #EAE9E6',
        zIndex:1080
      });
    },

    open:function(html,event)
    {
      var e = event || window.event;
      if(typeof html != 'string' || html ==''){
        this.alert('argument','Function > Ivy.flashMovie:'+fid);
        return;
      }
      var evtX = Event.pointerX(e);
      this.ivyToggle.innerHTML = html;
      if(evtX < parseInt(document.body.offsetWidth / 2))
      {
        this.ivyToggle.setStyle({
          top:(Event.pointerY(e) + 15)+'px',
          left:evtX+'px',
          right:'',
          display:'block'
        });
      }
      else 
      {
        evtX = document.body.offsetWidth - evtX;
        this.ivyToggle.setStyle({
          top:(Event.pointerY(e) + 20)+'px',
          left:'',
          right:evtX+'px',
          display:'block'
        });
      }
    },
    close:function()
    {
      this.ivyToggle.setStyle({
        display:'none'
      });
    }
  },

/**
 * Ajax(Asynchronous javascript and xml)
 * return HttpRequest.responseText
*/
  getHtml:{
    send:function(id,url)
    {
      this.ajaxLoader = new Ajax.Updater({success:id}, url,{method:'get', onFailure:this.reportError, onSuccess:this.reportSuccess,evalScripts:true});
    },
    reportError:function(request){
      Ivy.alert(request.status,'HTTP Error! '+request.status);
      Ivy.dialogue.close();
    },
    reportSuccess:function(request){/*Ivy.propertyOfobject(request);*/}
  },

  alert: function()
  {
    var errno = arguments[0];
    var msg =''; 
    switch (arguments.length)
    {
      case 2:
        msg = '['+arguments[1]+']\n';
      case 1:
        msg += this.errMsg[errno];
        break;
      default :
        msg =this.errMsg.toString();
    }
    window.alert(msg);
  },

/** 
 * »õ·Î¿î Ã¢
*/
  popup: function(url,name)
  {
    if(arguments.length < 6) {this.alert(argument); return;}
    var property = '';
    property += 'top='+arguments[2];
    property += ',left='+arguments[3];
    property +=',width='+arguments[4];
    property +=',height='+arguments[5];
    property +=(arguments.length > 6) ?',resizable='+arguments[6]:',resizable=0';
    property +=(arguments.length > 7) ?',scrollbars='+arguments[7]:',scrollbars=0';
    window.open(url,name,property);
  },

  windowOpen: function()
  {
    if(arguments.length == 0) return;
    var obj = $(arguments[0]) | $F(arguments[0]);
    if(typeof obj == 'undefined')
    {
       var url = arguments[0];
    }
    else
    {
       var url = arguments[0].value;
    }
    if(argument.length == 2)
    {
       window.open(arguments[0],arguments[1]);
    }
  },

  gourl: function()
  {
    var target = (arguments.length==2)?arguments[1]:document;
    target.location.href=arguments[0];
  },

/**
 * ÀÌ¹ÌÁö Å©±â Á¦¾î
*/
  imResizeRatio: function (obj,r)
  {
    var ratio = r.split(':');
    var cw=obj.width;
    var ch=obj.height;
    obj.setAttribute('width',Math.round(cw*(ratio[1]/ratio[0])));
    obj.setAttribute('height',Math.round(ch*(ratio[1]/ratio[0])));
  },
  imResizeFixing: function(obj,w)
  {
    var cw=obj.width;
    var ch=obj.height;
    if(cw>w)
    {
      obj.setAttribute('width',w);
      obj.setAtrribute('height',Math.round((ch*w)/cw));
    }
  },

/**
 * ÄíÅ°Á¦¾î
*/
  setCookie:function(Name, Value)
  {
    var argv = arguments;
    var argc = arguments.length;
    var expires = (2 < argc) ? argv[2] : null;
    var path = (3 < argc) ? argv[3] : null;
    var domain = (4 < argc) ? argv[4] : null;
    var secure = (5 < argc) ? argv[5] : false;
    document.cookie = Name + "=" + escape (Value) +
      ((expires == null) ? "" : ("; expires=" + expires.toGMTString())) +
      ((path == null) ? "" : ("; path=" + path)) +
      ((domain == null) ? "" : ("; domain=" + domain)) +
      ((secure == true) ? "; secure" : "");
  },
  getCookie:function(name)
  {
    var cookies=document.cookie.split('; ');
    for (i=0,j=cookies.length;i<j;i++) {
      cookieArray=cookies[i].split('=');
      if (name==cookieArray[0]) return unescape(cookieArray[1]);
    }
    return false;
  },

  delCookie:function()
  {
    document.cookie=Name+'= ; expires= ;';
  },

/**
 * ÇÃ·¹½¬ È°¼º Á¦¾î
*/
  flashMovie:function(fid,src,wid,hei) {
    if(arguments.length < 4) {
      this.alert('argument','Function > Ivy.flashMovie:'+fid);
      return;
    }
    if($(fid) == null) {
      this.alert('object','Function > Ivy.flashMovie:'+fid);
      return;
    }
    var html = '';

    html = '<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,0,0"'; 
    html += ' width="'+wid+'"'; 
    html += ' height="'+hei+'">'; 
    html += '<param name="movie" value="'+src+'">'; 
    html += '<param name="quality" value="high">'; 
    html += (arguments.length > 4) ? '<param name="FlashVars" value="'+arguments[4]+'">' : ''; 
    html += (arguments.length > 5) ? '<param name="wmode" value="'+arguments[5]+'">' : ''; 
    html += '<embed'; 
    html += html + ' src="'+src+'"'; 
    html += (arguments.length > 4) ? ' FlashVars="'+arguments[4]+'"' : ''; 
    html += (arguments.length > 5) ? ' wmode="'+arguments[5]+'"' : ''; 
    html += ' quality="high"'; 
    html += ' pluginspage="http://www.macromedia.com/go/getflashplayer"'; 
    html += ' type="application/x-shockwave-flash"'; 
    html += ' width="'+wid+'"'; 
    html += ' height="'+hei+'"'; 
    html += '></embed>'; 
    html += '</object>'; 
    $(fid).innerHTML = html;
  },

  login:function(){
    f = arguments[0] || document.forms['loginFrm'];
    if(f.maid.value==''){alert('¾ÆÀÌµð¸¦ ÀÔ·ÂÇØ ÁÖ¼¼¿ä!');f.maid.focus();return;}
    if(!textChk(f.maid, EXP_A+EXP_D, 4, 16,"¾ÆÀÌµð")){return;}
    if(f.mapass.value==''){alert('ºñ¹Ð¹øÈ£¸¦ ÀÔ·ÂÇØ ÁÖ¼¼¿ä!');f.mapass.focus();return}
    if(!textChk(f.mapass, EXP_A+EXP_D, 4, 16,"ºñ¹Ð¹øÈ£")){return;}
    f.log_chk.value=1;
    f.action='/Customer/login.php';
    f.submit();
  },

  propertyOfobject:function(o) {
    var i=1; 
    var propertys='';
    if(typeof o != 'undefined') { 
      for(var property in o) { 
        propertys += i+': '+property+' <=> '+o[property]+'<br />'; 
        i++; 
      } 
      $('propertyOfObject').innerHTML = propertys;
    }
  }
};

Ivy.init();