/*
Ver .08
Dhtml Functions Written by Joseph Ronie
These Functions are Open Source, 
But I do ask, If you use them
Drop me an email and let me know.
phocuser-]at[-gmail-]dot[-com.

These Functions are used to set the CSS propertys of objects dynamicly at runtime
they work to the best of my knowledge in IE and Firefox/Mozilla
Fadein() and Fadeout() in Mozilla, Will not Fade Tables
Fadein() and Fadeout() in IE, Currently  works on all Objects
setZIndex() only Seems to work in IE

NOTE: Any style attribute that this script changes must FIRST
be decalred in a style sheet!!
	Most common:
		--set 
			position:absolute;
			top:
			left:
			width:
			height:
			filter: alpha(opacity:100);
			-moz-opacity:.1;
			MozOpacity:.1;


2/24/05
Joseph Ronie
phocuser-]at[-gmail-]dot[-com.
*/

document.onmousemove = mousemoved;

var currentX;
var currentY;
var offsetX=0;
var offsetY=0;
var Follow_Mouse_obj="none";
var Resize_Obj="none";

//Functions

function isIE(){
	//Check Browser Type
	var browser_type = document.all?true:false;
	return browser_type;
}


function FollowMouseActivate(obj,resize){
	//sets Active object to be Moved
	//uses object
 //alert('i am here');	
	offsetX = (getMouseX()-getLeft(obj));
	offsetY = (getMouseY()-getTop(obj));
	if (offsetY < 30){
		SnapToMouse(obj);
		Follow_Mouse_obj=obj;
	}else{
//		if (resize==true && checkresize(obj)==true){
//				Resize_Obj=obj;
				//alert('set resize object');
//		}
	}
}



function FollowMouseDeActivate(){
	//un_sets Active object for moving
	//uses nothing
	//stopresize();	
	Follow_Mouse_obj="none";
	Resize_Obj="none";
}

function getLeft(obj){
	//returns CSS left property of object
	return GetStyleProperty(obj,"left");
}

function getTop(obj){
		//returns CSS Top property of object
	return GetStyleProperty(obj,"top");
}


function GetStyleProperty(obj,st){
 //Returns the style Property
 //uses Object and style type
 //example a=GetStyleProperty('image1',"height");
 
 	if(isIE()==true){
		st=makeIEHappy(st);
		var n = eval(document.getElementById(obj).currentStyle);
		var s = eval("n." + st);
	}else{
		var n = document.getElementById(obj);	 
		var s = window.getComputedStyle(n,null).getPropertyValue(st);
			if (s.indexOf("rgb") > 0){
				s=rgbtohex(s);
			}	
	}
	
	if (s.indexOf("px") > 0){
		s=removePX(s);
	}
return s;
}

function removePX(val1){
	//Internal Function 
	//removes px from left and top val
	var val2;
	getto=val1.indexOf("p");
	val2=(val1.substring(0,getto));
	val2= parseInt(val2);
return val2;
}

function makeIEHappy(strng){
//Internal Function
//IE decided to name some CSS properties different
//This Fixes them
var newstring='';
	for(i=0;i<strng.length;i++){
			if(strng.charAt(i)=="-"){
				newstring += eval("strng.charAt(i+1).toUpperCase()");
				i++;
			}else{
				newstring += strng.charAt(i);
			}
	} 
 return newstring;
}


function mousemoved(e){
	//Internal Function
	//when mouse moves, grab new values and store them
	//also if a moveable object is active, move it
	if(isIE()==false){
		currentX=e.pageX;
		currentY=e.pageY;
	}else{
		currentX=window.event.clientX;
		currentY=window.event.clientY;
	}


	if(Resize_Obj!="none"){
		h=((getMouseY()) - getTop(Resize_Obj));
		w=((getMouseX()) - getLeft(Resize_Obj));
		if(h < 1){h=1;}
		if(w < 1){w=1;}
		
//		alert(getWidth(Resize_Obj) + " vs " + w);
//		alert(w + " VS" + getMouseX()); 
		iframename=Resize_Obj.substr(0,Resize_Obj.length - 7);
		//setSize(iframename,h-30,w-30);
		setSize(Resize_Obj,h,w);
	
	}
	
	//special code to stop from dragging over left bar
	//not in real version of this function
	
	if(Follow_Mouse_obj!="none") {
		if(getLeft(Follow_Mouse_obj) < 130){
			setLeft(Follow_Mouse_obj,150);
			FollowMouseDeActivate();
		}
	}

	if(Follow_Mouse_obj!="none" && Follow_Mouse_obj !=undefined ){
		SnapToMouse(Follow_Mouse_obj);
	}
}

