/*
Variable Declaration
*/


var scrollHeight = 25;
var current = 1;
var previous = 0;
var timer = 0;
var usePopUpWindow = false;

String.prototype.trim = function() { return this.replace(/^\s+|\s+$/g, ''); }

function getElementById( pElementId ) {
  if ( document.getElementById ) {
    return document.getElementById( pElementId );
  } else if ( document.all ) {
    return document.all[ pElementId ];
  } else {
  return null;
  }
}

function getParentElementById(parent, pElementId ) {
  if ( parent.getElementById ) {
    return parent.getElementById( pElementId );
  } else if ( parent.all ) {
    return parent.all[ pElementId ];
  } else {
  return null;
  }
}

function getCssByStyle(styleName) {
  if (document.styleSheets) {
    for (var i = document.styleSheets.length - 1; i >= 0; i--) {
      var styleSheet = document.styleSheets[i];
      var rules;
      if (styleSheet.cssRules) {
        rules = styleSheet.cssRules;
      } else if (styleSheet.rules) {
        rules = styleSheet.rules;
      }
      
      if (rules) {
        for (var j = rules.length - 1; j >= 0; j--) {
          if (rules[j].selectorText == styleName) {
            return rules[j].style;
          }
        }
      }
    }
    return null;
  }
  else {
    return null;
  }
}


function popInfo(elementId) {
  var wDiv = getElementById(elementId);
  var wBlank = getElementById('pop_blank');
  
  if (wDiv != null) {
      wDiv.style.display= "block";
  }
  if (wBlank != null) {
      wBlank.style.display= "none";
  }
}
function unpopInfo(elementId) {
  var wDiv = getElementById(elementId);
  var wBlank = getElementById('pop_blank');
  if (wDiv != null) {
      wDiv.style.display= "none";
  }
  if (wBlank != null) {
      wBlank.style.display= "inline";
  }
}

function popInfoParent(elementId,parent) {
  var wDiv = getElementById(elementId);
  var wBlank = getElementById('pop_blank');
  var maxY = document.body.scrollTop + document.body.clientHeight; 
  var d = document; 
  var rootElm = (d.documentElement && d.compatMode == 'CSS1Compat') ? d.documentElement : d.body; 
//  alert ();
  if (wDiv != null) {
      wDiv.style.display= "block";
      var newX = findPosX(parent);
      var posY = findPosY(parent);
      
      var posY = rootElm.scrollTop + (window.innerHeight - wDiv.offsetHeight ) /2;
      var newY = findPosY(parent);
      
      // Validation
      var topPos = rootElm.scrollTop;
      var bottomPos = rootElm.scrollTop + window.innerHeight;
      if ( newY + wDiv.offsetHeight > bottomPos) {
        newY = bottomPos - wDiv.offsetHeight;
      }
      if ( newY <  topPos) {
        newY = topPos;
      }
      
      wDiv.style.left = newX;
      wDiv.style.top = newY;
      
  }
  if (wBlank != null) {
      wBlank.style.display= "none";
  }
}


function findPosX(obj)
{
	var curleft = 0;
	if (obj.offsetParent)
	{
		while (obj.offsetParent)
		{
			curleft += obj.offsetLeft
			obj = obj.offsetParent;
		}
	}
	else if (obj.x)
		curleft += obj.x;
	return curleft;
}

function findPosY(obj)
{
	var curtop = 0;
	if (obj.offsetParent)
	{
		while (obj.offsetParent)
		{
			curtop += obj.offsetTop
			obj = obj.offsetParent;
		}
	}
	else if (obj.y)
		curtop += obj.y;
	return curtop;
}

function paddingFixForIE(element, value) {
    if(navigator.appName == "Microsoft Internet Explorer") {
        element.style.marginLeft = value;
      }
}

function showYearAnnoncement() {
    getElementById('yearDiv').style.display='block';
    getElementById('displayMore').style.display='none';
    getElementById('displayLess').style.display='block';
}
function hideYearAnnoncement() {
    getElementById('yearDiv').style.display='none';
    getElementById('displayMore').style.display='block';
    getElementById('displayLess').style.display='none';
}

