$(document).ready(function() {

    //  missing selector fix for old browsers
    $('table :last-child, .content-divider div:last-child').addClass('last-child');
    $('table :first-child, .content-divider div:first-child').addClass('first-child');


    //	change markup to use css property border-radius on supporting browsers
    var elms = $('#spot-wrapper-top .spot-media a');
    $.each(elms, function() {
        if (this.style.MozBorderRadius !== undefined || this.style.WebkitBorderRadius !== undefined) {
            var img = $(this).find('img');
            $(this).css({
                'background-image': 'url(' + img.attr('src') + ')'
            });
            img.remove();
        }
    });
    
    //  equal height .content-blocks within eacg .content-divider
    $.each($('.content-divider'), function(i, el) {
        var elms = $('.content-block', el),
            max = 0;
        
        $.each(elms, function() {
            max = max < this.offsetHeight ? this.offsetHeight : max;
        });
        elms.css({height: max});
    });

    //  print function for to print icon, if .n.a hide icon
    if (typeof window.print != 'undefined') {
        $('a[href="#print"]').click(function() {
            window.print();
        });
    } else $('a[href="#print"]').hide();

    //  epi-server rich-editor output fix
    //  <img>s are sometimes wrapped in <p>s
    $('.sublayout p > img').each(function() {
        var img = $(this);
        var p = img.parent();
        p.after(img);
        p.remove();
    });



    /*  TODO : turn into module */
    //Site Search
    var domain = $(".searchbutton").attr('href');
    $(".searchbutton").attr('href', '');

    $(".searchfield").bind("keypress", function(e) {
        var characterCode;
        if (e && e.which) { //if which property of event object is supported (NN4)
            e = e;
            characterCode = e.which; //character code is contained in NN4's which property
        }
        else {
            e = event;
            characterCode = e.keyCode; //character code is contained in IE's keyCode property
        }
        if (characterCode == 13) { //if generated character code is equal to ascii 13 (if enter key)
            // Function is registered for multiple elements. Event is fired from input element
            // referenced from e.target
            var query = Url.encode(e.target.value);
            window.location = domain + query;
            return false;
        }

        return true;
    });

    $(".searchbutton").click(function(e) {
        // Function is registered for multiple elements. Event is fired from A element
        // We really only need e.target.previousSibling but FF handling of empty text nodes
        // requires to find firstchild by loop
        var c = e.target.parentNode.childNodes;
        for (var i = 0; i < c.length; i++) {
            if (/searchfield/i.test(c[i].className))
                break;
        }
        var query = Url.encode(c[i].value);
        $(".searchbutton").attr('href', domain + query);
    });

}); 

/**
*
*  URL encode / decode
*  http://www.webtoolkit.info/
*
**/
 
var Url = {
 
	// public method for url encoding
	encode : function (string) {
		return escape(this._utf8_encode(string));
	},
 
	// public method for url decoding
	decode : function (string) {
		return this._utf8_decode(unescape(string));
	},
 
	// private method for UTF-8 encoding
	_utf8_encode : function (string) {
		string = string.replace(/\r\n/g,"\n");
		var utftext = "";
 
		for (var n = 0; n < string.length; n++) {
 
			var c = string.charCodeAt(n);
 
			if (c < 128) {
				utftext += String.fromCharCode(c);
			}
			else if((c > 127) && (c < 2048)) {
				utftext += String.fromCharCode((c >> 6) | 192);
				utftext += String.fromCharCode((c & 63) | 128);
			}
			else {
				utftext += String.fromCharCode((c >> 12) | 224);
				utftext += String.fromCharCode(((c >> 6) & 63) | 128);
				utftext += String.fromCharCode((c & 63) | 128);
			}
 
		}
 
		return utftext;
	},
 
	// private method for UTF-8 decoding
	_utf8_decode : function (utftext) {
		var string = "";
		var i = 0;
		var c = c1 = c2 = 0;
 
		while ( i < utftext.length ) {
 
			c = utftext.charCodeAt(i);
 
			if (c < 128) {
				string += String.fromCharCode(c);
				i++;
			}
			else if((c > 191) && (c < 224)) {
				c2 = utftext.charCodeAt(i+1);
				string += String.fromCharCode(((c & 31) << 6) | (c2 & 63));
				i += 2;
			}
			else {
				c2 = utftext.charCodeAt(i+1);
				c3 = utftext.charCodeAt(i+2);
				string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));
				i += 3;
			}
 
		}
 
		return string;
	}
 
}
