/* 
  Notes: 
    1. edge & help attributes do not work. 
    2. "height" & "width" must be entered before "center" 
    3. if you should choose to set "center=yes" do not put in "left" and "top" 
    4. Minimize button not hidden, but when clicked the window will not disappear 
    5. Aside from the aforementioned, all features should react the same *fingers crossed* 
    6. Still in the works, so don't expect miracles. Any problems/queries/complaints please don't hesitate. 
  Email: 
    [email]x_goose_x@hotmail.com[/email] 
*/ 

modalWin = ""; 
function xShowModalDialog( sURL, vArguments, sFeatures ) 
    { 
    var modalWin;
    //var dFeatures = 'dialogHeight: 450px; dialogWidth: 650px; dialogTop: 646px; dialogLeft: 4px; edge: Raised; center: Yes; help: Yes; resizable: Yes; status: Yes;';//default features 
    var dFeatures = '';
    
    if (sURL==null||sURL=='') 
    { 
        alert ("Invalid URL input."); 
        return false; 
    } 
    if (vArguments==null||vArguments=='') 
    { 
        vArguments=''; 
    } 
    if (sFeatures==null||sFeatures=='') 
    { 
        sFeatures=dFeatures; 
    } 
    if (window.navigator.appVersion.indexOf("MSIE")!=-1) 
    { 
        modalWin = window.showModalDialog ( sURL, vArguments, sFeatures ); 
        return modalWin; 
    } 
    sFeatures = sFeatures.replace(/ /gi,''); 
    aFeatures = sFeatures.split(";"); 
    sWinFeat = "directories=0,menubar=0,titlebar=0,toolbar=0,modal=1,"; 
    for ( x in aFeatures ) 
    { 
        aTmp = aFeatures[x].split("="); 
        sKey = aTmp[0].toLowerCase(); 
        sVal = aTmp[1]; 
        switch (sKey) 
        { 
            case "dialogheight": 
                sWinFeat += "height="+sVal+","; 
                pHeight = sVal; 
                break; 
            case "dialogwidth": 
                sWinFeat += "width="+sVal+","; 
                pWidth = sVal; 
                break; 
            case "dialogtop": 
                sWinFeat += "screenY="+sVal+","; 
                break; 
            case "dialogleft": 
                sWinFeat += "screenX="+sVal+","; 
                break; 
            case "resizable": 
                sWinFeat += "resizable="+sVal+","; 
                break; 
            case "status": 
                sWinFeat += "status="+sVal+","; 
                break; 
            case "scroll": 
                sWinFeat += "scrollbars="+sVal+","; 
                break; 
            case "center": 
                if ( sVal.toLowerCase() == "yes" ) 
                { 
                    sWinFeat += "screenY="+((screen.availHeight-pHeight)/2)+"px,"; 
                    sWinFeat += "screenX="+((screen.availWidth-pWidth)/2)+"px,"; 
                } 
                break; 
        } 
    } 
    modalWin=window.open(String(sURL), "", sWinFeat); 
    if (vArguments!=null&&vArguments!='') 
    { 
        modalWin.dialogArguments=vArguments; 
    } 
    return modalWin;
} 

function checkFocus() 
    { 
    if (window.navigator.appVersion.indexOf("MSIE")==-1) 
        { 
        if (modalWin!=null && !modalWin.closed) 
        { 
            self.blur(); 
            modalWin.focus(); 
        } 
    } 
} 

function openContainer(sContainerElement, sParams, sConfirmText) {
	var HTML, sPageName, sScriptName, sWidth, sHeight, sTitle, sURL, oParam, sMsg
	
	sWidth	= getContainerAttr(sContainerElement +'_width');
	sHeight	= getContainerAttr(sContainerElement +'_height');
	sTitle	= getContainerAttr(sContainerElement +'_title');
	sURL	= getContainerAttr(sContainerElement +'_url');
	sURL    = sURL + ((sURL.indexOf('?') != -1) ? '&' : '?');
	if (sParams.indexOf('?') == 0 || sParams.indexOf('&') == 0) {
	    sParams = sParams.substring(1, sParams.length);
	}
	sURL    = sURL + sParams;
    
	oParam = new Object();
	oParam.window 		 = window;
	oParam.element       = sContainerElement;
	oParam.container	 = sContainerElement +'_container';	
		
	if (sConfirmText=='' || sConfirmText==undefined || (sConfirmText!='' && confirm(sConfirmText))) {	
		if (sURL !='') {
			HTML = '<head><title>' + sTitle + '</title></head><body marginheight="0" marginwidth="0" topmargin="0" leftmargin="0"><div align="center">'
			HTML = HTML + '<iframe width="100%" height="100%" id="permfr" src="' + sURL + '" border="0" marginwidth="0" marginheight="0" scrolling="yes"></iframe></body></html>';
			if (window.showModelessDialog) {
			    var dlg = window.showModelessDialog(sURL, oParam, 'dialogheight='+ sHeight +'px;dialogwidth='+ sWidth +'px;status=yes;toolbar=no;menubar=no;location=no;resizable=no;scroll=no');
                dlg.document.open();
			    dlg.document.write(HTML);
			    dlg.document.close();
			    window.imageDlg = dlg;
            } else {
                var dlg = xShowModalDialog(sURL, oParam, 'dialogheight='+ sHeight +';dialogwidth='+ sWidth +';edge=raised;center=yes;help=0;resizable=0;status=0;scroll=0;') 
			    dlg.document.open();
			    dlg.document.write(HTML);
			    dlg.document.close();
			    window.imageDlg = dlg;
            }
		}
	}
}

