﻿
(function($) {
    $.fn.openCloseBlocks = function(blocks, options) {
        var defaults = {
            speed: 'normal'
        },
		opts = $.extend(defaults, options),
  		togglers = $(this);
        bls = $(blocks); if (!bls) return;
        togglers.each(function(index) {
            $(this).click(function(e) {
                e.preventDefault();
                $(bls[index]).slideToggle(opts['speed']);
            });
        });
    };
})(jQuery);

(function() {
    jQuery.fn.centerScreen = function(isGlobal,loaded) {
        var obj = this;
        var st = $(document).scrollTop();
        var w;
        if (!isGlobal) w = $('#Wrapper').width()
        else w = $(window).width()
        
        if (!loaded) {
            obj.css('top', st + $(window).height() / 2 - this.height() / 2);
            obj.css('left', w / 2 - this.width() / 2);
            $(window).resize(function()
                { obj.centerScreen(isGlobal, !loaded); });
        } else {
            obj.stop();
            obj.animate({ top: st + $(window).height() / 2 - this.height() / 2, left: w / 2 - this.width() / 2 }, 200, 'linear');
        }
    }
})(jQuery); 

var photoLocation = "/UserHandlers/Image.ashx?page=Photos&size=Photo&imageid=";
var LargePhotoLocation = "/UserHandlers/Image.ashx?page=Photos&imageid=";
var MarginLeft = 0;
var OneItemWidth = 76;
var DefaultCountOfItems = 8;
var CountOfItemsToMove = 3;
var CountOfItems;
function ActivateLenta() {
    var mw = OneItemWidth * CountOfItemsToMove;
    $lenta = $('#PhotoUL');
    CountOfItems = $('#PhotoUL li').length;
    if (CountOfItems > 0) {
        $('#LeftArrow').click(function(e) {
            e.preventDefault();
            if (MarginLeft + mw >= 0) MarginLeft = -mw;
            if (MarginLeft < 0) {
                MarginLeft += mw;
                $lenta.animate({ marginLeft: MarginLeft });
            }
            else {
            }
        });
        $('#RightArrow').click(function(e) {
            e.preventDefault();
            MarginLeft -= mw;
            if (MarginLeft + (CountOfItems - DefaultCountOfItems) * OneItemWidth > 0) {

            }
            else {
                MarginLeft = -(CountOfItems - DefaultCountOfItems) * OneItemWidth;
            }
            $lenta.animate({ marginLeft: MarginLeft });
        });
    }
    cur = location.hash;
    if (cur != "")
        ShowPhoto(cur.replace('#photo', ''))
    else ShowPhoto($('#PhotoUL li a:first').attr('id').replace('ph', ''));
    $('#PhotoUL li a').click(function(e) {
        e.preventDefault();
        ShowPhoto(this.id.replace('ph', ''));
    });
}
function ShowPhoto(PhotoID) {
    $('#currentImage').attr('src', photoLocation + PhotoID);
    location.hash = 'photo' + PhotoID;
    $('#PhotoUL li a').removeClass('selected');
    $('#ph' + PhotoID).addClass('selected');
    $('#img a').attr('href', LargePhotoLocation + PhotoID);
    $('#img a').attr('target', '_blank');
    var index = $("#PhotoUL li a").index($('#ph' + PhotoID));
    if ((index + 1) * OneItemWidth + MarginLeft > DefaultCountOfItems * OneItemWidth) {
        MarginLeft = -(index - 4) * OneItemWidth;
        $('#PhotoUL').animate({ marginLeft: MarginLeft });
    }
    else {
    }
    var title = $('#ph' + PhotoID + ' img').attr('title'); 
    $('#PhotoTitle').text(title);
    __doPostBack('ctl00_cphContentMain_Comments_upComments', PhotoID)
}
var CookieName;
function ChangeViewOption(obj) {
    $("#TrickyContentWrapper").attr('class', obj.id);
    var imgSize = "sdf";
    switch (obj.id) {
        case "grid":
            imgSize = "GridSize";
            break;
        case "rows":
            imgSize = "Medium";
            break;
        default:
            imgSize = "";
            break;
    };

    $('.image img').each(function() {
        oldSrc = $(this).attr('src');
        re = /size=Medium|size=GridSize|size=/;
        newSrc = oldSrc.replace(re, "size=" + imgSize);
        $(this).attr('src', newSrc);
    });
    $('#ViewOptions ul li a').removeClass('active');
    $(obj).addClass('active');
    var options = { path: '/', expires: 10 };
    $.cookie(CookieName, obj.id, options);
}
function SetViewOptions(vo, cn) {
    CookieName = cn;
    $('#' + vo).addClass('active');
}

