
function $(id) {
    return document.getElementById(id);
}

var UpdateType = new function() {
    this.None = 0;
    this.Update = 1;
    this.Add = 2;
    this.Delete = 3;
}

var ShareType = new function() {
    this.None = 0;
    this.Public = 1;
    this.Friend = 2;
    this.Private = 3;
}

var ItemType = new function() {
    this.None = 0;
    this.Image = 1;
    this.Audio = 2;
    this.Video = 3;
    this.Text = 4;
}

var Direction = new function() {
    this.Prev = 0;
    this.Next = 1;
}

var Sfx = ["", "Im", "Au", "Vi", "Af"];

var MediaItemProps = function(itemType) {

    this.Title = "txt" + Sfx[itemType] + "Title";
    this.Tags = "txt" + Sfx[itemType] + "Tags";
    this.Filename = "h" + Sfx[itemType] + "File";
    this.Share = "lst" + Sfx[itemType] + "Share";
    this.ItemId = "h" + Sfx[itemType] + "Iid";
    this.TitleMsg = "msg" + Sfx[itemType] + "Title";
    this.TagsMsg = "msg" + Sfx[itemType] + "Tags";
}

var Tabs = function() {
    var tabs = ["tabs-01.jpg", "tabs-02.jpg", "tabs-03.jpg"];
    var tabs2 = ["tabs-power-02.jpg", "tabs-power-01.jpg"];
    
    var im = [];
    for (i = 0; i < tabs.length; i++) {
        im.push(new Image());
        im[i].src = '/images/' + tabs[i]
    }
    
    var im2 = [];
    for (i = 0; i < tabs2.length; i++) {
        im2.push(new Image());
        im2[i].src = '/images/' + tabs2[i]
    }
    
    this.getTab = function(idx) {
        return im[idx];
    }
    
    this.getTab2 = function(idx) {
        return im2[idx];
    }
}

var oTabs = new Tabs();

function toggleMinMax(id, open) {
    var vis = open ? 'block' : 'none';
    
    $(id + '_tabs').style.display = vis;
    $(id + '_content').style.display = vis;
    $(id + '_footer').style.display = vis;
    
}

function toggleTabs(idx, id, shareType, itemType) {            
    if (itemType == undefined) {
        itemType = ItemType.Image;
    }
    
    var tabIm = document.getElementById(id);
    tabIm.src = oTabs.getTab(idx).src;
    
    switch (itemType) {
        case ItemType.Image:
            media._shareType = shareType;
            break;
        case ItemType.Text:
            mediaAf._shareType = shareType;
            break;
        case ItemType.Audio:
            mediaAu._shareType = shareType;        
            break;
    }
            
    refreshMediaLibView(UpdateType.Add, itemType);
    
}

function toggleTabs2(idx, id) {            
    var tabIm = document.getElementById(id);
    tabIm.src = oTabs.getTab2(idx).src;            
}

Popup.loadSkin("box3");

var popup;
var media = null;
var mediaAf = null;
var mediaAu = null;

function init(id, publicEA) {

	popup = new Popup();
	popup.init();
	
	media = new mediaItems("images_content", "mediaPagesIm", id);
	media._type = ItemType.Image;
	media._publicEA = publicEA;
	media.show();
	media.pager();
	
	mediaAf = new mediaItems("texts_content", "mediaPagesAf", id);
	mediaAf._type = ItemType.Text;
	mediaAf._publicEA = publicEA;
	mediaAf.show();
	mediaAf.pager();
	
	mediaAu = new mediaItems("sounds_content", "mediaPagesAu", id);
	mediaAu._type = ItemType.Audio;
	mediaAu._publicEA = publicEA;
	mediaAu.show();
	mediaAu.pager();
		
	document.getElementById("container").onmousedown = function(e) {
	        
	    popup.hide();
	}
}

