
var rpage = "/review_ajax.jsp";
var tMethod = "post";
var pageError = '404';



function login(){
    var temp = window.location.toString().split("/");
    var currentPage = temp[temp.length - 1];
    currentPage = '/' + currentPage.replace("?", "%3f").replace("&", "%26").replace("#", "%23");

    if(temp.indexOf("secim2009", 0) > -1) {
        window.location = "/secim2009/uye/index.jsp?r=" + currentPage;
    } else {
        window.location = "/member/index.jsp?r=" + currentPage;
    }
}

function next_sibling(elem) {
    var x= elem.nextSibling;
    while (x.nodeType != 1) {
        x = x.nextSibling;
    }

    return x;
}

// helpers /////////////////////////////////////////////////////////////////////
function _reportReview(p) {
    var d = next_sibling(next_sibling(next_sibling(next_sibling(p))));
    if(d) {
        if(d.style.display == "block") {
            d.style.display = "none"
        } else {
            d.style.display = "block";
        }
    }
}

function _sendReviewToFriend(p) {
    var d = next_sibling(next_sibling(next_sibling(next_sibling(p))));
    if(d) {
        if(d.style.display == "block") {
            d.style.display = "none"
        } else {
            d.style.display = "block";
        }
    }

}


function _degerlendirmeyeYorumEkle(type, a, visitorName, reviewId) {
    _yorumaYorumEkle(type, a, visitorName, reviewId, null);
}

var dynamicCommentOpen = null;
function _yorumaYorumEkle(type, a, visitorName, reviewId, parentId) {

    if(dynamicCommentOpen) {
        return;
    }

    // find parent node
    var li = a.parentNode;

    var oldHTML;

    if(parentId == null) {
        li = document.getElementById("tartisma-con-" + reviewId);
        oldHTML = '';
        if(li.firstChild.tagName.toLowerCase() == 'ul')
            oldHTML = li.innerHTML;
    }
    else {
        while(li.tagName.toLowerCase() != 'li')
            li = li.parentNode;
        oldHTML = li.innerHTML;
    }

    // set working node
    dynamicCommentOpen = li;

    // backup existing HTML
    li.setAttribute('backup', li.innerHTML);

    // create new entry
    var nd = document.createElement("ul");
    nd.className = "revcomm";


    // get system date
    var currentTime = new Date();
    var month = (currentTime.getMonth() + 1) + "";
    var day = currentTime.getDate() + "";
    var year = currentTime.getFullYear();
    var hours = currentTime.getHours() + "";
    var minutes = currentTime.getMinutes() + "";

    if(hours.length == 1) {
        hours = "0" + hours;
    }

    if(minutes.length == 1) {
        minutes = "0" + minutes;
    }

    if(month.length == 1) {
        month = "0" + month;
    }

    if(day.length == 1) {
        day = "0" + day;
    }

    var date = day + "." + month + "." + year + ", " + hours + ":" + minutes;
        //"05.02.2009, 17:37";


    // generate html for created entry

    var _inner =
        '<li>' +
            '<table class="tartisma-table">' +
                '<tr>' +
                    '<td class="tartisma-resim">' +
                        '<img src="' + userImg45 + '" />' +
                    '</td>' +
                    '<td class="tartisma-icerik">' +
                        '<p class="tartisma-ust">' +
                            '<a class="revusername">' + visitorName + '</a>' +
                            ', ' + userCity + ', ' + date +
                        '</p>' +

                        '<p class="tartisma-orta">' +
                            '<textarea>' +
                            '</textarea>' +
                        '</p>' +

                        '<p class="tartisma-alt">' +
                            "<a onclick=\"_ye('" + type + "', this, " + reviewId + ", " + parentId + ", '" + visitorName + "', '" + date + "');\">" +
                                'Gönder' +
                            '</a>' +
                            ' | ' +
                            '<a class="" onclick="dynamicCommentOpen.innerHTML = dynamicCommentOpen.getAttribute(\'backup\'); dynamicCommentOpen = null;">' +
                                'İptal' +
                            '</a>' +
                        '</p>' +
                    '</td>' +
                '</tr>' +
            '</table>' +
        '</li>'
    ;


//
//
//    _inner =  "<span class='leblue'>" + visitorName + "</span>:";
//    _inner += "<input type='text' />";
//
//    _inner += "(" + date + ")";
//
//    _inner += "<img src='/resimler/ortak/gonder-buton.gif' style='cursor: pointer;' onclick=\"_ye('" + type + "', this, " + reviewId + "," + parentId + ",'" + visitorName + "','" + date + "');\" />" +
//        "<img src='/resimler/ortak/cikis-buton.gif' style='cursor: pointer;' onclick='this.parentNode.parentNode.removeChild(this.parentNode);dynamicCommentOpen = false;' />" ;

    nd.innerHTML = _inner;

    //var _last = li.childNodes[li.childNodes.length - 1];
    //li.insertBefore(nd, _last);

//    _inner += '<ul class="revcomm">' + _inner + '</ul';
//    li.innerHTML = oldHTML + _inner;

    li.innerHTML = '';
    li.innerHTML += oldHTML;
    li.appendChild(nd);

    nd.getElementsByTagName('textarea')[0].focus();

}



