//에러 헨들러
//onerror=handleErr;

//현재 출력할 메뉴아이디를 저장하는 전역변수
var _current_menu_id=0;

//플래쉬쇼 아이디를 저장
var _current_show_id="";

//에러 메시지 출력
function handleErr(msg, url, l)
{
	alert("Err Page('"+msg+":"+l+"')");
	//alert("메뉴정보 오류");
	return true;
}

//서브메뉴 출력
//cms_conf 변수를 사용
//cms_conf[0]==> layout_id
//cms_conf[1]==> sub_bg
function make_sub_image()
{
	//현재의 탑메뉴 번호를 구함
	//다른 함수들을 위해 _current_menu_id에 저장
	if(_current_menu_id == 0)
	{
		mid=get_menu_id();
		if(mid==-1 ) mid=find_url_menu_id();
		_current_menu_id=mid;
	}

	//탑메뉴의 배열을 구함
	info=get_menu_info(mid);

	//최상위 메뉴가 아니면 부모 번호를 다시구함
	if(info[1] !=2)
	{
		mid=find_menu_parent(info[1]);
		//메뉴 정보를 다시구함
		info=get_menu_info(mid);
	}

	//탑메뉴에 설정된 배경이미지가 있으면
	var mkstr="";

	if(info[13].length > 0 )
	{
		var img=info[13].split(":");
		if(img[0]=="image")
		{
			mkstr="/home/image/"+img[1];
			mkstr=return_img_html(mkstr, "100%", "100%");
		}
		else if(img[0]=="show")
		{
			_current_show_id=img[1];
			mkstr=return_show_html(img[1]);
		}
	}
	else if(cms_conf[1])
	{
		img=cms_conf[1].split(":");
		if(img[0]=="image")
		{
			mkstr="/home/image/"+img[1];
			mkstr=return_img_html(mkstr, "100%", "100%");
		}
		else if(img[0]=="show")
		{
			_current_show_id=img[1];
			mkstr=return_show_html(img[1]);
		}
		else
		{
			mkstr="/home/image/"+img[0];
			mkstr=return_img_html(mkstr, "100%", "100%");
		}
	}
	//템플릿의 기본 서브 이미지를 사용
	else
	{
		if(cms_conf[0])
			retstr="/cms/"+cms_conf[0]+"/image/intro.gif";
		else
			retstr="/home/image/intro.gif";
		retstr=return_img_html(retstr, "100%", "100%");
	}
	document.write(mkstr);
	return true;
}


//플래쉬 쇼를 출력하기 위한 html생성하여 리턴
function return_show_html( show_id )
{
	var mkstr="";
	var info="";

	if(!show_id) return mkstr;
	
	info=eval("show_"+show_id);

	//트렉번호가 있는지 검사
	if(info[0][9])
		tnum=info[0][9];
	else
		tnum="";

	mkstr+="<script src='/icons/app/show/link.js'  type='text/javascript'></script>";
	mkstr+="<object classid='clsid:D27CDB6E-AE6D-11cf-96B8-444553540000' id='cms_flash' title='플래시' width='"+info[0][5]+"' height='"+info[0][6]+"' codebase='http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab'>";
	mkstr+="<param name='wmode' value='transparent' />";
	mkstr+="<param name='movie' value='/icons/app/show/main.swf?id="+show_id+"&cms_id="+cms_conf[0]+"&tracknum="+tnum+"' />";
	mkstr+="<embed src='/icons/app/show/main.swf?id="+show_id+"&cms_id="+cms_conf[0]+"&tracknum="+tnum+"' id='cms_flash2' wmode='transparent' width='"+info[0][5]+"' height='"+info[0][6]+"'  pluginspage='http://www.macromedia.com/go/getflashplayer' /></object>";
	mkstr+="<form name='frm' style='margin:0;'>";
	mkstr+="<input type='hidden' id='aa' name='aa' value='"+show_id+"' />";
	mkstr+="<input type='hidden' id='bb' name='bb' value='"+cms_conf[0]+"' />";
	mkstr+="<input type='submit' name='btn_submit' style='display:none;' /></form>";
	return mkstr;
}

