/*globals $,ibuyproperties,window*/ // R O O T E R ibuyproperties.router=(function(){ var allRoutes=[]; function route() { var hash = window.location.hash; var lastLocation = null; if (!hash) { window.location.hash = "#Home"; } if (lastLocation != hash) { this.lastLocation=hash; var routeFoundMainNav=false; var promisesMainNav=[]; // Generic routing based on template names $.each(ibuyproperties.templates.getType("mainPages"),function(pos,name){ var def = new $.Deferred(); promisesMainNav.push(def); var re=new RegExp("^#" + name + "[/]*"); if (ibuyproperties.isDebugMode) { console.log("Generic Router - test ",name);} // debugger; if (hash.match(re)) { routeFoundMainNav=true; if (ibuyproperties.isDebugMode) { console.log("Generic Router - match ",name);} if ($("#pnl_" +name).length === 0) { $("#content").empty().append(ibuyproperties.templateHelper.get(name)({templateName:name})); } ibuyproperties.navShow('mainScreen',name); $('.in,.open').removeClass('in open'); } def.resolve(); }); $.when.apply(undefined,promisesMainNav).then(function(){if (!routeFoundMainNav) {console.error("NO matching Navigation tab route found");}}); var promisesDyn=[]; var routeFoundDynamic=false; // Dynamic route handling $.each(allRoutes,function(pos,theRoute){ var def = new $.Deferred(); promisesDyn.push(def); if (ibuyproperties.isDebugMode) { console.log("Dynamic Router - test ",hash ,theRoute);} var re=new RegExp(theRoute.re); if (hash.match(re)) { routeFoundDynamic=true; if (ibuyproperties.isDebugMode) { console.log("Dynamic Router - match ",hash,theRoute);} theRoute.cb.call(); return false; // exit the loop } def.resolve(); }); $.when.apply(undefined,promisesDyn).then(function(){if (!routeFoundDynamic) {console.error("NO matching Dynamic route found");}}); } } function addRoute(re, callBack){ var theRoute={re:re,cb:callBack}; allRoutes.push(theRoute); } return { route:route, addRoute:addRoute }; }());