//---------------------------------------------------------------------------------------
//----------------------- -=J=- ---------------------------------------------------------
//---------------------------------------------------------------------------------------
// get object(s) by TagName[input], by id [#id]
function getObject(obj_name, obj_parent) {
	if(!obj_name) return false;
	var obj_paent_ = (obj_parent && typeof(obj_parent) == "object")?obj_parent:document;
	
	//alert(obj_paent_)
	
	var obj_name_prefix = obj_name.match(/^(#?|\.?)(\w+)/);
	//alert(obj_name_prefix)
	
	var obj_error = false;
	var obj;
	switch(obj_name_prefix[1]) {
		case '':
			//alert('By Tag Name')
			//obj = document.getElementsByTagName(obj_name_prefix[2]);
			obj = obj_paent_.getElementsByTagName(obj_name_prefix[2]);
			if(obj && typeof(obj) == "object") return obj;
			else obj_error = true;
		break;
		
		case '.':
			//alert('By Class')
			obj_error = true;
		break;
		
		case '#':
			//alert('By Id')
			//obj = document.getElementById(obj_name_prefix[2]);
			obj = obj_paent_.getElementById(obj_name_prefix[2]);
			if(obj && typeof(obj) == "object") return obj;
			else obj_error = true;
		break;
			
		default:
			return false;
		break;
	}
	
	if(obj_error) {
		alert("Does not exist '"+obj_name+"' !");//return false;
		return false;
	}
}

//---------------------------------------------------------------------------------------
//---------------------------------------------------------------------------------------
//
//
//---------------------------------------------------------------------------------------
//---------------------------<:-COPY TR-----------------------------------------
function MyCopyTR(tbody1,tr1,rowsStr) {
	
	//-------------------------------------------------
	//this.element_prefix = element_prefix1;
	this.bgColor = "lightgray";
	
	this.tbody1 = getObject("#"+tbody1);
	this.tr1 = getObject("#"+tr1);
	this.rowsStr = rowsStr;
	
	this.fillRowFlag = false;
	this.trNum = 1;
	this.trCounter = 1;
	
	//-------------------------------------------------
	this.addRow = function(dataArr) {
		
		var cloneTR = this.tr1.cloneNode(true);
		cloneTR.setAttribute("id","");
		if((this.trCounter%2)) cloneTR.style.backgroundColor = this.bgColor;
		
		var newId = [];
		var inputList = getObject("input",cloneTR);
		for(var i=0; i<inputList.length; i++) {
			newId = inputList[i].id.match(/^(\w+_)(\d+)$/);
			
			inputList[i].setAttribute("id",newId[1]+this.trCounter);
			inputList[i].setAttribute("name",newId[1]+this.trCounter);
			
			if(inputList[i].id.match(/_input_/)) inputList[i].value = "";
			if(inputList[i].id.match(/_inputd_/)) inputList[i].value = "";
		}
		
		inputList = getObject("select",cloneTR);
		for(var i=0; i<inputList.length; i++) {
			newId = inputList[i].id.match(/^(\w+_)(\d+)$/);
			
			inputList[i].setAttribute("id",newId[1]+this.trCounter);
			inputList[i].setAttribute("name",newId[1]+this.trCounter);
		}
		
		inputList = getObject("a",cloneTR);
		inputList[0].style.display = "inline";
		
		if(dataArr) this.fillOneRow(cloneTR,dataArr)
		
		this.tbody1.appendChild(cloneTR);
		this.trNum++;
		this.trCounter++;
	}
	
	this.removeRow = function(obj) {
		if(this.trNum > 1) {
			this.tbody1.removeChild(obj.parentNode.parentNode);
			this.trNum--;
		} else return false;
		//alert(obj.parentNode.parentNode.id)
	}
	
	this.createStr = function() {
		
		var str1 = "";
		
		var trList = getObject("tr",this.tbody1);
		for(var i=1; i<trList.length; i++) {
			
			var inputList = getObject("input",trList[i]);
			for(var i1=0; i1<inputList.length; i1++) {
				if(inputList[i1].id.match(/_input_/)) {
					str1 += inputList[i1].value;
				}
			}
			
			var selectList = getObject("select",trList[i]);
			for(var i2=0; i2<selectList.length; i2++) {
				str1 += "::"+selectList[i2].value;
			}
			
			
			var inputList = getObject("input",trList[i]);
			for(var i1=0; i1<inputList.length; i1++) {
				if(inputList[i1].id.match(/_inputd_/)) {
					str1 = str1 + "::"+inputList[i1].value;
				}
			}
			
			
			str1 += "||";
		}
		
		//alert(str1)
		return str1;
	}
	
	this.fillRow = function() {
		if(this.rowsStr == "" || this.fillRowFlag) return false;
		
		var trList = getObject("tr",this.tbody1);
		//alert(trList.length)
		
		var strArr = this.rowsStr.split("||");
		for(var i1=0; i1<strArr.length; i1++){
			if(strArr[i1]) {
				//alert(strArr[i1])
				var valueArr = strArr[i1].split("::");
				//alert(valueArr)
				
				//first row
				if(i1 == 0) {
					this.fillOneRow(trList[1],valueArr)
				} else {
					this.addRow(valueArr);
				}
			}
		}
		
		this.fillRowFlag = true;
	}
	
	this.fillOneRow = function(trObj,valueArr1) {
		//alert(trList[0].id)
		var inputList = getObject("input",trObj);
		inputList[0].value = valueArr1[0];
		inputList[1].value = valueArr1[4];
		
		
		var selectList = getObject("select",trObj);
		for(var i=0; i<selectList.length; i++) {
			selectList[i].value = valueArr1[i+1];
		}
	}
	
	//-------------------------------------------------
	this.fillRow();
	
}

//---------------------------------------------------------------------------------------
//---------------------------------------------------------------------------------------
//---------------------------------------------------------------------------------------
//---------------------------------------------------------------------------------------


function MyCopyTR_SCH(prefix) {
	
	//-------------------------------------------------
	//this.element_prefix = element_prefix1;
	//this.bgColor = "lightgray";
	
	this.tbody1_name = prefix+"tbody_0";
	this.tr1_name = prefix+"tr_0";
	
	this.tbody1 = getObject("#"+this.tbody1_name);
	this.tr1 = getObject("#"+this.tr1_name);
	
	//this.tbody1 = $("#"+this.tbody1_name).get();
	//this.tr1 = $("#"+this.tr1_name).get();
	
	//this.rowsStr = '';
	this.groupStr = '';
	//this.groupsStr = '3||45||2||';
	//this.groupsStr = '';
	
	//this.rowsStr = [['3','cab.201::1::14::15||cab.201::1::15::45||cab.201::6::12::0||cab.201::6::14::0||'],['2','::1::0::0||'],['1','::1::0::0||']];
	this.rowsStr = [];
	
	this.fillRowFlag = false;
	this.trNum = 1;
	this.trCounter = 1;
	
	
	
	//-------------------------------------------------
	this.addRow = function(dataArr) {
		
		var cloneTR = this.tr1.cloneNode(true);
		
		var newId = cloneTR.id.match(/^(\w+_)(\d+)$/);
		cloneTR.setAttribute("id",newId[1]+this.trNum);
		
		var d1_arr = dataArr.split('::');
		
		var inputList = getObject("td",cloneTR);
		
		var oD;
		for(var i=0; i<inputList.length; i++) {
			oD = calcDuration(d1_arr[2],d1_arr[3],d1_arr[4]);
			
			if(i == 0) inputList[i].innerHTML = '<span class="schedule_td_span_left">'+this.groupStr+'</span>';
			if(i == 1) inputList[i].innerHTML = '<span class="schedule_td_span_right">'+d1_arr[0]+'</span>';
			if((i-1) == d1_arr[1]) inputList[i].innerHTML = '<span class="schedule_td_time">'+((d1_arr[2] < 10)?'0':'')+d1_arr[2]+':'+((d1_arr[3] < 10)?'0':'')+d1_arr[3]+'-'+oD.ndhm+'</span>';
		}
		
		this.tbody1.appendChild(cloneTR);
		this.trNum++;
		this.trCounter++;
	}
	
	
	
	this.fillRows1 = function() {
		
		//var gtStr1 = this.gtStr;rowsStr
		var gtStr1 = this.rowsStr;
		
		this.clear();
		
		for(var i=0; i<gtStr1.length; i++) {
			
			var rowsStr1 = gtStr1[i][1].replace(/\|\|$/,'');
			var rowsStr1_a = rowsStr1.split('||');
			
			//alert(rowsStr1_a)
			//alert(gtStr1[i][0]+" -- "+gtStr1[i][1])
			
			
			for(var ii=0; ii<rowsStr1_a.length; ii++) {
					this.groupStr = gtStr1[i][0];
					this.addRow(rowsStr1_a[ii]);
			}
			
			
		}
		
		/*
		for(var i=0; i<rowsStr1_a.length; i++) {
			//alert(rowsStr1_a[i]);
			
			if(groupsStr1_a[i]) this.groupStr = groupsStr1_a[i];
			this.addRow(rowsStr1_a[i]);
		}
		*/
	}
	
	
	this.fillRows = function() {
		
		var rowsStr1 = this.rowsStr.replace(/\|\|$/,'');
		var rowsStr1_a = rowsStr1.split('||');
		
		var groupsStr1 = this.groupsStr.replace(/\|\|$/,'');
		var groupsStr1_a = groupsStr1.split('||');
		
		this.clear();
		
		for(var i=0; i<rowsStr1_a.length; i++) {
			//alert(rowsStr1_a[i]);
			
			if(groupsStr1_a[i]) this.groupStr = groupsStr1_a[i];
			this.addRow(rowsStr1_a[i]);
		}
		
	}
	
	
	
	this.clear = function() {
		
		var obj_arr = [];
		var inputList = getObject("tr",this.tbody1);
		
		for(var i=0; i<inputList.length; i++) {
			if(inputList[i].id != "first" && inputList[i].id != this.tr1_name) {
				obj_arr.push(inputList[i])
			}
		}
		
		for(var i=0; i<obj_arr.length; i++) {
			this.tbody1.removeChild(obj_arr[i]);
		}
		
	}
	
	//-------------------------------------------------
	//this.fillRow();
	
}




//---------------------------:>-COPY TR-----------------------------------------
//---------------------------------------------------------------------------------------


// calcDuration(hour(int), minute(int), duration(string[12:34])) {
function calcDuration(h, m, d) {
	//var sDStr1 = "test-class-1::2::1::2::3||test-class-2::6::17::29::4.5||test-class-3::3::4::1::12.4||";
	
	//var iH = parseInt("21");//- hour
	//var iM = parseInt("45");//- min
	var iH = parseInt(h);//- hour
	var iM = parseInt(m);//- min
	
	//var sD = "12:40";//- duration time
	var sD = d;
	
	var aD = sD.split(':');
	
	var iDH = (aD[0])?parseInt(aD[0]):0;
	var iDM = (aD[1])?parseInt(aD[1]):0;
	
	var inDH = iDH + iH;//- new hour
	var inDM = iDM + iM;//- new min
	
	var icDH = 0;//- hour correction
	
	if(inDM > 59) {
		icDH = 1;
		inDM %= 60;
	} else icDH = 0;
	
	inDH += icDH;
	
	if(inDH > 23) {
		inDH %= 24;
	}
	
	//alert(inDH+':'+inDM);
	//alert(iDH+':'+iDM);
	var sDH = ((inDH < 10)?'0':'')+inDH;
	var sDM = ((inDM < 10)?'0':'')+inDM;
	
	//return {ndh: inDH, ndm: inDM, ndhm: sDH+':'+sDM};
	return {ndh: sDH, ndm: sDM, ndhm: sDH+':'+sDM};
}
//alert(calcDuration(12,45,'4:23').ndh+':'+calcDuration(12,45,'4:23').ndm);

//---------------------------------------------------------------------------------------
//- class for URL processing
var cURLFun = function() {
	//- variables
	this.url = "";
	
	//- methods
	this.getURL = function() {
		this.url = document.location.toString();
		return this.url;
	}
	
	this.getURLVar = function(name) {
		if(!name) return false;
		
		this.getURL();
		var pattern = new RegExp("[?\\&]("+name+")=([\\w\:\.-_]*)");
		
		var strUrl = this.url.match(pattern);
		if(strUrl) return strUrl;
			else return false;
	}
	
	this.show = function() {
		this.getURL();
		alert(this.url)
	}
}

var objURLFun = new cURLFun();
//---------------------------------------------------------------------------------------