function _ye(type, img, reviewId, parentId, visitorName, date) {
    var ed = img.parentNode.parentNode;
    var content = ed.getElementsByTagName("textarea")[0].value;

    if(content.length < 5) {
        alert("lütfen geçerli bir yorum giriniz");
        return;
    }

    var errd = document.createElement("div");
    errd.className = "dynamiccommente";
    errd.innerHTML = "Yorumunuz kaydedilemedi. <img src='/resimler/ortak/ikon/kapat.gif' style='vertical-align:middle;cursor:pointer;' onclick=\"this.parentNode.style.display='none'\"/>";
    ed.parentNode.insertBefore(errd, ed.nextSibling);

    var sd = document.createElement("div");
    sd.className = "dynamiccomments";
    sd.innerHTML = "<span class='leblue'>" + visitorName + "</span>:" +
        content + " (" + date + ")";
    ed.parentNode.insertBefore(sd, errd);

    var wd = document.createElement("div");
    wd.className = "dynamiccommentw";
    wd.innerHTML = "Yorumunuz kaydediliyor; lütfen bekleyiniz...";
    ed.parentNode.insertBefore(wd, sd);

    degerlendirmeyeYorumEkle(img.parentNode, type, reviewId, parentId, content);
}

function _yorumEklendi(p, cover, success) {
    if(success) {
        p.innerHTML = 'Cevapla | Raporla';

        document.body.removeChild(cover);

        dynamicCommentOpen = null

        var ta = p.parentNode.getElementsByTagName('textarea')[0];

        ta.parentNode.innerHTML = ta.value;

//        p = ta.parentNode;
//        var content = ta.innerHTML;
//        p.removeChild(ta);
//        p.innerHTML = content;
    }
    else {
        cover.innerHTML =
            "Başlık eklenemedi. " +
            "<img " +
                "src='/resimler/ortak/ikon/kapat.gif' " +
                "style='vertical-align:middle;cursor:pointer;' " +
                "onclick=\"this.parentNode.style.display='none'; dynamicCommentOpen.innerHTML = dynamicCommentOpen.getAttribute(\'backup\'); dynamicCommentOpen = null;\"/>";
    }
}


////////////////////////////////////////////////////////////////////////////////

//ok
function degerlendirmeyeYorumEkle(p, type, reviewId, commentId, content) {
    
    var workingElem = null;
    {
        var _x = getX(p);
        var _y = getY(p);

        var _w = getWidth(p, true, false);
        var _h = getHeight(p, true, false);


        workingElem = document.createElement('div');
        workingElem.style.position = 'absolute';
//        workingElem.style.textAlign = 'center';
        workingElem.style.backgroundColor = '#ffffff';
        workingElem.innerHTML = 'Başlık ekleniyor. Lütfen bekleyiniz...';


        workingElem.style.width = _w + "px";
        workingElem.style.height = _h + "px";

        workingElem.style.left = _x + "px";
        workingElem.style.top = _y + "px";
        
        workingElem.style.display = "block";

        document.body.appendChild(workingElem);

        _x = 5;
    }

    new Ajax.Request(rpage,
    {
        method:tMethod,
        parameters: {op: "yorum", type: type, rid: reviewId, cid: commentId, content: content},
        onSuccess: function(transport){
            var response = transport.responseText || pageError;
            response = trim(response);
            var result = parseInt(response);

            switch (result) {
                case 1:
                    _yorumEklendi(p, workingElem, true);
                    break;
                case 2:
                    login();
                    break;
                default:
                    _yorumEklendi(p, workingElem, false);
                    break;
            }
        },
        onFailure: function(){
            operationFinished(p, false);
        }
    });

}

