1)
오랫동안 kTours 쪽 기능을 조정해왔는데요..

완성본..이라고 하기엔 아직도 미숙하지만,
코멘트라도 붙여볼까 합니다.

* 참고 *

http://ktours.cyworld.com - 현재 해당 스크립트를 열심히 쓰고있는 클럽입니다. 
http://club.cyworld.com/5083224319/186180312 - 해당 스크립트를 보관/보조하고 있는 게시물입니다.

* 도움(?) *

- Internet Explorer - 
: javascript 초안을 잡는데 사용했습니다.

- 싸이월드 클럽서비스 - 
: 사진을 보관하는 데 사용하고 있습니다.

- FireFox - 
: IE와 가장 대립하는 브라우져로 선택했습니다.

- Chrome 브라우져 - 
: 속도가 빨라서 자주 쓰고 있습니다.

크롬확장프로그램 - JSBeautify for Google Chrome™ - 
: 아래 표시되는 스크립트 내용들 정렬에 사용됐습니다.

- Safari - 
: IE와 대비되는 브라우져로 선택했습니다.

- Opera - 
: 역시 IE와 대비되는 브라우져로 선택했습니다.

...

2) 최적화 전..

var
  linkImages=[]
  , imageInit, waitHint, waitZoom
  , waitSummery
  , showSummery, showSummery2
  , resizing, imageSet
  , innerHTML
  , readyScroll, moveMouse, moveScroll, endScroll, pressScroll, sizingSecond
  , summeryImageBottom
  , aniNv, aniFloorv, aniWv, aniTypev
  , aniNvS, aniFloorvS, aniWvS, aniTypevS
  , viWb
  , viewOrder, viewOrderSet
//  , viewOrder=0, viewOrderSet={}
  , viewImageRecall
  , autoScroll, clearAutoScroll, sendObjAttribValue // for send to new window
  , autoScrollS
  , temp=''
  ;
  // -- help for var receiver
function argumentReceiver() {
//  var ar=argument, i;
//  for (i=0; i<ar.length; i++) temp+=typeof(ar[i]);
  }
