//AppGenie True ID Portal - Generic JaVaScript Library


// Open a Popup screen------------------------------------------------------------

function popup(url) { popup(url, '_new', '_ag='); }

function popup(url, target) { popup(screen, target, ''); }

function popup(url, target, params) {
    if (params != '') {
        params = '&' + params;
    }
    window.open('Popup.aspx?popup=' + url + params, target, 'location=no,scrollbars=yes,directories=no,status=no,menubar=no,resizable=yes');
}

// Open a window------------------------------------------------------------------

function windowOpen(url) {
    var options = 'location=no,scrollbars=yes,directories=no,status=yes,menubar=no,resizable=yes';
    windowOpen(url, '_new', options);
}

function windowOpen(url, title) {
    var options = 'location=no,scrollbars=yes,directories=no,status=yes,menubar=no,resizable=yes';
    windowOpen(url, title, options);
}

function windowOpen(url, title, options) {
    var win = window.open(url, title, options);
    win.focus();
}

// Open a new Url

function go(destination) {
    if (destination) { location.href = destination; }
}

// Finds the X position of an object----------------------------------------------

function findPosX(obj) {
    var curleft = 0;
    if (obj.offsetParent) {
        while (obj.offsetParent) {
            curleft += obj.offsetLeft
            obj = obj.offsetParent;
        }
    }
    else if (obj.x)
        curleft += obj.x;
    return curleft;
}

// Finds the X position of an object---------------------------------------------

function findPosY(obj) {
    var curtop = 0;
    if (obj.offsetParent) {
        while (obj.offsetParent) {
            curtop += obj.offsetTop
            obj = obj.offsetParent;
        }
    }
    else if (obj.y)
        curtop += obj.y;
    return curtop;
}

// Show a hidden DIV ---------------------------------------------

function showMenu(ok) {
    var obj = ok;
    if (obj) {
        obj.style.visibility = "visible";
        obj.style.display = "block";
    }
}

// Hide a visible DIV ---------------------------------------------

function hideMenu(ok) {
    var obj = ok;
    if (obj) {
        obj.style.visibility = "hidden";
        obj.style.display = "none";
    }
}

// Show a hidden DIV BY ID ---------------------------------------------

function showObject(key) {
    var obj = document.getElementById(key);
    if (obj) {
        obj.style.visibility = "visible";
        obj.style.display = "block";
    }
}

// Hide a visible DIV ---------------------------------------------

function hideObject(key) {
    var obj = document.getElementById(key);
    if (obj) {
        obj.style.visibility = "hidden";
        obj.style.display = "none";
    }
}

// Trigger OnChange ----------------------------------------

function TriggerOnChange(id) {
    obj = document.getElementById(id);
    if (obj) {
        if (obj.onchange)
            obj.onchange();
    }
}

// Trigger OnValidate ----------------------------------------

function TriggerOnValidate(id) {
    obj = document.getElementById(id);
    if (obj) {
        if (obj.onvalidate)
            obj.onvalidate();
    }
}

// Trigger OnFocus----------------------------------------

function TriggerOnFocus(id) {
    obj = document.getElementById(id);
    if (obj) {
        if (obj.onfocus)
            obj.onfocus();
    }
}

// Trigger OnBlur ----------------------------------------

function TriggerOnBlur(id) {
    obj = document.getElementById(id);
    if (obj) {
        if (obj.onblur)
            obj.onblur();
    }
}



function isAllowedChars(field, valid, noValid, defa, manda) {
    if (field != undefined) {
        var fld = field;
        if (tinyMCE.get(field.id)) { tinyMCE.get(field.id).save(); }
        var fieldValue = field.value;
        if (fieldValue == '' && manda == 'no') { return true; }
        if (fieldValue == '' && manda == 'yes') { alertField(fld); return false; }
        if (valid != '') {
            for (var j = 0; j < fieldValue.length; j++) {
                temp = fieldValue.substring(j, j + 1);
                if (valid.indexOf(temp) == "-1") { alertField(fld); return false; }
            }
        }
        if (noValid != '') {
            for (var j = 0; j < fieldValue.length; j++) {
                temp = fieldValue.substring(j, j + 1);
                if (noValid.indexOf(temp) != "-1") { alertField(fld); return false; }
            }
        }
    }
    return true;
}

