var bindingSubData = function(thisM, thisMType, thisViewDiv) {

	var m_gubn, initMType, thisTargetObj, viewDiv;
	
	this.m_gubn = thisM;
	this.initMType = thisMType;
	this.thisTargetObj = eval('leftMenu'+thisM);
	
	if (typeof thisViewDiv=='string') this.viewDiv = document.getElementById(thisViewDiv);
  else if (typeof thisViewDiv=='object') this.viewDiv = thisViewDiv;
  else return;
	
}


bindingSubData.prototype.baseTableTag = function(thisType) {
	var str = '';
	if (thisType=='BEGIN') str = '<table border=0 cellpadding=0 cellspacing=0 width=100%>';
	else str = '</table>';

	return str;
}

bindingSubData.prototype.bindTag = function(thisKind, thisType) {
	var str = '';
	
	if(thisType=='BEGIN')	{
		if(thisKind=='1') {
			str	 ='<tr>';
			str +='<td class="left_con">';
		} 
		else if (thisKind=='2') {
			str	 ='<tr>';
			str	+='<td height="23" valign=top>&#8226;&nbsp;';
		}
		else if (thisKind=='3') {
			str	=	'<tr>';
			str	+='<td height="23" valign=top>';
		}
	}
	else {
		str +='</td>';
		str +='</tr>';
	}
	return str;
}
	

bindingSubData.prototype.bindDataObj = function(thisObj, parentObj) {
	var thisCode 			= thisObj.code; 
	var thisCodeTitle = thisObj.codeTitle; 
	var thisTitle 		= thisObj.title;
	var thisLink 			= thisObj.linkPage
	var thisChildFlag = thisObj.childFlag;
	
	var str = '';
	var baseLink = '';
	
	if (this.m_gubn =='D') baseLink = '/dest/dest.asp?m_gubn=D';
	else baseLink = '/prog/prod/list.asp?m_gubn='+this.m_gubn;
	
	var parentObjCode = '';
	var parentObjCodeTitle = '';

	if (typeof(parentObj) !=='undefined') {
		parentObjCode = parentObj.code;
		parentObjCodeTitle = parentObj.codeTitle;
		
		if(parentObjCode !=='') {
			if (this.m_gubn =='D') baseLink += '&m_type='+parentObjCode+'&'+parentObjCodeTitle+'='+parentObjCode;
			else baseLink += '&m_type=dest&'+parentObjCodeTitle+'='+parentObjCode;
		}
	}
	
	
	str +=this.setLink(thisCode, thisCodeTitle, thisTitle, thisLink, baseLink);
	
	return str;
}
	
	
bindingSubData.prototype.bindThirdObj = function(thisObj, parentObj, thisFirstObj) {
	var parentObjCode = '';
	var parentObjCodeTitle = '';
	
	if (this.m_gubn =='D') baseLink = '/dest/dest.asp?m_gubn=D';
	else baseLink = '/prog/prod/list.asp?m_gubn='+this.m_gubn;
	
	
	if (this.m_gubn =='D')  {
		if (thisFirstObj.code=='EU') {
			if (typeof(parentObj) !=='undefined') {
				parentObjCode = parentObj.code;
				parentObjCodeTitle = parentObj.codeTitle;

				if(parentObjCode !=='') baseLink += '&m_type='+parentObjCode+'&'+parentObjCodeTitle+'='+parentObjCode;
			}
		}
		else {
			parentObjCode = thisFirstObj.code;
			parentObjCodeTitle = thisFirstObj.codeTitle;
		
			baseLink += '&m_type='+parentObjCode+'&'+parentObjCodeTitle+'='+parentObjCode;			
		}
	}
	else {
		parentObjCode = thisFirstObj.code;
		parentObjCodeTitle = thisFirstObj.codeTitle;

		if(parentObjCode !=='') {
			baseLink += '&'+parentObjCodeTitle+'='+parentObjCode;
		}
	}


	var str = '';
	var actionLink='';
	
	var thisCode, thisCodeTitle, thisTitle, thisLink, thisChildFlag, thisCrLfFlag;
	var startFlag = true;
	var startStr = '&nbsp;&nbsp;-&nbsp;';
	
	str += this.bindTag('3','BEGIN')+'\n';									//	3단계 시작

	for (var k=0; k < thisObj.length; k++) {
		thisCode 			= thisObj[k].code; 
		thisCodeTitle = thisObj[k].codeTitle; 
		thisTitle 		= thisObj[k].title;
		thisLink 			= thisObj[k].linkPage
		thisChildFlag = thisObj[k].childFlag;
		thisCrLfFlag	= thisObj[k].crlf;

		if (thisCode.length < 10) {
			if (this.m_gubn=='D')	actionLink = '/dest/dest.asp?m_gubn=D';
			else actionLink = '/prog/prod/list.asp?m_gubn='+this.m_gubn;
		}

		else actionLink = baseLink;
		
		if (startFlag) str +=startStr;

		str +=this.setLink(thisCode, thisCodeTitle, thisTitle, thisLink, actionLink);
		
		if (thisCrLfFlag) {
			str +='<br>\n';
			startFlag = true;
		}
		else {
			str +=' | ';
			startFlag = false;
		}
	}	
	str += this.bindTag('3','END')+'\n';
					
	return str;
}
	

