function toggleBox(el) {
    var img = $(el+"_img");
    if ($(el).style.display == "none") {
        Effect.SlideDown(el, {duration:0.3});
        if (img != null)
            img.src = "images/toggle_minus.png";
    } else {
        Effect.SlideUp(el, {duration:0.3});
        if (img != null)
            img.src = "images/toggle_plus.png";
    }
}

function printFactSheet(url) {
    var printWindow = window.open(url);
}


function toggleWait() {
    var whiteout = $("whiteout");
    var popup = $("genericPopup");

    if (whiteout.style.display == 'none') {
        whiteout.show();
        var content = popup.select('.content')[0];
        content.innerHTML = '<img src="images/ajax-loader.gif"/> Please wait while we retrieve your results...';
        new Effect.Appear(popup);
    } else {
        whiteout.hide();
        popup.hide();
    }
}

var favoriteRemovedEvent = function() {};
function addToFavorites(id, el) {
    genericFavoriteFunction('add', id, el);
    return;

    Element.extend(el);
    $("whiteout").show();
    var popup = $("genericPopup");
    var content = popup.select('.content')[0];
    content.style.textAlign = 'center';
    content.innerHTML = '<a href="#" class="close" onclick="popup_close(this); return false;"><img src="images/close.png"/></a>';
    content.innerHTML += '<img src="images/ajax-loader.gif"/> Saving to Favorites...';
    var afterAppear = function() {
        new Ajax.Request('ajax/addToFavorites.php?id=' + id,
        {
            onSuccess: function (response) {
                content.innerHTML = '<a href="#" class="close" onclick="popup_close(this); return false;"><img src="images/close.png"/></a>';
                var result = JSON.parse(response.responseText);
                content.innerHTML += result.message;
                console.log(result);
                if (result.result == 1) {
                    el.innerHTML = '<img src="images/action-save.gif"/> Remove Favorite';
                    el.onclick = function() {
                        el.blur();
                        removeFromFavorites(id, el);
                        return false;
                    };
                } else if (result.result == -1) { // Need to login condition
                    content.innerHTML += '<a href="log-in.html?ref=' + pageRef;
                    content.innerHTML += '">Click here to log in or register.</a> ';
                    content.innerHTML += 'After logging in, you will be taken back to ';
                    content.innerHTML += 'this page.';
                }
            }
        });
    }
    new Effect.Appear(popup, {afterFinish: afterAppear});
}

function removeFromFavorites(id, el) {
    genericFavoriteFunction('remove', id, el);
}

function genericFavoriteFunction(action, id, el) {
    Element.extend(el);
    $("whiteout").show();
    var popup = $("genericPopup");
    var content = popup.select('.content')[0];
    content.style.textAlign = 'center';
    content.innerHTML = '<a href="#" class="close" onclick="popup_close(this); return false;"><img src="images/close.png"/></a>';
    var targetURL;
    if (action == 'add') {
        content.innerHTML += '<img src="images/ajax-loader.gif"/> Saving to Favorites...';
        targetURL = 'ajax/addToFavorites.php';
    } else {
        content.innerHTML += '<img src="images/ajax-loader.gif"/> Removing from Favorites...';
        targetURL = 'ajax/removeFromFavorites.php';
    }
    var afterAppear = function() {
        new Ajax.Request(targetURL + '?id=' + id,
        {
            onSuccess: function (response) {
                content.innerHTML = '<a href="#" class="close" onclick="popup_close(this); return false;"><img src="images/close.png"/></a>';
                var result = JSON.parse(response.responseText);
                content.innerHTML += result.message;

                if (result.result == 1) {
                    if (action == 'add') {
                        el.innerHTML = '<img src="images/action-save.gif"/> Remove Favorite';
                        el.onclick = function() {
                            el.blur();
                            removeFromFavorites(id, el);
                            return false;
                        };
                    } else {
                        el.innerHTML = '<img src="images/action-save.gif"/> Add to Favorites';
                        el.onclick = function() {
                            el.blur();
                            addToFavorites(id, el);
                            return false;
                        };
                        favoriteRemovedEvent();
                    }
                } else if (result.result == -1) { // Need to login condition
                    var message = '<br/><br/><a href="log-in.html?ref=' + pageRef + '">';
                    message += 'Click here to log in or register.</a> ';
                    message += 'After logging in, you will be taken back to ';
                    message += 'this page.';
                    content.innerHTML += message;
                }
            }
        });
    }
    new Effect.Appear(popup, {afterFinish: afterAppear});
}

var requestAShowingLock = false;
function requestAShowing(id) {
    $("whiteout").show();
    var popup = $("requestPopup");
    $("mlsnum").value = id;
    new Effect.Appear(popup);
}
function sendRequest(el) {
    Element.extend(el);
    el.request({
        onComplete: function(transport) {
            var response = JSON.parse(transport.responseText);

            if (response.result == 0) {
                alert(response.message);
            } else {
                alert(response.message);

                new Effect.Fade($("whiteout"));
                new Effect.Fade(el.parentNode.parentNode, {
                    afterFinish: function() {
                        el.reset();
                    }
                });
            }
        }
    });
}

function popup_close(element) {
    var mainElement = element.parentNode.parentNode;
    new Effect.Fade(mainElement, {
        duration: 0.5,
        afterFinish: function() {new Effect.Fade("whiteout", {duration: 0.3})}
    });
}