function checkresize(obj){
//alert('in resize');
bottom = getTop(obj)  + getHeight(obj);
right  = getLeft(obj) +  getWidth(obj);
bdiff=right-getMouseX();
rdiff=bottom- getMouseY();

	if((rdiff < 20) && (rdiff > -10)){
			if((bdiff < 20) && (bdiff > -10)) {
				return true;
			}
	}
return false;
}


function getMouseY(){
	//Returns the Currnt Y Positon of the Mouse
	return currentY;
}

function getMouseX(){
	//Returns the Currnt X Positon of the Mouse
	return currentX;
}

function setVisible(obj,value){
	//sets the visiablitiy of an object
	//uses obj, true or false
	
		if(value==true){
			setStyleById(obj,"visibility","visible");
			
		}else{
			setStyleById(obj,"visibility","hidden");
		}
}

function setZIndex(obj,val){
	//ONLY SEEMS TO WORK IN IE
	//sets the index of an object
	//uses object and value
	// 1 < 2
	setStyleById(obj,"zIndex",val);
}

function getScreenWidth(){
	//returns the true windows screen Width
	return screen.width;
}

function getScreenHeight(){
	//returns the true windows screen Height
	return screen.height;
}


function setStyleById(obj,st, val) {
	//Sets A Style Property
	//uses obj,style,value
	//example setStyleById('image1','height',55);
//alert("!!"+obj);	
	var n = document.getElementById(obj);
	n.style[st] = val;
}


function SnapToMouse(obj){
	//Brings Object To Mouse
	//uses obj offsetX(global var) offsety(global var)
	//example SnapToMouse('image1');
	setStyleById(obj,"top",getMouseY()-offsetY);
	setStyleById(obj,"left",getMouseX()-offsetX);
}


function MoveToXY(obj,X,Y){
	//Sets position of an Object
	//uses Object X , Y Positions
	//example MoveToXy('image1',50,150);
		setTop(obj,Y);
		setLeft(obj,X);
}

function setTop(obj,y){
	//Sets the CSS Top Property
	//Uses object Y Position
	//example setTop('image1',200);
	setStyleById(obj,"top",y);
}

function setLeft(obj,x){
	//Sets the CSS Left Property
	//Uses object X Position
	//example setLeft('image1',200);
	setStyleById(obj,"left",x);
}


function GrowHW(obj,h,w,speed){
	//graduly grows object to a height and width
	//uses object,target,height,width,speed
	//example GrowHW('iframe1',200,200,40);
	GrowHeight(obj,h,speed);
	GrowWidth(obj,w,speed);
}

function ShrinkHW(obj,h,w,speed){
	//graduly grows object to a height and width
	//uses object,target,height,width,speed
	//example GrowHW('iframe1',200,200,40);
	ShrinkHeight(obj,h,speed);
	ShrinkWidth(obj,w,speed);
}


function GrowHeight(obj,h,speed){
	//Graduly Grows an Objects Height
	//uses Object, Target Height, Speed
	//example GrowHeight('image1',250,10);
	var current=GetStyleProperty(obj,"height");
		if (h > current){
			setHeight(obj,current+10);
			target="GrowHeight('" + obj +"'," + h + "," + speed + ")";
			setTimeout(target,speed);
		}
}



function ShrinkHeight(obj,h,speed){
	//Graduly Strinks an Objects Height
	//uses Object, Target Height, Speed
	//example StrinkHeight('image1',250,10);
	var current=GetStyleProperty(obj,"height");
		if (h < current){
			setHeight(obj,current-10);
			target="ShrinkHeight('" + obj +"'," + h + "," + speed + ")";
			setTimeout(target,speed);
		}
}


