function getCatStores( category )
{
	var catStores = new Array();

	for ( var i = 0; i < stores.length; i++ )
	{
		var store = stores[ i ];
		var cats = store[ sCats ];

		if ( cats.indexOf( category ) != -1 )
		{
			catStores[ catStores.length ] = store;
		}
	}

	return catStores;
}

function track( link, store )
{
	
		return link;
	
}

function clickLetter( letter )
{
	table = "<table class=\"stores\">\n";

	var count = 0;

	for ( var i = 0; i < stores.length; i++ )
	{
		var store = stores[ i ];
		var name = store[ sName ];
		if (letter == "#") {
			if (name.charAt( 0 ).toLowerCase() >= 0 || name.charAt( 0 ).toLowerCase() <=9) {
				if ( count % 2 == 0 )
					table += "<tr>";
	
				table += "<td class='store'><a href='javascript:clickStore( " + i + " );' onfocus='this.blur();'>" + name + "</a></td>";
				
				if ( count % 2 != 0 )
					table += "</tr>\n";
	
				count++;
				
			}
		} else {
			if ( name.charAt( 0 ).toLowerCase() == letter.toLowerCase() )
			{
				if ( letter == "#" )
					name = name.substring( 1, name.length );
	
				if ( count % 2 == 0 )
					table += "<tr>";
	
				table += "<td class='store'><a href='javascript:clickStore( " + i + " );' onfocus='this.blur();'>" + name + "</a></td>";
				
				if ( count % 2 != 0 )
					table += "</tr>\n";
	
				count++;
			}
		}
	}

	if ( count > 0 )
	{
		if ( count == 1 )
		{
			table += "</tr>\n";
		}
		if ( count % 2 != 0 )
		{
			table += "<td>&nbsp;</td></tr>\n";
		}
	}
	else
		table += "<tr><td>There are no stores in this catagory</td></tr>\n";

	table += "</table>";

	document.getElementById( "selectStore" ).innerHTML = table;
	hide( document.getElementById( "selectLetter" ) );
	show( document.getElementById( "selectStore" ) );
}

function insertHome()
{
	var store = getStore();
	insertLink( getName( store[ sName ] ), store[ sHome ], store );
}