function return_img_html(iname, width, height)
{
	var retstr='';
	if(!iname) return retstr;
	if(!width) width='100%';
	if(!height) height='100%';

	if(iname.length < 5) return retstr;

	cutstr=iname.substr( (iname.length) -3, 3);
	cutstr=cutstr.toLowerCase();

	if(cutstr=='gif' || cutstr=='png' || cutstr=='jpg' || cutstr=='bmp')
	{
		retstr="<img src='"+iname+"' width='"+width+"' height='"+height+"' border='0' alt='"+iname+"' />";
	}
	else if(cutstr=='swf')
	{
		retstr+="<object classid='clsid:D27CDB6E-AE6D-11cf-96B8-444553540000' id='cms_flash' title='플래쉬' width='"+width+"' height='"+height+"' codebase='http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab'>";

		retstr+="<param name='wmode' value='transparent' />";
		retstr+="<param name='movie' value='"+iname+"' />";
		retstr+="<embed src='"+iname+"' id='cms_flash2' wmode='transparent' width='"+width+"' height='"+height+"'  pluginspage='http://www.macromedia.com/go/getflashplayer' />";
		retstr+="</object>";
	}
	return retstr;
}

//shell에서 left메뉴를 출력
//ex) "30",  "16",  "교직원공지사항11" , "/notice.brd", "shell=/index.shell:30", "0123456789", "로그인후 사용하세요^관리자만 사용가능합니다", "_self", "", "width/500,height/500," 
function make_left_menu()
{
	var mkstr="";
	var user_lv="0";
	var len=all_menus.length;
	mid=get_menu_id();
	//메뉴번호가 제대로 오지 않은 경우
	//이경우 처음부터 끝까지 URL을 비교하여 해당 메뉴아이디를 구함
	if(mid== -1 )
	{
		mid=find_url_menu_id();
	}

	//mid에 맞는 배열 구함
	var info=get_menu_info(mid);
	//최상위 메뉴가 아니면 부모 번호를 다시구함
	if(info[1] !=2)
	{
		mid=find_menu_parent(info[1]);
		//메뉴 정보를 다시구함
		info=get_menu_info(mid);
	}

	if(!info[2])
	{
		document.write(mid);
		return false;
	}


	//최상위 메뉴 이름을 출력
	mkstr+="<div class='cap'><div class='title'>"+info[2]+"</div></div><div class='mlist'>";

	if(info[16]=="text_multi")
	{
		document.write(mkstr);
		show_multi_menu(info[0]);
		mkstr="</div><div class=\"mbase\"></div>";
		document.write(mkstr);
		return true;
	}

	idx=all_menus.length;
	flag=0;
	for(x=0; x<idx; x++)
	{
		//자기 자신은 출력하지 않음
		if(all_menus[x][0]==mid) 
		{
			flag=1;
			continue;
		}
		if(flag==0 ) continue;

		//다른 top메뉴로 넘어가면 출력중지함
		if(all_menus[x][1]==2 && mid != all_menus[x][0] ) break;

		//view(15번째값) 값을 비교
		str=all_menus[x][15];

		//live로 설정되어 있지않으면 표시하지 않음
		if(str.indexOf("live") == -1) continue;

		//sub에 나오도록 설정되어 있지 않으면 제거
		if(str.indexOf("sub") == -1) continue;

		//다음 상위 메뉴로 넘어가면 정지
		if(all_menus[x][1]==2) break;


		//표시등급 체크 ==> all_menus[x][14]
		if(all_menus[x][14].length > 0 && all_menus[x][14].indexOf(user_lv) == -1 ) continue;


		//1차 depth 이면
		if(all_menus[x][1]==mid ) 
		{
			class1="m_out";
			class2="m_in";
		}
		//2차 depth이면
		else
		{
			class1="m_out2";
			class2="m_in2";
		}
		link="";
		link=make_link_str(all_menus[x]);

		mkstr+="<div class='"+class1+"'>";
		mkstr+="<div class='"+class2+"'>"+link+"</div>";
		mkstr+="</div>";
	}//for end
	mkstr+="</div><div class=\"mbase\"></div>";
	document.write(mkstr);
	return true;
}//make_menu_menu end


