var traction = function (args) {
	if (arguments.length < 1)
		return false;

	function fix_prot (url) {
		alert(document.location.protocol);
		return document.location.protocol + url.substr(url.indexOf('://')+1);
	}

	for (var i = 0; i < arguments.length; i++) {
		var url = arguments[i];
		if (url.indexOf('://ads.traffiq.com/') >= 4) {
			// TRAFFIQ
			var tq = document.createElement("script");
			tq.src = fix_prot(url);
			tq.type = 'text/javascript';
			document.body.appendChild(tq);
		} else if (url.indexOf('://view.atdmt.com/') >= 4) {
			// Atlas
			var atdmt = new Image();
			atdmt.src = fix_prot(url);
		} else if (url.indexOf('://ads.mmi-agency.com/') >= 4) {
			// MMI Ad Server
			var mads = new Image();
			mads.src = url;
		} else if (url.indexOf('/') == 0) {
			// Google Analytics
			if (typeof pageTracker != 'undefined') {
				try {
					pageTracker._trackPageview(url);
				} catch (err) {}
			}
			// ClickTracks
			if (typeof CT_RecordView == 'function') {
				try {
					CT_RecordView(url, 'GET');
				} catch (err) {}
			}
		}
	}
}


var ua = {
	ie:function () { return this._ie; },
	firefox:function () { return this._firefox; },
	opera:function () { return this._opera; },
	safari:function () { return this._safari; },
	windows:function () { return this._windows; },
	osx:function () { return this._osx; },
	populate:function () {
		var agent = /(?:MSIE.(\d+\.\d+))|(?:(?:Firefox|GranParadiso).(\d+\.\d+))|(?:Opera.(\d+\.\d+))|(?:AppleWebKit.(\d+(?:\.\d+)?))/.exec(navigator.userAgent);
		var os = /(Mac OS X;)|(Windows;)/.exec(navigator.userAgent);
		if (agent) {
			ua._ie = agent[1] ? parseFloat(agent[1]) : NaN;
			ua._firefox = agent[2] ? parseFloat(agent[2]) : NaN;
			ua._opera = agent[3] ? parseFloat(agent[3]) : NaN;
			ua._safari = agent[4] ? parseFloat(agent[4]) : NaN;
		} else {
			ua._ie = ua._firefox = ua._opera = ua._safari = NaN;
		}
		if (os) {
			ua._osx = !!os[1];
			ua._windows = !!os[2];
		} else {
			ua._osx = ua._windows = false;
		}
	}
};
ua.populate();


function ge(id) {
	if (typeof id == "undefined") {
		return null;
	}
	var obj;
	if (typeof id == "string") {
		obj = document.getElementById(id);
		if (!(ua.ie() >= 7)) {
			return obj;
		}
		if (!obj) {
			return null;
		} else if (typeof obj.id == "string" && obj.id == id) {
			return obj;
		} else {
			return null;
		}
	} else {
		return id;
	}
	return null;
}


function hide() {
	for (var i = 0; i < arguments.length; i++) {
		var element = ge(arguments[i]);
		if (element && element.style) {
			element.style.display = "none";
		}
	}
	return false;
}


function addEventBase(obj, type, fn, name_hash) {
	if (obj.addEventListener) {
		obj.addEventListener(type, fn, false);
	} else if (obj.attachEvent) {
		obj["e" + type + fn + name_hash] = fn;
		obj[type + fn + name_hash] = function () {obj["e" + type + fn + name_hash](window.event);};
		obj.attachEvent("on" + type, obj[type + fn + name_hash]);
	}
}


function removeEventBase(obj, type, fn, name_hash) {
	if (obj.removeEventListener) {
		obj.removeEventListener(type, fn, false);
	} else if (obj.detachEvent) {
		obj.detachEvent("on" + type, obj[type + fn + name_hash]);
		obj[type + fn + name_hash] = null;
		obj["e" + type + fn + name_hash] = null;
	}
}


