/************************
Standlibs
Developed by Framfab
************************/

var ff = new Object()


//1.2
ff.version = parseFloat(navigator.appVersion)
ff.opera = (navigator.appName=="Opera" || navigator.userAgent.indexOf("Opera")>-1) ? 1:0
ff.ie = ff.da = (document.all && !ff.opera) ? 1:0
ff.ns4 = ff.dl = (navigator.appName=="Netscape" && ff.version<5) ? 1:0
ff.w3c = (document.getElementById && !ff.da) ? 1:0
ff.win = (navigator.userAgent.toLowerCase().indexOf("win") > 0) ? 1:0
ff.mac = (navigator.userAgent.toLowerCase().indexOf("mac") > 0) ? 1:0
if(ff.ie) ff.realVersion = parseFloat(navigator.appVersion.match(/MSIE\s(\d+\.\d+)/)[1])
//else if(ff.w3c) ff.realVersion = parseFloat(navigator.userAgent.match(/\d+\.\d+$/)[0])
else if(ff.ns4) ff.realVersion = ff.version

//1.0
ff.all = new Array()
ff.makeAllObj = function(objParent) {
	if(!objParent){ff.all = new Array();objParent=window}
	var arrCol = [objParent.document.layers, objParent.document.images, objParent.document.forms]
	for (var z=0; z<arrCol.length; z++) {
		for (var t=0; t<arrCol[z].length; t++) {
			var strCurId = arrCol[z][t].name
			if (strCurId!="" && !ff.all[strCurId]){
				if(strCurId.indexOf("_js_layer") > -1) for(k in objParent.document.layers) if(objParent.document.layers[k].name==strCurId){strCurId = k;break}
				ff.all[strCurId] = arrCol[z][t]
				if(z == 0) ff.makeAllObj(arrCol[z][t])
				else ff.all[strCurId].parentLayer = objParent
			}
		}
	}
}



ff.getObj = function(strObj) {
	if(typeof(strObj)=="object") return strObj
	else{
		var obj
		if (ff.ie) obj = document.all[strObj]
		else if (ff.w3c) {
			obj = document.getElementById(strObj)
			if (!obj) obj = document.getElementsByName(strObj)[0]
		} 
		else if(ff.ns4) {
			if (!ff.all[strObj]) ff.makeAllObj()
			obj = ff.all[strObj]
		}
		return obj
	}
}

//1.0
ff.show = function(strLayer) {
	var objLayer=ff.getObj(strLayer)
	if(objLayer){
		if (ff.ie||ff.w3c||ff.opera) objLayer.style.visibility = "visible";
		else if (ff.ns4) objLayer.visibility = "show";
	}
}

//1.0
ff.hide = function(strLayer) {
	var objLayer=ff.getObj(strLayer)
	if(objLayer){
		if (ff.ie||ff.w3c||ff.opera) objLayer.style.visibility = "hidden";
		else if (ff.ns4) objLayer.visibility = "hide";
	}
}

//1.0
ff.getX = function(strLayer) {
	var objLayer=ff.getObj(strLayer)
	if(objLayer){
		if(ff.ie||ff.w3c||ff.opera) return objLayer.offsetLeft;
		else if (ff.ns4) return objLayer.left;
	}
}

//1.0
ff.getY = function(strLayer) {
	var objLayer=ff.getObj(strLayer)
	if(objLayer){
		if(ff.ie||ff.w3c||ff.opera) return objLayer.offsetTop;
		else if (ff.ns4) return objLayer.top;
	}
}

//1.0
ff.getW = function(strLayer) {
	var objLayer=ff.getObj(strLayer)
	if(objLayer){
		if(ff.ie) return objLayer.style.pixelWidth
		else if(ff.ns4) return objLayer.clip.width
		else if(ff.w3c){
			var style=getComputedStyle(objLayer,null);
			return parseInt(style.getPropertyValue('width'));
		}
	}
}

//1.0
ff.getH = function(strLayer) {
	var h
	var objLayer=ff.getObj(strLayer)
	if(objLayer){
		if (ff.ie || ff.w3c) {
			var c = objLayer.style.clip
			if (c.length > 0) {
				var arC = c.substr(c.indexOf("(") + 1).split(" ")
				h = parseInt(arC[2])
			} 
			else
				h = null
		} 
		else if(ff.ns4) h = objLayer.clip.height
	}
	return h
}

//1.0
ff.getVis = function(strLayer){
	var objLayer=ff.getObj(strLayer)
	if(objLayer){
		if(ff.ie||ff.w3c) return (objLayer.style.visibility=="hidden") ? false:true
		else if(ff.ns4) return !objLayer.hidden
	}
}

//1.0
ff.getScrollH = function(strLayer) {
	var objLayer=ff.getObj(strLayer)
	if(objLayer){
		if (ff.ie) return (ff.mac) ? objLayer.offsetHeight : objLayer.scrollHeight
		else if(ff.ns4) return objLayer.document.height
		else if(ff.w3c) return objLayer.offsetHeight 
	}
}