/*
Messages
*/
function ctrlEnterCheck(event, formElem) {
    if ((event.ctrlKey) && ((event.keyCode == 0xA) || (event.keyCode == 0xD))) {
        SendMessage();
    }
}
function processInput(event, action) {
    if (event.which == 13) {
        switch (action) {
            case "login":
                AjaxLogin();
                break;
            case "register":
                AjaxRegister();
                break;
            case "remind":
                AjaxRemind();
                break;
        }
        return false;
    };
};
function ShowBlocker() {
    $('#Blocker').height($('body').height());
    $('#Blocker').show();
}
function ShowGetContacts() {
    ShowBlocker();
    
    $('#GetContacts').centerScreen();
    $('#GetContacts').show();
}
function CancelGetContacts() {
    $('#GetContacts, #Blocker').hide();
    $('#GetContacts input').val('');
}
function GetContacts(obj) {
    $(obj).text('Working...');
    var parameters = {
        action: "GetContacts",
        password: $('#iPass').val(),
        email: $('#iEmail').val()
    };
    function callback(data, textstatus) {
        if (textstatus == "success") {
            if (data.split('|')[0] == "OK") {
                CancelGetContacts();
                $('#inviteTextarea').val(data.replace('OK|',''));
            }
            else {
                alert(data);
            }
        } else {
            alert(data);
        }

        $(obj).text('Get Contacts');
    }
    if ((parameters.password != "") && (parameters.email != "")) {
        MyAjax(parameters, callback);
    }
};
function SendInvites(obj) {
    var parameters = {
        action: "SendInvites",
        r: $('#inviteTextarea').val()
    };
    function callback(data, textstatus) {
        if (textstatus == "success") {
            if (data.split('|')[0] == "OK") {
                $('#inviteTextarea').val('');
                $(obj).text('Send invite');
                alert("Your invites were successfully sent");
            }
            else {
                alert(data);
            }
        } else {
            alert(data);
        }
    }
    if (parameters.r != "") {
        $(obj).text('Sending...');
        MyAjax(parameters, callback);
    }
}
function ShowLoginPopup() {
    $('#inputLogin, #inputPassword').unbind('keypress').keypress(function(e) { return processInput(e, "login"); });
    $('#LogInPopup').centerScreen(true);
    $('#inputLogin, #inputPassword').val('');
    $('#LogInPopup').show();
    ShowBlocker();
    $('#RegisterPopup').hide();
    $('#btnLogin').click(function() {
        AjaxLogin();
    });
    $('#inputLogin').focus();
}

function ShowRegisterPopup() {
    $("#RegisterError").text("");
    $('#tRegName, #tRegEmail, #tRegPassword').unbind('keypress').keypress(function(e) { return processInput(e, "register"); });
    $('#RegisterPopup').centerScreen(true);
    $('#tRegName, #tRegEmail, #tRegPassword').val('');
    $('#RegisterPopup').show();
    ShowBlocker();
    $('#tRegName').focus();
}

function CancelRegisterPopup() {
    $('#tRegName, #tRegEmail, #tRegPassword').val('');
    $('#RegisterPopup, #LogInPopup, #Blocker').hide();
}

function ShowReminderPopup() {
    $('#LogInPopup').hide();
    $("#ReminderError").text("");
    $('#tRemindEmail').unbind('keypress').keypress(function(e) { return processInput(e, "remind"); });
    $('#ForgotPasswordPopup').centerScreen(true);
    $('#tRemindEmail').val('');
    $('#ForgotPasswordPopup').show();
    ShowBlocker();
    $('#tRemindEmail').focus();
}

function CancelReminderPopup() {
    $('#tRegName').val('');
    $('#ForgotPasswordPopup, #Blocker').hide();
}