function doOnKeyPress(e, obj, valid, noValid, max, script) {
    isie = false;
    keynum = -1;
    if (e.keyCode) {
        if (navigator.appName == "Netscape") { return true; }
        isie = true;
        keynum = e.keyCode;
    }
    else if (e.which && navigator.appName == "Netscape") {
        keynum = e.which;
    }
    if (keynum >= 0) {
        temp = String.fromCharCode(keynum);
        if (valid != "") {
            if (valid.indexOf(temp) == "-1") { if (isie == true) { e.keyCode = null; } else { e.preventDefault(); }; return false; }
        }
        if (noValid.indexOf(temp) != "-1") { if (isie == true) { e.keyCode = null; } else { e.preventDefault(); }; return false; }
    }
    if (max > 0) {
        if (obj) {
            tmp = obj.value;
            if (tmp) {
                length = tmp.split(' ').length;
                if (length > max) { if (isie == true) { e.keyCode = null; } else { e.preventDefault(); }; return false; }
            }
        }
    }
    doEval2(script);
    return true;
}

function isNumberItems(field, manda, min, max) {
    if (field != undefined) {
        var fld = field;
        var length = fld.options.length;
        if (length == 0 && manda == 'no') { return true; }
        if (length == 0 && manda == 'yes') { alertField(fld); return false; }
        if (max > -1) {
            if (length > max) { alertField(fld); return false; }
        }
        if (min > -1) {
            if (length < min) { alertField(fld); return false; }
        }
    }
    return true;
}

function isChecked(field) {
    if (field != undefined) {
        var fld = field;
        if (!field.checked) { alertField(fld); return false; }
    }
    return true;
}

function alertField(field) {
    if (field != undefined) {
        var fld = field;
        try {
            fld.focus();
            fld.blur();
            if (fld.select) {
                fld.select();
            }
        } catch (err) { }
        printError(fld.name, "Please correct your input");
    }
    return false;
}

function printError(field, text) {
    printAlert("dv_" + field + "_err", text);
}

function printHelp(field, text) {
    printAlert("dv_" + field + "_hlp", text);
}

function printAlert(field, text) {
    obj = document.getElementById(field);
    if (obj) {
        if (text == "") {
            obj.style.visibility = 'hidden';
        } else {
            obj.style.display = 'block';
            obj.style.visibility = 'visible';
            obj.innerHTML = text;
        }
    } else {
        if (text != "") { alert(text); }
    }
}

function printWait(text) {
    var w = 100;
    var h = 100;
    if (window.innerWidth) {
        w = window.innerWidth;
    }
    else if (document.documentElement && document.documentElement.clientWidth) {
        w = document.documentElement.clientWidth;
    }
    else if (document.body) {
        w = document.body.clientWidth;
    }
    if (window.innerHeight) {
        h = window.innerHeight;
    }
    else if (document.documentElement && document.documentElement.clientHeight) {
        h = document.documentElement.clientHeight;
    }
    else if (document.body) {
        h = document.body.clientHeight;
    }
    var x = w / 2;
    var y = h / 2;
    obj = document.getElementById("ajax_wait");
    flag = true;
    if (!obj) {
        if (text != "") {
            obj = document.createElement('DIV');
            obj.id = "ajax_wait";
            obj.style.top = y + "px";
            obj.style.left = x + "px";
            obj.style.background = "#F3F3F3";
            obj.style.border = "solid 1px #666666";
            obj.style.display = 'block';
            obj.style.visibility = 'visible';
            obj.style.position = "absolute";
            obj.style.zIndex = 5;
            document.body.appendChild(obj);
        } else {
            flag = false;
        }
    }
    if (obj && flag == true) {
        if (text == "") {
            obj.style.visibility = 'hidden';
        } else {
            text = "<img src='images/ajax_wait.gif' style='border: 0px;' />" + text;
            obj.style.display = 'block';
            obj.style.visibility = 'visible';
            obj.innerHTML = text;
        }
    }
}

