playerx / U20 Cup Eligibility Script

// ==UserScript==
// @name       U20 Cup Eligibility Script
// @namespace  http://playerx.hitwicket.com/
// @version    4.1
// @description  Script to show player's eligibility for u20 Cup
// @include      http://*hitwicket.com/transfer/index*
// @include      http://*hitwicket.com/transfer/applyAdvancedFilters*
// @include	   http://*hitwicket.com/premium/players/index*
// @include	   http://*hitwicket.com/players/index*
// @include		http://*hitwicket.com/player/show/*
// @copyright  2012+, PlayerX
// ==/UserScript==

function interceptAjax () {

    function getDisplayMessage(year) {
        return "<span class='eligibility' style='align:right;padding:3px;margin:2px;color:white;background-color:green;font-weight:bold;font-size:14px;'>U20-" + year + " Player</span>"
    }

    function calc_age(player_age_year,player_age_days)
    {
        var u20cutoffdate = new Date(2014,01,20); //Feb 20 2014
        var u20versionOffset = 5; //version for the above u20cutoffdate
        var oneDay = 24*60*60*1000;
        var oneYear = oneDay * 70; //70days in a year in hw
        var today = new Date();
        var dd = today.getDate();
        var mm = today.getMonth(); //January is 0!
        var i=0;
        var isRunningU20VersionFound = false;
        var runningU20Version;
        while(!isRunningU20VersionFound) {
            //old u20 cutoff date?? 
            if(u20cutoffdate.getTime() < today.getTime()) {
                u20cutoffdate = new Date(u20cutoffdate.getTime() + oneYear);
                u20versionOffset++;
            }
            else {
                isRunningU20VersionFound = true;
            }
        }
        var fno="<span class='eligibility'></span>";
        var yyyy = today.getFullYear();
        var todaysDate = new Date(yyyy,mm,dd);
        var diffDays = Math.abs((todaysDate.getTime() - u20cutoffdate.getTime())/(oneDay));
        var c,d,e,t;
        c=player_age_days+diffDays;
        d=c/70;e=c%70;
        t=player_age_year+d;t=parseInt(t);
        if(t<=17){return getDisplayMessage(u20versionOffset)+getDisplayMessage(u20versionOffset+1)+getDisplayMessage(u20versionOffset+2)+"<br/>"};
        if(t<=18){return getDisplayMessage(u20versionOffset)+getDisplayMessage(u20versionOffset+1)+"<br/>"};
        if(t<=19){if(e<=69) return getDisplayMessage(u20versionOffset)+"<br/>"; else return fno;} else return fno;
    }

    function updateEligibilityInfo() {
        //console.debug("list-card" + $( "div.new_player_card" ).size());
        $( "div.new_player_card" ).each(function() {
            if($(this).find("span.eligibility").size() > 0) {
                return;
            }
            var ageFull;
            /*if($(this).find("p.transfer").size() > 0) {
                ageFull = $($(this).find("span.age").first().text();
            }
            else {
                ageFull = $(this).find("span.age").first().text();
            }
            */
            ageFull = $(this).find("div.player_age").first().text();
            //console.debug("ageFull:" + ageFull);
            var ageAsArr = ageFull.split(" ");
           // console.debug("age:" + ageAsArr);
            var yr = ageAsArr[0].trim().substring(0,2);
            var days = ageAsArr[1].trim();
            days = days.substring(0,days.indexOf("days"));
            //console.debug("Newage:" + yr + "=" + days);
            var eligibilityMessage = calc_age(parseInt(yr),parseInt(days));
           /* if($(this).find("div.player_tags").size() == 0) {
                console.debug("player_tags");
	            $(this).find("div").first().append(eligibilityMessage;
            }
            else {*/
                //console.debug("adding to side_sills");
                //$(this).find("div.new_player_card").first().prepend("<div>" + eligibilityMessage + "</div>");
            $(this).prepend("<div>" + eligibilityMessage + "</div>");
            //}
        });
    }

    $(document).ajaxSuccess (
        function (event, requestData)
        {
            updateEligibilityInfo();
        }
    );
    updateEligibilityInfo();
}

function addJS_Node (text, s_URL, funcToRun) {
    var D                                   = document;
    var scriptNode                          = D.createElement ('script');
    scriptNode.type                         = "text/javascript";
    if (text)       scriptNode.textContent  = text;
    if (s_URL)      scriptNode.src          = s_URL;
    if (funcToRun)  scriptNode.textContent  = '(' + funcToRun.toString() + ')()';

    var targ    = D.getElementsByTagName('head')[0] || D.body || D.documentElement;
    targ.appendChild (scriptNode);
}

addJS_Node ("updateEligibilityInfo", null, interceptAjax);
interceptAjax();