// ================ COOKIE =============== //

var Cookie = {
	read:function(name) {
		if (!document.cookie)
			return;
		var nameEQ = name + "=";
		var ca = document.cookie.split(';');
		for(var i=0;i < ca.length;i++) {
			var c = ca[i];
			while (c.charAt(0)==' ') c = c.substring(1,c.length);
				if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
		}
		return false
	},
	set:function (cookieName,cookieValue,cPath,nHrs) {
		var today = new Date()
		var expire = new Date()
		if (cPath==null) cPath = '/'
		if (nHrs==null || nHrs==0) nHrs=1
		expire.setTime(today.getTime() + 3600000*nHrs)
		document.cookie = cookieName+"="+escape(cookieValue)
							+ ";path="+cPath
							+ ";expires="+expire.toGMTString()
		}
}

var tableStrips = {
	strip:function(table_obj){
		var trs = table_obj.getElementsByTagName('tr')
		var j=0
		for (var i=1;i<trs.length;i++){
			if (trs[i].style.display!='none'){
			j++
			if (j%2==0)	trs[i].className = 'even'
			else		trs[i].className = 'odd'
			trs[i].origClass = trs[i].className
			trs[i].onmouseover = function(){
					this.className = 'hover'
				}
			trs[i].onmouseout = function(){
					this.className = this.origClass
				}
			}
		}
	}
}


var toolTip = {
	make:function(obj, text, opacity, width){
		obj._toolText = text
		obj._toolWidth = width
		obj.onmouseover = toolTip._show
		obj.onmousemove = toolTip._move
		obj.onmouseout = toolTip._hide
		obj._toolOpacity = opacity
	},
	_show:function(e){
		var tdiv
			if(tdiv = document.getElementById('tooltipdiv'))
				e = !e?window.event:e;
		var pos = Position.page(this)
		tdiv = attachElement(document.body,'div','tooltipdiv')
		var p = attachElement(tdiv,'p','tool_p',false,this._toolText)
		if (!this._toolWidth)
			tdiv.toolWidth = p.offsetWidth+22
		else
			tdiv.style.width = this._toolWidth+'px'
		var _spos = scrollPos()
		tdiv.winWidth = document.body.offsetWidth; 
		tdiv.style.top = e.clientY+_spos[0]+'px'
		tdiv.style.left = e.clientX+20+_spos[1]+'px'
		if (this._toolOpacity)
			new Effect.Opacity(tdiv,{duration:0.5, from:1.0, to:0.5})
		
	},
	_move:function(e){
		var tdiv
		if(tdiv = document.getElementById('tooltipdiv')){
			e = !e?window.event:e;
			var _spos = scrollPos()
			var e_pos = 20
			if (e.clientX+tdiv.toolWidth>tdiv.winWidth)
				e_pos = -tdiv.toolWidth
			tdiv.style.top = e.clientY+_spos[0]+'px'
			tdiv.style.left = e.clientX+e_pos+_spos[1]+'px'
		}
	},
	_hide:function(){
		var tdiv
			if(tdiv = document.getElementById('tooltipdiv')){
				removeObj(tdiv)
			}
	}
}

document.getElementsByClassName2 = function(cl,tag){
		var retnode = []
		var myclass = cl
		tag =!tag?'*':tag
		var elem = this.getElementsByTagName(tag)
		for (var i = 0; i < elem.length; i++) {
			var classes = elem[i].className
			if (myclass == classes){
				//alert(elem[i])
				retnode.push(elem[i])
				}
			}
		return retnode;
}