function reviewThumbClick(elem, src) {
    var t = elem.parentNode.parentNode.parentNode.parentNode;
    var d = next_sibling(t);
    var i = d.getElementsByTagName("img")[0];
    i.src = src;
}

function editorReview(inp, type, revId) {
    var tb = inp.parentNode.parentNode.parentNode;

    var sls = tb.getElementsByTagName("select");
    var trgr, expgr, detgr;
    for(var i = 0; i < sls.length; i++) {
        var sl = sls[i];
        var att = sl.getAttribute("name");
        var val = sl.options[sl.selectedIndex].value;

        if(att == "turkce") {
            trgr = val;
        } else if(att == "aktarim") {
            expgr = val;
        } else if(att == "detaylandirma") {
            detgr = val;
        }
    }


    new Ajax.Request(rpage,
    {
        method:tMethod,
        parameters: {op: 'editor', type: type, rid: revId, tr: trgr, exp: expgr, dt: detgr
        },
        onSuccess: function(transport){
            var response = transport.responseText || pageError;
            response = trim(response);
            var result = parseInt(response);

            switch (result) {
                case 1:
                    alert("Kaydedildi; teşekkürler.");
                    break;
                case 2:
                    login();
                    break;
                default:
                    alert("Kaydedilemedi; lütfen tekrar deneyin.");
                    break;
            }
        },
        onFailure: function(){
            alert("Kaydedilemedi; lütfen tekrar deneyin.");
        }
    });
    
}

//ok
function rateReview(a, type, reviewId, grade) {
    a.blur();
    var p = a.parentNode.parentNode.parentNode.parentNode;

    cover(p);

    new Ajax.Request(rpage,
    {
        method:tMethod,
        parameters: {op: 'puanla', type: type, rid: reviewId, grade: grade
        },
        onSuccess: function(transport){
            var response = transport.responseText || pageError;
            response = trim(response);
            var result = parseInt(response);

            switch (result) {
                case 1:
                    operationFinished(p, true);
                    userRateOk(p, grade);
                    break;
                case 2:
                    login();
                    break;
                default:
                    operationFinished(p, false);
                    break;
            }

        },
        onFailure: function(){
            operationFinished(p, false);
        }
    });
}

function userRateOk(t, grade) {
    var tds = t.getElementsByTagName("td");
    for(var i = 0; i < tds.length; i++) {
        var td = tds[i];

        if(td.style.backgroundColor) {
            if(td.className == "rate5") {
                td.style.backgroundColor = "#CAE7EE";
            } else if(td.className == "rate4") {
                td.style.backgroundColor = "#D4ECF2";
            } else if(td.className == "rate3") {
                td.style.backgroundColor = "#DFEFF2";
            } else if(td.className == "rate2") {
                td.style.backgroundColor = "#E9F1F2";
            } else {
                td.style.backgroundColor = "#ECF2F2";
            }
        }

        if(td.className == "rate" + grade) {
            td.style.backgroundColor = "#FFAE00";
        }
    }

}

//ok
function sendReviewToFriend(img, type, reviewId) {
    var pd = img.parentNode.parentNode;

    var sender = getElementsByClassName("stfr_n", "input", pd)[0].value;
    var to = getElementsByClassName("stfr_e", "input", pd)[0].value;
    var subject = getElementsByClassName("stfr_s", "input", pd)[0].value;
    var content = getElementsByClassName("stfr_m", "textarea", pd)[0].value;

    if((sender == null || sender == "") || ((to == null || to == ""))) {
        alert("Lütfen isminizi ve arkadaşınızın e-posta adresini giriniz");
        return;
    }

    pd.style.display = "none";

    var tpd = pd.parentNode;
    var p = getElementsByClassName("sendtofr", "p", tpd)[0];


    cover(p);

    new Ajax.Request(rpage,
    {
        method:tMethod,
        parameters: {op: "tavsiye", type: type, rid: reviewId, sender: sender, to: to, subject: subject, content: content},
        onSuccess: function(transport){
            var response = transport.responseText || pageError;
            response = trim(response);
            var result = parseInt(response);

            switch (result) {
                case 1:
                    operationFinished(p, true);
                    break;
                case 2:
                    login();
                    break;
                default:
                    operationFinished(p, false);
                    break;
            }
        },
        onFailure: function(){
            operationFinished(p, false);
        }
    });
    
}

