/**
 * VLOŽENÉ SOUBORY:
 * - AC_RunActiveContent.js
 * - command.js
 * - components.js
 * - flashutil.js
 * - webtoolkit.utf8.js
 */



//v1.7
// Flash Player Version Detection
// Detect Client Browser type
// Copyright 2005-2007 Adobe Systems Incorporated.  All rights reserved.
var isIE  = (navigator.appVersion.indexOf("MSIE") != -1) ? true : false;
var isWin = (navigator.appVersion.toLowerCase().indexOf("win") != -1) ? true : false;
var isOpera = (navigator.userAgent.indexOf("Opera") != -1) ? true : false;


//!!! POZOR TOTO PRIDAT PRI UPGRADE !!!!!!

function runFlash(flashId,flashFile,flashWidth,flashHeight,flashIdAlternative)
{
    document.getElementById(flashIdAlternative).style.display='none';
       
    var hasRightVersion = DetectFlashVer(requiredMajorVersion, requiredMinorVersion, requiredRevision);
		
 	if(hasRightVersion)
    {                  
      	AC_FL_RunContent(
      				'codebase', 'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,115,0',
      				'width', flashWidth,
      				'height', flashHeight,
      				'src', flashFile,
      				'quality', 'high',
      				'pluginspage', 'http://www.macromedia.com/go/getflashplayer',
      				'align', 'middle',
      				'play', 'true',
      				'loop', 'true',
      				'scale', 'showall',
      				'wmode', 'transparent',
      				'devicefont', 'false',
      				'id', flashId ,
      				'bgcolor', '#ffffff',
      				'name', '{flashId}',
      				'menu', 'true',
      				'allowScriptAccess','sameDomain',
      				'movie', flashFile,
      				'salign', ''
      				);		      	    
     }		
	 else 
		{		
			if (!document.getElementById(flashIdAlternative))
			{
				alert('FLASH ALTERNATIVE ERROR!');
				return;
			}
			var html = document.getElementById(flashIdAlternative).innerHTML;
			var o = html.indexOf('<!--');
			if (o < 0)
			{
				alert('FLASH ALTERNATIVE ERROR!');
				return;
			}			
			html = html.replace('<!--','').replace('-->','');			
			var el = document.getElementById(flashIdAlternative);
      		var div = document.createElement('DIV');
      		div.innerHTML = html.replace(/^\s*|\s*$/g, "");
      		el.appendChild(div);				
			document.getElementById(flashIdAlternative).style.display='block';		
    	}					
} 

function ControlVersion()
{
	var version;
	var axo;
	var e;

	// NOTE : new ActiveXObject(strFoo) throws an exception if strFoo isn't in the registry

	try {
		// version will be set for 7.X or greater players
		axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7");
		version = axo.GetVariable("$version");
	} catch (e) {
	}

	if (!version)
	{
		try {
			// version will be set for 6.X players only
			axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6");
			
			// installed player is some revision of 6.0
			// GetVariable("$version") crashes for versions 6.0.22 through 6.0.29,
			// so we have to be careful. 
			
			// default to the first public version
			version = "WIN 6,0,21,0";

			// throws if AllowScripAccess does not exist (introduced in 6.0r47)		
			axo.AllowScriptAccess = "always";

			// safe to call for 6.0r47 or greater
			version = axo.GetVariable("$version");

		} catch (e) {
		}
	}

	if (!version)
	{
		try {
			// version will be set for 4.X or 5.X player
			axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.3");
			version = axo.GetVariable("$version");
		} catch (e) {
		}
	}

	if (!version)
	{
		try {
			// version will be set for 3.X player
			axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.3");
			version = "WIN 3,0,18,0";
		} catch (e) {
		}
	}

	if (!version)
	{
		try {
			// version will be set for 2.X player
			axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash");
			version = "WIN 2,0,0,11";
		} catch (e) {
			version = -1;
		}
	}
	
	return version;
}

// JavaScript helper required to detect Flash Player PlugIn version information
function GetSwfVer(){
	// NS/Opera version >= 3 check for Flash plugin in plugin array
	var flashVer = -1;
	
	if (navigator.plugins != null && navigator.plugins.length > 0) {
		if (navigator.plugins["Shockwave Flash 2.0"] || navigator.plugins["Shockwave Flash"]) {
			var swVer2 = navigator.plugins["Shockwave Flash 2.0"] ? " 2.0" : "";
			var flashDescription = navigator.plugins["Shockwave Flash" + swVer2].description;
			var descArray = flashDescription.split(" ");
			var tempArrayMajor = descArray[2].split(".");			
			var versionMajor = tempArrayMajor[0];
			var versionMinor = tempArrayMajor[1];
			var versionRevision = descArray[3];
			if (versionRevision == "") {
				versionRevision = descArray[4];
			}
			if (versionRevision[0] == "d") {
				versionRevision = versionRevision.substring(1);
			} else if (versionRevision[0] == "r") {
				versionRevision = versionRevision.substring(1);
				if (versionRevision.indexOf("d") > 0) {
					versionRevision = versionRevision.substring(0, versionRevision.indexOf("d"));
				}
			}
			var flashVer = versionMajor + "." + versionMinor + "." + versionRevision;
		}
	}
	// MSN/WebTV 2.6 supports Flash 4
	else if (navigator.userAgent.toLowerCase().indexOf("webtv/2.6") != -1) flashVer = 4;
	// WebTV 2.5 supports Flash 3
	else if (navigator.userAgent.toLowerCase().indexOf("webtv/2.5") != -1) flashVer = 3;
	// older WebTV supports Flash 2
	else if (navigator.userAgent.toLowerCase().indexOf("webtv") != -1) flashVer = 2;
	else if ( isIE && isWin && !isOpera ) {
		flashVer = ControlVersion();
	}	
	return flashVer;
}


