var dragarray = Array();
var data = new Object();
function replaceOptions(reltag, replacement) {
    // projdu všechny tagy rel
    $$('select[class='+reltag+']').each(function(curselect){
        // načtu všechny vybrané
        selected = new Array();
        curselect.getSelected().each(function(el) {   
            selected.push(el.value);   
        });
        curselect.empty();
        if ($type(replacement) == 'object') {
            objekt = new Hash(replacement);    
        } else {
            objekt = replacement;
            
        } 
        objekt.each(function(item, index){
           option = new Element('option',
                                    {'value':index,
                                     'text':item}); 
           if (selected.contains(index)==true) {
              option.set('selected','selected');
           }
           option.inject(curselect);
        });
    });
    
}

function truncate(s, max, trail, atChar){
    s = s.trim();
    if(s.length < 1) return '';
    max = $pick(max, 100);
    atChar = $pick(atChar, false); // break at space
    trail = $pick(trail, '...');
    if(s.length > max){
    	s = s.substring(0, max);
        if(atChar){
            var index = s.lastIndexOf(atChar),
                lastIndex = (index != -1)? index: max;
            s = s.substring(0, lastIndex);
        }
        s += trail;
    }
    return s;
};


function updateElements(data){
    if(data.fcebefore) { eval(data.fcebefore); }
    if (data.elements) {
        new Hash(data.elements).each(function(item, index){
            // pokud existuje
            if($(index)){
                if ($(index).get('tag') == 'textarea' || $(index).get('tag') == 'input') {
                    $(index).value = item;
                } else {
                    $(index).set('html', item);
                }
            }
        });
    }
    if(data.fceafter) { eval(data.fceafter); }
    //$('response').setHTML(Json.toString(data));
}

function newWin(url) {
    wasOpen  = false;
    win = window.open(url);    
    return ($type(win)=='object')?false:true;
}

function displayMsg(msg, type) {
	//vytvoreni prihlasovaciho modalniho okna
    	// hlavni div
		if ($('msgWin') && $('msgWin').get('rel') != type ) {
			$('msgWin').destroy();
		}
    	if (!$('msgWin')) {
    		cls = ' info';
    		if (type == 'ok') {
    			cls = ' ok';
    		} else if (type == 'error') {
    			cls = '';
    		}
    		msgWin = new Element('div', {'id':'msgWin', 'rel':type});
    		txt = '<div id="bg_modal"></div> <!-- bg_modal -->'+"\n"+
    			  '<form action="#" method="post" class="error_box_js' + cls +'" id="msgform">'+"\n"+
    			'<fieldset id="msgfieldset">'+"\n"+
    				'<div class="error_box_top_js"></div>'+"\n"+
    				'<div class="error_box_bottom_js"></div>'+"\n"+
    			'</fieldset>'+"\n"+
    			'<a href="#" id="msgWin_close" class="close">zavřít</a>' + "\n"+
    		'</form> <!-- error_box_js -->';
    		msgWin.set('html', txt);
    		// vlozeni do dokumentu
        	$(document.body).grab(msgWin,'bottom');
    	}
    	
    	$('msgfieldset').set('html', '<p class="h1">'+msg+'</p>' + "\n" + $('msgfieldset').get('html'));
    	
    	
    	// nastaveni pozice a velikosti sedeho pozadi
   	 	$('msgform').setStyle('top', $(document.body).getScroll().y+window.getSize().y/2+100);
   	 	$('msgform').setStyle('left', $(document.body).getScroll().x+$(document.body).clientWidth/2);
   	 	$('bg_modal').setStyle('height', $(document.body).getScrollSize().y);
   	 	$('bg_modal').setStyle('width', $(document.body).getScrollSize().x);
   	 	// nastaveni odstraneni okna pri kliku na pozadi a na odkaz zavřít
		$('bg_modal').addEvent('click', function(ev) {
			$('msgWin').destroy();
			 ev.stop();
		});
		$('msgWin_close').addEvent('click', function(ev) {
			$('msgWin').destroy();
			 ev.stop();
		});
    	
    	(function(){ if ($('msgWin')) $('msgWin').destroy(); }).delay(5000);
    	
}