//sub_type을 text_multi로 설정하면 실행
//depth가 1인 메뉴를 2줄로 표기
function show_multi_menu( mid )
{
	var idx=0;
	var info=0;
	var all_str="";
	//x를 선언하지 않으면 다른 함수들과 겹쳐서 x값이 사라지는 경우가 생김
	var x=0;
	idx=all_menus.length;

	for(x=0; x< idx ; x++)
	{
		info="";
		info=all_menus[x];
		//자기 자신은 제외
		if(info[0] == mid) continue;

		//view 값 처리
		//top옵션의 경우 top메뉴에서 처리
		if(info[15].indexOf("live") == -1 ) continue;
		if(info[15].indexOf("sub") == -1) continue;

		link=make_link_str(info);
		if(!link) continue;

		//1차 depth이면
		//depth 판단 ==> 0 depth일경우만 처리
		//1depth find_multi_menu에서 처리
		if(mid==info[1])
		{
			all_str+="<div class='m_out'>";
			all_str+="<div class='m_in'>"+link+"</div>";
			all_str+="</div>";
			//multi로 출력할 메뉴를 구함
			all_str+=find_multi_menu(info[0]);
		}
	}//for 
	document.write(all_str);
	return true;
}//show_multi_menu

//idno에 해당하는 하위메뉴가 존재하면 m_out3로 설정하여 리턴
//없으면 리턴 없음
function find_multi_menu(idno)
{
	var cnt=all_menus.length;
	var retstr="";
	var link="";
	var x=0;

	for(x=0; x<cnt; x++)
	{
		if( idno != all_menus[x][1] ) continue;
		info=all_menus[x];

		//view 값 처리
		//top옵션의 경우 top메뉴에서 처리
		if(info[15].indexOf("live") == -1 ) continue;
		if(info[15].indexOf("sub") == -1) continue;

		link=make_link_str(info);
		retstr+="<div class='m_out3'>"+link+"</div>";
	}//for end

	if(retstr.length > 0) retstr="<div class='sm_multi'>"+retstr+"</div>";
	return retstr;
}

//현재 URL의 메뉴 아이디를 구함
function find_url_menu_id()
{
	var path="";
	//pathname은 URL중에서 GET으로 주어지는 옵션을 제외하고 URI만을 리턴
	path=document.location.pathname;
	idx=all_menus.length;
	for(x=0; x<idx; x++)
	{
		if(all_menus[x][3]==path) return all_menus[x][0];
	}

	//all_menus에 포함되어 있지 않으면 첫번째 메뉴를 리턴
	for(x=0; x<idx; x++)
	{
		if(all_menus[x][1]==2) return all_menus[x][0];
	}
	return -1;
}

//mid에 맞는 값을 all_menus에 찾아서 리턴
function get_menu_info(mid)
{
	var idx=all_menus.length;
	for(x=0; x<idx; x++)
	{
		if(all_menus[x][0]==mid) return all_menus[x];
	}
	return false;
}

//shell에서 quick메뉴를 출력
//all_menus를 이용하여 처리
function make_quick_menu()
{
	var len=all_menus.length;
	var quick_id=find_quick_id();
	var mkstr="";
	var user_lv="0";

	//최상위 메뉴 이름을 출력
	mkstr+="<div class='q_div'><div class='cap'></div><div class='mlist'>";

	idx=all_menus.length;
	flag=0;
	for(x=0; x<idx; x++)
	{
		if(!all_menus[x]) continue;
		info=all_menus[x];

		if(info[0] == quick_id) continue;
		if(info[1] != quick_id) continue;

		//표시등급 체크 ==> all_menus[x][14]
		if(all_menus[x][14].length > 0 && all_menus[x][14].indexOf(user_lv) == -1 ) continue;

		link="";
		link=make_link_str(info);

		//사용등급 체크 ==> all_menus[x][5], all_menus[x][6]
		mkstr+=" <div class='m_out'> <div class='m_in' style='cursor:pointer;'>"+link+"</div></div>";
	}//for end
	mkstr+="</div><div class=\"mbase\"></div></div>";
	//학업성취도평가 배너 추가
	document.write(mkstr);
}

