Type.registerNamespace('IFrameworks.UI');

IFrameworks.UI.setClass = function(obj, className)
{
  if (obj && obj.className!=className)
  {
    obj.className = className;
  }
};
  
IFrameworks.UI.expandCollapseRegion = function(expandedModeID, collapsedModeID) 
{
  var expandedMode = $get(expandedModeID);
  var collapsedMode = $get(collapsedModeID);

  if (!expandedMode || !collapsedMode) {
    return;
  }

  if (expandedMode.style.display == 'none') {
	  expandedMode.style.display = '';
	  collapsedMode.style.display = 'none';
  }
  else {
	  expandedMode.style.display = 'none';
	  collapsedMode.style.display = '';
  }
};

IFrameworks.UI.HTMLEncode = function(inputText)
{
   var div = document.createElement('div');
   var text = document.createTextNode(inputText);
   div.appendChild(text);
   return div.innerHTML;
};

IFrameworks.UI.formatText = function(inputText, maxLength)
{
    return IFrameworks.UI.HTMLEncode(IFrameworks.UI.formatTextNoEncode(inputText, maxLength));
};

IFrameworks.UI.formatTextNoEncode = function(inputText, maxLength)
{
    var inputValue = new Sys.StringBuilder(inputText);
    var resValue =  new Sys.StringBuilder();
        
    if (!inputValue.isEmpty())
    {
        var containAt = false;
        var wordLength = 0;

        for (var i = 0; i < inputText.length; i++)
        {
            resValue.append(inputText.charAt(i));
            switch (inputText.charAt(i))
            {
                case ' ': // word ended
                    {
                        wordLength = 0;
                        containAt = false;
                        break;
                    }
                case '@':
                    {
                        containAt = true;
                        break;
                    }
                case '.':
                case ',':
                case ';':
                    {
                        if (((i + 1) < inputText.length) && (inputText.charAt(i+1) != ' ') && (!containAt))
                        {
                            resValue.appendLine();
                        }

                        containAt = false;
                        wordLength = 0;
                        break;
                    }
                default:
                    {
                        wordLength++;
                        if (wordLength >= maxLength)
                        {
                            resValue.append(" ");
                            containAt = false;
                            wordLength = 0;
                        }
                        break;
                    }
            }
        }
    }

    return resValue.toString();
}

// Notify ScriptManager that this is the end of the script.
if (typeof(Sys) !== 'undefined') Sys.Application.notifyScriptLoaded();

function popup_view (url, w, h, wname) {
	var scr_left = 0;
	var scr_top = 0;
	
	// ie seems doesn't understand names with white spaces
	wname = wname.replace(/\s/ig, '_');
	
	var new_window = window.open (url, wname, 'location=0,menubar=0,resizable=1,scrollbars=1,status=0,toolbar=0,width='+w+',height='+h+',top='+scr_top+',left='+scr_left + '');
	new_window.focus();
	return new_window;
}

function showHideElement(elementID, elementHelperID, showClassName, hideClassName) {
  var element = document.getElementById(elementID);
  var elementHelper = document.getElementById(elementHelperID);
  if (!element || !elementHelper) 
  {
	  return;
  }

  if (element.style.display == 'none') {
		element.style.display = '';
		elementHelper.className = showClassName;		
	}
	else {
		element.style.display = 'none';
		elementHelper.className = hideClassName;
	}
}

function changeFileUploadLinkName(fileName, uploadClientID, fileNameLinkID, uploadButtonID, deleteButtonID, hiddenFieldID, fileBaseDirectory) {
  fileNameLink = document.getElementById(uploadClientID + fileNameLinkID);
  uploadButton = document.getElementById(uploadClientID + uploadButtonID);
  deleteButton = document.getElementById(uploadClientID + deleteButtonID);
  fileNameHiddenField = document.getElementById(uploadClientID + hiddenFieldID);
  if (fileNameLink != null && uploadButton != null && deleteButton != null && fileNameHiddenField != null) {
    fileNameHiddenField.value = fileName;
    fileNameLink.href = fileBaseDirectory + fileName;
    fileNameLink.innerHTML = fileName;
    uploadButton.style.display = 'none';
    deleteButton.style.display = 'block';
  }  
}

function checkSelection(checkName) {
	var checkCount = 0;
	var el = document.forms[0].elements;
	for (count = 0; count < el.length; count++)
	{	  
		if (el[count].name != null && el[count].name.indexOf(checkName) == 0)
		{
			//if (!el[count].disabled)
			{
				if (el[count].checked) {
			    checkCount++;				  
				}
			}
		}
	}
	if (checkCount == 0) {
	  alert('You must check any item!');
	}
  return checkCount;
}