//1.0
ff.moveBy = function(strLayer, dx, dy) {
	var objLayer=ff.getObj(strLayer)
	if(objLayer){
		if (ff.ie||ff.opera) {
			if (dx) objLayer.style.pixelLeft += dx;
			if (dy) objLayer.style.pixelTop += dy;
		} 
		else if (ff.ns4) {
			if (dx) objLayer.left += dx;
			if (dy) objLayer.top += dy;
		} 
		else if (ff.w3c) {
			if (dx) objLayer.style.left = (parseInt(objLayer.style.left) + dx) + "px";
			if (dy) objLayer.style.top = (parseInt(objLayer.style.top) + dy) + "px";
		}
	}
}

//1.0
ff.moveTo = function(strLayer, x, y) {
	var objLayer=ff.getObj(strLayer)
	if(objLayer){
		if (ff.ie||ff.opera) {
			if (x || x==0) objLayer.style.pixelLeft = x
			if (y || y==0) objLayer.style.pixelTop = y
		} 
		else if (ff.ns4) {
			if (x || x==0) objLayer.left = x
			if (y || y==0) objLayer.top = y
		} 
		else if (ff.w3c) {
			if (x || x==0) objLayer.style.left = x + "px";
			if (y || y==0) objLayer.style.top = y + "px";
		}		
	}
}

//1.0
ff.clip = function(strLayer,t,r,b,l) {
	var objLayer=ff.getObj(strLayer)
	if(objLayer){
		if (ff.ie||ff.w3c) objLayer.style.clip = "rect("+t+"px "+r+"px "+b+"px "+l+"px)";
		else if (ff.ns4) {
			objLayer.clip.top = t;
			objLayer.clip.right = r;
			objLayer.clip.bottom = b;
			objLayer.clip.left = l;
		}
	}
}

//1.0
ff.bezier = function(arrNodes, intSteps){
	var dT=1/intSteps
	var cx=3 * (arrNodes[2] - arrNodes[0])
	var bx=3 * (arrNodes[4] - arrNodes[2]) - cx
	var ax=arrNodes[6] - arrNodes[0] - cx - bx
	var cy=3 * (arrNodes[3] - arrNodes[1])
	var by=3 * (arrNodes[5] - arrNodes[3]) - cy
	var ay=arrNodes[7] - arrNodes[1] - cy - by
	var t=0
	var arrRet= new Object()
	arrRet.x = []
	arrRet.y = []
	
	for(var i=0;i<intSteps;i++){
		t+=dT
		arrRet.x[arrRet.x.length] = ax * t*t*t + bx * t*t + cx * t + arrNodes[0]
		arrRet.y[arrRet.y.length] = ay * t*t*t + by * t*t + cy * t + arrNodes[1]
	}
	return arrRet
}

//1.0
ff.getQS = function(strWhich){
	var re = new RegExp( "[&\?]"+strWhich+"=([^&]*)&?", "i" );
	re.exec(window.location.href);
	return RegExp.$1;
}

//1.0
String.prototype.replaceStr = function(strFind,strReplace){
	var re = new RegExp(strFind)
	return this.replace(re,strReplace)
}

//1.1
ff.preload = function(strName, strSrc, blnDoNotPreload) {
	if(blnDoNotPreload) eval(strName + " = new Object()")
	else eval(strName + " = new Image()")
	eval(strName+".src = '"+strSrc+"'")
}

//1.5
ff.swapImage = function(strTarget, strNewPic, urlNewPic){
	var objImage=ff.getObj(strTarget)
	if(objImage){
		if(strNewPic && eval("typeof(" + strNewPic +  ")") == "object")
			objImage.src=eval(strNewPic+".src")
		else if (urlNewPic)
			objImage.src = urlNewPic
	}
}

//1.0
ff.isEmpty = function(str) {
	if (str == null || str == "") return true;
	else return false;
}

//1.0
ff.isEmail = function(strEmail) {
	var re=/^([a-z0-9]+([_*\-*\.]\w+)*)@([a-z0-9]+([\-\.][a-z0-9]+)*)\.(com|net|org|edu|mil|gov|int|[a-z]{2})$/i;
	return re.test(strEmail);
}

//1.5
ff.getDocumentWidth = function(blnContent) {
	var w
	if(ff.ie) w = (blnContent) ? document.body.scrollWidth : document.body.clientWidth
	else if(ff.ns4) w = (blnContent) ? document.width : window.innerWidth
	else if(ff.w3c) w = (blnContent) ? document.documentElement.offsetWidth : window.innerWidth
	return w
}