//ok
function addReviewerToFriends(p, friendId) {
    cover(p);

    new Ajax.Request(rpage,
    {
        method:tMethod,
        parameters: {op: "ahbap", buddy: friendId},
        onSuccess: function(transport){
            var response = transport.responseText || pageError;
            response = trim(response);
            var result = parseInt(response);

            switch (result) {
                case 1:
                    operationFinished(p, true);
                    break;
                case 2:
                    login();
                    break;
                case 4:
                    operationFinished(p, true);
                    break;
                default:
                    operationFinished(p, false);
                    break;
            }
        },
        onFailure: function(){
            operationFinished(p, false);
        }
    });

}

//ok
function addReviewToFavourites(p, type, reviewId) {
    cover(p);

    new Ajax.Request(rpage,
    {
        method:tMethod,
        parameters: {op: "favori", type: type, rid: reviewId},
        onSuccess: function(transport){
            var response = transport.responseText || pageError;
            response = trim(response);
            var result = parseInt(response);

            switch (result) {
                case 1:
                    operationFinished(p, true);
                    break;
                case 2:
                    login();
                    break;
                case 4:
                    operationFinished(p, false);
                    break;
                default:
                    operationFinished(p, false);
                    break;
            }
        },
        onFailure: function(){
            operationFinished(p, false);
        }
    });

}

//ok
function reportReview(img, type, reviewId) {
    var pd = img.parentNode.parentNode;

    var ls = pd.getElementsByTagName("li");

    var reasonId = null;
    for(var i = 0; i < ls.length; i++) {
        var li = ls[i];
        var rb = li.firstChild;
        
        if(rb.checked) {
            reasonId = rb.value;
            break;
        }
    }

    if(reasonId == null) {
        alert("Lütfen bir raporlama gerekçesi seçiniz");
        return;
    }

    var content = pd.getElementsByTagName("textarea")[0].value;

    pd.style.display = "none";

    var tpd = pd.parentNode;
    var p = getElementsByClassName("report", "p", tpd)[0];


    cover(p);

    new Ajax.Request(rpage,
    {
        method:tMethod,
        parameters: {op: "d_raporla", type: type, rid: reviewId, reason: reasonId, content: content},
        onSuccess: function(transport){
            var response = transport.responseText || pageError;
            response = trim(response);
            var result = parseInt(response);

            switch (result) {
                case 1:
                    operationFinished(p, true);
                    break;
                case 2:
                    login();
                    break;
                default:
                    operationFinished(p, false);
                    break;
            }
        },
        onFailure: function(){
            operationFinished(p, false);
        }
    });
    
}

//ok
function reportComment(p, type, commentId, reasonId, content) {
    cover(p);

    new Ajax.Request(rpage,
    {
        method:tMethod,
        parameters: {op: "y_raporla", type: type, cid: commentId, reason: reasonId, content: content},
        onSuccess: function(transport){
            var response = transport.responseText || pageError;
            response = trim(response);
            var result = parseInt(response);

            switch (result) {
                case 1:
                    operationFinished(p, true);
                    break;
                case 2:
                    login();
                    break;
                default:
                    operationFinished(p, false);
                    break;
            }
        },
        onFailure: function(){
            operationFinished(p, false);
        }
    });

}

function cover(existing) {
    var workingElem = next_sibling(existing);
    
    if(! workingElem ) {
        alert("no such cover !");
        return;
    }

    var _x = getX(existing);
    var _y = getY(existing);

    var _w = getWidth(existing, true, false);
    workingElem.style.width = _w + "px";

    workingElem.style.left = _x + "px";
    workingElem.style.top = _y + "px";
    workingElem.style.display = "block";
}

function operationFinished(orig, success) {
    var workingElem = next_sibling(orig);
    var successElem = next_sibling(workingElem);
    var errorElem = next_sibling(successElem);

    var cover = successElem;
    if(! success) {
        cover = errorElem;
    }

    workingElem.style.display = "none";

    var _x = getX(orig);
    var _y = getY(orig);

    var _w = getWidth(orig, true, false);
    cover.style.width = _w + "px";

    cover.style.left = _x + "px";
    cover.style.top = _y + "px";
    cover.style.display = "block";

}


function tdAClick(a) {
    var d = a.parentNode.parentNode.parentNode.parentNode.parentNode;
    d.style.display = "none";
}


function showNetwork(div) {
    document.getElementById('nw' + div.id.substring(1)).style.visibility = 'visible';
}

function hideNetwork(div) {
    document.getElementById('nw' + div.id.substring(1)).style.visibility = 'hidden';
}