﻿

// ensure tooltips are closed if mouse clicks anywhere

function handleAjaxError(data) {
    //$('body').html("/List/AddTo error: " + data.responseText);
}

function configHomeLists() {
    if (window.location.href.indexOf('#')==-1) {
        loadScript(baseUrl + "/assets/js/plugins/jquery.jcarousel.min.js", initHomeLists);
    }
}

function initHomeLists() {

    $.ajax({

        url: '/shared/ajax/homelists.aspx',
        dataType: 'html',
        type: "GET",
        cache: false,
        error: function (data) {
            $('body').html(data.responseText);
        },
        success: function (data) {
            $('#loadingHomeLists').removeClass('loading');
            $('#loadingHomeLists').css('height', 'auto');
            $('#loadingHomeLists').html(data);
        }
    });

}

function loadScript(url, callback) {

    var script = document.createElement("script");
    script.type = "text/javascript";

    if (script.readyState) {
        script.onreadystatechange = function () {
            if (script.readyState == "loaded" || script.readyState == "complete") {
                script.onreadystatechange = null;
                callback();
            }
        }
    }
    else {
        script.onload = function () {
            callback();
        }
    }

    script.src = url;
    document.getElementsByTagName("head")[0].appendChild(script);

}

function shareBook_Email_Send() {

    $('#shareBook_UI .eStar').remove();

    var errorCount = 0;
    var errorHtml = "<span class=\"eStar\">*</span>";

    var sharebook_sendtoemail = $('#sharebook_sendtoemail');
    var sharebook_sendername = $('#sharebook_sendername');
    var sharebook_senderemail = $('#sharebook_senderemail');
    var sharebook_sendernote = $('#sharebook_sendernote');
    var sharebook_bookid = $('#sharebook_bookid');

    if ($.trim(sharebook_sendtoemail.val()).length == 0 || (!isValidEmailAddress(sharebook_sendtoemail.val()))) {
        sharebook_sendtoemail.after(errorHtml);
        errorCount++;
    }

    if ($.trim(sharebook_sendername.val()).length == 0) {
        sharebook_sendername.after(errorHtml);
        errorCount++;
    }

    if ($.trim(sharebook_senderemail.val()).length == 0 ||(!isValidEmailAddress(sharebook_senderemail.val())) ) {
        sharebook_senderemail.after(errorHtml);
        errorCount++;
    }

    if (errorCount == 0) {

        var id = parseInt(sharebook_bookid.val())
        $.ajax({
            url: '/findbooks/share/sharebookemail.ashx',
            dataType: 'json',
            data: "sharebook_sendtoemail=" + sharebook_sendtoemail.val() + "&sharebook_sendername=" + sharebook_sendername.val() + "&sharebook_senderemail=" + sharebook_senderemail.val() + "&sharebook_sendernote=" + sharebook_sendernote.val() + "&sharebook_bookid=" + id + "&csrf=" + csrf,
            type: "POST",
            beforeSend: function () {
                $('#sharebook_sendbtn_msg').show();
                $('#sharebook_sendbtn').hide(); // ('Sending please wait ...');
            },
            error: function (data) {
                $('#sharebook_sendbtn').show();
                $('body').html(data.responseText);
            },
            success: function (data) {
                $('#sharebook_sendbtn_msg').html('Email sent!');
                _gaq.push(['_trackEvent', 'ShareBook', 'Email', id.toString()]);
            }
        });

    }

    return false;
    
}

function shareBook_Email(id) {

    $('#shareBookPanel').modal({ minWidth: 640, minHeight: 420, maxWidth: 640, maxHeight: 420 });

    $.ajax({

        url: '/findbooks/search/AjaxHandler.ashx',
        dataType: 'json',
        data: "search-type=4&cmd=search&id=" + id,
        type: "GET",
        beforeSend: function () {
            $('#shareBook_UI').hide();
            $('#shareBook_UILoader').show();
        },
        error: function (data) {

            $('body').html(data.responseText);
        },
        success: function (data) {

            $.each(data.Books, function () {
                $('#shareBook_Title').html("<h2 class='title' style='font-weight: normal;width: 97%; margin-top: 5px;'>" + this["Title"] + " by " + this["Author"] + "</h2>");
            });
            $('#shareBook_UI').show();
            $('#shareBook_UILoader').hide();

            $('#sharebook_bookid').val(id) ;
            $('#sharebook_sendtoemail').focus();
        }
    });

}

