﻿/** Global variables */
winId=0;
prevMore = null;
useTabWin = true;
tabWinReference = null;
tabWinUrl = null;
tabWinTitle = null;
tabWinName = null;
mouseX = 0;
mouseY = 0;
cpsDomain = "";
metaData = new Array();

function changeClass(elid,cname)	{
	var el = xGetElementById( elid );
	if ( el!=null )	{
		el.className=cname;
	}
}
// Pause script - blank cycle uses huge cpu
function pause( numberMillis ) {
    var now = new Date();
    var exitTime = now.getTime() + numberMillis;
    while (true) {
        now = new Date();
        if (now.getTime() > exitTime)
            return;
    }
}

/**
 * Make simple http request
 */
function makeRequest( url )	{
	var ranNum= Math.round(Math.random()*9999999);
    
	var req = new Image();
	req.src = url+'&'+ranNum;	
	pause(500);
}	

/**
 * Simple map - set function
 */
function setMetaData( key, param, value )	{
	if ( typeof(metaData[key]) == 'undefined' )	{
		metaData[key] = new Array();
	}
	metaData[key][param] = value;
}

/**
 * Simple map - get function
 */
function getMetaData( key, param )	{
	if ( typeof(metaData[key]) == 'undefined' )	{
		return null;
	}
	else	{
		var value = metaData[key][param];
		if ( typeof(value) == 'undefined' )	{
			return null;
		}
		else	{
			return value;
		}
	}
}

/**
 * Switch tree row more block
 */
function toggle( row )	{
	if ( row == prevMore )	{
		return false;
	}
	unselect( prevMore );
	select( row );
	prevMore = row;
}

/**
 * Switch tree row color
 */
function select( row ) {
	var br = xGetElementById('br_'+row);
	if ( br!=null) {
		br.className = "branchover";
	}
	return false;
}

/**
 * Switch tree row color
 */
function unselect( row ) {
	var br = xGetElementById('br_'+row);
	if ( br!=null) {
		br.className = "branch";
	}
	return false;
}

/**
 * Toggle row child visibility
 */
function branch( row, store )	{
	var br = xGetElementById('bc_'+row);
	if ( br!=null) {
		if (br.className == "container") { 
			br.className = "containerhide";
			if ( !store && userData.splice )	{ 
				for (var i=0; i<userData.length; i++) {
					if (userData[i] == row) { userData.splice(i,1); }
				}
			}
		}
		else {
			br.className = "container";
			if ( !store && userData.splice )	{ 
				userData.splice(userData.length,0,row);
			}
		}
	}
	br = xGetElementById('bi_'+row);
	if ( br!=null) {
		if (br.className == "open") { 
			br.className = "close";
		}
		else {
			br.className = "open";
		}
	}
	return false;
}
function branchAll(state) {
	var arr = document.body.getElementsByTagName("DIV");
	var i, e, id;
	var cnt = 0;
	
	for ( i=0;i<arr.length;i++ ) {
		e = arr[i];
		if ( e.id.indexOf("bc_") > -1 ) {
			if ( state == false && e.className == 'container') continue;
			if ( state == true && e.className != 'container' ) continue;
			id = e.id.substr(3, e.id.length);
			if ( id == "root" ) continue;
			branch(id);
		}
	}
	return false;
}

function info( id,name,url,src )	{
	alert("[Informace o stránce]\nId:"+id+"\nNázev:"+name+"\nAdresa:"+url+"\nZdroj:"+src);
	branch(id);
}
function flags( editable, hidden, changed )	{
	var code = '<span class="flags">';
	if ( changed )	code += '<img src="/edee/img/tree_state_changed.gif" title="Stránka změněna od poslední publikace" alt="Stránka změněna od poslední publikace">';
	if ( editable )	code += '<img src="/edee/img/tree_state_editable.gif" title="Editovatelná stránka" alt="Editovatelná stránka">';
	if ( hidden )	code += '<img src="/edee/img/tree_state_hidden.gif" title="Skrytá stránka" alt="Skrytá stránka">';
	code += '</span>';
	document.write(code);
}
function menuDomain( domain )	{
	cpsDomain = domain;
}
function renameFile( name, path, storage )	{

	var bsi = path.lastIndexOf('/');
	if ( bsi<0 ) return false;
	path = path.substr(0,bsi);

	var newName = window.prompt('Nový název souboru',name);
	if ( newName.length > 0 && newName != path )	{
		window.location.href='storage.do?storage='+storage+'&fwd=rename&path='+path+'/'+name+'&param='+newName;
	}
	return false;
}