function displayWithIncrem(sourceArray, number, increm, prefix) {
   var old = current;
    if (increm) {
        current = current + number;
    } else {
        current = number;
    }
    
    if (current > sourceArray.length) {
       current = current - sourceArray.length;
    }else if (current < 1) {
       current = current + sourceArray.length;
    }
    window.status ='Picture ' + current + ' of ' + sourceArray.length;
    getElementById('imageSequence').src = sourceArray[current-1].src;
    var wImageBox = getElementById('imageBox');
    if (wImageBox != null) {
      getElementById('imageBox').innerHTML = current + " out of " + sourceArray.length;
    }

    var oldDesc = getElementById('seqDescr' + old);
    if (oldDesc == null) {
        oldDesc = getElementById('progDescr' + old);
    }
    oldDesc.style.display = 'none';

    getElementById(prefix + current).style.display = 'block';
}

function display(number) {
    displayWithIncrem(imagesArray,number,true,'seqDescr');
}

function displayTapeDelta(number) {
    var old = current;
    displayWithIncrem(imagesArray,number,true,'seqDescr');
    setTape('imageseq','imageseq',old,'seq');
}

function displayTape(number) {
    var old = current;
    displayWithIncrem(imagesArray,number,false,'seqDescr');
    setTape('imageseq','imageseq',old,'seq');
}

function displayArtTape(number) {
    var old = current;
    displayWithIncrem(imagesArray,number,false,'seqDescr');
    setTape('imageseq','progseq',old,'art');
}

function displayProgTape(number) {
    var old = current;
    displayWithIncrem(progImagesArray,number,false,'progDescr');
    setTape('progseq','imageseq',old,'art');
}
function setTape(prefix,prefix2,old,stylePrefix) {

    var img = getElementById(prefix + current);
    var imgOld = getElementById(prefix + old);
    var imgOld2 = getElementById(prefix2 + old);
    var box = getElementById(prefix+'0');
    if (img != null) {
        if (box.scrollTop > img.offsetTop)  {
            box.scrollTop = img.offsetTop;
        } else if (box.scrollTop + box.offsetHeight < img.offsetTop + img.height + scrollHeight) {
            box.scrollTop = img.offsetTop  - box.offsetHeight + img.height + scrollHeight;
        }
        var selectedStyleName = '.' + stylePrefix + 'SelectedBox';
        var unselectedStyleName = '.' + stylePrefix + 'UnSelectedBox';
        if (imgOld != null) {
            imgOld.style.border = getCssByStyle(unselectedStyleName).border;
        }
        if (imgOld2 != null) {
            imgOld2.style.border = getCssByStyle(unselectedStyleName).border;
        }    
                        
        img.style.border= getCssByStyle(selectedStyleName).border;

    }
}
function slide(status) {
    if ((status == 1) && (timer == 0)) {
      timer = setInterval('display(+1)',500);
    }
    if (status == 0) {
      clearInterval(timer);
      timer = 0;
    }
}

function slideTape(status) {
    if ((status == 1) && (timer == 0)) {
      timer = setInterval('displayTapeDelta(+1)',500);
    }
    if (status == 0) {
      clearInterval(timer);
      timer = 0;
    }
}
function change(image, img1, img2) {
    if (image.src.indexOf(img1) > -1) {
        image.src = img2;
    } else {
        image.src = img1;
    }
}

function openSelector(url, targetSelectorName) {
    var windowFrame = null;
    if (usePopUpWindow) {
        windowFrame = openSelectorWindow(url,640,480);
    } else {
        windowFrame = loadwindow(url,640,480);
    }
    
    targetSelector = getElementById(targetSelectorName);
}

function openAll(url, targetSelectorName) {
    var select = getElementById(targetSelectorName);
    for (var i=0;i<select.length;i++) {
        var curOption = select.options[i];
        var urlToOpen = url + curOption.value;
        var newWindow = window.open(urlToOpen);

        if (newWindow == null) {
            alert("Warning: The selector wasn't opened. Make sure there is no pop-up blocker active.");
            return;
        }
    }
}

function openSelected(url, targetSelectorName) {
    var select = getElementById(targetSelectorName);
    for (var i=0;i<select.length;i++) {
        var curOption = select.options[i];
        if (curOption.selected) {
            var urlToOpen = url + curOption.value;
            var newWindow = window.open(urlToOpen);
    
            if (newWindow == null) {
                alert("Warning: The selector wasn't opened. Make sure there is no pop-up blocker active.");
                return;
            }
        }
    }
}

function openSelectorWindow(url,width,height) {
    selector = window.open(url,'selector','width=' + width + ',height=' + height);
    
    if (selector == null) {
        alert("Warning: The selector wasn't opened. Make sure there is no pop-up blocker active.");
        return;
    }
    
    if (!selector.opener) {
         selector.opener = self;
    }
    return selector;
}