var mediaItems = function(container, pagesholder, id) {
    this._pfx = "im";
    this._url = "/GetMediaItem.aspx";
    this._container = document.getElementById(container);
    this._break = 4;
    this._uId = id;
    this._tmpLocation = "/tmpstore";
    this._currentPage = 0;
    this._type = ItemType.Image;
    this._pageSize = 8;
    this._pagesHolder = $(pagesholder);
    this._shareType = ShareType.Public;
    this._pagesInRow = 10;
    this._publicEA = false;
    		    		
    this.items = null;
        
    this.show = function() {
        
        var res = null;
        
        if (this._shareType == ShareType.Private) {
            res = lmg.Ajax.AjaxMethods.GetMediaLibItemsByUser(id, this._currentPage, this._pageSize, this._type);
        }
        else {
            res = lmg.Ajax.AjaxMethods.GetMediaLibItemsByShare(this._shareType, id, this._currentPage, this._pageSize, this._type);
        }
        
        if (res == null || res.value == null)
            return false;
            
        this.items = res.value;
        
        var el, im;
        
        this._container.innerHTML = "";
        
        for (var i = 0; i < this.items.length; i++) {
            el = document.createElement("span");
            
            if (this._type == ItemType.Image) {
                im = document.createElement("img");
                im.src = this.items[i].src; 
                im.MediaItem = this.items[i];
                im.title = "click me..";
            }
            else if (this._type == ItemType.Text) {
                im = document.createElement("A");
                im.href = "javascript:void(0)";
                im.MediaItem = this.items[i];
                im.title = "click me..";                
                im.innerHTML = this.items[i].Tags;
            }
            else if (this._type == ItemType.Audio) {
                im = document.createElement("A");
                im.href = "javascript:void(0)";
                im.MediaItem = this.items[i];
                im.title = "click me..";                
                im.innerHTML = '<img src="/images/i-sound2.gif" border="0">&nbsp;' + this.items[i].Title + '[' + this.items[i].Filename + ']';
            }
            
            this.items[i]._publicEA = this._publicEA;
            this.items[i]._shareType = this._shareType;
            
            YAHOO.util.Event.addListener(im, "mouseup", this.attachPopup, this.items[i]);  
            
            el.appendChild(im);   
            this._container.appendChild(el);
            
            if (this._type != ItemType.Text) {
                if (((i + 1) % this._break) == 0) {
                    this.addBreak(this._container);
                }
            }
        }
        
        
    };
    
    this.pager = function() {
        if (this.items == null || this.items.length == 0)
            return;
        
        var pages = parseInt(this.items[0].Total / this._pageSize);
        if ((this.items[0].Total % this._pageSize) != 0) {
            pages++;
        }
        
        var page;
        this._pagesHolder.innerHTML = '';
        var l = document.createElement("SPAN");
        l.innerHTML = 'Page';
        l.className = 'paging-page';
        this._pagesHolder.appendChild(l);
        
        this.showPrev(pages);
        
        var upper = (pages - this._currentPage) > this._pagesInRow ? this._pagesInRow : (pages - this._currentPage);
        
        for (var i = 0; i < upper; i++) {
            page = document.createElement("A");
            page.innerHTML = (this.getPageNum(i) + 1).toString();
            page.href = "javascript:show('" + this.getPageNum(i) + "', " + this._type + ")";
            
            //YAHOO.util.Event.addListener(page, "click", show, this);  
            this._pagesHolder.appendChild(page);            
        }
                
        this.showNext(pages);
        
    }
    
    this.getPageNum = function(idx) {
        var ret = parseInt(this._currentPage) + parseInt(idx);
        return ret;
    }
   
    this.showNext = function(pages) {
        if ((this.getNextPage(Direction.Next)) >= pages) {
            return;
        }
        
        var el = document.createElement("A");
        el.innerHTML = " &gt;";
        el.href = "javascript:showNext(" + this._type + ")";
        this._pagesHolder.appendChild(el);        
        
    }
    
    this.showPrev = function(pages) {
        if (this._currentPage == 0 || pages < this._pagesInRow) {
            return;
        }
        
        var el = document.createElement("A");
        el.innerHTML = " &lt;";
        el.href = "javascript:showPrev(" + this._type + ")";
        this._pagesHolder.appendChild(el);
        
    }
    
    this.getNextPage = function(direction) {
        var p = parseInt(this._currentPage) + 1;
        if (direction == Direction.Next) {
            return (Math.ceil(p / this._pagesInRow) * this._pagesInRow);
        }
        else {
            return (Math.floor(p / this._pagesInRow) * this._pagesInRow) - this._pagesInRow;
        }
    }
    
    this.addBreak = function(obj) {
        var el = document.createElement("DIV");
        el.className = 'item-divider';
        obj.appendChild(el);
    }
    
    this.attachPopup = function(e, item) {
        if (!e)
            e = event;
            
        popup.content.innerHTML = '';
        popup.content.appendChild(mediaItems.makeToolbox(item));    
		//popup.showAt(e.clientX, e.clientY);        
		var pos = Utils.getCurrentPos(e);
	    popup.showAt(pos.x, pos.y);
    };
    
    mediaItems.makeToolbox = function(item) {
        
        var pp = document.createElement("img");
        pp.src = '/images/i-add.gif';
        pp.border = 0;
        var ppa = document.createElement("A");
        YAHOO.util.Event.addListener(ppa, "click", addToPack, item);  		        
        ppa.href = 'javascript:void(0)';
        ppa.title = 'click here to add this item to powerpack';
        ppa.appendChild(pp);
        
        var ed = document.createElement("img");
        ed.src = '/images/i-edit.gif';
        ed.border = 0;
        var eda = document.createElement("A");
        YAHOO.util.Event.addListener(eda, "click", editItem, item);  		        
        eda.href = 'javascript:void(0)';
        eda.title = 'click here to edit this item';
        eda.appendChild(ed);
        
        var del = document.createElement("img");
        del.src = '/images/i-delete.gif';
        del.border = 0;
        var dela = document.createElement("A");
        YAHOO.util.Event.addListener(dela, "click", delItem, item);  		        
        dela.href = 'javascript:void(0)';
        dela.title = 'click here to delete this item';
        dela.appendChild(del);
        
        var el = document.createElement("DIV");
        el.className = 'im-tools';
        el.appendChild(ppa);
        
        if ((item._shareType == ShareType.Private) || (item._publicEA)) {
            el.appendChild(eda);
            el.appendChild(dela);
        }        
        
        var el2 = document.createElement("DIV");
        el2.className = 'im-title';
        el2.innerHTML = item.title;
        
        var holder = document.createElement("SPAN");
        holder.appendChild(el2);
        holder.appendChild(el);
        return holder;
    };
    
    this.addToPowerpack = function(e, item) {
        alert(item);
    }
}

