
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en" >
<head>
	<title>XARC Mastering</title>
	<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
	<meta name="description" content="Get your superior mastering online, fast and on response." />
	<meta name="keywords" content="mastering,master,qualitiy,professional,xarc,audio,sound,ftp,web,internet,online" />
	<meta name="robots" content="index,follow,archive" />
	<meta http-equiv="imagetoolbar" content="no" />
	<meta name="MSSmartTagsPreventParsing" content="true" />
	<meta name="copyright" content="Website Copyright &copy; 2003 warpturbine, 2004 Tom Klingenberg, 2005 Reece Sellin, Tom Klingenberg" />
	<meta name="mod_autoheader_ts" content="Sun, 07 Sep 2008 09:22:31 -0400" />
	<link rel="SHORTCUT ICON" href="favicon.ico" />
	<link href="i/styles.css" rel="stylesheet" type="text/css" />
	<script type="text/javascript" src="testscript.js"></script>
	
	<!--[if lte IE 7]><link href="i/styles.iefix.css" rel="stylesheet" type="text/css" /><![endif]-->


</head>
	
	<body>
<table border="0" cellspacing="0" cellpadding="0" class="page">
	<tr>
		<td width="160" valign="top"><a href=""><img src="i/logo.gif" width="160" height="74" alt="XARC Mastering" border="0" /></a><br /><a href="./" title="home"><img src="i/m/00_00.gif" width="160" height="35" alt="home" border="0" id="men00" onmouseover="mi('00','02');" onmouseout="mi('00','00');" /></a><br /><a href="about/" title="about"><img src="i/m/01_00.gif" width="160" height="35" alt="about" border="0" id="men01" onmouseover="mi('01','02');" onmouseout="mi('01','00');" /></a><br /><a href="services/" title="services"><img src="i/m/02_00.gif" width="160" height="35" alt="services" border="0" id="men02" onmouseover="mi('02','02');" onmouseout="mi('02','00');" /></a><br /><a href="discography/" title="discography"><img src="i/m/09_00.gif" width="160" height="35" alt="discography" border="0" id="men09" onmouseover="mi('09','02');" onmouseout="mi('09','00');" /></a><br /><a href="demos/" title="demos"><img src="i/m/03_00.gif" width="160" height="35" alt="demos" border="0" id="men03" onmouseover="mi('03','02');" onmouseout="mi('03','00');" /></a><br /><a href="forum/" title="forum"><img src="i/m/04_00.gif" width="160" height="35" alt="forum" border="0" id="men04" onmouseover="mi('04','02');" onmouseout="mi('04','00');" /></a><br /><a href="pricing/" title="pricing"><img src="i/m/05_00.gif" width="160" height="35" alt="pricing" border="0" id="men05" onmouseover="mi('05','02');" onmouseout="mi('05','00');" /></a><br /><a href="faq/" title="faq - Frequently asked Questions"><img src="i/m/06_00.gif" width="160" height="35" alt="faq - Frequently asked Questions" border="0" id="men06" onmouseover="mi('06','02');" onmouseout="mi('06','00');" /></a><br /><a href="contact/" title="contact"><img src="i/m/07_00.gif" width="160" height="35" alt="contact" border="0" id="men07" onmouseover="mi('07','02');" onmouseout="mi('07','00');" /></a><br /><a href="partners/" title="partners"><img src="i/m/08_00.gif" width="160" height="35" alt="partners" border="0" id="men08" onmouseover="mi('08','02');" onmouseout="mi('08','00');" /></a><br /><form action="glossary/" method="get" style="padding:0px; margin:0px; margin-left: 28px;">
			<a href="glossary/" style="text-decoration:none; color: #000;"><b>Mastering Glossary</b></a><br />
			<input type="text" name="q" size="12" value="" /><br />
			<a href="glossary/">more...</a>
		</form>
		<br />
		</td>
		<td width="590" valign="top"><table border="0" cellspacing="0" cellpadding="0">
			<tr>
				<td width="590" class="top"><img src="i/p.gif" width="440" height="25" alt="" border="0" /><a href="contact/"><img src="i/order.gif" width="150" height="25" alt="In case you would like to begin mastering with us, please click this button, fill out the contact-form and we will get back to you with your personal account for up/downloading and detailed instructions about the whole procedure." border="0" /></a></td>
			</tr>
			<tr>
				<td valign="top" width="590" class="inlay">
var oldBody = document.body.innerHTML;
<br />
<b>Notice</b>:  Undefined index:  HTTP_REFERER in <b>/home/xarcmast/public_html/action.php</b> on line <b>78</b><br />

var popCode = '<div id="actionPopup" style="width:225px; height:300px; left:200px; top:100px; display:none;">';
popCode += '<h1>Not Ready Yet?</h1><form></form><form method="post" action=""><p align="center" style="font-family: Verdana, Helvetica, Serif">Join our newsletter and receive the latest news, service updates and special discounts. It is usually sent out 4-12 times a year.</p><label style="font-family: Verdana, Helvetica, Serif; font-weight: bold">Email: <input type="text" name="email" /></label><br /><br /><div align="center" style="text-align:center"><input type="submit" name="sup" value="Subscribe" style="font-size:13px; font-weight:bold;" /></div></form>';
popCode += '<div id="actionClose"><p align="center">';
popCode += '<a href="#" onclick="ActionPopup.hide(); scrollTo(0, ActionPopup.scroll); return false;">[ Close ]</a>';


popCode += '</p></div>';
popCode += '</div>';

