/**
 * JavaScript Utilities
 *
 * Contains miscellaneous JavaScript utilities for Capgemini websites.
 *
 * @author		Aki Haimi <aki.haimi@capgemini.com>
 * @copyright	Copyright (c) 2006, Capgemini
 * @version		util.js,v 1.1 22.11.2006 14:05:33 Capgemini CMS frontend
 *
 */


/**
 * checkQueryString
 *
 * Checks that user has entered a search term.
 *
 */
function checkQueryString() {

	if ( document.forms["search"].q.value == "Search..." || document.forms["search"].q.value == "" ) {

	   alert("Please enter your search term first.");
	   document.forms["search"].q.value = "";
	   document.forms["search"].q.focus();
	   return false;

	} else {

	  return true;

	}

}


/**
 * MM_openBrWindow
 *
 * Opens a new browser window.
 *
 * @param	string	theURL, URL of the page to be opened in the browser window
 * @param	string	winName, name of the window
 * @param	string	features, attributes for window properties
 * @return	true
 *
 */
function MM_openBrWindow(theURL,winName,features) { //v2.0
  window.open(theURL,winName,features);
}



/**
 * toggleIt
 *
 * Contains visibility manipulation functions for the country select menu.
 *
 */
change_title = 'change';
close_title = 'close menu';
ms = 1000;
timer = null;
link_timeout = null;
countryname_timeout = null;
changelink_timeout = null;
z_index_visible = 20;
z_index_unvisible = -1;

var toggleIt = {
	/**
	 * toggleVisibility
	 *
	 * Switches visibility on and off.
	 *
	 * @param	object	id, element id of the element to be toggled
	 * @return	true
	 *
	 */
	toggleVisibility : function( id ) {
		var element = document.getElementById(id);
		if(element.style.display == 'none')
			element.style.display = 'block';
		else
			element.style.display = 'none';
	},
	/**
	 * hideDiv
	 *
	 * Sets display of an element to none after a configured timeout.
	 *
	 * @param	object	id, element id of the element to be hidden
	 * @return	true
	 *
	 */
	hideDivs : function() {
    	for (i = 0; i < element_ids.length; i++) {
			var element = document.getElementById(element_ids[i]);
			element.style.display = 'none';
    	}
	},
	startHide : function( ids ) {
			element_ids = ids;
			timer = setTimeout("toggleIt.hideDivs()", ms);
	},
	/**
	 * showDiv
	 *
	 * Sets display of an element to block.
	 *
	 * @param	object	id, element id of the element to be displayed
	 * @return	true
	 *
	 */
	showDiv : function( id ) {
		if (timer) clearTimeout(timer);
		if (link_timeout) clearTimeout(link_timeout);
		if (countryname_timeout) clearTimeout(countryname_timeout);
		if (changelink_timeout) clearTimeout(changelink_timeout);
		var element = document.getElementById(id);
		element.style.display = 'block';
	},
	/**
	 * changeLink
	 *
	 * Switches link title after a configured timeout (if delay is set).
	 *
	 * @param	object	id, element id of the element to be displayed
	 * @param	integer	delay, 1 if delay is to be used and 0 if not
	 * @return	true
	 *
	 */
	changeLink : function( id, delay) {
		var changelink = document.getElementById(id);
		var countryname = document.getElementById('country');
		if (delay){
			link_timeout = setTimeout(function(){ changelink.innerHTML = (changelink.innerHTML == change_title) ? close_title : change_title; }, ms);
		}else{
			changelink.innerHTML = (changelink.innerHTML == change_title) ? close_title : change_title;
		}
	}
}




/**
 * rssForm
 *
 * Contains rss feed creation form functions to move between steps.
 *
 */
step		= 1;
steps		= new Array();
steps[1]	= 'rss-form-document-types';
steps[2]	= 'rss-form-industries';
steps[3]	= 'rss-form-solutions';
steps[4]	= 'rss-form-partners';
//steps[5]	= 'rss-form-regions';
buildStatId	= null;
basePath	= null;
siteId		= null;

