
// check browser
var str_login_id = '';
var int_guest_id = 0;
var int_hompy_id = 0;
var not_in_frame = 0;

var bodySL = 0, bodyST = 0;
var bodyCW, bodyCH;
function getScrollXY() {
    if( typeof( window.pageYOffset ) == 'number' ) {
        //Netscape compliant
        bodyST = window.pageYOffset;
        bodySL = window.pageXOffset;
    } else if( document.body && ( document.body.scrollLeft || document.body.scrollTop ) ) {
        //DOM compliant
        bodyST = document.body.scrollTop;
        bodySL = document.body.scrollLeft;
    } else if( document.documentElement && ( document.documentElement.scrollLeft || document.documentElement.scrollTop ) ) {
        //IE6 standards compliant mode
        bodyST = document.documentElement.scrollTop;
        bodySL = document.documentElement.scrollLeft;
    }

    if(window.innerWidth) {
	bodyCW=window.innerWidth;
    } else if(document.documentElement&&document.documentElement.clientWidth) {
	bodyCW=document.documentElement.clientWidth;
    } else if(document.body) {
	bodyCW=document.body.clientWidth; //author: meizz
    }

    if(window.innerHeight) {
	bodyCH=window.innerHeight;
    } else if(document.documentElement&&document.documentElement.clientHeight) {
	bodyCH=document.documentElement.clientHeight;
    } else if(document.body) {
	bodyCH=document.body.clientHeight;
    }
}

function chk_browser() {
    if(navigator.appName.indexOf("Microsoft") != -1) // is IE
        return true;
    else
        return false;
}

if(chk_browser())
    window.document.onclick = MouseClick;
else
    window.onclick = MouseClick;


function viewNameUI(e,login_id,hompy_id,guest_id,rtn_url) {
    getScrollXY();
    clearNameUI('parent');

    str_login_id = login_id;
    int_guest_id = guest_id;
    int_hompy_id = hompy_id;

    if(chk_browser()) {
        ui_parent_x = event.x;
        ui_parent_y = event.y;
    } else {
        ui_parent_x = e.pageX;
        ui_parent_y = e.clientY;
    }
    ui_parent_y += bodyST;

    var popMenu = document.getElementById('ui_parent');

    popMenu.style.display = 'inline';

    // duplicate
    // popMenu.style.left = ui_parent_y + "px";
    // popMenu.style.top = ui_parent_y + "px";

    if(ui_parent_x + popMenu.offsetWidth > bodySL + bodyCW) {
        ui_parent_x = bodySL + bodyCW - popMenu.offsetWidth;
    }

    if(ui_parent_x < 0) { ui_parent_x = 0; }

    if(ui_parent_y + popMenu.offsetHeight > bodyST + bodyCH){
        ui_parent_y = bodyST + bodyCH - popMenu.offsetHeight;
    }

    //if(ui_parent_y < 0) {ui_parent_y = 0;}

    ui_child1_x = ui_parent_x + 91;
    ui_child1_y = ui_parent_y + 35;
    /*
       ui_child2_x = ui_parent_x + 91;
       ui_child2_y = ui_parent_y + 58;
       */
    popMenu.style.left = ui_parent_x + "px";
    popMenu.style.top = ui_parent_y + "px";

    if(chk_browser()) {
        /*
           hideTag("iframe",ui_parent);
           */
        hideTag("select",ui_parent);
    }
}

function viewNameUIa(e,login_id,hompy_id,guest_id,rtn_url) {
    getScrollXY();
    clearNameUI('parent');

    str_login_id = login_id;
    int_guest_id = guest_id;
    int_hompy_id = hompy_id;

    if(chk_browser()) {
        ui_parent_x = event.x;
        ui_parent_y = event.y;
    } else {
        ui_parent_x = e.pageX;
        ui_parent_y = e.clientY;
    }
    ui_parent_y += bodyST;

    var popMenu = document.getElementById('ui_parent');

    popMenu.style.display = 'inline';

    // duplicate
    // popMenu.style.left = ui_parent_y + "px";
    // popMenu.style.top = ui_parent_y + "px";

    if(ui_parent_x + popMenu.offsetWidth > bodySL + bodyCW) {
        ui_parent_x = bodySL + bodyCW - popMenu.offsetWidth;
    }

    if(ui_parent_x < 0) { ui_parent_x = 0; }

    if(ui_parent_y + popMenu.offsetHeight > bodyST + bodyCH){
        ui_parent_y = bodyST + bodyCH - popMenu.offsetHeight;
    }

    //if(ui_parent_y < 0) {ui_parent_y = 0;}

    ui_parent_x = ui_parent_x - 20;
    ui_parent_y = ui_parent_y - 20;
    ui_child1_x = ui_parent_x + 91;
    ui_child1_y = ui_parent_y + 35;
    /*
       ui_child2_x = ui_parent_x + 91;
       ui_child2_y = ui_parent_y + 58;
       */
    popMenu.style.left = ui_parent_x + "px";
    popMenu.style.top = ui_parent_y + "px";

    if(chk_browser()) {
        /*
           hideTag("iframe",ui_parent);
           */
        hideTag("select",ui_parent);
    }
}