function scriptInit() {
var
  is_j=0
  , HintWait, ZoomWait, ZoomOrder, lastZoom=-1, iiH
  , zGab, zWidth, zHeight
  , saveOwidth=1024, saveOheight=768
  , imageMaximum=16383, scrollBarHeight=22
  , screenAlphaElementStyle, backStyleElement, returnSpaceElement, zoomSpaceElement
  , receivedSummeryWidth, receivedSummeryHeight, receivedSummeryImageSrc
  , receivedScreenOpacity, receivedSummeryImageBottom, receivedSummeryPadding
  , receivedLinkImages
  , receivedHintOrder
  , stringgi='gi'
  , MathElement=Math, floor='floor'
  , rPattern=new RegExp('', stringgi)
  , INT=parseInt
  , functionS='function'
  , showSummery, showSummery2
  , length='length'
  , substring='substring', substr='substr', write='write', charAt='charAt'
  , filter='filter', opacity='opacity', position='position'
  , height='height'
  , moveTo='moveTo'
  , compile='compile', replace='replace'
  , lightgreen='lightgreen'
// for hash value
  , timeHash='', propertyHash=''
  , onpropertychange='onpropertychange', attachEvent='attachEvent', onhashchange='onhashchange'
  , selection='selection', empty='empty'
  , getSelection='getSelection', removeAllRanges='removeAllRanges'
  , srcElement='srcElement'
  , dataTransfer='dataTransfer', dropEffect='dropEffect', effectAllowed='effectAllowed'
  , openerviWbS='opener.viWb'
  , screenAlpha='screenAlpha', backStyle='backStyle', returnSpace='returnSpace', ZoomSpace='ZoomSpace'
  , Left='Left', Top='Top', Width='Width', Height='Height'
  , Owidth='Owidth', Oheight='Oheight', Hint='Hint', ZImage='ZImage'
  , stringS='S', stringW='W', stringV='V', stringI='I'
  , anied='anied', aniN='aniN', aniType='aniType', aniFloor='aniFloor', aniW='aniW'
  , Src='Src'
  , stringHanguel={}
  , HLeft='HLeft', HTop='HTop', HWidth='HWidth', HHeight='HHeight'
  , retitleS='retitle'
  , readyScrollS='readyScroll', moveMouseS='moveMouse'
  , moveScrollS='moveScroll', endScrollS='endScroll', pressScrollS='pressScroll'
  , clearAutoScrollS='clearAutoScroll'
  , resizingNewWindow, retitle, reValue
  , reValueS='reValue'
  , processHash='', processHint=-1, processZoom=-1, processMain='', waitHash
  , lastHash='', lastHint=-1, lastZoom=-1
  , elementZone='{elementZone}'
  , brs=['<br>', '<br/>', '<BR>', '<BR/>', '</p>', '</P>']
// -- for new window replaying zone
  , scrollPressed, movedPress
  , eventS
  , argueventS
  , documentS, body, locationS, focusS
  , setTimeoutS, clearTimeoutS
  , indexOf
  , resizeTo
  , resizeBy
  , style
  , zIndex
  , target
  , cursor, pointer
  , hash
  , clientX, clientY
  , scrollLeft, scrollTop
  , readyState
  , windowElement, documentElement, documentBodyElement, locationElement
  , timeOut, timeOutClear
  , onloadFunctionS
  , sizingSecondS
  , title
  , scrollWidth, scrollHeight, clientWidth, clientHeight
  , showElement, scrollbarElement, showScroll
  , startAnimation
  , pressedX, pressedY, pressedLeft
  , autoScrollEventer
  , stringAS, stringWV, stringA, stringASWV
  , resizingS
  , aniNvS, aniFloorvS, aniWvS, aniTypevS
  ;
reValue=function () {
  innerHTML='innerHTML';
  eventS='event';
  argueventS='('+eventS+')';
  documentS='document'; body='body'; locationS='location', focusS='focus'
  setTimeoutS='setTimeout'; clearTimeoutS='clearTimeout'
  indexOf='indexOf';
  resizeTo='resizeTo';
  resizeBy='resizeBy';
  style='style';
  zIndex='zIndex';
  target='target';
  pointer='pointer'; cursor='cursor';
  hash='hash';
  clientX='clientX'; clientY='clientY';
  scrollLeft='scrollLeft'; scrollTop='scrollTop';
  readyState='readyState';
  windowElement=window;
  documentElement=windowElement[documentS];
  documentBodyElement=documentElement[body];
  locationElement=windowElement[locationS];
  timeOut=windowElement[setTimeoutS];
  timeOutClear=windowElement[clearTimeoutS];
  onloadFunctionS='onloadFunction';
  sizingSecondS='sizingSecond';
  title='title';
  scrollWidth='scrollWidth'; scrollHeight='scrollHeight';
  clientWidth='clientWidth'; clientHeight='clientHeight';
  showElement='showElement'; scrollbarElement='scrollbarElement'; showScroll='showScroll';
  startAnimation='startAnimation';
  stringAS='AS'; stringWV='WV'; stringA='A'; stringASWV=stringAS+stringWV;
  resizingS='resizing';
  viewOrder=0; viewOrderSet={};
  aniNvS='aniNv'; aniFloorvS='aniFloorv'; aniWvS='aniWv'; aniTypevS='aniTypev';
  autoScrollS='autoScroll';
  };
reValue();
// -- end of new window replaying zone
function ontimeHash() {
  if (timeHash!=locationElement[hash]) { timeHash=locationElement[hash]; onpropertyHash(); }
  timeOut(ontimeHash, 200);
  }
function onpropertyHash() {
  if (propertyHash!=locationElement[hash]) {
// set propertyReceived
    processHash=propertyHash=locationElement[hash];
// process of hash
    readyHashing();
    }
//  timeOut(ontimeHash, 200); 
  }
function breakHashing() { if (waitHash) timeOutClear(waitHash); waitHash=0; }
function readyHashing() { breakHashing(); waitHash=timeOut(hashing, 100); }
function hashing() {
  var receivedHashNo, sh;
  breakHashing(); // start by only one processHash
// process of hash
  processHint=-1; processZoom=-1;
  while (processHash[charAt](0)) {
    receivedHashNo=-1;
//    if (processHash[charAt](0)=='#') processHash=processHash[substr](1, processHash[length]);
    switch(processHash[charAt](0)) {
      case '#' : break;
      case 'H' :
        receivedHashNo=INT(processHash[substring](1, processHash[length]));
//        if ((receivedHashNo<0)||(receivedHashNo>receivedLinkImages[length])) return; // receive just avable hints
//        if ((receivedHashNo<0)||(receivedHashNo>receivedLinkImages[length])) break; // receive just avable hints
        if (receivedHashNo>=0)
          processHint=receivedHashNo;
//        showHint();
//    processHash=processHash[substring](processHash[indexOf](receivedHashNo+'', 1)+(receivedHashNo+'').length, processHash[length]);
//    breakHint(); if (processHash) HintWait=timeOut(hashing, 100);
        break;
      case 'Z' :
        receivedHashNo=INT(processHash[substring](1, processHash[length]));
//        if (!(sh=receivedLinkImages[receivedHintOrder][ZImage])) return;
//        if ((receivedHashNo<0)||(receivedHashNo>sh[length])) return;
        if (receivedHashNo>=0)
          processZoom=receivedHashNo; // sh=sh[receivedHashNo];
//        showZoom();
//    processHash=processHash[substring](processHash[indexOf](receivedHashNo+'', 1)+(receivedHashNo+'').length, processHash[length]);
//    breakZoom(); if (processHash) ZoomWait=timeOut(hashing, 100);
        break;
      case stringI: case stringS: case stringA: case stringW: case stringV:
        processMain=processHash[charAt](0);
        break;
      default :
        break;
        } // end of select
      if (receivedHashNo>=0) processHash=processHash[substring](processHash[indexOf](receivedHashNo+'', 1)+(receivedHashNo+'')[length], processHash[length]);
        else processHash=processHash[substring](1, processHash[length]);
      } // end of while
    if (!(sh=receivedLinkImages[processHint])) return;
    if ((processHint)&&(lastZoom<0)&&(processZoom<0)
      &&(lastHint==processHint)&&(!processMain)) { locationElement[hash]='#H0'; onpropertyHash(); return; }
    if (processMain) { locationElement[hash]='#H'+processHint;
      if (processMain==stringI) showSummery(processHint);
//      else if (processMain) showSummery2(processHint);
      else showSummery2(processHint);
      processMain='';
      onpropertyHash(); return; }
    if (processZoom<0) processZoom=0;
    if (processHint!=lastHint) { receivedHintOrder=processHint; showHint(); ZoomOrder=processZoom; showZoom(); }
    else if (processZoom!=lastZoom) { ZoomOrder=processZoom; showZoom(); }
    else { processHash=locationElement[hash]='#H'+processHint;
      onpropertyHash(); return; }
    lastHint=processHint; lastZoom=processZoom;
  }
sendObjAttribValue=function () { var ar=arguments, obj=ar[0], i;
  for (i=1; i<ar.length; i+=2)
    obj[ar[i]]=ar[i+1];
  }
function sendObjStringValue() { var ar=arguments, str=ar[0], obj=ar[1], i, ov='', rv, rc;
  for (i=2; i<ar.length; i++) {
    rv=obj[ar[i]]; rc=isNaN(rv)?'\'':'';
    ov+=str+'[\''+ar[i]+'\']='+rc+rv+rc+';';
    }
  return ov;
  }
sendObjAttribValue(stringHanguel, stringA, '영상', stringS, '페이지영상', stringW, '가로나열', stringV, '세로나열');
function replaceAppendAll() {
  var ar=arguments, i, outv=ar[0];
  for (i=1; (i+1)<ar[length]; i+=2) { rPattern[compile](ar[i], stringgi); outv=outv[replace](rPattern, ar[i+1]); }
  return outv;
  }
function setTagString(tagNameZone, tagStringZoneName) {
  return '<'+tagNameZone+' '+tagStringZoneName+' >'
    +elementZone+'</'+tagNameZone+'>'; }
function setTagCloseString(tagNameZone, tagStringZoneName) {
  return '<'+tagNameZone+' '+tagStringZoneName+' />'; }
var
  mapOriginalStringZone='{mapOriginalStringZone}'
  , mapOriginalString=setTagString('map', mapOriginalStringZone)
  , areaOriginalStringZone='{areaOriginalStringZone}'
  , areaOriginalString=setTagCloseString('area', areaOriginalStringZone)
  , aOriginalStringZone='{aOriginalStringZone}'
  , aOriginalString=setTagString('a', aOriginalStringZone)
  , imgOriginalStringZone='{imgOriginalStringZone}'
  , imgOriginalString=setTagCloseString('img', imgOriginalStringZone)
  , divOriginalStringZone='{divOriginalStringZone}'
  , divOriginalString=setTagString('div', divOriginalStringZone)
  , scriptString=setTagString('script', '')
  , viewImageRecallSet='{viewImageRecallSet}'
  , htmlString=setTagString('html', '')
  , headString=setTagString('head', '')
  , titleString=setTagString('title', '')
  , bString=setTagString('b', '')
  , marqueeOriginalStringZone='{marqueeOriginalStringZone}'
  , marqueeOriginalString=setTagString('marquee', marqueeOriginalStringZone)
  , bodyOriginalStringZone='{bodyOriginalStringZone}'
  , bodyOriginalString=setTagString(body, bodyOriginalStringZone)
  , tableOriginalStringZone='{tableOriginalStringZone}'
  , tableOriginalString=setTagString('table', tableOriginalStringZone)
  , trOriginalStringZone='{trOriginalStringZone}'
  , trOriginalString=setTagString('tr', trOriginalStringZone)
  , tdOriginalStringZone='{tdOriginalStringZone}'
  , tdOriginalString=setTagString('td', tdOriginalStringZone)
  , colspanStringZone='{colspanStringZone}'
  , colspanString='colspan='+colspanStringZone+' '
  , nameStringZone='{nameStringZone}'
  , nameString='name="'+nameStringZone+'" '
  , idStringZone='{idStringZone}'
  , idString='id="'+idStringZone+'" '
  , widthStringZone='{widthStringZone}'
  , widthString='width='+widthStringZone+' '
  , heightStringZone='{heightStringZone}'
  , heightString=height+'='+heightStringZone+' '
  , sizeString=widthString+heightString
  , bgcolorStringZone='{bgcolorStringZone}'
  , bgcolorString='bgcolor="'+bgcolorStringZone+'" '
  , styleStringZone='{styleStringZone}'
  , styleString=style+'="'+styleStringZone+'" '
  , border0String='border=0 '
  , srcStringZone='{srcStringZone}'
  , srcString='src="'+srcStringZone+'" '
  , imageWidth='{imageWidth}', imageHeight='{imageHeight}'
  , imageSizeString=replaceAppendAll(sizeString
    , widthStringZone, imageWidth, heightStringZone, imageHeight)
  , imgDefaultStringZone='{imgDefaultStringZone}'
  , imgDefaultString=replaceAppendAll(imgOriginalString
    , imgOriginalStringZone, border0String+srcString+imageSizeString+imgDefaultStringZone)
  , divStyleString=replaceAppendAll(divOriginalString
    , divOriginalStringZone, styleString)
  , divIdStyleString=replaceAppendAll(divOriginalString
    , divOriginalStringZone, idString+styleString)
  , trString=replaceAppendAll(trOriginalString, trOriginalStringZone, '')
  , trHeightString=replaceAppendAll(trOriginalString, trOriginalStringZone, heightString)
  , tdString=replaceAppendAll(tdOriginalString, tdOriginalStringZone, '')
  , tdWidthStyleString=replaceAppendAll(tdOriginalString
    , tdOriginalStringZone, widthString+styleString)
  , tdWidthString=replaceAppendAll(tdOriginalString
    , tdOriginalStringZone, widthString)
  , cursorpointerStyle=cursor+':'+pointer+'; '
  , widthStyleStringZone='{widthStyleStringZone}'
  , widthStyleString='width:'+widthStyleStringZone+'px; '
  , heightStyleStringZone='{heightStyleStringZone}'
  , heightStyleString=height+':'+heightStyleStringZone+'px; '
  , overflowStyleStringZone='{overflowStyleStringZone}'
  , overflowStyleString='overflow:'+overflowStyleStringZone+'; '
  , overflowHiddenStyleString=replaceAppendAll(
    overflowStyleString+widthStyleString+heightStyleString
      , overflowStyleStringZone, 'hidden')
  , overflowAutoStyleString=replaceAppendAll(
    overflowStyleString+widthStyleString+heightStyleString
      , overflowStyleStringZone, 'auto')
  , leftStyleStringZone='{leftStyleStringZone}'
  , leftStyleString='left:'+leftStyleStringZone+'px; '
  , topStyleStringZone='{topStyleStringZone}'
  , topStyleString='top:'+topStyleStringZone+'px; '
  , positionStyle=leftStyleString+topStyleString
  , absoluteStyleString=position+':absolute; '+positionStyle
  , absoluteLeftTopCornerStyleString=replaceAppendAll(
    absoluteStyleString
      , leftStyleStringZone, 0, topStyleStringZone, 0)
  , relativeStyle=position+':relative; '
  , relativeStyleString=relativeStyle+positionStyle
  , zindexStyleZone='{zindexStyleZone}'
  , zindexStyle='z-index:'+zindexStyleZone+'; '
  , topClip='{topClip}', rightClip='{rightClip}', bottomClip='{bottommClip}', leftClip='{leftClip}', leftClipPoint='{leftClipPoint}', topClipPoint='{topClipPoint}'
  , clipStyleString='clip:rect('+topClip+'px, '+rightClip+'px, '+bottomClip+'px, '+leftClip+'px); '+replaceAppendAll(absoluteStyleString, leftStyleStringZone, leftClipPoint, topStyleStringZone, topClipPoint)
  , backgroundColorZone='{backgroundColorZone}'
  , backgroundColor='background-color:'+backgroundColorZone+'; '
  , colorStyleZone='{colorZone}'
  , colorStyle='color:'+colorStyleZone+'; '
  , font9pt='font-size:9pt; '
  , fontDotum='font-family:돋움; '
  , textUnderNone='text-underline:none; '
  , onclickStringZone='{onclickStringZone}'
  , onclickString='onclick="'+onclickStringZone+'" '
  , onmousedownStringZone='{onmousedownStringZone}'
  , onmousedownString='onmousedown="'+onmousedownStringZone+'" '
  , ondragStringZone='{ondragStringZone}'
  , ondragString='ondrag="'+ondragStringZone+'" '
    +(documentElement.all?'':'ondragstart="return false;" ') // for firefox's drag clientX bug & IE's drag starting bug..
  , ondragendStringZone='{ondragendStringZone}'
  , ondragendString='ondragend="'+ondragendStringZone+'" '
  , onmousemoveStringZone='{onmousemoveStringZone}'
  , onmousemoveString='onmousemove="'+onmousemoveStringZone+'" '
  , onmouseupStringZone='{onmouseupStringZone}'
  , onmouseupString='onmouseup="'+onmouseupStringZone+'" '
  , onscrollStringZone='{onscrollStringZone}'
  , onscrollString='onscroll="'+onscrollStringZone+'"'
  , hrefStringZone='{hrefStringZone}'
  , hrefString='href="'+hrefStringZone+'" '
  , areaLeft='{areaLeft}', areaRight='{areaRight}'
  , areaTop='{areaTop}', areaBottom='{areaBottom}'
  , coordsString='coords="'+areaLeft+','+areaTop+','+areaRight+','+areaBottom+'" '
  , waitHintNo='{waitHintNo}'
  , waitHintFunctionString='waitHint('+waitHintNo+');'
  , waitZoomNo='{waitZoomNo}'
  , waitZoomFunctionString='waitZoom('+waitZoomNo+');'
  , showString='{showString}'
  , shapeStringZone='{shapeStringZone}'
  , shapeString='shape="'+shapeStringZone+'" '
  , areaRect=replaceAppendAll(areaOriginalString,
    areaOriginalStringZone, shapeString+coordsString+hrefString+onmouseupString
      , shapeStringZone, 'rect'
      , hrefStringZone, '#H'+waitHintNo
      , onmouseupStringZone, waitHintFunctionString)
  , imageURL='{imageURL}'
  , imageString=
    replaceAppendAll(imgDefaultString
      , imgDefaultStringZone, ''
      , srcStringZone, imageURL)
  , imageClipTail=
    replaceAppendAll(imgDefaultString
      , imgDefaultStringZone, styleString
      , styleStringZone, clipStyleString, srcStringZone, imageURL)
  , aShapWaitHint=replaceAppendAll(aOriginalString
    , aOriginalStringZone, hrefString+onclickString
      , hrefStringZone, '#H'+waitHintNo
      , onclickStringZone, waitHintFunctionString)
  , aShapWaitZoom=replaceAppendAll(aOriginalString
    , aOriginalStringZone, hrefString+onclickString
      , hrefStringZone, '#H'+waitHintNo+'Z'+waitZoomNo
      , onclickStringZone, waitZoomFunctionString)
  , imageHintClickTail=
//    replaceAppendAll(aShapWaitHint
//      , waitHintNo, 0
//      , elementZone, imgDefaultString
    replaceAppendAll(imgDefaultString
        , imgDefaultStringZone, styleString
        , styleStringZone, clipStyleString, srcStringZone, imageURL)
  , imageZoomClickTail=
    replaceAppendAll(aShapWaitZoom
      , waitZoomNo, 0
      , elementZone, imgDefaultString
        , imgDefaultStringZone, styleString
        , styleStringZone, clipStyleString, srcStringZone, imageURL)
  , overOpacity100='{overOpacity100}', overOpacity='{overOpacity}'
  , alphaStyle=filter+':Alpha('+opacity+'='+overOpacity100+'); '+opacity+':'+overOpacity+'; '
//  , imageZoomClickTail2=
//    replaceAppendAll(aShapWaitZoom
//      , waitZoomNo, 0
//      , elementZone, imgDefaultString
//        , imgDefaultStringZone, styleString
//        , styleStringZone, clipStyleString+alphaStyle, srcStringZone, imageURL)
  , usemapStringZone='{usemapStringZone}'
  , usemapString='usemap="#'+usemapStringZone+'" '
  , backTop='{backTop}', backSize='{backSize}'
  , alphaStyleZone='{alphaStyleZone}'
  , screenString=replaceAppendAll(divIdStyleString
    , idStringZone, backStyle
    , styleStringZone, backTop+backSize+backgroundColor
    , backgroundColorZone, '#222222'
    , elementZone
      , replaceAppendAll(imgDefaultString
        , imgDefaultStringZone, usemapString
        , srcStringZone, imageURL
        , usemapStringZone, 'summeryMap_1')
      + replaceAppendAll(divStyleString
        , styleStringZone, backTop
        , elementZone, divIdStyleString
          , idStringZone, screenAlpha
          , styleStringZone, overflowHiddenStyleString+alphaStyle+backgroundColor
            , widthStyleStringZone, 1, heightStyleStringZone, 1, backgroundColorZone, 'black'
          , elementZone, ''
        )
      + replaceAppendAll(divIdStyleString
        , idStringZone, returnSpace
        , styleStringZone, backTop
        , elementZone, '')
      + replaceAppendAll(divIdStyleString
        , idStringZone, ZoomSpace
        , styleStringZone, backTop+zindexStyle
        , zindexStyleZone, 6
        , elementZone, '')
    )
  , aStyleShapTag=replaceAppendAll(aOriginalString
    , aOriginalStringZone, styleString+hrefString +onclickString
      , hrefStringZone, '#'
    )
//  , aLightgreenTag=replaceAppendAll(aStyleShapTag
//    , styleStringZone, colorStyle
//      , colorStyleZone, lightgreen)
  , aLightgreenShow=replaceAppendAll(aOriginalString
    , aOriginalStringZone, hrefString+onclickString+styleString
      , styleStringZone, colorStyle
        , colorStyleZone, lightgreen
      , hrefStringZone, '#H'+waitHintNo+showString)
  , zoomtagOpen=replaceAppendAll(aOriginalString
    , aOriginalStringZone, styleString+hrefString+onclickString
      , hrefStringZone, '#H'+waitHintNo+'Z'+waitZoomNo
      , styleStringZone, colorStyle
      , colorStyleZone, lightgreen
      , onclickStringZone, waitZoomFunctionString)
  , numClickString=replaceAppendAll(aOriginalString
    , aOriginalStringZone, hrefString+onclickString
      , hrefStringZone, '#H'+waitHintNo+'Z'+waitZoomNo
      , onclickStringZone, waitZoomFunctionString
    , elementZone, waitZoomNo+')')
    +' '
  , aboutBlank='about:blank'
  , openWindowName='_blank'
  , openWindowWidth='{openWindowWidth}', openWindowHeight='{openWindowHeight}'
  , openWindowOption=replaceAppendAll('directories,location,menubar,resizable/scrollbars/status,titlebar,toolbar,width=', ',', '=no,', '/', '=yes,')+openWindowWidth+','+height+'='+openWindowHeight
  , imageName='{imageName}'
  , defaultImageURLForm='http://club.cyworld.nate.com/club/board/image/imgbrd_viewurl.asp?image_url=' + imageName
  , onloadStringZone='{onloadStringZone}'
  , onloadString='onload="'+onloadStringZone+'" '
  , onunloadStringZone='{onunloadStringZone}'
  , onunloadString='onunload="'+onunloadStringZone+'" '
  , cellpaddingStringZone='{cellpaddingStringZone}'
  , cellpaddingString='cellpadding='+cellpaddingStringZone+' '
  , cellspacingStringZone='{cellspacingStringZone}'
  , cellspacingString='cellspacing='+cellspacingStringZone+' '
  , tableDefaultStringZone='{tableDefaultStringZone}'
  , tableDefaultString=replaceAppendAll(tableOriginalString
    , tableOriginalStringZone, border0String+cellpaddingString+cellspacingString+tableDefaultStringZone)
  , behaviorStringZone='{behaviorStringZone}'
  , behaviorString='behavior="'+behaviorStringZone+'" '
  , scrollamountStringZone='{scrollamountStringZone}'
  , scrollamountString='scrollamount='+scrollamountStringZone+' '
  , scrolldelayStringZone='{scrolldelayStringZone}'
  , scrolldelayString='scrolldelay='+scrolldelayStringZone+' '
  , directionStringZone='{directionStringZone}'
  , directionString='direction="'+directionStringZone+'" '
  , loopStringZone='{loopStringZone}'
  , loopString='loop='+loopStringZone+' '
  , animationOptions=behaviorString+scrollamountString+scrolldelayString+directionString+loopString
  , animationScripts='{animationScripts}'
  , titleStringZone='{titleStringZone}', imageZone='{imageZone}'
  , htmlBODY
  , imageElement='{imageElement}'
  , imagePadding
    =replaceAppendAll(tableDefaultString
    , tableDefaultStringZone, styleString
      , styleStringZone, absoluteLeftTopCornerStyleString
      , cellpaddingStringZone, 5, cellspacingStringZone, 0
    , elementZone, trString
      , elementZone, tdOriginalString
        , tdOriginalStringZone, idString
          , idStringZone, 'woutput'
        , elementZone, imageElement)
  +replaceAppendAll(tableOriginalString
    , tableOriginalStringZone, styleString+bgcolorString
      , styleStringZone, absoluteStyleString+zindexStyle
        , leftStyleStringZone, 5, topStyleStringZone, 5, zindexStyleZone, 5
      , bgcolorStringZone, '#550000'
    , elementZone, trHeightString
      , heightStringZone, 20
      , elementZone, tdWidthStyleString
        , widthStringZone, 40
        , styleStringZone, font9pt+fontDotum
        , elementZone, bString
          , elementZone, aStyleShapTag
            , styleStringZone, colorStyle+textUnderNone
              , colorStyleZone, '#ffffff'
//              , hrefStringZone, 'javascript:setTimeout(function(){window.close();},100)'
              , onclickStringZone, 'setTimeout(function(){window.close();},100)'
//              , onclickStringZone, 'window.close();'
            , elementZone, '[닫기]')
  , animationWidth='{animationWidth}', animationHeight='{animationHeight}'
  , animationAmount='{animationAmount}'
  , animationZoneWidth='{animationZoneWidth}', animationZoneHeight='{animationZoneHeight}'
  , animationTails='{animationTails}'
  , tailDivString
    =replaceAppendAll(divStyleString
        , styleStringZone, overflowHiddenStyleString+relativeStyle)
  , animationString
    =replaceAppendAll(marqueeOriginalString
      , marqueeOriginalStringZone, sizeString+animationOptions
        , widthStringZone, animationWidth, heightStringZone, animationHeight
        , behaviorStringZone, 'alternate', scrolldelayStringZone, 1000, scrollamountStringZone, animationAmount, directionStringZone, 'left', loopStringZone, -1
        , elementZone, tailDivString
//      , elementZone, divStyleString
//        , styleStringZone, overflowHiddenStyleString+relativeStyle
          , widthStyleStringZone, animationZoneWidth, heightStyleStringZone, animationZoneHeight
        , elementZone, animationTails)

  , imageClickString
    =replaceAppendAll(aShapWaitHint, waitHintNo, 0, elementZone, imageElement)
  ;
imageSet=function () { var is_i, is_tt, is_zz, ar=arguments, arv, arv2, is_H, is_Hp, is_Hp1, is_Hp2, is_Hpi, is_Hc, is_Div, divP, divP2
  ;
  receivedSummeryWidth=summeryWidth; receivedSummeryHeight=summeryHeight; receivedSummeryImageSrc=summeryImageSrc;
  receivedScreenOpacity=screenOpacity; receivedSummeryImageBottom=summeryImageBottom; receivedSummeryPadding=summeryPadding;
  receivedLinkImages=linkImages;
  is_tt=receivedLinkImages[0]={};
  is_tt[Left]=0; is_tt[Top]=0; is_tt[Width]=receivedSummeryWidth; is_tt[Height]=receivedSummeryHeight; is_tt[Hint]='';
  is_tt[Owidth]=receivedSummeryWidth; is_tt[Oheight]=receivedSummeryHeight; is_tt[Hint]='';
  is_tt[ZImage]=0;
  if (receivedSummeryWidth<receivedSummeryHeight) zGab=INT(receivedSummeryWidth/40); else zGab=INT(receivedSummeryHeight/40);
  zWidth=receivedSummeryWidth-zGab-zGab; zHeight=receivedSummeryHeight-zGab-zGab;
  is_i=0; while (is_i<ar[length]) { is_j++;
    is_tt=receivedLinkImages[is_j]={};
    if (is_tt[anied]=(divP=ar[is_i][indexOf]('*'))>=0) {
arv=ar[is_i];
        is_tt[aniN]=arv[substring](0, divP);
        is_tt[Src]=arv[substring](divP+1, arv[length]);
arv=is_tt[aniN];
is_tt[aniFloor]=((divP2=arv[indexOf]('/'))>=0)?INT(arv[substring](divP2+1, divP)):1; // get floor count
divP2=divP2>0?divP2:arv[length];
arv=arv[substring](0, divP2);
if (stringASWV[indexOf](arv2=arv[substring](0,1))>=0) { // get etc parameter A(anim), S(slide), H(horizon scroll), V(vertical scroll)
  is_tt[aniType]=arv[charAt](0); arv=arv[substring](1, arv.length);
  } else is_tt[aniType]=stringA;
arv=is_tt[aniN]=INT(arv[substring](0, divP2)); // finishing from arv by get divided image count
is_tt[aniW]=INT(arv/is_tt[aniFloor]);
if (is_tt[aniW]*is_tt[aniFloor]<arv) is_tt[aniW]++;
      }
    else {
      is_tt[aniN]=0;
      is_tt[Src]=ar[is_i];
      }
    is_H=ar[is_i+1];
    for (is_Hp=is_H[indexOf]('//'); is_Hp>0; is_Hp=is_H[indexOf]('//', is_Hp+2)) {
      if (is_Hp>0)
        if (is_H[substr](is_Hp-1, 1)!='>') continue;
      is_Hp1=is_H[length];
      for (is_Hpi=0; is_Hpi<brs[length]; is_Hpi++)
        if ((is_Hp2=is_H[indexOf](brs[is_Hpi], is_Hp))>=0)
          if (is_Hp2<is_Hp1) is_Hp1=is_Hp2;
// receiver of text's "//)"
      is_Hp2=is_H[indexOf](')', is_Hp);
      is_Hc=is_H[length]-is_Hp1;
      is_H=is_H[substring](0, is_Hp)+replaceAppendAll(zoomtagOpen
        , waitHintNo, is_j
        , waitZoomNo, INT(is_H[substring](is_Hp+2, is_Hp2))
        , elementZone, is_H[substring](is_Hp+2, is_Hp1))+is_H[substring](is_Hp1, is_H[length]);
      is_Hp=is_H[length]-is_Hc;
      }
    is_tt[Hint]=is_H;
    is_tt[Left]=ar[is_i+2]; is_tt[Top]=ar[is_i+3]; is_tt[Width]=ar[is_i+4]; is_tt[Height]=ar[is_i+5];
    is_tt[Owidth]=saveOwidth; is_tt[Oheight]=saveOheight;
    is_i+=6;
    if (is_i<ar[length]) if (!isNaN(ar[is_i])) {
      saveOwidth=is_tt[Owidth]=ar[is_i];
      saveOheight=is_tt[Oheight]=ar[is_i+1];
      is_i+=2;
      }
    is_tt[ZImage]=0;
    while (!isNaN(ar[is_i])) { if (ar[is_i][length]>=0) break;
        if (!(arv=is_tt[ZImage])) arv=is_tt[ZImage]=[]; is_zz=arv[arv[length]]={};
        is_zz[HLeft]=ar[is_i]; is_zz[HTop]=ar[is_i+1]; is_zz[HWidth]=ar[is_i+2]; is_zz[HHeight]=ar[is_i+3];
        is_i+=4;
      }
    }
};
function w() { var w_i; for (w_i=0; w_i<arguments[length]; w_i++) documentElement[write](arguments[w_i]); }
clearAutoScroll=function () {
  if (autoScrollEventer) {
    timeOutClear(autoScrollEventer);
    autoScrollEventer=0;
    }
  };
function noneSelection() {
  var e=documentElement[selection];
  if (e) e[empty](); else windowElement[getSelection][removeAllRanges]();
  }
pressScroll=function (evt) { var ev, jv, kv; // 스크롤바 눌렀을 때
  clearAutoScroll();
  scrollPressed=1; movedPress=0;
//  if (!(ev=windowElement[eventS]))
ev=evt;
  jv=documentElement.all[showElement];
  kv=documentElement.all[scrollbarElement];
  jv[style][zIndex]=1;
  pressedX=ev[clientX]; pressedY=ev[clientY]; pressedLeft=kv[scrollLeft];
  };
readyScroll=function (evt) { var ev, jv, kv; // 스크롤하려고 맘먹었을 때
  clearAutoScroll();
  scrollPressed=2; movedPress=0;
//  if (!(ev=windowElement[eventS]))
ev=evt;
  jv=documentElement.all[showElement];
  kv=documentElement.all[scrollbarElement];
  jv[style][zIndex]=1;
  pressedX=ev[clientX]; pressedY=ev[clientY]; pressedLeft=kv[scrollLeft];
  };
moveMouse=function (evt) {
// var ev, jv, sh, xv, medx, mousep; // 마우스 움직일 때
var ev, jv, xv, medx, mousep; // 마우스 움직일 때
if (!scrollPressed) return;
//  if (!(ev=windowElement[eventS]))
ev=evt;
if (ev[target])
  ev[target][style][cursor]=pointer;
//  else {
//    mousep=ev[dataTransfer];
//    mousep[effectAllowed]='linkMove';
//    mousep[dropEffect]='move';
//    }
movedPress|=(pressedX!=(xv=ev[clientX]))||(pressedY!=ev[clientY]);
  if (scrollPressed==1) { endScroll(evt); return; } // scrollbar Pressed
  jv=documentElement.all[scrollbarElement];
//  sh=receivedLinkImages[receivedHintOrder];
//  if (stringAS[indexOf](sh[aniType])>=0)
  if (stringAS[indexOf](aniTypev)>=0)
    medx=pressedLeft+(pressedX-xv)/40*jv[clientWidth];
  else
    medx=pressedLeft+pressedX-xv;
  if (medx<0) medx=0;
  if (medx>(jv[scrollWidth]-jv[clientWidth])) medx=jv[scrollWidth]-jv[clientWidth];
  jv[scrollLeft]=medx;
  };
moveScroll=function (evt) {
//var ev, jv, kv, sh, shp; // 스크롤 됐을 때
var ev, jv, kv, shp; // 스크롤 됐을 때
movedPress=1;
  if (!(ev=windowElement[eventS])) ev=evt;
  jv=documentElement.all[showScroll];
  kv=documentElement.all[scrollbarElement];
//  sh=receivedLinkImages[receivedHintOrder];
//  if (stringAS[indexOf](sh[aniType])>=0) {
  if (stringAS[indexOf](aniTypev)>=0) {
//    shp=INT(kv[scrollLeft]/kv[scrollWidth]*(sh[aniN]+1));
    shp=INT(kv[scrollLeft]/kv[scrollWidth]*(aniNv+1));
//    if (shp>=sh[aniN]) shp=sh[aniN]-1;
    if (shp>=aniNv) shp=aniNv-1;
//    jv[scrollLeft]=(shp%sh[aniW])*jv[scrollWidth]/sh[aniW];
    jv[scrollLeft]=(shp%aniWv)*jv[scrollWidth]/aniWv;
//    jv[scrollTop]=INT(shp/sh[aniW])*jv[scrollHeight]/sh[aniFloor];
    jv[scrollTop]=INT(shp/aniWv)*jv[scrollHeight]/aniFloorv;
    }
  else
    jv[scrollLeft]=kv[scrollLeft];
  };
endScroll=function (evt) { var ev, jv;
//  if (!(ev=windowElement[eventS]))
ev=evt;
  jv=documentElement.all[showElement];
  jv[style][zIndex]=3;
if ((!movedPress)&&(scrollPressed==2)) {
//  waitHint(0); // escape to summery
//  processHash=
locationElement[hash]='#H0';
//  readyHashing(); 
  }
  autoScroll(startAnimation);
scrollPressed=0;
  };
autoScroll=function (entvalue) {
//var jv, kv, sh;
var jv, kv, shp;
  clearAutoScroll();
//  if (entvalue==startAnimation)
  if (entvalue!=startAnimation)
//  else
  { // when not start message
//    sh=receivedLinkImages[receivedHintOrder];
//    if (sh[aniType]!=stringA) return;
    if (aniTypev!=stringA) return;
    if (!(kv=documentElement.all[scrollbarElement])) return;// for null control
//    shp=INT(kv[scrollLeft]/kv[scrollWidth]*(sh[aniN]+1));
    shp=INT(kv[scrollLeft]/kv[scrollWidth]*(aniNv+1));
//    if (shp>=sh[aniN]) shp=sh[aniN]-1;
    if (shp>=aniNv) shp=aniNv-1;
//    shp++; if (shp==sh[aniN]) shp=0;
    shp++; if (shp==aniNv) shp=0;
//    kv[scrollLeft]=INT(shp*kv[scrollWidth]/(sh[aniN]+1))+1;
    kv[scrollLeft]=INT(shp*kv[scrollWidth]/(aniNv+1))+1;
    }
  autoScrollEventer=timeOut(autoScroll, 1000);
  };
// -- functions for send to new Window
  // -- var receiver function
function animationVarReceiver() {
  argumentReceiver(
  scrollPressed, movedPress
  , innerHTML
  , sendObjAttribValue
  , eventS
  , argueventS
  , documentS, body, locationS, focusS
  , setTimeoutS, clearTimeoutS
  , indexOf
  , resizeTo
  , resizeBy
  , style
  , zIndex
  , target
  , pointer, cursor
  , hash
  , clientX, clientY
  , scrollLeft, scrollTop
  , readyState
  , windowElement, documentElement, documentBodyElement, locationElement
  , timeOut, timeOutClear
  , onloadFunctionS
  , sizingSecondS
  , title
  , scrollWidth, scrollHeight, clientWidth, clientHeight
  , showElement, scrollbarElement, showScroll
  , startAnimation
  , stringAS, stringWV, stringA, stringASWV
  , resizingS
  , pressedX, pressedY, pressedLeft
  , clearAutoScroll, autoScrollEventer
  , autoScrollS
  , viewImageRecall
  , viewOrder, viewOrderSet
    );
  }
  // -- var receiver function to string, for set var
function animationVarString() {
  var ov=animationVarReceiver+'', p1, p2;
  p1=ov[indexOf]('{'); p1=ov[indexOf]('(', p1); p2=ov[indexOf](')', p1);
  return (
//    ','+
    ov.substring(p1+1, p2)
    );
  }

sizingSecond=function () {
  if(documentBodyElement[clientHeight])if(documentBodyElement[clientHeight]<documentBodyElement[scrollHeight])
    windowElement[resizeBy](
      documentBodyElement[scrollWidth]-documentBodyElement[clientWidth]
      , documentBodyElement[scrollHeight]-documentBodyElement[clientHeight] );
  };
resizingNewWindow=function(ww,hh) {
  if ('interactiveloading'[indexOf](documentElement[readyState])>=0) {
    timeOut(resizingS+'('+ww+','+hh+');', 200); return; } // for document's resizing timing
  windowElement[resizeTo](ww,hh);
  if (onloadFunction)
    timeOut(onloadFunctionS+'();'+sizingSecondS+'();', 100);
  else
    timeOut(sizingSecond, 100);
  };
retitle=function(v) { documentElement[title]=v; };
// -- end of functions for send to new Window
// -- set of htmlBODY
htmlBODY
    =replaceAppendAll(htmlString
      , elementZone,
      replaceAppendAll(headString
        , elementZone, titleString
        , elementZone, titleStringZone)
      + replaceAppendAll(bodyOriginalString
        , bodyOriginalStringZone, onunloadString  +onloadString
          , onunloadStringZone, 'try{if('+openerviWbS+')'+openerviWbS+'=null;}catch(err){}'
          , onloadStringZone, 'if(!'+onloadFunctionS+')'+onloadFunctionS+'='+functionS+'(){};'
//          , onloadStringZone, resizingS+'('+widthStringZone+','+heightStringZone+');'
        , elementZone, imageZone+scriptString
        , elementZone,
  ' var '+onloadFunctionS+'=0'
  +','+ sizingSecondS+','+resizingS
  +', '+readyScrollS+','+moveMouseS+','+moveScrollS+','+endScrollS+','+pressScrollS+','+autoScrollS
//  +' , '+aniNvS+', '+aniFloorvS+', '+aniWvS+', '+aniTypevS
  +' , waitHint=function(){} '
  +';'
  +'function initScript(){'
  +'var '+ animationVarString()+';'
  +'sendObjAttribValue='+sendObjAttribValue+';'
  +reValueS+'='+reValue+';'
  +reValueS+'();'
  +readyScrollS+'='+readyScroll+';'
  +moveMouseS+'='+moveMouse+';'
  +moveScrollS+'='+moveScroll+';'
  +endScrollS+'='+endScroll+';'
  +pressScrollS+'='+pressScroll+';'
  +clearAutoScrollS+'='+clearAutoScroll+';'
  +autoScrollS+'='+autoScroll+';'
// for viewImageRecall
  + viewImageRecallSet
// need document.readyState ..?
  +sizingSecondS+'='+sizingSecond+';'
  +resizingS+'='+resizingNewWindow+';'
  +retitleS+'='+retitle+';'
  +'try{ if (!viewImageRecall) opener.viewImageRecall(window); else viewImageRecall(window); } catch(err) {alert(\'죄송합니다. 에러에요.\');}'
//  +'try{if(!'+openerviWbS+')'+openerviWbS+'=window;}catch(err){}'
  +'} initScript(); '
          )
     )
;
// -- end of set htmlBODY
function showHint() {
  var
    sh, ix, iy, iw, ih, iwI, ihI, lltd, rrtd, tttr, shopa, shopb, zi, zcount, I, ssim, ssim2, arv
    , recomputedSummeryHeight
    ;
  breakHint(); breakZoom();
//  ZoomOrder=0;
  lastZoom=0;
 zoomSpaceElement[innerHTML]='';
  sh=receivedLinkImages[receivedHintOrder];
  recomputedSummeryHeight=receivedSummeryHeight
// -(sh[anied]?scrollBarHeight:0)
;
  iw=receivedSummeryWidth; ih= sh[Oheight]/
  (sh[Owidth]/(sh[anied]?sh[aniW]/sh[aniFloor]:1))
*receivedSummeryWidth ;
  if (ih>recomputedSummeryHeight) { ih=recomputedSummeryHeight; iw=
 (sh[Owidth]/(sh[anied]?sh[aniW]/sh[aniFloor]:1))
/sh[Oheight]*recomputedSummeryHeight ;
    ix=(receivedSummeryWidth-iw)*sh[Left]/(receivedSummeryWidth-
  (sh[Width]/(sh[anied]?sh[aniW]:1))
); iy=0; }
  else { if (recomputedSummeryHeight==ih) iy=0; else iy=(recomputedSummeryHeight-ih)*sh[Top]/(recomputedSummeryHeight-sh[Height]); ix=0; }
  shopa=iw/sh[Owidth]; shopb=iw/sh[Width];
  if (shopa>1) shopa=1/shopa; if (shopb>1) shopb=1/shopb;
  shopa=1-shopa; shopb=1-shopb;
  if (sh[Width]>sh[Owidth]) { shopb*=shopb; shopb*=shopb; } else { shopa*=shopa; shopa*=shopa; }
  if (shopb) {
    shopb=INT(shopb/(shopa+shopb)*100);
    } else shopb=0;
  iwI=INT(iw); ihI=INT(ih);
  lltd=ix?
    replaceAppendAll(tdString
      , elementZone, divStyleString
        , styleStringZone, overflowHiddenStyleString
          , widthStyleStringZone, ix, heightStyleStringZone, 0
        , elementZone, ''
):'';
  rrtd=ix?
    replaceAppendAll(tdString
      , elementZone, divStyleString
        , styleStringZone, overflowHiddenStyleString
          , widthStyleStringZone, receivedSummeryWidth-ix-iwI, heightStyleStringZone, 0
        , elementZone, ''
):'';
  tttr=iy?
    replaceAppendAll(trHeightString
      , heightStringZone, iy
      , elementZone, tdOriginalString
        , tdOriginalStringZone, colspanString
          , colspanStringZone, 3
        , elementZone, ''):'';
  if (receivedHintOrder) {
if (sh[anied]) {
ssim2='';
if (stringWV[indexOf](sh[aniType])>=0)
  for (i=0; i<sh[aniFloor]; i++) // for 'HV'
    ssim2+=replaceAppendAll(imageHintClickTail
      , topClip, INT(ih*i)
      , rightClip, iw*((i+1)*sh[aniW]>sh[aniN]?(sh[aniN]-i*sh[aniW]):sh[aniW])
      , bottomClip, ih*(i+1)
      , leftClip, 0
      , leftClipPoint, iw*i*sh[aniW]
      , topClipPoint, -ih*i
      );
  else // for 'AS'
    ssim2+=replaceAppendAll(imageHintClickTail
      , topClip, 0
      , rightClip, iw*sh[aniW]
      , bottomClip, ih*sh[aniFloor]
      , leftClip, 0
      , leftClipPoint, 0
      , topClipPoint, 0
      );
  }
  ssim=tttr+
    replaceAppendAll(trHeightString
      , heightStringZone, ihI
      , elementZone, lltd+tdWidthString+rrtd
        , widthStringZone, iwI
        , elementZone, tailDivString
//        , elementZone, divStyleString
//          , styleStringZone, overflowHiddenStyleString+relativeStyle
            , widthStyleStringZone, iwI, heightStyleStringZone, ihI+(sh[anied]?scrollBarHeight:0) // outer Image Receiving Zone
          , elementZone, replaceAppendAll(imageHintClickTail
            , topClip, ih/sh[Height]*sh[Top]*(sh[anied]?sh[aniFloor]:1)
            , rightClip, iw/(sh[Width]/(sh[anied]?sh[aniW]:1))*sh[Left] + iwI
            , bottomClip, ih/sh[Height]*sh[Top]*(sh[anied]?sh[aniFloor]:1) + ihI
            , leftClip, iw/(sh[Width]/(sh[anied]?sh[aniW]:1))*sh[Left]
            , leftClipPoint, -iw/(sh[Width]/(sh[anied]?sh[aniW]:1))*sh[Left]
            , topClipPoint, -ih/sh[Height]*sh[Top]*(sh[anied]?sh[aniFloor]:1)
                , imageURL, receivedSummeryImageSrc
                , imageWidth, INT(iw/(sh[Width]/(sh[anied]?sh[aniW]:1))*receivedSummeryWidth)
                , imageHeight, INT(ih/sh[Height]*receivedSummeryHeight*(sh[anied]?sh[aniFloor]:1))
              )
            + (sh[anied]?replaceAppendAll(
//              divStyleString
              divOriginalString
              , divOriginalStringZone, styleString+onmousedownString+onmousemoveString+onmouseupString
              , onmousedownStringZone, pressScrollS+argueventS+';'
              , onmousemoveStringZone, moveMouseS+argueventS+';'
              , onmouseupStringZone, endScrollS+argueventS+';'
//              , styleStringZone, absoluteStyleString+zindexStyle
//                , leftStyleStringZone, 0, topStyleStringZone, 0
              , styleStringZone, absoluteLeftTopCornerStyleString+zindexStyle

//              , elementZone, divStyleString
              , elementZone, divOriginalString
                , divOriginalStringZone, idString+onscrollString+styleString
                , idStringZone, scrollbarElement
                , onscrollStringZone, moveScrollS+argueventS+';'
                , styleStringZone, overflowAutoStyleString
                  , zindexStyleZone, '2'
                  , widthStyleStringZone, iw, heightStyleStringZone, ih+(sh[anied]?scrollBarHeight:0) // scroll drop getter
                , elementZone, tailDivString
                  , widthStyleStringZone, INT(iw*sh[aniN]), heightStyleStringZone, ihI
                  , elementZone, tableDefaultString
                    , cellpaddingStringZone, 0, cellspacingStringZone, 0, tableDefaultStringZone, sizeString
                      , widthStringZone, INT(iw*sh[aniN]), heightStringZone, ihI
                    , elementZone, ''
               ):'')
            + replaceAppendAll(
//              divStyleString
              divOriginalString
              , divOriginalStringZone, styleString+idString+(sh[anied]?(onmousedownString+onmouseupString+ondragString+ondragendString):'')
              , onmousedownStringZone, readyScrollS+argueventS+';'
              , onmouseupStringZone, endScrollS+argueventS+';'
              , ondragStringZone, moveMouseS+argueventS+';'
              , ondragendStringZone, endScrollS+argueventS+';'
              , idStringZone, showElement
              , styleStringZone, absoluteLeftTopCornerStyleString+zindexStyle+cursorpointerStyle
//              , elementZone, divStyleString
              , elementZone, divOriginalString
                , divOriginalStringZone, styleString+idString
                , idStringZone, showScroll
                , styleStringZone, overflowHiddenStyleString+alphaStyle
                  , zindexStyleZone, '3'
                  , widthStyleStringZone, iw, heightStyleStringZone, ih // showing zone
                  , overOpacity100, sh[anied]?'100':shopb, overOpacity, sh[anied]?'1':(shopb/100))
                , elementZone,
(sh[anied]?
  replaceAppendAll(tailDivString
    , widthStyleStringZone, INT(iw*(stringWV[indexOf](sh[aniType])>=0?sh[aniN]:sh[aniW])), heightStyleStringZone, INT(ih*(stringWV[indexOf](sh[aniType])>=0?1:sh[aniFloor]))
    , elementZone, ssim2
    , imageWidth, INT(iw*sh[aniW]), imageHeight, ih*(sh[anied]?sh[aniFloor]:1)
//  replaceAppendAll(animationString
//    , animationWidth, iw, animationHeight, ih
//    , animationAmount, iw
//    , animationZoneWidth, INT(iw*sh[aniN]), animationZoneHeight, ihI
//    , animationTails, ssim2
//    , imageWidth, INT(iw*sh[aniW]), imageHeight, ih*(sh[anied]?sh[aniFloor]:1)
 ) // ani
  :replaceAppendAll(imageClickString
    , imageElement, imageString
      , imageWidth, iwI, imageHeight, ihI
 ) // normal
 ) // anied
      , imageURL, ((sh[Src][substr](0, 7)!='http://')?receivedSummeryImageBottom:'')+sh[Src]
  );
 }
    else ssim='';
  screenAlphaElementStyle[filter]=replaceAppendAll(alphaStyle[substring](alphaStyle[indexOf](filter+':')+(filter+':')[length], alphaStyle[indexOf](';')+1)
    , overOpacity100, receivedHintOrder?receivedScreenOpacity:0
    );
  screenAlphaElementStyle[opacity]=receivedHintOrder?(receivedScreenOpacity/100):0;
if (receivedHintOrder) {
  screenAlphaElementStyle.width=receivedSummeryWidth+'px';
  screenAlphaElementStyle[height]=receivedSummeryHeight+'px';
  } else { screenAlphaElementStyle.width=screenAlphaElementStyle[height]='1px'; }
  zcount='';
  if (arv=sh[ZImage]) {
    for (zi=0; zi<arv[length]; zi++) {
      zcount+=replaceAppendAll(numClickString
        , waitHintNo, receivedHintOrder, waitZoomNo, zi+1);
      }
    }
// pre ani setting
  if (sh[anied]) {
    aniTypev=sh[aniType]; aniNv=sh[aniN]; aniWv=sh[aniW]; aniFloorv=sh[aniFloor];
    }
// end of pre ani setting
  returnSpaceElement[innerHTML]=replaceAppendAll(tableDefaultString
    , tableDefaultStringZone, receivedHintOrder?'':replaceAppendAll(' '+styleString
      , styleStringZone, absoluteStyleString
      , leftStyleStringZone, 0, topStyleStringZone, receivedSummeryHeight)
      , cellpaddingStringZone, 0, cellspacingStringZone, 0
    , elementZone, ssim
      +trString
      , elementZone, tdOriginalString
        , tdOriginalStringZone, colspanString
          , colspanStringZone, 3
        , elementZone, tableDefaultString
          , tableDefaultStringZone, widthString
            , cellpaddingStringZone, receivedSummeryPadding, cellspacingStringZone, 0, widthStringZone, receivedSummeryWidth
          , elementZone, trString
            , elementZone, tdOriginalString
              , tdOriginalStringZone, styleString
                , styleStringZone, font9pt+colorStyle
                  , colorStyleZone, 'white'
              , elementZone, replaceAppendAll(divStyleString
                , styleStringZone, 'float:right'
                , elementZone
  , (receivedHintOrder?
    (
      zcount+replaceAppendAll(aShapWaitHint
        , waitHintNo, 0, elementZone, 'Summery')
      +' '+replaceAppendAll(aLightgreenShow
        , onclickStringZone, 'waitSummery('+receivedHintOrder+',\''+showString+'\');'
        , waitHintNo, receivedHintOrder
        , showString, stringI
        , elementZone, '원본')
      +(sh[anied]?(' '+replaceAppendAll(aLightgreenShow
        , onclickStringZone, 'waitSummery('+receivedHintOrder+',\''+showString+'\');'
           , waitHintNo, receivedHintOrder
           , showString, sh[aniType]
//        , elementZone, '영상')):
        , elementZone, stringHanguel[sh[aniType]])):
        '')
      )
      :'')
                 )
+sh[Hint]);
  if (backStyleElement[scrollHeight]>iiH) { iiH=backStyleElement[scrollHeight]; backStyleElement[style][height]=iiH+'px'; /* resizing(); */ }
    if (sh[aniType]==stringA) autoScroll(startAnimation);
 }
imageInit=function () {
  var
    ii_i, ii_styleSize, ii_styleTop, ii_t, ov
    , hashTemp=locationElement[hash]
  ;
  if (!receivedSummeryImageBottom) {
    ii_i=receivedSummeryImageSrc; receivedSummeryImageBottom=ii_i[substring](0, ii_i[indexOf]('=')+1);
    }
  iiH=receivedSummeryHeight>=300?(receivedSummeryHeight+200):500;
  ii_styleSize=replaceAppendAll(overflowHiddenStyleString
    , widthStyleStringZone, receivedSummeryWidth, heightStyleStringZone, iiH);
  ii_styleTop=absoluteLeftTopCornerStyleString;
  ov='';
  for(ii_i=1; ii_i<receivedLinkImages[length]; ii_i++) { ii_t=receivedLinkImages[ii_i];
    ov+=replaceAppendAll(areaRect
      , areaLeft, ii_t[Left], areaTop, ii_t[Top]
      , areaRight, ii_t[Left]+ii_t[Width], areaBottom
      , ii_t[Top]+ii_t[Height], waitHintNo, ii_i);
    }
// -- starting hash new window option
  if ((hashTemp[indexOf](stringI)>=0)||(hashTemp[indexOf](stringA)>=0)||(hashTemp[indexOf](stringS)>=0)
    ||(hashTemp[indexOf](stringW)>=0)||(hashTemp[indexOf](stringV)>=0)) {
// for new window document
showHint=showZoom=argumentReceiver; // for no detail calling
    ontimeHash();
    }
else {
// -- normal option
  w(replaceAppendAll(mapOriginalString
    , mapOriginalStringZone, nameString
      , nameStringZone, 'summeryMap_1'
    , elementZone, ov));
  w(replaceAppendAll(screenString
    , backTop, ii_styleTop, backSize, ii_styleSize
    , imageURL, receivedSummeryImageSrc
    , imageWidth, receivedSummeryWidth, imageHeight, receivedSummeryHeight
    , overOpacity100, receivedScreenOpacity, overOpacity, (receivedScreenOpacity/100)));
// get elements init
//  screenAlphaElement=;documentElement.all[screenAlpha];
  screenAlphaElementStyle=documentElement.all[screenAlpha][style];
  backStyleElement=documentElement.all[backStyle];
  returnSpaceElement=documentElement.all[returnSpace]
  zoomSpaceElement=documentElement.all[ZoomSpace]
  receivedHintOrder=0;
  showHint();
// -- init ontimeHash
ontimeHash();
// for normal windowing
if (documentElement.all&&(attachEvent in documentElement)) documentElement[attachEvent](onpropertychange, onpropertyHash);
else windowElement[onhashchange]=onpropertyHash;
  }
// -- end of init ontimeHash

  };
function breakHint() { if (HintWait) timeOutClear(HintWait); HintWait=0; }
function breakZoom() { if (ZoomWait) timeOutClear(ZoomWait); ZoomWait=0; }
waitHint=function (v) {
// breakHint(); receivedHintOrder=v; HintWait=timeOut(showHint, 100);
processHash=
locationElement[hash]='#H'+v;
readyHashing();
};
waitZoom=function (v) {
//breakZoom(); ZoomOrder=v; ZoomWait=timeOut(showZoom, 100);
processHash=locationElement[hash]='#H'+receivedHintOrder+'Z'+v;
readyHashing();
};
function blankSelf(image_url, windowWidth, windowHeight) {
  var viW1, viW1d, viar=arguments
;
  if ((navigator.appName[indexOf]('Opera')>=0)||(!(viW1=viWb))) { // opera is can not open new window by _blank
    viW1=windowElement; //.open(aboutBlank,openWindowName, replaceAppendAll(openWindowOption, openWindowWidth, windowWidth, openWindowHeight, windowHeight));
    viW1d=viW1[documentS];
//    viW1d.open();
    viW1d[write](replaceAppendAll(htmlBODY
      , titleStringZone, image_url
      , imageZone, imagePadding
//      , widthStringZone, windowWidth, heightStringZone, windowHeight
        , viewImageRecallSet,
          'viewImageRecall='+viewImageRecall+';viewOrder='+viewOrder+';'
          +sendObjStringValue('viewOrderSet', viewOrderSet, aniNvS, aniFloorvS, aniWvS, aniTypevS, innerHTML)
      ));
//    viW1d.close();
    }
  viW1[moveTo](0,0);
  viW1[resizingS](windowWidth, windowHeight);
  viW1[retitleS](image_url);
  viW1[focusS]();
  return viW1[documentS].all['woutput'];
  }
function blankOpen(image_url, windowWidth, windowHeight) {
  var viW1, viW1d, viar=arguments
;
if (!backStyleElement) return blankSelf(image_url, windowWidth, windowHeight); // for no blanks
  if ((navigator.appName[indexOf]('Opera')>=0)||(!(viW1=viWb))) { // opera is can not open new window by _blank
    viW1=windowElement.open(aboutBlank,openWindowName, replaceAppendAll(openWindowOption, openWindowWidth, windowWidth, openWindowHeight, windowHeight));
    viW1d=viW1[documentS];
    viW1d.open();
    viW1d[write](replaceAppendAll(htmlBODY
      , titleStringZone, image_url
      , imageZone, imagePadding
//      , widthStringZone, windowWidth, heightStringZone, windowHeight
        , viewImageRecallSet, ''
      ));
    viW1d.close();
    }
  viW1[moveTo](0,0);
  viW1[resizingS](windowWidth, windowHeight);
  viW1[retitleS](image_url);
  viW1[focusS]();
  return viW1[documentS].all['woutput'];
  }
function viewImage(image_url) { var viar=arguments, viW1d;
if (viar[length]==1)
  windowElement.open( replaceAppendAll(defaultImageURLForm, imageName, image_url), openWindowName, replaceAppendAll( openWindowOption, openWindowWidth, 310, openWindowHeight, 310));
else {
  viW1d=blankOpen(image_url, viar[1], viar[2]);
  viW1d[innerHTML]=replaceAppendAll(imageString
      , imageURL, image_url
      , imageWidth, viar[1], imageHeight, viar[2]);
  }
  }
viewImageRecall=function (openedWindow) {
  viWb=openedWindow;
  if (!viewOrder) return;
  viewOrder=0;
  sendObjAttribValue(viWb, aniNvS, viewOrderSet[aniNvS], aniFloorvS, viewOrderSet[aniFloorvS], aniWvS, viewOrderSet[aniWvS], aniTypevS, viewOrderSet[aniTypevS]);
// please patch error
  viWb[documentS].all['woutput'][innerHTML]=viewOrderSet[innerHTML];
  viWb[autoScrollS]();
  };
function viewImage2(image_url, image_width, image_height, image_Wcount, image_floor, image_count, image_type) {
  var
    viW1d, i, fheight=INT(image_height/image_floor), imageString2
    , iL, iT
    , documentOutput='';
    ;
  if ((fheight*image_floor)<image_height) fheight++;
    imageString2='';
if (stringWV[indexOf](image_type)>=0)
  { // for 'WV' ( but, only use for 'W'..)
    for (i=0; i<image_floor; i++) {
      iL=i*image_width;
      iT=INT(i*image_height/image_floor);
      imageString2+=replaceAppendAll(imageClipTail
        , topClip, iT
        , rightClip, ((i+1)*image_Wcount)>image_count?INT(image_width*(image_count-i*image_Wcount)/image_Wcount):image_width
        , bottomClip, iT + fheight
        , leftClip, 0
        , topClipPoint, -iT
        , leftClipPoint, iL
        );
      }
  viewOrderSet[innerHTML]=
  replaceAppendAll(tailDivString
    , widthStyleStringZone, INT(image_width/image_Wcount*(stringWV[indexOf](image_type)>=0?image_count:image_Wcount)), heightStyleStringZone, INT(fheight*(stringWV[indexOf](image_type)>=0?1:image_floor))
    , elementZone, imageString2
    , imageWidth, image_width, imageHeight, image_height
    , imageURL, ((image_url[substr](0, 7)!='http://')?receivedSummeryImageBottom:'')+image_url
    );
  }
else
  {// for 'AS'
  imageString2+=replaceAppendAll(imageClipTail
    , topClip, 0
    , rightClip, image_width
    , bottomClip, image_height
    , leftClip, 0
    , leftClipPoint, 0
    , topClipPoint, 0
    );
  viewOrderSet[innerHTML]=
      replaceAppendAll( tailDivString
         , widthStyleStringZone, image_width/image_Wcount, heightStyleStringZone, fheight + scrollBarHeight
// -- print from images
         , elementZone,
            replaceAppendAll(
              divOriginalString
              , divOriginalStringZone, styleString+onmousedownString+onmousemoveString+onmouseupString
              , onmousedownStringZone, pressScrollS+argueventS+';'
              , onmousemoveStringZone, moveMouseS+argueventS+';'
              , onmouseupStringZone, endScrollS+argueventS+';'
              , styleStringZone, absoluteLeftTopCornerStyleString+zindexStyle
              , elementZone, divOriginalString
                , divOriginalStringZone, idString+onscrollString+styleString
                , idStringZone, scrollbarElement
                , onscrollStringZone, moveScrollS+argueventS+';'
                , styleStringZone, overflowAutoStyleString
                  , zindexStyleZone, '2'
                  , widthStyleStringZone, INT(image_width/image_Wcount), heightStyleStringZone, fheight+scrollBarHeight // scroll drop getter
                , elementZone, tailDivString
                  , widthStyleStringZone, INT(image_width/image_Wcount*image_count), heightStyleStringZone, fheight
                  , elementZone, tableDefaultString
                    , cellpaddingStringZone, 0, cellspacingStringZone, 0, tableDefaultStringZone, sizeString
                      , widthStringZone, INT(image_width/image_Wcount*image_count), heightStringZone, fheight
                    , elementZone, ''
               )
            + replaceAppendAll(
              divOriginalString
              , divOriginalStringZone, styleString+idString+onmousedownString+onmouseupString+ondragString+ondragendString
              , onmousedownStringZone, readyScrollS+argueventS+';'
              , onmouseupStringZone, endScrollS+argueventS+';'
              , ondragStringZone, moveMouseS+argueventS+';'
              , ondragendStringZone, endScrollS+argueventS+';'
              , idStringZone, showElement
              , styleStringZone, absoluteLeftTopCornerStyleString+zindexStyle+cursorpointerStyle
              , elementZone, divOriginalString
                , divOriginalStringZone, styleString+idString
                , idStringZone, showScroll
                , styleStringZone, overflowHiddenStyleString //+alphaStyle
                  , zindexStyleZone, '3'
                  , widthStyleStringZone, image_width/image_Wcount, heightStyleStringZone, fheight // showing zone
                , elementZone,
  replaceAppendAll(tailDivString
    , widthStyleStringZone, INT(image_width/image_Wcount*(stringWV[indexOf](image_type)>=0?image_count:image_Wcount)), heightStyleStringZone, INT(fheight*(stringWV[indexOf](image_type)>=0?1:image_floor))
    , elementZone, imageString2
    , imageWidth, image_width, imageHeight, image_height
    )
      , imageURL, ((image_url[substr](0, 7)!='http://')?receivedSummeryImageBottom:'')+image_url
    )
// -- end of print from images
         );
}
    sendObjAttribValue(viewOrderSet, aniNvS, image_count, aniFloorvS, image_floor, aniWvS, image_Wcount, aniTypevS, image_type);
  viewOrder=1;
    viW1d=blankOpen(image_url, image_width/image_Wcount, fheight);
// script loading 용으로 처리가 필요함.
 if (viWb) { // loading 완료됐다고 생각되는 시점
    viewOrder=0;
    sendObjAttribValue(viWb, aniNvS, image_count, aniFloorvS, image_floor, aniWvS, image_Wcount, aniTypevS, image_type);
    viW1d[innerHTML]=viewOrderSet[innerHTML];
    viWb[autoScrollS]();
   }
// else
// { // 스크립트 아직 못 받았을거라 생각될 때 - viewImageRecall 이 해당 창에서 호출됨.
// }

}

waitSummery=function (v, o) {
// breakHint(); receivedHintOrder=v; HintWait=timeOut(showHint, 100);
processHash=
locationElement[hash]='#H'+v+o;
readyHashing();
};
showSummery=function (ss_i) { var lI=receivedLinkImages[ss_i]; viewImage(lI[Src], lI[Owidth], lI[Oheight]); };

showSummery2=function (ss_i) { var lI=receivedLinkImages[ss_i];
//  try {
    viewImage2(lI[Src], lI[Owidth], lI[Oheight], lI[aniW], lI[aniFloor], lI[aniN], lI[aniType]);
//    }
//  catch(e) { }
  };
function showZoom() {
  var
    sh, zh, ix, iy, iw, ih, xw, xh, nw, nh, rv, r2, lltd, tttr, shopa, shopb
    , sL, sT, sR, sB
    , sLp, sTp, sW, sH, iLp, iTp, iW, iH
    , sLv, sTv, sRv, sBv, iLv, iTv, iRv, iBv
    , showZoomHTML='', showZoomHTML2=''
    , x, y, i, j, pp, ii, jj
    , wCount, hCount
    ;
  breakZoom();
  if (lastZoom==ZoomOrder) ZoomOrder=0;
  lastZoom=ZoomOrder;
if (ZoomOrder) {
  sh=receivedLinkImages[receivedHintOrder]; zh=sh[ZImage][ZoomOrder-1]; iw=zWidth; ih=INT(zh[HHeight]/zh[HWidth]*iw);
  wCount=sh[anied]?sh[aniW]:1; hCount=sh[anied]?sh[aniFloor]:1;
  if (ih>zHeight) { ih=zHeight; iw=zh[HWidth]/zh[HHeight]*ih; }
  rv=1;
  xw=receivedSummeryWidth*iw*sh[Owidth]/zh[HWidth]/sh[Width];
  if (xw>imageMaximum) rv=imageMaximum/xw;
  xh=receivedSummeryHeight*ih*sh[Oheight]/zh[HHeight]/sh[Height];
  if (xh>imageMaximum) { r2=imageMaximum/xh; if (rv>r2) rv=r2; }
  nw=sh[Owidth]*iw/zh[HWidth];
  if (nw>imageMaximum) { r2=imageMaximum/nw; if (rv>r2) rv=r2; }
  nh=sh[Oheight]*ih/zh[HHeight];
  if (nh>imageMaximum) { r2=imageMaximum/nh; if (nh>r2) rv=r2; }
  xw=INT(xw*rv); nw=INT(nw*rv); iw=INT(iw*rv);
  xh=INT(xh*rv); nh=INT(nh*rv); ih=INT(ih*rv);
  ix=(zWidth-iw)*zh[HLeft]/sh[Owidth]/(sh[aniType]=='W'?sh[aniN]:1)*(sh[aniType]=='H'?wCount:(sh[aniType]=='W'?wCount:1))+zGab;
  iy=(zHeight-ih)*zh[HTop]/sh[Oheight]/(sh[aniType]=='H'?sh[aniN]:1)*(sh[aniType]=='W'?hCount:(sh[aniType]=='H'?hCount:1))+zGab;
  shopa=iw/zh[HWidth]; shopb=iw/sh[Width]/zh[HWidth]*sh[Owidth];
  if (shopa>1) shopa=1/shopa; if (shopb>1) shopb=1/shopb;
  shopa=1-shopa; shopb=1-shopb;
  if (zh[HWidth]>sh[Width]*sh[Owidth]) { shopb*=shopb; shopb*=shopb; } else { shopa*=shopa; shopa*=shopa; }
  if (shopb) {
    shopb=INT(shopb/(shopa+shopb)*100);
    } else shopb=0;
  sW=sh[Width]*xw/receivedSummeryWidth/wCount; // because, [Width]'s zone size
  sH=sh[Height]*xh/receivedSummeryHeight/hCount; // because, [Height]'s zone size
  sR=(sL=(sh[Left]+sh[Width]*zh[HLeft]/sh[Owidth])*xw/receivedSummeryWidth)
    +iw;
  sB=(sT=(sh[Top]+sh[Height]*zh[HTop]/sh[Oheight])*xh/receivedSummeryHeight)
    +ih;
  sLp=sh[Left]*xw/receivedSummeryWidth;
  sTp=sh[Top]*xh/receivedSummeryHeight;
  iW=nw/wCount;
  iH=nh/hCount;
  iRp=(iLp=INT(nw*zh[HLeft]/sh[Owidth]))
    +iw;
  iBp=(iTp=INT(nh*zh[HTop]/sh[Oheight]))
    +ih;
// x, y, i, j 로 변환해야함.
//ov='';
for (j=MathElement[floor]((sT-sTp)/sH); j<=MathElement[floor]((sB-sTp)/sH); j++)
for (i=MathElement[floor]((sL-sLp)/sW); i<=MathElement[floor]((sR-sLp)/sW); i++) {
  pp=i+j*wCount*hCount; while (pp<0) pp+=wCount*hCount*wCount*hCount;
  ii=pp%(wCount*hCount);
  jj=INT(pp/wCount/hCount)%(hCount*wCount);
  pp=((ii+INT(jj/hCount))%wCount+(INT(ii/wCount)+jj)*wCount)%(wCount*hCount);
  x=pp%wCount;
  y=INT(pp/wCount);
//ov+=(i==MathElement[floor]((sL-sLp)/sH)?'\r':'')+pp+'/'+x+','+y+' - ';
  sRv=(sLv=i*sW+sLp-sL)+sW; sBv=(sTv=j*sH+sTp-sT)+sH;
  if (sLv<0) sLv=0; if (sRv>iw) sRv=iw; if (sTv<0) sTv=0; if (sBv>ih) sBv=ih;
  sLv+=sL+(x-i)*sW; sRv+=sL+(x-i)*sW; sTv+=sT+(y-j)*sH; sBv+=sT+(y-j)*sH;
  iRv=(iLv=i*iW-iLp)+iW; iBv=(iTv=j*iH-iTp)+iH;
//  showZoomHTML+=i+' '+j+' '+iLv+' +'+iRv+' '+iTv+' '+iBv+'<br/> '+iW+' '+iH+' '+wCount+' '+hCount+' '+ih+' /<br/>';
  if (iLv<0) iLv=0; if (iRv>iw) iRv=iw; if (iTv<0) iTv=0; if (iBv>ih) iBv=ih;
  iLv+=iLp+(x-i)*iW; iRv+=iLp+(x-i)*iW; iTv+=iTp+(y-j)*iH; iBv+=iTp+(y-j)*iH;
  showZoomHTML
    +=
    replaceAppendAll(imageZoomClickTail
      , waitHintNo, receivedHintOrder
      , topClip, sTv, rightClip, sRv, bottomClip, sBv, leftClip, sLv
      , leftClipPoint, ix-sL-(x-i)*sW
      , topClipPoint, iy-sT-(y-j)*sH
        , imageWidth, xw, imageHeight, xh
        , imageURL, receivedSummeryImageSrc)
      ;
  showZoomHTML2
    +=
      replaceAppendAll(imageZoomClickTail
      , waitHintNo, receivedHintOrder
      , topClip, iTv, rightClip, iRv, bottomClip, iBv, leftClip, iLv
      , leftClipPoint, ix-iLp-(x-i)*iW
      , topClipPoint, iy-iTp-(y-j)*iH
      , imageWidth, nw, imageHeight, nh
      , imageURL, ((sh[Src][substr](0, 7)!='http://')?receivedSummeryImageBottom:'')+sh[Src])
     ;
  }
  zoomSpaceElement[innerHTML]=
    replaceAppendAll(divStyleString
      , styleStringZone, absoluteLeftTopCornerStyleString
//      , elementZone, divStyleString
      , elementZone, divOriginalString
        , divOriginalStringZone, styleString+onclickString
          , onclickStringZone, waitZoomFunctionString
            , waitZoomNo, ZoomOrder
        , styleStringZone, overflowHiddenStyleString+alphaStyle+backgroundColor
          , widthStyleStringZone, receivedSummeryWidth, heightStyleStringZone, receivedSummeryHeight
          , overOpacity100, 50, overOpacity, 0.5
          , backgroundColorZone, 'gray'
        , elementZone, '')
    +replaceAppendAll(divStyleString
      , styleStringZone, absoluteLeftTopCornerStyleString
      , elementZone, tailDivString
        , widthStyleStringZone, iw+ix, heightStyleStringZone, ih+iy
        , elementZone, showZoomHTML
      )
    +replaceAppendAll(divStyleString
      , styleStringZone, absoluteLeftTopCornerStyleString+alphaStyle
      , elementZone, tailDivString
//        , widthStyleStringZone, 1, heightStyleStringZone, 1
        , widthStyleStringZone, iw+ix, heightStyleStringZone, ih+iy
      , overOpacity100, shopb, overOpacity, shopb/100
        , elementZone, showZoomHTML2
      )
//    +showZoomHTML
    ;
  } else zoomSpaceElement[innerHTML]='';
}
resizing=function () {
var outerSam=documentBodyElement.outerHTML;
  windowElement[resizeTo](documentBodyElement[scrollWidth], documentBodyElement[scrollHeight]); }
 
}
scriptInit();


