// Doubleclick html tag generator (javascript)
// David Jamin - 10/20/2008

//*************** Global Variables ********//
// Global Variable: top_rand
// Random Number used throughout page (each ad uses same number)
var top_rand = (Math.random() * 10000000000000000) + "?";

//Get the registration cookie
var up = readUP(document);
var ur = readUR(document);
var up_word = "";
var ur_word = "";
if (up != null) 
    up_word = parseCookie("up");
if (ur != null)
    ur_word = parseCookie("ur");

// Tile purpose is to prevent same ad showing up twice 
var tile = 0;

// Global Variable: o_urlstring
var o_urlstring = document.URL;
var parameters;
o_urlstring = path(o_urlstring);
o_urlstring = replace(o_urlstring, "_");
if (o_urlstring.indexOf("lawcrawler") == -1) {
	if (o_urlstring.indexOf('?') != -1) {
		var temp1_url = o_urlstring.split('?');
		o_urlstring = temp1_url[0];
		parameters = temp1_url[1];
	}
}

// Global Variable: db_sitename
var db_sitename;
if (o_urlstring.indexOf("marketing.") != -1)
    db_sitename = "fl.marketing.dart";
else if ((o_urlstring.indexOf("technology.") != -1) || (o_urlstring.indexOf("news.technology") != -1))
    db_sitename = "fl.technology.dart";
else if ((o_urlstring.indexOf("practice.") != -1) || (o_urlstring.indexOf("news.practice") != -1))
    db_sitename = "fl.practice.dart";
else if (o_urlstring.indexOf("codes.lp.findlaw.com") != -1)
    db_sitename = "fl.codes.dart";
else if (o_urlstring.indexOf("corporate") != -1)
    db_sitename = "fl.corpcounsel.dart";
else if ((o_urlstring.indexOf("careers") != -1) || (o_urlstring.indexOf("infirmation") != -1))
    db_sitename = "fl.infirmation.dart";
else if ((o_urlstring.indexOf("news.lp") != -1) || (o_urlstring.indexOf("writ.lp") != -1))
    db_sitename = "fl.newslp.dart";
else if (o_urlstring.indexOf("news.findlaw") != -1)
    db_sitename = "fl.news.dart";
else if (o_urlstring.indexOf("mychicagobar") != -1)
    db_sitename = "fl.chicagobar.dart";
else if (o_urlstring.indexOf("www.findlaw.com") != -1){
	//Check if this is the main page or the lp page
	var temp1_url = o_urlstring.split('/');
	var second = temp1_url[1];
	if ((second != "") && (second.indexOf("index.html") == -1))
    	db_sitename = "fl.legal.dart";
	else
    	db_sitename = "fl.publictop.dart";
}else if ((o_urlstring.indexOf("smallbusiness") != -1) 
	|| (o_urlstring.indexOf("public") != -1)
	|| (o_urlstring.indexOf("injury.findlaw.com") != -1)
	|| (o_urlstring.indexOf("bankruptcy.findlaw.com") != -1)
	|| (o_urlstring.indexOf("criminal.findlaw.com") != -1)
	|| (o_urlstring.indexOf("family.findlaw.com") != -1)
	|| (o_urlstring.indexOf("dui.findlaw.com") != -1)
	|| (o_urlstring.indexOf("employment.findlaw.com") != -1)
	|| (o_urlstring.indexOf("realestate.findlaw.com") != -1)
	|| (o_urlstring.indexOf("estate.findlaw.com") != -1)
	|| (o_urlstring.indexOf("immigration.findlaw.com") != -1)
	|| (o_urlstring.indexOf("law.findlaw.com") != -1))
    db_sitename = "fl.public.dart";
else if (o_urlstring.indexOf("canada") != -1)
    db_sitename = "fl.canada.dart";
else if (o_urlstring.indexOf("answers.findlaw.com") != -1)
    db_sitename = "fl.community.dart";
else if (o_urlstring.indexOf("stu.findlaw.com") != -1)
    db_sitename = "fl.students.dart";
else if ((o_urlstring.indexOf("lawyers.findlaw.com") != -1) || (o_urlstring.indexOf("pview.findlaw.com") != -1))
    db_sitename = "fl.lawyers.dart";
else if (o_urlstring.indexOf("legalrecords.findlaw.com") != -1)
    db_sitename = "fl.legalrecords.dart";
else if ((o_urlstring.indexOf("marketcenter.findlaw.com") != -1) || (o_urlstring.indexOf("vendors.findlaw.com") != -1))
    db_sitename = "fl.vendor.dart";
