Ext.BLANK_IMAGE_URL = '/js/ext2/resources/images/default/s.gif';

// ------------------------- DOM -------------------------

// 対象のクラス名を持つ要素ノードを返す
function getElementsByClass(searchClass) {
	var classElements = new Array();
	var cpattarn = new RegExp('(?:^| )' + searchClass + '(?=$| )');

   if (document.all) {
        var allElements = document.all;
        for (i = 0, j = 0; i < allElements.length; i++) {
       		if (allElements[i].className.match(cpattarn)) {
            	classElements[j] = allElements[i];
                j++;
            }
        }   
   } else if (document.getElementsByTagName) {
        var allElements = document.getElementsByTagName("*");
        for (i = 0, j = 0, L=allElements.length ; i < L; i++) {
        	if (allElements[i].className.match(cpattarn)) {
            	classElements[j] = allElements[i];
                j++;
            }
        }       
   } else {
      return;
   }

    return classElements;
}

// 要素ノードを抽出
function extractElementNodes(node){
	var onode = new Array();
	for(var i=0, j=0, L=node.length; i<L; i++){
		if(node[i].nodeType == 1){
			onode[j] = node[i];
			j++;
		}
	}

	return onode;
}


// ------------------------- EXT JS -------------------------

// 「2000年～現在の年」を数値添字配列で返す
function createYearLst(){
	var ylst = new Array();
	var today = new Date();

	for(var i=0, year=2000, cyear=today.getFullYear()+1; year<cyear; i++,year++){
		ylst[i] = [year, year];
	}

	return ylst;
}

// 対象の要素ノードに "display: block; float: left;" を付与
function floatLeft(node){
	node.style.display = 'block';	// "display: block"
	if(typeof node.style.cssFloat == 'string'){
		node.style.cssFloat = 'left';	// "float: left"
	} else if(typeof node.style.styleFloat == 'string'){
		node.style.styleFloat = 'left';
	}
}


// <input type="text"> に EXT JS を適用
function createInputTextExtJs(form){

	// 対象のclass名を持つ要素ノードのIDを返す (IDがない要素ノードには新しくIDを付与し、付与したIDを返す)
	function getIdByClass(cname){
		var elm = getElementsByClass(cname);
		var eid = new Array();
		var eid_txt;

		for(var i=0, L=elm.length; i<L; i++){
			if(elm[i].tagName == 'INPUT' && elm[i].type == 'text'){
				if(elm[i].id){
					eid[i] = elm[i].id;
				} else {
					eid_txt = 'ExtJsInputText' + i;
					elm[i].id = eid_txt;
					eid[i] = eid_txt;
				}
			}
		}

		return eid;
	}

	// 
	function createForm(form, eid){
		var fld;

		for(var i=0, L=eid.length; i<L; i++){
			fld = new Ext.form.TextField({
				applyTo:eid[i],
				allowBlank:true
			});

			form.add(fld);
		}

		return form;
	}

	return createForm(form, getIdByClass('ext_js'));
}

function createInputPasswordExtJs(form){

	// 対象のclass名を持つ要素ノードのIDを返す (IDがない要素ノードには新しくIDを付与し、付与したIDを返す)
	function getIdByClass(cname){
		var elm = getElementsByClass(cname);
		var eid = new Array();
		var eid_txt;

		for(var i=0, L=elm.length; i<L; i++){
			if(elm[i].tagName == 'INPUT' && elm[i].type == 'password'){
				if(elm[i].id){
					eid[i] = elm[i].id;
				} else {
					eid_txt = 'ExtJsInputText' + i;
					elm[i].id = eid_txt;
					eid[i] = eid_txt;
				}
			}
		}

		return eid;
	}

	// 
	function createForm(form, eid){
		var fld;

		for(var i=0, L=eid.length; i<L; i++){
			fld = new Ext.form.TextField({
				applyTo:eid[i],
				allowBlank:true
			});

			form.add(fld);
		}

		return form;
	}

	return createForm(form, getIdByClass('ext_js'));
}


function createInputTextExtJsByName(form,att_name){

	// 対象のclass名を持つ要素ノードのIDを返す (IDがない要素ノードには新しくIDを付与し、付与したIDを返す)
	function getIdByClass(cname){
		var elm = getElementsByClass(cname);
		var eid = new Array();
		var eid_txt;
		var ename;
		
		for(var i=0, L=elm.length; i<L; i++){
			
			if(elm[i].name.indexOf("[",0)){
				ename = elm[i].name.substring(0,elm[i].name.indexOf('[',0));				
			}else{
				ename = elm[i].name;
			}
			
			if(elm[i].tagName == 'INPUT' && ename == att_name){		
				if(elm[i].id){
					eid[i] = elm[i].id;
				} else {
					eid_txt = 'ExtJsInputText' + i;
					elm[i].id = eid_txt;
					eid[i] = eid_txt;
				}
			}
		}

		return eid;
	}

	// 
	function createForm(form, eid){
		var fld;

		for(var i=0, L=eid.length; i<L; i++){
			fld = new Ext.form.TextField({
				applyTo:eid[i],
				allowBlank:true
			});

			form.add(fld);
		}

		return form;
	}

	return createForm(form, getIdByClass('ext_js'));
}


function createInputDateExtJsByName(form,att_name,ctCls){

	// 対象のclass名を持つ要素ノードのIDを返す (IDがない要素ノードには新しくIDを付与し、付与したIDを返す)
	function getIdByClass(cname){
		var elm = getElementsByClass(cname);
		var eid = new Array();
		var eid_txt;
		var ename;
		
		for(var i=0, L=elm.length; i<L; i++){
			
			if(elm[i].name.indexOf("[",0)){
				ename = elm[i].name.substring(0,elm[i].name.indexOf('[',0));				
			}else{
				ename = elm[i].name;
			}
			
			if(elm[i].tagName == 'INPUT' && ename == att_name){				
				if(elm[i].id){
					eid[i] = elm[i].id;
				} else {
					eid_txt = 'ExtJsInputDate' + i;
					elm[i].id = eid_txt;
					eid[i] = eid_txt;
				}
			}
		}

		return eid;
	}

	// 
	function createForm(form, eid){
		var fld;
		for(var i=0, L=eid.length; i<L; i++){
			
			fld = new Ext.form.DateField({
			applyTo:	eid[i],
			format:		'Y/m/d',
			'ctCls':	ctCls});

			form.add(fld);
		}	

		return form;
		
	}
	

	return createForm(form, getIdByClass('ext_js'));
}