function displayAddMyPgmDialog(msg, pgmId, url) {
	//vytvoreni modalniho okna
    var removeMyPgmDialog = function() {
		if ($('myPgmDialogWin')) {
    		//$('bg_modal').set('tween', {onComplete: function() {$('myPgmDialogWin').destroy();}});
			$('myPgmDialogWin').destroy();
    		//$('bg_modal').fade('out');
    	   	//$('form_myProgram').fade('out');
		}
    };
    	if (!$('myPgmDialogWin')) {
        	// hlavni div
    		myPgmDialogWin = new Element('div', {'id':'myPgmDialogWin'});
    		txt = '<div id="bg_modal"></div> <!-- bg_modal -->'+"\n"+
    			'<form action="#" method="post" id="form_myProgram">'+"\n"+
    			'<fieldset>'+"\n"+
    				'<p class="label">'+msg+'</p>'+"\n"+
      				'<input name="pgmId" type="hidden" value="'+pgmId+'" />'+"\n"+
    				'<input name="url" type="hidden" value="'+url+'" />'+"\n"+
    				'<table>'+"\n"+
    				'<tr>'+"\n"+
    				'<td><input type="radio" name="action" id="action-addAll" value="addAll" checked="checked" /><label for="action-addAll">Ano, přidat všechna vysílání</label></td>'+"\n"+
    				'</tr>'+"\n"+
    				'<tr>'+"\n"+
    				'<td><input type="radio" name="action" id="action-addOne" value="addOne" /><label for="action-addOne">Ne, pouze tento díl</label></td>'+"\n"+
    				'</tr>'+"\n"+
    				'</table>'+"\n"+
    				'<div class="line"></div>'+"\n"+
    				'<input type="submit" class="button" value="" />'+"\n"+
    				'<div class="form_myProgram_bottom"></div> <!-- form_myProgram_bottom -->'+"\n"+
    			'</fieldset>'+"\n"+
    			'<a href="#" id="myPgmDialogWin_close" class="close">zavřít</a>' + "\n"+
    		'</form> <!-- error_box_js -->';
    		myPgmDialogWin.set('html', txt);
    		// vlozeni do dokumentu
        	$(document.body).grab(myPgmDialogWin,'bottom');
        	$('bg_modal').fade('hide');
    	   	$('form_myProgram').fade('hide');
    	   	
        	// nastaveni pozice a velikosti sedeho pozadi
       	 	$('form_myProgram').setStyle('top', $(document.body).getScroll().y+window.getSize().y/2+50);
       	 	$('form_myProgram').setStyle('left', $(document.body).getScroll().x+$(document.body).clientWidth/2);
       	 	$('bg_modal').setStyle('height', $(document.body).getScrollSize().y);
       	 	$('bg_modal').setStyle('width', $(document.body).getScrollSize().x);
       	 	// nastaveni odstraneni okna pri kliku na pozadi a na odkaz zavřít
    		$('bg_modal').addEvent('click', function(ev) {
    			removeMyPgmDialog();
    			ev.stop();
    		});
    		$('myPgmDialogWin_close').addEvent('click', function(ev) {
    			removeMyPgmDialog();
    			ev.stop();
    		});
    		
    		// navešení akce na odeslání dialogu ajaxem
    	   	$('form_myProgram').addEvent('submit', function(ev) {
    	   		$('form_myProgram').set('send', {
    	                url: '/muj-porad', 
    	                method: 'post',
    	                onComplete: function(data) {
    	   					data = JSON.decode(data);
    	   					if (data.result == 'ok') {
    	   						removeMyPgmDialog();
    	   						displayMsg(data.msg, "ok");
    	   						Mediator.broadcast("ChangeMyPgm", [url]);
    	   					}
    		                try {
    		            		pageTracker._trackPageview('/ajax/dialog-muj-program');
    		            	} catch(err) {}
    	   				}
    	            }
    	        );
    	   		$('form_myProgram').send();
    	    	 ev.stop();
    	     });
    	   	$('bg_modal').set('tween', {duration: 150});
    	   	$('form_myProgram').set('tween', {duration: 150});
    	   	
    	   	$('bg_modal').fade('in');
    	   	$('form_myProgram').fade('in');
    	}
    	
}

