function validateRequiredFields()
{
  var requiredFields = $$('.requiredField');
  for(var i=0; i<requiredFields.length; i++)
  {
    if (requiredFields[i].value == "")
    {
      requiredFields[i].focus();
      alert(requiredFields[i].name +' is a required field');
      return false;
    }
  }
  return true;
}

function validateEmails()
{
  var emailRegEx = /^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$/i;
  var emailFields = $$('.email');
  for(var i=0; i<emailFields.length; i++)
  {
    if (emailFields[i].value.search(emailRegEx) == -1)
    {
      emailFields[i].focus();
      alert(emailFields[i].value +' is not a valid email.');
      return false;
    }
  }
  return true;
}

function submitAdvancedSearch(currentPortalName)
{
  var url;    
  var title = $F('title');
  var desc = $F('desc');
  var chapter = $F('chapter');
  var categories = "";
  var albumStartDate = $F('albumStartDate');
  var albumEndDate = $F('albumEndDate');
  var createdStartDate = $F('createdStartDate');
  var createdEndDate = $F('createdEndDate');
  
  if (albumStartDate == "Start Date")
    albumStartDate = "";
  
  if (albumEndDate == "End Date")
    albumEndDate = "";
    
  if (createdStartDate == "Start Date")
    createdStartDate = "";
    
  if (createdEndDate == "End Date")
    createdEndDate = "";
    
  var inputs = document.getElementsByTagName("input")
  for (var i=0; i<inputs.length; i++)
  {
    if (inputs[i].type == "checkbox")
      if (inputs[i].checked == true)
        categories += (inputs[i].value +",");    
  }
  if (categories.length > 0)
    categories = categories.substring(0, categories.length -1);
    
  var params = "title=" +title +"&desc=" +desc +"&chapter=" +chapter +"&categories=" +categories +"&albumStartDate=" +albumStartDate +"&albumEndDate=" +albumEndDate +"&createdStartDate=" +createdStartDate +"&createdEndDate=" +createdEndDate;
  
  if (title == "" && desc == "" && chapter == "" && categories == "" && albumStartDate =="" && albumEndDate =="" && createdStartDate =="" && createdEndDate =="")
    url = URL_BASE_WEBSITE +"/" +currentPortalName +"/albums";
  else   
    url = URL_BASE_WEBSITE +"/" +currentPortalName +"/albums/advsearch/" +params;
  window.location.href = url;
  return false;
}

function submitSimpleSarch(currentPortalName)
{    
  var url;    
  var searchValue = $F('simpleSearchTextBox');
  
  if (searchValue == "")
    url = URL_BASE_WEBSITE +"/" +currentPortalName +"/albums";
  else   
    url = URL_BASE_WEBSITE +"/" +currentPortalName +"/albums/search/" +searchValue;
  window.location.href = url;
  return false;
}

function toggleSidebar(webContext)
{
  if ($('sidebar').style.display == "none")
  {    
    $('sidebar').show();
    ajaxCall = getAjaxRequest();
    url = webContext +"/ajaxAction.run?function=showSidebar";
    ajaxCall.open("GET", url, true);
    ajaxCall.send(null);
  }
  else
  {    
    $('sidebar').hide();
    ajaxCall = getAjaxRequest();
    url = webContext +"/ajaxAction.run?function=hideSidebar";
    ajaxCall.open("GET", url, true);
    ajaxCall.send(null);    
  }
}

function center(element)
{
    try
    {
        element = $(element);
    }
    catch(e)
    {
      alert(e);
        return;
    }

    var my_width  = 0;
    var my_height = 0;

   
    my_width  = window.innerWidth;
    my_height = window.innerHeight;

    if (isBrowserIE())
    {   
        my_width  = document.body.clientWidth;
        my_height = document.body.clientHeight;
    }
   

    element.style.position = 'absolute';
    element.style.zIndex   = 99;

    var scrollY = 0;

    if ( document.documentElement == document.documentElement.scrollTop )
    { 
        scrollY = document.documentElement.scrollTop;
    }
    else if ( document.body == document.body.scrollTop )
    {
        scrollY = document.body.scrollTop;
    }
    else if ( window.pageYOffset )
    {
        scrollY = window.pageYOffset;
    }
    else if ( window.scrollY )
    {
        scrollY = window.scrollY;
    }

    var elementDimensions = Element.getDimensions(element);

    var setX = ( my_width  - elementDimensions.width  ) / 2;
    var setY = ( my_height - elementDimensions.height ) / 2 + scrollY;

    setX = ( setX < 0 ) ? 0 : setX;
    setY = ( setY < 0 ) ? 0 : setY;

    element.style.left = setX + "px";
    element.style.top  = setY + "px";

    element.style.display  = 'block';
}

function getOffsetY(obj)
{
  var curtop = 0;
  if (obj.offsetParent)
  {
    do
    {
      curtop += obj.offsetTop;
    } while (obj = obj.offsetParent);
  }
  return curtop;
}

function isBrowserIE()
{
  return /msie/i.test(navigator.userAgent) && !/opera/i.test(navigator.userAgent);
}
     
function isBrowserIE6()
{
  return false /*@cc_on || @_jscript_version < 5.7 @*/;
}

function isBrowserChrome()
{
  return navigator.userAgent.toLowerCase().indexOf('chrome') > -1;
}

