/**
 * @class Gets contextual ads for given URL
 */
 
/**Location of syndication production feed for contextual*/
var url = "http://syndication.ask.com/contextual"; 
var contextual_server = "sp.ask.com";
var ask_width;
var ask_height;
var ask_iframe;
var n = 2;
var eslImage = "";
var catMap;
var ad_format_type;
var ad_format;
var q;
var rf = "";
var ua = navigator.userAgent;
var bg_color = "FFFFFF";
var th = "";
var isIAC = "IAC";
var isp;
var wz;
var behavioural = "false";
var du;
var da;

 
adCatMap();
getRf();
 
if ((ask_client.substring(0, 3).toUpperCase() == isIAC) && (document.referrer != '')) {
    behavioural = "true";
    getBehaviour();
}
 
getAdFormat(ask_ad_format);
constructURL();
processIframe(url);
 
/**
 * @handle cross-site scripting 
 */
function getRf() { 
   rf=  getQueryValue();
 if(rf == null){
  rf = ask_client;
 }
}
 
function getQ() {    
 q=  getQueryValue();
 if(q == null){
  q = ask_client;
 }
}

/**
* @ Logic for getting page referrer
*/
function getQueryValue() {
 try {
 
    if((document.referrer == null) || (document.referrer == "")){
	  return document.URL;
    }else{
	  if (document.referrer.indexOf("http://") != -1) {
         tempdomain = document.referrer.substring(7);
         referrerdomain = tempdomain.substring(0, tempdomain.indexOf("/", 7));
     }else{
         referrerdomain = document.referrer.substring(0, document.referrer.indexOf("/"));
     }
     if(referrerdomain.indexOf(":") != -1){
         referrerdomain = referrerdomain.substring(0,referrerdomain.indexOf(":"));
      }
 
     if (referrerdomain == document.domain){
         return document.URL;
     }else{
		   try {
  				tempq = top.window.location.href; 
                return document.URL;
            }catch(e1) {
                return  document.referrer;  
            }
     }
    }
  } catch (e){
         return ask_client;
  }
 
 }

/**
 * @class Sets parameter for Behavioural 
 */
function getBehaviour() {
    var referrer;
    var query;
    var addcookie = "false";
    var index = 2;
    decode = unescape(document.referrer);
    if (decode.indexOf("http://") != -1) {
        tempreferrer = decode.substring(decode.indexOf("http://"));
        referrer = tempreferrer.substring(0, tempreferrer.indexOf("/", 7));
  
  if((referrer.indexOf("ask") != -1)||(referrer.indexOf("google") != -1)||(referrer.indexOf("yahoo") != -1)||(referrer.indexOf("msn") != -1)||(referrer.indexOf("live") != -1)||(referrer.indexOf("aol") != -1)){
 
        if (decode.indexOf("q=") != -1) {
            tempquery = decode.substring(decode.indexOf("q="));
            addcookie = "true";
        } else if (decode.indexOf("query=") != -1) {
            tempquery = decode.substring(decode.indexOf("query="));
            addcookie = "true";
            index=6;
        } else if (decode.indexOf("p=") != -1) {
            tempquery = decode.substring(decode.indexOf("p="));
            addcookie = "true";
        }
        if (addcookie == "true") {
            if (tempquery.indexOf("&") != -1)
                query = tempquery.substring(index, tempquery.indexOf("&"));
            else
                query = tempquery.substring(index);
 
 
            //Encode the query and referrer
            query = escape(query);
            referrer = escape(referrer);
            var srcTag = "http://switch.atdmt.com/jaction/IAC_Production_1/v3/referrer." + referrer + "&query." + query;
            var writeData = "<s" + "cript language='JavaScript' src=" + srcTag + "></s" + "cript>";
            document.write(writeData);
        }
  }
    }
}
 
/**
 * @class Sets width and height for different ad formats
 */
function getAdFormat(format) {
 
 
    var i = format.indexOf('_');
    ad_format_type = format.substring(i + 1).toLowerCase();
    ad_format = format.substring(0, i);
    if (typeof ask_ad_type != "undefined") {
        if (ask_ad_type == "text") {
            eslImage = "text";
        }
    } else {
        if (typeof ask_ad_cat != "undefined") {
            eslImage = catMap[ask_ad_cat];
        }
    }
    if (ad_format == "728x90") {
        ask_width = "728px";
        ask_height = "90px";
    } else if (ad_format == "300x250") {
        ask_width = "300px";
        ask_height = "250px";
    } else if (ad_format == "160x600") {
        ask_width = "160px";
        ask_height = "600px";
        n = 4;
    } else if (ad_format == "468x60") {
        ask_width = "468px";
        ask_height = "60px";
    } else if (ad_format == "381x62") {
        ask_width = "381px";
        ask_height = "62px";
        n = 1;
    } else if (ad_format == "400x51") {
        ask_width = "400px";
        ask_height = "51px";
        n = 1;
    } else {
        ask_width = "728px";
        ask_height = "90px";
    }
 
}
 
/**
 * @class Handles iframe for Internet Explorer
 */
function processIframe(url) {
 
   ask_iframe = "<iframe src=\"" + url + "\" width=" + ask_width + " height=" + ask_height + " marginheight=0px marginwidth=0px  scrolling=no frameborder=0 > </iframe> ";
   document.write(ask_iframe);    
}
 
 
/**
 * @class Constructs the feed URL
 Format:  q=http%3A%2F%2Ffox.com&isp=DROPcontextual1&rf=ask.com&ua=lynx&ip=57.0.0.1
 */
 
function constructURL() {
 
    if (ask_client.toUpperCase().indexOf(isIAC) != -1)
    {
        isp = ask_client.substring(4, ask_client.lastIndexOf(("_")));
    } else {
        isp = ask_client.substring(0, ask_client.lastIndexOf(("_")));
    }
    wz = ask_client.substring(ask_client.lastIndexOf("_") + 1);
     if (typeof domain != "undefined") {
        q = domain;
    } else {
  getQ();
    }
    if (typeof ask_keywords != "undefined") {
        q = ask_keywords;
        th = ask_keywords;
    }
    if ((typeof ask_ad_type != "undefined") && (ask_ad_type == "text")) {
        if (typeof ask_bg_color != "undefined") {
            bg_color = ask_bg_color;
        }
    }
    if (typeof ask_da != "undefined") {
        da = ask_da;
    } else {
        da = "";
    }
    if ( typeof ask_du != "undefined") {
        du = ask_du;
    } else {
        du = "";
    }
    url = url + "?q=" + q + "&isp=" + isp + "&n=" + n + "&adformat=" + ad_format + "&adcat=" + eslImage +
          "&contextual_server=" + contextual_server + "&rf=" + rf + "&useragent=" + ua + "&bg_color=" + bg_color +
          "&wz=" + wz + "&th=" + th + "&da=" + da + "&du=" + du;
}
 
function adCatMap() {
    catMap = new Object;
    catMap[31] = "Auto";
    catMap[2] = "Local";
    catMap[20] = "Education";
    catMap[29] = "Electronics";
    catMap[28] = "Finance";
    catMap[18] = "Health";
    catMap[7] = "WebServices";
    catMap[26] = "RealEstate";
    catMap[1] = "Shopping";
    catMap[30] = "Technology";
    catMap[33] = "Telecom";
    catMap[23] = "Travel";
    catMap[13] = "Other";
    catMap[37] = "Adult";
    catMap[15] = "";
}