/* http://arguments.callee.info/2009/05/18/javascript-design-patterns--mediator/ */ 
Mediator = function() {
    
    var debug = function() {
        // console.log or air.trace as desired
    };
    
    var components = {};
    
    var broadcast = function(event, args, source) {
        var e = event || false;
        var a = args || [];
        if (!e) {
            return;
        }
        //debug(["Mediator received", e, a].join(' '));
        for (var c in components) {
            if (typeof components[c]["on" + e] == "function") {
                try {
                    //debug("Mediator calling " + e + " on " + c);
                    var s = source || components[c];
                    components[c]["on" + e].apply(s, a);
                } catch (err) {
                    debug(["Mediator error.", e, a, s, err].join(' '));
                }
            }
        }
    };
    
    var addComponent = function(name, component, replaceDuplicate) {
        if (name in components) {
            if (replaceDuplicate) {
                removeComponent(name);
            } else {
                throw new Error('Mediator name conflict: ' + name);
            }
        }
        components[name] = component;
    };
    
    var removeComponent = function(name) {
        if (name in components) {
            delete components[name];
        }
    };
    
    var getComponent = function(name) {
        return components[name] || false;
    };
    
    var contains = function(name) {
        return (name in components);
    };
    
    return {
        name      : "Mediator",
        broadcast : broadcast,
        add       : addComponent,
        rem       : removeComponent,
        get       : getComponent,
        has       : contains
    };
}();

