
// Zakladni konfigurace pohyblivych boxu
var zapamatovat_souradnice_boxu = true;
var definice_cookies_jmena = 'uzivatelsky_box';

var soucasny_drag_box = new Array();
var duplicitni_drag_box = new Array();
var ciselne_id_drag = false;
var drag_and_drop_casovac = -1;
var soucasny_z_index = 1000;
var soucasne_zobrazeni = 'visible';

var mouse_x;
var mouse_y;
var el_x;
var el_y;

var drag_box_pohyb = new Array();
var box_cookies_retezec;
var box_cookies_polozky = new Array();

// Funkce pro zapis provedenych akci do cookies
function ziskat_cookies(name) {
var start = document.cookie.indexOf(name+"=");
var len = start+name.length+1;
if ((!start) && (name != document.cookie.substring(0,name.length))) return null;
if (start == -1) return null;
var end = document.cookie.indexOf(";",len);
if (end == -1) end = document.cookie.length;
return unescape(document.cookie.substring(len,end));
}

function nastaveni_cookies(name,value,expires,path,domain,secure) {
expires = expires * 60*60*24*1000;
var today = new Date();
var expires_date = new Date( today.getTime() + (expires) );
var cookieString = name + "=" +escape(value) +
( (expires) ? ";expires=" + expires_date.toGMTString() : "") +
( (path) ? ";path=" + path : "") +
( (domain) ? ";domain=" + domain : "") +
( (secure) ? ";secure" : "");
document.cookie = cookieString;
}

function getTopPos(inputObj)
{
var returnValue = inputObj.offsetTop;
while((inputObj = inputObj.offsetParent) != null){
if(inputObj.tagName!='HTML')returnValue += inputObj.offsetTop;
}
return returnValue;
}

function getLeftPos(inputObj)
{
var returnValue = inputObj.offsetLeft;
while((inputObj = inputObj.offsetParent) != null){
if(inputObj.tagName!='HTML')returnValue += inputObj.offsetLeft;
}
return returnValue;
}

// Inicializace funkce pro funkci drag and drop
function inicializace_drag_and_drop(e)
{
if(document.all)e = event;
if(document.all)e = event;
if (e.target) source = e.target;
else if (e.srcElement) source = e.srcElement;
if (source.nodeType == 3)
source = source.parentNode;

if(source.tagName.toLowerCase()=='input' || source.tagName.toLowerCase()=='textarea')return false;
ciselne_id_drag = this.className.replace(/[^0-9]/g,'');
drag_and_drop_casovac=0;
mouse_x = e.clientX;
mouse_y = e.clientY;
soucasny_z_index = soucasny_z_index + 1;
duplicitni_drag_box[ciselne_id_drag].style.zIndex = soucasny_z_index;

if(!drag_box_pohyb[ciselne_id_drag]){
duplicitni_drag_box[ciselne_id_drag].style.top = getTopPos(soucasny_drag_box[ciselne_id_drag]) + 'px';
duplicitni_drag_box[ciselne_id_drag].style.left = getLeftPos(soucasny_drag_box[ciselne_id_drag]) + 'px';
}
el_x = duplicitni_drag_box[ciselne_id_drag].style.left.replace('px','')/1;
el_y = duplicitni_drag_box[ciselne_id_drag].style.top.replace('px','')/1;

casovac_drag_and_drop();
return false;
}

// Casovac pro predeslou funkci drag and drop
function casovac_drag_and_drop()
{
if(drag_and_drop_casovac>=0 && drag_and_drop_casovac<10){
drag_and_drop_casovac = drag_and_drop_casovac + 1;
setTimeout('casovac_drag_and_drop()',5);
return;
}

if(drag_and_drop_casovac>=10){
if(duplicitni_drag_box[ciselne_id_drag].style.display=='none'){
soucasny_drag_box[ciselne_id_drag].style.visibility = 'hidden';
duplicitni_drag_box[ciselne_id_drag].style.display = 'block';
duplicitni_drag_box[ciselne_id_drag].style.visibility = 'visible';
duplicitni_drag_box[ciselne_id_drag].style.top = getTopPos(soucasny_drag_box[ciselne_id_drag]) + 'px';
duplicitni_drag_box[ciselne_id_drag].style.left = getLeftPos(soucasny_drag_box[ciselne_id_drag]) + 'px';
drag_box_pohyb[ciselne_id_drag] = true;
}
}
}

// Zruseni probihajicich udalosti ve skriptu
function zrusit_vsechny_udalosti()
{
return false;
}

// Zruseni probihajicich udalosti ve skriptu
function zrusit_vybrane_udalosti()
{
if(drag_and_drop_casovac>=0)return false;
return true;
}