function selectorSearch(searchBox, selectBox) {
    var search = getElementById(searchBox).value.toLowerCase();
    var select = getElementById(selectBox);
    
    for (var i=0;i<select.length;i++) {
        var option = select[i];
        if (option.text.toLowerCase().indexOf(search) == 0) {
                select.selectedIndex = i;
            return;
        }
    }
}

function addFromSelector(selectorName) {
    var select = getElementById(selectorName);
    var frameWindow = opener;
    if (frameWindow == null) {
       frameWindow = top;       
    }
    var targetSelect = frameWindow.targetSelector;
    if (targetSelect.size == 1) {
        while (targetSelect.options.length > 0) {
          targetSelect.remove(targetSelect.options[0]);
        }
    
        var curOption = select.options[select.selectedIndex];
        try {
          targetSelect.add(new Option(curOption.text,curOption.value),null);
        } catch (exception) {
          targetSelect.add(new Option(curOption.text,curOption.value));
        }
    } else {
       for (var i=0;i<select.length;i++) {
        var curOption = select.options[i];
        if (curOption.selected) {
            if (!selectContain(targetSelect,curOption)) {
                try {
                  targetSelect.add(new Option(curOption.text,curOption.value),null);
                } catch (exception) {
                  targetSelect.add(new Option(curOption.text,curOption.value));
                }
            } else {
                alert(curOption.text + ' is already in the list.');
            }
        }
      }
    }

}

function selectContain(select, option) {
    for (var i=0;i<select.length;i++) {
        if (select.options[i].value == option.value) {
            return true;
        }
    }
    return false;
}

function removeFromSelector(selectorName) {
    var select = getElementById(selectorName);
    var removed = false;
    do {
        removed = false;
        for (var i=0;i<select.length;i++) {
            if (select.options[i].selected) {
                select.remove(i);
                removed = true;
                break;
            }
        }
    
    } while (removed);

    
}

function getSelectedValue(select) {
    return select.options[select.selectedIndex].value;
}
function getSelectedText(select) {
    return select.options[select.selectedIndex].text;
}


function selectAll(selectName) {
    var select = getElementById(selectName);
    for (var i=0;i<select.length;i++) {
        select.options[i].selected=true;
    }
}


//DHTML Window script- Copyright Dynamic Drive (http://www.dynamicdrive.com)
//For full source code, documentation, and terms of usage,
//Visit http://www.dynamicdrive.com/dynamicindex9/dhtmlwindow.htm

var dragapproved=false;
var minrestore=0;
var initialwidth,initialheight;
var ie5=document.all&&document.getElementById;
var ns6=document.getElementById&&!document.all;

function iecompattest(){
    return (!window.opera && document.compatMode && document.compatMode!="BackCompat")? document.documentElement : document.body;
}

function drag_drop(e) {
    if (ie5&&dragapproved&&event.button==1){
        document.getElementById("dwindow").style.left=tempx+event.clientX-offsetx+"px";
        document.getElementById("dwindow").style.top=tempy+event.clientY-offsety+"px";
    }
    else if (ns6&&dragapproved) {
        document.getElementById("dwindow").style.left=tempx+e.clientX-offsetx+"px";
        document.getElementById("dwindow").style.top=tempy+e.clientY-offsety+"px";
    }
}

function initializedrag(e) {
    offsetx=ie5? event.clientX : e.clientX;
    offsety=ie5? event.clientY : e.clientY;
    document.getElementById("dwindowcontent").style.display="none"; //extra
    tempx=parseInt(document.getElementById("dwindow").style.left);
    tempy=parseInt(document.getElementById("dwindow").style.top);
    
    dragapproved=true;
    document.getElementById("dwindow").onmousemove=drag_drop;
}

function loadwindow(url,width,height) {
    if (!ie5&&!ns6)
       return window.open(url,"","width=width,height=height,scrollbars=1");
    else{
        document.getElementById("dwindow").style.display='';
        document.getElementById("dwindow").style.width=initialwidth=width+"px";
        document.getElementById("dwindow").style.height=initialheight=height+"px";
        var posX = (document.body.clientWidth-width)/2;
        document.getElementById("dwindow").style.left=posX+"px";
        document.getElementById("dwindow").style.top=ns6? window.pageYOffset*1+30+"px" : iecompattest().scrollTop*1+30+"px";
        document.getElementById("cframe").src=url;
        return document.getElementById("cframe");
    }
}