/*
function drop_down_menu(arrow, link, menu, list, arrow_class, arrow_old_class) {
	if (menu.style.display == "none") {
		menu.style.display = "block";
		var old_arrow_classname = arrow_old_class ? arrow_old_class : arrow.className;
		if (link) { link.className = "active"; }
//		arrow.className = arrow_class ? arrow_class : "global_menu_arrow_active";
		if (list) {
			var old_list_classname = list.className;
			list.className = old_list_classname + ' hover';
		}
		var justChanged = true;
		menu.offclick = (
			function (e) {
				if (!justChanged) {
					hide(this);
					if (link) { link.className = ""; }
					arrow.className = old_arrow_classname;
					if (list) { list.className=old_list_classname; }
					removeEventBase(document, "click", this.offclick, menu.id);
				} else {
					justChanged = false;
				}
			}
		).bind(menu);
		addEventBase(document, "click", menu.offclick, menu.id);
	}
	if (list) { list.blur(); }
	return false;
}



function bind(obj, method) {
	var args = [];
	for (var ii = 2; ii < arguments.length; ii++) {
		args.push(arguments[ii]);
	}
	return function () {
		var _obj = obj || this;
		var _args = args.slice();
		for (var jj = 0; jj < arguments.length; jj++) {
			_args.push(arguments[jj]);
		}
		if (typeof method == "string") {
			if (_obj[method]) {
				return _obj[method].apply(_obj, _args);
			}
		} else {
			return method.apply(_obj, _args);
		}
	};
}


// Prototypes

Function.prototype.bind = function (context) {
	var argv = [arguments[0], this];
	var argc = arguments.length;
	for (var ii = 1; ii < argc; ii++) {
		argv.push(arguments[ii]);
	}
	return bind.apply(null, argv);
};

if(!Array.indexOf) {
	Array.prototype.indexOf = function(obj, start) {
		for(var i=(start||0); i<this.length; i++) {
			if(this[i]==obj) {
				return i;
			}
		}
		return -1;
	};
}
*/

String.prototype.trim = function() {
	return this.replace(/^\s+|\s+$/g,"");
};
/* End Subnav */

/* Universal EventHandler functions */
function addEventHandler(obj, eventName, functionNotify) {
   if (obj.attachEvent) {
      obj.attachEvent('on' + eventName, functionNotify);
   }
   else if (obj.addEventListener) {
      obj.addEventListener(eventName, functionNotify, true);
   }
   else {
      obj['on' + eventName] = functionNotify;
   }
}

function removeEventHandler(obj, eventName, functionNotify) {
   if (obj.detachEvent) {
      obj.detachEvent('on' + eventName, functionNotify);
   }
   else if (obj.removeEventListener) {
      obj.removeEventListener(eventName, functionNotify, true);
   }
   else {
      obj['on' + eventName] = null;
   }
}



/* This was used by the contact us form,
   but now it is not used.  We might just
   hang-on to it for now. */
function toggle_display(id) {
	if (!id) { return false; }
	var o = ge(id);
	if (o.style.display == 'none') {
		o.style.display = 'block';
	} else {
		o.style.display = 'none';
	}
	return false;
}


var submit_in_progress = false;
function contact_us(form) {
	if (submit_in_progress) {
		return false;
	}
	ge('spinner').style.visibility = 'visible';
	submit_in_progress = true;

	var uri = '';
	uri += 'first_name=' + escape(form.first_name.value);
	uri += '&last_name=' + escape(form.last_name.value);
	uri += '&company=' + escape(form.company.value);
	uri += '&website=' + escape(form.website.value);
	uri += '&job_title=' + escape(form.job_title.value);
	uri += '&email=' + escape(form.email.value);
	uri += '&phone=' + escape(form.phone.value);
	uri += '&role=';
	if (form.advertiser.checked) {
		uri += 'advertiser';
	} else if (form.publisher.checked) {
		uri += 'publisher';
	} else if (form.ad_agency.checked) {
		uri += 'ad_agency';
	} else if (form.press.checked) {
		uri += 'press';
	} else if (form.other.checked) {
		uri += 'other';
	}
	uri += '&reason=';
	if (form.reason_buying_inventory.checked) {
		uri += 'buying_inventory,';
	}
	if (form.reason_selling_inventory.checked) {
		uri += 'selling_inventory,';
	}
	if (form.reason_ad_serving.checked) {
		uri += 'ad_serving,';
	}
	if (form.reason_campaign_management.checked) {
		uri += 'campaign_management,';
	}
	if (form.reason_business_opportunities.checked) {
		uri += 'business_opportunities,';
	}
	if (form.reason_press_inquiries.checked) {
		uri += 'press_inquiries,';
	}
	if (form.reason_other.checked) {
		uri += 'other,';
	}
	uri += '&optin=';
	if (form.optin.checked) {
		uri += 'yes';
	} else {
		uri += 'no';
	}
//	for (var i = 0; i < form.length; i++) {
//		uri += form.elements[i].name+'='+form.elements[i].value+'&';
//	}
//	alert(uri);

	// clear the warning message so that it doesn't linger
	ge('error_block').style.visibility = 'hidden';

	var script = document.createElement('script');
	script.src = form.action + '?' + uri + '&cburst=' + Math.floor(Math.random()*999999);
	document.body.appendChild(script);

	return false;
}

