/*

	Author:			Jay Dobson
	Date:			Jan 28, 2008
	Description:	Provides general helper methods

*/

// Variables
var url = document.location.href;

// Returns trimmed version of a given string
String.prototype.trim = function() { return this.replace(/^\s+|\s+$/, ''); };

// Shows not available message (used when disabling functions for i:Create side)
function showNAMessage() {
	alert('This function is not available in i:Create.');
}

// Replaces single quote and returns resulting string
function repSingleQuote(str) {
	return str.replace("'", "\'");
}			

// Switches the language of the page by changing the URL
function switchLanguage() {
       
	var str = document.location.href;

    //************ Use this to make the french button work in icalendar pages *************

	//To get this to work, go to icalendar and preview the calendar page in english and french for both 
    //calendar and postCalendar pages.  This will replace the frech key with the english one and visa versa

	//PostCalendar
	if (str.indexOf(/*english postCalendar PMID key:*/"6aa803eb-e120-4617-aa27-4fda713a1ff3") >= 0) {
	    url = url.replace(/*english postCalendar PMID key:*/"6aa803eb-e120-4617-aa27-4fda713a1ff3",
	    /*french postCalendar PMID key:*/"e3619430-6118-4dd2-b7f5-97aee40c0dfb");
	    document.location = url;
	}
	else if (str.indexOf(/*french postCalendar PMID key:*/"e3619430-6118-4dd2-b7f5-97aee40c0dfb") >= 0) {
	url = url.replace(/*french postCalendar PMID key:*/"e3619430-6118-4dd2-b7f5-97aee40c0dfb",
	/*english postCalendar PMID key:*/"6aa803eb-e120-4617-aa27-4fda713a1ff3");
	    document.location = url;
	}
	//Calendar
	if (str.indexOf(/*english calendar PMID key:*/"e45593e3-755a-401a-a0fa-50fb1326e1c2") >= 0) {
	    url = url.replace(/*english calendar PMID key:*/"e45593e3-755a-401a-a0fa-50fb1326e1c2",
	    /*french calendar PMID key:*/"4459161b-d392-4647-b59c-7212ee6cb32e");
	    document.location = url;
	}
	else if (str.indexOf(/*french calendar PMID key:*/"4459161b-d392-4647-b59c-7212ee6cb32e") >= 0) {
	url = url.replace(/*french calendar PMID key:*/"4459161b-d392-4647-b59c-7212ee6cb32e",
	/*english calendar PMID key:*/"e45593e3-755a-401a-a0fa-50fb1326e1c2");
	    document.location = url;
	}
	
	if (str.indexOf("&newsId") >= 0)
	{
	    url = url.substring(0, url.indexOf("&newsId"));
	}

	//***********************************************************************************
    
	if(str.indexOf("/en/") >= 0){

		url = url.replace("/en/", "/fr/");
		url = url.replace("/edit_", "/");
		document.location = url;

	}

	else if(str.indexOf("lang=en") >= 0){

		url = url.replace("lang=en", "lang=fr");
		url = url.replace("/edit_", "/");
		document.location = url;

	}

	else if(str.indexOf("/fr/") >= 0){

		url = url.replace("/fr/", "/en/");
		url = url.replace("/edit_", "/");
		document.location = url;

	}

	else if(str.indexOf("lang=fr") >= 0){

		url = url.replace("lang=fr", "lang=en");
		url = url.replace("/edit_", "/");
		document.location = url;

	}

}


// Hides inputs - This is used for Internet Explorer 6, as they show through the drop-down menu	
function HideInputs() {
	
	var ver = navigator.appVersion;
	var isIE6 = ver.indexOf("MSIE 6.0") != -1;
	
	if ( isIE6 ) {				

	    jQuery('#printArea input').css('visibility', 'hidden');		
		
	}

}

// Shows inputs
function ShowInputs() {

	var ver = navigator.appVersion;
	var isIE6 = ver.indexOf("MSIE 6.0") != -1;
	
	if ( isIE6 ) {		

	    jQuery('#printArea input').css('visibility', 'visible');				
		
	}
	
}

