//----------------------- UTILS -----------------------//
    function getFlashMovieObject(movieName)       
    {            
        return docEl(movieName);        
    }
//----------------------- UTILS -----------------------//
//----------------------- GUI -----------------------//
function GInfoToggle(e)
{
    var cn=e.parentNode.parentNode.childNodes;
    var r=domClassNameRemove(e.parentNode,"open");
    
    for (var i=0;i<cn.length;i++)
        domClassNameRemove(cn[i],"open");
    if (!r) domClassNameAdd(e.parentNode,"open");
}
var gChatSelectHandler=null;
function gChatSelect(elem,chatId)
{
    var cn=elem.parentNode.childNodes;
    for (var i=0;i<cn.length;i++)
        domClassNameRemove(cn[i],"selected");
    domClassNameAdd(elem,"selected");
    if (gChatSelectHandler)
        gChatSelectHandler(chatId);
}
function gChatMoreToggle(forceMore)
{
    if (forceMore) 
        domClassNameAdd(docEl("chat"),"expanded");
    else
        domClassNameToggle(docEl("chat"),"expanded");
}
var gChatOlderHandler=null;
function gChatOlder()
{
    if (gChatOlderHandler) gChatOlderHandler();
}
var GAddressLast="";
function GAddressSet(hashAddress)
{
    var dl=documentMakeLocation(hashAddress);
    GAddressLast=dl;
    docEl("trainerLink").value=dl;
//    docEl("trainer_addthis").setAttribute("addthis:url",dl);
    docEl("trainer_addthis").onmouseover=function(){
                                            return addthis_open(this, '', GAddressLast, '[TITLE]');
                                        };
}

function GConfigSet(cfg)
{
    try{
        getFlashMovieObject("speedTrainer").cfgset(cfg);
        documentGoToLocation("toolContent");
    }catch(e)
    {
        alert("Flash player is obligatory... :(");
    }
}

/* chat */
var gChatSubmitHandler=null;
function gChatSubmit()
{
    if (!textNoEmptyAlert('cFormMsg','Message cannot be empty','Type your message in here...')) return false;
    if (!textNoEmptyAlert('cFormSgn','Signature cannot be empty','Your signature...')) return false;
    
    var cs=textTrim(docEl("cFormSgn").value);
    docEl("cFormSgn").value=cs;
    if (cs.indexOf("http")>=0)
    {
        alert("www links are not allowed in here");
        return false;
    }
    var cm=textTrim(docEl("cFormMsg").value);
    if (cm.indexOf("http")>=0) 
    {
        alert("Enter www address without http[s]://");
        return false;
    }
    docEl("cFormMsg").value="";

        
        
    if (gChatSubmitHandler!=null)
    {
        //hide form -> show in guiChatShow
        //TODO:show hourglass 
        docEl("cForm").style.display="none";
        documentGoToLocation("chat");    
        gChatMoreToggle(true);
        return gChatSubmitHandler(cm,cs);
    }    
}

//Chat Entries - Array in type: [sign,body,timeString]
function gChatShow(chatEntries)
{
    if (docEl("cForm").style.display=="none") //if was hidden - after submit
    {
        docEl("cForm").style.display="block";
        docEl("cFormMsg").focus();
    }
    else docEl("cForm").style.display="block";
    var ces=docEl("chatEntries");
    domRemoveAllChildren(ces);
        
    for (var e=0;e<chatEntries.length;e++)
    {
        var currentEntry=chatEntries[e];
        var ced=domCreateElement("div","","chatEntry"+(e==0?" first":""),"");           
        domAppendChild(ced,"div","","chatEntryInfo",currentEntry[0]+" on "+currentEntry[3]+", "+currentEntry[2]+" wrote:");
        domAppendChild(ced,"div","","chatEntryContent",currentEntry[1]);
        ces.appendChild(ced);
    }
}
function gChatSignatureSet(sign)
{
    docEl("cFormSgn").value=sign;
}



