﻿
//Space flash
//**********************************************


//Space items array
var si = new Array(0);
//every item is represented by Item object
function SpaceItem(itemID, startX, startY, size)
{
    this.id = itemID;
    this.x = startX;
    this.y = startY;
    this.size = size;
}

var PicMaxWidth = 100;
var PicMaxHeight = 100;
var PartNum = 1;

var CurrentItemId = 0;
var currentLang = "en";

PlaceTextWindow();


$AddEvt(window, "resize", PlaceTextWindow);


/**************************************************
STARFIELD FUNCS
***************************************************/
var firstTime = true;
var StarField = null; //starfield window
function InitStarField() {

    StarField = document.getElementById("space").contentWindow;

    //this function runs within the starfield iframe
    //to run functions in the host page we must call it async
    setTimeout("LoadPageOnStart()", 1);
    setTimeout("Start()", 1500);
}


var ScrollDown = true;
var _lastScrollTop = -1;

function Start() {
    //start space animation
    _lastScrollTop = -1;
    OnScroll();
}

//onscroll event
var timerOnScroll = null;
function OnScroll() {
    var h = $("scrolleditems");
    var isChanged = (_lastScrollTop != h.scrollTop);

    if (isChanged && pm.currentPageId=="mainPage") {
        SetScrollDirection();

        clearTimeout(timerOnScroll);
        timerOnScroll = setTimeout("ResyncVisibleItems()", 200);
    }
    //Log(_lastScrollTop + "<br>");
    setTimeout("OnScroll()", 100);
}


function ResyncVisibleItems() {

    var visible = "";
    var h = $("scrolleditems");
    var arr = h.getElementsByTagName("span");

    for (var i = 0; i < arr.length; i++) {
        var el = arr[i];

        if (el.getAttribute("Verse") == "yes") {
            var txtPos = el.offsetTop + 5;
            var winTop = h.scrollTop;
            var winBottom = h.scrollTop + h.offsetHeight;

            if (txtPos >= winTop && txtPos < winBottom) {
                //visible+=el.id + ",";
                var items = el.getAttribute("Items");
                visible += items + ",";
            }
        }
    }
    DoFly(visible);
}

function SetScrollDirection() {
    var h = $("scrolleditems");
    if (h.scrollTop >= _lastScrollTop)
        ScrollDown = true;
    else
        ScrollDown = false;
    _lastScrollTop = h.scrollTop;
}
function DoFly(list) {
    var m = $("mymovie");

    var arr = list.split(',');

    //delete old items if not found in the list
    for (var j = 0; j < si.length; j++) {
        var el = si[j];
        if (el) {
            var exists = false;

            for (var i = 0; i < arr.length; i++) {
                var id = GetThumbId(arr[i]);
                if (id == el.id) {
                    exists = true;
                    break;
                }
            }
            if (!exists) {
                si[j] = null;
                DeleteItem(el.id, ScrollDown);
                //Log("Delete id=" + el.id + "<br>");
            }
        }
    }

    //update existing items
//    for (var i = 0; i < arr.length; i++) {
//        var val = arr[i];
//        var id = GetThumbId(val);

//        if (!isNaN(id) && ItemExists(id) && id > 0) {
//            UpdateItem(id, ScrollDown);
//            //Log("Update id=" + id + "<br>");
//        }
//    }

    //place new items in space
    var cnt = 0;
    for (var i = 0; i < arr.length; i++) {
        var val = arr[i];
        var id = GetThumbId(val);
        var thumb = GetThumbPath(val);
        var size = Math.round(((arr.length - i) * 100) / arr.length);
        cnt++;

        

        if (!isNaN(id) && !ItemExists(id) && id > 0) {
            var el = new SpaceItem(id, 0, 0, size);
            si[si.length] = el;
            AddItem(el.id, el.x, el.y, el.size, thumb, ScrollDown);
            //Log("Add id=" + el.id + "<br>");

            if (cnt > 15) break;
        }
    }
}


function ItemExists(id) {
    for (var i = 0; i < si.length; i++) {
        if (si[i] && id == si[i].id)
            return true;
    }
    return false;
}


