﻿
var testid;
var downloadSpeed;
var uploadSpeed;
var uid;
var newsletter;
function escapeHTML(str)
{
   var div = document.createElement('div');
   var text = document.createTextNode(str);
   div.appendChild(text);
   return div.innerHTML;
}; 

function generateGuid()
{
	var guid = '';

	for (var i = 1; i <= 32; i++) 
	{ 
		var n = Math.floor(Math.random() * 16.0).toString(16); 
		guid += n; 
		
		if ((i == 8) || (i == 12) || (i == 16) || (i == 20)) guid += "-"; 
	}

	return guid;
}

function remoteJson(listener,callback)
{
	if (listener)
	{
		var script = document.createElement("script"); // new script element.
		script.setAttribute("type", "text/javascript");
		script.setAttribute("id", "remotejson" + generateGuid());

		if( listener.indexOf("?") > 0 )
		{
			script.setAttribute("src", listener + "&nocache=" + generateGuid() + "&callback=" + callback );
		}
		else
		{
			script.setAttribute("src", listener + "?nocache=" + generateGuid() + "&callback=" + callback );
		}

		document.getElementsByTagName("head")[0].appendChild(script);
	}
}

var order = '';
var lastorder = 'name';
function sort(by)
{
    if (document.getElementById('cboPackages'))
    {
        //var packageID = getSelectedValue("cboPackages");
        infos = '';
		if (providerID)
		{
		    infos += '&providerid=' + providerID;
		}

        if (packageID)
		{
		    infos += '&packageid=' + packageID;
		}
		
		if (uid)
		{
		    infos += '&uid=' + uid;
		}
		
		if (postcode)
		{
		    infos += '&postcode=' + postcode;
		}
        remoteJson('/comparison/ajax.aspx?mode=broadbandSpeedList&dl=' + downloadSpeed +  '&sort=' + by + infos,null); //'&packageID=' + packageID +
    }
    else
    {
        if (document.location.href.indexOf('speed_ratings') >0)
        {
            remoteJson('/comparison/ajax.aspx?mode=speedratings&sort=' + by,null); 
        }
        else
        {
            remoteJson('/comparison/ajax.aspx?sort=' + by,null); 
        }
        //remoteJson('/comparison/ajax.aspx?mode=broadbandSpeedList&dl=' + downloadSpeed + '&packageID=' + packageID + '&sort=' + by,null);    
    }
}

function display(where,what)
{
 document.getElementById(where).innerHTML = what[0];   
 /*if (document.getElementById('bc_table'))
 {
	document.getElementById('google_ads').style.marginTop = (document.getElementById('broadband_table').clientHeight + 100) + 'px';
 }*/
}

function getNextSibbling(e)
{

     do e = e.nextSibling;
     while (e && e.nodeType != 1);
    return e;
}



	
function getSelectedValue(item)
{
    return document.getElementById(item).options[document.getElementById(item).selectedIndex].value;
}

function setComboValue(comboid,item)
{
    //return document.getElementById(item).options[document.getElementById(item).selectedIndex].value;
    var i  = 0;
    for (var i=0;i<document.getElementById(comboid).options.length;i++)
    {
        if (document.getElementById(comboid).options[i].value == item)
        {
           document.getElementById(comboid).selectedIndex = i;
           return;
        }
    }
}



function share()
{
	var fi = document.createElement("iframe");
	fi.style.position = 'absolute';
	fi.style.width = '350px';
	fi.style.height = '370px';
	if (document.getElementById('cboDifferentISPs'))
	{
		fi.style.marginTop = '-100px';
	}
	fi.style.zIndex = '999';
	fi.frameBorder=0;
	fi.scrolling = 'no';
	fi.src = '/result.aspx?id=' + testid;
	document.getElementById('floatingResults').appendChild(fi);
}

function getNextSibbling(e)
{

     do e = e.nextSibling;
     while (e && e.nodeType != 1);
    return e;
}

function highlight(on,e)
{
	e.className="high";
	
	 var infoTr = getNextSibbling(e);

	
    if (on)
    {
        e.className="bc_tr_highlighted";
        
        try
        {
        infoTr.style.display='table-row';
        }
        catch(ex)
        {
        infoTr.style.display = 'block';
        }
    }
    else
    {
        e.className="bc_tr";
        infoTr.style.display = 'none';
    }
    
}

function SetCookie(cookieName,cookieValue,nDays) {
 var today = new Date();
 var expire = new Date();
 if (nDays==null || nDays==0) nDays=1;
 expire.setTime(today.getTime() + 3600000*24*nDays);
 document.cookie = cookieName+"="+escape(cookieValue)
                 + ";expires="+expire.toGMTString();
}

function readCookie(name) {

	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for(var i=0;i < ca.length;i++) {
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
	}
	

	return null;
}
/*
function speedControlDisplayed()
{
    var isppackage = readCookie('isppackage');
    //alert(isppackage);
    if (isppackage)
    {
        setComboValue('cboPackages',isppackage);
        changePackage();
    }
    

}



function changePackage()
{
	//urchinTracker('/click/change_package');
    var packageID = getSelectedValue("cboPackages");
    SetCookie('isppackage',packageID,999);
    remoteJson('/comparison/ajax.aspx?mode=broadbandSpeedList&dl=' + downloadSpeed + '&packageID=' + packageID + '&id=' + testid,'packageChanged()'); 
	
}
*/



/*----------------------------------------------------------------------------------------------
/*----------------------------------------------------------------------------------------------
/*----------------------------------------------------------------------------------------------*/
function speedCheckerCompleted(result)
{

		downloadSpeed = result.split(',')[0];
		uploadSpeed = result.split(',')[1];
		isp = result.split(',')[2];
		testid =  result.split(',')[3];
			
		callSpeedComparison();
}

