/**
 * @author camilo & jon
 */

 
var publicHelper;
var categories;
var currentClient = -1;

var unitColumns = new Object();
var tagColumns = new Object();

var animateUnitList = new Array();
var unitsPerPage = 5;
var completeUnitList;
var numberOfPages = 0;
var currentPage = 0;
//för att veta om saker i den andra dropdownen ska "dimmas" eller ej.
var makeSelectionInSecond = false;
var kund = "";
var tag = "";
var clientArray = "";
var showFirst = false;
var showPaging = true;
var amountOfGets = 0;
// denna variabel används frö att kolla om en inkommen tag från querystringen är tävling eller vanlig tag
var loadedIsCompetion = false;


// om sidan som visas inte är listan ska vi ha detta till false
var isUnitList = true;

// Denna lista används för att grupera alla tags vi får från backenden
var firstSelectGroups = [
	{ name: "Mediatyp", idString: "mediatype" },
	//{ name: "Utmärkelser", idString: "prize" },
	{ name: "Mål", idString: "goal" },
	{ name: "Utmärkelser", idString: "competition" },
	{ name: "Årtal", idString: "year" },
	{ name: "Annat", idString: "other" }
]

// init funktion som hämtar data etc
function init()
{
	jQuery("#firstSelect").show();
	jQuery("#secondSelect").show();
	jQuery("#searchBtn").show();
	jQuery("#searchBtn").click(function(){searchBtnClick();});
	
	publicHelper = new PublicHelper();
	showFirst = true;
	kund = "";
	if (window.location.hash.indexOf('/tag/') > 0) {
		var tagCatch = window.location.hash.match(/\/tag\/(.*?)(?=$|\/)/);
		tag = unescape(tagCatch[1]);
		makeSelectionInSecond = true;
	}
	if (window.location.hash.indexOf('/kund/') > 0) {
		var kundCatch = window.location.hash.match(/\/kund\/(.*?)(?=$|\/)/);
		kund = unescape(kundCatch[1]);
	}

	publicHelper.getAllClientCategories(categoriesLoaded);	
	publicHelper.getTagsAndCompetitionsFromUnits([], initLoaded);
}

function initOnlyMenu()
{
	jQuery("#firstSelect").show();
	jQuery("#secondSelect").show();
	jQuery("#searchBtn").show();
	jQuery("#searchBtn").click(function(){searchBtnClick();});

	isUnitList = false;
	
	publicHelper = new PublicHelper();
	publicHelper.getTagsAndCompetitionsFromUnits([], initLoaded);
	publicHelper.getAllClientCategories(categoriesLoaded);	

}

// denna skapar en referens till varje kolumns i datatablen som returneras med jayrock
function createTagColumnRef(list)
{
	for (var i = 0; i < list.length; i++)
	{
		tagColumns[list[i]] = i;
	}
}

/**
 * Callback från när alla taggar har laddats
 * @param {Object} response
 */
function initLoaded(response)
{
	createTagColumnRef(response.result.columns);
	var objectList  = response.result.rows;
	var firstSelect = jQuery("#firstSelect");
	firstSelect.empty();
	
	var optionAll = jQuery("<option value='all' tagstring='-1'>Kategorier</option>");
	firstSelect.append(optionAll);
	
	// gå igenom alla fördefinerade grupperingar
	for (var i = 0; i < firstSelectGroups.length; i++) 
	{
		var group = firstSelectGroups[i];		
		var option = jQuery("<option></option>");
		option.attr("value", "all");
		option.attr("idstring", group.idString);
		option.attr("class", "optionGroup");
		option.html("-- " + group.name + "--");
		option.attr("disabled", "disabled");
		firstSelect.append(option);
	}
	

	
	// gå igenom alla taggar etc
	for(var i = 0; i < objectList.length; i++)
	{
		var item = objectList[i];
		var option = jQuery("<option></option>");
		var groupName = item[tagColumns["metadataIdString"]];
		
		option.attr("id", "firstSelectOption" + item[tagColumns["id"]]);
		option.attr("tagstring", item[tagColumns["name"]]);
		option.attr("value", groupName + "," + item[tagColumns["id"]]);
		option.attr("type", groupName);
		option.html(item[tagColumns["name"]]);

		
		var insertAfter = firstSelect.find("option[idstring='" + groupName + "']");

		if (insertAfter.length == 0) 
		{
			groupName = "other";
			insertAfter = firstSelect.find("option[idstring='other']");
		}
		insertAfter.after(option);
		// lägg till en counter till varje grupp så vi vet vilka som är tomma
		if (firstSelectGroups[groupName] == null) firstSelectGroups[groupName] = 0;
		firstSelectGroups[groupName]++;
		
		// om det finns en tag med från querystring så bestämmer vi här vad det är för tag, tävling eller vanlig
		if (tag == item.name)
		{
			tagType = item[tagColumns["metadataIdString"]];
			if(tagType == "competition")
				loadedIsCompetion = item[tagColumns["id"]];
			else 
				loadedIsCompetion = false;
		}

	}
	
	// kolla alla counters och ta bort de som är tomma
	for (var i = 0; i < firstSelectGroups.length; i++) 
	{
		var group = firstSelectGroups[i];
		if (firstSelectGroups[group.idString] == null) firstSelect.find("option[idstring='" + group.idString + "']").hide();
	}
	firstSelect.change(firstSelectChanged);
	
	if(isUnitList)
		doCall();
	
}