//1.5
ff.getDocumentHeight = function(blnContent) {
	var h
	if(ff.ie) h = (blnContent) ? document.body.scrollHeight : document.body.clientHeight
	else if(ff.ns4) h = (blnContent) ? document.height : window.innerHeight
	else if(ff.w3c) h = (blnContent) ? document.documentElement.offsetHeight : window.innerHeight
	return h
}

//1.0
ff.scrollOrigY = new Array()
ff.scrollOrigH = new Array()
ff.scrollTimer = null
ff.scrollLayer = function(strLayer, direction, speed) {
	if(ff.getObj(strLayer)){
		scrollTimer = null
		var y = ff.getY(strLayer)

		if (typeof (ff.scrollOrigY[strLayer]) == 'undefined') {
			ff.scrollOrigY[strLayer] = y
			ff.scrollOrigH[strLayer] = ff.getH(strLayer)
		}
		var offset = y - ff.scrollOrigY[strLayer]
		speed = (speed) ? speed : 3
		if ( (direction == -1 && y+ff.getScrollH(strLayer) >= ff.scrollOrigY[strLayer]+ff.scrollOrigH[strLayer]) || (direction == 1 && y < ff.scrollOrigY[strLayer]) ) {
			offset += direction*speed
			ff.moveBy(strLayer, null, direction*speed)
			ff.clip(strLayer, 0-offset, ff.getW(strLayer), (0-offset) + ff.scrollOrigH[strLayer], 0)
			ff.scrollTimer = setTimeout("ff.scrollLayer('" + strLayer + "', " + direction + ", " + speed + ")", 30)
		}
	}
}

//1.0
Array.prototype.swap = function(k,l){
	var tmp = this[k]
	this[k] = this[l]
	this[l] = tmp 
}

//1.1
Array.prototype.shuffle = function(){
	var nr=parseInt(Math.random()*this.length+this.length)
	for(i=0;i<nr;i++){
		var a = parseInt(Math.random()*this.length)
		var b = parseInt(Math.random()*this.length)
		var tmp = this[a]
		this[a] = this[b]
		this[b] = tmp 
	}
}

//1.0
Array.prototype.search = function(str){
	for(a in this) if(this[a]==str) return a
}

//1.0
ff.clipBy = function(strLayer,dt,dr,db,dl){
	var objLayer=ff.getObj(strLayer)
	if(objLayer){
		if(ff.ns4){
			var w=objLayer.clip.width
			var h=objLayer.clip.height
			objLayer.clip.top+=dt
			objLayer.clip.left+=dl
			objLayer.clip.height=h+db
			objLayer.clip.width=w+dr
		}
		else if(ff.ie||ff.w3c){
			var c=objLayer.style.clip.substr(5)
			c=c.substr(0,c.length-3).split("p")
			c[1] = c[1].substr(2)
			c[2] = c[2].substr(2)
			c[3] = c[3].substr(2)
			var t=dt+(c[0]*1)
			var r=dr+(c[1]*1)+dl
			var b=db+(c[2]*1)+dt
			var l=dl+(c[3]*1)
			objLayer.style.clip="rect("+t+"px "+r+"px "+b+"px "+l+"px)"
		}
	}
}

//1.0
ff.writeLayer = function(strLayer,content) {
	var objLayer=ff.getObj(strLayer)
	if(objLayer){
		if (ff.ns4) {
			objLayer.document.open()
			objLayer.document.write(content)
			objLayer.document.close()
		}
		else if(ff.ie||ff.w3c) objLayer.innerHTML=content
		else if(ff.opera) objLayer.style.innerHTML=content
	}
}

//1.0
ff.popUp = function(strURL,w,h,blnCentered,strOptions){
	var name="popup"+parseInt(Math.random()*100)
	if(strOptions) strOptions+=","
	else var strOptions=""
	if(blnCentered){
		var x = (screen.width - w) / 2
		x = (x<0) ? 0 : x
		var y = (screen.height - h) / 2
		y = (y<0) ? 0 : y
		strOptions+="left=" + x + ",top=" + y+ ","
	}
	if(w) strOptions+="width="+w + ","
	if(h) strOptions+="height="+h + ","
	if(strOptions.substr(strOptions.length-1)==",") strOptions = strOptions.substr(0,strOptions.length-1)
	var win=window.open(strURL,name,strOptions);
	if(strURL.indexOf("http://")==-1 || strURL.indexOf(document.location.hostname)>-1) win.focus();
	return win
}

//1.0
ff.setCookie = function(strName, strValue, objExpires, strPath) {
	var strCookie = strName + "=" + escape(strValue)
	if(objExpires) strCookie += ";expires=" + objExpires.toGMTString()
	if(strPath) strCookie += ";path=" + strPath
	document.cookie = strCookie
}

//1.1
ff.getCookie = function(strName) {
	var t=document.cookie.match(new RegExp(strName + "=([^;]*)"))
	return (t)?unescape(t[1]):t
}