//function show(e, obj) {
  function show(p, type) {  
    //obj.show();
    
    switch (type) {
        case ItemType.Image:
            media._currentPage = p;
	        media.show();
	        break;
	    case ItemType.Text:
            mediaAf._currentPage = p;
	        mediaAf.show();
	        break;    
	    case ItemType.Audio:
	        mediaAu._currentPage = p;
	        mediaAf.show();
	        break;    
    }
}

function showNext(type) {
    var curObj = getMediaObjByType(type);
    
    curObj._currentPage = curObj.getNextPage(Direction.Next);
    curObj.pager();
}

function showPrev(type) {
    var curObj = getMediaObjByType(type);
    
    curObj._currentPage = curObj.getNextPage(Direction.Prev);
    curObj.pager();
}

function getMediaObjByType(type) {
    var curObj = null;
    
    switch (type) {
        case ItemType.Image:
            curObj = media;
	        break;
	    case ItemType.Text:
            curObj = mediaAf;
	        break;    
	    case ItemType.Audio:
	        curObj = mediaAu;
	        break;    
    }
    
    return curObj
}

function addToPack(e, item) {
    var movie = getFlashMovie('Powerpack');
    
    switch (item.Type) {
        case ItemType.Image:
            addImageToPack(item, movie);
            break;
        case ItemType.Text:
            addAffirmToCard(item, movie);
            break;   
        case ItemType.Audio:
            addSoundToPack(item, movie);
            break;    
    }
}

function addImageToPack(item, movie) {
    //if item doesn't yet belong to current user then need to add it to user media lib
    // and make private (copy physical file to user folders and create db entry)
    // ajax call here [DELETE THIS COMMENT AFTER IMPLEMENTATION]
    
    movie.ReplaceCurrentCard(item.src, item.ID);
}

function addAffirmToCard(item, movie) {
    
    movie.AddExternAffirmation(item.Tags);
}

function addSoundToPack(item, movie) {

    movie.LoadSound(item.src);
}

function editItem(e, item) {

    var props = new MediaItemProps(item.Type);
    
    if (item.Type == ItemType.Image) {    
        $("editPic").src = item.src + "&thmb=false";
        $(props.Title).value = item.title;
        $(props.Tags).value = item.Tags;
        setSelected($(props.Share), item.Share); 
        $(props.ItemId).value = item.ID;
        $(props.Filename).value = item.Filename;
        $(props.TitleMsg).style.display = 'none';
        
        showModalWnd("imageTool")//, 645, 496);
    }
    else if (item.Type == ItemType.Text) {
        $(props.Tags).value = item.Tags;
        setSelected($(props.Share), item.Share); 
        $(props.ItemId).value = item.ID;
        $(props.TagsMsg).style.display = 'none';
        
        showModalWnd("afTool")//, 645, 496);
    }
}

