/*
    cloud colors
    thbc = top header border color
    hbgc = header background color
    shuc = sub header underline color
    fc = font color
    hfc = header font color
    lfc = link font color
    tfc = tag font color
    ppc = pre post color
    hc1 = hover color1
    hc2 = hover color2
 */

if(typeof JDGTagCloud == 'undefined') var JDGTagCloud = {};

JDGTagCloud.dataExist = null;

JDGTagCloud.getScriptUrlParams = function ()
{
	//var scriptTags = document.getElementsByTagName("script");

	// This code is assumed to be in a file so the "src" attribute
	// is guaranteed to be present...no error-checking is needed
    var JDGTagCloudScriptTag = null;
    JDGTagCloudScriptTag = JDGTagCloud.getScriptTag();
    /*for(var i=0;i<scriptTags.length;i++){
        var curScriptTag = scriptTags[i];
        var curScriptSource = curScriptTag.src;
        if(curScriptSource!=null && curScriptSource!=""){
            if(curScriptSource.indexOf("initCloud0.6.js")!=-1){
                JDGTagCloudScriptTag = curScriptTag;
            }
        }
    }*/

    var urlParams=[];
    var urlParamRaw = [];

    if(JDGTagCloudScriptTag!=null){
        var srcAttr = (JDGTagCloudScriptTag.src);
        var urlFrags = srcAttr.split("#");
        if (urlFrags.length > 1)
        {
            //alert(urlFrags[1]);
            urlParamRaw = urlFrags[1].split("/");
            /*
            if (urlParamRaw.length >= 2)
            {
                for(var param=0;param<urlParamRaw.length;param+=2)
                    urlParams[param] = (urlParamRaw.length >= param + 1 ? unescape(urlParamRaw[param+1]) : null);
                }
            */
        }
    }else{
        //do nothing
    }

	//return(urlParams);
        return(urlParamRaw);
}

JDGTagCloud.getScriptTag = function(){
    var scriptTags = document.getElementsByTagName("script");

	// This code is assumed to be in a file so the "src" attribute
	// is guaranteed to be present...no error-checking is needed
    var JDGTagCloudScriptTag = null;
    for(var i=0;i<scriptTags.length;i++){
        var curScriptTag = scriptTags[i];
        var curScriptSource = curScriptTag.src;
        if(curScriptSource!=null && curScriptSource!=""){
            if(curScriptSource.indexOf("JDGInitTagCloud.js")!=-1){
                JDGTagCloudScriptTag = curScriptTag;
            }
        }
    }
    return JDGTagCloudScriptTag;
}

JDGTagCloud.isDataAvailble = function(){
    if(JDGTagCloud.dataExist==null){
        if(JDGTagCloud.loadGlobalCounter>100){//wait up to 5 seconds to load library
            //alert('no data returned - aborting');
            return;
        }
        setTimeout(function(){JDGTagCloud.isDataAvailble();},50);
        JDGTagCloud.loadGlobalCounter++;
    }else{
        if(JDGTagCloud.dataExist==true){
            var JDGTagCloudContainer = JDGTagCloud.getScriptTag();//document.getElementById('JDGTagCloudContainer');
            if(typeof JDGTagCloudContainer !='undefined' && JDGTagCloudContainer!=null){
                //create url params
                var urlParams = "";
                var urlParamsCounter = 0;
                for (var key in JDGTagCloud.keyValMap){
                    //exclude cid
                    if(key=='width' || key=='height'){
                        continue;
                    }
                    urlParams+="&"+key+"="+escape(JDGTagCloud.keyValMap[key]);
                    urlParamsCounter++;
                }
                //alert(urlParams);
                var ifrmTag = document.createElement("iframe");
                ifrmTag.setAttribute("id", "JDGTagCloudIframeId");
                ifrmTag.setAttribute("border", "0");
                ifrmTag.setAttribute("frameBorder", "0");
                ifrmTag.setAttribute("scrolling", "no");
                ifrmTag.style.margin='0';
                ifrmTag.style.padding='0';
                ifrmTag.style.height=JDGTagCloud.height+'px';
                ifrmTag.style.width=JDGTagCloud.width+'px';
                ifrmTag.style.marginTop='10px';
                ifrmTag.style.marginBottom='15px';
                //ifrmTag.style.background='#FFFFFF';
                //ifrmTag.src = JDGTagCloud.hostandAppName+"getTagCloud.jsp?cid="+JDGTagCloud.cid+"&logNorm="+JDGTagCloud.logNorm+"&callerURL="+escape(top.location.href);
                ifrmTag.src = JDGTagCloud.hostandAppName+"getTagCloud.jsp?callerURL="+escape(top.location.href)+urlParams;
                try{
                    JDGTagCloudContainer.parentNode.appendChild(ifrmTag);
                }catch(err){
                    //alert(err);
                }
            }
        }else{
            //alert('no data availble');
        }
    }
}