function viewNameUIb(e,login_id,hompy_id,guest_id,rtn_url) {
    getScrollXY();
    clearNameUI('parent');

    str_login_id = login_id;
    int_guest_id = guest_id;
    int_hompy_id = hompy_id;

    if(chk_browser()) {
        ui_parent_x = event.x;
        ui_parent_y = event.y;
    } else {
        ui_parent_x = e.pageX;
        ui_parent_y = e.clientY;
    }
    ui_parent_y += bodyST;

    var popMenu = document.getElementById('ui_parent');

    popMenu.style.display = 'inline';

    // duplicate
    // popMenu.style.left = ui_parent_y + "px";
    // popMenu.style.top = ui_parent_y + "px";

    if(ui_parent_x + popMenu.offsetWidth > bodySL + bodyCW) {
        ui_parent_x = bodySL + bodyCW - popMenu.offsetWidth;
    }

    if(ui_parent_x < 0) { ui_parent_x = 0; }

    if(ui_parent_y + popMenu.offsetHeight > bodyST + bodyCH){
        ui_parent_y = bodyST + bodyCH - popMenu.offsetHeight;
    }

    //if(ui_parent_y < 0) {ui_parent_y = 0;}

    ui_child1_x = ui_parent_x + 91;
    ui_child1_y = ui_parent_y + 35;
    /*
       ui_child2_x = ui_parent_x + 91;
       ui_child2_y = ui_parent_y + 58;
       */
    ui_parent_x = parseInt(ui_parent_x) + 50;
    ui_parent_y = parseInt(ui_parent_y) + 30;

    /*
       popMenu.style.left = ui_parent_x.toString() + "px";
       popMenu.style.top = ui_parent_y.toString() + "px";
       */
    popMenu.style.left = "200px";
    popMenu.style.top = "400px";

    if(chk_browser()) {
        /*
           hideTag("iframe",ui_parent);
           */
        hideTag("select",ui_parent);
    }
}

function viewNameUIc(e,login_id,hompy_id,guest_id,rtn_url) {
    getScrollXY();
    clearNameUI('parent');

    str_login_id = login_id;
    int_guest_id = guest_id;
    int_hompy_id = hompy_id;

    ui_parent_x = 0;
    ui_parent_y = 0;
    var evt = e || window.event;
    if (evt.pageX || evt.pageY ) {
        ui_parent_x = evt.pageX;
        ui_parent_y = evt.pageY;
    }
    else if (evt.clientX || evt.clientY) {
        ui_parent_x = evt.clientX + bodySL;
        ui_parent_y = evt.clientY + bodyST;
    }

    var popMenu = document.getElementById('ui_parent');

    /*
       if(ui_parent_x + popMenu.offsetWidth > bodySL + bodyCW) {
       ui_parent_x = bodySL + bodyCW - popMenu.offsetWidth;
       }

       if(ui_parent_y + popMenu.offsetHeight > bodyST + bodyCH){
       ui_parent_y = bodyST + bodyCH - popMenu.offsetHeight;
       }
       */

    ui_parent_x = ui_parent_x - 20;
    ui_parent_y = ui_parent_y - 20;
    ui_child1_x = ui_parent_x + 91;
    ui_child1_y = ui_parent_y + 35;
    not_in_frame = 1;
    popMenu.style.left = ui_parent_x + "px";
    popMenu.style.top = ui_parent_y + "px";
    popMenu.style.display = 'inline';

    if(chk_browser()) {
        hideTag("select",ui_parent);
    }
}

function hideTag(tagName,popupObj) {
    var x = cmGetX(popupObj);
    var y = cmGetY(popupObj);
    var w = popupObj.offsetWidth;
    var h = popupObj.offsetHeight;

    var i;
    for(i=0;i<document.all.tags(tagName).length;++i) {
        var obj = document.all.tags(tagName)[i];
        if(!obj || !obj.offsetParent) continue;

        var ox = cmGetX(obj);
        var oy = cmGetY(obj);
        var ow = obj.offsetWidth;
        var oh = obj.offsetHeight;

        if(ox > (x + w) || (ox + ow) < x) continue;
        if(oy > (y + h) || (oy + oh) < y) continue;

        if(obj.style.visibility == "hidden") continue;

        if(!popupObj.overFlag) {
            popupObj.overFlag = new Array();
        }

        popupObj.overFlag[popupObj.overFlag.length] = obj;

        obj.style.visibility = "hidden";
    }
}