function shareBook_Facebook(id) {

    FB.ui({
        app_id: fbAppId,
        method: 'stream.publish',
        link: baseUrl + "/#cmd=search&search-type=4&id=" + id,
        name: $('#title_' + id).html() + " by " + $('#author_' + id).html(),
        description: $('#review_' + id).html(),
        picture: baseUrl + "/assets/images/big/" + id + ".jpg",
        actions: [{
            name: "Explore Whichbook",
            link: baseUrl + "/"
        }]
    }, function (response) {

        if (response && response.post_id) {
            // $('#share_' + id).hide();
            _gaq.push(['_trackEvent', 'ShareBook', 'Facebook', id.toString()]);
        } 

    });
}

function openAddToListPanel(id, uid) {

    $.ajax({
        url: "/lists/get/default.aspx",
        data: "ajax=1&guid=" + uid,
        dataType: "html",
        type: "GET",
        beforeSend: function () {
            $('#addtolistPnl_listid').empty(); 
            $('#addtolistPnl_listid').hide();
        },
        error: function (data) {

        },
        success: function (data, textStatus, XMLHttpRequest) {

            $('#addToListPnl_BookId').val(id);
            $('#addtolistPnl_listid').empty();
            $('#addtolistPnl_listid').append(data);
            $('#addtolistPnl_listid').show();
            
        }
    });
    
    $('#addToListPanel').modal({ minWidth: 440, minHeight: 220, maxWidth: 440, maxHeight: 220 });

}


$(document).ready(function () {

    if (loginForm) {

        $('#loginForm1').submit(function () {

            var errorCount = 0;
            var email = $('#signin_email');
            var password = $('#signin_password');

            if ($.trim(email.val()).length == 0) {
                email.parent().find('.vError').text('*');
                errorCount++;
            }

            if ($.trim(password.val()).length == 0) {
                password.parent().find('.vError').text('*');
                errorCount++;
            }

            if (errorCount == 0) {

                hideLoginError();
                $('#loginSubmitBtn').attr('src', '/assets/css/images/ajax-loader.gif');

                $.ajax({
                    url: "/account/signin/do/default.aspx",
                    data: "ajax=1&NetworkType=0&Username=" + $("#signin_email").val() + "&Password=" + $("#signin_password").val() + "&RedirectUrl=" + $.URLEncode($(location).attr('href')) + "&csrf=" + csrf,
                    dataType: "json",
                    type: "POST",
                    error: function (data) {
                        handleAjaxError(data);
                    },
                    success: function (data, textStatus, XMLHttpRequest) {

                        if (data.Success) {
                            _gaq.push(['_trackEvent', 'SignIn', 'Integrated']);
                            window.location = $(location).attr('href');
                        }
                        else {
                            $('#loginSubmitBtn').attr('src', '/assets/css/images/btnLogMeIn.gif');
                            var property, propCollection = "";
                            for (property in data.ValidationErrors) {
                                $('#' + property).parent().find('.vError').text(data.ValidationErrors[property]);
                            }
                            showLoginError(data.Success);
                        }
                    }
                });

            }
            else {
                showLoginError();
            }

            return false;
        });

        function showLoginError(s) {
            if (s == "") s = "Invalid username or password";
            $("#loginError").text(s);
            $("#loginError").show();
        }
        function hideLoginError() {
            $("#loginError").text("");
            $("#loginError").hide();
        }

    }

});


function setIPadComboHeights() {
    if (isiPad) {
        $('.dropdownList').each(function () {
            $(this).css('height', _dropdownListIPadHeight + 'px');
        });
    }
}

setIPadComboHeights();



function createMix(name, query, obj) {

    if ($.trim(name).length == 0)
        return;

    $.ajax({
        url: "/lists/create/handler.ashx",
        data: "mixName=" + $.URLEncode(name) + "&" + query + "&csrf=" + csrf + "&ugid=" + ugi,
        dataType: "text",
        type: "POST",
        beforeSend: function () {
            $(obj).val("saving ...");
        },
        error: function (data) {
            handleAjaxError(data);
        },
        success: function (data, textStatus, XMLHttpRequest) {
            if (data != "") {
                $(obj).parent().append("<span>List saved to 'My Lists'</span>");
                $(obj).remove();
                _gaq.push(['_trackEvent', 'Lists', 'AddToList', '0']);
            }
        }
    });

}

