/* -------------------------------------------------------------------------- */
/*    
 *    JavaScript Document
 *
 *    Copyright(C) Design with me.
 *
 *    version3.0 / 2010-03-30.
 */
/* -------------------------------------------------------------------------- */

var dom = new Object();
dom.event = new Object();

dom.event.addEventListener = function(elm, type, func, useCapture){
	
	if(!elm){ return false; }
	if(!useCapture){
		useCapture = false;	
	}
	if(elm.addEventListener){
		elm.addEventListener(type, func, false);
	}else if(elm.attachEvent){
		elm.attachEvent('on' + type, func);
	}else{
		return false;
	}
	return false;
};

dom.event.removeEventListener = function(elm, type, func, useCapture){
	if(!elm){ return false; }
	if(!useCapture){
		useCapture = false;
	}
	if(elm.removeEventListener){
		elm.removeEventListener(type, func, false);
	}else if(elm.detachEvent){
		elm.detachEvent('on' + type, func);
	}else{
		return false;
	}
	return false;
};

dom.event.target = function(evt){
	if(evt && evt.target){
		if(evt.target.nodeType == 3){
			return evt.target.parentNode;
		}else{
			return evt.target;
		}
	}else if(window.event && window.event.srcElement){
		return window.event.srcElement;
	}else{
		return null;
	}
};

dom.event.preventDefault = function(evt){
	if(evt && evt.preventDefault){
		evt.preventDefault();
		
		/*safari1.3用*/
		evt.currentTarget['on' + evt.type] = function(){ return false; }
	}else if(window.event){
		window.event.returnValue = false;
	}
};

dom.event.stopPropagation = function(evt){
	if(evt && evt.stopPropagation){
		evt.stopPropagation();
	}else if(window.event){
		window.event.cancelBubble = true;
	}
};

dom.event.getElementsByClassName = function(name){
	var elements = [];
	var allElements = document.getElementsByTagName('*');
	for(var i=0, len=allElements.length; i<len; i++){
		if(allElements[i].className){
			var ElementsList = allElements[i].className.split(' ');
			if(ElementsList.length > 1){
				for(var j=0, L=ElementsList.length; j<L; j++){
					if(ElementsList[j] == name){
						elements.push(allElements[i]);
					}
				}
			}else{
				if(allElements[i].className == name){
					elements.push(allElements[i]);
				}
			}
		}
	}
	return elements;
};

dom.event.getTextAreaSelectText = function(name){
	var TextAreaSelect = [];
	var StartText;
	var EndText;
	var TextLength;
	var elm = document.getElementById(name);
	if(elm.setSelectionRange){
		StartText = elm.selectionStart;
		EndText = elm.selectionEnd;
		TextLength = EndText - StartText;
	}else if(document.selection){
		var docRange = document.selection.createRange();
		var textRange = document.body.createTextRange();
		textRange.moveToElementText(elm);
		var range = textRange.duplicate();
		range.setEndPoint('EndToStart', docRange);
		StartText = range.text.length;
		range.setEndPoint('EndToEnd', docRange);
		EndText = range.text.length;
		TextLength = EndText - StartText;
		//window.status = StartText + ' : ' + EndText + ' : ' + TextLength;
	}
	TextAreaSelect.StartTxt = StartText;
	TextAreaSelect.EndTxt = EndText;
	TextAreaSelect.TextLength = TextLength;
	return TextAreaSelect;
};

dom.event.setTextAreaSelectText = function(name){
	var elm = document.getElementById(name.id);
	if(elm.setSelectionRange){
		elm.setSelectionRange(elm.value.length, elm.value.length);
		//elm.setSelectionRange(name.start, name.end);
	}else if(document.selection){
		var range = name.createTextRange();
  		range.move('character', name.value.length);
  		range.select();
	}
};

dom.event.getPageWHSize = function(){
	var scrollmaxHeight, scrollmaxWidth, windowWidth, windowHeight;
	if(window.innerHeight && window.scrollMaxY){	
		scrollmaxWidth = document.body.scrollWidth;
		scrollmaxHeight = window.innerHeight + window.scrollMaxY;
	}else if(document.body.scrollHeight > document.body.offsetHeight){
		scrollmaxWidth = document.body.scrollWidth;
		scrollmaxHeight = document.body.scrollHeight;
	}else{
		scrollmaxWidth = document.body.offsetWidth;
		scrollmaxHeight = document.body.offsetHeight;
	}
	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;
	}
	var pageHeight = (scrollmaxHeight < windowHeight) ? windowHeight : scrollmaxHeight;
	var pageWidth = (scrollmaxWidth < windowWidth) ? windowWidth : scrollmaxWidth;
	arrayPageSize = new Array(pageWidth,pageHeight,windowWidth,windowHeight);
	return arrayPageSize;
};

dom.event.getElementType = function(element){
	if(typeof(element) == 'string'){
		var elm = document.getElementById(element);
	}else{
		var elm = element;
	}
	return elm;
};

dom.event.getPageScrollTop = 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;
	}
	var PageTop = yScroll;
	return PageTop;
};

