var SERVER_DOMAIN = 'nefius.com';
//SERVER_DOMAIN = '127.0.0.1/' + SERVER_DOMAIN;
var SERVER_URL = "http://" + SERVER_DOMAIN + "/";
var ServerBaseURL = "http://" + SERVER_DOMAIN + "/news/";

function trimText(text) {
    if (text) {
        return text.replace(/^\s+|\s+$/g, "");
    } else {
        return text;
    }
}

function showWaiting(element) {
    if (!element) {
        return;
    }
    if (element.innerHTML) {
        element.waitHTML = element.innerHTML;
        var intHeight = element.offsetHeight;
        var intHeight = (intHeight < 16 && intHeight > 8) ? intHeight - 3 : 16;
        element.innerHTML = '<span style="display:inline-block;width:16px;height:' + intHeight + 'px;border:0px;overflow:hidden;"><img src="' + ServerBaseURL + '../apps/base/images/wait16.gif"/></span>'
    } else if (element.value) {
        element.waitValue = element.value;
        element.value = 'waiting...';
    }
}

function hideWaiting(element) {
    if (!element) {
        return;
    }
    if (element.innerHTML) {
        element.innerHTML = element.waitHTML;
    } else if (element.value) {
        element.value = element.waitValue;
    }
}

function createXmlHttpObject() {
    if (window.XMLHttpRequest) {
        // code for IE7+, Firefox, Chrome, Opera, Safari
        return new XMLHttpRequest();
    }
    if (window.ActiveXObject) {
        // code for IE6, IE5
        return new ActiveXObject("Microsoft.XMLHTTP");
    }
    alert("Your browser does not support AJAX!");
    return null;
}

function postURL(uri, postData) {
    var returnObj = new Object();
    var xRequest;
    var retries = 3;
    for (var i = 1; i <= retries; i++) {
        xRequest = createXmlHttpObject();
        //netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead");
        xRequest.open("POST", uri, false);
        xRequest.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
        try {
            xRequest.send(postData);
            break;
        }
        catch (e) {
            if (i == retries) {
                // Failed on 3nd try, bail out
                returnObj.error = e;
                returnObj.responseText = "";
                returnObj.status = 1;
                return returnObj;
            }
        }
    }
    returnObj.error = "";
    returnObj.responseText = xRequest.responseText;

    if (typeof(returnObj.responseText) == "undefined")
        returnObj.responseText = "";
    returnObj.status = xRequest.status;

    return returnObj;
}

function postAsyncURL(uri, postData, onResponse) {
    var xhr = createXmlHttpObject();

    xhr.onreadystatechange = function() {
        if (xhr.readyState == 4) {
            if (xhr.status == 200) {
                if (typeof onResponse == 'function') {
                    var result = {};
                    try {
                        result = eval('(' + xhr.responseText + ')');
                    } catch(e4) {
                        alert('PARSE_ERROR: ' + xhr.responseText);
                        result.error = 'PARSE_ERROR';
                    }
                    onResponse(result);
                }
            }
            else {
                //document.ajax.dyn="Error code " + xhr.status;
                alert('Error code ' + xhr.status);
            }
        }
    };
    xhr.open('POST', uri + (postData ? '?' + postData : ''), true);
    xhr.send(null);
}

function nm_addIzChoice(iz_id, rand_id) {
    var imgAdd = document.getElementById('izz_add_img_' + iz_id + '_' + rand_id);
    imgAdd.oldSrc = imgAdd.src;
    imgAdd.src = ServerBaseURL + 'images/wait16.gif';
    postAsyncURL(ServerBaseURL + 'json_response.php', 'a=acl&id=' + iz_id, function(r) {
        imgAdd.src = imgAdd.oldSrc;
        if (r.error) {
            return;
        }
        document.getElementById('izz_' + iz_id + '_' + rand_id).className = 'izz-tag izz-tag-selected';
        document.getElementById('izz_add_' + iz_id + '_' + rand_id).style.display = 'none';
        document.getElementById('izz_rem_' + iz_id + '_' + rand_id).style.display = 'block';
    });
}

