//******************************************************************************
// Javascript Tool Library 
//******************************************************************************
// Author: Ernani Danting

// global variable
var MX=0;
var MY=0;
// Function to run
Init_MousePos();
// Initialise the position of the mouse
function Init_MousePos(){
	Attach_Event(null,"mousemove",mousepos);
	Attach_Event(null,"click",mousepos);
	Attach_Event(null,"mouseout",mousepos);
}
// Get Mouse Handling Position

function mousepos(e){
	MX=getMouseX(e);
	MY=getMouseY(e);
	//window.status = MX+ " x "+ MY;
	
}
// ** convert int to hex 2 letters
function intToHex(n){
    var nybHexString = "0123456789ABCDEF";
    return String(nybHexString.substr((n >> 4) & 0x0F,1)) + nybHexString.substr(n & 0x0F,1);
}

// ** Get Element Object
function get_element(id){
	var element;
	if(document.getElementById){
		element=document.getElementById(id);
		if(element){
			return element;
		}
	}
	if(document.all){
		element=document.all[id];
		if(element){
			return element;
		}
	}
	if(document.layers){
		element=document.layers[id];
		if(element){
			return element;
		}
	}
	return false;
};

// ** return query value by name
function getQueryVariable(variable) {
  var query = window.location.search.substring(1);
  var vars = query.split("&");
  for (var i=0;i<vars.length;i++) {
    var pair = vars[i].split("=");
    if (pair[0] == variable) {
      return pair[1];
    }
  } 
  return false;
}

//get MouseXY
function getMouseX(e){
	var browser=getBrowser();
	var mx=0;
	if(browser=="IE"){
			mousex= event.clientX + (document.body.scrollLeft?document.body.scrollLeft:document.documentElement.scrollLeft);
	}else{
		mx = e.pageX
	}
	 if (mx < 0){
		 mx = 0
	}
	return mx;

};
function getMouseY(e){
	var browser=getBrowser();
	var my=0;
	if(browser=="IE"){
			//alert("scrolltop: "+document.body.scrollTop+"\neventy: "+event.y+"\nclientY"+event.clientY);
			my= event.clientY + (document.body.scrollTop?document.body.scrollTop:document.documentElement.scrollTop);
	}else{
   		my= e.pageY
	}
 	 if (my < 0){
		 my = 0
	}
	return  my;

};
// ** get browser
function getBrowser(){
	var strBrowser=navigator.appName;
	var strBVersion=parseFloat(navigator.appVersion);
	//alert(strBrowser+strBVersion);
	if(strBrowser.indexOf("Internet Explorer")!=-1){
		//document.all['browser'].value=strBrowser+" "+strBVersion
		finalBrowser="IE";
	}else if(strBrowser.indexOf("Netscape")!=-1){
		//document.getElementById('browser').value=strBrowser+" "+strBVersion
		finalBrowser="NETSCAPE";
	}else if(strBrowser.indexOf("Mozilla")!=-1){
		//document.getElementById('browser').value=strBrowser+" "+strBVersion
		finalBrowser="MOZILLA";
	}else{
		//document.getElementById('browser').value="I know nothing about your browser";
		finalBrowser="unknown";
	}
	return finalBrowser;
};

// get scroll points X
function getScrollX() {
  var scrOfX = 0;
  if( typeof( window.pageYOffset ) == 'number' ) {
    //Netscape compliant
    scrOfX = window.pageXOffset;
  } else if( document.body && ( document.body.scrollLeft || document.body.scrollTop ) ) {
    //DOM compliant
    scrOfX = document.body.scrollLeft;
  } else if( document.documentElement && ( document.documentElement.scrollLeft || document.documentElement.scrollTop ) ) {
    //IE6 standards compliant mode
    scrOfX = document.documentElement.scrollLeft;
  }
  return scrOfX;
}

