'use strict';

import React from 'react';
import { Link } from 'react-router';

import Glyphicon from 'react-bootstrap/lib/Glyphicon';
import { getLangText } from '../../utils/lang_utils';


let PaginationButton = React.createClass({
    propTypes: {
        direction: React.PropTypes.oneOf(['previous', 'next']),
        goToPage: React.PropTypes.func.isRequired,
        currentPage: React.PropTypes.number.isRequired,
        totalPages: React.PropTypes.number.isRequired
    },

    isInRange(page) {
        return page > 0 && page <= this.props.totalPages;
    },

    render() {
        let directionDisplay;
        let page = this.props.currentPage;
        let isDisabled = '';
        let anchor;

        if(this.props.direction === 'previous') {
            page -= 1;
            directionDisplay = (
                <span>
                    <span aria-hidden="true"><Glyphicon glyph='chevron-left'/></span> {getLangText('Previous')}
                </span>
                );
        } else {
            page += 1;
            directionDisplay = (
                <span>
                    {getLangText('Next')} <span aria-hidden="true"><Glyphicon glyph='chevron-right'/></span>
                </span>
                );
        }

        if (this.isInRange(page)) {
            anchor = (
                <Link to="/collection"
                      query={{page}}
                      onClick={this.props.goToPage(page)}>
                    {directionDisplay}
                </Link>
            );
        } else {
            isDisabled += ' disabled';
            anchor = (
                <a>
                    {directionDisplay}
                </a>
            );
        }

        return (
            <li className={this.props.direction + isDisabled }>
                {anchor}
            </li>
        );
    }
});

export default PaginationButton;