/////////////////////////////////////////////
//                                         //
//  CRTSEARCH - Certificate search script  //
//  (c) 2008 - Disig a.s.                  //
//                                         //
/////////////////////////////////////////////

    window.onload=CertTypeChange;

    var dia        = "áäčďéěíĺľňóôőöŕšťúůűüýřžÁÄČĎÉĚÍĹĽŇÓÔŐÖŔŠŤÚŮŰÜÝŘŽ";
    var browser    = 'unknown';
    var certtype   = 'NULL';
    var language   = 'sk';

    function CertTypeChange(type) {
	
	certtype = type;
	
	// V druhom kroku je ziadost uz vygenerovana
	if (document.getElementById('requestdown') != null) {
	    return;
	}
	
	// Detekcia anglickeho jazyka
	if (document.URL.indexOf('&L=1') != -1) {
	    language = 'en';
	}
	
	// Zistenie verzie browsera a OS
	if (navigator.appName.indexOf('Microsoft') != -1) {
	    browser = 'ie';
	} else if (navigator.appName == 'Opera') {
	    browser = 'opera';
	} else if (navigator.appCodeName.indexOf('Mozilla') != -1) {
	    browser = 'mozilla';
	} else {
	    browser = 'unknown';
	}

	// Zobrazenie formulara
	GenerateSearchForm();
	
	// Uprava velkosti comboboxov
	if (browser == 'opera') {
	    if (document.getElementById('certtype') != null) {
        	document.getElementById('certtype').style.width = '165px';
	    }
	    if (document.getElementById('serialform') != null) {
        	document.getElementById('serialform').style.width = '165px';
	    }
	} else if (browser == 'mozilla') {
	    if (document.getElementById('certtype') != null) {
        	document.getElementById('certtype').style.width = '172px';
	    }
	    if (document.getElementById('serialform') != null) {
        	document.getElementById('serialform').style.width = '172px';
	    }
	}
	
    }

    function GenerateSearchForm() {

	// Slovensky preklad
	var cselbeg   = '<tr align="left"><td style="border: 0px">Certifikačná autorita:</td><td style="border: 0px"><select name="certtype" id="certtype" style="width: 172px" onChange="CertTypeChange(this.value)">';
	var oc        = '<option value="/C=SK/L=Bratislava/O=Disig a.s./CN=CA Disig">CA Disig</option>';
	var oc_sel    = '<option value="/C=SK/L=Bratislava/O=Disig a.s./CN=CA Disig" selected>CA Disig</option>';
	var kc        = '<option value="/C=SK/L=Bratislava/O=Disig a.s./OU=ACA-307_2007%/CN=CA Disig">Akreditovaná CA Disig</option>';
	var kc_sel    = '<option value="/C=SK/L=Bratislava/O=Disig a.s./OU=ACA-307_2007%/CN=CA Disig" selected>Akreditovaná CA Disig</option>';
	var cselend   = '</select> <img src="/_img/help.jpg" style="vertical-align: top" onmouseover="ShowHelp(event, 0)" onmouseout="HideHelp()" /></td></tr>';
    var dn        = '<tr align="left"><td style="border: 0px">DN:&nbsp;(Meno a Priezvisko alebo email)</td>		<td style="border: 0px"><input name="dname" id="dname" type="text" value="" size="30" maxlength="64" /> <img src="/_img/help.jpg" style="vertical-align: top" onmouseover="ShowHelp(event, 1)" onmouseout="HideHelp()" /></td></tr>';
	var serform   = '<tr align="left"><td style="border: 0px">Tvar:</td>                    <td style="border: 0px"><select name="serialform" id="serialform" style="width: 172px"><option value="hex" selected>Hexadecimálny</option><option value="dec">Decimálny</option></select> <img src="/_img/help.jpg" style="vertical-align: top" onmouseover="ShowHelp(event, 3)" onmouseout="HideHelp()" /></td></tr>';
    var serial    = '<tr align="left"><td style="border: 0px">Sériové číslo:&nbsp;</td>	<td style="border: 0px"><input name="serial" id="serial" type="text" value="" size="30" maxlength="64" /> <img src="/_img/help.jpg" style="vertical-align: top" onmouseover="ShowHelp(event, 4)" onmouseout="HideHelp()" /></td></tr>';
    var end       = '<tr><td align="center" colspan="2" style="border: 0px"><input type="submit" name="btnSearch" id="btnSearch" value="Hľadať" /></td></tr>';

	// English translation
	var en_cselbeg   = '<tr align="left"><td style="border: 0px">Certificate authority:</td><td style="border: 0px"><select name="certtype" id="certtype" style="width: 172px" onChange="CertTypeChange(this.value)">';
	var en_oc        = '<option value="/C=SK/L=Bratislava/O=Disig a.s./CN=CA Disig">CA Disig</option>';
	var en_oc_sel    = '<option value="/C=SK/L=Bratislava/O=Disig a.s./CN=CA Disig" selected>CA Disig</option>';
	var en_kc        = '<option value="/C=SK/L=Bratislava/O=Disig a.s./OU=ACA-307_2007%/CN=CA Disig">Qualified CA Disig</option>';
	var en_kc_sel    = '<option value="/C=SK/L=Bratislava/O=Disig a.s./OU=ACA-307_2007%/CN=CA Disig" selected>Qualified CA Disig</option>';
	var en_cselend   = '</select> <img src="/_img/help.jpg" style="vertical-align: top" onmouseover="ShowHelp(event, 0)" onmouseout="HideHelp()" /></td></tr>';
    var en_dn        = '<tr align="left"><td style="border: 0px">DN:&nbsp;(Name and Surname or email)</td>		<td style="border: 0px"><input name="dname" id="dname" type="text" value="" size="30" maxlength="64" /> <img src="/_img/help.jpg" style="vertical-align: top" onmouseover="ShowHelp(event, 1)" onmouseout="HideHelp()" /></td></tr>';
	var en_serform   = '<tr align="left"><td style="border: 0px">Type:</td>			<td style="border: 0px"><select name="serialform" id="serialform" style="width: 172px"><option value="hex" selected>Hexadecimal</option><option value="dec">Decimal</option></select> <img src="/_img/help.jpg" style="vertical-align: top" onmouseover="ShowHelp(event, 3)" onmouseout="HideHelp()" /></td></tr>';
    var en_serial    = '<tr align="left"><td style="border: 0px">Serial number:&nbsp;</td>	<td style="border: 0px"><input name="serial" id="serial" type="text" value="" size="30" maxlength="64" /> <img src="/_img/help.jpg" style="vertical-align: top" onmouseover="ShowHelp(event, 4)" onmouseout="HideHelp()" /></td></tr>';
    var en_end       = '<tr><td align="center" colspan="2" style="border: 0px"><input type="submit" name="btnSearch" id="btnSearch" value="Search" /></td></tr>';

	if (language == 'en') {

	    cselbeg   = en_cselbeg;
	    oc        = en_oc;
	    oc_sel    = en_oc_sel;
	    kc        = en_kc;
	    kc_sel    = en_kc_sel;
	    cselend   = en_cselend;
        dn        = en_dn;
    	serform   = en_serform;
	    serial    = en_serial;
    	end       = en_end;
	}


	// Obycajny certifikat
        var ocForm = '<table border="0" cellspacing="2" cellpadding="2" style="border: 0px">';
        ocForm += cselbeg + oc_sel + kc + cselend + dn + serform + serial + end; 
        ocForm += '</table>';

        // Kvalifikovany certifikat
        var kcForm = '<table border="0" cellspacing="2" cellpadding="2" style="border: 0px">';
        kcForm += cselbeg + oc + kc_sel + cselend + dn + serform + serial + end; 
        kcForm += '</table>';

        // Vyber spravneho formulara
        var form = ocForm;

	// vyraz na porovnanie je v SQL LIKE syntaxi (treba upravit aj hore)
        if (certtype == '/C=SK/L=Bratislava/O=Disig a.s./OU=ACA-307_2007%/CN=CA Disig') {
            form = kcForm;
        }

	
	// Zobrazenie formulara
        document.getElementById('searchformdiv').style.display = 'none';
        document.getElementById('searchformdiv').innerHTML = form;
        document.getElementById('searchformdiv').style.display = 'block';
	
    }

    function ShowHelp(ev, id) {

        var text = new Array();

	if (language == 'sk') {
	
	    text[0] = 'Vyberte certifikačnú autoritu, ktorá vydala hľadaný certifikát';
            text[1] = 'Zadajte meno a priezvisko alebo iba ich časť.<br/>Príklad: <b>Jozef Mak</b><br/> Alebo zadajte e-mailovú adresu.<br/>Príklad:<b>jozef.mak@disig.sk</b>';
            text[3] = 'Vyberte tvar sériového čísla.';
            text[4] = 'Zadajte sériové číslo vo vybratom tvare.<br/>Príklad:<b>12345678</b>';

	    if (document.getElementById('serialform') != null) {
		if (document.getElementById('serialform').value == 'hex') {
        	    text[4] = 'Zadajte sériové číslo vo vybratom tvare.<br/>Príklad: <b>BC614E,</b>';
		}
	    }

	} else {

	    text[0] = 'Choose certificate authority that issued certificate you are looking for';
            text[1] = 'Fill in name and surname or part of it.<br/>Example:<b>Peter Pan</b><br/> Or Fill in e-mail address.<br/>Example:<b>peter.pan@disig.sk</b>';
            text[3] = 'Choose certificate serial number form (hex/dec).';
            text[4] = 'Fill in certificate serial number in choosen form.<br/>Example:<b> 12345678</b>';

	    if (document.getElementById('serialform') != null) {
		if (document.getElementById('serialform').value == 'hex') {
        	    text[4] = 'Fill in certificate serial number in choosen form.<br/>Example: <b>BC614E</b>';
		}
	    }
	}

        var html = '<div style="padding: 10px; border-style: solid; border-width: 1px; border-color: black">';
        html += '<table width="240" border=0 bgcolor="#dfe3e4" style="border: 0px"><tr align="left"><td style="border: 0px">' + text[id] + '</td></tr></table>';
        html += '</div>';

        // View help at the left side
        var help = document.getElementById('help');
	help.innerHTML = html;
	if (browser == 'ie') {
    	    help.style.left = GetMouseXPosition(ev) + document.documentElement.scrollLeft + 15 + 'px';
            help.style.top  = GetMouseYPosition(ev) + document.documentElement.scrollTop  + 15 + 'px';
	} else {
    	    help.style.left = GetMouseXPosition(ev) + 15 + 'px';
            help.style.top  = GetMouseYPosition(ev) + 15 + 'px';
	}
        help.style.display = 'block';

	if (browser == 'ie') {

	    // Rotate RIGHT if needed
            if ((GetMouseXPosition(ev) + help.clientWidth + 15) >= document.documentElement.clientWidth) {
		help.style.left = GetMouseXPosition(ev) + document.documentElement.scrollLeft - help.clientWidth - 15 + 'px';
            }

	    // Rotate UP if needed
            if ((GetMouseYPosition(ev) + help.clientHeight + 15) >= document.documentElement.clientHeight) {
    	        help.style.top  = GetMouseYPosition(ev) + document.documentElement.scrollTop - help.clientHeight - 15 + 'px';
	    }

	} else if (browser == 'opera') {

    	    // Rotate RIGHT if needed
    	    if ((GetMouseXPosition(ev) - document.body.scrollLeft + help.clientWidth + 15) >= self.innerWidth) {
    		help.style.left = GetMouseXPosition(ev) - help.clientWidth - 15 + 'px';
    	    }
    
	    // Rotate UP if needed
	    if ((GetMouseYPosition(ev) - document.body.scrollTop + help.clientHeight + 15) >= self.innerHeight) {
    		help.style.top  = GetMouseYPosition(ev) - help.clientHeight - 15 + 'px';
    	    }

	} else {

	    // Rotate RIGHT if needed
            if ((GetMouseXPosition(ev) - pageXOffset + help.clientWidth + 15) >= document.documentElement.clientWidth) {
		help.style.left = GetMouseXPosition(ev) - help.clientWidth - 15 + 'px';
            }

	    // Rotate UP if needed
            if ((GetMouseYPosition(ev) - pageYOffset + help.clientHeight + 15) >= document.documentElement.clientHeight) {
    	        help.style.top  = GetMouseYPosition(ev) - help.clientHeight - 15 + 'px';
	    }
	
	}

    }

    function HideHelp() {

        document.getElementById('help').style.display = 'none';
	document.getElementById('help').innerHTML = '';

    }

    function GetMouseXPosition(ev) {

	if (browser != 'ie') {
    	    return ev.pageX;
	} else {
    	    return (event.clientX + document.body.scrollLeft);
	}

    }

    function GetMouseYPosition(ev) {

	if (browser != 'ie') {
    	    return ev.pageY;
	} else {
    	    return (event.clientY + document.body.scrollTop);
	}

    }

    function HasDia(text) {

	for (i = 0; i < text.length; i++) {
    	    if (dia.indexOf(text.charAt(i)) != -1) {
		return true;
	    }
	}
	return false;

    }

    function FormSubmit() {

	    if ((document.getElementById('dname').value == '') && (document.getElementById('serial').value == '') ) {
    		if (language == 'en') {
				alert('You have to fill in DN or serial number');
			} else {
			    alert('Musíte vyplniť pole DN alebo sériové čislo.');
			}
			return false;
	    }
	
	    if (document.getElementById('dname').value != '') {
			if (document.getElementById('dname').value.length < 3) {
			    if (language == 'en') {
				alert('Field DN must be at least 3 characters long.');
			    } else {
				alert('Položka DN musí obsahovať aspoň 3 znaky.');
			    }
			    return false;
			}
	    }

	    if (document.getElementById('serial').value != '') {
			if (document.getElementById('serial').value.length < 3) {
			    if (language == 'en') {
				alert('Field Serial number must be at least 3 characters long.');
			    } else {
				alert('Položka Sériové číslo musí obsahovať aspoň 3 znaky.');
			    }
			    return false;
			}
	    } 
		return true;
    }