function GotoDomainCheck(src)
{
    var txtUrl = document.getElementById("txtUrlText");
    var chkSelected = document.getElementsByName("chkDomain");
    var domains = '';
    for (var i = 0; i < chkSelected.length; i++)
    {
        if(chkSelected[i].checked)
        {
            if (domains != '')
            {
                domains += ',';
            }
            domains += chkSelected[i].value;
        }
    }
        
    if ((txtUrl.value.trim() != '') && (domains != ''))
    {
        window.location.href = src + "?url=" + escape(txtUrl.value) + "&domains=" + escape(domains);
    }
    else if (txtUrl.value.trim() == '')
    {
        alert('Please type in a url.');
    }
    else if (domains == '')
    {
        alert('Please select at least one domain.');
    }
}

// Used for entering and leaving domain check textbox so the user doesn't have to clear the 'eSolutionsGroup' text
function DomainCheck_Enter(domainCheckTextbox) {

	if ( domainCheckTextbox.value.toLowerCase() == 'esolutionsgroup' || domainCheckTextbox.value.toLowerCase() == 'esolutionsgroup' )
		domainCheckTextbox.value = '';

}

function DomainCheck_Leave(domainCheckTextbox) {

	var url = document.location.href;

	if( url.indexOf("/en/") >= 0 && domainCheckTextbox.value.trim() == '' )
		domainCheckTextbox.value = 'eSolutionsGroup';
	
	if( url.indexOf("/fr/") >= 0 && domainCheckTextbox.value.trim() == '' )
		domainCheckTextbox.value = 'eSolutionsGroup';
	

}

function GotoSearch(src)
{
	window.location.href = src + "?strSearch=" + escape(document.getElementById("searchField").value);	
}

// Used for entering and leaving search textbox so the user doesn't have to clear the 'Search' text
function Search_Enter(searchTextbox) {

	if ( searchTextbox.value.toLowerCase() == 'recherche' || searchTextbox.value.toLowerCase() == 'search' )
		searchTextbox.value = '';

}

function Search_Leave(searchTextbox) {

	var url = document.location.href;

	if( url.indexOf("/en/") >= 0 && searchTextbox.value.trim() == '' )
		searchTextbox.value = 'Search';
	
	if( url.indexOf("/fr/") >= 0 && searchTextbox.value.trim() == '' )
		searchTextbox.value = 'Recherche';
	
	if( url.indexOf("/en/") == -1 && url.indexOf("/fr/") == -1 && searchTextbox.value.trim() == '' )
		searchTextbox.value = 'Search';
}

// Handles autoTab functionality for fields
// pcID = Previous Control ID, ccID = Current Control ID, ncID = Next Control ID
function autoTab(event, pcID, ccID, ncID) 
{

	var isBack = (event.keyCode == 8);
	
	var pc = document.getElementById(pcID);
	var cc = document.getElementById(ccID);
	var nc = document.getElementById(ncID);
	
	if ( isBack && cc.value.length == 0 && pc != null ) {
		pc.focus();
		pc.select();
	}
	
	if ( cc.value.length >= cc.getAttribute("maxlength") && nc != null ) {
		nc.focus();
		nc.select();
	}
	
}

// Takes in a textbox reference, a label ID and the max # of characters that can go into the textbox
// When the input reaches the maxChars limit any further typing is 'cut-off' and the 
// label (displaying the number of characters left) turns red
function Counter(textbox, label, maxChars) {

	lbl = document.getElementById(label);
	
	if (textbox.value.length >= maxChars) {
		lbl.style.color = 'red';
		textbox.value = (textbox.value).substring(0, maxChars);
		textbox.scrollTop = textbox.scrollHeight;		
	}
	
	else {
		lbl.style.color = 'black';
	}
	
	lbl.innerHTML = maxChars - ( textbox.value.length );

}