function updateContainer(sSourceElement, bClose) {	
    var oWindow = parent.window;
    var oParam  = oWindow.dialogArguments;		
	var srcElement = window.document.getElementById(sSourceElement);
	var dstElement = oParam.window.document.getElementById(oParam.element);
	
	var srcContent = window.document.getElementById(sSourceElement +'_container');
	var dstContent = oParam.window.document.getElementById(oParam.container);

	if (srcContent != null && dstContent != null) {
	    dstContent.style.display = '';
		dstContent.innerHTML = srcContent.innerHTML;
    }

	if (srcElement != null && dstElement != null) {
		dstElement.value = srcElement.innerHTML;
	}	
    if (bClose) {
        oWindow.close();
    }
}

function updateContainerElementValue(sElement, sValue, bClose) {
    var oWindow = parent.window;
    var oParam  = oWindow.dialogArguments;		
	var dstElement = oParam.window.document.getElementById(sElement);
        
	if (dstElement != null) {
		dstElement.value = sValue;
	}	
    if (bClose) {
        oWindow.close();
    }
}

function clearContainer(element, content) {	
    var dstElement = window.document.getElementById(element);
	var dstContent = window.document.getElementById(content);

	if (dstContent != null) {
		dstContent.innerHTML = '';
		dstContent.style.display = 'none';
    }

	if (dstElement != null) {
		dstElement.value = '';
	}	
}

function updateFileManagerElement(sSourceElement, bClose) {	
    var oWindow = parent.window;
    var oParam  = oWindow.dialogArguments;		
	var srcElement = window.document.getElementById(sSourceElement);
	var dstElement = oParam.window.document.getElementById(oParam.element);
	
	var srcContent = window.document.getElementById(sSourceElement +'_container');
	var dstContent = oParam.window.document.getElementById(oParam.container);
	
    var srcLogicalName = window.document.getElementById(sSourceElement +'_lname');
	var dstLogicalName = oParam.window.document.getElementById(oParam.element +'_lname');

	if (srcContent != null && dstContent != null) {
	    dstContent.style.display = '';
		dstContent.innerHTML = srcContent.innerHTML;
    }

	if (srcElement != null && dstElement != null) {
		dstElement.value = srcElement.innerHTML;
	}
	
	if (srcLogicalName != null && dstLogicalName != null) {
		dstLogicalName.value = srcLogicalName.innerHTML;
	}
    if (bClose) {
        oWindow.close();
    }
}

function clearFileManagerElement(element, content) {	
    var dstElement = window.document.getElementById(element);
	var dstContent = window.document.getElementById(content);
    var dstLogicalName = window.document.getElementById(element +'_lname');

	if (dstContent != null) {
		dstContent.innerHTML = '';
		dstContent.style.display = 'none';
    }

	if (dstElement != null) {
		dstElement.value = '';
	}

    if (dstLogicalName != null) {
		dstLogicalName.value = '';
	}	
}

function clearImageManagerElement(element, content) {	
    var dstField;
    var dstElement = window.document.getElementById(element);
	var dstContent = window.document.getElementById(content);
    var dstPreviewEl = window.document.getElementById(element +'_preview_felement');
    var dstDetailEl = window.document.getElementById(element +'_image_felement');
    var dstResizeEl = window.document.getElementById(element +'_resize');
    var dstNameEl = window.document.getElementById(element +'_name');
    
	if (dstContent != null) {
		dstContent.innerHTML = '';
		dstContent.style.display = 'none';
    }

	if (dstElement != null) {
		dstElement.value = '';
	}

    if (dstPreviewEl != null) {
		dstPreviewEl.value = '';
        dstPreviewEl.style.display = '';
        dstField = window.document.getElementById(element +'_preview_container');
	    if (dstField != null) {
	        dstField.innerHTML = '';
	        dstField.style.display = 'none';
	    }
        dstField = window.document.getElementById(element +'_preview');
	    if (dstField != null) {
	        dstField.value = '';
	    }
	}
	if (dstDetailEl != null) {
		dstDetailEl.value = '';
        dstDetailEl.style.display = '';
        dstField = window.document.getElementById(element +'_image_container');
	    if (dstField != null) {
	        dstField.innerHTML = '';
	        dstField.style.display = 'none';
	    }
        dstField = window.document.getElementById(element +'_image');
	    if (dstField != null) {
	        dstField.value = '';
	    }
	}
	if (dstResizeEl != null) {
		dstResizeEl.checked = false;
        dstResizeEl.disabled = false;
	}
	if (dstNameEl != null) {
		dstNameEl.readOnly = false;
        dstNameEl.disabled = false;
        dstNameEl.value = '';
	}
}