//퀴메뉴 아이디를 구해서 리턴 
//없으면 제일 첫번째 메뉴번호를 리턴
function find_quick_id()
{
	var len=all_menus.length;
	var quick_id=0;

	//quick옵션이 on으로 설정되 있는 걸 찾음
	for(x=0; x<len; x++)
	{
		//최상위 메뉴가 아니면 비교하지 않음
		if(all_menus[x][1] !=2 ) continue;
		if(all_menus[x][12] =="on")
		{
			return all_menus[x][0];
		}
	}//for end

	//quick이 on으로 설정된것이 없으면 첫번째 메뉴를 찾아서 리턴
	for(x=0; x<len; x++)
	{
		//최상위 메뉴가 아니면 비교하지 않음
		if(all_menus[x][1] ==2 ) return all_menus[x][0];
	}//for end
	return -1;
}

//parent가 2인걸로 찾아서 리턴
//없으면 첫번째 메뉴 아이디 리턴
function find_menu_parent(mid)
{
	var idx=all_menus.length;
	//비교할 아이디 저장
	cmp_id=mid;
	for(x=0; x<idx; x++)
	{
		if(all_menus[x][0]==cmp_id)
		{
			//최상위 메뉴이면
			if(all_menus[x][1]==2) 
				return all_menus[x][0];
			else
			{
				//다시 찾을 부모번호를 저장
				cmp_id=all_menus[x][1];
				//배열을 처음으로 돌리고 시작함
				//x를 0으로 설정하면 0배열을 건너뛰기 
				x=-1;
			}
		}
	}//for end
	return -1;
}

//현재 URL에서 menu_id를 구해서 리턴
// ex) http://aa.com/notice.brd?shell=/index.shell:100
//메뉴아이디가 없으면 -1 리턴
function get_menu_id()
{
	var mid="", url=document.location.href;
	var list=new Array();
	list=url.split("&");
	//&로 구분된 GET값이 없는 경우 ?로 짤라서 아이디를 구함
	//&값이 없는경우
	if(list.length==1)
	{
		list=url.split("?");
		//?로 구분된 값이 없는 경우
		if(list.length==1)
		{
			return -1;
		}
		list=list[1].split(":");
		//shell에서 메뉴아이디가 없으면
		if(list.length==1)
		{
			return -1;
		}
		return list[1];
	}
	//&가 여러개인 경우
	else
	{
		//처음에는 ?로 짤라서 처리
		list=url.split("?");
		//다시 &로 짜름
		list=list[1].split("&");
		idx=list.length;
		for(x=0 ; x<idx; x++)	
		{
			if(list[x].substring(0, 6)=="shell=")
			{
				list=list[x].split(":");
				//shell값에서 :로 구분된 메뉴아이디가 없으면
				if(list.length==1) 
					return -1;
				else return list[1];
			}
		}
	}
	return -1;
}

//flash show에서 이미지를 출력하기 위한 배열을 리턴
//show_list ==> 쇼의 코드값을 저장
//show_mainflash ==> 코드값에 따라 배열이 생성됨
function flash_banner_init()
{ 
	var info;
	if(_current_show_id)
	{
		info=eval("show_"+_current_show_id);
	}
	return info;
}

//flash show에서 현재 아이디를 구분하기 위해 리턴
function return_to_user()
{ 
	return ""; 
}

