try {
	// IE6 flicker fix
	document.execCommand("BackgroundImageCache", false, true);
} catch(err) {}


startStack=function() { };  // A stack of functions to run onload/domready

registerOnLoad = function(func) {
   var orgOnLoad = startStack;
   startStack = function () {
      orgOnLoad();
      func();
      return;
   }
}

var ranOnload=false; // Flag to determine if we've ran the starting stack already.

if (document.addEventListener) {
  // Mozilla actually has a DOM READY event.
   document.addEventListener("DOMContentLoaded", function(){if (!ranOnload) {ranOnload=true; startStack();}}, false);
}  else if (document.all && !window.opera) {
  // This is the IE style which exploits a property of the (standards defined) defer attribute
  document.write("<scr" + "ipt id='DOMReady' defer=true " + "src=//:><\/scr" + "ipt>");  
  document.getElementById("DOMReady").onreadystatechange=function(){
    if (this.readyState=="complete"&&(!ranOnload)){
      ranOnload=true;
      startStack();
    }
  }
}

var orgOnLoad=window.onload;
window.onload=function() {
	if (typeof(orgOnLoad)=='function') {
		orgOnLoad();
	}
	if (!ranOnload) {
		ranOnload=true;
		startStack();
	}
}

function did(string) {
	return document.getElementById(string);
}

function xhr()
{
	if ( window.XMLHttpRequest ) {
		request = new XMLHttpRequest();
	} else if ( window.ActiveXObject ) {
		try {
			request = new ActiveXObject( "Msxml2.XMLHTTP" );
		} catch ( error ) {
			try {
				request = new ActiveXObject( "Microsoft.XMLHTTP" );
			} catch ( error2 ) {
				return alert("Fatal Error: No XMLHttp Interface Available");
			}
		}
	} else {
		return alert("Fatal Error: No XMLHttp Interface Available");
	}
	return request;
}

function rpc(path, input)
{
	var requestType = "POST";
	
	if ( !input ) {
		requestType = "GET";
		input = null;
	}
	
	var request = xhr();
	
	request.open(requestType, 'rpc/'+path, false);
	request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");		
	request.send(input);
	eval("var res="+request.responseText);
	return res;
}

function async_rpc(path, callback, input)
{
	this.requestType = "POST";
	this.myCallback = callback;
	
	this.callback = function () {
		if (4 == this.request.readyState && 200 == this.request.status) {
			eval("var res="+this.request.responseText);
			//res.callback(res.retval);
			this.myCallback(res);
		}
	}
	
	this.abort = function (){
		this.request.abort();
	}
	
	if ( !input ) {
		this.requestType = "GET";
		this.input = null;
	} else {
		if ( input instanceof Object ) {
			var newinput = '';
			for ( var prop in input ) {
				if ( input[prop] instanceof Array ) {
					for ( var x=0; x<input[prop].length; x++ ) {
						newinput += prop+'[]='+input[prop][x]+'&';
					}
				} else if ( !(input[prop] instanceof Function) ) {
					newinput += prop+'='+input[prop]+'&';
				}
			}
			input = newinput;
		}
	}
	
	var request = xhr();

	this.request.onreadystatechange = createDelegate(this, 'callback');

	this.request.open(this.requestType, 'rpc/'+path, true);
	this.request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
	this.request.send(input);
}

function activaX(element, url, input)
{
	this.element = domcheck(element);
	this.url = url;
	
	var request = xhr();
	this.request.onreadystatechange = createDelegate(this, 'callback');
	this.request.open("GET", this.url, true);
	this.request.send(null);
	
	this.callback = function() {
		this.element.innerHTML = this.request.responseText;
		this.element.innerHTML = this.element.innerHTML //ie fix
	}
}

function createDelegate(oObject, sMethodName)
{
	return function () {
		return oObject[sMethodName].apply(oObject, arguments);
	};
}

function domcheck(elem)
{
	if ( typeof(elem) == 'object' ) {
		return elem;
	}
	
	return did(elem);
}

function registerEvent(elem, event, callback, capture)
{
	elem = domcheck(elem);
	
	if ( typeof(capture) != 'undefined' ) {
		capture = true;
	}
	
	if ( event == 'allchange' ) {
		registerEvent(elem, 'change', callback, capture);
		registerEvent(elem, 'click', callback, capture);
		registerEvent(elem, 'keyup', callback, capture);
		return;
	}
	
	if ( elem.addEventListener ) {
		elem.addEventListener(event, callback, capture);
	} else {
		elem.attachEvent('on'+event, callback, capture); 
	}
}

function unregisterEvent(elem, event, callback, capture)
{
	elem = domcheck(elem);
	
	if ( typeof(capture) != 'undefined' ) {
		capture = true;
	}
	
	if ( event == 'allchange' ) {
		unregisterEvent(elem, 'change', callback, capture);
		unregisterEvent(elem, 'click', callback, capture);
		unregisterEvent(elem, 'keyup', callback, capture);
		return;
	}
	
	if ( elem.removeEventListener ) {
		elem.removeEventListener(event, callback, capture);
	} else {
		elem.detachEvent('on'+event, callback, capture); 
	}
}

function NewWindow(mypage, myname, w, h, scroll)
{
	var winl = (screen.width - w) / 2;
	var wint = (screen.height - h) / 2;
	winprops = 'height='+h+',width='+w+',top='+wint+',left='+winl+',scrollbars='+scroll+',resizable=yes'
	win = window.open(mypage, myname, winprops)
	if (parseInt(navigator.appVersion) >= 4) { win.window.focus(); }
	return win;
}

function NewFixedWindow(mypage, myname, w, h, scroll)
{
	var winl = (screen.width - w) / 2;
	var wint = (screen.height - h) / 2;
	winprops = 'height='+h+',width='+w+',top='+wint+',left='+winl+',scrollbars='+scroll+',resizable=no'
	win = window.open(mypage, myname, winprops)
	if (parseInt(navigator.appVersion) >= 4) { win.window.focus(); }
	return win;
}

function getNextSibling(elem)
{
	elem = domcheck(elem);
	if ( !elem.nextSibling ) {
		return false;
	}
	if ( elem.nextSibling.nodeName == '#text' ) {
		return getNextSibling(elem.nextSibling);
	}
	return elem.nextSibling;
}

function getPreviousSibling(elem)
{
	elem = domcheck(elem);
	if ( !elem.previousSibling ) {
		return false;
	}
	if ( elem.previousSibling.nodeName == '#text' ) {
		return getPreviousSibling(elem.previousSibling);
	}
	return elem.previousSibling;
}

function createCookie(name, value, days)
{
	if ( days ) {
		var date = new Date();
		date.setTime(date.getTime()+(days*24*60*60*1000));
		var expires = "; expires="+date.toGMTString();
	}
	
	else var expires = "";
	document.cookie = name+"="+value+expires+"; path=/";
}

function hideID(name)
{
	if ( did(name) ) {
		did(name).style.display = 'none';
	}
}

function showID(name)
{
	if( did(name) ) {
		did(name).style.display = '';
	}
}

function toggleDisplayID(name, roll)
{
	if( did(name) ) {
		if(did(name).style.display == 'none') {
			//if(roll == 'updown') {
			//	new Activa_FX('RollDown', name, 200);
			//} else {
				showID(name);
			//}
		} else {
			//if(roll == 'updown') {
			//	new Activa_FX('RollUp', name, 200);
			//} else {
				hideID(name);
			//}
		}
	}
}

function rollDisplayID(name, roll)
{
	var targ = domcheck(name);
	if ( targ.style.display == 'none' ) {
		new Activa_FX('RollDown', targ, 250, function() { did('rollTrigger').innerHTML = 'Close Sign In' });
	} else {
		new Activa_FX('RollUp', targ, 250, function() { did('rollTrigger').innerHTML = 'Sign In Here' });
	}
}

function rollFadeLogin()
{
	new Activa_FX('RollDown', 'side_signin_container', 500, function(){}, 0.349)._height = 170;
	new Activa_FX('FadeOut', 'side_signin_control', 250, function() { new Activa_FX('FadeIn', 'side_signin_form', 250, function() {}, 0.2); }, 0, 0.8);
}

function rollLogin(control, form)
{
	var targControl = domcheck(control);
	var targForm = domcheck(form);
	
	if ( targForm.style.display == 'none' ) {
		new Activa_FX('RollUp', targControl, 250);
		new Activa_FX('RollDown', targForm, 250);
	} else {
		new Activa_FX('RollUp', targForm, 250);
		new Activa_FX('RollDown', targControl, 250);
	}
}

function changeCreditCardCountry()
{
	if ( did('cc_country').value == '213' || did('cc_country').value == 'US' ) {
		showID('cc_state');
		hideID('cc_province');
		hideID('cc_other');
	} else if ( did('cc_country').value == '38' || did('cc_country').value == 'CA' ) {
		hideID('cc_state');
		showID('cc_province');
		hideID('cc_other');
	} else {
		hideID('cc_state');
		hideID('cc_province');
		showID('cc_other');
	}
}

function updateCountry()
{
	if ( did('country').value == '' ) {
		return;
	}
	
	did('state').style.display = 'none';
	did('province').style.display = 'none';
	did('other').style.display = 'none';
	
	if ( did('country').value == 'US' || did('country').value == '213' ) {
		did('state').style.display = '';
	} else if ( did('country').value == 'CA' || did('country').value == '38' ) {
		did('province').style.display = '';
	} else {
		did('other').style.display = '';
	}
}

/*function updateCountry() {
	if ( did('country').value == '' ) {
		return;
	}
	
	did('us_row').style.display = 'none';
	did('can_row').style.display = 'none';
	did('other_row').style.display = 'none';
	
	if ( did('country').value == 'US' || did('country').value == '213' ) {
		did('us_row').style.display = '';
	} else if ( did('country').value == 'CA' || did('country').value == '38' ) {
		did('can_row').style.display = '';
	} else {
		did('other_row').style.display = '';
	}
}*/

function StarRating(department_id, rating) {

	this.click = function(event) {
		this.main_input.value = this.rating;
	}
	
	this.mouseover = function(event) {
		if ( this.isEnabled() ) {
			for ( var i = 2; i <= this.rating; i++ ) {
				this.getSpan(i).className = "star on";
			}
			for ( var i = this.rating + 1; i <= 6; i++ ) {
				this.getSpan(i).className = "star enabled";
			}
		}
	}
	
	this.mouseout = function(event) {
		if ( this.isEnabled() ) {
			for ( var i = 2; i <= 6; i++ ) {
				starRatings["star_rating_" + this.department_id + "_" + i].enable();
			}
		}
	}
	
	this.disable = function() {
		if ( this.rating > 1 ) {
			this.span.className = "star";
		} 
	}
	
	this.enable = function() {
		if ( this.rating > 1 ) {
			if ( this.main_input.value >= this.rating ) {
				this.span.className = "star on";
			} else {
				this.span.className = "star enabled";
			} 
		}
	}
	
	this.toggleEnabled = function() {
		if ( this.isEnabled() ) {
			this.enable();
		} else {
			this.disable();
		}
	}
	
	this.getSpan = function(rating) {
		return did("star_rating_" + this.department_id + "_" + rating);
	}
	
	this.isEnabled = function() {
		return did("department_" + department_id).checked;
	}

	this.department_id = department_id;
	this.rating = rating;
	this.span = this.getSpan(this.rating);
	this.main_input = did("department_rating_" + this.department_id);
	
	registerEvent(this.span, 'click', createDelegate(this, 'click'));
	registerEvent(this.span, 'mouseover', createDelegate(this, 'mouseover'));
	registerEvent(this.span, 'mouseout', createDelegate(this, 'mouseout'));
	registerEvent(did("department_" + this.department_id), 'click', createDelegate(this, 'toggleEnabled'));
}

function moneyFormat(n, decimals, dec_point, thousands_sep) {
	if ( decimals == undefined ) {
		decimals = 2;
	}
	
	if ( dec_point == undefined ) {
		dec_point = '';
	}
	
	if ( thousands_sep == undefined ) {
		thousands_sep = '';
	}
	
	var num = n.toFixed(decimals).toString();
	
	var parts = num.split('.');
	
	var formatted = '';
	
	var count = 0;
	for ( var i=parts[0].length - 1; i > -1; i-- ) {
		var store = parts[0].substr(i, 1);
		if ( count % 3 == 0 && count != 0 ) {
			store += thousands_sep;
		}
		count++;
		formatted = store + formatted;
	}
	
	if ( parts[1] != undefined ) {
		formatted += dec_point + parts[1];
	}
	
	return formatted;
}

var editingOp = 0;
function modifyOp( opId ) {
	if(editingOp == 0 || editingOp == opId) {
		showID('editRow1op'+opId);
		showID('editRow2op'+opId);
		editingOp = opId;
	} else {
		alert("You may only edit one operator at a time.");
	}
}

