
// create Skyscanner namespaces
SS = window['SS'];
trackingAdvertAllowedMarkets = '';
trackingAdvertAllowedCultures = '';

if ("undefined" == typeof(SS)) {
    SS = window['SS'] = {
        core:{},
		entities:{},
		models:{},
		views:{},
		controllers:{},
		services: {},
		query: {
		    lang: 'en',
		    blogCulture:'en',
		    blogUrl:'http://www.skyscanner.net/news/',
		    snDeparture:'uk',
		    snCCy:'GBP',
		    ucy:''
		}
    }
}


SS.advertData = {};

var SS_query = SS.query;

// Global objects are evil.  Let's make some!
var $D = YAHOO.util.Dom,
	$E = YAHOO.util.Event,
	$L = YAHOO.lang;	

(function() {


    SS.utils = {       
        addBrowserCSSClassToBody: function() {
            var uaName = "";
            if (YAHOO.env.ua.opera) uaName = "opera";
            if (YAHOO.env.ua.gecko) uaName = "firefox";
            if (YAHOO.env.ua.ie) {
                uaName = "ie";
                uaName = "ie ie" + parseInt(YAHOO.env.ua.ie);
            }
            var ua = navigator.userAgent.toLowerCase();
            var isSafari = /safari/.test(ua) && !(/chrome/.test(ua));
            if (isSafari) {
                uaName = "safari";
                var rx = new RegExp("\/3[^\/]*safari\/", "i");
                if (ua.match(rx)) uaName = "safari3";
            }
            if (uaName != "") $D.addClass(document.body, uaName);
        },

        getUrlParam: function(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]);
        },

        utf8: function(wide) {
            var c, s, enc = "", i = 0
            while (i < wide.length) {
                c = wide.charCodeAt(i++);
                if (c >= 0xDC00 && c < 0xE000) continue;
                if (c >= 0xD800 && c < 0xDC00) {
                    if (i >= wide.length) continue;
                    s = wide.charCodeAt(i++);
                    if (s < 0xDC00 || c >= 0xDE00) continue;
                    c = ((c - 0xD800) << 10) + (s - 0xDC00) + 0x10000;
                }
                if (c < 0x80) enc += String.fromCharCode(c);
                else if (c < 0x800) enc += String.fromCharCode(0xC0 + (c >> 6), 0x80 + (c & 0x3F));
                else if (c < 0x10000) enc += String.fromCharCode(0xE0 + (c >> 12), 0x80 + (c >> 6 & 0x3F), 0x80 + (c & 0x3F));
                else enc += String.fromCharCode(0xF0 + (c >> 18), 0x80 + (c >> 12 & 0x3F), 0x80 + (c >> 6 & 0x3F), 0x80 + (c & 0x3F));
            }
            return enc;
        },

        toHex: function(n) {
            var hexchars = "0123456789ABCDEF";
            return hexchars.charAt(n >> 4) + hexchars.charAt(n & 0xF);
        },

        encodeURIComponentNew: function(s) {
            var okURIchars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_-"
            var s = this.utf8(s), c, enc = ""
            for (var i = 0; i < s.length; i++) {
                if (okURIchars.indexOf(s.charAt(i)) == -1) enc += "%" + this.toHex(s.charCodeAt(i))
                else enc += s.charAt(i);
            }
            return enc;
        },

        encodeURL: function(url) {
            if (url == "") return ""
            return (typeof encodeURIComponent == "function") ? (encodeURIComponent(url)) : (encodeURIComponentNew(url))
        },

        getCookie: function(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;
        }
    };

    SS.views.SearchNews = function() {
    }
    SS.views.SearchNews.prototype = {
        onMouseOver: function(e) {
            var elTarget = $E.getTarget(e);

            var pn = elTarget.parentNode;
            if (pn) {
                if (!$D.hasClass(pn, "hover"))
                    $D.addClass(pn, "hover");
            }
        },

        init: function() {
            var btnEl = $D.get("search_news_button");
            if (btnEl) {
                $E.addListener(btnEl, "mouseover", this.onMouseOver, this, true);
                $E.addListener(btnEl, "mouseout", function() {
                    var pn = btnEl.parentNode;
                    if (pn) {
                        if ($D.hasClass(pn, "hover"))
                            $D.removeClass(pn, "hover");
                    }
                }, this, true);
            }

            var btnElResults = $D.get("search_news_button_results");
            if (btnElResults) {
                $E.addListener(btnElResults, "mouseover", this.onMouseOver, this, true);

                $E.addListener(btnElResults, "mouseout", function() {
                    var pn = btnElResults.parentNode;
                    if (pn) {
                        if ($D.hasClass(pn, "hover"))
                            $D.removeClass(pn, "hover");
                    }
                }, this, true);

            }
        }
    }


    /* ****** CONTROLS ****** */

    var determineUcyFromCookie = function() {
        var scanner = SS.utils.getCookie("scanner");

        var re = new RegExp('usrplace:::([^:]{2,5})');
        var m = re.exec(scanner);
        if (m != null) {
            SS.query.ucy = m[1];
        }
    }

    determineUcyFromCookie();

    var initSearchNews = function() {
        var view = new SS.views.SearchNews();
        view.init();
    }

    var showThumbnailImages = function() {
        var imgs = $D.getElementsByClassName("thumbnail", 'img', document.body);
        for (var i = 0; i < imgs.length; i++) {
            var img = imgs[i];
            var src = img.getAttribute("_src");
            if (src == null || src == '')
                continue;

            img.setAttribute("src", src);
        }
    }

    if (YAHOO.env.ua.ie) {
        $E.addListener(window, "load", function() {
            setTimeout(showThumbnailImages, 200);
        });
    }

    $E.onDOMReady(function() {
        initSearchNews();
        if (!YAHOO.env.ua.ie)
            showThumbnailImages();
    });
    /* ****** CONTROLS END ****** */

})();

