

function RetVal(){
}
RetVal.SUCCESS=0; RetVal.EMPTY_ERR=1; RetVal.MIN_ERR=2; RetVal.MAX_ERR=3; RetVal.INVALID_ERR=4; RetVal.ICQ_INVALID_ERR=5;RetVal.FORMAT_ERR=6;

function User(){
}
User.SNONLY=0;User.ONSONLY=1;User.ALL=2;



function prereqchecks(badBrowserUrl) {
 var param="&badBrowser=1";
 var agt=navigator.userAgent.toLowerCase();
 // var is_mac = (agt.indexOf("mac") != -1);
 // var is_os9=(agt.indexOf("mac_ppc") !=-1);
 // if (navigator.appName=="Netscape" && parseInt(navigator.appVersion) <=3 && is_mac==false) { handleUrl(badBrowserUrl+param); }
 // if (navigator.appName=="Microsoft Internet Explorer" && parseInt(navigator.appVersion) <=3) { handleUrl(badBrowserUrl+param); }
 // if (is_mac && parseInt(navigator.appVersion) ==4 && is_os9) { handleUrl(badBrowserUrl+param); }
 var exp = new Date(); 
 exp.setTime(exp.getTime() + 1800000); 
 setCookie("cookies", "cookies", exp, false, false, false); 
 if (document.cookie.indexOf('cookies') == -1) { 
  handleUrl(badBrowserUrl);
 }
 exp = new Date(); 
 exp.setTime(exp.getTime() - 1800000); 
 setCookie("cookies", "cookies", exp, false, false, false); 
}




function setCookie(name, value, expires, path, domain, secure) {
 var curCookie = name + "=" + escape(value) + 
        ((expires) ? "; expires=" + expires.toGMTString() : "") + 
        ((path) ? "; path=" + path : "") +
        ((domain) ? "; domain=" + domain : "") +
        ((secure) ? "; secure" : "");
 document.cookie = curCookie; 
}

function trimString(sStr){
 return sStr.replace(/^\s+/gi,"").replace(/\s+$/gi,"");
}

function validateSN(sn) {

 var numericRegExp = /^[0-9]*$/;

	
 if(sn.length < 1) {
  return RetVal.EMPTY_ERR;
 }
	
 else if(sn.length <3 ) {	
  return RetVal.MIN_ERR;
 }
 
 else if(sn.length > 16) {
  return RetVal.MAX_ERR;
 }

 else if( numericRegExp.test(sn) && (sn.length<5 || sn.length>10) ) { 
  //ICQ UIN <=4 or >=11 is invalid
  return RetVal.ICQ_INVALID_ERR;
 }else if (numericRegExp.test(sn)){
   return   RetVal.SUCCESS;
  }
 else {	
  var snRegExp = /^([a-zA-Z]{1})([a-zA-Z0-9\s]*)$/;  
  var result = (snRegExp.test(sn))?  RetVal.SUCCESS :  RetVal.INVALID_ERR; 
  return result;
 }   
}

function valPassword(pwd,minLength){	
	if(pwd.length < 1){ return  RetVal.EMPTY_ERR; }
	else if(pwd.length < minLength ){ return RetVal.MIN_ERR;}
	else{ return RetVal.SUCCESS;}
}



function valPwRegAm(pwd,minLength){	
       if(pwd.length < 1) { return  RetVal.EMPTY_ERR; }
       else if(pwd.length < minLength ) { return RetVal.MIN_ERR; }
       else if( pwd.length > 16) { return RetVal.MAX_ERR; }
       else{ return RetVal.SUCCESS;}
  }






