/*#######################################*/
/*			Beta FONT SIZER				 */
/*#######################################*/
window.onload = function() {
	_LSfontSizer.init(null);
}

origSize = new Array();

var _LSfontSizer = {
	contentID:'content',// The outer most element of the text you want to resize
	debug: false,		// Allow alert of tracking values
	enabeled: true,		// Enable the fontsize tool to function single point to disable
	maxChange: 5, 		// Max number of increase/decreases in font size
	changeCnt: 0, 		// Track change counts
	defaultSize: '12',	// NA - default font size
	maxSize: '16',		// NA - max font size
	minSize: '8',		// NA - minimum font size
	curSize: null,		// loop container for current size and manipulation
	origSizeCnt: 0,		// Track the item change count for reset value mapping
	echo: '',			// debug value outputs
	activeFunc: null,	// Store the active function that was called
	init: function(call){
			this.echo='';
			this.activeFunc = call;
			if(this.activeFunc == null) { // Setup Listeners onload
				try {
					Event.add($('fntSizeInc'),'mouseup',function() { _LSfontSizer.init('add'); });
					Event.add($('fntSizeDec'),'mouseup',function() { _LSfontSizer.init('dec'); });
					Event.add($('fntSizeReset'),'mouseup',function() { _LSfontSizer.subSetFunc('get'); });
					if(document.all) {
						$('fntSizeInc').style.cursor = "hand";
						$('fntSizeDec').style.cursor = "hand";
						$('fntSizeReset').style.cursor = "hand";
					} else {
						$('fntSizeInc').style.cursor = "pointer";
						$('fntSizeDec').style.cursor = "pointer";
						$('fntSizeReset').style.cursor = "pointer";
					}
				} catch(e) { 
					//do nothing since the fontSizer interface is not present
				}
				//return; //End
			}
			
			if(this.activeFunc=='add') {
				if(this.changeCnt+1>this.maxChange)
					this.enabeled = false;
				else {
					this.changeCnt++; this.enabeled = true;
				}
			} else if (this.activeFunc=='dec') {
				if(this.changeCnt-1<(0-this.maxChange))
					this.enabeled = false;
				else {
					this.changeCnt--; this.enabeled = true;
				}
			}
			if(this.enabeled) {
				bodyObjs = $(this.contentID).childNodes;
				for(var i=0;i<bodyObjs.length;i++){
					if(bodyObjs[i].nodeType == 1)  // IE 
						this.traverseTree(bodyObjs[i])
					// END nodeType
				} // END for loop
				if(this.debug) alert(this.echo);
			}
		},
	set: function(obj) {
			this.curSize = getStyle(obj.parentNode,'font-size');
			if( this.curSize != 'undefined' && obj.nodeName=="#text" && obj.parentNode.nodeName != "DIV") {
				origSize.push(this.curSize);
				this.echo += "\n\rSET DEFAULT = " + this.curSize;
			}
		},
	get: function(obj) {
			this.curSize = origSize[this.origSizeCnt];
			if( this.curSize != 'undefined' && obj.nodeName=="#text" && obj.parentNode.nodeName != "DIV") {
					var newSize = parseInt((this.curSize.substring(0,this.curSize.length-2))) + 1;
					obj.parentNode.style.fontSize = newSize + this.curSize.substring(this.curSize.length-2,this.curSize.length);
					this.echo += "\n\rRESET TO DEFAULT:: "+this.curSize+" >> Parent = "+obj.parentNode.nodeName+" >> This = "+obj.nodeName;//+" :: nodeValue "+obj.nodeValue;
					this.origSizeCnt++;
			}
	},
	add: function(obj) {
			this.curSize = getStyle(obj.parentNode,'font-size');
			if( this.curSize != 'undefined' && obj.nodeName=="#text" && obj.parentNode.nodeName != "DIV") {
					var newSize = parseInt((this.curSize.substring(0,this.curSize.length-2))) + 1;
					obj.parentNode.style.fontSize = newSize + this.curSize.substring(this.curSize.length-2,this.curSize.length);
					this.echo += "\n\rADD:: "+this.curSize+" >> Parent = "+obj.parentNode.nodeName+" >> This = "+obj.nodeName;//+" :: nodeValue "+obj.nodeValue;
					this.origSizeCnt++;
			}
		},
	dec: function(obj) {
			this.curSize = getStyle(obj.parentNode,'font-size');
			if( this.curSize != 'undefined' && obj.nodeName=="#text" && obj.parentNode.nodeName != "DIV") {
					var newSize = parseInt((this.curSize.substring(0,this.curSize.length-2))) - 1;
					obj.parentNode.style.fontSize = newSize + this.curSize.substring(this.curSize.length-2,this.curSize.length);
					this.echo += "\n\rDEC:: "+this.curSize+" >> Parent = "+obj.parentNode.nodeName+" >> This = "+obj.nodeName;//+" :: nodeValue "+obj.nodeValue;
					this.origSizeCnt++;
			}
		},
	traverseTree: function(tree){
			var cnt = null;
			if(tree.hasChildNodes() && tree.nodeName != "P") { // Don't process paragraph sub elements
				var nodes = tree.childNodes.length;
				for(var i=0; i<tree.childNodes.length; i++) {
					if(tree.childNodes[i].nodeName != "A"){
						this.traverseTree(tree.childNodes[i]);
						cnt++;
					}
					this.echo += " :: "+cnt+" :: ";
				} 
			} else if (tree.nodeName == "P") { // Only pass the outer paragraph tag once to limit is change occurance to one
				if(this.activeFunc == 'add') 
					this.add(tree.childNodes[0]);
				else if (this.activeFunc == 'dec')
					this.dec(tree.childNodes[0]);
				else if (this.activeFunc == 'get')
					this.get(tree.childNodes[0]);
				else 
					this.set(tree.childNodes[0]);
			} else {
				if(this.activeFunc == 'add') 
					this.add(tree);
				else if (this.activeFunc == 'dec')
					this.dec(tree);
				else if (this.activeFunc == 'get')
					this.get(tree);
				else 
					this.set(tree);
			}
		},
		subSetFunc: function(val) {
			this.origSizeCnt = 0;
			this.echo += "\n\rOrigSize Length = "+ origSize.length;
			for(i=0;i<origSize.length;i++) {
				this.echo += "\n\rOrigSize["+ i + "] = "+origSize[i];
			}
			this.enabeled = true;
			this.changeCnt = 0;
			this.init(val);
		}
}

