var reloadOnLogin;
var reloadURL;
var gErrInput;
var ASOldCookie = YAHOO.util.Cookie.getSubs("Options");
var errMsgDiv = 'modal-login-error';
var emailId = 'aUsername2';
var passId = 'aPass3';
var regFormName = 'registerForm';

String.prototype.trim = function() {
  return this.replace(/^\s+|\s+$/g, "");
};


if( (ASOldCookie == null) || (ASOldCookie == undefined) ){
    ASOldCookie = new Object();
}
var ASLoginCookie = YAHOO.util.Cookie.getSubs("RCAPPublic2MYSS2");
if( (ASLoginCookie == null) || (ASLoginCookie == undefined) ){
    ASLoginCookie = new Object();
}

function cookieExpireDate(){
  var myDate = new Date();
  myDate.setDate( myDate.getDate() + 360);
  return myDate;
}
function asSetCookie(cName,cValue){
  YAHOO.util.Cookie.set(cName, cValue, {expires: cookieExpireDate(), path: '/', domain: 'apartmentsearch.com' });
}
function asSetCookieSub(cName,subName, subValue){
  YAHOO.util.Cookie.setSub(cName, subName, subValue, {expires: cookieExpireDate(), path: '/', domain: 'apartmentsearch.com' });
}
function asSetCookieSubs(cName,cObj){
  YAHOO.util.Cookie.setSubs(cName, cObj, {expires: cookieExpireDate(), path: '/', domain: 'apartmentsearch.com' });
}

// COOKIE
//  var cityImgCount = ASOldCookie.cityImgCount;
//  ASOldCookie.cityImgCount = cityImgCount;
//  setCookie('Options',ASOldCookie);