bindingSubData.prototype.setLink = function(thisCode, thisCodeTitle, thisTitle, thisLink, thisBaseLink) {
	var str='';
	// 배열 형태인 경우 처리 변경		
	if (typeof(thisCode)=='object') {
		var linkObjFlag = false;
		if(typeof(thisLink)=='object') linkObjFlag = true;

		for(var i=0; i < thisCode.length; i++) {
			if(linkObjFlag) str +=this.setLinkUtil(thisCode[i], thisCodeTitle, thisTitle[i], thisLink[i], thisBaseLink);
			else str +=this.setLinkUtil(thisCode[i], thisCodeTitle, thisTitle[i], thisLink, thisBaseLink);

			if (i < thisCode.length-1) str +=' | ';  
		}
	}
	else {
		str = this.setLinkUtil(thisCode, thisCodeTitle, thisTitle, thisLink, thisBaseLink);
	}
	
	return str;
}

	
bindingSubData.prototype.setLinkUtil = function(thisCode, thisCodeTitle, thisTitle, thisLink, thisBaseLink) {
	var str=''; 
	var link = '';
	
	switch (typeof(thisLink)) {
		case 'string'	:	
			link = thisLink;
			break;
		
		case 'function' :
			link = eval(thisLink);
			break;
			
		case 'boolean' :
			if (thisLink) {
				if (this.m_gubn	=='D') {
					if(thisCode.length==10) link = thisBaseLink+'&'+thisCodeTitle+'='+thisCode;
					else link = thisBaseLink+'&m_type='+thisCode+'&'+thisCodeTitle+'='+thisCode;
				}
				else {
					link = thisBaseLink+'&'+thisCodeTitle+'='+thisCode;
				}
				
			}
			break;
	}
		
	if (link !=='') str += '<a href="'+link+'">'+thisTitle+'</a>';
	else str += thisTitle;
	
	return str;
}