else if (o_urlstring.indexOf("lp.findlaw.com") != -1){
	//Check if this is the main page or the lp page
	var temp1_url = o_urlstring.split('/');
	var second = temp1_url[1];
	if ((second != "") && (second.indexOf("index.html") == -1))
    	db_sitename = "fl.legal.dart";
	else
    	db_sitename = "fl.toppage.dart";
}else if (o_urlstring.indexOf("knowledgebase.findlaw.com") != -1){
    	db_sitename = "fl.knowledgebase.dart";
}
else
    db_sitename = "fl.legal.dart";

// Global Variable: urlArray
// break up o_urlstring into chunks according to "/"   	
var urlArray = new Array();
urlArray = o_urlstring.split('/');
var page = urlArray[urlArray.length-1];

// Global Variable: pgnm
// represents pagename
var pgnm;
if ((o_urlstring.indexOf(".pl") == -1) && (o_urlstring.indexOf(".html") == -1) && (o_urlstring.indexOf(".jsp") == -1))
  pgnm = "index";
else
  pgnm = page.substring(0, page.indexOf('.'));
  
// Global Variable: kwString
// generate the kw values for targeting purposes
var kwString;
var level;
var temp = urlArray[0];

if (urlArray[0] != -1) {
	var name=urlArray[0].substring(0, urlArray[0].indexOf('.'));
	if (name.indexOf("findlaw") != -1)
		name = "www";
	kwString = ";area1=" + name;
	level = 0;

	if (document.URL.indexOf("lawcrawler") != -1) {
		keyword = page.substring(page.indexOf("entry=") + 6, page.length);
		if (keyword.indexOf("&")!= -1) 
			keyword = keyword.substring(0, keyword.indexOf("&"));
		keyword = replace(keyword, '+');
		kwString += ";kw=" + keyword;
	} else {
		//put the word "area*=" for as many array as we have.
		for (var i = 1; i < urlArray.length-1; i++) {
			kwString += ";area" + (i+1) + "=" + urlArray[i];
			level++;
		}
		kwString += ";level=" + level + ";pgnm=" + pgnm;
	}
}

//Special case for getcase.pl and callaw
if ((page.indexOf("getcase.pl") != -1) || (page.indexOf("callaw") != -1)){
	var p_kws = parameters.split('&');
	var keywords = ";"; 
	for (var i = 0; i < p_kws.length; i++){
		keywords += p_kws[i];
		if (i < p_kws.length-1)
			keywords += ";";
	}
	kwString += keywords;
}

if (up != null && ur != null)
	kwString += ";" + up_word + ur_word;

// Alleviates Netscape document.write bug (refresh problem)
NS4 = document.layers;
if (NS4) {
  origWidth = innerWidth;
  origHeight = innerHeight;
}

function reDo() {
	if (innerWidth != origWidth || innerHeight != origHeight)
  	location.reload();
}

if (NS4) onresize=reDo;

//************** Functions Used to Generate Banner Ads **********//
// Function: dart_call(banner_size, keywords, same_ad, sitename)
// Generate ad html tags for FindLaw site
// banner_size = The banner size
// keywords = This is the keyvalues that we want to add in DART. (loc=top;ptile=1;etc)
// same_ad = The value is 0 or 1. This is used if we want the same ad to appear on the same page but different banner size.
// sitename = Used if the db_sitename is different from the one already appointed.
function dart_call(banner_size, keywords, same_ad, sitename){
	var site_string = ""
	if (sitename != null){
		if (sitename.indexOf("local.public.dart") != -1) {
			site_string = ";metro=" + msa;
		}
	}

	//Cases for infirmation
	if ((db_sitename.indexOf("fl.infirmation.dart") != -1)
		&& (banner_size.indexOf("728x90") != -1)){
		call_infirmation();
	}else if (db_sitename.indexOf("fl.vendor.dart") != -1){
		call_vendor(banner_size, keywords, same_ad);
	}else{
		var flag = 0;
		if (banner_size.indexOf("640x480") != -1){
			//Landing pages has to call readLC function
			flag = readLC(document);
		}
		if (!flag){
			if (sitename != null){
				var urlj = "http://ad.doubleclick.net/adj/" + sitename + "/;abr=!webtv" + kwString + site_string + ";sz=" + banner_size;
			}else{
				var urlj = "http://ad.doubleclick.net/adj/" + db_sitename + "/;abr=!webtv" + kwString + site_string + ";sz=" + banner_size;
			}

			if (same_ad != 0){
				tile++;
				urlj += ";tile=" + tile;
			}

			if ((keywords != null) && (keywords != "")){
				urlj += ";" + keywords;
			}
	
			urlj += ";ord=" + top_rand;
		
			document.write('<script language="Javascript1.1" src="' + urlj + '"></script>');
		}
	}
}

