// Browser detect
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: "Chrome",
			identity: "Chrome"
		},
		{ 	string: navigator.userAgent,
			subString: "OmniWeb",
			versionSearch: "OmniWeb/",
			identity: "OmniWeb"
		},
		{
			string: navigator.vendor,
			subString: "Apple",
			identity: "Safari",
			versionSearch: "Version"
		},
		{
			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.userAgent,
			   subString: "iPhone",
			   identity: "iPhone/iPod"
	    },
		{
			string: navigator.platform,
			subString: "Linux",
			identity: "Linux"
		}
	]

};

// Start browser detection 
BrowserDetect.init();

// Add This configuration for social sharing plugin
if(BrowserDetect.browser == "Explorer")
    var addthis_config = {username: "wellthen", services_compact: "facebook, linkedin, twitter, email", ui_use_css:false, ui_offset_top:-15}
else if(BrowserDetect.browser == "Firefox")
    var addthis_config = {username: "wellthen", services_compact: "facebook, linkedin, twitter, email", ui_use_css:false, ui_offset_top:-3}
else
    var addthis_config = {username: "wellthen", services_compact: "facebook, linkedin, twitter, email", ui_use_css:false, ui_offset_top:15}

// Function to display media in the main gallery content area
// m - small-media object from DOM
function showMedia(m) {
    m = m.children("td").children("div")

    // Remove the selection from the old media
    $(".small-media > a").removeClass("selected-media");
    
    // Select the new media
    m.children("a").addClass("selected-media");
    
    // Check for video
    if (m.children(".video-media").children("img").attr("src")) {
        // Create holder for video
        var holder = $("<div id=\"mediaspace\"></div>");
        // Set holder in DOM
        $(".big-media").html(holder)
        // Create video
        showSWF(m.children("span").html(), m.children(".video-media").children("img").attr("src"), "small");
    } else {
        // Create new image
        var newMedia = $("<img src=\""+m.children("span").html()+"\" />")
        // Set new image in DOM
        $(".big-media").html(newMedia);
    }
}

// Funciton to display video in main gallery content area
// video - URL for video
// ex. ondemand/FlashDMSP/DigitalInfluence/UGV/201007/JohnfromthePoi-432300_520_1278714188_JohnfromthePoi.flv
// size - size of video
// ex. large, default is small
function showSWF(video, image, size) {
    video = video.replace("rtmp://qps-Flash.OnstreamMedia.com/ondemand/", "")
    var width = "450";
    var height = "340";
    
    if(size == "large") {
        width = "596";
        height = "385";
    }
    
    // Set up variables
    var flashvars = {
        file: video,
        image: image,
        streamer: "rtmp://qps-Flash.OnstreamMedia.com/ondemand/",
        skin: "/media/swf/whotube.zip",
        stretching: "exactfit"
    };
    var params = {
        allowfullscreen: "true",
        allowscriptaccess: "always",
        wmode: "opaque"
    };
    var attributes = {
        id: "ply",
        name: "ply"
    };
    
    // Show video using SWFObject 2.2
    swfobject.embedSWF("/media/swf/player.swf", "mediaspace", width, height, "9.0.0","expressInstall.swf", flashvars, params, attributes);
}

$.fn.highlight = function(pat) {
    function innerHighlight(node, pat) {
        var skip = 0;
        if (node.nodeType == 3) {
            var pos = node.data.toUpperCase().indexOf(pat);
            if (pos >= 0) {
                var spannode = document.createElement('span');
                spannode.className = 'highlight';
                var middlebit = node.splitText(pos);
                var endbit = middlebit.splitText(pat.length);
                var middleclone = middlebit.cloneNode(true);
                spannode.appendChild(middleclone);
                middlebit.parentNode.replaceChild(spannode, middlebit);
                skip = 1;
            }
        }
        else if (node.nodeType == 1 && node.childNodes && !/(script|style)/i.test(node.tagName)) {
            for (var i = 0; i < node.childNodes.length; ++i) {
                i += innerHighlight(node.childNodes[i], pat);
            }
        }
    
        return skip;
    }
    
    return this.each(function() {
        innerHighlight(this, pat.toUpperCase());
    });
};

// On DOM load finish
$(document).ready(function() {
    
    // Set up navigation for media gallery
    if($(".media-navigation")[0]) {
        var i = 1;
        
        // Set up left arrow functionality
        $(".left-arrow").click(function() {
            if($(".selected-media").parent().parent().parent().prev().html())
                showMedia($(".selected-media").parent().parent().parent().prev());
        });
        
        // Set up right arrow functionality
        $(".right-arrow").click(function() {
            if($(".selected-media").parent().parent().parent().next().html())
                showMedia($(".selected-media").parent().parent().parent().next());
        });
        
        // Set up media icon functionality
        $(".small-media a").click(function() {
            showMedia($(this).parent().parent().parent());
        });
    }
    
    // Set up user email contact form show
    if($(".contact-user")[0]) {
        $(".contact-user").click(function() {
            $(".contact-me").toggle();
        })
    }
    
    $(".flag-form form").submit(function(event) {
        var parent = $(this).parent();
        var form = $(this);
        $("button", this).hide();
        
        $.post('/flag/', 
            {
                csrfmiddlewaretoken: $("input[name=csrfmiddlewaretoken]", this).attr("value"),
                comment: $("textarea[name=comment]", this).val(),
                object_id: $("input[name=object_id]", this).attr("value"),
                content_type: $("input[name=content_type]", this).attr("value"),
                creator_field: $("input[name=creator_field]", this).attr("value"),
                next: $("input[name=next]", this).attr("value")
            }, 
            function(data) {
                form.hide();
                form.parent().siblings("p").toggleClass("hidden");
            }
        );
        return false;
    })
    
    if($(window).height() > $(".body-block").height()) {
        var footerMargin = $(window).height() - $(".body-block").height() + 15;
        $(".footer").attr("style", "margin-top: "+footerMargin+"px");
    }
})