function isMandatory(field, defa, manda) {
    if (field != undefined) {
        var fld = field;
        if (fld.length == 0 && manda == 'no') {
            if (defa != "") {
                fld.options[0] = new Option();
                fld.options[0].value = defa;
            }
            return true;
        }
        if (fld.length == 0 && manda == 'yes') { alertField(fld); return false; }
    }
    return true;
}

//----------Load image ----------------

function image(name) {
    return "Image.aspx?dn=" + name + "&" + Math.random();
}


//----------Preview functionality ----------------

var xhr = false;
var xparams = "";

function ShowPreview(sender, displayDiv, url, params) {
    GetPreview(sender, displayDiv, url, params);
    return false;
}

function HidePreview(displayDiv) {
    var obj = document.getElementById(displayDiv);
    if (obj) {
        obj.style.visibility = "hidden";
    }
}

function GetPreview(sender, displayDiv, url, params) {
    var obj = document.getElementById(displayDiv);

    if (xparams != url + "?" + params) {
        xparams = url + "?" + params;
        url += "?" + params;
        url += "&" + Math.random();

        if (window.XMLHttpRequest) {
            xhr = new XMLHttpRequest();
        } else {
            if (window.ActiveXObject) {
                var aVersions = ["MSXML2.XMLHttp.5.0", "MSXML2.XMLHttp.4.0", "MSXML2.XMLHttp.3.0", "MSXML2.XMLHttp", "Microsoft.XMLHttp"];
                for (var i = 0; i < aVersions.length; i++) {
                    try {
                        xhr = new ActiveXObject(aVersions[i]);
                    } catch (oError) { }
                }
            }
        }

        if (xhr) {
            xhr.onreadystatechange = function() {
                if (xhr.readyState == 4 || xhr.readyState == "complete") {
                    obj.innerHTML = xhr.responseText;
                    var newx = findPosX(sender);
                    var newy = findPosY(sender);
                    obj.style.top = newy + 5 + 'px';
                    obj.style.left = newx + 10 + 'px'
                    obj.style.width = 400 + 'px';
                    obj.style.display = 'block';
                    obj.style.visibility = 'visible';
                    obj.onmouseout = function() { HidePreview(displayDiv); }
                }
            }
            xhr.open("GET", url, true);
            xhr.send(null);
        }
    } else {
        obj.style.display = 'block';
        obj.style.visibility = 'visible';
        obj.style.width = 400 + 'px';
    }
}

function GetImagePreview(sender, displayDiv, params) {
    var obj = document.getElementById(displayDiv);
    if (!obj) {
        obj = document.createElement('div');
        obj.id = displayDiv;
        obj.style.display = 'block';
        obj.style.visibility = 'visible';
        obj.style.position = "absolute";
        obj.style.zIndex = 5;
        document.body.appendChild(obj);
    }
    url = "Image.aspx";
    if (xparams != url + "?" + params) {
        xparams = url + "?" + params;
        url += "?" + params;
        url += "&" + Math.random();

        obj.innerHTML = "<img src='" + url + "' border='0' style='max-width: 320px; max-height: 140px;' />";
        var newx = findPosX(sender);
        var newy = findPosY(sender);
        obj.style.top = newy + 5 + 'px';
        obj.style.left = newx + 10 + 'px'
        obj.style.width = 400 + 'px';
        obj.style.display = 'block';
        obj.style.visibility = 'visible';
        obj.onmouseout = function() { HidePreview(displayDiv); }
    } else {
        obj.style.display = 'block';
        obj.style.visibility = 'visible';
        obj.style.width = 400 + 'px';
    }
}

