YAHOO.namespace('masi.cs');
var Dom = YAHOO.util.Dom,
    Config = YAHOO.util.Config,
    Event = YAHOO.util.Event,
    CustomEvent = YAHOO.util.CustomEvent,
    Module = YAHOO.widget.Module;
var host = window.location.hostname;

var invalidDimensions;
var currentPulldown;
var maxPulldown=0;
var current_step_number;

//window.onresize = resize_base_background;
//Event.onDOMReady(resize_base_background);
Event.onDOMReady(username_focus);
Event.onDOMReady(email_focus);
Event.onDOMReady(module_init);

var which_page='/handler';

// create our own module object so we can add code to the submit calls
YAHOO.masi.cs.Module = function(module_config) {
  YAHOO.masi.module.Module.call(this,module_config);
}
YAHOO.masi.cs.Module.prototype = new YAHOO.masi.module.Module();
YAHOO.masi.cs.Module.prototype.constructor = YAHOO.masi.module.Module();
YAHOO.masi.cs.Module.prototype.submit = function() {
  if (!do_not_show_loader) {
      YAHOO.masi.cs.loader_full_pg.show();
  }
  YAHOO.masi.module.Module.prototype.submit.call(this);
}
YAHOO.masi.cs.Module.prototype.handle_submit = function(content) {
  YAHOO.masi.module.Module.prototype.handle_submit.call(this,content);
  YAHOO.masi.cs.loader_full_pg.hide();
}

//parses a query string
function getQueryVariable(variable) {
  var query = window.location.search.substring(1);
  var vars = query.split("&");
  for (var i = 0; i < vars.length; i++) {
      var pair = vars[i].split("=");
      if (pair[0] == variable) {
          return pair[1];
      }
  }
}

function module_init() {
	
  if (Dom.get('page_numbers')) {
		Dom.setStyle('prvw_1','display','inline');
		var ul = Dom.get('page_numbers');
		var li = ul.getElementsByTagName('li');
		var i=0;
		while (i<1){
		  li[i].className = 'page_num_li_selected';
		  i++;
		}	
	
  }
  
  //on page load, if func is display_category_drilldown
  //make call to AjaxObjectAssetSearch
  if(Dom.get('top_base_id')) {
  	var base_id = Dom.get('top_base_id').getAttribute('value'),
  			search_type = getQueryVariable('search_type'); 
		AjaxObjectAssetSearch.startRequest(base_id, '', search_type);
	}
	

//  NEW FUNCTION WITH MULTIPLE COMMENT BOXES
//  if (Dom.get('page_numbers')){
//	Dom.setStyle('title_1','display','block')
//	Dom.setStyle('approval_comments_1','display','block')
//	Dom.setStyle('prvw_1','display','inline');
//	var ul = Dom.get('page_numbers');
//	var li = ul.getElementsByTagName('li');
//	var i=0;
//	while (i<1){
//	  li[i].className = 'page_num_li_selected';
//	  i++;
//	}
//  }


  YAHOO.masi.cs.related_items = new YAHOO.widget.Panel('related_items', {// Create popup window for related items in assets
    close: true,
    visible: false,
    fixedcenter: true,
    modal: false,
    width: '650px',
    draggable: false,
    zindex:1000,
    constraintoviewport: true
    }
  );
  YAHOO.masi.cs.related_items.render(document.body);


  YAHOO.masi.cs.all_views = new YAHOO.widget.Panel('all_views', {// Create popup window for all views in assets
    close: true,
    visible: false,
    fixedcenter: true,
    modal: false,
    width: '680px',
    draggable: false,
    zindex:1000,
    constraintoviewport: true
    }
  );
  YAHOO.masi.cs.all_views.render(document.body);


// Initialize the temporary Panel to display while waiting for external content to load
  YAHOO.masi.cs.loader_full_pg = new YAHOO.widget.Panel("loader_full_pg", {
    //width:"380px",
    fixedcenter: true,
    close: false,
    draggable: false,
    zindex: 1000,
    modal: true,
    visible: false
    }
  );

  //YAHOO.masi.cs.wait.setHeader("Processing, please wait...");
  //YAHOO.masi.cs.wait.setBody('<img src="/images/rel_interstitial_loading.gif"/>');
  YAHOO.masi.cs.loader_full_pg.render(document.body);


  YAHOO.masi.cs.help = new YAHOO.widget.Panel('help', {// Create popup window help
    close: true,
    visible: false,
    fixedcenter: false,
    modal: false,
    width: '400px',
    draggable: true,
    zindex: 1000,
    constraintoviewport: true
    }
  );
  YAHOO.masi.cs.help.render(document.body);


  YAHOO.masi.cs.instructions = new YAHOO.widget.Panel('instructions', {// Create popup window instructions
    close: true,
    visible: false,
    fixedcenter: false,
    modal: false,
    width: '400px',
    draggable: true,
    zindex:1000,
    constraintoviewport: true
    }
  );
  YAHOO.masi.cs.instructions.render(document.body);


  YAHOO.masi.cs.save_module = new YAHOO.widget.Panel('save_module', {// Create popup window saving
    close: true,
    visible: false,
    fixedcenter: true,
    modal: true,
    width: '400px',
    draggable: false,
    zindex:1000,
    constraintoviewport: true
    }
  );
  YAHOO.masi.cs.save_module.render(document.body);


  YAHOO.masi.cs.custom_preview = new YAHOO.widget.Panel('custom_preview', {// Create popup window for previewing
    close: true,
    visible: false,
    fixedcenter: true,
    modal: true,
    width: '672px',
    draggable: false,
    zindex:1000,
    constraintoviewport: true
    }
  );
  YAHOO.masi.cs.custom_preview.render(document.body);


	var enlargeView = Dom.get('enlarge_view');
	YAHOO.util.Event.addListener(enlargeView, "click", enlargeViewCallback);
	function enlargeViewCallback(e) {
		YAHOO.util.Event.preventDefault(e);
		window.custom_preview_iframe.location.reload();
		YAHOO.masi.cs.custom_preview.show();
		YAHOO.util.Dom.setStyle('custom_preview', 'display', 'block');
		YAHOO.masi.cs.custom_preview.center();
		//window.scrollBy(1,0);
	}


  YAHOO.masi.cs.template_preview = new YAHOO.widget.Panel('template_preview', {// Create popup window for previewing the templates on the tree page
    close: true,
    visible: false,
    x: '30px',
    y: '30px',
  //fixedcenter: true,
    modal: true,
    width: '620px',
    draggable: false,
    zindex: 1000,
    constraintoviewport: true
    }
  );
  YAHOO.masi.cs.template_preview.render(document.body);


  YAHOO.masi.cs.zero_warning = new YAHOO.widget.Panel('zero_warning', {// Create popup window warning of losing all work when clicking on Select Product
    close: true,
    visible: false,
    fixedcenter: true,
    modal: true,
    width: '300px',
    draggable: false,
    zindex: 1000,
    constraintoviewport: true
    }
  );
  YAHOO.masi.cs.zero_warning.render(document.body);

  if (Dom.get('multi_page_document') && Dom.get('multi_page_document').value == 1){
    Dom.setStyle('spreads','display','block');
    Dom.get('spread_1').className = 'spread_enabled';
  }
  if ( document.getElementById('select_0') ) {
	var infoObj = {
		select_id: 'select_0'
	}
	YAHOO.util.Event.addListener('select_0', "change", AjaxObjectCatPulldownSelect.startRequest, infoObj );
  }
  if ( document.getElementById('selected_view') ) {
	var infoObj = {
		select_id: 'selected_view'
	}
	YAHOO.util.Event.addListener('selected_view', "change", AjaxObjectViewCodeFilter.startRequest, infoObj );
  }

	//listener for leaving the template page
	var validateLeave = Dom.getElementsByClassName('validate_leave');
	YAHOO.util.Event.addListener(validateLeave, "click", validateLeaveTemplate );
	
}