function $(element) {
	var elements = new Array();
	for (var i=0;i<arguments.length;i++) {
		var element = arguments[i];
		if (typeof element == 'string') element = document.getElementById(element);
		if (arguments.length == 1) return element;
		elements.push(element);
	}
	return elements;
}

function getStyle(el,styleProp)
{
	var x = el;
	if (x.currentStyle)
		var y = x.currentStyle['fontSize'];
	else if (window.getComputedStyle)
		try { var y = document.defaultView.getComputedStyle(x,null).getPropertyValue('font-size'); }
		catch(e) {
			//donothing
		}
	return y;
}

var Event = {
	add: function(obj,type,fn) {
		if (obj.attachEvent) {
			obj['e'+type+fn] = fn;
			obj[type+fn] = function() { obj['e'+type+fn](window.event); }
			obj.attachEvent('on'+type,obj[type+fn]);
		} else
		obj.addEventListener(type,fn,false);
	},
	remove: function(obj,type,fn) {
		if (obj.detachEvent) {
			obj.detachEvent('on'+type,obj[type+fn]);
			obj[type+fn] = null;
		} else
		obj.removeEventListener(type,fn,false);
	}
}




/*
Snow Fall 1 - no images - Java Script
Visit http://rainbow.arch.scriptmania.com/scripts/
  for this script and many more
*/

// Set the number of snowflakes (more than 30 - 40 not recommended)
var snowmax=35

// Set the colors for the snow. Add as many colors as you like
var snowcolor=new Array("#98c3f3","#d1cec6","#7aa4ea","#dfe1e3","#ffffff")

// Set the fonts, that create the snowflakes. Add as many fonts as you like
var snowtype=new Array("Times","Arial","Times","Verdana")