function maximize() {
    if (minrestore==0) {
        minrestore=1 //maximize window
        document.getElementById("maxname").style.display='none';
        document.getElementById("minname").style.display='inline';
        document.getElementById("dwindow").style.width=ns6? window.innerWidth-20+"px" : iecompattest().clientWidth+"px";
        document.getElementById("dwindow").style.height=ns6? window.innerHeight-20+"px" : iecompattest().clientHeight+"px";
    }
    else {
        minrestore=0; //restore window
        document.getElementById("maxname").style.display='inline';
        document.getElementById("minname").style.display='none';
        document.getElementById("dwindow").style.width=initialwidth;
        document.getElementById("dwindow").style.height=initialheight;
    }
    document.getElementById("dwindow").style.left=ns6? window.pageXOffset+"px" : iecompattest().scrollLeft+"px";
    document.getElementById("dwindow").style.top=ns6? window.pageYOffset+"px" : iecompattest().scrollTop+"px";
}

function closeit() {
var frameWindow = opener==null?top:opener;
if (frameWindow != null) {
    frameWindow.getElementById("dwindow").style.display="none";
    frameWindow.getElementById("cframe").src='about:blank';
} else {
    document.getElementById("dwindow").style.display="none";
    document.getElementById("cframe").src='about:blank';
}
}

function stopdrag() {
    dragapproved=false;
    document.getElementById("dwindow").onmousemove=null;
    document.getElementById("dwindowcontent").style.display=""; //extra
}


function toggleSelectedImage(pImage,pButton) {
    var wName = pImage.name;
    wName =  wName.replace("_",".");
    var wInput = getElementById(wName);
    if (wInput.value == 'false') {
        wInput.value = 'true';
        pImage.className = 'selected';
        toDeleteCount++;
    } else {
        wInput.value = 'false';
        pImage.className = '';
        toDeleteCount--;
    }

}

function toggle(nameOn,nameOff) {
    getElementById(nameOn).style.display='block';
    getElementById(nameOff).style.display='none';
}

function toggleSection(sectionOn) {

    if (sectionsToClose == null ) {
        return;
    }
    for ( var i=0; i< sectionsToClose.length ; i++ ) {
        getElementById(sectionsToClose[i]).style.display='none';
    }
    getElementById(sectionOn).style.display='block';
    
}

function submitFormCrud(form) {

    var elements = form.elements;
    
    for (var i=0; i< elements.length; i++) {
       if (elements[i].type.indexOf("select") == 0 && elements[i].multiple && elements[i].name.indexOf("Select_" == 0) ) {
          selectAll(elements[i].id);
       }
    }
    form.submit();
}
function addField(form,prefixes) {
  curValue++;
  
  for (var i=0;i<prefixes.length;i++) {
    var selector = getElementById(prefixes[i] + '0');
    var clone = selector.cloneNode(true,form);
    clone.id = prefixes[i] + curValue;
    form.appendChild( clone);
  }

  form.appendChild(document.createElement('br'));
}

function setSelectorNames(selector,prefixes,suffixes) {
    var id = selector.id;
    for (var i=0;i<prefixes.length;i++) {
        getElementById(prefixes[i] + id).name = selector.value + suffixes[i];
    }
}
function validateDelete(form) {
    var result = confirm("Do you really want to delete this item?");
    
    if (result == true) {
        form.submit();
    }
}

function setCurrentTime(selectorBaseName) {
    var wDate = new Date();
    
    var yearEl = getElementById(selectorBaseName + '.year');
    if (yearEl != null) {
        setDateValue(yearEl,wDate.getFullYear());
    }
    
    var monthEl = getElementById(selectorBaseName + '.month');
    if (monthEl != null) {
        setDateValue(monthEl,wDate.getMonth());
    }
    
    var dayEl = getElementById(selectorBaseName + '.day');
    if (dayEl != null) {
        setDateValue(dayEl,wDate.getDate());
    }
    
    var hourEl = getElementById(selectorBaseName + '.hour');
    if (hourEl != null) {
        setDateValue(hourEl,wDate.getHours());
    }
    
    var minuteEl = getElementById(selectorBaseName + '.minute');
    if (minuteEl != null) {
        setDateValue(minuteEl,wDate.getMinutes());
    }
    
    var secondEl = getElementById(selectorBaseName + '.second');
    if (secondEl != null) {
        setDateValue(secondEl,wDate.getSeconds());
    }
}

