	/****************************************************************************************
	 package : 공통
	 contents : trim() 함수 (이동 예정)
	*****************************************************************************************/
	String.prototype.trim = function() {
	     return this.replace(/(^\s*)|(\s*$)|($\s*)/g, "");
	}

	/****************************************************************************************
	 package : 공통
	 contents : responseText의 결과를 xml로 변환하여 반환한다.
	 parameters : responseText
	 return : XMLDocument
	*****************************************************************************************/
	function makeXMLDoc(xml){
	
		var XMLDocument = false;
		
		if (window.ActiveXObject) { // IE
			try {
				XMLDocument = new ActiveXObject("Microsoft.XMLDOM");
				if(XMLDocument.loadXML(xml))  {
					return XMLDocument;
				} else {
					alert("Cannot create XMLDOM instance");
					return false;
				}
			} catch (e) {}
		} else if (window.XMLHttpRequest) { // Mozilla, Safari,...
			var XMLParser = new DOMParser();
		    var XMLDocument = XMLParser.parseFromString(xml, 'text/xml');
	
			return XMLDocument;
		}	
	}
	
	/****************************************************************************************
	 package : 공통
	 contents : action인자에 해당하는 함수(인자 : xml로 변환 된 결과)를 호출
	 parameters : responseText, action
	 return : 함수 호출
	*****************************************************************************************/
	function commonAjaxParser(responseText, action) {
		var xml = makeXMLDoc(responseText);

		switch(action) {
			case "scheduleCalendar"				: return new scheduleCalendar(xml); break;
			case "scheduleInfo"					: return new scheduleInfo(xml); break;
			case "genreInfo"					: return new genreInfo(xml); break;
			default								: return false;
		}
	};	
	
	/****************************************************************************************
	 package : contents.schedule
	 contents : 달력과 일정 정보 생성
	*****************************************************************************************/
	var scheduleCalendar = Class.create();
	Object.extend(scheduleCalendar.prototype, {
		initialize	: function(xml) {
			
			for(i = 0; i < 6; i++) {
				if($('tr_' + i) != null) {
					$('tr_' + i).remove();
				}
			}
			
			var table = document.getElementById('tbody');
			
			var dayOfWeekMinusOne = xml.getElementsByTagName("dayOfWeekMinusOne")[0].firstChild.nodeValue;
			var lastDay = xml.getElementsByTagName("lastDay")[0].firstChild.nodeValue;

			var scheduleList = xml.getElementsByTagName("scheduleList");
			
			var cnt = 0;
			var viewDiv;

			for(i = 0; i < 6; i++) {
				if(cnt - dayOfWeekMinusOne < lastDay) {
				
				var newRow = document.createElement('tr'); 
				//newRow.setAttribute("id", "tr_" + i);
				newRow.id = "tr_" + i;
				
			   	table.appendChild(newRow); 				

					for(j = 0; j < 7; j++) {
						cnt++;
	
						var newCell = document.createElement('td'); 
					    newRow.appendChild(newCell); 
						
						if(cnt - dayOfWeekMinusOne > 0) {
							if(cnt - dayOfWeekMinusOne <= lastDay) {
	
								if(j == 0) {
								    //newCell.setAttribute("className", "sun"); 
								    newCell.className = "sun"; 
								} else if(j == 1) {
								    //newCell.setAttribute("className", "mon"); 
								    newCell.className = "mon"; 
								} else if(j == 2) {
								    //newCell.setAttribute("className", "tue"); 
								    newCell.className = "tue"; 
								} else if(j == 3) {
								    //newCell.setAttribute("className", "wed"); 
								    newCell.className = "wed"; 
								} else if(j == 4) {
								    //newCell.setAttribute("className", "thu"); 
								    newCell.className = "thu"; 
								} else if(j == 5) {
								    //newCell.setAttribute("className", "fri"); 
								    newCell.className = "fri"; 
								} else if(j == 6) {
								    //newCell.setAttribute("className", "sat"); 
								    newCell.className = "sat"; 
							    }
							    
							    var printDay = cnt - dayOfWeekMinusOne;
								
								newCell.appendChild(document.createTextNode(printDay));
							    
							    for(k = 0; k < scheduleList.length; k++) {
							    	var placeCD = scheduleList[k].getElementsByTagName("placeCD")[0].firstChild.nodeValue.trim();
							    	var programCD = scheduleList[k].getElementsByTagName("programCD")[0].firstChild.nodeValue.trim();
							    	var placeName = scheduleList[k].getElementsByTagName("placeName")[0].firstChild.nodeValue.trim();
							    	var playDate = scheduleList[k].getElementsByTagName("playDate")[0].firstChild.nodeValue;
							    	var regCompanyCD = scheduleList[k].getElementsByTagName("regCompanyCD")[0].firstChild.nodeValue;
							    	var day = playDate.substring(6, 8);
	
							    	if(printDay == day) {
							    		//newCell.setAttribute("className", "schOn");
							    		newCell.className = "schOn";
							    		
							    		var newUl;
										if($("ul_" + printDay) == null) {
								    		newUl = document.createElement('ul');
								    		//newUl.setAttribute("id", "ul_" + printDay);
								    		newUl.id = "ul_" + printDay;
							    		}
							    		
							    		newCell.appendChild(newUl);
							    		var newLi = document.createElement('li');
	
							    		newLi.onmousemove = function() {viewLayer()};
							    		newLi.onmouseout = function() {hideLayer()};

							    		newLi.onmouseover = function() {viewScheduleInfo(playDate, regCompanyCD, programCD, placeCD);};
	
			  						 	newUl.appendChild(newLi);
			  						 	newLi.appendChild(document.createTextNode(placeName));	
							    	}
							    }
							}
						}
					}
				}
			}
		}
	});	
	
	
	/****************************************************************************************
	 package : contents.schedule
	 contents : 공연장과 날짜에 해당하는 회차 정보
	*****************************************************************************************/

	var scheduleInfo = Class.create();
	Object.extend(scheduleInfo.prototype, {
		initialize	: function(xml) {

			var scheduleInfoList = xml.getElementsByTagName("scheduleInfoList");
			var contents = "<ul>";
			
			for(k = 0; k < scheduleInfoList.length; k++) {
		    	var placeCD = scheduleInfoList[k].getElementsByTagName("placeCD")[0].firstChild.nodeValue;
		    	var playSeqNm = scheduleInfoList[k].getElementsByTagName("playSeqNm")[0].firstChild.nodeValue;
		    	var playStTime = scheduleInfoList[k].getElementsByTagName("playStTime")[0].firstChild.nodeValue.trim();
		    	var playEdTime = scheduleInfoList[k].getElementsByTagName("playEdTime")[0].firstChild.nodeValue.trim();
				var playDate = scheduleInfoList[k].getElementsByTagName("playDate")[0].firstChild.nodeValue.trim();		    	

				if(playStTime.length == 4) {
					var viewStHour = playStTime.substring(0, 2);
					var viewStMin = playStTime.substring(2, 4);
				}
				var viewStTime = viewStHour + ":" + viewStMin;
				
				if(playEdTime.length == 4) {
					var viewEdHour = playEdTime.substring(0, 2);
					var viewEdMin = playEdTime.substring(2, 4);
				}
				var viewEdTime = viewEdHour + ":" + viewEdMin;

	    		contents += "<li>";
	    		contents += playSeqNm + " : " + viewStTime + "~" + viewEdTime;
	    		contents += "</li>";
			}
			contents += "</ul>";
			document.getElementById("scheduleTD").innerHTML = contents;
		}
	});		


	/****************************************************************************************
	 package  : contents.category
	 contents : 부장르 목록을 셀렉트 박스로 만든다.
	*****************************************************************************************/

	var genreInfo = Class.create();
	Object.extend(genreInfo.prototype, {
		initialize	: function(xml) {
			
			if($("selectBoxDiv") != null) {
				$("selectBoxDiv").remove();
			}
			var parameterGenreCD = xml.getElementsByTagName("genreCD")[0].firstChild.nodeValue;
			
			var genreList = xml.getElementsByTagName("genreList");
			
			var span = document.getElementById('selectBox'); 

			var contentsSpan = document.createElement('span');
			contentsSpan.id = "selectBoxDiv";
			
			span.appendChild(contentsSpan);
			
			var newSelect = document.createElement('select');
			newSelect.name = "genreCD";
	
			contentsSpan.appendChild(newSelect);

			var newOption = document.createElement('option'); 
			newOption.value = "";

		    newSelect.appendChild(newOption); 
		    
		    newOption.appendChild(document.createTextNode("--------------"));
			
			for(k = 0; k < genreList.length; k++) {
		    	var categoryCD = genreList[k].getElementsByTagName("categoryCD")[0].firstChild.nodeValue;
		    	var genreCD = genreList[k].getElementsByTagName("genreCD")[0].firstChild.nodeValue;
		    	var categoryName = genreList[k].getElementsByTagName("categoryName")[0].firstChild.nodeValue.trim();

				var newOption = document.createElement('option');
				
				if(genreCD == parameterGenreCD) {
					newOption.selected = true
		        }
		        newOption.value = genreCD;
		        
		        newSelect.appendChild(newOption);
		        
		        newOption.appendChild(document.createTextNode(categoryName));
			}
		}
	});		
	


		