function callSpeedComparison(providerID,packageID,postcode)
{
  		uid = readCookie('uid');
		if (!uid)
		{
		    if (!providerID)
            {
	            providerID = readCookie('isp');
	        }
		    packageID = readCookie('isppackage');
		}
		
		infos = '';
		if (providerID)
		{
		    infos += '&providerid=' + providerID;
		}

        if (packageID)
		{
		    infos += '&packageid=' + packageID;
		}
		
		if (uid)
		{
		    infos += '&uid=' + uid;
		}
		
		if (postcode)
		{
		    infos += '&postcode=' + postcode;
		}
		

		remoteJson("/comparison/ajax.aspx?mode=speedComparison&dl=" + downloadSpeed +  '&id=' + testid + infos,'speedComparisonLoaded()');

}


function speedComparisonLoaded()
{
    packageID = getSelectedValue("cboPackages");
    providerID = getSelectedValue("cboDifferentISPs");
    postcode = document.getElementById('txtPostcode').value;
    uid = readCookie('uid');
    
    infos = '';
    if (providerID)
    {
        infos += '&providerid=' + providerID;
    }

    if (packageID)
    {
        infos += '&packageid=' + packageID;
    }
	
    if (uid)
    {
        infos += '&uid=' + uid;
    }
	
    if (postcode)
    {
        infos += '&postcode=' + postcode;
    }
	
    if ((packageID > 0 || providerID == "999") && providerID > 0 && postcode != '')
    {
        remoteJson('/comparison/ajax.aspx?mode=broadbandSpeedList&dl=' + downloadSpeed + '&id=' + testid + infos,null); 
    }
    
	
}

function howFastCanIGetClicked()
{
    function styleValidationMessage(elem,on)
    {
        if (on)
        {
            document.getElementById(elem).style.borderColor = 'red';
            document.getElementById(elem).style.borderWidth = '2px';
            document.getElementById(elem).style.borderStyle = 'solid';
            document.getElementById(elem).style.marginBottom = '1px';
            document.getElementById(elem).style.height = '25px';
        }
        else
        {
            document.getElementById(elem).style.borderColor = '';
            document.getElementById(elem).style.borderWidth = '';
            document.getElementById(elem).style.borderStyle = '';
            document.getElementById(elem).style.marginBottom = '';
            document.getElementById(elem).style.height = '';
        }
    }
    //validation
    var message = '';
    if (getSelectedValue("cboDifferentISPs") == "-1")
    {
        styleValidationMessage('providerInput',true);
        message += ' - your broadband provider \n';
    }
    else
    {
        providerID = getSelectedValue("cboDifferentISPs");
        styleValidationMessage('providerInput',false);
    }
    
    if (getSelectedValue("cboPackages") == "-1" && getSelectedValue("cboDifferentISPs") != "999")
    {

        styleValidationMessage('packageInput',true);
        message += ' - your broadband package \n';
    }
    else
    {
        packageID = getSelectedValue("cboPackages");
        styleValidationMessage('packageInput',false);
        
    }
    
    if (document.getElementById('txtPostcode').value == "")
    {
        styleValidationMessage('postcodeInput',true);
        message += ' - your postcode \n';
    }
    else
    {
        postcode = document.getElementById('txtPostcode').value;
          styleValidationMessage('postcodeInput',false);
    }
    
    
    if (message != '')
    {
        message = 'Please enter: \n' + message;
        alert(message);
    }
    else
    {
        displayLoading();
        callSpeedComparison(providerID,packageID,postcode);
    }
}


function changeISP()
{
    var diffISP = getSelectedValue("cboDifferentISPs");
    callSpeedComparison(diffISP);
    
}


function displayLoading()
{
    
    document.getElementById('broadband_table').innerHTML = '<div style="width:100%;font-size:17px;text-align:center;font-weight:bold;margin:50px;"><div style="float:left;width:100px;"><div id="flash_loading" ></div></div><div style="float:left;margin-top:29px;">... Please wait .. Getting maximum speed estimate for your line ...</div><br style="clear:both;" /></div>';
    swfobject.embedSWF("http://www.broadbandspeedchecker.co.uk/images/cubes.swf", "flash_loading", "75", "75", "6.0.0", "http://www.broadbandpackages.org/images/expressInstall.swf");

}

function highlightHomepage(e)
{
    var on;
    var rowid = e.id.replace("row_","");
    var inforow = document.getElementById('rowinfo_' + rowid);
    if (inforow.style.display == 'none')
    {
      	//e.className="high";
        e.className="cursor bc_tr_highlighted";
        
        try
        {
        inforow.style.display='table-row';
        }
        catch(ex)
        {
        inforow.style.display = 'block';
        }

    }
    else
    {
        e.className="cursor bc_tr";    
        inforow.style.display = 'none';
    }
    
}

function openNewWindow(theURL,winName,features) {
  window.open(theURL,winName,features);
}

function subscribeExchange()
{   
    var email = document.getElementById('txtEmail').value;
    newsletter = document.getElementById('chkEmailSpeed').checked ? 1 : 0;
    if (email.search("@") < 0)
    {
        alert('Please enter your email');
        return;
    }

    remoteJson('/comparison/ajax.aspx?mode=subscribeExchange&uid=' + uid + '&email=' + email + '&newsletter=' + newsletter,null); 
}

function subscribedToExchange()
{
    if (newsletter)
    {
        document.getElementById('exchangeSubscribeBox').innerHTML = 'Thank you. You will be receiving tips how to improve your broadband speed. And if you change your mind, you can opt out at any time.';
    }
    else
    {
        document.getElementById('exchangeSubscribeBox').innerHTML = 'Thank you. You will be notified when your exchange is enabled for a better broadband.';
    }
    
}