var tooltipTimeout = 0
function addOverlay() {
    var w = $('#pageContainer').width()
    var h = $('#pageContainer').height()
    var o = $('#overlay')
    if (o.width() != w) {
        o.width(w).height(h)
    }
    o.css('display', 'block')
}
function removeOverlay() {
    $('#overlay').css('display', 'none')
}

function showRegForm() {
    var w = $('#container').width()
    var d = $('#hiddenDiv')
    gaTrack('/register/')
    d.load("/doms.php?f=register", {}, function() {
        addOverlay()
        d
            .css({
                left: (w-315)/2,
                top: 145,
                width: 315,
                height: 275
                })
            .monoShow("slow")
        $('#reg_mail').focus()
    })
    return false
}

function hideHiddenDiv() {
    var d = $('#hiddenDiv')
    d.fadeOut("normal", removeOverlay)
}
function closeRegForm() {
    hideError()
    hideHiddenDiv()
    return false
}
function closeAddForm() {
    closeRegForm()
    return false
}

function showError(text) {
    var e = $('#errors')
    e.text(text)
    e.css('visibility', 'visible')
}

function hideError() {
    var e = $('#errors')
    e.css('visibility', 'hidden')
}

function sendRegData() {
    hideError()
    var user = $('#reg_user').val()
    var mail = $('#reg_mail').val()
    var pass = $('#reg_pass').val()
    var confpass = $('#reg_confpass').val()
    var boya = $('#boya_check')[0].checked == true ? 1 : 0
    var boya_user = $('#boya_user').val()
    var boya_pass = $('#boya_pass').val()
    var captcha = $('#captcha').val()
    
    if (pass != confpass) {
        showError('passwords do not match')
        return false
    }
    $.post("/register.php",{
             user: user,
             mail: mail,
             pass: pass,
             boya: boya,
             boya_user: boya_user,
             boya_pass: boya_pass,
             captcha: captcha
           }, function(xml) {
            handleRegResponse(xml)
            }
           )
    return false
}
function handleRegResponse(xml) {
    var status = $('status', xml).text()
    if (status == "0") {
        showError($('error', xml).text())
    } else if (status == "1") {
        $('#hiddenDiv').load("/doms.php?f=regDone", {}, function() {
            $('#hiddenDiv').css('height', '220px')
        })
        }
        gaTrack('/register-done/')
}

function sendLogin() {
    var mail = $('#log_mail').val()
    var pass = $('#log_pass').val()
    $.post("/login.php",{
             mail: mail,
             pass: pass
           }, function(xml) {
            handleLoginResponse(xml)
            }
           )
    gaTrack('/login/')
    return false
}

function handleLoginResponse(xml) {
    var status = $('status', xml).text()
        if (status == "0") {
            var pos = {
                top: $('#log_pass').offset().top - 33,
                left: $('#log_pass').offset().left - 66
            }
            showTooltip($('msg', xml).text(), pos)
            hideTooltip(2000)
        } else if (status == "1") {
            applyLoggedIn($('email', xml).text())
        }
}

function applyLoggedIn(email) {
    monoConfig.userLogedIn = true
    $('#loginBlock').html("hey there <b>" + email + ", <a href=\"/logout.php\">sign out</a></b>")
    refreshArtistsList()
}