// horni info o uzivateli/odkazy pro prihlaseni-odhlaseni
Mediator.add('top_login', function () {
	
	// dotazeni horniho okna s uzivatelem
	var onLoggedIn = function() {
		var ajax = new Request({
		            url:'/layout/top-login/', 
		            method: 'get',
		            onComplete: function(data) {
		                // nastav obsah vracenych elementu
		                updateElements(JSON.decode(data));
		                try {
		            		pageTracker._trackPageview('/ajax/horni-blok-o-uzivateli');
		            	} catch(err) {}
		                //alert(data);
		                //$('response').setHTML(data);
		            }
		        }
		    ).send();
    };
	
	return {
        onLoggedIn: onLoggedIn,
        onLogouted : onLoggedIn
    }
    
}());
// prihlasovaci okno
Mediator.add('loginWin', function () {
	
	// vycisteni hodnoty - pokud nebyla zmenena
	var checkInputValue = function(el) {
		if (el.value == el.alt) {
			el.value = '';
		}
	};
	// odstraneni okna pokud je
    var removeLoginWin = function() {
    	if ($('login_all')) {
    		//$('bg_modal').fade('show');
    		//$('form_login').fade('show');
    		$('bg_modal').set('tween', {onComplete: function() {$('login_all').destroy();}});
    		$('bg_modal').fade('out');
    	   	$('form_login').fade('out');
    		
    	}
    };
     
    //vytvoreni prihlasovaciho modalniho okna
    var createLoginWin = function() {
    	perms ='';
        $$('#top_login [perms]').each(function(item, index){
        	if (!perms) {
        		perms = item.get('perms');
        	}
        	});
    	// hlavni div
    	login = new Element('div', {'id':'login_all'});
    	txt = '<div id="bg_modal"></div>' + "\n"+
    		'<form action="#" method="post" id="form_login">' + "\n"+
    		'<fieldset>' + "\n"+
    		'<p class="error" id="id_login_error"></p>' + "\n"+
	    	'	<div>' + "\n"+
	    	'		<input type="text" name="userLogin" id="login_name" value="Přihlašovací jméno" alt="Přihlašovací jméno" />  ' + "\n"+
	    	'		<input type="password" name="userPassword" id="login_pass" value="Heslo" alt="Heslo" /> ' + "\n"+
	    			
	    	'		<input type="submit" class="button" value="" /> ' + "\n"+
	    	'		<div class="checkbox">' + "\n"+
	    	'			<input type="checkbox" name="permanently" id="login_permanent" value="1" /> <label for="login_permanent">Přihlásit trvale</label>' + "\n"+
	    	'		</div> ' + "\n"+
	    			
	    	'		<div class="clear"></div>' + "\n"+
	    	'	</div>' + "\n"+
	    		
	    	'	<a href="/servis/zapomenute-heslo/" class="a_pass" title="Zapomenuté heslo">Zapomenuté heslo</a> ' + "\n"+
	    	'	<a href="/servis/registrace/" class="a_reg" title="Zaregistrovat se">Zaregistrovat se</a> ' + "\n"+
	    		
	    	'	<p>Můžete se také jednoduše</p> ' + "\n"+
	    	'	<fb:login-button perms="' + perms + '">Přihlásit pomocí Facebook účtu</fb:login-button>' + "\n"+
	    	'<div class="form_login_bottom"></div>' + "\n"+
	    	'</fieldset>' + "\n"+
	    	'<a href="#" id="login_close" class="close">zavřít</a>' + "\n"+
	    	'</form>';
    	login.set('html', txt);
    	
    	
    	// vlozeni do dokumentu
    	$(document.body).grab(login,'bottom');
    	$('bg_modal').fade('hide');
	   	$('form_login').fade('hide');
    	// nakodovani FB znacek
    	FB.XFBML.parse($('form_login'));    	
    	$('login_name').addEvent('focus', function(ev) {
    		checkInputValue(this);
    		ev.stop();
    	});
    	$('login_pass').addEvent('focus', function(ev) {
    		checkInputValue(this);
    		ev.stop();
    	});
    	
    	
    	// nastaveni pozice a velikosti sedeho pozadi
   	 	$('form_login').setStyle('top', $(document.body).getScroll().y+200);
   	 	$('form_login').setStyle('left', $(document.body).getScroll().x+$(document.body).clientWidth/2);
   	 	$('bg_modal').setStyle('height', $(document.body).getScrollSize().y);
   	    $('bg_modal').setStyle('width', $(document.body).getScrollSize().x);
   	 	// nastaveni odstraneni okna pri kliku na pozadi a na link zavrit
		$('bg_modal').addEvent('click', function(ev) {
			 removeLoginWin();
			 ev.stop();
		});
		$('login_close').addEvent('click', function(ev) {
			 removeLoginWin();
			 ev.stop();
		});
	   	 
		// naveseni akce na odeslani prihlaseni ajaxem
	   	$('form_login').addEvent('submit', function(ev) {
	   		checkInputValue($('login_name'));
	   		checkInputValue($('login_pass'));
	   		$('form_login').set('send', {
	                url: '/layout/login-window', 
	                method: 'post',
	                onComplete: function(data) {
	                    // nastav obsah vracenych elementu
	   					data = JSON.decode(data);
	   					// pokud je nejaka chyba, tak zobrazit
	   					if (data.msg) {
	   						$('id_login_error').set('html', data.msg);
   						// kdyz neni chyba, tak oznamit, ze jsme prihlaseny
	   					} else {
	   						Mediator.broadcast('LoggedIn');
	   					}
	                    //updateElements(JSON.decode(data));
	                    
	                    //$('response').setHTML(data);
	                }
	            }
	        );
	   		$('form_login').send();
	    	 ev.stop();
	     });
	   	$('bg_modal').set('tween', {duration: 150});
	   	$('form_login').set('tween', {duration: 150});
	   	
	   	$('bg_modal').fade('in');
	   	$('form_login').fade('in');
   	 	
    };
    
    // pri prihlaseni odstranit prihlasovaci okno(pokud je) 
	var onLoggedIn = function() {
		removeLoginWin();
    };
    
    // pri kontrole na prihlaseni bud zobrazit okno, kdyz neni prihlasenej nebo smazat okno kdyz je
    var onCheckLogin = function() {
    	// pokud neni prihlasen a neni login okno
    	if ($('not_logged_in') && !$('form_login')) {
    		createLoginWin();
    	// je prihlasen a okno existuje, tak smazat 
    	} else if (!$('not_logged_in') && $('form_login')) {
    		removeLoginWin();
    	}
    	
    };
    
	
	return {
        onLoggedIn: onLoggedIn,
        onCheckLogin: onCheckLogin
    };
    
}());

// pridani kontroly na login na predane elementy
function addCheckLoginEvent(el) {
	el.each(function(el) {
        eventname = 'click';
        if (el.get('tag') == 'form') eventname = 'submit';
        el.addEvent(eventname, function(ev) {
        	Mediator.broadcast("CheckLogin");
        	if ($('not_logged_in')) {
        		ev.stop();
        	}
        }
        
        );
            
    });
}