function make_red (fields) {
	var first_field = fields[0];
	for (var i = 0; i < fields.length; i++) {
		var field = ge(fields[i]);
		if (field.className.indexOf('error') == -1) {
			var oldClassName = field.className;
			field.className += ' error';
			addEventHandler(field, 'change', function () { this.className = oldClassName; } );
		}
	}
	if (first_field)
		ge(first_field).focus();
}





/* Value Props */
function prop_in(e, inc) {
	inc = inc + 1;
	pos = prop_default_position + inc*inc*4;
	font_size = props[e].reset_fontSize - (inc*inc)/2;
	opacity = ((inc)/16)*((inc)/16)*((inc)/16)*((inc)/16);
	props[e].style.opacity = opacity;
	if (ua.ie()) {
//		// leave opacity while zooming into page
//		//props[e].filters[1].opacity = Math.floor(opacity*100);
	}
	if (pos >= 0) {
		pos = 0;
		props[e].style.fontStyle = 'normal';
		props[e].style.fontSize = props[e].target_fontSize+'px';
		if (ua.ie()) {
//			props[e].filters[0].Enabled = true;
		}
		prop_hold_speed = 0 + props[e].innerHTML.length*35;
		setTimeout('prop_out('+e+','+0+')', prop_hold_speed);
	} else {
		if (font_size >= props[e].target_fontSize) {
			props[e].style.fontSize = font_size+'px';
		}
		setTimeout('prop_in('+e+','+inc+')', prop_init_speed);
	}
}
function prop_out(e, inc) {
	inc = inc + 1;
	opacity = (10 - inc)/10;
	if (opacity <= 0) {
		prop_reset(e);
		if (e >= (prop_count)) {
			var next_prop = 1;
		} else {
			var next_prop = e+1;
		}
		props[next_prop].style.visibility = 'visible';
		prop_in(next_prop, 0, prop_init_speed);
	} else {
		setTimeout('prop_out('+e+','+inc+')', prop_init_speed);
		if (ua.ie()) {
//			props[e].filters[1].opacity = Math.floor(opacity*100);
////			props[e].style.filter = "progid:DXImageTransform.Microsoft.dropshadow(color=#333333,OffX=1,OffY=2) progid:DXImageTransform.Microsoft.Alpha(opacity="+100*opacity+")";
		} else {
			props[e].style.opacity = opacity;
		}
	}
}
function prop_reset(e) {
	props[e].style.opacity = props[e].reset_opacity;
	if (ua.ie()) {
//		props[e].filters[0].Enabled = false;
//		//props[e].filters[1].opacity = Math.floor(props[e].reset_opacity*100);
//		props[e].filters[1].opacity = Math.floor(100); // full opacity while zooming onto page
	}
	props[e].style.top = props[e].reset_top+'px';
	props[e].style.fontStyle = props[e].reset_fontStyle;
	props[e].style.fontSize = props[e].reset_fontSize+'px';
	props[e].style.visibility = 'hidden';
}
function prop_start() {
	if (ge('value_props') == null) {
		return false;
	}

	prop_count = ge('value_props').getElementsByTagName('li').length;
	for (i=1; i<=prop_count; i++) {
		props[i] = ge('vp'+i);
		var new_lines = 0;
		var first_br = -1;
		var second_br = -1;
		var third_br = -1;
		first_br = props[i].innerHTML.indexOf('<br');
		if (first_br == -1)
			first_br = props[i].innerHTML.indexOf('<BR');
		if (first_br > 0) {
			new_lines++;
			second_br = props[i].innerHTML.indexOf('<br', first_br+3);
			if (second_br == -1)
				second_br = props[i].innerHTML.indexOf('<BR', first_br+3);
		}
		if (second_br > 0) {
			new_lines++;
			third_br = props[i].innerHTML.indexOf('<br', second_br+3);
			if (third_br == -1)
				third_br = props[i].innerHTML.indexOf('<BR', second_br+3);
		}
		if (third_br > 0) {
			new_lines++;
		}

		switch (new_lines) {
			case 0: props[i].reset_top = 83; break;
			case 1: props[i].reset_top = 57; break;
			case 2: props[i].reset_top = 35; break;
		}

		props[i].reset_left = prop_default_position;
		props[i].reset_opacity = 0;
		if (ua.ie()) {
//			props[i].style.filter = "progid:DXImageTransform.Microsoft.dropshadow(color=#333333,OffX=1,OffY=2) progid:DXImageTransform.Microsoft.Alpha(opacity=0)";
		}
		props[i].reset_fontStyle = 'italic';
		props[i].reset_fontSize = '200';
		props[i].target_fontSize = '44';
		prop_reset(i);
	}

	// Start at random
	var rand_start = Math.floor(Math.random()*prop_count);
	if (rand_start == 0) { rand_start = 1; }
	props[rand_start].style.visibility = 'visible';
	prop_in(rand_start, 0);
}
// Start the Value Props
var props = new Array();
var prop_default_position = -980;
var prop_hold_speed = 4000;
var prop_init_speed = 20;
var prop_count = 0;
addEventHandler(window, 'load', prop_start);