function GetImage(sender, displayDiv, params) {
    var obj = document.getElementById(displayDiv);
    if (!obj) {
        obj = document.createElement('div');
        obj.id = displayDiv;
        obj.style.display = 'block';
        obj.style.visibility = 'visible';
        obj.style.position = "absolute";
        obj.style.zIndex = 5;
        document.body.appendChild(obj);
    }
    url = "Image.aspx";
    if (xparams != url + "?" + params) {
        xparams = url + "?" + params;
        url += "?" + params;
        url += "&" + Math.random();

        obj.innerHTML = "<img src='" + url + "' border='0' />";
        var newx = findPosX(sender);
        var newy = findPosY(sender);
        obj.style.top = newy + 5 + 'px';
        obj.style.left = newx + 10 + 'px'
        obj.style.width = 400 + 'px';
        obj.style.display = 'block';
        obj.style.visibility = 'visible';
        obj.onmouseout = function() { HidePreview(displayDiv); }
    } else {
        obj.style.display = 'block';
        obj.style.visibility = 'visible';
        obj.style.width = 400 + 'px';
    }
}

//-----------------------------------------------------
var xb =
{
    evtHash: [],

    ieGetUniqueID: function(_elem) {
        if (_elem === window) { return 'theWindow'; }
        else if (_elem === document) { return 'theDocument'; }
        else { return _elem.uniqueID; }
    },

    addEvent: function(_elem, _evtName, _fn, _useCapture) {
        if (typeof _elem.addEventListener != 'undefined') {
            if (_evtName == 'mouseenter')
            { _elem.addEventListener('mouseover', xb.mouseEnter(_fn), _useCapture); }
            else if (_evtName == 'mouseleave')
            { _elem.addEventListener('mouseout', xb.mouseEnter(_fn), _useCapture); }
            else
            { _elem.addEventListener(_evtName, _fn, _useCapture); }
        }
        else if (typeof _elem.attachEvent != 'undefined') {
            var key = '{FNKEY::obj_' + xb.ieGetUniqueID(_elem) + '::evt_' + _evtName + '::fn_' + _fn + '}';
            var f = xb.evtHash[key];
            if (typeof f != 'undefined')
            { return; }

            f = function() {
                _fn.call(_elem);
            };

            xb.evtHash[key] = f;
            _elem.attachEvent('on' + _evtName, f);

            // attach unload event to the window to clean up possibly IE memory leaks
            window.attachEvent('onunload', function() {
                _elem.detachEvent('on' + _evtName, f);
            });

            key = null;
            //f = null;   /* DON'T null this out, or we won't be able to detach it */
        }
        else
        { _elem['on' + _evtName] = _fn; }
    },

    removeEvent: function(_elem, _evtName, _fn, _useCapture) {
        if (typeof _elem.removeEventListener != 'undefined')
        { _elem.removeEventListener(_evtName, _fn, _useCapture); }
        else if (typeof _elem.detachEvent != 'undefined') {
            var key = '{FNKEY::obj_' + xb.ieGetUniqueID(_elem) + '::evt' + _evtName + '::fn_' + _fn + '}';
            var f = xb.evtHash[key];
            if (typeof f != 'undefined') {
                _elem.detachEvent('on' + _evtName, f);
                delete xb.evtHash[key];
            }

            key = null;
            //f = null;   /* DON'T null this out, or we won't be able to detach it */
        }
    },

    mouseEnter: function(_pFn) {
        return function(_evt) {
            var relTarget = _evt.relatedTarget;
            if (this == relTarget || xb.isAChildOf(this, relTarget))
            { return; }

            _pFn.call(this, _evt);
        }
    },

    isAChildOf: function(_parent, _child) {
        if (_parent == _child) { return false };

        while (_child && _child != _parent)
        { _child = _child.parentNode; }

        return _child == _parent;
    }
};


function eMM(e, obj) {
    targ = this;
    var newx = findPosX(targ);
    var newy = findPosY(targ);
    document.getElementById('eP').style.top = newy + 'px';
    document.getElementById('eP').style.left = newx + 'px';
    document.getElementById('eP').style.display = 'block';
    document.getElementById('eP').style.visibility = 'visible';
    document.getElementById('ePr').href = "javascript:showDialog(" + newx + "," + newy + ",'menu" + targ.id + "');";
}

