/*------------------------------------------------------------------------------
 PROJECT       : TSA Library for PHP
 FILE          : functions.js
 DATE          : June 2007
 COPYRIGHT     : TSA Group Delft BV
 AUTHOR        : SH, GB
 LANGUAGE      : Javascript
 DESCRIPTION   : Javascript functions
-------------------------------------------------------------------------------
 Version info
 <Date, Author, Description>
-------------------------------------------------------------------------------
VERSION 1.0    SH Initial version
------------------------------------------------------------------------------*/

function AlertProperties(obj)
{
   var str = "";
   var arr = new Array();
   var i = 0;
   for(prop in obj)
   {
      arr[i] = prop +  " = " + obj[prop] + "\n";
      i++;
   }
   arr.sort();
   alert(arr);
}



function CheckFileName(filename)
{
   if (filename.indexOf("'") >= 0)
   {
      alert('Het opgegeven bestand "' + filename + '" bevat niet ondersteunde karakters.\n' +
         'Om dit bestand toch te kunnen gebruiken dient u het bestand een andere naam te geven.');
      return false;
   }
   else
   {
      return true;
   }
}

function OpenPopup(url, aHeight, aWidth )
{
   var ScreenWidth=window.screen.width;
   var ScreenHeight=window.screen.height;
   var movefromedge=0;
   var aLeft = (ScreenWidth/2)  - (aWidth/2);
   var aTop  = (ScreenHeight/2) - (aHeight/2);

   return window.open (url, '_blank',
      'width=' + aWidth + ', ' +
      'height=' + aHeight + ', ' +
      'location=no, ' +
      'status=no,' +
      'menubar=no, ' +
      'directories=no, ' +
      'toolbar=no, ' +
      'resizable=yes, ' +
      'scrollbars=yes,' +
      'left=' + aLeft + ', ' +
      'top=' + aTop);
}


function doNuhn() {}

function showDiv(divID_as_a_string, element) {
  myReference = document.getElementById(divID_as_a_string);
  if( !myReference ) {
    window.alert('Nothing works in this browser');
    return; //don't go any further
  }
  //now we have a reference to it
  if( myReference.style ) {
    //DOM & proprietary DOM
    myReference.style.visibility = 'visible';

  } else {
    //layers syntax
    myReference.visibility = 'show';
  }
  myReference.style.left = getX(event, element);
  myReference.style.top = getY(event, element);

}

function hideDiv(divID_as_a_string) {
        var myReference = document.getElementById(divID_as_a_string);
        if( !myReference ) { window.alert('Nothing works in this browser'); return; }
        if( myReference.style ) { myReference.style.visibility = 'hidden'; } else {
                if( myReference.visibility ) { myReference.visibility = 'hide'; } else {
                        window.alert('Nothing works in this browser'); return; } }
}

function mvDiv(divID_as_a_string) {
        var myReference = document.getElementById(divID_as_a_string), noPx = document.childNodes ? 'px' : 0;
        if( !myReference ) { window.alert('Nothing works in this browser'); return; }
        if( myReference.style ) { myReference = myReference.style; }
        if( parseInt(myReference.left) ) {
                window.alert('Sorry, I will not allow you to move this element too far,\ninstead I will reset it.');
                myReference.left = 0 + noPx; myReference.top = 0 + noPx; } else {
                myReference.left = 20 + noPx; myReference.top = 10 + noPx; }
}

function getX(event){
    return event.offsetX?(event.offsetX):event.pageX-document.getElementById(element).offsetLeft;
}

function getY(event){
    return event.offsetY?(event.offsetY):event.pageY-document.getElementById(element).offsetTop;
}

function point_it(event, sourceElement, elementNameToMove ){
    pos_x = event.offsetX?(event.offsetX):event.pageX-document.getElementById(sourceElement ).offsetLeft;
    pos_y = event.offsetY?(event.offsetY):event.pageY-document.getElementById(sourceElement ).offsetTop;
    document.getElementById(elementNameToMove ).style.left = (pos_x-1) ;
    document.getElementById(elementNameToMove ).style.top = (pos_y-15) ;
    document.getElementById(elementNameToMove ).style.visibility = "visible" ;
}

function displayDiv(divToDraw, displayBelowThisObject)
{
  var targetDateField = document.getElementById(displayBelowThisObject);

  var x = targetDateField.offsetLeft;
  var y = targetDateField.offsetTop + targetDateField.offsetHeight ;

  // deal with elements inside tables and such
  var parent = targetDateField;
  while (parent.offsetParent) {
    parent = parent.offsetParent;
    x += parent.offsetLeft;
    y += parent.offsetTop ;
  }

  var element = document.getElementById( divToDraw );
  element.style.visibility = "visible" ;
  element.style.top = y;
  element.style.left = x;

}

function setHiddenFieldValue(hiddenfieldname, value)
{
   var a = document.getElementById(hiddenfieldname);
   a.value = value;
}



function intCharCount(pObj, pSearchChar)
{
      var remainingString=pObj;
      var rCharCount=new Number();
      rCharCount=0;
      while (remainingString.indexOf(pSearchChar)>-1)
      {
            rCharCount++;
            remainingString = remainingString.substr(remainingString.indexOf(pSearchChar)+1);
      }
      return ( rCharCount );
};