// denna skapar en referens till varje kolumns i datatablen som returneras med jayrock
function createColumnRef(list)
{
	for (var i = 0; i < list.length; i++)
	{
		unitColumns[list[i]] = i;
	}
}
// när vi får en lista med enheter så processeras den här
// ochprintas ut till domen det kör när sidan har laddats
function campaignTopListLoaded(response)
{

	createColumnRef(response.result.columns);
	//om det finns flera units i databasen på den här "requestet" kör en hämtning till
	checkIfToDoMore(response.result.rows.length);
	completeUnitList = response.result.rows;
	currentPage = 0;
	if (showPaging) {
		setPaging(response.result.rows.length);
		showPage(currentPage);
	}
	else
		showPage(-1, response.result.rows);
}

/**
 * Anrop som körs för att ladda "vidare i listan"
 */
function doCall()
{
		var option = jQuery('#firstSelect :selected');
		var type = option.attr("type");
		var clientName = jQuery('#secondSelect :selected').val() != "-1" ? jQuery('#secondSelect :selected').text() : "-1";
		var value = jQuery("#firstSelect").val().split(",")[1];	

		var tagString = option.attr("tagstring") != "-1" && value != "all" ? option.attr("tagstring") :[];
		
		if(kund != "")
			clientName = kund;
		if(tag != "")
			tagString = [tag];	
		if(clientName == "")
			clientName = "-1";
		var compId = type == "competition" ? value : -1;
		if(type == "competition")
		{
			tagString = [];
		}
		//om det är en tävling som laddats via # så sätt tag till compId
		if (loadedIsCompetion != false) {
			tagString = [];
			compId = loadedIsCompetion;
		}	

		if (!(tagString == "" && clientName == "-1" && compId == -1)) {
			showPaging = false;
			removePaging();
		}
		else {
			showPaging = true;
		}
		//här är anropen som körs mot servern, de hämtar enheterna i sjok som är dubbelt så stora som antal-enheter-per-sida
		if(amountOfGets == 0)
			publicHelper.getUnitsFromTagsAndClientNameAndCompetitionByTopAmount(tagString, clientName, compId,0,(unitsPerPage*2), campaignTopListLoaded);
		else
			publicHelper.getUnitsFromTagsAndClientNameAndCompetitionByTopAmount(tagString, clientName, compId,amountOfGets*(unitsPerPage*2),(unitsPerPage*2), contracUnitList);

	//lägger till ett så att vid eventuellt nästa anrops så laddas de nästa i ordningen
	amountOfGets = amountOfGets + 1;
}
/***
 * funktion som lägger ihop det som finns i completeUnit list med det nya anropet
 * @param {Object} response
 */
function contracUnitList(response)
{
    //response.result.rows
	var campaignContainer = jQuery("#campaignList");
	for (var i = 0; i < response.result.rows.length; i++) {
		completeUnitList.push(response.result.rows[i]);
		if(!showPaging)
		{

			if (jQuery("#unit" + response.result.rows[i][completeUnitList.UnitID]).length < 1) {
				domObject = createDomObj(response.result.rows[i]);
				campaignContainer.append(domObject);
				domObject.css("display", "none");
				animateUnitList.push(domObject);
			}
		}
	}
	//om inte kund sätt paging
	if(showPaging)
		updatePaging(completeUnitList.length);
	else
		animateUnits();
		
	checkIfToDoMore(response.result.rows.length);
}
function checkIfToDoMore(resultLength)
{
	if(!(resultLength < (unitsPerPage*2)))
	{
		doCall();
	}
}
/**
 * animerar fram enheterna
 */