//displays a confimation if a user clicks on a link in the breadcrumb that will take them away from the template
function validateLeaveTemplate(e) {
	
	var answer = confirm('Are you sure you want to leave this page?')
	if (!answer) {		
	    YAHOO.util.Event.preventDefault(e);
	}
	
}

//shows / hides text groups in the text step
function displayTextGroups (e) {
	var num = parseInt(e.value, 10);
	var step = e.getAttribute('step_num');
	var textGroupLength = e.length;
	var id;
	
	//hide all the text groups
	for(var i=1; i<=textGroupLength; i++) {
		id = 'text_box_'+i+"_"+step;
		Dom.setStyle(id, 'display', 'none');
	}
	
	//show the correct ones
	for(var i=1; i<=num; i++) {
		id = 'text_box_'+i+"_"+step;
		Dom.setStyle(id, 'display', 'block');
	}
}

function resize_base_background(){  // This expands content_outer to fill most of the viewport height,
//  if (!Dom.get('tree1') || !Dom.get('approval_details')){
  if (Dom.get('tree1') || Dom.get('approval_details') || Dom.get('asset_mgmt')){
    return;
  }
  else{
    var y = Dom.getY('content_outer');// however, it will not contract less than content_inner
    var diff = y + 90;
    var new_content_height = Dom.getViewportHeight() - diff;
    if (Dom.get('content_inner').offsetHeight < new_content_height){
      Dom.setStyle('content_outer','height',new_content_height + 'px');
    }
    if (Dom.get('content_inner').offsetHeight > Dom.getViewportHeight()){
      Dom.setStyle('content_outer','height',Dom.get('content_inner').offsetHeight + 'px');
    }
  }
}


function login_check(box){
  if (box.checked){
    box.value = 'checked';
  }
  else{
    box.value = '';
  }
}

function username_focus(){
  if (Dom.get('username')){
    Dom.get('username').focus();
  }
}


function email_focus(){
  if (Dom.get('forgot_password_email')){
    Dom.get('forgot_password_email').focus();
  }
}


function autoSubmit(e,func){// Enables the end user to press "enter" to submit info
  var key;
  if(window.event){
    key = window.event.keyCode; // For ie [sucks]
  }
  else{
    key = e.which; // For all other compliant browsers
  }
  if(key == 13){
    eval(func);
    return false;
  }
  else{
    return true;
  }
}

function checkValue(or, min, max, actual) {
    var mask = 255 ^ or;

    if (actual < min) {
        alert("The value entered is lower than the minimun allowed.");

        invalidDimensions |= or;
    }
    else {
        invalidDimensions &= mask;
    }

    if (actual > max) {
        alert("The value entered is greater than the maximum allowed.");

        invalidDimensions |= or;
    }
    else {
        invalidDimensions &= mask;
    }

    if (invalidDimensions) {
        return(false);
    }
    else {
        return(true);
    }
}

function checkValues(name) {
    if (invalidDimensions & 1) {
        alert("The width is out of range");

        return(false);
    }
    else if (invalidDimensions & 2) {
        alert("The height is out of range");

        return(false);
    }

    return (YAHOO.masi.util.method_passthrough(name,'submit'));
}


function validate_login(e){
  var user = Dom.get('username');
  var pass = Dom.get('password');
  if (!user.value){
    alert('Enter a username.');
    user.focus();
    Event.preventDefault(e);
  }
  if (!pass.value){
    alert('Enter a password.');
    pass.focus();
    Event.preventDefault(e);
  }
}

var AjaxObjectSendForgotPasswordEmail = {// Send forgotten password email
  handleSuccess:function(o){
    if (o.responseText == 'account_not_found'){
      Dom.setStyle('forgot_password_loader','display','none');
      Dom.setStyle('forgot_password_failure','display','block');
    }
    else{
      Dom.setStyle('forgot_password_loader','display','none');
      Dom.setStyle('forgot_password_success','display','block');
    }
  },

  handleFailure:function(o){
  },

  startRequest:function(){
    var email = Dom.get('forgot_password_email').value;
    var test = /\w+@\w+\.\w{2,}/;
	var result = test.exec(email);

    if (!result) {
      alert('Enter a valid email address.');
      Dom.get('forgot_password_email').focus();
    }
    else{
      Dom.setStyle('forgot_password_success','display','none');
      Dom.setStyle('forgot_password_failure','display','none');
      Dom.setStyle('forgot_password_loader','display','block');
      var querystring = '&email_address=' + email;
      YAHOO.util.Connect.asyncRequest('POST', '/unprotected/forgot_password', callbackSendForgotPasswordEmail, querystring);
    }
  }
};

