var addonReq = new Array();
var buzztimer = new Array();
var adminback = '';

function showloader(n) {
    if(!getObject(n)) return;
    $(getObject(n)).fadeIn('fast');
}
function charcounter(srcobj,trgname,max) {
    if(!getObject(trgname)) return;
    if(!srcobj) return;
    if(max!==undefined) {
        if(srcobj.value.length>max) {
            getObject(trgname).innerHTML = '<span style="background:darkred; color:white;">'+srcobj.value.length+'</span>';
            return;
        }
    }
    getObject(trgname).innerHTML = srcobj.value.length;
}
function demofilter_docheckall(form,objname,onoff) {
    objname = objname.replace('[]','');
    for(i = 0; i < form.elements.length; i++) {
        if(form.elements[i].nodeName!='INPUT') continue;
        if((form.elements[i].name.indexOf(objname)) == -1) continue;
        form.elements[i].checked = onoff;
    }
}
function table_checkall(formobj,onoff) {
    if(!formobj) return;
    for(i=0; i<formobj.elements.length; i++) {
        if(formobj.elements[i].name.indexOf('check_')==-1) continue;
        formobj.elements[i].checked = onoff;
    }
    table_checksynchronize(formobj);
}
function table_checksynchronize(formobj) {
    var c=0; nc=0; t=0;
    for(i=0; i<formobj.elements.length; i++) {
        if(formobj.elements[i].name.indexOf('check_')==-1) continue;
        t++;
        if(formobj.elements[i].checked) c++;
        else nc++;
    }
    formobj.elements['checkall'].checked = (nc==0 && t>0);
    
    var obj = getObject(formobj.name+'_selectedspan');
    if(!obj) return;
    if(c==0) obj.innerHTML = '';
    else obj.innerHTML = '(Selected: <b>'+c+'</b>)';
}
function doadminback() {
    if(adminback=='') document.location.href='/pages/admin/dashboard';
    else {
        var tmp = adminback.split('(');
        tmp[1] = tmp[1].replace(')','');
        while(tmp[1].indexOf('\'')!=-1) tmp[1] = tmp[1].replace('\'','');
        while(tmp[1].indexOf('"')!=-1) tmp[1] = tmp[1].replace('"','');
        try{window[tmp[0]](tmp[1]);} catch(e){}
    }
}
function getajaxlist(type,div,callback,callback_param,text,input_id) {
    getObject(div).style.display='';
    var params = '';
    params += 'type='+type;
    params += '&text='+text;
    params += '&div='+div;
    params += '&callback='+callback;
    params += '&callback_param='+callback_param;
    params += '&input_id='+input_id;
    getaddon('/pages/@suggest',params,div);
}
function doadminmemberlogin(p) {
    if(p===undefined || p=='') return;
    if(!document.adminmemberloginform.adminmemberlogin) return;
    var member = document.adminmemberloginform.adminmemberlogin.value;
    getaddon('/pages/register','doadminmemberlogin=1&member='+member,'spacerdiv','doadminmemberlogin_callback');    
}
function doadminmemberlogin_callback(status) {
    if(callbackerror(status)) return;
    if(!parent) return;
    parent.admin_show('website');
    parent.admin_website.location.reload();
}
function getaddon(url,parameters,showdiv,callback) {
    if(addonReq[showdiv]) {
        try {addonReq[showdiv].abort();}
        catch (err) {}
    }
    addonReq[showdiv] = null;
    addonReq[showdiv] = getXMLDoc();
    if(getObject('icon_processing'+showdiv)) getObject('icon_processing'+showdiv).style.visibility = 'visible';
    addonReq[showdiv].open("POST",url,true);
    addonReq[showdiv].setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    addonReq[showdiv].setRequestHeader("Content-length", parameters.length);
    addonReq[showdiv].setRequestHeader("Connection", "close");
    addonReq[showdiv].onreadystatechange = function() {
        if(addonReq[showdiv]) {
            if(addonReq[showdiv].readyState==4 && addonReq[showdiv].status==200) {
                var nodename = getObject(showdiv).nodeName;
                var response = addonReq[showdiv].responseText.split('-=-=-');
                if(nodename=="DIV") {
                    getObject(showdiv).innerHTML = "<div id=icon_processing"+showdiv+" style='position:relative; visibility:hidden; text-align:center;'><div style='position:absolute; height:100%; width:100%; text-align:center;'><center><table cellpadding=0 cellspacing=0><tr><td width=40 height=40 style=\"background:url('/images/icon_processing_overlay.png') top left no-repeat;\" align=center valign=center><img src='/images/icon_processing.gif'></td></tr></table></center></div></div>";
                    getObject(showdiv).innerHTML += response[0];
                } else if(nodename=="INPUT") {
                    getObject(showdiv).value = response[0];
                } else if(nodename=="TEXTAREA") {
                    getObject(showdiv).value = response[0];
                } else if(nodename=="IMAGE") {
                    getObject(showdiv).src = response[0];
                } else if(nodename=="SPAN") { //no icon
                    getObject(showdiv).innerHTML = response[0];
                } else if(nodename=="IMG") {
                    getObject(showdiv).src = response[0];
                }
                if(window[callback]) {                    
                    window[callback](response[1]);
                }
            }
        }
    }
    addonReq[showdiv].send(parameters);
}
function gototop() {
    scroll(0,0);
}
function wrapformdata(form) {
    if(!form) return '';
    var params = '';
    for(i=0; i<form.elements.length; i++) {
        var obj = form.elements[i];
        if(obj.nodeName=='FIELDSET') continue;
        var name = (obj.type=='radio') ? obj.id : obj.name;
        var value = (obj.type=='checkbox' || obj.type=='radio') ? obj.checked : obj.value;
        if(name=='') continue;
        value = value+'';
        value = encodeURIComponent(value);
        params += '&'+name+'='+value;
    }
    return params;
}
function getXMLDoc() {
    if(window.XMLHttpRequest) {
        return new XMLHttpRequest();
    } else if (window.ActiveXObject) {
        return new ActiveXObject("Microsoft.XMLHTTP");
    }
}
function getObject(elementID) {
    if (document.getElementById)
        return document.getElementById(elementID);
    else if (document.layers)
        return document.layers[elementID];
    else if (document.all)
        return document.all[elementID];
}
function buzz(obj,clear) {
    if(obj===undefined) return;
    if(clear===undefined) clear = false;
    if(buzztimer[obj.name]) window.clearTimeout(buzztimer[obj.name]);
    if(buzztimer[obj.id]) window.clearTimeout(buzztimer[obj.id]);
    obj.style.background = '#CC4444';
    obj.style.color = 'white';
    var tmpname = (obj.name=='') ? obj.id : obj.name;
    buzztimer[tmpname] = setTimeout(function() {
        if(obj.nodeName=='LABEL') obj.style.background = 'white';
        else if(obj.nodeName=='DIV') obj.style.background = '';
        else obj.style.background = '';
        obj.style.color='';
        if(obj.value && clear) obj.value='';
        buzztimer[tmpname] = null;
    },3000);
}
function callbackerror(status) {
    if(status===undefined) return false;
    status = status.split('###');
    if(status[0]=='ERR0') return true; /*message is shown*/
    if(status[0]=='ERR1') {
        //if(!getObject(status[1])) alert(status[1]);
        if(getObject(status[1]).focus && !getObject(status[1]).disabled) getObject(status[1]).focus();
        buzz(getObject(status[1]));
        return true;
    }
    if(status[0]=='RELOAD') {window.location.href=window.location.href; return true;}
    return false;
}
function hl(on,obj,back) {
    if(!obj) return;
    if(back===undefined || back=='') back = 'white';
    obj.style.background = (on==1) ? '#f0f0f0' : back; //E9EBF2
}

function surfto(url) {
    document.location.href=url;
}
function number_format(number, decimals, dec_point, thousands_sep) {
    var n = number, c = isNaN(decimals = Math.abs(decimals)) ? 2 : decimals;
    var d = dec_point == undefined ? "." : dec_point;
    var t = thousands_sep == undefined ? "," : thousands_sep, s = n < 0 ? "-" : "";
    var i = parseInt(n = Math.abs(+n || 0).toFixed(c)) + "", j = (j = i.length) > 3 ? j % 3 : 0; 
    return s + (j ? i.substr(0, j) + t : "") + i.substr(j).replace(/(\d{3})(?=\d)/g, "$1" + t) + (c ? d + Math.abs(n - i).toFixed(c).slice(2) : "");
}