function saveItem(itemType) {
    if (itemType == undefined) {
        itemType = ItemType.Image;
    }
    
    if (!validateMediaItem(itemType)) {
        return;
    }
    
    var props = new MediaItemProps(itemType);
    
    if ($(props.ItemId).value.length > 0) {
        lmg.Ajax.AjaxMethods.UpdateMediaLibItem($(props.ItemId).value, $(props.Filename).value, $(props.Title).value, $(props.Tags).value, $(props.Share).options[$(props.Share).options.selectedIndex].value);    
        refreshMediaLibView(UpdateType.Update, itemType);
    }
    else {
        var res = lmg.Ajax.AjaxMethods.AddMediaLibItem($(props.Filename).value, $(props.Title).value, $(props.Tags).value, $(props.Share).options[$(props.Share).options.selectedIndex].value, itemType, media._uId);
        refreshMediaLibView(UpdateType.Add, itemType);
    }
    
        
}

function validateMediaItem(itemType) {
    var ret = true;
    var props = new MediaItemProps(itemType);
    
    if (itemType != ItemType.Text) {
        if ($(props.Title).value.length == 0) {
            $(props.TitleMsg).style.display = 'inline';
            return false;
        }
    }
    else {
        if ($(props.Tags).value.length == 0) {
            $(props.TagsMsg).style.display = 'inline';
            return false;
        }
    }
    return ret;
}

function addItem(itemType) {
    if (itemType == ItemType.Image) {
        addNewImage();        
    }
    else if (itemType == ItemType.Text) {
        addNewAffirm();
    }
    else if (itemType == ItemType.Audio) {
        addNewAudio();
    }
}

function addNewAffirm() {
    var props = new MediaItemProps(ItemType.Text);
    
    $(props.Title).value = "";
    $(props.Tags).value = "";    
    $(props.ItemId).value = "";
    
    showModalWnd("afTool");
}

function addNewImage() {
    var props = new MediaItemProps(ItemType.Image);
    
    $("editPic").src = "/images/1px.gif";
    $(props.Title).value = "";
    $(props.Tags).value = "";    
    $(props.ItemId).value = "";
    $(props.Filename).value = "";
        
    showModalWnd("imageTool");
    
}

function addNewAudio() {
    var props = new MediaItemProps(ItemType.Audio);
    
    $(props.Title).value = "";
    $(props.Tags).value = "";    
    $(props.ItemId).value = "";
    $(props.Filename).value = "";
    
    showModalWnd("auTool");
}

// need to keep current page number;
function refreshMediaLibView(updateType, itemType) {
    
    switch (itemType) {
        case ItemType.Image:
            resetPageNum(media, updateType);
	        media.show();
	        media.pager();
	        closeModalWnd('imageTool');
	        break;	    
	    case ItemType.Text:
	        resetPageNum(mediaAf, updateType);
	        mediaAf.show();
	        mediaAf.pager();
	        closeModalWnd('afTool');
	        break;    
	    case ItemType.Audio:
	        resetPageNum(mediaAu, updateType);
	        mediaAu.show();
	        mediaAu.pager();
	        closeModalWnd('auTool');
	        break;    
	}
	
	popup.hide();
}

function resetPageNum(obj, updateType) {
    if (updateType == UpdateType.Add) {
        obj._currentPage = 0;
    }
}

function refreshImToolView(filename) {

    $("editPic").src = media._tmpLocation + "/" + filename; //media._url + "?iid=" + $("hiid").value + "&thmb=false";
    $("hImFile").value = filename;  
}

function setAuFilename(filename) {
    //alert(filename);
    $("hAuFile").value = filename;
}

function delItem(e, item) {
    if (!confirm("Delete this item " + item.Title + "?")) {
        return;
    }
    
    var res = lmg.Ajax.AjaxMethods.DeleteMediaLibItem(item.ID);
    if (res != null && res.value != null && res.value.length > 0) {
        alert(res.value);
    }
    refreshMediaLibView(UpdateType.Delete, item.Type);
}

function getFlashMovie(movieName) {
    var     isIE = navigator.appName.indexOf("Microsoft") != -1;
    return (isIE) ? window[movieName] : document[movieName];
}

function sendToFlash() {
    getFlashMovie('Powerpack').ReplaceCurrentCard("19109077.jpg");
    
}