var callbackSendForgotPasswordEmail = {
  success:AjaxObjectSendForgotPasswordEmail.handleSuccess,
  failure:AjaxObjectSendForgotPasswordEmail.handleFailure,
  scope: AjaxObjectSendForgotPasswordEmail
};

/*
var AjaxObjectLoadSavedDocument = {// Load saved document
  handleSuccess:function(o){
  },

  handleFailure:function(o){
  },

  startRequest:function(active_li,base_id){
    var ul = Dom.get('saved_documents');
    var li = document.getElementsByTagName('li');
    for (var i=0; i<li.length; i++){
      Dom.setStyle(li[i],'border-right','1px solid #a1a1a1');
      Dom.setStyle(li[i],'background-color','#ddd');
      Dom.setStyle(li[i],'background-image','none');
    }
    Dom.setStyle(active_li,'border-right','1px solid #fff');
    Dom.setStyle(active_li,'background','#fff url(/images/arrow_denim.gif) no-repeat center right');
    var querystring = '&func=display_saved_document&base_id=' + base_id;
    YAHOO.util.Connect.asyncRequest('POST', '/handler', callbackLoadSavedDocument, querystring);
  }
};

var callbackLoadSavedDocument = {
  success:AjaxObjectLoadSavedDocument.handleSuccess,
  failure:AjaxObjectLoadSavedDocument.handleFailure,
  scope: AjaxObjectLoadSavedDocument
};
*/

var AjaxObjectShowResults = {// Display results when clicking on an item in the tree
  handleSuccess:function(o){
    Dom.get('product_results').innerHTML = o.responseText;
    Dom.setStyle('product_results','display','block');
    //try {
    //    Dom.get('product_results').innerHTML = o.responseText;
    //}
    //catch (e) {
    //    Dom.get('product_results').innerHTML = o.responseText;
    //}
    Dom.setStyle('pulldown_loader','display','none');
  },

  handleFailure:function(o){
  },

  startRequest:function(base_id){
    Dom.setStyle('pulldown_loader','display','inline');
    var querystring = 'func=display_product_results&base_id=' + base_id;

    if (Dom.get('selected_view')) {
        querystring += '&selected_view=' + Dom.get('selected_view').value;
    }

    YAHOO.util.Connect.asyncRequest('POST', '/handler', callbackShowResults, querystring);
  }
};

var callbackShowResults = {
  success:AjaxObjectShowResults.handleSuccess,
  failure:AjaxObjectShowResults.handleFailure,
  scope: AjaxObjectShowResults
};


var AjaxObjectAllViews = {// Display results when clicking on an item in the tree
  handleSuccess:function(o) {
    Dom.get('all_views_content').innerHTML = o.responseText;
    YAHOO.masi.cs.all_views.show();
    Dom.setStyle('pulldown_loader','display','none');
  },

  handleFailure:function(o){
  },

  startRequest:function(base_id){
    Dom.setStyle('pulldown_loader','display','inline');
    var querystring = 'func=display_product_results&base_id=' + base_id;

    if (Dom.get('selected_view')) {
        querystring += '&selected_view=' + Dom.get('selected_view').value;
    }

    YAHOO.util.Connect.asyncRequest('POST', '/handler', callbackAllViews, querystring);
  }
};

var callbackAllViews = {
  success:AjaxObjectAllViews.handleSuccess,
  failure:AjaxObjectAllViews.handleFailure,
  scope: AjaxObjectAllViews
};


var AjaxObjectApprovalResponse = {// Email sent from approver to user with an approved or denied status
  handleSuccess:function(o){
    Dom.setStyle('approval_processing','display','none');
    Dom.setStyle('approval_processing_complete','display','block');
  },

  handleFailure:function(o){
  },

//  startRequest:function(approval_type,comments){
  startRequest:function(approval_type,comments,final_doc,email_string){
    Dom.setStyle('approval_processing_complete','display','none');
    Dom.setStyle('approval_processing','display','block');
    var querystring = '&func=process_approval&approval_type=' + approval_type + '&comments=' + comments + '&final_doc=' + final_doc + '&email_string=' + email_string;
    YAHOO.util.Connect.asyncRequest('POST', '/handler', callbackApprovalResponse, querystring);
  }
};

var callbackApprovalResponse = {
  success:AjaxObjectApprovalResponse.handleSuccess,
  failure:AjaxObjectApprovalResponse.handleFailure,
  scope: AjaxObjectApprovalResponse
};


function display_photo_spinner() {
  if (Dom.get('photo_category_loader')){
	document.getElementById('photo_category_loader').style.visibility='visible';
  }
}

function hide_photo_spinner() {
  if (Dom.get('photo_category_loader')){
	document.getElementById('photo_category_loader').style.visibility='hidden';
  }
}

function select_photo(base_id,step_number){// Highlight photo upon selecting in display_photo.thtml
//  var photo_wrapper = Dom.get('photo_wrapper');
  var imgs = Dom.getElementsByClassName('photo_selected');
  for (var i=0; i<imgs.length; i++){
    YAHOO.util.Dom.replaceClass(imgs[i], 'photo_selected', 'photo');
  }
  Dom.get(base_id + '_' + step_number).className = 'photo_selected';
  var myimg = base_id + '_' + step_number;
  YAHOO.util.Dom.addClass('myimg', 'photo_selected');
  Dom.get('selected_base_id_' + step_number).value = base_id;
}


function hilite_photo(photo){// Highlight previously selected photo in display_photo.thtml
  var base_id = Dom.get(photo).value;
  if (base_id){
	  var el = Dom.get(base_id);
	  if ( el ) {
    	el.className = 'photo_selected';
	  }
  }
}


function validate_photo(adcreator_step_number){
  var test = Dom.get('photo_uploaded_' + adcreator_step_number).value;

  if (test) {
    return true;
  }
  else if (!Dom.get('selected_base_id_' + adcreator_step_number).value){
    alert('Make a selection before submitting.');
    return false;
  }
  return true;
}

function toggle_saved_thumb(saved_thumbnail_path){
  Dom.get('sidebar_thumbnail_image').src = saved_thumbnail_path;
}


function display_load(){
  AjaxObjectDisplayLoad.startRequest();
}