//pridani kontroly na login na predane elementy
function addMyPgmEvent(el) {
	el.each(function(el) {
        eventname = 'click';
        if (el.get('tag') == 'form') eventname = 'submit';
	        el.addEvent(eventname, function(ev) {
	        	var elx = this;
	        	var ajax2 = new Request({
		            url:this.href, 
		            method: 'get',
		            onComplete: function(data) {
		                // nastav obsah vracenych elementu
	        			data = JSON.decode(data);
		                updateElements(data);
		                if (data.result == 'ok') {
		                	if (data.url) {
		                		Mediator.broadcast("ChangeMyPgm", [data.url]);
		                	} else {
		                		favorite = elx.parentNode.parentNode.parentNode;
			                	if (elx.href.indexOf("add=") >= 0) {
			                		elx.href = elx.href.replace("add=", "remove=");
			                		elx.set('class', elx.get('class').replace("ico_plus", "ico_minus"));
			                		if (favorite.get('tag') == 'tr') {
			                			favorite.set('class', 'favorite');
			                		}
	                            } else if(elx.href.indexOf("remove=") >= 0)    {
	                            	elx.href = elx.href.replace("remove=", "add=");
	                            	elx.set('class',elx.get('class').replace("ico_minus", "ico_plus"));
			                		if (favorite.get('tag') == 'tr') {
			                			favorite.set('class', '');
			                		}
	                            }
		                	}
		                }
		                try {
		            		pageTracker._trackPageview('/ajax/plus-minus-muj-program');
		            	} catch(err) {}
		                //alert(data);
		                //$('response').setHTML(data);
		            }
		        }
		    ).send();
	        
        	ev.stop();
        }
        
        );
            
    });
}

formClassTmp = '';

function setForms(forms) {
	var firstFormElement = '';
	forms.each(function(f){
		
		f.getElements('input[type="text"],input[type="password"]),textarea').each(function(el2){
			if (firstFormElement == '') {
				firstFormElement = el2;
			}
			el2.addEvent('focus', function(ev) {
				formClassTmp = this.get('class');
				this.set('class', 'bg_input_active');
			});
			el2.addEvent('blur', function(ev) {
				this.set('class', formClassTmp);
				formClassTmp = '';
			});
			
        }); 
    });
	//if (firstFormElement != '') firstFormElement.focus();
}

function skyscraperPos() {
	if (parseInt($('page').getStyle('width')) == 986) {
		var top = parseInt($('adv_padd').getStyle('height'));
		var src = $(document.body).getScroll().y;
	    if (src >= (top-5)) {
	    	$('banner_right').addClass('fixed');
	    } else {
	        $('banner_right').removeClass('fixed');
		}
	}
}

window.addEvent("domready", function() {
    $$('.hiddenJSblock').each(function(el) {
        el.setStyle('display', 'block');
            
    });
    
        
    if ($('tagnoscript')) {
        el = new Element('input',
            	                   {'type':'hidden',
            	                    'name':'spamNum',
            	                    'value': 0+3});
        el.inject($('tagnoscript'), 'after');
    }
    
    $$('a.delask').each(function(el){
        el.addEvent('click', function (){return confirm("Skutečně smazat?");}); 
    });
    
    $$('input.forminputtext').each(function(el){
		if (el.value == '') {
			el.value = el.title;
		}
    	
        el.addEvent('focus', function(ev){
    		if (el.value == el.title) {
    			el.value = '';
    			el.setStyle('color', '#000000');
    		}
        }); 
        el.addEvent('blur', function(ev){
    		if (el.value == '') {
    			el.value = el.title;
    			el.setStyle('color', '#979797');
    		}
        }); 
        frm = el.getParent('form');
        if (frm) {
	        frm.addEvent('submit', function(ev){
	    		if (el.value == el.title) {
	    			el.value = '';
	    		}
	        });
        }
    });
    
    addCheckLoginEvent($$('.login_win'));
    
    formy = $$('form.form_global');
    if (formy.length>0) {
    	setForms(formy);
    }
    
    $$('a.ext').each(function(el) { 
        el.addEvent('click', function(e) { 
            e = new Event(e); 
            e.stop();     
            window.open(this.getProperty('href')); 
        }.bind(el)); 
    });
    $$('.mailto').each(function(el) {
        reArg = /mailto:(.*)/;
        textnew = reArg.exec(el.get('href'));
        if (textnew !=null) {
            text2 = '';
            for (i=textnew[1].length;i>0;i--) {
                text2 +=textnew[1].charAt(i-1);
            }
            el.set('href','mailto:'+text2);
            if (el.get('rel')) {
                el.set('html',el.get('rel'));
            } else {
                el.set('html',text2);
            }
        }
            
    });
    $$('.print-window').addEvent('click', function(e){ print();e.stop(); });
    
    
    
    
});



