var clicked = false;

function genericMessageModal(message) {
  Dialog.confirm(getGenericContentWrapper(message),
                   {width:480, height:200, top: 110, className:"alphacube", 
                    okLabel:"OK", cancelLabel:"Close", 
                    destroyOnClose: true,
                    buttonClass:"button_position", 
                    zIndex: 99999,
                    recenterAuto:false,
                    onCancel:function(win){
		      Dialog.closeInfo();
		       },
                    onOk:function(win){
		      Dialog.closeInfo();
                    }});
}

function getGenericContentWrapper(otherStuff) {
    inviteForm =  '<div class="alphacube_message"><div id="outer_public_center_module" class="OSLoginModalModule">';
    inviteForm += '<div class="logo">';
    inviteForm += '<input type="button" value="close" onclick="Dialog.cancelCallback()" class="button_position cancel_button"/>';
    inviteForm += '<img alt="Open Salon" src="/Themes/OpenSalon/images/opensalon_small.gif"/>';
    inviteForm += '</div> <!-- close logo form -->';
    inviteForm += '<div class="genericAlertText">' + otherStuff + '</div>';
    inviteForm += '</div> <!-- close address book form -->';
    inviteForm += '</div> <?-- close alpha cube div -->';
    return inviteForm;
}



function selectAllOrNoneInvites(contactsCheckList) {
  isChecked = $('contactsSelectorBox').checked;
  checkList = contactsCheckList.getInputs('checkbox', 'checkList');
  for (i=0; i<checkList.length; i++) {
    checkList[i].checked = isChecked;
  }
}

function getInviteForm() {
    inviteForm =  '<div class="alphacube_message"><div id="outer_public_center_module" class="OSLoginModalModule">';
    inviteForm += '<div class="logo">';
    inviteForm += '<input type="button" value="close" onclick="Dialog.cancelCallback()" class="button_position cancel_button"/>';
    inviteForm += '<img alt="Open Salon" src="/Themes/OpenSalon/images/opensalon_small.gif"/>';
    inviteForm += '</div> <!-- close logo form -->';
    inviteForm += '<h2 class="formhead" style="margin-bottom: 0.5em; padding-bottom: 0;">Invite Friends</h2><p style="text-align: center; margin: 0 0 1em;">Select which contacts you would like to invite from the list below.</p>';
    inviteForm += '<div id="contactsSelector"><label><input id="contactsSelectorBox" name="contactsSelectorBox" type="checkbox" onclick="selectAllOrNoneInvites($(\'contactsCheckList\'))" /> Select All/None</label></div>';    
    inviteForm += '<div id="contactsScroll">';
    inviteForm += getContactsCheckList();
    inviteForm += '</div> <!-- close address book form -->';
    inviteForm += '</div> <?-- close alpha cube div -->';
    return inviteForm;
}

function getContactsCheckList() {
    checkList = '<form name="contactsCheckList" id="contactsCheckList">';
    for (i=1; i < addressBookJSON.length+1; i++) {
    	contactClass = (i % 2) ? 'even' : 'odd';
		checkList += '<div class="'+contactClass+'"><label><input type="checkbox" name="checkList" value="'+addressBookJSON[i-1].email+'" /> '+addressBookJSON[i-1].email+'</div>';
    }
    checkList += '</form>';
    return checkList;

}

