﻿var board = {
	// list data 관련
	info:undefined,
	paging:undefined,
	list:undefined,
	read:undefined,
	filelist:undefined,
	// internal use
	Bid:0,
	Bno:0,
	PageNum:0,
	// permission 관련
	bPasswordCheck:true,
	// callback에 쓰일 패스워드
	password:undefined,

	// Load
	loadList:function(Bid, PageNum, callBack){
		// chk param
		if ( Bid == undefined ) {
			if ( this.info == undefined ) return false;
			Bid = this.info.Bid;
		};	
		if ( PageNum == undefined ) {
			PageNum = ( this.paing == undefined )?1 : this.paging.PageNum;
		};
		
		this.Bid = Bid;	
		this.PageNum = PageNum;

		if ( Bid==0 || Bid==null ) {
			this.goToListByID();
		} else {
			// list
			$.getScript("/api/board/data.asp?op=listdata&bid="+Bid+"&page="+PageNum, function(data, textStatus) {
				board.resetForm();
				$("#boardWriteWrapper").hide();
				board.viewHeader();
				board.viewMenuList();
				board.viewList();
				board.viewPaging();
				if ( typeof(callBack)=="function" ) callBack();
			});	
		};
	},	
	loadRead:function(Bid, Bno, callBack){
		// chk param
		if ( Bid == undefined ) {
			if ( this.info == undefined ) return false;
			Bid = this.info.Bid;
		};
		if ( Bno == undefined ) {
			return false;
		};
		this.Bid = Bid;	
		this.Bno = Bno;
		
		// read
		var input = {"op":"read", "bid":this.Bid,  "no":this.Bno}; 		
		$.ajax({
			type: "POST",
			url: "/api/board/data.asp",
			cache: false,
			data: input,
			dataType: 'script',
			success: function(data, textStatus, jqXHR){
				board.viewMenuRead();	
				board.viewRead();	
				if ( typeof(callBack)=="function" ) callBack();
			},
			error: function(jqXHR, textStatus, errorThrown){
				alert("Error occured while read.");
				//alert("error\ntextStatus="+jqXHR.textStatus +"\n readyState="+jqXHR.readyState
				//	+"\n status="+jqXHR.status +"\n statusText="+jqXHR.statusText
				//	+"\n responseXML="+jqXHR.responseXML+"\n esponseHeader="+ jqXHR.getAllResponseHeaders() );
				board.goToList();
			}
		});
	},
	
	
	// View
	viewHeader:function(){
		// Var
		var info = this.info;
		if ( info==null ) return false;
		// UI
		if ( $("#boardHeaderWrapper").length>0 ) $("#boardHeaderWrapper").html("");
		else $("#boardWrapper").append("<div id='boardHeaderWrapper'></div>");		
		var row = "<div class='BoardDesc'>";
		if ( info.LogoUrl!=null) $("#boardHeaderWrapper").append("<img src='"+info.LogoUrl+"' class='LogoUrl'/>");
		row = row + "<span class='BoardTitle'>"+info.BoardTitle+"</span><br/>";
		row = row + "<span class='Description'>"+info.Description+"</span>";
		row = row + "<div class='clear'></div>";		
		row = row + "</div>";
		$("#boardHeaderWrapper").append(row);
	},		
	viewMenuList:function(){
		$("#boardWrapper").append("<div id='boardMenuWrapper'></div>");
		var row = "<div class='btnWrite Btn'>Write</div>";
		row = row + "<div class='Clear' />";
		$("#boardMenuWrapper").append(row);
		$("#boardMenuWrapper").show();
	},	
	viewMenuRead:function(){	
		$("#boardWrapper").append("<div id='boardMenuWrapper'></div>");
		var row = "<div class='btnWrite Btn'>Write</div>";
		row = row + "<div class='btnEdit Btn'>Edit</div>"; 
		row = row + "<div class='btnDel Btn'>Del</div>";
		if ( user.bAdmin==true || user.checkAdmin(this.Bid)==true ) {
			//row = row + "<div class='btnUnspam Btn'>Unspam</div>";
			row = row + "<div class='btnSpam Btn'>Spam</div>";
		};
		row = row + "<div class='Clear' />";
		$("#boardMenuWrapper").append(row);
		$("#boardMenuWrapper").show();
	},	
	viewList:function(){
		// Var
		this.Bno = 0;		
		var list = this.list;

		// UI
		if ( $("#boardListWrapper").length>0 ) $("#boardListWrapper").html("")
		else $("#boardWrapper").append("<div id='boardListWrapper'></div>");		
		$("#boardListWrapper").hide();
		var row;
		if ( list==undefined || list==null){
			$("#boardListWrapper").append("<div class='boardListRow'  style='text-align:center;'><span class='Title'>This board is empty.</span></div>");
		} else {
			for ( i=0; i< list[0].length; i++){
			
				Bno = list[0][i];
				UserID = list[1][i];
				Name = list[2][i];
				Email = list[3][i];
				URL = list[4][i];
				IP = list[5][i];
				Title = list[6][i];
				Content = list[7][i];
				Notice = list[8][i];
				ReadCount = list[9][i];
				FilterCount = list[10][i];
				PostedDate = list[11][i];
				ModifiedDate = list[12][i];
				Fid = list[13][i];
				UserIdx = list[14][i];
				UserName = list[15][i];
				UserBirthday = list[16][i];
				UserGender = list[17][i];
				UserPicture = list[18][i];
				UserDescription = list[19][i];
				CommentCount = list[20][i];
			
				row = "<div class='boardListRow'>";
				row = row + "<span class='Bno'>"+Bno+"</span>";
				row = row + "<span class='Title"+(Notice==1?" nrow":"")+(FilterCount>0?" srow":"")+"'>";
				row = row + (FilterCount>0 ? "This post has been filtered as a spam." : Title)+"</span>";			
				if ( CommentCount!=null && CommentCount!="" ) row = row + "<span class='CmtCount'>["+ CommentCount +"]</span>";
				if ( Fid > 0 ) row = row + "<span class='UserUpload' fid='"+ Fid +"'>[+File]</span>";
				if ( UserIdx==null || UserIdx==""){ // non login user's posting
					row = row + "<span class='Name'>"+Name+"</span>";
				} else { // login user posting
					row = row + "<span class='UserID'><a href='/user/mypage.asp?idx="+UserIdx+"'  class='toMyPage'>"+UserName+"</a></span>";
				};
				row = row +(PostedDate==ModifiedDate?"<span class='Date'>"+PostedDate+"</span>":"<span class='Date Modified'>"+ModifiedDate+"</span>");
				row = row + "<span class='ReadCount'>Read:"+ReadCount+"</span>";
				row = row + "</div>\n";
				
				$("#boardListWrapper").append(row);
			};
		};
		$("#boardListWrapper").fadeIn("fast");
	},
	viewPaging:function(){
		// Var
		var paging = this.paging;
		if ( paging == null ) return false;
		
		// UI
		if ( $("#boardPagingWrapper").length>0 ) $("#boardPagingWrapper").html("");
		else $("#boardWrapper").append("<div id='boardPagingWrapper'></div>");		
		var row = "<span class='boardPaging'>";
		if ( this.paging.PageNum > 10 ) row = row + "<div id='PagingFirst' onclick='javascript:board.goToList(0, 1);' >First</div>";
		if ( this.paging.PageNum > 10 ) row = row + "<div id='PagingPrev' onclick='javascript:board.goToList(0, "+(this.paging.BlockStart-1)+");' >Prev</div>";
		row = row + "<div id='PagingNum'>";
		var i=this.paging.BlockStart, j=this.paging.BlockStart+this.paging.BlockSize;
		if ( j > this.paging.TotalPage ) j=this.paging.TotalPage+1;
		for ( i=this.paging.BlockStart; i<j; i++){
			row = row + "<li onclick='javascript:board.goToList(0, "+i+");' ";
			if ( i==this.paging.PageNum) row = row + " class='currentpage'";
			row = row + ">"+i+"</li>";
		};
		row = row + "</div>";
		if ( this.paging.PageNum < this.paging.TotalPage - (this.paging.TotalPage % this.paging.BlockSize)+1 ) row = row + "<div id='PagingNext' onclick='javascript:board.goToList(0, "+i+");' >Next</div>";
		if ( this.paging.TotalPage-this.paging.BlockSize+1 > this.paging.PageNum ) row = row + "<div id='PagingLast'  onclick='javascript:board.goToList(0, "+board.paging.TotalPage+");'>Last</div>";
		row = row + "</span>";
		$("#boardPagingWrapper").html(row);
		$("#boardPagingWrapper").fadeIn("fast");
	},
	viewRead:function(){			

		// spam filtered
		if ( board.read.FilterCount > 0 ) {
			if (!confirm("This posting filtered as SPAM and may be harmful on your computer. \nDo you still want to read this posting?")){
				this.goToList();
				return false;
			};
		};

		// UI
		$("#boardWrapper").append("<div id='boardReadWrapper'></div>");
		var row = "<div class='header'><span class='title'>"+board.read.Title+"</span><br/>";
		if ( board.read.Name==null || board.read.Name==""){ // login user's posting
			row = row + "<span class='UserID'><a href='/user/mypage.asp?idx="+board.read.UserIdx+"'  class='toMyPage'>"+board.read.UserName+"</a></span>";
		} else { // non login user's posting
			row = row + board.read.Name;
		};
		row = row + " | " + board.read.ModifiedDate + " | Read "+ board.read.ReadCount;
		if ( board.read.Fid > 0 ){
			row = row + "<span class='UserUpload'>[+File]</span>";
		};	
		row = row +" <br/>";
		row = row + "</div>";
				
		row = row + "<div class='filelist'>";
		row = row + "Click a file name to start downloading.<br>";
		if ( board.read.Fid > 0 ){
			if ( board.filelist != undefined ){
				for ( j=0; j<board.filelist[0].length; j++){
					row = row + "<span class='file' fidx='"+board.filelist[0][j]+"'>"+board.filelist[5][j]+" ("+board.filelist[8][j]+" bytes, Read:"+board.filelist[11][j]+")</span>";
				};
			};
		};
		row = row + "</div>";
				
		row = row + "<div class='imagelist'>";
		if ( board.read.Fid > 0 ){
			if ( board.filelist != undefined ){
				for ( j=0; j<board.filelist[0].length; j++){
					if ( board.filelist[7][j].substring(0,5)=="image" ){
						row = row + "<img src='/api/board/file.asp?fidx="+board.filelist[0][j]+"'>";
					};
				};
			};
		};
		row = row + "</div>";

		row = row + "<div class='content'>"+ board.read.Content +"</div>";
		row = row + "<div id='FBLike'><div id='fb-root'></div><fb:like send='true' width='450' height='50' show_faces='true' action='like' font=''></fb:like></div>";
		row = row + "<div id='comment'></div>";
		row = row + "<div class='footer'><div class='Btn' onclick='javascript:board.goToList(0, 0);' >Back to List</div></div>";
		$("#boardReadWrapper").append(row).fadeIn("fast");
		FB.XFBML.parse();
	},


	// Show
	showWrite:function(){
		
		// Permissions
		if ( this.chkPermitWrite() == false ) return false;
		
		// UI
		if ( $("#boardWriteWrapper").length>0 ) {
			$("#boardWriteWrapper").html("");
		} else { 
			$("#boardWrapper").append("<div id='boardWriteWrapper'></div>");
		};
		$("#boardMenuWrapper").hide();	
		var row = "<form name='boardWriteForm' id='boardWriteForm'>";
		row = row + "<input type='hidden' name='no' value='0'>";		
		row = row + "<input type='hidden' name='Fid' value='0'>";
		row = row + "<table><colgroup><col width='85'><col></colgroup><tbody>";
		row = row + "<tr><td>Title :</td><td><input type='text' value='' name='Title' maxlength='200' class='long'><span class='msg'/></td></tr>";
		if ( user.bLogin==true ) {
			row = row + "<tr><td>Name :</td><td>"+user.info.NAME+"</td></tr>";
			row = row + "<tr><td>Email :</td><td>"+user.UserID+"</td></tr>";
		} else {
			row = row + "<tr><td>Name :</td><td><input type='text' value='' name='Name' maxlength='50' class='short'><span class='msg'/></td></tr>";
			row = row + "<tr><td>Password :</td><td><input type='password' value='' name='Password' maxlength='32' class='short'><span class='msg'/></td></tr>";
			row = row + "<tr><td>Email :</td><td><input type='text' value='' name='Email' maxlength='100' class='short'></td></tr>";
			row = row + "<tr><td>URL :</td><td><input type='text' value='' name='URL' maxlength='100' class='short'></td></tr>";
		};
		if ( this.info.MaxFilenum > 0 ) {
			row = row + "<tr><td>Upload :</td><td>";
			if ( user.bLogin==true ) {
				row = row + "<iframe src='/api/board/uploadForm.asp' id='uploadFrame' style='border:none; width:100%; height:28px;' ></iframe>";
				row = row + "<span class='msg2' style='display:inline;'>You can upload up to "+this.info.MaxFilenum+" file(s) of max "+this.info.MaxFilesize+" bytes.</span><br>";
				row = row + "<span class='msg2' style='display:inline;'>Uploadable files are \""+this.info.FileType+"\". </span><br>";
				row = row + "<div class='uploadedFiles'/>";
			} else {
				row = row + "<span class='msg' style='display:inline;'>Please sign up to use upload function..</span>";
			};
			row = row + "</td></tr>";
		};
		
		
		row = row + "<tr><td>Content :</td><td>";
		//if ( this.info.HtmlTag == 1 ||  user.bAdmin == true || user.checkAdmin(this.Bid)==true) row = row + "<span class='msg' style='display:inline;'>HTML Tag is enabled.</span><br>";
			
		if ( user.bAdmin == true || user.checkAdmin(this.Bid)==true ){
			row = row + "<input type='checkbox' name='Notice'  class='check'> Notice<br>";
		};
		row = row + "<textarea name='Content' rows='10' class='long'></textarea><span class='msg'/>";
		row = row + "<br></td></tr>";
		row = row + "</tbody></table>";
		row = row + "<div class='bottom'><center>";
		row = row + "<input type='submit' value='Submit' class='button'> <input type='reset' value='Reset' class='button'>";
		row = row + "</center></div>";
		row = row + "</form>";
		row = row + "<div class='footer'><div id='boardBackTo' class='Btn' >Back</div></div>";
		
		$("#boardWriteWrapper").append(row);
		$("#boardReadWrapper").hide();
		$("#boardListWrapper").hide();
		$("#boardPagingWrapper").hide();
		$("#boardWriteWrapper").fadeIn("fast");
	},	
	showEdit:function(){
		// Var
		//var UserID = this.list[1][i];
		//var Name = this.list[2][i];
		//var Email = this.list[3][i];
		//var URL = this.list[4][i];
		//var IP = this.list[5][i];
		//var Title = this.list[6][i];
		//var Content = this.list[7][i];
		//var Notice = this.list[8][i];
		//var ReadCount = this.list[9][i];
		//var FilterCount = this.list[10][i];
		//var PostedDate = this.list[11][i];
		//var ModifiedDate = this.list[12][i];

		if ( this.read == undefined ) {alert("Error occured.");return false;};
		
		// UI
		if ( $("#boardWriteWrapper").length>0 ) {
			$("#boardWriteWrapper").html("");
		} else {
			$("#boardWrapper").append("<div id='boardWriteWrapper'></div>");
		};
		var row = "<form name='boardWriteForm' action='?' id='boardWriteForm'>";
		row = row + "<input type='hidden' value='"+this.Bno+"' name='no'>";
		row = row + "<input type='hidden' value='"+this.read.Fid+"' name='Fid'>";
		row = row + "<input type='hidden' value='"+this.password+"' name='Password'>";
		
		row = row + "<table><colgroup><col width='85'><col></colgroup><tbody>";
		row = row + "<tr><td>Title :</td><td><input type='text' value='"+this.read.Title+"' name='Title' maxlength='200' class='long'><br><span class='msg'/></td></tr>";
		if ( user.bLogin == true ){
			row = row + "<tr><td>UserID :</td><td>"+user.UserID+"</td></tr>";			
		} else {
			row = row + "<tr><td>Name :</td><td>"+this.read.Name+"<br><input type='hidden' value='"+this.read.Name+"' name='Name'></td></tr>";
			row = row + "<tr><td>Password :</td><td>********<br></td></tr>";
			row = row + "<tr><td>Email :</td><td><input type='text' value='"+(this.read.Email==null?"":this.read.Email)+"' name='Email' maxlength='100' class='short'></td></tr>";
			row = row + "<tr><td>URL :</td><td><input type='text' value='"+(this.read.URL==null?"":this.read.URL)+"' name='URL' maxlength='100' class='short'></td></tr>";
		};
		if ( this.info.MaxFilenum > 0 ) {
			row = row + "<tr><td>Upload :</td><td>";
			if ( user.bLogin==true ) {
				row = row + "<iframe src='/api/board/uploadForm.asp' id='uploadFrame' style='border:none; width:100%; height:28px;' ></iframe>";
				row = row + "<span class='msg2' style='display:inline;'>You can upload up to "+this.info.MaxFilenum+" file(s) of max "+this.info.MaxFilesize+" bytes.</span><br>";
				row = row + "<span class='msg2' style='display:inline;'>Uploadable files are \""+this.info.FileType+"\". </span><br>";
				row = row + "<div class='uploadedFiles'>";
				if ( this.read.Fid > 0 ){
					if ( this.filelist != undefined ){
						for ( j=0; j<this.filelist[0].length; j++){
							//alert(this.filelist[0][j]+"\n"+this.filelist[2][j]);
							row = row + "<li Fnum='"+this.filelist[0][j]+"' >"+this.filelist[5][j]+" <span>x</span></li>";
						};
					};
				};
				row = row + "</div>";
			} else {
				row = row + "<span class='msg' style='display:inline;'>Please sign up to use upload function..</span>";
			};
			row = row + "</td></tr>";
		};
		
		row = row + "<tr><td>Content :</td><td>";
		if ( this.info.HtmlTag == 1 ||  user.bAdmin == true || user.checkAdmin(this.Bid)==true ){
			row = row + "<span class='msg' style='display:inline;'>HTML Tag is enabled.</span><br>";
		};
		if ( user.bAdmin == true || user.checkAdmin(this.Bid)==true ){
			row = row + "<input type='checkbox' name='Notice'  class='check' "+ ( this.read.Notice==1?"checked":"") +"> Notice<br>";
		};

		row = row + "<textarea name='Content' rows='10' class='long'></textarea><span class='msg'/>";
		row = row + "</td></tr>";
		row = row + "</tbody></table>";
		row = row + "<div class='bottom'><center><input type='submit' value='Submit' class='button'> <input type='reset' value='Reset' class='button'></center></div>";
		row = row + "</form>";
		row = row + "<div class='footer'><div id='boardBackTo' class='Btn' >Back</div></div>";
		
		$("#boardReadWrapper").hide();
		$("#boardListWrapper").hide();
		$("#boardPagingWrapper").hide();
		$("#boardMenuWrapper").hide();		
		$("#boardWriteWrapper").append(row);
		$("#boardWriteWrapper textarea[name='Content']").val(stripBrTag(this.read.Content));		
		$("#boardWriteWrapper").show();	
		$("#boardWriteWrapper .uploadedFiles").show();
	},	

	
	// Actions
	submitWrite:function(){

		// check form
		var UserID="", Name="", Password="", Email="", URL="", Title="", Content="", Notice=0, Bno=0;//, Fid=0;

		if (user.bLogin==true){
			UserID=user.UserID;
		};
		Name=$("#boardWriteWrapper input[name='Name']").val();
		Password=$("#boardWriteWrapper input[name='Password']").val();
		Email=$("#boardWriteWrapper input[name='Email']").val();
		URL=$("#boardWriteWrapper input[name='URL']").val();
		Title=$("#boardWriteWrapper input[name='Title']").val();
		Content=$("#boardWriteWrapper textarea[name='Content']").val();

		if ( Name==undefined ) Name="";
		if ( Password==undefined ) Password="";
		if ( Email==undefined ) Email="";
		if ( URL==undefined ) URL="";
		if ( Title==undefined ) Title="";
		if ( Content==undefined ) Content="";
		
		if ( $("#boardWriteWrapper input[name='Notice']").is(':checked') ) Notice=1;
		
		if (user.bLogin==false){
			if ( Name==""||Name==null ){	
				alert("Please enter your name."); 
				$("#boardWriteWrapper input[name='Name']").focus().next().html("Please enter your name.").show(); 
				return false;
			} else {
				$("#boardWriteWrapper input[name='Name']").focus().next().hide();
			};
			if ( Password==""||Password==null){ 
				alert("Please enter a password."); 
				$("#boardWriteWrapper input[name='Password']").focus().next().html("Please enter a password.").show(); 
				return false; 
			} else {
				$("#boardWriteWrapper input[name='Password']").focus().next().hide();
			};
			if ( Password.length<4){ 
				alert("Please enter a password between 4 and 32 letters."); 
				$("#boardWriteWrapper input[name='Password']").focus().next().html("Please enter a password.").show(); 
				return false; 
			} else {
				$("#boardWriteWrapper input[name='Password']").focus().next().hide();
			};
		};
		if ( Title==""||Title==null){alert("Please enter a title."); $("#boardWriteWrapper input[name='Title']").focus().next().html("Please enter a title.").show(); return false;} else {$("#boardWriteWrapper input[name='Title']").focus().next().hide();};
		if ( Content==""||Content== null){alert("Please enter a content."); $("#boardWriteWrapper textarea[name='Content']").focus().next().html("Please enter a content.").show(); return false;} else {$("#boardWriteWrapper textarea[name='Content']").focus().next().hide();};

		var contentLength = getStringLength(Content);
		//if ( contentLength>8000){alert("Please reduce the content under 8000 letters.\nCurrent content include  "+contentLength+" bytes."); $("#boardWriteWrapper textarea[name='Content']").focus().next().html("Please reduce the content under 8000 letters.\nCurrent content include  "+contentLength+" bytes.").show(); return false;}  else {$("#boardWriteWrapper textarea[name='Content']").focus().next().hide();};
		
		Bno=$("#boardWriteWrapper input[name='no']").val()==undefined?0:$("#boardWriteWrapper input[name='no']").val();
		Fid=$("#boardWriteForm input[name='fFid']").val();


		// submit
		$("#boardWriteForm input[name='op']").remove();$("#boardWriteForm").append("<input type='hidden' name='op' value='write'>");
		$("#boardWriteForm input[name='bid']").remove();$("#boardWriteForm").append("<input type='hidden' name='bid' value='"+this.Bid+"'>");

		var frm=$('#boardWriteForm'); 
		frm.attr("action","/api/board/data.asp");
		frm.attr("enctype", "application/x-www-form-urlencoded");
		frm.attr("method", "post"); 
		frm.submit(); 	
	
		return;
	},
	submitDelete:function(){
		var input = {"op":"del", "bid":this.Bid, "no":this.Bno, "Password":this.password };
		$.ajax({
			type: "POST",
			url: "/api/board/data.asp",
			cache: false,
			data: input,
			dataType: "json",
			//dataType: "text",
			success: function(data, textStatus, jqXHR){
				if ( data.RESULT == 0 ){
					alert("Posting deletion success");
					board.goToList();
				} else{
					alert("Posting deletion failed.");
					alert(data.MESSAGE);
					return;
				};
			},
			error: function(jqXHR, textStatus, errorThrown){
				alert("Error occured while submit.\nErr02");
			}
		});	
		
		return;
	},
	deleteFile:function(Fidx){
		
		// Permissions check	
		if ( this.Bno!=0 ) {
			if ( this.chkPermitEdit() == false ) return false;
		};
		
		// delete file
		Name=$("#boardWriteWrapper input[name='Name']").val();
		Password=$("#boardWriteWrapper input[name='Password']").val();
		Bno=$("#boardWriteWrapper input[name='no']").val()==undefined?0:$("#boardWriteWrapper input[name='no']").val();
		var input = {"op":"fdel", "bid":this.info.Bid, "no":Bno, "Name":Name, "Password":Password, "Fidx":Fidx};
		
		$.ajax({
			type: "POST",
			url: "/api/board/data.asp",
			cache: false,
			data: input,
			dataType: "json",
			success: function(data, textStatus, jqXHR){
				if ( data.RESULT == 0 ){
					$("#boardWriteWrapper .uploadedFiles li[fnum='"+input.Fidx+"']").fadeOut("fast", function(){ 
						$(this).remove(); 
						if ( $("#boardWriteWrapper .uploadedFiles li").size() < window.parent.board.info.MaxFilenum )  
							$('#uploadFrame').contents().find('#btnUpload').removeAttr('disabled');
					});
					
				} else {
					alert(data.MESSAGE);
					return;
				};
			},
			error: function(jqXHR, textStatus, errorThrown){
				alert("Error occured while submit.\nErr03");
				/*
				alert("error\ntextStatus="+jqXHR.textStatus +"\n readyState="+jqXHR.readyState
					+"\n status="+jqXHR.status +"\n statusText="+jqXHR.statusText
					+"\n responseXML="+jqXHR.responseXML+"\n esponseHeader="+ jqXHR.getAllResponseHeaders() );
				*/
			}
		});	
		
		
	},
	resetForm:function(){
		if ( document.getElementById('boardWriteForm') != undefined ){
			document.getElementById('boardWriteForm').reset();
		};
	},	
	submitSpam:function(){
		
		// Permissions
		if ( user.bLogin == false ) return false;				
		if ( !( user.bAdmin == true || user.checkAdmin(this.Bid)==true ) ) return false;
		
		// check form
		if ( this.Bid==undefined || this.Bid==0) return false;
		if ( this.Bno==undefined || this.Bno==0) return false;		
	
		// submit
		$("#boardWriteForm").attr("enctype", "application/x-www-form-urlencoded");		
		var input = {"op":"spam", "bid":this.Bid, "bno":this.Bno};
		
		$.ajax({
			type: "POST",
			url: "/api/board/data.asp",
			cache: false,
			data: input,
			dataType: "json",
			//dataType: "text",
			success: function(data, textStatus, jqXHR){
				if ( data.RESULT == 0 ){
					alert("Spam deleted.");
					board.goToList();
				} else {
					//alert(data.RESULT);
					alert(data.MESSAGE);
					return;
				};
			},
			error: function(jqXHR, textStatus, errorThrown){
				alert("Error occured while submit.\nErr04");
			}
		});	
		return;	
	},
	submitUnspam:function(){
		return;1
	},
	
	// Check
	chkPermitRead:function(){
		//alert("this.info.ReadPermission="+this.info.ReadPermission);	
		if ( this.info == undefined ) this.goToList();
		this.bPermit = false;
		switch( this.info.ReadPermission){
			case 0:	// read disabled
				this.bPermit = false;
				alert("You cannot read  a posting. \nReading permission is disabled for all users.");
				break;
			case 1: // admin only
				if ( user.bAdmin == true || user.checkAdmin(this.Bid)==true ) this.bPermit = true;
				else alert("You cannot read a posting. \nOnly administrators permitted to read.");
				break;
			case 2: // logged in user only
				if ( user.bLogin == true ) this.bPermit = true;
				else user.showLogin();	// need sign in
				break;
			case 3: // everyone
				this.bPermit = true;
				break;				
			default :
				this.bPermit = false;			
		};
		return this.bPermit;
	},	
	chkPermitWrite:function(){
		//alert("this.info.WritePermission="+this.info.WritePermission);	
		if ( this.info == undefined ) this.goToList();
		this.bPermit= false;
		switch( this.info.WritePermission){
			case 0:	// writing & edit disabled
				this.bPermit= false;
				alert("You cannot write a posting. \nWriting permission is disabled for all users.");
				break;
			case 1: // admin only
				if ( user.bAdmin == true || user.checkAdmin(this.Bid)==true ) this.bPermit= true;
				else alert("You cannot write a posting. \nOnly administrators permitted to write.");
				break;
			case 2: // logged in user only
				if ( user.bLogin == true ) this.bPermit= true;
				else user.showLogin();	// need sign in
				break;
			case 3: // everyone
				this.bPermit= true;
				break;				
			default :
				this.bPermit= false;			
		};
		return this.bPermit;
	},	
	chkPermitEdit:function(callBack){ 
		//alert("this.info.WritePermission="+this.info.WritePermission);	
		//alert("check password on Bno="+this.Bno);
		if ( this.info == undefined ) this.goToList();
		var bPermit = false;
		this.bPasswordCheck = false;
		switch( this.info.WritePermission){
			case 0:	// writing & edit disabled
				bPermit = false;
				alert("You cannot edit this posting. \nEditing permission is disabled for all users.");
				break;
			case 1: // admin only
				if ( user.bAdmin == true || user.checkAdmin(this.Bid)==true ) bPermit = true;
				else alert("You cannot edit this posting. \nOnly administrators permitted to edit.");
				break;
			default :
				if ( user.bAdmin == true || user.checkAdmin(this.Bid)==true ) bPermit = true;
				else{
					//alert("need to check this user?");

					$("#boardWriteForm").attr("enctype", "application/x-www-form-urlencoded");		
					var input = {"op":"permission", "bid":this.Bid, "bno":this.Bno};
						
					$.ajax({
						type: "POST",
						url: "/api/board/data.asp",
						cache: false,
						data: input,
						dataType: "json",
						//dataType: "text",
						success: function(data, textStatus, jqXHR){
							if ( data.RESULT == 0 ){
								if ( typeof(callBack)=="function" ) callBack();
							} else {
								if ( data.RESULT == 5 || data.RESULT == 9) {
									alert(data.MESSAGE);
									user.showLogin();
								} else if ( data.RESULT == 7 ) {
									alert(data.MESSAGE);
									board.checkPassword(callBack);
								} else {
									alert(data.MESSAGE);
								};
							};
						},
						error: function(jqXHR, textStatus, errorThrown){
							alert("Error occured while submit.\nErr05");
						}
					});	
				};
		};
		if ( bPermit == true ) {
			if ( typeof(callBack)=="function" ) callBack();
		};
	},
	checkPassword:function(callback){

		// UI
		if ( $("#boardPasswordForm").length>0 ) $("#boardPasswordForm").html("");
		else $("#boardWrapper").append("<div id='boardPasswordForm' ></div>");		

		var row="";
		row = row + "Please enter a password.<br><br>";
		row = row + "Password : <input name='password' type='password'><br><br>";
		row = row + "<input type='button' value='submit'>";
		$("#boardPasswordForm").append(row);
		
		openModalPopup("#boardPasswordForm");
		
		// add submit button action
		$("#boardPasswordForm input[type='button']").click(function(){
			// password check
			//alert("Bno="+board.Bno+"\nPassword="+$("#boardPasswordForm input[type='password']").val() );
			var input = {"op":"pcheck", "bid":board.info.Bid, "no":board.Bno, "password":$("#boardPasswordForm input[type='password']").val() };

				
			$.ajax({
				type: "POST",
				url: "/api/board/data.asp",
				cache: false,
				data: input,
				dataType: "json",
				//dataType: "text",
				success: function(data, textStatus, jqXHR){
				//alert(data);return;
					if ( data.RESULT == 0 ){
						board.password = input.password;
						if(typeof callback == 'function') callback(); // call back
					} else {
						//alert(data.MESSAGE);
						alert("Password is not correct.");
						return false;
					};
				},
				error: function(jqXHR, textStatus, errorThrown){
					alert("Error occured while submit.\nErr06");				
				}
			});	
		
			// close modalPopup
			closeModalPopup("#boardPasswordForm");
			
		});
		
	},

	// Go
	goToList:function(Bid, PageNum){
		if ( Bid == undefined ) Bid = this.Bid;
		if ( PageNum == undefined ) PageNum = this.PageNum;
		if ( ! isNumber(Bid) ) Bid = 0;
		if ( ! isNumber(PageNum) ) PageNum = 1;
		
		if ( Bid == 0 ) {
			Bid = getQueryParameter("bid");
			if ( Bid=="") return false;
		};
		if ( PageNum == 0 ) PageNum = 1;
		document.location.href="?op=list&bid="+Bid+"&page="+PageNum;		
	},
	goBackTo:function(){
		if ( this.Bno==0 ) {
			$("#boardMenuWrapper").show();		
			$("#boardListWrapper").show();
			$("#boardPagingWrapper").show();
			$("#boardWriteWrapper").hide();
		} else {
			$("#boardMenuWrapper").show();
			$("#boardReadWrapper").show();
			$("#boardWriteWrapper").hide();
		};
	},	
	goToListByID:function(){
		Bid = this.Bid;
		PageNum = this.PageNum;
		Id = getQueryParameter ( "id" );
		if ( Id != "" ) {
			// get Bid
			var input = {"op":"info", "bid":0,  "bname":Id}; 		
			$.ajax({
				type: "POST",
				url: "/api/board/data.asp",
				cache: false,
				data: input,
				dataType: 'script',
				success: function(data, textStatus, jqXHR){
					if ( board.info != null ) {
						Bid = board.info.Bid;
						document.location.href="?op=list&bid="+Bid+"&page="+PageNum;		
					};
				},
				error: function(jqXHR, textStatus, errorThrown){
					alert("Error occured while read.");
					//alert("error\ntextStatus="+jqXHR.textStatus +"\n readyState="+jqXHR.readyState
					//	+"\n status="+jqXHR.status +"\n statusText="+jqXHR.statusText
					//	+"\n responseXML="+jqXHR.responseXML+"\n esponseHeader="+ jqXHR.getAllResponseHeaders() );
				}
			});
	
		};
	}
};