function changeClientStyle(image, alt)
{
	did('client_style_image').src = 'images/client_styles/'+image;
	did('client_style_image').alt = alt;
}

function allOperators(func, dept_id)
{
	elems = document.getElementsByName('operators['+dept_id+'][]');
	
	if ( func == 'select') {
		for ( var x=0; x<elems.length; x++ ) {
			elems[x].checked = true;
		}
	} else if ( func == 'deselect' ) {
		for ( var x=0; x<elems.length; x++ ) {
			elems[x].checked = false;
		}
	}
	
	return false;
}


function allAdmins(func)
{
	elems = document.getElementsByName('admins[]');
	
	if ( func == 'select') {
		for ( var x=0; x<elems.length; x++ ) {
			elems[x].checked = true;
		}
	} else if ( func == 'deselect' ) {
		for ( var x=0; x<elems.length; x++ ) {
			elems[x].checked = false;
		}
	}
	
	return false;
}

function allSubAdmins(func, dept_id)
{
	elems = document.getElementsByName('subadmins[]');
	
	if ( func == 'select') {
		for ( var x=0; x<elems.length; x++ ) {
			elems[x].checked = true;
		}
	} else if ( func == 'deselect' ) {
		for ( var x=0; x<elems.length; x++ ) {
			elems[x].checked = false;
		}
	}
	
	return false;
}

function chooseAction(action, dept_id)
{
	hideID('department_'+dept_id);
	
	var checked = false;
	var elems = document.getElementsByName('operators['+dept_id+'][]');
	
	for ( var x=0; x<elems.length; x++ ) {
		if ( elems[x].checked ) {
			checked = true;
			break;
		}
	}
	
	if ( !checked ) {
		alert('Please select one or more operator accounts');
		did('action_'+dept_id).selectedIndex = 0;
		return;
	}
	
	switch ( action ) {
		case 'logout':
			var answer = confirm("Are you sure you want to logout the selected operator accounts?");
			if ( answer ) {
				elems = document.getElementsByName('operators['+dept_id+'][]');
				
				for ( x=0; x<elems.length; x++ ) {
					if ( elems[x].checked ) {
						async_rpc('account/operator_logout/'+elems[x].value, function() {});
						did('online_'+dept_id+'_'+elems[x].value).style.display = 'none';
						did('away_'+dept_id+'_'+elems[x].value).style.display = 'none';
						did('offline_'+dept_id+'_'+elems[x].value).style.display = '';
						elems[x].checked = false;
					}
				}
			}

			did('action_'+dept_id).selectedIndex = 0;
			break;
		case 'activate':
			did('form_'+dept_id).submit();
			break;
		case 'deactivate':
			var answer = confirm("Are you sure you want to deactivate the selected operator accounts?");
			if ( answer ) {
				did('form_'+dept_id).submit();
			} else {
				did('action_'+dept_id).selectedIndex = 0;
			}
			break;
		case 'transfer':
			showID('department_'+dept_id);
			break;
		case 'delete':
			var answer = confirm("Are you sure you want to delete the selected operator accounts?");
			if ( answer ) {
				did('form_'+dept_id).submit();
			} else {
				did('action_'+dept_id).selectedIndex = 0;
			}
			break;
	}
}

function chooseAdminAction(action,whichform)
{
	switch ( action ) {
		case 'activate':
			did(whichform).submit();
			break;
		case 'deactivate':
			var answer = confirm("Are you sure you want to deactivate the selected admin accounts?");
			if ( answer ) {
				did(whichform).submit();
			} else {
				did('action_'+whichform).selectedIndex = 0;
			}
			break;
		case 'delete':
			var answer = confirm("Are you sure you want to delete the selected admin accounts?");
			if ( answer ) {
				did(whichform).submit();
			} else {
				did('action_'+whichform).selectedIndex = 0;
			}
			break;
	}
}

function chooseDepartment(new_dept_id, dept_id)
{
	if ( new_dept_id != '' ) {
		var answer = confirm("Are you sure you want to transfer the selected operator accounts to the new department?");
		if ( answer ) {
			did('form_'+dept_id).submit();
		} else {
			did('action_'+dept_id).selectedIndex = 0;
			hideID('department_'+dept_id);
		}
	}
}

function moveOptionHoriz(from, to)
{
	var fromElement = did(from);
	var toElement = did(to);
	
	var selectOptions = new Array();
	var i;
	
	for ( i=0; i<fromElement.length; i++ ) {
		if ( fromElement.options[i].selected == true ) {
			selectOptions.push(i);
			newOption = new Option(fromElement.options[i].text, fromElement.options[i].value);
			toElement.options[toElement.options.length] = newOption;
		}
	}
	
	for ( i=selectOptions.length-1; i>=0; i-- ) {
		fromElement.remove(selectOptions[i]);
	}
}

function moveOptionVert(elem, direction)
{
	var elem = did(elem);
	var currPos;
	var newPos;
	
	if ( elem.selectedIndex != -1 ) {
		currPos = elem.selectedIndex;

		switch ( direction ) {
			case 'up':
				newPos = currPos - 1;
				
				if ( newPos < 0 ) {
					elem.selectedIndex = currPos;
					return false;
				}
				break;
			case 'down':
				newPos = currPos + 1;
				
				if ( newPos >= elem.length ) {
					elem.selectedIndex = currPos;
					return false;
				}
				break;
		}
		
		currOption = elem.options[currPos];
		oldOption = elem.options[newPos];
		
		newCurrOption = new Option(currOption.text, currOption.value);
		newOldOption = new Option(oldOption.text, oldOption.value);
		
		elem.options[currPos] = newOldOption;
		elem.options[newPos] = newCurrOption;
		
		elem.selectedIndex = newPos;
	}
}

function selectAll(form, element)
{
	try {
		if ( form.elements[element] ) {
			var myElement = form.elements[element];
			var count = myElement.options.length;
			
			for ( var i=0; i<count; i++ ) {
				myElement.options[i].selected = true;
			}
		}
	} catch (e) {
		return false;
	}
}

function checkAll(name)
{
	elems = document.getElementsByName(name);
	
	for ( var x=0; x<elems.length; x++ ) {
		elems[x].checked = true;
	}
	
	return false;
}

function uncheckAll(name)
{
	elems = document.getElementsByName(name);
	
	for ( var x=0; x<elems.length; x++ ) {
		elems[x].checked = false;
	}
	
	return false;
}

function passCheck() {
	var pass1 = did('pass1').value;
	var pass2 = did('pass2').value;
	
	var numPat = /\d/;
	var strPat = /([A-Za-z]+)/;
	
	if ( pass1 == '' ) {
		did('pass2').value = '';
		did('pass2').disabled = true;
		pass2 = '';
		
		if ( pass2 != '' ) {
			did('pass_error1').innerHTML = '&laquo; Your password must contain at least 8 characters';
			did('pass_error2').innerHTML = '';
		} else {
			did('pass_error1').innerHTML = '';
			did('pass_error2').innerHTML = '';
		}
	} else {
		if ( pass1.length < 8 ) {
			did('pass_error1').innerHTML = '&laquo; Your password must contain at least 8 characters';
			did('pass_error2').innerHTML = '';
			
			did('pass2').value = '';
			did('pass2').disabled = true;
			pass2 = '';
			
			return
		} else if ( !numPat.test(pass1) ) {
			did('pass_error1').innerHTML = '&laquo; Your password must contain at least 1 number';
			did('pass_error2').innerHTML = '';
			
			did('pass2').value = '';
			did('pass2').disabled = true;
			pass2 = '';
			
			return
		} else if ( !strPat.test(pass1) ) {
			did('pass_error1').innerHTML = '&laquo; Your password must contain at least 1 letter';
			did('pass_error2').innerHTML = '';
			
			did('pass2').value = '';
			did('pass2').disabled = true;
			pass2 = '';
			
			return
		}
		
		did('pass2').disabled = false;
		
		if ( pass2 != pass1 ) {
			did('pass_error1').innerHTML = '';
			did('pass_error2').innerHTML = '&laquo; Your passwords must match';
		} else {
			did('pass_error1').innerHTML = '';
			did('pass_error2').innerHTML = '';
		}
	}
}

/*
	Prototypes - Reserve the area below for prototype methods
*/

String.prototype.toProperCase = function()
{
	return this.toLowerCase().replace(/\w+/g,function(s){
		return s.charAt(0).toUpperCase() + s.substr(1);
	})
}

String.prototype.ltrim = function()
{
	return this.replace(/^\s*/, '');
}

String.prototype.rtrim = function()
{
	return this.replace(/\s*$/, '');
}

String.prototype.trim = function()
{
	return this.rtrim().ltrim();
}