function openAjaxInviteScreen() {
    Dialog.confirm(getInviteForm(),
                   {width:480, height:200, top: 110, className:"alphacube", 
                    okLabel:"OK", cancelLabel:"Close", 
                    destroyOnClose: true,
                    buttonClass:"button_position", 
                    zIndex: 99999,
                    recenterAuto:false,
                    onCancel:function(win){
		      Dialog.closeInfo();
		       },
                    onOk:function(win){
			   checkList = $('contactsCheckList').getInputs('checkbox', 'checkList');
			   selectedContacts = new Array();
			   for (i=0; i<checkList.length; i++) {
			       if (checkList[i].checked == true) {
				   selectedContacts.push(checkList[i].value);
			       }
			   }
			   emailAddreses = '';
			   for (i=0; i<selectedContacts.length; i++) {
			       emailAddreses += (i>0) ? '; ' + selectedContacts[i] : selectedContacts[i];
			   }
			   $('to_box').value=emailAddreses;
                      Dialog.closeInfo();
                    }});

}


  function openAjaxFanScreen(page_uid) {
    Dialog.confirm({url:"/ajax_fan_form.php?page_uid="+page_uid, options:{method:'get'}}, 
                   {width:480, className:"alphacube", 
                    okLabel:"Ok", cancelLabel:"Close", 
                    destroyOnClose: true,
                    buttonClass:"button_position", 
                    zIndex: 99999,
                    recenterAuto:false,
                    onCancel:function(win){
                      window.location.reload(true);
		       },
                    onOk:function(win){
                      window.location.reload(true);
                    }});
  }


/**
 * Utilities to support modal login and registration
 * These also depend on prototype and windows
 */

  var invRequest = function() {
    var ajax = new Ajax.Request('/ajax_invite_request.php',{
        method: 'post',
        parameters:  $('inv_form').serialize(),
        onSuccess: function(transport, json) {
	          $('inv_msg').show();
            $('inv_msg').update(json.messages);
            $('inv_msg').innerHTML;
        },
        onFailure: function(transport) {
				    alert("Transport Error: " + transport.responseText);
        }
    });
  return false;
  }
 
  //////////////////////////////////////////////////////////////////////////////////////
  // Create method to be called on successful login. Right
  // now this is called from updateUserPanel which is the 
  // callback method used by the login modal. At some point
  // we want to update all the elements that perform different
  // actions when the user is logged in (like the 'Add a Friend' button
  // for example)
  //////////////////////////////////////////////////////////////////////////////////////
 var loginSuccessHandler = function(responseData) {
    var flashy = $$('object'); 
    for (var i = 0; i<flashy.length; i++) { 
      if (flashy[i].style.visibility != 'visible') { 
	flashy[i].style.visibility = 'visible'; 
      } 
    } 

     window.location.reload(true);
  }

  var updateUserPanel = function() {
    var params = '';
    var ajax = new Ajax.Request('/ajax_login_form.php',{
        method: 'post',
        parameters: params,
        onSuccess: function(transport, json) {
          if ( json.success == true ) {
            // these element update calls (there need to more!) should be moved to 
	    // the loginSuccessHandler function
            $('login_panel').update(json.responseData.html);
            $('login_panel').innerHTML;
	    if ($('reg_pitch') != null) {
		$('reg_pitch').hide();
	    }
	    loginSuccessHandler(json.responseData);
          }
          else {
            alert(json.messages);
          }
        },
        onFailure: function(transport) {
				  alert("Transport Error: " + transport.responseText);
        }
    });
  }

  var updatePage = function(json) {
    var activation_url = ''
    var page = '/user.php';
   if ( json.responseData.location ) {
page = json.responseData.location;
}
    if ( json.responseData.activation_url ) {
      activation_url = '&activation_url='+escape(json.responseData.activation_url);
      page = '/cover.php';
    }
    if ( json.responseData.msg_id == '7013' ) {
      page = '/cover.php';
    }
    window.location = page+'?msg_id='+json.responseData.msg_id+activation_url;
  }

  var currentAction = null;
  var updateCreep = function(json) {
    if ( currentAction == 'post' ) {
      window.location = '/post_content.php';
    }
    else if ( currentAction == 'comment' ) {
      $('comment_form').toggle();
      $('comment_textarea').focus();
    }
  }

  function openAjaxInviteAccept() {
    Dialog.confirm({url:"/ajax_acceptinvite_form.php", options:{method:'get'}}, 
                   {width:480, className:"alphacube", 
                    okLabel:"Continue", cancelLabel:"Close", 
                    destroyOnClose: true,
                    buttonClass:"button_position", 
                    zIndex: 99999,
                    recenterAuto:false,
                    onOk:function(win){
                      //alert('this would be submitted!');
                      var myForm = document.getElementById('formRegisterUser');
                      var errorTag = 'register_error_msg';
                      var handlerUrl = '/ajax_acceptinvite.php';
                      submitAjax(myForm, errorTag, handlerUrl, updateUserPanel);
                    }});
  }
  
  function openAjaxCreep(action) {
    if ( action ) {
      currentAction = action;
      Dialog.confirm({url:"/ajax_registercreep_form.php?action="+action, options:{method:'get'}}, 
                     {top:150, width:480, className:"alphacube", 
                      okLabel:"Continue", cancelLabel:"Close", 
                      destroyOnClose: true,
                      buttonClass:"button_position", 
                      zIndex: 99999,
                      recenterAuto:false,
                      onOk:function(win){
                        //alert('this would be submitted!');
                        var myForm = document.getElementById('formRegisterUser');
                        var errorTag = 'register_error_msg';
                        var handlerUrl = '/ajax_registercreep.php';
                        submitAjax(myForm, errorTag, handlerUrl, updateCreep);
                      }});
   }
  }

  