function ePM(id) {
    targ = document.getElementById(id);
    var newx = findPosX(targ);
    var newy = findPosY(targ);
    document.getElementById('eP').style.top = newy + 'px';
    document.getElementById('eP').style.left = newx + 'px';
    document.getElementById('eP').style.display = 'block';
    document.getElementById('eP').style.visibility = 'visible';
    document.getElementById('ePr').href = "javascript:showDialog(" + newx + "," + newy + ",'" + targ.id + "');";
}

//-----------------------Update object via ajax-------------------------------------------
function RemoveObject(dn) {
    var _upObj = new UpdateObject();
    _upObj.Remove(dn);
}

function UpdateObject() {
    this.code = "";
}

UpdateObject.prototype.Callback = function(msg) {
    var obj = document.getElementById('preview');
    if (!obj) {
        obj = document.createElement('DIV');
        obj.id = "preview";
        obj.style.display = 'block';
        obj.style.visibility = 'visible';
        obj.style.position = "absolute";
        obj.style.zIndex = 5;
        document.body.appendChild(obj);
    }
    obj.innerHTML = msg;
    obj.style.display = 'block';
    obj.style.visibility = 'visible';
    obj.onmouseout = function() { hideObject("preview"); }
    printWait('');
}

UpdateObject.prototype.Add = function(key, value) {
    this.code += key + ": " + value + "|$|";
}

UpdateObject.prototype.Remove = function(dn) {
    this.Add("dn", dn);
    this.Add("changetype", "remove");
    this.Send();
}

UpdateObject.prototype.Send = function(parse) {
    url = "Servlet.aspx?_servlet=Update";
    if (parse) {
        if (parse == true) {
            url += "&parse=yes";
        }
    }
    url += "&" + Math.random();
    cb = this;
    xhr = GetXmlHttpObject();
    if (xhr) {
        xhr.onreadystatechange = function() {
            if (xhr.readyState == 4 || xhr.readyState == "complete") {
                if (cb && cb.Callback) {
                    cb.Callback(xhr.responseText);
                }
            }
        }
    }
    parameters = "code=" + escape1(this.code);
    xhr.open("POST", url, true);
    xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded; charset=utf-8");
    xhr.setRequestHeader("Content-length", parameters.length);
    xhr.send(parameters);
}

//-----------------------Get Select Options via ajax-------------------------------------------

function ComboBox() {
    cb = new Entries();
    function f() { }
    f.prototype = cb;
    f.prototype.mandatory = false;
    f.prototype.Callback = function(id) {
        var obj = document.getElementById(id);
        if (obj) {
            val = obj.value;
            for (k = obj.options.length - 1; k >= 0; k--) {
                obj.options[k] = null;
            }
            if (!this.mandatory) {
                obj.options[obj.options.length] = new Option("", "");
                obj.selectedIndex = obj.options.length - 1;
            }
            for (k = 0; k < this.entries.length; k++) {
                tmp = this.entries[k].split("#");
                obj.options[obj.options.length] = new Option(tmp[1], tmp[0]);
                if (val == tmp[0]) {
                    obj.selectedIndex = obj.options.length - 1;
                }
            }
        }
    }
    return new f();
}

//-----------------------Load entry via ajax-------------------------------------------
function Entry() {
    this.retFields = "cn";
    this.entry = new Object(); 
}

Entry.prototype.Callback = function(id) {
    //alert(this.Count());	
}

Entry.prototype.GetStringValue = function(field) {
    retValue = "";
    if (this.entry) {
        if (this.entry[field]) {
            return this.entry[field];
        }
    }
    return retValue;
}

Entry.prototype.GetVault = function(field) {
    retValue = "";
    if (this.entry) {
        tmp = this.entry["adtvault"];
        if (tmp) {
            if (tmp[field]) {
                return tmp[field];
            }
        }
    }
    return retValue;
}

