function createStyleLink(url) {
    let res = document.createElement("link");
    res.rel = "stylesheet"; 
    res.href = url;
    document.head.appendChild(res); 
}

function find_squad() {
    var element = document.getElementById("find_squad_open");
    element.classList.toggle("show");
}

createStyleLink("https://images.hindi.news18.com/ibnkhabar/uploads/assets/event/common/css/ipl_home_strip_1612930954.css");
createStyleLink("https://fonts.googleapis.com/css2?family=PT+Serif:ital,wght@1,400;1,700&display=swap");

if(!window.Glide){
    var script = document.createElement('script');
    script.type = "text/javascript";
    script.src = "https://images.hindi.news18.com/ibnkhabar/uploads/assests/js/glide.min.js";
    document.getElementsByTagName('head')[0].appendChild(script);
}

async function initWidget () {
    let iplTeamData = {}, auctionPlayersData = {};
    
    try {
        iplTeamData = await fetch("https://election.nw18.com/electiondata/electionjson/ipl_auction_2023/ipl_auction_teams_regional.json");
        iplTeamData = await iplTeamData.json();
    } catch(error) {
        console.log("Ipl teamdata fetch error", new Date());
        iplTeamData={}
    }
    
    try {
        auctionPlayersData = await fetch("https://election.nw18.com/electiondata/electionjson/ipl_auction_2023/ipl_auction_players.json");
        auctionPlayersData = await auctionPlayersData.json();
    } catch(error) {
        console.log("Ipl teamdata fetch error", new Date());
        auctionPlayersData = {}
    } 
    // sets the visibility of the widget
    let siteUrl = window.location.href,
        onOff = 1,
        liveBlogLink = '';
        siteDomain = siteUrl.split(".")[0].split("//")[1],
        siteLanguage = 'tamil',
        languages = [ 
            "english", 
            "hindi",
            "gujarati",
            "bengali",
            "lokmat",
            "kannada",
            "tamil",
            "malayalam",
            "telugu",
            "punjabi",
            "assam",
            "odia",
            "urdu",
            "punjab",
        ];
    
        languages.forEach(lang => {
            if(siteDomain.includes(lang) && lang === 'punjab') {
                siteLanguage = 'punjabi'
            } else if(siteDomain.includes(lang)){
                siteLanguage = lang
            }
        });
        
        let absolutePath = "https://"+siteLanguage+".news18.com/";
        if(siteDomain.includes('stg')){
            absolutePath = "https://stg"+siteLanguage+".news18.com/";
        } else if(siteDomain.includes('beta') && !siteDomain.includes('-qc')) {
            absolutePath = "https://beta"+siteLanguage+".news18.com/";
        }else if(siteDomain.includes('-qc')) {
            absolutePath = "https://beta"+siteLanguage+"-qc.news18.com/";
        }else if(siteDomain.includes('dev')) {
            absolutePath = "http://dev"+siteLanguage+".news18.com/";
        }

        Object.keys(iplTeamData?.ipl_auction_teams[0]).forEach((siteKey)=>{
            if(siteKey === siteLanguage) {
                let siteData = iplTeamData?.ipl_auction_teams[0][siteKey];
                onOff = Number.parseInt(siteData?.onoff);
                liveBlogLink = siteData?.url;
            }
        });

        if(siteDomain.includes('dev')){
			onOff = 1;
		}
		
    // condition which checks the visibility and response data to proceed
    if((Object.keys(auctionPlayersData) || []).length && (Object.keys(iplTeamData) || []).length && onOff) {
        let iplLiveUpdateText = iplTeamData?.ipl_auction_teams[0]?.text;
        let iplLiveTextClass = iplLiveUpdateText.toLowerCase().trim() !== 'live updates' ? 'ipl_widget_highlight' : '';
        
        let playersTeamList = auctionPlayersData?.ipl_auction_players?.teams;
        let playersTeamListKeys = Object.keys(playersTeamList);
        
        let playersArray = [];
        playersTeamListKeys.forEach((teams)=>{
            (playersTeamList[teams] || []).forEach((player)=>{
                const {playername, tallydisplay} = player;
                let checkIfPlayerExists = playersArray.find(p => p && p.playername === playername) 
                if(!checkIfPlayerExists && tallydisplay){
                    playersArray.push(player);
                }
            })
        })
        
        playersArray.sort((a, b)=>{return Number.parseInt(a.tallydisplay) - Number.parseInt(b.tallydisplay)});
        let playersList = ``;
        let dotsButton = ``;
        let moneyUnit = siteLanguage === 'hindi' ? '?????' : 'CR.';
        playersArray.forEach((player,index)=>{
        	if (index > 10) {
			    return;
			}
            let {playername,ipl2022team,ipl2023team,type,playernamehindi, costinrcr, typehindi} = player,
            teamClassName = ipl2023team.trim() === "PBKS" ? "pbks" : ipl2023team.toLowerCase(),
            displayName = siteLanguage === 'hindi' && playernamehindi ? playernamehindi : playername,
            displayType = siteLanguage === 'hindi' && typehindi ? typehindi : type,
            playerLink = teamUrl(ipl2023team);
            playersList +=`<div class="ipl_widget_row ${teamClassName}">
            <a href="${playerLink}">
                        <div class="ipl_widget_row_left">
                        <p>${displayName}</p>
                        <span>${ipl2023team} | ${displayType}</span>
                        </div>
                        <p class="ipl_widget_row_right">&#x20B9 ${costinrcr}<br/><span>(${moneyUnit})</span></p>
                        </a>
                        </div>`;
                        dotsButton += `<button class="glide__bullet" data-glide-dir="=${index}"></button>`;
        })

        function teamUrl(teamName) {
            let url = "ipl-auction";
            if(teamName == 'GT'){
                url = "ipl-auction/gt-players-list-2/";
            } else if(teamName == 'CSK'){
                url = "ipl-auction/csk-players-list-3/";
            } else if(teamName == 'DC'){
                url = "ipl-auction/dc-players-list-4/";
            } else if(teamName == 'KKR'){
                url = "ipl-auction/kkr-players-list-5/";
            } else if(teamName == 'PBKS'){
                url = "ipl-auction/pbks-players-list-6/";
            } else if(teamName == 'LSG'){
                url = "ipl-auction/lsg-players-list-7/";
            } else if(teamName == 'MI'){
                url = "ipl-auction/mi-players-list-8/";
            } else if(teamName == 'RCB'){
                url = "ipl-auction/rcb-players-list-9/";
            } else if(teamName == 'RR'){
                url = "ipl-auction/rr-players-list-10/";
            } else if(teamName == 'SRH'){
                url = "ipl-auction/srh-players-list-11/";
            }

            return siteLanguage === 'hindi'? `/${url}` : `${absolutePath}${url}`;
        }
                    
        let dropDownLlist = `
        	<li><a href="${absolutePath}ipl-auction/top-10-players-list-1/">Top 10 Buys</a></li>
            <li><a href="${absolutePath}ipl-auction/gt-players-list-2/">Gujarat Titans</a></li>
            <li><a href="${absolutePath}ipl-auction/csk-players-list-3/">Chennai Super Kings</a></li>
            <li><a href="${absolutePath}ipl-auction/dc-players-list-4/">Delhi Capitals</a></li>
            <li><a href="${absolutePath}ipl-auction/kkr-players-list-5/">Kolkata Knight Riders</a></li>
            <li><a href="${absolutePath}ipl-auction/kxip-players-list-6/">Punjab Kings</a></li>
            <li><a href="${absolutePath}ipl-auction/lsg-players-list-7/">Lucknow Super Giants</a></li>
            <li><a href="${absolutePath}ipl-auction/mi-players-list-8/">Mumbai Indians</a></li>
            <li><a href="${absolutePath}ipl-auction/rcb-players-list-9/">Royal Challengers Bangalore</a></li>
            <li><a href="${absolutePath}ipl-auction/rr-players-list-10/">Rajasthan Royals</a></li>
            <li><a href="${absolutePath}ipl-auction/srh-players-list-11/">Sunrisers Hyderabad</a></li>
            <li><a href="${absolutePath}ipl-auction/unsold-players-list-12/">Unsold Players</a></li>
        `;
        
        let detailPageLink = `${absolutePath}ipl-auction/`,
            iplAuctionText = 'IPL Auction 2023',
            iplLiveBlogText = 'IPL Auction',
            iplDetailView = 'Detailed view',
            findPlayerSquad = 'Find player by squad',
            classForUrudu =  "",
            iplAuctionLink = detailPageLink ,
            hideDetailedView = "";

        let iplWidget = `<style>
                .ipl_widget_highlight::after {
                    display: none;
                }
                .ipl_widget_text span a{
                    text-decoration: none;
                    color: #fff;
                }
                #ipl_widget {
                    min-height: 62px;
                }
            </style>
            <div class="ipl_widget_outter ${classForUrudu}">
                <div class="ipl_widget">
                    <div class="ipl_widget_left">
                        <a href="${iplAuctionLink}">
                            <p class="ipl_widget_text ${iplLiveTextClass}" id="ipl_widget_text">${iplLiveUpdateText}<span>${iplAuctionText}</span></p>
                            <i><img src="https://images.hindi.news18.com/ibnkhabar/uploads/assets/event/common/others/players_icon_1612895589.svg"/></i>
                        </a>	
                        <a href="${detailPageLink}" class="detailedview ${hideDetailedView}">${iplDetailView}</a>
                    </div>
                    <div class="ipl_widget_midd">
                        <div class="ipl_widget_slider">
                            <div class="glide__track" data-glide-el="track">
                                <div class="glide__slides" id="players-list">
                                    ${playersList}
                                </div>
                            </div>
                            <div class="glide__bullets" id="glide__bullets_id" data-glide-el="controls[nav]">
                            ${dotsButton}
                            </div>
                        </div>
                    </div>
                    <div class="ipl_widget_right">
                        <a href="${liveBlogLink}" class="ipl_liveblog">${iplLiveBlogText}</a>
                        <button onclick="find_squad()" class="find_squad">${findPlayerSquad}</button>
                        <ul class="find_squad_open" id="find_squad_open">
                            ${dropDownLlist}
                        </ul>
                    </div>
                </div>
            </div>`
            
        // set widget to #ipl-widget div
        document.getElementById("ipl-widget").innerHTML = iplWidget;

        
        if ((document.getElementsByClassName('ipl_widget_slider') || []).length > 0 && playersArray.length > 0){
            
            let interValGlide = setInterval(() => {
                if(window.Glide){
                    setTimeout(()=>{
                        new Glide('.ipl_widget_slider', {
                            autoplay: 5000,
                            type: 'carousel',
                            perView: 3,
                            gap:10,
                            slidesToShow: 1,
                            dots: '#dots',
                            draggable: true,
                            
                            breakpoints: {
                                767: {
                                    perView: 1,
                                    slidesToShow: 1,
                                    peek: {
                                        before: 0,
                                        after: 70,
                                    }
                                }
                            }
                        }).mount()
                    },300)
                    clearInterval(interValGlide);
                }
            });
        }
        
    } else {
        if(document.getElementById("ipl-widget")){
            document.getElementById("ipl-widget").style.minHeight ='0px';
        }
    }
}

try {
    initWidget();
    var updateScore=setInterval(function(){		
			initWidget();
		}, 30*1000);
}catch(error){
    console.log(error);
    clearInterval(updateScore);
}