function inArray (arr, value) {
    var i;
    for (i=0; i < arr.length; i++) {
        if (arr[i] === value) {
            return true;
        }
    }
    return false;
}

function toggleCountries() {
    if (document.body.className.indexOf('SHOW_COUNTRIES') == -1) {
        document.body.className += ' SHOW_COUNTRIES';
        httpRequest('/ajax/show_countries');
    } else {
        document.body.className = document.body.className.replace(' SHOW_COUNTRIES', '');
        httpRequest('/ajax/hide_countries');
    }
}

function httpRequest(url, oncomplete)
{
    var xmlHttpRequest = null;
    
    if (window.XMLHttpRequest) {
        try {
            xmlHttpRequest = new XMLHttpRequest();
        } catch (e){}
    } else if (window.ActiveXObject) {
        try {
            xmlHttpRequest = new ActiveXObject('Msxml2.XMLHTTP');
        } catch (e){
            try {
                xmlHttpRequest = new ActiveXObject('Microsoft.XMLHTTP');
            } catch (e){}
        }
    }
    
    if (xmlHttpRequest)
    {
        xmlHttpRequest.open('GET', url, true);
        var headers = {
            'X-Requested-With' : 'XMLHttpRequest',
            'Content-type' : 'application/x-www-form-urlencoded',
            'Connection' : 'close',
            'If-Modified-Since' : new Date(0)
        }
        
        for (var key in headers) {
            xmlHttpRequest.setRequestHeader(key, headers[key]);
        }
        
        xmlHttpRequest.onreadystatechange = function() {
            if (xmlHttpRequest.readyState == 4 && xmlHttpRequest.status == 200) {
                if (oncomplete) {
                    oncomplete(xmlHttpRequest.responseText);
                }
            }
        }
        
        xmlHttpRequest.send();
    }
}

function SelectList(node, changeFunc) {
    var bz = this;
    this.change = changeFunc;
    
    this.selectNode = node;
    
    this.divNode = document.createElement('div');
    this.divNode.className = 'custom-select-container';
        
    if (this.selectNode.className) {
        this.selectNode.className += ' ';
    }
    
    this.selectNode.className += 'custom-select';
    
    this.selectNode.parentNode.insertBefore(this.divNode, this.selectNode);
    this.divNode.appendChild(this.selectNode);
    
    this.arrowNode = document.createElement('div');
    this.arrowNode.className = 'arrow';
    
    this.wrapperNode = document.createElement('div');
    this.wrapperNode.className = 'wrapper';
    this.wrapperNode.innerHTML = this.selectNode.options[this.selectNode.selectedIndex].text;
        
    this.optionsNode = document.createElement('div');
    this.optionsNode.className = 'options';
    
    for (var i = 0; i < this.selectNode.options.length; ++i) {
        var option = document.createElement('p');
            option.className = 'option';
            option.innerHTML = this.selectNode.options[i].text;
            
            Event.add(option, 'mouseover', function() {
                this.className = 'option hover';
            });
            
            Event.add(option, 'mouseout', function() {
                this.className = 'option';
            });
            
            Event.add(option, 'click', function(index) {
                return function(event) {
                    bz.selectNode.selectedIndex = index;
                    bz.wrapperNode.innerHTML = bz.selectNode.options[bz.selectNode.selectedIndex].text;
                    bz.change();
                    bz.toggle();
                }
            }(i));
        
        this.optionsNode.appendChild(option);
    }
        
    this.divNode.appendChild(this.arrowNode);
    this.divNode.appendChild(this.optionsNode);
    this.divNode.appendChild(this.wrapperNode);
    
    Event.add(this.wrapperNode, 'click', function(event) {
        bz.toggle(event);
    });
}

SelectList.prototype.toggle = function() {
    if (!this.optionsNode.style.display || this.optionsNode.style.display == 'none') {
        this.optionsNode.style.display = 'block';
    } else {
        this.optionsNode.style.display = 'none';
    }
};

Dialog = {
    init: function() {
        this.node = document.createElement('div');
        this.node.className="dialog-box";
    },
    
    show: function() {
        this.node.style.display = 'block';
    },
    
    hide: function() {
        this.node.style.display = 'none';
    }
}
