if(!jss){
	var jss = new Object();
}
jss.dom = new Object();
jss.dom.core = new Object();
jss.dom.form = new Object();
jss.dom.event = new Object();

jss.dom.core.childNodes = function(node){
	var array = new Array();
	if(!node || !node.hasChildNodes()) {return array;}

	var children = node.childNodes;
	for(var i=0 ; i<children.length ; i++){
		var c = children.item(i);
		if(c.nodeType == 3){
			var text = c.nodeValue;
			if(!text.match("/[^\s\t\n\r]/")){
				continue;
			}
		}
		array.push(c);
	}
	
	array.item = function(n){
		if(array[n]){
			return array[n];
		}
		return null;
	}
	
	return array;
}

jss.dom.core.removeChildNodes = function(node){
	if(!node){return;}
	while(node.hasChildNodes()){
		node.removeChild(node.lastChild);
	}
}


jss.dom.form.getValue = function(name, formName){
	var elem = null;
	if(!formName){
		elem = document.getElementsByName(name);
	}else{
		elem = document.forms[formName].elements[name];
	}
	if(!elem){return null;}
	
	if(elem.type){
		if(elem.type == "select-one"){
			if(elem.selectedIndex && elem.selectedIndex >= 0 && elem[elem.selectedIndex]){
				return elem[elem.selectedIndex].value;
			}
		}else{
			return elem.value;
		}
	}else if(elem.length){
		if(elem[0].type == "select-one"){
			if(elem[0].selectedIndex && elem.selectedIndex >= 0 && elem[0][elem[0].selectedIndex]){
				return elem[0][elem[0].selectedIndex].value;
			}
		}else if(elem[0].type == "radio" || elem[0].type == "check"){
			alert(elem.length);
			for(var i=0 ; i<elem.length ; i++){
				if(elem[i].checked){
					return elem[i].value;
				}
			}
		}else{
			return elem[0].value;
		}
	}
	return null;
}

jss.dom.form.addSelectOption = function (targetSelect, val, text, selected){
	var opt = document.createElement("option");
	opt.setAttribute("value", val);
	if(selected){
		opt.setAttribute("selected", "selected");
	}
	var textNode = document.createTextNode(text);
	opt.appendChild(textNode);
	
	try{
	targetSelect.appendChild(opt);
	}catch(e){
		alert(e.message);
		alert(targetSelect);
		throw e;
	}
}

jss.dom.form.setSelectedByValue = function(selectElem, val){
	for(var i=0 ; i<selectElem.options.length ; i++){
		if(selectElem.options[i].value == val){
			selectElem.selectedIndex = i;
		}
	}
}

jss.dom.form.submitByAjax = function(formName, url, callback){
	if(!formName || !document.forms[formName]){ 
		alert("FORM is not exist.["+ formName +"]");
		return;
	}
	
	var nowMill = (new Date()).getTime();
	var url = url +"?uid="+ nowMill;
	var postData = Form.serialize($(formName));
	//alert(postData);
	var myAjax=new Ajax.Request(
		url, 
		{
			method: 'post', 
			postBody: postData,
			onComplete: callback
		});
}



jss.dom.event.setEventListener = function(elem, type, func, useCapture){
	if(!elem){ return false};
	if(!useCapture){
		useCapture = false;
	}
	
	if(elem.addEventListener){
		elem.addEventListener(type, func, useCapture);
	}else if(elem.attachEvent){
		elem.attachEvent('on'+ type, func);
	}else{
		return false;
	}
	return true;
}

jss.dom.event.removeEventListener = function(elem, type, func, useCapture){
	if(!elem){ return false};
	if(!useCapture){
		useCapture = false;
	}
	
	if(elem.removeEventListener){
		elem.removeEventListener(type, func, useCapture);
	}else if(elem.detachEvent){
		elem.detachEvent('on'+ type, func);
	}else{
		return false;
	}
	return true;
}