function setDateValue(selectObject, value) {
    var options = selectObject.options;
    for (var i=0; i< options.length; i++) {
      var opt = options[i];
      if ( parseInt(opt.value) == parseInt(value)) {
          opt.selected = true;
          return;
      }
    }
}

function hide (id) {
    var el = getElementById(id);
    if (el != null) {
        el.style.display='none';
    }
}
function show(id) {
    var el = getElementById(id);
    if (el != null) {
        el.style.display='block';
    }
}

function checkAll(selector) {

  var selections = selector.form.elements;

  for (var i=0; i < selections.length; i++) {
      var select = selections[i];

      if (select.type == 'checkbox') {
          select.checked = selector.checked;
      }
  }
}

function submitArtUpload(selector,toDisplay,id) {
    if (selector.value.length > 0) {
        getElementById(toDisplay).style.display='block';
        setInterval('rotateDots(\'' + id +'\')',250);
        selector.form.submit();
    }
}
function rotateDots(id) {
    var el = getElementById(id);
    var loop = el.innerHTML.length;

    if (loop == 10) {
        loop = 0;
    } else {
    loop++;
    }
    var text = '';
    for (var i=0; i< loop;i++) {
        text = text + '.';
    }
    el.innerHTML= text;
}

function selectGalleries(selector,name) {
    var options = selector.options;
    
    for (var i=0; i< options.length; i++) {
       var option = options[i];
       var selectorChild = getElementById('Select' + option.value);
       if (selectorChild == null || selectorChild == selector) {
           continue;
       }
       if (i == selector.selectedIndex) {
            selectorChild.style.display='inline';
            selectorChild.disabled=false;
            selectorChild.selectedIndex=-1;
       } else {
           unselectRecur(selectorChild);
       }
    }
    
    if (selector.selectedIndex > 0) {
       
        var text = getElementById('SelectText');
        
        var pos=1;
        var button = null;
        
        var input = getElementById(name);
        do {
           input.value=getSelectedValue(selector);
        } while ((input = getElementById(name + pos++)) != null );
        
        pos=1;
        if (text != null) {
            text.innerHTML = getSelectedText(selector);
        }

        while ((button = getElementById('SelectButton' + pos++)) != null) {
               button.disabled= false;
        }
        
        var img = getElementById('SelectImg');
        if (img != null) {
          var hash = 'Thumb' + getSelectedValue(selector);
          var filename = thumbArray[hash];
          if (filename == null) {
              img.src=thumbArray['Thumbnull'];
          } else {
              img.src=filename;
          }
        }
        
    } else {
         var pos=1;
         var button = null;
         while ((button = getElementById('SelectButton' + pos++)) != null) {
             button.disabled= true;
         }
    }
    

    if (selector.selectedIndex == 0) {
        var galName = prompt('Enter the name of the new gallery.');
        if (galName != null) {
            var input = getElementById('GalleryId');
            input.value=getSelectedValue(selector);
            input = getElementById('GalleryName');
            input.value=galName;
            
            input.form.submit();
            
        }
    }
}

function selectCategories(selector) {
    var options = selector.options;
    
    for (var i=0; i< options.length; i++) {
       var option = options[i];
       var selectorChild = getElementById('Select' + option.value);
       if (selectorChild == null || selectorChild == selector) {
           continue;
       }
       if (i == selector.selectedIndex) {
            selectorChild.style.display='inline';
            selectorChild.disabled=false;
            selectorChild.selectedIndex=-1;
       } else {
           unselectRecur(selectorChild);
       }
    }
    
    if (selector.selectedIndex > -1) {
        var text = getElementById('SelectText');
        
        var pos=1;
        var button = null;
        
        if (text != null) {
            text.innerHTML = getSelectedText(selector);
        }

        while ((button = getElementById('SelectButton' + pos++)) != null) {
               button.disabled= false;
        }
    } else {
         var pos=1;
         var button = null;
         while ((button = getElementById('SelectButton' + pos++)) != null) {
             button.disabled= true;
         }
    }
}

function unselectRecur(selector) {
    selector.style.display='none';
    selector.disabled=true;
    
    var options = selector.options;
    for (var i=0; i< options.length; i++) {
        var option = options[i];
        var selectorChild = getElementById('Select' + option.value);
        if (selectorChild != null && selector != selectorChild) {
            unselectRecur(selectorChild);
        }
    }
}