// get scroll points Y
function getScrollY() {
  scrOfY = 0;
  if( typeof( window.pageYOffset ) == 'number' ) {
    //Netscape compliant
    scrOfY = window.pageYOffset;
  } else if( document.body && ( document.body.scrollLeft || document.body.scrollTop ) ) {
    //DOM compliant
    scrOfY = document.body.scrollTop;

  } else if( document.documentElement && ( document.documentElement.scrollLeft || document.documentElement.scrollTop ) ) {
    //IE6 standards compliant mode
    scrOfY = document.documentElement.scrollTop;

  }

  return scrOfY;

}



//validates postcode
function validatepostcode(val){
	var st;
	var cD=parseInt(val);
	var regxp2=/[0-9]{4}$/gi;
	if(!regxp2.test(val)){//confusing function if(its not a number)
		return false;
	}
	return true;
}

//If fields are empty return false else return true
function validateifempty(val){
	if(val=="" || val==" "){
		return false;
	}
	return true;
}

//CHECK EMAIL ADDRESS FORMAT
function checkemail(email){
	var regxp=/([a-zA-Z0-9_\-])+@([a-zA-Z_\-])+.([a-zA-Z\-_]{2,4})$/gi
	if(regxp.test(email)){
		return true;
	}else{
		return false;
	}
}

// ** has special character

function hasSCHAR(val){
	var iChars = "!@#$%^&*()+=[]\\\';,.{}|\":<>?";
	for(var s=0;s<val.length;s++){
		if(iChars.indexOf(val.charAt(s)) != -1){
			return true;
		}
	}
	return false;
}

// ** date class
function CurrentDate(){
	var d=new Date();
	this.month =d.getMonth()+1;
	this.day=d.getDate();
	this.year=d.getFullYear();
	this.formatslashUS=this.month+"/"+this.day+"/"+this.year;
	this.formatslashAU=this.day+"/"+this.month+"/"+this.year;
}
// ** div height correction
function match_height(idfrom,idto){
	var f=get_element(idfrom);
	var t=get_element(idto);
	if(!f || !t){
		alert("Cannot match height! No such object!");
		return false;
	}
	var maxheight=0;
	var divheight=0;
	if(f.offsetHeight){
		divheight=f.offsetHeight;
	}else if(f.style.pixelHeight){
		divheight=f.style.pixelHeight;
	}
	maxheight=Math.max(maxheight,divheight);
	t.style.height=maxheight+"px";
	return maxheight;
}

