/* 
Readable version of the Javascript/common.js file 

The "Javascript/common_unpacked.js" file must contain the latest changes.

Compressing JS code:
==================
Requirements:
1) Two script libraries:
	- Javascript/common.js					(file downloaded by browsers, when live, it must be compressed/compacted)
	- Javascript/common_unpacked.js  	(this file - readable version)

Steps:
1) Make necessary changes to JS code below.
2) Fully test that the js code is working
3) Check requirements listed above have been met.
4) Copy this file contents and pasted into a JS compactor/compressor website
		Use http://javascriptcompressor.com/ a compressed version
5) Paste compressed js code into Javascript/common.js
6) Save ...
7) Smile!

*** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** 

Adjust the following lines:
var searchURL = '/Sectors/XYZ/XYZ.nsf/Search?OpenForm&Query=' ;

*/

var searchURL = '/Sectors/ICT/ICT.nsf/Search?OpenForm&Query=' ;


/* capture enter event - for search box */
function isEnterPressed( keyevent , obj ) {

	// keyboard detection ...
	if(window.event) // IE
  	{
 		keynum = keyevent.keyCode;
  	}
	else if(keyevent.which) // Netscape/Firefox/Opera
  	{
  		keynum = keyevent.which;
  	}
	
	if ( ( keynum == 13 )  || ( obj.type == "button" ) )
	{
		if ( window.event ) 
		{
			// stops the form from being submitted ...   (IE code)
			window.event.cancelBubble = true;	
			window.event.returnValue = false;
		}
		else
		{
			// stops the form from being submitted ... (Netscape/Firefox/Opera/etc code)
			keyevent.stopPropagation() ;
			keyevent.preventDefault();
		}
			return true ;
	}
	else
	{
		return false ;
	}
}

// next three utility functions are for the search facilities.
// trimspaces( )
// getSelectedText( )
// searchTermOk
// =================================================================
function trimspaces(aStr) {
	return aStr.replace(/^\s{1,}/, "").replace(/\s{1,}$/, "")
}

function getSelectedText( theField )
{
	theValue = ""; 

	for ( i = 0; i < theField.options.length; i++ ) 
  	{
  		if ( theField.options[i].selected ) 
    	{
      		if ( theField.options[i].value == "" ) 
      		{
        		theValue += theField.options[i].text ;
      		}
      		else
      		{
        		theValue += theField.options[i].value ;
      		}
    	}
  	}
	return ( theValue );
}


function searchTermOk( qstr , search_hint , triggerErrorMsg ) {

	var regExp1 = /\bfield\b/i; 		//used to test for reserved word field in query string
	var regExp2 = /[(,),<,>,\[,\]]/; 		//used to test for reserved char(s) in the query string

	var str = trimspaces( qstr );

	if ( str == "" )
	{
		if ( triggerErrorMsg ) alert( "Please enter something to search for." );
		return 1 ;
	} 
	else 
	if ( str == search_hint )
	{
		if ( triggerErrorMsg ) alert( "Please enter something to search for." );
		return 1 ;	
	}
	else	
	{
		if ( typeof regExp1.source != 'undefined' ) 
		{ 	//supports regular expression testing
			if ( regExp1.test( str ) || regExp2.test( str ) ) 
			{
				var alrt = "Please note that you can not include:\n\n";
				alrt += "The reserved word 'field'\n";
				alrt += "The characters comma, [, ], (, ), < or >\n\n";
				alrt += "in your search query!";
				alert( alrt );
				return 2 ;
			}
			else
			{
				// search term is reasonably ok ...
				return 0 ;
			}
		}
		else
		{
			alert( "Unsupported browser function - search cannot proceed.\n\nPlease use a different browser." ) ;
			return 3 ;
		}
	}
}

function searchSite( keyevent, obj, searchHint ) {

	if ( isEnterPressed( keyevent , obj ) )
	{
		if ( ( obj.name == 'siQuery' ) || ( obj.name == 'BTNSearch' ) )
		{
			var qr = searchTermOk( document.forms[0].siQuery.value , searchHint , true ) ;
			var qs = document.forms[0].siQuery.value ;
		}
		else if ( ( obj.name == 'siQuery2' ) || ( obj.name == 'BTNSearch2' ) )
		{
			var qr = searchTermOk( document.forms[0].siQuery2.value , searchHint , true ) ;
			var qs = document.forms[0].siQuery2.value ;
		}
		if ( qr == 0 ) 
		{
		 	window.open( searchURL + trimspaces( qs ) , "_top" ) ;
		}
	}
}

/* form validation /submission */

var requiredFieldbg='#FEEFEA' ;
var defaultFieldbg='#EAF9DA' ;
var requiredFieldText = 'Please complete this field' ;
var emsg = '' ;
var efield = '' ;