// When called with reqMajorVer, reqMinorVer, reqRevision returns true if that version or greater is available
function DetectFlashVer(reqMajorVer, reqMinorVer, reqRevision)
{
	versionStr = GetSwfVer();
	if (versionStr == -1 ) {
		return false;
	} else if (versionStr != 0) {
		if(isIE && isWin && !isOpera) {
			// Given "WIN 2,0,0,11"
			tempArray         = versionStr.split(" "); 	// ["WIN", "2,0,0,11"]
			tempString        = tempArray[1];			// "2,0,0,11"
			versionArray      = tempString.split(",");	// ['2', '0', '0', '11']
		} else {
			versionArray      = versionStr.split(".");
		}
		var versionMajor      = versionArray[0];
		var versionMinor      = versionArray[1];
		var versionRevision   = versionArray[2];

        	// is the major.revision >= requested major.revision AND the minor version >= requested minor
		if (versionMajor > parseFloat(reqMajorVer)) {
			return true;
		} else if (versionMajor == parseFloat(reqMajorVer)) {
			if (versionMinor > parseFloat(reqMinorVer))
				return true;
			else if (versionMinor == parseFloat(reqMinorVer)) {
				if (versionRevision >= parseFloat(reqRevision))
					return true;
			}
		}
		return false;
	}
}

function AC_AddExtension(src, ext)
{
  if (src.indexOf('?') != -1)
    return src.replace(/\?/, ext+'?'); 
  else
    return src + ext;
}

function AC_Generateobj(objAttrs, params, embedAttrs) 
{ 
  var str = '';
  if (isIE && isWin && !isOpera)
  {
    str += '<object ';
    for (var i in objAttrs)
    {
      str += i + '="' + objAttrs[i] + '" ';
    }
    str += '>';
    for (var i in params)
    {
      str += '<param name="' + i + '" value="' + params[i] + '" /> ';
    }
    str += '</object>';
  }
  else
  {
    str += '<embed ';
    for (var i in embedAttrs)
    {
      str += i + '="' + embedAttrs[i] + '" ';
    }
    str += '> </embed>';
  }
  
  document.write(str);
}

function AC_FL_RunContent(){
  
  var ret = 
    AC_GetArgs
    (  arguments, "" /*.swf"*/, "movie", "clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"
     , "application/x-shockwave-flash"
    );
  AC_Generateobj(ret.objAttrs, ret.params, ret.embedAttrs);
}

function AC_SW_RunContent(){
  var ret = 
    AC_GetArgs
    (  arguments, ".dcr", "src", "clsid:166B1BCA-3F9C-11CF-8075-444553540000"
     , null
    );
  AC_Generateobj(ret.objAttrs, ret.params, ret.embedAttrs);
}

function AC_GetArgs(args, ext, srcParamName, classid, mimeType){
  var ret = new Object();
  ret.embedAttrs = new Object();
  ret.params = new Object();
  ret.objAttrs = new Object();
  for (var i=0; i < args.length; i=i+2){
    var currArg = args[i].toLowerCase();    

    switch (currArg){	
      case "classid":
        break;
      case "pluginspage":
        ret.embedAttrs[args[i]] = args[i+1];
        break;
      case "src":
      case "movie":	
        args[i+1] = AC_AddExtension(args[i+1], ext);
        ret.embedAttrs["src"] = args[i+1];
        ret.params[srcParamName] = args[i+1];
        break;
      case "onafterupdate":
      case "onbeforeupdate":
      case "onblur":
      case "oncellchange":
      case "onclick":
      case "ondblclick":
      case "ondrag":
      case "ondragend":
      case "ondragenter":
      case "ondragleave":
      case "ondragover":
      case "ondrop":
      case "onfinish":
      case "onfocus":
      case "onhelp":
      case "onmousedown":
      case "onmouseup":
      case "onmouseover":
      case "onmousemove":
      case "onmouseout":
      case "onkeypress":
      case "onkeydown":
      case "onkeyup":
      case "onload":
      case "onlosecapture":
      case "onpropertychange":
      case "onreadystatechange":
      case "onrowsdelete":
      case "onrowenter":
      case "onrowexit":
      case "onrowsinserted":
      case "onstart":
      case "onscroll":
      case "onbeforeeditfocus":
      case "onactivate":
      case "onbeforedeactivate":
      case "ondeactivate":
      case "type":
      case "codebase":
      case "id":
        ret.objAttrs[args[i]] = args[i+1];
        break;
      case "width":
      case "height":
      case "align":
      case "vspace": 
      case "hspace":
      case "class":
      case "title":
      case "accesskey":
      case "name":
      case "tabindex":
        ret.embedAttrs[args[i]] = ret.objAttrs[args[i]] = args[i+1];
        break;
      default:
        ret.embedAttrs[args[i]] = ret.params[args[i]] = args[i+1];
    }
  }
  ret.objAttrs["classid"] = classid;
  if (mimeType) ret.embedAttrs["type"] = mimeType;
  return ret;
}









var requiredMajorVersion = 9;
var requiredMinorVersion = 0;
var requiredRevision = 0;

