footerClassName = '';

function findObjectPos(obj) {
	var curleft = curtop = 0;
	if (obj.offsetParent) {
		curleft = obj.offsetLeft
		curtop = obj.offsetTop
		while (obj == obj.offsetParent) {
			curleft += obj.offsetLeft;
			curtop += obj.offsetTop;
		}
	}
    curbottom = obj.offsetHeight + curtop;
	return [curleft,curtop,curbottom];
}

function setFooterReflection(){
    try{
    pos1 = findObjectPos(document.getElementById('xsnazzy'));
    pos2 = findObjectPos(document.getElementById('promoContainer'));
    if(pos1[2] > pos2[2]) footerClassName        = 'footerTopRightReflection';
    else if(pos1[2] < pos2[2]) footerClassName   = 'footerTopLeftReflection';
    else if (pos1[2] == pos2[2]) footerClassName = 'footerTopReflection';
    }catch(err){
        return false;
    }
    getFooterReflection();
}

function getFooterReflection(){
    attrType = 'class';
    if(document.all) attrType = 'className';
    if(footerClassName != '') {
        document.getElementById('footer').setAttribute(attrType, footerClassName);
        document.getElementById('footer').className = footerClassName;
    } else {
        document.getElementById('footer').setAttribute(attrType, 'footerHomeReflection');
        document.getElementById('footer').className = 'footerHomeReflection';  
    }
}

function resizeSnazzy(){
    try{
        
    promoPos = findObjectPos(document.getElementById('promoContainer'));
    snazzyPos = findObjectPos(document.getElementById('xsnazzy'));
    if(document.all) promoPos[2] += 200; 
    if(promoPos[2] > snazzyPos[2]){        
        heightToAdd = promoPos[2] - snazzyPos[2];      
        document.getElementById('listContent').style.height = document.getElementById('listContent').offsetHeight + heightToAdd + 'px';
    }
    }catch(err){
        return false;
    }
    setFooterReflection();
}