...

3) 최적화 후..

var linkImages = [],
    imageInit, waitHint, waitZoom, waitSummery, showSummery, showSummery2, resizing, imageSet, innerHTML, readyScroll, moveMouse, moveScroll, endScroll, pressScroll, sizingSecond, summeryImageBottom, aniNv, aniFloorv, aniWv, aniTypev, aniNvS, aniFloorvS, aniWvS, aniTypevS, viWb, viewOrder, viewOrderSet, viewImageRecall, autoScroll, clearAutoScroll, sendObjAttribValue, autoScrollS, temp = "";
function argumentReceiver() {}
function scriptInit() {
  function Oc() {
    if (Ad != M[N]) {
      Ad = M[N];
      eb()
    }
    ta(Oc, 200)
  }
  function eb() {
    if (Bd != M[N]) {
      A = Bd = M[N];
      hc()
    }
  }
  function hc() {
    Qa && ua(Qa);
    Qa = 0;
    Qa = ta(le, 100)
  }
  function le() {
    var a;
    Qa && ua(Qa);
    Qa = 0;
    for (la = T = -1; A[ic](0);) {
      a = -1;
      switch (A[ic](0)) {
      case "#":
        break;
      case "H":
        a = parseInt(A[E](1, A[s]));
        if (a >= 0) T = a;
        break;
      case "Z":
        a = parseInt(A[E](1, A[s]));
        if (a >= 0) la = a;
        break;
      case jc:
      case Pc:
      case va:
      case Qc:
      case Rc:
        Bb = A[ic](0);
        break;
      default:
        break
      }
      A = a >= 0 ? A[E](A[m](a + "", 1) + (a + "")[s], A[s]) : A[E](1, A[s])
    }
    if (da[T]) if (T && Ra < 0 && la < 0 && Sc == T && !Bb) {
      M[N] = "#H0";
      eb()
    } else if (Bb) {
      M[N] = "#H" + T;
      Bb == jc ? Cd(T) : Dd(T);
      Bb = "";
      eb()
    } else {
      if (la < 0) la = 0;
      if (T != Sc) {
        B = T;
        Tc();
        Sa = la;
        Uc()
      } else if (la != Ra) {
        Sa = la;
        Uc()
      } else {
        A = M[N] = "#H" + T;
        eb();
        return
      }
      Sc = T;
      Ra = la
    }
  }
  function me() {
    var a = arguments,
        b = a[0],
        c = a[1],
        d, e = "",
        h, l;
    for (d = 2; d < a.length; d++) {
      h = c[a[d]];
      l = isNaN(h) ? "'" : "";
      e += b + "['" + a[d] + "']=" + l + h + l + ";"
    }
    return e
  }
  function f() {
    var a = arguments,
        b, c = a[0];
    for (b = 1; b + 1 < a[s]; b += 2) {
      Ed[ne](a[b], Fd);
      c = c[oe](Ed, a[b + 1])
    }
    return c
  }
  function O(a, b) {
    return "<" + a + " " + b + " >" + g + "</" + a + ">"
  }
  function Gd() {
    var a;
    for (a = 0; a < arguments[s]; a++) q[Vc](arguments[a])
  }
  function pe() {
    argumentReceiver(Ta, fb, innerHTML, sendObjAttribValue, Wc, C, wa, kc, Xc, lc, Yc, Zc, m, mc, $c, ma, Cb, nc, oc, pc, N, Db, Eb, Z, ad, bd, P, q, $, M, ta, ua, gb, Fb, cd, ea, xa, hb, Gb, Ua, na, Hb, Ib, Jb, aa, va, dd, Va, ib, qc, Kb, clearAutoScroll, Lb, autoScrollS, viewImageRecall, viewOrder, viewOrderSet)
  }
  function Tc() {
    var a, b, c, d, e, h, l, o, j, r;
    ed && ua(ed);
    ed = 0;
    jb && ua(jb);
    Ra = jb = 0;
    rc[innerHTML] = "";
    a = da[B];
    j = D;
    d = u;
    e = a[U] / (a[G] / (a[p] ? a[w] / a[H] : 1)) * u;
    if (e > j) {
      e =
      j;
      d = a[G] / (a[p] ? a[w] / a[H] : 1) / a[U] * j;
      b = (u - d) * a[fa] / (u - a[L] / (a[p] ? a[w] : 1));
      c = 0
    } else {
      c = j == e ? 0 : (j - e) * a[ga] / (j - a[ba]);
      b = 0
    }
    h = d / a[G];
    j = d / a[L];
    if (h > 1) h = 1 / h;
    if (j > 1) j = 1 / j;
    h = 1 - h;
    j = 1 - j;
    if (a[L] > a[G]) {
      j *= j;
      j *= j
    } else {
      h *= h;
      h *= h
    }
    j = j ? k(j / (h + j) * 100) : 0;
    h = k(d);
    l = k(e);
    o = b ? f(Hd, g, ya, n, za, x, b, y, 0, g, "") : "";
    b = b ? f(Hd, g, ya, n, za, x, u - b - h, y, 0, g, "") : "";
    c = c ? f(fd, Aa, c, g, Wa, Ba, Id, gd, 3, g, "") : "";
    if (B) {
      if (a[p]) {
        r = "";
        if (aa[m](a[I]) >= 0) for (i = 0; i < a[H]; i++) r += f(hd, Ca, k(e * i), Da, d * ((i + 1) * a[w] > a[Q] ? a[Q] - i * a[w] : a[w]), Ea, e * (i + 1), Fa, 0, Ga, d * i * a[w], Ha, -e * i);
        else r += f(hd, Ca, 0, Da, d * a[w], Ea, e * a[H], Fa, 0, Ga, 0, Ha, 0)
      }
      r = c + f(fd, Aa, l, g, o + qe + b, Ia, h, g, ha, x, h, y, l + (a[p] ? sc : 0), g, f(hd, Ca, e / a[ba] * a[ga] * (a[p] ? a[H] : 1), Da, d / (a[L] / (a[p] ? a[w] : 1)) * a[fa] + h, Ea, e / a[ba] * a[ga] * (a[p] ? a[H] : 1) + l, Fa, d / (a[L] / (a[p] ? a[w] : 1)) * a[fa], Ga, -d / (a[L] / (a[p] ? a[w] : 1)) * a[fa], Ha, -e / a[ba] * a[ga] * (a[p] ? a[H] : 1), R, Mb, ia, k(d / (a[L] / (a[p] ? a[w] : 1)) * u), ja, k(e / a[ba] * D * (a[p] ? a[H] : 1))) + (a[p] ? f(ca, V, t + tc + Jd + Nb, Ob, uc + C + ";", id, kb + C + ";", lb, Ja + C + ";", n, oa + mb, g, ca, V, Ka + Kd + t, W, na, jd, vc + C + ";", n, Ld, Xa, "2", x, d, y, e + (a[p] ? sc : 0), g, ha, x, k(d * a[Q]), y, l, g, Pb, nb, 0, ob, 0, pb, wc, Ia, k(d * a[Q]), Aa, l, g, "") : "") + f(ca, V, t + Ka + (a[p] ? tc + Nb + Md + Nd : ""), Ob, xc + C + ";", lb, Ja + C + ";", kd, kb + C + ";", ld, Ja + C + ";", W, Ua, n, oa + mb + Od, g, ca, V, t + Ka, W, Hb, n, za + Ya, Xa, "3", x, d, y, e, qb, a[p] ? "100" : j, Qb, a[p] ? "1" : j / 100), g, a[p] ? f(ha, x, k(d * (aa[m](a[I]) >= 0 ? a[Q] : a[w])), y, k(e * (aa[m](a[I]) >= 0 ? 1 : a[H])), g, r, ia, k(d * a[w]), ja, e * (a[p] ? a[H] : 1)) : f(re, md, Pd, ia, h, ja, l), R, (a[La][Rb](0, 7) != "http://" ? Za : "") + a[La])
    } else r = "";
    $a[yc] = f(Ya[E](Ya[m](yc + ":") + (yc + ":")[s], Ya[m](";") + 1), qb, B ? Sb : 0);
    $a[nd] = B ? Sb / 100 : 0;
    if (B) {
      $a.width = u + "px";
      $a[rb] = D + "px"
    } else $a.width = $a[rb] = "1px";
    e = "";
    if (j = a[sb]) for (d = 0; d < j[s]; d++) e += f(se, J, B, pa, d + 1);
    if (a[p]) {
      aniTypev = a[I];
      aniNv = a[Q];
      aniWv = a[w];
      aniFloorv = a[H]
    }
    Qd[innerHTML] = f(Pb, pb, B ? "" : f(" " + t, n, zc, Tb, 0, Ub, D), nb, 0, ob, 0, g, r + od, g, Wa, Ba, Id, gd, 3, g, Pb, pb, Ac, nb, Rd, ob, 0, Ia, u, g, od, g, Wa, Ba, t, n, Sd + Bc, Vb, "white", g, f(ya, n, "float:right", g, B ? e + f(Td, J, 0, g, "Summery") + " " + f(Ud, qa, "waitSummery(" + B + ",'" + Wb + "');", J, B, Wb, jc, g, "\uc6d0\ubcf8") + (a[p] ? " " + f(Ud, qa, "waitSummery(" + B + ",'" + Wb + "');", J, B, Wb, a[I], g, Vd[a[I]]) : "") : "") + a[Cc]);
    if (Xb[xa] > Yb) {
      Yb = Xb[xa];
      Xb[ma][rb] = Yb + "px"
    }
    a[I] == va && autoScroll(Ib)
  }
  function Wd(a, b, c) {
    var d, e;
    if (!Xb) {
      if (navigator.appName[m]("Opera") >= 0 || !(e = viWb)) {
        e = P;
        d = e[wa];
        d[Vc](f(pd, qd, a, rd, Xd, sd, "viewImageRecall=" + viewImageRecall + ";viewOrder=" + viewOrder + ";" + me("viewOrderSet", viewOrderSet, tb, ub, vb, wb, innerHTML)))
      }
      e[Yd](0, 0);
      e[Va](b, c);
      e[td](a);
      e[lc]();
      return e[wa].all.woutput
    }
    if (navigator.appName[m]("Opera") >= 0 || !(d = viWb)) {
      d = P.open(te, Zd, f($d, ud, b, vd, c));
      e = d[wa];
      e.open();
      e[Vc](f(pd, qd, a, rd, Xd, sd, ""));
      e.close()
    }
    d[Yd](0, 0);
    d[Va](b, c);
    d[td](a);
    d[lc]();
    return d[wa].all.woutput
  }
  function ue(a) {
    var b = arguments,
        c;
    if (b[s] == 1) P.open(f(ve, ae, a), Zd, f($d, ud, 310, vd, 310));
    else {
      c = Wd(a, b[1], b[2]);
      c[innerHTML] = f(Pd, R, a, ia, b[1], ja, b[2])
    }
  }
  function Uc() {
    var a, b, c, d, e, h, l, o, j, r, z, v, xb, be, ce, Dc, Ec, Ma, Na, Zb, yb, zb, K, $b, ac, bc, cc, dc, ec, fc, de = "",
        ee = "",
        ka, ab, X, Y, F, S;
    jb && ua(jb);
    jb = 0;
    if (Ra == Sa) Sa = 0;
    if (Ra = Sa) {
      a = da[B];
      b = a[sb][Sa - 1];
      e = wd;
      h = k(b[gc] / b[Oa] * e);
      F = a[p] ? a[w] : 1;
      S = a[p] ? a[H] : 1;
      if (h > Fc) {
        h = Fc;
        e = b[Oa] / b[gc] * h
      }
      c = 1;
      l = u * e * a[G] / b[Oa] / a[L];
      if (l > Pa) c = Pa / l;
      o = D * h * a[U] / b[gc] / a[ba];
      if (o > Pa) {
        d = Pa / o;
        if (c > d) c = d
      }
      j = a[G] * e / b[Oa];
      if (j > Pa) {
        d = Pa / j;
        if (c > d) c = d
      }
      r = a[U] * h / b[gc];
      if (r > Pa) {
        d = Pa / r;
        if (r > d) c = d
      }
      l = k(l * c);
      j = k(j * c);
      e = k(e * c);
      o = k(o * c);
      r = k(r * c);
      h = k(h * c);
      c = (wd - e) * b[Gc] / a[G] / (a[I] == "W" ? a[Q] : 1) * (a[I] == "H" ? F : a[I] == "W" ? F : 1) + bb;
      d = (Fc - h) * b[Hc] / a[U] / (a[I] == "H" ? a[Q] : 1) * (a[I] == "W" ? S : a[I] == "H" ? S : 1) + bb;
      z = e / b[Oa];
      v = e / a[L] / b[Oa] * a[G];
      if (z > 1) z = 1 / z;
      if (v > 1) v = 1 / v;
      z = 1 - z;
      v = 1 - v;
      if (b[Oa] > a[L] * a[G]) {
        v *= v;
        v *= v
      } else {
        z *= z;
        z *= z
      }
      v = v ? k(v / (z + v) * 100) : 0;
      Ma = a[L] * l / u / F;
      Na = a[ba] * o / D / S;
      be = (z = (a[fa] + a[L] * b[Gc] / a[G]) * l / u) + e;
      ce = (xb = (a[ga] + a[ba] * b[Hc] / a[U]) * o / D) + h;
      Dc = a[fa] * l / u;
      Ec = a[ga] * o / D;
      yb = j / F;
      zb = r / S;
      iRp = (Zb = k(j * b[Gc] / a[G])) + e;
      iBp = (b = k(r * b[Hc] / a[U])) + h;
      for (Y = Ic[Jc]((xb - Ec) / Na); Y <= Ic[Jc]((ce - Ec) / Na); Y++) for (X = Ic[Jc]((z - Dc) / Ma); X <= Ic[Jc]((be - Dc) / Ma); X++) {
        for (K = X + Y * F * S; K < 0;) K += F * S * F * S;
        ka = K % (F * S);
        K = parseInt(K / F / S) % (S * F);
        K = ((ka + parseInt(K / S)) % F + (parseInt(ka / F) + K) * F) % (F * S);
        ka = K % F;
        ab = parseInt(K / F);
        ac = (K = X * Ma + Dc - z) + Ma;
        bc = ($b = Y * Na + Ec - xb) + Na;
        if (K < 0) K = 0;
        if (ac > e) ac = e;
        if ($b < 0) $b = 0;
        if (bc > h) bc = h;
        K += z + (ka - X) * Ma;
        ac += z + (ka - X) * Ma;
        $b += xb + (ab - Y) * Na;
        bc += xb + (ab - Y) * Na;
        ec = (cc = X * yb - Zb) + yb;
        fc = (dc = Y * zb - b) + zb;
        if (cc < 0) cc = 0;
        if (ec > e) ec = e;
        if (dc < 0) dc = 0;
        if (fc > h) fc = h;
        cc += Zb + (ka - X) * yb;
        ec += Zb + (ka - X) * yb;
        dc += b + (ab - Y) * zb;
        fc += b + (ab - Y) * zb;
        de += f(fe, J, B, Ca, $b, Da, ac, Ea, bc, Fa, K, Ga, c - z - (ka - X) * Ma, Ha, d - xb - (ab - Y) * Na, ia, l, ja, o, R, Mb);
        ee += f(fe, J, B, Ca, dc, Da, ec, Ea, fc, Fa, cc, Ga, c - Zb - (ka - X) * yb, Ha, d - b - (ab - Y) * zb, ia, j, ja, r, R, (a[La][Rb](0, 7) != "http://" ? Za : "") + a[La])
      }
      rc[innerHTML] =
      f(ya, n, oa, g, ca, V, t + cb, qa, Kc, pa, Sa, n, za + Ya + xd, x, u, y, D, qb, 50, Qb, 0.5, Lc, "gray", g, "") + f(ya, n, oa, g, ha, x, e + c, y, h + d, g, de) + f(ya, n, oa + Ya, g, ha, x, e + c, y, h + d, qb, v, Qb, v / 100, g, ee)
    } else rc[innerHTML] = ""
  }
  var yd = 0,
      ed, jb, Sa, Ra = -1,
      Yb, bb, wd, Fc, ge = 1024,
      he = 768,
      Pa = 16383,
      sc = 22,
      $a, Xb, Qd, rc, u, D, Mb, Sb, Za, Rd, da, B, Fd = "gi",
      Ic = Math,
      Jc = "floor",
      Ed = RegExp("", Fd),
      k = parseInt,
      Cd, Dd, s = "length",
      E = "substring",
      Rb = "substr",
      Vc = "write",
      ic = "charAt",
      yc = "filter",
      nd = "opacity",
      rb = "height",
      Yd = "moveTo",
      ne = "compile",
      oe = "replace",
      Ad = "",
      Bd = "",
      fa = "Left",
      ga = "Top",
      L = "Width",
      ba = "Height",
      G = "Owidth",
      U = "Oheight",
      Cc = "Hint",
      sb = "ZImage",
      Pc = "S",
      Qc = "W",
      Rc = "V",
      jc = "I",
      p = "anied",
      Q = "aniN",
      I = "aniType",
      H = "aniFloor",
      w = "aniW",
      La = "Src",
      Vd = {},
      Gc = "HLeft",
      Hc = "HTop",
      Oa = "HWidth",
      gc = "HHeight",
      td = "retitle",
      xc = "readyScroll",
      kb = "moveMouse",
      vc = "moveScroll",
      Ja = "endScroll",
      uc = "pressScroll",
      zd, A = "",
      T = -1,
      la = -1,
      Bb = "",
      Qa, Sc = -1;
  Ra = -1;
  var g = "{ntZ}",
      ie = ["<br>", "<br/>", "<BR>", "<BR/>", "</p>", "</P>"],
      Ta, fb, Wc, C, wa, kc, Xc, lc, Yc, Zc, m, mc, $c, ma, Cb, nc, pc, oc, N, Db, Eb, Z, ad, bd, P, q, $, M, ta, ua, gb, Fb, cd, ea, xa, hb, Gb, Ua, na, Hb, Ib, ib, qc, Kb, Lb, Jb, aa, va, dd, Va, tb, ub, vb, wb;
  zd = function() {
    innerHTML = "innerHTML";
    Wc = "event";
    C = "(" + Wc + ")";
    wa = "document";
    kc = "body";
    Xc = "location";
    lc = "focus";
    Yc = "setTimeout";
    Zc = "clearTimeout";
    m = "indexOf";
    mc = "resizeTo";
    $c = "resizeBy";
    ma = "style";
    Cb = "zIndex";
    nc = "target";
    oc = "pointer";
    pc = "cursor";
    N = "hash";
    Db = "clientX";
    Eb = "clientY";
    Z = "scrollLeft";
    ad = "scrollTop";
    bd = "readyState";
    P = window;
    q = P[wa];
    $ = q[kc];
    M = P[Xc];
    ta = P[Yc];
    ua = P[Zc];
    gb = "onloadFunction";
    Fb = "sizingSecond";
    cd = "title";
    ea = "scrollWidth";
    xa = "scrollHeight";
    hb = "clientWidth";
    Gb = "clientHeight";
    Ua = "showElement";
    na = "scrollbarElement";
    Hb = "showScroll";
    Ib = "startAnimation";
    Jb = "AS";
    aa = "WV";
    va = "A";
    dd = Jb + aa;
    Va = "resizing";
    viewOrder = 0;
    viewOrderSet = {};
    tb = "aniNv";
    ub = "aniFloorv";
    vb = "aniWv";
    wb = "aniTypev";
    autoScrollS = "autoScroll"
  };
  zd();
  sendObjAttribValue = function() {
    var a = arguments,
        b = a[0],
        c;
    for (c = 1; c < a.length; c += 2) b[a[c]] = a[c + 1]
  };
  sendObjAttribValue(Vd, va, "\uc601\uc0c1", Pc, "\ud398\uc774\uc9c0\uc601\uc0c1", Qc, "\uac00\ub85c\ub098\uc5f4", Rc, "\uc138\ub85c\ub098\uc5f4");
  var we = O("map", "{apO}"),
      Ab = O("a", "{aO}"),
      V = "{iv}",
      ca = O("div", V),
      xe = O("script", ""),
      sd = "{viewImageRecallSet}",
      ye = O("html", ""),
      ze = O("head", ""),
      Ae = O("title", ""),
      Be = O("b", ""),
      Ce = O("marquee", "{q}"),
      De = O(kc, "{od}"),
      je = O("table", "{leO}"),
      Mc = O("tr", "{trO}"),
      Ba = "{td}",
      Wa = O("td", Ba),
      gd = "{ols}",
      Id = "colspan=" + gd + " ",
      W = "{idS}",
      Ka = 'id="' + W + '" ',
      Ia = "{hStr}",
      Ac = "width=" + Ia + " ",
      Aa = "{htStr}",
      ra = rb + "=" + Aa + " ",
      wc = Ac + ra,
      n = "{s}",
      t = ma + '="' + n + '" ',
      ia = "{geW}",
      ja = "{geH}",
      sa = f(wc, Ia, ia, Aa, ja);
  sa = f("<img {gO} />", "{gO}", 'border=0 src="{sr}" ' + sa + "{gD}");
  var ya = f(ca, V, t),
      Nc = f(ca, V, Ka + t),
      od = f(Mc, "{trO}", ""),
      fd = f(Mc, "{trO}", ra),
      Hd = f(Wa, Ba, "");
  Mc = f(Wa, Ba, Ac + t);
  var qe = f(Wa, Ba, Ac),
      Od = pc + ":" + oc + "; ",
      x = "{hSty}";
  ra = "width:" + x + "px; ";
  var y = "{htSty}",
      db = rb + ":" + y + "px; ",
      za = f("overflow:{rf}; " + ra + db, "{rf}", "hidden"),
      Ld = f("overflow:{rf}; " + ra + db, "{rf}", "auto"),
      Tb = "{ftS}",
      Ub = "{pS}",
      zc = "position:absolute; " + ("left:" + Tb + "px; " + ("top:" + Ub + "px; ")),
      oa = f(zc, Tb, 0, Ub, 0),
      Xa = "{x}",
      mb = "z-index:" + Xa + "; ",
      Ca = "{o}",
      Da = "{htC}",
      Ea = "{mm}",
      Fa = "{l}",
      Ga = "{tClipP}",
      Ha = "{pClipP}";
  ra = "clip:rect(" + Ca + "px, " + Da + "px, " + Ea + "px, " + Fa + "px); " + f(zc, Tb, Ga, Ub, Ha);
  var Lc = "{kg}",
      xd = "background-color:" + Lc + "; ",
      Vb = "{co}",
      Bc = "color:" + Vb + "; ",
      Sd = "font-size:9pt; ",
      qa = "{nc}",
      cb = 'onclick="' + qa + '" ',
      Ob = "{wn}",
      tc = 'onmousedown="' + Ob + '" ',
      kd = "{a}",
      Md = 'ondrag="' + kd + '" ' + (q.all ? "" : 'ondragstart="return false;" '),
      ld = "{end}",
      Nd = 'ondragend="' + ld + '" ',
      id = "{emo}",
      Jd = 'onmousemove="' + id + '" ',
      lb = "{up}",
      Nb = 'onmouseup="' + lb + '" ',
      jd = "{ns}",
      Kd = 'onscroll="' + jd + '"',
      J = "{Hi}";
  db = "waitHint(" + J + ");";
  var pa = "{mN}",
      Kc = "waitZoom(" + pa + ");",
      Wb = "{showString}",
      Ee = f("<area {eaO} />", "{eaO}", 'shape="{sh}" coords="{eaL},{eaT},{eaR},{eaB}" href="{hr}" ' + Nb, "{sh}", "rect", "{hr}", "#H" + J, lb, db),
      R = "{UR}",
      Pd = f(sa, "{gD}", "", "{sr}", R),
      ke = f(sa, "{gD}", t, n, ra, "{sr}", R),
      Td = f(Ab, "{aO}", 'href="{hr}" ' + cb, "{hr}", "#H" + J, qa, db);
  db = f(Ab, "{aO}", 'href="{hr}" ' + cb, "{hr}", "#H" + J + "Z" + pa, qa, Kc);
  var hd = f(sa, "{gD}", t, n, ra, "{sr}", R),
      fe = f(db, pa, 0, g, sa, "{gD}", t, n, ra, "{sr}", R),
      qb = "{IL}",
      Qb = "{v}",
      Ya = yc + ":Alpha(" + nd + "=" + qb + "); " + nd + ":" + Qb + "; ",
      Fe = f(Nc, W, "backStyle", n, "{kT}{Si}" + xd, Lc, "#222222", g, f(sa, "{gD}", 'usemap="#{ema}" ', "{sr}", R, "{ema}", "summeryMap_1") + f(ya, n, "{kT}", g, Nc, W, "screenAlpha", n, za + Ya + xd, x, 1, y, 1, Lc, "black", g, "") + f(Nc, W, "returnSpace", n, "{kT}", g, "") + f(Nc, W, "ZoomSpace", n, "{kT}" + mb, Xa, 6, g, ""));
  sa = f(Ab, "{aO}", t + 'href="{hr}" ' + cb, "{hr}", "#");
  var Ud = f(Ab, "{aO}", 'href="{hr}" ' + cb + t, n, Bc, Vb, "lightgreen", "{hr}", "#H" + J + Wb),
      Ge = f(Ab, "{aO}", t + 'href="{hr}" ' + cb, "{hr}", "#H" + J + "Z" + pa, n, Bc, Vb, "lightgreen", qa, Kc),
      se = f(Ab, "{aO}", 'href="{hr}" ' + cb, "{hr}", "#H" + J + "Z" + pa, qa, Kc, g, pa + ")") + " ",
      te = "about:blank",
      Zd = "_blank",
      ud = "{wW}",
      vd = "{wH}",
      $d = f("directories,location,menubar,resizable/scrollbars/status,titlebar,toolbar,width=", ",", "=no,", "/", "=yes,") + ud + "," + rb + "=" + vd,
      ae = "{eNa}",
      ve = "http://club.cyworld.nate.com/club/board/image/imgbrd_viewurl.asp?image_url=" + ae,
      nb = "{dd}",
      ob = "{cin}",
      pb = "{leD}",
      Pb = f(je, "{leO}", "border=0 " + ("cellpadding=" + nb + " ") + ("cellspacing=" + ob + " ") + pb),
      qd = "{tl}",
      rd = "{geZ}",
      pd, md = "{geE}",
      Xd = f(Pb, pb, t, n, oa, nb, 5, ob, 0, g, od, g, Wa, Ba, Ka, W, "woutput", g, md) + f(je, "{leO}", t + 'bgcolor="{bg}" ', n, zc + mb, Tb, 5, Ub, 5, Xa, 5, "{bg}", "#550000", g, fd, Aa, 20, g, Mc, Ia, 40, n, Sd + "font-family:\ub3cb\uc6c0; ", g, Be, g, sa, n, Bc + "text-underline:none; ", Vb, "#ffffff", qa, "setTimeout(function(){window.close();},100)", g, "[\ub2eb\uae30]"),
      ha = f(ya, n, za + "position:relative; ");
  f(Ce, "{q}", wc + 'behavior="{be}" scrollamount={lla} scrolldelay={ld} direction="{ir}" loop={loo} ', Ia, "{onW}", Aa, "{nH}", "{be}", "alternate", "{ld}", 1E3, "{lla}", "{onA}", "{ir}", "left", "{loo}", -1, g, ha, x, "{neW}", y, "{neH}", g, "{il}");
  var re = f(Td, J, 0, g, md);
  imageSet = function() {
    var a, b, c, d = arguments,
        e, h, l, o, j;
    u = summeryWidth;
    D = summeryHeight;
    Mb = summeryImageSrc;
    Sb = screenOpacity;
    Za = summeryImageBottom;
    Rd = summeryPadding;
    da = linkImages;
    b = da[0] = {};
    b[fa] = 0;
    b[ga] = 0;
    b[L] = u;
    b[ba] = D;
    b[Cc] = "";
    b[G] = u;
    b[U] = D;
    b[Cc] = "";
    b[sb] = 0;
    bb = u < D ? k(u / 40) : k(D / 40);
    wd = u - bb - bb;
    Fc = D - bb - bb;
    for (a = 0; a < d[s];) {
      yd++;
      b = da[yd] = {};
      if (b[p] = (e = d[a][m]("*")) >= 0) {
        c = d[a];
        b[Q] = c[E](0, e);
        b[La] = c[E](e + 1, c[s]);
        c = b[Q];
        b[H] = (j = c[m]("/")) >= 0 ? k(c[E](j + 1, e)) : 1;
        j = j > 0 ? j : c[s];
        c = c[E](0, j);
        if (dd[m](c[E](0, 1)) >= 0) {
          b[I] = c[ic](0);
          c = c[E](1, c.length)
        } else b[I] = va;
        c = b[Q] = k(c[E](0, j));
        b[w] = k(c / b[H]);
        b[w] * b[H] < c && b[w]++
      } else {
        b[Q] = 0;
        b[La] = d[a]
      }
      c = d[a + 1];
      for (e = c[m]("//"); e > 0; e = c[m]("//", e + 2)) {
        if (e > 0) if (c[Rb](e - 1, 1) != ">") continue;
        h = c[s];
        for (o = 0; o < ie[s]; o++) if ((l = c[m](ie[o], e)) >= 0) if (l < h) h = l;
        l = c[m](")", e);
        o = c[s] - h;
        c = c[E](0, e) + f(Ge, J, yd, pa, k(c[E](e + 2, l)), g, c[E](e + 2, h)) + c[E](h, c[s]);
        e = c[s] - o
      }
      b[Cc] = c;
      b[fa] = d[a + 2];
      b[ga] = d[a + 3];
      b[L] = d[a + 4];
      b[ba] = d[a + 5];
      b[G] = ge;
      b[U] = he;
      a += 6;
      if (a < d[s]) if (!isNaN(d[a])) {
        ge = b[G] = d[a];
        he = b[U] = d[a + 1];
        a += 2
      }
      for (b[sb] = 0; !isNaN(d[a]);) {
        if (d[a][s] >= 0) break;
        if (!(c = b[sb])) c = b[sb] = [];
        c = c[c[s]] = {};
        c[Gc] = d[a];
        c[Hc] = d[a + 1];
        c[Oa] = d[a + 2];
        c[gc] = d[a + 3];
        a += 4
      }
    }
  };
  clearAutoScroll = function() {
    if (Lb) {
      ua(Lb);
      Lb = 0
    }
  };
  pressScroll = function(a) {
    var b, c;
    clearAutoScroll();
    Ta = 1;
    fb = 0;
    b = q.all[Ua];
    c = q.all[na];
    b[ma][Cb] = 1;
    ib = a[Db];
    qc = a[Eb];
    Kb = c[Z]
  };
  readyScroll = function(a) {
    var b, c;
    clearAutoScroll();
    Ta = 2;
    fb = 0;
    b = q.all[Ua];
    c = q.all[na];
    b[ma][Cb] = 1;
    ib = a[Db];
    qc = a[Eb];
    Kb = c[Z]
  };
  moveMouse = function(a) {
    var b;
    if (Ta) {
      if (a[nc]) a[nc][ma][pc] = oc;
      fb |= ib != (b = a[Db]) || qc != a[Eb];
      if (Ta == 1) endScroll(a);
      else {
        a = q.all[na];
        b = Jb[m](aniTypev) >= 0 ? Kb + (ib - b) / 40 * a[hb] : Kb + ib - b;
        if (b < 0) b = 0;
        if (b > a[ea] - a[hb]) b = a[ea] - a[hb];
        a[Z] = b
      }
    }
  };
  moveScroll = function() {
    var a, b;
    fb = 1;
    a = q.all[Hb];
    b = q.all[na];
    if (Jb[m](aniTypev) >= 0) {
      b = parseInt(b[Z] / b[ea] * (aniNv + 1));
      if (b >= aniNv) b = aniNv - 1;
      a[Z] = b % aniWv * a[ea] / aniWv;
      a[ad] = parseInt(b / aniWv) * a[xa] / aniFloorv
    } else a[Z] = b[Z]
  };
  endScroll = function() {
    q.all[Ua][ma][Cb] = 3;
    if (!fb && Ta == 2) M[N] = "#H0";
    autoScroll(Ib);
    Ta = 0
  };
  autoScroll = function(a) {
    var b;
    clearAutoScroll();
    if (a != Ib) {
      if (aniTypev != va) return;
      if (!(a = q.all[na])) return;
      b = parseInt(a[Z] / a[ea] * (aniNv + 1));
      if (b >= aniNv) b = aniNv - 1;
      b++;
      if (b == aniNv) b = 0;
      a[Z] = parseInt(b * a[ea] / (aniNv + 1)) + 1
    }
    Lb = ta(autoScroll, 1E3)
  };
  sizingSecond = function() {
    $[Gb] && $[Gb] < $[xa] && P[$c]($[ea] - $[hb], $[xa] - $[Gb])
  };
  pd = f(ye, g, f(ze, g, Ae, g, qd) + f(De, "{od}", 'onunload="{nu}" onload="{onl}" ', "{nu}", "try{if(opener.viWb)opener.viWb=null;}catch(err){}", "{onl}", "if(!" + gb + ")" + gb + "=function(){};", g, rd + xe, g, " var " + gb + "=0," + Fb + "," + Va + ", " + xc + "," + kb + "," + vc + "," + Ja + "," + uc + "," + autoScrollS + " , waitHint=function(){} ;function initScript(){var " +
  function() {
    var a = pe + "",
        b, c;
    b = a[m]("{");
    b = a[m]("(", b);
    c = a[m](")", b);
    return a.substring(b + 1, c)
  }() + ";sendObjAttribValue=" + sendObjAttribValue + ";reValue=" + zd + ";reValue();" + xc + "=" + readyScroll + ";" + kb + "=" + moveMouse + ";" + vc + "=" + moveScroll + ";" + Ja + "=" + endScroll + ";" + uc + "=" + pressScroll + ";clearAutoScroll=" + clearAutoScroll + ";" + autoScrollS + "=" + autoScroll + ";" + sd + Fb + "=" + sizingSecond + ";" + Va + "=" +
  function(a, b) {
    if ("interactiveloading" [m](q[bd]) >= 0) ta(Va + "(" + a + "," + b + ");", 200);
    else {
      P[mc](a, b);
      onloadFunction ? ta(gb + "();" + Fb + "();", 100) : ta(sizingSecond, 100)
    }
  } + ";" + td + "=" +
  function(a) {
    q[cd] = a
  } + ";try{ if (!viewImageRecall) opener.viewImageRecall(window); else viewImageRecall(window); } catch(err) {alert('\uc8c4\uc1a1\ud569\ub2c8\ub2e4. \uc5d0\ub7ec\uc5d0\uc694.');}} initScript(); "));
  imageInit = function() {
    var a, b, c, d, e, h = M[N];
    if (!Za) {
      a = Mb;
      Za = a[E](0, a[m]("=") + 1)
    }
    Yb = D >= 300 ? D + 200 : 500;
    b = f(za, x, u, y, Yb);
    c = oa;
    e = "";
    for (a = 1; a < da[s]; a++) {
      d = da[a];
      e += f(Ee, "{eaL}", d[fa], "{eaT}", d[ga], "{eaR}", d[fa] + d[L], "{eaB}", d[ga] + d[ba], J, a)
    }
    if (h[m](jc) >= 0 || h[m](va) >= 0 || h[m](Pc) >= 0 || h[m](Qc) >= 0 || h[m](Rc) >= 0) {
      Tc = Uc = argumentReceiver;
      Oc()
    } else {
      Gd(f(we, "{apO}", 'name="{meS}" ', "{meS}", "summeryMap_1", g, e));
      Gd(f(Fe, "{kT}", c, "{Si}", b, R, Mb, ia, u, ja, D, qb, Sb, Qb, Sb / 100));
      $a = q.all.screenAlpha[ma];
      Xb = q.all.backStyle;
      Qd = q.all.returnSpace;
      rc = q.all.ZoomSpace;
      B = 0;
      Tc();
      Oc();
      if (q.all && "attachEvent" in q) q.attachEvent("onpropertychange", eb);
      else P.onhashchange = eb
    }
  };
  waitHint = function(a) {
    A = M[N] = "#H" + a;
    hc()
  };
  waitZoom = function(a) {
    A = M[N] = "#H" + B + "Z" + a;
    hc()
  };
  viewImageRecall = function(a) {
    viWb = a;
    if (viewOrder) {
      viewOrder = 0;
      sendObjAttribValue(viWb, tb, viewOrderSet[tb], ub, viewOrderSet[ub], vb, viewOrderSet[vb], wb, viewOrderSet[wb]);
      viWb[wa].all.woutput[innerHTML] = viewOrderSet[innerHTML];
      viWb[autoScrollS]()
    }
  };
  waitSummery = function(a, b) {
    A = M[N] = "#H" + a + b;
    hc()
  };
  Cd = function(a) {
    a = da[a];
    ue(a[La], a[G], a[U])
  };
  Dd = function(a) {
    var b = da[a],
        c = b[La],
        d = b[G],
        e = b[U];
    a = b[w];
    var h = b[H],
        l = b[Q];
    b = b[I];
    var o, j = k(e / h),
        r, z, v;
    j * h < e && j++;
    r = "";
    if (aa[m](b) >= 0) {
      for (o = 0; o < h; o++) {
        z = o * d;
        v = k(o * e / h);
        r += f(ke, Ca, v, Da, (o + 1) * a > l ? k(d * (l - o * a) / a) : d, Ea, v + j, Fa, 0, Ha, -v, Ga, z)
      }
      viewOrderSet[innerHTML] = f(ha, x, k(d / a * (aa[m](b) >= 0 ? l : a)), y, k(j * (aa[m](b) >= 0 ? 1 : h)), g, r, ia, d, ja, e, R, (c[Rb](0, 7) != "http://" ? Za : "") + c)
    } else {
      r += f(ke, Ca, 0, Da, d, Ea, e, Fa, 0, Ga, 0, Ha, 0);
      viewOrderSet[innerHTML] = f(ha, x, d / a, y, j + sc, g, f(ca, V, t + tc + Jd + Nb, Ob, uc + C + ";", id, kb + C + ";", lb, Ja + C + ";", n, oa + mb, g, ca, V, Ka + Kd + t, W, na, jd, vc + C + ";", n, Ld, Xa, "2", x, k(d / a), y, j + sc, g, ha, x, k(d / a * l), y, j, g, Pb, nb, 0, ob, 0, pb, wc, Ia, k(d / a * l), Aa, j, g, "") + f(ca, V, t + Ka + tc + Nb + Md + Nd, Ob, xc + C + ";", lb, Ja + C + ";", kd, kb + C + ";", ld, Ja + C + ";", W, Ua, n, oa + mb + Od, g, ca, V, t + Ka, W, Hb, n, za, Xa, "3", x, d / a, y, j, g, f(ha, x, k(d / a * (aa[m](b) >= 0 ? l : a)), y, k(j * (aa[m](b) >= 0 ? 1 : h)), g, r, ia, d, ja, e), R, (c[Rb](0, 7) != "http://" ? Za : "") + c))
    }
    sendObjAttribValue(viewOrderSet, tb, l, ub, h, vb, a, wb, b);
    viewOrder = 1;
    c = Wd(c, d / a, j);
    if (viWb) {
      viewOrder = 0;
      sendObjAttribValue(viWb, tb, l, ub, h, vb, a, wb, b);
      c[innerHTML] = viewOrderSet[innerHTML];
      viWb[autoScrollS]()
    }
  };
  resizing = function() {
    P[mc]($[ea], $[xa])
  }
}
scriptInit();