function nm_removeIzChoice(iz_id, rand_id) {
    var imgAdd = document.getElementById('izz_rem_img_' + iz_id + '_' + rand_id);
    imgAdd.oldSrc = imgAdd.src;
    imgAdd.src = ServerBaseURL + 'images/wait16.gif';
    postAsyncURL(ServerBaseURL + 'json_response.php', 'a=rcl&id=' + iz_id, function(r) {
        imgAdd.src = imgAdd.oldSrc;
        if (r.error) {
            return;
        }
        document.getElementById('izz_' + iz_id + '_' + rand_id).className = 'izz-tag izz-tag-unselected';
        document.getElementById('izz_rem_' + iz_id + '_' + rand_id).style.display = 'none';
        document.getElementById('izz_add_' + iz_id + '_' + rand_id).style.display = 'block';
    });
}

function nm_addtoGroup(group_id, iz_id) {
    var url = ServerBaseURL + 'json_response.php';
    var postData = 'a=ag&gid=' + group_id + '&id=' + iz_id;
    var returnPost = postURL(url, postData);
    if (returnPost.error) {
        alert(returnPost.error);
        return false;
    } else {
        return eval('(' + returnPost.responseText + ')');
    }
}
function nm_addIzz(izz_name) {
    var url = ServerBaseURL + 'json_response.php';
    var postData = 'a=ai&n=' + izz_name;
    var returnPost = postURL(url, postData);
    if (returnPost.error) {
        alert(returnPost.error);
        return false;
    } else {
        return true;
    }
}

function nm_addIzzChoiceWithName(izz_name, izz_list) {
    izz_name = izz_name.replace(/^\s+|\s+$/g, "");
    if (!izz_name) {
        return false;
    }
    var url = ServerBaseURL + 'json_response.php';
    var postData = 'a=ancl&n=' + izz_name;
    var returnPost = postURL(url, postData);
    if (returnPost.error) {
        alert(returnPost.error);
        return false;
    } else {
        var returnVal = eval('(' + returnPost.responseText + ')');
        izz_list.innerHTML += returnVal.izz_tag_html;
        return true;
    }
}

function nm_addLinkWithName(from_id, izz_name) {
    var url = ServerBaseURL + 'json_response.php';
    var postData = 'a=aln&fid=' + from_id + '&n=' + izz_name;
    var returnPost = postURL(url, postData);
    if (returnPost.error) {
        alert(returnPost.error);
        return false;
    } else {
        if (!returnPost.responseText) {
            return false;
        }
        var returnVal = eval('(' + returnPost.responseText + ')');
        document.getElementById("add_new_list").innerHTML += returnVal.izz_tag_html;
        return true;
    }
}

function nm_removefromGroup(group_id, iz_id) {
    var url = ServerBaseURL + 'json_response.php';
    var postData = 'a=rg&gid=' + group_id + '&id=' + iz_id;
    var returnPost = postURL(url, postData);
    if (returnPost.error) {
        alert(returnPost.error);
        return false;
    } else {
        return true;
    }
}

/*
 var onPBover = false;
 function getPreviewBox (doc){
 var divPB =  doc.getElementById("divPB");
 if (divPB){
 return divPB;
 } else {
 checkCSS(doc);
 var divTag = doc.createElement("div");
 divTag.id = "divPB";
 divTag.className ="preview-box";
 addListener(divTag,'mouseover',function(e){
 onPBover=true;
 },false);
 addListener(divTag,'mouseout',function(e){
 onPBover=false;
 nm_hideIzzPanel();
 },false);
 doc.body.appendChild(divTag);

 divTag.innerHTML = ' sdf';
 return divTag;
 }
 }


 function nm_hideIzzPanel(){
 clearTimeout(previewTimeoutID);
 setTimeout(function (){
 if (onPBover){
 return;
 }
 var pBox = getPreviewBox(document);
 document.body.removeChild(pBox);
 },
 100);
 }

 var previewTimeoutID = null;
 function nm_showIzzPanel(element){
 clearTimeout(previewTimeoutID);
 previewTimeoutID = setTimeout(function (){
 var pBox = getPreviewBox(document);
 var preview_id ='';
 var child_elements = element.getElementsByTagName("span");
 for (var i = 0; i < child_elements.length; i++) {
 preview_id = child_elements[i].getAttribute("id");
 if ( preview_id == "preview") {
 var spanTag = document.createElement("span");
 spanTag.className ="izz-tag-preview";
 spanTag.innerHTML = child_elements[i].innerHTML;

 pBox.innerHTML ='';
 pBox.appendChild(spanTag);
 pBox.style.top = element.offsetTop+'px';
 pBox.style.left = element.offsetLeft+'px';
 return;
 //break;
 }
 }

 },
 500);
 //if (preview_id){
 //
 //}else{
 //    element.innerHTML +='<span id="preview" class="izz-tag-preview">'+izz_id+'</span>';
 //    }
 }
 */