$(document).ready(function() {
	CreateAndRunFlash();
});

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

function onLoadParseCommand()
{
    
    var inputList = document.getElementsByTagName('input'); 
  	var hashList = new Object();
  	
  	//addLoadEvent(ChangeCSSBgImg);
  	
    for(var i=0;i<inputList.length;i++ )
    {
    
      var element = inputList[i];
    
      if(element.id == undefined)
      {
       alert("One or more imput doesn`t have id"+element.className);
       return;
      }
      
      var idstr = element.id.toString();
      
      var pattern = /(Cmd)(.+)/;
      
      var result =  idstr.match(pattern);
      
     if(result != null)
     {
        if(result[1] == "Cmd")
        {
          var resend = result[2].split('_');          
          var argument = "";
          var name = "";
          
          name =  result[2];           
          if(resend.length == 2)
          {
            argument = resend[1];
            name = resend[0];
          }
          
          if(hashList[name] == undefined)   
      		hashList[name] = element;
      	  else
      	  {
      	  	alert("Error: duplicate command :"+name);
      	  	return;
      	  }
          element.cmdargument = argument;
          element.cmdname = "Cmd"+name;                                    
          element.onclick = function()
          {           
             var valid = this.getAttribute('valid')
             var ret = true
             if (valid) ret = eval(valid)
             if (ret) sendCommand(this.cmdname, this.cmdargument);
             return false
          }
                  
        } 
     }
      
     
      
    }
    
    
    
    
}

function sendCommand(commandName , commandArgument, formContainer)
{
	if (!formContainer) formContainer = "mainForm";
    var mainForm = document.getElementById("mainForm");
    
	disableOtherFormFields(formContainer);
    
    var CommandArgumentElement = document.getElementById("CommandArgument");  
    var CommandNameElement = document.getElementById("CommandName");
    var ComponentIdElement = document.getElementById("ComponentId");

    if(commandArgument != undefined)
    	CommandArgumentElement.value = commandArgument;
    	
    CommandNameElement.value = commandName;
    ComponentIdElement.value = formContainer;
    mainForm.submit();
	return;
}

function checkemail(email)
{
	var filter=/^.+@.+\..{2,3}$/;
	if (filter.test(email)) return true
	return false
}

function sendValidateForm(click_button)
{
	// naleznem ID div, ve kterém je form zabalený
	var formId = findContainerFormId(click_button);
		
	//var inputList = document.getElementsByTagName('input');	
	//var areaList = document.getElementsByTagName('textarea');
	//var selectList = document.getElementsByTagName('select');
	
	var inputList = findInputs(formId);	
	var areaList = findTextareas(formId);
	var selectList = findSelects(formId);
	
	var sdata = new Array();
	
	var elementArray = new Array();	
	var button = null;
  	for(var i=0;i<inputList.length;i++)
  	{
        if(inputList[i].name.charAt(1) == "_")
        {
	  		if(inputList[i].type != "button") {
				elementArray.push(inputList[i]);
			}
	  		else {
				button = inputList[i];
				//alert(inputList[i].type);
			}
	  	}
	}
	if (button == null)
	{
		alert('Error')
		return; 
	}
	
	for(var i=0;i<areaList.length;i++) {
	  	if(areaList[i].name.charAt(1) == "_") {
	  		elementArray.push(areaList[i]);
	  	}
	}
	
    for(var i=0;i<selectList.length;i++) {
		if(selectList[i].name.charAt(1) == "_") {
			elementArray.push(selectList[i]);
	  	}
	}

	   		
	for(var i=0;i<elementArray.length;i++)
	{
		var name = elementArray[i].name;
		var value = elementArray[i].value.replace(/^\s*|\s*$/g, "");				
		var pole = name.split("_");
		if (elementArray[i].type == 'text')
		{
			var required = (Number(pole[2])==1) ? true : false;
			if (required)
			{
				if(value == '')
				{
					var desc = Utf8.decode(pole[1]);
					alert(command_js_txt1+desc);
					elementArray[i].focus();
					return
				}
			}
		}

		if (elementArray[i].type == 'text' && pole[3]==4)
		{
			var desc = Utf8.decode(pole[1]);		
			// číslo
			if(pole[3] == 2) {
				var is_int = true;
				var is_float = true;
				if(parseInt(value) != value) {
					is_int = false;
				}
				if(parseFloat(value) != value) {
					is_float = false;
				}
				if(!is_int || !is_float) {
					alert('Chybný formát čísla v položce: '+desc);
				   	elementArray[i].focus();
					return;
				}
			}
			// datum
			else if(pole[3] == 3) {
				var reg_date = new RegExp(/\d{1,2}\.\d{1,2}.\d{4,4}/); // info@systemia.cz
				var reg_res = reg_date.exec(value);
				if (reg_res == null) {
					alert('Chybný formát data v položce: '+desc);
				   	elementArray[i].focus();
					return;
				}
			}
			// email
			else if(pole[3] == 4) {
				if (!checkemail(value)) {
					var desc = Utf8.decode(pole[1]);
					alert(command_js_txt2+desc);
				   	elementArray[i].focus();
					return
				}
			}
			// obecné
			else { }
		}
	}

	if(confirm(command_js_txt3))
	{			
        for(var i=0;i<elementArray.length;i++)
		{
			sdata.push("p"+i+":"+elementArray[i].name);
			elementArray[i].name = "p"+i;
		}
		var psdata = document.getElementById("psdata");
 		if (!psdata)
 		{
			psdata = document.createElement("input");
        	psdata.setAttribute("name","psdata");
        	psdata.setAttribute("id","psdata");
        	psdata.setAttribute("type","hidden");
        	document.getElementById("mainForm").appendChild(psdata);
		}
		var a = ""
		for(var i=0;i<sdata.length;i++) a += "(!^#@]"+sdata[i]
		psdata.value = a
		
		sendCommand("CmdSendForm", button.name, formId);
	}			
}