function trim(s)
{
    var l=0; var r=s.length -1;
    while(l < s.length && s[l] == ' ')
    {     l++; }
    while(r > l && s[r] == ' ')
    {     r-=1;     }
    return s.substring(l, r+1);
} 

function doHighlight(htmlText, keyword, index)
{     
  keyword = trim(keyword);
  var highlightStartTag;        
  var highlightEndTag = "</font>";
  
  var newHtmlText = "";
  var i = -1;
  var lcKeyword = keyword.toLowerCase();
  var lcHtmlText = htmlText.toLowerCase();
  while (htmlText.length > 0) 
  {
    i = lcHtmlText.indexOf(lcKeyword, i+1);
    if (i < 0)
    {
      newHtmlText += htmlText;
      htmlText = "";
    }
    else
    {
      if (htmlText.lastIndexOf(">", i) >= htmlText.lastIndexOf("<", i)) 
        if (lcHtmlText.lastIndexOf("/script>", i) >= lcHtmlText.lastIndexOf("<script", i))
          if (lcHtmlText.lastIndexOf("/nokeyword>", i) >= lcHtmlText.lastIndexOf("<nokeyword", i))
          {
            highlightStartTag = "<font class=\"keyword" +index +"\" >";
            var editedText = htmlText.substring(0, i) + highlightStartTag + htmlText.substr(i, keyword.length) + highlightEndTag;
            newHtmlText += editedText;
            htmlText = htmlText.substr(i + keyword.length);            
            lcHtmlText = htmlText.toLowerCase();            
            i = -1;
            if (i < 0)
            {
              newHtmlText += htmlText;
              htmlText = "";
            }
          }
    }          
  }  
  return newHtmlText;
}

function highlightKeywords(elemId, keywords)
{
  var searchBlock = $(elemId);
  var keywordArray = keywords.split(" ");
  keywordArray = keywordArray.sort(function(a,b)  
  {
    if (a.length < b.length)
      return 1;
    else if (a.length > b.length)
      return -1;
    else
      return 0;
  });  
  var childrenElem = searchBlock.descendants();
  
  for(var i=0; i<childrenElem.length; i++)
  {            
    for (var j = 0; j < keywordArray.length; j++) 
    {
      if (isBrowserIE())
      {
        var html = childrenElem[i].outerHTML;
        var editedHtml = doHighlight(html, keywordArray[j], j);
        childrenElem[i].outerHTML = editedHtml;
      }
      else
      {
        var html = childrenElem[i].innerHTML;
        var editedHtml = doHighlight(html, keywordArray[j], j);
        childrenElem[i].innerHTML = editedHtml;
      }            
    }        
  }
  return true;
}

function menuItemHover(srcName)
{
  var src = document.getElementById(srcName);
  src.className = "mainMenuItemHighlight";
}

function menuItemNormal(srcName)
{
  var src = document.getElementById(srcName);
  src.className = "mainMenuItem";
}

function menuItemOpen(srcName)
{		  
  var currentMenu = document.getElementById(srcName);
  menuItemClose(prevMenuItemOpened);
  
	//if you click on the same menuItem, it will just close it.
  if (currentMenu != prevMenuItemOpened)
	{
	  var subMenu = document.getElementById(srcName +"_sub");	
	  subMenu.style.display = "block";
	  
	  prevMenuItemOpened = currentMenu;
  }
  else
  {  
	  //since you clicked on the same menu item (closing it)
	  //there is no previously opened menuItem.
	  prevMenuItemOpened = null;
  }
	
}

function menuItemClose(menuItem)
{	  	  
  if(menuItem != undefined)	    
  {	    
		var subMenu = document.getElementById(menuItem.id +"_sub");
    subMenu.style.display = "none";			
  }
  else
  {
  }
}

function subMenuItemHover(srcName)
{
  var subMenuItem = document.getElementById(srcName);	
  subMenuItem.className = "subMenuItemHighlight";
}

function subMenuItemNormal(srcName)
{
  var subMenuItem = document.getElementById(srcName);	
  subMenuItem.className = "subMenuItem";
}

function subMenuItemClick(srcName)
{
}

//-------------- Start Action Buttons --------------//
function actionButtonHover(srcName)
{
  var src = document.getElementById(srcName);
  src.className = "actionButtonHover";
}

function actionButtonNormal(srcName)
{
  var src = document.getElementById(srcName);
  src.className = "actionButtonNormal";
}  
//-------------- End Action Buttons --------------//
function gotoUrl(url)
{
  document.location = url;
}

//-------------- Start Tab --------------//
function preSelectTab(tabName, render)
{    
  var mainId = tabName.substring(0,tabName.indexOf("_")); 
  var selectedTabName = $F(mainId+"_selectedTabName");
  
  //do nothing if you click on the same tab.
  if (tabName == selectedTabName)
  	return;
  	  	  
  var previousSelectedTab = $(selectedTabName);
  //put the selectedTabName into the prevSelectedTabName  
  $(mainId +"_prevSelectedTabName").value = selectedTabName;    
  
  unselectTab(previousSelectedTab);  
  var currentTab = $(tabName);  
  currentTab.className="tabSelected"

  $(mainId +"_selectedTabName").value = currentTab.id;  
  var currentTabPanel = document.getElementById(tabName +"Panel");
  $(currentTabPanel).show();
  selectTab(tabName, render);
}

function unselectTab(tab)
{
  tab.className = "tabUnselected";
  $(tab.id +"Panel").hide();
}
//-------------- End Tab --------------//

