//*************for change state check

var changed = false;
var zLayerIndex = 1050;

function isStateChanged()
{
  return changed;
}

function changeState()
{
   changed = true;
}

var g_funsToRunInPartialUpdate = [];

function hookupChangedHandler()
{
  for (var i = 0; i < document.forms.length; i++) {
        var f = document.forms[i];
        for (var j = 0; j < f.elements.length; j++) {
	    if (f.elements[j].tagName.toUpperCase() == "SELECT")
		$(f.elements[j]).change(changeState);
	    else if (f.elements[j].type=="radio" || f.elements[j].type=="checkbox" )
		$(f.elements[j]).click(changeState);
	    else if (f.elements[j].type == "text" ||
               f.elements[j].type == "password" || 
		f.elements[j].tagName.toUpperCase() == "TEXTAREA")
	    	$(f.elements[j]).keypress(changeState);
            
        }
    }
}

function setCookie(name, value)
{
  var domain = "";
  
  if (typeof CookieDomain  != "undefined")
    domain = CookieDomain;
  
  var cv = name + "=" + value + "; path=/";
  
  if (domain != "")
    cv += "; domain=" + domain;
  
  document.cookie = cv;
}

function getCookie(name)
{
  var cookies = document.cookie.split("; ");
  for (var i=0; i < cookies.length; i++)
  {
    var nvp = cookies[i].split("=");
    if (name == nvp[0]) 
      return nvp[1];
  }

  return null;
}

//******************* call to open a layer

var https_query_magic = "kNtBzmUK9zU";
var https_query_magic_value = "=1";

var PROTOCOL_HTTP = "http:";
var PROTOCOL_HTTPS = "https:";
var DEFAULT_PORT = "80";


var originalURLCookieName = "pmeoriginalurl";
var returnURLCookieName = "pmereturnurl";
var layerURLCookieName = "pmelayerurl";
var dialogModeCookieName = "pmedialogmode";

var dialogLeftCookieName = "dialogx";
var dialogTopCookieName = "dialogy";
var dialogWidthCookieName = "dialogw";

var dialogOpened = false;
var countryPath;

function getCookieValue(cookiename, defaultvalue)
{
   var v = getCookie(cookiename);
   if (v == null || v == "")
	return defaultvalue;
   return parseInt(v);
}

function openPositionedDialog(url, zindex,width, left, top)
{
  dialogOpened = true;
  rm_placeIframe(url, zindex, width, left, top); 
}

function tryClosePositionedDialog()
{
   if (dialogOpened  == true)
   {
     dialogOpened = false;
     rm_unplaceIframe();
   }
}

function openWindowLayer(url, dialogMode) {
 if (dialogMode)
 {
    var originX = 0;
    var originY = 0;

    if($(".Stage").length > 0)
    {
	originX = $(".Stage").position().left;
        originY = $(".Stage").position().top;
    }

    var width = getCookieValue(dialogWidthCookieName,250);
    var left = getCookieValue(dialogLeftCookieName,700) -10-originX ;
    var top = getCookieValue(dialogTopCookieName,70) + 20 -originY;

    openPositionedDialog(url, zLayerIndex, width, left, top);
 }
 else 
 {
    tryClosePositionedDialog();
    rm_displayIframe(url, zLayerIndex);
 }

 setCookie(layerURLCookieName,"");
}

original_openWindowLayer = openWindowLayer;

var winParentWin = null;



function ensureHttpSuffix(url)
{
   if (typeof UseSSLForFormEngine != "undefined")
   {
       
       if (url.toLowerCase().indexOf(https_query_magic.toLowerCase()) < 0)
       {
          var sep = "?";
          
          if (url.indexOf("?") >0)
            sep = "&";
            
          url = url + sep + https_query_magic + https_query_magic_value;
       }
   }


   return url;
}


function openAbandonWarningDialog(win)
{
	if (win != null)
		parent.window.winParentWin = win;

	//var url = '~/profile/formAbandonWarning.epx?' + https_query_magic + https_query_magic_value;
	
	if (typeof AbandonWarningUrl != "undefined" && AbandonWarningUrl != "")
	{
		var url = AbandonWarningUrl;

		url = ensureHttpSuffix(url);

 		parent.window.rm_winBackiFrame(url, 300+zLayerIndex);
	}
        else
        {
		parent.window.rm_fadeOutIframe(true);
        }
}