function clearNameUI(option) {
    if(option == 'parent') {
        document.getElementById('ui_parent').style.display = 'none';
        document.getElementById('ui_child1').style.display = 'none';
        /*
           document.getElementById('ui_child2').style.display = 'none';
           */
        if(chk_browser()) {
            showControl(ui_parent);
            showControl(ui_child1);
            /*
               showControl(ui_child2);
               */
        }
    } else if(option == 'child') {
        document.getElementById('ui_child1').style.display = 'none';
        /*
           document.getElementById('ui_child2').style.display = 'none';
           */
    }
}

function viewChildNameUI(ui_id) {
    var url;
    clearNameUI('child');
    switch(ui_id) {
        case 'ui_child1':
            chk_obj = document.getElementById(ui_id);
            chk_obj.innerHTML = "讀取中......";
            document.getElementById(ui_id).style.display = 'inline';
            document.getElementById(ui_id).style.left = ui_child1_x + "px";
            document.getElementById(ui_id).style.top = ui_child1_y + "px";
            url = "/miniTag/taglist.php?uid=" + int_hompy_id + "&nif=" + not_in_frame;
            genericAJAX('GET', url, null, function( str ){
                    chk_obj.innerHTML = str;
                    });
            break;
        case 'ui_child2':
            document.getElementById(ui_id).style.display = 'inline';
            document.getElementById(ui_id).style.left = ui_child2_x + "px";
            document.getElementById(ui_id).style.top = ui_child2_y + "px";
            chk_obj = document.getElementById(ui_id);
            break;
    }

    if(chk_browser()) {
        // hideTag("iframe",chk_obj);
        hideTag("select",ui_parent);
    }
}
function viewProfile() {
    var url = "/cp.php?op=aboutMe&uid="+int_hompy_id+"&profile=1";
    window.open(url, '個人資料','menubar=no,scrollbars=yes,width=560,height=665');

    return true;
}


function linkNameUI(key) {

    switch(key) {
        case 'miniWorld':
            if(window.name == "miniWorld")
                this.parent.parent.location = '/frame.php?hompy='+str_login_id;
            else
                window.open('/frame.php?hompy='+str_login_id,'miniWorld','menubar=no,scrollbars=no,width=1000,height=665');
            break;
        case 'Profile':
            viewProfile();
            break;
        case 'addFriend':
            applyFriend(int_hompy_id,int_guest_id);
            break;
        case 'Send':
            checkSendMsg(int_hompy_id,int_guest_id);
            break;
    }
}

function MouseClick(e) {
    current_x = 0;
    current_y = 0;
    var evt = e || window.event;
    if (evt.pageX || evt.pageY ) {
        current_x = evt.pageX;
        current_y = evt.pageY;
    }
    else if (evt.clientX || evt.clientY) {
        current_x = evt.clientX + bodySL;
        current_y = evt.clientY + bodyST;
    }

    if (document.getElementById('ui_parent')) {
        if(document.getElementById('ui_parent').style.display != 'none') {
            if(! (((ui_parent_x - 30) < current_x && current_x < (ui_parent_x + 140)) && ((ui_parent_y-20) < current_y && current_y < (ui_parent_y + 100))) )
                clearNameUI('parent');
        }
    }
}

function showControl(popupObj) {
    if(popupObj.overFlag) {
        var i;
        for(i=0;i<popupObj.overFlag.length;++i)
            popupObj.overFlag[i].style.visibility = "";
    }
    popupObj.overFlag = null;
}

function cmGetX(obj) {
    var x = 0;
    do {
        x += obj.offsetLeft;
        obj = obj.offsetParent;
    } 
    while(obj);
}

function cmGetY(obj) {
    var y = 0;
    do {
        y += obj.offsetTop;
        obj = obj.offsetParent;
    }
    while(obj);
}

function genericAJAX(method, url, poststr, callback) {
    var req;
    if (window.XMLHttpRequest)
        req = new XMLHttpRequest();
    else if (window.ActiveXObject)
        req = new ActiveXObject("Microsoft.XMLHTTP");
    else
        return;
    req.open(method, url);
    req.onreadystatechange = function() {
        if( req.readyState == 4 && req.status == 200 ) {
            callback(req.responseText);
        }
    };
    if( method == "POST" ) {
        req.setRequestHeader('Content-Type',
                'application/x-www-form-urlencoded');
        req.send(poststr);
    } else {
        req.send(null);
    }
}