Entry.prototype.Load = function(dn, id) {
    url = "Servlet.aspx?_servlet=Load";
    url += "&" + Math.random();
    xhr = GetXmlHttpObject();
    var cb = this;
    if (xhr) {
        xhr.onreadystatechange = function() {
            if (xhr.readyState == 4 || xhr.readyState == "complete") {
                tmp = xhr.responseText;
                if (tmp == "") {
                    cb.entry = new Object();
                } else {
                    cb.entry = JSON.parse(tmp);
                }
                if (cb) {
                    cb.Callback(id);
                }
            }
        }
    }
    parameters = "&dn=" + escape1(dn);
    parameters += "&retFields=" + escape1(this.retFields);
    xhr.open("POST", url, true);
    xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded; charset=utf-8");
    xhr.setRequestHeader("Content-length", parameters.length);
    xhr.send(parameters);
}

//-----------------------Get Field Value via ajax-------------------------------------------

function Entries() {
    this.level = "1";
    this.max = "-1";
    this.template = "";
    this.entries = new Array();
}

Entries.prototype.Callback = function(id) {
    //alert(this.Count());	
}

Entries.prototype.Level = function(lev) {
    this.level = lev;
}

Entries.prototype.Max = function(cou) {
    this.max = cou;
}

Entries.prototype.Count = function() {
    return this.entries.length;
}

Entries.prototype.Items = function() {
    return this.entries;
}

Entries.prototype.ToString = function() {
    retValue = "";
    for (i = 0; i < this.entries.length; i++) {
        retValue += this.entries[i];
    }
    return retValue;
}

Entries.prototype.Search = function(container, filter, id) {
    url = "Servlet.aspx?_servlet=Search";
    url += "&" + Math.random();
    xhr = GetXmlHttpObject();
    var cb = this;
    if (xhr) {
        xhr.onreadystatechange = function() {
            if (xhr.readyState == 4 || xhr.readyState == "complete") {
                tmp = xhr.responseText;
                if (tmp == "") {
                    cb.entries = new Array();
                } else {
                    cb.entries = tmp.split(";");
                }
                if (cb) {
                    cb.Callback(id);
                }
            }
        }
    }
    parameters = "&container=" + escape1(container);
    parameters += "&filter=" + escape1(filter);
    parameters += "&level=" + escape1(this.level);
    parameters += "&count=" + escape1(this.max);
    parameters += "&template=" + escape1(this.template);
    xhr.open("POST", url, true);
    xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded; charset=utf-8");
    xhr.setRequestHeader("Content-length", parameters.length);
    xhr.send(parameters);
}

Entries.prototype.FindEntry = function(dn, field, id) {
    this.FindTranslationEntry(dn, field, "", id);
}

Entries.prototype.FindTranslationEntry = function(dn, field, lang, id) {
    url = "Servlet.aspx?_servlet=Find";
    url += "&" + Math.random();
    var obj = document.getElementById(id);
    xhr = GetXmlHttpObject();
    if (xhr) {
        xhr.onreadystatechange = function() {
            if (xhr.readyState == 4 || xhr.readyState == "complete") {
                if (obj) {
                    ed = tinyMCE.get(id);
                    if (ed) {
                        ed.setContent(xhr.responseText);
                    } else {
                        obj.value = xhr.responseText;
                    }
                    printWait('');
                }
            }
        }
    }
    parameters = "dn=" + escape1(dn);
    parameters += "&field=" + escape1(field);
    parameters += "&lang=" + escape1(lang);
    xhr.open("POST", url, true);
    xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded; charset=utf-8");
    xhr.setRequestHeader("Content-length", parameters.length);
    xhr.send(parameters);
}

Entries.prototype.ParseEntry = function(dn, template, id) {
    url = "Servlet.aspx?_servlet=Parse";
    url += "&" + Math.random();
    var obj = document.getElementById(id);
    xhr = GetXmlHttpObject();
    if (xhr) {
        xhr.onreadystatechange = function() {
            if (xhr.readyState == 4 || xhr.readyState == "complete") {
                if (obj) {
                    obj.innerHTML = xhr.responseText;
                    printWait('');
                }
            }
        }
    }
    parameters = "dn=" + escape1(dn);
    parameters += "&template=" + escape1(template);
    xhr.open("POST", url, true);
    xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded; charset=utf-8");
    xhr.setRequestHeader("Content-length", parameters.length);
    xhr.send(parameters);
}

