// JavaScript Document

 function NewsLetter()
   {
   }
   function InitNewsLetter(clientID, remoteAddr, serverName, uri, letterWebsiteID,  newsLetterType, appPath )
   {
        NewsLetter.ClientID = clientID;
        NewsLetter.RemoteAddr = remoteAddr;
        NewsLetter.ServerName = serverName;
        NewsLetter.Uri = uri;
        NewsLetter.LetterWebsiteID = letterWebsiteID;
        NewsLetter.NewsLetterType = newsLetterType;
        NewsLetter.AppPath = appPath;
   }
   
   NewsLetter.SendNewsLetterRequest = function()
    {
        var email = document.getElementById(this.ClientID+'EMAILADDRESS');
         
         var exp = new RegExp("^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,4}$");
        
        // email validation
        if (!email.value.match(exp))
        {
            email.style.color = "red";
            return;
        }
        
        var server = this.AppPath+'Handlers/NewsLetterHandler.ashx';
        
        var url = server + '?' + 'IPADDRESS=' + this.RemoteAddr + 
        '&OPT_IN_URL=http://'+this.ServerName+this.Uri+'&EMAILADDRESS=' +
         encodeURI(email.value)+'&LETTERWSID='+encodeURI(this.LetterWebsiteID)+ 
         '&LETTERTYPE=' +this.NewsLetterType;        
                
        NewsLetter.GetData("post", url);
               
        var signLetter = document.getElementById(this.ClientID+'signLetter');
        var signMessage = document.getElementById(this.ClientID+'signMessage');
               
        signLetter.style.display = 'none';
        
        signMessage.style.display = '';
        
    }
    
    NewsLetter.GetData = function(sendMethod, url)
    {
	    var localXmlHttp;
    	
	    if ( window.ActiveXObject )
	    {
		    localXmlHttp = new ActiveXObject( 'Microsoft.XMLHTTP' );
		    // Specifies true for asynchronous operation (the call returns immediately)
		    localXmlHttp.Open( sendMethod , url , true );
		    localXmlHttp.Send( "" );
	    }
	    else if( window.XMLHttpRequest )
	    {
		    localXmlHttp = new XMLHttpRequest();
		    // Specifies true for asynchronous operation (the call returns immediately)
		    localXmlHttp.open( sendMethod, url, true );
		    localXmlHttp.send( "" );
	    }
    		
	    return localXmlHttp;
    }
CrossDomainChanel = function(request,callBack,isValid, args)
{
	var CDChanel=document.createElement("script");
	CDChanel.type="text/javascript";
	CDChanel.language="javascript";
	CDChanel.id="chanel_"+CrossDomainChanel.chanelID;
	CrossDomainChanel.chanelID++;
	CDChanel.src=request;
	
	if(navigator.userAgent.indexOf("IE")>=0)
	{
		CDChanel.onreadystatechange=function()
		{
			if(CDChanel&&("loaded"==CDChanel.readyState||"complete"==CDChanel.readyState))
			{
				CDChanel.onreadystatechange=null;
				EndInvoke(CDChanel,callBack,args);
			}
		};
	}
	else
	{
		if(navigator.userAgent.indexOf("Safari")>0)
			setTimeout( TestResults, 300 );
		else
			CDChanel.onload=function(){CDChanel.onload=null;EndInvoke(CDChanel,callBack, args)};
	}
	
	document.getElementsByTagName("head")[0].appendChild(CDChanel);
	
	function TestResults()
	{
		if(isValid())
		{
			CDChanel.onload=null;EndInvoke(CDChanel,callBack)
		}
		else
		{
			setTimeout(TestResults,300);
		}
	}
 
	function EndInvoke(CDChanel,callBack,args)
	{
	    if (args != null)
		    callBack(args);
		else
		    callBack();
		document.getElementsByTagName("head")[0].removeChild(CDChanel);
	}
}
 
//Static varible used for ID generation
CrossDomainChanel.chanelID=1;
 
function GetXmlHttp(){var x=null;try{x=new ActiveXObject("Msxml2.XMLHTTP")}catch(e){try{x=new ActiveXObject("Microsoft.XMLHTTP")}catch(e){x=null}}if(!x&&typeof XMLHttpRequest!="undefined"){x=new XMLHttpRequest()}return x;}
 
function addLoadEvent(func, func_first) {       
         
	var oldonload=window.onload;
	if(typeof oldonload=='undefined' || oldonload==null)
	{
		window.onload=func;
	}
	else
	{      
		if(func_first == 'true')
        {
			window.onload=function()
			{
				func();					 
				oldonload();
			}
        }
        else
        {
			window.onload=function()
			{
				oldonload();
				func();					 				
			}
        }
	}                                            
}
                                                                                                         
function $(id)                                    
{                                                 
	return document.getElementById(id);             
}                                                 
                                                  
function $V(id)                                   
{                                                 
	return escape(document.getElementById(id).value);       
}     
 