function getNBIFBox(doc) {
    var divNBIF = doc.getElementById("divNBIF");
    if (divNBIF) {
        return divNBIF;
    } else {
        checkCSS(doc);
        var divTag = doc.createElement("div");
        divTag.id = "divNBIF";
        divTag.className = "nbif";
        doc.body.appendChild(divTag);
        divTag.innerHTML = 'comment frame';
        return divTag;
    }
}

function removeNBIFBox(doc) {
    var divNBIFBox = getNBIFBox(doc);
    doc.body.removeChild(divNBIFBox);
}

function checkCSS(doc) {
    var linkElementID = "NNLink";
    var docLink = doc.getElementById(linkElementID);
    if (!docLink) {
        var fileCss = doc.createElement("link");
        fileCss.setAttribute("rel", "stylesheet");
        fileCss.setAttribute("id", linkElementID);
        fileCss.setAttribute("type", "text/css");
        fileCss.setAttribute("href", ServerBaseURL + "../apps/base/base.css");
        doc.getElementsByTagName("head")[0].appendChild(fileCss);
    }
}

var closeButtonID = 'nbifCloseButton';

function clickNBIFCloseButton(doc) {
    //alert(doc.getElementById(closeButtonID).click());
    fireEvent(doc.getElementById(closeButtonID), 'click');
}

function fireEventx(element, event) {
    return fireEvent(element, event);
}

function fireEvent(element, event) {

    if (document.createEventObject) {
        // dispatch for IE
        var evt = document.createEventObject();
        return element.fireEvent('on' + event, evt)
    }
    else {
        // dispatch for firefox + others
        var evt = document.createEvent("HTMLEvents");
        evt.initEvent(event, true, true); // event type,bubbling,cancelable
        return !element.dispatchEvent(evt);
    }
}

/**Nefius base frame Box
 * requires base.css
 */

function showNBIFBox(doc, url, name, x, y, onCloseFunction) {
    var widthBox = 0;
    var heightBox = 0;

    if (typeof( parent.innerWidth ) == 'number') {
        //Non-IE
        widthBox = parent.innerWidth;
        heightBox = parent.innerHeight;
    } else if (doc.documentElement && ( doc.documentElement.clientWidth || doc.documentElement.clientHeight )) {
        //IE 6+ in 'standards compliant mode'
        widthBox = doc.documentElement.clientWidth;
        heightBox = doc.documentElement.clientHeight;
    } else if (doc.body && ( doc.body.clientWidth || doc.body.clientHeight )) {
        //IE 4 compatible
        widthBox = doc.body.clientWidth;
        heightBox = doc.body.clientHeight;
    }

    if (x == 0) {
        x = x ? x : widthBox - 70
    }
    if (y == 0) {
        y = heightBox - 100
    }
    var intXstart = (widthBox - x - 100) / 2;
    if (intXstart < 0) {
        intXstart = 0;
    }
    var intYstart = (heightBox - y - 100) / 2;
    if (intYstart < 0) {
        intYstart = 0;
    }

    var divNBIFBox = getNBIFBox(doc);
    divNBIFBox.style.left = intXstart + 'px';
    divNBIFBox.style.top = intYstart + 'px';

    var boxHTML = '<div class="outer" style="width:\'' + (x + 33) + 'px\';">'
            + '<div class="body">'
            + '<div class="header">'
            + '<a href="#" id="' + closeButtonID + '"> <img src="' + ServerBaseURL + '../apps/base/images/close.png" style="float:right;border:0px;margin:3px;"></a>'
            + '<span class="name">' + name + '</span>'
            + '</div>'
            + '<iframe id="nbif_frm" class="frame" frameborder=no src="' + url + '"'
            + 'height="' + y + '" width="' + x + '" scrolling="auto"></iframe>'
            + '</div>';
    divNBIFBox.innerHTML = boxHTML;
    addListener(doc.getElementById(closeButtonID), 'click', onCloseFunction, false);
//    doc.getElementById(closeButtonID).addEventListener('click',onCloseFunction,false);

}

// Cross-browser implementation of element.addEventListener()
function addListener(element, type, expression, bubbling) {
    bubbling = bubbling || false;
    if (window.addEventListener) { // Standard
        element.addEventListener(type, expression, bubbling);
        return true;
    } else if (window.attachEvent) { // IE
        element.attachEvent('on' + type, expression);
        return true;
    } else return false;
}