//-----------------------Upload file-------------------------------------------
var FileUploader = new Array();

function GetFileUploader(id) {
    for (var i = 0; i < FileUploader.length; i++) {
        tmp = FileUploader[i];
        if (tmp.id == id) {
            return tmp;
        }
    }
    return null;
}

function FileUploaderProgress(id) {
    obj = GetFileUploader(id);
    obj.UpdateProgress(id);
}

function FileUpload(id) {
    this.id = id;
    this.progress = document.getElementById("dv_" + this.id + "_prg");
    this.iFrame = document.getElementById("ifr_" + this.id);
    this.check = document.getElementById("upl_" + this.id);
    this.file = document.getElementById(this.id);
    this.filename = document.getElementById("fil_" + this.id);
    this.counter = 1;
    FileUploader.push(this);
}

FileUpload.prototype.BeginUpload = function() {
    if (this.progress) {
        this.progress.style.visibility = "visible";
        this.progress.style.display = "block";
        this.ClearProgress();
        printError(this.id, "File Uploading....");
        this.progress.style.width = "10px";
        this.iFrame.contentWindow.document.body.innerHTML = "";
        this.check.value = "Uploading";
    }
    parameter = this.id;
    this.ProgressTimer = setTimeout(function() { FileUploaderProgress(parameter); }, 2000);
}

FileUpload.prototype.ClearProgress = function() {
    this.progress.style.width = "0px";
    this.counter = 1;
}

FileUpload.prototype.UpdateProgress = function(id) {
    thisObj = GetFileUploader(id);
    if (thisObj.counter <= 250) {
        printError(thisObj.id, "File Uploading....");
        thisObj.progress.style.width = ((thisObj.counter + 1) * 2) + "px";
        thisObj.counter += 1;
    }
    else {
        thisObj.ClearProgress();
    }

    if (thisObj.ProgressTimer) {
        clearTimeout(thisObj.ProgressTimer);
    }
    tmp = thisObj.iFrame.contentWindow.document.body.innerHTML;
    if (tmp == "Ok") {
        //printError(thisObj.id, "File Uploaded");
        printError(thisObj.id, "File Uploaded ");
        thisObj.progress.style.visibility = "hidden";
        thisObj.progress.style.display = "none";
        thisObj.check.value = "Ok";
        thisObj.filename.value = thisObj.file.value;
        thisObj.file.value = "";
    } else {
        if (tmp == "") {
            printError(thisObj.id, "File Uploading ");
            thisObj.ProgressTimer = setTimeout(function() { FileUploaderProgress(id); }, 2000);
        } else {
            printError(thisObj.id, "Error uploading file ");
        }
        //Timer(thisObj, 2000);
        thisObj.check.value = tmp;
    }
}

//----------------------------------------------------------------------->
function Ogone(fptl) {
    this.method = "post";
    this.path = "https://secure.ogone.com/ncol/test/orderstandard.asp";
    this.livepath = "https://secure.ogone.com/ncol/prod/orderstandard.asp";
    this.target = "i" + fptl;
    this.div = fptl;
    this.url = "http://www.yotran.com/Ogone.ytr";
}

Ogone.prototype.Naw = function(name, email, address, zip, city, country, tel) {
    this.Field("CN", name);
    this.Field("EMAIL", email);
    this.Field("ownerZIP", zip);
    this.Field("owneraddress", address);
    this.Field("ownertown", city);
    this.Field("ownercty", country);
    this.Field("ownertelno", tel);
}

Ogone.prototype.Transaction = function(id, amount, description, pspid, currency, hash) {
    this.Field("PSPID", pspid);
    this.Field("orderID", id);
    this.Field("amount", amount);
    this.Field("COM", description);
    this.Field("currency", currency);
    this.Field("SHASign", hash);
}