// creates an XMLHttpRequest instance 
var XMLRqst = new Array();
function createXmlHttpRequestObject() { // will store the reference to the XMLHttpRequest object

	var xmlHttp; 

	// this should work for all browsers except IE6 and older 

	try { // try to create XMLHttpRequest object 

		xmlHttp = new XMLHttpRequest(); 

	} catch(e) { // assume IE6 or older 

		var XmlHttpVersions = new Array("MSXML2.XMLHTTP.6.0", "MSXML2.XMLHTTP.5.0", "MSXML2.XMLHTTP.4.0", "MSXML2.XMLHTTP.3.0" ,"MSXML2.XMLHTTP", "Microsoft.XMLHTTP"); 

	// try every prog id until one works 

		for(var i=0; i<XmlHttpVersions.length && !xmlHttp; i++) { 

				try { // try to create XMLHttpRequest object 

					xmlHttp = new ActiveXObject(XmlHttpVersions[i]); 

				} catch (e) {

				} 

		} 

	} // return the created object or display an error message 

	if (!xmlHttp) 

		alert("Error creating the XMLHttpRequest object."); 

	else return xmlHttp; 

} 
/*
if(xml){
	xml.readyState == 4 || xml.readyState==0
		xml.open("get","page.pgp",true)
		xml.onreadystatechange = myfunction
		xml.send(null);
		
		//for post
		data="data=value&data2=value";
		xmlHttp2.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
		xmlHttp2.send(data); 
}
myfunction ()
 	xml.readyState==4
 		xml.status==200
 			div.innerHtml=xml.responseText
*/
// =============================================================================================
// Attach an event to an object by their IDs
/*
Usage: Attach_Event( ID , Event , Function ,[ARG1, ARG2, ARG3])
EG. Attach_Event( "divname" , "click" , myFunction, "Arg1", "Arg2" );
*/
function Attach_Event(id,eventArray,eventHandlers){
	/*
	javascript eventArray, eventHandlers can be an array or a String :
		param: click, mouseout, mouseover, keydown, load, submit , focus , keyup, reset, resize, select
				keypress, dblclick, blur, change , abort ,mousemove mouseup ,mousedown
	*/
	var element;
	// Variables to generate arguments
	var args = Array();
	var argc = Attach_Event.arguments.length;
	var argstr ="";
	var num = 0;
	if(argc>3){
		num= 3;
		for(i=0;i<(argc-3);i++){
			args[i]=Attach_Event.arguments[num];
			num++;
		}
		
	}
	// ArgString( Array, Name of Array)
	argstr = ArgString(args,"args"); // IMPORTANT! //
	
	if(id=="document"){
		element=document;
	}else if(id=="window"){
		element = window;
	}else if(id==null){
		element = document;
	}else{
		element=get_element(id);
		if(!element){
			return false;
		}
	}
	if(isArray(eventArray) && isArray(eventHandlers)){
		if(eventArray.length>0 && eventHandlers.length>0){
			
			if(!element){
				return false;
			}
			for(var i=0;i<eventArray.length;i++){
				if(element.addEventListener){
					try {
						element.addEventListener(eventArray[i],eval(eventHandlers[i]),false);
					}catch(e){
						alert("AttachEvent Error: Error attaching event("+eventArray[i]+") on id("+id+").");
					}
				}else if(element.attachEvent){
					try {
						element.attachEvent("on"+eventArray[i],eval(eventHandlers[i]));
					}catch(e){
						alert("AttachEvent Error: Error attaching event("+eventArray[i]+") on id("+id+").");
					}
				}
			}
			
		}else{
			return false;
		}
	}else{
		if(element.addEventListener){
			try {
				// If there is no argument set 
				if(argstr==""){
					element.addEventListener(eventArray,eventHandlers,false);
				}else{
					element.addEventListener(eventArray,function(){ eval("eventHandlers("+argstr+")"); },false);
				}
				
			}catch(e){
				alert("AttachEvent Error(addEventListener): Error attaching event("+eventArray+") on ("+element+",id:"+id+").");
				return false;
			}
		}else if(element.attachEvent){
			try {
				// If there is no argument set 
				if(argstr==""){
					element.attachEvent("on"+eventArray,eventHandlers );
				}else{
					element.attachEvent("on"+eventArray,function(){ eval("eventHandlers("+argstr+")"); } );
				}
			}catch(e){
				alert("AttachEvent Error(attachEvent): Error attaching event("+eventArray+") on ("+element+",id:"+id+").");
				return false
			}
		}
	}
}
// Return string of arguments ready for evaluation;
function ArgString(arg,arrname){
	var len = arg.length;
	var str ="";
	var temp = new Array();
	
	for(i=0;i<len;i++){
		temp[i]=arrname+"["+i+"]";
	}
	str = temp.join(",");
	return str;
}
// Check a variable if its an Array
function isArray(myvar){
	if(myvar.constructor.toString().indexOf("Array")==-1){
		return false;
	}else{
		return true;
	}
}	
// Check a variable if its a Number
function isNumber(myvar){
	if(myvar.constructor.toString().indexOf("Number")==-1){
		return false;
	}else{
		return true;
	}
}
// get relative X position
function getRelativeXPos(id){
	var doc = get_element(id);
	return doc.offsetLeft;
}
function getRelativeYPos(id){
	var doc = get_element(id);
	return doc.offsetTop;
}
// Get Browsers inner width
function getInnerBrowserWidth(){
 	var innerwidth = 0;
	if( typeof( window.innerWidth ) == 'number' ) {
    //Non-IE
    innerwidth = window.innerWidth;
  } else if( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) ) {
    //IE 6+ in 'standards compliant mode'
    innerwidth = document.documentElement.clientWidth;
  } else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) {
    //IE 4 compatible
    innerwidth = document.body.clientWidth;
  }
  return innerwidth;
}
// Get Browsers inner height
function getInnerBrowserHeight(){
  var innerheight = 0;
  if( typeof( window.innerWidth ) == 'number' ) {
    //Non-IE
    innerheight = window.innerHeight;
  } else if( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) ) {
    //IE 6+ in 'standards compliant mode'
    innerheight = document.documentElement.clientHeight;
  } else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) {
    //IE 4 compatible
    innerheight = document.body.clientHeight;
  }
  return innerheight;	
}