function call_infirmation(){
	var temp_url = new Array();
    var pgnm = "";
    var keyword = "";
    var page;
    var url1= "http://ad.doubleclick.net/adj/";

    var level=0;
    var urlstring=document.URL;

    if (urlstring.indexOf("bboard") != -1) {
        //Append db_sitename tags and area1
        url1= url1+db_sitename+"/greed;abr=!webtv";
    }
    else {
        //Append db_sitename tags and area1
        url1= url1+db_sitename+"/;abr=!webtv;area1=careers";
    }

    //strip out http:// from urlstring
    urlstring=path(urlstring);
    urlstring=replace(urlstring, "_");
    urlstring=replace(urlstring, '-');

    //Infirmation Greedy Boards
    if ( urlstring.indexOf("topic=") != -1 ) {
        if ((urlstring.indexOf("faq") == -1) && (urlstring.indexOf("&") != -1))
            keyword = urlstring.substring(urlstring.indexOf("topic=") + 6, urlstring.indexOf("&"));
        else
            keyword = urlstring.substring(urlstring.indexOf("topic=") + 6, urlstring.length);
    if (keyword.indexOf("%20") != -1)
        keyword = keyword.substring(0, keyword.indexOf("%20")) + "_" + keyword.substring(keyword.indexOf("%20") + 3, keyword.length)
    } else if (( urlstring.indexOf("topic") != -1) && (urlstring.indexOf("greedy") != -1)) {
        keyword=urlstring.substring(urlstring.indexOf("topic%3d") + 8, urlstring.indexOf("&"));
    if (keyword.indexOf("%2520") != -1)
        keyword = keyword.substring(0, keyword.indexOf("%2520")) + "_" + keyword.substring(keyword.indexOf("%2520") + 5, keyword.length);
    }

    // break up urlstring into chunks according to "/"
    temp_url=urlstring.split('/');
    page = temp_url[temp_url.length - 1];

    // pgnm is set to the page name (excluding the extension)
    if (page.indexOf("?") > -1)
        pgnm = page.substring(0, page.indexOf("?"));
    else if (page.indexOf(".") > -1)
        pgnm = page.substring(0, page.indexOf("."));
    else
        pgnm = "index";

    //put the word "area*=" for as many array as we have.
    for (var i = 1; i < temp_url.length-1; i++)
    {
        url1= url1+ ";area" + (i) + "=" + temp_url[i];
        level++;
    }
    url1= url1+ ";pgnm=" + pgnm + ";level=" + level;

    // Infirmation Greedy Board
    if (keyword != "")
    {
        url1 = url1 + ";kw=" + keyword;
    }

    url1= url1 + kwString + ";loc=top;sz=728x90;ord=" + top_rand;
    // print out the doubleclick html tags
    document.write("<!--top 728x90 banner ad-->\n");
    document.write('<script language="Javascript1.1" src="' + url1 + '"></script>');
    document.write("<!--end top 728x90 banner ad-->\n");
}

