/**********************************************************************************
SlideMenu 2.0
*   Copyright (C) 2002 Thomas Brattli
*   This script was released at DHTMLCentral.com
*   Visit for more great scripts!
*   This may be used and changed freely as long as this msg is intact!
*   We will also appreciate any links you could give us.
*
*   Made by Thomas Brattli
*
*Script date: 08/20/2002 (keep this date to check versions)

** Feel free to remove all comments in this file (and the HTML file)
** as long the copyright message is intact to make the files smaller.
*********************************************************************************/

/************************************************************************************
Making cross-browser objects
************************************************************************************/
function makeMenuObj(obj,nest){
	nest=(!nest) ? "":'document.'+nest+'.'
	this.evnt = document.getElementById?document.getElementById(obj):document.all?document.all[obj]:document.layers?eval(nest+'document.'+obj):0;	
	this.css = this.evnt.style?this.evnt.style:this.evnt;										
	this.ref=document.layers?this.evnt.document:document;		
	this.x=this.css.left||this.evnt.offsetLeft;
	this.y=this.css.top||this.evnt.offsetTop;		
	this.hideIt=b_hideIt; this.showIt=b_showIt; this.movey=b_movey
	this.moveIt=b_moveIt; this.moveBy=b_moveBy; this.status=0; 
	this.bgImg=b_bgImg;	this.obj = obj + "Object"; eval(this.obj + "=this"); 
	this.clipTo=b_clipTo;
	return this
}
function b_showIt(){this.css.visibility="visible"; this.status=1}
function b_hideIt(){this.css.visibility="hidden"; this.status=0}
function b_movey(y){this.y=y; this.css.top=this.y}	
function b_moveIt(x,y){this.x=x; this.y=y; this.css.left=this.x;this.css.top=this.y}
function b_moveBy(x,y){this.x=this.x+x; this.y=this.y+y; this.css.left=this.x;this.css.top=this.y}
function b_bgImg(img){
	if(document.getElementById) document.getElementById(this.id+"_img").src = img
	else if(document.layers) this.ref.layers[0].document.images[0].src = img
	else document.images[this.id+"_img"].src = img
}
function b_clipTo(t,r,b,l,w){if(document.layers){this.css.clip.top=t;this.css.clip.right=r
this.css.clip.bottom=b;this.css.clip.left=l
}else{this.css.clip="rect("+t+"px,"+r+"px,"+b+"px,"+l+"px)"; if(w){this.css.pixelWidth=this.css.width=r; this.css.pixelHeight=this.css.height=b}}}
/********************************************************************************
Initiating page, making objects..
********************************************************************************/
createSlideMenu.prototype.init = function(){

	document.write("</div>")
	this.cont=new makeMenuObj(this.name+'cont')
	this.cont.moveIt(this.menux,this.menuy)
	var yy = 0, el 	//Make top menus
	for(var j=0;j<this.topmenus.length;j++){
		el = this.menus[this.topmenus[j]]
		el.o = new makeMenuObj(this.name+"_"+el.num,this.name+"cont")
		el.o.moveIt(this.l[0].left,yy); el.top = j; el.origy = yy
		el.o.id = el.id; el.o.status=1; 
		el.o.h = this.l[0].height; el.img = this.l[0].regImage
		yy+=el.o.h + this.l[0].between; el.o.clipTo(0,this.l[0].width,el.o.h,0,1)
		if(j!=this.topmenus.length-1)	el.nexttop = this.topmenus[el.top+1] 
		this.loop(el.num,j)
	}
	this.cont.showIt(); this.cont = null; this.level = null;
}
createSlideMenu.prototype.loop = function(num,j){
	var el = this.menus[num],temp,p,h,w,y,img
	for(var i=0;i<el.childs.length;i++){
		temp = el.childs[i]
		w = this.l[temp.lev].width; h = this.l[temp.lev].height
		y = el.o.y+el.o.h + h*i + this.l[temp.lev].between*i + this.l[temp.lev].between
		temp.o = new makeMenuObj(this.name+"_"+temp.num,this.name+"cont")
		temp.o.hideIt(); temp.o.clipTo(0,w,h,0,1)
		temp.o.moveIt(this.l[temp.lev].left,y)
		el.endy =y+h; temp.origy = y
		temp.o.zIndex=temp.num
		temp.o.h = h; temp.top = j 
		temp.chnum = i; temp.o.id = temp.id 		
		if(this.useImages){ //Setting bgimage
			img=""
			if(temp.childs.length>0){ //With subs
				if(i==el.childs.length-1) img=this.l[temp.lev].subRound
				else img=this.l[temp.lev].subImg
			}else	if(i==el.childs.length-1){
				img=this.l[temp.lev].roundImg2
			}
			if(img){
				temp.o.bgImg(img); temp.img = img
			}else temp.img = this.l[temp.lev].regImage
		}
		p = this.menus[temp.parent] //Setting the next elements
		if(temp.chnum != p.childs.length-1){ //Not the last el
			temp.nextel = p.childs[temp.chnum+1].num
			temp.nexttop = temp.lev==1?p.nexttop:p.nextel
		}else{ //Last el, so we only have nexttop
			temp.nexttop = p.nextel
			if(temp.nexttop==-1) temp.nexttop = p.nexttop
		}
		if(temp.childs.length>0){
			this.loop(temp.num,j) //Recursive call
		}	
	}
}