// Get position x of an element
function getElementXPos(id){
	var doc = get_element(id);
	var curx= 0;
	var parent;
	if(doc.offsetParent){
		parent = doc.offsetParent;
		while(parent){
			curx = curx + parent.offsetLeft;
			parent = parent.offsetParent;
		}
		curx = curx + doc.offsetLeft;
	}
	return curx;
}
// Get position y of an element
function getElementYPos(id){
	var doc = get_element(id);;
	var cury= 0;
	var parent;
	if(doc.offsetParent){
		parent = doc.offsetParent;
		while(parent){
			cury = cury + parent.offsetTop;
			parent = parent.offsetParent;
		}
		cury = cury + doc.offsetTop;
	}
	return cury;
}
// Get element offset width
function offsetWidth(id){
	var w=0;
	var e = get_element(id);
	try{
		if(e.style.width !="" || e.style.width){
			
			w = parseInt(e.style.width);
		}else{	
			w = e.offsetWidth;
		}
	}catch(e){}
	return w;
}
// Get element offset height
function offsetHeight(id){
	var h=0;
	var e = get_element(id);
	try{
		if(e.style.height !="" || e.style.height){
			h = parseInt(e.style.height);
			
		}else{
			h = e.offsetHeight;
		}
	}catch(e){}
	return h;
}
// Get current opacity from 1 -100
function getOpacity(id){
	var e = get_element(id);
	var cur_opacity = 100;
	try{
		if(e.style.opacity!="undefined"){
			if(e.style.opacity<100){	
				cur_opacity = e.style.opacity * 100;
			}
		}
	}catch(e){};
	return cur_opacity;
}
// Set opacity
// Set opacity set from 0 - 100
function setOpacity(id,opac){
	var e = get_element(id).style;
	e.opacity = (opac / 100);  // CSS3
	e.MozOpacity = (opac / 100);  // FIREFOX
	e.KhtmlOpacity = (opac / 100);  // OTHER
	e.filter = "alpha(opacity=" + opac + ")";  // IE
	return true;
}
//******************************************************************************
// Javascript Effect Library 
//******************************************************************************
/*  Fade In div objects 1 - 100, increment*/
var fadein = Array();
var fadeout =Array();
var b=0;
function fadeIn(id,decrement,speed,fc1,fc2){
	// f1 is function to be called when effect is done
	// f2 is function to be called when processing the effect
	var element= get_element(id);
	var opac = getOpacity(id);
		if(!fadein[id]){
			 setOpacity(element,0);
			 element.style.display = "block";
			 func = function (){ fadeIn(id,decrement,speed,fc1,fc2); }
			 fadein[id] = setInterval(func,speed);
			 
		} else if(opac<100){
			opac = opac + decrement;
			setOpacity(element,opac);
			// window.status = fc2;

			try{
				if(fc2){
				setTimeout(fc2,1);
				}
			}catch(e){
			}
		}else{
			clearInterval(fadein[id]);
			fadein[id]=null;
			try{
				if(fc1){
					setTimeout(fc1,1);
				}
			}catch(e){
				
			}
			
		}
		
}
/*  Fade Out div objects 1 - 100, increment*/
function fadeOut(id,decrement,speed,fc1,fc2){
	var element= get_element(id);
	var opac = getOpacity(id);
		if(!fadeout[id]){
			setOpacity(element,100);
			func = function (){ fadeOut(id,decrement,speed,fc1,fc2); }
			fadeout[id] = setInterval(func,speed);
		} else if(opac>0){
			opac = opac - decrement;
			setOpacity(element,opac);
			try{
				if(fc2){
					setTimeout(fc2,1);
				}
				
			}catch(e){}
		}else{
			clearInterval(fadeout[id]);
			fadeout[id] = null;
			element.style.display = "none";
			try{
				if(fc1){
					setTimeout(fc1,1);
				}
			}catch(e){}
			
		}
		
}
/////////////////////////////////////////////////////////////////////////////////////////
/* Pop Up */
var popout = new Array();
var popflag = new Array();
var popObj = new Array();
var dependant = new Array();
var info = new Array();
var int = 0;
/* Save recursion processing */
var popAO = new Array();
var popDO = new Array();