var AjaxObjectDisplayLoad = {//
  handleSuccess:function(o){
    Dom.get('saved_docs_container').innerHTML = o.responseText;
    if (Dom.get('sidebar_thumbnail_image').src.indexOf('/.gif') == -1){
      Dom.setStyle('saved_docs_container','visibility','visible');
    }
  },

  handleFailure:function(o){
  },

  startRequest:function(approval_type,comments){
    var querystring = '&func=display_load&limit=5&reverse=1';
    YAHOO.util.Connect.asyncRequest('POST', '/handler', callbackDisplayLoad, querystring);
  }
};

var callbackDisplayLoad = {
  success:AjaxObjectDisplayLoad.handleSuccess,
  failure:AjaxObjectDisplayLoad.handleFailure,
  scope: AjaxObjectDisplayLoad
};


var AjaxObjectExportDownload = {//
  handleSuccess:function(o){
    Dom.setStyle('export_processing','display','none');
    Dom.setStyle('export_download_processing_complete','display','block');
		Dom.get('crumb_link_' + current_step_number).className = 'crumb_anchor_completed_enabled';
    window.location = 'http://' + host + o.responseText;
  },

  handleFailure:function(o){
  },

  startRequest:function(adcreator_step_number){
		current_step_number = adcreator_step_number;
    var export_format = '';
    var span = Dom.get('file_types');
    var radio = span.getElementsByTagName('input');
    for (var i=0; i<radio.length; i++){
      if (radio[i].checked){
        export_format = radio[i].value;
      }
    }
    if (export_format == ''){
      alert('Select a file format.');
      return false;
    }
    Dom.setStyle('export_download_processing_complete','display','none');
    Dom.setStyle('export_email_processing_complete','display','none');
    Dom.setStyle('export_processing','display','block');
    var querystring = '&func=process_export&download_option=1&export_format=' + export_format;
    YAHOO.util.Connect.asyncRequest('POST', '/handler', callbackExportDownload, querystring);
  }
};

var callbackExportDownload = {
  success:AjaxObjectExportDownload.handleSuccess,
  failure:AjaxObjectExportDownload.handleFailure,
  scope: AjaxObjectExportDownload
};

//added -- Add to cart in adcreator
var AjaxObjectExportCart = {//
  handleSuccess:function(o){
    Dom.setStyle('export_processing','display','none');
    Dom.setStyle('export_download_processing_complete','display','block');
		Dom.get('crumb_link_' + current_step_number).className = 'crumb_anchor_completed_enabled';
    //window.location = 'http://' + host + o.responseText;
  },

  handleFailure:function(o){
  },

  startRequest:function(adcreator_step_number){
		current_step_number = adcreator_step_number;
    var export_format = '';
    var span = Dom.get('file_types');
    var radio = span.getElementsByTagName('input');
    for (var i=0; i<radio.length; i++){
      if (radio[i].checked){
        export_format = radio[i].value;
      }
    }
    if (export_format == ''){
      alert('Select a file format.');
      return false;
    }
    Dom.setStyle('export_download_processing_complete','display','none');
    Dom.setStyle('export_email_processing_complete','display','none');
    Dom.setStyle('export_processing','display','block');
    var querystring = '&func=process_export&download_option=1&export_format=' + export_format;
    YAHOO.util.Connect.asyncRequest('POST', '/handler', callbackExportCart, querystring);
  }
};

var callbackExportCart = {
  success:AjaxObjectExportCart.handleSuccess,
  failure:AjaxObjectExportCart.handleFailure,
  scope: AjaxObjectExportCart
};
//--


var AjaxObjectExportEmail = {//
  handleSuccess:function(o){
    Dom.setStyle('export_processing','display','none');
    Dom.setStyle('export_email_processing_complete','display','block');
		Dom.get('crumb_link_' + current_step_number).className = 'crumb_anchor_completed_enabled';
  },

  handleFailure:function(o){
  },

  startRequest:function(adcreator_step_number){
		current_step_number = adcreator_step_number;
    var export_format = '';
    var email = Dom.get('export_email').value;
    var div = Dom.get('file_types');
    var radio = div.getElementsByTagName('input');
    for (var i=0; i<radio.length; i++){
      if (radio[i].checked){
        export_format = radio[i].value;
      }
    }
    if (export_format == ''){
      alert('Select a file format.');
      return false;
    }
    if (!Dom.get('export_email').value){
      alert('Enter an email address.');
      return false;
    }
    Dom.setStyle('export_download_processing_complete','display','none');
    Dom.setStyle('export_email_processing_complete','display','none');
    Dom.setStyle('export_processing','display','block');
    var querystring = '&func=process_export&email_option=1&export_format=' + export_format + '&email_string=' + email;
    YAHOO.util.Connect.asyncRequest('POST', '/handler', callbackExportEmail, querystring);
  }
};

var callbackExportEmail = {
  success:AjaxObjectExportEmail.handleSuccess,
  failure:AjaxObjectExportEmail.handleFailure,
  scope: AjaxObjectExportEmail
};


var AjaxObjectApprovalRequest = {//
  handleSuccess:function(o){
    Dom.setStyle('approval_request_processing','display','none');
    Dom.setStyle('approval_request_processing_complete','display','block');
		Dom.get('crumb_link_' + current_step_number).className = 'crumb_anchor_completed_enabled';
  },

  handleFailure:function(o){
  },

  startRequest:function(adcreator_step_number){
		current_step_number = adcreator_step_number;
    var export_format = '';
    var email = Dom.get('approval_email').value;
    var div = Dom.get('file_types');
    var radio = div.getElementsByTagName('input');
    for (var i=0; i<radio.length; i++){
      if (radio[i].checked){
        export_format = radio[i].value;
      }
    }
    if (export_format == ''){
      alert('Select a file format.');
      return false;
    }
    if (!Dom.get('approval_email').value){
      alert('Enter an email address.');
      return false;
    }
    Dom.setStyle('approval_request_processing_complete','display','none');
    Dom.setStyle('approval_request_processing','display','block');
    var querystring = '&func=process_approval_request&download_option=1&export_format=' + export_format + '&email_string=' + email;
    YAHOO.util.Connect.asyncRequest('POST', '/handler', callbackApprovalRequest, querystring);
  }
};