function selectFromHierarchyFlat(selectorName) {
    var selector = getElementById(selectorName);
    var option = null;
    while (selector.selectedIndex > -1) {
       var name = 'Select' + selector.options[selector.selectedIndex].value;
       var newSelector =  getElementById(name);
       if (newSelector != null && newSelector.selectedIndex > -1  && newSelector != selector) {
           selector = newSelector;
       } else {
           break;
       }
    }
    var option = selector.options[selector.selectedIndex];
    
    addSelectorOption(option.text,option.value);
}

function addFromHierarchyFlat(selectorName) {
    var selector = getElementById(selectorName);
    var option = null;
    while (selector.selectedIndex > -1) {
       var name = 'Select' + selector.options[selector.selectedIndex].value;
       var newSelector =  getElementById(name);
       if (newSelector != null && newSelector.selectedIndex > -1 ) {
           selector = newSelector;
       } else {
           break;
       }
    }
    var select = selector;
    
    
    var frameWindow = opener;
    if (frameWindow == null) {
       frameWindow = top;       
    }
    var targetSelect = frameWindow.targetSelector;
    var curOption = selector.options[selector.selectedIndex];
    if (!selectContain(targetSelect,curOption)) {
        if (curOption.value == '') {
            alert('Please select a value');
        } else {
            try {
              targetSelect.add(new Option(curOption.text,curOption.value),null);
            } catch (exception) {
              targetSelect.add(new Option(curOption.text,curOption.value));
            }
        }

    } else {
        alert(curOption.text + ' is already in the list.');
    }
} 

function addSelectorOption(text,value) {
    var frameWindow = opener;
    if (frameWindow == null) {
       frameWindow = top;       
    }
    var targetSelect = frameWindow.targetSelector;
    while (targetSelect.options.length > 0) {
        targetSelect.remove(targetSelect.options[0]);
    }
    try {
      targetSelect.add(new Option(text,value),null);
    } catch (exception) {
      targetSelect.add(new Option(text,value));
    }
    
}


function selectFromUrl(value) {
    var frameWindow = opener;
    if (frameWindow == null) {
       frameWindow = top;       
    }
    var targetSelect = frameWindow.targetSelector;
    targetSelect.value = value;
    targetSelect.form.submit();
}

function getXMLHttpRequest() {
   var obj;
    try {
      // For Internet Explorer.
      obj = new ActiveXObject('Microsoft.XMLHTTP');
    }
    catch(e) {
      try {
        // Gecko-based browsers, Safari, and Opera.
        obj = new XMLHttpRequest();
      }
      catch (e) {
        // Browser supports Javascript but not XMLHttpRequest.
        obj = false;
      }
    }
    return obj;
}


function renderCrypto(valueName, imageName) {
    var url = '/user.crypto.request?';
    var request = getXMLHttpRequest();
    function renderCryptoFct() {
    if (request.readyState == 4)
       try { 
          if (request.status == 200) {
             var value = getElementById(valueName);
             var image = getElementById(imageName);
             var xml = request.responseXML;
             image.src = xml.getElementsByTagName('CryptoImageUrl')[0].firstChild.nodeValue.trim();
             value.value = xml.getElementsByTagName('CryptoSource')[0].firstChild.nodeValue.trim();

          }
       } catch (e) {
          alert(e);
       }
    }
   
    request.open('get', url ,true);
    request.onreadystatechange = renderCryptoFct ;
    request.send(null);

}


function getXMLNodeSerialisation(xmlNode) {
  var text = false;
  try {
    // Gecko-based browsers, Safari, Opera.
    var serializer = new XMLSerializer();
    text = serializer.serializeToString(xmlNode);
  }
  catch (e) {
    try {
      // Internet Explorer.
      text = xmlNode.xml;
    }
    catch (e) {}
  }
  return text;
}

function toogleCheckboxSelection(parentDivName,prefix,enabled) {

var div = getElementById(parentDivName);

for (var i =0 ; i < 33 ; i++ ) {
   var check = getElementById(prefix + i);
   if (check != null) {
     check.disabled = !enabled;
   }
}

if (enabled) {
    div.style.display='block';
} else {
    div.style.display='none';
}
}

