var snm = function(data, config) {
this.level = 0;
this.config = config;
this.data = data;
this.strHTML="";
this.isDefined=function(el){return (typeof(el)=="undefined"||el==null)?false:true;};
this.build=function()
{
var strHTML = "";
strHTML += "
";
this.container.innerHTML = strHTML;
};
this.buildsection=function(n)
{
this.data = n;
var strHTML = "";
strHTML += "";
strHTML += "
";
strHTML += "
";
this.container.innerHTML = strHTML;
this.selectednodelevel -= 2;
};
this.getSubArray=function(n)
{
var path = n.split("/");
if(path.length>4)
{
var tofind = path[0]+"/"+path[1]+"/";
var i=2;
var df = this.sausages(this.data, tofind);
while(i<3)
{
tofind += path[i]+"/";
df = this.sausages(df, tofind);
i++;
}
this.data = (df!=null)?df:data;
return (df!=null);
}
else
return false;
};
this.getPartialDataFile=function(df, tofind)
{
if(df)
{
for(var i=0; i=3)
{
var tofind = path[0]+"/"+path[1]+"/";
var i=2;
var df = this.getPartialDataFile(this.data, tofind);
while(i<3 )
{
tofind += path[i]+"/";
df = this.getPartialDataFile(df, tofind);
i++;
}
var john = false;
if(df)
{
john = this.havesection(df, node);
}
if(df && john) return df;
else return false;
}
else return false;
};
this.havesection=function(arr, tofind)
{
for(var i=3; i";
var img;
do{
str += this.buildRow(arr[child]);
child++;
}while(arr[child]&&arr[child]!=null)
str += "";
this.menus++;
return str;
};
this.buildRow=function(arr)
{
var str = ""; var bg = ""; var style = ""; var url; var target;
if(arr)
{
var mover=""; var mout=""; var bg_arrow = "";
if(this.isDefined(arr[3])&& this.level<1) bg_arrow="style=\"background-image:url("+this.root+"resources/images/jumeirah/arrow_green_right.gif);background-repeat:no-repeat; background-position:176px 50%;\"";
url = (arr[2].indexOf("http")!=-1)?arr[2]:this.root+arr[2];
target = (arr[2].indexOf("http")!=-1)?"_blank":"";
str += ""+((this.level==2)?" - ":"")+arr[0]+"";
if(this.isDefined(arr[3]) && this.level<2)
{
this.level++;
str += this.addItems(arr);
this.level--;
}
str += "";
}
return str;
};
this.getStyle = function()
{
var sli = this.config.style[this.level].li;
var sa = this.config.style[this.level].a;
var li = "";
var a = "";
for(key in sli)
{
li += key+":"+sli[key];
}
for(key in sa)
{
a += key+":"+sa[key];
}
return [li, a];
};
this.expandToNode=function(node, selItem)
{
var n = getElement(this.config.prefix+""+node);
var childUL = findChild(n, "UL");el = null;
// IF THE NODE HAS A CHILD UL THEN SHOW.
if(childUL)
{
n.firstChild.style.background = "url("+this.root+"resources/images/jumeirah/arrow_white_down.gif) #A4B03D no-repeat 176px 50%";
childUL.style.display = "";
}
// THIS ITERATES THROUGH ALL THE PARENT NODES EXPANDING.
if(n!=null)
{
this.selectednodelevel--;
n.firstChild.style.backgroundColor=this.config.colours[this.selectednodelevel].selected;
n.firstChild.style.color="#FFFFFF";
while(n.parentNode && this.selectednodelevel>=0)
{
if(n.parentNode.id==(this.config.prefix+"_root"))
break;
if(n.parentNode.tagName=="UL")
{
n.parentNode.style.display = "";
}
else if(n.parentNode.tagName == "LI")
{
this.selectednodelevel--;
n.parentNode.firstChild.style.color="#FFFFFF";
var cs = this.getColourScheme();
n.parentNode.firstChild.style.background = "url("+this.root+"resources/images/jumeirah/arrow_white_down.gif) "+cs.sel+" no-repeat 176px 50%";
}
n = n.parentNode;
}
}
};
this.changeImage=function(el)
{
// this is called to change the plus and minus when you're showing and hiding a nodes children
if(getFileName(el.src)=="arrow_right.gif")
changeImage(el, this.ptr+dots+'resources/images/jumeirah/arrow_down.gif');
else
changeImage(el, this.ptr+dots+'resources/images/jumeirah/arrow_right.gif');
};
this.getColourScheme=function()
{
var cs = new Array();
if(this.selectednodelevel<0) this.selectednodelevel=1;
var index = (this.selectednodelevel<3)?this.selectednodelevel:2
cs["bg"] = this.config.colours[index].background;
cs["sel"] = this.config.colours[index].selected;
return cs;
};
this.getPadding=function(cl)
{
// this is used to get the padding that we're going to apply to an item in the SNM
var pt, pb, pl;
if(cl=="root")
{
pt=1; pb=2;
}
else{
pt=2; pb=3;
pl = 6;
}
return [pt, pb, pl];
};
this.getUrl=function(str)
{
// this is used to create a URL, basically wrapping a current url in a confirm function.
var ahref = str;
ahref = (ahref!=null)?(ahref.indexOf("javascript:void(")==-1)?"javascript:confirmRedirect(\""+ahref+"\");":ahref:"javascript:void(0);";
return ahref;
};
}
var el = null;
function findChild(a, b)
{
for(var i=0; i