//********************************************************//
// À¯Àú ÀÎÅÍÆäÀ̽º °ü·Ã ÇÔ¼ö
// ÀÛ¼ºÀÏ : 2007-01-27
//********************************************************//
// IE BackgroundImage Flicker ¹ö±× ó¸®
if(Prototype.Browser.IE) document.execCommand("BackgroundImageCache",false,true);
var IE6 = navigator.appVersion.toLowerCase().indexOf("msie 6.0") > 0 ? true : false;
var SP1 = IE6 > 0 ? (navigator.appMinorVersion.toLowerCase().indexOf("sp1") > 0 ? true : false) : false;
//////////////////////////////////////////////
// ÆäÀÌÁö »çÀÌÁî ±¸Çϱâ
//////////////////////////////////////////////
var getPageSize = function(){
var xScroll, yScroll;
if (window.innerHeight && window.scrollMaxY) {
xScroll = document.body.scrollWidth;
yScroll = window.innerHeight + window.scrollMaxY;
} else if (document.body.scrollHeight > document.body.offsetHeight){
xScroll = document.body.scrollWidth;
yScroll = document.body.scrollHeight;
} else {
xScroll = document.body.offsetWidth;
yScroll = document.body.offsetHeight;
}
var windowWidth, windowHeight;
if (self.innerHeight) {
windowWidth = self.innerWidth;
windowHeight = self.innerHeight;
} else if (document.documentElement && document.documentElement.clientHeight) {
windowWidth = document.documentElement.clientWidth;
windowHeight = document.documentElement.clientHeight;
} else if (document.body) {
windowWidth = document.body.clientWidth;
windowHeight = document.body.clientHeight;
}
if(yScroll < windowHeight){
pageHeight = windowHeight;
} else {
pageHeight = yScroll;
}
if(xScroll < windowWidth){
pageWidth = windowWidth;
} else {
pageWidth = xScroll;
}
arrayPageSize = new Array(pageWidth,pageHeight,windowWidth,windowHeight);
return arrayPageSize;
};
///////////////////////////////////////////////
// À©µµ¿ì °¡½ÃÈ¸é ³ôÀ̰ª ±¸Çϱâ
///////////////////////////////////////////////
var getPageScroll = function(){
var yScroll;
if (self.pageYOffset) {
yScroll = self.pageYOffset;
} else if (document.documentElement && document.documentElement.scrollTop){
yScroll = document.documentElement.scrollTop;
} else if (document.body) {
yScroll = document.body.scrollTop;
}
arrayPageScroll = new Array('',yScroll);
return arrayPageScroll;
};
///////////////////////////////////////////////////////////////////
// ¿À¹ö·¹ÀÌȸéÀ» ±¸¼ºÇÏ¿© µð½ºÇ÷¹ÀÌ ÇÔ
///////////////////////////////////////////////////////////////////
var Overlay = {
smooth : true,
opacity : 0,
interval : 0,
// ¿À¹ö·¹ÀÌ ·¹À̾ ÃʱâÈÇϰí ȸéÀ» ¶ç¿î´Ù.
show : function(zIndex, color, opacity) {
//$$("html")[0].setStyle({overflow:"hidden"});
var arrayPageSize = getPageSize();
var elementHegiht;
if(IE6 && SP1) elementHegiht = arrayPageSize[1]+"px";
else elementHegiht = arrayPageSize[1] > window.screen.availHeight-100 ? arrayPageSize[1]+"px" : '100%';
this.opacity = (opacity||50);
this.element = new Element("div",{id:'popupOverlay'});
this.element.setStyle({position : "absolute", top : "0px", left : "0px", width : "100%", height : elementHegiht, backgroundColor : (color||"#000000"), zIndex : zIndex});
this.element.setOpacity((this.smooth?0:(this.opacity)/100));
this.currentOpacity = 0;
$$("body")[0].appendChild(this.element);
if(this.smooth) this.interval = setInterval(this.smoothly.bind(this), 30);
this.mouseDownHandler = this.doMouseDown.bindAsEventListener(this);
this.mouseStopHandler = this.doMouseStop.bindAsEventListener(this);
this.element.observe("mousedown",this.mouseDownHandler);
if(IE6) selectboxHidden("popupOverlay");
selectboxHidden("popupOverlay","OBJECT");
},
// ¿À¹ö·¹À̸¦ ºÎµå·´°Ô ¶ç¿î´Ù
smoothly : function() {
if(this.currentOpacity < this.opacity-1) {
var thisOpacity = Math.ceil(this.currentOpacity+(this.opacity-this.currentOpacity)/4);
this.currentOpacity+=thisOpacity;
this.element.setOpacity(thisOpacity/100);
} else {
this.element.setOpacity(this.opacity/100);
clearInterval(this.interval);
}
},
// ¿À¹ö·¹À̸¦ »èÁ¦ÇÑ´Ù.
hide : function() {
//var objHTML = $$("html")[0].setStyle({overflowX:"auto",overflowY:"scroll"});
// ÆË¾÷À» µå·¹±× Çϴµ¿¾È ¹®¼ÀÇ ¼¿·ºÆ®¿Í µå·¹±×¸¦ ¸·´Â´Ù (IE Àü¿ë)
this.doMouseStop();
$("popupOverlay").remove();
},
doMouseDown : function() {
document.observe('selectstart', this.mouseDragHandler);
document.observe('dragstart', this.mouseDragHandler);
$("popupOverlay").observe("mouseup",this.mouseStopHandler);
},
doMouseStop : function() {
document.stopObserving('selectstart', this.mouseDragHandler);
document.stopObserving('dragstart', this.mouseDragHandler);
$("popupOverlay").stopObserving("mousedown",this.mouseDownHandler);
$("popupOverlay").stopObserving("mouseup",this.mouseStopHandler);
},
mouseDragHandler : function(e) {
Event.stop(e);
}
};
///////////////////////////////////////////////////////////////////////////////////////
// ·¹À̾ Á¦¾îÇÑ´Ù.
///////////////////////////////////////////////////////////////////////////////////////
var Layer = {
entry : $H(),
// »õ·Î¿î element ¸¦ µî·ÏÇÑ´Ù.
regist : function(elementName) {
if(!this.entry.get(elementName)) this.entry.set(elementName, new this.Element(elementName));
return this.entry.get(elementName);
},
// LayerInstance °´Ã¼¸¦ ¸®ÅÏÇÑ´Ù.
get : function(elementName) {
return this.entry.get(elementName);
},
// »õ·Î¿î ÆË¾÷À» »ý¼ºÇÑ´Ù.
tween : function(elementName, options) {
var instance = this.regist(elementName);
instance.tween(options);
},
// ·¹À̾ °¡·Î·Î FlipÇÑ´Ù.
flipW : function(elementName, options) {
var instance = this.regist(elementName);
var element = $(elementName);
options = options||{};
options.width = element.offsetWidth > 0 ? 0: !options.width ?element.scrollWidth : options.width;
instance.tween(options);
},
// ·¹À̾ ¼¼·Î·Î FlipÇÑ´Ù.
flipH : function(elementName, options) {
var instance = this.regist(elementName);
var element = $(elementName);
options = options||{};
options.height = element.offsetHeight > 0 ? 0: !options.height ?element.scrollHeight : options.height;
instance.tween(options);
},
// ·¹À̾ À©µµ¿ìÀÇ ½ºÅ©·ÑÀ» µû¶ó ¿òÁ÷ÀδÙ.
scroll : function(elementName, minTop, maxTop, options) {
var instance = this.regist(elementName);
var element = $(elementName);
var scrollHandler = function(){
var currentY = element.offsetTop;
var fromY = currentY - minTop;
var maxY = document.body.scrollHeight - element.scrollHeight - maxTop;
var toY = document.viewport.getScrollOffsets().top + minTop;
options = options||{};
options.top = toY > maxY ? maxY < minTop ? minTop : maxY : toY < minTop ? minTop : toY;
instance.tween(options);
};
scrollHandler();
Event.observe(window, 'scroll', scrollHandler);
},
update : function(elementName,url,parameter,onSuccess) {
var instance = this.regist(elementName);
var element = $(elementName);
Layer.startLoad(elementName);
new Ajax.Request(url,{
parameters : parameter, // Àü¼ÛÇÒ ÆÄ¶ó¸ÞÅÍ.
onSuccess : function(request) { // ÆäÀÌÁö ·Îµù ¼º°ø½Ã ó¸®
Layer.endLoad(elementName);
$(elementName).update(request.responseText);
//$(elementName).innerHTML = request.responseText;
},
onFailure: function(request) { // ¿¡·¯½Ã º¸¿©Á٠ȸé
Layer.endLoad(elementName);
trace(request.responseText);
alert("status : " + request.status + " Error");
}
});
},
startLoad : function(elementName) {
var element = $(elementName);
element.update("

");
},
endLoad : function(elementName) {
var element = $(elementName);
element.select("#divLoading").invoke("remove");
},
// ÁöÁ¤µÈ tween ¾×¼ÇÀ» ÁßÁöÇÑ´Ù.
stop : function(elementName) {
if(this.entry.get(elementName)) this.entry.get(elementName).stop();
},
// ÁöÁ¤µÈ tween ¾×¼ÇÀ» ÁßÁöÇÑ´Ù.
remove : function(elementName) {
this.entry.unset(elementName);
}
};
///////////////////////////////////////////////////////////////////////////////////////
// ¡Ø Layer ¸¦ ÅëÇØ¼ »ý¼ºÇÑ´Ù.
// ÁöÁ¤µÈ ·¹À̾ Á¦¾îÇÒ ¼ö Àִ Ŭ·¡½º¸¦ »ý¼ºÇÑ´Ù.
///////////////////////////////////////////////////////////////////////////////////////
Layer.Element = Class.create({
// Ŭ·¡½º »ý¼ºÀÚ ÇÔ¼ö
initialize : function(elementName) {
// ±âº» option °´Ã¼¸¦ »ý¼ºÇÑ´Ù.
this.options = {
top: NaN, left: NaN, width: NaN, height: NaN,
speed: 4, // Ŭ¼ö·Ï ´À·ÁÁü
timing: 50, // Ŭ¼ö·Ï ´À·ÁÁü
mode : "smooth", // smooth, regular, accel
onInitialize: function(){},
onComplete: function(){}
};
this.elementName = elementName;
this.element = $(elementName);
this.params = ["top","left","width","height"];
},
// ·¹À̾üÀÇ Å©±â/À§Ä¡¸¦ º¯°æÇÑ´Ù.
tween : function(options) {
Object.extend(this.options, options || {});
if(!isNaN(this.options.width) || !isNaN(this.options.height)) this.element.setStyle({overflow:"hidden"});
this.params = $A([]);
this.modeNum = $A([]);
this.currentNum = $A([]);
this.completeDone = 0;
$w('top left width height').each(function(param){
if(!isNaN(this.options[param])) {
var offset = eval("this.element.offset"+param.capitalize());
this.params.push(param);
this.currentNum.push(offset);
this.modeNum.push(offset < this.options[param] ? 1 : -1);
this.completeDone++;
}
}.bind(this));
this.beforeNum = this.currentNum.clone();
if (!this.interval) this.interval = setInterval(this.process.bind(this), this.options.timing);
},
// ·¹À̾ ¸ñÇ¥±îÁö ¸ð¼ÇÀ» ÃëÇϵµ·Ï °è¼Ó ½ÇÇàÇÑ´Ù.
process : function() {
var completeCheck = 0;
this.params.each(function(p,i){
var param = this.options[p];
switch(this.options.mode) {
case "regular" : this.currentNum[i]+= Math.ceil((param-(this.beforeNum[i]))/(this.options.speed*2))+this.modeNum[i]; break;
case "smooth" : this.currentNum[i]+= Math.ceil((param-this.currentNum[i])/this.options.speed)+this.modeNum[i]; break;
case "accel" : this.currentNum[i]+= Math.ceil((param-(this.beforeNum[i])-(param-this.currentNum[i]))/(this.options.speed/2))+this.modeNum[i]; break;
}
if (param * this.modeNum[i] <= this.currentNum[i] * this.modeNum[i]) {
this.currentNum[i] = param;
completeCheck++;
}
this.element.style[this.params[i]] = this.currentNum[i]+"px";
}.bind(this));
if(this.completeDone <= completeCheck) this.complete();
},
// ÁöÁ¤µÈ tween ¾×¼ÇÀÌ ¿Ï·áµÇ¸é ¾×¼ÇÀ» ÁßÁöÇϰí onComplete ÇÔ¼ö¸¦ ½ÇÇàÇÑ´Ù.
complete : function() {
var onComplete = this.options.onComplete.bind(this);
this.stop();
onComplete();
},
// ÁöÁ¤µÈ tween ¾×¼ÇÀ» ÁßÁöÇÑ´Ù.
stop : function() {
if (this.interval) clearInterval(this.interval);
delete this.interval;
//trace(this.elementName + " complete");
//this.initialize(this.elementName);
Layer.remove(this.elementName);
}
});
///////////////////////////////////////////////////////////////////////////////////////
// ¿ÜºÎ ÆäÀÌÁö¸¦ ºÒ·¯ ·¹ÀÌ¾î ÆË¾÷À¸·Î ¶ç¿ì°í Á¦¾îÇÑ´Ù.
///////////////////////////////////////////////////////////////////////////////////////
var Popup = {
entry : $H(),
zIndex : 1001,
overlay : false,
// »õ·Î¿î element ¸¦ µî·ÏÇÑ´Ù.
regist : function(elementName) {
if(!this.entry.get(elementName)) this.entry.set(elementName, new this.Element(elementName));
return this.entry.get(elementName);
},
// »õ·Î¿î ÆË¾÷À» »ý¼ºÇÑ´Ù.
open : function(elementName, url, options) {
var instance = this.regist(elementName);
instance.create(url, options);
if(IE6) Event.observe($(elementName),"propertychange",function() {selectboxHidden(elementName)});
this.zIndex++;
return {
overlay : function() {
if(!this.overlay) Overlay.show(this.zIndex-1);
this.overlay = true;
}.bind(this)
};
},
// PopupInstance °´Ã¼¸¦ ¸®ÅÏÇÑ´Ù.
get : function(elementName) {
return this.entry.get(elementName);
},
// µå·¡±× ¼Ó¼ºÀ» ºÎ¿©ÇÑ´Ù.
startDrag : function(elementName) {
this.entry.get(elementName).startDrag();
},
// µå·¡±× ¼Ó¼ºÀ» »èÁ¦ÇÑ´Ù.
stopDrag : function(elementName) {
this.entry.get(elementName).stopDrag();
},
// ÆË¾÷À» »èÁ¦ÇÑ´Ù.
close : function(elementName) {
if(this.entry.get(elementName)) {
this.entry.get(elementName).close();
this.entry.unset(elementName);
if(IE6) selectboxVisible("SELECT");
selectboxVisible("OBJECT");
if (this.overlay) { Overlay.hide(); this.overlay = false; }
}
},
// ¸ðµç ÆË¾÷À» »èÁ¦ÇÑ´Ù.
closeAll : function() {
this.entry.each(function(pair) { this.close(pair.key); }.bind(this));
}
};
///////////////////////////////////////////////////////////////////////////////////////
// ¡Ø Popup À» ÅëÇØ¼ »ý¼ºÇÑ´Ù.
// ¿ÜºÎÆäÀÌÁö¸¦ Ajax.Request Ŭ·¡½º¸¦ ÀÌ¿ëÇØ ·¹ÀÌ¾î ÆË¾÷À¸·Î ¶ç¿î´Ù.
///////////////////////////////////////////////////////////////////////////////////////
Popup.Element = Class.create({
// Ŭ·¡½º »ý¼ºÀÚ ÇÔ¼ö
initialize: function(elementName) {
// ºñ¾îÀÖ´Â option °´Ã¼¸¦ »ý¼ºÇÑ´Ù.
this.options = {
top: 0, left: 0, width: 0, height: 0,
onLoad: function(){},
onCloseBefore:function(){},
onClose: function(){}
};
this.elementName = elementName;
this.element = ($(elementName) || elementName);
},
// ÆË¾÷À» »ý¼ºÇÑ´Ù.
create : function(url,options) {
this.url = url;
Object.extend(this.options, options || {});
if(typeof this.element != "object") {
this.element = new Element("div",{id:this.elementName});
document.body.appendChild(this.element);
}
new Ajax.Request(this.url,{
onSuccess : function(request) {
this.element.update(request.responseText);
var arrayPageSize = getPageSize();
var arrayPageScroll = getPageScroll();
var width = (this.options.width ? this.options.width : this.element.down().offsetWidth);
var height = (this.options.height ? this.options.height : this.element.down().offsetHeight);
var centerTop = (arrayPageScroll[1] + ((arrayPageSize[3] - height) / 2));
var top = (this.options.top ? this.options.top : centerTop > 0 ? centerTop : 10);
var centerLeft = (((arrayPageSize[0] - width) / 2));
var left = (this.options.left ? this.options.left : centerLeft > 0 ? centerLeft : 10);
this.element.setStyle({position:"absolute", display:"block", width:width+"px", height:height+"px",
top:(height > 0 ? top : 0)+"px", left:(width > 0 ? left : 0)+"px", zIndex:Popup.zIndex});
this.startDrag();
if(typeof this.options.onLoad == "function") this.options.onLoad();
}.bind(this),
onFailure : function(request) {
alert("status : " + request.status + " Error");
if(Popup.overlay) Overlay.hide();
Popup.overlay = true;
}
});
},
// ÇöÀç ÆË¾÷¿¡ µå·¡±× ¼Ó¼ºÀ» ºÎ¿©ÇÑ´Ù.
startDrag : function() {
this.draggableObj = new Draggable(this.elementName);
},
// ÇöÀç ÆË¾÷¿¡ µå·¡±× ¼Ó¼ºÀ» »èÁ¦ÇÑ´Ù.
stopDrag : function() {
this.draggableObj.stop();
},
// ÇöÀç ÆË¾÷À» »èÁ¦ÇÑ´Ù.
close : function() {
if(typeof this.options.onCloseBefore == "function") this.options.onCloseBefore();
this.element.remove();
if(typeof this.options.onClose == "function") this.options.onClose();
}
});
////////////////////////////////////////////////////////
// ÁöÁ¤µÈ DIV¿¡ Drag ¼Ó¼ºÀ» ºÎ¿©ÇÑ´Ù.
////////////////////////////////////////////////////////
var Draggable = Class.create({
// Ŭ·¡½º »ý¼ºÀÚ ÇÔ¼ö
initialize: function(element) {
this.element = $(element);
this.mouseDownHandler = this.doMouseDown.bindAsEventListener(this);
this.mouseMoveHandler = this.doMove.bindAsEventListener(this);
this.mouseStopHandler = this.doMoveStop.bindAsEventListener(this);
this.mouseDragHandler = this.doDrag;
this.element.observe('mousedown', this.mouseDownHandler);
},
// ÇØ´ç °´Ã¼ À§¿¡ ¸¶¿ì½º¸¦ Ŭ¸¯ÇÏ¸é µå·¡±× ¼Ó¼ºÀ» ½ÃÀÛÇÑ´Ù.
doMouseDown : function(e) {
var srcObj=(e.srcElement||e.target);
var nodeName = srcObj.nodeName.toUpperCase();
if(nodeName == "DIV" || nodeName == "INPUT" || nodeName == "SELECT"
|| nodeName == "OPTION" || nodeName == "BUTTON" || nodeName == "TEXTAREA") return;
var offset = Position.cumulativeOffset(this.element);
this.element._x = (e.pageX||e.clientX) - offset[0];
this.element._y = (e.pageY||e.clientY) - offset[1];
document.observe('mousemove', this.mouseMoveHandler);
document.observe('mouseup', this.mouseStopHandler);
document.observe('selectstart', this.mouseDragHandler);
document.observe('dragstart', this.mouseDragHandler);
this.element.style.zIndex = Popup.zIndex;
Popup.zIndex++;
},
// ÇØ´ç °´Ã¼ À§¿¡¼ ¸¶¿ì½º¸¦ ´©¸¥ »óÅ¿¡¼ À̵¿ÇÏ¸é ÆË¾÷À» ¸¶¿ì½ºÀÇ À§Ä¡·Î À̵¿½ÃŲ´Ù.
doMove : function(e) {
var arrayPageSize = getPageSize();
if((e.pageX||e.clientX)-this.element._x < 20) this.element.style.left = "0px";
else if(((e.pageX||e.clientX)-this.element._x)+this.element.offsetWidth > arrayPageSize[0]-20)
this.element.style.left = (arrayPageSize[0]-this.element.offsetWidth)+"px";
else this.element.style.left = (e.pageX||e.clientX)-this.element._x+"px";
if((e.pageY||e.clientY)-this.element._y < 20) this.element.style.top = "0px";
else if(((e.pageY||e.clientY)-this.element._y)+this.element.offsetHeight > arrayPageSize[1]-20)
this.element.style.top = (arrayPageSize[1]-this.element.offsetHeight)+"px";
else this.element.style.top = (e.pageY||e.clientY)-this.element._y+"px";
},
// ¸¶¿ì½º Ŭ¸¯À» ³õÀ¸¸é À̵¿ÇÏ´Â À̺¥Æ®¸¦ »èÁ¦ÇÑ´Ù.
doMoveStop : function(e) {
document.stopObserving('mousemove', this.mouseMoveHandler);
document.stopObserving('mouseup', this.mouseStopHandler);
document.stopObserving('selectstart', this.mouseDragHandler);
document.stopObserving('dragstart', this.mouseDragHandler);
},
// ÆË¾÷ À̵¿ ½Ã ³»¿ëÀÌ µå·¡±× µÇ´Â°ÍÀ» ¸·´Â´Ù.
doDrag : function(e) {
Event.stop(e);
},
// µå·¡±× ¼Ó¼ºÀ» »èÁ¦ÇÑ´Ù.
stop : function() {
Event.stopObserving(this.element, 'mousedown', this.mouseDownListener);
}
});