var rssForm = {
	nextStep : function(sId, bPath) {
		siteId	= sId;
		basePath = bPath;
		var url = basePath + '/ext/rss_feed/func/rss_feed_processForm.php';
		new Ajax.Request(url, {
  			method: 'post',
  			parameters: {
  				step_completed:step,
  				build_stat_id:buildStatId,
  				site_id:siteId
  			},
  			onSuccess: function(transport){
  				buildStatId = transport.responseText || null;
				$(steps[step]).hide();
				$(steps[step+1]).show();
				step = step+1;
				if (step > 1) {
					$('rss-form-back-button').show();
				}
				if (step == 4) {
					$('rss-form-next-button').hide();
					$('rss-form-submit-button').show();
				}
				if ($('rss-form-error-document-type').style.display != "none") {
					$('rss-form-error-document-type').hide();
				}
				if ($('rss-form-error-facet').style.display != "none") {
					$('rss-form-error-facet').hide();
				}
  			},
  			onFailure: function(){
					$('rss-form').update('<p>Sorry. There was an error.</p>');
  			}
		});
	},
	previousStep : function() {
		$(steps[step]).hide();
		$(steps[step-1]).show();
		step = step-1;
		if (step == 1) {
			$('rss-form-back-button').hide();
		}
		if (step < 4) {
			$('rss-form-next-button').show();
			$('rss-form-submit-button').hide();
		}
		if ($('rss-form-error-document-type').style.display != "none") {
			$('rss-form-error-document-type').hide();
		}
		if ($('rss-form-error-facet').style.display != "none") {
			$('rss-form-error-facet').hide();
		}
	},
	createFeed : function(e) {
        if ( step < 5 ) {
			return;
		}
		var url = basePath + '/ext/rss_feed/func/rss_feed_processForm.php';
		new Ajax.Request(url, {
  			method: 'post',
  			parameters: {
  				step_completed:step,
  				form_completed:true,
  				site_id:siteId,
  				base_path:basePath,
  				build_stat_id:buildStatId,
				form_vals:$('rss-form').serialize()
  			},
  			onSuccess: function(transport){
  				var response = transport.responseText || "no response";
  				var responseArr = response.split("|");
  				if (responseArr[0] == "Error") {
					$(steps[4]).hide();
					$('rss-form-back-button').hide();
					$('rss-form-submit-button').hide();
					if (responseArr[1] == "document_type") {
	  					step = 1;
						$('rss-form-error-document-type').show();
						$(steps[1]).show();
						$('rss-form-next-button').show();
					} else if (responseArr[1] == "facet") {
	  					step = 2;
						$('rss-form-error-facet').show();
						$(steps[2]).show();
						$('rss-form-back-button').show();
						$('rss-form-next-button').show();
					}
  				} else if (responseArr[0] == "Success") {
  					var feed_link = $('rss-form-created-feed').innerHTML.replace(/###FEED_ID###/g, responseArr[1]);
					$('rss-form-created-feed').update(feed_link);
					$(steps[4]).hide();
					$('rss-form-back-button').hide();
					$('rss-form-submit-button').hide();
					$('rss-form-created-feed').show();
					$('rss-form-another-button').show();
  				} else {
					$('rss-form').update(response);
					$('rss-form-back-button').hide();
					$('rss-form-submit-button').hide();
  				}
  			},
  			onFailure: function(){
					$('rss-form').update('<p>Sorry. There was an error.</p>');
  			}
		});

		Event.stop(e);
	},
	createAnother : function() {
		step = 1;
		buildStatId = null;
		$('rss-form').reset();
		$('rss-form-created-feed').hide();
		$('rss-form-another-button').hide();
		$(steps[1]).show();
		$('rss-form-next-button').show();
	}
}





/**
 * checkAll
 *
 * Checks all checkboxes of a form field.
 *
 * @param	string	form, value of the name attribute of the form
 * @param	array	field, value of the name attribute of the field
 * @return	none
 *
 */
function checkAll(form, field) {
  var i;
  for (i = 0; i < document.forms[form].elements[field].length; i++) {
    document.forms[form].elements[field][i].checked = true;
  }
}

/**
 * checkNone
 *
 * Clears all checkboxes of a form field.
 *
 * @param	string	form, value of the name attribute of the form
 * @param	array	field, value of the name attribute of the field
 * @return	none
 *
 */
function checkNone(form, field) {
  var i;
  for (i = 0; i < document.forms[form].elements[field].length; i++) {
    document.forms[form].elements[field][i].checked = false;
  }
}

