// JavaScript Document
 //alert("in kit")

var xmlhttp=false; // ############### The MAGIC object ;)
/*@cc_on @*/
/*@if (@_jscript_version >= 5)
// JScript gives us Conditional compilation, we can cope with old IE versions.
// and security blocked creation of the objects.
try {
xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
} catch (E) {
xmlhttp = false;
}
}
@end @*/
if (!xmlhttp && typeof XMLHttpRequest!='undefined') {
xmlhttp = new XMLHttpRequest();
}
/*function $(str, json){
	if(typeof (str) == "string"){
		var el = document.getElementById(str)
		if(json)addJSON(el, json)
		return el
	}
}*/
function addJSON(elm, json){
	for(prp in json){
		elm[prp] = json[prp]
	}
	return elm
}
var Ajax_sr = {xhp:xmlhttp,
			tkn:false,
			quu:[],
			setphp:function (){
							this.php = phpurl
						},
			init:function (){
						this.setphp()
					},
			req:function (fnc, arg, qs){
						if(this.tkn){
							this.quu.push({f:fnc, a:arg, q:qs})
						}
						else{
							if(!this.php)this.setphp()
							var qst = "fnc=" + fnc + "&arg=" + escape(arg + (qs ? "&" + qs : ""))
							if(!this.rs4 || !this.rs4.gotdt){
								alert("No return method for " + fnc)
								return false
							}
							//alert("url\n" + qst)
							this.tkn = true
							this.xhp.abort()
							this.xhp.onreadystatechange = function (){Ajax_sr.svret()}
							//alert("sez\n" + this.xhp.readyState)
							this.xhp.open("POST", this.php,true);
							this.xhp.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
							this.xhp.send(qst)
						}
					},		
			svret:function (){
						if(this.xhp.readyState==4){
							
							var resp = this.xhp.responseText
							this.rs4.dat =resp
							if(this.rs4.actv && this.rs4.actv.nm == "newsDat"){
								//resp = resp.replace(/\012\015|\012/g, "")
								var foo = "bar"
								if($("lynam"))$("lynam").update(resp)
							}
							
							if(resp.indexOf("error</b>") > 0){
								if(!confirm("server Squawkin'\n" + resp))  return false;
							}
							if(resp.substr(0, 4) == "ALT:"){
								if(!confirm("server Message\n" + resp.substr(4))) return false;
							}
							if(resp.match(/\134\134/)){
								alert("got multi bcksl")
								resp = resp.replace(/(\134)\134/g, "$1")
								alert(resp)
							}
							if(resp.substr(0, 1) == "["){
							  try{
							  this.rs4.rs = resp.evalJSON()//eval()
							  }
							  catch(e){alert("eval fail " + e + "\n" + resp)}
							}
							if(resp.substr(0, 4) == "SRS:"){
								var srdt = resp.substr(4, resp.length)
								var a = $A(srdt.split(":R:"))
								var rs = [] 
								a.each(function(rw, i){
											this[i] = {}
											$A(rw.split(":F:")).each(function(kv){
																		var kyvl = kv.split(":V:")
																		this[kyvl[0]] = kyvl[1]
																			  }, this[i])
											}, rs)
								this.rs4.rs = rs
							}
							this.rs4.gotdt()	
							this.tkn = false
							if(this.quu[0] && this.quu[0].f){
								var o = this.quu.shift()
								this.req(o.f, o.a, o.q)
							}
						}
						else{
							if(this.onchg)this.onchg(this.xhp.readyState)
						}
					},		
					
			foo:"bar"
}
var oXmenu = Class.create({
  initialize: function(ob, nm, rsb) {
					if(ob.box && ob.dat){
						var arg = ob.dat.innerHTML
						rsb.setrq("xmn_" + nm, "gtxmnu", arg)
						rsb.rss["xmn_" + nm].ob = this
						this.xrs = $H({})
						this.dvs = ob
						this.dvs.skn.adJSON({dad:this}).observe('mouseover', function(){this.dad.msvr()}).observe('mouseout', function(){this.dad.msot()})
					}
				},
	sbmvr: function(dv){
			dv.setStyle({backgroundColor:"#BBBBFF"})
			if(dv.nbx){
				this.tbx = dv.nbx.sr_show(Tick, 1)
				if(this.tbx.descendants().length < 1)$A(dv.dat).each(function(dt){
										var nd = this.dvs.tmp.clone(true)
										nd.update(dt.Name).adJSON({dad:this, dat:dt})
										.observe('mouseover', function(){this.setStyle({backgroundColor:"#FFBBBB"})}).observe('mouseout', function(){this.setStyle({backgroundColor:"#DDDDFF"})}).relativize().show().observe('click', function(){this.dad.mnclk(this)})
										this.tbx.insert(nd)
									}, this)
			}
			//dv.setStyle({backgroundColor:"#FFBBBB"})
				},
	mnclk: function(dv){
			alert("clicked Make:" + dv.dat.Make + " Model:" + dv.dat.Name + " ID:" + dv.dat.id )
				},
	sbmot: function(dv){
			dv.setStyle({backgroundColor:"#DDDDFF"})
			if(dv.nbx)dv.nbx.sr_show(Tick, 0)
				},
	msvr: function(){
			
			this.dvs.box.sr_show(Tick, 1)
			//this.dvs.skn.setStyle({'backgroundColor':"#FF0000"})
				},
	msot: function(){
			this.dvs.box.sr_show(Tick, 0)
			//this.dvs.skn.setStyle({'backgroundColor':"#FFFFFF"})
				},
	gotrs: function(){
			$A(this.rs).each(function(dt){
									 if(!this.xrs["mk_" + dt.Make]){
											this.xrs["mk_" + dt.Make] = []
										  	var nd = this.dvs.tmp.clone(true)											
											//nd.nbx = new Element("DIV", {'style':"display:none;position:absolute;top:0px;left:120px;background-color:#CCCCFF;width:120px;padding:2px;", 'id':"mk_" + dt.Make})
											nd.update(dt.Make).adJSON({dad:this, dat:this.xrs["mk_" + dt.Make]}).observe('mouseover', function(){this.dad.sbmvr(this)}).observe('mouseout', function(){this.dad.sbmot(this)}).relativize().show()
											//nd.insert(nd.nbx)
											this.dvs.box.insert(nd)
										  
									 }
									 var o = this.xrs["mk_" + dt.Make]
									 o[o.length] = dt
								}, this)
			
			
			//alert("xmenu sez " + this.rs.length)
		}
							})

