


mtvbar = new function () {
	/* Public Variables */

	/* Private Variables */
	var site = 'http://www.mtv.com/';
	var root = 'http://www.mtv.com/widgets/assets/';
	var search = "Search All of MTV.com";

	var params = {
		head: {
		},
		foot_leftcol: {
			'MTV': 'http://www.mtv.com',
			'MTV2': 'http://www.mtv2.com',
			'MTVtr3s': 'http://www.mtvtr3s.com/',
			'MTVU': 'http://www.mtvu.com',
			'img': 'http://www.rhapsody.com/home.html|rhapsody.gif|Rhapsody',
			'MTV Shop': 'http://shop.mtv.com/',
			'Think': 'http://think.mtv.com/'
		},
		foot_midcol: {
		},
		foot_rightcol: {
		},
		foot_bottom: {
			'MTV Labs': 'http://labsblog.mtv.com/',
			'MTV Jobs': 'https://jobhuntweb.viacom.com/jobhunt/main/jobhome.asp',
			'Advertising Opportunities': 'http://adspecs.mtvn.com/site/mtv/mtv.html',
			'Terms of Use': 'http://www.mtv.com/sitewide/mtvinfo/terms.jhtml',
			'Privacy Policy/Your CA Privacy Rights': 'http://www.mtv.com/sitewide/mtvinfo/privacy.jhtml',
			'Copyright Compliance Policy': 'http://www.mtv.com/sitewide/mtvinfo/copyright_compliance.jhtml',
			'User Content Submission Agreement': 'http://www.mtv.com/sitewide/mtvinfo/user_content.jhtml',
			'Social Project Privacy Policy': 'http://www.socialproject.com/PrivacyPolicy.html',
			'Social Project Terms of Use': 'http://www.socialproject.com/TermsOfUse.html'
		},
		search: "on",
		footer: "on",
		cobrand: {display: false}
	};
	var bar = createDiv({id: "mtv_bar"});
	var foot = createDiv({id: "mtv_foot"});

	/* MSN Code Lookup (ORDER IS IMPORTANT!!) */
	var msnCodes = {
		'cmt.com':									'VCM001',
		'sarahsilverman.comedycentral.com':			'VCM022',
		'southpark.comedycentral.com':				'VCM023',
		'menciablog.comedycentral.com':				'VCM082',
		'comedycentral.com/motherload':				'VCM036',
		'comedycentral.com':						'VCM002',
		'logoonline.com':							'VCM003',
		'think.mtv.com':							'VCM032',
		'vmtv.com':									'VCM042',
		'buzzworthy.mtv.com':						'VCM046',
		'iamonmtv.com':								'VCM048',
		'shortcircuitz.mtv.com':					'VCM049',
		'engagedblog.mtv.com':						'VCM076',
		'girlsgonepunkblog.mtv.com':				'VCM077',
		'hatsblog.mtv.com':							'VCM078',
		'headbangersblog.mtv.com':					'VCM079',
		'inferno3blog.mtv.com':						'VCM080',
		'labsblog.mtv.com':							'VCM081',
		'moviesblog.mtv.com':						'VCM083',
		'multiplayerblog.mtv.com':					'VCM084',
		'pimpmyride.mtv.com':						'VCM085',
		'remotecontrol.mtv.com':					'VCM086',
		'scarredblog.mtv.com':						'VCM087',
		'suchinblog.mtv.com':						'VCM088',
		'suckerfreeblog.mtv.com':					'VCM089',
		'yourhereblog.mtv.com':						'VCM091',
		'mtv.com/overdrive':						'VCM045',
		'mtv.com':									'VCM004',
		'thescore.vh1.com':							'VCM059',
		'blog.vh1.com':								'VCM060',
		'ecritic.vh1.com':							'VCM075',
		'vh1.com/vspot':							'VCM056',
		'vh1.com':									'VCM010',
		'vh1classic.com':							'VCM011',
		'mtv2.com':									'VCM005',
		'mtvu.com':									'VCM006',
		'mtvtr3s.com':								'VCM007',
		'ifilm.com':								'VCM008',
		'tvland.com':								'VCM009',
		'addictinggames.com':						'VCM012',
		'atomfilms.com':							'VCM013',
		'addictingclips.com':						'VCM014',
		'gametrailers.com':							'VCM015',
		'neopets.com':								'VCM016',
		'quizilla.com':								'VCM017',
		'ratemyprofessors.com':						'VCM018',
		'shockwave.com':							'VCM019',
		'jokes.com':								'VCM020',
		'southparkstudios.com':						'VCM021',
		'thedailyshow.com':							'VCM024',
		'afterelton.com':							'VCM025',
		'afterellen.com':							'VCM026',
		'365gay.com':								'VCM027',
		'fakegaynews.com':							'VCM028',
		'mtvchi.com':								'VCM029',
		'mtvdesi.com':								'VCM030',
		'mtvk.com':									'VCM031',
		'the-n.com':								'VCM033',
		'uploads.atomfilms.com':					'VCM034',
		'cmn.com':									'VCM035',
		'colbernation.com':							'VCM037',
		'indecision2008.com':						'VCM038',
		'ccinsider.com':							'VCM039',
		'colboard.com':								'VCM040',
		'downelink.com':							'VCM041',
		'wannabemade.com':							'VCM043',
		'mysupersweet16.com':						'VCM044',
		'dancesfromthahood.com':					'VCM047',
		'spike.com':								'VCM050',
		'bestweekever.tv':							'VCM051',
		'ilovenewyork.tv':							'VCM052',
		'worldofpop.tv':							'VCM053',
		'acceptable.tv':							'VCM054',
		'flavoroflovecasting.com':					'VCM055',
		'vh1eyecandy.com':							'VCM057',
		'talentload.tv':							'VCM058',
		'happytreefriends.atomfilms.com':			'VCM061',
		'atomentertainment.com':					'VCM062',
		'xfire.com':								'VCM063',
		'addressthemess.com':						'VCM064',
		'www.bestfilmoncampus.com':					'VCM065',
		'www.bestmusiconcampus.com':				'VCM066',
		'www.darfurisdying.com':					'VCM067',
		'www.friendspacebook.com':					'VCM068',
		'www.smartestmodels.com':					'VCM069',
		'www.subterraneanblog.com':					'VCM070',
		'www.suckerfreeblog.com':					'VCM071',
		'www.thelookrightnow.com':					'VCM072',
		'www.theshotspot.com':						'VCM073',
		'www.trickmytruck.com':						'VCM074',
		'thehillsblog.com':							'VCM090'
	}

	/* Public Functions */
	this.init = function (input) {
		parseParams(input);
		build();
		document.body.insertBefore(bar, document.body.firstChild);
		if (params.footer != "off") {
			appendLoad(mtvbar.write);
		}
	}
		
	this.write = function () {
		document.body.appendChild(foot);
	}

	this.searchFocus = function (event) {
		if (event.type == "focus") {
			if (event.target == null) {
				event.srcElement.value = "";
			} else {
				event.target.value = "";
			}
		} else if (event.type == "blur") {
			if (event.target == null) {
				if (event.srcElement.value == "") {
					event.srcElement.value = search;
				}
			} else {
				if (event.target.value == "") {
					event.target.value = search;
				}
			}
		}
	}

	this.catchEnter = function (event) {
/*
		if (event.type == "keypress") {
			if (event.keyCode == 13) {
				mtvbar.submitSearch(event);
			}
		}
*/
	}

	this.submitSearch = function (event) {
		var input = document.getElementById('mbs_input');
		if (input.value === search) { return false; }
		input.value = input.value.replace(/^\s*|\s(?=\s)|\s*$/g, "").toLowerCase();
		if (input.value.length == 0 || input.value == search) {
			return false;
		} else {
			var form = document.getElementById("mtvbarsearch");
			if (params.search === "msn") {
				var option = form.searchtype.selectedIndex;
				option = form.searchtype.options[option].value;
				if (option === "msn") {
					var code = getMSNCode();
					window.open('http://search.live.com/results.aspx?q=' + input.value + '&mkt=en-us&FORM=' + code);
					return false;
				} else {
					form.submit();
				}
			} else {
				form.submit();
			}
		}
	}

	/* Private Functions */
	function appendLoad (olFunction) {
		var current = window.onload;
		if (typeof window.onload != 'function') {
			window.onload = olFunction;
		} else {
			window.onload = function () {
				if (current) { current(); }
				olFunction();
			}
		}
	}
	
	function build () {
		buildHead();
		if (params.footer != "off") {
			buildFoot();	
		}
	}
	
	function buildHead () {
		var mbContent = createDiv({id: 'mbcontent'});
		mbContent.appendChild(createHeadLinks());
		if (params.search != "off") {
			mbContent.appendChild(createSearch());
		}
		bar.appendChild(mbContent);
	}
	
	function buildImage (name, alt) {
		return '<img src="' + root + name + '" alt="' + alt + '" border="0" />';
	}

	function buildFoot () {
		var bar1 = createDiv({style: "mfbar1"});
		var bar2 = createDiv({style: "mfbar2"});
		foot.appendChild(bar1);
		foot.appendChild(createFootTop());
		foot.appendChild(bar2);
		foot.appendChild(createFootBottom());
	}
	
	function createFootTop () {
		var top = createDiv({id: "mfrow1"});
		var mfTop = createDiv({id: "mftop"});
		var mftNetworks = createDiv({id: "mftnetworks"});
		var mfLogo = createDiv({id: "mflogo"});
		mfLogo.innerHTML = '<img src="'+root+'mtvn.gif" alt="MTV Networks" width="131" height="26" border="0" />';
		mftNetworks.appendChild(mfLogo);
		var mfCopy = createDiv({id: "mfcopy"});
		mfCopy.innerHTML = '&copy; 2007 MTV Networks, &copy; and TM MTV Networks. All Rights Reserved.';
		mftNetworks.appendChild(mfCopy);
		mfTop.appendChild(mftNetworks);
		
		var mftLinks = createDiv({id: 'mftlinks'});
		var cols = new Array("foot_leftcol", "foot_midcol", "foot_rightcol");
		for (var i = 0; i < cols.length; i++) {
			var linkBox = createDiv({style: "mftlinkbox"});
			var col = cols[i];
			var links = params[col];
			var html = "";
			var j = 0;
			for (var linkText in links) {
				var source = links[linkText];
				source = source.split("|");
				if (linkText == "img") {
					linkText = buildImage(source[1], source[2]);
				}
				if (j > 0) { html += " | "; }
				html += '<a href="' + source[0] + '" class="mftlinkitem">' + linkText + '</a>';
				j++;
			}
			linkBox.innerHTML = html;
			mftLinks.appendChild(linkBox);
		}
		mfTop.appendChild(mftLinks);
		
		top.appendChild(mfTop);
		return top;
	}
	
	function createFootBottom () {
		var bottom = createDiv({id: "mfrow2"});

		var mfBottom = createDiv({id: "mfbottom"});
		var links = params["foot_bottom"];
		var html = "";
		var i = 0;
		for (linkText in links) {
			if (i > 0) { html += " | "; }
			html += '<a href="' + links[linkText] + '">' + linkText + '</a>';
			i++;
		}
		mfBottom.innerHTML = html;
		bottom.appendChild(mfBottom);
		
		return bottom;
	}
	
	function createHeadLinks () {
		var mbLinks = createDiv({id: "mblinks"});

		var mbLogo = createDiv({id: "mblogo"});
		if (params.cobrand.display === true) {
			mbLogo.innerHTML = '<a href="' + params.cobrand.url + '">' + buildImage(params.cobrand.logo, params.cobrand.alt) + '</a>';
		} else {
			mbLogo.innerHTML = '<a href="http://www.mtv.com/">' + buildImage("mb_logo.gif", "MTV.com") + '</a>';
		}
		mbLinks.appendChild(mbLogo);

		for (var linkText in params.head) {
			var linkURL = params.head[linkText];
			var link = createDiv({style: "mblink"});
			link.style.float = "left";
			link.innerHTML = '<a href="' + linkURL + '" class="mblinkitem"><img src="'+root+'icon_jump.gif" alt="jump to:" width="5" height="7" border="0" />' + linkText + '</a>';
			mbLinks.appendChild(link);
		}

		return mbLinks;
	}

	function createSearch () {
		var mbSearch = cewi("div", "mbsearch");
		var mbSB = cewi("div", "mbsearchbox");
		var mbSIcon = cewi("div", "mbsearchicon");
		mbSIcon.innerHTML = '<img src="'+root+'search_icon.gif" width="11" height="12" />';

		var mbSForm = cewi("form", "mtvbarsearch");
		mbSForm.action = site + "search/";
		addEvent(mbSForm, "submit", mtvbar.submitSearch);
		mbSForm.method = "get";

		var mbSInput = cewi("div", "mbsearchinput");
		if (params.search === "msn") {
			search = "Search";
			mbSInput.innerHTML = '<input type="text" id="mbs_input" class="narrow" size="25" name="searchterm" value="' + search + '" onfocus="mtvbar.searchFocus(event);" onblur="mtvbar.searchFocus(event);" />';
			var mbSSelect = cewi("div", "mbsearchselect");
			mbSSelect.innerHTML = '<select id="mbs_type" name="searchtype"><option value="mtv">All MTV</option><option value="msn">Web</option></select>';
		} else {
			mbSInput.innerHTML = '<input type="text" id="mbs_input" class="wide" size="35" name="searchterm" value="' + search + '" onfocus="mtvbar.searchFocus(event);" onblur="mtvbar.searchFocus(event);" />';
		}
		var mbSButton = createDiv({id: "mbsearchbutton"});
		mbSButton.innerHTML = '<input type="image" id="mbs_button" src="' + root + 'search_go.gif" width="28" height="18" border="0" alt="search" onclick="mtvbar.submitSearch(event); return false;"/></form>';

		mbSForm.appendChild(mbSIcon);
		mbSForm.appendChild(mbSInput);
		if (params.search === "msn") {
			mbSForm.appendChild(mbSSelect);
		}
		mbSForm.appendChild(mbSButton);
		mbSB.appendChild(mbSForm);
		mbSearch.appendChild(mbSB);
		return mbSearch;
	}
	
	function addEvent (object, event, callback) {
		if (object.addEventListener) {
			object.addEventListener(event, callback, false);
			return true;
		} else if (object.attachEvent) {
			var r = object.attachEvent("on" + event, callback);
			return r;
		} else { 
			return false; 
		}
 	}
	
	function cewi (type, id) {
		var r = document.createElement(type);
		r.id = id;
		return r;
	}
	
	function cewp (element, params) {
		var r = document.createElement(type);
		for (var p in params) {
			r.p = params[p];
		}
		return r;
	}

	function createDiv (info) {
		/* info: object {id, style} */
		var r = document.createElement("div");
		if (info["id"] != "" && info["id"] != undefined) { r.id = info["id"]; }
		if (info["style"] != "" && info["style"] != undefined) { r.className = info["style"]; }
		return r;
	}

	function getMSNCode () {
		var uri = document.URL;
		uri = uri.toLowerCase();
		for (var i in msnCodes) {
			if (uri.indexOf(i) != -1) {
				return msnCodes[i];
			}
		}
		return "VCMOO4";
	}

	function parseParams (input) {
		for (var param in params) {
			var t = typeof(params[param]);
			var i = input[param];
			if (t == "object") {
				if (i != undefined && i.nodeValue != undefined) {
					params[param] = eval("(" + i.nodeValue + ")");
				}
			} else {
				if (i != undefined && i.nodeValue != undefined) {
					params[param] = i.nodeValue;
				}
			}
		}
	}

}

var scripts = document.getElementsByTagName('script');
var index = scripts.length - 1;
mtvbar.init(scripts[index].attributes);