...

4)
.. 부분부분을 설명해보자면


function argumentReceiver()


참조(?)될 값들을 받을 널함수입니다.
var 변수로 넘기기 위한 도구(?)로만 사용되죠.

이 함수가 함수 내에 있으면 널함수로 인정되어 이 함수 자체가 사라지게 마련입니다만,
그걸 막기 위해 외부 함수로 아얘 빼돌렸(?)습니다.


function scriptInit()


전체적 초기화 함수입니다.

이 함수 이전에 var 부분이 있는 것은
외부에서 사용해야할 변수들이 많아서죠.

.. 줄이고 줄여서 간신히 저정도 남겨놓은 겁니다. 


  , imageMaximum=16383, scrollBarHeight=22


scrollBar 를 측정하는 것이 가능하긴 합니다만,
그냥 22px 로 고정했구요,

imageMaximum 부분은
이미지를 웹페이지에 표시할 때 표준(?)으로 할 최대값을 지정한겁니다.

참고로,
image 크기는 저 값을 한계로 잡는다고 하더라도,
저런 이미지가 브라우져 내에서는 여러개 표시 가능합니다.


  , length='length'
  , substring='substring', substr='substr', write='write', charAt='charAt'


이런 형태의 스트링은 좀 이상해보입니다만,
최적화를 대비한 스트링 변수입니다. (..라고는 하지만, 상수형태의 사용..)