function animateUnits()
{
	if (animateUnitList.length > 0) 
	{
		var current = animateUnitList.shift();
		current.slideDown();
		setTimeout(animateUnits, 600);
	}
}
/***
 * callback när kundkatergorierna har laddats
 * @param {Object} response
 */
function categoriesLoaded(response)
{
	var objectList  = response.result;
	var container = jQuery("#secondSelect");
	container.empty();
	
	var optionAll = jQuery("<option value='-1' tagstring='-1' isTop='true'>Kunder</option>");
	container.append(optionAll);
	
	for (var i = 0; i < objectList.length; i++) 
	{
		var group = objectList[i];
		
		var option = jQuery("<option></option>");
		option.attr("value", "-1");
		option.attr("idstring", group.id);
		option.attr("class", "optionGroup");
		option.attr("disabled", "disabled");
		option.html("-- " + group.name + "--");
		
		container.append(option);
	}
	
	categories = objectList;
	
	publicHelper.getAllClientsAsTable(clientsLoaded);
}


/**
 * Klass för att skapa ett objekt av dtaan från kundtabellen
 * @param {Object} id
 * @param {Object} name
 * @param {Object} categoryId
 */
var ClientObject = function(dataRow)
{
	// 0 = ClientID, 1 = ClientName, 2 = CategoryId
	this.id = dataRow[0];
	this.name = dataRow[1];
	this.categoryId = dataRow[2];
}


/**
 * callback när klienterna har laddats sätter även dropdownerna till det som kommer  med i querystringen
 * körs endast när sidanladdas om.
 * @param {Object} response
 */
function clientsLoaded(response)
{
	var objectList  = response.result.rows;
	var container = jQuery("#secondSelect");
	var secondSelectGroups = new Array();
	for(var i = 0; i < objectList.length; i++)
	{
		var item = new ClientObject(objectList[i]);

		var option = jQuery("<option></option>");
		option.attr("id", "secondSelectOption" + item.id);
		option.attr("type", "client");
		option.attr("value", item.id);
		option.html(item.name);

		var groupName = item.categoryId;
		var insertAfter = container.find("option[idstring='" + groupName + "']");
		insertAfter.after(option);
		
		// lägg till en counter till varje grupp så vi vet vilka som är tomma
		if (secondSelectGroups["cat" + groupName] == null) secondSelectGroups["cat" + groupName] = 0;
		secondSelectGroups[groupName]++;
		
		delete item;
	}	
	
	// kolla alla counters och ta bort de som är tomma
	for (var i = 0; i < categories.length; i++) 
	{
		var group = categories[i];
		if (secondSelectGroups["cat" + group.id] == null) container.find("option[idstring='" + group.id + "']").remove();
	}

	
	if (showFirst) {
		if(tag)
			jQuery("#firstSelect option:contains('" + tag + "')").attr("selected", "true");	
		if(kund != "")
		{
			jQuery("#secondSelect option:contains('" + kund + "')").attr("selected", "true");	
		}
					
		if(makeSelectionInSecond)
		{
			if(jQuery("#firstSelect option:contains('" + tag + "')").attr("type") == "competition")
				publicHelper.getClientsByCompetition(jQuery("#firstSelect option:contains('" + tag + "')").val().split(",")[1], clientFilterListLoaded);	
			else
				publicHelper.getClientsByTags(tag, clientFilterListLoaded); 
		}		
	}
	
	container.change(secondSelectChanged);
	
}

/**
 * när den första dropdownen ändras så ändras vilks som dimmas i den andra dropdownen
 */