function AddItem(id, x, y, size, thumb, ScrollDown) {

    setTimeout("StarField.AddItem(" + id + "," + size + ",'" + thumb + "'," + ScrollDown + ");", 100);
}
function DeleteItem(id, ScrollDown) {
    
    setTimeout("StarField.DeleteItem(" + id + "," + ScrollDown + ");", 100);
}
function UpdateItem(id, ScrollDown) {

    setTimeout("StarField.UpdateItem(" + id + "," + ScrollDown + ");", 100);
}



function GetThumbPath(val) {
    if (val) {
        var args = val.split("$");
        var path = "";
        switch (args[0]) //type
        {
            case "1": //video
            case "4": //image
                path = StoragePath + "files/items/thumb/" + args[1] + ".jpg";
                break;
            case "2": //audio
                path = "img/item-audio.gif";
                break;
            case "3": //text
                path = "img/item-text.gif";
                break;
            case "5": //embed
                path = "img/item-video.gif";
                break;
        }
        return path;
    }
    else
        return "";
}
function GetThumbId(val) {
    if (val) {
        var args = val.split("$");
        return args[1];
    }
    else
        return "";
}
/**************************************************
STARFIELD FUNCS
***************************************************/













function LoadPageOnStart() {
    //load item page if requested
    var hash = document.location.hash;
    OnHistoryChange(hash);
}

function onItemClicked(id)
{
    setTimeout("LoadII(" + id + ")",1);
}

function UpdateItemSize()
{
    for (var j = 0; j < si.length; j++)
    {
        var el = si[j];
        if (el.size > -1 && el.size < 101)
        {
            el.size = Math.round(((si.length - j) * 100) / si.length);
            si[j] = el;
            ChangeItem(el.id, el.x, el.y, el.size, thumb, ScrollDown);
        }
    }
}
//place text window over the flash space
function PlaceTextWindow()
{
    var holId = "scrolleditemsHolder";
    var h = $("space");
    var w = $(holId);

    w.style.position = "absolute";
    w.style.top = "-1000px"
    w.style.left = "-1000px"
    w.style.display = "block";
    w.style.top = (($Y("space") + ($H("space") - $H(holId)) / 2)-5) + "px";
    w.style.left = ($X("space") + ($W("space") - $W(holId)) / 2) + "px";
}





function Log(txt)
{
    var info = $("seenitems");
    info.innerHTML=txt + info.innerHTML;
}
function PrintItems()
{
    var Items = si;
    var seen = "";
    for (var i = 0; i < Items.length; i++)
    {
        var item = Items[i];
        if (item)
            seen += i + ". [id=" + item.id + " s=" + item.size + " x=" + item.x + " y=" + item.y + "] down=" + ScrollDown + ",<br>";
    }
    Log("Seen Items List:<br>" + seen + "<br>");
}

function LoadVI(bookId, chapterId, verseId, category, lng)
{
    SoundStop();

    if (typeof (lng) != "string")
        lng = currentLang;

    pm.Load("verseGallery", "Gallery2.aspx?bid=" + bookId + "&cid=" + chapterId + "&vid=" + verseId + "&cat=" + category + "&lng=" + lng);

    pm.HistorySet("act=VI&bid=" + bookId + "&cid=" + chapterId + "&vid=" + verseId + "&cat=" + category + "&lng=" + lng);
}
function LoadPage(page)
{
    SoundStop();

    if (typeof (lng) != "string")
        lng = currentLang;

    pm.Load(page, page + ".aspx");
    pm.HistorySet("act=LP&page=" + page);

    return false;
}
function LoadII(itemId)
{
    SoundStop();

    CurrentItemId = itemId;
    pm.OnLoadComplete = OnPageLoadComplete;
    //pm.Load("itemInfo","ItemInfo.aspx?id=" + itemId);
    pm.Load("itemInfo", "ItemInfo2.aspx?id=" + itemId);

    pm.HistorySet("act=II&iid=" + itemId);
}

function ShowVI(bookId, chapterId, verseId)
{
    SoundStop();

    LoadVI(bookId, chapterId, verseId);

}

function DoSearch(ev)
{
    if (ev != null && ev.keyCode == 13)
        SearchTags();
}

function LoadTags(tagId, categeoryId)
{

    if (typeof (categeoryId) == "undefined")
        categeoryId = 0;
    if (typeof (tagId) == "undefined")
        tagId = 0;
    SoundStop();
    pm.Load("tags", "Tags.aspx?tid=" + tagId + "&cat=" + categeoryId);
    pm.HistorySet("act=TI&tid=" + tagId + "&cat=" + categeoryId);
}