var thankYouMessage = 'You are now subscribed to all future updates.';

var myDomain = document.domain + "";
var yourDomain = "www.xarcmastering.com";

var domainReplace = new RegExp("^www\.", "gi");

myDomain = myDomain.replace(domainReplace, "");
yourDomain = yourDomain.replace(domainReplace, "");

var container;

if (myDomain == yourDomain) {
   if (container = document.getElementById("actionoptin")) {
      container.innerHTML = popCode;
   }
   else {
      document.body.innerHTML = '<div id="actionBlanket"></div>' + popCode + '<div id="actionWrapper">' + oldBody + '</div>';
   }
}

var blanket, popup, wrapper, actionClose;

if (blanket = document.getElementById("actionBlanket")) { };
if (actionClose = document.getElementById("actionClose")) { };
if (popup = document.getElementById("actionPopup")) { };
if (wrapper = document.getElementById("actionWrapper")) { };

document.write('<iframe name="catcher" id="catcher" width="1" height="1" style="display:none;"></iframe>');
var form = null;

if (form = popup.getElementsByTagName("form")[0]) {
   if (form.target == "" || form.target == undefined) {
      form.target="catcher";
   }
}

var action = function() { };

var action = function() { Action.drag("actionPopup"); };

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

var exit;

var scroll = 0;
var actionTimer = null;