function insertCustom()
{
	var store = getStore();

	enteredText = document.getElementById( "storeText" ).value;
	enteredLink = document.getElementById( "storeLink" ).value;

	if (store[0] == 'Dell')	{
		// Dell links need additional processing...
		
		
	//	alert('Dell links need additional processing. Please click OK to continue');
	//	alert(enteredLink);
		enteredLink = buildNewURL('ltDHS', enteredLink);
//		alert(enteredLink);
	} else if (store[0] == 'Dell (Small Business)') {
			enteredLink = buildNewURL('ltBSD', enteredLink);
	}

	var link;
	var text;

	if ( enteredText != "" )
	{
		text = enteredText;
	}
	else
	{
		text = getName( store[ sName ] );
	}

	if ( store.length > 2 && enteredLink != "" )
	{
		var ext = store[ sType ];

		if (ext.length > 2)
		{
			ext = store[ sType ].substr(0,2);
		}

		if ( ext == "aw" || ext == "mc" || ext == "qk" || ext == "td" || ext == "ta" || ext == "ap" || ext == "ba" || ext == "ya" || ext == "pp" || ext == "px" || ext == "dg" || ext == "dp" || ext == "af" )
		{
			if ( ext == "td" || ext == "ap" || ext == "mc")
			{
				// remove load balancing from cd-wow links:
				var result = enteredLink.match( /(http:\/\/)?(w{3}(\d{1,2})(\.cd-?wow\.(co((\.uk)|(m(.hk)?))|(net)|(fm)).*))/ );
				if ( result != null )
				{
					enteredLink = "http://www" + result[ 4 ];
				}
			}

			if ( ext != "ap" && ext != "pp" && ext != "ta" && ext != "px" )
			{
				var extra;

				if ( ext == "aw" )
					// awin1
					extra = "&p=" + enteredLink;
				else if ( ext == "qk" || ext == "tj" )
					// qksrv
					extra = "?url=" + enteredLink;
				else if ( ext == "td" )
					// tradedoubler
					extra = "url(" + enteredLink + ")";
				else if ( ext == "af" )
					// affiliate future
					extra = "&url=" + enteredLink;
				else if ( ext == "ba" )
					// buy.at
				    extra = "?DURL=" + enteredLink;
				else if ( ext == "ya" )
					// yes asia
					extra = "+" + enteredLink;
				else if ( ext == "dg" )
					// dgm2
					extra = "&c=" + enteredLink;
				else if ( ext == "mc" )
					// monkeycms
					extra = "&url=" + enteredLink;
				else if ( ext == "dp" ) 
					// dgmpro
					extra = "&t=" + enteredLink;
				link = store[ sHome ] + extra;
			}
			else if ( ext == "ta" )
			{
				// trade doubler with alternate link:
				link = store[ sExtra ] + "url(" + enteredLink + ")";
			}
			else if ( ext == "ap" )
			{
				// ap = append - just add the third element to the link the user entered:
				link = enteredLink + store[ sExtra ];
			}
			else if ( ext == "pp" )
			{
				// pp = prepend - just add the third element to the start of the link the user entered:
				link = store[ sExtra ] + enteredLink;
			}
			else if ( ext == "px" )
			{
				// px - prepend and escape whatever is entered:
				link = store[ sExtra ] + escape( enteredLink );
			}
		}
		else if ( ext == "az" ) // amazon
		{
			// check for direct link:
			var result = enteredLink.match( /(\/|%2F)((ASIN|detail|product|dp)|-)(\/|%2F)([A-Z0-9]{10})/ );
			if ( result != null )
			{
				var linkTemp = store[ sExtra ];
				link =store[sHome] + "&url=" + linkTemp.substring( 0, linkTemp.indexOf( " " ) ) 
					   + result[ 5 ]
					   + linkTemp.substring( linkTemp.indexOf( " " ) + 1, linkTemp.length );
			}
			else
			{
				// check for feature link:
				result = enteredLink.match( /.*\/(tg\/.+\/.+\/\d+\/(ref=)?.*)(\/.*)?/ );
				if ( result != null )
				{
					linkTemp = store[ sExtra2 ];
					link = store[sHome] + "&url=" +store[ sExtra2 ] + result[ 1 ];
				}
				else
				{
					link = store[ sHome ];
				}
				
			}
		}
		else if ( ext == "tdx" ) // trade doubler with ext
		{
			link = store[ sHome ] + "&url=" + enteredLink + store[ sExtra ];
		}
		else if ( ext == "dgx" ) // dgm with ext
		{
			link = store[ sHome ] + "&c=" + enteredLink + store[ sExtra ];
		}
		else if ( ext == "co" )  // comet
		{
			link = store[ sHome ] + "&p=" + enteredLink + store[ sExtra ];
		}
		else if ( ext == "eb" ) // ebay
		{
			link = store[ sExtra ] + escape( enteredLink );
		}
		else if ( ext == "tj" ) // tesco jersey
		{
			//alert('tj');
			var result = enteredLink.match( /http:\/\/jersey\.tesco\.com\/.*R=(\d{6}).*/ );
			//alert(result);
			if ( result != null )
			{
				link = store[sHome] + "&url=" +store[ sExtra ] + result[ 1 ]+")";
				//alert (link);
			}
			else
			{
				link = store[ sHome ];
			}
		}
		else if ( ext == "fb" ) // firebox
		{
			var result = enteredLink.match( /(http:\/\/)?(w{3}\.firebox\.co((\.uk)|m).*(pid=\d{3}).*)/ );
			alert(result);
			if ( result != null )
			{
				var link = store[sHome] + "&url=" + store[ sExtra ] + result[ 5 ];
			}
			else
			{
				link = store[ sHome ];
			}
		}
		else if ( ext == "dx" ) // dixons group (currys/pc world/dixons/the link)
		{
			var result = enteredLink.match( /(http:\/\/)?(w{3}\.(dixons|pcworld|currys|thelink)\.co((\.uk)|m)\/).*(sku=\d{6}).*/ );
			if ( result != null )
			{
				var link = store[sHome] + "&url=" + store[ sHome ] + "url(http://" + result[ 2 ] + "product.php?" + result[ 6 ] + ")";
			}
			else
			{
				result = enteredLink.match( /(http:\/\/)?(w{3}\.(pcworld|dixons|currys)\.co\.uk\/)martprd\/product\/seo\/(\d{6})/ );
				if ( result != null )
				{
					var link = store[ sHome ] + "url(http://" + result[ 2 ] + "product.php?sku=" + result[ 4 ] + ")";
				}
				else
				{
					link = store[ sHome ];
				}
			}
		}
		else if ( ext == "fs" ) // forum sponsor
		{
			link = enteredLink;
		}
		else if ( ext == "mp" ) // maplin
		{
			var result = enteredLink.match( /moduleno=(\d{5})/ );
			if ( result != null )
			{
				link = store[sHome] + "&url=" + store[ sExtra ] + result[ 1 ];					   
			}
			else
			{
				link = store[ sHome ];
			}
		}
		else
		{
			// unsupported, just link to homepage:
			link = store[ sHome ];
		}
	}
	else
	{
		link = store[ sHome ];
	}

	var result = text.match( /((http:\/\/)|(w{3}))+/ );
	if ( result != null )
	{
		// entered name looks like a link:
		var msg;
		if ( store.length <= sType )
		{
			msg = "This store does not support direct links, but you\n"
			msg += "appear to have entered a link into the name field.\n"
			msg += "The generated link will still link direct to the\n"
			msg += "homepage. Please instead give guidance in your post\n"
			msg += "on how to find the product, or its code.\n\n"
			msg += "To continue press OK, otherwise Cancel to go back."
		}
		else
		{
			msg = "You appear to have entered a link into\n"
			msg += "the name field, is this correct?"
		}
		
		if ( confirm( msg ) )
		{
			// they said OK, so insert:
			insertLink( text, link, store );
		}
	}
	else
	{
		// can't see a problem, insert:
		insertLink( text, link, store );
	}
}