var fixPromoModsFlag = false;
function fixPromoMods(obj){
   
    divElements = obj.getElementsByTagName('div');
    for(i = 0; i < divElements.length; i++){
        if(divElements[i].getAttribute('id') == 'promoHolder'){
            pElements = divElements[i].getElementsByTagName('p');
            for(x = 0; x < pElements.length; x++){
                pattern = new RegExp("img");
                if(document.all) pattern = new RegExp("IMG");
                if(!pattern.test(pElements[x].innerHTML)){
                    if(BrowserDetect.browser == 'Explorer' && (BrowserDetect.version == 7 || BrowserDetect.version == 8)){ 
                        pElements[x].style.width = '210px'
                        pElements[x].style.margin = '0px auto';
                    }else{
                        pElements[x].style.width = '200px';
                    }
                }else{
                    exceptionImage = new RegExp("button-join-now.gif");                  
                    imgObj = pElements[x].getElementsByTagName('img');                
                    if(!exceptionImage.test(imgObj[0].src)){
                        pElements[x].style.height = imgObj[0].offsetHeight + 'px';
                        pElements[x].setAttribute('style', 'overflow-x:visible; height:'+imgObj[0].offsetHeight + 'px;');
                        if(imgObj[0].parentNode.getAttribute('href')){
                            imgObj[0].parentNode.setAttribute('style', 'position: absolute');  
                        }else{
                            imgObj[0].setAttribute('style', 'position: absolute');   
                        }
                        
                    }                    
                }
            }
           
            tempFlashMatch = divElements[i].innerHTML;
          
            if(divElements[i].getElementsByTagName("object")[0] && divElements[i].getElementsByTagName("object")[0].getAttribute('id') != 'flashCaptPicard'){
                    var tempFlashObject = divElements[i].getElementsByTagName("object");
                    var flashContainer = document.createElement('div');
                    var flashContent = document.createElement('div');
                    flashContainer.setAttribute('class', 'flashContainer');
                    flashContent.setAttribute('class', 'flashContent');
                    flashContent.appendChild(tempFlashObject[0]);
                    flashContainer.appendChild(flashContent);
                    divElements[i].insertBefore(flashContainer, divElements[i].firstChild.nextSibling);
                    setFooterReflection();
                    }
        
            if(document.all){
                //BUG IN IE8 DOEST NOT UPDATE THE CONTENT ON THE SCREEN ON innerHTML
                //LEAVING CODE IN PLACE FOR WHEN MS DECIDES TO FIX THIS KNOWN BUG
                //http://blogs.msdn.com/ie/archive/2008/04/10/html-and-dom-standards-compliance-in-ie8-beta-1.aspx
                if((BrowserDetect.browser == 'Explorer' && BrowserDetect.version == 8) || BrowserDetect.browser == 'Safari'){
                    if(divElements[i].getElementsByTagName("object")[0] && divElements[i].getElementsByTagName("object")[0].getAttribute('id') != 'flashCaptPicard'){
                    var tempFlashObject = divElements[i].getElementsByTagName("object");
                    var flashContainer = document.createElement('div');
                    var flashContent = document.createElement('div');
                    flashContainer.setAttribute('class', 'flashContainer');
                    flashContent.setAttribute('class', 'flashContent');
                    flashContent.appendChild(tempFlashObject[0]);
                    flashContainer.appendChild(flashContent);
                    divElements[i].insertBefore(flashContainer, divElements[i].firstChild.nextSibling);
                    setFooterReflection();
                    }
                }
            //tempFlashMatch = tempFlashMatch.replace(/<object /gi, "<div class='flashContainer'><div class='flashContent'><OBJECT ");
            //tempFlashMatch = tempFlashMatch.replace(/<\/object>/gi, "</OBJECT></div></div>");
            }else{
                if (BrowserDetect.OS == 'Mac' || BrowserDetect.browser == 'Opera' || BrowserDetect.browser == 'Safari'){
                    tempFlashMatch = tempFlashMatch.replace(/<object /gi, "<div class='flashContainer' style='width:220px;height:220px;' name='flashContainer'><div class='flashContent' style='position:absolute;' name='flashContent'><object ");
                    tempFlashMatch = tempFlashMatch.replace(/<\/object>/gi, "</object></div></div>");
                    divElements[i].innerHTML = tempFlashMatch;    
                }else{
                    tempFlashMatch = tempFlashMatch.replace(/<object /gi, "<div class='flashContainer' name='flashContainer'><div class='flashContent' name='flashContent'><object ");
                    tempFlashMatch = tempFlashMatch.replace(/<\/object>/gi, "</object></div></div>");
                    divElements[i].innerHTML = tempFlashMatch;
                }
            }
            
            
            
        }
      
    } 
    
}

function initPage(){
  resizeSnazzy();
}