function AjaxLogin() {
    $("#LoginError").text("");

    var parameters = {
        action: "AjaxLogin",
        password: $('#inputPassword').val(),
        email: $('#inputLogin').val(),
        rememberMe: $('#chckBxRememberMe').is(':checked')
    };
    function callback(data, textstatus) {
        if (textstatus == "success") {
            var resultCode = data.split(',')[0];
            var result = data.split(',')[1];
            if (resultCode == "OK") {
                window.location.reload();
            } else if (resultCode == "REDIRECT") {
                window.location = result;
            }
            else {
                alert("The login information you entered does not match an account in our records. Remember, your email address is not case-sensitive, but passwords are.");
            }
        } else {
           
        }
    }
    if (parameters.password != "" && parameters.email != "")
        MyAjax(parameters, callback);
}

function AjaxRemind() {
    $("#LoginError").text("");

    var parameters = {
        action: "AjaxRemind",
        email: $('#tRemindEmail').val()
    };
    function callback(data, textstatus) {
        alert(data);
        CancelReminderPopup();
    }
    if (parameters.email != "")
        MyAjax(parameters, callback);
}

function AjaxRegister() {
    $("#RegisterError").text("");
    $('#btnRegister').attr('disabled', 'disabled').val('Processing...');
    var parameters = {
        action: "AjaxRegister",
        password: $('#tRegPassword').val(),
        email: $('#tRegEmail').val(),
        name: $('#tRegName').val()
    };
    function callback(data, textstatus) {
        if (textstatus == "success") {
            $('#btnRegister').attr('disabled', '').val('Register');
            if (data == "OK") {
            /*
                window.location = "http://" + document.location.host+ "/" + $('#tRegName').val() + "/EditProfile/";
                */
                alert("Please check your email to confirm registration on snowrev.com. Don't forget to check your spam folder for verification email from us");
                CancelRegisterPopup();
            }
            else {
                //$("#RegisterError").text(data);
                alert(data);
                
            }
        } else {
        $("#RegisterError").text("Something bad happened. Check fields and try again.");
        CancelRegisterPopup();
        }
    }
    if ((parameters.password != "") && (parameters.email != "") && (parameters.name != "")) {
        MyAjax(parameters, callback);
    }
    else {
        alert("All fileds must be filled");
    }
}
function CancelLoginPopup() {
    $('#inputLogin, #inputPassword').val('');
    $('#LogInPopup, #RegisterPopup, #Blocker').hide();
}
function CancelMessage() {
    $('#inputmTo').val('');
    $('#inputmSubj').val('');
    $('#inputmMessage').val('');
    $('#WriteMessage, #Blocker').hide();
}
function ShowEditVideo(id, title, description, rule) {
    $('#ctl00_ctl00_cphContentMain_cphContentSocial_hlEditVideoInfo').val(id);
    $('#EditVideo').centerScreen();
    ShowBlocker();
    $('#EditVideo').show();
    $('#ctl00_ctl00_cphContentMain_cphContentSocial_tbTitleEdit').val(title);
    $('#ctl00_ctl00_cphContentMain_cphContentSocial_tbDescEdit').val(description.replace(/<br \/>/g, "\r\n"));
    $("#ctl00_ctl00_cphContentMain_cphContentSocial_RuleDropDown option[value='" + rule + "']").attr("selected", "selected");
}
function CancelEditVideo() {
    $('#EditVideo, #Blocker').hide();
}

function ShowCreateAlbum() {
    $('#NewPhotoAlbum').centerScreen();
    $('#NewPhotoAlbum, #Blocker').show();
}
function CancelCreateAlbum() {
    $('#NewPhotoAlbum ul li input, #NewPhotoAlbum ul li textarea').val('');
    $('#NewPhotoAlbum, #Blocker').hide();
}
function ShowAddPhotos(AlbumID) {
    $('#Blocker').show();
    $('#ctl00_ctl00_cphContentMain_cphContentSocial_AddPhotosControl_hfAlbum').val(AlbumID);
    $('#AddPhotos').centerScreen();
    $('#AddPhotos').show();
}
function CancelAddPhotos() {
    $('#AddPhotos, #Blocker').hide();
}