function InitPopUp(ahref,divname,pos,msec,effect,dependon,entrybehave,endbehave,xoffset,yoffset)
{
	// Saves processing get_element;
	popAO[ahref] = get_element(ahref);
	popDO[divname] = get_element(divname);

	if(dependon)
	{
		dependant[dependon] = 0;
	}
	if(!entrybehave || !endbehave){
		Attach_Event(ahref,"mouseover",popUp,ahref,divname,pos,msec,effect,dependon,xoffset,yoffset);
		Attach_Event(ahref,"mouseout",popOut,divname,msec,effect,dependon);
		Attach_Event(divname,"mouseover",popUp,ahref,divname,pos,msec,effect,dependon,xoffset,yoffset);
		Attach_Event(divname,"mouseout",popOut,divname,msec,effect,dependon);
	}else{
		Attach_Event(ahref,entrybehave,popUp,ahref,divname,pos,msec,effect,dependon,xoffset,yoffset);
		Attach_Event(ahref,endbehave,popOut,divname,msec,effect,dependon);
		Attach_Event(divname,entrybehave,popUp,ahref,divname,pos,msec,effect,dependon,xoffset,yoffset);
		Attach_Event(divname,endbehave,popOut,divname,msec,effect,dependon);
	}
	
	popflag[divname]= 0;
	if(effect=="curtain"){
		popObj[divname]= new CurtainEffect(divname);
	}
	
	/*
	FLAG: 
	0 = Idle/ Closed
	1 = Opening
	2 = Open
	3 = Closing
	*/
	// keeping record of the the parameters
	info[int] = new Array(ahref,divname,pos,msec,effect,dependon);
	int = int + 1;
}