bindingSubData.prototype.bindingLeft = function() {
	var firstObj = 	this.thisTargetObj['myData'];
	
	var secondObj, thirdObj, dispMsg;
	var str = '';
	
	for(var i=0; i < firstObj.length;i++) {
	
		str += this.baseTableTag('BEGIN')+'\n';				// 바인딩 시작<table>
		str += this.bindTag('1','BEGIN')+'\n'				// 1단계 (대륙) 바인딩 시작		<tr><td>																						
		str += this.bindDataObj(firstObj[i])+'\n';		// 1단계 링크
		str += this.bindTag('1','END')+'\n';					// </td></tr>

		secondObj =	{};											// 2단계 바인딩 시작, 이 부분은 태그가 이상해서 그냥 하드코딩	
		thirdObj  =	{};
		dispMsg 	= '';		

		if (firstObj[i].childFlag) {
			if (this.initMType.substring(0,1)=='E') this.initMType='EU';
			else this.initMType=this.initMType;
			
			//if (initMType.substring(0,1)==firstObj[i]['code'].substring(0,1)) dispMsg='block';
			if (this.initMType==firstObj[i]['code']) dispMsg='block';
			else dispMsg='none';
			
			str += '<tr><td class="dot_line"></td></tr>\n';
			str += '<tr>\n';
			str += '	<td style="padding:1px 0px 1px 0px;" valign="top">\n';

			str	+= '	<div id="bindDiv" style="display:'+dispMsg+'">\n';
			str	+= this.baseTableTag('BEGIN')+'\n';
			str	+= '		<tr>\n';
			str	+= '			<td style="padding:5px; line-height:22px;" bgcolor="#f5f6f6" valign="top">\n';
			
			str	+= this.baseTableTag('BEGIN')+'\n';			// 2, 3단계 시작			

			secondObj = firstObj[i].second;
			
			for(var j = 0; j < secondObj.length; j++) {				//  2단계 시작
				str += this.bindTag('2','BEGIN')+'\n';											//	2단계 바인딩
				
				if (firstObj[i]['code']=='EU') str += this.bindDataObj(secondObj[j]);
				else str += this.bindDataObj(secondObj[j], firstObj[i]);
				
				str += this.bindTag('2','END')+'\n';

				if (secondObj[j].childFlag) {
					thirdObj = secondObj[j].third;
					//	3단계 처리
					str += this.bindThirdObj(thirdObj, secondObj[j], firstObj[i]);
				}
			}
			
			str += this.baseTableTag('END')+'\n';

			str += '			</td>\n';
			str += '		</tr>\n';
			str += '<tr><td class="dot_line"></td></tr>\n';
			
			str += this.baseTableTag('END')+'\n';
			str += '	</div>\n';
			str += '	</td>\n';
			str += '</tr>\n';

		}	
			
		str += this.baseTableTag('END')+'\n';
	}
	
	this.viewDiv.innerHTML = str;
}


bindingSubData.prototype.bindingLeftTheme = function() {
	var theme = 	this.thisTargetObj['theme'];

	var firstObj = this.thisTargetObj['myData'];
	var secondObj, thirdObj, dispMsg;
	var str = '';

	for(var i=0; i < firstObj.length;i++) {
		str += this.baseTableTag('BEGIN')+'\n';				// 바인딩 시작<table>
		str += this.bindTag('1','BEGIN')+'\n'					// 1단계 (대륙) 바인딩 시작		<tr><td>																						
		str += this.bindDataObj(firstObj[i])+'\n';		// 1단계 링크
		str += this.bindTag('1','END')+'\n';					// </td></tr>

		secondObj =	{};											// 2단계 바인딩 시작, 이 부분은 태그가 이상해서 그냥 하드코딩	
		thirdObj  =	{};
		dispMsg 	= '';		

		if (firstObj[i].childFlag) {

			if (this.initMType.substring(0,1)=='E') this.initMType='EU';
			else this.initMType=this.initMType;

			if (this.initMType==firstObj[i]['code']) dispMsg='block';
			else dispMsg='none';

			str += '<tr><td class="dot_line"></td></tr>\n';

			if (firstObj[i].second != '')
			{
					str += '<tr>\n';
					str += '	<td style="padding:1px 0px 1px 0px;" valign="top">\n';
		
					str	+= '	<div id="bindDiv" style="display:'+dispMsg+'">\n';
					str	+= this.baseTableTag('BEGIN')+'\n';
					str	+= '		<tr>\n';
					str	+= '			<td style="padding:5px; line-height:22px;" bgcolor="#f5f6f6" valign="top">\n';
					
					str	+= this.baseTableTag('BEGIN')+'\n';			// 2, 3단계 시작			

					if (firstObj[i].second) {
						secondObj = firstObj[i].second;
						
						for(var j = 0; j < secondObj.length; j++) {				//  2단계 시작
							str += this.bindTag('2','BEGIN')+'\n';											//	2단계 바인딩
							
							if (firstObj[i]['code']=='EU') str += this.bindDataObj(secondObj[j]);
							else str += this.bindDataObj(secondObj[j], firstObj[i]);
							
							str += this.bindTag('2','END')+'\n';
			
							if (secondObj[j].childFlag) {
								thirdObj = secondObj[j].third;
								
								//	3단계 처리
								str += this.bindThirdObj(thirdObj, secondObj[j], firstObj[i]);
								
							}
						}
					}
					
					str += this.baseTableTag('END')+'\n';
		
					str += '			</td>\n';
					str += '		</tr>\n';
					str += '<tr><td class="dot_line"></td></tr>\n';
					
					str += this.baseTableTag('END')+'\n';
					str += '	</div>\n';
					
					str += '	</td>\n';
					str += '</tr>\n';
			}

		}	
		str += this.baseTableTag('END')+'\n';
		
	}

	this.viewDiv.innerHTML = str;
}