function openAjaxRegister() {
  if (!clicked) {
    clicked = true;

    // register Omniture click
    if (typeof s == 'object') {
      s.pageName = '/open/action/register/register';
      s.t();
    }

    var flashy = $$('object'); 
    for (var i = 0; i<flashy.length; i++) { 
      if (flashy[i].style.visibility != 'hidden') { 
	flashy[i].style.visibility = 'hidden'; 
      } 
    } 

    Dialog.confirm({url:"/ajax_register_form_start.php", 
                    options:{
                        method:'get', 
                        onComplete : function() { 
                         Recaptcha.create("6LfdHQUAAAAAAAI0BmGnfEYwqm6v3LoY0Z2ahZRB", "captcha_wrapper", { theme: "white" });
                        }
                     }
                   }, 
		   {top:100, width:480, className:"alphacube", 
		       okLabel:"Next", cancelLabel:"Close", 
                       overlayShowEffectOptions : {duration: 0},
                       overlayHideEffectOptions : {duration: 0},
		       destroyOnClose: true,
		       buttonClass:"button_position", 
		       recenterAuto:false,
		       zIndex: 99999,
		       onOk:function(win){
		       //alert('this would be submitted!');
		       var myForm = document.getElementById('formRegisterUser');
		       var errorTag = 'register_error_msg';
		       var handlerUrl = '/ajax_register_start.php';
		       submitAjax(myForm, errorTag, handlerUrl, openAjaxRegisterEnd);
		       clicked = false;
		     },
		       onCancel:function(win) {
		       clicked = false;
                       var flashy = $$('object'); 
                       for (var i = 0; i<flashy.length; i++) { 
                         if (flashy[i].style.visibility != 'visible') { 
            	           flashy[i].style.visibility = 'visible'; 
                         } 
                       } 
		     }
		   });
  }
}


function openAjaxRegisterEnd() {
  if (!clicked) {
    clicked = true;

    var flashy = $$('object'); 
    for (var i = 0; i<flashy.length; i++) { 
      if (flashy[i].style.visibility != 'hidden') { 
	flashy[i].style.visibility = 'hidden'; 
      } 
    } 

    Dialog.confirm({url:"/ajax_register_form.php", options:{method:'get'}}, 
		   {top:100, width:480, className:"alphacube", 
		       okLabel:"Join Now", cancelLabel:"Close", 
                       overlayShowEffectOptions : {duration: 0},
                       overlayHideEffectOptions : {duration: 0},
		       destroyOnClose: true,
		       buttonClass:"button_position", 
		       recenterAuto:false,
		       zIndex: 99999,
		       onOk:function(win){
		       //alert('this would be submitted!');
		       var myForm = document.getElementById('formRegisterUser');
		       var errorTag = 'register_error_msg';
		       var handlerUrl = '/ajax_register.php';
		       submitAjax(myForm, errorTag, handlerUrl, updatePage);
		       clicked = false;
		     },
		       onCancel:function(win) {
                       $('overlay_modal').className = 'overlay_alphacube';
		       clicked = false;
                       var flashy = $$('object'); 
                       for (var i = 0; i<flashy.length; i++) { 
                         if (flashy[i].style.visibility != 'visible') { 
            	           flashy[i].style.visibility = 'visible'; 
                         } 
                       } 
		     }
		   });
  }
  // over-ride previous Dialog display: none
  $('overlay_modal').className = 'overlay_alphacube block';
}