//1.0
ff.delCookie = function(strName) {
	if (ff.getCookie(strName)) document.cookie = strName + "=" + "; expires=Thu, 01-Jan-70 00:00:01 GMT"
}

//1.0
Number.prototype.baseConvert = String.prototype.baseConvert = function(intFromBase, intToBase){
	return parseInt(this,intFromBase).toString(intToBase||10)
}

//1.0
if(ff.ie && !ff.mac){
	document.write('<SCR' + 'IPT LANGUAGE=VBScript\> \n');
	document.write('Function VBflashCheck(reqVersion)\n'); 	
	document.write('on error resume next \n');
	document.write('reqInstalled = false \n');
	document.write('for i=reqVersion to 8 \n');
	document.write('isInstalled=IsObject(CreateObject("ShockwaveFlash.ShockwaveFlash."&i)) \n');
	document.write('if isInstalled then \n');
	document.write('reqInstalled=true \n');
	document.write('end if \n');
	document.write('next \n');
	document.write('VBflashCheck=reqInstalled \n');
	document.write('End function\n');
	document.write('</SCR' + 'IPT\> \n');
}

ff.flashCheck = function(intReqVersion){
	if (navigator.plugins){	
		if (navigator.plugins["Shockwave Flash"]){
			var flashDescription = navigator.plugins["Shockwave Flash"].description;
			var flashVersion = parseInt(flashDescription.charAt(flashDescription.indexOf(".") - 1));
			return (flashVersion>=intReqVersion) ? true:false
		}
		else if(ff.ie && !ff.mac) return VBflashCheck(intReqVersion)
		else return false
	}
	else return false
}

//1.0
ff.getZ = function(strLayer){
	var objLayer=ff.getObj(strLayer)
	if(objLayer){
		if(ff.ie||ff.w3c||ff.opera)  return objLayer.style.zIndex;
		else if (ff.ns4) return objLayer.zIndex;
	}
}

//1.0
ff.setZ = function(strLayer, intZIndex){
	var objLayer=ff.getObj(strLayer)
	if(objLayer){
		if(ff.ie||ff.w3c||ff.opera) objLayer.style.zIndex = intZIndex;
		else if (ff.ns4) objLayer.zIndex = intZIndex;
	}
}

//1.0
if(ff.ie && !ff.mac){
	document.write('<SCR' + 'IPT LANGUAGE=VBScript\> \n');
	document.write('Function VBqtCheck() \n'); 	
	document.write('on error resume next \n');
	document.write('isInstalled=IsObject(CreateObject("QuickTimeCheckObject.QuickTimeCheck.1")) \n');
	document.write('VBqtCheck=isInstalled \n');
	document.write('End function \n');
	document.write('</SCR' + 'IPT\> \n');
}

ff.qt4Check = function(){
	if (navigator.plugins){	
		if(navigator.plugins.length>0){
			var hasQT=false
			for(i=0;i<navigator.plugins.length;i++){
				if(navigator.plugins[i].name.toLowerCase().indexOf("quicktime")!=-1) hasQT=true
			}
			return hasQT
		}
		else if(ff.ie && !ff.mac) return (VBqtCheck()) ? true:false
		else return false
	}
	else return false
}

//1.0
ff.checkCookiesEnabled = function(){
	var strName="ffTestCookie" + parseInt(Math.random()*1000)
	ff.setCookie(strName,"true")
	if(!ff.getCookie(strName)) return false
	else return true
}

//1.0
ff.getFlashObj = function(strFlashId, strLayer){
	if(ff.ie && ff.win){
		return document.all[strFlashId]
	}
	else if(ff.ns4){
		if(strLayer){
			var objLayer = ff.getObj(strLayer)
			if(objLayer) return objLayer.document.embeds[strFlashId]
		}
		else return document.embeds[strFlashId]
	}
	else return false
}

//1.0
ff.printPage = function(objTargetFrame){
	if(window.print || (ff.ie && ff.win)){
		if(!objTargetFrame){
			if(window.print) window.print()
			else if(ff.ie && !ff.mac) vbPrintPage()
		}
		else{
			if(window.print && ff.ie){
				objTargetFrame.focus()
				window.print()
			} 
			else if(window.print) objTargetFrame.print()
			else if(ff.ie && !ff.mac){
				objTargetFrame.focus()
				setTimeout("vbPrintPage()", 100)
			} 
		}
	}
}

if(ff.ie && !window.print && !ff.mac){
	with(document){
		writeln('<OBJECT ID="WB" WIDTH="0" HEIGHT="0" CLASSID="clsid:8856F961-340A-11D0-A96B-00C04FD705A2"></OBJECT>')
		writeln('<' + 'SCRIPT LANGUAGE="VBScript">')
		writeln('Sub window_onunload')
		writeln('  On Error Resume Next')
		writeln('  Set WB = nothing')
		writeln('End Sub')
		writeln('Sub vbPrintPage')
		writeln('  On Error Resume Next')
		writeln('  WB.ExecWB 6, 1')
		writeln('End Sub')
		writeln('<' + '/SCRIPT>')
	}
}