function LoadProjects()
{

    SoundStop();
    if (typeof (ResetParams) == "function")
        ResetParams();
    pm.Load("projects", "projects.aspx");
    pm.HistorySet("act=PL");
}

function LoadProjectItems(pid, categeoryId)
{
    if (typeof (categeoryId) == "undefined")
        categeoryId = 0;
    if (typeof (ResetParams) == "function")
        ResetParams();
    CurrentProjectId = pid;
    CurrentCategoryId = categeoryId;

    SoundStop();
    pm.Load("projectItems", "ProjectItems.aspx?pid=" + pid + "&cat=" + categeoryId);
    pm.HistorySet("act=PI&pid=" + pid + "&cat=" + categeoryId);
}
function LoadBlogs()
{

    SoundStop();
    pm.Load("blogs", "Blogs.aspx");
    pm.HistorySet("act=BI");
}

function LoadMyItems(userId, catId)
{
    SoundStop();
    pm.Load("myItem", "myItems.aspx?uid=" + userId + "&cid=" + catId);
    pm.HistorySet("act=MI&uid=" + userId + "&cid=" + catId);
}


//**************************************//

//function LoadSearch(qSearch, bookId, chapterId, verseId, catId, compId, itemTypeId)
function LoadSearch(qSearch, bookId, chapterId, verseId, catId, prjId, itemTypeId)
{
    SoundStop();
    pm.Load("search", "search.aspx?q=" + encodeURIComponent(qSearch) + "&bid=" + bookId + "&cid=" + chapterId + "&vid=" + verseId + "&cat=" + catId + "&pid=" + prjId + "&tid=" + itemTypeId);
    pm.HistorySet("act=SI&q=" + encodeURIComponent(qSearch) + "&bid=" + bookId + "&cid=" + chapterId + "&vid=" + verseId + "&cat=" + catId + "&pid=" + prjId + "&tid=" + itemTypeId);
}


//********************************************************************

//function ShowUpload ()
//{

//    SoundStop();
//    pm.Load("upload","upload.aspx");
//    pm.HistorySet("act=UL");
//}

function SearchTagsSubmit(ev, catId)
{
    if (ev != null && ev.keyCode == 13)
        SearchTags(catId)
}
function SearchTags(catId)
{
    SoundStop();
    if ($("sQuery") != null)
    {
        var search = encodeURIComponent($("sQuery").value);
        pm.Load("tags", "Tags.aspx?ts=" + search + "&cid=" + catId);
        pm.HistorySet("act=TS&ts=" + search + "&cid=" + catId);
    }
}

//function ShowUpload()
//{
//    SoundStop();
//    pm.Load("upload","Upload2.aspx") ;
//    pm.HistorySet("act=UL");
//}

function ShowB()
{
    pm.Show("mainPage");
    pm.HistorySet("act=B");

    
}
function OnPageLoadComplete(pageId)
{
    if (pageId == "itemInfo");
    {
        RaterInit("RaterHolder");
    }
}

function OnHistoryChange(args)
{
    var act = $QGet("act", args); //Action ID
    var bid = $QGet("bid", args); //Book ID
    var cid = $QGet("cid", args); //Chapter ID
    var vid = $QGet("vid", args); //Verse ID
    var iid = $QGet("iid", args); // Item ID
    var cat = $QGet("cat", args); // Category ID
    var lng = $QGet("lng", args); //Language ID
    var tid = $QGet("tid", args); //Media type ID
    var pid = $QGet("pid", args); //project id
    var ts = $QGet("ts", args);
    var uid = $QGet("uid", args); //user ID
    var qSearch = $QGet("q", args); //Search string
    var cmp = $QGet("cmp", args); //competion ID
    var page = $QGet("page", args); //static page name

    switch (act)
    {
        case "":
        case "B":
            ShowB();
            break;
        case "II":
            LoadII(iid);
            break;
        case "VI":
            LoadVI(bid, cid, vid, cat, lng);
            break;
        case "TI":
            LoadTags(tid);
            break;
        case "PL":
            LoadProjects();
            break;
        case "PI":
            LoadProjectItems(pid, cat);
            break;
        case "TS":
            SearchTags(ts);
            break;
        case "MI":
            LoadMyItems(uid, cid);
            break;
        case "SI":
            //LoadSearch(qSearch, bid, cid, vid, cat, cmp, tid)
            LoadSearch(qSearch, bid, cid, vid, cat, pid, tid)
            break;
        case "BI":
            LoadBlogs()
            break;
        //        case "UL": 
        //            ShowUpload(); 
        //            break; 
        case "LP":
            LoadPage(page);
            break;
    }
}
pm.HistoryOnChange = OnHistoryChange;
//**********************************************