function lockImageManagerElement(oParam, element, isEditable){
    var dstField;
    var dstPreviewEl = oParam.window.document.getElementById(element +'_preview_felement');
    if (dstPreviewEl != null) {
        dstPreviewEl.style.display = (isEditable ? '' : 'none');
        
        dstField = oParam.window.document.getElementById(element +'_preview_container');
	    if (dstField != null) {
	        dstField.style.display = '';
	    }
	}

    var dstDetailEl = oParam.window.document.getElementById(element +'_image_felement');
	if (dstDetailEl != null) {
        dstDetailEl.style.display = (isEditable ? '' : 'none');

        dstField = oParam.window.document.getElementById(element +'_image_container');
	    if (dstField != null) {
	        dstField.style.display = '';
	    }
	}

    var dstResizeEl = oParam.window.document.getElementById(element +'_resize');
	if (dstResizeEl != null) {
		dstResizeEl.checked = false;
        dstResizeEl.disabled = !isEditable;
	}

    var dstNameEl = oParam.window.document.getElementById(element +'_name');
	if (dstNameEl != null) {
		dstNameEl.readOnly = !isEditable;
        dstNameEl.disabled = false;
	}
}

function updateImageManagerElement(sSourceElement, bClose) {
    var oWindow = parent.window;
    var oParam  = oWindow.dialogArguments;		
    var isEditable = true;
    
	updateElementValue(oParam, sSourceElement, oParam.element);
    updateElementValue(oParam, sSourceElement +'_name', oParam.element +'_name');
    updateElementValue(oParam, sSourceElement +'_preview', oParam.element +'_preview');
    updateElementHTML(oParam, sSourceElement +'_preview_container', oParam.element +'_preview_container');
    updateElementValue(oParam, sSourceElement +'_image', oParam.element +'_image');
    updateElementHTML(oParam, sSourceElement +'_image_container', oParam.element +'_image_container');
    
    var dstIsEditable = window.document.getElementById(sSourceElement +'_editable');
    if (dstIsEditable != null && dstIsEditable != null) {
		isEditable = dstIsEditable.innerHTML == '0';
	}
    lockImageManagerElement(oParam, oParam.element, isEditable);

    if (bClose) {
        oWindow.close();
    }
}

function updateElementValue(oParam, sSource, sDestination) {
    var srcField = window.document.getElementById(sSource);
    var dstField = oParam.window.document.getElementById(sDestination);
	if (srcField != null && dstField != null) {
		dstField.value = srcField.innerHTML;
	}
}

function updateElementHTML(oParam, sSource, sDestination) {
    var srcField = window.document.getElementById(sSource);
	var dstField = oParam.window.document.getElementById(sDestination);
	if (srcField != null && dstField != null) {
		dstField.innerHTML = srcField.innerHTML;
	}
}

function clearImageBrowserElement(element, content) {	
    var dstElement = window.document.getElementById(element);
	var dstContent = window.document.getElementById(content);
    var dstAlternateName = window.document.getElementById(element +'_name');
    var dstImageElements = window.document.getElementById(element +'_elements');
    var dstBtnDelete = window.document.getElementById(element +'_dbutton');
    
	if (dstContent != null) {
		dstContent.innerHTML = '';
		dstContent.style.display = 'none';
    }

	if (dstElement != null) {
		dstElement.value = '';
	}

    if (dstAlternateName != null) {
		dstAlternateName.value = '';
	}
	
	if (dstImageElements != null) {
		dstImageElements.style.display = '';
	}
}

function resetPreviewImageElement(element, disable) {
    disableInputElement(element +'_container', disable);
    disableInputElement(element +'_file', disable);
    disableInputElement(element +'_dreset', disable);
    disableInputElement(element +'_dbutton', disable);
}

function disableInputElement(element, disable) {
    var dstElement = window.document.getElementById(element);
    if (dstElement != null) {
		dstElement.disabled = disable;
	}
}

function getContainerAttr(sAttr){
	var oElement = window.document.getElementById(sAttr);
	if (typeof(oElement) == 'object') {
		return(oElement.value);
	}
}

// ulozi stav (hodnoty) formulare
function saveFormSnapshot(oForm, oData) {

}

// porovna formular s ulozenym stavem (obsahem)
function compareForm2Snapshot(oForm, oData) {
    return true;
}

//zkontorluje, zda se zmenila data ve formulari
function handleFormChanged(oForm, oData) {
    if (compareForm2Snapshot(oForm, oData)) {
        return true;
    } else {
        alert('Data ve formulari se zmenila. Chcete formular ulozit?');
        return false;
    }
}