// Video Magic JS by Anders Eskholm (c) 2007 - anders@eskholm.dk

// README
//
// Renders inline video (embedded) from Streetfire.net, Youtube.com, Vimeo.com, Google Video and MSN Soapbox
// Searches given page elements for links/urls to above mentioned video links, and replaces with embedded video
// This version is custom for Benjamin Magazines online (http://www.benjamin.dk/)
// Modify as you like, but keep original author comment, please.
//
// Replacing only if any valid link is present. Searching both plaintext urls and anchored links.
// Adding proper event listener to onload chain, for script to run at page load end.
//
// Enjoy.

function getPageContent(divId) {
    var content = "";
    try { content = document.getElementById(divId).innerHTML; } catch(E) {;}
    return content ? content : false;
}

function updatePageContent(divId, content) {
    var success = false;
    try { document.getElementById(divId).innerHTML = content; success = true; } catch(E) {;}
    return success;
}

function videoMagic() {
    var content = getPageContent('videoMagic');

    if(content) {
        var orig = content;
    	var serial = 0;

				// Vimeo
        content = content.replace(/<a[^>]*?vimeo\.com\/(\d+).*?<\/a>/gi, "<div style=\"text-align: center;\" id=\"video____vimeo____$1"+"____"+serial+"\"></div>");
        serial++;
        content = content.replace(/http:\/\/(?:www\.)?vimeo\.com\/(\d+)/gi, "<div style=\"text-align: center;\" id=\"video____vimeo____$1"+"____"+serial+"\"></div>");
        serial++;
    	
        // Streetfire
        content = content.replace(/<a[^>]*?videos\.streetfire\.net\/video\/([a-zA-Z0-9\-]+).htm.*?<\/a>/gi, "<div style=\"text-align: center;\" id=\"video____streetfire____$1"+"____"+serial+"\"></div>");
        serial++;
        content = content.replace(/http:\/\/videos\.streetfire\.net\/video\/([a-z0-9\-]+).htm/gi, "<div style=\"text-align: center;\" id=\"video____streetfire____$1"+"____"+serial+"\"></div>");
        serial++;
	
        // Youtube
        content = content.replace(/<a[^>]*?youtube\.com\/watch\?v=([a-zA-Z0-9\-\_]+).*?<\/a>/gi, "<div style=\"text-align: center;\" id=\"video____youtube____$1"+"____"+serial+"\"></div>");
        serial++;
        content = content.replace(/http:\/\/(?:www\.)?youtube\.com\/watch\?v=([a-zA-Z0-9\-\_]+)/gi, "<div style=\"text-align: center;\" id=\"video____youtube____$1"+"____"+serial+"\"></div>");
        serial++;
	
        // Google Video
        content = content.replace(/<a[^>]*?video\.google\.com\/videoplay\?docid=(\d+).*?<\/a>/gi, "<div style=\"text-align: center;\" id=\"video____google____$1"+"____"+serial+"\"></div>");
        serial++;
        content = content.replace(/http:\/\/video\.google\.com\/videoplay\?docid=(\d+)/gi, "<div style=\"text-align: center;\" id=\"video____google____$1"+"____"+serial+"\"></div>");
        serial++;

        // MSN SoapBox
        content = content.replace(/<a[^>]*?soapbox\.msn\.com\/video\.aspx\?vid=([a-zA-Z0-9\-]+).*?<\/a>/gi,"<div style=\"text-align: center;\" id=\"video____soapbox____$1"+"____"+serial+"\"></div>");
        serial++;
        content = content.replace(/http:\/\/soapbox\.msn\.com\/video\.aspx\?vid=([a-z0-9\-]+)/gi,"<div style=\"text-align: center;\" id=\"video____soapbox____$1"+"____"+serial+"\"></div>");
	serial++;

	// MSN Video
        content = content.replace(/<a[^>]*?video\.msn\.com\/video\.aspx\?vid=([a-zA-Z0-9\-]+).*?<\/a>/gi,"<div style=\"text-align: center;\" id=\"video____msn____$1"+"____"+serial+"\"></div>");
        serial++;
        content = content.replace(/http:\/\/video\.msn\.com\/video\.aspx\?vid=([a-z0-9\-]+)/gi,"<div style=\"text-align: center;\" id=\"video____msn____$1"+"____"+serial+"\"></div>");
	serial++;

        if(orig != content) {
			updatePageContent('mainContent',content);
			var divs = document.getElementsByTagName('DIV');
			for(var i = 0; i < divs.length; i++) {
				if(divs[i].id.indexOf('video____') != -1) {
					var id = divs[i].id;
					var params = id.split("____");
					var provider = params[1];
					var videoId = params[2];
					if(provider == 'youtube') {
						var so;
						so = new SWFObject("http://www.youtube.com/v/"+videoId, "flash_embed", "350", "292", "6", "#e5e5e5");
    					so.addParam("scale", "noscale");
    					so.addParam("quality", "high");
    					so.addParam("menu", "false");
    					so.write(id);
					}
					else if(provider == 'google') {
						var so;
						so = new SWFObject("http://video.google.com/googleplayer.swf?docId="+videoId+"&hl=en", "flash_embed", "400", "350", "6", "#e5e5e5");
    					so.addParam("scale", "noscale");
    					so.addParam("quality", "high");
    					so.addParam("menu", "false");
    					so.write(id);
					}
					else if(provider == 'streetfire') {
						var so;
						so = new SWFObject("http://videos.streetfire.net/vidiac.swf", "flash_embed", "428", "352", "6", "#e5e5e5");
    					so.addParam("scale", "noscale");
    					so.addParam("quality", "high");
    					so.addParam("menu", "false");
    					so.addParam("FlashVars","video="+videoId);
    					so.write(id);
					}
					else if(provider == 'vimeo') {
						var so;
						so = new SWFObject("http://vimeo.com/moogaloop.swf?clip_id="+videoId+"&server=vimeo.com&show_title=1&show_byline=1", "flash_embed", "400", "300", "6", "#e5e5e5");
    					so.addParam("scale", "noscale");
    					so.addParam("quality", "high");
    					so.addParam("menu", "false");
    					so.write(id);
					}
					else if(provider == 'soapbox') {
						var so;
						so = new SWFObject("http://images.soapbox.msn.com/flash/soapbox1_1.swf", "flash_embed", "432", "364", "6", "#e5e5e5");
    					so.addParam("scale", "noscale");
    					so.addParam("quality", "high");
    					so.addParam("menu", "false");
    					so.addParam("FlashVars","c=v&v="+videoId);
    					so.write(id);
					}
					else if(provider == 'msn') {
						var so;
						so = new SWFObject("http://images.video.msn.com/flash/soapbox1_1.swf", "flash_embed", "432", "364", "6", "#e5e5e5");
    					so.addParam("scale", "noscale");
    					so.addParam("quality", "high");
    					so.addParam("menu", "false");
    					so.addParam("FlashVars","c=v&v="+videoId);
    					so.write(id);
					}
				}
			}
		}
    }
}

if(window.addEventListener)
    window.addEventListener("load", videoMagic, false);
else if(window.attachEvent)
    window.attachEvent("onload", videoMagic);
else if(document.getElementById)
    window.onload=videoMagic;