//1.0
ff.catchMouseEvent = function(strEventName, strHandlerFunction, strLayer, detachEvent){
	if(ff.ns4){
		if(strLayer){
			var objLayer = ff.getObj(strLayer)
			if(objLayer) objLayer.document.captureEvents(Event[strEventName.toUpperCase()])
		}
		else document.captureEvents(Event[strEventName.toUpperCase()])
	}
	if(strLayer){
		var objLayer = ff.getObj(strLayer)
		if(objLayer){
			if(ff.ns4) objLayer.document["on"+strEventName] = (detachEvent) ? null : eval(strHandlerFunction)
			else objLayer["on"+strEventName] = (detachEvent) ? null : eval(strHandlerFunction)
		}
	}
	else document["on"+strEventName] = (detachEvent) ? null : eval(strHandlerFunction)
}

//1.0
ff.getEventY = function(evt){
		if(ff.ns4) return evt.pageY
		else if (ff.ie) return window.event.clientY
		else if (ff.w3c) return evt.clientY
}

//1.5
String.prototype.trim = function(blnLeft, blnRight) {
	if(blnLeft) return this.replace(/^\s*/,'')
	else if(blnRight) return this.replace(/\s*$/,'')
	else return this.match(/^\s*([^\s]*)\s*$/)[1]
}

//1.0
ff.getEventX = function(evt){
		if(ff.ns4) return evt.pageX
		else if (ff.ie) return window.event.clientX
		else if (ff.w3c) return evt.clientX
}

//1.1
String.prototype.reverse=function(){
   return this.split("").reverse().join("");
}

//1.0
String.prototype.fill=function(len,c,pos){
	if(!len) len=1
	if(pos<0) pos=this.length
	if(!pos) pos=0
	if(!c) c=" "
	var s1 = this.substring(0,pos)
	var s2 = this.substring(pos)
	for(var i=0;i<len;i++) s1+=c
	return s1+s2
}

//1.0
ff.getImgPos = function(strImgName, blnParentPos) {
	var objImg=ff.getObj(strImgName)
	var objRet = new Object()
	if(objImg){
		var objParent
		if (ff.ns4) {
			objRet.x = objImg.x
			objRet.y = objImg.y
			if (!blnParentPos) {
				objParent = objImg.parentLayer
				while (objParent != window && objParent) {
					objRet.x += objParent.left
					objRet.y += objParent.top
					objParent = objParent.parentLayer
				}
			}
		} else {
			objRet.x = objImg.offsetLeft
			objRet.y = objImg.offsetTop
			if (ff.w3c) {
				objParent = objImg.parentNode
				if (objParent == document.body){
					objRet.x += document.body.offsetLeft
					objRet.y += document.body.offsetTop
				}
				else if (blnParentPos){
					objRet.x -= objParent.offsetLeft
					objRet.y -= objParent.offsetTop
				}
			} 
			else if (ff.ie) {
				objParent = objImg.offsetParent
				if (!blnParentPos) {
					objParent = (ff.ie) ? objImg.offsetParent : objImg.parentNode
					while (objParent != document.body) {
						objRet.x += objParent.offsetLeft
						objRet.y += objParent.offsetTop					
						objParent = objParent.offsetParent
					}
				}
			}
		}
	}	
	return objRet
}

//1.0
ff.setOpacity = function(strLayer, intValue) {
	var objLayer=ff.getObj(strLayer)
	if(objLayer) {
		if (ff.ie) {
			objLayer.style.filter = "alpha(opacity=" + intValue + ")";
		} else if (ff.w3c) {
			objLayer.style.MozOpacity = "" + intValue + "%";
		}
	}
}

//1.0
ff.isDate = function(year, month, day){
	var dateTest = new Date(year, --month, day)
	return (year==dateTest.getFullYear() && month==dateTest.getMonth() && day==dateTest.getDate())
}

//1.0
String.prototype.cleanText = function(badChars){
	return this.replace(new RegExp("[" + badChars + "]","g"),"");
}