function mkcln(){
	var t = this.tmpl ? this.tmpl : false
	var b = this.box ? this.box : false
	if(t && b){
			if (!b.clns)b.clns = []
			var n = b.appendChild (t.cloneNode(true))
			n.style.display = "block"
			var tds = n.getElementsByTagName("div")
			//var tims = n.getElementsByTagName("img")
			//var tds[tds.length] = tims[0]
			
			var o = {}
			if(!this.clns)this.clns = []
			for(var ci=0;ci<tds.length;ci++){
				var dv = tds[ci]
				if(dv.id && dv.id.substr(0, 3) == "tm_"){
					dv.dad = this
					o[dv.id.substr(3, 9)] = dv
				}
			}
			this.clns.push(o)
			return o
	}
	else{
		alert("Clone fail")
	}
}
function mkdbxs(){
	if(obs && obs.dbx){
		for(el in obs.dbx){
			var d = obs.dbx[el]
			if(d.tmpl && d.box && d.txt){
				d.shw = function (){
								this.box.style.display = (this.box.style.display == "none" ? "block" : "none")
							}
				addJSON (d.txt , {dad:d, onclick:function (){
													this.dad.shw()
												}
								})
				d.mkcln = mkcln
				///dv id like tm_foo dat fld db_bar so json foo:"db_bar"
				d.setdat = function (json){
								if(this.rs){
									for(var i=0;i<this.rs.length;i++){									 
										this.mkoptln(this.rs[i], json) 
									}									 
								}
								else alert("No data")
							}
				d.mkoptln = function (dt, json){
									
										
										var cl = this.mkcln()
										for(el in cl){
											if(dt[json[el]]){
												if(cl[el].innerHTML)cl[el].innerHTML = dt[json[el]]			
												cl[el].dat = dt
												cl[el].onclick = function (){
																		//this.dad.txt.innerHTML = this.innerHTML
																		this.dad.clkopt(this.dat)
																	}								
											}
										}
								}
				d.clkopt = function (){
									alert("Clicked opt")
								}
			}
		}
	}
	else alert("Drop box fail")
}
function mktabs(){
	var cn, cf, ts, ps
	if((cn = this.csson) && (cf = this.cssoff) && (ts = this.tab) && (ps = this.pag)){
		//alert("Ready to tab")
		for(el in ts){
			if(ps[el]){
				addJSON(ts[el], {dad:this, tg:el, onclick:function (){
								this.dad.tbclk(this.tg)
							}
							})
			}
		}
	}
	else alert("No tabs here")
}
function clktb(tg){
	var cn, cf, ts, ps
	if((cn = this.csson) && (cf = this.cssoff) && (ts = this.tab) && (ps = this.pag)){
		for(el in ts){
			ts[el].className = (el == tg ? cn : cf)
			ps[el].style.display = (el == tg ? "block" : "none")
		}
	}
}
function mkobs(){
	var obs = {}
	var dvs = document.getElementsByTagName("*")
	for(var i=0;i<dvs.length;i++){
		var d = dvs[i]
		if(d.id && d.id.substr(0, 3) == "ob_"){
			if(Prototype)d = $(d)
			var m = d.id.split("_")
			m.shift()
			var o = obs
			while(m[1]){
				if(!o[m[0]])o[m[0]] = {}
				o = o[m[0]]
				m.shift()
			}
			d.dad = o
			o[m[0]] = d			
		}
	}
	return obs
}		
function mksubs(dv){
	if(dv.sbs)alert("double subbing " + dv.id)
	var subs = {}
	dv.sbl = 0
	var dvs = dv.descendants()
	for(var i=0;i<dvs.length;i++){
		var d = dvs[i]
		if(d.id && d.id.substr(0, 3) == "sb_"){
			var m = d.id.split("_")
			m.shift()
			var o = subs
			while(m[1]){
				if(!o[m[0]])o[m[0]] = {}
				o = o[m[0]]
				m.shift()
			}
			d.dad = o
			o[m[0]] = d	
		}
	}
	for(el in subs)dv.sbl++
	dv.sbs = subs
	dv.setdat = function (rs){
					if(rs){
						
						this.rs = rs
						for(var ij=0;ij<rs.length;ij++){
							
							
							var cll = this.sbs["cll"+ ij]
							for (el in cll){
								if(rs[ij][el]){
									if(cll[el].tagName == "DIV")cll[el].innerHTML = rs[ij][el]
									if(cll[el].tagName == "IMG")cll[el].src = rs[ij][el]
									
								}
							}
							if(rs[ij].lnk){
								
								cll.skn.setStyle({'cursor':"pointer"})
								cll.skn.lk = rs[ij].lnk
								cll.skn.observe('click', function(){
															 //alert(this.lk)
															 window.location = this.lk
															 }
											)/**/
							}
							else {
								cll.skn.setStyle({'cursor':"default"})////
								
							}
						}
					}
				}
	
}
function mkjqrys(){
	if(obs && obs.jqy){
		for(el in obs.jqy){
			var jq = obs.jqy[el]		
			if(jq && jq.skn && jq.pnl && jq.sldr && jq.lft && jq.rgt){
				
				
				
				
				addJSON(jq, {init:function (){
									this.nm = el
									this.lsldr = this.mksldr({position:"absolute",left:"-500px", top:"0px", zIndex:5})
									this.rsldr = this.mksldr({position:"absolute",left:"500px", top:"0px", zIndex:5})
									//,backgroundColor:"#FFDDDD"backgroundColor:"#DDFFDD",
									mksubs(this.sldr)
									mksubs(this.lsldr)
									mksubs(this.rsldr)
									this.perpg = this.sldr.sbl
									foo = 0
								},
							dochg:function (no){
									this.pag += no
									if(this.pgno)this.pgno.innerHTML = "&nbsp;Page&nbsp;" + this.pag + "&nbsp;&nbsp;"
									this.strt = no*this.sldr.getWidth()
									this.fnsh = 0
									this.rng = (this.fnsh - this.strt)
									this.step = Math.round(Tick.mlsc/(20*this.sltm)) ///								50/(this.sltm*1000/Tick.mlsc)
									this.gosld = no > 0 ? this.rsldr : this.lsldr
									this.insld = true
									Tick.actv[this.nm] = this
									//alert("got " + no)
								},
							mksldr:function (json){
									if(!this.sldr){
										alert("No slider for " + this.nm)
										return
									}
									var nb = this.sldr.parentNode.appendChild (this.sldr.cloneNode(true))
									nb.setStyle(json)
									return nb
								},
							dotck:function (){
									if(this.insld){
										this.tcks += this.step
										if(this.tcks < 50){
											var lf = this.rng*cosry[this.tcks]
											var l = this.strt + lf
											if(isNaN(l))alert("oops l is " + l +"\n tcks is " + this.tcks)
											else{
												 this.gosld.style.left = l + "px"
												 this.sldr.style.left = lf + "px"
											}
										
										}
										else{
											this.gosld.style.left = "0px"
											this.sldr.setdat(this.gosld.rs)
											this.insld = false
											this.tcks = 0
											this.sldr.style.left = 0 + "px"
											this.gosld.style.left = this.strt + "px"
											if(this.dnsld)this.dnsld()
										}
									}
								},
							tcks:0,
							insld:false,
							sltm:1,
							pag:0,
							gotrs:function (){
											//alert("got jqry rs")//
											if(this.rs){
												
												this.sldr.setdat(this.mkpgrs(0))
												this.dnsld()
											}
										},
							mkpgrs:function (strt){
											if(this.rs){
												
													var pgrs = []
													for(var i=0;i<this.perpg;i++){
														var n = this.rs.length
														var rw = (i + strt + n) % n
														if(!this.rs[rw])alert("rw " + rw + "\nn" + n)
														pgrs[i] = this.rs[rw]
													}
													return pgrs
												
											}
										},
							dnsld:function (){
											var pnx = (this.pag + 1)*this.perpg
											if(pnx < this.rs.length){
												this.rsldr.setdat(this.mkpgrs(pnx))
												this.rgt.setOpacity(1)
											}
											else this.rgt.setOpacity(.3)
											var ppv = (this.pag - 1)*this.perpg
											if(ppv > -1){
												this.lsldr.setdat(this.mkpgrs(ppv))
												this.lft.setOpacity(1)
											}
											else this.lft.setOpacity(.3)
											
											//this.lnm.innerHTML = this.pag*10 + 1 + " ~ " + (this.pag + 1)*10
										}
										}						
					)
				addJSON(jq.lft, {dad:jq,
								onclick:function(){
										if(this.getOpacity()*1 > .5)this.dad.dochg(-1)
									},
								onmouseover:function(){
										if(this.getOpacity()*1 > .5)this.setOpacity(.8)
									},
								onmouseout:function(){
										if(this.getOpacity()*1 > .5)this.setOpacity(1)
									}
								})
				addJSON(jq.rgt, {dad:jq,
								onclick:function(){
										if(this.getOpacity()*1 > .5)this.dad.dochg(1)
									},
								onmouseover:function(){
										if(this.getOpacity()*1 > .5)this.setOpacity(.8)
									},
								onmouseout:function(){
										if(this.getOpacity()*1 > .5)this.setOpacity(1)
									}
								})
				jq.init()
			}
			//else alert("no jqry for " + el)
		
		
		}
		
		
	}
}					
function setopc(n){
	if(this.style){
		if(n > 1) n = 1
		if(n < 0) n = 0
		//if(this.style.opacity)if(this.style.filter)
		this.style.opacity = n*1
		this.style.filter = "alpha(opacity=" + Math.round(n*100) + ")"
		this.opc = n
	}
}					
					