var winbackURL = "profile/formWinBackWarning.epx";
function openWinbackWarningDialog(win)
{
    parent.window.winParentWin = win;
    var winback = '/' + winbackURL;

    if (typeof countryPath != "undefined")
        winback = countryPath + winbackURL;

 	parent.window.rm_winBackiFrame(winback + '?' + https_query_magic + https_query_magic_value, 301+zLayerIndex);
}

function closeWindowLayer(bRefresh)
{
    rm_fadeOutIframe_2(bRefresh, parent.window.location.href);

    if(-1 < parent.window.location.href.toLowerCase().indexOf("yourinfo"))
    {
        var cookieName = "pmewtaupdate";
        var cookieValue = "abandon";
        
        setCookie(cookieName, cookieValue);
    }
}

function closeWindowLayerAndRefresh()
{
   parent.window.rm_fadeOutIframe(true);
}

function closeWindowLayerAndGotoURL(url)
{
    if(-1 < parent.window.location.href.toLowerCase().indexOf("yourinfo"))
    {
        var cookieName = "pmewtaupdate";
        var cookieValue = "save";
        
        setCookie(cookieName, cookieValue);
    }
    
    var newUrl = url;
    if (newUrl == null || newUrl == "")
       newUrl = parent.window.location.href;
       
    parent.window.rm_fadeOutIframe_2("true", newUrl);
    /*parent.window.rm_fadeOutIframe();
    if (url == null || url == "")
        parent.window.location.href = parent.window.location.reload(); //parent.window.location.href;
    else
        parent.window.location = url; //.href = url;*/
}

function closeWindowLayerAndTryRefresh()
{
   if (typeof ContactLoggedIn != "undefined")
        parent.window.rm_fadeOutIframe(true);
   else
        parent.window.rm_fadeOutIframe();
}



function DoWinBack(win)
{
     var cookieName = "EmailWinBackPopUp";
     var cookieValue = "1";

     var v = getCookie(cookieName);
     if (v == null || v == "")
     {
       openWinbackWarningDialog(win);
       setCookie(cookieName,cookieValue);
     }
}

function checkWinBack()
{
  return true;
}



function ensureHttps(url)
{
   if (typeof UseSSLForFormEngine != "undefined")
   {
       if (window.location.protocol == PROTOCOL_HTTP)
       { 
           url = PROTOCOL_HTTPS + window.location.href.substring(PROTOCOL_HTTP.length);    
       } 
       
       if (url.toUpperCase().indexOf(https_query_magic.toUpperCase()) < 0)
       {
          var sep = "?";
          
          if (url.indexOf("?") >0)
            sep = "&";
            
          url = url + sep + https_query_magic + https_query_magic_value;

            if((window.location.port) && (window.location.port.Length != 0) && (window.location.port != DEFAULT_PORT))
            {
                var httpPort = ":" + window.location.port;
                url = url.replace(httpPort,"");
            }
       }
   }


   return url;
}

function TryInsertQueryMagicValue(url)
{
   if (typeof UseSSLForFormEngine != "undefined")
   {
       if (url.toUpperCase().indexOf(https_query_magic.toUpperCase()) < 0)
       {
          var sep = "?";
          
          if (url.indexOf("?") >0)
            sep = "&";
            
          url = url + sep + https_query_magic + https_query_magic_value;
       }
   }


   return url;
}

function setupUrl(url)
{
  
}

function setCookiesAndOpenWindowLayer(url, dialogMode)
{

   if (dialogMode && dialogOpened)
   {
     return;
   }


  if (arguments.length > 2 && arguments[2] != null)
  {
     var pos = $(arguments[2]).position();
     setCookie(dialogLeftCookieName, pos.left);
     setCookie(dialogTopCookieName, pos.top);
  }


  if (arguments.length > 3 && arguments[3] != null)
  {
    setCookie(dialogWidthCookieName, arguments[3]);
  }


   
   var originalURL = window.location.href.toLowerCase();
   
   if (originalURL.indexOf("profile/logout.epx") >0)
   {
        originalURL = window.location.pathname.toLowerCase().replace("profile/logout.epx","index.epx");
   }
   
   setCookie(originalURLCookieName, escape(originalURL));
   setCookie(returnURLCookieName, escape(originalURL));
   
   var dialogModeValue = "false";

   if (dialogMode)
          dialogModeValue = "true";
   else
 	 dialogModeValue = "false";
   
   setCookie(dialogModeCookieName,dialogModeValue);
   
   var redirectURL = originalURL;
   
   redirectURL = ensureHttps(redirectURL);
   url = TryInsertQueryMagicValue(url);

   if (redirectURL.toLowerCase() != window.location.href.toLowerCase())
   {
        setCookie(layerURLCookieName, escape(url));
        
        window.location.href = redirectURL;
   }          
   else
        openWindowLayer(url, dialogMode);


     
}