function addToList(obj, bookId, listId) {

    $.ajax({
        url: "/lists/addto/default.aspx",
        data: "books=" + bookId + "&command=addtolist&listId=" + listId + "&csrf=" + csrf,
        dataType: "json",
        type: "POST",
        beforeSend: function () {
            $(obj).html("saving ...");
        },
        error: function (data) {
            handleAjaxError(data);
        },
        success: function (data, textStatus, XMLHttpRequest) {
            if (data.Sucess) {
                $(obj).parent().append("<span>Saved</span>");
                $(obj).remove();
                _gaq.push(['_trackEvent', 'Lists', 'AddToList', bookId.toString()]);
            }
        }
    });

}

function createNewList(obj, bookId, newNameObj) {

    if ($('.newListName').val().length == 0) {
        $('.uiError').text("Please enter a name for the list");
        $('.newListName').focus();
        return;
    }

    $.ajax({
        url: "/lists/create/default.aspx",
        data: "bookid=" + bookId + "&name=" + $('.newListName').val() + "&command=addtolist&csrf=" + csrf,
        dataType: "json",
        type: "POST",
        beforeSend: function () {
            $(obj).html("saving ...");
        },
        error: function (data) {
            handleAjaxError(data);
        },
        success: function (data, textStatus, XMLHttpRequest) {
            if (data.Sucess) {
                $(obj).html("Saved!");
                _gaq.push(['_trackEvent', 'Lists', 'CreateList', bookId.toString()]);
            }
            else {
                $(obj).html("Failed!");
            }
        }
    });

}

function showExtractPanel(id) {

    $('#readExtractBox .popupHeader h1').html("Extract: " +
                                        $('#title_' + id).html() + " " +
                                        $('#author_' + id).html());
    $('#readExtractBox').modal({ minWidth: 750, minHeight: 450 });
    $('#extract').html($('#extract_' + id).html());

}

function showSimilarBooks(id) {

    $('#similarBooks').modal({ minWidth: 640, minHeight: 450, maxWidth: 640, maxHeight: 450 });
    $('#similarBooksPlaceHolder').html('loading ...');

    $.ajax({
        url: "/findbooks/similar/default.aspx",
        data: "id=" + id,
        dataType: "html",
        type: "GET",
        beforeSend: function () {

        },
        error: function (data) {
            handleAjaxError(data);
        },
        success: function (data, textStatus, XMLHttpRequest) {
            $('#similarBooksPlaceHolder').html(data);
        }
    });

}

function buy(id) {
    _gaq.push(['_trackEvent', 'Buy', 'Amazon', id.toString()]);
}

function borrow(id) {

    

    if (_IsMobile) {
        window.location.href = "/mobile/book/borrow/?id=" + id;
        return;
    }

    selectedBookId = id;

    var borrowSystem = getCookie("borrow.system");
    if (borrowSystem == "WorldCat") {
        OpenWorldCat();
    }

    var selectedRegion = getCookie("borrow.region");
    if (selectedRegion != null) {
        $('#regionId').val(selectedRegion);
        selectedRegionId = selectedRegion;
    }

    var selectedLibrary = getCookie("borrow.library");
    if (selectedLibrary != null && selectedRegion != null) {
        //$('#libraryId').val();
        presetLibId = selectedLibrary;
        doLoadLibs = true;
        loadLibraries();
    }
    else {

    }


    $('#borrowTitleH1').html("Borrow " +
                                        $('#title_' + id).html() + " " +
                                        $('#author_' + id).html());

    $('#worldCatLink').attr('href', $('#worldCatLink').attr('href') + '?bookid=' + selectedBookId);

    if (selectedRegionId > 0 && selectedLibraryId > 0) {

        loadCatalogueLink();

    }

    if (_IsMobile) {
        $('#borrowPanel').modal({
            minHeight: 400,
            minWidth: 400,
            maxWidth: 400,
            maxHeight: 400
        });
    }
    else {

        $('#borrowPanel').modal({
            minHeight: 550,
            minWidth: 700,
            maxWidth: 700,
            maxHeight: 550
        });

        var myflashvars = {};
        var params = { wmode: "transparent" };
        var attributes = {};
        attributes.id = "UKBorrowMap";
        attributes.name = "UKBorrowMap";

        swfobject.embedSWF("/assets/flash/UKBorrowMap.swf", "borrowMap", "262", "400", "9.0.0", "/js/swfobject/expressInstall.swf", myflashvars, params, attributes);

    }

}


