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

iNum, dcinside


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



function ImageView(_cName, _AJC){

		if(_cName == null) return errorStr("클래스 변수명이 필요합니다.");
		if(_AJC == null) return errorStr("AJAX 객체가 필요합니다.");

		var DOBJ; // Div Objects
		
		var STAT = {    // Status
			imgView : false,
			isResize : false,
			isFull   : false,
			moveMenu : false    // false is close
		}; 

		var BackupSize = {
			src : "",
			W : 0,
			H : 0,
			fileNo : -1,
			fileInfo : ""
		};

		var selImg={
			imgNo : -1,
			cNo : -1
		};

		init();

		function init(){
		 resetDiv();
		}

		function resetDiv(){
			DOBJ = {
				shadow : GEID('shadowDiv'),
				image  : GEID('imgShadowDiv'),
				imgBut : GEID('imgShadowBut'),
				imgLod : GEID('imgLoadingDiv')
			};
		}

		this.imageClick = function(pno){
			//alert(pno);
			if(STAT.imgView) return errStr("현재 이미지를 닫은 후 다시 실행하여 주십시오.");
			STAT.isFull=false;
			resetDiv();
			shadowOn();
			LOADING_IMG();			
			getImageUrl(pno);
		}

		this.imageClick_profile = function(fileUrl){
			if(STAT.imgView) return errStr("현재 이미지를 닫은 후 다시 실행하여 주십시오.");
			STAT.isFull=false;
			resetDiv();
			shadowOn();
			LOADING_IMG();
			viewProfilePhoto(fileUrl);

		}

		this.imageClick_cutS = function(fileUrl, fileNo){
			if(STAT.imgView) return errStr("현재 이미지를 닫은 후 다시 실행하여 주십시오.");
			STAT.isFull=false;
			resetDiv();
			shadowOn();
			LOADING_IMG();
			//alert( fileUrl.substr(0, fileUrl.length-2) );
			getImageUrl(fileNo);
			viewProfilePhoto(fileUrl);
		}

		this.imageClick_getU = function(fileNo, type, mylogNo){
			if(STAT.imgView) return errStr("현재 이미지를 닫은 후 다시 실행하여 주십시오.");
			STAT.isFull=false;
			resetDiv();
			shadowOn();
			LOADING_IMG();
			//alert( fileUrl.substr(0, fileUrl.length-2) );
			getImageUrl(fileNo, type, mylogNo);
		}

		this.moveImageReady = function(mInfo, imgNo, cNo){
			var obj_imgSel = GEID('divImgSelector');

			if(STAT.moveMenu && selImg.imgNo == imgNo) {
				disOff(obj_imgSel);
				STAT.moveMenu=false;
				return;
			}
			
			if(imgNo>=0 && cNo>=0) {
				selImg.imgNo = imgNo;
				selImg.cNo = cNo;
				obj_imgSel.innerHTML=getAlbumCategory();
				if(obj_imgSel.innerHTML != "ONEDATA") {
					obj_imgSel.style.left = Number(mInfo.pageX+200 )+ "px";
					obj_imgSel.style.top  = Number(mInfo.pageY+160 )+ "px";
					obj_imgSel.style.display = "";
					STAT.moveMenu=true;
				}
			}
		}
		
		this.moveImage = function(){
			if(GidMgr == null) return;
			if(GEID('cate_album_list').value == "" || GEID('cate_album_list').value == null ) return;
			var query = [];
			query[query.length] = {name:"mode", value:"GA_MOV_IMG"};
			query[query.length] = {name:"gid", value:G_ID};
			query[query.length] = {name:"fileNo", value:selImg.imgNo};
			query[query.length] = {name:"cNo", value:selImg.cNo};
			query[query.length] = {name:"mNo", value:GEID('cate_album_list').value};

			_AJC.getAHAHData("/ajdb.php", function(){ eval(_cName + ".receive_moveImage();"); }, query);
		}

		this.receive_moveImage = function(){
			var dObj = convertFunc(_AJC.getAHAH());
			if(dObj.result == 1 || dObj.result==10) {
				//alert(dObj.msg);
				GEID('mainIFrameObj').src = GEID('mainIFrameObj').src + "&dummyCode=" + Math.round(Math.random() * 10000000);//maindocument.location.reload();
				if(MCont != null && GidMgr != null){
					MCont.setOpenType(_ALBUM);
					MCont.startLoading(_ALBUM);
					GidMgr.resetCategoryData(_ALBUM);
				}
			}else{
				alert("사진 이동을 하지 못했습니다. 새로고침 후 다시 시도해 주십시오.");
			}
			GEID('divImgSelector').style.display="none";
		}

		this.getScrapCategory_load = function() {
			GEID('divImgSelector').innerHTML=getAlbumCategory();
		}
		function getAlbumCategory(){
			var albLst = GidMgr.getAlbum();
			if(albLst.length <= 0) {
				setTimeout(function(){eval(_cName+".getScrapCategory_load();");}, 1000);
				return "<table width=100% height=100% cellpadding=0 cellspacing=0 border=0><tr><td valign=middle align=center><img src='"+C_URL.image+"/checke_loader.gif' border=0></td></tr>"
														+ "<tr><td valign=middle align=center>데이터를 불러오고 있습니다</td></tr></table>";;
			}else if(albLst.length == 1) {
				disOff(GEID('divImgSelector'));
				STAT.moveMenu=false;
				alert("이동할 카테고리가 없습니다. 최소 2개이상의 카테고리가 필요합니다");
				return "ONEDATA";
			}
			var strB = [];
			strB[strB.length] = "<table cellpadding=2 cellspacing=2 border=0 bgcolor='#F6F6F8'><tr><td><select id='cate_album_list' size='6' border=0 name='cate_album_list' style='width:150px;'>";
			for( var i = 0 ; i < albLst.length ; i++) 	if(albLst[i].uid != selImg.cNo) strB[strB.length] = "<option value='"+albLst[i].uid+"'>"+albLst[i].name+"</option>";
			strB[strB.length] = "</select></td></tr><tr><td background='"+C_URL.image+"/move03_line.gif' height=1></td></tr><tr><td style='text-align:center;'><input type='image'  value='submit' onClick='ImgV.moveImage();' src='"+C_URL.image+"/move03_bt.gif'></input></td></tr></table>";
			return strB.join("");
		}

		this.deleteImage = function(fileNo, cNo, type){
			if(type==_ALBUM) { if(!confirm("정말 삭제하시겠습니까?")) return; }
			if(type==_GALLR) { if(!confirm("마이로그 이미지 삭제 후 마이로그 카테고리에서 다시 확인 가능합니다.")) return; }
			//alert(fileNo);
			var query = [];
			query[query.length] = {name:"mode", value:"GA_DEL_IMG"};
			query[query.length] = {name:"gid", value:G_ID};
			query[query.length] = {name:"fileNo", value:fileNo};
			query[query.length] = {name:"cNo", value:cNo};
			query[query.length] = {name:"type", value:type};

			_AJC.getAHAHData("/ajdb.php", function(AHAH){ eval(_cName + ".receive_deleteImage();"); }, query);
		}

		this.receive_deleteImage = function(){
			var AHAH = _AJC.getAHAH();
			var dObj = convertFunc(AHAH);
			if(dObj==null) return errorStr("삭제에 실패했습니다.");

			if(dObj.result == 1) {
				alert("삭제성공했습니다.");
				GEID('mainIFrameObj').src = GEID('mainIFrameObj').src + "&dummyCode=" + Math.round(Math.random() * 10000000);//maindocument.location.reload();
				if(MCont != null && GidMgr != null){
					MCont.setOpenType(_ALBUM);
					MCont.startLoading(_ALBUM);
					GidMgr.resetCategoryData(_ALBUM);
				}
			}
			else alert("삭제하지 못했습니다.");


		}

		function getImageUrl(fileNo, type, mylogNo){
//			if(BackupSize.fileNo == fileNo) {
//				DOBJ.image.innerHTML += BackupSize.fileInfo;
//				return;
//			}else BackupSize.fileNo = fileNo;
			var query = [];
			query[query.length] = {name:"mode", value:"GA_IMG"};
			query[query.length] = {name:"gid", value:G_ID};
			query[query.length] = {name:"fileNo", value:fileNo};
			query[query.length] = {name:"type", value:type};
			query[query.length] = {name:"mylogNo", value:mylogNo};

			_AJC.getAHAHData("/ajdb.php", function(){ eval(_cName + ".receive_getImageUrl();"); }, query);
		}

		this.receive_getImageUrl = function(){
			var dObj = convertFunc(_AJC.getAHAH());
			var fInfoStr = "";
			if(dObj == null || dObj.result == 0) {
				fInfoStr = "<br><span style='color:white;font-size:8pt;cursor:pointer;'>이미지와 관련된 정보를 찾을 수 없습니다.</span>";
				DOBJ.image.innerHTML += fInfoStr;
				BackupSize.fileInfo = fInfoStr;
				alert("원본 저작자의 글이 삭제되어 해당 이미지를 열람할 수 없습니다..");
				this.closeImage();
				return;
				//return;
			}

			var strB = [];
			if(dObj.data.isP && !dObj.data.isView) {
				strB[strB.length] = "<span style='background-color:red;color:white;font-weight:bold;'>[음란물숨김처리중]</span>";
			}
			strB[strB.length] = "[" + dObj.data.galleryName + "] " + URLdecode(dObj.data.postName, "URI");
			strB[strB.length] = "<BR>";
			strB[strB.length] = "작성자 : " + dObj.data.name + " / " + dObj.data.write_time;
			var dummy = viewProfilePhoto(URLdecode(dObj.data.imgUrl, "URI"));
			if(dObj.data.type== _ALBUM) fInfoStr = "<br><table cellpadding=0 cellspacing=0 border=0 width=250><tr><td align=left><span style='color:white;font-size:8pt;cursor:pointer;' onClick='GidMgr.goToGallely("+dObj.data.galleryNo+", "+dObj.data.postNo+");' >" + strB.join("") + "</span></td></tr></table>";
			else if(dObj.data.type == _GALLR) fInfoStr = "<br><table cellpadding=0 cellspacing=0 border=0 width=250><tr><td align=left><span style='color:white;font-size:8pt;cursor:pointer;' onClick='window.open(\""+URLdecode(dObj.data.mylogUrl,"URI")+"\");' >" + strB.join("") + "</span></td></tr></table>";
			DOBJ.image.innerHTML += fInfoStr;
			BackupSize.fileInfo = fInfoStr;
			if(dObj.data.type!= _GALLR){
				if(dObj.data.isP){
					
				}else if(dObj.data.isCutLevel){
					alert("현재 레벨로는 해당 이미지를 열람하실 수 없습니다.");
					this.closeImage();
				}else if(!dObj.data.isView) {
					alert("현재 관리자에 의해 열람이 제한되었거나 삭제된 이미지입니다.\n 해당 이미지를 열람하실 수 없습니다.");
					this.closeImage();
				}else if(dObj.data.isAdult){
					alert("해당 이미지는 성인인증을 필요로 하는 이미지입니다.");
					this.closeImage();
				}
			}
			//alert(URLdecode(dObj.data.imgUrl, "URI"));

		}


		function shadowOn(){
			var hInfo = getHtmlInfo();
			
			var W = hInfo.scrollWidth;// >= hInfo.screenX ? hInfo.scrollWidth : hInfo.screenX;
			var H = hInfo.scrollHeight >= hInfo.screenY ? hInfo.scrollHeight : hInfo.screenY;

			if(STAT.moveMenu) {
				disOff(GEID('divImgSelector'));
				STAT.moveMenu = false;
			}

			DOBJ.shadow.style.color="white";
			DOBJ.shadow.style.width  = W + "px";
			DOBJ.shadow.style.height = H + "px";
			DOBJ.shadow.style.top = 0 + "px";
			DOBJ.shadow.style.left = 0 + "px";
			DOBJ.shadow.style.opacity = 0.5;
			DOBJ.shadow.style.filter = 'alpha(opacity=' + 50 + ')';
			DOBJ.shadow.style.display="";

		}

		function shadowOff(){
			DOBJ.shadow.style.display="none";
			DOBJ.image.style.display="none";
		}


		function viewProfilePhoto(fileUrl){
			STAT.imgView=true;
			DOBJ.image.style.width="0px";
			DOBJ.image.style.height="0px"
			DOBJ.image.innerHTML=
				"<img id='tempImage' src='" + fileUrl + "' border=0 onLoad='" + _cName + ".resizeImage();' style='cursor:pointer;border-width:1px;border-style:solid;' onClick='"+_cName+".closeImage()' onMouseOver='"+_cName+".popBut(true);'  onMouseOut='"+_cName+".popBut(false);'>";
		}


		this.resizeImage = function(scrollMode){
			if(STAT.isFull && scrollMode) return;
			if(!STAT.imgView) return;
			var WIDTH;
			var HEIGHT;
			if(!scrollMode && BackupSize.src != GEID('tempImage').src) {
				disOn(DOBJ.image);
				WIDTH = GEID('tempImage').width;
				HEIGHT= GEID('tempImage').height;
				disOff(DOBJ.image);

				BackupSize.src = GEID('tempImage').src;
				BackupSize.W = WIDTH;
				BackupSize.H = HEIGHT;
			}else{
				WIDTH = BackupSize.W;
				HEIGHT= BackupSize.H;
			}

			var hInfo = getHtmlInfo();


			var newSize = sizeCal(WIDTH, HEIGHT, hInfo);
			newSize = sizeCal(newSize.W, newSize.H, hInfo);

			GEID('tempImage').width = newSize.W;
			GEID('tempImage').height= newSize.H; 
			
			DOBJ.image.style.width = newSize.W + "px";
			DOBJ.image.style.height = newSize.H + "px";
			DOBJ.image.style.left = hInfo.scrollLeft + parseInt( (parseInt(hInfo.clientWidth) - newSize.W)  / 2)+ "px";
			DOBJ.image.style.top  = hInfo.scrollTop + parseInt( (parseInt(hInfo.clientHeight) - newSize.H)  / 2)+ "px";
			disOn(DOBJ.image);
			LOADING_IMG("OFF");
			
		}

		this.resizeDiv = function(_obj, scrollMode){
			resizeDiv(_obj, scrollMode);
		}

		function resizeDiv(_obj, scrollMode){

			if(_obj == null) _obj = DOBJ.imgLod;

			if(STAT.isFull && scrollMode) return;
			var WIDTH = 200;
			var HEIGHT= 200;

			var hInfo = getHtmlInfo();
			
			_obj.style.left = hInfo.scrollLeft + parseInt( (parseInt(hInfo.clientWidth) - WIDTH)  / 2)+ "px";
			_obj.style.top  = hInfo.scrollTop + parseInt( (parseInt(hInfo.clientHeight) - HEIGHT)  / 2)+ "px";
			_obj.style.display="";	
		}

		function LOADING_IMG(mode) {
			if(mode == null) mode = "ON";

			if(mode == "ON") {
				DOBJ.imgLod.innerHTML = "<table width='200' height='200' border='0' cellspacing='0' cellpadding='0'>" + "<tr><td align=center valign=middle> <img src='"+C_URL.image+"/checke_loader.gif' border=0><br><br> ...사진을 읽고 있습니다...<br><br>잠시만 기다려주십시오.<br><br><span style='cursor:pointer;' onClick='"+_cName+".closeImage();'>[닫기]</span></td></tr></table>";
				resizeDiv(DOBJ.imgLod, false);
			}else if (mode=="OFF")
			{
				DOBJ.imgLod.style.display="none";
			}
		}


		function sizeCal(WIDTH, HEIGHT,hInfo){
			var newWidth  = 0;
			var newHeight = 0;
			var WGAP = 80;
			var HGAP = 100;

			if(WIDTH > hInfo.clientWidth - WGAP){
				//1000 까지, 1200 일 경우 200의 차이를 줄이기 위해 필요한
				// 200 / 1000 * 100 

				var difVal = WIDTH - hInfo.clientWidth + WGAP ;
				var per = difVal / WIDTH;

				WIDTH = WIDTH - parseInt(WIDTH * per);
				HEIGHT = HEIGHT -  parseInt(HEIGHT*per);
				STAT.isResize = true;

			}
			
			if(HEIGHT > hInfo.clientHeight - HGAP){
				var difVal = HEIGHT - hInfo.clientHeight  + HGAP  ;
				var per = difVal / HEIGHT;
				WIDTH = WIDTH - parseInt(WIDTH * per);
				HEIGHT = HEIGHT -  parseInt(HEIGHT*per);
				STAT.isResize=true;

			}
			
			/*else{
				newWidth = WIDTH;
				newHeight = HEIGHT;
			}*/

			return {
				W : WIDTH,
				H : HEIGHT
			};


				/*
			if((WIDTH >= HEIGHT) && WIDTH > hInfo.clientWidth - GAP){
				//1000 까지, 1200 일 경우 200의 차이를 줄이기 위해 필요한
				// 200 / 1000 * 100 

				var difVal = WIDTH - hInfo.clientWidth + GAP ;
				var per = difVal / WIDTH;

				newWidth = WIDTH - parseInt(WIDTH * per);
				newHeight = HEIGHT -  parseInt(HEIGHT*per);
				STAT.isResize = true;

			}else if((WIDTH <= HEIGHT) && HEIGHT > hInfo.clientHeight - GAP){
				var difVal = HEIGHT - hInfo.clientHeight  + GAP  ;
				var per = difVal / HEIGHT;
				newWidth = WIDTH - parseInt(WIDTH * per);
				newHeight = HEIGHT -  parseInt(HEIGHT*per);
				STAT.isResize=true;

			}else{
				newWidth = WIDTH;
				newHeight = HEIGHT;
			}

			return {
				W : newWidth,
				H : newHeight
			};
				*/
		}

		this.fullScreen = function(){
			if(STAT.isFull) {
				this.resizeImage();
				STAT.isFull=false;
			}else{
				GEID('tempImage').width = BackupSize.W;
				GEID('tempImage').height = BackupSize.H;
				DOBJ.image.style.width =  BackupSize.W+"px";
				DOBJ.image.style.height =  BackupSize.H + "px";
				DOBJ.image.style.left = "5px";
				DOBJ.image.style.top = "5px";
				STAT.isFull=true;
				goScrollTop(0);
			}
			shadowOn();
			disOff(DOBJ.imgBut);

		}

		this.popBut = function(mode){
			
			var imgButInn = GEID('imgShadowButInner');
			if(mode){
				if(STAT.isFull) imgButInn.src = C_URL.image+"/size02.gif"; //imgBut.innerHTML = "<img src='"+C_URL.image+"/size02.gif' style='cursor:pointer;'  onClick=\"ImgV.fullScreen();\">원래";
				else	 imgButInn.src = C_URL.image+"/size.gif";   //imgBut.innerHTML = "<img src='"+C_URL.image+"/size.gif'  style='cursor:pointer;'  onClick=\"ImgV.fullScreen();\">전체";
				DOBJ.imgBut.style.left= 5 + parseInt(DOBJ.image.style.left.replace(/px/g, "")) + "px";
				DOBJ.imgBut.style.top= 5 + parseInt(DOBJ.image.style.top.replace(/px/g, "")) + "px";
				if(STAT.isResize) DOBJ.imgBut.style.display="";

			}else{
				DOBJ.imgBut.style.display="none";
				DOBJ.imgBut.onmouseout=null;
			}

		}

		this.closeImage  = function(){
			shadowOff();
			disOff(DOBJ.imgLod);
			STAT.isResize = false;
			STAT.imgView=false;
			try{
				_AJC.abort(false);
			}catch(e){
				// -
			}

		}

		this.shadowOn = function(scrollMode){
			if(scrollMode && STAT.imgView) shadowOn();
		}

		this.S_shadowOn = function(){
			resetDiv();
			shadowOn();
		}
		this.S_shadowOff = function(){

			shadowOff();
		}

		this.boardImageSizeChk = function(datalist, addSize){
			
			if(datalist.length <= 0 ) return;
			if(addSize == null) addSize = 0 ;
			for(var i = 0 ; i < datalist.length ; i++){
				//if(GEID(datalist[i]).width > _VIEW_TD_WIDTH) GEID(datalist[i]).width = _VIEW_TD_WIDTH;
				if(datalist[i]==null) continue;
				var size = parseInt(_VIEW_TD_WIDTH) + parseInt(addSize);
				if(datalist[i].width > size) datalist[i].width = size;
			}
		}

		this.pageMove = function(url){
			var query = [];
			 //gid
			if(chkNull(G_ID)) query[query.length] = {name: 'gid', value: G_ID};
			//if(chkNull(cno)) query[query.length] = {name: 'cid', value: cno};
//			if(chkNull(pno)) query[query.length] = {name: 'pno', value: pno};
			GEID('mainIFrameObj').src = _DOMAIN + "/" + C_URL.include + "_album.php?" + createQuery(query);

		}

}