function $Q( name )
{
  var regexS = "[\\?&]"+name+"=([^&#]*)";
  var regex = new RegExp( regexS );
  var tmpURL = window.location.href;
  var results = regex.exec( tmpURL );
  if( results == null )
    return "";
  else
    return results[1];
}
 
function getMethodNameFromUrl(url,methodNamePrefix)
{		
	var queryparams=url.substring(url.indexOf('?')+1);
 
	var params=queryparams.split('&');
	
	var methodname = methodNamePrefix || 'Get';
	for(var i=0;i<params.length;i++)
	{
		methodname+=params[i].split('=')[1];
	}
 
	return methodname.replace(/[^a-zA-Z0-9_]/g,'_');
}
 
function LoadScript(script)
{
	var scriptTag=document.createElement("script");
	scriptTag.type="text/javascript";
	scriptTag.language="javascript";			
	scriptTag.src=script;			
	document.getElementsByTagName("head")[0].appendChild(scriptTag);
}
	
//KeyPress support
 
// corrige le code des touches
var button_un=-1;
var button_deux=-1;
 
var state = 0;
 
function eventTrigger (e)
{
	if (! e)
		e = event;
	return e.target || e.srcElement;
}
 
function keyCodeTriggered(e)
{
	if (! e)
		e = event;
	return e.keyCode;
}
 
function comboState(e)
{		
	var source = eventTrigger(e);	
	if(source.nodeName == "SELECT" && state == 0)
	{
		state = 1;
	}
	else
	{
		state=0;
	}	
		
	if (typeof(active1) != 'undefined' && active1 != 'undefined' && source.id.indexOf(active1.strCCtrlPageParentNameOut+"_"+active1.strCCtrlParentNameIn) != -1) 
		active = active1;
	else if (typeof(active2) != 'undefined' && active2 != 'undefined' && source.id.indexOf(active2.strCCtrlPageParentNameOut+"_"+active2.strCCtrlParentNameIn) != -1) 	
		active = active2;
}
 
function codeTouche(e) {
  var cret;
  // if combo box is open (state = 1) don't return key code because we don't want to do 
  // search.
  var source = eventTrigger(e);	
 
  if (source.nodeName == "SELECT" && keyCodeTriggered(e) == 13 && state == 1) {
	state = 0;
	return; 
 }
  if (window.event) {
    if (parseInt(button_deux)>0) 
		cret=button_deux;
    else 
		cret=window.event.keyCode;
    if (window.event.type=="keypress") 
		button_deux=window.event.keyCode;
    if (window.event.type=="keydown") 
		button_deux=-1;
  } 
  else 
  {
    if (parseInt(button_deux)>0) 
		cret=button_deux;
    else if ((parseInt(button_un)>0) && (e.which<1)) 
		cret=button_un;
    else 
		cret=e.which;
    if (e.type=="keydown")
    {
      button_un=e.which;
      button_deux=-1;
    }
    if (e.type=="keypress") 
		button_deux=e.which;
  }
  
  if (parseInt(cret)>57000) 
  {
    cret = button_cor[cret-57300];
   }
   button_deux=-1;
  return (parseInt(cret));
}
 
document.onclick = comboState;
 
//beget
var tgsCSSystemBaseObj = {};
tgsCSSystemBaseObj.beget = function(o) {
    var F = function() { };
    F.prototype = o;
    return new F();
};
 
if (typeof Function.prototype.set_method == 'undefined') {
    Function.prototype.set_method = function(name, func) {
        if (!this.prototype[name])
            this.prototype[name] = func;
        else
            throw "function " + name + "alrady exists in Function.prototype";
        return this;
    };
}
if (typeof Function.prototype.inherits == 'undefined') {
    Function.set_method('inherits', function(Parent) {
        this.prototype = new Parent();
        return this;
    });
}
if (typeof Function.prototype.set_base == 'undefined') {
    Function.set_method('set_base', function(Parent) {
        this.prototype = Parent;
        return this;
    });
}
if (typeof TGSregisterNameSpaces == 'undefined') {
    TGSregisterNameSpaces = function(ns, prototype) {
        var nsParts = ns.split(".");
        var root = window;
 
        for (var i = 0; i < nsParts.length; i++) {
            if (typeof root[nsParts[i]] == "undefined") {
                if (prototype && i == nsParts.length - 1)
                    root[nsParts[i]] = tgsCSSystemBaseObj.beget(prototype);
                else
                    root[nsParts[i]] = new Object();
            }
            root = root[nsParts[i]];
        }
    };
}
 
if (typeof IsTGSNamespaceRegistred == 'undefined') {
    IsTGSNamespaceRegistred = function(ns) {
        var nsParts = ns.split(".");
        var root = window;
 
        for (var i = 0; i < nsParts.length; i++) {
            if (typeof root[nsParts[i]] == "undefined") {
                return false;
            }
            root = root[nsParts[i]];
        }
        return true;
    };
}