var callbackApprovalRequest = {
  success:AjaxObjectApprovalRequest.handleSuccess,
  failure:AjaxObjectApprovalRequest.handleFailure,
  scope: AjaxObjectApprovalRequest
};


function toggle_guides(){
  var doc_id = Dom.get('document_id').value;
  var main_div = Dom.get(doc_id);
  var click_div = main_div.getElementsByTagName('div');
  var click_anchor = main_div.getElementsByTagName('a');
  var toggle_button = Dom.get('guides_button');
  var guides = Dom.get('guides');
  if (guides.value == 'on'){
    guides.value = 'off';
    toggle_button.src = '/images/show_guides.gif';
    for (var i=0; i<click_div.length; i++){
      click_div[i].style.display = 'none';
    }
    for (var i=0; i<click_anchor.length; i++){
      click_anchor[i].style.display = 'none';
    }
  }
  else{
    guides.value = 'on';
    toggle_button.src = '/images/hide_guides.gif';
    for (var i=0; i<click_div.length; i++){
      click_div[i].style.display = 'block';
    }
    for (var i=0; i<click_anchor.length; i++){
      click_anchor[i].style.display = 'block';
    }
  }
}


function remember_toggle_guides(){
  var doc_id = Dom.get('document_id').value;
  var main_div = Dom.get(doc_id);
  var click_div = main_div.getElementsByTagName('div');
  var click_anchor = main_div.getElementsByTagName('a');
  var toggle_button = Dom.get('guides_button');
  var guides = Dom.get('guides');
  if (guides.value == 'on'){
    toggle_button.src = '/images/hide_guides.gif';
    for (var i=0; i<click_div.length; i++){
      click_div[i].style.display = 'block';
    }
    for (var i=0; i<click_anchor.length; i++){
      click_anchor[i].style.display = 'block';
    }
  }
  else{
    toggle_button.src = '/images/show_guides.gif';
    for (var i=0; i<click_div.length; i++){
      click_div[i].style.display = 'none';
    }
    for (var i=0; i<click_anchor.length; i++){
      click_anchor[i].style.display = 'none';
    }
  }
}


var AjaxObjectSaveProgress = {//
  handleSuccess:function(o){
    Dom.setStyle('save_processing','display','none');
    YAHOO.masi.cs.save_module.hide();
    display_load();// refresh the saved documents list on the left sidebar after saving the current document
  },

  handleFailure:function(o){
  },

  startRequest:function(approval_type,comments){
    Dom.setStyle('save_processing','display','block');
    var save_name = Dom.get('save_name').value;
    var querystring = '&func=process_save&save_name=' + save_name;
    YAHOO.util.Connect.asyncRequest('POST', '/handler', callbackSaveProgress, querystring);
  }
};

var callbackSaveProgress = {
  success:AjaxObjectSaveProgress.handleSuccess,
  failure:AjaxObjectSaveProgress.handleFailure,
  scope: AjaxObjectSaveProgress
};


var AjaxObjectProfileUpdate = {//
  handleSuccess:function(o){
    Dom.setStyle('profile_loader','display','none');
    if (o.responseText == 200){
      Dom.setStyle('profile_success','display','block');
    }

    else{
      Dom.setStyle('profile_failure','display','block');
    }
  },

  handleFailure:function(o){
  },

  startRequest:function(approval_type,comments){
    Dom.setStyle('profile_success','display','none');
    Dom.setStyle('profile_failure','display','none');
    Dom.setStyle('profile_loader','display','block');
    var company_name = Dom.get('company_name').value;
    var first_name = Dom.get('first_name').value;
    var last_name = Dom.get('last_name').value;
    var address_1 = Dom.get('address_1').value;
    var address_2 = Dom.get('address_2').value;
    var city = Dom.get('city').value;
    var state_province = Dom.get('state_province').options[Dom.get('state_province').selectedIndex].value;
    var zip_postal = Dom.get('zip_postal').value;
    var phone_number = Dom.get('phone_number').value;
    var fax_number = Dom.get('fax_number').value;
    var email_address = Dom.get('email_address').value;
    var querystring = '&func=process_profile&company_name=' + company_name + '&first_name=' + first_name + '&last_name=' + last_name + '&address_1=' + address_1 + '&address_2=' + address_2 + '&city=' + city + '&state_province=' + state_province + '&zip_postal=' + zip_postal + '&phone_number=' + phone_number + '&fax_number=' + fax_number + '&email_address=' + email_address;
    YAHOO.util.Connect.asyncRequest('POST', '/handler', callbackProfileUpdate, querystring);
  }
};

var callbackProfileUpdate = {
  success:AjaxObjectProfileUpdate.handleSuccess,
  failure:AjaxObjectProfileUpdate.handleFailure,
  scope: AjaxObjectProfileUpdate
};


function hide_radio(num_items,form){
  if (num_items == 1){
    var form_wrapper = Dom.get(form);
    var input = form_wrapper.getElementsByTagName('input');
    for (var i=0; i<input.length; i++){
      if (input[i].type == 'radio'){
        input[i].checked = true;
        input[i].style.display = 'none';
      }
    }
  }
}


// Change spread
var AjaxObjectChangeSpread = {// Changes spread using the page icons
  handleSuccess:function(o){
    YAHOO.masi.cs.loader_full_pg.hide();
    Dom.get('main_content_area').innerHTML = o.responseText;
    remember_toggle_guides();
  },

  set_spread_visual:function(spread){
      var div = Dom.get('spreads');
      var pages = div.getElementsByTagName('img');
      for (var i=0; i<pages.length; i++){
        pages[i].className = 'spread_disabled';
      }
      Dom.get('spread_' + spread).className = 'spread_enabled';
  },
  handleFailure:function(o){
  },

  startRequest:function(spread){
    if (Dom.get('current_spread').value == spread){
      return false;
    }
    else{
      if (!do_not_show_loader) {
          YAHOO.masi.cs.loader_full_pg.show();
      }
      var div = Dom.get('spreads');
      var pages = div.getElementsByTagName('img');
      for (var i=0; i<pages.length; i++){
        pages[i].className = 'spread_disabled';
      }
      Dom.get('spread_' + spread).className = 'spread_enabled';
      var querystring = '&func=display_clickable_work_area&spread=' + spread;
      YAHOO.util.Connect.asyncRequest('POST', '/handler', callbackChangeSpread, querystring);
	  YAHOO.masi.cs.application.crumbcontroller.current_page_number = spread;
    }
  }
};