function initBorrowing() {
    $('#regionId').change(function () {
        selectedRegionId = $('#regionId').val();
        loadLibraries();
    });
}

function loadLibraries() {

    $('#libraryId').removeAttr('disabled');
    $.ajax({
        url: "/borrow/librarylist",
        data: "regionId=" + selectedRegionId,
        dataType: "html",
        type: "GET",
        beforeSend: function () {
            $('#borrowStep2').hide();
            $('#borrowStep3').hide();
            $('#libraryAuthorityLoader').show();
        },
        error: function (data) {
            handleAjaxError(data);
        },
        success: function (data) {

            setCookie("borrow.region", selectedRegionId, 120);

            $('#borrowStep2').show();

            $('#libraryIdPlaceHolder').html(data);
            $('#libraryAuthorityLoader').hide();

            $('#libraryId').bind('change', loadLibrary); // (function () {

            setIPadComboHeights();

            if (doLoadLibs)
                loadLibrary();

        }

    });

}

function loadLibrary() {

    if (presetLibId > 0) {
        selectedLibraryId = presetLibId;
        doLoadLibs = false;
        presetLibId = 0;
        $("#libraryId").val(selectedLibraryId);
    }
    else
        selectedLibraryId = parseInt($("#libraryId").val());


    if (selectedLibraryId > 0) {
        setCookie("borrow.library", selectedLibraryId, 120);
        loadCatalogueLink();

    }
}

function loadCatalogueLink() {

    $.ajax({

        url: "/borrow/cataloguelink",
        data: "bookId=" + selectedBookId + "&regionId=" + selectedRegionId + "&libraryId=" + selectedLibraryId,
        dataType: "html",
        type: "GET",
        beforeSend: function () {
            $("#catLinkLoader").show();
            $('#borrowStep3').hide();
        },
        error: function (data) {
            handleAjaxError(data);
        },
        success: function (data) {

            $("#catLinkLoader").hide();
            $('#borrowStep3').show();

            $('#CatalogueLink').html(data);
            $('#CatalogueLink a').attr('target', '_blank');
            $('#CatalogueLink a').click(function() {
                _gaq.push(['_trackEvent', 'Borrow', 'UKLib', selectedBookId]);
            });

        }

    });

}


function OpenWorldCat() {
    
    //$('#worldCatBorrow').show();
   // $('#whichbookBorrow').hide();
    setCookie("borrow.system", "WorldCat", 120);
}

function ShowWhichbookBorrow() {
   // $('#worldCatBorrow').hide();
  //  $('#whichbookBorrow').show();
    setCookie("borrow.system", "Whichbook", 120);
}

function BorrowMapClick(regionId, regionName) {
    var regionList = $('#regionId');
    regionList.val(regionId);

    selectedRegionId = $('#regionId').val();
    loadLibraries();
}

function BorrowMapOver(regionId, regionName) {
    $('#mapOutput').html(regionName);
}

function BorrowMapOut() {
    $('#mapOutput').html('');
}

function ImgError(source) {
    source.src = "/assets/css/images/no-book-cover.gif";
    source.onerror = "";
    return true;
}

(function ($) {
    var cache = [];
    $.preLoadImages = function () {
        var args_len = arguments.length;
        for (var i = args_len; i--; ) {
            var cacheImage = document.createElement('img');
            cacheImage.src = arguments[i];
            cache.push(cacheImage);
        }
    }
})(jQuery)