function getStore()
{
	return stores[ document.getElementById( "storeNo" ).value ];
}

function getName( name )
{
	if ( name.indexOf( "#" ) == 0 )
	{
		name = name.substring( 1, name.length );
	}
	return name;
}

function addToFavourites()
{
	var store = getStore();
	window.external.AddFavorite( store[ sHome ], store[ sName ] );
}

function checkFavourites()
{
	if ( navigator.appName != "Microsoft Internet Explorer" )
	{
		hide( document.getElementById( "favourites" ) );
	}
}

function hide( element )
{
	element.style.display = "none";
}

function show( element )
{
	element.style.display = "block";
}




function buildNewURL(linkType, dellBasisURL)

{
            //-- Form basis
            //var       basisForm          = document.getElementById("linkGenerator").elements;
            var       validForm          = true;
            var       affiliateId = 60823;//basisForm.affiliateId.value;
            // var    affiliateId = 358774;
            if (linkType == "ltBSD")
                                    {
                                    var       g          = 871345;
                                    }else{
                                    var       g          = 871344;

            }
            
           var inLinkType = linkType;
           if (linkType == 'ltBSD') {
           		linkType='CID=5213&LID=122757&DGC=AF&DGSegSD&ACD=^^&AID=¤¤&DURL=';
	          } else {
	          	linkType='CID=5212&LID=122756&DGC=AF&DGSegHS&ACD=^^&AID=¤¤&DURL=';
	          }
          
           
            /*
            with (basisForm)
            {
                        if (affiliateId.value == '' || dellBasisURL.value == '' ||  dellBasisURL.value == 'http://')
                        {
                                   alert('Please fill in all fields!');
                                   validForm = false;
                        }
            }
*/
            if (validForm)
            {
                        var       basisTrackingUrl =          'http://clkuk.tradedoubler.com/click?p=702&a='+affiliateId+'&g='+g+'&url=';
                        var       landingStrip           
                        if (inLinkType == "ltBSD") {
                        	// bsd
                        	landingStrip = 'http://adfarm.mediaplex.com/ad/ck/2397-52163-11728-0?!mpro=http://lt.dell.com/lt/lt.aspx?'+linkType;
                        } else {
                        	// dhs
                        	landingStrip = 'http://adfarm.mediaplex.com/ad/ck/2397-52163-11728-1?!mpro=http://lt.dell.com/lt/lt.aspx?'+linkType;
                        }
                        //-- Putting Affiliate ID in a cookie -- NOTUSED anymore 29/11/2004
                        //setCookie('TDAffiliateID', basisForm.affiliateId.value, null);
                        //-- Fetching the initial URL
                        var       typedURL           =          dellBasisURL;
                        //-- Encoding typed URL
                        var       encodedURL       =          escape(typedURL);
                        //-- We encode it two times!
                        var       dubbleURLEncode = escape(encodedURL);
                        //-- Building definitive URL
                        var       defURL = basisTrackingUrl+landingStrip+dubbleURLEncode;
                        //-- The right link at the right place
                     // document.getElementById("finalURL").value = "[url=http://www.thedvdforums.com/affiliatelink.php?localaffiliateid=3&url=" + defURL+"][color=green][b]Dell[/b][/color][/url]";
                        //-- Link test
            //          alert(document.getElementById('linkTest').value);
                       // document.getElementById('linkTest').innerHTML = '<A HREF="http://www.thedvdforums.com/affiliatelink.php?localaffiliateid=3&url='+defURL+'" TARGET="_blank">Click here</A>';
                       return defURL;
            }
}


function eraseAll()

{
            var       basisForm          = document.getElementById("linkGenerator").elements;
            var finalURL       = document.getElementById("finalURL").value;
            var       dellBasisURL      =document.getElementById("dellBasisURL").value;
            with (document.getElementById("linkGenerator").elements)
            {
                        dellBasisURL.value         =          'http://';
                        finalURL.value                =          '';
                        document.getElementById('linkTest').innerHTML = 'No link to test';
            }
}

function deEncodeURL()

{
            var       basisForm          = document.forms['linkGenerator'].elements;
            var       typedURL           =          basisForm.finalURL.value;
            var       encodedURL       =          unescape(typedURL);
            encodedURL       =          unescape(encodedURL);
            //-- The right link at the right place
            basisForm.finalURL.value = encodedURL;
            with (document.forms['linkGenerator'].elements)
            {
                        document.getElementById('linkTest').innerHTML = 'No link to test';
            }
}