var callbackChangeSpread = {
  success:AjaxObjectChangeSpread.handleSuccess,
  failure:AjaxObjectChangeSpread.handleFailure,
  scope:AjaxObjectChangeSpread
};


function ismaxlength(obj){
  var mlength=obj.getAttribute? parseInt(obj.getAttribute("maxlength")) : ""
  if (obj.getAttribute && obj.value.length>mlength)
  obj.value=obj.value.substring(0,mlength)
}


var AjaxObjectAssetSearch = {
  handleSuccess:function(o){
    if (Dom.get('selected_view')) {
	  //Dom.setStyle('asset_select_loader','display','none');
	}
	
    Dom.setStyle('product_results','display','block');
    Dom.get('product_results').innerHTML = o.responseText;
    //console.log(o.responseText);
    pulldown_loader_flag--;
    if (pulldown_loader_flag == 0){
      Dom.setStyle('pulldown_loader','display','none');
    }
  },
  handleFailure:function(o){
  },
  startRequest:function(base_id,loader_visibility, search_type) {
	// old func: process_asset_search
	// display_product_results
    var querystring = '&func=display_product_results&base_id=' + base_id + '&search_type='+search_type+'&selected_view=';
 	//Dom.setStyle('pulldown_loader','display','inline');

    if (Dom.get('selected_view')) {
      querystring += Dom.get('selected_view').value;
    }

    YAHOO.util.Connect.asyncRequest('POST', '/handler', callbackAssetSearch, querystring);
    pulldown_loader_flag++;
  }
};

var callbackAssetSearch = {
  success:AjaxObjectAssetSearch.handleSuccess,
  failure:AjaxObjectAssetSearch.handleFailure,
  scope: AjaxObjectAssetSearch
};


var AjaxObjectViewCodeFilter = {
  handleSuccess:function(o){
		Dom.setStyle('asset_select_loader','display','none');
  },
  handleFailure:function(o){
  },
  startRequest:function(base_id) {
      var current = Dom.get('select_' + (currentPulldown || 0));
      var element = current[current.selectedIndex];
      var querystring = '';
//			console.log(document.getElementById('search_type').value);
            if(document.getElementById('search_type').value == 'c'){
              
              AjaxObjectAssetSearch.startRequest(element.value);
              //AjaxObjectShowResults.startRequest(document.getElementById('search_param').value);
              //console.log(element.value);
              //querystring = 'func=display_category_drilldown&base_id=' + element.value + '&selected_view=';
			}
			else if(document.getElementById('search_type').value == 'k'){
              AjaxObjectAssetKeywordSearch.startRequest(document.getElementById('search_param').value);
              //querystring = 'func=display_category_drilldown&selected_view=';
			}

			//if (Dom.get('selected_view')) {
              //console.log('hi');
              Dom.setStyle('asset_select_loader','display','inline');
              querystring = 'func=display_category_drilldown&base_id=' + element.value + '&selected_view=';
              querystring += Dom.get('selected_view').value;
            //}

//			if (element.id == 'category'){
//        if (Dom.get('product_results')) {
//          AjaxObjectAssetSearch.startRequest(element.value);
//        }
//        querystring = '&func=display_category_drilldown&base_id=' + element.value + '&selected_view=';
//      }
//      else if (Dom.get('keyword_search_box').value) {
//          AjaxObjectAssetKeywordSearch.startRequest(Dom.get('keyword_search_box').value);

//          querystring = '&func=display_category_drilldown&selected_view=';
//      }

//      if (Dom.get('selected_view')) {
//         querystring += Dom.get('selected_view').value;
//      }

      YAHOO.util.Connect.asyncRequest('POST', '/handler', callbackViewCodeFilter, querystring);
  }
};

var callbackViewCodeFilter = {
  success:AjaxObjectViewCodeFilter.handleSuccess,
  failure:AjaxObjectViewCodeFilter.handleFailure,
  scope: AjaxObjectViewCodeFilter
};

var AjaxObjectAssetKeywordSearch = {
  handleSuccess:function(o){
    Dom.get('product_results').innerHTML = o.responseText;
		Dom.setStyle('product_results','display','block');
    //Dom.setStyle('asset_results_instrucs','display','block');
    Dom.setStyle('keyword_search_loader','display','none');
  },
  handleFailure:function(o){
  },
  startRequest:function(keywords) {
		document.getElementById('search_param').value = keywords;
		document.getElementById('search_type').value = 'k';

    Dom.setStyle('keyword_search_loader','display','inline');
    var querystring = 'func=process_asset_search&keywords=' + keywords + '&selected_view=';

    if (Dom.get('selected_view')) {
        querystring += Dom.get('selected_view').value;
    }

    YAHOO.util.Connect.asyncRequest('POST', '/handler', callbackAssetKeywordSearch, querystring);
  }
};

var callbackAssetKeywordSearch = {
  success:AjaxObjectAssetKeywordSearch.handleSuccess,
  failure:AjaxObjectAssetKeywordSearch.handleFailure,
  scope: AjaxObjectAssetKeywordSearch
};


function refresh_search_results(){
  if (Dom.get('asset_search_flag').value == 'base_id'){
    AjaxObjectAssetSearch.startRequest(Dom.get('initial_search_base_id').value);
  }
  if (Dom.get('asset_search_flag').value == 'keyword'){
    keyword_loader = 'hide';// prevents the keyword loader from showing when refreshing results upon closing 'related items' popup
    AjaxObjectAssetKeywordSearch.startRequest(Dom.get('keyword_search_box').value);
  }
}

var AjaxObjectRelatedItems = {
  handleSuccess:function(o){
    Dom.get('related_items_content').innerHTML = o.responseText;
    YAHOO.masi.cs.related_items.show();
  },
  handleFailure:function(o){
  },
  startRequest:function(base_id) {
    var querystring = '&func=process_related_items&base_id=' + base_id;
    YAHOO.util.Connect.asyncRequest('POST', '/handler', callbackRelatedItems, querystring);
  }
};

var callbackRelatedItems = {
  success:AjaxObjectRelatedItems.handleSuccess,
  failure:AjaxObjectRelatedItems.handleFailure,
  scope: AjaxObjectRelatedItems
};