function deleteFile( lang, path, storage )	{

	if ( !confirm("Tato akce je nevratná. Opravdu chcete pokračovat?") ) return false;
	var bsi = path.lastIndexOf('/');
	if ( bsi<0 ) return false;
	path = path.substr(bsi);
	openWindow('storage.do?storage='+storage+'&successUrl=/adm/cps/preview.do%3Fid=admin_ok&lang='+lang+'&fwd=delete&path='+path+'&layout=edit_frontend', 'Delete','Odstranění souboru');
	return false;
}
function metadataEdit( name, path, storage, lang )	{

	var bsi = path.lastIndexOf('/');
	if ( bsi<0 ) return false;
	path = path.substr(bsi);
	openWindow('metadataEdit.do?path=/'+storage+'/'+path+'&lang='+lang+'&layout=edit_frontend&metadataId=properties&', 'Úprava','Úprava vlastností souboru');
	return false;
}
function uploadFile( lang, path, storage )	{

	var bsi = path.lastIndexOf('/');
	if ( bsi<0 ) return false;
	path = path.substr(bsi);
	openWindow('storage.do?storage='+storage+'&successUrl=/adm/cps/preview.do%3Fid=admin_ok&lang='+lang+'&fwd=upload&path='+path+'&layout=edit_frontend', 'Upload','Vložení souboru');
	return false;
}
/**
* Show CPS menu
*/
function fileMenu( name, path, url, storage, open, del, upload, rename, metadata, lang )	{
	if ( document.createElement )	{
		menuOff();
		var code = "";
		if ( open ) code += menuItemOpenTab('ico_open','Otevřít',url+'/'+path,'Soubor');
		if ( del ) code += menuItem('ico_delete','Odstranit', "deleteFile('"+lang+"','"+path+"','"+storage+"');" );
//		if ( del ) code += menuItem('ico_delete','Odstranit', "window.location.href='storage.do?storage="+storage+"&amp;fwd=delete&amp;path="+path+"';return false;" );
//		if ( upload ) code += menuItem('ico_create','Vložit soubor', "window.location.href='storage.do?storage="+storage+"&amp;fwd=upload&amp;path="+path+"';return false;" );
		if ( upload ) code += menuItem('ico_create','Vložit soubor', "uploadFile('"+lang+"','"+path+"','"+storage+"');" );

		if ( rename ) code += menuSep();
		if ( rename ) code += menuItem('ico_rename','Přejmenovat', "return renameFile('"+name+"','"+path+"','"+storage+"');" );
		if ( metadata  && open) code += menuItem('ico_edit','Upravit vlastnosti', "metadataEdit('"+name+"','"+path+"','"+storage+"','"+lang+"');" );
		
		var menu = document.createElement('div');
		menu.id = 'pullmenu';
		menu.innerHTML = code;
		menu.className="pullmenu";
		document.body.appendChild( menu );
		if (xIE4Up)	{
			mouseX = event.x+xScrollLeft();
			mouseY = event.y+xScrollTop();
		}
		xLeft('pullmenu',mouseX); 
		xTop('pullmenu',mouseY); 

	}
	else	{
		alert("DOM required.");
	}
	return false;
}
/**
* Show CPS menu
*/
function menu( id, lang, name, url,  preview, generate, generateTree, edit )	{

	if ( document.createElement )	{
		menuOff();
		var code = "";
		if ( preview ) { code += menuItemOpenTab('ico_preview','Náhled','preview.do?id='+id+'&lang='+lang+'&layout=edit_frontend','Náhled obsahu stránky '+name); }
		var up = url.substring(0,7);
		if ( up == 'http://' || up == 'https:/' )	{
			code += menuItemOpenTab('ico_open','Otevřít', url,'Publikovaná verze stránky');
		}
		else if ( up=="#" )	{
		}
		else	{
			code += menuItemOpenTab('ico_open','Otevřít','http://'+cpsDomain+url,'Publikovaná verze stránky');
		}
		if ( generate ) {
			code += menuItemOpenTab('ico_generate','Publikovat','generate.do?id='+id+'&lang='+lang+'&layout=edit_frontend','Publikace obsahu stránky '+name);
			code += menuItemOpenTab('ico_generate','Šablona','preview.do?id=admin_template&areaParam='+id+'&lang='+lang+'&layout=edit_frontend','Šablona stránky '+name);
		}
		if ( generateTree ) { code += menuItemOpenTab('ico_generate_tree','Publikovat podstrom','generateTree.do?id='+id+'&lang='+lang+'&layout=edit_frontend','Publikace obsahu stránky a podstránek '+name); }
		if ( edit ) { 
			code += menuSep();
			code += menuItemOpenTab('ico_edit','Upravit stránku','edit.do?id='+id+'&lang='+lang+'&layout=edit_frontend','Editace obsahu stránky '+name);
		}
		if ( code.length > 0 ) {
		var menu = document.createElement('div');
		menu.id = 'pullmenu';
		menu.innerHTML = code;
		menu.className='pullmenu';
		document.body.appendChild( menu );
		if (xIE4Up)	{
			mouseX = event.x+xScrollLeft();
			mouseY = event.y+xScrollTop();
		}
		xLeft('pullmenu',mouseX); 
		xTop('pullmenu',mouseY); 
		}

	}
	else	{
		alert("DOM required.");
	}
	return false;
}
function menuItemOpenTab( ico, name, url, title  )	{
	name = name.replace("\'","\\'");
	title = title.replace("\'","\\'");
	var lnk = 'return openWindow(\''+url+'\',\''+(name)+'\',\''+(title)+'\');';
	return menuItem( ico, name, lnk );
}
function menuItem( ico, name, lnk )	{
	var code = '<div class="item" onclick="'+lnk+'" onmouseover="menuOver(this)" onmouseout="menuOut(this)"><img src="/edee/img/'+ico+'.gif"> '+name+'</div>';
	return code;
}
function menuTitle( ico, name, lnk )	{
	var code = '<div class="ttl" onclick="'+lnk+'">'+name+'</div>';
	return code;
}
function menuSep()	{
	var code = '<div class="sep"></div>';
	return code;
}
function menuOver( itm )	{
	itm.className="itemover";
}
function menuOut( itm )	{
	itm.className="item";
}
function menuOff()	{
	var br = xGetElementById('pullmenu');
	if ( br )	{
		if ( document.body.removeChild )	{
			document.body.removeChild( br );
		} 
		else	{
			alert("DOM required.");
		}
	}
	return false;
}