function validateEmail(emailAddr) {	
  if(emailAddr.length <1) {
  return RetVal.EMPTY_ERR;
 }
 else if(emailAddr.length <3 ) {
  return RetVal.MIN_ERR;
 }
 else if( emailAddr.length >97) {
  return RetVal.MAX_ERR;
 }
 else { 					
  var validRegExp = /^([a-zA-Z0-9_]{1}[\w\-\/&\*\+~%$!=\?#'\^\`{}|]*)(\.[\w\-\/&\*\+~%$!=\?#'\^`{}|]+)*@([\w\-\/&\*\+~%$!=\?#'\^`{}|]+)((\.[\w\-\/&\*\+~%$!=?#'\^`{}|]+)+)$/;
  var result=(validRegExp.test(emailAddr)) ? RetVal.SUCCESS : RetVal.INVALID_ERR ;	
  return result;		
 }	
}







function validateLoginId(loginId) {
 var regExp = /@/;		
 var result= regExp.test(loginId) ? validateEmail(loginId) : validateSN(loginId);	
 return result;
}







function snsInfoPopUp(mode, pathOrTitleString, bodyString) {
	var newUrl;    
    var pattern = /\?/;
    var adjustedPathOrTitleString = pathOrTitleString.replace(pattern,"&");	
	if (mode==0) {  newUrl = "/help/infoPopUp.psp?title=" + adjustedPathOrTitleString + "&body=" + bodyString;}
	else if (mode==1) { newUrl=pathOrTitleString;}
	else { return;}		
	window.onerror = null;
	var x = 0, y = 0;
	if (document.all) {	x = window.screenLeft + 30;	y = window.screenTop - 50;}
	else if (document.layers) {x = window.screenX + 30;y = window.screenY + 75;}
	if (y <= 0) { y = 10;}        
    var propString = "scrollbars=yes,width=565,height=275,resizable=yes, top=" + y + ",screenY=" + y + ",left=" + x + ",screenX=" + x;
	var newwin = window.open(newUrl,"popup",propString);
	if (window.focus) {	newwin.focus();	}
	return;
}






function snsCheckSignInForm(loginForm,loginErr,pwdErr) {
 var loginId = loginForm.loginId;
 var password =loginForm.password;
 var loginIdVal = loginId.value;
 var errCode, result;
 errCode = validateLoginId(loginIdVal);
 result =(errCode == RetVal.SUCCESS)? true:false;  
 if(!result) {
  alert(loginErr[errCode]);
  loginId.focus();
  return false;
 }
 errCode = valPassword(password.value,3);
 result = (errCode == RetVal.SUCCESS) ? true : false;  
 if(!result) {
  alert(pwdErr[errCode]);
  password.value="";
  password.focus();
  return false;
 }
 return true;
}


function checkIcqForm(loginForm,loginErr,pwdErr) {
  var loginId = loginForm.loginId;
  var password =loginForm.password;
  var loginIdVal = loginId.value;
  var errCode; 
  var result;
  errCode = validateIcqId(loginIdVal);
  result =(errCode == RetVal.SUCCESS)? true:false;  
  if(!result) {
   alert(loginErr[errCode]);
   loginId.focus();
   return false;
  }
  errCode = valPassword(password.value,3);
  result = (errCode == RetVal.SUCCESS) ? true : false;  
  if(!result) {
   alert(pwdErr[errCode]);
   password.value="";
   password.focus();
   return false;
  }
  return true;
}


function validateIcqId(loginId) {
  var regExp = /@/;		
  var result= regExp.test(loginId) ? validateEmail(loginId) : validateIcqUin(loginId);	
  return result;
}



function validateIcqUin(sn) {

  var numericRegExp = /^[0-9]*$/;
  
  var trimmedId = trimString(sn);

  if(numericRegExp.test(trimmedId) && (trimmedId.length < 1)) {
   return RetVal.EMPTY_ERR;
  }

  else if(numericRegExp.test(trimmedId) && (trimmedId.length < 5)) {
   return RetVal.MIN_ERR;
  }

  else if(numericRegExp.test(trimmedId) && (trimmedId.length>10)) {
   return RetVal.MAX_ERR;
 }

  else {
  var result = (numericRegExp.test(trimmedId))?  RetVal.SUCCESS :  RetVal.INVALID_ERR;
  return result;
 }
}



function handleUrl(url) {
 document.location.href = url;
}





function stripOffAOLDomains(loginId) {

 var id=trimString(loginId.value);
 var splitArr = id.match("^(.+)@(.+)$");

 if(splitArr != null && splitArr.length ==3) {
  var domain=splitArr[2].toLowerCase();	 
  if(domain=="aol.com" || domain =="aim.com" || domain=="netscape.net" || domain =="aol.fr" || domain =="aol.de" || domain =="cs.com" || domain=="aol.co.uk") { 
   loginId.value=splitArr[1];
  }
  else {
   loginId.value=id;
  }
 }
 else {
  loginId.value=id;
 }
 
}







function _sns_p(j) {
 return document.getElementById(j)
}


function _sns_o(j) {
 return document.getElementById(j).style
}


var _sns_tab_cur=new Array();



function _sns_tab_init(mod,t) {
 var max=1;
 _sns_p(mod+".t"+t).className="selected";
 _sns_tab_cur[mod]=t;
 while(_sns_p(mod+"."+max)) {
  _sns_tab_set(mod,max);
  max++
 }
}

 

function _sns_tab_set(mod,t) { 
 var f=function c() {
 
 if(t!=_sns_tab_cur[mod]) {
  _sns_p(mod+".t"+_sns_tab_cur[mod]).className="";
  _sns_o(mod+"."+_sns_tab_cur[mod]).display="none";
  _sns_p(mod+".t"+t).className="selected";
  _sns_o(mod+"."+t).display="block";
  
  if(_sns_p("lgnId"+t)) {
   if(_sns_p("lgnId"+t).value=="") {
    _sns_p("lgnId"+t).focus();
   }
   else {
    _sns_p("pwdId"+t).focus();
   }
  }
  
  else if(_sns_p("oid-url")) {
   _sns_p("oid-url").focus();
  }
  _sns_tab_cur[mod]=t;
 }
}
_sns_p(mod+".t"+t).onclick=f;
}


function _tab_set(mod,t) {
 for(var i=1;i<=3;i++) {
  if(i==t) {
   _sns_p(mod+".t"+t).className="selected";
   _sns_o(mod+"."+t).display="block";
  }
  else {
   _sns_p(mod+".t"+i).className="";
   _sns_o(mod+"."+i).display="none";
  }
 }
 _sns_tab_cur[mod]=t;
}



function valOIDForm(form,oidErr) {
 var errCode=RetVal.SUCCESS;
 var oid = form.openid_url;
 var oidVal = trimString(oid.value);
 if(oidVal.length<1) {	
  errCode = RetVal.EMPTY_ERR;
 }
 if(errCode!=RetVal.SUCCESS) {
  alert(oidErr[errCode]);
  oid.focus();
  return false;
 }
 else {
  return true;
 }
}

function getObject(soundobj){
    var player;
    if(document.getElementById) {
            player = document.getElementById(soundobj);
    }else if (document.layers) {
            player = eval("document."+soundobj);
    }else if(document.all) {
            player = document.all[soundobj];
    }
    return player;
}
                                                                                
                                                                                
function playAudio(audioUrl) {
  var embedPlayerCode = '<EMBED SRC="'+audioUrl+'" HIDDEN="true" AUTOSTART="true" />';
  if(getObject("audiodiv")){                                                                              
	  getObject("audiodiv").innerHTML = "";
	  getObject("audiodiv").innerHTML = embedPlayerCode;
   }
  if( getObject("img")){                                                                            
	  getObject("img").value="";
	  getObject("img").focus();
  }
  } 



function xstooltip_findPosX(obj) {
 var curleft = 0;
 if (obj.offsetParent) {
  while (obj.offsetParent) {
   curleft += obj.offsetLeft
   obj = obj.offsetParent;
  }
 }
 else if (obj.x)
  curleft += obj.x;
  return curleft;
}



function xstooltip_findPosY(obj) {
 var curtop = 0;
 if (obj.offsetParent) {
  while (obj.offsetParent) {
   curtop += obj.offsetTop
   obj = obj.offsetParent;
  }
 }
 else if (obj.y)
  curtop += obj.y;
  return curtop;
}  
  
  
function capLockReg(e, errMsg, toolTipDiv, parentId) {
 kc = e.keyCode?e.keyCode:e.which;
 sk = e.shiftKey?e.shiftKey:((kc == 16)?true:false);
 if(((kc >= 65 && kc <= 90) && !sk)||((kc >= 97 && kc <= 122) && sk)) {
  it = document.getElementById(toolTipDiv);
  img = document.getElementById(parentId);
  it.style.visibility = 'visible';
  document.getElementById('divCapsWarnReg').innerHTML = errMsg;
 }
 else {
  it = document.getElementById(toolTipDiv);
  it.style.visibility = 'hidden';
 }
} 
  
  
  
  function changeTxtColor(e, loginIdLbl) {
   document.getElementById('lgnId1').style.color="#000000";
  }
  
  
   

function capLock(e, errMsg, toolTipDiv, parentId, tab, posX, posY) {

 kc = e.keyCode?e.keyCode:e.which;
 sk = e.shiftKey?e.shiftKey:((kc == 16)?true:false);
 if(((kc >= 65 && kc <= 90) && !sk)||((kc >= 97 && kc <= 122) && sk)) {
  it = document.getElementById(toolTipDiv);
  if ((it.style.top == '' || it.style.top == 0) && (it.style.left == '' || it.style.left == 0)) {
   img = document.getElementById(parentId);
   // if tooltip is too wide, shift left to be within parent
   if (posX + it.offsetWidth > img.offsetWidth) posX = img.offsetWidth - it.offsetWidth;
    if (posX < 0 ) posX = 0;
     x = xstooltip_findPosX(img) + posX;
     y = xstooltip_findPosY(img) + posY;
     it.style.top = y + 'px';
     it.style.left = x + 'px';
     it.style.top = y + 'px';
     it.style.left = x + 'px';
     // it.style.left = '230px';
     // it.style.top = '800px';
    }
    it.style.visibility = 'visible';
    var currentTab = tab;
    if(currentTab == "aol") {
     document.getElementById('divCapsWarn').innerHTML = errMsg;
    }
    else {
     document.getElementById('divCapsWarnIcq').innerHTML = errMsg;
    }
   }
   else {
    it = document.getElementById(toolTipDiv);
    it.style.visibility = 'hidden';
   }
 }
  
   

function selectRange(field) {
 var start = 0 ;
 var end = (field.value).length;
 if(field.setSelectionRange) {
  field.setSelectionRange(start,end);
 }
 else if (field.createTextRange) {
  var range = field.createTextRange();
  range.collapse(true);
  range.moveEnd('character', end);
  range.moveStart('character', start);
  range.select();
 }
}


function clearLbl(lgnId,loginIdLbl) {
 //if(document.getElementById(lgnId).value == loginIdLbl) {
  //document.getElementById(lgnId).value="";
 var elem = document.getElementById(lgnId);
    selectRange(elem);
  document.getElementById(lgnId).style.color="#000000";
  
// }
}


function checkLbl(lgnId,loginIdLbl) {
 if(document.getElementById(lgnId).value == "" || document.getElementById(lgnId).value == loginIdLbl ) {
  document.getElementById(lgnId).style.color="#A8A8A8";
  document.getElementById(lgnId).value = loginIdLbl;
 }
}


function clearPwdLbl(pwdId,pwdLbl){
 document.getElementById("pwdId_holder").style.display="none";
 document.getElementById(pwdId).style.display="inline";
 document.getElementById(pwdId).focus();
}


function checkPwdLbl(pwdId, pwdLbl) {

}


function openFBLogin(FBLoginUrl) {
 var x = (screen.width - 490)/2; var y = (screen.height -490)/2;
 var oafbloginwin = window.open(FBLoginUrl,'name','resizable=yes,width=490,height=490,directories=no,titlebar=no,status=no,menubar=no,toolbar=no,scrollbars=yes,location=yes,left='+x+',top='+y);
 if(oafbloginwin) {
  oafbloginwin.focus()
 }
}















/* **************************************************************************** */

// NEW STUFF FOR BUTTONS UI REDESIGN

function AuthUtil(){}
AuthUtil.staticHostUrl="";

function Tab(){}
Tab.aol=0; Tab.aim=1; Tab.icq=2; Tab.bebo=3;

function UI(){}
UI.hdr=0; UI.loginLbl=1; UI.fpwdUrl=2;

var uiArr = new Array(4)
for(i=0;i<4;i++){
uiArr[i] = new Array(3);
}


//div name array with real div context
var btnArr=new Array("aol","google","yahoo","facebook", "openid");


//div names as aol alias
var AOLAliasDivs = new Array("aol", "aim", "icq", "bebo");


function getById(id){
 return document.getElementById(id);
}


function getStyle(id) {
 return document.getElementById(id).style;
}




function showTab2(divid) { 
 if(isAOLAlias(divid)) { 
  var btnId = "login-"+divid; 
  var elem = document.getElementById(btnId); 
  showAOLAliasTab(elem); 
 }
 else { 
  showContent(divid); 
  showTabs(divid); 
 } 
}



//return true if provider id is an aol alias
function isAOLAlias(divid){
 var b = false;
 for (var i=0; i < AOLAliasDivs.length; i++) {
  if (divid == AOLAliasDivs[i]) {
   b = true;
   break;
  }
 }
 return b;
}


// AOLAlias tab, use aol div content
// function showAOLAliasTab(elem){
// var btnId = elem.id;
// var splitArr = btnId.split("-");
// if(splitArr.length == 2) {
//  cntBlkId = splitArr[1];
  //change the login msg here use id signinHeadMsg
//  var msgObj = getById("signinHeadMsg");
//  if (msgObj) {
//   var msg = "Sign in with AOL";
//   if (cntBlkId == "aim") {
//    msg = "Sign in with AIM";
//   }
//   if(cntBlkId == "icq") {
 //   msg = "Sign in with ICQ";
 //  }
 //  if (cntBlkId == "bebo") {
 //   msg = "Sign in with Bebo";
 //  }
 //  msgObj.innerHTML = msg;
 // }
 // showContent("aol");
 // showTabs(cntBlkId);
 // }
// }




//AOLAlias tab, use aol div content
function showAOLAliasTab(elem) {

 var btnId = elem.id;
 var splitArr = btnId.split("-");
 
 if(splitArr.length == 2) {

  cntBlkId = splitArr[1];
  //change the login msg here use id signinHeadMsg
  var hdrObj = getById("signinHeadMsg");
  if (hdrObj) {			
   hdrObj.innerHTML = eval("uiArr[Tab."+cntBlkId+"][0]");
  }
  var loginLblObj = getById("lgnLbl");
  if(loginLblObj) {
   loginLblObj.innerHTML = eval("uiArr[Tab."+cntBlkId+"][UI.loginLbl]");
  }
  var fpwdObj = getById("forgotpwd");
  if(fpwdObj){
   fpwdObj.href = eval("uiArr[Tab."+cntBlkId+"][UI.fpwdUrl]");
  }
  
  showContent("aol");
  showTabs(cntBlkId);

 }

}




function showTab(elem){
 var btnId = elem.id;
 var splitArr = btnId.split("-");
 if(splitArr.length == 2) {
  cntBlkId = splitArr[1];
  showContent(cntBlkId);
  showTabs(cntBlkId);
 }
}


function attachAuthEvents() {
 for( var i=0; i < wantedDivs.length; i++) {
  var btnId = "login-"+ wantedDivs[i];
  if(document.getElementById(btnId)) {
   var elem = document.getElementById(btnId);
   if (isAOLAlias(wantedDivs[i])) {
    //virtual div, use AOL div
    elem.onclick=function() { 
     showAOLAliasTab(this);
     false;
    };
   }
   else { //not virtual, has real div with such name
    elem.onclick=function() { 
     showTab(this);
     false;
    };
   }
  }
 }
}


//show the div content given div name and hide other div in btnArr
function showContent(flow) {
 for( var i=0;i<btnArr.length;i++) {
  if(getById(btnArr[i])) {
   if(btnArr[i]== flow) {
    getStyle(btnArr[i]).display="block";
   }
   else {
    getStyle(btnArr[i]).display="none";
   }
  }
 } 
}


//change tab images for tabs whose names in wantedDivs
function showTabs(flow){
 //for tabs related to wantedDivs, change images
 for( var i=0;i<wantedDivs.length;i++){
  var btnId = "login-"+ wantedDivs[i];
  var imgId = wantedDivs[i]+"-img";
  if(getById(btnId)) {
   if(wantedDivs[i]== flow){
    // getStyle(btnId).background="url(/images/sns_blue_button_bg.png) no-repeat";
    // getById(imgId).src="/images/"+wantedDivs[i]+"_select.jpg";
    getStyle(btnId).background="url("+AuthUtil.staticHostUrl+"/images/sns_blue_button_bg.png) no-repeat";
    getById(imgId).src=AuthUtil.staticHostUrl+"/images/"+wantedDivs[i]+"_select.jpg";
   }
   else {
    getStyle(btnId).background="url("+AuthUtil.staticHostUrl+"/images/sns_white_button_bg.jpg) no-repeat";
    getById(imgId).src=AuthUtil.staticHostUrl+"/images/"+wantedDivs[i]+"_reg.jpg";
   }
  }
 } 
}




//create tab list according to var array wantedDivs
function createTabList() {
 
 var tabnav = document.getElementById('logintabs');
 //may want to use tabnav to get ul????
 var ulObj = document.getElementById('login-methods');
 if(tabnav && ulObj) {
  // get list items in tab navigator
  //var ulObj = document.getElementById('login-methods');
  // loop through wantedDivs items
  for (var i=0;i<wantedDivs.length;i++) {
   //create li element--contains a elem, which contains img
   var liObj;
   if (document.createElement && (liObj = document.createElement('li'))) {
    //now create an obj inside li
    var hrefObj = document.createElement('a');
    hrefObj.name = hrefObj.id = "login-" + wantedDivs[i]; 
    hrefObj.href = "#";
    
    // hrefObj.name = hrefObj.id = "login-" + wantedDivs[i];
    // hrefObj.href = "#" + wantedDivs[i];
    //hrefObj.style.background = "url(/images/logo_button_bg.jpg)"
    //now create an img obj inside href
    var imgObj = document.createElement('img');
    imgObj.name = imgObj.id = wantedDivs[i] + "-img";
    imgObj.src = AuthUtil.staticHostUrl+"/images/"+wantedDivs[i] + "_reg.jpg";
    // alert(imgObj.src);
    //hrefObj.href = "#" + wantedDivs[i];
    //hrefObj.innerHTML = wantedDivs[i];
    hrefObj.appendChild(imgObj);
    liObj.appendChild(hrefObj);
    //put li to ul
    ulObj.appendChild(liObj);
   }
  }
 }
}





function initOverLabels () {
 if (!document.getElementById) return;  	
  var labels, id, field;
  // Set focus and blur handlers to hide and show 
  // LABELs with 'overlabel' class names.
  labels = document.getElementsByTagName('label');
  for (var i = 0; i < labels.length; i++) {
   if (labels[i].className == 'overlabel') {
    // Skip labels that do not have a named association
    // with another field.
    id = labels[i].htmlFor || labels[i].getAttribute('for');
    if (!id || !(field = document.getElementById(id))) {
     continue;
    }
    // Change the applied class to hover the label 
    // over the form field.
    labels[i].className = 'overlabel-apply';
    // Hide any fields having an initial value.
    if (field.value !== '') {
     hideLabel(field.getAttribute('id'), true);
    }
    // Set handlers to show and hide labels.
    field.onfocus = function () {
     hideLabel(this.getAttribute('id'), true);
    };
    field.onblur = function () {
     if (this.value === '') {
      hideLabel(this.getAttribute('id'), false);
     }
    };
    // Handle clicks to LABEL elements (for Safari).
    labels[i].onclick = function () {
     var id, field;
     id = this.getAttribute('for');
     if (id && (field = document.getElementById(id))) {
      field.focus();
     }
    };
   }
  }
 };


function hideLabel (field_id, hide) {
 var field_for;
 var labels = document.getElementsByTagName('label');
 for (var i = 0; i < labels.length; i++) {
  field_for = labels[i].htmlFor || labels[i].getAttribute('for');
  if (field_for == field_id) {
   labels[i].style.textIndent = (hide) ? '-2000px' : '0px';
   return true;
  }
 }
}


  
