/*********************************************************

	made by iNum, Web Development Team, dcinside corp.
	
	2007.04.11.

**********************************************************/



function GidManager(_inAjaxC,_inAjaxC2){

	var AJC, AJC2;
	if(_inAjaxC != null && _inAjaxC2 != null){
		AJC = _inAjaxC;
		AJC2 = _inAjaxC2;
		//setTimeout("GEID(\"AJAX_GID_STAT\").innerHTML = \"ON\";",400);
		//alert(AJC);
	}
	
	var GalleryIDs = [];
	var className = "GidManager";
	var Menus = [];

	var test = [];
	test['ttt'] = 2;
	test['2222'] = 1;

	var debug = [];


	var scrapData = [];
	var albumData=[];
	var mylogData = [];
	
	init();
//	setMenu();
	

	// -------------------------------------
	function init(){
		//function(inCode, inId, inName, inIsUse, inTypeCode, inParentCode) {
		//스페셜
		try{		
			//resetGalleryData();

		}catch(e){
			errAlert(e, className+".init()");
		}
	}

	//var bindMenus = function (pMenusSeq, 

	this.goToGallely = function(gno, pno){
		var query = [];
		var gid="";
		if(chkNull(gno)) {
			for(var i = 0 ; i < GalleryIDs.length ; i++){
				if(GalleryIDs[i].code =="GALLERY_"+gno){
					gid=GalleryIDs[i].id;
				}
			}
//			alert(gid);
			query[query.length] = {name : "id", value : gid};
		}
		else 		return;
		
		if(chkNull(pno)) query[query.length] = {name : "no" , value : pno};
//		alert(createQuery(query));
		if(gid != "") window.open(C_URL.gallery+'/list.php?' + createQuery(query));//window.open('http://gall.dcinside.com/list.php?' + createQuery(query));
		else alert("해당 갤러리에 접근할 수 없습니다.");

	}
	

	this.receive_resetGalleryData = function(){
		try{
			var dObj = convertFunc(AJC.getAHAH());
			if(dObj.gdata.length > 0){
				Menus = [];
				GalleryIDs = [];
				for(var i = 0 ; i < dObj.gdata.length ; i++){
					//function (inCode, inId, inName, inIsUse, inTypeCode, inParentCode, inLevel) {
					setData(dObj.gdata[i].code, dObj.gdata[i].id, dObj.gdata[i].name, dObj.gdata[i].isUse, dObj.gdata[i].typeCode, dObj.gdata[i].parentCode, dObj.gdata[i].level, dObj.gdata[i].glevel);
				}
				if(TYPE==2)  resetCategoryData(2);
				else {
					MCont.reMenu_gdata();
					MCont.endLoading(_GALLR);
				}

				
			}
		}catch(e){
			alert("갤러리 카테고리 정보를 불러올 수 없습니다. 다시한번 시도해 주십시오.");

		}
		
	}

	this.resetGalleryData = function(type){
		resetGalleryData(type);
	}

	function loadingImg(status){
		if(status){
			GEID('menuGlog_main').innerHTML = "<table width='172' height='100' border='0' cellspacing='0' cellpadding='0'>" + "<tr><td align=center valign=middle> <img src='"+C_URL.image+"/checke_loader.gif' border=0><br> 로드중입니다</td></tr></table>";
		}
	}

	function resetGalleryData(type){
		//alert("갤러리 정보를 갱신합니다");

		loadingImg(true);
		if(type == null) {
			TYPE = 1;
		}else{
			TYPE = type;
		}

		var query = [];
		query[query.length] = {name:"mode", value:"CALL_GDATA"};
		query[query.length] = {name:"gid", value:G_ID};		

		AJC.getAHAHData("/ajdb.php", function(){ GidMgr.receive_resetGalleryData(); }, query);		

	}



	this.receive_resetCategoryData = function(iType){
		try{
			var dObj = convertFunc(AJC2.getAHAH());
			var isScrap = false;
			var isAlbum = false;
			var isMylog = false;
			if(dObj.cdata.length > 0){
				scrapData = [];
				albumData = [];
				mylogData = [];
				for(var i = 0 ; i < dObj.cdata.length ; i++){
					//f inputData(no, seq, type, code, num, name){
					inputData(dObj.cdata[i]);
					if(dObj.cdata[i].type==_SCRAP) isScrap=true;
					else if(dObj.cdata[i].type == _ALBUM) isAlbum=true;
					else if(dObj.cdata[i].type == _MYLOG) isMylog=true;
				}
				MCont.reMenu_cdata();

				MCont.endLoading(_SCRAP);
				MCont.endLoading(_ALBUM);
				MCont.endLoading(_MYLOG);

				if(iType != null)  MCont.LoadingChk(iType);
				if(TYPE==2) {
					MCont.reMenu_gdata();
					MCont.endLoading(_GALLR);
					MCont.LoadingChk(_GALLR);
					TYPE=null;
				}
			}
		}catch(e){
			alert("갤러리 카테고리 정보를 불러올 수 없습니다. 다시한번 시도해 주십시오.");
		}
		
	}

	this.resetCategoryData = function(iType){
		resetCategoryData(iType);
	}

	function resetCategoryData(iType){
		//alert("갤러리 정보를 갱신합니다");
		if(iType != null)  MCont.LoadingChk(iType);
		loadingImg(true);

		//MCont.startLoading(_SCRAP);
		//MCont.startLoading(_ALBUM);

		var query = [];
		query[query.length] = {name:"mode", value:"CALL_CDATA"};
		query[query.length] = {name:"gid", value:G_ID};

		AJC2.getAHAHData("/ajdb.php", function(){ GidMgr.receive_resetCategoryData(iType); }, query);

	}




	// I / O

	this.setScrap = function(data){
		scrapData = arrayCopy(data);
	}
	this.setMylog = function(data){
		mylogData = arrayCopy(data);
	}
	this.setAlbum = function(data){
		albumData = arrayCopy(data);
	}

	this.getMylog = function(){
		return mylogData;
	}
	this.getScrap = function(){
		return scrapData;
	}
	this.getAlbum = function(){
		return albumData;
	}
	this.getCData = function(type){
		if(type==_MYLOG) return mylogData;
		if(type==_SCRAP) return scrapData;
		if(type==_ALBUM) return albumData;

	}

	var myIDc = 1; 
	this.addData = function(type, name){
		var myID = Math.round(Math.random() * 10000000)
		setCategoryDatas({no : myIDc++ + "" + myID, seq : 0, name : name, level : "A", stat:"N", type:type}, true);
	}

	this.checkScrapData = function () {
		var strB =[];
		for(var i = 0 ; i < scrapData.length; i++){
			strB[strB.length] = "arrayNo:" + i + ", uid : " + scrapData[i].uid + ", seq : " + scrapData[i].seq + ", num : " + scrapData[i].num + ", name : " + scrapData[i].name + ", stat : " + scrapData[i].stat;
		}
	}
	this.checkAlbumData = function () {
		var strB =[];
		for(var i = 0 ; i < albumData.length; i++){
			strB[strB.length] = "arrayNo:" + i + ", uid : " + albumData[i].uid + ", seq : " + albumData[i].seq + ", num : " + albumData[i].num + ", name : " + albumData[i].name + ", stat : " + albumData[i].stat;
		}
	}

	/*this.setData = function (inCode, inId, inName, inIsUse, inTypeCode, inParentCode, inLevel, inGLevel) {
		 setData(inCode, inId, inName, inIsUse, inTypeCode, inParentCode, inLevel, inGLevel);
	}*/

	function setData(inCode, inId, inName, inIsUse, inTypeCode, inParentCode, inLevel, inGLevel) {
		/*
			inTypeCode : Galery, Link, Main

		*/

		var seq = GalleryIDs.length;

		GalleryIDs[seq] = {
			code : inCode,	
			id   : inId,
			name : inName, 
			isUse: inIsUse,
			type : inTypeCode,
			parentCode : inParentCode,
			level : inLevel,
			childNum : 0,
			select : false,
			postNum: -1,
			replyNum : -1,
			glevel : inGLevel,
			uid:-1
		};
		/*
		if(inParentCode != '' || inParentCode != null) {
			for(var i = 0 ; i < GalleryIDs.length ; i++){
				
				if(GalleryIDs[i].code == inParentCode){
					GalleryIDs[i].childNum++;
					break;
				}

			}
		}*/

		var inMenus = -1;
		//var level = 0;

		for(var i = 0 ; i < Menus.length ; i++) 
			if(Menus[i].code == inParentCode) {
				inMenus=i;
				break;
			}
		
		if(inMenus == -1) {
			var tempArray = [];
			tempArray[tempArray.length] = GalleryIDs[seq];

			Menus[Menus.length] = {
				code : inParentCode,
				data : tempArray,
				level : inLevel
			}
		}else{
			var tempArray = Menus[inMenus].data;
			tempArray[tempArray.length] = GalleryIDs[seq];

			Menus[inMenus].data = tempArray;
			//Menus[inMenus].level = level;
		}
		/*
		if(Menus[inParentCode] == null) Menus[inParentCode] = [];

		var tempArray = Menus[inParentCode];
		var tSeq = tempArray.length;
		tempArray[tSeq] = new Object();
		tempArray[tSeq] = GalleryIDs[seq];
		Menus[inParentCode] = tempArray;

		debug[debug.length] = tempArray.length;*/
		
	}

	function suckMenuByCode(code){
		for(var i=0; i<Menus.length;i++){
			if(Menus[i].code == code){
				return Menus[i].data;
			}
		}
		return false;
	}

	this.inputData = function(no, seq, type, code, num, rnum, name){
		inputData(no, seq, type, code, num, rnum, name);
	}

	function inputData(data){
		//no, seq, type, code, num, rnum, name
		//dObj.cdata[i].no, dObj.cdata[i].seq, dObj.cdata[i].type, dObj.cdata[i].code, dObj.cdata[i].num, dObj.cdata[i].rnum, URLdecode(dObj.cdata[i].name, "URI")
		try{
			switch(data.type){
				case _GALLR : 
					inputNumber(data.code, data.num, data.rnum, data.no, data.level);
					break;
				case _SCRAP : 
					setCategoryDatas(data);
					break;
				case _ALBUM :
					setCategoryDatas(data);
					break;
				case _MYLOG :
					setCategoryDatas(data);
					break;
			}
		}catch(e){
			errAlert(e, "GidManager_js.inputData()");
		}

	}

	function setCategoryDatas(data, addFlag){
		try{
//			
			if(addFlag == null) addFlag =false;
			var categoryData;
			if(data.type == _SCRAP) categoryData = scrapData;
			else if(data.type == _ALBUM) categoryData = albumData;
			else if(data.type == _MYLOG) categoryData = mylogData;
			else {
				throw("IO ERROR");
				return;
			}

			if(addFlag) data.seq = categoryData.length + 1;


			categoryData.push({
				uid : data.no,
				seq : data.seq,
				num : data.num,
				name : URLdecode(data.name, "URI"),
				level : data.level==0?"A":data.level,
				stat : data.stat
			} );

		}catch(e){
			alert(e);			
		}

	}
/*
	function setScrapData(uid, seq, num, name, stat){
		if(stat == null || stat =="" ) stat = '0';
		scrapData[scrapData.length] = {
			uid : uid,
			seq : seq,
			num : num,
			name : name,
			stat : stat
		}
	}

	function setMylogData(uid, seq, num, name, stat){
		if(stat == null || stat =="" ) stat = '0';
		mylogData.push( {
			uid : uid,
			seq : seq,
			num : num,
			name : name,
			stat : stat
		} );

	}

	function setAlbumData(uid, seq, num, name, stat){
		if(stat == null || stat =="" ) stat = '0';
		albumData[albumData.length] = {
			uid : uid,
			seq : seq,
			num : num,
			name : name,
			stat : stat
		}
	}
*/
	/*function inputAlbum(uid, seq, num, name){
		setAlbumData(uid, seq, num, name);
	}

	function inputScrap(uid, seq, num, name){
		setScrapData(uid, seq, num, name);
	}
	function inputMylog(uid, seq, num, name){
		setMylogData(uid, seq, num, name);
	}*/

	function inputNumber(code, num, rnum, uid, level){
		if(num <= 0 && rnum <= 0) return;
		if(code ==null || code =="") return;
		var rCode = "";
		for(var i=0; i<GalleryIDs.length;i++){
			if(GalleryIDs[i].code == code){
				rCode = GalleryIDs[i].parentCode;
				GalleryIDs[i].postNum = num;
				GalleryIDs[i].replyNum = rnum;
				GalleryIDs[i].inUse = true;
				GalleryIDs[i].uid = uid;
				GalleryIDs[i].level = level;
				break;
			}
		}
		if(rCode != ""){
			for(var i=0; i<Menus.length;i++){
				if(Menus[i].code =='MAIN'){
					for(var j=0; j<Menus[i].data.length;j++){
						if(Menus[i].data[j].code == rCode) {
							Menus[i].data[j].inUse = true;
						}
					}
					break;
				}
				if(Menus[i].code == rCode){
					for(var j=0; j<Menus[i].data.length;j++){

						if(Menus[i].data[j].code == code) {
							Menus[i].data[j].postNum = num;
							Menus[i].data[j].replyNum = rnum;
							Menus[i].data[j].inUse = true;
							//Menus[i].data[j].uid   = uid;
						}
					}
					break;
				}
			}
		}
		return false;
	}

	function dbConvert(type){
		var ts;
		if(type==_SCRAP) ts = scrapData;
		else if(type==_ALBUM) ts = albumData;
		else if(type==_MYLOG) ts = mylogData;
		else return;

		var strB = [];
		for(var i=0 ; i < ts.length; i++){
			var strB2 =[];
			for(var index in ts[i]) strB2[strB2.length] = BRescape(ts[i][index]);
			strB[strB.length] = strB2.join(_EBR);
		}
		//alert(strB.join(_LBR));
		//return;
		var convertData = encodeURIComponent(strB.join(_LBR));
		
		var query = [];
		query[query.length] = {name:"gid", value:G_ID};
		query[query.length] = {name:"mode", value:"CI"};
		query[query.length] = {name:"data", value:convertData};
		query[query.length] = {name:"type", value:type};

		AJC.getAHAHData("/ajdb.php", function() { eval("GidMgr.receive_dbConvert();"); }, query);
		loadingImg(true);

	}

	function BRescape(str){
		if(str == null) str = "";
		str = str+"";
		if(str.search(_LBR)>=0) str = str.replace(_LBR, "x");
		if(str.search(_EBR)>=0) str = str.replace(_EBR, "x");

		if(str.search(_LBR)>=0 || str.search(_EBR)>=0) 
			str = BRescape(str);

		return str;
	}

	this.receive_dbConvert = function(){
		//alert(AJC.getAHAH());
		this.resetCategoryData();
	}
	
	function deleteDB(type, uid){
		var query = [];
		query[query.length] = {name:"gid", value:G_ID};
		query[query.length] = {name:"mode", value:"CD"};
		query[query.length] = {name:"uid", value:uid};
		query[query.length] = {name:"type", value:type};

		AJC.getAHAHData("/ajdb.php", function() { GidMgr.receive_deleteDB(); }, query);		
	}

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

	this.receive_deleteDB = function(){
		var dObj = convertFunc(AJC.getAHAH());
		if(dObj.result == -1000 || dObj.result==0) alert("이미 삭제되었거나 없는 데이터입니다. 카테고리 정보를 새로고침 해주십시오");
		else if(dObj.result == 1) alert("삭제가 완료되었습니다. 관련 정보가 영구 삭제되었습니다.");
	}
	this.del = function(type, uid){
		deleteDB(type, uid);
	}
	this.convert = function(type){
		dbConvert(type);
	}
	this.getMenu = function(code){
		return suckMenuByCode(code);
	}
	this.getLength = function(){
		var strArr = [];
		var mainList=[];
		for(var i = 0 ; i < Menus.length ; i++){
			mainList[mainList.length] = Menus[i].code;
			for(var j = 0 ; j < Menus[i].data.length; j++)
				strArr[strArr.length] = Menus[i].data[j].name + " // ";
		}
		//alert(debug.length);
		//alert("test : " + test.length);
//		alert("Menuse Length : " + Menus.length);
//		alert("debug result : " + debug.join(" / "));
//		alert("strArr : " + strArr.join(""));

///		alert("MainMenu List : " + mainList.join("\n"));
		
		return GalleryIDs.length;
		//return strArr.length;//strArr.join('');

	}

	this.getMenusVar = function(){
		return Menus;
	}


// GidManager Class Function End
}