function activatePlaceholders() {
    var detect = navigator.userAgent.toLowerCase();
    if (detect.indexOf("safari") > 0) return false;
    var inputs = document.getElementsByTagName("input");
    for (var i=0;i<inputs.length;i++) {
        if (inputs[i].getAttribute("type") == "text") {
            if (inputs[i].getAttribute("placeholder") && inputs[i].getAttribute("placeholder").length > 0) {
                inputs[i].value = inputs[i].getAttribute("placeholder");
                inputs[i].className += " unfocus";
                inputs[i].onfocus = function() {
                    if (this.value == this.getAttribute("placeholder")) {
                        this.value = "";
                    }
                    this.className = this.className.replace(" unfocus", " focus");
                    return false;
                }
                inputs[i].onblur = function() {
                    if (this.value.length < 1) {
                        this.value = this.getAttribute("placeholder");
                        this.className = this.className.replace(" focus", " unfocus");
                    }
                }
            }
        }
    }
}

function resetPlaceholders() {
    var detect = navigator.userAgent.toLowerCase();
    if (detect.indexOf("safari") > 0) return false;
    var inputs = document.getElementsByTagName("input");
    for (var i=0;i<inputs.length;i++) {
        if (inputs[i].getAttribute("type") == "text") {
            if (inputs[i].getAttribute("placeholder") && inputs[i].getAttribute("placeholder").length > 0) {

                if (inputs[i].value == inputs[i].getAttribute("placeholder"))
                    inputs[i].value = "";
                /*
                inputs[i].value = inputs[i].getAttribute("placeholder");
                inputs[i].className += " unfocus";
                inputs[i].onfocus = function() {
                    if (this.value == this.getAttribute("placeholder")) {
                        this.value = "";
                    }
                    this.className = this.className.replace(" unfocus", " focus");
                    return false;
                }
                inputs[i].onblur = function() {
                    if (this.value.length < 1) {
                        this.value = this.getAttribute("placeholder");
                        this.className = this.className.replace(" focus", " unfocus");
                    }
                }
                */
            }
        }
    }
}

function replaceOL() {
    var ols = $$('ol.imgreplace');

    // Loop through ols
    for (var i = 0; i < ols.length; i++) {
        var ol = ols[i];
        var lis = ol.select('li');

        for (var a = 0; a < lis.length; a++) {
            var li = lis[a];
            li.style.listStyleImage = "url('images/list-" + (a+1) + ".png')";
        }
    }
}

/*
 * Browser detection thanks to quirksmode.org/js/detect.html
 */
var BrowserDetect = {
	init: function () {
		this.browser = this.searchString(this.dataBrowser) || "An unknown browser";
		this.version = this.searchVersion(navigator.userAgent)
			|| this.searchVersion(navigator.appVersion)
			|| "an unknown version";
		this.OS = this.searchString(this.dataOS) || "an unknown OS";
	},
	searchString: function (data) {
		for (var i=0;i<data.length;i++)	{
			var dataString = data[i].string;
			var dataProp = data[i].prop;
			this.versionSearchString = data[i].versionSearch || data[i].identity;
			if (dataString) {
				if (dataString.indexOf(data[i].subString) != -1)
					return data[i].identity;
			}
			else if (dataProp)
				return data[i].identity;
		}
	},
	searchVersion: function (dataString) {
		var index = dataString.indexOf(this.versionSearchString);
		if (index == -1) return;
		return parseFloat(dataString.substring(index+this.versionSearchString.length+1));
	},
	dataBrowser: [
		{
			string: navigator.userAgent,
			subString: "Chrome",
			identity: "Chrome"
		},
		{string: navigator.userAgent,
			subString: "OmniWeb",
			versionSearch: "OmniWeb/",
			identity: "OmniWeb"
		},
		{
			string: navigator.vendor,
			subString: "Apple",
			identity: "Safari",
			versionSearch: "Version"
		},
		{
			prop: window.opera,
			identity: "Opera"
		},
		{
			string: navigator.vendor,
			subString: "iCab",
			identity: "iCab"
		},
		{
			string: navigator.vendor,
			subString: "KDE",
			identity: "Konqueror"
		},
		{
			string: navigator.userAgent,
			subString: "Firefox",
			identity: "Firefox"
		},
		{
			string: navigator.vendor,
			subString: "Camino",
			identity: "Camino"
		},
		{		// for newer Netscapes (6+)
			string: navigator.userAgent,
			subString: "Netscape",
			identity: "Netscape"
		},
		{
			string: navigator.userAgent,
			subString: "MSIE",
			identity: "Explorer",
			versionSearch: "MSIE"
		},
		{
			string: navigator.userAgent,
			subString: "Gecko",
			identity: "Mozilla",
			versionSearch: "rv"
		},
		{ 		// for older Netscapes (4-)
			string: navigator.userAgent,
			subString: "Mozilla",
			identity: "Netscape",
			versionSearch: "Mozilla"
		}
	],
	dataOS : [
		{
			string: navigator.platform,
			subString: "Win",
			identity: "Windows"
		},
		{
			string: navigator.platform,
			subString: "Mac",
			identity: "Mac"
		},
		{
			   string: navigator.userAgent,
			   subString: "iPhone",
			   identity: "iPhone/iPod"
	    },
		{
			string: navigator.platform,
			subString: "Linux",
			identity: "Linux"
		}
	]

};
BrowserDetect.init();

// Dynamically load specific css files
if (BrowserDetect.browser == 'Firefox') {
    loadjscssfile('css/style-ff.css', 'css');
}

function loadjscssfile(filename, filetype){
     if (filetype=="js"){ //if filename is a external JavaScript file
        var fileref=document.createElement('script')
        fileref.setAttribute("type","text/javascript")
        fileref.setAttribute("src", filename)
     }
     else if (filetype=="css"){ //if filename is an external CSS file
        var fileref=document.createElement("link")
        fileref.setAttribute("rel", "stylesheet")
        fileref.setAttribute("type", "text/css")
        fileref.setAttribute("href", filename)
     }
     if (typeof fileref!="undefined")
        document.getElementsByTagName("head")[0].appendChild(fileref)
}