function GrowWidth(obj,w,speed){
	//Graduly Grows an Objects Width
	//uses Object, Target Width, Speed
	//example GrowWidth('image1',250,10);
	var current=GetStyleProperty(obj,"width");
		if (w > current){
			setWidth(obj,current+10);
			target="GrowWidth('" + obj +"'," + w + "," + speed + ")";
			setTimeout(target,speed);
		}
}


function ShrinkWidth(obj,w,speed){
	//Graduly Strinks an Objects Width
	//uses Object, Target Width, Speed
	//example StrinkWidth('image1',250,10);
  var current=GetStyleProperty(obj,"width");
	if (w < current){
		setWidth(obj,current -10);
		target="ShrinkWidth('" + obj +"'," + w + "," + speed + ")";
		setTimeout(target,speed);
	}
}



function setHeight(obj,h){
	//sets an objects height
	//uses object, height
	//example setHeight('image1',40);
	setStyleById(obj,"height",h);
}

function setWidth(obj,w){
	//sets an objects width
	//uses object, width
	//example setWidth('image1',40);
	setStyleById(obj,"width",w);
}

function setSize(obj,h,w){
	//sets an objects size
	//uses object, height,width
	//example setSize('image1',40,40);
	setHeight(obj,h);
	setWidth(obj,w);
}

function getWidth(obj){
	//returns object width
	//uses object
	return GetStyleProperty(obj,"width");
}
function getHeight(obj){
	//returns object height
	//uses object
	return GetStyleProperty(obj,"height");
}

function SlideRight(obj,pxLeft,speed,current){
	//Slides an object Right
	//uses object,pixels to move,speed
	//example SlideRight('image1',50,10);
if(current==undefined){current=0;}

	if(current < pxLeft) {
		
		Xpos=GetStyleProperty(obj,"left");
			if((pxLeft-current) < 10){
				current += pxLeft-current;
				setLeft(obj,Xpos + pxLeft-current);
			}else{
				current += 10
				setLeft(obj,Xpos + 10);
			}
		target="SlideRight('" + obj +"'," + pxLeft + "," + speed + "," + current + ")";
		setTimeout(target,speed);
	}
}

function SlideLeft(obj,pxLeft,speed,current){
	//Slides an object Left
	//uses object,pixels to move,speed
	//example SlideLeft('image1',50,10);
if(current==undefined){current=0;}

	if(current < pxLeft) {
		
		Xpos=GetStyleProperty(obj,"left");
			if((pxLeft-current) < 10){
				current -= current - pxLeft;
				setLeft(obj,Xpos + current - pxLeft);
			}else{
				current += 10
				setLeft(obj, Xpos - 10);
			}
		target="SlideLeft('" + obj +"'," + pxLeft + "," + speed + "," + current + ")";
		setTimeout(target,speed);
	}
}


function SlideUp(obj,pxtop,speed,current){
	//Slides an object Up
	//uses object,pixels to move,speed
	//example SlideUp('image1',50,10);
if(current==undefined){current=0;}

	if(current < pxtop) {
		
		Ypos=GetStyleProperty(obj,"top");
			if((pxtop-current) < 10){
				current -= current - pxtop;
				setTop(obj,Ypos + current - pxtop);
			}else{
				current += 10
				setTop(obj, Ypos - 10);
			}
		target="SlideUp('" + obj +"'," + pxtop + "," + speed + "," + current + ")";
		setTimeout(target,speed);
	}
}


function setCursor(obj,val){
	//sets the cursor type
	//uses object,value
	var tcursors = new Array("default","auto","crosshair","pointer"	,"move"	,"e-resize"	,"ne-resize"	,"nw-resize"	,"n-resize"	,"se-resize"	,"sw-resize"	,"s-resize"	,"w-resize"	,"text"	,"wait"	,"help");
	setStyleById(obj,'cursor',tcursors[val]);
}

function SlideDown(obj,pxtop,speed,current){
	//Slides an object Down
	//uses object,pixels to move,speed
	//example SlideDown('image1',50,10);
if(current==undefined){current=0;}

	if(current < pxtop) {
		
		Ypos=GetStyleProperty(obj,"top");
			if((pxtop-current) < 10){
				current += pxtop-current;
				setTop(obj,Ypos + pxtop-current);
			}else{
				current += 10
				setTop(obj,Ypos + 10);
			}
		target="SlideDown('" + obj +"'," + pxtop + "," + speed + "," + current + ")";
		setTimeout(target,speed);
	}
}