function resetForm()
{
	var inputList = document.getElementsByTagName('input');	
	var areaList = document.getElementsByTagName('textarea');

  	for(var i=0;i<inputList.length;i++)
  	{
	  	if(inputList[i].name.charAt(1) == "_" && inputList[i].type == "text") inputList[i].value = ""	  
	}
	for(var i=0;i<areaList.length;i++)
	{
	  	if(areaList[i].name.charAt(1) == "_" ) areaList[i].value = ""	 
	}
}

function dweFormRadioClick(elRadio)
{
	var pole = elRadio.name.split("_");
	var group = pole[2];
	if ((!group) || (group == '')) return;
			
	var inputList = document.getElementsByTagName('input');	
  	for(var i=0;i<inputList.length;i++) {
		var name = inputList[i].name;
		if(name.charAt(1) == "_" && inputList[i].type == "radio") {
			pole = name.split("_");
			if (pole[2] == group) inputList[i].checked = false;
	  	}
	}
	elRadio.checked = true;
}
/**
 * Nalezne ID divu, ve kterém je form zabalený
 * @example
 *  ID div = "formId_36091d9c98678eeee0d7f3fe78d391ce" 
 * @param string 
 */
function findContainerFormId(source_el)
{
	try {
		var el = source_el;
		var parent = null;
		var id = '';
		do {
			parent = el.parentNode;
			if(!parent) {
				return "mainForm";
			}
			id = parent.id;
			if(!id) id = '';
			el = parent;
		} while(id.match("^formId_[a-z0-9]+$") == null);
		//alert('id divu je '+id);	
		return id;
	}
	catch(e) { return ''; }
}

function findInputs(form_id) {
	var inputs = null;
	var elements = new Array();
	fields = document.getElementsByTagName('input');
	for(var i = 0; i < fields.length; i++) {
		div_form = findContainerFormId(fields[i]);
		if(div_form == form_id) {
			elements.push(fields[i]);
		}
	}
	return elements;
}

function findTextareas(form_id) {
	var fields = null;
	var elements = new Array();
	fields = document.getElementsByTagName('textarea');
	for(var i = 0; i < fields.length; i++) {
		div_form = findContainerFormId(fields[i]);
		if(div_form == form_id) {
			elements.push(fields[i]);
		}
	}
	return elements;
}

function findSelects(form_id) {
	var fields = null;
	var elements = new Array();
	fields = document.getElementsByTagName('select');
	for(var i = 0; i < fields.length; i++) {
		div_form = findContainerFormId(fields[i]);
		if(div_form == form_id) {
			elements.push(fields[i]);
		}
	}
	return elements;
}
/**
 * Při odeslání formuláře odstraní ty pole, která jsou nežádoucí
 * @param string div|form ID
 */ 
function disableOtherFormFields(form_id) {

	if(form_id == "mainForm") {
		// odešle se všechno
		return;	
	}

	var inputs = null;
	var textareas = null;
	var selects = null;

	var div_form = null;
	// počet zrušených prvků
	var found = 0;
	var removed = 0;
	
	inputs = document.getElementsByTagName('input');
	//alert('inputs = '+inputs.length);
	found += inputs.length;
	for(var i = 0; i < inputs.length; i++) {
		div_form = findContainerFormId(inputs[i]);
		if(div_form != form_id) {
			if(inputs[i].name != "CommandName" && inputs[i].name != "CommandArgument" && inputs[i].name != "psdata" && inputs[i].name != "ComponentId") {
				removed++;
				remove_el = inputs[i];
				//remove_el.setAttribute('name',null);
				remove_el.removeAttribute('name');
			}
		}
	}
	
	textareas = document.getElementsByTagName('textarea');
	//alert('textareas = '+textareas.length);
	found += textareas.length;
	for(var i = 0; i < textareas.length; i++) {
		div_form = findContainerFormId(textareas[i]);
		if(div_form != form_id) {
			if(inputs[i].name != "CommandName" && inputs[i].name != "CommandArgument" && inputs[i].name != "psdata" && inputs[i].name != "ComponentId") {
				removed++;
				remove_el = textareas[i];
				remove_el.removeAttribute('name');
			}
		}
	}
	
	selects = document.getElementsByTagName('select');
	//alert('selects = '+selects.length);
	found += selects.length;
	for(var i = 0; i < selects.length; i++) {
		div_form = findContainerFormId(selects[i]);
		if(div_form != form_id) {
			if(inputs[i].name != "CommandName" && inputs[i].name != "CommandArgument" && inputs[i].name != "psdata" && inputs[i].name != "ComponentId") {
				removed++;
				remove_el = selects[i];
				remove_el.removeAttribute('name');
			}
		}
	}
	//alert('found = '+found+', removed = '+removed);
}
















function switchOffFlash(off) {
	var objectarray = document.getElementsByTagName("object");
	if(objectarray) {
		for(var i in objectarray) {
			//alert(objectarray[i].style);
			if(objectarray[i].style) {
				if(objectarray[i].style.visibility) {
					if(objectarray[i].style.visibility != null) {
						objectarray[i].style.visibility = (off) ? "hidden" : "";
					}
				}
			}
		}
	}
}
/**
 * MainMenu
 */