//1.0
ff.createLayer = function(id, left, top, width, zIndex, content, parentLayer){
	if(parentLayer) parentLayer = ff.getObj(parentLayer)
	else parentLayer = (ff.ns4) ? window : document.body
	top = top || 0; left = left || 0; width = width || 0; content = content || ""
	if(ff.ie || ff.w3c){
		if(typeof (document.createElement) == "object" || typeof (document.createElement) == "function"){ // neccessary for ie 4.5 on mac. otherwise it stops processing the page.
			var curLay = document.createElement("DIV");
			curLay.id = id
			curLay.style.position = "absolute"
		}
		else{
			parentLayer.innerHTML += "<div id='" + id + "' style='position:absolute;'></div>"
			var curLay = ff.getObj(id)
		}
		curLay.style.left = left + "px"
		curLay.style.top = top + "px"
		curLay.style.width = width + "px"
		curLay.style.zIndex = zIndex || 1
		curLay.innerHTML = content
		if (typeof (document.createElement) == "object" || typeof (document.createElement) == "function")
			parentLayer.appendChild(curLay)
	}
	else if(ff.ns4){
		var curLay = new Layer(width, parentLayer)
		curLay.left = left
		curLay.top = top
		curLay.visibility = "show"
		curLay.zIndex = zIndex || 1
		curLay.document.open()
		curLay.document.write(content)
		curLay.document.close()
		if(parentLayer) parentLayer.document.layers[id] = curLay
		else document.layers[id] = curLay
	}
}

//1.0
ff.deleteLayer = function(strLayer){
	var objLayer = ff.getObj(strLayer)
	if(objLayer){
		if(ff.ie || ff.w3c){
			if(document.body.removeNode) objLayer.removeNode(1)
			else{
				objLayer.innerHTML = ""
				objLayer.outerHTML = ""
			}
		}
		else if(ff.ns4) ff.hide(strLayer)
	}
}

//1.0
if(ff.ns4){ 
	ff.oldWin = {width:window.innerWidth,height:window.innerHeight}
	setInterval("if (window.innerWidth!=ff.oldWin.width || window.innerHeight!=ff.oldWin.height) window.location.reload()", 250) 
}

//1.0
ff.slideLayers = []
ff.slider = function (strLayer, x, y, iSpeed) {
	this.origX = ff.getX(strLayer)
	this.origY = ff.getY(strLayer)
	var iDistX = x - this.origX
	var iDistY = y - this.origY
	var iDist = Math.sqrt((iDistX*iDistX) + (iDistY*iDistY))
	this.steps = Math.floor(iDist/iSpeed)
	this.stepsDone = 0
	this.stepX = iDistX/this.steps
	this.stepY = iDistY/this.steps
	this.slide = ff.slide
}

ff.slide = function(strLayer, x, y, iSpeed) {
	if (this.stepsDone++ < this.steps) {
		ff.moveTo(strLayer, Math.round(this.origX + this.stepX*this.stepsDone), Math.round(this.origY + this.stepY*this.stepsDone))
	} else {
		clearInterval(this.timer)
		ff.moveTo(strLayer, x, y)
	}
}

ff.slideTo = function(strLayer, x, y, iSpeed) {
	iSpeed = (iSpeed) ? iSpeed : 3
	ff.slideLayers[strLayer] = new ff.slider(strLayer, x, y, iSpeed)
	ff.slideLayers[strLayer].timer = setInterval("ff.slideLayers['" + strLayer + "'].slide('" + strLayer + "', " + x + ", " + y + ", " + iSpeed + ")", 30)
}

//1.0
ff.slideBy = function(strLayer, x, y, iSpeed) {
	ff.slideTo(strLayer, ff.getX(strLayer)+x, ff.getY(strLayer)+y, iSpeed)
}

//1.0
ff.barScroll = new Object()
ff.barScroll.intPicWidth = 11
ff.barScroll.intArrowHeight = 11
ff.barScroll.intBarHeight = 11
ff.barScroll.xOffset = 10
ff.barScroll.scrollSpeed = 6
ff.barScroll.urlBarPic = "bar.gif"
ff.barScroll.urlBarBgPic = "bar_bg.gif"
ff.barScroll.urlUpArrowPic = "arrow_up.gif"
ff.barScroll.urlDownArrowPic = "arrow_down.gif"
ff.barScroll.timer = null

