// ----------------------------------------------------------------
// Seo2Net.fr - Version 1.7 -- Fevrier 2010 - Juin 2010
// (c) Alexandre COSTE (coste.alexandre@gmail.com)
// ----------------------------------------------------------------

//
// Public variables
//
var PHONE=0
var SMS=1
var EMAIL=2
var DATAS=3

// Seo2Net Session attached to this page.
var TRUE=0;
var FALSE=1;
var DEBUG=FALSE;
var VERSION="20100531 - 1.6";

var SCREEN_Width;
var SCREEN_Height;

var SEO_PublicPage;
var SEO_PublicSession;
var SEO_Meta_Keywords;
var SEO_Meta_Description;
var SEO_Url;

//
// Ajax request multi plateforms
// ===================================================================

var pageRequest = false; //variable to hold ajax object
/*@cc_on
   @if (@_jscript_version >= 5)
      try {
      pageRequest = new ActiveXObject("Msxml2.XMLHTTP")
      }
      catch (e){
         try {
         pageRequest = new ActiveXObject("Microsoft.XMLHTTP")
         }
         catch (e2){
         pageRequest = false
         }
      }
   @end
@*/

//
// Look&Feel on the page.
// ===================================================================
 
function WindowSize() 
  {
    var myWidth = 0, myHeight = 0;
    if( typeof( window.innerWidth ) == 'number' )
    {
      //Non-IE
      myWidth = window.innerWidth;
      myHeight = window.innerHeight;
    } 
    else 
      if (document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) ) 
      {
        //IE 6+ in 'standards compliant mode'
        myWidth = document.documentElement.clientWidth;
        myHeight = document.documentElement.clientHeight;
      } 
      else 
        if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) 
        {
          //IE 4 compatible
          myWidth = document.body.clientWidth;
          myHeight = document.body.clientHeight;
        }

    SCREEN_Width=myWidth;
    SCREEN_Height=myHeight;
}

function Rectangle_Add(width, height) 
{
  var left=0;
  var top=0;

  WindowSize();

  left=(SCREEN_Width-width)/2;
  top=(SCREEN_Height-height)/2;

   if (document.createElement) 
     {
	newdiv=document.createElement("div");
   	newdiv.style.position="absolute";
	newdiv.style.left = left+"px";
   	newdiv.style.top  = top+"px";
   	newdiv.style.width = width+"px";
   	newdiv.style.height = height+"px";
   	newdiv.style.backgroundColor = 'gray';
        newdiv.style.color='white';
   	newdiv.style.visibility = 'visible';
   	newdiv.id = 'SEO_Rectangle';
   	newdiv.innerHTML = "";
   	document.body.appendChild(newdiv);
     }
}

//
// Add an option in a selectbox
//
function SelectBox_addOption(selectbox,text,value)
{
  var optn = document.createElement("OPTION");
  optn.text = text;
  optn.value = value;
  selectbox.options.add(optn);
}

//
// Search value and replace by another in any field of string
// 
function SearchReplace( text, stringToFind, stringRemplacement)
{
  var text = text.toString() ;
  var maReg = new RegExp( stringToFind, "gi") ;
  var resultat = text.replace( maReg, stringRemplacement ) ;

  if ( text.search( maReg ) != -1 )
    return(resultat);
  else
    return("");
}

// Communication with external server
// ===================================================================

//
// Ajax : Initialise a request
//
function Ajax_getXhr()
{
  var xhr = null; 
  if(window.XMLHttpRequest)
  {
     // Firefox et autres
    xhr = new XMLHttpRequest();
  } 
  else
    if(window.ActiveXObject)
      { 
        // Internet Explorer 
        try 
          {
 	    xhr = new ActiveXObject("Msxml2.XMLHTTP");
  	  } 
        catch (e) 
          {
            xhr = new ActiveXObject("Microsoft.XMLHTTP");
          }
      }
    else 
      { 
        // XMLHttpRequest non supporté par le navigateur 
        alert("Activez le Javascript dans votre navigateur pour visualiser correctement cette page."); 
        xhr = false; 
      }
  return xhr
}