var tm1=0

function hideShow(id,key)
{
    var element = document.getElementById(id);
if(element != null)
    if(element.className=="makeMenu")
    {
      element.style.display=key;
    }

}

function doMenu(id)
{
    for(var i=1;i != menu_count+1;i++)
    {
        var nameid = "m"+i;
        var key = 'none';
        
        if(nameid==id){
		key='block';        
        hideShow(nameid,key);
        document.getElementById("acko"+i).style.textDecoration='none'; 		// styl pri otevrenem menu
        }
        else {
		document.getElementById("acko"+i).style.textDecoration='none';		// styl pri zavrenem menu
		key='none';
		hideShow(nameid,key);
		}
    }
    if (id != '') cancelOut()    	
}

function cancelOut()
{
	if (tm1 != 0)
	{
		clearTimeout(tm1)
		tm1 = 0
	}
}

function hidemenu()
{
	doMenu('')
} 

function mhide()
{
	cancelOut()
	tm1 =setTimeout("hidemenu()",334);
}

/**
 * Search
 */
function searchKeyEnter(myfield,e) {
	var keycode;
	if (window.event) keycode = window.event.keyCode;
	else if (e) keycode = e.which;
	else return true;

	if (keycode == 13) {
   		sendCommand("CmdSearch");
   		return false;
    }
	else
   		return true;
}
/**
 * SearchResult
 */
function searchKeyEnterFromResult(myfield,e) {
	var keycode;
	if (window.event) keycode = window.event.keyCode;
	else if (e) keycode = e.which;
	else return true;

	if (keycode == 13) {
   		sendCommand("CmdSearchAgain");
   		return false;
    }
	else
   		return true;
}

/**
 * Login
 */
// odchytavani klavesy ENTER (13) v polích login a password
function loginKeyEnter(myfield,e)
{
	var keycode;
	if (window.event) keycode = window.event.keyCode;
	else if (e) keycode = e.which;
	else return true;

	if (keycode == 13 )
    {
   
   		sendCommand('CmdLogin',null);
   		return false;
    }
	else
   		return true;
}
/**
 * Objekt pro kontrolu hodnot.
 * Každá funkce vrací true nebo false 
 */ 
var Validate = {
	/**
	 *	Funkce pro kontrolu emailu
	 *	@param  string
	 *	@return boolean
	 */	 	 	 	
	email : function( value ) {
		var regexp = new RegExp(/([.a-z0-9_-]{3,251}\@[.a-z0-9_-]{3,251})/i);
		return regexp.test(value);
	},
	zipcode : function( value ) {
		var regexp = new RegExp(/([\s0-9]{5,6})/i);
		return regexp.test(value);
	}
}

/**
 * Objekt pro vypisování chyb ve formuláři
 */ 
var FormAlert = {
	c : 0,
	/**
	 * Přidání zprávy
	 * @param  string
	 * @param  string
	 * @return false 
	 */	 	 	 	
	add : function( id, text ) {
		if($("#form_alerts").has("li#form_each_alert_"+id).length == 0) {
			FormAlert.c++;
			if($("#form_alerts").has("ul").length > 0) {
				$("#form_alerts ul").append('<li id="form_each_alert_'+id+'" style="display: none">'+text+'</li>');
			}
			else {
				$("#form_alerts").append('<ul><li id="form_each_alert_'+id+'" style="display: none">'+text+'</li></ul>');
			}
			$("#form_each_alert_"+id).slideDown(200);
		}
		return false;
	},
	/**
	 * Odstranění zprávy
	 * @param  string
	 * @param  string
	 * @return true	 
	 */	 	 	 	
	remove : function( id ) {
		if($("#form_alerts ul").has("li#form_each_alert_"+id).length > 0) {
			FormAlert.c--;
			$("#form_alerts ul li#form_each_alert_"+id).slideUp(200,function(){
				$(this).remove();
				if(FormAlert.c == 0) {
					$("#form_alerts ul").remove();
				}
			});
		}
		else {
			if(FormAlert.c == 0) {
				$("#form_alerts ul").remove();
			}
		}
		return true;
	},
	/**
	 * Vrácení počtu zobrazených chyb
	 * @return boolean
	 */
	count : function() {
		try {
			// nelze použít kvůli slideDown a slideUp
			// return $("#form_alerts ul").children("li").length;
			if(FormAlert.c < 0) FormAlert.c = 0; 
			return FormAlert.c;
		} catch(e) {
			return 0;
		}
	},
	/**
	 * Zvýraznění chybových hlášek
	 */	 	
	highlight : function(color) {
		var bgcolor1 = $("#form_alerts").css("backgroundColor");
		var bgcolor2 = (typeof color == 'undefined') ? "#FFB87F" : color;
		$("#form_alerts").toggle(function() {
		    $(this).animate({ backgroundColor: "#FFFFFF" }, 1000);
		},function() {
		    $(this).animate({ backgroundColor: "#FFB87F" }, 500);
		});
	}
}

/**
 * Objekt pro zpracování registrace
 */ 