var scaOpenWindowLayer = setCookiesAndOpenWindowLayer;


function hookupValidators()
{
if ((typeof  Page_Validators != "undefined") && (typeof ValidatorHookupEvent != "undefined"))
   {
	for(var i=0; i<	Page_Validators.length; i++)
	{
	    var val = Page_Validators[i];
	    var c2v = document.getElementById(val.controltovalidate);
	    if (c2v != null)
	        ValidatorHookupEvent(c2v, "onblur", "ValidatorOnChange(event);");
		
	}
   }
}

$(document).ready(hookupValidators);

g_funsToRunInPartialUpdate.push(hookupValidators);

//for phone optin

function radioValueGetter(cname, values)
{
  var elements = document.getElementsByName(cname);
                    
  for(var j=0; j < elements.length; j++)
    if (elements[j].checked)
    {
       values[cname] = elements[j].value;
    }
}

function checkBoxValueGetter(cname, values)
{
var name = "input[name$=" +cname +"]";
values[cname] = $(name).is(':checked');
}

function dropDownValueGetter(cname, values)
{
  var elements = document.getElementsByName(cname);

  if (elements.length <=0) 
     return;
                  
  for(var j=0; j < elements[0].options.length; j++)
    if (elements[0].options[j].selected)
    {
        values[cname] = elements[0].options[j].value;
    }
}

function evaldependency(obj,prompts) {
      
               var found = false;
                
                for (var i=0; i < this.dependencies.length; i++)
                {
                      if (this.dependencies[i] == obj[0].name)
                      {
                        found = true;
                        break;
                      }
                }
                
                if (!found)
                    return;
                   
                var enabled = null;
                
                var values = {};
                
                for (var i=0; i < this.dependencies.length; i++)
                {
                    var cname = this.dependencies[i];
		    this.dependencyvaluegetters[cname](cname,values);
                }
                
                
                if (this.dependencyoperator == 'or')
                {
                    enabled = false;
                    
                    for (var i=0; i < this.dependencies.length; i++)
                    {
                        var cname = this.dependencies[i];

                        enabled =  enabled || (values[cname] == this.dependencyvalues[cname]);
                        
                    }
                    
                }
                else if (this.dependencyoperator == 'and')
                {
                    enabled = true;
                    
                    for (var i=0; i < this.dependencies.length; i++)
                    {
                        var cname = this.dependencies[i];

                        enabled = enabled && (values[cname] == this.dependencyvalues[cname]);
                        
                    }
                
                }
                
                if (enabled != null)
		{
                    ValidatorEnable(this, enabled); //from microsoft validation js
		    
		    if (prompts != null && prompts.length>0) 
		    {
			if(enabled == true) prompts.show();
			else prompts.hide();
		    }
		}
                
            }

function IsTelephoneRequired()
{
    var country = $("select[name$=Country]").val();
    var requiredFor = ["BR", "AG", "AR", "AW", "BS", "BB", "BZ", "BM", "BO", "KY", "CL", "CO", "CR", "CU", "DM", "DO", 
                        "EC", "SV", "GD", "GT", "GY", "HT", "HN", "JM", "MX", "NI", "PA", "PY", "PE", "PR", "KN", "LC", "VC", "SR", "TT", "TC", "UY", "VE", "US", "CA", "JP"]
 
    var found = false;
    for(i = 0; i < requiredFor.length; i++)
    {
        if(requiredFor[i] == country)
        {
            found = true;
            break;
        }
    }
    return found;
}