function builtArtistTable(xml) {
    var artist
    var table = ""
    var num = 0
    $('artist', xml).each( function(id) {
        num++
        artist = $('artist', xml).get(id)
        table += '<div class="r' + (id % 2 + 1)+ '">' + 
                 '<div class="artist">' + $('name', artist).text();
                 if ($('myspace', artist).text() != '') {
                    table +='<a href="http://www.myspace.com/' + $('myspace', artist).text() + '" class="myspace" target="_blank"><img src="/static/images/blank.gif" alt="MySpace" /></a>';
                 }
                 table += '</div><div class="stars"><div class="s'+ $('stars', artist).text() +'">&nbsp;</div></div>' + 
                 '<div class="price">' + $('price', artist).text() + '₪</div>' + 
                 '<div class="votes">' + $('votes', artist).text() + ' votes</div>'
                 if ($('type', artist).text() == 'add') {
                    table += '<div class="icon"><div class="plus" onclick="return addVote('+ $('id', artist).text() +', this)">&nbsp;</div></div>' +
                             '<div class="text"><a href="#" onclick="return addVote('+ $('id', artist).text() +', this)">add</a></div>'
                 } else {
                    table += '<div class="icon"><div class="v" onclick="return editVote('+ $('id', artist).text() +', this)">&nbsp;</div></div>' +
                             '<div class="text"><a href="#" onclick="return editVote('+ $('id', artist).text() +', this)">change</a> / <a href="#" onclick="return removeVote('+ $('id', artist).text() +')">remove</a></div>'
                 }
        table += '</div>'
    })
    if (num == 0) {
        if ($('#search_box').val() != '') {
            table += '<div class="tableError">there is nothing like that here.<br />feel like <a href="#" onclick="return showNewArtistForm()">adding an artist</a>?</div>'
        } else if (monoConfig.currentVoteType == 'user') {
            if (monoConfig.currentList == 'hot') {
                table += '<div class="tableError">seems like you have not voted for any of our hot artists.<br />why not vote for one of them?</div>'
            } else {
                table += '<div class="tableError">seems like you have not voted yet.<br />why not vote for someone?</div'
            }
        }
    }
    var total = parseInt($('total', xml).text())
    var prev = monoConfig.currentPage - 1
    var cur  = monoConfig.currentPage
    var next = monoConfig.currentPage + 1
    var last = Math.ceil(total / 10)
    if (prev < 1) {
        prev = 1
    }
    if (next > last) {
        next = last
    }
    if (total == 0) {
        cur = 0
    }
    table += '<div id="tableFooter">' +
                    '<span class="left"><a href="#" onclick="return showNewArtistForm()">add new artist</a></span>' +
                    '<span class="right"><a href="#" onclick="return changePage(1)">first</a> | <a href="#" onclick="return changePage('+ prev +')">previous</a> | '+ cur + '/'+ last +' | <a href="#" onclick="return changePage('+ next +')">next</a> | <a href="#"  onclick="return changePage('+ last +')">last</a></span>' + 
             '</div>'
    $('#tableContainer').html(table)
}

function getRegisterForm() {

}

function changeListType(type) {
    $('#search_box').val('')
    monoConfig.currentPage = 1
    monoConfig.currentList = type
    refreshArtistsList()
    return false
}

function changeOrder(order) {
    if (order != 'rate' && order != 'price' && order != 'votes' && order != 'date') {
        order = 'name'
    }
    if (monoConfig.currentOrder != order || $('#search_box').val() != '') {
        $('#search_box').val('')
        monoConfig.currentOrder = order
        monoConfig.currentPage = 1
        refreshArtistsList()
    }
    return false
}

function changeVotesType(type) {
    $('#search_box').val('')
    monoConfig.currentPage = 1
    if (type == 'user') {
        monoConfig.currentVoteType = type
    } else {
        monoConfig.currentVoteType = null
    }
    refreshArtistsList()
    return false
}

function markListFilters() {
    $('#sortBlock a.bold').removeClass('bold')
    
    var order_ids = {'rate' : 'sort_rate', 'price' : 'sort_price', 'votes' : 'sort_votes', 'name' : 'sort_name', 'date': 'sort_date'}
    $('#' + order_ids[monoConfig.currentOrder]).addClass('bold')
    
    if (monoConfig.currentList == 'hot') {
        $('a.left_inactive').removeClass('left_inactive').addClass('left_active')
        $('a.right_active').removeClass('right_active').addClass('right_inactive')
    } else {
        $('a.left_active').removeClass('left_active').addClass('left_inactive')
        $('a.right_inactive').removeClass('right_inactive').addClass('right_active')
    }
    
    if (monoConfig.currentVoteType == 'user') {
        $('#votes_user').addClass('bold')
    } else {
        $('#votes_all').addClass('bold')
    }
}