// This function either shows or hides all the flash on the page, so we can load modals that are above it -- keep us DRY
function showFlash( visible )
{
    if( visible == true )
    {
      var show = 'visible';
    } else {
      var show = 'hidden';
    }
    var flashy = $$('object'); 
    for (var i = 0; i<flashy.length; i++) { 
      if (flashy[i].style.visibility != show) { 
        flashy[i].style.visibility = show; 
      } 
    } 
}

function openAjaxLogin(id) {
  if (!clicked) {
    clicked = true;

    showFlash( false );

    var myUrl = '/ajax_login_form.php?msg_id='+id;
    var myWin = Dialog.confirm({url:myUrl, options:{method:'get'}}, 
			       {top:150, width:480, className:"alphacube", 
				   okLabel:"Sign in", cancelLabel:"Close", 
				   destroyOnClose: true,
				   buttonClass:"button_position", 
				   recenterAuto:false,
				   zIndex: 99999,
				   onOk:function(win){
				   var myForm = document.getElementById('os_login');
				   var errorTag = 'login_error_msg';
				   var handlerUrl = '/ajax_login.php?p=cover';
				   submitAjax(myForm, errorTag, handlerUrl, updateUserPanel);
				   clicked = false;
				 },
				   onCancel:function(win) {
				   clicked = false;
           showFlash( true );
				 }
			       });
  }
  var loginFormFocusTimer = setTimeout( "loginFormFocus()", 1000 );
}

// 20090331 aabelard - Returns true if the user pressed the enter key ticket #2112
function trueOnEnter( e )
{
	var code;
	if( !e )
	{
		var e = window.event;
	}
	if( e.keyCode )
	{
		code = e.keyCode;
	}
	else if( e.which )
	{
		code = e.which;
	}
	else
	{
		return false;
	}
	if( code == 13 )
	{
		return true;
	}
	return false;
}

