var mvwizJSTpl = Object(); mvwizJSTpl.window1 = ("
\"float-top1.png\" __TITLE__
 
 
");function mvwizStr(){ //----------------------------- POST FORM To Urlencode --------------------- this.form2post = function(obj){ if(!obj){return false;} var result=""; if(!obj.elements){return false;} for(var i=0;i0)result+="&"; if(obj.elements[i].type=="checkbox"||obj.elements[i].type=="radio"){ if(obj.elements[i].checked){ result+=encodeURIComponent(obj.elements[i].name)+"="+encodeURIComponent(obj.elements[i].value); } }else if(obj.elements[i].type=="file"){ //fd.append(obj.elements[i].name,obj.elements[i][0]); return ("file"); }else{ result+=encodeURIComponent(obj.elements[i].name)+"="+encodeURIComponent(obj.elements[i].value); } } } return result;} this.uniqid = function(prefix, more_entropy) { // + original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net) // + revised by: Kankrelune (http://www.webfaktory.info/) // % note 1: Uses an internal counter (in php_js global) to avoid collision // * example 1: uniqid(); // * returns 1: 'a30285b160c14' // * example 2: uniqid('foo'); // * returns 2: 'fooa30285b1cd361' // * example 3: uniqid('bar', true); // * returns 3: 'bara20285b23dfd1.31879087' if (typeof prefix == 'undefined') { var retId; var formatSeed = function (seed, reqWidth) { seed = parseInt(seed, 10).toString(16); // to hex str if (reqWidth < seed.length) { // so long we split return seed.slice(seed.length - reqWidth); } if (reqWidth > seed.length) { // so short we pad return Array(1 + (reqWidth - seed.length)).join('0') + seed; } return seed; }; // BEGIN REDUNDANT if (!this.php_js) { this.php_js = {}; } // END REDUNDANT if (!this.php_js.uniqidSeed) { // init seed with big random int this.php_js.uniqidSeed = Math.floor(Math.random() * 0x75bcd15); } this.php_js.uniqidSeed++; retId = prefix; // start with prefix, add current milliseconds hex string retId += formatSeed(parseInt(new Date().getTime() / 1000, 10), 8); retId += formatSeed(this.php_js.uniqidSeed, 5); // add seed hex string if (more_entropy) { // for more entropy we add a float lower to 10 retId += (Math.random() * 10).toFixed(8).toString(); } return retId;} //--------------------------- 파라메터 값을 오브젝트로 변환 ----------------- this.param2obj = function(param){ var temp = param.split('&'); var tempobj = new Object(); var t2 = null; for(var i in temp){ if(temp[i]==null){continue;} t2 = temp[i].split('='); tempobj[t2[0]] = t2[1]; } return(tempobj); } //--------------------------- 오브젝트 값을 값을 파라메터로 변환 ----------------- this.obj2param = function(obj){ var param = (""); for(var i in obj){ param += (i+"="+obj[i]+"&"); } return(param); } this.scriptfromtag = function(str){ var scripts = ""; var regexp = /)<[^<]*)*<\/script>/gi; while(tempp = regexp.exec(str)){ tempp =tempp.toString(); scripts += tempp.replace( /|<\/script>/gi,"\n"); } str = str.replace(regexp,""); return[str,scripts] } //--------------------- 타이틀 테그를 가져 온다 --------------------- this.getTitle = function(str){ try{ var regexp = /)<[^<]*)*<\/title>/gi; str = regexp.exec(str).toString(); return str.replace( /|<\/title>/gi,"\n"); }catch(e){ return("제목 없음"); } } }function mvwizWindow(){ this.open = function(url){ window.open(url,'_blank','fullscreen=no,menubar=no,status=no,toolbar=no,titlebar=no,location=no,scrollbars=yes,width=500, height=500'); } //-------------------------------- 자기 윈도우 아이디 구하기 --------------------- this.getSelfWindow = function(obj){ if(!obj){return false;} var pobj = obj; while(pobj = pobj.parentNode){ if(pobj.id){ if(pobj.id.indexOf('mvwizWINDOWID_')!=-1)return pobj.id; } } } //--------------------------------- 최 상위 창의 위치 ------------------------ this.topzindex = function(){ var topindex = 1000; for(i in mvwizWindows){ if(mvwizWindows[i]&&mvwizWindows[i].style.zIndex>=topindex){topindex = mvwizWindows[i].style.zIndex+1;} } return topindex; } //--------------------------------- 전체중에 제일 높은 인덱스 값을 고른다음 ---------------------- this.escWindow = function(){ var topid = 0; var topobj = null; for(i in mvwizWindows){ if(topid=1000 && obj.id.indexOf("_parent")!=-1){ break; } prevobj = obj; } this.closeWindow(prevobj); } //----------------------------------- 창을 닫는다 ----------------------------- this.closeWindow = function(obj){ $(obj).fadeOut('slow',function(){ //alert(obj.id); mvwizWindows[obj.id] = null; obj.parentNode.removeChild(obj); }); } //-------------------------------- 새로운 윈도우를 오픈한다. --------------------- this.newWindow = function(id,title){ var id = id?id:mvwiz.str.uniqid("window"); var divTag = document.createElement("div"); divTag.id = id+"_parent"; divTag.style.zIndex = this.topzindex(); divTag.style.position = "absolute"; divTag.style.top = $(window).scrollTop() + $(window).height()/8 +"px"; divTag.style.left = $(window).width()/3 + "px"; divTag.style.display = "none"; var temp = mvwizJSTpl.window1; temp = temp.replace(/__DSP__/g,id); temp = temp.replace(/__TITLE__/g,title); divTag.innerHTML=temp; document.body.appendChild(divTag); mvwizWindows[id] = divTag; $(divTag).fadeIn('fast'); return document.getElementById(id); } } //---------------------------------- mvwizFramework ------------------------ function mvwizFramework(){ this.str = new mvwizStr(); this.window = new mvwizWindow(); this.jtpl = mvwizJSTpl; this.windowStack = new Array(); this.msg = ("hello world!"); this.echo = function(){ alert(this.msg); } this.apps = Array(); //---------------------------------- 명령어를 url 주소럭함 -------------------------- this.cmd2url = function(cmd){ var temp; var request = (""); for (var i in cmd){ temp = cmd[i]; if(typeof(temp[2])=="string"){ this.apps[temp[0]] = this.str.param2obj(temp[2]); }else{ temp[2] = this.window.getSelfWindow(temp[2]); } request += temp[0]+"<:[input]:>"+encodeURIComponent(temp[1])+"<:[input]:>"+encodeURIComponent(temp[2])+"<:[apps]:>"; } var url = mvwizFramework_phpself+"?_MF7EX_="+request.substring(0,request.length-10)+"&ts="+mvwiz.str.uniqid("ts"); return url; } //-------------------------------- Iframe 으로 로드 할때 처리한다 ---------------------- this.iload = function(str,target){ var data = mvwiz.str.scriptfromtag(str); if(!document.getElementById(target)){ mvwiz.window.newWindow(target); } document.getElementById(target).innerHTML = data[0]; eval(data[1]); } //---------------------------------- 명령어를 url 주소럭함 -------------------------- this.load = function(url,form){ $('#_mvwizLoadingStatus').fadeIn('fast'); var windowID = this.str.uniqid("mvwizWINDOWID_");; url = this.cmd2url(url); var fobj = (typeof(form)=="string")?document.getElementById(form):form; var sendData = this.str.form2post(fobj); if(sendData=="file"){ form.action = url+"&iframe=1"; form.method = "post"; form.target = "mvwizAJAX_hiddenFrame"; form.enctype = "multipart/form-data"; return true; } if(window.ActiveXObject){var xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");} else if(window.XMLHttpRequest){var xmlhttp = new XMLHttpRequest();} xmlhttp.open('POST',url,'true'); xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); xmlhttp.setRequestHeader ("ENCTYPE", "multipart/form-data"); xmlhttp.send(sendData); xmlhttp.onreadystatechange = function() { if(xmlhttp.readyState==4 && xmlhttp.status == 200 && xmlhttp.statusText=='OK') { if(xmlhttp.responseText){ var data = xmlhttp.responseText; var ajaxdocs = data.split(''); var ajaxdoc = ""; for(var i in ajaxdocs){ ajaxdoc = ajaxdocs[i].split(''); windowID = windowID+i; if(ajaxdoc[0]){ var title = mvwiz.str.getTitle(ajaxdoc[0]); var tmpp = mvwiz.str.scriptfromtag(ajaxdoc[0]); ajaxdoc[0] = tmpp[0]; var tmp_script = tmpp[1]; var dspDoc = document.getElementById(ajaxdoc[1])?document.getElementById(ajaxdoc[1]):mvwiz.window.newWindow(ajaxdoc[1],title); if(dspDoc.id.indexOf('mvwizWINDOWID_')==-1){ windowID = windowID+i; dspDoc.innerHTML = ""+ajaxdoc[0]+""; }else{ dspDoc.innerHTML = ajaxdoc[0]; } eval(tmp_script); } } $('#_mvwizLoadingStatus').fadeOut('fast'); } }else{ if((0<=xmlhttp.readyState)&&(xmlhttp.readyState<4)){}else{alert('404 - Page Not found');} $('#_mvwizLoadingStatus').fadeOut('fast'); } } return false; } } // end of class var mvwiz = new mvwizFramework(); var mvwizWindows = []; var mvwizWindowsId = 0; $("body").keydown(function(event) { if (event.which == 27) { //mvwiz.window.escWindow(); } });