function popUp(ahref,div,pos,msec,effect,dependon,xoffset,yoffset){

	var position = "bottom";
	var nx =0, ny= 0;
	var fc1 = function (){ OpenP(div); }
	var fc2 = function (){ OpeningP(div); }
	
	if(!popAO[ahref]){
		return false;
	}
	
	nx = ext_pxpos(ahref,pos,div);
	ny = ext_pypos(ahref,pos,div);
	
	if(!xoffset){
		xoffset=0;
	}
	if(!yoffset){
		yoffset=0;
	}
	
	popDO[div].style.left = (xoffset+nx)+"px";
	popDO[div].style.top =  (yoffset+ny)+"px";
	popDO[div].style.position="absolute";
	
	switch(effect){
		case "curtain":
			if(popflag[div]==0){
				popObj[div].Open(fc1,fc2);
			}
		break;
		case "fade":
			
			if(popflag[div]==0){
				fadeIn(div,5,1,fc1,fc2);
			}
			
		break;
		default:
		popDO[div].style.display = "block";
	}
	if(popout[div]){
		clearInterval(popout[div]);
		// popflag[div]=2;
	}
	if(dependon){
		dependant[dependon] = 2;
	}
}
function CloseP(div){
	popflag[div]=0;
}
function ClosingP(div){
	popflag[div]=3;
}
function OpenP(div){
	popflag[div]=2;
	
}
function OpeningP(div){
	popflag[div]=1;
}
// Pop out mouseout
function popOut(div,msec,effect,dependon){
	 	popout[div] = window.setInterval("popClose('"+div+"','"+effect+"','"+dependon+"')",msec);
	
}
function popClose(div,effect,dependon){
	var fc1 = function (){ CloseP(div) }
	var fc2 = function (){ ClosingP(div) }
	var e = popDO[div];
	
	if(InsideBox(div)){
		// if the mouse is still in the div area donot close the window
		return false;
	}
	// if the dependants are set and set to not negative or zero 
	// keep displaying the box
	if(dependant[div]){
		return false;
	}
	
	// if you have set the depend on set it to zero to alternate the other function
	// so dependant can function and close the box its supposed to depend
	if(dependon){
		dependant[dependon]=0;
	}

	switch(effect){
		case "fade":
			fadeOut(div,5,1,fc1,fc2);
			break;
		case "curtain":
					popObj[div].Close(fc1,fc2);
			break;
		default:
			e.style.display = "none";
	}

	popflag[div]= 0;
	clearInterval(popout[div]);
	
	// Close the other dependant simultaneously
	var c = 0;
	for(var n=0;n<info.length;n++){
		dvn = info[n][1];
		if(!InsideBox(e)){
			c++;
		}
	}
	// if all dependencies are all being hovered by the mouse
	// just ignore otherwise close everything simultaneously
	if(c == info.length){
		for(var i=0;i<info.length;i++){
			eff = info[i][4];
			cdiv= info[i][1];
			aref= info[i][0];
			msc = info[i][3];
			dpnd= info[i][5];
			poss= info[i][2];
			// if all the flag are set to 0, terminate the function kill recursion overflow
			if(popflag[cdiv]==0){
				return;
			}
			// if the function is its own then jump on to the next ignore
			if(cdiv==div){
				continue;
			}
			popClose(cdiv,eff,dpnd);
		}
	}
	return;
	
}
// Return XPOS of extension of pop up
function ext_pxpos(ahref,pos,objid){
	var nx =0,awidth =0,aposx= 0, owidth=0;
	var divo = get_element(objid);
	var arefo= get_element(ahref);
	
	owidth = offsetWidth(objid);
	awidth = offsetWidth(ahref);
	aposx = getElementXPos(ahref);
	switch(pos){
		case "left":
			nx = aposx - owidth;
			break
		case "bottom":
			nx = aposx;
			break;
		case "top":
			nx = aposx;
			break;
		case "right":
			nx = aposx + awidth;

			break;
		default:
			nx = aposx;
	}
	return nx;
}
// Return YPOS of extension of pop up
function ext_pypos(ahref,pos,objid){
	var ny =0,aheight=0,aposy=0, oheight =0;
	var divo = get_element(objid);
	var arefo= get_element(ahref);
	
	oheight = offsetHeight(objid);
	aheight = offsetHeight(ahref);
	aposy = getElementYPos(ahref);
	switch(pos){
		case "left":
			ny = aposy;
			break
		case "bottom":
			ny = aposy + aheight;
			break;
		case "top":
			ny = aposy - oheight;
			break;
		case "right":
			ny = aposy;
			break;
		default:
			ny = aposy + aheight;
	}
	return ny;
}
function InsideBox(id){
	var e = get_element(id);
	var x = getElementXPos(id);
	var y = getElementYPos(id);
	
	w = e.offsetWidth;
	h = e.offsetHeight;
	b =InsideSquare(x,y,w,h);
	// window.status = id+ ": "+b;
	return b;
	
}
// check if the mouse is inside the box
function InsideSquare(xpos,ypos,width,height){
	var xs = ypos + height;
	var ys = xpos + width;
	if(MY>=ypos && MY<=xs && MX>=xpos && MX<=ys){
		return true;
	}
	return false;
}