function setOpacity(obj,val){
	//sets the transperacny of an object
	//uses object transperancy %
	//example setOpacity('image1',50);
	if(isIE()==true){
		prop="alpha(opacity:" + val + ")";
		document.getElementById(obj).style.filter = prop;
	}else{
		document.getElementById(obj).style["opacity"] = val/100;
	}
}


function fadein(obj,speed,FadeCurrent){
	//Fades an objects transperacny from 0 to 100
	//uses object, speed, 
	//example fadein('image1',10);
	
if(FadeCurrent==undefined){FadeCurrent=0};	
FadeCurrent=FadeCurrent + 5;
	if (FadeCurrent > 100){
	    FadeCurrent=100;
		setOpacity(obj,100);
		speed=0;
		FadeCurrent=0;
	}else{
	target="fadein('" + obj + "'," + speed + "," + FadeCurrent + ")";
		setTimeout(target,speed);
		setOpacity(obj,FadeCurrent);	
	}
}


function fadeout(obj,speed,FadeCurrent){
	//Fades an objects transperacny from 100 to 1
	//uses object, speed, 
	//example fadeout('image1',10);
	if(FadeCurrent==undefined){FadeCurrent=100};	
FadeCurrent=FadeCurrent - 5;
	if (FadeCurrent < 0){
	    FadeCurrent=0;
		setOpacity(obj,0);
	}else{
	target="fadeout('" + obj + "'," + speed + "," + FadeCurrent + ")";
		setTimeout(target,speed);
		setOpacity(obj,FadeCurrent);	
	}
}





function rgbtohex(myrgb){
	//internal function 
	//converts an RBG to Hex Value
	var mystr = '#';
	var myar = [];
	myar = myrgb.split(',');
	var tmp = givehex(myar[0].substring(4,myar[0].length));
	mystr += tmp;
	tmp = givehex(myar[1]);
	mystr += tmp;
	tmp = myar[2];
	var jop = myar[2].length;
	jop = jop - 1;
	tmp = myar[2].substring(0, jop);
	tmp = givehex(tmp);
	mystr += tmp;
return mystr;
}


