/**
 * @author Andrew Nordman [andrew@drwebsolutions.com], Robert Miner [robert@drwebsolutions.com]
 * 
 * 
 * EXAMPLE:
 * 
 */

      var Navmind = Class.create({
           initialize: function() {
                this.template = '';
                this.data = '';
								this.fileRoot = ''
				var dirs=window.location.href.split('/'),
				cdir = "";
				for(var x = 3; x < dirs.length-1; x++) { 
					cdir = cdir+"/"+dirs[x]; 
				}
				//cdir=dirs[dirs.length-2];
				//console.log(cdir)
				//console.log(dirs)
				this.fileRoot = cdir.replace("/parent_profiles","");
           },
           
           getData: function(renderFunc) {
                var cc = this;
                jQuery.getJSON(this.fileRoot + "/lib/navmind/getData2.php", function(json) {
                     cc.data = json;
                     cc.renderNav();
                })
           },
           
           findPageJSON: function(navData) {			
                //console.log(this.data)
                //console.log(this.data.nav.length);
				var extension;
				var currPage;
				
                for(var x = 0; x < navData.nav.length; x++) {
                     //check if current page is a primary nav page
					 extension = window.location.pathname.split(".")
					 if(extension[1] == "php")
					 	currPage = window.location.pathname
					 else
					 	currPage = this.fileRoot + "/index.php" 
                     //console.log("/client/1015/364/site/"+navData.nav[x].href+" vs "+window.location.pathname)                    
                     if((this.fileRoot + "/" + navData.nav[x].href) == currPage) {
						 //console.log("Primary nav");
                          return x;
                     } else {
                          //does a subnav exist?
                          //console.log("Subnav1 " + x + ": " + typeof(this.data.nav[x].nav))
                          if(typeof(navData.nav[x].nav) != "undefined") {
                               //console.log(this.data.nav[x].nav.length);
							   
                               for(var y = 0; y < navData.nav[x].nav.length; y++) {
                                    //check if current page is a sub nav page
                                    //console.log(this.fileRoot + "/"+navData.nav[x].nav[y].href+" vs "+window.location.pathname)
                                    if(this.fileRoot + "/"+navData.nav[x].nav[y].href == currPage) {
										//console.log("Sub nav");
                                         var loc = '';
                                         
                                         loc += x+"-"+y;
                                         return loc;
                                    } else {
                                         //does a subnav exist?
                                         //console.log("Subnav2: " + typeof(this.data.nav[x].nav[y].nav))
										 //console.log(x + " && " + y + ": " + this.data.nav[x].nav[y].nav)
                                         if(typeof(navData.nav[x].nav[y].nav) != "string") {
                                              //console.log("ping")
                                              //console.log(this.data.nav[x].nav[y].nav.length)
                                              for(var z = 0; z < navData.nav[x].nav[y].nav.length; z++) {
                                                   //check if current page is a sub nav page
												   //console.log(z)
                                                   //console.log(this.fileRoot+"/"+navData.nav[x].nav[y].nav[z].href+" vs "+window.location.pathname)
                                                   if(this.fileRoot + "/"+navData.nav[x].nav[y].nav[z].href == currPage) {
													   //console.log("Ternary nav");
                                                        var loc = '';
                                         
                                                        loc += x+"-"+y+"-"+z;
                                                        return loc;
                                                   }
                                              }
                                         }
                                    }
                               }
                          }
                     }
                }
                //if it can't find ANYTHING, return the primary navigation
				//console.log("Nothing found");
                return -2;
           },
           
           loadTemplate: function(template) {
			   //console.log(template)
                this.template = new EJS({url: template});
                
           },
           
           buildNav: function(target, navJSON) {
                //console.log("buildNav executed")
				//console.log(navJSON)
				//console.log(this.template)
                //output nav
                var output = this.template.render(navJSON);
				//console.log("Template rendered");
                jQuery(target).html(output);
                //set event handlers
                cc = this;
                for(var i = 0; i < navJSON.nav.length; i++) (function(i,cc){
                     var element = "#n"+navJSON.nav[i].parentID+"-e"+navJSON.nav[i].id;
                     //console.log(element);
                     jQuery(element).hover(function() {
                          jQuery(this).addClass("NAV_SELECTED");
                     }, function() {
                          jQuery(this).removeClass("NAV_SELECTED");
                     })
                     var coords2 = cc.findPageJSON(cc.data.main);
                     if(jQuery.browser.mozilla) {
                          //console.log(coords2.toString().indexOf("-"))
                     }
                     var coords = new Array();
                     if (coords2.toString().indexOf("-") != -1) {
                         coords = coords2.toString().split("-")
					                } else {
						                   coords[0] = coords2
					                }
					 					if(cc.data.main.nav[coords[0]] == false) {
										if (cc.data.main.nav[coords[0]].id == navJSON.nav[i].id) {
                               jQuery(element).addClass("NAV_DOWN");
                     }
                     }
                     if(coords.length > 1) {
                          if(cc.data.main.nav[coords[0]] == false)
													if(cc.data.main.nav[coords[0]].nav[coords[1]].id == navJSON.nav[i].id) {
                               jQuery(element).addClass("NAV_DOWN");
                          }
                     }
                })(i, cc)
           },
           
           buildSubNav: function(target, parentJSON, navJSON) {
                //console.log("buildSubNav executed")
                var output = this.template.render(navJSON);
                jQuery(target).html(output);
                this.setBindings(target, parentJSON);
                /*jQuery("#n"+parentJSON.nav[0].parentID).children().each(function() {
                     var nameSplice = jQuery(this).attr("id").split("-e");
                     jQuery(this).mouseover(function() {                                              
       
                          arguments.callee(target, parentJSON, parentJSON.nav[nameSplice[1]])
                     })
                });*/
           },
           setBindings: function(target, json) {
                //console.log("setBindings executed")
                var cc = this;
                jQuery("#n"+json.nav[0].parentID).children().each(function() {
                     var nameSplice = jQuery(this).attr("id").split("-e");
                     jQuery(this).mouseover(function() {                                              
                          cc.buildSubNav(target, json, json.nav[nameSplice[1]])
                     })
                });
           },
           renderNav: function() {
                this.loadTemplate(this.fileRoot + '/lib/navmind/templates/horizontal-nav.ejs');
                this.buildNav("#SANDBOX",this.data.main);
                //navmind.loadTemplate('lib/navmind/templates/vertical-nav.ejs');
                //navmind.buildNav("#sandbox-subnav",navmind.data.nav[1]);
                var coords2 = this.findPageJSON(this.data.main);				
                //console.log(coords2);
				
				if (coords2 != '-2') {
				
					var coords = new Array();
					
					if (coords2.toString().indexOf("-") != -1) {
						coords = coords2.split("-")
					}
					else {
						coords[0] = coords2
					}
					
					//console.log(coords)
					this.loadTemplate(this.fileRoot + '/lib/navmind/templates/vertical-nav.ejs');
					//this.buildNav("#sandbox-subnav",this.data.nav[coords[0]])
					this.buildNav("#SANDBOX-SUBNAV", this.data.main.nav[coords[0]])
					//console.log(this.data.main.nav[coords[0]].nav[coords[1]].nav);
					if (coords.length == 3 || (coords.length == 2 && this.data.main.nav[coords[0]].nav[coords[1]].nav)) {
						this.loadTemplate(this.fileRoot + '/lib/navmind/templates/horizontal-nav.ejs');
						//this.buildNav("#sandbox-subnav2",this.data.nav[coords[1]])
						//console.log(this.data.main.nav[coords[0]].nav[coords[1]].id)
						this.buildNav("#VERT_TERTIARY_CONTAINER-"+this.data.main.nav[coords[0]].nav[coords[1]].id, this.data.main.nav[coords[0]].nav[coords[1]])
					}
				}
				
				this.loadTemplate(this.fileRoot + '/lib/navmind/templates/horizontal-nav.ejs')
				this.buildNav("#SANDBOX-TOP", this.data.top)
				
				this.buildNav("#SANDBOX-FOOTER", this.data.footer)
           }
  
      })