function hookupPhoneValidators(fieldName) {

    if(IsTelephoneRequired())
        return;

    var requiredFieldValidator = "span[id$=" + fieldName + "_RequiredFieldValidator]";
    var requiredField = "span[id$=" + fieldName + "_Required]";

    var phonevaldiators = $(requiredFieldValidator);
    if (phonevaldiators.length > 0)
    {
      var phonevalidator  = phonevaldiators.get(0);
      phonevalidator.dependencies = [];
      phonevalidator.dependencyvalues = {};
      phonevalidator.dependencyvaluegetters = {};
      phonevalidator.dependencyoperator = 'or';
      phonevalidator.dependencycheckfunction = evaldependency;
      
$("input[name$=PhoneOptIn][value^=true]").each(function(index){
        phonevalidator.dependencies.push(this.name);
        phonevalidator.dependencyvalues[this.name] = this.value;
        phonevalidator.dependencyvaluegetters[this.name] = radioValueGetter;
      }
      );

    var t = $("input[name$=ContactSalesRep]");
    if(t.length > 0)
    {
    if(t.attr('type') == 'radio')
    {
$("input[name$=ContactSalesRep][value^=true]").each(function(index){
        phonevalidator.dependencies.push(this.name);
        phonevalidator.dependencyvalues[this.name] = this.value;
        phonevalidator.dependencyvaluegetters[this.name] = radioValueGetter;
      }
      );
      }
      else
      {
        phonevalidator.dependencies.push(t.get(0).name);
        phonevalidator.dependencyvalues[t.get(0).name] = true;
        phonevalidator.dependencyvaluegetters[t.get(0).name] = checkBoxValueGetter;
      }
    }
$("select[name$=ContactMeBy]").each(function(index){
        phonevalidator.dependencies.push(this.name);

	for(var i=0;i<this.options.length;i++)
		if (this.options[i].value.match(/^Telephone/))
        		phonevalidator.dependencyvalues[this.name] = this.options[i].value;

        phonevalidator.dependencyvaluegetters[this.name] = dropDownValueGetter;
      }
      );

      
      if (phonevalidator.dependencies.length > 0)
      {
        $("input[name$=ContactSalesRep],input[name$=PhoneOptIn]").click(function() {
                    phonevalidator.dependencycheckfunction($(this),$(requiredField));
            });

        $("select[name$=ContactMeBy]").change(function() {
                    phonevalidator.dependencycheckfunction($(this),$(requiredField));
            });
      }
      
    }
}

$(document).ready(function(){
    hookupPhoneValidators("Phone");
    hookupPhoneValidators("Phone2");
});

g_funsToRunInPartialUpdate.push(function(){
hookupPhoneValidators("Phone")
});

g_funsToRunInPartialUpdate.push(function(){
hookupPhoneValidators("Phone2")
});


function  unhookupPhoneValidators() {

     var phonevaldiators = $('span[id$=Phone_RequiredFieldValidator]');
    if (phonevaldiators.length > 0)
    {
      var phonevalidator  = phonevaldiators.get(0);

        if((phonevalidator.dependencies != "") && (phonevalidator.dependencies != null) )
        {
          if (phonevalidator.dependencies.length > 0)
          {
            $("input[name$=ContactSalesRep],input[name$=PhoneOptIn]").unbind('click');

            $("select[name$=ContactMeBy]").unbind('change');

            for(var i=0; i < g_funsToRunInPartialUpdate.length; i++)
            {
	            if (g_funsToRunInPartialUpdate[i]==hookupPhoneValidators)
	            {
		            g_funsToRunInPartialUpdate.splice(i,1);
		            break;
	            }
            }
        }
      }
    }
}
    
//check email
var CheckEmailURL = '/gwtservices/checkemail.epx?kNtBzmUK9zU=1';
var currentEmail = "";

function CheckEmail(val) 
{  
    var control = document.getElementById(val.controltovalidate);
    var email = control.value;

    if (typeof countryPath != "undefined")
      CheckEmailURL = countryPath + 'checkemail.epx?kNtBzmUK9zU=1';

    try
    {
	if (email != currentEmail)
	{
	    currentEmail = email;
            $.ajax({ 
                type: 'POST',
                contentType: 'application/x-www-form-urlencoded; charset=utf-8',   
                url: CheckEmailURL,
                data: GetEmailData(email),
                success: function(msg) { CheckEmailSucceeded(val,msg);},
                error: CheckEmailFailed
            });
	}
    }
    catch(e)
    {
    }

    return true;
}; 

function GetEmailData(email)
{            
   return "Email=" + escape(email);
}
               
function CheckEmailSucceeded(val, msg) 
{
    if (msg != "")
    {
	val.isvalid = msg == "False";
	ValidatorUpdateDisplay(val);
    }

    currentEmail="";
}

function CheckEmailFailed(result) 
{
    //window.status = result.status + ' ' + result.statusText; 
  currentEmail = "";
}