function ShowRequestPublishing(key) {
    $('#Blocker').show();
    $('#RequestPublishing'+key).centerScreen();
    $('#RequestPublishing'+key).show();
}
function CancelRequestPublishing(key) {
    $('#Error').text('');
    $('#RequestPublishing'+key+', #Blocker').hide();
}

function ShowError(data) {
    alert("Something went wrong. We couldn\'t complete the operation. Please, check your internet connection and try again.");
    alert(data);
}
function ShowWriteMessage() {
    $('#hiddenTo').val($("select#FriendsSelectInserted option:selected").val());
    $("#FriendsSelectInserted").show()
    .change(function() {
        $('#hiddenTo').val($("select#FriendsSelectInserted option:selected").val());
    });
    $('#inputmTo').hide();
    $('#WriteMessage').centerScreen(true);
    $('#WriteMessage, #Blocker').show();
}
function MarkAsDeleted(mid) {
    $messageDeleted = "<div class='mdeleted'>Message Deleted</div>";
    $undoButton = "<div class='actions extra'><a onclick='UndoDelete(" + mid + ")'>Undo</a></div>";
    $('#msgtr' + mid + ' .msgWrapper').hide().after($messageDeleted);
    $('#msgtr' + mid).addClass('deleted');
    $('#msgtr' + mid + ' .actions').hide().after($undoButton);
    $('.mySections a.current span').text('('+(parseInt($('.mySections a.current span').text().replace('(', '').replace(')', '')) - 1)+')');
}
function MarkAsRestored(mid) {
    $('#msgtr' + mid + ' .mdeleted').remove();
    $('#msgtr' + mid + ' .msgWrapper').show();
    $('#msgtr' + mid).removeClass('deleted');
    $('#msgtr' + mid + ' .extra').remove();
    $('#msgtr' + mid + ' .actions').show();
    $('.mySections a.current span').text('(' + (parseInt($('.mySections a.current span').text().replace('(', '').replace(')', '')) + 1) + ')');
};
function SendMessageToFriend(id, name) {
    $('#hiddenTo').val(id);
    $('#inputmTo').val(name);
    $('#WriteMessage').centerScreen(true);
    $('#WriteMessage, #Blocker').show();

}
function Reply(uid) {
    $('#hiddenTo').val(uid);
    $('#inputmTo').show().val($('.avaWrapper .userName').text());
    $('#WriteMessage').centerScreen();
    $('#WriteMessage, #Blocker').show();
}
function ReplyTo(mid) {
    $("#FriendsSelectInserted").hide();
    $('#hiddenTo').val($('#msgtr' + mid + ' .fid').val());
    $('#inputmTo').show().val($('#msgtr' + mid + ' .friendName').text());
    $('#inputmSubj').val("Re: " + $('#msgtr' + mid + ' .msgWrapper a.subj').text().replace("Re: ", ""));
    $('#WriteMessage').centerScreen(true);
    $('#WriteMessage, #Blocker').show();
    if($('#msgtr' + mid).hasClass('unread'))
        $('.mySections a.current span').text('(' + (parseInt($('.mySections a.current span').text().replace('(', '').replace(')', '')) - 1) + ')');
    $('#msgtr' + mid).removeClass('unread').addClass('read');
    MarkAsRead(mid);
}

function MyAjax(parameters, callback) {
    $.post("/UserHandlers/ajax.ashx", parameters, callback);
}

function SetRating(itemID, r, Page, obj) {
    var parameters = {
        action: "SetRating",
        itemID: itemID,
        page: Page,
        rating: r
    };
    x = itemID;
    function callback(data, textstatus) {
        $(obj).rating('select', data);
        $(obj).rating('readOnly', true);
    }
    MyAjax(parameters, callback);
}

