var Cookie={};
Cookie.isEnabled=function(){return window.navigator.cookieEnabled;
};
Cookie.getCookie=function(D,C){var E=document.cookie;
var F=E.indexOf(D+"=");
var A=F+D.length+1;
if((!F)&&(D!=E.substring(0,D.length))){return null;
}if(F==-1){return null;
}var B=E.indexOf(";",A);
if(B==-1){B=E.length;
}return C?E.substring(A,B):unescape(E.substring(A,B));
};
Cookie.deleteCookie=function(A,C,B){if(Cookie.getCookie(A)){document.cookie=A+"="+((C)?"; path="+C:"")+((B)?"; domain="+B:"")+"; expires=Thu, 01-Jan-70 00:00:01 GMT";
}};
Cookie.setCookie=function(B,D,A,F,C,E){document.cookie=B+"="+escape(D)+((A)?"; expires="+A.toGMTString():"")+((F)?"; path="+F:"")+((C)?"; domain="+C:"")+((E)?"; secure":"");
};
//ads lazy load
function loadAd(src,id){
    src.match("sz=(.*)x([^;]*);");
    $('<iframe />', {
        frameBorder:'0',
        scrolling:'no',
        vspace:0,
        hspace:0,
        marginHeight:'0',
        marginWidth:'0',
        width:RegExp.$1 + 'px',
        height:RegExp.$2 + 'px',
        src:"http://dictionary.reference.com/doubleclickads?adTarget=" + src
        }).appendTo(id);
}

( function( $ ){
    $.fn.renderDisplayAds = function(options){
        //mashing the received options with the default options to enable override
        options = $.extend(true,{
            logic : "makeFrameSI",
            host : "http://ad.doubleclick.net/adj/",
            path : "5480.iac.dictionary/demo",
            displayAdTemplate : ['<html><body>','<script>window["inDapIf"]=true;<\/script>','','<script src="', null, '"><\/script>','<\/body><\/html>'],
            queryParameters : {
                kw : "",
                tile : "",
                pos : "",
                sz :"728x90",
                uag:"",
                uoc :"",
                uge:"",
                multiValueParam : {
                    qcseg:"D,T"
                },
                ord : Math.round(Math.random() * 1000000000)
            }
        },options);

        // Utilities functions that might be required for ad url creation and other util function
        var utils  = {
            constructUrl : function (opt,sourceType){
                if(sourceType == 'html'){
                    // this is the template that we use for script inject this is only for the Dart Ads
                    $encode= encodeURIComponent;
                    // slice the template so that local modifications do not corrupt the template
                    var html= opt.displayAdTemplate.slice();
                    // document domain is required for pages that have a different document domain so
                    // strongly tied to the template above
                    html[4] = utils.constructUrl(opt);
                    return $encode($encode(html.join("")));
                }else {
                    var arr = [];
                    $.each(options.queryParameters,function(key,value){
                        // There are a few parameters that require mutliple values to be sent  viz qsegs
                        if(key === "multiValueParam" ){
                            $.each(value, function(key,value){
                                var values = value.split(",");
                                for (var x in values)
                                    arr.push(key+"="+values[x]);
                            });
                        }else {
                            arr.push(key+"="+value);
                        }

                    });

                    return options.host + options.path +"?"+ arr.join(";")
                }

            },
            getWidth : function (opt){
                opt.queryParameters.sz.match("(.*)x(.*)");
                return RegExp.$1 + "px";
            },
            getHeight : function (opt){
                opt.queryParameters.sz.match("(.*)x(.*)");
                return RegExp.$2 + "px";
            }
        };

        this.each(function(index){
            this.id.match('[^_]*(?:_)?([^0-9]*)_([^_]*)(?:_)?(.*)?');
            var opt = options;
            opt.queryParameters.pos = RegExp.$1;
            opt.queryParameters.sz = RegExp.$2;
            opt.queryParameters.tile = index+1;//jquery Index starts from 0 but teh tile should start from 1
            $(this).css({
                width:utils.getWidth(opt),
                height : utils.getHeight(opt)
            });

            if (opt.logic == "ghostWriter"){
                try{
                    ghostwriter(this.id,{
                        script: {
                            src: utils.constructUrl(opt)
                        }
                    });
                }catch(e){
                    alert("please load the ghost writer js")
                }
            }else if(opt.logic == "makeFrameSI"){

                $('<iframe/>',{
                    width : utils.getWidth(opt),
                    height : utils.getHeight(opt),
                    frameBorder: 0,
                    vSpace: 0,
                    hSpace: 0,
                    marginHeight: 0,
                    marginWidth: 0,
                    scrolling: 'no',
                    src : (function (){
                        return 'javascript:decodeURIComponent("'+ utils.constructUrl(opt,'html') +'")';
                    })()
                }).appendTo(this);

            }
        });
        return options.logic;
    };
})(jQuery);

$(document).ready(function() {
    //shadowing for navtab
    $(".sel").next().addClass("thesa");
    //search box font
    $("#hdr input").click(function(){
        $("#hdr input").css('color','#000000');
    });
    //text focus
    if($("#q")){
        $("#q").focus();
        $("#hdr input").css('color','#000000');
    }
});
$(document).ready(function(){
    if($('#hlin>a')){
        $('#hlin>a').bind('mousedown',function(){
            updateQuery(this);
        });
    }
});
function enc(s)
{
    return (typeof encodeURIComponent != "undefined") ? encodeURIComponent(s) : escape(s);
}