// Set the letter that creates your snowflake (recommended: * )
var snowletter="*"

// Set the speed of sinking (recommended values range from 0.3 to 2)
var sinkspeed=0.6

// Set the maximum-size of your snowflakes
var snowmaxsize=72

// Set the minimal-size of your snowflakes
var snowminsize=30

// Set the snowing-zone
// Set 1 for all-over-snowing, set 2 for left-side-snowing
// Set 3 for center-snowing, set 4 for right-side-snowing
var snowingzone=1

///////////////////////////////////////////////////////////////////////////
// CONFIGURATION ENDS HERE
///////////////////////////////////////////////////////////////////////////


// Do not edit below this line
var snow=new Array()
var marginbottom
var marginright
var timer
var i_snow=0
var x_mv=new Array();
var crds=new Array();
var lftrght=new Array();
var browserinfos=navigator.userAgent
var ie5=document.all&&document.getElementById&&!browserinfos.match(/Opera/)
var ns6=document.getElementById&&!document.all
var opera=browserinfos.match(/Opera/)
var browserok=ie5||ns6||opera

function randommaker(range) {
        rand=Math.floor(range*Math.random())
    return rand
}

function initsnow() {
        if (ie5 || opera) {
                marginbottom = document.body.scrollHeight
                marginright = document.body.clientWidth-15
        }
        else if (ns6) {
                marginbottom = document.body.scrollHeight
                marginright = window.innerWidth-15
        }
        var snowsizerange=snowmaxsize-snowminsize
        for (i=0;i<=snowmax;i++) {
                crds[i] = 0;
            lftrght[i] = Math.random()*15;
            x_mv[i] = 0.03 + Math.random()/10;
                snow[i]=document.getElementById("s"+i)
                snow[i].style.fontFamily=snowtype[randommaker(snowtype.length)]
                snow[i].size=randommaker(snowsizerange)+snowminsize
                snow[i].style.fontSize=snow[i].size+'px';
                snow[i].style.color=snowcolor[randommaker(snowcolor.length)]
                snow[i].style.zIndex=1000
                snow[i].sink=sinkspeed*snow[i].size/5
                if (snowingzone==1) {snow[i].posx=randommaker(marginright-snow[i].size)}
                if (snowingzone==2) {snow[i].posx=randommaker(marginright/2-snow[i].size)}
                if (snowingzone==3) {snow[i].posx=randommaker(marginright/2-snow[i].size)+marginright/4}
                if (snowingzone==4) {snow[i].posx=randommaker(marginright/2-snow[i].size)+marginright/2}
                snow[i].posy=randommaker(2*marginbottom-marginbottom-2*snow[i].size)
                snow[i].style.left=snow[i].posx+'px';
                snow[i].style.top=snow[i].posy+'px';
        }
        movesnow()
}

function movesnow() {
        for (i=0;i<=snowmax;i++) {
                crds[i] += x_mv[i];
                snow[i].posy+=snow[i].sink
                snow[i].style.left=snow[i].posx+lftrght[i]*Math.sin(crds[i])+'px';
                snow[i].style.top=snow[i].posy+'px';

                if (snow[i].posy>=marginbottom-2*snow[i].size || parseInt(snow[i].style.left)>(marginright-3*lftrght[i])){
                        if (snowingzone==1) {snow[i].posx=randommaker(marginright-snow[i].size)}
                        if (snowingzone==2) {snow[i].posx=randommaker(marginright/2-snow[i].size)}
                        if (snowingzone==3) {snow[i].posx=randommaker(marginright/2-snow[i].size)+marginright/4}
                        if (snowingzone==4) {snow[i].posx=randommaker(marginright/2-snow[i].size)+marginright/2}
                        snow[i].posy=0
                }
        }
        var timer=setTimeout("movesnow()",50)
}

for (i=0;i<=snowmax;i++) {
        document.write("<span id='s"+i+"' style='position:absolute;top:-"+snowmaxsize+"'>"+snowletter+"</span>")
}
if (browserok) {
        window.onload=initsnow
}