/* Logo Scroller */
function scroll_logos (speed, inc, pos, stop) {
	logo_scroller_element.style.backgroundPosition='-'+pos+'px 0px';
	inc = inc+1;
	pos = pos + inc*2;
	if (pos < stop) {
		setTimeout('scroll_logos('+speed+','+inc+','+pos+','+stop+')',speed);
	} else {
		logo_scroller_element.style.backgroundPosition='-'+stop+'px 0px';
		setTimeout('scroll_logos('+scroll_speed+','+0+','+stop+','+(stop+980)+')',hold_speed);
	}
}
function scroll_logos_start () {
	logo_scroller_element = ge('logo_scroller');
	if (logo_scroller_element == null) {
		return false;
	}
	logo_scroller_element.style.backgroundPosition='-'+init_pos*980+'px 0px';
	setTimeout('scroll_logos('+scroll_speed+','+0+','+(init_pos*980)+','+(init_pos*980+980)+')', hold_speed/2);
}
var scroll_speed = 1;
var hold_speed = 4000;
var milli = new Date();
var sec = milli.getUTCMilliseconds()/100+1; // gives us 1 through 10
var init_pos = Math.floor(sec);
var logo_scroller_element;
addEventHandler(window, 'load', scroll_logos_start);



/* News Paginator */
var headlines;
var pages;
var col_width;
var cur_pos;
var button_left;
var button_right;
function paginator_init () {
	log('Begin Init:');
	headlines = ge('headlines');
	log('	headlines = '+headlines);
	if (headlines != null) {
//		headlines.style.width='510px';
		headlines.style.width='20000px';
		headlines.style.marginTop='20px';
		var page_tags = headlines.getElementsByTagName('ul');
		pages = new Array();
		for (var i=0; i<=page_tags.length-1; i++) {
			if (typeof(page_tags[i]) == 'object') {
				pages.push(page_tags[i]);
				log('i='+i+' : '+typeof(page_tags[i]));
				page_tags[i].style.width='510px';
				page_tags[i].style.marginTop='15px';
				page_tags[i].style.cssFloat='left';
				page_tags[i].style.styleFloat='left';
			}
		}
		col_width = pages[0].offsetWidth;
		cur_pos = get_current_pos();

		// create the buttons
		button_left = document.createElement('a');
		button_right = document.createElement('a');
		button_left_span = document.createElement('span');
		button_right_span = document.createElement('span');
		button_left_span.innerHTML = '&laquo; More Recent';
		button_right_span.innerHTML = 'Older &raquo;';
		button_left.href = '';
		button_right.href = '';
		button_left.onclick = Function("return paginator_shift_left()");
		button_right.onclick = Function("return paginator_shift_right()");
		button_left.className = 'button button_left';
		button_right.className = 'button button_right';
		button_left.appendChild(button_left_span);
		button_right.appendChild(button_right_span);
		headlines.parentNode.appendChild(button_left);
		headlines.parentNode.appendChild(button_right);
		button_left.style.display = 'none';
		log('	pages.length = '+pages.length);
		log('	col_width = '+col_width);
		log('	cur_pos = '+cur_pos);
		log('End Init');
	}
}
function get_current_pos () {
	var margin = headlines.style.marginLeft;
	pos = parseInt(margin.substr(1, margin.length-3));
	if (!(pos > 0))
		pos = 0;
	return pos;
}