//all_menus를 읽어서 등급(put_level)에 따라 사용가능한 메뉴를 리턴
//표시등급을 체크하여 읽을 수 없는 등급이면 parent값을 0으로 설정
//15번 배열에 있는 view값을 비교하여 top에 설정되어 있지 않으면 보이지 않도록 처리
//view ==> live/top/sub 로 저장됨
function return_to_menu_array()
{
	var user_lv="0";
	var len=all_menus.length;
	var cnt=0;
	var newlist=[]; //배열로 선언
	var pid=0;

	//메뉴갯수 만큼 loop
	for(x=0; x<len; x++)
	{
		//quick메뉴이면 나오게 하지 않음
		if(all_menus[x][12]=="on") continue;

		//view(15번째값) 값을 비교
		//live로 설정되어 있지않으면 표시하지 않음
		if(all_menus[x][15].length > 0 && all_menus[x][15].indexOf("live") == -1) continue;
		//top에 나오도록 설정되어 있지 않으면 제거
		if(all_menus[x][15].length > 0 && all_menus[x][15].indexOf("top") == -1) continue;

		//put_level를 비교
		if(all_menus[x][14].length > 0 )
		{
			//설정된 등급이 없으면 모두 쓰는것으로 생각
			//if(str.length==0) continue;
			//여러등급이면 포함되어 있는 검사
			if(all_menus[x][14].indexOf(user_lv) == -1 ) 
			{
				continue;
			}
		}

		//1,2단계 메뉴만을 top.swf에 전달하기 위해 다음과 같이 처리함
		if(all_menus[x][1]=="2") 
		{
			//parent를 비교하기 위해서 저장
			pid=all_menus[x][0];
		}
		else
		{
			//2단계 메뉴가 아니면 건너뜀
			if(pid !=all_menus[x][1] ) continue;
		}

		//top.swf에 리턴할 배열을 생성
		newlist[cnt]=["","","","",""];
		newlist[cnt][0]=all_menus[x][0];
		newlist[cnt][1]=all_menus[x][1];
		newlist[cnt][2]=all_menus[x][2];
		newlist[cnt][3]=all_menus[x][3];
		newlist[cnt][4]=all_menus[x][4];
		cnt++;
	}//for end
	return newlist;
}

//표시등급(put_level), 등급(level), 타겟(target), 쉘(shell)에 따라서
//메뉴 배열 저장(index 0, parent 1, name 2, url 3, shell 4, level 5, message 6, target 7, shell_flag 8, onclcik_option 9, menu_type 10 , quick_id 11, quick 12, sub_image 13, put_level 14, view 15 )
function make_link_str(info)
{
	var menu_str="";
	var user_lv="0";
	if(!info) return menu_str;

	var link=get_menu_url(info);

	//사용가능한 등급인지 판단==>level옵션 판단
	//설정된 등급이 없으면 모두 사용할 수 있는 것으로 판단함
	if(info[5].length==0)
	{
		//target 처리
		if(info[7]=="_popup")
		{
			menu_str="<a href='#' onclick='javascript:window.open(\""+link+"\",\"popup_"+info[0]+"\",\""+info[9]+"\");return(false);'>"+info[2]+"</a>";
		}
		else
		{
			menu_str="<a href='"+link+"' target='"+info[7]+"'>"+info[2]+"</a>";
		}
		return menu_str;
	}
	if( info[5].length > 0 && info[5].indexOf(user_lv) > -1)
	{
		//target 처리
		if(info[7]=="_popup")
		{
			menu_str="<a href='#' onclick='javascript:window.open(\""+link+"\",\"popup_"+info[0]+"\",\""+info[9]+"\");return(false);'>"+info[2]+"</a>";
		}
		else
		{
			menu_str="<a href='"+link+"' target='"+info[7]+"'>"+info[2]+"</a>";
		}
	}
	else
	{
		msg=parse_message(info[6]);
		menu_str="<a href='#' onclick='alert(\""+msg+"\");return(false);'>"+info[2]+"</a>";
	}
	return menu_str;
}

function get_menu_url(info)
{
	var url="";
	if( !info ) return '#';

	var shell="shell=/index.shell:"+info[0];
	
	//쉘을 사용하지 않도록 설정하면
	if(info[8]=="off")
		shell="shell=none";
	
	if(info[10]=="board")
	{
		if(info[3].indexOf("?") > -1 )
			return info[3]+"&amp;"+shell;
		else
			return info[3]+"?"+shell;
	}
	else if(info[10]=="contents")
		return info[3]+"&"+shell;
	else if(info[10]=="application")
		return info[3]+"?"+shell;
	else if(info[10]=="url")
	{
		if(!info[3])
		{
			return "#";
		}
		else
		{
			if(info[3].indexOf("http") > -1)
				return info[3];
			else
				return info[3];
		}
	}
	return '#';
}