function validate_email(field,alerttxt){
	with (field){
		if(value.match(/^([a-zA-Z0-9_+\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$/)) {
		 		return true;
		 	} else {
				alert(alerttxt);
		 		return false;
		 	}
	}
}

function validate_form(thisform)
{
	with (thisform){
		if (validate_email(subscribe,"Please enter a valid Email.")==false){subscribe.focus();return false;}else{return true;}
	}
}

var BrowserDetect = {
	init: function () {
		this.browser = this.searchString(this.dataBrowser) || "An unknown browser";
		this.version = this.searchVersion(navigator.userAgent)
			|| this.searchVersion(navigator.appVersion)
			|| "an unknown version";
		this.OS = this.searchString(this.dataOS) || "an unknown OS";
	},
	searchString: function (data) {
		for (var i=0;i<data.length;i++)	{
			var dataString = data[i].string;
			var dataProp = data[i].prop;
			this.versionSearchString = data[i].versionSearch || data[i].identity;
			if (dataString) {
				if (dataString.indexOf(data[i].subString) != -1)
					return data[i].identity;
			}
			else if (dataProp)
				return data[i].identity;
		}
	},
	searchVersion: function (dataString) {
		var index = dataString.indexOf(this.versionSearchString);
		if (index == -1) return;
		return parseFloat(dataString.substring(index+this.versionSearchString.length+1));
	},
	dataBrowser: [
		{ 	string: navigator.userAgent,
			subString: "OmniWeb",
			versionSearch: "OmniWeb/",
			identity: "OmniWeb"
		},
		{
			string: navigator.vendor,
			subString: "Apple",
			identity: "Safari"
		},
		{
			prop: window.opera,
			identity: "Opera"
		},
		{
			string: navigator.vendor,
			subString: "iCab",
			identity: "iCab"
		},
		{
			string: navigator.vendor,
			subString: "KDE",
			identity: "Konqueror"
		},
		{
			string: navigator.userAgent,
			subString: "Firefox",
			identity: "Firefox"
		},
		{
			string: navigator.vendor,
			subString: "Camino",
			identity: "Camino"
		},
		{		// for newer Netscapes (6+)
			string: navigator.userAgent,
			subString: "Netscape",
			identity: "Netscape"
		},
		{
			string: navigator.userAgent,
			subString: "MSIE",
			identity: "Explorer",
			versionSearch: "MSIE"
		},
		{
			string: navigator.userAgent,
			subString: "Gecko",
			identity: "Mozilla",
			versionSearch: "rv"
		},
		{ 		// for older Netscapes (4-)
			string: navigator.userAgent,
			subString: "Mozilla",
			identity: "Netscape",
			versionSearch: "Mozilla"
		}
	],
	dataOS : [
		{
			string: navigator.platform,
			subString: "Win",
			identity: "Windows"
		},
		{
			string: navigator.platform,
			subString: "Mac",
			identity: "Mac"
		},
		{
			string: navigator.platform,
			subString: "Linux",
			identity: "Linux"
		}
	]

};
BrowserDetect.init();

/* 
 * XHTML documment.write() Support (v1.5.2) - Parses string argument into DOM nodes
 *     appends them to the document immediately after the last loaded SCRIPT element,
 *     or to the BODY if the document has been loaded.
 *  by Weston Ruter, Shepherd Interactive <http://www.shepherd-interactive.com/>
 *  <http://weston.ruter.net/projects/xhtml-document-write/>
 * 
 * Copyright 2008, Shepherd Interactive. Licensed under GPL <http://creativecommons.org/licenses/GPL/2.0/>
 * Incorporates HTML Parser By John Resig <http://ejohn.org/files/htmlparser.js>
 * Original code by Erik Arvidsson, Mozilla Public License
 *
 * $Id$
 */

try {
	document.write('');
	//Opera doesn't seem to complain, so make it complain if XHTML
	if(window.opera && document.documentElement.namespaceURI)
		throw Error();
}
catch(e){
	(function(){
	var htmlns = 'http://www.w3.org/1999/xhtml';
	var win = window;
	var doc = document;
	
	//Keep track of when the document has been loaded
	var isDOMLoaded = false;
	function markLoaded(){
		isDOMLoaded = true;
	}
	if(doc.addEventListener)
		doc.addEventListener('DOMContentLoaded', markLoaded, false);
	if(win.addEventListener)
		win.addEventListener('load', markLoaded, false);
	if(win.attachEvent)
		win.attachEvent('onload', markLoaded);

	//Any script element IDs specified here will cause them to be ignored
	var scriptIgnoreIDs = makeMap("_firebugConsoleInjector,_firebugConsole");
	
	var parentNode;
	var lastScript;
	var parser;

	doc.write = function(str){
		//Find where new nodes will be placed
		var thisScript;
		if(!isDOMLoaded){
			//Get the last script element, the one that is calling document.write()
			var scripts = doc.getElementsByTagNameNS(htmlns, 'script');
			for(var i = scripts.length-1; i >= 0; i--){
				if(!scripts[i].id || !scriptIgnoreIDs[scripts[i].id]){
					thisScript = scripts[i];
					break;
				}
			}
			
			//Set where new nodes will be appended to
			if(!parentNode){
				parentNode = thisScript.parentNode;
			}
			
			//If we're in the same script element, then continue where left off, 
			//  but if calling from new script element, reset the parentNode.
			//  It will be better in the future to actually keep track of the 
			//  nodes in between the two script elements and to move them to be
			//  inside of any HTML fragment that had yet to be closed.
			if(thisScript != lastScript) {
				parentNode = thisScript.parentNode;
				parser = null; //destroy the parser
				lastScript = thisScript;
			}
		}
		else if(!parentNode) {
			parentNode = doc.getElementsByTagNameNS(htmlns, 'body')[0];
		}
		
		if(parser){
			parser.parse(str);
		}
		else {
			parser = new HTMLParser(str, {
				start:function(tag, attrs, unary){
					var el = doc.createElementNS(htmlns, tag);
					for(var i = 0; i < attrs.length; i++)
						el.setAttribute(attrs[i].name, attrs[i].value);
					
					parentNode.appendChild(el);
					if(!unary)
						parentNode = el;
				},
				end:function(tag){
					parentNode = parentNode.parentNode;
				},
				chars:function(text){
					if(text){
						parentNode.appendChild(doc.createTextNode(text));
					}
				},
				comment:function(text){
					parentNode.appendChild(doc.createComment(text));
				}
			});
		}
	};
	
	

	//-- Begin HTML Parser By John Resig (ejohn.org) ---------------------
	// Regular Expressions for parsing tags and attributes
	var startTag = /^<(\w+)((?:\s+\w+(?:\s*=\s*(?:(?:"[^"]*")|(?:'[^']*')|[^>\s]+))?)*)\s*(\/?)>/,
		endTag = /^<\/(\w+)[^>]*>/,
		attr = /(\w+)(?:\s*=\s*(?:(?:"((?:\\.|[^"])*)")|(?:'((?:\\.|[^'])*)')|([^>\s]+)))?/g;
		
	// Empty Elements - HTML 4.01
	var empty = makeMap("area,base,basefont,br,col,frame,hr,img,input,isindex,link,meta,param,embed");

	// Block Elements - HTML 4.01
	var block = makeMap("address,applet,blockquote,button,center,dd,del,dir,div,dl,dt,fieldset,form,frameset,hr,iframe,ins,isindex,li,map,menu,noframes,noscript,object,ol,p,pre,script,table,tbody,td,tfoot,th,thead,tr,ul");

	// Inline Elements - HTML 4.01
	var inline = makeMap("a,abbr,acronym,applet,b,basefont,bdo,big,br,button,cite,code,del,dfn,em,font,i,iframe,img,input,ins,kbd,label,map,object,q,s,samp,script,select,small,span,strike,strong,sub,sup,textarea,tt,u,var");

	// Elements that you can, intentionally, leave open
	// (and which close themselves)
	var closeSelf = makeMap("colgroup,dd,dt,li,options,p,td,tfoot,th,thead,tr");

	// Attributes that have their values filled in disabled="disabled"
	var fillAttrs = makeMap("checked,compact,declare,defer,disabled,ismap,multiple,nohref,noresize,noshade,nowrap,readonly,selected");

	// Special Elements (can contain anything)
	var special = makeMap("script,style");

	//document.write(): this HTMLParser function has been turned into an object which allows
	//  for incremental parsing via HTMLParser.parse(moreHTML). This conversion was done late
	//  at night so it surely has areas of stylistic and functional improvement
	var HTMLParser /*= this.HTMLParser*/ = function( html, handler ) {
		var index, chars, match, stack = [];//, last = html;
		stack.last = function(){
			return this[ this.length - 1 ];
		};
		
		//parse method added for document.write()
		this.parse = function(moreHTML){
			last = html = moreHTML;
		while ( html ) {
			chars = true;

			// Make sure we're not in a script or style element
			if ( !stack.last() || !special[ stack.last() ] ) {

				// Comment
				if ( html.indexOf("<!--") == 0 ) {
					index = html.indexOf("-->");
	
					if ( index >= 0 ) {
						if ( handler.comment )
							handler.comment( html.substring( 4, index ) );
						html = html.substring( index + 3 );
						chars = false;
					}
	
				// end tag
				} else if ( html.indexOf("</") == 0 ) {
					match = html.match( endTag );
	
					if ( match ) {
						html = html.substring( match[0].length );
						match[0].replace( endTag, parseEndTag );
						chars = false;
					}
	
				// start tag
				} else if ( html.indexOf("<") == 0 ) {
					match = html.match( startTag );
	
					if ( match ) {
						html = html.substring( match[0].length );
						match[0].replace( startTag, parseStartTag );
						chars = false;
					}
				}

				if ( chars ) {
					index = html.indexOf("<");
					
					var text = index < 0 ? html : html.substring( 0, index );
					html = index < 0 ? "" : html.substring( index );
					
					if ( handler.chars )
						handler.chars( text );
				}

			} else {
				html = html.replace(new RegExp("(.*)<\/" + stack.last() + "[^>]*>"), function(all, text){
					text = text.replace(/<!--(.*?)-->/g, "$1")
						.replace(/<!\[CDATA\[(.*?)]]>/g, "$1");

					if ( handler.chars )
						handler.chars( text );

					return "";
				});

				parseEndTag( "", stack.last() );
			}

			if ( html && html == last )
				throw "Parse Error: " + html;
			last = html;
		}
		};

		// Clean up any remaining tags
		//parseEndTag(); //for document.write(), do not do this!

		function parseStartTag( tag, tagName, rest, unary ) {
			if ( block[ tagName ] ) {
				while ( stack.last() && inline[ stack.last() ] ) {
					parseEndTag( "", stack.last() );
				}
			}

			if ( closeSelf[ tagName ] && stack.last() == tagName ) {
				parseEndTag( "", tagName );
			}

			unary = empty[ tagName ] || !!unary;

			if ( !unary )
				stack.push( tagName );
			
			if ( handler.start ) {
				var attrs = [];
	
				rest.replace(attr, function(match, name) {
					var value = arguments[2] ? arguments[2] :
						arguments[3] ? arguments[3] :
						arguments[4] ? arguments[4] :
						fillAttrs[name] ? name : "";
					
					attrs.push({
						name: name,
						value: value,
						escaped: value.replace(/(^|[^\\])"/g, '$1\\\"') //"
					});
				});
	
				if ( handler.start )
					handler.start( tagName, attrs, unary );
			}
		}

		function parseEndTag( tag, tagName ) {
			// If no tag name is provided, clean shop
			if ( !tagName )
				var pos = 0;
				
			// Find the closest opened tag of the same type
			else
				for ( var pos = stack.length - 1; pos >= 0; pos-- )
					if ( stack[ pos ] == tagName )
						break;
			
			if ( pos >= 0 ) {
				// Close all the open elements, up the stack
				for ( var i = stack.length - 1; i >= pos; i-- )
					if ( handler.end )
						handler.end( stack[ i ] );
				
				// Remove the open elements from the stack
				stack.length = pos;
			}
		}
		
		//This gets everything going
		this.parse(html);
	};

	function makeMap(str){
		var obj = {}, items = str.split(",");
		for ( var i = 0; i < items.length; i++ )
			obj[ items[i] ] = true;
		return obj;
	}
	//-- End HTML Parser By John Resig (ejohn.org) ---------------------
	
	})();
}


function logclick() {
        if(pageTracker){
            var hrefString = this.href;
            var regex = '/'+location.hostname+'/';
            if(hrefString.search(regex) == -1){
            pageTracker._trackPageview('/outgoing/' + this.href);
            }
        }
        return false;
}

window.onload = function () {
   
    initPage();
    var linktags = document.getElementsByTagName('a');
    var links = $A(linktags);

    links.each(function(node){
    if (node.addEventListener){
        node.addEventListener('click', logclick, false);
    } else if (node.attachEvent){
        node.attachEvent('onclick', logclick);
    }
    });
    var urlRegEx = /killerforums/ig;
    var URLString = location.href;
    if(!URLString.match(urlRegEx)){
        fixPromoMods(document.getElementById('promoContainer'));
    }
    if(document.getElementById('recaptcha_widget_div') && location.href.indexOf('bigfootnetworks.com') != -1 && BrowserDetect.browser == 'Safari'){
        document.getElementById('recaptcha_widget_div').style.position = 'relative';
        document.getElementById('recaptcha_widget_div').style.top = '-307px';
        document.getElementById('recaptcha_widget_div').style.left = '570px';
    }
}

function reAdjustAntiXML(){
    if(!document.all){
        document.getElementById('ciiRetailTable').setAttribute('class', 'whereToBuyTable');
        document.getElementById('topNavigationUL').setAttribute('style', 'position: relative; top: -18px; font-size: .75em; '+
        'font-family: "Verdana", Arial, Helvetica; margin-bottom: -18px;');
        menuObj =  document.getElementById('Menu3');
        liItems = menuObj.getElementsByTagName('font');
        for(i = 0; i < liItems.length; i++){
            liItems[i].setAttribute('style', 'color: #fff;');
        }
    }
}