// 20090331 aabelard - this sets the focus on the login or PW fields, based on code already present
function loginFormFocus()
{
	var n = document.getElementById("u");
  if( n === undefined ) return;
	if( n.value )
	{
		n = document.getElementById("p");
	}
	n.focus();
}


  function submitAjax(myForm, errorTag, handlerUrl, updateCallBack) {
    var moduleDiv = myForm.parentNode;
    var moduleDivClass = moduleDiv.id;

    if ( moduleDivClass != 'outer_public_center_module') {
      while (moduleDiv && moduleDivClass != 'outer_public_center_module') {
        moduleDiv = moduleDiv.parentNode;
        moduleDivClass = moduleDiv.id;
      }
    }
    var messageContainer = moduleDiv.parentNode;
    var windowContainer = messageContainer.parentNode;
    var buttonContainer = messageContainer.nextSibling;
    var spinnerContainer = document.createElement('DIV');
        $(spinnerContainer).addClassName('alphacube_message');
        $(spinnerContainer).update('<div class="logo"><img src="/Themes/OpenSalon/images/opensalon_small.gif" alt="Open Salon" /></div><div id="loading_spinner"><p>Loading&#8230;</p><img src="/Themes/OpenSalon/images/spinner.gif" width="32" height="32"  alt="Please wait" /></div>');
        $(spinnerContainer).innerHTML;
    if (buttonContainer.nodeName != 'DIV') {
      buttonContainer = buttonContainer.nextSibling;
    }
    var params = Form.serialize(myForm.id);
        $(messageContainer).removeClassName('display_true');
        $(messageContainer).addClassName('display_false');
        $(buttonContainer).removeClassName('display_true');
        $(buttonContainer).addClassName('display_false');
        windowContainer.appendChild(spinnerContainer);
        
    var ajax = new Ajax.Request(handlerUrl,{
				method: 'post',
				parameters: params,
				onSuccess: function(transport, json) {
				  if ( json.success == 1 || json.success == true ) {
            $('overlay_modal').className = 'overlay_alphacube';
            if( json.showNotice === undefined ) {
              Dialog.closeInfo();
              if ( typeof updateCallBack == 'function' ) {
                updateCallBack(json);
              }
            } else { // if showNotice is set in the json return, we need to give some important info to the user
              var myWin = Dialog.confirm({url:'/notice/'+json.showNotice, options:{method:'get'}},
                                         {top:150, width:480, className:"alphacube",
                                          okLabel:"Ok", cancelLabel:"Close",
                                          destroyOnClose: true,
                                          buttonClass:"button_position",
                                          recenterAuto:false,
                                          zIndex: 99999,
                                          onOk:function(win){
                                            clicked = false;
                                            window.location.reload(true);
                                            Dialog.closeInfo();
                                        },
                                          onCancel:function(win) {
                                            clicked = false;
                                            window.location.reload(true);
                                            Dialog.closeInfo();
                                        }
                                      });
            }
				  }
				  else { 
            windowContainer.removeChild(spinnerContainer);
            $(messageContainer).removeClassName('display_false');
            $(messageContainer).addClassName('alphacube_message');
            $(buttonContainer).removeClassName('display_false');
            $(buttonContainer).addClassName('alphacube_buttons');
            $(errorTag).update(json.messages);
            $(errorTag).innerHTML;
            $(errorTag).show();
            if ($('captcha_wrapper')) {
              Recaptcha.create("6LfdHQUAAAAAAAI0BmGnfEYwqm6v3LoY0Z2ahZRB", "captcha_wrapper", { theme: "white" });
            }
            Windows.focusedWindow.updateHeight();
            new Effect.Shake(Windows.focusedWindow.getId()); return false;
				  } 
				},
				onFailure: function(transport) {
          windowContainer.removeChild(spinnerContainer);
          $(messageContainer).removeClassName('display_false');
          $(messageContainer).addClassName('alphacube_message');
          $(buttonContainer).removeClassName('display_false');
          $(buttonContainer).addClassName('alphacube_buttons');
				  alert("Transport Error: " + transport.responseText);
				}
    }); 
  } 
 
 
  var blogURLPreviewKey = 1;
  var updateBlogURLPreview = function (event) {
    blogURLPreviewKey++;
    //alert('previewing URL');
    if ($('login_name').value == '') {
        $('screen_name_preview').update('');
        $('screen_name_preview_value').update('');
        return;
    }
    var ajax = new Ajax.Request('/ajax_url_friendly_user.php',{
        method: 'get',
        parameters: { name : $('login_name').value, key : blogURLPreviewKey },
        onSuccess: function(transport, json) {
          // throw out non-sequential responses
          if (json.responseData.key != blogURLPreviewKey) return;
          if ( json.success == true ) {
            //alert('updating '+container_id+ ' with '+json.responseData.name);
            $('screen_name_preview').update('Your URL will be:');
            $('screen_name_preview_value').update('http://open.salon.com/blog/'+json.responseData.name);
          }
          else {
            $('screen_name_preview').update('Error:');
            $('screen_name_preview_value').update(json.responseData.message);
            //alert(json.messages);
          }
        },
        onFailure: function(transport) {
	  //alert("Transport Error: " + transport.responseText);
            $('screen_name_preview').update('');
            $('screen_name_preview_value').update('');
        },
	onCreate : function () {
            $('screen_name_preview').update('Checking:');
            $('screen_name_preview_value').update('...');
        }
    });
  }