function deleteConfirmation(checkName, entityTitle, itemsToDeleteFieldID) {
  var checkCount = checkSelection(checkName);
  if (checkCount == 0) {
    return false;
  }
  conrimationMessage = 'You are trying to delete selected item(s). \n\nAre you sure you wish to continue?'
  if (checkCount > 1) {
    conrimationMessage = 'You are trying to delete multiple ' + entityTitle + ' records. \n\nAre you sure you wish to continue?';
  }
  else {
    itemsToDeleteField = document.getElementById(itemsToDeleteFieldID);
    if (itemsToDeleteField != null) {
      conrimationMessage = 'You are trying to delete the ' + entityTitle + ' \'' + itemsToDeleteField.value + '\'. \n\nAre you sure you wish to continue?';
    }
  }
  if (!confirm(conrimationMessage)) {
    return false;
  }
  else {
    return true;
  }
}

var checkedCount = 0;

function updateCheckedCount(checkBox) {
  if (checkBox.checked) {
    checkedCount += 1;
  }
  else {
    checkedCount -= 1;  
  }
}

var allCheckedChildren = null;

function checkAllChild(id, checked, itemsToDeleteName, itemsToDeleteDelimeter) {
  var cell = document.getElementById('subItems' + id);
  if (cell != null) {  
    checkChild(cell, checked, itemsToDeleteName, itemsToDeleteDelimeter);
  }
}

function checkChild(element, checked, itemsToDeleteName, itemsToDeleteDelimeter) {
  if (element.tagName != 'TABLE' && element.tagName != 'TBODY' && element.tagName != 'TR' && element.tagName != 'TD' && element.tagName != 'DIV') {
    return;
  }
  if (element.childNodes != null) {
    var i = 0;
    for (i = 0; i < element.childNodes.length; i++) {
      if (element.childNodes[i].type == 'checkbox') {
        lastCheckState = element.childNodes[i].checked;
        element.childNodes[i].checked = checked;        
        element.childNodes[i].disabled = checked;
        if (element.childNodes[i - 1].type == 'hidden' && lastCheckState != checked) {
          itemTitle = element.childNodes[i - 1].value;
          if (checked) {
              document.forms[0].elements[itemsToDeleteName].value = addStringToSequance(document.forms[0].elements[itemsToDeleteName].value, itemTitle, itemsToDeleteDelimeter);
          }
          else {
              document.forms[0].elements[itemsToDeleteName].value = removeStringFromSequance(document.forms[0].elements[itemsToDeleteName].value, itemTitle, itemsToDeleteDelimeter);
          }            
        }        
      }
      checkChild(element.childNodes[i], checked, itemsToDeleteName, itemsToDeleteDelimeter);      
    }    
  }  
}

function removeStringFromSequance(sequance, value, delimiter) {
    result = '';
    valuesSet = sequance.split(delimiter);
    for (i = 0; i < valuesSet.length; i++) {
        if (valuesSet[i] != value) {
            result = addStringToSequance(result, valuesSet[i], delimiter);
        }
    }
    return result;
}

function addStringToSequance(sequance, value, delimiter) {
    if (sequance == null || sequance == '') {
        sequance = value;
    }
    else {
        sequance += delimiter + value;        
    }
    return sequance;
}

function CheckAll(formObj, checkName, checkVal){
	var el = formObj.elements;
	for (count = 0; count < el.length; count++)
		if (el[count].name == checkName + '[]')
			if (!el[count].disabled) el[count].checked = checkVal;
}

function ExamAll(formObj, checkName, resName){
	var checkCount = 0;
	var boxCount = 0;
	var el = formObj.elements;
	for (count = 0; count < el.length; count++)
		if (el[count].name == checkName + '[]'){
			boxCount++;
			if (el[count].checked || el[count].disabled) checkCount++;
		}
	formObj.elements[resName].checked = (checkCount == boxCount);
}

function CheckAll(checkName, checkVal)
{
	var checkCount = 0;
	var el = document.forms[0].elements;
	for (count = 0; count < el.length; count++)
	{	  
		if (el[count].name == checkName)
		{
			if (!el[count].disabled)
			{
				el[count].checked = checkVal;
			}
			checkCount++;
		}
	}
}