function firstSelectChanged()
{

	var firstSelect = jQuery("#firstSelect");
	var type = firstSelect.val().split(",")[0];
	var value = firstSelect.val().split(",")[1];
	value = value + "" == "undefined" ? -1 : value;
	if (value != -1)
	{
		if (value != "all") 
		{
			var option = jQuery("#firstSelectOption" + value);
			//var type = option.attr("type") + "";
			//alert(type + "," + (type != "competition") );
			//filterar kund listan "dimma" det som finns inte med i den här Taggen.			
			if (type != "competition") 
			{
				var tagString = option.attr("tagstring") != null ? option.attr("tagstring") : "";
				publicHelper.getClientsByTags(tagString, clientFilterListLoaded);
			}
			else 
				publicHelper.getClientsByCompetition(value, clientFilterListLoaded);

		}
		else
		{
			jQuery("#secondSelect option[value!='-1']").removeAttr("disabled");	
			jQuery("#secondSelect option[value!='-1']").removeClass("disabledSelectOption");	
		}
	}
	else
	{
		
		// först gömmer vi alla kunder
		jQuery("#secondSelect option[value!='-1']").removeAttr("disabled");	
		jQuery("#secondSelect option[value!='-1']").removeClass("disabledSelectOption");
	}
	var secondSelect = jQuery("#secondSelect");
	
	//secondSelect.find("option[istop='true']").attr("selected", "true");
}

/**
 * Denna anropas när man valt en kund
 */
function secondSelectChanged()
{

	
	var selectSelect = jQuery("#secondSelect");
	var value = selectSelect.val();
	var isTop = selectSelect.get(0).selectedIndex == 0;
	
	if (value != -1 || isTop)
	{
		if (!isTop) 
		{
			var option = jQuery("#secondSelectOption" + value);
			publicHelper.getTagsAndCompetitionsFromClient(value, categoryAndCompetitionFilterListLoaded);
		}
		else
		{
			jQuery("#firstSelect option[value!='-1']").removeAttr("disabled");
			jQuery("#firstSelect option[value!='-1']").removeClass("disabledSelectOption");	
		}
	}
	//var secondSelect = jQuery("#secondSelect");
	//secondSelect.find("option[istop='true']").attr("selected", "true");
}


function categoryAndCompetitionFilterListLoaded(response)
{
	var tagsAndCompetitionsOptions = jQuery("#firstSelect > option[value!='all']");
	
	//kontrollera att valet är en tag
	
	// först gömmer vi alla kunder
	tagsAndCompetitionsOptions.attr("disabled", "disabled");
	tagsAndCompetitionsOptions.addClass("disabledSelectOption");
	
	// sen går vi igenom alla kunder vi fått och tänder som ska visas
	for (var i = 0; i < response.result.rows.length; i++) {
		var tagOrCompetitionId = response.result.rows[i][0];
		var tagOrCompetitionMetadata = response.result.rows[i][1];
		jQuery("#firstSelect option[value='" + tagOrCompetitionMetadata + "," + tagOrCompetitionId + "']").removeAttr("disabled");
		jQuery("#firstSelect option[value='" + tagOrCompetitionMetadata + "," + tagOrCompetitionId + "']").removeClass("disabledSelectOption");
	}

}


// när man ändrat i första listan så anropas detta som callback
// functionen filtrerar bort alla kunder som inte har några enheter med denna tag eller tväling
function clientFilterListLoaded(response)
{
	var clientOptions = jQuery("#secondSelect option[type='client']");
	//kontrollera att valet är en tag
	
	// först gömmer vi alla kunder
	clientOptions.attr("disabled", "disabled");
	clientOptions.addClass("disabledSelectOption");
	
	// sen går vi igenom alla kunder vi fått och tänder som ska visas
	for (var i = 0; i < response.result.length; i++) {
		var client = response.result[i];
		jQuery("#secondSelect option[value='" + client.id + "']").removeAttr("disabled");
		jQuery("#secondSelect option[value='" + client.id + "']").removeClass("disabledSelectOption");
	}
}

/***
 * 
 */