//Rater
//**********************************************
function RaterInit(holderId)
{
    var holder = document.getElementById(holderId);
    if (holder)
    {
        var maxValue = holder.getAttribute("MaxValue");
        var value = holder.getAttribute("Value");
        var Rater = CastleRater.CreateJSControl("Rater", "img/rater/StarOn.gif", "img/rater/StarOff.gif", "img/rater/StarOver.gif", maxValue, value, holder.id);
    }
}
//**********************************************





//function DoFly_old(list)
//{
//    var m=$("mymovie");
//    
//    var arr=list.split(',');
//    var newItems=new Array();
//    
//    //get new items list
//    for(var i=0;i<arr.length;i++)
//    {
//        var id=arr[i];
//        if(!isNaN(id))
//        {
//            var oldItem=Items[id];
//            if(!oldItem)
//            {
//                var x,y;
//                
//				//*
//                var PicMaxWidth=100;
//                var PicMaxHeight=100;
//                
//                //place items in the allowed range
//                var relPicH=Math.round(PicMaxHeight*100/$H("space"));
//                var relPicW=Math.round(PicMaxWidth*100/$W("space"));
//                
//                var relWinH=Math.round(($H("scrolleditems")+60)*100/$H("space"));
//                var relWinW=Math.round(($W("scrolleditems")+40)*100/$W("space"));
//                
//                //var part=Math.round(Math.random()*3) + 1;
////                switch(PartNum)
////                {
////                    case 1:
////                        x=Math.round(Math.random()*(100-relPicW));
////                        y=Math.round(Math.random()*(100-relWinH)/2);
////                        break;
////                    case 2:
////                        x=Math.round(Math.random()*(100-relWinW)/2);
////                        y=Math.round((Math.random()*(relWinH)) + ((100-relWinH)/2));
////                        break;
////                    case 3:
////                        x=Math.round((Math.random()*(100-relWinW)/2) + relWinW + ((100-relWinW)/2));
////                        y=Math.round((Math.random()*(relWinH)) + ((100-relWinH)/2));
////                        break;
////                    case 4:
////                        x=Math.round(Math.random()*(100-relPicW));
////                        y=Math.round((Math.random()*(100-relWinH)/2) + relWinH + ((100-relWinH)/2));
////                        break;
////                }
////				//*/
////				if(PartNum==4)
////				    PartNum=1;
////				else
////				    PartNum+=1;
//				    
//				    
//				
//				var p = Math.floor(Math.random()  *360)
//				//var r = Math.random() * 40 + 20;
//				//var r = Math.random() * 20 + 40;
//				var r = Math.random() * 10 + 40; //best circle  
//				var x=Math.round(Math.cos(p / Math.PI*180) * r + 50);
//				var y=Math.round(Math.sin(p / Math.PI*180) * r + 50);
//				
//				//alert("part=" + PartNum + " x=" + x + " y=" + y)
//				
//				
//				
//                //Log(relWinH)
//                oldItem=new Item(id,x,y,1);
//                
//            }
//            var size=Math.round(((arr.length-i)*100)/arr.length);
//            oldItem.size=size;
//            
//            newItems[id]=oldItem;
//            
//            //m.changeItem(id,x,y,zoom,"img/pic1.gif");
//        }
//    }
//    
//    //delete old items if not visible anymore
//    for(var i=0;i<Items.length;i++)
//    {
//        var item=Items[i];
//        if(item && !newItems[item.id])
//        {
//            var size=(ScrollDown)?101:-1;
//            if(m.changeItem)
//                m.changeItem(item.id,item.x,item.y,size,"img/pic1.gif", ScrollDown);
//        }
//    }
//    
//    //update new items
//    for(var i=0;i<newItems.length;i++)
//    {
//        var item=newItems[i];
//        if(item && m.changeItem)
//            m.changeItem(item.id,item.x,item.y,item.size,"img/pic1.gif", ScrollDown);
//    }
//    
//    //store items list
//    Items=newItems;
//    
//    PrintItems();
//}