function displayPreviewComment(contentName) {

    var url = '/generic.comment.preview';
    var request = getXMLHttpRequest();
    function renderCommentFct() {
    if (request.readyState == 4)
       try { 
          if (request.status == 200) {
             var divTag = getElementById('_commentPreview');
             var xml = request.responseXML;
             divTag.innerHTML=  xml.getElementsByTagName('Comment')[0].firstChild.nodeValue.trim() ;
             var div;

             div = getElementById('_commentInput');
             div.style.display='none';
    
             div = getElementById('_buttonPreview');
             div.style.display='none';
    
             div = getElementById('_buttonEdit');
             div.style.display='inline';

             div = getElementById('_commentPreview');
             div.style.display='block';

          }
       } catch (e) {
          alert(e);
       }
    }
   
    request.open('post', url ,true);
    request.setRequestHeader('Content-type','application/x-www-form-urlencoded');
    
    request.onreadystatechange = renderCommentFct;
    
    var textArea = getInputByName(contentName);
    var postValue ='Comment.Value=' + encodeURIComponent(textArea.value);
    request.send(postValue);
}

function displayEditComment () {
    var div;
    div = getElementById('_commentInput');
    div.style.display='block';
    
    div = getElementById('_buttonPreview');
    div.style.display='inline';
    
    div = getElementById('_commentPreview');
    div.style.display='none';
    div.innerHTML='';
    
    div = getElementById('_buttonEdit');
    div.style.display='none';
}


function getInputByName(inputName) {

      var forms = document.forms;

      for (var f = 0 ; f < forms.length; f++) {
        var elements = forms[f].elements;
        for (var e = 0; e < elements.length;e++) {
            var element = elements[e];
            if (element.name == inputName) {
                return element;
            }
        }
      }
      return null;
}

function getErrorImage(errorCode) {

    var url = '/error/error.xml';
    var request = getXMLHttpRequest();
    function setImageFct() {
    if (request.readyState == 4)
       try { 
          if (request.status == 200) {
             var xml = request.responseXML;
             var contextNode = xml.firstChild
             var images = xml.selectNodes("/errors/error[@type='"+errorCode+"']/image");     
             if (images.length == 0 ) {
                 return;
             }
             var image = images[Math.floor(Math.random() * images.length)];
             var imgElem = getElementById('errorImg');
             var authorElem = getElementById('author');
             
             var file="/error/" + getNodeValue(image.selectNodes('file')[0]);
             var artist=getNodeValue(image.selectNodes('artist')[0]);
             var url =getNodeValue(image.selectNodes('url')[0]);

             imgElem.src = file;
             if (url != null) {
                          authorElem.innerHTML = "Image by <a href=\""+ url + "\">" + artist + "</a>.";
             } else {
                          authorElem.innerHTML = "Image by "+ artist + "</a>.";
             }
          }
       } catch (e) {
          alert(e);
       }
    }
   
    request.open('get', url ,true);
    request.onreadystatechange = setImageFct;
    request.send(null);
}

function getError503Message(errorCode) {

    var url = '/error/error.xml';
    var request = getXMLHttpRequest();
    function setImageFct() {
    if (request.readyState == 4)
       try { 
          if (request.status == 200) {
             var xml = request.responseXML;
             var contextNode = xml.firstChild
             var message = xml.selectNodes("/errors/error[@type='"+errorCode+"']/Message");     
             if (message.length == 0 ) {
                 return;
             }
             var messsageTextElem = getElementById('messsageText');
             messsageTextElem.innerHTML = getNodeValue(message[0]);
          }
       } catch (e) {
          alert(e);
       }
    }
   
    request.open('get', url ,true);
    request.onreadystatechange = setImageFct;
    request.send(null);
}

function getNodeValue(node) {
    if (node.firstChild != null) {
        return node.firstChild.nodeValue.trim()
    } else {
        return null;
    }
}


