/* -------------------------------------------------------------------------- */
/*    
 *    JavaScript Document
 *
 *    Copyright(C) LOGOS,Inc.
 *
 *    version2.0 / 2007-05-25
 *    2007-06-19 add getTextAreaSelectText
 *    2008-02-14 add getPageWHSize, getElementType
 */
/* -------------------------------------------------------------------------- */

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 == 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;
};