/**
 * Open popup window or tabbed window
 */
function openWindow( url, name, title )	{
	var width = 900;
	var height = 500;
	winId++;	
	if ( useTabWin )	{
		if ( parent && parent.tabs>0 )	{
			tabWinReference = parent;
		}
	
		if ( tabWinReference!=null && !tabWinReference.closed )	{
			tabWinReference.addTab( name,url,title, window )
			tabWinReference.focus();
		}
		else	{
			setCookie('CPStab','',0);
			window.open( "preview.do?id=admin_popup", "cpstabwin", 'scrollbars=no,resizable=yes,resize=no,status=yes,locationbar=no,directories=no,width=900,height=500'+ ',screenX=' +getCenterW(width)+ ',screenY=' +getCenterH(height)+ ',top=' +getCenterH(height)+ ',left=' +getCenterW(width) );
			tabWinUrl = url;
			tabWinTitle = title;
			tabWinName = name;
			setTimeout( waitWin, 300 );
		}
	}
	else	{
		var win = window.open( url, "cpswin"+winId, 'scrollbars=yes,resizable=yes,resize=yes,locationbar=yes,status=yes,directories=no,width=900,height=500'+',screenX='+getCenterW(width)+',screenY='+getCenterH(height)+',top='+getCenterH(height)+',left='+getCenterW(width) );
		win.focus();
	}	
	
	return false;
}
   
/**
 * Wait before tab win is initialized
 */
function waitWin()	{
	if ( tabWinReference==null || tabWinReference.closed )	{
		setTimeout(waitWin,200);
	}
	else	{
		tabWinReference.addTab( tabWinName,tabWinUrl,tabWinTitle, window )
		tabWinReference.focus();
	}
}

function getCenterW(width) {
	return parseInt( eval( (screen.width-parseInt(width))/2 ) );
}

function getCenterH(height) {
	return parseInt( eval( (screen.height-parseInt(height))/2 ) );
}

/**
 * Keyup and key down event for disabling DHTML windows by press CTRL key 
 */
function keyEvent( e )	{
	if (!e) var e = window.event;
	if ( e["ctrlKey"] == true )	{
		useTabWin = false;
	} 
	else	{		   
		useTabWin = true;
	}
}

/**
 * Mouse move - get pointer coordinates 
 */
function mouseEvent( e )	{
	if (xIE4Up)	{
		mouseX = event.x+xScrollLeft();
		mouseY = event.y+xScrollTop();
	}
	else	{
		mouseX = e.pageX;
		mouseY = e.pageY;
	} 
}

/**
 * Init events for windows draging
 */
function initWindowEvents()	{
	document.body.onkeydown = keyEvent;
	document.body.onkeyup = keyEvent;
	if (xIE4Up)	{ 
		document.body.onmousemove = mouseEvent; 
	}
	else	{
		window.captureEvents(Event.MOUSEMOVE);
		window.onmousemove=mouseEvent; 
	}
}

// Save cookie
function setCookie(name,value,days) {
	if (days != null || days != 0) {
		var today = new Date();
		var expire = new Date();
		expire.setTime(today.getTime() + 3600000*24*days);
		expire = "; expires=" + expire.toGMTString();
	} else { var expire = ""; }
	document.cookie = name + "=" + escape(value) + expire + "; path=/";
}
// Read cookie
function getCookie(Name) {
	var search = Name + "=";
	if (document.cookie.length > 0) { // if there are any cookies
		offset = document.cookie.indexOf(search);
		if (offset != -1) { // if cookie exists
			offset += search.length
			// set index of beginning of value
			end = document.cookie.indexOf(";", offset)
			// set index of end of cookie value
			if (end == -1)
				end = document.cookie.length
				return unescape(document.cookie.substring(offset, end))
		}
	}
}
/**
 * Init tree
 */
function userSet() {
	initWindowEvents();
	if (userData) {
		//alert(userData);
		for (var i=0; i<userData.length; i++) {
			var row = userData[i];
			branch(row,true);
		}
	}
}
userData = (getCookie("CPSdata"))? getCookie("CPSdata").split(",") : new Array();
//userData = new Array();