var Registration = {
	ok : false,
	update : false,
	checkingUsername : false,
	/**
	 * Zobrazení / skrytí chybové hláška
	 */	 	
	Warning : {
		add : function( id, text ) {
			return FormAlert.add("reg_message_"+id,text);
		},
		remove : function( id ) {
			return FormAlert.remove("reg_message_"+id);
		}
	},
	/**
	 * Zpracování uživatelského jména
	 */	 	
	Username : {
		ok : false,
		minLength : 4,
		maxLength : 20,
		isChecking : false,
		checkedValues : [],
		/**
		 * Kontrola délky.
		 * @param  string
		 * @return boolean
		 */		 		 		 		
		checkLength : function( value ) {
			value = value.trim();
			if(value.length == 0) {
				return Registration.Warning.add('un_l','Uživatelské jméno není vyplněné.');
			}
			else if(value.length < this.minLength || value.length > this.maxLength) {
				return Registration.Warning.add('un_l','Zadané uživatelské jméno může obsahovat nejméně 4 znaky a nejvíce 20 znaků.');
			}
			else {
				return Registration.Warning.remove('un_l');
			}
		},
		/**
		 * Zkontroluje, jestli již uživ. jméno existuje
		 * @param  string
		 * @return boolean
		 */		 		 		 		
		checkIfExists : function( value ) {
			var checked = false;
			for(var i = 0; i < this.checkedValues.length; i++) {
				if(this.checkedValues[i] == value) {
					checked = true;
				}
			}
			//if(!checked) {
				this.checkedValues.push( value );
				// omezení zahlcování požadavků
				//if(!Registration.checkingUsername) {
					Registration.checkingUsername = true;
					$.get("/ajax_request.php", { check_username : value }, function(data){
						Registration.checkingUsername = false;
						eval("var result = "+data+";");
						if(result) {
							Registration.Username.ok = false;
							return Registration.Warning.add('un_ex','Zadané uživatelské jméno existuje.');
						}
						else {
							Registration.Username.ok = true;
							return Registration.Warning.remove('un_ex');
						}
					});
				//}
			//}
		}
	},
	/**
	 * Zpracování hesla.
	 */	 	
	Password : {
		pass : null,
		minLength : 6,
		maxLength : 20,
		/**
		 * Kontrola hesla.
		 * @param  string
		 * @return boolean
		 */		 		 		 		
		check : function( value ) {
			value = value.trim();
			if(value.length == 0) {
				if(Registration.update) {
					return true;
				}
				return Registration.Warning.add('psw1','Není vyplněné heslo!');
			}
			else if(value.length < this.minLength) {
				return Registration.Warning.add('psw1','Zadané heslo je moc krátké!');
			}
			else if(value.length > this.maxLength) {
				return Registration.Warning.add('psw1','Zadané heslo je příliš dlouhé!');
			}
			else {
				return Registration.Warning.remove('psw1');
			}
		},
		/**
		 * Porovnání obou hesel.
		 * @param  string
		 * @param  string
		 * @return boolean
		 */		 		 		 		 		
		compare : function( value1, value2 ) {
			if(value1 != value2) {
				return Registration.Warning.add('psw2','Zopakované heslo není shodné!');
				
			}
			else {
				if(this.check(value1)) {
					return Registration.Warning.remove('psw2');
				}
				return false;
			}
		}
	},
	/**
	 * Zpracování kontaktních údajů.
	 */	 	
	ContactInfo : {
		ok : false,
		required : false,
		company : '',
		firstname : '',
		lastname : '',
		email : '',
		phone1 : '',
		phone2 : '',
		/**
		 * Kontrola všech polí
		 * @return boolean
		 */		 		 		
		check : function() {
			this.ok = true;
			this.company = $("#company").val().trim();
			this.ic = $("#ic").val().trim();
			this.firstname = $("#firstname").val().trim();
			this.lastname = $("#lastname").val().trim();
			this.email = $("#email").val().trim();
			this.phone1 = $("#phone1").val().trim();
			this.phone2 = $("#phone2").val().trim();
			
			if(this.company.length != 0 && this.ic.length == 0) {
				Registration.Warning.add('cc','Je třeba vyplnit IČO!');
				this.ok = false;
			} else {
				Registration.Warning.remove('cc');
			}
			
			if(this.firstname.length == 0) {
				Registration.Warning.add('cf','Není vyplněné jméno!');
				this.ok = false;
			} else {
				Registration.Warning.remove('cf');
			}

			if(this.lastname.length == 0) {
				Registration.Warning.add('cl','Není vyplněné přijmení!');
				this.ok = false;
			} else {
				Registration.Warning.remove('cl');
			}
			
			if(this.phone1.length != 0 && this.phone1.length != 9) {
				Registration.Warning.add('ct','Telefon (1) má špatný formát (Vyplňte devět čísel)!');
				this.ok = false;
			} else {
				Registration.Warning.remove('ct');
			}
			
			if(this.phone2.length != 0 && this.phone2.length != 9) {
				Registration.Warning.add('cs','Telefon (2) má špatný formát (Vyplňte devět čísel)!');
				this.ok = false;
			} else {
				Registration.Warning.remove('cs');
			}

			if(this.email.length == 0) {
				Registration.Warning.add('ce','Není vyplněný email!');
				this.ok = false;
			} else {
				Registration.Warning.remove('ce');
			}
			
			if(!Validate.email( this.email )) {
				Registration.Warning.add('ce','Email není ve správném formátu!');
				this.ok = false;
			} else {
				Registration.Warning.remove('ce');
			}
			
			return this.ok; 
		}
		
	},
	Address : {
		ok : false,
		required : false,
		type : 'N',
		check : function( type ) {
			this.type = type;
			if(this.type == 'N') {
				
				this.ok = true;
				
				if($("#addr1_street").val().trim() == '') {
					Registration.Warning.add('addr1s','Fakturační adresa: Není vyplněná ulice.');
					this.ok = false;
				} else {
					Registration.Warning.remove('addr1s');
				}
				
				if($("#addr1_housenumber").val().trim() == '') {
					Registration.Warning.add('addr1hn','Fakturační adresa: Není vyplněné číslo popisné ulice.');
					this.ok = false;
				} else {
					Registration.Warning.remove('addr1hn');
				}

				if($("#addr1_city").val().trim() == '') {
					Registration.Warning.add('addr1c','Fakturační adresa: Není vyplněné město.');
					this.ok = false;
				} else {
					Registration.Warning.remove('addr1c');
				}
				
				if($("#addr1_zipcode").val().trim() == '') {
					Registration.Warning.add('addr1z','Fakturační adresa: Není vyplněné PSČ.');
					this.ok = false;
				} else {
					Registration.Warning.remove('addr1z');
				}
				
				return this.ok;
			}
		}
	},
	Captcha : {
		ok : false,
		required : true,
		check : function() {
			if(!this.required) {
				this.ok = true;
			}
			else {
				if($('#captcha_code').val() == null) {
					this.ok = true;
					//Registration.Warning.add('regcaptch','Nelze zkontrolovat kontrolní text');
				}
				else if($('#captcha_code').val().trim() == '') {
					this.ok = false;
					Registration.Warning.add('regcaptch','Kontrolní kód: Není vyplněný');
				}
				else {
					this.ok = true;
				}
				if(this.ok) {
					Registration.Warning.remove('regcaptch');
				}
			}
			return this.ok;
		}
	},
	/**
	 * Funkce pro odeslání formuláře.
	 * Nejprve proběhne kontrola a při úspěšném zpracování se formulář odešle.
	 */
	send : function() {
		var err = false;
		if(!Registration.Username.checkLength( $("#registration_username").val() )) {
			err = true;
		}
		else {
			Registration.Username.ok = true;
		}
		if(!Registration.Username.ok) {
			err = true;
		}
		if(!Registration.update || $("#registration_password1").val().trim().length > 0) {
			if(!Registration.Password.compare( $("#registration_password1").val(), $("#registration_password2").val() )) {
				err = true;
			}
		}
		if(Registration.ContactInfo.required) {
			if(!Registration.ContactInfo.check()) {
				err = true;
			}
		}
		if(Registration.Address.required) {
			if(!Registration.Address.check('N')) {
				err = true;
			}
		}
		if(Registration.Captcha.required) {
			if(!Registration.Captcha.check()) {
				err = true;
			}
		}
		if(!err) {
			if(!Registration.update) {
				sendCommand('CmdRegisterUser',null);
			} else {
				sendCommand('CmdRegisterUser',null);
			}
		}
	}
}
// Inicializace funkcí na formulářové prvky.
$(document).ready(function() {
	if($("#registration_username").is("input")) {
		$("#registration_username").keyup(function(e){
			Registration.Username.checkIfExists($(this).val());
		}).blur(function(){
			Registration.Username.checkIfExists($(this).val());
			Registration.Username.checkLength($(this).val());
		});
	}
	if($("#registration_password1").is("input")) {
		$("#registration_password1").blur(function() {
			Registration.Password.check($(this).val());
			if($("#registration_password2").val().trim().length > 0) {
				Registration.Password.compare($(this).val(),$("#registration_password2").val());
			}
		});
	}
	if($("#registration_password2").is("input")) {
		$("#registration_password2").blur(function() {
			if($(this).val().trim().length > 0 && $("#registration_password1").val().trim().length > 0) {
				Registration.Password.compare($("#registration_password1").val(),$(this).val());
			}
		});
	}
	
	try {
		$("#address1 label.boxtitle").click(function(){
			$("#address1_container").slideToggle(300);
		});
		$("#address2 label.boxtitle").click(function(){
			$("#address2_container").slideToggle(300);
		});
	}
	catch(e) {
		try {
			$("#address1_container").show();
			$("#address2_container").show();
		}
		catch(e) { }
	}
});














