/*
 * jrCMS Main Classes and Utilities
 *
 * The main part contains all classes and functions needed to initialize the 
 * the content as well as provide generic routines and the Ajax history function.
 *
 * Conventions for Ajax history pool:
 * - each public object (class) gets an four digit ID 
 * - the last two digits are used to identify the methods
 *
 * For proper usage rsh.js (real simple history) must be loaded first via config.php 
 * The real simple history function require an empty blank.html file in the root
 * directory.
 * TODO: replace the history function by a mootools based functionality like as
 * http://digitarald.de/project/history-manager/
 *
 * @package Main Classes, Functions and Utilities of jrCMS
 * @author Jens Raabe <jens@raabe-berlin.de>
 * @copyright Copyright (c) 2008, Jens Raabe
 * @version $Id: jrcms.cmp.js,v 1.4 2009/07/28 17:27:25 jens Exp $ 
 */
JRCmsUtils=new Class({waitForMilliSec:function(c){var b=new Date(),a=null;do{a=new Date()}while(a-b<c)},str_replace:function(c,b,a){return a.split(c).join(b)},chars2entities:function(d,c){var a="";d=this.str_replace("&amp;","&",d);d=this.str_replace("&nbsp;"," ",d);if(c==undefined||c!="proc"){}for(var b=0;b<d.length;b++){switch(d.charCodeAt(b)){case 34:if(c==undefined||c!="proc"){break}case 38:case 39:case 43:case 45:a+="%#"+d.charCodeAt(b)+";";break;default:if(d.charCodeAt(b)>127){a+="%#"+d.charCodeAt(b)+";"}else{a+=d.charAt(b)}}}return a},actYear:function(){var a=new Date();return a.getYear()},modDate:function(){var a=new Date(document.lastModified);var b=a.getYear();if(b<1000){b+=1900}return this.len2(a.getDate())+"."+this.len2(a.getMonth()+1)+"."+b},strRepeat:function(d,c){var a=d;for(var b=1;b<c;b++){a+=d}return a},setNone:function(a){var b=a;if(b.length>0){return b}else{return("none")}},cutNone:function(a){return this.str_replace("none","",a)},inStr:function(b,a){return b.indexOf(a)},checkEmailAddr:function(b){var a="01234567890.@_-abcdefghijklmnopqrstuvwxyz";if(b.indexOf("@")==-1){return"\n"+b+": Ist keine Gültige E-Mail Adresse"}if(b.substring(0,b.indexOf("@")).length<3&&b.substring(b.indexOf("@"),b.length).length<5&&b.substring(b.indexOf("@"),b.length).indexOf(".")==-1){return"\n"+b+": Fehlerhafte Email-Adresse."}x=this.illegal(b.toLowerCase(),a);if(x!=""){return"\n"+b+": Email enthält folgende ungültige Zeichen: \n\t "+x}return""},len2:function(a){return((a<10)?"0":"")+a},illegal:function(e,d){var b="";for(var c=0;c<=e.length;c++){if(d.indexOf(e.charAt(c))==-1){b=b+e.charAt(c)}}return b}});JRCmsBase=new Class({reloadPage:function(a){if(a==undefined){a="home"}switch(a){case"page":window.jrCmsLog.put(">>>> jrCMS page refresh <<<<");self.location.reload();break;case"home":window.jrCmsLog.put(">>>> jrCMS load/reload home page<<<<");if(jrCmsInit.options.jr_userLevel!=jrCmsInit.options.jr_maintLevel){jrCmsRsh.execHP(jrCmsInit.options.jr_initLoc,JSON.encode(jrCmsInit.options.jr_initParam))}else{jrCmsRsh.execHP(jrCmsInit.options.jr_maintLoc,JSON.encode(jrCmsInit.options.jr_maintParam))}break;default:window.jrCmsLog.put(">>>> jrCMS page reload <<<<");jrCmsRsh.change()}},writeVMenuHTML:function(a,d){try{if(a!=undefined){var c=$("divVMenu");c.innerHTML=a;c.scrollTop=c.scrollHeight;if($type(d)=="function"){d.run()}}}catch(b){var f=" JRCmsBase.writeVMenuHTML: "+b;if(this.options.jr_debug){throw new Error(f)}}},writeMainContentHTML:function(h,c){try{var f=new Array();for(var a in h){f[a]=h[a]}if($type(f.content)){var g=$("divMain");g.innerHTML=($type(f.ftype))?(this.labelContent(f.ftype,f.content)):(f.content);g.scrollTop=(g.scrollTop>g.scrollHeight)?g.scrollHeight:0;if($type(c)=="function"){c.run()}if($type(window.jrCmsEditor)=="object"){jrCmsEditor.actEditor(f.content)}}}catch(b){var d=" JRCmsBase.writeMainContentHTML: "+b;if(this.options.jr_debug){throw new Error(d)}}},getHTML:function(h,d){try{var g=new Array();for(var a in h){g[a]=h[a]}if(!$type(g.src)||!$type(g.parm)||!$type(g.div)){var f=" JRCmsBase.getHTML with wrong parameter called";if(this.options.jr_debug){throw new Error(f)}return}var c=new Request.HTML({url:g.src,method:"post",async:true,link:"chain",update:$(g.div),onFailure:function(i){var j=" JRCmsBase.getHTML "+i;if(this.options.jr_debug){throw new Error(j)}}.bind(this)});c.send(g.parm);if($type(d)=="function"){d.delay(500)}}catch(b){var f=" JRCmsBase.getHTML: "+b;if(this.options.jr_debug){throw new Error(f)}}},labelContent:function(a,c){var b="";switch(a){case"ifrm_ext":case"link":case"alink":b+='<iframe  name="content" frameborder="0"';b+=' src="'+c+'" id="iFContent">';b+="Sorry, your Browser does not support IFRAMEs. The content is partly available as SiteMap links. </iframe>";break;case"ifrm_int":case"page":case"apage":b+='<iframe  name="content" frameborder="0"';b+=' src="'+c+'" id="iFContent">';b+="Sorry, your Browser does not support IFRAMEs. The content is partly available as SiteMap links. </iframe>";break;case"ifrm_db":break;case"html_db":case"editor":case"aeditor":b+=c;break;default:b+="<h1>Wrong page Type: "+a+" processed !</h1>"}return b}});JRCmsCssBase=new Class({writeCssData:function(a){try{if((a[0]!=undefined)&&(a[0].cssid!="none")&&(a[0].cssid!="")){if(a[0].mnu_css!=undefined&&a[0].mnu_css!=""&&a[0].mnu_css!="none"){this.writeCSS(a[0].mnu_css)}if(a[0].mdesc!=undefined&&a[0].mdesc!=""&&a[0].mdesc!="none"){var d=$$("meta");if(d!=undefined){d.each(function(g,e){if(g.name=="description"){var f=a[0].mdesc;g.content=f}}.bind(this))}}if(a[0].mkey!=undefined&&a[0].mkey!=""&&a[0].mkey!="none"){var d=$$("meta");if(d!=undefined){d.each(function(g,e){if(g.name=="keywords"){var f=g.content+" "+a[0].mkey;g.content=f}}.bind(this))}}}}catch(b){var c=" JRCmsCssBase.writeCssData: "+b;if(this.options.jr_debug){throw new Error(c)}}},getStyleId:function(b){var a=new Array();a[0]=new Object();a[0]["background-color"]="bgColor";a[0]["display"]="display";a[0]["color"]="color";a[0]["background-image"]="backgroundImage";a[0]["background-repeat"]="backgroundRepeat";a[0]["position"]="position";a[0]["top"]="top";a[0]["left"]="left";a[0]["height"]="height";a[0]["width"]="width";a[0]["margin"]="margin";a[0]["margin-top"]="marginTop";a[0]["margin-bottom"]="marginBottom";a[0]["margin-left"]="marginLeft";a[0]["margin-right"]="marginRight";a[0]["padding"]="padding";a[0]["overflow"]="overflow";a[0]["border-width"]="borderWidth";a[0]["border-style"]="borderStyle";a[0]["border-color"]="borderColor";a[0]["border-top-width"]="borderTopWidth";a[0]["border-bottom-width"]="borderBottomWidth";a[0]["border-right-width"]="borderRightWidth";a[0]["border-left-width"]="borderLeftWidth";a[0]["font-size"]="fontSize";return a[0][b]},cssProperty:function(g,c){try{c.replace("\r","");c=this.str_replace(" ","",c);while(c.length>0){var i=c.substring(0,c.indexOf(";"));if(i.length>0&&i.indexOf(":")>0){var b=i.split(":");var d=$(g);if(d!=undefined){if(this.options.jr_ie_bug&&(b[0].indexOf("mage")>0)){if(b[1].indexOf("png")>0){b[1]=this.str_replace("png","gif",b[1])}}d.setStyle(this.getStyleId(b[0]),b[1])}else{var a=$$("."+g);a.each(function(j,e){if(this.options.jr_ie_bug&&(b[0].indexOf("mage")>0)){if(b[1].indexOf("png")>0){b[1]=this.str_replace("png","gif",b[1])}}j.setStyle(this.getStyleId(b[0]),b[1])}.bind(this))}c=(c.indexOf(";")<c.length)?(c.substring(c.indexOf(";")+1,c.length)):("")}else{c=""}}}catch(f){var h=" JRCmsCssBase.cssProperty failure: "+f;if(this.options.jr_debug){throw new Error(h)}}},writeCSS:function(c){c.replace(" ","");c.replace("\n","");while(c.length>0){c=(c.indexOf(".")==0||c.indexOf("#")==0)?(c.substring(1,c.length)):(c);var b=c.substring(0,c.indexOf("{"));if(b.length>0){var a=c.substring(c.indexOf("{")+1,c.indexOf("}"));this.cssProperty(b,a);c=(c.indexOf("}")<c.length)?(c.substring(c.indexOf("}")+1,c.length)):("")}else{c=""}}},showId:function(b,a){a.each(function(d,c){$(d).setStyle("display","none")}.bind(this));$(b).setStyle("display","block")},hideId:function(a){}});JRCmsCore=new Class({Implements:[Options,JRCmsUtils,JRCmsCssBase,JRCmsBase],options:{jr_lang:"de",jr_debug:false,jr_srcpath:"src/",jr_refreshVMenu:false,jr_dbischanged:false,jr_loginload:"home",jr_phpSRC:"src/jrcms.php"},getClassId:function(){return 1000},getVersion:function(){return"$Revision: 1.4 $"},initialize:function(b,a){this.setOptions(b);jrCmsRshSource.add(this.getClassId()+1,((a!=undefined)?(a):("jrCMS")),"getContent","ajax");jrCmsRshSource.add(this.getClassId()+2,((a!=undefined)?(a):("jrCMS")),"getContent","aeditor");jrCmsRshSource.add(this.getClassId()+3,((a!=undefined)?(a):("jrCMS")),"getContentforEditor","ajax");jrCmsRshSource.add(this.getClassId()+4,((a!=undefined)?(a):("jrCMS")),"getLogin","ajax");jrCmsRshSource.add(this.getClassId()+5,((a!=undefined)?(a):("jrCMS")),"saveLoginValue","ajax");jrCmsRshSource.add(this.getClassId()+6,((a!=undefined)?(a):("jrCMS")),"login","ajax");jrCmsRshSource.add(this.getClassId()+7,((a!=undefined)?(a):("jrCMS")),"logout","ajax");jrCmsRshSource.add(this.getClassId()+10,((a!=undefined)?(a):("jrCMS")),"setLang","ajax");jrCmsRshSource.add(this.getClassId()+11,((a!=undefined)?(a):("jrCMS")),"reloadPage","ajax")},getContent:function(p,el){try{var methodId=1;var parm="a=";parm+="getcnt";parm+=(p.xh!=undefined)?("&h="+p.xh):("");parm+=(p.xv!=undefined)?("&v="+p.xv):("");parm+=(p.cssid!=undefined)?("&css="+p.cssid):("");parm+="&p="+((this.options.jr_ie_bug)?(1):(0));if($type(window.jrCmsPUW)=="object"){window.jrCmsPUW.hidePUW()}if($type(window.jrCmsImgShow)=="object"){window.jrCmsImgShow.stopImgShow()}jrCmsRsh.addHP(this.getClassId()+methodId,p,"getContent",function(){jrCmsLog.put("HP>> getContent: "+JSON.encode(p))}.bind(this));var req=new Request({url:"src/jrcms.php",method:"post",async:true,link:"chain",onSuccess:function(txt,xmltxt){var xmlDoc=xmltxt;$("divMain").innerHTML="";if(xmlDoc.getElementsByTagName("cssdata").length>0){var cssData=eval("("+xmlDoc.getElementsByTagName("cssdata")[0].firstChild.data+")");this.writeCssData(cssData)}if($("divVMenu").innerHTML==""||this.options.jr_refreshVMenu){if(xmlDoc.getElementsByTagName("vmhtml").length>0){var vmHtml=xmlDoc.getElementsByTagName("vmhtml")[0].firstChild.data;this.writeVMenuHTML(vmHtml)}}if(xmlDoc.getElementsByTagName("conthtml").length>0){var contHtml=xmlDoc.getElementsByTagName("conthtml")[0].firstChild.data;this.writeMainContentHTML({content:contHtml})}}.bind(this),onFailure:function(err){jrCmsLog.put("F#>> jrCMS.getContent no content "+err)}.bind(this)});req.send(parm)}catch(err){jrCmsLog.put("F#>> jrCMS.getContent failure: "+err)}},getContentforEditor:function(e,b){try{var a=3;var d=new Request({url:b,method:"post",async:true,link:"chain",onSuccess:function(f,g){this.writeMainContentHTML({content:f})}.bind(this),onFailure:function(f){jrCmsLog.put("F#>> jrCMS.getContentforEditor no content "+f)}.bind(this)});d.send(e)}catch(c){jrCmsLog.put("F#>> jrCMS.getContentforEditor failure: "+c)}},getLogin:function(c){try{var a=4;var d="a=";d+=c.act;if($type(window.jrCmsPUW)=="object"){window.jrCmsPUW.hidePUW()}if($type(window.jrCmsImgShow)=="object"){window.jrCmsImgShow.stopImgShow()}jrCmsRsh.addHP(this.getClassId()+a,c,"getLogin",function(){jrCmsLog.put("HP>> getLogin: "+JSON.encode(c))}.bind(this));this.getHTML({parm:d,src:this.options.jr_phpSRC,div:this.options.jr_divMain})}catch(b){jrCmsLog.put("F#>> jrCMS.getLogin failure: "+b)}},saveLoginValue:function(c){try{var a=5;if(document.formular.txt_username.value==""){alert(this.options.jr_langTxt.u_insert_user);document.formular.txt_username.focus();return false}var d="un=";d+=Base64.encode(document.getElementById("txt_username").value);if(document.formular.txt_userpass.value==""){alert(this.options.jr_langTxt.u_pw_required);document.formular.txt_userpass.focus();return false}d+="&up=";d+=Base64.encode(document.getElementById("txt_userpass").value);if(document.formular.txt_userpass2.value==""){alert(this.options.jr_langTxt.u_repeat_pw);document.formular.txt_userpass2.focus();return false}d+="&up2=";d+=Base64.encode(document.getElementById("txt_userpass2").value);d+="&a=";d+=c.act;this.updateLiLoFrame(d)}catch(b){jrCmsLog.put("F#>> jrCMS.saveLoginValue failure: "+b)}},login:function(c){try{var a=6;if(document.formular.txt_username.value==""){alert(this.options.jr_langTxt.u_insert_user);document.formular.txt_username.focus();return false}var d="un=";d+=Base64.encode(document.getElementById("txt_username").value);if(document.formular.txt_userpass.value==""){alert(this.options.jr_langTxt.u_pw_required);document.formular.txt_userpass.focus();return false}d+="&up=";d+=Base64.encode(document.getElementById("txt_userpass").value);d+="&a=";d+=c.act;this.updateLiLoFrame(d)}catch(b){jrCmsLog.put("F#>> jrCmsLog.putin failure: "+b)}},logout:function(c){try{var a=7;var d="&a=";d+=c.act;this.updateLiLoFrame(d)}catch(b){jrCmsLog.put("F#>> jrCmsLog.putout failure: "+b)}},updateLiLoFrame:function(c){var a=8;var b=new Request({url:this.options.jr_phpSRC,method:"post",async:true,link:"chain",onSuccess:function(d){var e=$("divLogin");if((d.search(/Failure/)==-1)){e.innerHTML=d;e.scrollTop=e.scrollHeight;var e=$("divVMenu");if(e!=undefined){e.innerHTML=""}var e=$("divMain");if(e!=undefined){e.innerHTML=""}if(this.options.jr_loginload=="home"){this.reloadPage("home")}else{this.reloadPage("'ALL'")}}else{var e=$("divMain");strHtml="<h2>Falsche Kennung oder Passwort!</h2>";e.innerHTML=strHtml;e.scrollTop=e.scrollHeight}}.bind(this),onFailure:function(d){jrCmsLog.put("F#>> jrCMS updateLiLoFrame "+d)}.bind(this)});b.send(c)},backup:function(){var a=9;if(this.options.jr_backupDB){var c="a=";c+="backup";var b=new Request({url:"src/jrCMSMain.php",method:"post",async:true,link:"chain",onSuccess:function(d){}.bind(this),onFailure:function(d){jrCmsLog.put("F#>> jrCMS backup "+d)}.bind(this)});b.send(c)}},setLang:function(c,b){var a=10;var d="a=";d+="setLang";if(this.options.jr_lang!=""){d+="&lang=";d+=c.lang;this.getHTML({parm:d,src:this.options.jr_phpSRC,div:this.options.jr_divMain},function(){window.jrCMS.reloadPage("'ALL'")})}}});