function call_vendor(banner_size, keywords, same_ad){
	var title = document.title;
	var v_pgnm;

	if ((o_urlstring.indexOf(".pl") == -1) && (o_urlstring.indexOf(".html") == -1))
  		v_pgnm = "index";
	else if (title.indexOf("Expert Witnesses") != -1)
  		v_pgnm = "expertwitnesses";
	else if (title.indexOf("Legal Investigators") != -1)
  		v_pgnm = "legalinvestigators";
	else if (title.indexOf("Court Reporters") != -1)
  		v_pgnm = "courtreporters";
	else if (title.indexOf("Process Servers") != -1)
  		v_pgnm = "processservers";
	else if (title.indexOf("Legal Software") != -1)
  		v_pgnm = "software";
	else if (title.indexOf("Electronic - Technology") != -1)
  		v_pgnm = "hardwaretechnology";
	else if (title.indexOf("Practice Support") != -1)
  		v_pgnm = "practicesupportconsultants";
	else if (title.indexOf("ADR") != -1)
  		v_pgnm = "adrprofessionals";
	else
  		v_pgnm = page.substring(0, page.indexOf('.'));

	var v_kwString = "";
	if (page.indexOf("search.pl") != -1) {
    	var t1;
    	var vendor;
    	var state;
    	var pa;
    	var ac;

    	// keyword pa (area3)
    	if (parameters.indexOf("pa=") != -1) {
        	t1 = parameters.indexOf("pa=") + 3;
        	if (parameters.indexOf("&", t1+1) != -1)
           	pa = parameters.substring(t1, parameters.indexOf("&", t1+1));
        	else
           	pa = parameters.substring(t1, parameters.length);
        	v_kwString += ";area3=" + pa;
    	}

    	// keyword ac or areacategory (area4)
    	if (parameters.indexOf("ac=") != -1)  {
        	t1 = parameters.indexOf("&ac=") + 4;
        	ac = parameters.substring(t1, parameters.indexOf("&", t1+1));
        	v_kwString += ";area4=" + ac;
    	}
    	else if (parameters.indexOf("areacategory=") != -1) {
        	t1 = parameters.indexOf("areacategory=") + 13;
        	pa = parameters.substring(t1, parameters.indexOf("&", t1+1));
        	v_kwString += ";area4=" + pa;
    	}
	
    	// keyword state (area5)
    	if (parameters.indexOf("&state=") != -1) {
        	t1=parameters.indexOf("&state=") + 7;
        	if (parameters.indexOf("&", t1+1) != -1)
            	state = parameters.substring(t1, parameters.indexOf("&", t1+1));
        	else
            	state = parameters.substring(t1, parameters.length);
    	}
    	else
        	state="all";
    	v_kwString += ";area5=" + state;
	
    	// keyword vendor (area6)
    	if (parameters.indexOf("vendor=") != -1) {
        	t1 = parameters.indexOf("vendor=") + 7;
        	vendor = parameters.substring(t1, parameters.indexOf("&", t1+1));
        	v_kwString += ";area6=" + vendor;
    	}
	}
	else if (o_urlstring.indexOf("browse") != -1) {
    	var schar = '/';
    	var splitIndex = 0;
    	var splitArray = new Array();
    	var pageString = o_urlstring.substring(o_urlstring.indexOf("browse/")+7, o_urlstring.length);
    	splitArray = pageString.split(schar);
    	splitIndex = splitArray.length;
	
    	// Vendor
    	if (splitIndex > 0) {
        	v_kwString += ";area6=" + splitArray[0];
    	}
    	
    	// AC
    	if (splitIndex > 1) {
        	v_kwString += ";area4=" + splitArray[1];
    	}
        	
    	// PA
    	if (splitIndex > 2) {
        	v_kwString += ";area3=" + splitArray[2];
    	}      
        	
    	// State
    	if (splitIndex > 3) {
        	v_kwString += ";area5=" + splitArray[3];
    	}
	}       

	if (up != null && ur != null){
    	v_kwString += ";" + up_word + ur_word;
	}

	var urlj = "http://ad.doubleclick.net/adj/" + db_sitename + "/;abr=!webtv;area1=vendors" + v_kwString + ";pgnm=" + v_pgnm + ";sz=" + banner_size;

	if (same_ad != 0){
		tile++;
		urlj += ";tile=" + tile;
	}

	if ((keywords != null) && (keywords != "")){
		urlj += ";" + keywords;
	}

	urlj += ";ord=" + top_rand;
	
	var flag = 0;	
	//Landing pages has to call readLC function
	if (banner_size.indexOf("640x480") != -1){
		flag = readLC(document);
	}
	if (!flag){
		document.write('<script language="Javascript1.1" src="' + urlj + '"></script>');
	}
}


//************** Functions to be DELETED after full change **********//

// Function: fl_middle_728x90()
// This is only a temporary function that will be deleted once we migrate everything to the new trimmed script and I have changed sponsored_links.js to use dart_call for the fl_middle_728x90()
// This function will only be called if 200x90 ad doesn't show up.
function fl_middle_728x90(){
    var urlj = "http://ad.doubleclick.net/adj/" + db_sitename + "/;abr=!webtv";
    urlj += kwString + ";loc=middle;sz=728x90;ord=" + top_rand;
    document.write('<script language="Javascript1.1" src="' + urlj + '"></script>');
}

// Function news230()
// Generate 230x230 Banner Ad for FindLaw News
// Changed to 300x250 on 1/5/07
function news230(){
    var urlj = "http://ad.doubleclick.net/adj/" + db_sitename + "/;abr=!webtv";
    urlj += kwString + ";sz=300x250;ptile=2;ord=" + top_rand;
    document.write('<script language="Javascript1.1" src="' + urlj + '"></script>');
}

//************** Helper Functions **********//
// Helper Function: path
// strip out 'http://', any anchor, and convert to lowercase
function path(urlstring)
{
   var start = urlstring.indexOf('//');
   if (start != -1) {
      start = start+2;   
   }
   var hash = urlstring.indexOf('#');
   if (hash == -1) {
     hash = urlstring.length;
   }
   return urlstring.substring(start,hash).toLowerCase();
}

// Helper Function: replace
// strip out t's from s (string)
function replace(s, t) 
{
	i = s.indexOf(t);
	r = "";
	if (i == -1) return s;
	r += s.substring(0,i) + '';
	if ( i + t.length < s.length)
  		r += replace(s.substring(i+t.length, s.length), t, '');
	return r;
}