var gBodyOnMouseMoveLXY="";
function gBodyOnMouseMove(e) //mouse move invalid in IE7 -> invoked on visible/hidden display/none
{
    e=e||event;
    var cXY=e.clientX+"x"+e.clientY;
    if (gBodyOnMouseMoveLXY!=cXY)
    {
        gBodyOnMouseMoveLXY=cXY;
        gBodyShadowHide();
    }
}
//TODO:if trainer is enabled than shadow 
var gBodyShadowShowTO=null;
var gBodyShadowEnabled=false;
var gBodyShadowAllow=false;
function gBodyShadowAllowToggle(allow)
{
    gBodyShadowAllow=allow;
    gBodyShadowShowTimerRefresh();
}
function gBodyShadowShowTimerRefresh()
{
    if (gBodyShadowShowTO)
        clearTimeout(gBodyShadowShowTO);
    gBodyShadowShowTO=setTimeout(gBodyShadowShow,15000);
}
function gBodyShadowShow()
{
    gBodyShadowShowTO=null;
    if (gBodyShadowAllow)
        gBodyShadowToggle(true);
    else gBodyShadowShowTimerRefresh();
}
function gBodyShadowHide()
{
    gBodyShadowToggle(false);
    gBodyShadowShowTimerRefresh();
}
function gBodyShadowToggle(enable)
{
    if (gBodyShadowEnabled==enable) return;
    gBodyShadowEnabled=enable;
    if (enable)
    {
        docEl("toolContent").style.zIndex="2000";
        docEl("toolContent").style.display="block"; //IE6 fix   
        docEl("shadowDiv").style.visibility="visible";
    }
    else 
    {
        docEl("toolContent").style.zIndex="";//"0";
        docEl("shadowDiv").style.visibility="hidden";
    }
}
function gBodyShadowInit()
{
    document.body.onmousemove=gBodyOnMouseMove;
    gBodyShadowShowTimerRefresh();
}

function gInit()
{    
    gBodyShadowInit();
}
//----------------------- GUI -----------------------//
//----------------------- LOGIC -----------------------//
//--CHAT--//
var lChatHost="http://tdlchatsystem.appspot.com";
var lChatIds=[11,12,13];
var lChatId=11;
var lChatOffset=0;

function lChatInit()
{
	if ((document.location+"").indexOf("praca/bestdrumtrainer.com")>=0 ||
        (document.location+"").indexOf("http://localhost")>=0 ||
        (document.location+"").indexOf("http://127.0.0")>=0)
		lChatHost="http://localhost:8080";
    
    lChatLoad();
}
function lChatSelectHandler(ci)
{
    lChatOffset=0;
    lChatId=lChatIds[ci];
    lChatLoad();
}
function lChatOlderHandler()
{
    lChatOffset+=20;
    lChatLoad();
}

var lChatEntries=new Array();
function lChatLoad()
{
    lChatEntries=new Array();
    scriptLoad(lChatHost+"/load?finFun=lChatLoadDone&entFun=lChatLoadEntry&id="+lChatId+"&offset="+lChatOffset,-1);
}
function lChatLoadEntry(sign,body,time)
{
    var t=(0+time)*1000;
    var d=new Date(t);
    lChatEntries[lChatEntries.length]=[sign,body,dateDateString(d),dateTimeString(d,true)];
}

function lChatLoadDone(ok)
{
    if (ok) gChatShow(lChatEntries);
}

function lChatSubmitHandler(message,signature)
{
    lChatSave(textEscape(message),textEscape(signature));
    lChatOffset=0;
    return false;
}
function lChatSave(body,sign)
{
    if (sign=="") sign="Guest";
    else
        cookieSet("sign",sign,"bestdrumtrainer.com",30);

    scriptLoad(lChatHost+"/save?retFun=lChatSaveReturn&body="+body+"&sign="+sign+"&id="+lChatId,-1);
}
function lChatSaveReturn(ok)
{
    if (ok) lChatLoad();
}
//--CHAT--//
function lInit()
{
    lChatInit();
    var sign=cookieGet("sign");
    if (sign!="") 
        gChatSignatureSet(sign);

    gChatSelectHandler=lChatSelectHandler;
    gChatOlderHandler=lChatOlderHandler;
    gChatSubmitHandler=lChatSubmitHandler;    
}
//----------------------- LOGIC -----------------------//
//-- SPEED TRAINER --//
function STLStartStop(start)
{
    gBodyShadowAllowToggle(start=="true");
}
//-- SPEED TRAINER --//

function init()
{
    lInit();
    gInit();
}