function getFromFlash(value) {
    document.getElementById('msgfromflash').innerHTML = value;
}

function addCard() {
    getFlashMovie('Powerpack').LoadBlank();
}

function delCard() {

    getFlashMovie('Powerpack').DelCurrentCard();
}

function savePack() {

    getFlashMovie('Powerpack').saveToSvr();
    showUserMsg("msgSave", "Saving...", false);
}

function setCardProps(obj) {
    
    $("txtTitle").value = (obj.Title != "null")?obj.Title:"";
    $("txtTags").value = (obj.Tags != "null")?obj.Tags:"";
    
    for (var i = 0; i < document.forms[0].rShare.length; i++) {
        if (document.forms[0].rShare[i].value == obj.Share) {
            document.forms[0].rShare[i].checked = true;
            break;
        }
    }
}

function getCardProps() {
    var sh = "public";
    for (var i = 0; i < document.forms[0].rShare.length; i++) {
        if (document.forms[0].rShare[i].checked) {
            sh = document.forms[0].rShare[i].value;
            break;
        }
    }
    return {Title:$("txtTitle").value, Tags:$("txtTags").value, Share:sh};
}

function debugFromFlash(msg) {
    if (!$("debugbox"))
        return;
        
    $("debugbox").innerHTML += '<br>' + msg;
}

function togglePackSave(onOff) {
    $("toolbox").style.display = (onOff == "1") ? "block" : "none";    
}

function previewPack(packId) {
    if (packId.length == 0)
        return;
        
    showModalWnd("packPreview");    
    loadFlash("PowerpackPreview", "viewer2", "0", "", packId, "", "3", "0");
}

function closePreview() {
    //loadFlash("Powerpack", "viewer", "1");
    $("viewer2").innerHTML = "";
    closeModalWnd('packPreview');
    //location.reload();
}

function MakeFlashQString(edit, uid, pid, theme, fromType, act) {
    var ret = "";
    if (edit)
        ret += "edit=" + edit;        
    if (uid)
        ret += "&uid=" + uid;
    if (pid)
        ret += "&pid=" + pid;
    if (theme)
        ret += "&theme=" + theme;
    if (fromType)
        ret += "&fromType=" + fromType;
    if (act)
        ret += "&act=" + act; //themes
    
    ret = (ret.substring(0, 1) == "&") ? ret.substring(1, ret.length - 1) : ret;
    //alert(ret);
    return ret;    
}

function loadFlash(name, viewer, edit, uid, pid, theme, fromType, act) {

    var qstring = MakeFlashQString(edit, uid, pid, theme, fromType, act);
    
    window[name] = new Object();
    var so = new SWFObject(noCacheIE("/flash/Powerpack.swf?" + qstring), name, "579", "476", "8", "#333333");
    so.addParam("quality", "high");
    so.addParam("wmode", "transparent");
    so.write(viewer);

    if (edit == "1") {
        SWFFormFix(name); 
    }    
    /*}
    else {
        SWFFormFixAuto2();
    }*/
    //SWFFormFixOnloadAppend();
    //
}

function loadUploader(id) {
    var name = "fileUploader";
    
    var so = new SWFObject(noCacheIE("/flash/FileUpload.swf?uid=" + id), name, "512", "40", "8", "");
    so.addParam("quality", "high");
    so.addParam("wmode", "transparent");
    so.addParam("allowScriptAccess", "always");
    so.write("uploader");    
    
}

function loadUploaderAu(id) {
    var name = "fileUploaderAu";
    
    var so = new SWFObject(noCacheIE("/flash/FileUpload.swf?uid=" + id + "&mit=" + ItemType.Audio), name, "512", "40", "8", "");
    so.addParam("quality", "high");
    so.addParam("wmode", "transparent");
    so.addParam("allowScriptAccess", "always");
    so.write("uploaderAu");    
    
}

function loadPP(objId) {

    var obj = $(objId);
    var qstring = "";
    if (obj) {
        
        qstring = "?p=" + obj.value;
    }
    window.location.href = "/Powertools/PowerpackBuilder.aspx" + qstring;
    
}

function testAjax() {
    var res = lmg.Ajax.AjaxMethods.GetMediaLibItemsByUser('0833EE7B-0E71-400D-A7A4-95DF95082E46', 0, 2, 1);
    document.writeln(res.value);
}

function closeDemo(id) {
    $('demoPackViewer').innerHTML = '';
    closeModalWnd(id);
}