function givehex(val){
	//internal function 
	//converts an RBG to Hex Value
	var hexarray= new Array(256);
	hexarray[0]="00"; hexarray[1]="01"; hexarray[2]="02";
	hexarray[3]="03"; hexarray[4]="04"; hexarray[5]="05";
	hexarray[6]="06"; hexarray[7]="07"; hexarray[8]="08";
	hexarray[9]="09"; hexarray[10]="0A"; hexarray[11]="0B"; 
	hexarray[12]="0C"; hexarray[13]="0D"; hexarray[14]="0E";
	hexarray[15]="0F"; hexarray[16]="10"; hexarray[17]="11";
	hexarray[18]="12"; hexarray[19]="13"; hexarray[20]="14";
	hexarray[21]="15"; hexarray[22]="16"; hexarray[23]="17";
	hexarray[24]="18"; hexarray[25]="19"; hexarray[26]="1A";
	hexarray[27]="1B"; hexarray[28]="1C"; hexarray[29]="1D";
	hexarray[30]="1E"; hexarray[31]="1F"; hexarray[32]="20";
	hexarray[33]="21"; hexarray[34]="22"; hexarray[35]="23";
	hexarray[36]="24"; hexarray[37]="25"; hexarray[38]="26";
	hexarray[39]="27"; hexarray[40]="28"; hexarray[41]="29"; 
	hexarray[42]="2A"; hexarray[43]="2B"; hexarray[44]="2C";
	hexarray[45]="2D"; hexarray[46]="2E"; hexarray[47]="2F";
	hexarray[48]="30"; hexarray[49]="31"; hexarray[50]="32";
	hexarray[51]="33"; hexarray[52]="34"; hexarray[53]="35";
	hexarray[54]="36"; hexarray[55]="37"; hexarray[56]="38";
	hexarray[57]="39"; hexarray[58]="3A"; hexarray[59]="3B";
	hexarray[60]="3C"; hexarray[61]="3D"; hexarray[62]="3E";
	hexarray[63]="3F"; hexarray[64]="40"; hexarray[65]="41";
	hexarray[66]="42"; hexarray[67]="43"; hexarray[68]="44";
	hexarray[69]="45"; hexarray[70]="46"; hexarray[71]="47";
	hexarray[72]="48"; hexarray[73]="49"; hexarray[74]="4A";
	hexarray[75]="4B"; hexarray[76]="4C"; hexarray[77]="4D";
	hexarray[78]="4E"; hexarray[79]="4F"; hexarray[80]="50";
	hexarray[81]="51"; hexarray[82]="52"; hexarray[83]="53";
	hexarray[84]="54"; hexarray[85]="55"; hexarray[86]="56";
	hexarray[87]="57"; hexarray[88]="58"; hexarray[89]="59";
	hexarray[90]="5A"; hexarray[91]="5B"; hexarray[92]="5C";
	hexarray[93]="5D"; hexarray[94]="5E"; hexarray[95]="6F";
	hexarray[96]="60"; hexarray[97]="61"; hexarray[98]="62";
	hexarray[99]="63"; hexarray[100]="64"; hexarray[101]="65";
	hexarray[102]="66"; hexarray[103]="67"; hexarray[104]="68";
	hexarray[105]="69"; hexarray[106]="6A"; hexarray[107]="6B";
	hexarray[108]="6C"; hexarray[109]="6D"; hexarray[110]="6E";
	hexarray[111]="6F"; hexarray[112]="70"; hexarray[113]="71";
	hexarray[114]="72"; hexarray[115]="73"; hexarray[116]="74";
	hexarray[117]="75"; hexarray[118]="76"; hexarray[119]="77";
	hexarray[120]="78"; hexarray[121]="79"; hexarray[122]="7A";
	hexarray[123]="7B"; hexarray[124]="7C"; hexarray[125]="7D";
	hexarray[126]="7E"; hexarray[127]="7F"; hexarray[128]="80";
	hexarray[129]="81"; hexarray[130]="82"; hexarray[131]="83";
	hexarray[132]="84"; hexarray[133]="85"; hexarray[134]="86";
	hexarray[135]="87"; hexarray[136]="88"; hexarray[137]="89";
	hexarray[138]="8A"; hexarray[139]="8B"; hexarray[140]="8C";
	hexarray[141]="8D"; hexarray[142]="8E"; hexarray[143]="8F";
	hexarray[144]="90"; hexarray[145]="91"; hexarray[146]="92"; 
	hexarray[147]="93"; hexarray[148]="94"; hexarray[149]="95";
	hexarray[150]="96"; hexarray[151]="97"; hexarray[152]="98";
	hexarray[153]="99"; hexarray[154]="9A"; hexarray[155]="9B";
	hexarray[156]="9C"; hexarray[157]="9D"; hexarray[158]="9E";
	hexarray[159]="9F"; hexarray[160]="A0"; hexarray[161]="A1";
	hexarray[162]="A2"; hexarray[163]="A3"; hexarray[164]="A4";
	hexarray[165]="A5"; hexarray[166]="A6"; hexarray[167]="A7";
	hexarray[168]="A8"; hexarray[169]="A9"; hexarray[170]="AA";
	hexarray[171]="AB"; hexarray[172]="AC"; hexarray[173]="AD";
	hexarray[174]="AE"; hexarray[175]="AF"; hexarray[176]="B0";
	hexarray[177]="B1"; hexarray[178]="B2"; hexarray[179]="B3";
	hexarray[180]="B4"; hexarray[181]="B5"; hexarray[182]="B6";
	hexarray[183]="B7"; hexarray[184]="B8"; hexarray[185]="B9";
	hexarray[186]="BA"; hexarray[187]="BB"; hexarray[188]="BC";
	hexarray[189]="BD"; hexarray[190]="BE"; hexarray[191]="BF";
	hexarray[192]="C0"; hexarray[193]="C1"; hexarray[194]="C2";
	hexarray[195]="C3"; hexarray[196]="C4"; hexarray[197]="C5";
	hexarray[198]="C6"; hexarray[199]="C7"; hexarray[200]="C8";
	hexarray[201]="C9"; hexarray[202]="CA"; hexarray[203]="CB";
	hexarray[204]="CC"; hexarray[205]="CD"; hexarray[206]="CE";
	hexarray[207]="CF"; hexarray[208]="D0"; hexarray[209]="D1";
	hexarray[210]="D2"; hexarray[211]="D3"; hexarray[212]="D4";
	hexarray[213]="D5"; hexarray[214]="D6"; hexarray[215]="D7";
	hexarray[216]="D8"; hexarray[217]="D9"; hexarray[218]="DA";
	hexarray[219]="DB"; hexarray[220]="DC"; hexarray[221]="DD";
	hexarray[222]="DE"; hexarray[223]="DF"; hexarray[224]="E0";
	hexarray[225]="E1"; hexarray[226]="E2"; hexarray[227]="E3";
	hexarray[228]="E4"; hexarray[229]="E5"; hexarray[230]="E6";
	hexarray[231]="E7"; hexarray[232]="E8"; hexarray[233]="E9";
	hexarray[234]="EA"; hexarray[235]="EB"; hexarray[236]="EC";
	hexarray[237]="ED"; hexarray[238]="EE"; hexarray[239]="EF";
	hexarray[240]="F0"; hexarray[241]="F1"; hexarray[242]="F2";
	hexarray[243]="F3"; hexarray[244]="F4"; hexarray[245]="F5";
	hexarray[246]="F6"; hexarray[247]="F7"; hexarray[248]="F8";
	hexarray[249]="F9"; hexarray[250]="FA"; hexarray[251]="FB";
	hexarray[252]="FC"; hexarray[253]="FD"; hexarray[254]="FE"; 
	hexarray[255]="FF";
return hexarray[eval(val)];
}