//
// Ajax : Do a html post to a url and memorize the returned value
//
function Ajax_Post(url, content, block)
{
    var Returned="VIDE";

    if (!pageRequest && typeof XMLHttpRequest != 'undefined')
       pageRequest = new XMLHttpRequest()

    if (pageRequest)
    { //if pageRequest is not false
        pageRequest.open("POST", url, block);
        pageRequest.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
        pageRequest.send(content);
        Returned=pageRequest.responseText;
    }

    return(Returned);
}

//
// RANDOM Generator
//
function Random()
{
  return(Math.floor(Math.random()*99999999999));
}

//
// COOKIES manager
//
function COOKIE_Save(Name,Value,Limit)
{
  // Limit in in Hours
  var Expiration = new Date();

  Expiration.setHours(Expiration.getHours() + Limit);
  document.cookie=escape(Name)+"="+escape(Value)+";expires="+Expiration; //+";path=/;domain=.seo2net.fr";
}

function COOKIE_Load(IdPage)
{
  var Cookie=unescape(document.cookie);
  var Keyword="["+IdPage+"]";
  var SubCookie;
  var String;
  var SubString;
  var EndSubCookie;
  var NextString;

  //document.write('Cookie complete :('+Cookie+')\n\n<BR><BR>');

  SubCookie=Cookie.indexOf(Keyword);
  //alert('Position Keywords :'+SubCookie);
  if (SubCookie==-1)
  {
	//document.write('Keyword ('+Keyword+') dont found in ('+Cookie+')');
	return("");
  }

  SubString=Cookie.substr(SubCookie);

  NextString=Cookie.substr(SubCookie+Keyword.length+1);

  //document.write('Extraction de ('+Keyword+') =('+NextString+')\n\n<BR><BR>');

  EndSubCookie=NextString.indexOf("[");
  if (EndSubCookie > 0)
  	SubString=NextString.substr(0,EndSubCookie-1);
  else
   	SubString=NextString;
  
  //document.write('Resultat ('+SubString+')\n\n<BR><BR>');

  return(SubString);
}

function COOKIE_Element(String,Search)
{

  var Parameters=String;
  var cpt=0;
  var Field;
  var Keyword;
  var Value;

  //document.write('Parameters ('+Parameters+')<BR><BR>');

  var Couple=Parameters.split(";");
  for(cpt=0; cpt < Couple.length; cpt++)
  {
        //var Valeurs= SearchReplace(Couple[cpt].toString()," ","");
	var Valeurs = Couple[cpt].toString();
	//document.write('('+Valeurs+')<BR><BR>');

        var Objet= Valeurs.split("=");
        Keyword=Objet[0];
	Value=Objet[1];
	
	if (Keyword[0]==" ")
	{
		// Remove space from cookie notation;
		Keyword=Keyword.substr(1);
	}
        //document.write('['+Keyword+']['+Value+']<br><br>');
        //document.write('Field ('+Keyword+') avant ('+Keyword+')');
        if (Keyword==Search)
        {
         	Valeur=Value;
         	//document.write('trouve.');
         	return(Valeur);
        }
  }
  return("");
}

function COOKIE_Save(Name,Value,Limit)
{
  // Limit in in Hours
  var Expiration = new Date();
  var NewName="["+Name+"]";

  Expiration.setHours(Expiration.getHours() + Limit);
  document.cookie=escape(NewName)+"="+escape(Value)+";expires="+Expiration; //+";path=/;domain=.seo2net.fr";
}


//
// DOM functions
//
function DOM_Form_Count()
{
  return(document.forms.length);
}

// SEO2NET Core Functions
// ===================================================================

function SEO_Forms_List(Nb)
{
  var x=document.forms[Nb];
  for (var i=0;i<x.length;i++)
  {
    alert(x.elements[i].name+'='+x.elements[i].value);
  }

}

function SEO_SetUrl(Url)
{
  parent.location=Url;
}

