// Zkraceny zapis pro getElementById
function getID(sId) {
    return document.getElementById(sId);
}

// Zkraceny zapis pro getElementsByTagName
function getT(sId) {
    return document.getElementsByTagName(sId);
}

// Pridavani udalosti pri nacteni stranky
function addLoadEvent(func){
	var oldonload = window.onload;
	if (typeof window.onload != 'function') {
		window.onload = func;
	}
	else {
		window.onload = function() {
			oldonload();
			func();
		}
	}
}
addLoadEvent(linkPrint);
addLoadEvent(externalLinks);
addLoadEvent(validateForms);
// Prace s formulari
function validateForms() {
	var aForms = getT('form');
	for(var i=0; i < aForms.length; i++){
		if(!aForms[i].getAttribute('onsubmit')) {
			aForms[i].onsubmit = function() {
				return verification(this.id);
			}
		}
	}
	if(getID('newsletter-form')) {
        var sId = 'NOVEMAIL';
        inputLabel(sId,'vas@email');
    }
    if(getID('search-form')) {
    	var aReport = explodeTitle('search-report');
    	inputLabel('retezec',aReport[0]);
    }
}


/*
Projit prvky formulare podle ID
Pokud ma prvek tridu, ktera zacina podtrzitkem
Prevest nazev tridy na souvisejici RE a provest jim test
Zobrazit pripadnou chybovou hlasku s tim, ze se pouzije text ze znacky label
sovisejici label zjistim pres souvislost atributu ID => FOR
*/

function verification(sFId) {
	var iReport = 0;

	// Prevod jmena RE na RE
	var aRe  = new Array();
	aRe["_alphanum"]  	= "^[a-zA-z0-9]+$"; // alphanum je povinny
	aRe["_alphanum_"]  	= "^[a-zA-z0-9]?$"; // alphanum neni povinny
	aRe["_email"]  		= "^(([a-zA-Z0-9_.\-])+\@(([a-zA-Z0-9])+\.)+([a-zA-Z0-9\-]{2,4})+){1}$"; // E-mail je povinny
	aRe["_email_"]  	= "^(([a-zA-Z0-9_.\-])+\@(([a-zA-Z0-9])+\.)+([a-zA-Z0-9\-]{2,4})+)?$"; // E-mail neni povinny
	aRe["_number"]  	= "^[0-9]?$"; // Cele cislo je povinne
	aRe["_number_"]  	= "^[0-9]?$"; // Cele cislo neni povinne
	aRe["_numeric"]		= "^[-]?\d+(\.\d+)?$"; // Nejake cislo je povinne
	aRe["_numeric_"] 	= "^([-]?\d+(\.\d+))?$"; // Nejake cislo neni povinne
	aRe["_psc"]  		= "^(\d{3} ?\d{2})$"; // PSC je povinny
	aRe["_psc_"]  		= "^(\d{3} ?\d{2})?$"; // PSC neni povinny
	aRe["_text"]  		= "^(.+)"; // Text je povinny
	aRe["_text_"]  		= "^(.*)"; // Text neni povinny
	//aRe["_url"] 		= "^(http|https)\://([a-zA-Z0-9\.\-]+(\:[a-zA-Z0-9\.&%\$\-]+)*@)?((25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9])\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[0-9])|([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\.[a-zA-Z]{2,4})(\:[0-9]+)?(/[^/][a-zA-Z0-9\.\,\?\'\\/\+&%\$#\=~_\-@]*){1}"; // URL je povinne
	//aRe["_url_"] 		= "^(http)"; // URL neni povinne
	aRe["_url_"]        = "http(s)?://(.)+";

	// Prochazeni vsech prvku daneho formulare
	for(i=0; i< getID(sFId).elements.length; i++){
		if(new RegExp("^_").test(getID(sFId).elements[i].className)){
			var sId    	= getID(sFId).elements[i].id; // Nazev ID
			var sLabel 	= LabelText(sId); // Label text
            var sIdV 	= GetValue(sId); // Hodnota formularoveho prvku
            var sRE 	= aRe[getID(sId).className]; // Odpovidajici RE

			if(sRE) {
				// Neni vyplnena povinna polozka
				if(sIdV == '' && !RegExpValid(getID(sId).className, "([_]{1})$")) {
	                iReport += 1;
	                getID(sId).style.border = "1px red solid";
				}
				// Povinna polozka je vyplnenna nespravne
				else if (!RegExpValid(sIdV,sRE) && sIdV != '') {
		            iReport += 1;
		            getID(sId).style.border = "1px red solid";
		        }
		        else {
	                getID(sId).style.border = "2px #D4D0C8 inset";
				}
			}
		}
	}
	// Zobrazit vsechny hlasky soucasne
	return Report(iReport);
}

// Zobrazeni reportu
function Report(iReport) {
	if(iReport != 0) {
        // Ziskani hlasky z metatqu js-report
        alert(getMetaContents('js-report'));
        return false;
	}
	else {
        return true;
	}
}