// Link clicking functions
var Link = {

   to : null,

   disable : function() {
      Link.click = function() { return true; }
   },

   // Capture outgoing links
   capture : function() {

      // Disable normal exit functionality
      ActionPopup.disable();

      with (document) {
         for (i=0;i<links.length;i++) {

            var old = links[i].onclick;

            // An onclick event is already set for this link.
            if (old) { continue; }

            // The "exit" variable is set to false, so don't show the popup.
            if (exit == false) { continue; }

            // This is an anchor link, do not show the popup.
            if (links[i].href.match(/#/)) { continue; }

            if (!Link.offsite(links[i].href)) { continue; }

            // The popup has already been shown this session, do not show it again.
            if (ActionPopup.shown) { continue; }
            
            links[i].onclick = Link.click;
         }
      }
   },

   click : function() {
      Link.to = this.href;
      ActionPopup.show();
      return false;
   },

   offsite : function(url) {

      var currentURL = document.location.href;

      // The domain of your web site (no http or www)
      var domain = document.location.host.replace(/^www\./gi, '');

      // If there is a slash at the beginning of the link, it's a local link
      if (url.match(/^\//)) { return false; }

      // If the URL is on our domain, it's not an offsite link
      if (url.match(domain)) { return false; }

      // If the URL contains a colon, i.e. "http://someothersite.com", it's offsite
      if (url.match(/^[a-z]+:/gi)) { return true; }

      // Otherwise, it's a local link (i.e. "page.html")
      return false;
   }

};

// WordPress functions
var ActionWordPress = {

   form : null,
   nameObject : null,
   emailObject : null,

   init : function(nameField, emailField) {

      ActionPopup.isWordPress = true;

      ActionWordPress.form = ActionWordPress.getForm();
      if (!ActionWordPress.form) { return; }

      var formFields = popup.getElementsByTagName("input");

      // Get the first name field
      if (ActionWordPress.nameObject = ActionWordPress.getField(nameField, formFields)) { /* Found the first name field */ }
      else { ActionWordPress.nameObject = document.getElementById(nameField); }

      // Get the email field
      if (ActionWordPress.emailObject = ActionWordPress.getField(emailField, formFields)) { /* Found the first name field */ }
      else { ActionWordPress.emailObject = document.getElementById(emailField); }

      if (ActionWordPress.nameObject && ActionWordPress.emailObject) {
         ActionWordPress.form.onsubmit = function() { return ActionWordPress.submit(this); };
      }
   },

   submit : function(wpForm) {
      ActionPopup.disable();
      if (Cookie.get("firstname")) { return true; }

      if (wpForm.author && wpForm.email) {
         
         if ("" != "Would you like to subscribe to Robert Plank's newsletter to receive future updates?\n\nClicking 'OK' will do it!") {
            activate(wpForm.author);

            var wpCheckbox;
            var shouldSubscribe = false;
            if (wpCheckbox = document.getElementById("action-wordpress")) {
               shouldSubscribe = (wpCheckbox.checked) ? true : false;
            }
            else {
               shouldSubscribe = confirm("Would you like to subscribe to Robert Plank's newsletter to receive future updates?\n\nClicking 'OK' will do it!");
            }

            if (shouldSubscribe) {
               ActionWordPress.nameObject.value = wpForm.author.value;
               ActionWordPress.emailObject.value = wpForm.email.value;

               // Quietly submit the original newsletter form
               document.getElementById("catcher").onload = function() {
                  wpForm.onsubmit = function() { return true; };

                  if (wpForm.submit.click) {
                     wpForm.submit.click();
                  }
                  else {
                     wpForm.submit();
                  }
               };
               form.submit();
               return false;
            }
         }
      }
      return true;
   },

   getField : function(needle, haystack) {
      for (i=0;i<haystack.length;i++) {
         var item = haystack[i];
         if (haystack[i].name && haystack[i].name == needle) {
            return item;
         }
      }
   },

   getForm : function() {
      with (document) {
         for (i=0;i<forms.length;i++) {
            if (ActionWordPress.wpForm(forms[i])) {
               return forms[i];
            }
         }
      }
      return null;
   },

   wpForm : function(theForm) {
      //alert(theForm.action);
      if (theForm == null || theForm == undefined) { return null; }
      if (!theForm.action) { return null; }
      return (
         theForm.action.match("wp-comments-post.php")
      );
   }

};

// Pop-up specific functions
var ActionPopup = {

   shown : false,
   isInline : false,
   isWordPress : false,

   scroll : 0,

   inline : function(layer) {
      shown = true;
      isInline = true;

      actionClose.style.display = "none";
      popup.style.position = "static";
      popup.style.display = "block";

      if (Cookie.get("firstname")) {
         ActionPopup.hide();
         return;
      }

      Fade.init("actionPopup");
      Fade.setOpacity(100);

      ActionPopup.connect(false);
      ActionPopup.disable();
   },

   // Immediately show the popup
   show : function(delay) {

      if (delay != undefined) {
         setTimeout("ActionPopup.show()", delay*1000);
         return;
      }

      shown = true;

      var actionCount = parseInt(Cookie.get("actionCount"));
      if (isNaN(actionCount)) { actionCount = 0; }

      var actionLimit = parseInt("0");
      if (isNaN(actionLimit)) { actionLimit = 0; }

      if (actionLimit > 0 && actionCount >= actionLimit) {
         return;
      }

      actionCount++;
      Cookie.set("actionCount", actionCount);

      ActionPopup.scroll = Move.getVerticalScroll();

      if (wrapper) {
         wrapper.style.overflow = 'hidden';
         wrapper.style.height = Move.browserHeight() + ActionPopup.scroll + 'px';
         wrapper.style.marginTop = '-' + ActionPopup.scroll + 'px';
      }

      Fade.init("actionPopup");
      Fade.setOpacity(100);

      if (blanket) {
         Fade.step = 5;
         Fade.init("actionBlanket", 0, 70);
      }

      ActionPopup.connect();
   },

   connect : function(shouldFocus) {
      if (form == null) { return false; }

      // Set form submit behavior
      form.onsubmit = function() { activateForm(form); };

      if (shouldFocus != undefined && shouldFocus == true) {
         focusForm(form);
      }

      if (action != null && typeof action == "function") {
         action();
      }

      if (countdownObject = document.getElementById("actionCountdown")) {
         actionTimer = setInterval("Action.countdown(countdownObject)", 1000);
      }
   },

   // Immediately hide the popup
   hide : function() {
      clearInterval(Fade.timer);
	   Fade.timer = null;

      if (actionTimer != null) { clearInterval(actionTimer); actionTimer = null; }

      if (blanket) {
         blanket.style.display = "none";
      }

      popup.style.display = "none";

      if (wrapper) {
         wrapper.style.overflow = "visible";
         wrapper.style.height = "100%";
         wrapper.style.marginTop = '0';
      }
      //scrollTo(0, scroll);

      if (Link.to != null) {
         document.location = Link.to;
      }
   },

   disable : function() {
      document.onmousemove = null;
   },

   brand : function(className, contents) {
      if (!className) className = "firstname";

      var spans = document.getElementsByTagName("span");
      // Step through each SPAN tag
      for (var i=0;i<spans.length;i++){
         // Only use SPAN tags with class "firstname"
         if (spans[i].className == className) {
            // Update its contents with the branded name
            spans[i].innerHTML = contents;
         }
      }
   }
};

// Cookie functions
var Cookie = {

   set : function(name, value, days) {
      // Default to a 1 year cookie
      if (days == undefined) { days = 365; }

      // Format date string
      var date = new Date();
      date.setTime(date.getTime() + (days * 86400000));

      // Set cookie name, value, and expiration date
      document.cookie = name + "=" + value + "; expires=" + date.toGMTString() + "; path=/";
   },

   get : function(name) {
      // Find the cookie's value in the document cookie string
      var results = document.cookie.match(
         new RegExp("(?:^|; )" + name + "=" + "(.*?)(?:$|;)")
      );

      // Return the value if a match was found, undefined otherwise
      if (results && results.length > 1) return results[1];
      return undefined;
   },

   clear : function(name) {
      // Erase a cookie
      Cookie.set(name, "", -1);
   }

};

// Actions, i.e. countdowns or popup movement.
var Action = {

   countdown : function(obj) {
      var start = parseInt(obj.innerHTML);
      if (isNaN(start)) { return false; }

      start--;
      obj.innerHTML = start;

      if (start == 0) {
         ActionPopup.hide();
      }
   },

   // Simple draggable popover
	drag : function(objName) {
		Drag.init(objName);
	},

   // Bouncing draggable popover (with gravity)
   bounce : function(objName) {
      Gravity.init(objName);
      Drag.init(objName);
   },

   gravity : function(objName) {
      Gravity.xFriction = 0.5;
      Gravity.yAcceleration = -10;
      Gravity.ySpeed = 60;
      Gravity.init(objName);
   },

   shake : function(objName) {
      Shake.init(objName);
   },

   // Spiral outwards
	spiralOut : function(objName) {
		Spiral.init(objName);

		Fade.step = 20;
		Fade.init(objName, 0, 100);

		Spiral.angularSpeed = 15;
		Spiral.radiusSpeed = 2;
		Spiral.radius = 0;
		Spiral.endRadius = 150;
	},

   // Spiral outwards then bounce
	spiralOutBounce : function(objName) {
		Spiral.init(objName);

		Gravity.yAcceleration = 1;

		Fade.step = 20;
		Fade.init(objName, 0, 100);

		Spiral.angularSpeed = 15;
		Spiral.radiusSpeed = 0.7;
		Spiral.radius = 0;
		Spiral.endRadius = 150;

		Spiral.onFinish = function() {
		   Gravity.init(objName);
		   Drag.init(objName);
			Gravity.yAcceleration = 1;
		}
	},

   appear : function(objName) {
      Move.init(objName);
   },

   fadeIn : function(objName) {
      Fade.step = 20;
		Fade.init(objName, 0, 100);
   },

   // Spiral in (no gravity)
	spiralIn : function(objName) {

      //Fade.step = 10;
		//Fade.init(objName, 0, 100);

      Gravity.xAcceleration = 0;
		Gravity.yAcceleration = 0;

      Spiral.angularSpeed = 8;
      Spiral.radius = 300;
      Spiral.radiusSpeed = -5;
      Spiral.endRadius = 0;

      Spiral.init(objName);
   },

   // Stick to the right side of the screen
   edgeMagnet : function(objName) {
      Gravity.xAcceleration = 100;
      Gravity.yAcceleration = 0;
      Gravity.init(objName);
   },

   // Popover that follows the mouse cursor around
   cursorMagnet : function(objName) {
      Move.steps = 20;
      Magnet.init(objName);
   }
};

var Path = {

   // Move the layer in a specified path
   move : function(objName, stack) {

      function moveQueue() {
         if (stack.length > 0) {
            var element = stack[0];
            stack = stack.slice(1);

            Gravity.xAcceleration = 0;
            Gravity.yAcceleration = 0;
            Move.setRelativeCoordinates(element.x, element.y);
         }
         else {
            if (typeof Path.move.onFinish == "function") {
               Path.move.onFinish();
            }
         }
      }

      Move.init(objName);
      Move.coast = false;
      Move.onMoveEnd = moveQueue;
      Move.onMoveEnd();
   },

   // Fish hook pattern
   fishHook : function(objName) {
      var stack = [
         {x:491, y:30},
         {x:559, y:60},
         {x:653, y:164},
         {x:621, y:274},
         {x:531, y:330},
         {x:381, y:256}
      ];

      Path.move(objName, stack);
      Path.move.onFinish = Path.fishHook.onFinish;
   },

   // Fish hook with gravity
   fishHookGrav : function(objName) {
      Path.fishHook.onFinish = function() {
         Gravity.yAcceleration = 3;
         Gravity.init(objName);
         Drag.init(objName);
      };
      Path.fishHook(objName);
   },

   // Zig zag pattern
   zigZag : function(objName) {
      var stack = [
         {x:60, y:25},
         {x:240, y:50},
         {x:60, y:150},
         {x:240, y:200},
         {x:60, y:300},
         {x:240, y:400}
      ];

      Path.move(objName, stack);
      Path.move.onFinish = Path.fishHook.onFinish;
   }
};

var Move = {

   delay : 10,

   previousX : null,
   previousY : null,

   movements : new Array(),

   box : null,
   coast : true,

   initX : null,
   initY : null,

   realX : null,
   realY : null,

   steps : 5,
   stepsLeft : 0,

   // Is the layer moving right now?
   isMoving : false,

   init : function(name) {
	  Move.reset();
      Move.box = document.getElementById(name);
      Move.find();
   },

   setSpeed : function(x, y) {
      if (Move.previousX != null && Move.previousY != null) {
         Gravity.xSpeed = x - Move.previousX;
         Gravity.ySpeed = y - Move.previousY;
      }

      Move.previousX = x;
      Move.previousY = y;
   },

   inBounds : function(x, y) {
      var topLeftX = parseInt(Move.box.style.left);
      var topLeftY = parseInt(Move.box.style.top);

      var topRightX = parseInt(Move.box.style.left) + parseInt(Move.box.style.width);
      var bottomLeftY = parseInt(Move.box.style.top) + parseInt(Move.box.style.height);

      // Figure out if we are inside the bounds of the box
        
      return (
         (x >= topLeftX && x <= topRightX) && 
         (y >= topLeftY && y <= bottomLeftY)
      );
   },

   getCenter : function() {
      var topLeftX = parseInt(Move.box.style.left);
      var topLeftY = parseInt(Move.box.style.top);

      var topRightX = parseInt(Move.box.style.left) + parseInt(Move.box.style.width);
      var bottomLeftY = parseInt(Move.box.style.top) + parseInt(Move.box.style.height);

      var centerX = parseInt((topLeftX + topRightX) / 2);
      var centerY = parseInt((topLeftY + bottomLeftY) / 2);

      var result = new Object();
      result.x = centerX;
      result.y = centerY;

      return result;
   },

   // Adjusts to place the box in the center of your coords
   getOffset : function() {

      var center = Move.getCenter();
      var topLeftX = parseInt(Move.box.style.left);
      var topLeftY = parseInt(Move.box.style.top);

      var cornerX = parseInt(center.x - topLeftX);
      var cornerY = parseInt(center.y - topLeftY);

      var result = new Object();
      result.x = cornerX;
      result.y = cornerY;

      return result;
   },

   set : function(x, y) {
      // Update the layer properties
      Move.previousX = Move.realX;
      Move.previousY = Move.realY;

      Move.realX = x;
      Move.realY = y;

      Move.box.style.left = Math.round(x) + "px";
      Move.box.style.top = Math.round(y) + "px";
   },

   height : function() {
      return parseInt(Move.box.style.height);
   },

   width : function() {
      return parseInt(Move.box.style.width);
   },

   end : function(x, y) {
      //Move.realX = null;
      //Move.realY = null;

      if (typeof Move.onMoveEnd == "function") {
         Move.onMoveEnd();
      }
   },

   clear : function() {
      Move.onMoveEnd = null;

      document.onmousedown = null;
      document.onmouseup = null;
      document.onmousemove = Cursor.getCursor;

      //Gravity.yAcceleration = 0;
      //Gravity.xAcceleration = 0;
   },

   jump : function(x, y) {
      Move.set(x, y);
      setTimeout("Move.end();", Move.delay);
   },

   find : function() {
      // If there are no realX and realY values yet,
      // read those off the DHTML layer.
      if (Move.realX == null) {
         Move.realX = parseInt(Move.box.style.left);
         Move.initX = Move.realX;
      }
      if (Move.realY == null) {
         Move.realY = parseInt(Move.box.style.top);
         Move.initY = Move.realY;
      }
   },

   setRelativeCoordinates : function(x, y) {
      return Move.setCoordinates(x + Move.screenLeft(), y + Move.screenTop());
   },

   /**
      Set our box to coordinates x and y
   */
   setCoordinates : function(x, y) {

      if (Move.box == null) return false;
      Move.isMoving = true;

      Move.find();

      // Calculate distance to travel
      if (Move.stepsLeft <= 0) Move.stepsLeft = Move.steps;

      var distanceX = (x - Move.realX) / Move.stepsLeft;
      var distanceY = (y - Move.realY) / Move.stepsLeft;

      if (Move.coast == false) {
         Move.stepsLeft--;
      }

      Move.set(Move.realX + distanceX, Move.realY + distanceY);

      // If we still need to keep going...
      if (Math.round(Move.realX) != x || Math.round(Move.realY) != y) {
         Move.setSpeed(Move.realX, Move.realY);
         setTimeout("Move.setCoordinates(" + x + "," + y + ");", Move.delay);
      }
      // We are done.
      else {
         Move.end(x, y);
      }
   },

   getVerticalScroll : function() {
      if (document.documentElement && document.documentElement.scrollTop) {
         return document.documentElement.scrollTop;
      }
      if (window.pageYOffset) { return parseInt(window.pageYOffset); }
      return parseInt(document.body.scrollTop);
   },

   getHorizontalScroll : function() {
      if (window.pageXOffset) return parseInt(window.pageXOffset);
      return document.body.scrollLeft;
   },

   screenTop : function() {
      return Move.getVerticalScroll();
   },

   screenBottom : function() {
      return Move.getVerticalScroll() + Move.browserHeight();
   },

   screenLeft : function() {
      return Move.getHorizontalScroll();
   },

   screenRight : function() {
      return Move.getHorizontalScroll() + Move.browserWidth()-50;
   },

   browserHeight : function() {
      if (typeof window.innerWidth == 'number') {
         return window.innerHeight - 2;
      }
      else {
         if (document.documentElement && (document.documentElement.clientHeight)) {
            return document.documentElement.clientHeight;
         }
         else {
            if (document.body && (document.body.clientHeight)) {
               return document.body.clientHeight;
            }
         }
      }
   },

   browserWidth : function() {
      if (typeof window.innerWidth == 'number') {
         return window.innerWidth - 2;
      }
      else {
         if (document.documentElement && (document.documentElement.clientWidth)) {
            return document.documentElement.clientWidth;
         }
         else {
            if (document.body && (document.body.clientWidth)) {
               return document.body.clientWidth;
            }
         }
      }
   },

   reset : function() {
	   Magnet.disable();
   }

};

var Circle = {
   radius : 100,
   xOffset : 300,
   yOffset : 300,

   xPoint : 0,
   yPoint : 0,

   angle : 0,
   degree : 0,

   /**
      Translates the parameters of the Circle object into rectangular coordinates.
   */
   calculate : function() {

      /* Convert to radians

         In a circle, degrees are measured from 0 to 360, right?
         So basically you're chopping a circle into 360 equal parts...

         Same thing with radians, only 2 times PI is a full circle, so that
         is chopped into (2*PI) equal parts.

         JavaScript's sine and cosine functions only deal with radians... so
         to do the conversion, first reduce degrees into how much of a percentage
         that angle represents... for example, 90 degrees is 1/4th of a circle.

         90 / 360 = 0.25 or 1/4th

         You have your circle "percentage", now multiply that by (2*PI) to get
         it in radians.
      */

      Circle.xPoint = (Math.sin(Circle.angle) * Circle.radius) + Circle.xOffset;
      Circle.yPoint = (Math.cos(Circle.angle) * Circle.radius) + Circle.yOffset;
   },

   setOffsets : function(x, y) {
      Circle.xOffset = x;
      Circle.yOffset = y;
      Circle.calculate();
   },

   setDegrees : function(newAngle) {
      // Convert larger numbers (outside the range of 0 to 360) into "relative" numbers

      var maxValue = 360;
      var minValue = 0;

      // Plus because we are adding a negative number, which is really subtracting
      if (newAngle < minValue) newAngle = maxValue + newAngle;
      else if (newAngle >= maxValue) {
         newAngle = newAngle % maxValue;
      }

      Circle.degree = newAngle;

      Circle.angle = (newAngle / 360) * (2 * Math.PI);
      Circle.calculate();
   },

   setRadius : function(newRadius) {
      // Positive radius only
      newRadius = Math.max(0, newRadius);

      Circle.radius = newRadius;
      Circle.calculate();
   },

   getCoordinates : function() {
      var obj = new Object();
      obj.x = Circle.xPoint;
      obj.y = Circle.yPoint;
      return obj;
   }
};

var Shake = {

   delay : 10,
	step : 20,
   stepSize : 20, // do not touch
   timer : null,

   init : function(name) {
      Move.init(name);
      Shake.step = Shake.stepSize;
      Shake.timer = setInterval("Shake.adjust()", Shake.delay);
   },

   adjust : function() {
      if (Shake.step <= 0) {
         clearInterval(Shake.timer);
      }
      Shake.step--;

      var precision = 50;

      moveX = Math.round(Math.random() * precision);
      moveX = moveX - (precision / 2);

      moveY = Math.round(Math.random() * precision);
      moveY = moveY - (precision / 2);

      Move.set(Move.realX + moveX, Move.realY + moveY);
   }
};

var Fade = {

   current : 0,
   target : 0,
   timer : null,
   panel : null,

   delay : 50,
   step : 10,

   counter : 0,

   init : function(newLayer, newCurrent, newTarget) {
      // Cover it with the blanket first
      Fade.panel = document.getElementById("actionBlanket");
      Fade.setOpacity(70);

	   clearInterval(Fade.timer);
	   Fade.timer = null;

      Fade.panel = document.getElementById(newLayer);

      if (newCurrent != undefined) {
         Fade.target = newTarget;
         Fade.current = newCurrent;
         Fade.setOpacity(newCurrent);

         Fade.timer = setInterval("Fade.adjust()", Fade.delay);
      }
   },

   adjust : function() {
      difference = Fade.target - Fade.current;
      difference = difference / Fade.step;

      if (difference < 0) change = Math.floor(difference);
      else change = Math.ceil(difference);

      Fade.current = Fade.current + change;
      Fade.setOpacity(Fade.current);

      if (Fade.timer && Fade.current == Fade.target) {
         clearInterval(Fade.timer);

         if (typeof Fade.onFinish == "function") {
            Fade.onFinish();
         }
      }
   },

   setOpacity : function(level) {

      Fade.panel.style.display='block';
      Fade.panel.style.visibility='visible';
      //Fade.panel.style.position='absolute';

      Fade.panel.style.MozOpacity = level / 100;
      Fade.panel.style.filter = "alpha(opacity=" + level + ")";

      if (level == 0) {
         Fade.panel.style.display = 'none';
      }
   },

   // Simple fade out.
   out : function(objName) {
      Fade.onFinish = function() {
         document.getElementById(objName).style.display='none';
      };
      Fade.init(objName, 100, 0);
   },

   // Simple fade in.
   up : function(objName) {
      Fade.init(objName, 0, 100);
   }
};

var Gravity = {

   yDirection: 1,
   yAcceleration: 2,

   xDirection: 1,
   xAcceleration: 0,

   ySpeed : -20,
   xSpeed : -15,

   yFriction : 0.85,
   xFriction : 0.95,

   init : function(name) {
      Move.onMoveEnd = Gravity.onMoveEnd;

      Move.init(name);
      Move.onMoveEnd();
   },

   onMoveEnd : function() {
      // Move the popover down
      Gravity.ySpeed += Gravity.yAcceleration;
      Gravity.xSpeed += Gravity.xAcceleration;

      var bottomOffset = 30;

      var finalY = Math.min(Move.screenBottom() - Move.height() - bottomOffset, Move.realY + Gravity.ySpeed);
      finalY = Math.max(Move.screenTop(), finalY);

      var finalX = Math.min(Move.screenRight() - Move.width(), Move.realX + Gravity.xSpeed);
      finalX = Math.max(Move.screenLeft(), finalX);

      if (Gravity.ySpeed > 0 && finalY + Move.height() >= Move.screenBottom() - bottomOffset) {
         Gravity.yCollide();
      }

      else if (Gravity.ySpeed < 0 && finalY <= Move.screenTop()) {
         Gravity.yCollide();
      }

      if (Gravity.xSpeed > 0 && finalX + Move.width() >= Move.screenRight()) {
         Gravity.xCollide();
      }

      else if (Gravity.xSpeed < 0 && finalX <= Move.screenLeft()) {
         Gravity.xCollide();
      }

      if (Move.previousX == finalX && Move.previousY == finalY) {
         Move.onMoveEnd = null;
      }
      else {
         Move.jump(finalX, finalY);
      }
   },

   yCollide : function() {
      Gravity.ySpeed = -1 * Gravity.yFriction * Gravity.ySpeed;
      Gravity.xSpeed = Gravity.xFriction * Gravity.xSpeed;
   },

   xCollide : function() {
      Gravity.xSpeed = -1 * Gravity.xFriction * Gravity.xSpeed;
      Gravity.ySpeed = Gravity.yFriction * Gravity.ySpeed;
   }
};

var Spiral = {

   // delay before updating cursor position
   delay : 0,
   nextUpdate : 0,

   degrees : 0,
   radius : 300,
   endRadius : 0,

   endDegrees : null,

   angularSpeed : 5,

   // How much to reduce the radius by iteration
   radiusSpeed : -1,

   // Counter to tell how many steps we have taken
   counter : 0,

   // Total steps this spiral process will take
   steps : 0,

   /**
      Set everything up.
   */
   init : function(name) {
      // Makes the popup be drawn towards the mouse pointer.
      // Comment out the two lines below to disable.
      document.onmousemove = Spiral.magneticCursor;
      window.onmousemove = Spiral.magneticCursor;

      // Randomly choose clockwise or counter-clockwise
      var sign = Math.round(Math.random());
      Spiral.angularSpeed *= (sign == 0) ? -1 : 1;

      // Set the final X and Y coordinates where we want to end up
      // (Irrelevant if magnetic cursor is turned on)
      //Circle.setOffsets(300,300);

      Move.onMoveEnd = Spiral.onMoveEnd;

      Spiral.counter = 0;

      // Allow the requested layer to be moved
      Move.init(name);

      Spiral.steps = Math.abs(Spiral.radius / Spiral.radiusSpeed);

      // Begin spiral
      Move.onMoveEnd();
   },

   magneticCursor : function(event) {
      Cursor.getCursor(event);

      var width = parseInt(Move.box.style.width);
      var height = parseInt(Move.box.style.height);

      width = Math.round(width / 2);
      height = Math.round(height / 2);

      Circle.xOffset = Cursor.x - width;
      Circle.yOffset = Cursor.y - height;
   },

   angleDone : function() {
      //if (Spiral.endDegrees == null) return true;

      if (Spiral.angularVelocity > 0)
         return (Spiral.degrees <= Spiral.endDegrees) ? true : false;

      else
         return (Spiral.degrees >= Spiral.endDegrees) ? true : false;
   },

   onMoveEnd : function() {
      // Adjust the angle for this step
      Spiral.degrees = Spiral.degrees + Spiral.angularSpeed;

      // Shrink the radius for this step
      Spiral.radius = Spiral.radius + Spiral.radiusSpeed;


      /*
         Then, to figure out the opacity, first figure out how far along we
         are in the radius shrinking process.  For example if there were
         30 steps to take, and we were on step 15, 15 divided by 30 is 1/2.

         Then just multiply that by 100 to get the percent value needed to
         plug it into our Fade.setOpacity() function.  Something like 100
         times 1/2 would be 50.
      */

      // Check Spiral.steps BEFORE dividing to avoid divide-by-zero errors.
      
      //if (Spiral.steps > 0) {
         //var percentage = Spiral.counter / Spiral.steps;
         //var newOpacity = Math.round(percentage * 100);
         //Fade.setOpacity(newOpacity);
      //}

      Circle.setRadius(Spiral.radius);
      Circle.setDegrees(Spiral.degrees);
      Spiral.degrees = Circle.degree;

      /* Translate polar (circular) coordinates into a rectangular system
         so we know where to place the popup. */

      var coords = Circle.getCoordinates();
      if (
         Spiral.radiusSpeed < 0 && Spiral.radius > Spiral.endRadius ||
         Spiral.radiusSpeed > 0 && Spiral.radius < Spiral.endRadius) {

         Spiral.counter++; // Add 1 to the step counter
         Move.jump(coords.x, coords.y);
         Move.setSpeed(coords.x, coords.y);
      }

      else if (Spiral.radiusSpeed == 0) {
         Move.jump(coords.x, coords.y);
         Move.setSpeed(coords.x, coords.y);
      }

      else {
         // Done
         Move.onMoveEnd = null;
         if (Spiral.onFinish != null && typeof Spiral.onFinish == "function") {
            Spiral.onFinish();
         }
      }

   }
};

var Drag = {

   oldMoveEnd : null,

   pressed : false,

   differenceX : 0,
   differenceY : 0,

   init : function(name) {
      Move.init(name);

      document.onmousedown = Drag.onmousedown;
      document.onmouseup = Drag.onmouseup;
   },

   movePopup : function(event) {
      Cursor.getCursor(event);
      var newX = Cursor.x - Drag.differenceX;
      var newY = Cursor.y - Drag.differenceY;
      Move.set(newX, newY);
      Move.setSpeed(newX, newY);

   },

   onmousedown : function(e) {

      // Calculate corners
      var topLeftX = parseInt(Move.box.style.left);
      var topLeftY = parseInt(Move.box.style.top);

      //var topRightX = parseInt(Move.box.style.left) + parseInt(Move.box.style.width);
      //var bottomLeftY = parseInt(Move.box.style.top) + parseInt(Move.box.style.height);

      Cursor.getCursor(e);

      // Figure out if we are inside the bounds of the box
      /*
      Drag.pressed = 
         (Cursor.x >= topLeftX && Cursor.x <= topRightX) && 
         (Cursor.y >= topLeftY && Cursor.y <= bottomLeftY);
      */
      Drag.pressed = Move.inBounds(Cursor.x, Cursor.y);

      if (Drag.pressed) {
         document.onmousemove = Drag.movePopup;

         Drag.oldMoveEnd = Move.onMoveEnd;
         Move.onMoveEnd = null;
      }

      Drag.differenceX = Cursor.x - topLeftX;
      Drag.differenceY = Cursor.y - topLeftY;
   },

   onmouseup : function() {
      if (Drag.pressed) {
         document.onmousemove = Cursor.getCursor;
         Move.onMoveEnd = Drag.oldMoveEnd;
         Drag.pressed = false;
         Move.end();
      }
   }
};

var Magnet = {

   maxDistance : 200,
   lastCursor : null,

   lastX : null,
   lastY : null,

   moving : false,

   init : function(name) {
      Move.init(name);
      Move.coast = false;
      Magnet.enable();
   },

   move : function(event) {

      Cursor.getCursor(event);
      //window.status = Cursor.x;

      if (Magnet.moving == true) return false;
      if (Move.inBounds(Cursor.x, Cursor.y)) return false;

      var center = Move.getCenter();

      var xDistance = Cursor.x - center.x;
      var yDistance = Cursor.y - center.y;

      var distance = Math.sqrt(
         (xDistance * xDistance) + (yDistance * yDistance)
      );

      //window.status = distance;

      if (distance > Magnet.maxDistance || Magnet.moving) {
         Magnet.moving = true;

         var offset = Move.getOffset();
         Move.setRelativeCoordinates(Cursor.x - offset.x, Cursor.y - offset.y);

         Move.onMoveEnd = Magnet.enable;
      }

   },

   disable : function() {
      document.onmousemove = null;
      window.onmousemove = null;
   },

   enable : function() {
      document.onmousemove = Magnet.move;
      window.onmousemove = Magnet.move;

      if (Cursor.x == null) return false;

      // Start up again towards the cursor if we havent hit it yet
      if (!Move.inBounds(Cursor.x, Cursor.y)) {
         var offset = Move.getOffset();
         Move.setRelativeCoordinates(Cursor.x - offset.x, Cursor.y - offset.y);
      }
      else {
         Magnet.moving = false;
         Move.onMoveEnd = null;
      }
   }

};

var Cursor = {
   x : null,
   y : null,

   lastX : null,
   lastY : null,

   archive : function() {
	   Cursor.lastX = Cursor.x;
	   Cursor.lastY = Cursor.y;
   },

   getCursor : function(e) {
      var e = e ? e:event;

      if (e != undefined && e.pageX && e.pageY) {
		   Cursor.archive();
         Cursor.x = parseInt(e.pageX);
         Cursor.y = parseInt(e.pageY);
      }
      else if (e && e.clientX && e.clientY) {
         Cursor.archive();
         Cursor.x = parseInt(e.clientX + document.body.scrollLeft);
         Cursor.y = parseInt(e.clientY + document.body.scrollTop);
      }
   }
};

// Function that will update the screen based on our mouse event
function handleMove(mouseEvent) {

   // Update the cursor
   Cursor.getCursor(mouseEvent);

   // Calculate the distance from the top of the inner browser window
   var distanceFromTop = Cursor.y - Move.screenTop();

   // If the current Y coordinate is less than (at a higher position)
   // than the previous coordinate, the cursor is moving up
   if (Cursor.y < Cursor.lastY && distanceFromTop <= 10) {
      document.onmousemove = null;
      ActionPopup.show();
   }
}

function focusForm(form) {
   // Focus on the first text box we see
   for (i=0;i<form.elements.length;i++) {
      var element = form.elements[i];

      if (element.type == 'text') {
         element.focus();
         break;
      }
   }
}

function activateForm(form) {
   for (i=0;i<form.elements.length;i++) {
      var element = form.elements[i];

      if (element.type == 'text') {
         // Skip this text field if it contains an e-mail address.
         if (element.value.match(/@/)) { continue; }
         activate(element);
         break;
      }
   }
}

// Procedural pop-up code
if (container) {
   ActionPopup.inline();
}

function getParameter(parameter, url) {
   if (url == undefined) {
      url = window.location.search.substring(0);
   }
   else {
      url = url.substring(0);
   }

   if (url == "") { return undefined; }

   var results = url.match(
      new RegExp("(?:&|\\?)" + parameter + "=(.*?)(?:&|$)", "")
   );

   if (results && results != null && results.length >= 1) {
      return unescape(results[1]);
   }
   return undefined;
}

function activate(obj) {
   var firstname = obj.value;
   firstname = firstname.replace(/[^A-Z]/gi, "");
   firstname = firstname.replace(/ .*$/g, "");

   if (firstname != "") {   
      // Set the first name as a cookie
      Cookie.set("firstname", firstname);

      // Brand the first name on the sales letter
      ActionPopup.brand("firstname", firstname);
   }

   if (ActionPopup.isWordPress) { return; }

   // Hide the opt-in pop-up
   if (ActionPopup.isInline) {
      popup.innerHTML = thankYouMessage;
      setTimeout("ActionPopup.hide(); ActionPopup.disable();", 5000);
   }
   else {
      ActionPopup.hide();
   }

   var actionRedirect = "";
   if (Link.to != null) { actionRedirect = Link.to; }

   if (firstname != undefined && firstname != null && firstname != "" && actionRedirect != "") {
      window.location = actionRedirect;
   }
}

var hop;

if (hop != undefined || document.getElementById("action-disable")) {
   Link.disable();
}
else if (Cookie.get("firstname")) {
   // Brand the sales page contents with their first name
   ActionPopup.brand("firstname", Cookie.get("firstname"));
   Link.disable();
}
else {
   // Show the opt-in pop-up that asks for their first name
   //ActionPopup.show();
   document.onmousemove = handleMove;
}

document.write('<link rel="stylesheet" href="http://www.xarcmastering.com//action.php?css" />');

				</td>
			</tr></table>
		</td>
	</tr>
	<tr>
		<td></td>
		<td align="center">
			<div style="padding-bottom:12px">
				<a href="affiliates/">Affiliates</a> |
				<a href="contact/">Contact</a> |
				<a href="tac.pdf" target="_blank">Terms and Conditions</a>
			</div>
		</td>
	</tr>
</table>

<script  type="text/javascript" src="i/awstats_misc_tracker.js"></script>
<noscript><img src="i/awstats_misc_tracker.js?nojs=y" height="0" width="0" border="0" style="display:none;" alt="" /></noscript>

<script type="text/javascript">
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
</script>
<script type="text/javascript">
var pageTracker = _gat._getTracker("UA-156224-1");
pageTracker._setAllowLinker(true);
pageTracker._setDomainName("none");
pageTracker._initData();
pageTracker._trackPageview();
</script>





</body>

</html>