function SEO_GetUrl()
{
  if (document.baseURI === undefined)
  {
    var baseTags = document.getElementsByTagName ("base");
    if (baseTags.length > 0)
      SEO_Url=baseTags[0].href;
    else 
      SEO_Url=window.location.href;
  }
  else
     SEO_Url=document.baseURI;
}
  
function SEO_Elements_Count(ElementType)
{
  return(document.getElementsByTagName(ElementType));
}

function SEO_Element_SetValue(ElementType,Name,Value)
{
  var Elements=document.getElementsByTagName(ElementType);
  var Total=Elements.length;

  for(Cpt=0;Cpt < Total;Cpt++)
  {
	if (Elements[Cpt].id.length >0)
	{
		if (Name==Elements[Cpt].id)
		{
			//alert('New value =('+Value+')');
			if ( (Value.length>0) && (Value != "\n"))
				Elements[Cpt].innerHTML=Value;
			return(TRUE);
		}
	}
  }

  return(FALSE);
}

function SEO_Get_Meta(Key) 
{
  var metas = document.getElementsByTagName('META');
  var Name;

  var i;

  for (i = 0; i < metas.length; i++)
  {
    Name=metas[i].getAttribute('NAME');
    if (Name != null)
	if (Name.toUpperCase()== Key)
      	  break;
  }

  return(metas[i].getAttribute('CONTENT'));
}

function SEO_UrlElementSearch(String,Search)
{
  var valeur;

  var Step=String.indexOf("?");
  if (Step.length==0)
    return("");

  var Parameters=String.substr(Step+1);
  var cpt=0;

  var Couple=Parameters.split("&");
  for(cpt=0; cpt < Couple.length; cpt++)
  {
        var Valeurs= Couple[cpt].toString();
        var Objet= Valeurs.split("=");
        var Field=Objet[0].toString();
        if (Field==Search)
        {
          Valeur=Objet[1];
          return(Valeur);
        }
  }
  return("");
}

// SEO2NET - Add a new page in the Seo2net user account
// ===================================================================
function SEO_AddPage(Filter)
{
   var SEO_CodePage;
   var String;

   var Message=document.getElementById("SEO_Rectangle");

   Message.style.height = "40px";

   Message.innerHTML= "SAVING TO YOUR SEO2NET ACCOUNT ...<BR><img src=\"http://datas.seo2net.fr/ajax_bar.gif\"><BR>"+ 
		      "please wait until we update this page.";

   String="action=SEO_AddPage&keywords="+SEO_Meta_Keywords+"&description="+SEO_Meta_Description+"&filter="+Filter+"&url="+SEO_Url;
 
   SEO_CodePage=Ajax_Post("/seo.php", String,false);

   Message.style.height = "80px";

   Message.innerHTML= "YOUR PAGE HAS BEEN SAVED."+
			"<div id=\"bv_Text1\" style=\"top:170px;width:570px;height:38px;z-index:2;\""+
			" align=\"center\"><font style=\"font-size:14px\" color=\"#FFFF00\" face=\"Arial\"><b>"+
			"Update your html code with this code :<br>"+
			"&lt;BODY onload=&quot;javascript:SEO_Init('"+SEO_CodePage+"');&quot;&gt;</b></font></div>"+
			"<input type=\"submit\" onclick=\"document.getElementById('SEO_Rectangle').style.visibility='hidden';"+
			"return false;\" name=\"Button1\" value=\"Finish\""+
                        " style=\"top:255px;width:333px;height:24px;font-family:Arial;font-size:13px;z-index:1\">"

}