var isIE = (navigator.appVersion.indexOf("MSIE") != -1) ? true : false; 
var isWin = (navigator.appVersion.toLowerCase().indexOf("win") != -1) ? true : false; 
var isOpera = (navigator.userAgent.indexOf("Opera") != -1) ? true : false; 
jsVersion = 1.1; 
 
function JSGetSwfVer(i){ 
 // NS/Opera version >= 3 check for Flash plugin in plugin array 
 if (navigator.plugins != null && navigator.plugins.length > 0) 
 { 
   if (navigator.plugins["Shockwave Flash 2.0"] || navigator.plugins["Shockwave Flash"]) 
     { 
       var swVer2 = navigator.plugins["Shockwave Flash 2.0"] ? " 2.0" : ""; 
       var flashDescription = navigator.plugins["Shockwave Flash" + swVer2].description; 
       descArray = flashDescription.split(" "); 
       tempArrayMajor = descArray[2].split("."); 
       versionMajor = tempArrayMajor[0]; 
       versionMinor = tempArrayMajor[1]; 
       if ( descArray[3] != "" ) 
       { 
          tempArrayMinor = descArray[3].split("r"); 
        } 
        else 
        { 
          tempArrayMinor = descArray[4].split("r"); 
        } 
        versionRevision = tempArrayMinor[1] > 0 ? tempArrayMinor[1] : 0; 
        flashVer = versionMajor + "." + versionMinor + "." + versionRevision; 
     } 
     else 
     { 
      flashVer = -1; 
     } 
 } 
 // MSN/WebTV 2.6 supports Flash 4 
 else if (navigator.userAgent.toLowerCase().indexOf("webtv/2.6") != -1) flashVer = 4; 
 // WebTV 2.5 supports Flash 3 
 else if (navigator.userAgent.toLowerCase().indexOf("webtv/2.5") != -1) flashVer = 3; 
 // older WebTV supports Flash 2 
 else if (navigator.userAgent.toLowerCase().indexOf("webtv") != -1) flashVer = 2; 
 // Can&apos;t detect in all other cases 
 else { 

  flashVer = -1; 
 } 
 return flashVer; 
}  
function DetectFlashVer(reqMajorVer, reqMinorVer, reqRevision)  
{ 
 reqVer = parseFloat(reqMajorVer + "." + reqRevision); 
 // loop backwards through the versions until we find the newest version 
 for (i=25;i>0;i--) 
 {  
    if (isIE && isWin && !isOpera) 
    { 
      versionStr = VBGetSwfVer(i); 
    } 
    else 
    { 
      versionStr = JSGetSwfVer(i);  
    }
     
    if (versionStr == -1 ) 
    {  
      return false; 
    } 
    else if (versionStr != 0) 
    { 
      if(isIE && isWin && !isOpera) 
      { 
        tempArray = versionStr.split(" "); 
         tempString = tempArray[1]; 
         versionArray = tempString .split(",");  
      } 
      else 
      { 
        versionArray = versionStr.split("."); 
      } 
         versionMajor = versionArray[0]; 
         versionMinor = versionArray[1]; 
         versionRevision = versionArray[2]; 
  
      versionString = versionMajor + "." + versionRevision; // 7.0r24 == 7.24 
      versionNum = parseFloat(versionString); 
   // is the major.revision >= requested major.revision AND the minor version >= requested minor 
        if ( (versionMajor > reqMajorVer) && (versionNum >= reqVer) ) 
        { 
          return true; 
        } 
        else 
        { 
          return ((versionNum >= reqVer && versionMinor >= reqMinorVer) ? true : false );  
        } 
   } 
 }  
  return (reqVer ? false : 0.0); 
} 