if(Prototype){
	Element.addMethods({adJSON:function(element, json){
											$H(json).each(function(pr){
																   this[pr.key] = pr.value
																   }, element)
											return element;
										},						
						sr_show:function(element, tob, shd){
								if(tob && tob.actv){// tick 50 ms
										element.shwhd = shd
										element.tck = 0
										
										
										if(!element.hgt){
											var hg = element.getHeight()
											if(hg > 0)element.hgt = hg
											else alert("menu box fail")
										}
										//else alert("element height zero!")
										if(shd == 1){
											element.setStyle({height:"0px"})
											element.show()
											element.setOpacity(1)
											element.stp = 5
											if(isNaN(element.h))element.h = 0
										}
										else{
											element.stp = -5
											if(isNaN(element.h))element.h = 100
										} 
										tob.actv[element.id] = element
										element.setStyle({'height':1*(element.h  + element.stp)*element.hgt/100 + "px"})
										if(!element.dotck){
											element.dotck = function(){
														this.tck++
														if(!isNaN(this.h)){
															if(this.h*(100 - this.h) >= 0){
																this.setStyle({'height':this.h*element.hgt/100 + "px"})
																this.h += this.stp
															}
															else{
																if(!this.shwhd)this.hide()
																this.h = "foo"
															}
														}
													}
										}
										//alert("show sez " + element.getHeight())
									
								}
									return element;
										},
						sr_fade:function(element, tob, shd){
								if(tob && tob.actv){
										if(element.style.display == "none")element.setOpacity(0).show()
										element.shwhd = shd
										element.tck = 0
										tob.actv[element.id] = element
										if(!element.dotck){
											element.dotck = function(){
														this.tck++
														if(this.tck){//.1 sec steps
															var op = 1*this.getOpacity()
															if(Math.abs(this.shwhd - op) > 0.001){
																var stp = (this.shwhd - op > 0) ? .1 : -.1
																this.setOpacity(op + 1*stp)
															}
															else{
																if(op < .001)this.hide()
															}
														}
													}
													
										}
									}
									else element[shd>.5 ? "show" : "hide"]()
									return element;
							}				
										})
}