// 상단 서브 메뉴
bindingSubData.prototype.bindingTopSubMenu = function() {
	var theme = 	this.thisTargetObj.theme;
	var firstObj = this.thisTargetObj.myData;
	
	var headerSecondLink,headerDestLink ;

	var table = '<table height="11" border="0" cellpadding="0" cellspacing="0"><tr>';
	var tableEnd = '</tr></table>';

	var blankTd = '<td width="15"></td>';
	var searchTd = '<td><a href="/prog/prod/searchList.asp"><img src="http://image.lesvacances.co.kr/img/new_tour/new_tit/menu_search.gif" border="0"></a></td>'+blankTd;
	var destTd = '<td><A HREF="/main/theme_dest.asp?m_gubn='+theme+'&m_type=dest" class="submenu"><img src="http://image.lesvacances.co.kr/img/new_tour/new_tit/DEST.gif" border="0"></A></td>'+blankTd;

	if (this.m_gubn=='D') {
		for(var i=0; i < firstObj.length; i++) {
			table +=	'<td><a href="'+firstObj[i].linkPage+'" class="submenu"><img src="http://image.lesvacances.co.kr/img/new_tour/new_tit/'+firstObj[i].code+'.gif" border="0"></a></td>'+blankTd;
		}
		table +=searchTd;
	}
	else {
		var subTopThemeBind = function(subTopObj) {
			var str = "";
			for(var j=0; j < subTopObj.code.length; j++) { 
				str +=	'<td><a href="/prog/prod/list.asp?m_gubn='+theme+'&m_type='+subTopObj.code[j]+'" class="submenu"><img src="http://image.lesvacances.co.kr/img/new_tour/new_tit/'+theme+subTopObj.code[j]+'.gif" border="0"></a></td>'+blankTd;
			}
			
			return str;
		}
		
		var myObj = {};
		var onlyLastFlag = true								// 마지막 object만 체크 여부

		if ((theme == "R")||(theme=="T")) onlyLastFlag = false;
		
		table += destTd;
		
		if(onlyLastFlag) {
			myObj = firstObj[firstObj.length-1] ;
			table += subTopThemeBind(myObj);
			
		}
		else {
			var myObjArr = [ firstObj[firstObj.length-2] , firstObj[firstObj.length-1] ];
			
			for(var i=0; i < myObjArr.length; i++) {
				myObj = myObjArr[i];
				table += subTopThemeBind(myObj);
			}
		}
		
	}
	table += tableEnd;

	this.viewDiv.innerHTML = table;
}


function openLeftMenuFirst(num) {
	var obj = document.getElementsByName('bindDiv');
	
	if (obj.length > 0) {
		for(var i=0; i < obj.length; i++) {
			if (i==num) obj[i].style.display='inline';
			else obj[i].style.display='none';
		}
	}
}