function prep_for_cart(base_id,file_type,button_state,button,display_name){
  if (button_state == 'http://' + host + '/images/asset_add.png'){
    button_state = '/images/asset_remove.png';
    Dom.get(button).src = button_state;
    AjaxObjectAddToCart.startRequest(base_id,file_type,button_state,display_name);
  }
  else{
    button_state = '/images/asset_add.png';
    Dom.get(button).src = button_state;
    AjaxObjectRemoveFromCart.startRequest(base_id,file_type,button_state);
  }
}

var AjaxObjectAddToCart = {
  handleSuccess:function(o){
    Dom.get('cart_items_count').innerHTML = o.responseText;
  },
  handleFailure:function(o){
  },
  startRequest:function(base_id,file_type,button_state,display_name) {
    var querystring = "&func=add_to_cart&base_id=" + base_id + "&file_type=" + file_type + "&button_state=" + button_state + "&display_name=" + display_name;
    YAHOO.util.Connect.asyncRequest('POST', '/handler', callbackAddToCart, querystring);
  }
};

var callbackAddToCart = {
  success:AjaxObjectAddToCart.handleSuccess,
  failure:AjaxObjectAddToCart.handleFailure,
  scope: AjaxObjectAddToCart
};


var AjaxObjectRemoveFromCart = {
  handleSuccess:function(o){
    Dom.get('cart_items_count').innerHTML = o.responseText;
  },
  handleFailure:function(o){
  },
  startRequest:function(base_id,file_type,button_state) {
    var querystring = "&func=remove_from_cart&item_list=" + base_id + "&file_type=" + file_type + "&button_state=" + button_state;
    YAHOO.util.Connect.asyncRequest('POST', '/handler', callbackRemoveFromCart, querystring);
  }
};

var callbackRemoveFromCart = {
  success:AjaxObjectRemoveFromCart.handleSuccess,
  failure:AjaxObjectRemoveFromCart.handleFailure,
  scope: AjaxObjectRemoveFromCart
};


function download_asset(download){
  window.location = 'http://' + host + '/handler?func=download_zip&file_name=' + download;
}


function verify_assets(this_form) {
    var num_assets = Dom.get('num_assets');

    if (num_assets.value >= 8) {
        alert("You have already uploaded the maximum number of images.");

        this_form.reset();
    }
}

function enlarged_approval_preview(){
  var source = Dom.get('approval_preview_image').src;
  var strip = source.replace('.jpg','');
  var final_source = strip + '_t.jpg';
  Dom.get('antons_div').innerHTML = '<img src="' + final_source +  '"/>';
}


var AjaxObjectDownloadCart = {
  handleSuccess:function(o){
    Dom.get('download_processing').style.display = 'none';
    document.location = o.responseText;
  },
  handleFailure:function(o){
  },
  startRequest:function() {
    Dom.get('download_processing').style.display = 'inline';
    var querystring = "&func=process_export_cart";
    YAHOO.util.Connect.asyncRequest('POST', '/handler', callbackDownloadCart, querystring);
  }
};

var callbackDownloadCart = {
  success:AjaxObjectDownloadCart.handleSuccess,
  failure:AjaxObjectDownloadCart.handleFailure,
  scope: AjaxObjectDownloadCart
};


function show_email_section(){
  Dom.get('email_cart').style.display = 'block';
  Dom.get('email_cart_thanks').style.display = 'none';
}


var AjaxObjectEmailCart = {
  handleSuccess:function(o){
    Dom.get('email_processing').style.display = 'none';
    Dom.get('email_cart').style.display = 'none';
    Dom.get('email_cart_thanks').style.display = 'block';
  },
  handleFailure:function(o){
  },
  startRequest:function(recipients,message) {
    if (!Dom.get('email_recipients').value){
      alert('Enter an e-mail address.');
      return false;
    }
    else{
      Dom.get('email_processing').style.display = 'inline';
      var querystring = "&recipients=" + recipients + "&message=" + message;
      querystring += "&func=process_email_cart";
      YAHOO.util.Connect.asyncRequest('POST', '/handler', callbackEmailCart, querystring);
    }
  }
};

var callbackEmailCart = {
  success:AjaxObjectEmailCart.handleSuccess,
  failure:AjaxObjectEmailCart.handleFailure,
  scope: AjaxObjectEmailCart
};


// CATEGORY PULLDOWN MENUS
function remove_levels(level) {
    var select_id = 'select_' + level;

	while ( document.getElementById(select_id) ) {
		var oParent = document.getElementById(select_id).parentNode;
		oParent.removeChild(document.getElementById(select_id));
		if ( document.getElementById('br_' + select_id) ) {
			var oParent = document.getElementById('br_' + select_id).parentNode;
			oParent.removeChild(document.getElementById('br_' + select_id));
		}
		level++;
		select_id = 'select_' + level;
	}
}