////////////////
// LOGIN DIALOG
var loginWin;
function initLogin() {
  loginWin = new YAHOO.widget.Panel("popup-login",
                                   { fixedcenter:true, close:false, underlay: 'none', autofillheight:'body',
                                     draggable:false, zIndex:10, modal:true, visible:false, constraintoviewport:true
                                   });
  loginWin.render();
}
var loginChanged = false;
function showLogin(myCaller){
  if(loginChanged){
    setupLoginDialog();
  }
  if(myCaller != undefined){
    if(myCaller.href != undefined){
      document.getElementById('aNewURL').value = myCaller.href;
    }
  }
  loginWin.show();
}
function hideLogin() {
  loginWin.hide();
  clearError();
}
function showLoginReload(paramName){
  reloadOnLogin = true;
  reloadURL = window.location.href;
  reloadURL = reloadURL.replace(/\#$/,'');
  if(paramName != undefined){
    reloadURL += ((reloadURL.indexOf('?') != -1) ? '&': '?') + paramName + '=true';
  }
  showLogin();
}
initLogin();
// END LOGIN DIALOG

////////////////
// LOOKUP DIALOG
var lookupWin;
function initLookup() {
  lookupWin = new YAHOO.widget.Panel("popup-lookup",
                                   { fixedcenter:true, close:false, underlay: 'none', autofillheight:'body',
                                     draggable:false, zIndex:11, modal:true, visible:false, constraintoviewport:true
                                   });
  lookupWin.render();
}
function showLookup(){
  lookupWin.show();
}
function hideLookup() {
  lookupWin.hide();
  clearLookupError();
}
initLookup();
// END LOOKUP DIALOG

// LOAD DIALOG
var waitWin;
function initLoadDialog() {
  waitWin = new YAHOO.widget.Panel("wait",
		{ width:"300px", fixedcenter:true, close:false, 
		  draggable:false, zindex:22, modal:true, visible:false
		}
   		);
    // YAHOO.wait.showMaskEvent.unsubscribe();
    // YAHOO.wait.hideMaskEvent.unsubscribe();
    waitWin.setHeader("Logging in, please wait...");
    waitWin.setBody('<img src="/images/2008/loading.gif" alt="Loading ..." />');
    waitWin.render(document.body);
}
function changeLoadDialogHeader(newText) {
  waitWin.setHeader(newText);
}
function showLoadDialog() {
  waitWin.show();
}
function hideLoadDialog() {
  waitWin.hide();
}
initLoadDialog();
// END LOADING DIALOG

// COMMON
function eventOnSuccess(){
  var newURL = document.getElementById('aNewURL').value;
  if( (newURL != null) && (newURL != undefined) && (newURL != '') ){
    location.replace(newURL);
  }else if(reloadOnLogin == true){
    window.location.replace(reloadURL);
  }else{
    var ancArray = document.getElementsByTagName('a');
    for(var i=0; i<ancArray.length; i++){
      myAnc = ancArray[i];
      if(myAnc.onclick != null){
        if(/showLogin/.test(myAnc.onclick)){
	  myAnc.onclick = null;
        }
      }
    }
  }
}
var responseFailure = function(o){
  alert('ERROR: ' + o.responseText);
};
function ajaxValidateEmail(){
  var email = document.getElementById('aUsername1');
  if( (email.value == undefined) || (email.value == '') ){
    alert('Please enter an Email Address');
  }else{
    var myUrl = '/ajax/emailCheck?email=' + escape(email.value);
    YAHOO.util.Connect.asyncRequest('GET', myUrl, CBCheckEmail);
  }
}

function validateValue(value){
  value = value.trim();
  if( (value == undefined) || (value == '') ){
    return false;
  }else{
    return true;
  }
}
function validateEmailSyntax(email){
  var reg = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
  if(reg.test(email) == false) {
    return false;
  }
  return true;
}
function validatePasswordValue(pass){
  if( (pass != undefined) && (pass != '') ){
    return true;
  }
  return false;
}

function mpTrack() {
  var mpt = new Date();
  var str = 'http://altfarm.mediaplex.com/ad/bk/13693-85677-3840-0?APT_New_Acct=1&amp;mpuid=' + mpt.getTime() + '-' + mpt.getTimezoneOffset();
  var myImg = document.createElement('img');
  myImg.src = str;
  var myDiv = document.getElementById('debug');
  myDiv.appendChild(myImg);
}

function registerMiniSetup(obj){
  asSetCookie('AS-sid',obj.sid);
  asSetCookie('AS-key',obj.skey);
  asSetCookie('AS-event5','true');
  var logLink = document.getElementById('headLogLink');
  logLink.onclick = null;
  logLink.href = 'http://www.apartmentsearch.com/logout.html';
  logLink.innerHTML = 'Sign Out';
  var regLink = document.getElementById('headRegLink');
  regLink.onclick = null;
  regLink.href = 'http://www.apartmentsearch.com/home.html';
  regLink.innerHTML = 'My Account';
  document.getElementById('headLoginUserName').innerHTML = 'Welcome ' + obj.username;
  mpTrack();
}

// CREATE USER
var CBUserCreate = {
  cache: false,
  success: function(o) {
    var resp = o.responseText;
    var myObj = eval( '(' + resp + ')' );
    var status = myObj.status;
    var status_msg = myObj.status_msg;
    if(status == 'fail'){
      hideLoadDialog();
      switch (status_msg){
        case 'username_not_submitted':
          alert('Username not submitted');
          break;
        case 'password_not_submitted':
          alert('Password not submitted');
          break;
 	case 'user_exists':
	  var email = document.getElementById('aUsername1');
          showLoginError('An account with that email address already exists, please try another',email);
	  break;
	default:
          alert('A System Error occurred' + status_msg);
      }
    }else{
      registerMiniSetup(myObj);
      eventOnSuccess();
      hideLoadDialog();
      hideLogin();
    }
    return false;
  },
  failure: responseFailure
}
function userCreate(username,password){
    changeLoadDialogHeader('Creating new Account, please wait ...');
    showLoadDialog();
    var myUrl = '/ajax/userCreate?username=' + escape(username) +'&password='+ escape(password);
    YAHOO.util.Connect.asyncRequest('GET', myUrl, CBUserCreate);
}
function ajaxNewAccount(){
  var email = document.getElementById('aUsername1');
  var pass1 = document.getElementById('aPass1');
  var pass2 = document.getElementById('aPass2');
  if(validateValue(email.value)){
    if(validateEmailSyntax(email.value)){
      if(validatePasswordValue(pass1.value)){
        if(validatePasswordValue(pass2.value)){
          if(pass1.value == pass2.value){
            userCreate(email.value,pass1.value)
          }else{
            pass1.value = '';
            pass2.value = '';
            showLoginError('Passwords do not match',pass1);
          }
        }else{
          showLoginError('Please enter a value for the 2nd Password',pass2);
        }
      }else{
        showLoginError('Please enter a value for the Password',pass1);
      }
    }else{
      showLoginError('Email Address appears invalid',email);
    }
  }else{
    showLoginError('Please enter an Email Address',email);
  }
  return false;
}
function showLoginError(msg,curInput){
  clearError();
  var errBox = document.getElementById(errMsgDiv);
  errBox.style.display = 'block';
  errBox.innerHTML = msg;
  if(curInput != undefined){
    gErrInput = curInput;
    gErrInput.style.border = '2px solid red';
    gErrInput.focus();
  }
}
function clearError(){
  var myErr = document.getElementById('modal-login-error');
  if(myErr != undefined){
    myErr.innerHTML = '';
  }
  if(gErrInput != undefined){
    gErrInput.style.border = 'solid 1px #aacfe4';
  }
}
// LOGIN
function ajaxLogin(){
  emailId = 'aUsername2';
  passId = 'aPass3';
  var email = document.getElementById(emailId);
  var pass = document.getElementById(passId);
  errMsgDiv = 'modal-login-error';
  if(validateValue(email.value)){
    if(validatePasswordValue(pass.value)){
      asUserLogin(email.value,pass.value)
    }else{
      showLoginError('Please enter a value for the password',pass);
    }
  }else{
    showLoginError('Please enter an Email Address',email);
  }
  return false;
}
// MANAGER LOGIN
function ajaxLoginManager(){
  emailId = 'man-email';
  passId = 'man-password';
  var email = document.getElementById('man-email');
  var pass = document.getElementById('man-password');
  errMsgDiv = 'manager-login-error';
  if(validateValue(email.value)){
    if(validatePasswordValue(pass.value)){
      document.getElementById('aNewURL').value = 'http://www.apartmentsearch.com/manager.html';
      asUserLogin(email.value,pass.value)
    }else{
      showLoginError('Please enter a value for the password',pass);
    }
  }else{
    showLoginError('Please enter an Email or Username',email);
  }
  return false;
}
function asLoginSetup(obj){
  YAHOO.util.Cookie.set('AS-sid', obj.sid, {expires: cookieExpireDate(), path: '/', domain: 'apartmentsearch.com' });
  YAHOO.util.Cookie.set('AS-key', obj.skey, {expires: cookieExpireDate(), path: '/', domain: 'apartmentsearch.com' });
  var logLink = document.getElementById('headLogLink');
  logLink.onclick = null;
  logLink.href = 'http://www.apartmentsearch.com/logout.html';
  logLink.innerHTML = 'Sign Out';
  var regLink = document.getElementById('headRegLink');
  regLink.onclick = null;
  regLink.href = 'http://www.apartmentsearch.com/home.html';
  regLink.innerHTML = 'My Profile';
  document.getElementById('headLoginUserName').innerHTML = 'Welcome ' + obj.username;
}
var CBUserLogin = {
  cache: false,
  success: function(o) {
    var resp = o.responseText;
    var myObj = eval( '(' + resp + ')' );
    var status = myObj.status;
    var status_msg = myObj.status_msg;
    if(status == 'fail'){
      hideLoadDialog();
      switch (status_msg){
        case 'username_not_submitted':
          alert('Username not submitted');
          break;
        case 'password_not_submitted':
          alert('Password not submitted');
          break;  
 	case 'user_not_found':
          var email = document.getElementById(emailId);
          showLoginError('Username/Email Address was not found',email);
	  break;
 	case 'password_invalid':
          var pass = document.getElementById(passId);
          showLoginError('Password is incorrect',pass);
	  break;
	default:
          alert('A System Error occurred: ' + status_msg);
      }
    }else{
      asLoginSetup(myObj);
      eventOnSuccess();
      hideLoadDialog();
      hideLogin();
    }
    return false;
  },
  failure: responseFailure
}
function asUserLogin(email,password){
    changeLoadDialogHeader('Logging in, please wait ...');
    showLoadDialog();
    var myUrl = '/ajax/userLogin?username=' + escape(email) + '&password=' + escape(password);
    YAHOO.util.Connect.asyncRequest('GET', myUrl, CBUserLogin);
}
// FORGOT PASSWORD
var CBUserLookup = {
  cache: false,
  success: function(o) {
    var resp = o.responseText;
    var myObj = eval( '(' + resp + ')' );
    var status = myObj.status;
    var status_msg = myObj.status_msg;
    var email = document.getElementById('lookupEmail');
    if(status == 'fail'){
      hideLoadDialog();
      if(status_msg == 'username_not_submitted'){
        alert('Please enter an Email/Username');
      }else if(status_msg == 'user_not_found'){
        showLookupError('Username/Email Address was not found',email);
      }else{
        alert('Error: ' + status_msg);
      }
    }else{
      hideLoadDialog();
      alert('Your Username/Email was found and has been sent, please check your email');
      hideLookup();
    }
    return false;
  },
  failure: responseFailure
}
function userLookup(email){
    changeLoadDialogHeader('Finding your Account, please wait ...');
    showLoadDialog();
    var myUrl = '/ajax/userLookup?username=' + escape(email);
    YAHOO.util.Connect.asyncRequest('GET', myUrl, CBUserLookup);
}
function ajaxUserLookup(){
  var email = document.getElementById('lookupEmail');
  if(validateValue(email.value)){
    userLookup(email.value)
  }else{
    showLookupError('Please enter an Email or Username',email);
  }
}
function showLookupDialog(){
  hideLogin();
  showLookup();
}
function hideLookupShowLogin(){
  hideLookup();
  showLogin();
}
function showLookupError(msg,email){
  clearLookupError();
  var errBox = document.getElementById('modal-lookup-error');
  errBox.innerHTML = msg;
  if(email != undefined){
    email.style.border = '2px solid red';
    email.focus();
  }
}
function clearLookupError(){
  document.getElementById('modal-lookup-error').innerHTML = '';
  document.getElementById('lookupEmail').style.border = 'solid 1px #aacfe4';
}

// FULL REG registration.html
// check if the username-email exists
function registerSubmitFinal(myObj){
  var formObj = document.getElementById(regFormName);
  formObj.submit();
}

var CBUserFind = {
  success: function(o) {
    var resp = o.responseText;
    var myObj = eval( '(' + resp + ')' );
    var status = myObj.status;
    var status_msg = myObj.status_msg;
    if(status == 'fail'){
      hideLoadDialog();
      switch (status_msg){
        case 'username_not_submitted':
          alert('Username not submitted');
          break;
 	case 'user_exists':
          var email = document.getElementById('regEmail');
          showRegError('The Email you selected has already been registered',email);
	  break;
	default:
          alert('A System Error occurred: ' + status_msg);
      }
    }else{
      hideLoadDialog();
      registerSubmitFinal(myObj);
    }
  },
  failure: responseFailure
}
function userFind(username){
    changeLoadDialogHeader('Checking email address, please wait ...');
    showLoadDialog();
    var myUrl = '/ajax/userFind?username=' + escape(username);
    YAHOO.util.Connect.asyncRequest('GET', myUrl, CBUserFind);
}

function clearRegError(){
  document.getElementById('register-error').innerHTML = '';
  if(gErrInput != undefined){
    gErrInput.style.border = 'solid 1px #aacfe4';
  }
}
function showRegError(msg,curInput){
  clearRegError();
  var errBox = document.getElementById('register-error');
  errBox.style.display = 'block';
  errBox.innerHTML = msg;
  if(curInput != undefined){
    gErrInput = curInput;
    gErrInput.style.border = '2px solid red';
    gErrInput.focus();
  }
}
function registerValidate(form){
  var first = form.firstname;
  var last = form.lastname;
  var email = form.email;
  var pass = form.password;
  var pass2 = form.password_verify;
  if(validateValue(first.value)){
    if(validateValue(last.value)){
      if(validateValue(email.value)){
        if(validateEmailSyntax(email.value)){
          if(validatePasswordValue(pass.value)){
            if(validatePasswordValue(pass2.value)){
              if(pass.value == pass2.value){
	        return true;
              }else{
                pass.value = '';
                pass2.value = '';
                showRegError('Passwords do not match',pass);
              }
            }else{
              showRegError('Please enter a value for the 2nd Password',pass2);
            }
          }else{
            showRegError('Please enter a value for the Password',pass);
          }
        }else{
          showRegError('Email Address appears invalid',email);
        }
      }else{
        showRegError('Please enter an Email Address',email);
      }
    }else{
      showRegError('Please enter a last name',last);
    }
  }else{
    showRegError('Please enter a first name',first);
  }
  return false;
}

function registerSubmit(form){
  if(registerValidate(form)){
    regFormName = 'registerForm';
    userFind(form.email.value);
  }
  return false;
}

function registerSubmitManager(form){
  if(registerValidate(form)){
    var phone = form.phone;
    var company = form.company;
    var property_name = form.property_name;
    if(validateValue(phone.value)){
      if(validateValue(company.value)){
        if(validateValue(property_name.value)){
	  regFormName = 'man-reg-form';
          userFind(form.email.value);
        }else{
          showRegError('Please enter a value for the Property Name',property_name);
        }
      }else{
        showRegError('Please enter a value for the Company',company);
      }
    }else{
      showRegError('Please enter a value for the Phone',phone);
    }
  }
  return false;
}

/// SHOW DATE PICKER

var datePick;
function showDate(dateDiv){
  var datePick = new YAHOO.widget.Calendar(dateDiv,{ close:true });
  datePick.render();
}

/// JRJ 3-2010 new reward dialog 
function removeChildren(myNode){
  if ( myNode.hasChildNodes()){
    while ( myNode.childNodes.length >= 1 ){
      myNode.removeChild( myNode.firstChild );       
    } 
  }
}
function showRewardLogin(){
  var myDiv = document.getElementById('modal-intro');
  loginChanged = true;
  removeChildren(myDiv);
  var div1 = document.createElement('div');
  div1.style.cssFloat = 'left';
  var myH1 = document.createElement('h1');
  myH1.innerHTML = 'Get up to $200 in FREE Rewards'
  div1.appendChild(myH1);
  var div2 = document.createElement('div');
  div2.style.cssFloat = 'left';
  div2.style.marginLeft = '15px';
  div2.style.marginTop = '13px';
  var myAnc = document.createElement('a'); 
  myAnc.appendChild(document.createTextNode('Rewards FAQ'));
  myAnc.style.color = 'red';
  myAnc.style.textDecoration = 'underline';
  myAnc.href = 'http://www.apartmentsearch.com/reward-faq.html';
  div2.appendChild(myAnc);
  var div3 = document.createElement('div');
  div3.style.clear = 'both';
  var myP = document.createElement('p');
  myP.style.fontWeight = 'bold';
  myP.innerHTML = 'First create your FREE account, tell the property we sent you, then claim your reward.';
  var div4 = document.createElement('div');
  div4.appendChild(myP);
  myDiv.appendChild(div1);
  myDiv.appendChild(div2);
  myDiv.appendChild(div3);
  myDiv.appendChild(div4);
  loginWin.show();
}

function setupLoginDialog(){
  var myDiv = document.getElementById('modal-intro');
  loginChanged = false;
  removeChildren(myDiv);
  var div1 = document.createElement('div');
  var myH1 = document.createElement('h1');
  myH1.innerHTML = 'Almost There!';
  div1.appendChild(myH1);
  var div2 = document.createElement('div');
  var myP = document.createElement('p');
  myP.innerHTML = 'Signing up allows you to save properties, view property details, and claim rewards.';
  div2.appendChild(myP);
  myDiv.appendChild(div1);
  myDiv.appendChild(div2);
}