/********************************************************************************
Moving all objects in the array after a provided array number
********************************************************************************/
createSlideMenu.prototype.moveItems = function(px,num){
	for(i=num;i<this.menus.length;i++){
		if(this.menus[i].o.status){ //Moving all visible menus
			this.menus[i].o.movey(this.menus[i].o.y+px)
		}
	}	
}
/********************************************************************************
Switch menu function.
********************************************************************************/

createSlideMenu.prototype.switchMenu = function(num){

	if(this.going) return
	var m = this.menus[num]
	
	if(m.childs.length==0) return
	this.going = 1
	var y=m.o.y+ m.o.h +this.l[m.lev].between
	var clnum = m.num, olev = m.lev, onext = m.nextel
	if(this.active[0]>-1){
		var n = -1
		if(m.lev>0){
			if(this.active[m.lev]>-1) n=this.active[m.lev]
			else n=this.active[m.lev-1]
		}else n = this.active[0]
		m = this.menus[n]
		if(m.lev == 0 && olev==0) y = m.nexttop!=-1?this.menus[m.nexttop].origy:-1
		else if(clnum!=m.num){
			var ny = m.o.y + m.o.h + this.l[m.lev].between
			if(clnum>m.num && olev==m.lev) y = Math.min(ny,y)
			else	if(onext==m.num) y = Math.max(ny,y)
		}
	}
	this.moveUp(m.nextel!=-1?m.nextel:m.nexttop,num,y)
}
/********************************************************************************
Move items up
********************************************************************************/
createSlideMenu.prototype.moveUp = function(top,num,y){
	var move = 0, m, yy=0;
	if(this.active[0]>-1 && top>-1){
		m = this.menus[top]
		if(m.o.y>y){
			if((m.o.y-this.pxspeed)<y) yy = -(((m.o.y-y)))
			else yy=-this.pxspeed; this.moveItems(yy,top)
			move=1
		}
	}
	if(move) setTimeout(this.name+".moveUp("+top+","+num+","+y+")",this.timspeed)
	else{
		m = this.menus[num] 
		for(var i=m.lev;i<this.active.length;i++){ //Reset images - actives et cetera
			if(this.active[i]>-1){
				temp = this.menus[this.active[i]]
				temp.o.moveIt(temp.o.x-this.inset,temp.o.y)
				if(this.useImages) temp.o.bgImg(temp.img) 		//Change bg
				if(this.arrow) temp.ar.replaceChild(document.createTextNode("4"),temp.ar.childNodes[0])
				ch = temp.childs
				for(var j=0;j<ch.length;j++){
					ch[j].o.hideIt(); ch[j].o.movey(ch[j].origy)
				}
				this.active[i] = -1
			}
		}
		//Then open the current one, if childs
		
		if(m.childs.length == 0){this.going = 0; return}
		for(i=0;i<m.childs.length;i++){ //Show all
			m.childs[i].o.showIt()
			y = m.childs[i].o.y + m.childs[i].o.h
		}
		y+=this.l[m.lev].between
		if(m.lev>0 && m.chnum!=this.menus[m.parent].childs.length-1){
			yy=y; y = this.menus[m.parent].endy + this.l[m.lev].between
		}
		m.o.moveIt(m.o.x+this.inset,m.o.y) 	//Inset current item:
		if(this.useImages) m.o.bgImg(this.l[m.lev].roundImg) 	//Change bg
		this.active[m.lev] = num //Set active
		if(this.arrow) m.ar.replaceChild(document.createTextNode("6"),m.ar.childNodes[0])
		if(m.nexttop>-1 || m.nextel>-1) this.moveDown(m.nexttop,m.nextel,y,yy) //Then start moving all other elements down
		else this.going=0
	}
}
/********************************************************************************
Move items down
********************************************************************************/
createSlideMenu.prototype.moveDown = function(top,num,y,yyy){
	//alert("top,num,y,yyy"+top+"<--top"+num+"<--num"+y+"<--y"+yyy)
	var m = this.menus[top],yy
	if(m && m.o.y<y){
		if((m.o.y+this.pxspeed)>y) yy = y-m.o.y
		else yy=this.pxspeed
		this.moveItems(yy,top)
		setTimeout(this.name+".moveDown("+top+","+num+","+y+","+yyy+")",this.timspeed)
	}else if(num>-1){
		this.moveDown(num,-1,yyy,0)
	}else this.going=0
}
/********************************************************************************
Slide menu object
********************************************************************************/
function createSlideMenu(name){
	document.write('<div id="'+name+'cont">') //The cont div start
	this.name = name
	this.menus = new Array()
	this.curr = 0
	this.lasttype = new Array()
	this.writesubsonly = 0
	this.level = new Array()
	this.l = new Array()
	this.topmenus = new Array()
	this.active = new Array()
	return this
}
/********************************************************************************
Function to create the objects and the divs
********************************************************************************/
createSlideMenu.prototype.makeMenu = function(type,text,lnk,target,end){

	var str="",tg="",parent,m,cl
	m = this.menus[this.curr] = new Object()
	this.lasttype[type] = this.curr; if(!lnk) lnk="#"
	m.lev = 0; m.type = type; m.childs = new Array()
	m.num = this.curr; m.parent = -1; m.nextel = -1
	m.nexttop = -1; parent = 0
	//DEBUGGING::::::
	m.text = text
	
	if(type.indexOf("sub")>-1){ 	//Find parent type
		if(type.length == 3){ //sub
			parent = "top"; m.lev = 1
		}else{
			parent = type.substr(3,1) //sub2+
			//alert("parent"+parent)
			m.lev = parent; parent--
			if(parent==1){
				parent = "sub"; m.lev = 2
			}else parent = "sub"+parent
		}	
	}
  if(m.lev>=this.l.length){//Level control (same as CM4)
    var p1,p2=0; 
		if(m.lev>=this.level.length) p1=this.l[this.level.length-1];
    else p1=this.level[m.lev]; 
		this.l[m.lev]=new Array(); 
		if(!p2) p2=this.l[m.lev-1]
    if(m.lev!=0 && p1){ 
      for(i in p1){ //Copying an entire object
				if(p1[i]==null) this.l[m.lev][i]=p2[i]; 
				else this.l[m.lev][i]=p1[i]
			}
    }else{
			this.l[m.lev]=this.level[0]; 
		}
    this.level[m.lev]=p1=p2=null 
  } 
	this.active[m.lev] = -1
	if(parent){ //Find parent element
		m.parent = this.lasttype[parent]
		parent = this.menus[this.lasttype[parent]]
		parent.childs[parent.childs.length] = m
		if(this.arrow && parent.childs.length==1){str='<span class="'+this.arrow+'">4</span>'
			if(document.getElementById && document.getElementById(parent.id).childNodes){
				parent.ar = document.getElementById(parent.id).childNodes[this.useImage?1:0].childNodes[0]
				parent.ar.innerHTML = str+parent.ar.innerHTML; parent.ar=parent.ar.childNodes[0]} else this.arrow=""
		}
	}else this.topmenus[this.topmenus.length] = this.curr
	if(!this.writesubsonly || type!="top"){
		cl = this.l[m.lev].className
		m.id = id = this.name + "_" + this.curr
		str= '<div id="'+id+'" class="'+cl+'">' //main div start
		if(this.useImages){
			str+='<div class="'+this.bgClass+'">'//bgdiv
			str+='<img id="'+id+'_img" src="'+this.l[m.lev].regImage+'" />' 
			str+='</div>' //bgdiv
		}		
		if(target) tg =' target="'+target+'" '
		str+='<div class="'+this.txtClass+'"><a href="'+lnk+'" '+tg+' onclick="'+this.name+'.switchMenu('+this.curr+'); if(document.getElementById) this.blur(); '
   	if(lnk=="#") str+='return false'
    str+='" class="'+this.l[m.lev].classNameA+'">'+text+'</a><br /></div>\n'
		str+="</div>\n\n" //main div end
		document.write(str)
	}
		//alert(str+"***"+this.curr);
	this.curr++
}