function refreshArtistsList() {
    markListFilters()
    if ($('#search_box').val().length < 3) {
        $('#search_box').val('')
    }
    var vars = {
        t:monoConfig.currentList,
        o:monoConfig.currentOrder,
        u:monoConfig.currentVoteType,
        p:monoConfig.currentPage,
        s:$('#search_box').val()
    }
    if ($('#search_box').val() != '') {
        gaTrack('/search/'+ $('#search_box').val() + '/')
    } else if (monoConfig.currentList == 'hot') {
        gaTrack('/our-pick/')
    } else if (monoConfig.currentList == 'all') {
        if (monoConfig.currentPage > 1) {
            gaTrack('/all-artists/' + monoConfig.currentPage + '/')
        } else {
            gaTrack('/all-artists/')
        }
    }
    $.get("/artists.php", vars,
            function(xml) {
                builtArtistTable(xml)
            }
           )
    return false
}
function searchArtists() {
    var s = $('#search_box').val()
    if (s.trim().length < 3) {
        var pos = {
            top: $('#search_box').offset().top - 35,
            left: $('#search_box').offset().left - 18
        }
        showTooltip('please type at least 3 characters', pos)
        hideTooltip(1500)
    } else {
        monoConfig.currentList = 'all'
        monoConfig.currentOrder = 'name'
        monoConfig.currentVoteType = null
        monoConfig.currentPage = 1
        refreshArtistsList({s : $('#search_box').val()})
    }
    return false
}
function changePage(p) {
    p = parseInt(p)
    if (p < 1) {
        p = 1
    }
    monoConfig.currentPage = p
    refreshArtistsList()
    return false
}

function validatePrice(e) {
    if (e.value >= 50 && e.value <= 350) {
        e.defaultValue = e.value
    } else {
        e.value = e.defaultValue
    }
}

function editVote(row, obj) {
    $('#hiddenRow').load("/doms.php?f=editVote&artistid=" + row, {}, 
        function() {
            $('#vote_stars').rate()
            addOverlay()
            $('#hiddenRow')
                .css({
                    'top': $(obj.parentNode.parentNode).position().top,
                    'left': $(obj.parentNode.parentNode).position().left
                })
                .monoShow()
        }
    )
    return false
}