function isValidEmailAddress(emailAddress) {
    var pattern = new RegExp(/^(("[\w-\s]+")|([\w-]+(?:\.[\w-]+)*)|("[\w-\s]+")([\w-]+(?:\.[\w-]+)*))(@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$)|(@\[?((25[0-5]\.|2[0-4][0-9]\.|1[0-9]{2}\.|[0-9]{1,2}\.))((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\.){2}(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\]?$)/i);
    return pattern.test(emailAddress);
}

(function ($) {

    jQuery.fn.idle = function (time) {
        var o = $(this);
        o.queue(function () {
            setTimeout(function () {
                o.dequeue();
            }, time);
        });
    };
})(jQuery);

jQuery.extend({

    removeByElement: function (arrayName, arrayElement) {
        var removed = false;
        for (var i = 0; i < arrayName.length; i++) {
            if (arrayName[i] == arrayElement) {
                arrayName.splice(i, 1);
                removed = true;
            }
        }
    }

});

function setCookie(name, value, days) {
    if (days) {
        var date = new Date(); date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
        var expires = "; expires=" + date.toGMTString();
    } else
        var expires = ""; document.cookie = name + "=" + value + expires + "; path=/";
}
function getCookie(name) {

    var nameEQ = name + "=";
    var ca = document.cookie.split(';');

    for (var i = 0; i < ca.length; i++) {

        var c = ca[i];
        while (c.charAt(0) == ' ')
            c = c.substring(1, c.length);

        if (c.indexOf(nameEQ) == 0)
            return c.substring(nameEQ.length, c.length);
    }
    return null;
}
function deleteCookie(name) { setCookie(name, "", -1); }

$.extend({ URLEncode: function (c) {
    var o = ''; var x = 0; c = c.toString(); var r = /(^[a-zA-Z0-9_.]*)/;
    while (x < c.length) {
        var m = r.exec(c.substr(x));
        if (m != null && m.length > 1 && m[1] != '') {
            o += m[1]; x += m[1].length;
        } else {
            if (c[x] == ' ') o += '+'; else {
                var d = c.charCodeAt(x); var h = d.toString(16);
                o += '%' + (h.length < 2 ? '0' : '') + h.toUpperCase();
            } x++;
        }
    } return o;
},
    URLDecode: function (s) {
        var o = s; var binVal, t; var r = /(%[^%]{2})/;
        while ((m = r.exec(o)) != null && m.length > 1 && m[1] != '') {
            b = parseInt(m[1].substr(1), 16);
            t = String.fromCharCode(b); o = o.replace(m[1], t);
        } return o;
    }
});

(function ($) {
    $.fn.alphanumeric = function (p) {
        p = $.extend({
            ichars: "!@#$%^&*()+=[]\\\';,/{}|\":<>?~`.- ",
            nchars: "",
            allow: ""
        }, p);
        return this.each
			(
				function () {
				    if (p.nocaps) p.nchars += "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
				    if (p.allcaps) p.nchars += "abcdefghijklmnopqrstuvwxyz";

				    s = p.allow.split('');
				    for (i = 0; i < s.length; i++) if (p.ichars.indexOf(s[i]) != -1) s[i] = "\\" + s[i];
				    p.allow = s.join('|');

				    var reg = new RegExp(p.allow, 'gi');
				    var ch = p.ichars + p.nchars;
				    ch = ch.replace(reg, '');

				    $(this).keypress
						(
							function (e) {
							    if (!e.charCode) k = String.fromCharCode(e.which);
							    else k = String.fromCharCode(e.charCode);
							    if (ch.indexOf(k) != -1) e.preventDefault();
							    if (e.ctrlKey && k == 'v') e.preventDefault();
							}
						);
				    $(this).bind('contextmenu', function () { return false });
				}
			);
    };

    $.fn.numeric = function (p) {
        var az = "abcdefghijklmnopqrstuvwxyz";
        az += az.toUpperCase();
        p = $.extend({
            nchars: az
        }, p);
        return this.each(function () {
            $(this).alphanumeric(p);
        }
		);
    };

    $.fn.alpha = function (p) {
        var nm = "1234567890";
        p = $.extend({
            nchars: nm
        }, p);
        return this.each(function () {
            $(this).alphanumeric(p);
        }
		);
    };

})(jQuery);


function isInArray(arr, val) {
    for (var i = 0; i < arr.length; i++) {
        if (arr[i] == val) {
            return true;
        }
    }
    return false;
}


function getParameterByName(name) {
    name = name.replace(/[\[]/, "\\\[").replace(/[\]]/, "\\\]");
    var regexS = "[\\?&]" + name + "=([^&#]*)";
    var regex = new RegExp(regexS);
    var results = regex.exec(window.location.href);
    if (results == null)
        return "";
    else
        return decodeURIComponent(results[1].replace(/\+/g, " "));
}

function g_parseHashParams(url) {
    return url.split('&');
}

function g_parseFrag(frag) {
    return frag.split('=');
}

function likeBook(id) {

    FB.ui({
        app_id: fbAppId,
        method: 'stream.publish',
        //dialog: 'popup',
        message: 'Whichbook - a new way of choosing what to read next',
        actions: [{
            name: "Try Whichbook.net",
            link: "http://connect.whichbook.net/"
        }],
        attachment: {
            name: $('#title_' + id).html() + " by " + $('#author_' + id).html(),
            caption: $('#review_' + id).html(),
            description: 'Click the icon to try whichbook', //,
            href: "http://connect.whichbook.net/",
            media: [{
                type: 'flash',
                swfsrc: _domainName + '/booksearch/fb/fbShareBook.swf?domain=' + _domainName + '&slidersXmlConfig=' + _domainName + '/config/Facebook-SliderBarsConfig.ashx',
                imgsrc: _domainName + '/assets/css/images/fb-wall-sliders.gif',
                width: "80",
                height: "60",
                expanded_width: '396',
                expanded_height: '396'
            }]
        }

    }, function (response) {

        if (response && response.post_id) {
            $('#likeBook_' + id).hide();
        } else {
            //alert('Post was not published.');
        }

    });

}

function saveSearch(query) {

}

function openSignInPanal() {
    $('#signInPanel').modal({ maxWidth: 750, maxHeight: 450, minWidth: 750, minHeight: 294, containerCss: { height: 292} });
}

function openSignUpPanal() {
    bindSignUpEvents();
    $('#signUpPanel').modal({ minWidth: 750, minHeight: 430, maxWidth: 750, maxHeight: 525, containerCss: { height: 425} });
}

function switchToSignUpPanal() {
    $.modal.close();
    window.setTimeout(openSignUpPanal, 500);
}

function bindSignUpEvents() {

    $('#frmSignUp input').keypress(function (e) {
        if (e.which == 13) {
            event.preventDefault();
            return false;
        }
    });

    $('#registerEmail').bind('blur', function (e) {

        $.ajax({
            url: "/account/isregistered/default.aspx",
            data: "email=" + $("#registerEmail").val() + "&csrf=" + csrf,
            dataType: "json",
            type: "POST",
            error: function (data) {
                handleAjaxError(data);
            },
            success: function (data, textStatus, XMLHttpRequest) {
                if (parseInt(data) == 0) {
                    $('#registerEmail').removeClass("emailInValid2");
                    $('#registerEmail').addClass("emailValid");
                    enableSignUpForm();
                } else if (parseInt(data) == -1) {
                    $('#registerEmail').removeClass("emailValid");
                    $('#registerEmail').addClass("emailInValid2");
                    disableSignUpForm();
                }
                else {
                    $('#registerEmail').removeClass("emailValid");
                    $('#registerEmail').addClass("emailInValid2");
                    disableSignUpForm();
                }
            }
        });

    });
}

function enableSignUpForm() {
   // $('#pnlUserDetails').find('.formOverlay').hide();
   // $('#pnlUserDetails').find('input').removeAttr('disabled');
    //$('#signup_firstname').removeAttr('disabled');
    $('#signup_firstname').focus();
}

function disableSignUpForm() {
   // $('#pnlUserDetails').find('.formOverlay').show();
    //$('#pnlUserDetails').find('input').attr('disabled', 'disabled');
    $('#registerEmail').focus();
}

function validateSignUp() {

    var errorCount = 0;

    $('#signuppnl').find('.vError').text("");

    // firstname
    if (jQuery.trim($('#signup_firstname').val()).length == 0) {
        $('#signup_firstname').parent().find('.vError').text("*");
        errorCount++;
    }

    // lastname
    if (jQuery.trim($('#signup_lastname').val()).length == 0) {
        $('#signup_lastname').parent().find('.vError').text("*");
        errorCount++;
    }

    // password
    if (jQuery.trim($('#signup_password').val()).length == 0) {
        $('#signup_password').parent().find('.vError').text("*");
        errorCount++;
    }

    // confirmPassword
    if (jQuery.trim($('#signup_confirmPassword').val()).length == 0) {
        $('#signup_confirmPassword').parent().find('.vError').text("*");
        errorCount++;
    }

    if (jQuery.trim($('#signup_password').val()) != jQuery.trim($('#signup_confirmPassword').val())) {
        $('#signup_password').parent().find('.vError').text("*");
        $('#signup_confirmPassword').parent().find('.vError').text("*");
        errorCount++;
    }


    if (errorCount == 0) {



        $.ajax({
            url: "/account/signup/do/default.aspx",
            data: "ajax=1&Email=" + $("#registerEmail").val() + "&Forename=" + $("#signup_firstname").val() + "&Surname=" + $("#signup_lastname").val() + "&Password=" + $("#signup_password").val() + "&PasswordConfirm=" + $("#signup_confirmPassword").val() + "&RedirectUrl=" + $(location).attr('href') + "&csrf=" + csrf,
            dataType: "json",
            type: "POST",
            beforeSend: function () {

                $("#signup_inputform").hide();
                $("#signup_loading").show();

            },
            error: function (data) {
                handleAjaxError(data);
            },
            success: function (data, textStatus, XMLHttpRequest) {

                if (data.Sucess) {
                    $("#signup_loading").hide();
                    $("#signup_complete").show();
                    _gaq.push(['_trackEvent', 'SignUp', 'SignedUp']);
                }
                else {

                    $("#signup_loading").hide();
                    $("#signup_inputform").show();

                    var property, propCollection = "";
                    for (var property = 0; property < data.UIMessages.length; property++) {
                        $('#' + property).parent().find('.vError').text(data.UIMessages[property]);
                    }

                }

            }
        });
        return false;
    }
    else
        return false;

}


function SubscribeToSearch() {

    
    $('#subscribeBtn').html('Subscribe');
    $('#subscribe_searchWords').html(_CurrentSearchWords); //.replace(',', '<br />').replace('+', '<br />'));
    $('#subscribe_name').val(_CurrentSearchWords);
    $('#subscribePanel').modal({ maxWidth: 510, minHeight: 360, minWidth: 510, maxHeight: 360 });

}


function btnSubscribeClick(uguid) 
{
    $('#subscribe_email_error').html('');
    var requiresEmail = ($('#subscribe_requires_email').val() == 'True');
    var email = $('#subscribe_email').val();

    if ($.trim(email).length == 0 && requiresEmail) {
        $('#subscribe_email_error').html('*');
        return false;
    }

    var params = "csrf=" + csrf + "&uid=" + uguid + "&requiresEmail=" + requiresEmail + "&email=" + email + "&name=" + $('#subscribe_name').val() + "&";
    for (var i = 0; i < _CurrentSearchSliders.length; i++) {
        params += "s" + _CurrentSearchSliders[i].QNumber + "=" + _CurrentSearchSliders[i].Value + "&";
    }

    $.ajax({
        url: _domainName + "/account/alerts/subscribe/default.aspx",
        data: params,
        dataType: "json",
        type: "POST",
        beforeSend: function () {
            $('#subscribeBtn').html('Saving ...');
        },
        error: function (data) {
            handleAjaxError(data);
        },
        success: function (data, textStatus, XMLHttpRequest) {
            if (data.Sucess) {
                $('#subscribeBtn').html('Saved');
                _gaq.push(['_trackEvent', 'Search', 'Subscribe', params]);
            }
            else {
                var property, propCollection = "";
                for (var property = 0; property < data.UIMessages.length; property++) {
                    $('#' + property).parent().find('.vError').text(data.UIMessages[property]);
                }

            }

        }
    });


}

function isValidEmailAddress(emailAddress) {
    var pattern = new RegExp(/^(("[\w-\s]+")|([\w-]+(?:\.[\w-]+)*)|("[\w-\s]+")([\w-]+(?:\.[\w-]+)*))(@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$)|(@\[?((25[0-5]\.|2[0-4][0-9]\.|1[0-9]{2}\.|[0-9]{1,2}\.))((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\.){2}(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\]?$)/i);
    return pattern.test(emailAddress);
};


function fbRequestInvite() {
    FB.ui({ method: 'apprequests',
        message: 'whichbook - a completely new way of choosing what to book read'
    });
}

function fbLogin() {
    document.location.href = "/account/signin/fb/default.aspx?redirectUrl=" + escape(window.location.href);
}

function fbLogout() {
    if (ugi != '')
        document.location.href = "/account/signout/fb";
}