/////////////////////////////////////////////////////////////////////////////////////////
// Curtain effect
var CE = new Array();
function CurtainEffect(id){
	CE[id] = this;
	this.name = id;
	this.obj =get_element(id);
	this.cur_height=offsetHeight(id) ;
	this.openinterval = null;
	this.closeinterval =null;
	this.speed = 0;
	
	
	this.Open = function(fc,fc2){ 
		var id = this.name;
		var func = function(){ CE[id].OpeningFromTop(id,fc,fc2) };
		
		this.obj.style.overflow = "hidden";
		this.obj.style.display = "block";
		this.obj.style.height = 0+"px";
		
		this.openinterval = window.setInterval(func,1);
	}
	this.Close = function(fc,fc2){
		var id = this.name;
		clearInterval(this.openinterval);
		var func = function(){ CE[id].ClosingFromBottom(id,fc,fc2) };
		
		this.obj.style.overflow ="hidden";
		this.closeinterval = window.setInterval(func,1);
	}
	// OPENING
	this.OpeningFromTop = function(id,fc,fc2){
		var e =CE[id];
		if(parseInt(e.obj.style.height)>=e.cur_height){
			e.obj.style.height=e.cur_height+"px";
			clearInterval(e.openinterval);
			try{
				if(fc){
					setTimeout(fc,1);
				}
			}catch(e){
			}
		}else{
			try{
				if(fc2){
					setTimeout(fc2,1);
				}
			}catch(e){
			}
			e.obj.style.height=parseInt(e.obj.style.height)+10+ "px";
		}
	}
	// CLOSING
	this.ClosingFromBottom = function(id,fc,fc2){
		var e =CE[id];
		if(parseInt(e.obj.style.height)<=0){
			e.obj.style.display = "none";
			clearInterval(e.closeinterval);
			try{
				if(fc){
					setTimeout(fc,1);
				}
			}catch(e){
			}
		}else{
			try{
				if(fc2){
					setTimeout(fc2,1);
				}
			}catch(e){
			}
			e.obj.style.height=parseInt(e.obj.style.height)-10+ "px";
		}
	}
}

// ------------------------------------------------------------------------------------------//
// SCROLLING IMAGE EFFECT BOTTOM AND TOP
//-------------------------------------------------------------------------------------------//
var scrollerwindow;
var scrollinginterval = null;
var scrollspeed= 3;
var scwheight;
var scrollerA;
var scrollerB;
var setAheight = 0;
var setBheight = 0;
var scrollername="scroller";
var sets = new Array();

function Scrolling(){
	for(var i=0;i<2;i++){
		topy = sets[i].style.top;
		if(!topy){
			topy =0;
		}else{
			topy = parseInt(topy);
		}
		
		sets[i].style.top = (topy - scrollspeed) + "px";
	}
	for(var i=0;i<2;i++){
		/////////////////////////////
		diffy = 0;
		offset = sets[i].offsetTop;
		hh =0;
		/////////////////////////////
		hh = (sets[i].offsetTop+sets[i].offsetHeight);
		if(hh<0){
			id = 0;
			pheight = 0;
			if(i==0){
				id=1;
			}else{
				id=0;
			}
			pheight += sets[id].offsetTop + sets[id].offsetHeight;
			if(i==0)
			sets[i].style.top = pheight+"px";	
			else
			sets[i].style.top = 0+"px";
			//alert(i+" :"+sets[i].style.top);
			
		}
	}
	// window.status =sets[0].style.top+" "+sets[1].style.top;
}
function initScroller(scrollername,saname,sbname,speed){
	sets[0]= get_element(saname);
	sets[1] = get_element(sbname);
	
	scrollspeed = speed;
	scrollerwindow = get_element(scrollername);
	
	sets[0].style.position ="relative";
	sets[1].style.position ="relative";
	scrollerwindow.style.position= "relative";
	
	setAheight = sets[0].offsetHeight;
	setBheight = sets[1].offsetHeight;
	
	scwheight = scrollerwindow.offsetHeight;
	scrollinginterval = setInterval(Scrolling, 40);
	
}
function resetText(e){
	e.value ="";
}
function changeCartAttribute(fromid,toid,id,attrid,hiddenp,price){
	var from = get_element(fromid);
	var to   = get_element(toid);
	var op   = get_element(hiddenp);
	// Dani Edits
	// Important this sets the shopping cart attribute to change
	// Never touch this please
	var carthidden = get_element(id);
	carthidden.value = attrid;
	op.value = price;
	// alert(op.value);
	
	to.innerHTML = "";
	to.innerHTML = from.innerHTML.replace(" ","");
	to.innerHTML = from.innerHTML.replace("\n","");
}
