String.prototype.trim = function() { return this.replace(/^\s+|\s+$/, ''); };

function FactoryXMLHttpRequest()
{
    if(window.XMLHttpRequest)
    {
        return new XMLHttpRequest();
    }
    else if(window.ActiveXObject)
    {
        var msxmls = new Array('Msxml2.XMLHTTP.5.0', 'Msxml2.XMLHTTP.4.0', 'Msxml2.XMLHTTP.3.0', 'Msxml2.XMLHTTP', 'Microsoft.XMLHTTP');
        for (var i = 0; i < msxmls.length; i++)
        {
            try
            {
                return new ActiveXObject(msxmls[i]);
            }
            catch (e) { }
        }
    }
    throw new Error("Could not instantiate XMLHttpRequest");
}

function RndUrl()
{
    return '&rndrefresh=' + Math.random();
}


function getResponse(url)
{
    var request = new FactoryXMLHttpRequest();
    request.open("GET", url, false);
    request.send(null);           
    var response = request.responseText; 
    return response; 
}


function loadContent(contentDiv, url, force, showProgress)
{

    url += "&ignorehead=yes";

    if (contentDiv == undefined) return;

    if (!force)
        if (contentDiv.innerHTML.trim().length > 0)
            return;


    if (showProgress)
        contentDiv.innerHTML = '<span class="loading">Nahravam&hellip;</span>';

    var request = new FactoryXMLHttpRequest();
    
    request.onreadystatechange = function() { loadContentFinish(request, contentDiv); };        
        
    request.open("GET", url, true);
    request.send(null);        
    
}


function loadContentFinish(req, contentDiv)
{
    if (contentDiv == null) return;
    if (req.readyState == 4)
    {
        if (req.status == 200)
        {
            var response = req.responseText;            
            
            contentDiv.innerHTML = response;
          
            if (contentDiv.firstChild != undefined)
            {
                if (contentDiv.firstChild.id == contentDiv.id)
                {
                    var contentNew = contentDiv.firstChild.childNodes;
                    var len = contentNew.length;

                    contentDiv.removeChild(contentDiv.firstChild);
                    for (var i = 0; i < len; i++)
                    {
                        contentDiv.appendChild(contentNew.item(0));
                    }
                }
            }
            //getReady();
        }
        else
            contentDiv.innerHTML = "Error";
    }
}


function faces_Letter(t)
{
    var n = document.getElementById('faces_letters'); 
    var url = "/?Template=/System/Faces/ListByLetter&Letter=" + t + RndUrl(); 
    loadContent(n, url, true, false); 
}


function getMeter(h1, m1, h2, m2)
{
    var now = new Date();
    var i1 = h1 + (m1 / 60);
    var i2 = now.getHours() + (now.getMinutes() / 60);
    var i3 = h2 + (m2 / 60);
    
    if (i3 < i1) i3 += 24; 

    var d1 = i3 - i1; 
    var d2 = i2 - i1; 
    
    var d = Math.floor((d2 / d1) * 100); 

    if (d > 100) d = 100; 
    if (d < 0) d = 0;

    return d;
}  


function SelectProgram(BroadcastID)
{

    var collection = document.getElementsByTagName('tr'); 
    
    for (var i = 0; i < collection.length; i++)
    {
        var trN = collection[i]; 
        
        var arr = trN.id.split('_'); 
        
        if (arr[0] == "box")
        {            
            trN.className = arr[1] == BroadcastID ? "selected" : ""; 
        }
    
    }

//  $('#weekPane .box .scroll-pane').jScrollPane();

//    var trN = document.getElementById('box_' + BroadcastID); 
    
    
}


var ScrollingAmountActual = new Array(); 
var scrollingAmount = new Array(); 
var scrollingTimer = new Array(); 
var ScrollingPosition = new Array(); 
var ScrollingAcceleration = new Array(); 
var ScrollingMax = new Array(); 

function initScroll(iframeID)
{
    var n = document.getElementById(iframeID);         
        
    var w = n.contentWindow;    
    ScrollingPosition[iframeID] = 2500;
    w.scroll(ScrollingPosition[iframeID], 0);
}