function ExamAll(checkName, resName)
{
	var checkCount = 0;
	var boxCount = 0;
	var el = document.forms[0].elements;
	
	for (count = 0; count < el.length; count++)
	{
		if (el[count].name == checkName)
		{
			boxCount++;
			if (el[count].checked || el[count].disabled) checkCount++;
		}
	}
	
	if (document.forms[0].elements[resName])
		document.forms[0].elements[resName].checked = (checkCount == boxCount);
}

function checkAllByPrefix(checkName, checkVal, itemsToDeleteName, itemTitleNamePrefix, itemsToDeleteDelimeter)
{
	var checkCount = 0;
	var el = document.forms[0].elements;
	document.forms[0].elements[itemsToDeleteName].value = '';
	for (count = 0; count < el.length; count++)
	{	  
		  if (el[count].name != null && el[count].name != '' && el[count].name.indexOf(checkName) == 0)
		  {
			    if (!el[count].disabled)
			    {
  				    el[count].checked = checkVal;
			    }
			    checkCount++;
		  }
		  if (el[count].name != null && el[count].name != '' && el[count].name.indexOf(itemTitleNamePrefix) == 0)
		  {
					if (checkVal) {
				      document.forms[0].elements[itemsToDeleteName].value = addStringToSequance(document.forms[0].elements[itemsToDeleteName].value, el[count].value, itemsToDeleteDelimeter);
				  }
		  }		  
	}
}

function checkByPrefix(checkName, checkAllName, itemsToDeleteName, chechedItem, itemTitleName, itemsToDeleteDelimeter)
{
	var checkCount = 0;
	var boxCount = 0;
	var el = document.forms[0].elements;
	
	for (count = 0; count < el.length; count++)
	{
		if (el[count].name != null && el[count].name.trim() != '' && el[count].name.indexOf(checkName) == 0)
		{
			boxCount++;
			if (el[count].checked || el[count].disabled)
			{
			    checkCount++;
      }
		}
	}
	
	if (document.forms[0].elements[checkAllName])
	{
			document.forms[0].elements[checkAllName].checked = (checkCount == boxCount);
  }
  
  if (checkCount == 0)
  {
      document.forms[0].elements[itemsToDeleteName].value = '';
  }
  else
  {
      if (chechedItem.checked) {
          document.forms[0].elements[itemsToDeleteName].value = addStringToSequance(document.forms[0].elements[itemsToDeleteName].value, document.forms[0].elements[itemTitleName].value, itemsToDeleteDelimeter);
      }
      else {
          document.forms[0].elements[itemsToDeleteName].value = removeStringFromSequance(document.forms[0].elements[itemsToDeleteName].value, document.forms[0].elements[itemTitleName].value, itemsToDeleteDelimeter);
      }
  }
  
  checkAllChild(chechedItem.id, chechedItem.checked, itemsToDeleteName, itemsToDeleteDelimeter);
}



function setBlockVisibility(hidePanelID, hideLinkID, hideImageID, imagePath, readCookie){
    hidePanel = document.getElementById(hidePanelID);
    hideLink = document.getElementById(hideLinkID);
    hideImage = document.getElementById(hideImageID);
    if(readCookie) {
      if(getCookie(hidePanelID) != null) {
        if(getCookie(hidePanelID) == 'none') {
          setShowButton(hidePanel, hideLink, hideImage, imagePath, hidePanelID);
        }
        else {
          setHideButton(hidePanel, hideLink, hideImage, imagePath, hidePanelID);
        }
      }
      else {
        setHideButton(hidePanel, hideLink, hideImage, imagePath, hidePanelID);
      }
    }
    else {
      if(hidePanel != null) {
        if(hidePanel.style.display == 'block') {
          setShowButton(hidePanel, hideLink, hideImage, imagePath, hidePanelID);
        }
        else {
          setHideButton(hidePanel, hideLink, hideImage, imagePath, hidePanelID);
        }
      }
    }
}

function setShowButton(hidePanel, hideLink, hideImage, imagePath, hidePanelID) {
  setBlockDetails(hidePanel, 'none', hideLink, 'Show these hints', hideImage, imagePath + 'show.gif', hidePanelID);
}

function setHideButton(hidePanel, hideLink, hideImage, imagePath, hidePanelID) {
  setBlockDetails(hidePanel, 'block', hideLink, 'Hide these hints', hideImage, imagePath + 'hide.gif', hidePanelID);
}