function SendMessage(s, r, subj, m) {
    var parameters = {
        action: "SendMessage",
        senderID: s,
        recieverID: r,
        subject: subj,
        message: m
    };
    function callback(data, textstatus) {
        alert(data);
    }
    MyAjax(parameters, callback);
}
function DeleteMessage(mid) {
    MarkAsDeleted(mid);
    var p = {
        action: "DeleteMessage",
        MessageID: mid
    };
    function callback(data, textstatus) {
        if ((textstatus == "success") && (data = "OK")) {

        } else {
            MarkAsRestored(mid);
            ShowError(data);
        }
    }
    MyAjax(p, callback);
}
function UndoDelete(mid) {
    MarkAsRestored(mid);
    var p = {
        action: "UndoDelete",
        MessageID: mid
    };
    function callback(data, textstatus) {
        if ((textstatus == "success") && (data = "OK")) {

        } else {
            MarkAsDeleted();
            ShowError(data);
        }
    }
    MyAjax(p, callback);
}

function SendMessage() {
    var recieverID = $('#hiddenTo').val();
    var subject = $('#inputmSubj').val();
    var message = $('#inputmMessage').val();

    var p = {
        action: "SendMessage",
        recieverID: recieverID,
        subject: subject,
        message: message
    };
    function callback(data, textstatus) {
        if ((textstatus == "success") && (data = "OK")) {
            CancelMessage();
        } else {
            ShowError(data);
        }

    }
    MyAjax(p, callback);
}


function MarkAsRead(mid) {
    var p = {
        action: "MarkAsRead",
        MessageID: mid
    };
    function callback(data, textstatus) {
        if ((textstatus == "success") && (data = "OK")) {

        }
        else {
            ShowError(textstatus);
        }
    }
    MyAjax(p, callback);
}

function MarkAsSpam(mid) {
    var p = {
        action: "MarkAsSpam",
        MessageID: mid
    };
    function callback(data, textstatus) {
        if ((textstatus == "success") && (data = "OK")) {

        }
        else {
            ShowError(textstatus);
        }
    }
    MyAjax(p, callback);
}
var $clickedLink;
function FriendAction(sender) {
    $clickedLink = $(sender);
    currentText = $(sender).text();
    if (currentText.indexOf('Add') == 0) {
        AddAsFriend(CurrentUserProfileID);
    }
    else {
        RemoveFromFriends(CurrentUserProfileID);
    }
}

function AddAsFriend(uid) {
    $clickedLink.addClass('working');
    var p = {
        action: "AddAsFriend",
        UserID: uid
    };
    function callback(data, textstatus) {
        $clickedLink.removeClass('working');
        if ((textstatus == "success") && (data = "OK")) {
            $clickedLink.text($clickedLink.text().replace("Add", "Remove").replace("To", "From")).remove();
        }
        else {
            ShowError(textstatus);
        }
    }
    MyAjax(p, callback);
}

function RemoveFromFriends(uid) {
    $clickedLink.addClass('working');

    var p = {
        action: "RemoveFromFriends",
        userID: uid
    };
    function callback(data, textstatus) {
        $clickedLink.removeClass('working');
        if ((textstatus == "success") && (data = "OK")) {
            $clickedLink.text($clickedLink.text().replace("Remove", "Add").replace("From", "To"));
            $('.crewAction').remove();
        }
        else {
            ShowError(textstatus);
        }
    }
    MyAjax(p, callback);
}

function CrewAction(sender) {
    $clickedLink = $(sender);
    currentText = $(sender).text();
    if (currentText.indexOf('Add') == 0) {
        AddToCrew(CurrentUserProfileID);
    }
    else {
        RemoveFromCrew(CurrentUserProfileID);
    }
}

function AddToCrew(uid) {
    $clickedLink.addClass('working');
    var p = {
        action: "AddToCrew",
        UserID: uid
    };
    function callback(data, textstatus) {
        $clickedLink.removeClass('working');
        if ((textstatus == "success") && (data = "OK")) {
            $clickedLink.text($clickedLink.text().replace("Add", "Remove").replace("To", "From"));
        }
        else {
            ShowError(textstatus);
        }
    }
    MyAjax(p, callback);
}

function RemoveFromCrew(uid) {
    $clickedLink.addClass('working');

    var p = {
    action: "RemoveFromCrew",
        userID: uid
    };
    function callback(data, textstatus) {
        $clickedLink.removeClass('working');
        if ((textstatus == "success") && (data = "OK")) {
            $clickedLink.text($clickedLink.text().replace("Remove", "Add").replace("From", "To"));
        }
        else {
            ShowError(textstatus);
        }
    }
    MyAjax(p, callback);
}