String.prototype.addslashes = function()
{
	var str = this;
	
	str = str.replace(/\'/g,'\\\'');
	str = str.replace(/\"/g,'\\"');
	str = str.replace(/\\/g,'\\\\');
	str = str.replace(/\0/g,'\\0');
	
	return str;
}

String.prototype.stripslashes = function()
{
	var str = this;
	
	str = str.replace(/\\'/g,'\'');
	str = str.replace(/\\"/g,'"');
	str = str.replace(/\\\\/g,'\\');
	str = str.replace(/\\0/g,'\0');
	
	return str;
}

Array.prototype.find = function(targ)
{
	for(x in this) {
		if ( this[x] == targ ) {
			return x;
		}
	}
	return false;
}

Array.prototype.inArray = function(targ)
{
	if( this.find(targ) ) {
		return true;
	} else {
		return false;
	}
}

Array.prototype.remove = function(pos)
{
	if ( pos ) {
		this.splice(pos, 1);
	}
}
var debugMode = false;

function ActivaUpdater( uri, data, handlerFunc, postFunc, target )
{
	var toolkit 		= new nodeHelper();
	var uri 			= uri;
	var data 			= data;
	var handlerFunc 	= handlerFunc;
	var postFunc		= postFunc;
	var xmlBaseTag 		= "lu";
	
	if ( !target ) {
		var target = document;
	} else {
		var target = target;
	}
	
	function getRequester() 
	{	
		if ( window.XMLHttpRequest ) {
			return new XMLHttpRequest();
	
		} else if ( window.ActiveXObject ) {
			try {
				
				return new ActiveXObject( "Msxml2.XMLHTTP" );
				/*axo.preserveWhiteSpace = false;
				return axo;*/
	
			} catch ( error ) {
				try {
					return new ActiveXObject( "Microsoft.XMLHTTP" );
					/*axo.preserveWhiteSpace = false;
					return axo;*/
	
				} catch ( error2 ) {
					return false;
				}
			}
		}
	}
	
	
	function getReadyStateHandler( requester, xmlHandler ) 
	{
		return function () 
		{
			if ( requester.readyState == 4 ) {     
				if ( requester.status == 200 ) {
					try {
						var xml = requester.responseXML;        
						//xml.preserveWhiteSpace = false;
					} catch( e ) {
						if ( debugMode ) {
							alert (requester.responseText);  		
						}   
						
						return false;
					}						
					//alert (requester.responseText);
					xmlHandler( xml );
	
				} else {
					if ( debugMode == true ) {
						alert( "An error occurred: "+requester.status );
					}
				}
			}
		}
	}
	

	function makeXMLRequest() 
	{
		var requester = getRequester();
			
		var handlerFunction = getReadyStateHandler( requester, handleXML );
		
		requester.onreadystatechange = handlerFunction;
		
		requester.open( "POST", uri, true );
		requester.setRequestHeader( "Content-Type", "application/x-www-form-urlencoded" );		
		requester.send( "junk=1"+data );
	}
	
	
	function handleXML( xml )
	{		
		
		var body = xml.getElementsByTagName(xmlBaseTag);
		    
		if ( body.length > 0 ) {
			var nodes = body[0].childNodes;			
			for ( var i=0; i < nodes.length; i++ ) {
				
				if ( nodes[i].nodeType == 1 && nodes[i].getAttribute("id") != null ) {
					var id = nodes[i].getAttribute("id");
	          		
					if ( handlerFunc ) {
						handlerFunc( nodes[i], id );
							
					} else if ( nodes[i].nodeName == "select" ) {
						toolkit.handleSelect( nodes[i], id );
						
					} else if ( nodes[i].nodeName == "optionSelect" ) {
						toolkit.optionSelect( id, nodes[i].nodeType );
					
					} else if ( nodes[i].nodeName == "input" ) {
						toolkit.handleInput(id, nodes[i]);
						
					} else if ( document.all && nodes[i].nodeName == 'tr' ) {
						toolkit.handleTr( id, nodes[i] );
						
					} else {
						element = document.getElementById(id);
											
						if ( nodes[i].getAttribute("append") ) {
							if ( nodes[i].getAttribute("append") == "true" ) {
								// do nothing
							} else {
								while (element.firstChild) {
							  		element.removeChild(element.firstChild);
								}
							}
						} else if ( nodes[i].getAttribute("delete") ) {
							if ( nodes[i].getAttribute("delete") == "true" ) {
								element.parentNode.removeChild(element);
								return;
							}
						} else {

							if ( element ) {
								while (element.firstChild) {
							  		element.removeChild(element.firstChild);
								}
							}
						}
						
						toolkit.walk(nodes[i], element);
					}
					
				} else if ( nodes[i].nodeName == "script" ) {
					toolkit.handleScripts( nodes[i] );
				}	
			}
		}

		if ( postFunc ) {	
			postFunc();	
		}
	}
	
	makeXMLRequest();
}


function nodeHelper()
{	
	this.flatten = function( node )
	{
		var returnStr = "";
		
		if ( node.nodeType == 1 ) {
			switch ( node.nodeName ) {
				case "br":
					returnStr += "<br />";	
					break;
					
				case "img":
					returnStr += '<' + node.nodeName + this.flattenAttributes( node ) + ' />';
					break;
					
				case "input":
					returnStr += '<' + node.nodeName + this.flattenAttributes(node) + ' />';
					break;
					
				default:			
					returnStr += '<' + node.nodeName + this.flattenAttributes( node ) + '>';					
					returnStr += this.flattenChildren( node.childNodes );					
					returnStr += '</' + node.nodeName + '>';
					break;
			}
			
		} else if ( node.nodeType == 3 ) {
			returnStr += node.nodeValue;
		}
		
		return returnStr;
	}
	
	this.flattenChildren = function( nodes )
	{
		var buffer = '';
		
		if ( nodes.length > 0 ) {
			for ( var i=0; i < nodes.length; i++ ) {				
				buffer += this.flatten(nodes[i]);
			}
		}
		
		return buffer;
	}	
	
	this.flattenAttributes = function( node )
	{
		var buffer = "";
	  
		for ( var i=0; i < node.attributes.length; i++ ) {
			var attribute = node.attributes[i];
			buffer += ' '+attribute.name+'="'+attribute.value+'"'
		}
		
		return buffer;
	}
	
	this.copyAttributes = function( source, destination )
	{
		for ( var i=0; i < source.attributes.length; i++ ) {
			var attribute = source.attributes[i];
			destination.setAttribute( attribute.name, attribute.value );
		}
		
		destination.className = source.getAttribute('class');
	}
	
	this.handleTr = function( id, subtree )
	{
		var parentElement = document.getElementById( id );
		
		for ( var i=parentElement.childNodes.length-1; i >= 0; i-- ) {
			parentElement.removeChild( parentElement.childNodes[i] );
		}
	
		for ( var i=0; i < subtree.childNodes.length; i++ ) {
			var cell = document.createElement( subtree.childNodes[i].nodeName );
			
			copyAttributes( subtree.childNodes[i], cell );
			cell.innerHTML = urldecode( flattenChildren( subtree.childNodes[i].childNodes ) );
			parentElement.appendChild(cell);
		}
	}
	
	this.handleInput = function(id, node)
	{
		if ( document.getElementById(id) ) {
			if ( node.firstChild ) {
				document.getElementById(id).value = this.urldecode(node.firstChild.nodeValue);
			} else {
				document.getElementById(id).value = '';
			}
		}
	}
	
	this.handleSelect = function( node, id )
	{
		optNodes = node.getElementsByTagName( 'option' );
		targetBox = document.getElementById( id );
		targetBox.length = 0;
		
		if ( optNodes.length == 0 ) {
			var newOption = document.createElement( 'option' );

			targetBox.appendChild( newOption );
			newOption.value = "";
			newOption.text = "None found...";              		
			targetBox.disabled=true;
			
		} else {
			for ( var x=0; x < optNodes.length; x++ ) {
				var loadingOption = document.createElement( 'option' );

				targetBox.appendChild( loadingOption );
				loadingOption.value = this.urldecode( optNodes[x].getAttribute( "value" ) );
				loadingOption.text = this.urldecode( optNodes[x].firstChild.nodeValue );   
	
				targetBox.disabled=false;	 
			}
		}		
	}	
	
	this.handleScripts = function( node )
	{		
		if ( node.firstChild != null ) {
			var script = node.firstChild.nodeValue;
					
			if ( script != null ) {
				scriptArr = script.split( ";" );
				for ( var i=0; i < scriptArr.length - 1; i++ ) {
					eval( scriptArr[i]+";" );
				}
			}
		}

	}

	this.urlencode = function( str ) 
	{
		return escape( str ).replace( /[+]/g, '%2B' );
	}

 	this.urldecode = function( str ) 
 	{
		return unescape( str ).replace( /[+]/g, ' ' );
	}
	
	this.optionSelect = function( id, value )
	{
		var box = document.getElementById( id );
		var boxSize = box.options.length;
		
		for ( var i=0; i < boxSize; i++ ) {
			if (  box.options[i].value == value ) {
				box.options[i].selected = true;
			}
		}
	}
	

	this.compressData = function( field, value ) 
	{
		return "&"+field+"="+this.urlencode( value );
	}
	
	this.walk = function(node, element)
	{
		var nodes = node.childNodes;
		
		for ( var i=0; i < nodes.length; i++ ) {
			if ( nodes[i].nodeType != 3 ) {
				if ( nodes[i].nodeName == "a" ) {
					var attribs = "";
					for ( var j=0; j < nodes[i].attributes.length; j++ ) {
						attribs += " "+nodes[i].attributes[j].name+"='"+this.urldecode(nodes[i].attributes[j].value)+"'";
					}
					var ele = "<"+nodes[i].nodeName+attribs+"></"+nodes[i].nodeName+">";
					
					try {
						var newnode = document.createElement(ele);
						}
					catch ( err ) {
						var newnode = document.createElement(nodes[i].nodeName);
					}
				} else {
					var newnode = document.createElement(nodes[i].nodeName);
				}
				
				for ( var j=0; j < nodes[i].attributes.length; j++ ) {
					if ( nodes[i].attributes[j].name == 'class' ) {
						newnode.className = this.urldecode(nodes[i].attributes[j].value);
					} else if ( nodes[i].attributes[j].name == 'onchange' ) {
						newnode.onchange = this.urldecode(nodes[i].attributes[j].value);
					} else if ( nodes[i].attributes[j].name == 'colspan' ) {
						newnode.colSpan = this.urldecode(nodes[i].attributes[j].value);
					} else {
						newnode.setAttribute(nodes[i].attributes[j].name, this.urldecode(nodes[i].attributes[j].value));
					}
				}
				
				element.appendChild(newnode);
				
				/* For some reason, IE doesn't respect the checked attribute until
				   after you append the node, so the current workaround is to loop
				   through it at again and check it manually.
				 */
				if ( nodes[i].attributes ) {
					for ( var j=0; j < nodes[i].attributes.length; j++ ) {
						if ( nodes[i].attributes[j].name == 'onclick' && typeof(attachEvent) != 'undefined' && nodes[i].nodeName == 'img' ) {
							eval("var callback = function() { "+nodes[i].attributes[j].value+"};");
							newnode.attachEvent('onclick', callback)
							
						} else if ( nodes[i].attributes[j].name == 'checked' ) {
							newnode.checked = true;
						} else if ( nodes[i].attributes[j].name == 'style' ) {
							var parts = new String(this.urldecode(nodes[i].attributes[j].value)).split(';');
							
							for ( var n=0; n<parts.length; n++ ) {
								var vals = parts[n].split(':');
								
								if ( vals.length == 2 ) {
									eval('newnode.style.'+vals[0].replace("-", "_")+' = "'+trim(vals[1])+'";');
								}
							}
							
							/*for ( z in parts ) {
								console.log(z);
								var vals = z.split(':');
								console.log(vals);
								eval('newnode.style.'+z+' = "'+parts[z]+'";');
							}*/
							//newnode.style = this.urldecode(nodes[i].attributes[j].value);
						}
					}
				}
				
				if ( nodes[i].childNodes.length > 0 ) {
					if ( nodes[i].nodeName == 'table' ) {
						if ( nodes[i].childNodes.length > 0 ) {
							var hasTbody = false;
							for ( var n = 0; n < nodes[i].childNodes.length; n++ ) {
								if ( nodes[i].childNodes[n].nodeName == 'tbody' ) {
									hasTbody = true;
									
									break;
								}
							}
							
							if ( !hasTbody ) {
								var tbody = document.createElement('TBODY');
									
								newnode.appendChild(tbody);
								newnode = tbody;
							}
						}
					}
					this.walk(nodes[i], newnode);
				}
			} else {
				if ( element ) {
					var newnode = document.createTextNode(this.urldecode(nodes[i].nodeValue));
					element.appendChild(newnode);
				}
			}
		}
	}
}

nh = new nodeHelper();
/*
	@elem: Field to validate, required
	@message: Message to display upon failure, required
	@type: Method of validation to use, defaults to 'text'
	@match: What the field should match during certain types of validation, defaults to null
	@required: Whether a value is required or not, defaults to true
	@alert_type: inline or popup, defaults to false and uses ActivaValidate alert handling
	@message_box: Element to display message in for inline alerts, defaults to false
*/
function ActivaRule(elem, message, type, match, required, alert_type, message_box)
{
	this.elem = elem;
	this.dom_elem = null;
	this.message = message;
	this.type = type;
	this.match = match;
	this.required = required;
	this.alert_type = alert_type;
	this.message_box = message_box;
	
	this.validate = function() {
		this.dom_elem = domcheck(this.elem);
		
		if ( this.dom_elem.type != 'select-multiple' ) {
			// Begin by trimming the value
			this.dom_elem.value = this.trim(this.dom_elem.value);
		}
		
		if ( !this.required ) {
			if ( !this.dom_elem.value ) {
				return true;
			}
		}
		
		switch ( this.type ) {
			// Field must have any kind of value
			case "text":
				if ( this.dom_elem.type == 'radio' ) {
					var rgroup = document.getElementsByName(this.dom_elem.name);
					for ( var i=0; i<rgroup.length; i++ ) {
						if ( rgroup[i].checked ) {
							return true;
						}
					}
					return false;
				} else if ( !this.dom_elem.value ) {
					return false;
				}
				break;
			// Field must be checked
			case "checkbox":
				if ( !this.dom_elem.checked ) {
					return false;
				}
				break;
			// Field must match email regex
			case "email":
				var reg = /^[A-Za-z0-9._%+-]+@(?:[A-Za-z0-9-]+\.)+[A-Za-z]{2,4}$/;

				if ( !reg.test(this.dom_elem.value) ) {
					return false;
				}
				break;
			// Field must match phone regex
			case "phone":
				this.dom_elem.value = this.trim(this.dom_elem.value);
				this.dom_elem.value = this.trimChar(this.dom_elem.value, /\s/);
				this.dom_elem.value = this.trimChar(this.dom_elem.value, /-/);
				this.dom_elem.value = this.trimChar(this.dom_elem.value, /\(/);
				this.dom_elem.value = this.trimChar(this.dom_elem.value, /\)/);

				var reg = /^([\d]{10})$/;

				if ( !reg.test(this.dom_elem.value) ) {
					return false;
				}
				break;
			// Field must match intl phone regex
			case "intl_phone":
				this.dom_elem.value = this.trim(this.dom_elem.value);
				this.dom_elem.value = this.trimChar(this.dom_elem.value, /\s/);
				this.dom_elem.value = this.trimChar(this.dom_elem.value, /-/);
				this.dom_elem.value = this.trimChar(this.dom_elem.value, /\(/);
				this.dom_elem.value = this.trimChar(this.dom_elem.value, /\)/);
				
				var reg = /^((\+)?[\d]{10,16})$/;

				if ( !reg.test(this.dom_elem.value) ) {
					return false;
				}
				break;
			// Field must match US zip code regex
			case 'us_zip':
				this.dom_elem.value = this.trim(this.dom_elem.value);
				this.dom_elem.value = this.trimChar(this.dom_elem.value, /\s/);

				var reg = /^((\d){5})((-(\d){4}){1}$|$)/;

				if ( !reg.test(this.dom_elem.value) ) {
					return false;
				}
				break;
			// Field must match Canadian zip code regex
			case 'can_zip':
				this.dom_elem.value = this.trim(this.dom_elem.value);

				var reg = /^([A-Za-z0-9]{3})((\s|-){1})([A-Za-z0-9]{3})$/;

				if ( !reg.test(this.dom_elem.value) ) {
					return false;
				}
				break;
			// Field must be checked
			case "checkbox":
				if ( !this.dom_elem.checked ) {
					return false;
				}
				break;
			// Field must have at least one item in selectbox
			case 'transferbox':
				if ( this.dom_elem.options.length == 0 ) {
					return false;
				}
				break;
			// Field must contain an equal or lesser amount of characters
			case "shorter":
				if ( parseInt(this.dom_elem.value.length) > parseInt(this.match) ) {
					return false;
				}
				break;
			// Field must contain an equal or greater amount of characters
			case "longer":
				if ( parseInt(this.dom_elem.value.length) < parseInt(this.match) ) {
					return false;
				}
				break;
			// Field must contain amount of characters within valid range
			case "between":
				var ranges = this.match.split('-');
				var min = parseFloat(ranges[0]);
				var max = parseFloat(ranges[1]);
				
				if ( isNaN(parseFloat(this.dom_elem.value.length)) || parseFloat(this.dom_elem.value.length) > max || parseFloat(this.dom_elem.value.length) < min ) {
					return false;
				}
				break;
			// Field must match amount of characters
			case "length":
				if ( parseInt(this.dom_elem.value.length) != parseInt(this.match) ) {
					return false;
				}
				break;
			// Field must be less than or equal to requirement
			case "less":
				var max = parseFloat(this.match);
				
				if ( isNaN(parseFloat(this.dom_elem.value)) || parseFloat(this.dom_elem.value) > max ) {
					return false;
				}
				break;
			// Field must be greater than or equal to requirement
			case "greater":
				var min = parseFloat(this.match);
				
				if ( isNaN(parseFloat(this.dom_elem.value)) || parseFloat(this.dom_elem.value) < min ) {
					return false;
				}
				break;
			// Field must contain value within valid range
			case "range":
				var ranges = this.match.split('-');
				var min = parseFloat(ranges[0]);
				var max = parseFloat(ranges[1]);
				
				if ( isNaN(parseFloat(this.dom_elem.value)) || parseFloat(this.dom_elem.value) > max || parseFloat(this.dom_elem.value) < min ) {
					return false;
				}
				break;
			// Field must match passed regex
			case "match":
				if(this.dom_elem.type == 'radio'){
					var rgroup = document.getElementsByName(this.dom_elem.name);
					for(var i = 0; i < rgroup.length; i++){
						if(rgroup[i].checked && this.match == rgroup[i].value){ return true; }
					}
					return false;
				} else {
					if ( !this.match.test(this.dom_elem.value) ) {
						return false;
					}
				}
				break;
			// Field must match exactly
			case 'equals':
				if ( this.dom_elem.value != this.match ) {
					return false;
				}
				break;
				
			case 'notequal':
				if ( this.dom_elem.value == this.match ) {
					return false;
				}
				break;
		}
		
		return true;
	}
	
	// Must pass default ActivaValidate message box, in case rule does not have its own message box
	this.alert = function(message_box) {
		switch ( this.alert_type ) {
			case "inline":
				if ( this.message_box ) {
					this.message_box.innerHTML = this.message;
					this.message_box.style.display = '';
				} else {
					message_box.innerHTML = this.message;
					message_box.style.display = '';
				}
				break;
			case "popup":
			case "alert":
				alert(this.message);
				break;
		}
	}
	
	this.ltrim = function(string)
	{
		return string.replace(/^\s*/, '');
	}
	
	this.rtrim = function(string)
	{
		return string.replace(/\s*$/, '');
	}
	
	this.trim = function(string)
	{
		if ( typeof(string) == 'undefined' ) {
			return false;
		}
		return this.rtrim(this.ltrim(string));
	}
	
	this.trimChar = function(str, reg) {
		var reg = reg;
		while (reg.test(str)) {
			str = str.replace(reg, '');
		}
		
		return str;
	}
}

/*
	@form: ActivaForm that this applies to
	@elem: Field determining conditional outcome
	@matches: Array of possible values of elem
*/
function ActivaConditional(form, elem, matches, target)
{
	this.form = form;
	this.elem = elem;
	this.dom_elem = null;
	this.matches = matches;
	
	if ( typeof(target) == 'undefined' ) {
		this.target = 'id';
	} else {
		this.target = target;
	}
	
	this.rules = new Object();
	/*
		@match: Value in matches array that you want to assign this rule to
	*/
	this.addRule = function(condition, elem, message, type, match, required, alert_type, message_box) {
		if ( typeof(type) == 'undefined' ) {
			type = 'text';
		}
			
		if ( typeof(match) == 'undefined' ) {
			match = '';
		}
		
		if ( typeof(required) == 'undefined' ) {
			required = true;
		}
		
		if ( typeof(alert_type) == 'undefined' ) {
			alert_type = false;
		}
		
		if ( typeof(message_box) == 'undefined' ) {
			message_box = false;
		}
		
		var rule = new ActivaRule(elem, message, type, match, required, alert_type, message_box);
		
		if ( !this.rules[condition] ) {
			this.rules[condition] = new Array();
		}
		this.rules[condition].push(rule);
		return rule;
	}
	
	this.validate = function(rules) {
		switch ( this.target ) {
			case 'id':
				this.dom_elem = domcheck(this.elem);
				var value = this.dom_elem.value;
				break;
			case 'radio':
				for ( var i=0; i<document.forms[this.form.form.id][this.elem].length; i++)  {
					if ( document.forms[this.form.form.id][this.elem][i].checked) {
						var value = document.forms[this.form.form.id][this.elem][i].value;
					}
				}
				break
		}
		
		if ( this.rules[value] ) {
			for ( var x=0; x<this.rules[value].length; x++ ) {
				if ( !this.rules[value][x].validate() ) {
					this.message = this.rules[value][x].message;
					this.dom_elem = this.rules[value][x].dom_elem;
					
					return false; 
				}
			}
		} else if ( this.rules['cond_default'] ) {
			for ( var x=0; x<this.rules['cond_default'].length; x++ ) {
				if ( !this.rules['cond_default'][x].validate() ) {
					this.message = this.rules['cond_default'][x].message;
					this.dom_elem = this.rules['cond_default'][x].dom_elem;
					
					return false; 
				}
			}
		}
		
		return true;
	}
	
	this.reset = function() {
		this.form.rules = new Array();
		this.form.rules = this.rules;
	}
}

/*
	@form: Form that will be validated
*/
function ActivaForm(form)
{
	this.form = form;
	this.rules = new Array();
	this.extra = new Array();
	this.active = true;
	
	// Manually add onload event so it can grab reference to DOM object, and not a string
	registerEvent(window, 'load', createDelegate(this, 'load'));

	this.load = function() {
		this.form = domcheck(this.form);
	}
	
	this.addRule = function(elem, message, type, match, required, alert_type, message_box) {
		if ( typeof(type) == 'undefined' ) {
			type = 'text';
		}
			
		if ( typeof(match) == 'undefined' ) {
			match = '';
		}
		
		if ( typeof(required) == 'undefined' ) {
			required = true;
		}
		
		if ( typeof(alert_type) == 'undefined' ) {
			alert_type = false;
		}
		
		if ( typeof(message_box) == 'undefined' ) {
			message_box = false;
		}
		
		var rule = new ActivaRule(elem, message, type, match, required, alert_type, message_box);
		this.rules.push(rule);
		return rule;
	}
	
	this.addConditional = function(elem, matches, target) {
		var conditional = new ActivaConditional(this, elem, matches, target);
		this.rules.push(conditional);
		
		return this.rules[this.rules.length-1];
	}
	
	this.addExtra = function(func) {
		this.extra.push(func);
	}
}

/*
	@form: ActivaForm, required
	@alert_type: Style of alerts, inline or popup, defaults to popup
	@message_box: Element to display message in for inline alerts, defaults to null
*/
function ActivaValidate(form, alert_type, message_box)
{
	this.form = form;
	
	if ( typeof(alert_type) == 'undefined' ) {
		alert_type = 'popup';
	}
		
	if ( typeof(message_box) == 'undefined' ) {
		message_box = false;
	} else {
		this.message_box = domcheck(message_box);
	}
	
	this.alert_type = alert_type;
	
	// Manually add onsubmit event so that form HTML does not require it
	registerEvent(this.form.form, 'submit', createDelegate(this, 'validate'));
	
	this.validate = function(e) {
		if ( !this.form.active ) {
			return true;
		}
		
		// Always reset message box to nothing
		if ( this.message_box ) {
			this.message_box.style.display = 'none';
			this.message_box.innerHTML = '';
		}
		
		// Validate rules
		for ( var i=0; i<this.form.rules.length; i++ ) {
			var rule = this.form.rules[i];
			
			if ( !rule.validate() ) {
				if ( rule.alert_type ) {
					// ActivaRule has override alert handling
					rule.alert(this.message_box);
				} else {
					// ActivaValidate is handling the alert
					switch ( this.alert_type ) {
						case "inline":
							this.message_box.innerHTML = rule.message;
							this.message_box.style.display = '';
							break;
						case "popup":
						case "alert":
							alert(rule.message);
							break;
					}
				}
				
				if ( typeof(rule.dom_elem) != 'undefined' && rule.dom_elem ) { 
					rule.dom_elem.focus();
				}
				
				// Prevents form from posting (required when you manually register onsubmit event)
				if ( e.preventDefault ) {
					e.preventDefault();
				}
				
				return false;
			}
		}
		
		// Validate extra functions
		for ( var i=0; i<this.form.extra.length; i++ ) {
			var result = this.form.extra[i].call();
			
			if ( !result ) {
				// Prevents form from posting (required when you manually register onsubmit event)
				if ( e.preventDefault ) {
					e.preventDefault();
				}
				
				return false;
			}
		}
		
		// Form has successfully validated
		return true;
	}
}
var currentEffects = new Array();

function Activa_FX(engine, target, duration, endCallback, startAt, endAt) {
		target = domcheck(target);
		if( currentEffects.inArray(target) ) {
			return;
		} else {
			currentEffects.push(target);
		}
		if ( typeof(endCallback) != 'undefined' ) {
			this.endCallback = endCallback;
		}
		if ( typeof(startAt) == 'undefined' ) {
			startAt = 0;
		}
		if ( typeof(endAt) == 'undefined' ) {
			endAt = 1;
		}
		
		this.startAt = startAt;
		this.endAt = endAt;
		
		this.resolution = 30;
		this.target = target;
		this.duration = typeof(duration) == 'undefined' ? 1000 : duration;
		this.start = new Date().getTime();
		this.end = this.start + this.duration;
		this.engine = this[engine];
		this.engine();
		
		this.timer = window.setTimeout(createDelegate(this, 'framecalc'), this.resolution);
	
	this.framecalc = function() {
			
		var time = new Date().getTime();
		if ( time > this.end ) {
			time = this.end;
		}
		this.engine.frame.call(this, startAt + ((time - this.start) / (this.end - this.start) * (endAt-startAt)) );
		if ( time < this.end ) {
			this.timer = window.setTimeout(createDelegate(this, 'framecalc'), this.resolution);
		} else {
			this.engine.end.call(this);
			currentEffects.remove(currentEffects.find(this.target));
			if ( typeof(this.endCallback) != 'undefined' ) {
				this.endCallback();
			}
		}
	}
}

Activa_FX.prototype.startRoll = function() {
	this.width = this.target.clientWidth;
	this._width = this.target.style.width;
	this.height = this.target.clientHeight;
	this._height = this.target.style.height;
	
	this._overflow = this.target.style.overflow;
	this.target.style.overflow = 'hidden';
	for(x=0; x<this.target.childNodes.length; x++) {
		if ( this.target.childNodes[x].nodeType == 1 ) {
			this.target.childNodes[x]._width = this.target.childNodes[x].style.width;
			if ( this.target.childNodes[x].clientWidth != 0 ) {
				this.target.childNodes[x].style.width = this.target.childNodes[x].clientWidth + 'px';
			}
		}
	}
	
}

Activa_FX.prototype.endRoll = function() {
	this.target.style.width = this._width;
	this.target.style.height = this._height;
	this.target.style.overflow = this._overflow;
	for(x=0; x<this.target.childNodes.length; x++) {
		if ( this.target.childNodes[x].nodeType == 1 && this.target.childNodes[x]._width) {
			this.target.childNodes[x].style.width = this.target.childNodes[x]._width;
		}
	}
	
	
}

Activa_FX.prototype.RollInLeft = function() {
	this.startRoll();
}

Activa_FX.prototype.RollInLeft.frame = function(scale) {
	this.target.style.width = Math.round(( (1 - scale) *  this.width)) + 'px';
}

Activa_FX.prototype.RollInLeft.end = function() {
	this.target.style.display = 'none';
	this.endRoll();
}

Activa_FX.prototype.RollUp = function() {
	this.startRoll();
}

Activa_FX.prototype.RollUp.frame = function(scale) {
	this.target.style.height = Math.round(( (1 - scale) *  this.height)) + 'px';
}

Activa_FX.prototype.RollUp.end = function() {
	this.target.style.display = 'none';
	this.endRoll();
}

Activa_FX.prototype.RollDown = function() {

	this.target.style.display = '';
	if ( this.startAt == 0 ) {
		this.target.style.height = '0px';
	}
	this.startRoll();
}

Activa_FX.prototype.RollDown.frame = function(scale) {
	this.target.style.height = Math.round(( scale * this._height)) + 'px';
}

Activa_FX.prototype.RollDown.end = function() {
	this.endRoll();
}

Activa_FX.prototype.FadeOut = function() {
	
}

Activa_FX.prototype.FadeOut.frame = function(scale) {
	this.target.style.opacity = 1 - scale;
	
	this.target.style.filter = 'alpha(opacity='+((1 - scale) * 100)+')';
}

Activa_FX.prototype.FadeOut.end = function() {
	this.target.style.display = 'none';
}

Activa_FX.prototype.FadeIn = function() {
	this.target.style.opacity = 0;
	this.target.style.filter = 'alpha(opacity=0)';
	this.target.style.display = '';
}

Activa_FX.prototype.FadeIn.frame = function(scale) {
	this.target.style.opacity = scale;
	this.target.style.filter = 'alpha(opacity='+(scale * 100)+')';
}

Activa_FX.prototype.FadeIn.end = function() {
	
}

function draggable(elem, handle) {
	this.elem = domcheck(elem);
	if ( typeof(handle) != 'undefined' ) {
		this.handle = domcheck(handle);
	} else {
		this.handle = domcheck(elem);
	}
	this.dragging = false;
	registerEvent(this.handle, 'mousedown', createDelegate(this, 'mousedown'));
	this.offsetLeft = 0;
	this.offsetTop = 0;
	
	this.mousedown = function(e) {
		this.offsetLeft = e.clientX - getX(this.elem);
		this.offsetTop = e.clientY - getY(this.elem) + 10;
		this.dragging = this.elem.cloneNode(true);
		this.dragging.style.position = 'absolute';
		this.dragging.style.top = (e.clientY - this.offsetTop)+'px';
		this.dragging.style.left = (e.clientX - this.offsetLeft)+'px';
		this.dragging.style.width = this.elem.clientWidth+'px';
		this.dragging.style.height = this.elem.clientHeight+'px';
		this.dragging.style.opacity = 0.5;
		this.elem.parentNode.appendChild(this.dragging);
		this.mousemovedelegate = createDelegate(this, 'mousemove');
		this.mouseupdelegate = createDelegate(this, 'mouseup');
		registerEvent(document, 'mousemove', this.mousemovedelegate);
		registerEvent(document, 'mouseup', this.mouseupdelegate);
		if ( e.preventDefault ) {
			e.preventDefault();
		}
		document.body.focus();
		if ( this.start ) {
			this.start();
		}
		return false;
	}
	
	this.mousemove = function(e) {
		this.dragging.style.top = (e.clientY-this.offsetTop)+'px';
		this.dragging.style.left = (e.clientX-this.offsetLeft)+'px';
		if ( this.moved ) {
			this.moved(e);
		}
	}
	
	this.mouseup = function(e) {
		if ( this.stop ) {
			this.stop();
		}
		unregisterEvent(document, 'mousemove', this.mousemovedelegate);
		unregisterEvent(document, 'mouseup', this.mouseupdelegate);
		this.dragging.parentNode.removeChild(this.dragging);
	}
	
}

function getX(elem) {
	if ( elem.offsetParent ) {
		return getX(elem.offsetParent) + elem.offsetLeft;
	} else {
		return elem.offsetLeft;
	}
}

function getY(elem) {
	if ( elem.offsetParent ) {
		return getY(elem.offsetParent) + elem.offsetTop;
	} else {
		return elem.offsetTop;
	}
}
// Correctly handle PNG transparency in Win IE 5.5 or higher.
// http://homepage.ntlworld.com/bobosola. Updated 31-May-2004

// *************************************************
// This extended version includes imagemap
// and input image functionality.
// It also requires a 1px transparent GIF
// *************************************************
var arVersion = navigator.appVersion.split("MSIE")
var version = parseFloat(arVersion[1])

function correctPNG() {
	if ((version >= 5.5) && (document.body.filters))
	{
		for(var i=0; i<document.images.length; i++)
		{
			var img = document.images[i]
			if ( img.id == 'progress_bar' ) {
				return;
			} else {
				var imgName = img.src.toUpperCase()
				if (imgName.substring(imgName.length-3, imgName.length) == "PNG")
				{
					var imgID = (img.id) ? "id='" + img.id + "' " : ""
					var imgClass = (img.className) ? "class='" + img.className + "' " : ""
					var imgTitle = (img.title) ? "title='" + img.title + "' " : "title='" + img.alt + "' "
					var imgStyle = "display:inline-block;" + img.style.cssText
					if (img.align == "left") imgStyle = "float:left;" + imgStyle
					if (img.align == "right") imgStyle = "float:right;" + imgStyle
					if (img.parentElement.href) imgStyle = "cursor:hand;" + imgStyle
					var strNewHTML = "<span " + imgID + imgClass + imgTitle
					+ " style=\"" + "width:" + img.width + "px; height:" + img.height + "px;" + imgStyle + ";"
					+ "filter:progid:DXImageTransform.Microsoft.AlphaImageLoader"
					+ "(src=\'" + img.src + "\', sizingMethod='scale');\"></span>"
					img.outerHTML = strNewHTML
					i = i-1
				}
			}
		}
	}
}


var _gat=new Object({c:"length",lb:"4.3",m:"cookie",b:undefined,cb:function(d,a){this.zb=d;this.Nb=a},r:"__utma=",W:"__utmb=",ma:"__utmc=",Ta:"__utmk=",na:"__utmv=",oa:"__utmx=",Sa:"GASO=",X:"__utmz=",lc:"http://www.google-analytics.com/__utm.gif",mc:"https://ssl.google-analytics.com/__utm.gif",Wa:"utmcid=",Ya:"utmcsr=",$a:"utmgclid=",Ua:"utmccn=",Xa:"utmcmd=",Za:"utmctr=",Va:"utmcct=",Hb:false,_gasoDomain:undefined,_gasoCPath:undefined,e:window,a:document,k:navigator,t:function(d){var a=1,c=0,h,
o;if(!_gat.q(d)){a=0;for(h=d[_gat.c]-1;h>=0;h--){o=d.charCodeAt(h);a=(a<<6&268435455)+o+(o<<14);c=a&266338304;a=c!=0?a^c>>21:a}}return a},C:function(d,a,c){var h=_gat,o="-",k,l,s=h.q;if(!s(d)&&!s(a)&&!s(c)){k=h.w(d,a);if(k>-1){l=d.indexOf(c,k);if(l<0)l=d[h.c];o=h.F(d,k+h.w(a,"=")+1,l)}}return o},Ea:function(d){var a=false,c=0,h,o;if(!_gat.q(d)){a=true;for(h=0;h<d[_gat.c];h++){o=d.charAt(h);c+="."==o?1:0;a=a&&c<=1&&(0==h&&"-"==o||_gat.P(".0123456789",o))}}return a},d:function(d,a){var c=encodeURIComponent;
return c instanceof Function?(a?encodeURI(d):c(d)):escape(d)},J:function(d,a){var c=decodeURIComponent,h;d=d.split("+").join(" ");if(c instanceof Function)try{h=a?decodeURI(d):c(d)}catch(o){h=unescape(d)}else h=unescape(d);return h},Db:function(d){return d&&d.hash?_gat.F(d.href,_gat.w(d.href,"#")):""},q:function(d){return _gat.b==d||"-"==d||""==d},Lb:function(d){return d[_gat.c]>0&&_gat.P(" \n\r\t",d)},P:function(d,a){return _gat.w(d,a)>-1},h:function(d,a){d[d[_gat.c]]=a},T:function(d){return d.toLowerCase()},
z:function(d,a){return d.split(a)},w:function(d,a){return d.indexOf(a)},F:function(d,a,c){c=_gat.b==c?d[_gat.c]:c;return d.substring(a,c)},uc:function(){var d=_gat.b,a=window;if(a&&a.gaGlobal&&a.gaGlobal.hid)d=a.gaGlobal.hid;else{d=Math.round(Math.random()*2147483647);a.gaGlobal=a.gaGlobal?a.gaGlobal:{};a.gaGlobal.hid=d}return d},wa:function(){return Math.round(Math.random()*2147483647)},Gc:function(){return(_gat.wa()^_gat.vc())*2147483647},vc:function(){var d=_gat.k,a=_gat.a,c=_gat.e,h=a[_gat.m]?
a[_gat.m]:"",o=c.history[_gat.c],k,l,s=[d.appName,d.version,d.language?d.language:d.browserLanguage,d.platform,d.userAgent,d.javaEnabled()?1:0].join("");if(c.screen)s+=c.screen.width+"x"+c.screen.height+c.screen.colorDepth;else if(c.java){l=java.awt.Toolkit.getDefaultToolkit().getScreenSize();s+=l.screen.width+"x"+l.screen.height}s+=h;s+=a.referrer?a.referrer:"";k=s[_gat.c];while(o>0)s+=o--^k++;return _gat.t(s)}});_gat.hc=function(){var d=this,a=_gat.cb;function c(h,o){return new a(h,o)}d.db="utm_campaign";d.eb="utm_content";d.fb="utm_id";d.gb="utm_medium";d.hb="utm_nooverride";d.ib="utm_source";d.jb="utm_term";d.kb="gclid";d.pa=0;d.I=0;d.wb="15768000";d.Tb="1800";d.ea=[];d.ga=[];d.Ic="cse";d.Gb="q";d.ab="google";d.fa=[c(d.ab,d.Gb),c("yahoo","p"),c("msn","q"),c("aol","query"),c("aol","encquery"),c("lycos","query"),c("ask","q"),c("altavista","q"),c("netscape","query"),c("cnn","query"),c("looksmart","qt"),c("about",
"terms"),c("mamma","query"),c("alltheweb","q"),c("gigablast","q"),c("voila","rdata"),c("virgilio","qs"),c("live","q"),c("baidu","wd"),c("alice","qs"),c("yandex","text"),c("najdi","q"),c("aol","q"),c("club-internet","query"),c("mama","query"),c("seznam","q"),c("search","q"),c("wp","szukaj"),c("onet","qt"),c("netsprint","q"),c("google.interia","q"),c("szukacz","q"),c("yam","k"),c("pchome","q"),c("kvasir","searchExpr"),c("sesam","q"),c("ozu","q"),c("terra","query"),c("nostrum","query"),c("mynet","q"),
c("ekolay","q"),c("search.ilse","search_for")];d.B=undefined;d.Kb=false;d.p="/";d.ha=100;d.Da="/__utm.gif";d.ta=1;d.ua=1;d.G="|";d.sa=1;d.qa=1;d.pb=1;d.g="auto";d.D=1;d.Ga=1000;d.Yc=10;d.nc=10;d.Zc=0.2};_gat.Y=function(d,a){var c,h,o,k,l,s,q,f=this,n=_gat,w=n.q,x=n.c,g,z=a;f.a=d;function B(i){var b=i instanceof Array?i.join("."):"";return w(b)?"-":b}function A(i,b){var e=[],j;if(!w(i)){e=n.z(i,".");if(b)for(j=0;j<e[x];j++)if(!n.Ea(e[j]))e[j]="-"}return e}function p(){return u(63072000000)}function u(i){var b=new Date,e=new Date(b.getTime()+i);return"expires="+e.toGMTString()+"; "}function m(i,b){f.a[n.m]=i+"; path="+z.p+"; "+b+f.Cc()}function r(i,b,e){var j=f.V,t,v;for(t=0;t<j[x];t++){v=j[t][0];
v+=w(b)?b:b+j[t][4];j[t][2](n.C(i,v,e))}}f.Jb=function(){return n.b==g||g==f.t()};f.Ba=function(){return l?l:"-"};f.Wb=function(i){l=i};f.Ma=function(i){g=n.Ea(i)?i*1:"-"};f.Aa=function(){return B(s)};f.Na=function(i){s=A(i)};f.Hc=function(){return g?g:"-"};f.Cc=function(){return w(z.g)?"":"domain="+z.g+";"};f.ya=function(){return B(c)};f.Ub=function(i){c=A(i,1)};f.K=function(){return B(h)};f.La=function(i){h=A(i,1)};f.za=function(){return B(o)};f.Vb=function(i){o=A(i,1)};f.Ca=function(){return B(k)};
f.Xb=function(i){k=A(i);for(var b=0;b<k[x];b++)if(b<4&&!n.Ea(k[b]))k[b]="-"};f.Dc=function(){return q};f.Uc=function(i){q=i};f.pc=function(){c=[];h=[];o=[];k=[];l=n.b;s=[];g=n.b};f.t=function(){var i="",b;for(b=0;b<f.V[x];b++)i+=f.V[b][1]();return n.t(i)};f.Ha=function(i){var b=f.a[n.m],e=false;if(b){r(b,i,";");f.Ma(f.t());e=true}return e};f.Rc=function(i){r(i,"","&");f.Ma(n.C(i,n.Ta,"&"))};f.Wc=function(){var i=f.V,b=[],e;for(e=0;e<i[x];e++)n.h(b,i[e][0]+i[e][1]());n.h(b,n.Ta+f.t());return b.join("&")};
f.bd=function(i,b){var e=f.V,j=z.p,t;f.Ha(i);z.p=b;for(t=0;t<e[x];t++)if(!w(e[t][1]()))e[t][3]();z.p=j};f.dc=function(){m(n.r+f.ya(),p())};f.Pa=function(){m(n.W+f.K(),u(z.Tb*1000))};f.ec=function(){m(n.ma+f.za(),"")};f.Ra=function(){m(n.X+f.Ca(),u(z.wb*1000))};f.fc=function(){m(n.oa+f.Ba(),p())};f.Qa=function(){m(n.na+f.Aa(),p())};f.cd=function(){m(n.Sa+f.Dc(),"")};f.V=[[n.r,f.ya,f.Ub,f.dc,"."],[n.W,f.K,f.La,f.Pa,""],[n.ma,f.za,f.Vb,f.ec,""],[n.oa,f.Ba,f.Wb,f.fc,""],[n.X,f.Ca,f.Xb,f.Ra,"."],[n.na,
f.Aa,f.Na,f.Qa,"."]]};_gat.jc=function(d){var a=this,c=_gat,h=d,o,k=function(l){var s=(new Date).getTime(),q;q=(s-l[3])*(h.Zc/1000);if(q>=1){l[2]=Math.min(Math.floor(l[2]*1+q),h.nc);l[3]=s}return l};a.O=function(l,s,q,f,n,w,x){var g,z=h.D,B=q.location;if(!o)o=new c.Y(q,h);o.Ha(f);g=c.z(o.K(),".");if(g[1]<500||n){if(w)g=k(g);if(n||!w||g[2]>=1){if(!n&&w)g[2]=g[2]*1-1;g[1]=g[1]*1+1;l="?utmwv="+_gat.lb+"&utmn="+c.wa()+(c.q(B.hostname)?"":"&utmhn="+c.d(B.hostname))+(h.ha==100?"":"&utmsp="+c.d(h.ha))+l;if(0==z||2==z){var A=
new Image(1,1);A.src=h.Da+l;var p=2==z?function(){}:x||function(){};A.onload=p}if(1==z||2==z){var u=new Image(1,1);u.src=("https:"==B.protocol?c.mc:c.lc)+l+"&utmac="+s+"&utmcc="+a.wc(q,f);u.onload=x||function(){}}}}o.La(g.join("."));o.Pa()};a.wc=function(l,s){var q=[],f=[c.r,c.X,c.na,c.oa],n,w=l[c.m],x;for(n=0;n<f[c.c];n++){x=c.C(w,f[n]+s,";");if(!c.q(x))c.h(q,f[n]+x+";")}return c.d(q.join("+"))}};_gat.i=function(){this.la=[]};_gat.i.bb=function(d,a,c,h,o,k){var l=this;l.cc=d;l.Oa=a;l.L=c;l.sb=h;l.Pb=o;l.Qb=k};_gat.i.bb.prototype.S=function(){var d=this,a=_gat.d;return"&"+["utmt=item","utmtid="+a(d.cc),"utmipc="+a(d.Oa),"utmipn="+a(d.L),"utmiva="+a(d.sb),"utmipr="+a(d.Pb),"utmiqt="+a(d.Qb)].join("&")};_gat.i.$=function(d,a,c,h,o,k,l,s){var q=this;q.v=d;q.ob=a;q.bc=c;q.ac=h;q.Yb=o;q.ub=k;q.$b=l;q.xb=s;q.ca=[]};_gat.i.$.prototype.mb=function(d,a,c,h,o){var k=this,l=k.Eb(d),s=k.v,q=_gat;if(q.b==
l)q.h(k.ca,new q.i.bb(s,d,a,c,h,o));else{l.cc=s;l.Oa=d;l.L=a;l.sb=c;l.Pb=h;l.Qb=o}};_gat.i.$.prototype.Eb=function(d){var a,c=this.ca,h;for(h=0;h<c[_gat.c];h++)a=d==c[h].Oa?c[h]:a;return a};_gat.i.$.prototype.S=function(){var d=this,a=_gat.d;return"&"+["utmt=tran","utmtid="+a(d.v),"utmtst="+a(d.ob),"utmtto="+a(d.bc),"utmttx="+a(d.ac),"utmtsp="+a(d.Yb),"utmtci="+a(d.ub),"utmtrg="+a(d.$b),"utmtco="+a(d.xb)].join("&")};_gat.i.prototype.nb=function(d,a,c,h,o,k,l,s){var q=this,f=_gat,n=q.xa(d);if(f.b==
n){n=new f.i.$(d,a,c,h,o,k,l,s);f.h(q.la,n)}else{n.ob=a;n.bc=c;n.ac=h;n.Yb=o;n.ub=k;n.$b=l;n.xb=s}return n};_gat.i.prototype.xa=function(d){var a,c=this.la,h;for(h=0;h<c[_gat.c];h++)a=d==c[h].v?c[h]:a;return a};_gat.gc=function(d){var a=this,c="-",h=_gat,o=d;a.Ja=screen;a.qb=!self.screen&&self.java?java.awt.Toolkit.getDefaultToolkit():h.b;a.a=document;a.e=window;a.k=navigator;a.Ka=c;a.Sb=c;a.tb=c;a.Ob=c;a.Mb=1;a.Bb=c;function k(){var l,s,q,f,n="ShockwaveFlash",w="$version",x=a.k?a.k.plugins:h.b;if(x&&x[h.c]>0)for(l=0;l<x[h.c]&&!q;l++){s=x[l];if(h.P(s.name,"Shockwave Flash"))q=h.z(s.description,"Shockwave Flash ")[1]}else{n=n+"."+n;try{f=new ActiveXObject(n+".7");q=f.GetVariable(w)}catch(g){}if(!q)try{f=
new ActiveXObject(n+".6");q="WIN 6,0,21,0";f.AllowScriptAccess="always";q=f.GetVariable(w)}catch(z){}if(!q)try{f=new ActiveXObject(n);q=f.GetVariable(w)}catch(z){}if(q){q=h.z(h.z(q," ")[1],",");q=q[0]+"."+q[1]+" r"+q[2]}}return q?q:c}a.xc=function(){var l;if(self.screen){a.Ka=a.Ja.width+"x"+a.Ja.height;a.Sb=a.Ja.colorDepth+"-bit"}else if(a.qb)try{l=a.qb.getScreenSize();a.Ka=l.width+"x"+l.height}catch(s){}a.Ob=h.T(a.k&&a.k.language?a.k.language:(a.k&&a.k.browserLanguage?a.k.browserLanguage:c));a.Mb=
a.k&&a.k.javaEnabled()?1:0;a.Bb=o?k():c;a.tb=h.d(a.a.characterSet?a.a.characterSet:(a.a.charset?a.a.charset:c))};a.Xc=function(){return"&"+["utmcs="+h.d(a.tb),"utmsr="+a.Ka,"utmsc="+a.Sb,"utmul="+a.Ob,"utmje="+a.Mb,"utmfl="+h.d(a.Bb)].join("&")}};_gat.n=function(d,a,c,h,o){var k=this,l=_gat,s=l.q,q=l.b,f=l.P,n=l.C,w=l.T,x=l.z,g=l.c;k.a=a;k.f=d;k.Rb=c;k.ja=h;k.o=o;function z(p){return s(p)||"0"==p||!f(p,"://")}function B(p){var u="";p=w(x(p,"://")[1]);if(f(p,"/")){p=x(p,"/")[1];if(f(p,"?"))u=x(p,"?")[0]}return u}function A(p){var u="";u=w(x(p,"://")[1]);if(f(u,"/"))u=x(u,"/")[0];return u}k.Fc=function(p){var u=k.Fb(),m=k.o;return new l.n.s(n(p,m.fb+"=","&"),n(p,m.ib+"=","&"),n(p,m.kb+"=","&"),k.ba(p,m.db,"(not set)"),k.ba(p,m.gb,"(not set)"),
k.ba(p,m.jb,u&&!s(u.R)?l.J(u.R):q),k.ba(p,m.eb,q))};k.Ib=function(p){var u=A(p),m=B(p);if(f(u,k.o.ab)){p=x(p,"?").join("&");if(f(p,"&"+k.o.Gb+"="))if(m==k.o.Ic)return true}return false};k.Fb=function(){var p,u,m=k.Rb,r,i,b=k.o.fa;if(z(m)||k.Ib(m))return;p=A(m);for(r=0;r<b[g];r++){i=b[r];if(f(p,w(i.zb))){m=x(m,"?").join("&");if(f(m,"&"+i.Nb+"=")){u=x(m,"&"+i.Nb+"=")[1];if(f(u,"&"))u=x(u,"&")[0];return new l.n.s(q,i.zb,q,"(organic)","organic",u,q)}}}};k.ba=function(p,u,m){var r=n(p,u+"=","&"),i=!s(r)?
l.J(r):(!s(m)?m:"-");return i};k.Nc=function(p){var u=k.o.ea,m=false,r,i;if(p&&"organic"==p.da){r=w(l.J(p.R));for(i=0;i<u[g];i++)m=m||w(u[i])==r}return m};k.Ec=function(){var p="",u="",m=k.Rb;if(z(m)||k.Ib(m))return;p=w(x(m,"://")[1]);if(f(p,"/")){u=l.F(p,l.w(p,"/"));if(f(u,"?"))u=x(u,"?")[0];p=x(p,"/")[0]}if(0==l.w(p,"www."))p=l.F(p,4);return new l.n.s(q,p,q,"(referral)","referral",q,u)};k.sc=function(p){var u="";if(k.o.pa){u=l.Db(p);u=""!=u?u+"&":u}u+=p.search;return u};k.zc=function(){return new l.n.s(q,
"(direct)",q,"(direct)","(none)",q,q)};k.Oc=function(p){var u=false,m,r,i=k.o.ga;if(p&&"referral"==p.da){m=w(l.d(p.ia));for(r=0;r<i[g];r++)u=u||f(m,w(i[r]))}return u};k.U=function(p){return q!=p&&p.Fa()};k.yc=function(p,u){var m="",r="-",i,b,e=0,j,t,v=k.f;if(!p)return"";t=k.a[l.m]?k.a[l.m]:"";m=k.sc(k.a.location);if(k.o.I&&p.Jb()){r=p.Ca();if(!s(r)&&!f(r,";")){p.Ra();return""}}r=n(t,l.X+v+".",";");i=k.Fc(m);if(k.U(i)){b=n(m,k.o.hb+"=","&");if("1"==b&&!s(r))return""}if(!k.U(i)){i=k.Fb();if(!s(r)&&
k.Nc(i))return""}if(!k.U(i)&&u){i=k.Ec();if(!s(r)&&k.Oc(i))return""}if(!k.U(i))if(s(r)&&u)i=k.zc();if(!k.U(i))return"";if(!s(r)){var y=x(r,"."),E=new l.n.s;E.Cb(y.slice(4).join("."));j=w(E.ka())==w(i.ka());e=y[3]*1}if(!j||u){var F=n(t,l.r+v+".",";"),I=F.lastIndexOf("."),G=I>9?l.F(F,I+1)*1:0;e++;G=0==G?1:G;p.Xb([v,k.ja,G,e,i.ka()].join("."));p.Ra();return"&utmcn=1"}else return"&utmcr=1"}};_gat.n.s=function(d,a,c,h,o,k,l){var s=this;s.v=d;s.ia=a;s.ra=c;s.L=h;s.da=o;s.R=k;s.vb=l};_gat.n.s.prototype.ka=
function(){var d=this,a=_gat,c=[],h=[[a.Wa,d.v],[a.Ya,d.ia],[a.$a,d.ra],[a.Ua,d.L],[a.Xa,d.da],[a.Za,d.R],[a.Va,d.vb]],o,k;if(d.Fa())for(o=0;o<h[a.c];o++)if(!a.q(h[o][1])){k=h[o][1].split("+").join("%20");k=k.split(" ").join("%20");a.h(c,h[o][0]+k)}return c.join("|")};_gat.n.s.prototype.Fa=function(){var d=this,a=_gat.q;return!(a(d.v)&&a(d.ia)&&a(d.ra))};_gat.n.s.prototype.Cb=function(d){var a=this,c=_gat,h=function(o){return c.J(c.C(d,o,"|"))};a.v=h(c.Wa);a.ia=h(c.Ya);a.ra=h(c.$a);a.L=h(c.Ua);a.da=
h(c.Xa);a.R=h(c.Za);a.vb=h(c.Va)};_gat.Z=function(){var d=this,a=_gat,c={},h="k",o="v",k=[h,o],l="(",s=")",q="*",f="!",n="'",w={};w[n]="'0";w[s]="'1";w[q]="'2";w[f]="'3";var x=1;function g(m,r,i,b){if(a.b==c[m])c[m]={};if(a.b==c[m][r])c[m][r]=[];c[m][r][i]=b}function z(m,r,i){return a.b!=c[m]&&a.b!=c[m][r]?c[m][r][i]:a.b}function B(m,r){if(a.b!=c[m]&&a.b!=c[m][r]){c[m][r]=a.b;var i=true,b;for(b=0;b<k[a.c];b++)if(a.b!=c[m][k[b]]){i=false;break}if(i)c[m]=a.b}}function A(m){var r="",i=false,b,e;for(b=0;b<k[a.c];b++){e=m[k[b]];if(a.b!=
e){if(i)r+=k[b];r+=p(e);i=false}else i=true}return r}function p(m){var r=[],i,b;for(b=0;b<m[a.c];b++)if(a.b!=m[b]){i="";if(b!=x&&a.b==m[b-1]){i+=b.toString();i+=f}i+=u(m[b]);a.h(r,i)}return l+r.join(q)+s}function u(m){var r="",i,b,e;for(i=0;i<m[a.c];i++){b=m.charAt(i);e=w[b];r+=a.b!=e?e:b}return r}d.Kc=function(m){return a.b!=c[m]};d.N=function(){var m=[],r;for(r in c)if(a.b!=c[r])a.h(m,r.toString()+A(c[r]));return m.join("")};d.Sc=function(m){if(m==a.b)return d.N();var r=[m.N()],i;for(i in c)if(a.b!=
c[i]&&!m.Kc(i))a.h(r,i.toString()+A(c[i]));return r.join("")};d._setKey=function(m,r,i){if(typeof i!="string")return false;g(m,h,r,i);return true};d._setValue=function(m,r,i){if(typeof i!="number"&&(a.b==Number||!(i instanceof Number)))return false;if(Math.round(i)!=i||i==NaN||i==Infinity)return false;g(m,o,r,i.toString());return true};d._getKey=function(m,r){return z(m,h,r)};d._getValue=function(m,r){return z(m,o,r)};d._clearKey=function(m){B(m,h)};d._clearValue=function(m){B(m,o)}};_gat.ic=function(d,a){var c=this;c.jd=a;c.Pc=d;c._trackEvent=function(h,o,k){return a._trackEvent(c.Pc,h,o,k)}};_gat.kc=function(d){var a=this,c=_gat,h=c.b,o=c.q,k=c.w,l=c.F,s=c.C,q=c.P,f=c.z,n="location",w=c.c,x=h,g=new c.hc,z=false;a.a=document;a.e=window;a.ja=Math.round((new Date).getTime()/1000);a.H=d;a.yb=a.a.referrer;a.va=h;a.j=h;a.A=h;a.M=false;a.aa=h;a.rb="";a.l=h;a.Ab=h;a.f=h;a.u=h;function B(){if("auto"==g.g){var b=a.a.domain;if("www."==l(b,0,4))b=l(b,4);g.g=b}g.g=c.T(g.g)}function A(){var b=g.g,e=k(b,"www.google.")*k(b,".google.")*k(b,"google.");return e||"/"!=g.p||k(b,"google.org")>-1}function p(b,
e,j){if(o(b)||o(e)||o(j))return"-";var t=s(b,c.r+a.f+".",e),v;if(!o(t)){v=f(t,".");v[5]=v[5]?v[5]*1+1:1;v[3]=v[4];v[4]=j;t=v.join(".")}return t}function u(){return"file:"!=a.a[n].protocol&&A()}function m(b){if(!b||""==b)return"";while(c.Lb(b.charAt(0)))b=l(b,1);while(c.Lb(b.charAt(b[w]-1)))b=l(b,0,b[w]-1);return b}function r(b,e,j){if(!o(b())){e(c.J(b()));if(!q(b(),";"))j()}}function i(b){var e,j=""!=b&&a.a[n].host!=b;if(j)for(e=0;e<g.B[w];e++)j=j&&k(c.T(b),c.T(g.B[e]))==-1;return j}a.Bc=function(){if(!g.g||
""==g.g||"none"==g.g){g.g="";return 1}B();return g.pb?c.t(g.g):1};a.tc=function(b,e){if(o(b))b="-";else{e+=g.p&&"/"!=g.p?g.p:"";var j=k(b,e);b=j>=0&&j<=8?"0":("["==b.charAt(0)&&"]"==b.charAt(b[w]-1)?"-":b)}return b};a.Ia=function(b){var e="",j=a.a;e+=a.aa?a.aa.Xc():"";e+=g.qa?a.rb:"";e+=g.ta&&!o(j.title)?"&utmdt="+c.d(j.title):"";e+="&utmhid="+c.uc()+"&utmr="+a.va+"&utmp="+a.Tc(b);return e};a.Tc=function(b){var e=a.a[n];b=h!=b&&""!=b?c.d(b,true):c.d(e.pathname+unescape(e.search),true);return b};a.$c=
function(b){if(a.Q()){var e="";if(a.l!=h&&a.l.N().length>0)e+="&utme="+c.d(a.l.N());e+=a.Ia(b);x.O(e,a.H,a.a,a.f)}};a.qc=function(){var b=new c.Y(a.a,g);return b.Ha(a.f)?b.Wc():h};a._getLinkerUrl=function(b,e){var j=f(b,"#"),t=b,v=a.qc();if(v)if(e&&1>=j[w])t+="#"+v;else if(!e||1>=j[w])if(1>=j[w])t+=(q(b,"?")?"&":"?")+v;else t=j[0]+(q(b,"?")?"&":"?")+v+"#"+j[1];return t};a.Zb=function(){var b;if(a.A&&a.A[w]>=10&&!q(a.A,"=")){a.u.Uc(a.A);a.u.cd();c._gasoDomain=g.g;c._gasoCPath=g.p;b=a.a.createElement("script");
b.type="text/javascript";b.id="_gasojs";b.src="https://www.google.com/analytics/reporting/overlay_js?gaso="+a.A+"&"+c.wa();a.a.getElementsByTagName("head")[0].appendChild(b)}};a.Jc=function(){var b=a.a[c.m],e=a.ja,j=a.u,t=a.f+"",v=a.e,y=v?v.gaGlobal:h,E,F=q(b,c.r+t+"."),I=q(b,c.W+t),G=q(b,c.ma+t),C,D=[],H="",K=false,J;b=o(b)?"":b;if(g.I){E=c.Db(a.a[n]);if(g.pa&&!o(E))H=E+"&";H+=a.a[n].search;if(!o(H)&&q(H,c.r)){j.Rc(H);if(!j.Jb())j.pc();C=j.ya()}r(j.Ba,j.Wb,j.fc);r(j.Aa,j.Na,j.Qa)}if(!o(C))if(o(j.K())||
o(j.za())){C=p(H,"&",e);a.M=true}else{D=f(j.K(),".");t=D[0]}else if(F)if(!I||!G){C=p(b,";",e);a.M=true}else{C=s(b,c.r+t+".",";");D=f(s(b,c.W+t,";"),".")}else{C=[t,c.Gc(),e,e,e,1].join(".");a.M=true;K=true}C=f(C,".");if(v&&y&&y.dh==t){C[4]=y.sid?y.sid:C[4];if(K){C[3]=y.sid?y.sid:C[4];if(y.vid){J=f(y.vid,".");C[1]=J[0];C[2]=J[1]}}}j.Ub(C.join("."));D[0]=t;D[1]=D[1]?D[1]:0;D[2]=undefined!=D[2]?D[2]:g.Yc;D[3]=D[3]?D[3]:C[4];j.La(D.join("."));j.Vb(t);if(!o(j.Hc()))j.Ma(j.t());j.dc();j.Pa();j.ec()};a.Lc=
function(){x=new c.jc(g)};a._initData=function(){var b;if(!z){a.Lc();a.f=a.Bc();a.u=new c.Y(a.a,g)}if(u())a.Jc();if(!z){if(u()){a.va=a.tc(a.Ac(),a.a.domain);if(g.sa){a.aa=new c.gc(g.ua);a.aa.xc()}if(g.qa){b=new c.n(a.f,a.a,a.va,a.ja,g);a.rb=b.yc(a.u,a.M)}}a.l=new c.Z;a.Ab=new c.Z;z=true}if(!c.Hb)a.Mc()};a._visitCode=function(){a._initData();var b=s(a.a[c.m],c.r+a.f+".",";"),e=f(b,".");return e[w]<4?"":e[1]};a._cookiePathCopy=function(b){a._initData();if(a.u)a.u.bd(a.f,b)};a.Mc=function(){var b=a.a[n].hash,
e;e=b&&""!=b&&0==k(b,"#gaso=")?s(b,"gaso=","&"):s(a.a[c.m],c.Sa,";");if(e[w]>=10){a.A=e;if(a.e.addEventListener)a.e.addEventListener("load",a.Zb,false);else a.e.attachEvent("onload",a.Zb)}c.Hb=true};a.Q=function(){return a._visitCode()%10000<g.ha*100};a.Vc=function(){var b,e,j=a.a.links;if(!g.Kb){var t=a.a.domain;if("www."==l(t,0,4))t=l(t,4);g.B.push("."+t)}for(b=0;b<j[w]&&(g.Ga==-1||b<g.Ga);b++){e=j[b];if(i(e.host))if(!e.gatcOnclick){e.gatcOnclick=e.onclick?e.onclick:a.Qc;e.onclick=function(v){var y=
!this.target||this.target=="_self"||this.target=="_top"||this.target=="_parent";y=y&&!a.oc(v);a.ad(v,this,y);return y?false:(this.gatcOnclick?this.gatcOnclick(v):true)}}}};a.Qc=function(){};a._trackPageview=function(b){if(u()){a._initData();if(g.B)a.Vc();a.$c(b);a.M=false}};a._trackTrans=function(){var b=a.f,e=[],j,t,v,y;a._initData();if(a.j&&a.Q()){for(j=0;j<a.j.la[w];j++){t=a.j.la[j];c.h(e,t.S());for(v=0;v<t.ca[w];v++)c.h(e,t.ca[v].S())}for(y=0;y<e[w];y++)x.O(e[y],a.H,a.a,b,true)}};a._setTrans=
function(){var b=a.a,e,j,t,v,y=b.getElementById?b.getElementById("utmtrans"):(b.utmform&&b.utmform.utmtrans?b.utmform.utmtrans:h);a._initData();if(y&&y.value){a.j=new c.i;v=f(y.value,"UTM:");g.G=!g.G||""==g.G?"|":g.G;for(e=0;e<v[w];e++){v[e]=m(v[e]);j=f(v[e],g.G);for(t=0;t<j[w];t++)j[t]=m(j[t]);if("T"==j[0])a._addTrans(j[1],j[2],j[3],j[4],j[5],j[6],j[7],j[8]);else if("I"==j[0])a._addItem(j[1],j[2],j[3],j[4],j[5],j[6])}}};a._addTrans=function(b,e,j,t,v,y,E,F){a.j=a.j?a.j:new c.i;return a.j.nb(b,e,
j,t,v,y,E,F)};a._addItem=function(b,e,j,t,v,y){var E;a.j=a.j?a.j:new c.i;E=a.j.xa(b);if(!E)E=a._addTrans(b,"","","","","","","");E.mb(e,j,t,v,y)};a._setVar=function(b){if(b&&""!=b&&A()){a._initData();var e=new c.Y(a.a,g),j=a.f;e.Na(j+"."+c.d(b));e.Qa();if(a.Q())x.O("&utmt=var",a.H,a.a,a.f)}};a._link=function(b,e){if(g.I&&b){a._initData();a.a[n].href=a._getLinkerUrl(b,e)}};a._linkByPost=function(b,e){if(g.I&&b&&b.action){a._initData();b.action=a._getLinkerUrl(b.action,e)}};a._setXKey=function(b,e,
j){a.l._setKey(b,e,j)};a._setXValue=function(b,e,j){a.l._setValue(b,e,j)};a._getXKey=function(b,e){return a.l._getKey(b,e)};a._getXValue=function(b,e){return a.l.getValue(b,e)};a._clearXKey=function(b){a.l._clearKey(b)};a._clearXValue=function(b){a.l._clearValue(b)};a._createXObj=function(){a._initData();return new c.Z};a._sendXEvent=function(b){var e="";a._initData();if(a.Q()){e+="&utmt=event&utme="+c.d(a.l.Sc(b))+a.Ia();x.O(e,a.H,a.a,a.f,false,true)}};a._createEventTracker=function(b){a._initData();
return new c.ic(b,a)};a._trackEvent=function(b,e,j,t){var v=true,y=a.Ab;if(h!=b&&h!=e&&""!=b&&""!=e){y._clearKey(5);y._clearValue(5);v=y._setKey(5,1,b)?v:false;v=y._setKey(5,2,e)?v:false;v=h==j||y._setKey(5,3,j)?v:false;v=h==t||y._setValue(5,1,t)?v:false;if(v)a._sendXEvent(y)}else v=false;return v};a.ad=function(b,e,j){a._initData();if(a.Q()){var t=new c.Z;t._setKey(6,1,e.href);var v=j?function(){a.rc(b,e)}:undefined;x.O("&utmt=event&utme="+c.d(t.N())+a.Ia(),a.H,a.a,a.f,false,true,v)}};a.rc=function(b,
e){if(!b)b=a.e.event;var j=true;if(e.gatcOnclick)j=e.gatcOnclick(b);if(j||typeof j=="undefined")if(!e.target||e.target=="_self")a.e.location=e.href;else if(e.target=="_top")a.e.top.document.location=e.href;else if(e.target=="_parent")a.e.parent.document.location=e.href};a.oc=function(b){if(!b)b=a.e.event;var e=b.shiftKey||b.ctrlKey||b.altKey;if(!e)if(b.modifiers&&a.e.Event)e=b.modifiers&a.e.Event.CONTROL_MASK||b.modifiers&a.e.Event.SHIFT_MASK||b.modifiers&a.e.Event.ALT_MASK;return e};a._setDomainName=
function(b){g.g=b};a.dd=function(){return g.g};a._addOrganic=function(b,e){c.h(g.fa,new c.cb(b,e))};a._clearOrganic=function(){g.fa=[]};a.hd=function(){return g.fa};a._addIgnoredOrganic=function(b){c.h(g.ea,b)};a._clearIgnoredOrganic=function(){g.ea=[]};a.ed=function(){return g.ea};a._addIgnoredRef=function(b){c.h(g.ga,b)};a._clearIgnoredRef=function(){g.ga=[]};a.fd=function(){return g.ga};a._setAllowHash=function(b){g.pb=b?1:0};a._setCampaignTrack=function(b){g.qa=b?1:0};a._setClientInfo=function(b){g.sa=
b?1:0};a._getClientInfo=function(){return g.sa};a._setCookiePath=function(b){g.p=b};a._setTransactionDelim=function(b){g.G=b};a._setCookieTimeout=function(b){g.wb=b};a._setDetectFlash=function(b){g.ua=b?1:0};a._getDetectFlash=function(){return g.ua};a._setDetectTitle=function(b){g.ta=b?1:0};a._getDetectTitle=function(){return g.ta};a._setLocalGifPath=function(b){g.Da=b};a._getLocalGifPath=function(){return g.Da};a._setLocalServerMode=function(){g.D=0};a._setRemoteServerMode=function(){g.D=1};a._setLocalRemoteServerMode=
function(){g.D=2};a.gd=function(){return g.D};a._getServiceMode=function(){return g.D};a._setSampleRate=function(b){g.ha=b};a._setSessionTimeout=function(b){g.Tb=b};a._setAllowLinker=function(b){g.I=b?1:0};a._setAllowAnchor=function(b){g.pa=b?1:0};a._setCampNameKey=function(b){g.db=b};a._setCampContentKey=function(b){g.eb=b};a._setCampIdKey=function(b){g.fb=b};a._setCampMediumKey=function(b){g.gb=b};a._setCampNOKey=function(b){g.hb=b};a._setCampSourceKey=function(b){g.ib=b};a._setCampTermKey=function(b){g.jb=
b};a._setCampCIdKey=function(b){g.kb=b};a._getAccount=function(){return a.H};a._getVersion=function(){return _gat.lb};a.kd=function(b){g.B=[];if(b)g.B=b};a.md=function(b){g.Kb=b};a.ld=function(b){g.Ga=b};a._setReferrerOverride=function(b){a.yb=b};a.Ac=function(){return a.yb}};_gat._getTracker=function(d){var a=new _gat.kc(d);return a};


//v1.7
// Flash Player Version Detection
// Detect Client Browser type
// Copyright 2005-2007 Adobe Systems Incorporated.  All rights reserved.
var isIE  = (navigator.appVersion.indexOf("MSIE") != -1) ? true : false;
var isWin = (navigator.appVersion.toLowerCase().indexOf("win") != -1) ? true : false;
var isOpera = (navigator.userAgent.indexOf("Opera") != -1) ? true : false;

function ControlVersion()
{
	var version;
	var axo;
	var e;

	// NOTE : new ActiveXObject(strFoo) throws an exception if strFoo isn't in the registry

	try {
		// version will be set for 7.X or greater players
		axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7");
		version = axo.GetVariable("$version");
	} catch (e) {
	}

	if (!version)
	{
		try {
			// version will be set for 6.X players only
			axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6");
			
			// installed player is some revision of 6.0
			// GetVariable("$version") crashes for versions 6.0.22 through 6.0.29,
			// so we have to be careful. 
			
			// default to the first public version
			version = "WIN 6,0,21,0";

			// throws if AllowScripAccess does not exist (introduced in 6.0r47)		
			axo.AllowScriptAccess = "always";

			// safe to call for 6.0r47 or greater
			version = axo.GetVariable("$version");

		} catch (e) {
		}
	}

	if (!version)
	{
		try {
			// version will be set for 4.X or 5.X player
			axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.3");
			version = axo.GetVariable("$version");
		} catch (e) {
		}
	}

	if (!version)
	{
		try {
			// version will be set for 3.X player
			axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.3");
			version = "WIN 3,0,18,0";
		} catch (e) {
		}
	}

	if (!version)
	{
		try {
			// version will be set for 2.X player
			axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash");
			version = "WIN 2,0,0,11";
		} catch (e) {
			version = -1;
		}
	}
	
	return version;
}

// JavaScript helper required to detect Flash Player PlugIn version information
function GetSwfVer(){
	// NS/Opera version >= 3 check for Flash plugin in plugin array
	var flashVer = -1;
	
	if (navigator.plugins != null && navigator.plugins.length > 0) {
		if (navigator.plugins["Shockwave Flash 2.0"] || navigator.plugins["Shockwave Flash"]) {
			var swVer2 = navigator.plugins["Shockwave Flash 2.0"] ? " 2.0" : "";
			var flashDescription = navigator.plugins["Shockwave Flash" + swVer2].description;
			var descArray = flashDescription.split(" ");
			var tempArrayMajor = descArray[2].split(".");			
			var versionMajor = tempArrayMajor[0];
			var versionMinor = tempArrayMajor[1];
			var versionRevision = descArray[3];
			if (versionRevision == "") {
				versionRevision = descArray[4];
			}
			if (versionRevision[0] == "d") {
				versionRevision = versionRevision.substring(1);
			} else if (versionRevision[0] == "r") {
				versionRevision = versionRevision.substring(1);
				if (versionRevision.indexOf("d") > 0) {
					versionRevision = versionRevision.substring(0, versionRevision.indexOf("d"));
				}
			}
			var flashVer = versionMajor + "." + versionMinor + "." + versionRevision;
		}
	}
	// MSN/WebTV 2.6 supports Flash 4
	else if (navigator.userAgent.toLowerCase().indexOf("webtv/2.6") != -1) flashVer = 4;
	// WebTV 2.5 supports Flash 3
	else if (navigator.userAgent.toLowerCase().indexOf("webtv/2.5") != -1) flashVer = 3;
	// older WebTV supports Flash 2
	else if (navigator.userAgent.toLowerCase().indexOf("webtv") != -1) flashVer = 2;
	else if ( isIE && isWin && !isOpera ) {
		flashVer = ControlVersion();
	}	
	return flashVer;
}

// When called with reqMajorVer, reqMinorVer, reqRevision returns true if that version or greater is available
function DetectFlashVer(reqMajorVer, reqMinorVer, reqRevision)
{
	versionStr = GetSwfVer();
	if (versionStr == -1 ) {
		return false;
	} else if (versionStr != 0) {
		if(isIE && isWin && !isOpera) {
			// Given "WIN 2,0,0,11"
			tempArray         = versionStr.split(" "); 	// ["WIN", "2,0,0,11"]
			tempString        = tempArray[1];			// "2,0,0,11"
			versionArray      = tempString.split(",");	// ['2', '0', '0', '11']
		} else {
			versionArray      = versionStr.split(".");
		}
		var versionMajor      = versionArray[0];
		var versionMinor      = versionArray[1];
		var versionRevision   = versionArray[2];

        	// is the major.revision >= requested major.revision AND the minor version >= requested minor
		if (versionMajor > parseFloat(reqMajorVer)) {
			return true;
		} else if (versionMajor == parseFloat(reqMajorVer)) {
			if (versionMinor > parseFloat(reqMinorVer))
				return true;
			else if (versionMinor == parseFloat(reqMinorVer)) {
				if (versionRevision >= parseFloat(reqRevision))
					return true;
			}
		}
		return false;
	}
}

function AC_AddExtension(src, ext)
{
  if (src.indexOf('?') != -1)
    return src.replace(/\?/, ext+'?'); 
  else
    return src + ext;
}

function AC_Generateobj(objAttrs, params, embedAttrs) 
{ 
  var str = '';
  if (isIE && isWin && !isOpera)
  {
    str += '<object ';
    for (var i in objAttrs)
    {
      str += i + '="' + objAttrs[i] + '" ';
    }
    str += '>';
    for (var i in params)
    {
      str += '<param name="' + i + '" value="' + params[i] + '" /> ';
    }
    str += '</object>';
  }
  else
  {
    str += '<embed ';
    for (var i in embedAttrs)
    {
      str += i + '="' + embedAttrs[i] + '" ';
    }
    str += '> </embed>';
  }

  document.write(str);
}

function AC_FL_RunContent(){
  var ret = 
    AC_GetArgs
    (  arguments, ".swf", "movie", "clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"
     , "application/x-shockwave-flash"
    );
  AC_Generateobj(ret.objAttrs, ret.params, ret.embedAttrs);
}

function AC_SW_RunContent(){
  var ret = 
    AC_GetArgs
    (  arguments, ".dcr", "src", "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
     , null
    );
  AC_Generateobj(ret.objAttrs, ret.params, ret.embedAttrs);
}

function AC_GetArgs(args, ext, srcParamName, classid, mimeType){
  var ret = new Object();
  ret.embedAttrs = new Object();
  ret.params = new Object();
  ret.objAttrs = new Object();
  for (var i=0; i < args.length; i=i+2){
    var currArg = args[i].toLowerCase();    

    switch (currArg){	
      case "classid":
        break;
      case "pluginspage":
        ret.embedAttrs[args[i]] = args[i+1];
        break;
      case "src":
      case "movie":	
        args[i+1] = AC_AddExtension(args[i+1], ext);
        ret.embedAttrs["src"] = args[i+1];
        ret.params[srcParamName] = args[i+1];
        break;
      case "onafterupdate":
      case "onbeforeupdate":
      case "onblur":
      case "oncellchange":
      case "onclick":
      case "ondblclick":
      case "ondrag":
      case "ondragend":
      case "ondragenter":
      case "ondragleave":
      case "ondragover":
      case "ondrop":
      case "onfinish":
      case "onfocus":
      case "onhelp":
      case "onmousedown":
      case "onmouseup":
      case "onmouseover":
      case "onmousemove":
      case "onmouseout":
      case "onkeypress":
      case "onkeydown":
      case "onkeyup":
      case "onload":
      case "onlosecapture":
      case "onpropertychange":
      case "onreadystatechange":
      case "onrowsdelete":
      case "onrowenter":
      case "onrowexit":
      case "onrowsinserted":
      case "onstart":
      case "onscroll":
      case "onbeforeeditfocus":
      case "onactivate":
      case "onbeforedeactivate":
      case "ondeactivate":
      case "type":
      case "codebase":
      case "id":
        ret.objAttrs[args[i]] = args[i+1];
        break;
      case "width":
      case "height":
      case "align":
      case "vspace": 
      case "hspace":
      case "class":
      case "title":
      case "accesskey":
      case "name":
      case "tabindex":
        ret.embedAttrs[args[i]] = ret.objAttrs[args[i]] = args[i+1];
        break;
      default:
        ret.embedAttrs[args[i]] = ret.params[args[i]] = args[i+1];
    }
  }
  ret.objAttrs["classid"] = classid;
  if (mimeType) ret.embedAttrs["type"] = mimeType;
  return ret;
}