function IsNumeric(val)
   // Not working or implemened
   //  check for valid numeric strings	
   {
   var strValidChars = "0123456789.-";
   var strChar;
   var blnResult = true;

   if (val.length == 0) return false;

   for (i = 0; i < val.length && blnResult == true; i++)
      {
      strChar = strString.charAt(i);
      if (strValidChars.indexOf(strChar) == -1)
         {
         blnResult = false;
         }
      }
   return blnResult;
   }

   
   function setBackGroundColor(obj,hex){
   	 //sets the background color of an object
	 //uses object, and hex color
	 //example setBackGroundColor('table1',#FF0000);
   		setStyleById(obj,"backgroundColor",hex);
	}

	function setBorderColor(obj,hex){
   	 //sets the Border  color of an object
	 //uses object, and hex color
	 //example setBorderColor('table1',#FF0000);
   		setStyleById(obj,"borderColor",hex);
	}
	
	
	function setBorderStyle(obj,st){
	   	 //sets the Border Style of an object
		 //uses object, and style number 0-9
		 //example setBorderStyle('table1',5);
		var stvar;
		switch(st)
			{
				case 0:stvar='none';break
				case 1:stvar='hidden';break
				case 2:stvar='dotted';break
				case 3:stvar='dashed';break
				case 4:stvar='solid';break
				case 5:stvar='double';break
				case 6:stvar='groove';break
				case 7:stvar='ridge';break
				case 8:stvar='inset';break
				case 9:stvar='outset';break
			   	default:stvar='solid';break
				}
   setStyleById(obj,"borderStyle",stvar);
}



function getValue(obj){
	return document.getElementById(obj).value;
}

function setValue(obj,val){
	document.getElementById(obj).value=val;
}


function getScrollX(){
var ScrollX;
	if(isIE()==true){
			ScrollX=document.body.scrollLeft;
		}else{
			ScrollX=window.pageXOffset;
		}
	return ScrollX;
}		
		
function getScrollY(){
var ScrollY;
	if(isIE()==true){
			ScrollY=document.body.scrollTop;
		}else{
			ScrollY=window.pageYOffset;
		}
		return ScrollY;
}		
		
function getBrowserWidth() {

if (!document.compatMode || document.compatMode=="CSS1Compat") {
	return document.documentElement.clientWidth;
}else if (document.compatMode) {
	return document.body.clientWidth;
}

return zero(self.innerWidth);
}


function getBrowserHeight() {
if (!window.opera && (!document.compatMode ||document.compatMode=="CSS1Compat")) {
	return document.documentElement.clientHeight;
}else if (document.compatMode && !window.opera) {
	return document.body.clientHeight;
}
return zero(self.innerHeight);
}		
		
		