코드 최적화하면 한자, 또는 두자까지 줄어들어
.연계변수명 -> .[명]
형식으로 적용이 가능해지죠. ( 그래서, 넉자 이상의 경우에만 적용시켰다고 보면 됩니다. )


reValue=function ()


새창.. 그러니까, 서브로 만들어(?)올려야 할 창에
함수나 변수값을 초기화하기위한 함수입니다.

내부에서도 쓰기 위해 지정을 하기도 합니다만,
일단 전달용 함수로 보시면 될겁니다.


function onpropertyHash()


hash 값의 변동(주소창에 # 이후 붙는 값이 바뀔 때..) 이벤트를 받는 함수입니다.


function hashing()


hash 변동을 처리할 부분입니다.
.. 살짝(?) 복잡하네요.


sendObjAttribValue=function ()


object 를 직접 선언해도 되긴 합니다만,
object 에 선언값을 부여하고 싶을 때라고 생각해 만들었습니다. 

코드 길이를 줄이려고 만든건데,
.. 나름인 것 같습니다.


function replaceAppendAll()


스트링 내에 검색값과 치환값을 적용시키기 위한 함수입니다.
.. 뭐, .replace 함수가 자주 쓰이긴 하니까요.

치환값으로 {치환대표값} 씨리즈를 만들어서 많이 적용했습니다.
나중에 {치환대표값} 씨리즈들은 최종 최적화 이전에 글자수 줄이기를 실행했습니다.


function setTagString(tagNameZone, tagStringZoneName)


부분적으로, 따로(?) 태그 만들기 씨리즈입니다.

스트링에서 바로 전환해서 쓸 수 있다면 더 좋겠습니다만,
그정도의 여유는 갖지 못했습니다.


=function(evt)


Firefox 와 IE 가 공통적으로 받을 수 있는 이벤트 형식입니다.


on---=xxx(event)


이런 형식의 전송이 있으면 Firefox 든 IE 든 유사 방법으로 처리 가능하거든요.
(물론, 각각의 특성에 다시 맞춰줘야하긴 합니다..)

.. 뭐, 덕분에 태그 안쪽이 좀 지저분(?)해졌죠.


function animationVarReceiver()
function animationVarString()


새창에 변수 넘기기 위한 가상함수와 함수입니다.
초기에 나왔던 argumentReceiver() 와 연계되어있죠.

Regular Expression ( IE 기준 RegExp )를 알았다면 함수가 더 쉬웠을텐데요.. 좀 아쉽긴 하네요.
(뭐.. 언젠가(?) 고칠 생각은 하겟죠.)


  resizingNewWindow = function(ww, hh) 


창 크기를 조정하려는 함수입니다만, 
될 때고 있고, 안될 때도 있더라구요..
.. 로딩 속도의 문제인가..라는 생각만 해봅니다.


  htmlBODY


새창에 올릴 html 스트링입니다.
줄인다고 줄였는데, 많이 길군요..


  function showHint()


이미지와 글귀를 보여줄 모듈입니다.
잡다한 걸 너무 쑤셔넣어서(?), 복잡하네요.


  imageInit = function()


이미지 초기화 함수입니다.
summery 부분 빼고는 순서대로 들어가있습니다.


  waitHint = function(v)
  waitZoom = function(v)


hash 값만 바꾸는 함수들입니다.
그 이후(?)는 onpropertyHash() 가 알아서 하는거죠.


  function blankSelf()


새창이 아닌, 현재창에 적용시키기 위한 함수입니다.

hash 값을 받으면 새창을 띄워야할 때도 있긴 한데요,
그걸 방지하려고 만든 함수이기도 하구요,

hash 포함한 복사값을 이중새창 띄우지 않기 위해 만든 함수이기도 합니다.

참고로,
싱글상태에서는 새창에 주소값(hash 포함)을 전송시키지 않습니다.
기존에 가지고 있던 창 내의 함수를 최대한 활용하고 싶어서요.


  function blankOpen()


새창을 띄우는 함수입니다.
뭐.. 여러가지 부분을 포함하고 있죠.


  viewImageRecall = function()


새창이 띄워졌다고 알렸을 때
callBack 될 함수입니다.

사실, 이 함수가 적용되어야할 부분이 하나 더 있는데
OTL.. 적용 못 시킨 것 같네요. 


  function viewImage() 
  function viewImage2()


이미지를 새창에 띄우는 함수 두가지입니다.

하나는 일반 이미지를,
또 하나는 파노라마( 또는 동영상화 )된 이미지를 보여줍니다.


  function showZoom()


부분줌업에 대한 함수입니다.

여기에 좀 정성(?)이 들어간게요,
파노라마의 방향에 따라, 그리고 갯수에 따라
어떻게 보여줘야할지 순서 잡기가 힘들더라구요..

뭐, 나름 해결했습니다.

...

5)
.. 기술적으로는

hash 값 받는 방법,
이미지 zoom 처리에 관련해 순서배열,
hash 처리를 최대한 간략화,
새창에 html 기록하기,
새창에 함수내 함수 전송하면서 함수내 변수 전달하기,
최적화를 통해 자주 쓰는 string, object 내 값 이름 최적화하기,
tag 를 앞부터 적어서 기차놀이(트레일링?) 시키기,
최대크기 이미지를 지정해, 이미지를 확대할 때 안보이지 않도록 처리,
(CSS 의 zoom 을 사용하지 않았습니다 = =;.. )

..등등의 기법(?)을

검색도 하고
만들기도 해서 적용했습니다.

...

6)
간신히 코멘트를 달은 셈 칠 수 있는거군요.

내용이 길고,
일반적으로 사용할 만한 부분이 없는 게
이 코멘트들의 허점입니다만..

.. 뭐, 일단 적어는 놨으니
나중에 조금 더 최적화할 날이 오겠죠..

easyBow killofki@.

Posted by killofki
,