ff.barScroll.init = function(strLayer, blnNoBar, blnNoBarBg){
	ff.barScroll[strLayer] = new Object()
	ff.barScroll[strLayer].h = ff.getH(strLayer)
	ff.barScroll[strLayer].sh = ff.getScrollH(strLayer)
	ff.barScroll[strLayer].y = ff.getY(strLayer)
	if(ff.barScroll[strLayer].sh>ff.barScroll[strLayer].h){
		ff.barScroll[strLayer].maxscroll = ff.barScroll[strLayer].sh - ff.barScroll[strLayer].h
		ff.barScroll[strLayer].curpos = 0

		var x = ff.getX(strLayer) + ff.getW(strLayer) + ff.barScroll.xOffset
		var str1 = "<a href='javascript:void(0)' onmouseover=\"ff.barScroll.arrow('" + strLayer + "', "; var str2 = ")\" onmouseout=\"clearTimeout(ff.barScroll.timer)\"><img src='"; var str3 = "' border='0'></a>"

		if(!ff.getObj(strLayer + "ArrowUp")) ff.createLayer(strLayer + "ArrowUp", x, ff.barScroll[strLayer].y, ff.barScroll.intPicWidth, 5, str1 + "1" + str2 + ff.barScroll.urlUpArrowPic + str3)

		var a = ff.barScroll[strLayer].y+ff.barScroll[strLayer].h-ff.barScroll.intArrowHeight
		ff.createLayer(strLayer + "ArrowDown", x, a, ff.barScroll.intPicWidth, 5, str1 + "-1" + str2 + ff.barScroll.urlDownArrowPic + str3)

		var a = ff.barScroll[strLayer].y+ff.barScroll.intArrowHeight
		var b = ff.barScroll[strLayer].h - 2*ff.barScroll.intArrowHeight

		if(!blnNoBarBg){
			ff.createLayer(strLayer + "BarBg", x, a, ff.barScroll.intPicWidth, 6,  "<img src='" + ff.barScroll.urlBarBgPic + "' name='" + strLayer + "BgPic' width=" + ff.barScroll.intPicWidth + " height=" + b + ">")
			ff.catchMouseEvent("click", "ff.barScroll.click", strLayer+"BarBg")	
		}
		if(!blnNoBar){
			ff.createLayer(strLayer + "Drag", x, a, ff.barScroll.intPicWidth, 7, "<img name='" + strLayer + "DragPic' src='" + ff.barScroll.urlBarPic + "' border='0'>")
			if(ff.ie) document.ondragstart = function(){ return false}
			ff.catchMouseEvent("mousedown", "ff.barScroll.startDrag", strLayer+"Drag")	
		}
	}
}

ff.barScroll.scroll = function(strLayer, perc) {
	ff.barScroll[strLayer].curpos = parseInt(perc * ff.barScroll[strLayer].maxscroll)

	var scrollHeight = ff.barScroll[strLayer].h - 2*ff.barScroll.intArrowHeight

	ff.moveTo(strLayer+"Drag", null, perc * (scrollHeight-ff.barScroll.intBarHeight) + ff.barScroll[strLayer].y + ff.barScroll.intArrowHeight)
	ff.moveTo(strLayer, null, ff.barScroll[strLayer].y - ff.barScroll[strLayer].curpos)
	ff.clip(strLayer, ff.barScroll[strLayer].curpos, ff.getW(strLayer), ff.barScroll[strLayer].curpos+ff.barScroll[strLayer].h,0)
}

ff.barScroll.arrow = function(strLayer, direction){
	if(ff.getObj(strLayer)){
		ff.barScroll[strLayer].curpos -= direction*ff.barScroll.scrollSpeed
		if(ff.barScroll[strLayer].curpos<0) ff.barScroll[strLayer].curpos = 0
		else if(ff.barScroll[strLayer].curpos>ff.barScroll[strLayer].maxscroll) ff.barScroll[strLayer].curpos = ff.barScroll[strLayer].maxscroll

		ff.barScroll.scroll(strLayer, ff.barScroll[strLayer].curpos / ff.barScroll[strLayer].maxscroll)
		ff.barScroll.timer = setTimeout("ff.barScroll.arrow('" + strLayer + "', " + direction + ")", 30)
	}
}

ff.barScroll.startDrag = function(evt){
	if(ff.ie) var targetID = window.event.srcElement.parentElement.id
	else if(ff.ns4 || ff.w3c) var targetID = evt.target.name
	ff.barScroll.curDrag = targetID.substr(0,targetID.indexOf("Drag"))
	ff.barScroll.deltaY = ff.getEventY(evt) - ff.getY(ff.barScroll.curDrag + "Drag")
	ff.catchMouseEvent("mousemove", "ff.barScroll.drag")	
	ff.catchMouseEvent("mouseup", "ff.barScroll.stopDrag")
	return false
}

ff.barScroll.stopDrag = function(evt){
	ff.catchMouseEvent("mousemove", "ff.barScroll.drag", null, true)	
	ff.catchMouseEvent("mouseup", "ff.barScroll.stopDrag", null, true)
}

ff.barScroll.drag = function(evt){
	var topY = ff.getEventY(evt) - ff.barScroll.deltaY 
	var scrollTop = ff.barScroll[ff.barScroll.curDrag].y + ff.barScroll.intArrowHeight
	var scrollHeight = ff.barScroll[ff.barScroll.curDrag].h - 2*ff.barScroll.intArrowHeight
		
	var scrollBottom = scrollTop + ff.barScroll[ff.barScroll.curDrag].h - 2*ff.barScroll.intArrowHeight - ff.barScroll.intBarHeight

	if(topY>=scrollTop && topY<=scrollBottom) var scrollPerc = (topY - scrollTop) / (scrollHeight-ff.barScroll.intBarHeight)
	else if(topY<scrollTop) var scrollPerc = 0
	else if(topY>scrollBottom) var scrollPerc = 1

	ff.barScroll.scroll(ff.barScroll.curDrag, scrollPerc)
}