function doFieldCheck( theField ) {
	
	var str = trim( theField.value );

	if ( str == '' || str == requiredFieldText   )
	{
		theField.style.background = requiredFieldbg ;
		theField.value = requiredFieldText ;
		return 0 ;
	}
	else
	{
		theField.style.background = defaultFieldbg ;
		return 1 ;
	} 
}

function doSelectFieldCheck( theField ) {

	var str = trim( GetSelectedText( theField ) );

	if ( str == '' || str == requiredFieldText || str == 'ignoreEntry'  )
	{
		theField.style.background = requiredFieldbg ;
		theField.value = requiredFieldText ;
		return 0 ;
	}
	else
	{
		theField.style.background = defaultFieldbg ;
		return 1 ;
	} 
}

function validateRegisterFormFields( theForm ) 
{

	var emsg = '' ;
	var efield = '' ;
	var doc = document.forms[theForm] ;

	/* check input fields - bottom upwards */

	if ( doFieldCheck(doc.registerCompany) == 0)
	{
		emsg = 'Company name\n' + emsg ;
		efield = doc.registerCompany ;
		efield.style.background = requiredFieldbg ;		
	}
	
	if ( doFieldCheck(doc.registerEmail) == 0)
	{
		emsg = 'Email address\n' + emsg ;
		efield = doc.registerEmail ;
		efield.style.background = requiredFieldbg ;		
	}
	else
	{
		if ( validateEmail( doc.registerEmail.value ) == 0 )
		{	
			emsg = 'Email address\n' + emsg ;
			efield = doc.registerEmail ;
			efield.style.background = requiredFieldbg ;			
		}
	}
	
	if ( doFieldCheck( doc.registerPhone ) == 0)
	{
		emsg = 'Telephone\n' + emsg ;
		efield = doc.registerPhone ;
		efield.style.background = requiredFieldbg ;		
	}

	if ( doFieldCheck(doc.registerName) == 0)
	{
		emsg = 'Name\n' + emsg ;
		efield = doc.registerName ;
		efield.style.background = requiredFieldbg ;		
	}


	if ( emsg == '' )
	{
		return true ;
	}
	else
	{
		alert( "Error!  The following field(s) must be completed:\n\n" + emsg ) ;
		errField.focus() ;
		return false ;
	}

}


function doSubmitData( theForm , autoSubmit ) {

	var formResults = false ;

	if ( theForm == '_RegisterOfInterest' ) {
		// '_RegisterOfInterest' , '23'
		formResults = validateRegisterFormFields( theForm ) ;
	}
	
	if ( theForm == '_Enquiry' ) {
		// '_Enquriy' , '23'
		formResults = validateEnquiryFormFields( theForm ) ;
	}
	
	if ( ( autoSubmit == 1 ) && ( formResults == true ) )
	{		
		document.forms[ theForm ].submit() ;
	}
}

function doInitialiseForms( theForm ) {
	if ( ( theForm == '_RegisterOfInterest' ) || ( theForm == '_Enquiry' )) {	
		document.forms[theForm].tmp_site_cwc.value = document.forms[theForm].tmp_site_cfd.value ;
	}
}


function bookmarkSite(title, url){
 
	if (window.sidebar) {
		window.sidebar.addPanel(title, url, "");
	} else if(window.opera && window.print) {
		var elem = document.createElement('a');
		elem.setAttribute('href',url);
		elem.setAttribute('title',title);
		elem.setAttribute('rel','sidebar');
		elem.click();
	} else if(document.all) {
		window.external.AddFavorite(url, title);
	}
}

function validateLogin( ) {
	if (document.getElementById('Username').value == "") 
	{
		alert('Please supply a User Name to login.');
		return false;
	}
	else
	{
		if (document.getElementById('Password').value == "") 
		{
			alert('Please supply a Password to login.');
			return false;
		}
		else
		{
			return true ;
		}
	}
}  

/* banner effects ... using jQuery  */
/* http://jquery.malsup.com/cycle/  */
jQuery(document).ready(function() {
	/* home page - banner fading.	*/
	if( typeof( isHomePage ) != 'undefined' )
	{
		if ( isHomePage == '1' ) {
			jQuery('.fp-slides').cycle({
				fx: 'fade',
				timeout: 5000,
				delay: 0,
				speed: 1800,
				next: '.fp-next',
				prev: '.fp-prev',
				pager: '.fp-pager',
				continuous: 0,
				sync: 1,
				pause: 1,				/* mouse over pausing */
				pauseOnPagerHover: 1,
				cleartype: true,
				cleartypeNoBg: true
			});
		}
	}
});
 /* document.ready.function ... 	*/


/* - social networks panel */
function revealShareSN( ) {

	theSNDIV = document.getElementById( 'UISocialNetworks' ) ;

	if ( theSNDIV.style.display == 'block' )
	{
		theSNDIV.style.display = 'none' ;
	}
	else
	{
		theSNDIV.style.display = 'block' ;
	}
}