function searchBtnClick()
{
	var value = jQuery("#firstSelect").val().split(",")[1];
	//nollställer taggar och kund som eventuellt kommit via querystring osv..
	kund = "";
	tag = ""; 
	loadedIsCompetion = false;
	var option = jQuery('#firstSelect :selected');
	var type = option.attr("type");
	var clientName = jQuery('#secondSelect :selected').val() != "-1" ? jQuery('#secondSelect :selected').text() : "-1";
	
	//nollställer hur många hämtningar det har varit.
	amountOfGets = 0;
	
	//om det är list sidan , det vill säga inte "kontakta oss", "om oss" osv..
	if (isUnitList) 
	{
		doCall();
	}


	var windowHash = "";
	// för att sätta rätt hash(#) på sidan		

	if (value != "all") 
		windowHash = value != "-1" ? "/tag/" + jQuery('#firstSelect :selected').text() : "";

		
	var kundHash = "";			
	if(jQuery("#secondSelect").val() != "-1")
		kundHash = "/kund/" + jQuery('#secondSelect :selected').text();
	
	if (value != "all") 
		windowHash += kundHash;
	else {
		if(jQuery("#secondSelect").val() != "-1")
			windowHash = kundHash;
	}
	

	if (window.location.pathname.length > 2) 
	{
		
		if (windowHash.length > 1) 
		{
			window.location.hash = windowHash;
			window.location = "http://www.goss.se/" + window.location.hash;
		}
		else 
			window.location.assign("http://" + window.location.hostname);
			
	}
	else 
		window.location.hash = windowHash;
}

function deleteDomUnit(obj)
{
	jQuery(obj).remove();
}
function removePaging()
{

	if(jQuery('#prevPage')) jQuery('#prevPage').remove();
	if(jQuery('#nextPage')) jQuery('#nextPage').remove();
}
function updatePaging(amountOfResults)
{
	numberOfPages = Math.floor(amountOfResults/unitsPerPage);
	if(numberOfPages < (amountOfResults/unitsPerPage))
	{
		numberOfPages += 1;
	}
	if(currentPage == (numberOfPages - 1))
		jQuery("#nextPage").css("opacity", "0.5");	
	else
		jQuery("#nextPage").css("opacity", "1");	
}
function setPaging(amountOfResults)
{
	window.scrollTo(0,0);
	updatePaging(amountOfResults);
	jQuery("#pager").html("");
	if (numberOfPages > 1) {
		
		var prevLink = jQuery("<a id='prevPage'> Tillbaka</a>").click(function(){
			if (currentPage > 0) 
				showPage((currentPage - 1));
			return false;
		});
		if(currentPage == 0)
			prevLink.css("opacity", "0.5");
		prevLink.attr("href", "#");
		prevLink.appendTo(jQuery("#pager"));
		
		var nextLink = jQuery("<a id='nextPage'> Mer reklam </a>").click(function(){
			if (currentPage < (numberOfPages - 1)) 
				showPage((currentPage + 1));
			return false;
		});
		nextLink.appendTo("#pager");
		nextLink.attr("href", "#");
	}
	

}
function showPage(page, unitList)
{
	currentPage = page;
	var campaignContainer = jQuery("#campaignList");
	
	if(currentPage == 0)
		jQuery("#prevPage").css("opacity", "0.5");	
	else
		jQuery("#prevPage").css("opacity", "1");	
	
	if(currentPage == (numberOfPages - 1))
		jQuery("#nextPage").css("opacity", "0.5");	
	else
		jQuery("#nextPage").css("opacity", "1");	
	
	jQuery("#campaignList .unitItem").attr("keep", "false");

	var i = 0;
	var found = 0;
	var stop;
	if(page != -1)
	{
		unitList = completeUnitList;
		stop  = unitsPerPage * (currentPage + 1);
	}
	else
	 	stop = 100000;
	while (i < completeUnitList.length && (found < stop)) {
		var item = unitList[i];

		domObject = "";
		if (jQuery("#unit" + item[unitColumns.UnitID]).length > 0) {
		
			domObject = jQuery("#unit" + item[unitColumns.UnitID]);
			if (kund != "") {
				if (item[unitColumns.ClientName] == kund) {
					found++;
					if(found > (unitsPerPage * currentPage))
						domObject.attr("keep", "true");
				}
			}
			else {
				found++;
				if(found > (unitsPerPage * currentPage))
					domObject.attr("keep", "true");
			}
		}
		else {
			if (kund != "") {
				if (item[unitColumns.ClientName] == kund) {
					found++;
					if (found > (unitsPerPage * currentPage)) {
						domObject = createDomObj(item);
						campaignContainer.append(domObject);
						domObject.css("display", "none");
						animateUnitList.push(domObject);
						domObject.attr("keep", "true");
					}	
				}
			}
			else {
				found++;
				if (found > (unitsPerPage * currentPage)) {
					domObject = createDomObj(item);
					campaignContainer.append(domObject);
					domObject.css("display", "none");
					animateUnitList.push(domObject);
					domObject.attr("keep", "true");
				}	
			}
		}
		i++;
	}


	jQuery("#campaignList").children("div[keep='false']").slideUp(300, 
		function()
		{
			deleteDomUnit(this)
		}
	);
	
	if(kund != "")
	{
		jQuery("#secondSelect option:contains('" + kund + "')").attr("selected", "true");
		//doClientFilter(jQuery("#secondSelect option:contains('" + kund + "')").val());
	}
	animateUnits();
	
	//för ie7 bugg? med flash, lägger till hashen i titlen. http://bugs.adobe.com/jira/browse/FP-240 
	setTimeout("document.title = 'GOSS'", 1000);
}

