// ==UserScript==
// @name          QL Watch for GM
// @namespace     http://www.geotrackables.com
// @description   Script rozšiřuje funkci geocaching.com o zobrazování QL předmětů mezi TB
// @include       http://www.geocaching.com*
// @include       http://*.geotrackables.com*
// ==/UserScript==

var qlwVersionID=7;

function trim (str, charlist) {
    // Strips whitespace from the beginning and end of a string
    //
    // version: 1003.2411
    // discuss at: http://phpjs.org/functions/trim    // +   original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +   improved by: mdsjack (http://www.mdsjack.bo.it)
    // +   improved by: Alexander Ermolaev (http://snippets.dzone.com/user/AlexanderErmolaev)
    // +      input by: Erkekjetter
    // +   improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)    // +      input by: DxGx
    // +   improved by: Steven Levithan (http://blog.stevenlevithan.com)
    // +    tweaked by: Jack
    // +   bugfixed by: Onno Marsman
    // *     example 1: trim('    Kevin van Zonneveld    ');    // *     returns 1: 'Kevin van Zonneveld'
    // *     example 2: trim('Hello World', 'Hdle');
    // *     returns 2: 'o Wor'
    // *     example 3: trim(16, 1);
    // *     returns 3: 6    var whitespace, l = 0, i = 0;
    str += '';

    if (!charlist) {
        whitespace = " \n\r\t\f\x0b\xa0\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u200b\u2028\u2029\u3000";
    } else {
        // preg_quote custom list
        charlist += '';
        whitespace = charlist.replace(/([\[\]\(\)\.\?\/\*\{\}\+\$\^\:])/g, '$1');    }

    l = str.length;
    for (i = 0; i < l; i++) {
        if (whitespace.indexOf(str.charAt(i)) === -1) {            str = str.substring(i);
            break;
        }
    }
        l = str.length;
    for (i = l - 1; i >= 0; i--) {
        if (whitespace.indexOf(str.charAt(i)) === -1) {
            str = str.substring(0, i + 1);
            break;        }
    }

    return whitespace.indexOf(str.charAt(0)) === -1 ? str : '';
}

var doc=document;

var qlwAllWB=doc.getElementsByClassName('WidgetBody');
for(var i=0; i<qlwAllWB.length; i++)
{
	if (!qlwAllWB[i].id)
	{
		qlwAllWB[i].id='qlwGeneratedId_'+i;
	}
}

if(doc.location.href.search("geocaching.com")>-1 && doc.location.href.search("/cache_details")>-1)
{
	if (!doc.qlwLoaded)
	{
		if (doc.getElementById('ctl00_ContentBody_CacheName') && !doc.getElementById('qlwGeneratedId_1'))
		{
/*************************************************************************************************************/
/*************************************************************************************************************/
/*************************************************************************************************************/
var qlwAllWB=doc.getElementsByClassName('WidgetBody');
for(var i=0; i<qlwAllWB.length; i++)
{
	if (!qlwAllWB[i].id)
	{
		qlwAllWB[i].id='qlwGeneratedId_'+i;
	}
}

doc.getElementsByTagName('head')[0].appendChild(doc.createElement('script')).setAttribute('src','http://www.geotrackables.com/qlw/'+trim(doc.getElementById('ctl00_ContentBody_uxWaypointName').innerHTML)+'.js');
/*************************************************************************************************************/
/*************************************************************************************************************/
/*************************************************************************************************************/
			doc.qlwLoaded=true;
		}
	}
}
if(doc.location.href.search("geocaching.com")>-1 && doc.location.href.search("/cache_details.aspx")>-1)
{

	if (!doc.qlwLoaded)
	{
		if(doc.getElementById('qlwGeneratedId_3') &&  !doc.getElementById('qlwGeneratedIdSpan_1'))
		{

/*************************************************************************************************************/
/*************************************************************************************************************/
/*************************************************************************************************************/
//var spans=doc.getElementById('ctl00_Breadcrumbs').getElementsByTagName('span');

//for(var i=0; i<spans.length; i++)
//{
	/*
	if (!spans[i].id)
	{
		spans[i].id='qlwGeneratedIdSpan_'+i;
	}
	*/
//}


var cacheCode=trim(doc.getElementsByClassName('CoordInfoCode')[0].innerHTML);
var napis=doc.getElementById('qlwGeneratedId_3');
var txt='<div id="gmCacheInfo"></div>'+napis.innerHTML+'<div><a target="_blank" href="http://www.geotrackables.com/logit/?cache='+cacheCode+'">What are Quick Log items?</a></div>';

napis.innerHTML=txt;

/**/
if (doc.getElementById('gmCacheInfo') && doc.getElementById('gmCacheInfo').title!="QL proceed")
{
    //var divs=document.getElementById('gmCacheInfo').getElementsByTagName('div');
    /*
    for(var i=0; i<divs.length; i++)
    {
        if (!divs[i].id) {divs[i].id='generatedId_'+timerCount+'_'+i;}
    }
    */
    var cacheCode=cacheCode;
    //document.getElementById('filterLegend').innerHTML=cacheCode;
    doc.getElementsByTagName('head')[0].appendChild(doc.createElement('script')).setAttribute('src','http://www.geotrackables.com/qlw/'+cacheCode+'.js');
    doc.getElementById('gmCacheInfo').title="QL proceed";
}
/**/
/*************************************************************************************************************/
/*************************************************************************************************************/
/*************************************************************************************************************/
		}
	}
}

if(doc.location.href.search("geocaching.com")>-1 && doc.location.href.search("/map")>-1)
{

    if (doc.getElementById('uxZoomToAddress'))
    {
/***************************************************************************/
var timerCount=0;
//document.getElementById('filterLegend').innerHTML='';
//document.getElementById('uxPMUpgrade').innerHTML='';

setInterval(function()
{
    timerCount+=1;
    //document.getElementById('uxPMUpgrade').innerHTML='Cyklu:'+timerCount.toString();
    if (doc.getElementById('gmCacheInfo') && documen.getElementById('gmCacheInfo').title!="QL proceed")
    {
    	//alert('aa');
    	/*
        var divs=document.getElementById('gmCacheInfo').getElementsByTagName('div');
        for(var i=0; i<divs.length; i++)
        {
            if (!divs[i].id) {divs[i].id='generatedId_'+timerCount+'_'+i;}
        }
        */
        //var cacheCode=document.getElementById('generatedId_'+timerCount+'_2').innerHTML;
        var cacheCode=doc.getElementById('ctl00_ContentBody_uxWaypointName').innerHTML;
        //document.getElementById('filterLegend').innerHTML=cacheCode;
        doc.getElementsByTagName('head')[0].appendChild(doc.createElement('script')).setAttribute('src','http://www.geotrackables.com/qlw/'+cacheCode+'.js');
        //alert('aa');

        doc.getElementById('gmCacheInfo').title="QL proceed";
    }
},1000);
/***************************************************************************/
    }
}

if(doc.location.href.search("geotrackables.com")>-1)
{

	if (!doc.qlwLoaded)
	{
/*************************************************************************************************************/
/*************************************************************************************************************/
/*************************************************************************************************************/
if (doc.getElementById('qlwVersionID'))
{
	if (parseInt(doc.getElementById('qlwVersionID').value)>qlwVersionID)
	{
		if (doc.getElementById('qlwInstalBoxGM'))
		{
			doc.getElementById('qlwInstalBoxGM').style.display="block";
		}
	}
}
/*************************************************************************************************************/
/*************************************************************************************************************/
/*************************************************************************************************************/
	}
}