/********************************************************************************
Level object
********************************************************************************/
function slideMenu_makeLevel(){
  var c=this, a=arguments; 
	c.left=a[0]||0; c.width=a[1]||null; c.height=a[2]||null;
	c.between=a[3]||null; c.className=a[4]||null; c.classNameA=a[5]||null;
	c.regImage=a[6]||null; c.roundImg=a[7]||null; c.roundImg2=a[8]||null; 
	c.subImg=a[9]||null; c.subRound=a[10]||null; return c
}
/********************************************************************************
Preloading images
********************************************************************************/
function preLoadBackgrounds(){
  for(i=0;i<arguments.length;i++){
    this[i]=new Image()
    this[i].src=arguments[i]
  }
  return this
}




function leftlink(){

/*********************************
The actual script file is inside the
slidemenu.js file - remember to link
that to your HTML file.
**********************************/

//Creating the menu object -- You can call it whatever you want - just remember to
//have the same name as the argument.
slideMenu = new createSlideMenu("slideMenu")

//Variables to set:
slideMenu.menuy=110 //The top placement of the menu.
slideMenu.menux=0 //The left placement of the menu
slideMenu.useImages =1 //Are you using images or not?
slideMenu.pxspeed=1000 //The pixel speed of the animation
slideMenu.timspeed=25 //The timer speed of the animation
slideMenu.inset = 0 //How much the selected items should pop to the left
slideMenu.arrow = 0 //Set this to className that has font-family:webdings
										//if you want to use the arrow feature. Note:
										//This ONLY works on DOM capable browsers, and with
										//useImages set to 0 - It's basically just a test I did.
										//I hope to improve it later on.

//Needed dummy classes - leave in the stylesheet!
slideMenu.bgClass =	"slideMenuBG"
slideMenu.txtClass = "slideMenuText"

/*******************************************************************************
Level properties - ALL properties have to be specified in level 0
This works the same way as the CM4 script (if you have used it)

The level[0] values will be the default value. Any value not specified
in higher levels will be inherited from level[0]. If anything
is spesified in level[1], but not in level[2], level[2] (sub2 menus)
will get the property value from level[1] and so on.

The availble values to control the menu by level are:

left           - The left placement of all items in the current level ( px value )
width          - The width of all items in the current level  ( px value )
height         - The height of all items in the current level  ( px value )
between        - The number of pixels between each item in  the current level ( px value)
className      - A name of a class specified in the stylesheet to control the
	               look of all items in this level.
	               NOTE: The class MUST be in a stylesheet, and it most have position:absolute.
classNameA     - A name of a class specified in the stylesheet that will control the
 								 Look of the TEXT for all items in this level. (you can also specify
								 a hover class for this className to get a mouseover effect on the
								 text.
regImage	- If you choose to use image feature of the script you have to
                 spesify the default image here.
roundImg       - This is the image that will used when a item is selected.
roundImg2      - This is the image used for sub-levels on the last item in a list.
								 (that's how the last items in this example are rounded on the sub-levels)
subImg         - The image used when the item has sub-items. Only in use for sub-levels
subRound       - Same as roundImg2 - only for items that have sub-items.

To understand the image setup see the images supplied with this script.
NOTE: Always specify the full (relative) path to the images!

The slideMenu_makeLevel function provides a shortcut to making levels.
If you are more comfortable with setting the properties by name you can
also set them like this:

slideMenu.level[0] = new Array()
slideMenu.level[0].left = 0
slideMenu.level[0].width = 138
..... and so on.

NOTE: In level 0 below I have included the names of the variables just for
readability - feel free to remove left = , width = , height = et cetera...
********************************************************************************/
slideMenu.level[0] = new slideMenu_makeLevel(
	left = 0,
	width = 223,
	height = 24 ,
	between = "",
	className = "clSlideMenu",
	classNameA = "clA0",
	regImage = "images/level0_regular123.gif",
	roundImg = "images/level0_regular123.gif",
	roundImg2 = "",
	subImg = "",
	subRound= "")

slideMenu.level[1] = new slideMenu_makeLevel(6,215,21,0,"clSlideMenu","clA1","images/level1_regular123.gif","images/level1_round2.gif","images/level1_round.gif","images/level1_sub.gif", "images/level1_sub_round.gif")
slideMenu.level[2] = new slideMenu_makeLevel(15,140,21,2,"clSlideMenu","clA2","images/level1_regular123.gif","images/level1_round2.gif","images/level1_round.gif", "images/level1_sub.gif", "images/level1_sub_round.gif")
slideMenu.level[3] = new slideMenu_makeLevel(33,108,20,2,"clSlideMenu","clA3","images/level1_regular.gif","images/level1_round2.gif","images/level1_round.gif","images/level1_sub.gif","images/level1_sub_round.gif")
slideMenu.level[4] = new slideMenu_makeLevel(40,107,19,2,"clSlideMenu","clA4","level4_regular.gif", "level4_round2.gif","level4_round.gif","level4_sub.gif", "images/level4_sub_round.gif")

//Image preload --- leave this
for(var i=0;i<slideMenu.level;i++){
	var l = slideMenu.level[i]
	new preLoadBackgrounds(l.regImage,l.roundImg,l.roundImg2,l.subImg,l.subRound)
}

/**********************************************************************
Making the menus is the same as in SlideMenu 1 only that now
you can make as many levels as you want.

NOTE: If you are converting from SlideMenu1 remember to add: theNameOfYourMenu.
in front of all menu creation calls.

The arguments to the makeMenu function are:

TYPE - top for top item, sub for sub item, sub2 for sub2 item, sub3
       for sub3 item and so on (I've done it like that to keep it the same way as version 1)

TEXT - The link text for the item

TARGET - The target frame to open the links in. You do not have to spesify this if you
are not in a frame enviroment. (see below for more info)
------------------------------------------------------------
NOTE: I get mail about this all the time so I will try and explain more:
If you where to make a regular link that would open a link in another
frame you would probably do like this:
<a href="mylink.html" target="myOtherFrameName">Link</a>

To do the same for a slideMenu link you do like this:

slideMenu.makeMenu('top','My link','mylink.html','myOtherFrameName')
------------------------------------------------------------

mySlideMenu.makeMenu('TYPE','TEXT','LINK','TARGET')
************************************************************************/

slideMenu.makeMenu('top','Services','services_ov.html') //0
	slideMenu.makeMenu('sub','Turnkey Projects','services_proj.html')//1
	slideMenu.makeMenu('sub','PLM','services_pd.html')//2
	slideMenu.makeMenu('sub','Onsite/Offshore Teams','services_onsite.htm')//3
	slideMenu.makeMenu('sub','Onsite Consultants','services_oc.html')//4

slideMenu.makeMenu('top','Competencies','competencies_ov.html')//5
	slideMenu.makeMenu('sub','Technologies','compet_tech.html')//6
	slideMenu.makeMenu('sub','OS & Languages','compet_os.html')//7
	slideMenu.makeMenu('sub','Application Areas','compet_aa.html')//8

slideMenu.makeMenu('top','Quality Management System ','compet_pm.html')//9
	slideMenu.makeMenu('sub','Mission Statement','mission_stat.html')//10
	slideMenu.makeMenu('sub','Quality Objectives','quality_obj.html')//11

/* */

slideMenu.makeMenu('top','Enterprise Projects ','project_ov.html')//12 //Major Projects

	//slideMenu.makeMenu('sub','Enterprise Projects','project_CRM.html')//1
	slideMenu.makeMenu('sub','Enterprise Shipping System ','project_fs.html')//13 //FlagShip
	slideMenu.makeMenu('sub','Files Routing & Processing','project_bdaq.html')//14 //FlagShip
	slideMenu.makeMenu('sub','Enterprise Web Application ','foodlogiQ.html')//15	//FoodlogiQ
	slideMenu.makeMenu('sub','Classified Advertisement Portal','web_portal.html')//16 //  classified
	slideMenu.makeMenu('sub','Internet Telephony ','project_kc.html')//17//KwikCall
	slideMenu.makeMenu('sub','E-Commerce','project_Xmedia.html')//18 //XMedia
	slideMenu.makeMenu('sub','Content Management System ','project_CMS.html')//19	//CMS
	slideMenu.makeMenu('sub','Computer Aided Engineering ','project_mesh.html')//20//Mesh Generator
	slideMenu.makeMenu('sub','Security Control Room Solution ','aems_pd.html')//21//AEMS
	slideMenu.makeMenu('sub','Customs Clearance System ','project_becs.html')//22 //BECS Ph II and III
	//slideMenu.makeMenu('sub','SFAS ','project_CRM.html')//15
	
slideMenu.makeMenu('top','Industrial Automation Projects ','project_ov_AI.html')//23//IA Projects
	//22//Master Viewer
	slideMenu.makeMenu('sub','SuperAxis OPC Client','opc_client.html')//24
	slideMenu.makeMenu('sub','WebOSP ','project_webosp.html')//25//Master Viewer
	slideMenu.makeMenu('sub','Embedded Systems ','project_tapi.html')//26//T-API
	slideMenu.makeMenu('sub','KBPrompt Porting ','project_kbprompt.html')//27//T-API
	slideMenu.makeMenu('sub','Remote Monitoring','project_qweb.html')//28
	slideMenu.makeMenu('sub','Remote Monitoring ','project_prizm.html')//29 //Prizm - Web View
	slideMenu.makeMenu('sub','Trend Viewer ','project_tv.html')//30//Master Viewer
	
	//slideMenu.makeMenu('sub','AI PlantConnect','http://ascentautomation.com/plantlink_ov.html','new_win')//23

	
	
    //slideMenu.makeMenu('sub','Prizm - Web View','project_AQMS.html')//26//AAQMS
 		
slideMenu.makeMenu('top','Solutions','solution.html')//31
	slideMenu.makeMenu('sub','Remote Monitoring ','http://ascentautomation.com/plantlink_ov.html','new_win')//32
	slideMenu.makeMenu('sub','Sales Automation ','salesconnect_ov.html')//33

//slideMenu.makeMenu('top','Infository','info_ov.html')
	
	slideMenu.makeMenu('top','Careers','careers.html')//33
	slideMenu.makeMenu('top','Clients','clients.html')//34

//Initiating the menu !!
slideMenu.init()
slideMenu.switchMenu(lastNum)

}




		
	
	  