function createDomObj(item)
{
		var domObject = jQuery("#unitItem").clone();
		domObject.attr("id", "unit" + item[unitColumns.UnitID]);
		domObject.attr("unitid", item[unitColumns.UnitID]);
		domObject.attr("clientid", item[unitColumns.ClientID]);
		domObject.find(".unitCampaign").html(item[unitColumns.CampaignName]);
		
		var clientLink = jQuery("<a href=\"#kund/"+item[unitColumns.ClientName]+"\">"+item[unitColumns.ClientName]+"</a>").click(function(){
			jQuery("#secondSelect option:contains("+jQuery(this).html()+")").attr("selected", "true");
			jQuery(jQuery("#firstSelect option")[0]).attr("selected", "true");
			window.location.hash = "/kund/" + jQuery(this).html();
			kund = jQuery(this).html();
			tag = "";
			loadedIsCompetion = false;
			//makeSelectionInSecond = true;
			amountOfGets = 0;//nollställer antal hämtningar så rätt start hämtas
			doCall();
			return false;
		});
		clientLink.appendTo(domObject.find(".unitClient").html(""));		
		
		var maxChar = 480;
		var uDesc = item[unitColumns.UnitDescription];
		uDesc = uDesc.replace(/<.*?(>|$)/gi, "");
		
		uDesc = uDesc.length > maxChar ? uDesc.substring(0, maxChar) + "…" : uDesc;
		uDesc = uDesc.replace(/\n/gi, "<br /> \n");
		
		uDesc = uDesc.replace(/#attecken\//gi, "@");
		uDesc = uDesc.replace(/#skickamailtill\//gi, "mailto:");
		
		domObject.find(".unitDescription").html(uDesc);
		domObject.find(".unitMediaType").html("");
		var tagLink = jQuery("<a href=\"tag/"+item[unitColumns.TagName]+"\">"+item[unitColumns.TagName]+"</a>").click(function(){
			jQuery("#firstSelect option:contains("+jQuery(this).html()+")").attr("selected", "true");
			jQuery("#secondSelect").find("option[istop='true']").attr("selected", "true");
			//makeSelectionInSecond = true;
			amountOfGets = 0;//nollställer antal hämtnignar
			window.location.hash = "/tag/" + jQuery(this).html();
			tag = jQuery(this).html();
			kund = "";
			loadedIsCompetion = false;
			tagType = "";//nollställer om det är en tävling eller inte

			doCall();



			return false;
		});
		tagLink.appendTo(domObject.find(".unitMediaType"));
		//domObject.find(".unitMediaType").html(item[unitColumns.TagName]);
		
		var linkObj = domObject.find(".unitLink a");
		linkObj.attr("href", "/enhet/" + item[unitColumns.UnitUrlName] + "/");
		
		if (item[unitColumns.MediaTypeIdString] == "image") 
		{
			try {
				var imgSrc = "/ric.aspx?src=admin/uploads/files/" + item[unitColumns.CampaignID] + "/" + item[unitColumns.UnitID] + "/org/" + item[unitColumns.MediaValue];
				imgSrc += "&width=322&height=0&crop=false&local=true&timestamp=" + item[unitColumns.MediaTypeStamp];
				domObject.find(".mediaTemplate img").attr("src", imgSrc);
			}
			catch(err){}
		}
		
		if (item[unitColumns.MediaTypeIdString] == "youtube" || item[unitColumns.MediaTypeIdString] == "vimeo") 
		{
			try {
	
				var mediaString = item[unitColumns.MediaValue];
				var matchObj = mediaString.match(/width=\"\d.*?\"/gi);
					
				var mediaWidth = matchObj != null ? matchObj[0] : "              ";

				if (mediaWidth.length > 7) {
					mediaWidth = mediaWidth.substring(7, mediaWidth.length - 1);
				}
				
				
				
				var mediaHeight = mediaString.match(/height\=\"\d.*?\"/gi)[0];
				mediaHeight = mediaHeight.substring(8, mediaHeight.length - 1);
				if (mediaWidth > 322) {
					var mediaRel = mediaHeight / mediaWidth;
					var diff = 322 - mediaWidth;
					mediaHeight = (mediaHeight * 1) + (diff * mediaRel);
					mediaHeight = Math.round(mediaHeight);
					mediaWidth = 322;
				}
				else if(mediaWidth < 322){
					var mediaRel =  mediaHeight / mediaWidth;
					var diff = 322 - mediaWidth ;
					mediaHeight = (mediaHeight * 1) + (diff * mediaRel);
					mediaHeight = Math.round(mediaHeight);
					mediaWidth = 322;
				}
				
				mediaString = mediaString.replace(/width\=\"\d.*?\"/gi, "width=\""+mediaWidth+"\"");
				mediaString = mediaString.replace(/height\=\"\d.*?\"/gi, "height=\"" + mediaHeight + "\"");
				

				domObject.find(".mediaTemplate").html(mediaString);
			}
			catch(err){
				if (window.console)
				{
					console.log(err)
				}
			}

		}
		
		if(item[unitColumns.MediaTypeIdString] == 'flash')
		{
			try {
				var mediaHeight = item[unitColumns.MediaHeight];
				var mediaWidth = item[unitColumns.MediaWidth];
				if (mediaWidth > 322) {
					var mediaRel = mediaHeight / mediaWidth;
					var diff = 322 - mediaWidth;
					mediaHeight = (mediaHeight * 1) + (diff * mediaRel);
					mediaHeight = Math.round(mediaHeight);
					mediaWidth = 322;
				}
				
				var flashString = "admin/uploads/files/" + item[unitColumns.CampaignID] + "/" + item[unitColumns.UnitID] + "/org/" + item[unitColumns.MediaValue];
				domObject.find(".mediaTemplate").html('<object width="' + mediaWidth + '" height="' + mediaHeight + '"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="' + flashString + '" /><embed src="' + flashString + '" quality="high" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="' + mediaWidth + '" height="' + mediaHeight + '"></embed></object>');
			}
			catch(err){}
		}
	
		if(item[unitColumns.MediaTypeIdString] == 'sound')
		{
			
			var mediaHeight = 250;
			var mediaWidth = 430;
			if (mediaWidth > 322) {
				var mediaRel = mediaHeight / mediaWidth;
				var diff = 322 - mediaWidth;
				mediaHeight = (mediaHeight * 1) + (diff * mediaRel);
				mediaHeight = Math.round(mediaHeight);
				mediaWidth = 322;
			}
			
			var flashString = "media/swf/player.swf?logo=" + item[unitColumns.ClientLogo] + "&song=admin/uploads/files/" + item[unitColumns.CampaignID] + "/" + item[unitColumns.UnitID] + "/org/" + item[unitColumns.MediaValue];				
			domObject.find(".mediaTemplate").html('<object width="' + mediaWidth + '" height="' + mediaHeight + '"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="scale" value="noscale" /><param name="movie" value="' + flashString + '" /><embed src="' + flashString + '" scale="noscale" quality="high" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="' + mediaWidth + '" height="' + mediaHeight + '"></embed></object>');
			
		}
		
		if (item[unitColumns.MediaTypeIdString] == "flickr")
		{	
			try {
				var previewValue = item[unitColumns.MediaValue];
				previewValue = previewValue.match(/<img.*?>/gi)[0];
				previewValue = previewValue.replace(/src=\"(.*?)\.(jpg|png|gif)\"/gi, "src=\"ric.aspx?width=322&amp;height=0&amp;crop=false&amp;src=$1.$2\"");
				previewValue = previewValue.replace(/width\=\"\d.*?\"/gi, "");
				previewValue = previewValue.replace(/height\=\"\d.*?\"/gi, "");
				domObject.find(".mediaTemplate").html(previewValue);
			}
			catch(err)
			{}
		}
		return domObject;
}