function setCaretTo(obj, pos) {
    if(obj.createTextRange) {
        var range = obj.createTextRange();
        range.move("character", pos);
        range.select();
    } else if(obj.selectionStart) {
        obj.focus();
        obj.setSelectionRange(pos, pos);
    }
};



function getCaretPos(myField, doc)
{
   //IE
   if (doc.selection) {
      var sOldText=myField.value;
      var objRange=doc.selection.createRange().duplicate();
      var sOldRange=objRange.text;
      var sWeirdString='{#TAG%~}';

      objRange.text=sOldRange+sWeirdString;
      objRange.moveStart('character',(0-sOldRange.length-sWeirdString.length));
      var sNewText = myField.value;
      objRange.text = sOldRange;

      for (i=0;i<=sNewText.length;i++)
      {
            var sTemp=sNewText.substring(i,i+sWeirdString.length);
            if (sTemp==sWeirdString)
            {
                  var cursorPos=(i-sOldRange.length);
                  var txtRange=myField.createTextRange();
                  var lfCount=intCharCount(txtRange.text.substr(0, cursorPos), '\n');
                  cursorPos-=lfCount;
                  return cursorPos;
            }
      }

   }
   //Mozilla /netscape
   else if (myField.selectionStart || myField.selectionStart == '0') {
      return myField.selectionStart;
   }
   // other browsers
   else {
      return myField.value.length;
   }

}
function insertTagAtCursor(myField, doc, tag, enclose ) {
   var closeTag = "";
   if ( enclose ) {
      closeTag = "[/" + tag.substring(1);
      var attribSplit = closeTag.indexOf ( '=' );
      if ( closeTag.indexOf ( '=' ) > -1 )
         closeTag = closeTag.substring ( 0, attribSplit ) + "]";
   }
   //IE support
   if (doc.selection) {
      myField.focus();
      sel = doc.selection.createRange().duplicate();
      var iLength = sel.text.length;
      var seltext = sel.text;
      // maak sel.text leeg (opera fix)
      // om te voorkomen dat getCaretPos de huidige cursor positie aanpast
      sel.text = "";
      
      var caretPos = getCaretPos(myField, doc);
            
      sel.text = tag + seltext + closeTag ;
      if ((iLength < 1) || (!enclose))
         setCaretTo(myField, caretPos + tag.length);
      else
         setCaretTo(myField, myField.value.length);

   }
   //MOZILLA(firefox)/NETSCAPE support
   else if (myField.selectionStart || myField.selectionStart == '0') {      
      var startPos = myField.selectionStart;
      var endPos = myField.selectionEnd;
      var selected = myField.value.substring( startPos, endPos );
      myField.value = myField.value.substring(0, startPos)
                      + tag + selected + closeTag
                      + myField.value.substring(endPos, myField.value.length);
      if ((selected.length < 1) && (enclose))
         setCaretTo(myField, startPos + tag.length );
      else
         setCaretTo(myField, myField.value.length);

      myField.focus();
   }
   else {
      myField.value += myValue;
   }
}

function SelectProductgroup(parent_window, name, value)
{
   parent_window.document.getElementById(name).value = value;
   parent_window.document.getElementById('changed_' + name).value = "1";
   parent_window.document.forms(0).submit();
   window.close();
}

function SelectYouTubeMovie(parent_window, name, value, title)
{
   parent_window.document.getElementById(name).value = value;
   parent_window.document.getElementById('display_name_' + name).value = title;
   parent_window.document.getElementById('changed_' + name).value = "1";
   //parent_window.document.forms(0).submit();
   window.close();
}

function InsertInternalLink(EnableUBB)
{

   var active_field = window.opener.document.getElementById('active_field').value;
   var url = document.getElementById('url').value;
   if (EnableUBB)
      insertTagAtCursor(window.opener.document.getElementById(active_field), window.opener.document, '[URL=' + url + ']', true );
   else
   {
      window.opener.document.getElementById(active_field).value = url;
   }
}

function SetInternalURL(page_id, new_window)
{
   if (new_window)
   {
      document.getElementById('url').value= "javascript:OpenPopup(GetCmsPage('" + page_id + "'), 600, 400)";
   }
   else
   {
      document.getElementById('url').value= "javascript:window.location.href=GetCmsPage('" + page_id + "')";
   }
}

function GetCmsPage(page_id)
{
   var str = "";
   var strHref = window.location.href;
   var pos = strHref.indexOf("?");

   var pos2 = strHref.indexOf("pid=");
   var menu_and_group = strHref.substr(pos2+8, 6 );
   var pid = parseInt(page_id, 10).toString(16);

   while (pid.length < 4) {
      pid = '0' + pid;
   }

   pid = pid + menu_and_group;

   if ( pos > -1 ){
      str = strHref.substr(0, pos ) + '?pid=' + pid;
   }
   else {
      pos = strHref.indexOf(".php");
      if ( pos > -1 ){
         str = strHref + '?pid=' + pid;
      }
      else
      {
         // we weten alleen het domain.
         // we plakken de default index.php nog voor de cms pagina
         str = strHref + 'index.php?pid=' + pid;
      }
   }
   return str;

}

function ToggleRow(row, checkbox, class1, class2) {

   var r = document.getElementById(row);
   var c = document.getElementById(checkbox);

   if (r.className == class1)
   {
      r.className=class2;
      c.checked = true;
   }
   else
   {
      r.className=class1;
      c.checked = false;
   }
}