function addVote(row, obj) {
    if (!monoConfig.userLogedIn) {
        showRegForm()
        return false
    }
    $('#hiddenRow').load("/doms.php?f=addVote&artistid=" + row, {},
        function() {
            $('#vote_stars').rate()
            addOverlay()
            $('#hiddenRow')
                .css({
                    'top': $(obj.parentNode.parentNode).position().top,
                    'left': $(obj.parentNode.parentNode).position().left})
                .show()
        }
    )
    return false
}
function removeVote(row) {
    if (!monoConfig.userLogedIn) {
        showRegForm()
        return false
    }
    $.post("/remove.php",{
             artistid: row
           }, function(xml) {
            finishEditRow()
            }
           )
    return false
}
function updateVote(row) {
    var price = $('#vote_price').val()
    var stars = $('#vote_stars').attr('rel')
    $.post("/vote.php",{
             price: price,
             stars: stars,
             artistid: row
           }, function(xml) {
            finishEditRow()
            }
           )
    return false
}
function finishEditRow() {
    refreshArtistsList()
    hideEditRow()
    return false
}
function hideEditRow() {
    $('#hiddenRow').css('display', 'none')
    removeOverlay()
    return false
}
function showNewArtistForm() {
    if (!monoConfig.userLogedIn) {
        showRegForm()
        return false
    }
    var w = $('#container').width()
    var d = $('#hiddenDiv')
    d.load("/doms.php?f=addArtist", {}, function() {
        $('#add_stars').rate()
        addOverlay()
        d
            .css({
                left: (w-260)/2,
                top: 145,
                width: 260,
                height: 198})
            .monoShow("slow", function() {
        $('#add_name').focus()
        })
    })
    gaTrack('/add-new-artist/')
    return false
}
function addNewArtist() {
    var name = $('#add_name').val()
    var price = $('#add_price').val()
    var stars = $('#add_stars').attr('rel')
    hideError()
    $.post("/addartist.php", {
            name: name,
            price: price,
            stars: stars
        }, function(xml) {
            handleNewArtistResponse(xml)
        }
    )
}
function handleNewArtistResponse(xml) {
    var status = $('status', xml).text()
    if (status == "-1") {
        showError($('error', xml).text())
    } else if (status == "0") {
        showError('we don\'t know this artist')
        showTooltip($('name', xml).text() + ' ?', {top: $('#add_name').offset().top - 31, left: $('#add_name').offset().left - 51})
        hideTooltip(2000)
    } else if (status == "1") {
        $('#hiddenDiv').html('<div id="addArtist"><div class="afterResponse"><div id="errors">&nbsp;</div><h1 class="title">thanks!</h1>' + 
                             '<div class="text">actually, `' + $('artist', xml).text() + '` is already on the list.<br />' +
                             'we have added your vote.</div>' +
                             '<div class="center buttons"><input type="image" class="button_add_another" src="/static/images/blank.gif" onclick="showNewArtistForm()" /> &nbsp; <input type="image" class="button_close" src="/static/images/blank.gif" onclick="closeAddForm()" /> </div></div></div>')
        refreshArtistsList()
    } else if (status == "2") {
        $('#hiddenDiv').html('<div id="addArtist"><div class="afterResponse"><div id="errors">&nbsp;</div><h1 class="title">thanks!</h1>' + 
                             '<div class="text">you\'ve added \'' + $('artist', xml).text() + '\' to the list.<br />' +
                             'would you like to add another artist?</div>' +
                             '<div class="center buttons"><input type="image" class="button_add_another" src="/static/images/blank.gif" onclick="showNewArtistForm()" /> &nbsp; <input type="image" class="button_close" src="/static/images/blank.gif" onclick="closeAddForm()" /> </div></div></div>')
        refreshArtistsList()
    }
}
function showConfirm() {
    var w = $('#container').width()
    gaTrack('/register-confirmation/')
    if (monoConfig.confirm == true) {
        $('#hiddenDiv')
            .html('<div id="register"><div class="afterResponse">' +
                  '<div class="errors">&nbsp;</div>' +
                  '<h1 class="title">thanks!</h1>' +
                  '<div class="text">' +
                  'your confirmation was successful.<br />' +
                  'you can now log in to monocrave and start voting for your favourite artists.<br />' +
                  '</div>' +
                  '<div class="center buttons"><input type="image" class="button_ok" src="/static/images/blank.gif" onclick="window.location = window.location.protocol + \'//\' + window.location.hostname + \'/\'" /></div></div></div>' +
                  '')
                
    } else {
        $('#hiddenDiv')
            .html('<div id="register"><div class="failureResponse">' +
                  '<div class="errors">&nbsp;</div>' +
                  '<h1 class="title">confirmation failed</h1>' +
                  '<div class="text">' +
                  'please go back to your mail and copy the link to your browser.' +
                  'if you still get this error, please check whether your account is already confirmed.' +
                  '</div>' +
                  '<div class="center buttons"><input type="image" class="button_ok" src="/static/images/blank.gif" onclick="window.location = window.location.protocol + \'//\' + window.location.hostname + \'/\'" /></div></div></div>' +
                  '')
    }
    addOverlay()
    $('#hiddenDiv')
        .css({
            left: (w-315)/2,
            top: 145,
            width: 315,
            height: 220})
        .monoShow("slow")
}
function showTooltip(txt, pos) {
    $('#toolTip').hide()
    $('#toolTip .text').html('')
    clearTimeout(tooltipTimeout)
    
    $('#toolTip .text').html(txt)
    $('#toolTip')
        .css({visibility: 'visible'})
        .css(pos)
        .monoShow()
}
function hideTooltip(t) {
    tooltipTimeout = setTimeout(function(){
        $('#toolTip').slideUp('fast', function() {
            $('#toolTip .text').html('')
        })
    }, t)
}
function help(lang) {
    var w = $('#container').width()
    var h = $('#container').height()
    var d = $('#hiddenDiv')
    var url = ""
    if (typeof(lang) != undefined && lang == 'he') {
        gaTrack('/help-he/')
        url = "/doms.php?f=help&l=he"
    } else {
        gaTrack('/help/')
        url = "/doms.php?f=help"
    }
    d.load(url, {}, function() {
        addOverlay()
        d
            .css({
                left: (w-522)/2,
                top: 70,
                width: 544,
                height: 'auto',
                fontSize: 11
                })
            .monoShow()
    })
    return false
}
function showSplash() {
    var w = $('#container').width()
    var d = $('#hiddenDiv')
    $.ajax({
        type: "POST",
        url: "/doms.php?f=splash",
        async: false,
        success: function(response) {
            if (response != "") {
                addOverlay()
                gaTrack('/splash/jose/')
                d
                    .addClass('splash')
                    .css({
                        left: (w-396)/2
                    })
                    .append(response)
                    .show()
            }
        }
    })
}
function hideSplash() {
    var d = $('#hiddenDiv')
    d
        .hide()
        .removeClass('splash');
    removeOverlay()
}
function showLoader() {
    t = $('#header .content').position()
    $('#loading')
        .css({top: t.top - 5, left: t.left + $('#header .content').width() - 65})
        .show()
}
function hideLoader() {
    $('#loading').hide()
}
function otliam(liam, e) {
    var mail = liam.replace(/#/, '@').reverse()
    $(e).attr('href', 'mailto:' + mail)
}
function regToggleBoya() {
    $('.boya-hide').toggle();
    if ($('#hiddenDiv').css('height') == '325px') {
        $('#hiddenDiv').css('height', '275px')
    } else {
        $('#hiddenDiv').css('height', '325px')
    }
}
function gaTrack(page) {
    try {
        pageTracker._trackPageview(page)
    } catch (e) {}
}
$(document).ready(function() {
    loading = '<div id="loading"><img src="/static/images/loader.png" alt="loading data... please wait" /></div>'
    $('body').append(loading)
    $("#loading")
        .bind("ajaxSend", function() {
            showLoader()
        })
        .bind("ajaxComplete", function(){
            hideLoader()
        })
    if (monoConfig.showListOnLoad) {
        changeListType('hot')
        if (monoConfig.showConfirm) {
            showConfirm()
        } else {
            showSplash()
        }
    } else if (window.location.pathname == '/') {
		showSplash()
	}
    $('#search_box')
        .bind('keydown', function(e) {
            if (e.keyCode == 13) {
                searchArtists()
            }
        })
    var p = $('#log_passbg')
    var e = $('#log_mailbg')
    if (p.length != 0) {
        p.css( {'position': 'absolute',
                'left': $('#log_pass').position().left+1,
                'top':  $('#log_pass').position().top,
                'display': 'block'
               }
              )
        e.css( {'position': 'absolute',
                'left': $('#log_mail').position().left+1,
                'top':  $('#log_mail').position().top,
                'display': 'block'
               }
              )
        p.bind('click', function() {
            $('#log_pass').trigger('focus')
        })
        e.bind('click', function() {
            $('#log_mail').trigger('focus')
        })
        $('#log_mail').bind('focus', function() {
            $('#log_mailbg').html('')
        })
        $('#log_mail').bind('blur',  function() {
            if ($(this).val() == '') {
                $('#log_mailbg').html('e-mail')
            }
        })
        $('#log_pass').bind('focus', function() {
            $('#log_passbg').html('')
        })
        $('#log_pass').bind('blur', function() {
            if ($(this).val() == '') {
                $('#log_passbg').html('password')
            }
        })
        $('#log_pass').bind('keydown', function(e) {
            if (e.keyCode == 13) {
                sendLogin()
            }
        })
        $('#log_button').bind('click', function(e) {
            sendLogin()
        })
    }
})