dom.event.windowResize = function(e){
	var elm = dom.event.getElementType(e);
	if(elm && elm.style.display != 'none'){
		var arrayPageSize = dom.event.getPageWHSize();
		dom.event.setHeight(elm, arrayPageSize[1]);
		dom.event.setWidth(elm, arrayPageSize[2]);
	}
};

dom.event.showSelectBoxes = function(){
	var selects = document.getElementsByTagName("select");
	for (i = 0; i != selects.length; i++) {
		selects[i].style.visibility = "visible";
	}
};

dom.event.hideSelectBoxes = function(){
	var selects = document.getElementsByTagName("select");
	for (i = 0; i != selects.length; i++) {
		selects[i].style.visibility = "hidden";
	}
};

dom.event.getWidth = function(e){
	var elm = dom.event.getElementType(e);
	return elm.offsetWidth;
};

dom.event.getHeight = function(e){
	var elm = dom.event.getElementType(e);
	return elm.offsetHeight;
};

dom.event.setWidth = function(e,w){
	var elm = this.getElementType(e);
	elm.style.width = Math.floor(w) +"px";
};

dom.event.setHeight = function(e,h) {
	var elm = this.getElementType(e);
	elm.style.height = Math.floor(h) +"px";
};

dom.event.setTop = function(e,t) {
	var elm = this.getElementType(e);
	elm.style.top = t +"px";
};

dom.event.show = function(e){
	var elm = this.getElementType(e);
	elm.style.display = '';
};

dom.event.hide = function(e) {
	var elm = this.getElementType(e);
	elm.style.display = 'none';
};

dom.event.setSrc = function(e,src) {
	var elm = dom.event.getElementType(e);
	elm.src = src;
};

dom.event.setHref = function(e,href) {
	var elm = dom.event.getElementType(e);
	elm.href = href; 
};

dom.event.setInnerHTML = function(e,content) {
	var elm = dom.event.getElementType(e);
	elm.innerHTML = content;
};

dom.event.getStyle = function(e, style){
	var elm = dom.event.getElementType(e);
	if(elm){
		var value = elm.style[style];
		if (!value){
			if(elm.currentStyle){
				value = elm.currentStyle[style];
			}else if(document.defaultView && document.defaultView.getComputedStyle){
				var css = document.defaultView.getComputedStyle(elm, null);
				value = css ? css.getPropertyValue(style) : null;
			}
		}
		return value;
	}else{
		return false;
	}
},

dom.event.setStyle = function(e, styles){
	var elm = dom.event.getElementType(e);
	if(elm){
		for(name in styles){
			if( name == 'opacity'){
				if(document.uniqueID){
					elm.style.zoom = 1;
					elm.style.filter = 'alpha(opacity = PopUpActionEvent.opacityAlpha)';
				}else{
					elm.style[name] = styles[name];
				}
			}else{
				elm.style[name] = styles[name];
			}
		}
	}
},

dom.event.getOpacity = function(e){
	var elm = dom.event.getElementType(e);
	var opacity;
	if(elm){
		if(document.uniqueID){
			opacity = dom.event.getStyle(e, 'filter').match(/alpha\(opacity=(.*)\)/);
			if(opacity != null && opacity[1]){
				opacity = parseFloat(opacity[1]) / 100;
			}else{
  				opacity = 1.0;
			}
		}else{
			opacity = dom.event.getStyle(elm, 'opacity');
		}
		return parseFloat(opacity);
	}else{
		return false;	
	}
},

dom.event.setOpacity = function(e, value){
	var elm = dom.event.getElementType(e);
	if(elm){
		if(value){
			if(document.uniqueID){
				dom.event.setStyle(e, { filter: dom.event.getStyle(elm,'filter').replace(/alpha\([^\)]*\)/gi,'') + 'alpha(opacity='+value*100+')' });
			}else{
				if(value < 0.00001){ value = 0; }
				dom.event.setStyle(elm, {opacity: value});
			}
		}
	}
},

dom.event.getDimensions = function(e) {
	var elm = dom.event.getElementType(e);
	if(elm){
		if (dom.event.getStyle(elm, 'display') != 'none'){
			if(!elm.offsetWidth && elm.offsetHeight){
				return { width:elm.offsetWidth, height:elm.offsetHeight};
			}else{
				return false;	
			}
		}else{
			var els = elm.style;
			var originalVisibility = els.visibility;
			var originalPosition = els.position;
			els.visibility = 'hidden';
			els.position = 'absolute';
			els.display = '';
			var originalWidth = elm.offsetWidth;
			var originalHeight = elm.offsetHeight;
			els.display = 'none';
			els.position = originalPosition;
			els.visibility = originalVisibility;
			if(originalWidth && originalHeight){
				return { width:originalWidth, height:originalHeight};
			}else{
				return false;	
			}
		}
	}
},

dom.event.getInlineOpacity = function(e){
	var elm = dom.event.getElementType(e);
	return elm.style.opacity || '';
}

dom.event.getOffsetTop = function(elm){
	var targetElement = dom.event.getElementType(elm);
	var targetParentoffset = targetElement.offsetTop;
	var targetParent = targetElement;
	while(targetParent.offsetParent){
		targetParent = targetParent.offsetParent;
		targetParentoffset += targetParent.offsetTop;
	}
    return targetParentoffset;
}