// Ziskani hodnoty podle typu formularoveho prvku
// a odstraneni prazdnych mezer na zacatku a konci retezce
function GetValue(sId) {
	var sIdV = '';
	if(getID(sId).tagName == 'SELECT') {
	      sIdV = getID(sId).options[getID(sId).selectedIndex].value;
	}
	else {
	      sIdV = getID(sId).value.replace(/^\s+|\s+$/g, '');
	      getID(sId).value = sIdV;
	}
	return sIdV;
}

// Ziskani textu mezi znackami label
function LabelText(sId) {
	var sLabel  = '';
	var aLabels = getT('label');
	for(var l=0;l<aLabels.length;l++){
		if(aLabels[l].getAttribute('for') == sId) {
	        sLabel = aLabels[l].firstChild.nodeValue+"\n";
	        sLabel = sLabel.replace(/(.*):/, "$1");
		}
	}
	return sLabel;
}

// Otestuj spravnost
function RegExpValid(sValue,sRE) {
    if (new RegExp(sRE).test(sValue)) {
        return true;
    }
	else {
        return false;
  	}
}


function inputLabel(sId,sDV) {
   getID(sId).onblur = function() {
       if(getID(sId).value == ''){
           getID(sId).value = sDV;
       }
   }
   getID(sId).onfocus = function() {
       if(getID(sId).value == sDV){
           getID(sId).value = '';
       }
   }
}

// Ziskani obsahu z metatagu
function getMetaContents(sMetaName){
	var sContent = '';
	var aMetaElements = getT('meta');
	for(var i=0; i < aMetaElements.length; i++){
		if(aMetaElements[i].getAttribute('name') == sMetaName){
			sContent = aMetaElements[i].getAttribute('content');
		}
	}
	return sContent;
}


// Rozdelit retezec podle znaku |
function explodeTitle(sId) {
    var aReport = new Array();
	if(getID(sId)) {
		aReport = getID(sId).title.split("|");
	}
	return aReport;
}

// Filtrace vstupnich dat
function filter(id,type) {
    var result  = new String();
    // cislo, cas, telefonni cislo
    var filters = new Array("0123456789", "0123456789:", "+0123456789 /")

    var chars   = getID(id).value.split("");
    for (i = 0; i < chars.length; i++) {
        if (filters[f].indexOf(chars[i]) != -1) {
            result += chars[i];
        }
    }
    if (getID(id).value != result) {
        getID(id).value = result;
    }
}

// Odkaz pro tisk
function linkPrint() {
	if(getID('print')) {
		// Popisky odkazu
	    var aReport = explodeTitle('print');
		var sHtml = '<a href="#" title="'+aReport[0]+'" onclick="window.print();return false;">'+aReport[0]+'<span></span></a>';
		getID('print').innerHTML = sHtml;
	}
}

// Najdi v poli urcitou hodnotu
function in_array(sNeedle,aHaystack) {
    return new RegExp('(^|\,)'+sNeedle+'(\,|$)','gi').test(aHaystack);
}

// Nahrada atributu target
function externalLinks(){
    if(!document.getElementsByTagName) {
        return;
    }
    var anchors = getT('a');
    for(var i=0;i<anchors.length; i++) {
        var anchor = anchors[i];
        if(anchor.getAttribute('href') && anchor.getAttribute('rel')=='external') {
            anchor.target = '_blank';
            anchor.className = 'external';
        }
    }
}

// Funkce pro zobrazeni nahledoveho okna s obrazkem:
function js_fce_okno(jmeno,nazevobrazku,w,h) {
	//	jmeno		... jmeno obrazku
	//	nazevobrazku	... src obrazku
	//	w		... sirka okna 
	//	h		... vyska okna 
	
	msg = window.open("","msg","height="+(h+70)+",width="+(w+29)+",left=160,top=110,scrollbars=yes,resizable=yes");
	msg.focus();
	msg.document.clear();
	msg.document.write("<html><head><script language='javascript' type='text/javascript'>");
	msg.document.write("function resize() {");
	msg.document.write("self.resizeTo(document.getElementById('obr1').width + 40, document.getElementById('obr1').height + 120);");
	msg.document.write("}");
	msg.document.write("</script>");
	msg.document.write("<title> ",jmeno,"</title><style type='text/css' media='screen'> @import '../css/admin.css'; </style></head>");
		
	msg.document.write("<body onload='resize()' onBlur='window.close()'>");
	msg.document.write("<p><a href='#' onClick='window.close();'><img src='",nazevobrazku,"' alt='",jmeno,"' id='obr1' border='0'></a></p><p><br></p>");
	msg.document.write("<p style='text-align:center'><a href='#' onClick='window.close();' title=''> Close </a></p>");
	msg.document.write("</body></html>");
	msg.document.close();
}