// Funkce pro pohyb daneho boxu ci elementu na prezentaci
function pohyb_daneho_elementu(e)
{
if(document.all)e = event;
if(drag_and_drop_casovac<10)return;
duplicitni_drag_box[ciselne_id_drag].style.left = (e.clientX - mouse_x + el_x) + 'px';
duplicitni_drag_box[ciselne_id_drag].style.top = (e.clientY - mouse_y + el_y) + 'px';
}

// Zastaveni funkce pro pohyb daneho boxu ci elementu
function zastaveni_pohybu_daneho_elementu()
{
drag_and_drop_casovac = -1;
if(zapamatovat_souradnice_boxu && duplicitni_drag_box[ciselne_id_drag]){
box_cookies_polozky['ajax_load_dalsi' + ciselne_id_drag] = [duplicitni_drag_box[ciselne_id_drag].style.left,duplicitni_drag_box[ciselne_id_drag].style.top,duplicitni_drag_box[ciselne_id_drag].style.zIndex,duplicitni_drag_box[ciselne_id_drag].style.visibility];
}
if(zapamatovat_souradnice_boxu)vytvoreni_cookies_retezce();
ciselne_id_drag = false;
}

// Vytvoreni noveho cookies retezce pri posunuti boxu
function vytvoreni_cookies_retezce()
{
var stringToSave = '';
for(var prop in box_cookies_polozky){
if(stringToSave)stringToSave = stringToSave + '###';
stringToSave = stringToSave + prop + ',' + box_cookies_polozky[prop][0] + ',' +  box_cookies_polozky[prop][1] + ',' +  box_cookies_polozky[prop][2] + ',' +  box_cookies_polozky[prop][3];
}
nastaveni_cookies(definice_cookies_jmena,stringToSave,60000000);
}

// Inicializace pohyblivych boxu ci elementu na prezentaci
function inicializace_pohyblivych_boxu()
{
var box_cookies_retezec = false;
if(zapamatovat_souradnice_boxu){
box_cookies_retezec = ziskat_cookies(definice_cookies_jmena);
}
var tmpElements = new Array();
var allObjects = document.getElementsByTagName('*');
for(var no=0;no<allObjects.length;no++){
if(allObjects[no].className=='ajax_load'){
allObjects[no].style.cursor = 'move';
tmpElements[tmpElements.length] = allObjects[no];
}
}

for(var no=0;no<tmpElements.length;no++){
var el = tmpElements[no].cloneNode(true);
tmpElements[no].className='ajax_load' + no;
el.onmousedown = inicializace_drag_and_drop;
el.className='ajax_load_dalsi' + no;

el.style.position='absolute';
el.style.display='none';
el.style.visibility='hidden';

el.style.top = getTopPos(tmpElements[no]) + 'px';
el.style.left = getLeftPos(tmpElements[no]) + 'px';
tmpElements[no].parentNode.insertBefore(el,tmpElements[no]);
tmpElements[no].onmousedown = inicializace_drag_and_drop;

soucasny_drag_box[no] = tmpElements[no];
duplicitni_drag_box[no] = el;
}

document.body.onmousemove = pohyb_daneho_elementu;
document.body.onmouseup = zastaveni_pohybu_daneho_elementu;
document.body.onselectstart = zrusit_vybrane_udalosti;
document.body.ondragstart = zrusit_vsechny_udalosti;

if(box_cookies_retezec){
var items = box_cookies_retezec.split('###');
for(var no=0;no<items.length;no++){
var tokens = items[no].split(',');
box_cookies_polozky[tokens[0]] = [tokens[1],tokens[2],tokens[3],tokens[4]];
}
zjisteni_souradnic_cookies();
}
}

// Zjisteni souradnic pro vypis boxu ci elemtu na prezentaci
function zjisteni_souradnic_cookies()
{
for(var prop in box_cookies_polozky){
for(var no=0;no<duplicitni_drag_box.length;no++){
if(duplicitni_drag_box[no].className==prop){
drag_box_pohyb[no] = true;
duplicitni_drag_box[no].style.display='block';
soucasny_drag_box[no].style.visibility = 'hidden';
duplicitni_drag_box[no].style.visibility = 'visible';
duplicitni_drag_box[no].style.left = box_cookies_polozky[prop][0];
duplicitni_drag_box[no].style.top = box_cookies_polozky[prop][1];
duplicitni_drag_box[no].style.zIndex = box_cookies_polozky[prop][2];
soucasny_z_index = Math.max(soucasny_z_index,box_cookies_polozky[prop][2]/1 + 1);
}
}
}
}

// Inicializace a nacteni funkci pri spusteni prezentace
window.onload = inicializace_pohyblivych_boxu;