//remember me, need revisit later
function PMERememberMe()
{
parent.window.rm_winBackiFrame('~/profile/pme_remember_me.epx?sapmtn=blankpageforwarning&' + https_query_magic + https_query_magic_value, 301+zLayerIndex);

  return false;
}

function CloseRememberMe(url)
{
  parent.window.rm_fadeOutwinBackiFrame();
 
  return false;
}

function ChangeEmailOptInAndCloseWindow(change)
{
  if (change == true)
  {
     if (parent.window.winParentWin != null)
        parent.window.winParentWin.$("input[name$=EmailOptIn][value^=true]")[0].checked = true;  
  }
  
  rm_fadeOutwinBackiFrame();
}

function hookupEmailWinBack()
{
   $('input[name$=EmailOptIn][value^=false]').click(function(){
     DoWinBack(window);
  });
}

$(document).ready(hookupEmailWinBack);

g_funsToRunInPartialUpdate.push(hookupEmailWinBack);

function OnErrorMoveTo()
{
	var controlToMoveTo = Page_InvalidControlToBeFocused;
	if (controlToMoveTo == null)
	{
		controlToMoveTo  = $('*[id$=FormValidationSummary]');
		if (controlToMoveTo.length == 0)
			controlToMoveTo  = $('*[id$=Country]');
	}
	else
	{
		controlToMoveTo = $(controlToMoveTo);
	}
    controlToMoveTo.show();

	if (controlToMoveTo != null && controlToMoveTo.length > 0)
	{
		var pos = controlToMoveTo.offset();
		parent.window.scrollTo(0, pos.top);
	}
	else
		parent.window.scrollTo(0,0);

	return false;
}

function notifyLayerClose()
{
  if (winParentWin != null && typeof winParentWin.PION_abandonForms != "undefined")
     winParentWin.PION_abandonForms();
}

function abandonWindowForceClose(bRefresh)
{

   rm_fadeOutwinBackiFrame();
   closeWindowLayer(bRefresh);
   notifyLayerClose();
}


function getReturnURL()
{
   return decodeURIComponent(getCookie(returnURLCookieName));
}

function abandonWindowForceCloseAndTryRedirect(bRefresh)
{

   rm_fadeOutwinBackiFrame();

   var returnURL = getReturnURL();

   if (returnURL != null && returnURL != "")
   {
	window.location.href = returnURL;
   }
   else
   	closeWindowLayer(bRefresh);

   notifyLayerClose();
}

function closeDialogOpenFrame(url)
{
   rm_unplaceIframe(); 
   openWindowLayer(url);
}


function closeDialogAndRefresh()
{
   rm_unplaceIframe();
   window.location.reload();
}

function openDialog(win,url)
{
  if (win != null)
     parent.window.winParentWin = win;

  parent.window.rm_winBackiFrame(url, 300+zLayerIndex);
}

function closeDialogAndRedirect(url)
{
  rm_unplaceIframe(); 
  if (parent.window.winParentWin != null)
	parent.window.winParentWin.location.href = url;
}

function closeWarningDialogAndRedirect(url)
{
  rm_fadeOutwinBackiFrame();
  if (parent.window.winParentWin != null)
	parent.window.winParentWin.location.href = url;
}


function setPosition(element, tooltip)
{
  var padding = 40;
  if (element.type == "radio")
	padding = 80;

  var pos = $(element).position();
  var width = $(element).width();
  var height = $(element).height();

  tooltip.css("left",pos.left + width + padding);
  tooltip.css("top",pos.top);
}

function hookupTooltips() {
  $(".HelpTipFlyout").each(function() {
       var tooltip = $(this);

	var re = /(.*)_Tooltip_Text/i;
	if (re.test(this.id)) {
	  var field = RegExp.$1;

	  $("*[name$=$" + field + "]").focus(function() {setPosition(this,tooltip); tooltip.show();})
				.blur(function() { tooltip.hide();});
	}
  });
}


$(document).ready(hookupTooltips);

g_funsToRunInPartialUpdate.push(hookupTooltips);

function runPartialUpdateFuncs()
{
  $(g_funsToRunInPartialUpdate).each(function() { this();});
}

$(document).ready(function () {
    $("input[name$=Phone2]").blur(copyPhone2ToPhone);
});

function copyPhone2ToPhone()
{
    $("input[name$=Phone]").val($("input[name$=Phone2]").val());
}