ff.barScroll.click = function(evt){
	if(ff.ie) var targetID = window.event.srcElement.parentElement.id
	else if(ff.ns4 || ff.w3c) var targetID = evt.target.name
	targetID = targetID.substr(0, targetID.length-5)
	var clickY = ff.getEventY(evt) - ff.barScroll[targetID].y - ff.barScroll.intArrowHeight
	var scrollHeight = ff.barScroll[targetID].h - 2*ff.barScroll.intArrowHeight
	ff.barScroll.scroll(targetID, clickY / scrollHeight)
}

//1.0
ff.barScroll.gotoAnchor = function(strLayer, anchorName){
	var anchorY = ff.getImgPos(anchorName, true).y
	if(anchorY>ff.barScroll[strLayer].sh - ff.barScroll[strLayer].h) var perc = 1
	else var perc = anchorY/ff.barScroll[strLayer].maxscroll
	ff.barScroll.scroll(strLayer, perc)
}

//1.0
ff.barScroll.reset = function(strLayer){
	var objLayer = ff.getObj(strLayer)
	if(objLayer){
		ff.moveTo(strLayer, null, ff.barScroll[strLayer].y)
		ff.clip(strLayer, 0,ff.getW(strLayer),ff.barScroll[strLayer].h,0)
		if(ff.getObj(strLayer)+"Drag") ff.moveTo(strLayer+"Drag", null, ff.barScroll[strLayer].y + ff.barScroll.intArrowHeight)
		ff.barScroll[strLayer].curpos = 0
	}
}

//1.0
if(!Array.prototype.shift) {
	Array.prototype.shift = function() {
		firstElement = this[0];
		this.reverse();
		this.length = Math.max(this.length-1,0);
		this.reverse();
		return firstElement;
	}
}

//1.0
if(!Array.prototype.unshift) {
	Array.prototype.unshift = function() {
		this.reverse();
		for(var i=arguments.length-1;i>=0;i--){
			this[this.length]=arguments[i]
		}
		this.reverse();
		return this.length
	}
}

//1.0
if(!Array.prototype.push || [0].push(true)==true) {
	Array.prototype.push = function() {
		for(var i=0;i<arguments.length;i++){
			this[this.length]=arguments[i]
		};
		return this.length;
	}
}

//1.0
if(!Array.prototype.pop) {
	Array.prototype.pop = function(){
		lastElement = this[this.length-1];
		this.length = Math.max(this.length-1,0);
		return lastElement;
	}
}

//1.1
if(!Array.prototype.splice || typeof([0].splice(0))) {
    Array.prototype.splice = function(ind,cnt){
        if(ind > this.length) {
            if(arguments.length > 2) ind = this.length;
            else return [];
        }
        removeArray = this.slice(ind,ind+cnt);
        endArray = this.slice(ind+cnt);
        this.length = ind;
        for(var i=2;i<arguments.length;i++){
            this[this.length] = arguments[i];
        }
        for(var i=0;i<endArray.length;i++){
            this[this.length] = endArray[i];
        }
        return removeArray;
    }
}

//1.0
ff.invVis = function (strLayer) {
	var objLayer = ff.getObj(strLayer)
	if(objLayer){
		if(ff.ie||ff.w3c) objLayer.style.visibility = (objLayer.style.visibility=="hidden")?"visible":"hidden"
    	else if(ff.ns4) objLayer.visibility = (objLayer.style.visibility=="hide")?"show":"hide"
    }
}

//1.0
ff.resize = function(strLayer,intW,intH) {
	var objLayer = ff.getObj(strLayer)
	if(objLayer){
		if(ff.ie || ff.w3c){
			objLayer.style.width = intW + "px"
			objLayer.style.height = intH + "px"
		}
		else if (ff.ns4) objLayer.resizeTo(intW, intH)
	}
}

//1.0
ff.checkRadio = function(strFormName, strRadioName, blnReturnValue) {
	var elmForm = ff.getObj(strFormName)
	if (elmForm && elmForm[strRadioName]) {
		for (var i=0;i<elmForm[strRadioName].length;i++) {
 			if(elmForm[strRadioName][i].checked) return (blnReturnValue) ? elmForm[strRadioName][i].value : i
		}
		return -1
	}
}

//1.0
ff.getScrollW = function(strLayer) {
	var objLayer=ff.getObj(strLayer)
	if(objLayer){
		if (ff.ie) return (ff.mac) ? objLayer.offsetWidth : objLayer.scrollWidth
		else if(ff.ns4) return objLayer.document.width
		else if(ff.w3c) return objLayer.offsetWidth 
	}
}

//1.0
Number.prototype.format = function(n) {
	var t=Math.round(this*Math.pow(10,n))/(Math.pow(10,n))
	return (t!=parseInt(t))?String(t):t+"."+String(Math.pow(10,n)).substr(1)
}