if( document.implementation.hasFeature("XPath", "3.0") ){
 XMLDocument.prototype.selectNodes = function(cXPathString, xNode){
  if( !xNode ) {
   xNode = this;
  }
    
  var defaultNS = this.defaultNS;

  var aItems = this.evaluate(cXPathString, xNode,{
   normalResolver:
    this.createNSResolver(this.documentElement),
        lookupNamespaceURI : function (prefix) {
           switch (prefix) {
             case "dflt":
                return defaultNS;
             default:
                return this.normalResolver.lookupNamespaceURI(prefix);
           }
        }
      },XPathResult.ORDERED_NODE_SNAPSHOT_TYPE,null);

  var aResult = [];
  for( var i = 0; i < aItems.snapshotLength; i++){
           aResult[i] =  aItems.snapshotItem(i);
  }
  return aResult;
 }

 Element.prototype.selectNodes = function(cXPathString){
  if(this.ownerDocument.selectNodes){
   return this.ownerDocument.selectNodes(cXPathString, this);
  }else{
   throw "For XML Elements Only";
  }
 }

 /* set the SelectionNamespaces property the same for NN or IE: */
 XMLDocument.prototype.setProperty = function(p,v){
  if(p=="SelectionNamespaces" && v.indexOf("xmlns:dflt")==0){
   this.defaultNS = v.replace(/^.*=\'(.+)\'/,"$1");
  }
 }

 XMLDocument.prototype.defaultNS;

}

function updateClipList(isChecked,selection) {
 var selectionTFArray = new Array();
 var selectionSceneArray = new Array();
var selects = document.getElementsByTagName('select');
 if (selection == null ) {
	 for (var i=0;i<selects.length ;i++ )	 {

		var select = selects[i];
		if (select.name.indexOf('Show.TfClip')  == 0) {
			var index = select.name.substring('Show.TfClip.FilenameLong'.length);
			var checked = getElementById('Show.TfClip.Validated' + index).checked;
			if (checked) {
				var option = select.options[select.selectedIndex];
				selectionTFArray.push(option);
			}
		} else if (select.name.indexOf('Show.SceneClip')  == 0) {
			var index = select.name.substring('Show.SceneClip.FilenameLong'.length);
			var checked = getElementById('Show.SceneClip.Validated' + index).checked;
			if (checked) {
				var option = select.options[select.selectedIndex];
				selectionSceneArray.push(option);
			}

		} else {
			continue;
		}
	 }
 } else {
	var select = getElementById( selection);
	if (select.name.indexOf('Show.TfClip')  == 0 && isChecked) {
		var option = select.options[select.selectedIndex];
		selectionTFArray.push(option);
	} else if (select.name.indexOf('Show.SceneClip')  == 0 && isChecked) {
		var option = select.options[select.selectedIndex];
		selectionSceneArray.push(option);
	} else {
		return;
	}
 }

 var toAdd = isChecked != null && !isChecked.checked;

 for (var i=0;i<selects.length ;i++ )	 {
	var select = selects[i];
	if (select.name == selection) {
		continue;
	}

	if (select.name.indexOf('Show.TfClip')  == 0) {
		addRemoveOption(toAdd,select,selectionTFArray);
	} else if (select.name.indexOf('Show.SceneClip')  == 0) {
		addRemoveOption(toAdd,select,selectionSceneArray);
	} else {
		continue;
	}
 }
 updateClipCount();
}

function addRemoveOption(toAdd,select,options) {

	if (toAdd) {
		for (var i=0; i < options.length;i++ ) {
			var o = new Option();
			o.text = options[i].text;
			o.value = options[i].value;

			var selectedIndex = select.selectedIndex;
			select.add(o,null);
			select.selectedIndex = selectedIndex;
		}
	} else {

		for (var i=0; i < options.length;i++ ) {
			for (var j=select.length-1 ;j > 0; j-- ) {
				if (select.options[j].value == options[i].value) {
					select.remove(j);
				}
			}
		}
	}
}

function updateClipCount() {
	var inputs = document.getElementsByTagName('input');
	var totalTf = 0;
	var totalScene = 0;
	var totalTfSelected = 0;
	var totalSceneSelected=0

	 for (var i=0;i<inputs.length ;i++ )	 {

		var input = inputs[i];
		if (input.type != 'checkbox') {
			continue;
		}
		if (input.name.indexOf('Show.TfClip.Validated')  == 0) {
			totalTf++;
			if (input.checked) {
				totalTfSelected++;
			}

		} else if (input.name.indexOf('Show.SceneClip.Validated')  == 0) {
			totalScene++;
			if (input.checked) {
				totalSceneSelected++;
			}

		} else {
			continue;
		}
	 }

	 var countBlock = getElementById('countBlock');

	 if (countBlock == null) {
		 var tittleBox =  getElementById('titleBox');
		 countBlock = document.createElement('div');
		 countBlock.setAttribute('id', 'countBlock');
		 tittleBox.parentNode.insertBefore( countBlock, tittleBox.nextSibling );

	 }
	 countBlock.innerHTML="Tf Clips: " + totalTfSelected + " out of " + totalTf + ".<br/>Scene Clips: "+  totalSceneSelected + " out of " + totalScene + ".";
}