function updateQuery(anc){
    var q = '';
    if($("input[name=q]") && $('[name=q]').val()){
        q = $('[name=q]').val()
        }
    var href = anc.href;
    var newHref = '';
    var browseIdx, qIdx;
    if (q != '') {
        if ((browseIdx = href.indexOf('.com/translate')) != -1) {
            var prefix = href.substr(0, browseIdx+14);
            newHref = prefix;
            var tailStart = href.indexOf('?');
            var queryIndex = href.indexOf('query=');
            var query = 'query';
            if(tailStart != -1 && queryIndex != -1){
                query = query.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
                var regexS = "[\\?&]"+query+"=([^&#]*)";
                var regex = new RegExp( regexS );
                var value = regex.exec(href);
                href = href.replace('query='+value[1],'query='+enc(q));
                newHref += href.substr(tailStart);
            }else if (tailStart != -1){
                newHref += href.substring(tailStart)+'&query=' + enc(q) ;
            }else{
                newHref += '?query=' + enc(q);
            }
        }else if ((browseIdx = href.indexOf('http://quotes.dictionary')) != -1) {
            href.match("(.[^\\?]*)(\\?.*)?");
            prefix = RegExp.$1;
            suffix = RegExp.$2;
            if(prefix != null && prefix.indexOf('.com/search/') != -1) prefix = 'http://quotes.dictionary.com/';
            newHref += prefix + 'search/' + enc(q)+suffix;
        }else if ((browseIdx = href.indexOf('http://flashcards.dictionary')) != -1) {
            href.match("(.[^\\?]*)(\\?.*)?");
            prefix = RegExp.$1;
            suffix = RegExp.$2;
            if(prefix != null && prefix.indexOf('search/') != -1) prefix = prefix.replace('.com/search/','.com/');
            if(suffix != null){
                qIndex = ampIndex = -1;
                if(suffix.indexOf('?q=') != -1){
                    qIndex = suffix.indexOf('?q=')
                    }
                else if(suffix.indexOf('&q=') != -1){
                    qIndex = suffix.indexOf('&q=')
                    }
                ampIndex = suffix.indexOf('&',(qIndex == -1? 0: qIndex));
                if(ampIndex > 0){
                    suffix = suffix.substring(0,ampIndex-1);
                }
                else if(qIndex >= 0){
                    suffix = suffix.substring(0,qIndex-1);
                }
            }
            suffix=(suffix==null || suffix == "")?"?q="+enc(q):suffix+"&q="+enc(q);
            newHref += prefix + 'search/' + suffix;
        }
        else if ((browseIdx = href.indexOf('http://spanish.dictionary')) != -1) {
            href.match("(.[^\\?]*)(\\?.*)?");
            prefix = RegExp.$1;
            suffix = RegExp.$2;
            if(prefix != null && prefix.indexOf('.com/definition/') != -1) prefix = 'http://spanish.dictionary.com/';
            newHref += prefix + 'definition/' + enc(q)+suffix;
        }
        else if ((browseIdx = href.indexOf('/browse/')) != -1) {
            var prefix = href.substr(0, browseIdx+8);
            var tailStart = href.indexOf('?');
            newHref = prefix + enc(q);
            if (tailStart != -1) {
                newHref += href.substr(tailStart);
            }
        }
        else if ((qIdx = href.indexOf('q=')) != -1) {
            var tailStart = href.indexOf('&', qIdx);
            var prefix = href.substr(0, qIdx+2);
            newHref = prefix + enc(q);
            if (tailStart != -1) {
                newHref += href.substr(tailStart);
            }
        }
        else {
            var extractDictURL = href;
            var dictURL=href;
            var tailStart = href.indexOf('u=');
            var baseHref = "";
            if (tailStart != -1) {
                dictURL = href.substr(tailStart+2);
                dictURL = unescape(dictURL.replace(/\+/g,  " "));
                baseHref = href.substr(0,tailStart-1)+"&u=";
            }
            newHref = dictURL;
            tailStart = dictURL.indexOf('?');
            var prefix="";
            if (tailStart != -1) {
                prefix = dictURL.substr(tailStart);
                newHref = dictURL.substr(0,tailStart);
            }
            if (newHref.substr(newHref.length-1,newHref.length) != '/') {
                if(newHref.indexOf('.ask.com')==-1) {
                    newHref += '/';
                }
            }
            if(newHref.indexOf('.reference.com')!= -1 || newHref.indexOf('thesaurus.com')!= -1) {
                if(newHref.indexOf('/browse') ==-1){
                    newHref+="browse/";
                }
                newHref+= enc(q) + prefix;
            }else if(newHref.indexOf('.ask.com/') != -1){
                prefix = prefix.replace(/q=&/, "q="+enc(q)+"&");
                newHref+=prefix;
            }
            //newHref += "browse/"+ enc(q) + prefix;
            if(baseHref!=""){
                newHref=baseHref+escape(newHref);
            }
        }
        if (newHref != '') {
            anc.href = newHref;
        }
    }
    else if(q==''){
        if ((browseIdx = href.indexOf('/browse/'))!= -1) {
            newHref = href;
            newHref = newHref.substring(0,browseIdx);
            var tailStart = href.indexOf('?');
            if (tailStart != -1) {
                newHref += href.substr(tailStart);
            }
        }
        if ((browseIdx = href.indexOf('.com/translate'))!= -1) {
            newHref = href;
            newHref = newHref.substring(0,browseIdx+14);
            var tailStart = href.indexOf('?');
            if (tailStart != -1) {
                newHref += href.substr(tailStart);
            }
        }
        if (newHref != '') {
            anc.href = newHref;
        }

    }
    return true;
}

function formcheck(){
    if($("input[name=q]") && $('[name=q]').val()){
        query = $("input[name=q]").val();
        query = query.replace(/ /g,'_');
        location.href = "http://dictionary.reference.com/browse/"+query;
    }
    return false;
}


