var url = require("url");
var path = require("path");
var fs = require("fs");
-var myparse = require("./myparse.js");
+//var myparse = require("./myparse.js");
var webmain = require("./webmain.js");
+var layouts = require("./layouts.js");
+
+// global stuff
+var extraCss = new Array();
+var extraJs = new Array();
+//var defaultLayout = null;
+var defaultMainPurl = null;
//var staticExtensions = ["html", "gif", "jpg", "css", "js", "ico"];
// now we need to find the extension used
// to serve the request based no the first purl
+
+
+ /*
+ *
if(purl.pathname == "/") {
console.log("Serv main");
webmain.serveMain(request, response, function (request, response) {
}
return;
});
+ */
+
+ urlServicer(request, response, purl);
+
+
+ return;
+}
+
+function urlServicer(request, response, purl) {
+ console.log("url servicer called for ", purl);
+
+ // first resolve the module making the call and determine layout/purl
+ var purlClass = layouts;
+ var purlLayout = layouts.standard();
+
+ if(purl.pathname == "/") {
+ if(defaultMainPurl == null) {
+ console.log("set purl class to layouts");
+ purlClass = layouts;
+ } else {
+ // find and load the purl
+ }
+
+ if(typeof purlClass.layout == "undefined") {
+ console.log("set via undefined");
+ purlLayout = layouts.standard();
+ } else {
+ // find and resolve the layout
+ }
+ } else {
+ // handle the purls
+ }
+
+ // now we should have a layout and a class
+ if(typeof purlClass.preResponse != "undefined") {
+ purlClass.preResponse(request, response, function() {
+ serviceLayout(request, response, purlClass, purlLayout);
+ });
+ } else {
+ serviceLayout(request, response, purlClass, purlLayout);
+ }
+ return;
+}
+
+function serviceLayout(request, response, purlClass, purlLayout) {
+ var reallay = "start:"+purlLayout+":end";
+ var splitup = reallay.split("<?njs");
+ var offset=0;
+
+ console.log("inservicer: ", purlLayout);
+ function processLayout() {
+ var output = "";
+
+ console.log("begin process layout");
+
+ if(offset >= splitup.length) {
+ response.write("end of caller");
+ response.end();
+ return;
+ } else if(offset == 0) {
+ console.log("write for offset 0");
+ output = splitup[0].replace(/^start:/g, "");
+ if(splitup.length == 1) output = output.replace(/:end$/g, "");
+ console.log("did write: ", output);
+ response.write(output);
+ offset++;
+ processLayout();
+ } else {
+ var thispart = splitup[offset].split("?>");
+ var caller = thispart[0].trim();
+
+ console.log("in parts for bits: ", thispart);
+ console.log("and caller is: ", caller);
+
+ // here we resolve and call the caller....
+ //response.write("calling: " + caller);
+ resolveAndCall(request, response, caller, purlClass, function () {
+ output = thispart[1].replace(/:end$/g, "");
+ response.write(output);
+ offset++;
+ processLayout();
+ });
+ }
+ }
+
+ processLayout();
+
+ //response.write("servicer");
+ //response.end();
+}
+
+function resolveAndCall(request, response, caller, purlClass, callback) {
+ //response.write("resolving: \"" + caller + "\"");
+ if(typeof purlClass[caller] != "undefined") {
+ purlClass[caller](request, response, callback);
+ } else if(typeof purlClass[caller] != "undefined"){
+ layouts[caller](request, response, callback);
+ } else {
+ response.write("<hr><br>Undefined layout section<br><hr>");
+ callback();
+ }
+ //callback();
return;
}