var debug_iterations;
function paginator_shift_right () {
	if (!(cur_pos % col_width == 0))
		return false; // do not run while running
	button_left.style.display = 'block';
	cur_pos = get_current_pos();
	var new_pos = (cur_pos/col_width + 1) * col_width;
	if (new_pos == ((pages.length - 1) * col_width))
		button_right.style.display = 'none';
	if (new_pos >= (pages.length * col_width)) {
		return false;
	} else {
//		headlines.style.marginLeft = '-'+new_pos+'px';
		debug_iterations = 0;
		log('shift_right: (cur_pos, new_pos) ('+cur_pos+', '+new_pos+')');
		paginator_slide(cur_pos, new_pos);		
	}
	return false;
}
function paginator_shift_left () {
	if (!(cur_pos % col_width == 0))
		return false; // do not run while running
	button_right.style.display = 'block';
	cur_pos = get_current_pos();
	var new_pos = (cur_pos/col_width - 1) * col_width;
	if (new_pos < col_width)
		button_left.style.display = 'none';
	if (new_pos < 0) {
		return false;
	} else {
		debug_iterations = 0;
		log('shift_left: (cur_pos, new_pos) ('+cur_pos+', '+new_pos+')');
		paginator_slide(cur_pos, new_pos);
	}
	return false;
}
function paginator_slide (orig_pos, target_pos, cur_pos) {
	debug_iterations++;
	cur_pos = get_current_pos();
	if (target_pos > orig_pos) {
		if (target_pos <= cur_pos) {
			headlines.style.marginLeft = '-'+target_pos+'px';
			return true;
		}
//linear		var new_pos = cur_pos + 85;
		var delta = Math.ceil(Math.pow(3,(debug_iterations+1)));
		var new_pos = cur_pos + delta;
		if (target_pos < new_pos)
			new_pos = target_pos;
		log('Iteration '+debug_iterations+') ['+orig_pos+' -> '+target_pos+'] : ['+cur_pos+' -> '+new_pos+'] : /\\='+delta);
	} else
	if (target_pos < orig_pos) {
		if (target_pos >= cur_pos) {
			headlines.style.marginLeft = '-'+target_pos+'px';
			return true;
		}
//linear		var new_pos = cur_pos - 85;
		var delta = Math.ceil(Math.pow(3,(debug_iterations+1)));
		var new_pos = cur_pos - delta;
		if (target_pos > new_pos)
			new_pos = target_pos;
		log('Iteration '+debug_iterations+') ['+orig_pos+' -> '+target_pos+'] : ['+cur_pos+' -> '+new_pos+'] : /\\='+delta);
	} else {
		return true;
	}

	if (new_pos < 0) new_pos = 0;
	headlines.style.marginLeft = '-'+new_pos+'px';
	setTimeout('paginator_slide('+orig_pos+', '+target_pos+', '+new_pos+')', 50);
	return true;
}
addEventHandler(window, 'load', paginator_init);





/* debuger */
var jslog = document.createElement('div');
jslog.style.position = 'absolute';
jslog.style.top = '0px';
jslog.style.left = '0px';
jslog.style.backgroundColor = '#ccc';
jslog.id = 'js_error_log';
function log(m) {
	p = document.createElement('span');
	p.innerHTML=m+'<br/>'+"\n";
	jslog.appendChild(p);
}
function log_init() {
//	ge('wrapper_body').appendChild(jslog);
}
addEventHandler(window, 'load', log_init);