function setBlockDetails(hidePanel, hidePanelDisplay, hideLink, hideText, hideImage, imageSrc, cookieName) {
     hidePanel.style.display = hidePanelDisplay;
     hideLink.innerHTML = hideText;
     hideImage.src = imageSrc;
     hideImage.alt = hideText;
     time = new Date();
     time.setTime(new Date().getTime() + 30*24*60*60*1000);
     setCookie(cookieName, hidePanelDisplay , time, '/', null, null);
}

// name - cookie name
function getCookie(name)
{
        var prefix = name + "="
        var cookieStartIndex = document.cookie.indexOf(prefix)
        if (cookieStartIndex == -1)
                return null
        var cookieEndIndex = document.cookie.indexOf(";", cookieStartIndex + prefix.length)
        if (cookieEndIndex == -1)
                cookieEndIndex = document.cookie.length
        return unescape(document.cookie.substring(cookieStartIndex + prefix.length, cookieEndIndex))
}

// name - cookie name
// [path]
// [domain]
function deleteCookie(name, path, domain)
{
	if (getCookie(name))
	{
		document.cookie = name+"="+
                ((path) ? "; path=" + path : "") +
                ((domain) ? "; domain=" + domain : "") +
                "; expires=Thu, 01-Jan-70 00:00:01 GMT"
	}
}

// name - cookie name
// value - cookie value
// [expires] - Date object (by default cookie expires at the end of browser session)
// [path]
// [domain]
// [secure]
function setCookie(name, value, expires, path, domain, secure)
{
	var curCookie = name + "=" + escape(value) +
                ((expires) ? "; expires=" + expires.toGMTString() : "") +
                ((path) ? "; path=" + path : "") +
                ((domain) ? "; domain=" + domain : "") +
                ((secure) ? "; secure" : "")

	if ( (name + "=" + escape(value)).length <= 4000)
		document.cookie = curCookie
}

function setClass(obj, cl){
	if (obj != null && obj.className!=cl) {
	  obj.className = cl;
	}
}


function isIE() {
  return (navigator.userAgent.indexOf('MSIE') != -1 && navigator.userAgent.indexOf('Opera') == -1);
}

function isOpera() {
  return (navigator.userAgent.indexOf('Opera') != -1);
}

function isFirefox() {
  return (navigator.userAgent.indexOf('Firefox') != -1 && navigator.userAgent.indexOf('Opera') == -1);
}

function isMozila() {
  return (navigator.userAgent.indexOf('Mozila') != -1 && navigator.userAgent.indexOf('Opera') == -1 && navigator.userAgent.indexOf('MSIE') == -1);
}

function headerKeydownCMS(Url, Header, Postfix)
{
    var reg = /[\x21-\x2c\x2e\x3a-\x3c\x3e\x40\x5b-\x5e\x60\x7b\x7d\xa3]/ig;
    var regAnd = /&/ig;
    var regS = /[\s\x2f]/ig;

    var val = Trim(Header.value.toLowerCase()).replace(reg,"").replace(regAnd,"and").replace(regS,"-").replace(/\x2D{2,}/ig,'-');
    
    //Url.value = (val.length > 0) ? val + ".aspx" : "";
    Url.value = val + Postfix;
}

function LTrim(str)
{
  var whitespace = new String(" \t\n\r");
  var s = new String(str);
  if (whitespace.indexOf(s.charAt(0)) != -1) {
    var j=0, i = s.length;
    while (j < i && whitespace.indexOf(s.charAt(j)) != -1)
    j++;
    s = s.substring(j, i);
  }

  return s;
}

function RTrim(str)
{
  var whitespace = new String(" \t\n\r");

  var s = new String(str);

  if (whitespace.indexOf(s.charAt(s.length-1)) != -1) {

    var i = s.length - 1;      
    while (i >= 0 && whitespace.indexOf(s.charAt(i)) != -1)
      i--;
    s = s.substring(0, i+1);
  }

  return s;
}

function Trim(str)
{
  return RTrim(LTrim(str));
}

function URLEncode (clearString) {
  var output = '';
  var x = 0;
  clearString = clearString.toString();
  var regex = /(^[a-zA-Z0-9_.]*)/;
  while (x < clearString.length) {
    var match = regex.exec(clearString.substr(x));
    if (match != null && match.length > 1 && match[1] != '') {
    	output += match[1];
      x += match[1].length;
    } else {
      if (clearString[x] == ' ')
        output += '+';
      else {
        var charCode = clearString.charCodeAt(x);
        var hexVal = charCode.toString(16);
        output += '%' + ( hexVal.length < 2 ? '0' : '' ) + hexVal.toUpperCase();
      }
      x++;
    }
  }
  return output;
}