JDGTagCloud.addCheckScript = function(){
    JDGTagCloud.loadGlobalCounter  = 0;
    var jsTag = document.createElement("script");
    jsTag.type = "text/javascript";
    jsTag.src = JDGTagCloud.cacheAppName+"isDataExist.jsp?clientId="+escape(JDGTagCloud.cid)+"&url="+escape(top.location.href)+"&name=cloud&cacheURL="+escape(JDGTagCloud.cacheAppName)+"&jsonObjectName=JDGTagCloud.dataExist";
    //debug
    //jsTag.src = JDGTagCloud.cacheAppName+"dataExists.jsp?clientId="+escape(JDGTagCloud.cid)+"&url="+escape(top.location.href)+"&name=cloud&cacheURL="+escape(JDGTagCloud.cacheAppName)+"&jsonObjectName=JDGTagCloud.dataExist";
    var body = document.getElementsByTagName('body').item(0);
    body.insertBefore(jsTag, body.firstChild);
    JDGTagCloud.isDataAvailble();
}


JDGTagCloud.main_js = function(){
    var myParams = JDGTagCloud.getScriptUrlParams();
    var myParamsLength = myParams.length;
    var myParamsKeyVals =  new Array();
    if(myParamsLength>1){
        for(var i=0;i<myParamsLength;i+=2){
            try{
                myParamsKeyVals[String(myParams[i])] = (myParamsLength >= (i + 1) ? unescape(myParams[i+1]) : null);
            }catch(err){
                //alert(err);
            }
        }

        if(myParamsKeyVals['cid']==null){
            //alert("client id cannot be null");

        }else{
            JDGTagCloud.keyValMap = myParamsKeyVals;
            JDGTagCloud.cid = '0';
            JDGTagCloud.width = '300';
            JDGTagCloud.height = '350';
            JDGTagCloud.logNorm = 'false';

            if(myParamsKeyVals['cid']!=null){
                JDGTagCloud.cid = myParamsKeyVals['cid'];
            }
			
            if(myParamsKeyVals['width']!=null){
                JDGTagCloud.width = myParamsKeyVals['width'];
            }
			
            if(myParamsKeyVals['height']!=null){
                JDGTagCloud.height = myParamsKeyVals['height'];
            }
            if(myParamsKeyVals['logNorm']!=null){
                JDGTagCloud.logNorm = myParamsKeyVals['logNorm'];
            }

            JDGTagCloud.loadGlobalCounter  = 0;
            //JDGTagCloud.domain = 'www.jodange.com';
            JDGTagCloud.domain = 'www.jodange.com';
            JDGTagCloud.publishersAppName = 'publishers';
            JDGTagCloud.hostandAppName = 'http://'+JDGTagCloud.domain+'/'+JDGTagCloud.publishersAppName+'/tagCloud/ver1.3/';
            JDGTagCloud.cacheAppName = 'http://'+JDGTagCloud.domain+'/'+JDGTagCloud.publishersAppName+'/cache/';
            var JDGTagCloudContainer = JDGTagCloud.getScriptTag();//document.getElementById('JDGTagCloudContainer');
            if(typeof JDGTagCloudContainer !='undefined' && JDGTagCloudContainer!=null){
                JDGTagCloud.addCheckScript();
                //we use iframe in order to avoid conflicts with the sites scripts
            }
        }       
    }
}();