function SEO_CreatePage(Filter)
{
  SEO_Meta_Keywords=SEO_Get_Meta("KEYWORDS");
  SEO_Meta_Description=SEO_Get_Meta("DESCRIPTION");
  SEO_GetUrl();

  if (!Filter)
  {
    alert('The parameter of SEO_CreatePage is missing : SEO_CreatePage([name of the filter for this page in Seo2Net])');
    return(false);
  }

  var answer = confirm ("Add this page to your SEO account ?")
  if (answer)
  {
	var answer2 = confirm("confirm the filter for this page "+Filter+" ?");
	if (answer2)
	{
		// Show the rectangle with the informations about the new page.
		Rectangle_Add(600,200);

		var Message=document.getElementById("SEO_Rectangle");
 		Message.innerHTML= "ADD THIS PAGE TO YOUR SEO2NET ACCOUNT"+
			"<TABLE WIDTH=100% cellpadding=0 cellspacing=1>"+
                        "<TR>"+
                        "<TD align=\"right\" valign=\"top\" width=\"232\" height=\"34\" style=\"border:1px #C0C0C0 solid;\">"+
                        "<font style=\"font-size:13px\" color=\"#FFFFFF\" face=\"Arial\">"+
                        "Url :"+
                        "</FONT></TD>"+
                        "<TD align=\"left\" valign=\"top\" width=\"402\" height=\"34\" style=\"border:1px #C0C0C0 solid;\">"+
                        "<font style=\"font-size:13px\" color=\"#FFFFFF\" face=\"Arial\">"+
                        SEO_Url+
                        "</FONT></TD></TR>"+
			"<TR>"+
			"<TD align=\"right\" valign=\"top\" width=\"232\" height=\"34\" style=\"border:1px #C0C0C0 solid;\">"+
			"<font style=\"font-size:13px\" color=\"#FFFFFF\" face=\"Arial\">"+
			"Description :"+
			"</FONT></TD>"+
			"<TD align=\"left\" valign=\"top\" width=\"402\" height=\"34\" style=\"border:1px #C0C0C0 solid;\">"+
			"<font style=\"font-size:13px\" color=\"#FFFFFF\" face=\"Arial\">"+
			SEO_Meta_Description+
			"</FONT></TD></TR>"+
                        "<TR>"+
                        "<TD align=\"right\" valign=\"top\" width=\"232\" height=\"34\" style=\"border:1px #C0C0C0 solid;\">"+
                        "<font style=\"font-size:13px\" color=\"#FFFFFF\" face=\"Arial\">"+
                        "Keywords :"+
                        "</FONT></TD>"+
                        "<TD align=\"left\" valign=\"top\" width=\"402\" height=\"34\" style=\"border:1px #C0C0C0 solid;\">"+
                        "<font style=\"font-size:13px\" color=\"#FFFFFF\" face=\"Arial\">"+
                        SEO_Meta_Keywords+
                        "</FONT></TD></TR>"+
                        "<TR>"+
                        "<TD align=\"right\" valign=\"top\" width=\"232\" height=\"34\" style=\"border:1px #C0C0C0 solid;\">"+
                        "<font style=\"font-size:13px\" color=\"#FFFFFF\" face=\"Arial\">"+
                        "Filter on Seo2Net :"+
                        "</FONT></TD>"+
                        "<TD align=\"left\" valign=\"top\" width=\"402\" height=\"34\" style=\"border:1px #C0C0C0 solid;\">"+
                        "<font style=\"font-size:13px\" color=\"#FFFFFF\" face=\"Arial\">"+
                        Filter+
                        "</FONT></TD></TR></TABLE>"+
			"<input type=\"submit\" onclick=\"SEO_AddPage('"+Filter+"');return false;\" name=\"Button1\""+
			" value=\"Add this page now\""+
			" style=\"top:255px;width:333px;height:24px;font-family:Arial;font-size:13px;z-index:1\">"
	}
	else
		alert("Define the correct value of the filter in SEO_CreatePage() parameter.");
  }
  else
    alert ("Action canceled.")

}

function SEO_Partner_LoadValue(IdPartner,IdPage,Tag)
{
  var String;
  var Retour;

  String="action=SEO_Partner_LoadValue&page="+IdPage+"&partner="+IdPartner+"&tag="+Tag;
  Retour=Ajax_Post("/seo.php", String,false);
  return(Retour);

}