var pulldown_loader_flag = 0;
var AjaxObjectCatPulldownSelect = {
  handleSuccess:function(o){
    pulldown_loader_flag--;
    if (pulldown_loader_flag == 0){
      Dom.setStyle('pulldown_loader','display','none');
    }

    //Dom.setStyle('asset_select_loader','display','none');
    YAHOO.masi.util.console_log("\t response ->" + o.responseText + "<-");
    var response = [];
    response = YAHOO.lang.JSON.parse(o.responseText);

    //pulldown_counter++;
    //var select_id = 'select_' + pulldown_counter;
    var level = 0;
    if ( response[0] ) {
      response[0].path = response[0].path.replace(/%252C/g,',');
      var path_list = response[0].path.split(',');
      for (var i = 0; i < path_list.length; i++) {
        if ( path_list[i] != '' ) {
          level++;
        }
      }
    }
    if ( level == 0 ) {
        if (currentPulldown < maxPulldown) {
            maxPulldown = currentPulldown;

            remove_levels(parseInt(currentPulldown)+1);

            return;
        }
        else {
            return;
        }
    }
    var select_id = 'select_' + level;
    remove_levels(level);

    // create select element
    var select = document.createElement('select');
    select.setAttribute('id', select_id);
    select.setAttribute('class', 'category_pulldown');
    // THIS ONCHANGE ATTRIBUTE DOESNT WORK IN IE, USE THE EVENT HANDLER AT THE BOTTOM
    //select.setAttribute('onchange', 'AjaxObjectCatPulldownSelect.startRequest(this.options[this.selectedIndex]);');
    var infoObj = {
      select_id: select_id
    }
    YAHOO.util.Event.addListener(select_id, "change", AjaxObjectCatPulldownSelect.startRequest, infoObj );
    select.setAttribute('size', '1');

    // create default option
    var option = document.createElement('option');
    option.setAttribute('value', '');
    option.setAttribute('id', 'no_op');
    for (var i=0; i < response.length; i++){
      var response = [];
      response = YAHOO.lang.JSON.parse(o.responseText);
      if (response[i].material_type == 'category'){
        option.innerHTML = 'Select product category';
      }
      else if (response[i].material_type == 'document') {
        option.innerHTML = 'Please make your selection';
      }
      else {
        option.innerHTML = 'Select product category';
      }
      break;
    }
    select.appendChild(option);

    // create all other options
    for (var i=0; i < response.length; i++){
      var response = [];
      response = YAHOO.lang.JSON.parse(o.responseText);
      option = document.createElement('option');
      option.setAttribute('value', response[i].base_id + '&path=' + response[i].path);
      option.setAttribute('id', response[i].material_type);
      option.innerHTML = response[i].name;
      select.appendChild(option);
    }
    // insert this pulldown after previous pulldown
    Dom.get('pulldowns_group').appendChild(select);

    // insert line break after this pulldown

/*
    var br = document.createElement('br');
    br.setAttribute('id', 'br_' + select_id);
    Dom.get('pulldowns').appendChild(br);
*/

    // attach event handler to this pulldown
    //Event.addListener(select_id, 'change', AjaxObjectCatPulldownSelect.startRequest(Dom.get(select_id).options[Dom.get(select_id).selectedIndex].value));
    //Dom.setStyle('pulldown_loader','display','none');
  },
  handleFailure:function(o){
  	//Dom.setStyle('asset_select_loader','display','none');
  },
  startRequest:function(e, infoObj) {
  	//Dom.setStyle('asset_select_loader','display','block');
    var reports = document.getElementById(infoObj.select_id);
    var element = reports[reports.selectedIndex];

    currentPulldown = infoObj.select_id.replace(/select_/,'');

    if (currentPulldown >= maxPulldown) {
        maxPulldown = currentPulldown;
    }
    
	if (element.id == 'category'){
      if (Dom.get('product_results')) {
        //AjaxObjectAssetSearch.startRequest(element.value,'hide');
			document.getElementById('search_type').value = 'c';
        AjaxObjectAssetSearch.startRequest(element.value);
      }
      var querystring = 'func=display_category_drilldown&base_id=' + element.value;
      Dom.setStyle('pulldown_loader','display','inline');

      if (Dom.get('selected_view')) {
          querystring += '&selected_view=' + Dom.get('selected_view').value;
      }
      YAHOO.util.Connect.asyncRequest('POST', '/handler', callbackCatPulldownSelect, querystring);
      pulldown_loader_flag++;
    }
	if (element.id == 'document'){
      AjaxObjectShowResults.startRequest(element.value);
    }
    if (element.id == 'asset'){
      var querystring2 = 'func=display_category_drilldown&base_id=' + element.value;
      YAHOO.util.Connect.asyncRequest('POST', '/handler', callbackCatPulldownSelect, querystring2);
			document.getElementById('search_param').value = element.value;
			document.getElementById('search_type').value = 'c';
      AjaxObjectShowResults.startRequest(element.value);
    }
    if (element.id == 'no_op'){
      Dom.setStyle('product_results','display','none');
			document.getElementById('search_param').value = '';
			document.getElementById('search_type').value = '';
		}
    if (element.id != 'no_op'){
      Dom.setStyle('product_results','display','block');
      //Dom.setStyle('pulldown_loader','display','inline');
    }
    else{
      //Dom.setStyle('pulldown_loader','display','none');
    }
  }
};

var callbackCatPulldownSelect = {
  success:AjaxObjectCatPulldownSelect.handleSuccess,
  failure:AjaxObjectCatPulldownSelect.handleFailure,
  scope: AjaxObjectCatPulldownSelect
};


function switch_preview(page_number,sel_li){
  var ul = Dom.get('page_numbers');
  var li = ul.getElementsByTagName('li');
  for (var j=0; j<li.length; j++){
	li[j].className = 'page_num_li';
  }
  Dom.get(sel_li).className = 'page_num_li_selected';

  var div = Dom.get('approval_preview');
  var prvs = div.getElementsByTagName('img');
  for (var i=0; i<prvs.length; i++){
	Dom.setStyle(prvs[i],'display','none');
  }
  
  var multi_comment = YAHOO.util.Dom.getElementsByClassName('multi_comment');
  for (var j=0; j<multi_comment.length; j++){
	Dom.setStyle(multi_comment[j],'display','none');
  }
  
  Dom.setStyle('prvw_' + page_number,'display','inline');
  Dom.setStyle('comments_' + page_number,'display','block');
}


var AjaxObjectCustomApprovalResponse = {// Email sent from approver to user with an approved or denied status
  handleSuccess:function(o){
	Dom.setStyle('approval_processing','display','none');
	Dom.setStyle('approval_processing_complete','display','block');
  },

  handleFailure:function(o){
  },

  startRequest:function(approval_type,final_doc,email_string,ad_creator_id,ad_creator_name){
	var comments = '';
	var multi_comment = YAHOO.util.Dom.getElementsByClassName('multiple_page_approval_comments');
	var counter = '';
	for (var j=0; j<multi_comment.length; j++){
	  counter = j + 1;
	  comments += '&comments_' + counter + '=' + multi_comment[j].value;
	}
   
	Dom.setStyle('approval_processing_complete','display','none');
	Dom.setStyle('approval_processing','display','block');
	var querystring = '&func=process_approval&approval_type=' + approval_type + comments + '&final_doc=' + final_doc + '&email_string=' + email_string + '&ad_creator_id=' + ad_creator_id + '&doc_name=' + ad_creator_name;
	YAHOO.util.Connect.asyncRequest('POST', '/handler', callbackApprovalResponse, querystring);
  }
};