function CreateFlashObject(DivID, URL,WIDTH, HEIGHT,alternatediv,wmode)
{
  var isvalidVersion = DetectFlashVer(requiredMajorVersion,requiredMinorVersion,requiredRevision);
   
  if(isvalidVersion)
  {

    var outer=
    '<!--[if !IE]> --><object type="application/x-shockwave-flash" data="'+URL+'" width="'+WIDTH+'" height="'+HEIGHT+'"><!-- <![endif]-->'+
    '              		<!--[if IE]>'+
                  		'<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"'+
                  		  'codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0" width="'+WIDTH+'" height="'+HEIGHT+'">'+
                  		  '<param name="movie" value="'+URL+'" />'+
                  		'<!--><!---->'+
                  		  '<param name="loop" value="true" />'+
                  		  '<param name="menu" value="false" />'+                  		  
                  		  '<param name="wmode" value="'+wmode+'" />'+
                  		  
                		'</object>';
    var fl = document.getElementById(DivID);
     
     if(fl != null)
     {
     
    	fl.innerHTML = outer;
    }
  //vymaze alternative html content
    if(alternatediv != undefined)
    {
    
       var altern = document.getElementById(alternatediv);
       if(altern != undefined)
        altern.parentNode.removeChild(altern);
    }           		
                		
  }
  else
  {
    if(alternatediv != undefined)
    {
		var el = document.getElementById(alternatediv);
		if (el)
		{
			el.style.visibility = 'visible';
		} 
       var fl = document.getElementById(DivID);  
       if(fl != undefined)
       fl.parentNode.removeChild(fl);           
    }   
  }
  
  
  
}

function CreateAndRunFlash()
{
 	
  for(var i=0 ;i< window.FlashObjectsList.length; i++ )
  {
   	 
      var flashElementId = window.FlashObjectsList[i].flashElementId;
      var swfUrl   = window.FlashObjectsList[i].swfUrl;
      var width   = window.FlashObjectsList[i].width;
      var height   = window.FlashObjectsList[i].height;
      var alternativeElementId   = window.FlashObjectsList[i].alternativeElementId;
      var wmode   = window.FlashObjectsList[i].wmode;
     
      CreateFlashObject(
        flashElementId,
        swfUrl,
        width,
        height,
        alternativeElementId,
        wmode
      );
   
    
  }

}






/**
*
*  UTF-8 data encode / decode
*  http://www.webtoolkit.info/
*
**/

var Utf8 = {

	// public method for url encoding
	encode : function (string) {
	
		string = string.replace(/\r\n/g,"\n");
		var utftext = "";

    var ser = "";
		for (var n = 0; n < string.length; n++) 
    {
			var c = string.charCodeAt(n);
      	ser += c + "a";	

		}

		return ser;
	},

	// public method for url decoding
	decode : function (utftext) 
  {
	
    var pole  = utftext.split("a");
    var utftext = "";
    for(var i=0;i<pole.length;i++)
    {
      var charcode = Number(pole[i]); 
      utftext += String.fromCharCode(charcode);
    }
    return utftext;
      
		
	}

}