function SEO_Partner_Customize(SEO_Partner,SEO_Page)
{
  var Cpt;
  var Total;
  var String;
  var Source;
  var Tag=new Array();

  // Define the existing tag for Partner customisation :
  Tag[0]="SEO_partner_banner";
  Tag[1]="SEO_partner_slogan";
  Tag[2]="SEO_partner_orderlink";

  for(Cpt=0; Cpt < Tag.length; Cpt++)
  	SEO_Element_SetValue("DIV",Tag[Cpt],SEO_Partner_LoadValue(SEO_Partner,SEO_Page,Tag[Cpt]));
  
  return(TRUE);
}

function SEO_Init(IdPage)
{
  var SEO_Return;
  var String;

  var SEO_Site;
  var SEO_Page;
  var SEO_Partner;
  var CookieContent;
  var CookieCreate=FALSE;

  // Check if we have the id of the page.
  if (!IdPage)
  {
	alert('SEO_Init() : Miss parameter of the IdPage.');
	return(false);
  }

  // Check if we receive string "SEO_Session" in the url in GET method
  // If Yes, we take this sessionId instead to create a Random value.
  // -- We are in this case when the page is called by a ad banner.
  // We have banner tracking with this sessionid and we want to keep this
  // id until the end.

  SEO_GetUrl();

  // Search the field 'seo_s' to see if we receive a session value.
  String=SEO_UrlElementSearch(SEO_Url,"seo_s");
  if (String.length > 0)
  {
	// We receive parameters.
	SEO_PublicSession=String;
	SEO_Site=SEO_UrlElementSearch(SEO_Url,"seo_w");
	SEO_Partner=SEO_UrlElementSearch(SEO_Url,"seo_p");
	SEO_Page=SEO_UrlElementSearch(SEO_Url,"seo_pa");
  	SEO_Banner=SEO_UrlElementSearch(SEO_Url,"seo_b");

	// We check if this page has already a cookie ?
	//alert('Page ('+SEO_Page+')');

	String=COOKIE_Load(SEO_Page);
 	if (String.length > 0)
	{
		// We have cookies
		CookieContent=COOKIE_Element(String,"page");
		//alert('page ('+CookieContent+')');
  		if (CookieContent != SEO_Page)
		{
			//alert('Cookie found but not for this page.Have to create Cookie');
			CookieCreate=TRUE;
		}
	}
	else
	{
		//alert('no cookie found. have to create');
		CookieCreate=TRUE;
	}

	if (CookieCreate==TRUE)
	{
		//alert('creating cookie');
		// We save a cookie valid 30 days (30*24 = 720 hours)
		CookieContent="session="+SEO_PublicSession+"; key="+SEO_Site+"; page="+SEO_Page+"; banner="+SEO_Banner+"; partner="+SEO_Partner;
		COOKIE_Save(SEO_Page,CookieContent,720);
	}
  }
  else
  {
	// Is it a visitor with an existing cookie from us ?
 	String=COOKIE_Load(IdPage);
        if (String.length > 0)
        {
                // We have cookies
                CookieContent=COOKIE_Element(String,"page");
                if (CookieContent == IdPage)
                {
			// We remind the session value.
			CookieContent=COOKIE_Element(String,"session");
			SEO_PublicSession=CookieContent;

			// The page is called directly ?
			// or we have tag in the url "seo_Session=" ?
			String=SEO_UrlElementSearch(SEO_Url,"seo_session");
			if (String.length == 0)
			{
				// We modify the url and add "seo_session=" with the cookie value.
				if (SEO_Url.indexOf("?") > 0)
					SEO_Url=SEO_Url+"&seo_session="+SEO_PublicSession;
				else
					SEO_Url=SEO_Url+"?seo_session="+SEO_PublicSession;

				// We do a redirect to the new url with the session & partner id
				SEO_SetUrl(SEO_Url);
				return(false);
			}
                }
	}
	else
	{
		// We create a new session id because its a direct visitor.
		SEO_PublicSession=Random();	
	}
  }

  String="action=SEO_Init&page="+IdPage+"&session="+SEO_PublicSession;

  if (DEBUG==TRUE)
  {
    SEO_Return=Ajax_Post("/seo.php", String,false);
    alert('DEBUG - '+VERSION+' - SEO_Init('+IdPage+','+SEO_PublicSession+')');
  }
  else
    SEO_Return=Ajax_Post("/seo.php", String,false);

  SEO_PublicPage=IdPage;

  // Download and print the Partner element to personalize automaticaly this page
  String=COOKIE_Load(IdPage);
  if (String.length > 0)
  {
	SEO_Partner=COOKIE_Element(String,"partner");
  	SEO_Partner_Customize(SEO_Partner,IdPage);
  }

  return(true);

}