function startScroll(iframeID, amount)
{
    
    scrollingAmount[iframeID] = amount;
    ScrollingAcceleration[iframeID] = 0.05; 
    
    
    if (ScrollingMax[iframeID] == undefined)
    {
        var n = getIFrameDocument(iframeID);  
        ScrollingMax[iframeID] = 5100;//n.body.offsetWidth - document.getElementById(iframeID).offsetWidth ;                                 
    }
                
   
    if (ScrollingAmountActual[iframeID] == undefined)
        ScrollingAmountActual[iframeID] = 0; 
        
    if (ScrollingPosition[iframeID] == undefined)
        ScrollingPosition[iframeID] = 0; 
    
    if (scrollingTimer[iframeID] == undefined)        
        scrollingTimer[iframeID] = window.setInterval("scrollInterval('" + iframeID + "')", 10); 
   

}


function scrollInterval(iframeID)
{
    if (ScrollingAmountActual[iframeID] != scrollingAmount[iframeID])
    {        
        var d = (scrollingAmount[iframeID] - ScrollingAmountActual[iframeID]) * ScrollingAcceleration[iframeID];
        ScrollingAmountActual[iframeID] += d;             
    }
         
     
    var sa = Math.round(ScrollingAmountActual[iframeID] * 10);          
   
    ScrollingPosition[iframeID] += ScrollingAmountActual[iframeID]; 
              
    if (ScrollingPosition[iframeID] < 0)
    {
        ScrollingPosition[iframeID] = 0; 
        sa = 0; 
    }
            
    
    if (ScrollingPosition[iframeID] > ScrollingMax[iframeID])
    {
        ScrollingPosition[iframeID] = ScrollingMax[iframeID]; 
        sa = 0; 
    }        
        
              
    if (sa == 0)
    {
        ScrollingAmountActual[iframeID] = 0; 
        ScrollingAcceleration[iframeID] = 0; 
        scrollingAmount[iframeID] = 0; 
         
        window.clearInterval(scrollingTimer[iframeID]); 
        scrollingTimer[iframeID] = undefined; 
        
        
       // alert('end'); 
    }
    
   
    var n = document.getElementById(iframeID);         
        
    var w = n.contentWindow;    
    w.scroll(ScrollingPosition[iframeID], 0); 
           
}


function endScroll(iframeID)
{
    ScrollingAcceleration[iframeID] = 0.1; 
    scrollingAmount[iframeID] = 0;
}


function getIFrameDocument(aID)
{
  
  try 
  {
      if (document.getElementById(aID).contentDocument)
      {
         // if contentDocument exists, W3C compliant (Mozilla)
         return document.getElementById(aID).contentDocument;
      } 
      else 
      {
         // IE
         return document.frames[aID].document;
      }
  }
  catch (e) { }
} 


function addProgrammeToSelection(ProgrammeID)
{
    var url = "/actions/ModifyItemSelection.aspx?action=add&itemid=" + ProgrammeID + "&SelectionTypeID=1&noredirect=yes" + RndUrl(); 
          
    var response = getResponse(url);        
    
    if (response == "ok")
        alert("Porad byl pridan do vasich oblibenych poradu."); 
                
}


function RedirectPage(url)
{
   //  alert(url);     
    document.location = url;
}

/* Comments */
function comment_reply(parentId, date, sender)
{
    var em = document.getElementById("c-parentid");
    if(em != null) em.value = parentId;
        
    em = document.getElementById("reaction");       
    if(em) em.className = "";
    
    util_setText("reactionText", date);
    util_setText("reactionSender", sender);
}

function comment_cancelReply()
{
    var em = document.getElementById("c-parentid");
    if(em != null) em.value = "";
    
    em = document.getElementById("reaction");       
    if(em) em.className = "hidden";
}


function comment_afterAjax(divID, CommentsItemID)
{
    Ajax('content_' + divID, '/?Template=/System/Comments/ItemComments&CommentsItemID=' + CommentsItemID);    
}


function comment_submit(btn)
{   
    var frm = btn.form;
    var ret = true;
    if(frm.w2pEmail)
    {
        if(!util_validateRegex(frm.w2pEmail, util_emailRegex, true))
        {
            ret = false;           
            util_showElement("commentErrMail");
        }
        else util_hideElement("commentErrMail");
    }
    
    if(frm.w2pName.value != "") util_hideElement("commentErrNick");
    else
    {    
        ret = false;           
        util_showElement("commentErrNick");
    }

    if(frm.w2pText.value != "") util_hideElement("commentErrText");
    else
    {        
        ret = false;           
        util_showElement("commentErrText");
    }
    
    var h = frm.hash.value; 
            
    url = "actions/CodeCheck.aspx?code=" +  frm.w2pCode.value + "&h=" + h;
    var request = new FactoryXMLHttpRequest();
    request.open("GET", url, false);
    request.send(null);              
    
    var response = request.responseText;        
    var retCode = (response == "OK");
    
    if(!retCode)
    {
        ret = false;
        util_showElement("commentErrCode");
    }
    else
        util_hideElement("commentErrCode");
    
    if(ret) util_hideElement("commentErr");
    else util_showElement("commentErr");
    
    if(ret) 
    {
        document.getElementById('w2pSend').className = "hidden"; 
        document.getElementById('comment_sending').className = ""; 
    
        document.getElementById('frmComment').submit();
    }
}