Ogone.prototype.Language = function(language) {
    if (language == "UK") { this.Field("language", "en_US"); }
    if (language == "NL") { this.Field("language", "nl_NL"); }
}

Ogone.prototype.Params = function(params) {
    this.Field("paramplus", params);
}

Ogone.prototype.Init = function(live) {
    this.form = document.createElement("form");
    this.form.setAttribute("method", this.method);
    if (live == true) {
        this.form.setAttribute("action", this.livepath);
    } else {
        this.form.setAttribute("action", this.path);
    }
    this.form.setAttribute("target", this.target);

    this.Field("TITLE", "");
    this.Field("BGCOLOR", "#F3F3F3");
    this.Field("TXTCOLOR", "#ED9F2C");
    this.Field("TBLBGCOLOR", "#F3F3F3");
    this.Field("TBLTXTCOLOR", "#666666");
    this.Field("BUTTONBGCOLOR", "#ED9F2C");
    this.Field("BUTTONTXTCOLOR", "#FFFFFF");
    this.Field("FONTTYPE", "Century Gothic");
    this.Field("catalogurl", this.url);
    this.Field("homeurl", "NONE");
    this.Field("accepturl", this.url);
    this.Field("declineurl", this.url);
    this.Field("exceptionurl", this.url);
    this.Field("cancelurl", this.url);
    this.Field("backurl", this.url);
    document.body.appendChild(this.form);
}

Ogone.prototype.Field = function(name, value) {
    hiddenField = document.createElement("input");
    hiddenField.setAttribute("type", "hidden");
    hiddenField.setAttribute("name", name);
    hiddenField.setAttribute("value", value);
    this.form.appendChild(hiddenField);
}

Ogone.prototype.Submit = function() {
    showObject(this.target);
    hideObject(this.div);
    this.form.submit();
}
//-->

function SetScore(id, val) {
    objt = document.getElementById(id);
    if (objt) {
        objt.value = val;
    }
    for (i = 0; i < 20; i++) {
        objt = document.getElementById("s_" + id + "_" + i);
        if (objt) {
            objt.style.border = "0px";
        }
    }
    objt = document.getElementById("s_" + id + "_" + val);
    if (objt) {
        objt.style.border = "solid 1px red";
    }
}
//-------------------------------------------------------------------------------------
function SendTranslation(dn, cn, field, langcode, val) {
    if (langcode == "") { langcode = "NL"; }
    up = new UpdateObject();
    up.Callback = function(msg) {
        entries = new Entries();
        entries.FindTranslationEntry(dn, field, langcode, "Translation");
    };
    up.Add("dn", dn);
    up.Add("cn", cn);
    up.Add("adtTranslationVault", field + "-" + langcode + "#" + val);
    up.Send();
}

//---------------------------------------------------------------------------------------
function SetFileUpload() {
    obj = document.form;
    cnt = 0;
    if (obj) {
        for (i = 0; i < obj.elements.length; i++) {
            if (obj.elements[i].tagName == "INPUT") {
                if (obj.elements[i].type == "file") {
                    if (obj.elements[i].value != "") {
                        obj2 = document.getElementById("fil_" + obj.elements[i].name);
                        if (obj2) {
                            obj2.value = cnt;
                            cnt++;
                        }
                    } else {
                        obj2 = document.getElementById("fil_" + obj.elements[i].name);
                        if (obj2) {
                            obj2.value = "";
                            cnt++;
                        }
                    }
                }
            }
        }
    }
}

//-------------------------------------------------------------------------------------------
function AddJavascript(id, script) {
    var headID = document.getElementsByTagName("head")[0];
    var oldScript = document.getElementById(id);
    if (oldScript) {
        headID.removeChild(oldScript);
    }
    var newScript = document.createElement('script');
    newScript.type = 'text/javascript';
    newScript.src = script;
    newScript.id = id;
    headID.appendChild(newScript);
}
//-------------------------------------------------------------------------------------------
function AddHtmlAttribute(id, val) {
    var html = document.getElementsByTagName("html")[0];
    if (html) {
        html.setAttribute(id, val);
    }
}