var onlyNumbers = {
	make:function(inpObj,minVal,maxVal,isFloat,cVal,extraChars){
			inpObj.isFloat = isFloat?true:false
			inpObj.extraChars = extraChars?extraChars:false
			if (inpObj.isFloat){
				inpObj.minVal = minVal?parseFloat(minVal):0
				inpObj.cVal = cVal?parseFloat(cVal):false
				inpObj.maxVal = maxVal?parseFloat(maxVal):false
				inpObj.lastVal = inpObj.cVal?parseFloat(inpObj.cVal):parseFloat(inpObj.minVal)
			}else{
				inpObj.minVal = minVal?parseInt(minVal):0
				inpObj.cVal = cVal?parseInt(cVal):false
				inpObj.maxVal = maxVal?parseInt(maxVal):false
				inpObj.lastVal = inpObj.cVal?parseInt(inpObj.cVal):parseInt(inpObj.minVal)
			}
			if (minVal && !cVal)
				inpObj.value = inpObj.minVal
			else
				inpObj.value = inpObj.cVal
			inpObj.onfocus = function(){
				this.origBackground = this.style.background?this.style.background:'#FFF'
				this.style.background='#fff693'
				if (!this.cVal){
					if (this.value==this.minVal)
						this.value=''
				}else{
					if (this.value==this.cVal)
						this.value=''
				}
			}
			inpObj.onblur = function(){
				this.style.background = this.origBackground
				if (!this.cVal){
					if (this.value=='')
						this.value=this.minVal
				}else{
					if (this.value=='')
						this.value=cVal
				}
			}
			inpObj.onkeydown = function(){
				if (isNumeric(this.value,this.isFloat,this.extraChars) && this.value>=this.minVal){
					if (!this.maxVal){
						this.lastVal = this.value
					}else if(this.value<=this.maxVal){
						this.lastVal = this.value
					}
				}
			}
			inpObj.onkeyup = function(){
				if (this.value!='')
					if (!isNumeric(this.value,this.isFloat,this.extraChars) || this.value<this.minVal){
							this.value = this.lastVal
					}else if(this.maxVal && this.value>this.maxVal){
							this.value = this.lastVal
					}
			}	
		}
}

var Status = {
	show:function(text){
		var sdiv
		var stext = document.createTextNode(text)
		if (sdiv=$('status_show_div'))
			removeObj(sdiv)
		var spos = scrollPos()
		sdiv = document.createElement('div')
		sdiv.setAttribute('id','status_show_div')
		sdiv.style.marginTop = spos[0]+'px'
		sdiv.style.marginLeft = spos[1]+'px'
		sdiv.appendChild(stext)
		document.body.appendChild(sdiv)
	},
	hide:function(){
		var sdiv
		if (sdiv=$('status_show_div'))
			removeObj(sdiv)
	}
}

// === SCROLL POS === //
function scrollPos(){
	var _top = (window.pageYOffset)?(window.pageYOffset):(document.documentElement)?document.documentElement.scrollTop:document.body.scrollTop
	var _left = (window.pageXOffset)?(window.pageXOffset):(document.documentElement)?document.documentElement.scrollLeft:document.body.scrollLeft
	return [_top,_left]
}

// === REMOVE ANY OBJECT === //
function removeObj(obj){
	var p = obj.parentNode;
	p.removeChild(obj)
}

										//***********************//
// =========================================== ATTACHELEMENT ================================================ //
										//***********************//
function attachElement(obj,elm,eid,eclss,etxtnode,etype,evalue,ename,ehref,esrc,ewidth,eheight,epos,ebg,ecol,eborder){
	var elem = document.createElement(elm)
//style stuff
	if (ewidth)
		elem.style.width = ewidth
	if (eheight)
		elem.style.height = eheight
	if (epos)
		elem.style.position = epos
	if (ebg)
		elem.style.background = ebg
	if (ecol)
		elem.style.color = ecol
	if (eborder)
		elem.style.border = eborder
//other attributes	
	if (eid)
		elem.setAttribute('id',eid)
	if (eclss)
		elem.className = eclss
	if (etype && elm=='input')
		elem.setAttribute('type',etype)
	if (etxtnode)
		elem.appendChild(document.createTextNode(etxtnode))
	if (ehref && elm=='a')
		elem.href = ehref
	if (esrc && elm=='img')
		elem.src = esrc
	if (evalue && (elm=='input' || elm=='option'))
		elem.value = evalue
	if (evalue && elm=='textarea')
		elem.value = evalue
	if (ename && elm=='input')
		elem.setAttribute('name',ename)
		
	obj.appendChild(elem)
	return elem
}


										//***********************//
// ============================================ IS NUMERIC ================================================ //
										//***********************//
function isNumeric(sText,isFloat,extraChars){
   var ValidChars = "0123456789"
   if (extraChars) ValidChars+=extraChars
   var decChar = '.'
   var IsNumber=true;
   var Char;

   var dec = 0 
   for (i = 0; i < sText.length && IsNumber == true; i++){ 
      Char = sText.charAt(i)
      if (ValidChars.indexOf(Char) == -1){
      	 if (!isFloat)
	         IsNumber = false
		else if(decChar.indexOf(Char) == -1)
			IsNumber = false
      }
      if (isFloat){
	      if (decChar.indexOf(Char) == 0)
    	     dec++
	      if (dec>1)
	      	IsNumber = false
      }
   }
   return IsNumber;
}