$(document).ready(function(){

	// read
	$(".boardListRow .Title").live("click", function(){
		var Bno=parseInt($(this).prev().html() );
		document.location.href = "?op=read&bid="+board.Bid+"&bno="+Bno;
	});

	// back to list
	$("#boardBackTo").live("click", function(){
		board.goBackTo();
	});
	
	// write
	$("#boardMenuWrapper .btnWrite").live("click", function(){
		board.showWrite();
	});

	// submit
	$("#boardWriteWrapper input[type='submit']").live("click", function(){
		board.submitWrite();
		return false;
	});	
	
	// delete
	$("#boardMenuWrapper .btnDel").live("click", function(){
		board.chkPermitEdit(function(){board.submitDelete()});
	});
	
	// edit
	$("#boardMenuWrapper .btnEdit").live("click", function(){
		board.chkPermitEdit(function(){board.showEdit()});
	});
	
	
	// upload a file
	$("#boardWriteWrapper #btnUpload").live("click", function(){
		board.uploadFile();
		return;
	});	
	
	// delete a file
	$("#boardWriteForm .uploadedFiles span").live("click", function(){
		if ( confirm("Delete this file?") ) {
			board.deleteFile($(this).parent().attr("Fnum"));
		};
		return;
	});
	
		
	// open file list
	$("#boardReadWrapper .UserUpload").live("click", function(){
		$("#boardReadWrapper .filelist").fadeIn("fast");		
		return;
	});
	
	// download a file
	$("#boardReadWrapper .filelist .file ").live("click", function(){
		window.location.href = '/api/board/file.asp?op=download&fidx='+$(this).attr("fidx");
		return;
	});
	
	
	// spam
	$("#boardMenuWrapper .btnSpam").live("click", function(){
		if ( confirm("Spam it?\nIt will delete all postings of same ip.") ) {
			board.submitSpam();
		};
	});

	// unspam
	$("#boardMenuWrapper .btnUnspam").live("click", function(){
		if ( confirm("Unspam this posting?") ) {
			board.submitUnspam();
		};
	});

	// file submit message
	$("input.uploadFile").live("change", function(){
		 $("#btnUpload").next().show();
	});

	
});


// functions
function getQueryParameter ( parameterName ) {
	var queryString = window.top.location.search.substring(1);
	var parameterName = parameterName.toLowerCase() + "=";
	if ( queryString.length > 0 ) {
		begin = queryString.toLowerCase().indexOf ( parameterName );
		if ( begin != -1 ) {
			begin += parameterName.length;
			end = queryString.indexOf ( "&" , begin );
			if ( end == -1 ) {
				end = queryString.length
			};
			return unescape ( queryString.substring ( begin, end ) );
		};
	};
	return "";
};
function isNumber(s) {
  s += ''; 
  s = s.replace(/^\s*|\s*$/g, ''); 
  if (s == '' || isNaN(s)) return false;
  return true;
};
function stripBrTag(s){
	s += '';
	s = s.replace(/<br>/g, "\n");
	return s;
};
function getStringLength(str){
    return(str.length+(escape(str)+"%u").match(/%u/g).length-1);
};