/* ranking */
function rankOver(idBase, i)
{
    for(var x = 1; x <= 5; x++)
    {
        var id = idBase + x;    
        var star = document.getElementById(id);
        if(star)
        {        
            star.src = (x <= i) ? "/img/icons/star-3.gif" : "/img/icons/star-2.gif";
        }
    }
}

function rankClick(rankitemid, i)
{
    var url = "/actions/itemrank.aspx?itemid=" + rankitemid  + "&s=" + i + "&" + RndUrl(); 
    var req = new FactoryXMLHttpRequest();    
    req.open("GET", url, false);
    req.send(null);
            
    elementReload(rankitemid, 1, true);
}

function rankContainerOut(rankitemid, rank)
{   
    var idBase = "star-" + rankitemid + "-";   
    for(var x = 1; x <= 5; x++)
    {
        var id = idBase + x;
        var star = document.getElementById(id);        
        if(star)
        {
            star.src = (rank >= x) ? "/img/icons/star-1.gif" : "/img/icons/star-2.gif";
        }
    }
}


/* util */
var util_emailRegex = /[a-z0-9!#$%&amp;'*+/=?^_`~-]+(?:\.[a-z0-9!#$%&amp;'*+/=?^_`~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?/;

function util_setText(id, value)
{
    var em = document.getElementById(id);       
    if(em)
    {
        if(document.all) em.innerText = value; 
        else em.textContent = value;
    }
}

function util_showElement(id)
{
    var em = document.getElementById(id);       
    if(em)
    {
        var arr = em.className.split(" ");
        em.className = "";
        for(i in arr)
        {
            if(arr[i] != "hidden")
            {
                em.className =  em.className + " " + arr[i];               
            }
        }        
    }
}

function util_hideElement(id)
{
    var em = document.getElementById(id);       
    if(em)
    {
        if(em.className.length <= 0 || em.className[em.className.length] == "")    
            em.className = em.className + "hidden";
        else em.className += " hidden";
    }
}

function util_validateRegex(element, regex, canBeEmpty)
{   
        if(canBeEmpty && element.value == "") return true;
        return element.value.match(regex); 
}

function showPreviewAnketa(param1, param2)
{
    var em = document.getElementById('param_' + param1 + '_' + param2 + '_preview');
    if(em)
    {    
        em.value = (em.value == "no") ? "yes" : "no";
        elementReload(param1, param2);
    }
}

function submitAnketa(param1, param2)
{
    var quest = false;
    var poll = document.getElementById('param_' + param1 + '_' + param2 + '_pollID');
    var questObal = document.getElementById('obal_' + param1 + '_' + param2);
    
    if(questObal && poll)
    {   
        var inputs = questObal.getElementsByTagName("input");
        for (var i = 0; i < inputs.length; i++)
        {            
            if(inputs[i].checked)
            {
                quest = inputs[i].value;                
                break;
            }
        } 
        if(quest)
        {
            var url = "/actions/pollvote.aspx?pollItemID=" + poll.value + "&questionID=" + quest + "&" + RndUrl(); 
            var req = new FactoryXMLHttpRequest();
            
            req.open("GET", url, false);
            req.send(null);
            
            elementReload(param1, param2);            
        }
      //  else
      //      alert("Vyberte jednu z možností.");
    }
}

function elementReload(itemID, elementID)
{
    elementReload(itemID, elementID, false);
}

function elementReload(itemID, elementID, noParam)
{
    var ElementN = document.getElementById('element_' + itemID + '_' + elementID);        
    
    var url = getParameters(ElementN, "input", itemID, elementID, noParam);
    url += getParameters(ElementN, "select", itemID, elementID, noParam);
    
    if (url != "")
    {                
        var ElementN2 = document.getElementById('elementcontent_' + itemID + '_' + elementID);
        if(ElementN2)
        {
            url = "/?" + url + "&ajax=yes&envelope=~" + RndUrl();            
            loadContent(ElementN2, url, true, true);
        }
    }
}

function getParameterValue2(name, itemID, elementID)
{
    var n = document.getElementById(name + '_' + itemID + '_' + elementID);
    if (n == null)
        return "";
    else
        return n.value;

}

function getParameters(ElementN, tagName, itemID, elementID, noparam)
{
    var collection = ElementN.getElementsByTagName(tagName);
    var url = "";
    for (var i in collection)
    {
        var n = collection[i];
        if(!n) continue;
        var id = n.id;
        
        if (id != null)
        {
            var arr = id.split("_");
            if (arr[0] == "param")
            {
                if (arr[1] == itemID && arr[2] == elementID)
                {
                    var paramName = arr[3];
                    if (arr.length == 5)
                        paramName += "_" + arr[4];

                    url += "&" + (noparam ? "" : "param_") + paramName + "=" + escape(n.value);
                }
            }
        }

    }
    return url;
}

var toolTipShowTimer;
var toolTipHideTimer;

function ShowToolTip(txt) 
{
    toolTipShowTimer = window.setInterval('ShowToolTipAfterTimer("' + txt + '");', 300); 
    
    if (toolTipHideTimer != null)
        window.clearInterval(toolTipHideTimer); 

}

function ShowToolTipAfterTimer(txt)
{
    window.clearInterval(toolTipShowTimer); 

    var scrollY =  getScrollY();

    var lx = mouseX + 10; 
    var ly = mouseY + 10 + scrollY;
                                                    
    var n = document.getElementById('tooltip'); 
    
    n.style.left = lx + 'px'; 
    n.style.top = ly + 'px';                                   
                
    
    n.className = ""; 
    n.innerHTML = txt; 

}
function getScrollY() {
    var scrOfY = 0;
    if (typeof( window.pageYOffset ) == 'number') scrOfY = window.pageYOffset;
    else if(document.body && ( document.body.scrollLeft || document.body.scrollTop )) scrOfY = document.body.scrollTop;    
    else if(document.documentElement && ( document.documentElement.scrollLeft || document.documentElement.scrollTop )) scrOfY = document.documentElement.scrollTop;      
    return scrOfY;
}


function HideToolTip() 
{ 
     window.clearInterval(toolTipShowTimer); 
     toolTipHideTimer = window.setInterval('HideToolTipAfterTimer();', 200); 
}

function HideToolTipAfterTimer()
{
    window.clearInterval(toolTipHideTimer); 
    var n = document.getElementById('tooltip'); 
    n.className = "hidden"; 
}


var mouseX, mouseY;

document.onmousemove = getXYPosition;

function getXYPosition(e)
{
    mouseX=(e||event).clientX;
    mouseY=(e||event).clientY;
}

function Ajax(elementID, url)
{  
    url += "&envelope=~&ignorehead=yes" + RndUrl();            
        
    var contentDiv = document.getElementById(elementID);
	  var loadDiv = document.getElementById('myload');
    
    if (contentDiv == undefined) return;    

  //contentDiv.innerHTML = '<span class="loading">Nahravam&hellip;</span>';
	  loadDiv.className = "loading"; 
    var request = new FactoryXMLHttpRequest();
    
    request.onreadystatechange = function() { AjaxFinish(request, contentDiv, loadDiv); };
    
    //alert(url); 
    
    request.open("GET", url, true);
    request.send(null);   
    

}

function AjaxFinish(req, contentDiv, loadDiv)
{

    if (contentDiv == null) return;
    if (req.readyState == 4)
    {
        if (req.status == 200)
        {
            var response = req.responseText;            
             loadDiv.className = "loading hidden"; 
                      
            contentDiv.innerHTML = response;
            ShowAjaxElements(contentDiv);
                 	
                 	
            
//tb_init('a.thickbox, area.thickbox, input.thickbox');
//pass where to apply thickbox
//	imgLoader = new Image();   
// preload image
   
//imgLoader.src = tb_pathToImage;
       
          
        }
        
    }

}



function ShowAjaxElements(contentDiv)
{

    var collection = contentDiv.getElementsByTagName('div'); 
    
    for (var i = 0; i < collection.length; i++)
    {
        var n = collection[i]; 
        
        var arr = n.id.split('_'); 
        
        if (arr[0] == "pager" || arr[0] == "letters")
        {            
            n.className = ""; 
        }
    
    }    
    
}