function SEO_Add(Obj,Type)
{
  var SEO_Return;
  var String;

  String="action=SEO_Add&session="+SEO_PublicSession+"&"+Obj.name+"="+Obj.value+"&type="+Type+"&page="+SEO_PublicPage;

  // Memorize the value of this field 

  if (DEBUG==TRUE)
  {
    SEO_Return=Ajax_Post("/seo.php", String,false);
    alert('DEBUG SEO_Add() - Session ('+SEO_PublicSession+') - String ('+String+')'+' - Return ('+SEO_Return+')');
  }
  else
    SEO_Return=Ajax_Post("/seo.php", String,false);
}


//
// SEO2NET - AD Banner : print and click
// ===================================================================

function SEO_AdBanner_View(IdSite,IdPage,IdPartner,IdBanner,Option)
{
  // Option : "BLANK" : The link do a _BLANK target.

  var Session=Random();
  var Cookie="";
  var CookieContent;
  var CookieCreate=FALSE;

  var Param;
  var Link;
  var Image;

  var StoreSession;
  var StorePage;

  // If we have already a active cookie, we send the session value stored in the cookie
  Cookie=COOKIE_Load(IdPage);

  if (Cookie.length > 0)
  {
    //alert('cookie for this page ('+IdPage+')=('+Cookie+')');

    //alert('Cookie exist for this page.Session taken from cookie');
    StoreSession=COOKIE_Element(Cookie,"session");
    Session=StoreSession;
    //alert('session from cookie ('+Session+')');
  }
  else
  {
    //alert('cookie for ('+IdPage+') dont exist. Create it');
    CookieCreate=TRUE;
  }

  // Generate the link for the banner
  Link="http://datas.seo2net.fr/cgi-bin/seo.cgi?action=SEO_AdLink&key="+IdSite+"&page="+IdPage+"&banner="+IdBanner+"&partner="+IdPartner+"&session="+Session;

  // Show the graphical banner
  Image="<A HREF=\""+Link+"\" ";

  if ( (Option !== undefined) && (Option=="BLANK"))
    Image=Image+" TARGET=\"_BLANK\"";
 
  Image=Image+"><IMG SRC=\"http://datas.seo2net.fr/banners/"+IdSite+"_"+IdBanner+"\" ALT=\"\" BORDER=\"0\"></A> ";
  document.write(Image);

  if (CookieCreate==TRUE)
  {
    //alert('creating cookie');
    // Add a cookie valid 1 day.
    CookieContent="session="+Session+"; key="+IdSite+"; page="+IdPage+"; banner="+IdBanner+"; partner="+IdPartner;
    COOKIE_Save(IdPage,CookieContent,24);

    // Memorize the Tracker for initial banner view
    Param="/cgi-bin/seo.cgi?action=SEO_AdView&key="+IdSite+"&page="+IdPage+"&banner="+IdBanner+"&partner="+IdPartner+"&session="+Session;
    Image="<IMG SRC=\"http://datas.seo2net.fr/"+Param+"\" WIDTH=\"1\" HEIGHT=\"1\">";

    document.write(Image);
  }
  else
  {
    // This user is already came. We dont count in unique visitor but in global visitor.
    Param="/cgi-bin/seo.cgi?action=SEO_AdCount&key="+IdSite+"&page="+IdPage+"&banner="+IdBanner+"&partner="+IdPartner+"&session="+Session;
    Image="<IMG SRC=\"http://datas.seo2net.fr/"+Param+"\" WIDTH=\"1\" HEIGHT=\"1\">";
    document.write(Image);
  }
}

