/**************************************
wittmannsoft.hu
Local JavaScript
Verzió 1.0
Development by Wittmannsoft
**************************************/

//hint ablak globális változói
var vHintTrans = true;
var vHintOpacity = 10;
var vHintShowTimeout;
var vHintCloseTimeout;
var vHintCanClose = true;
//a wsGetPageSize függvény tömbjének indexei 
var cClientWidth = 0, cClientHeight = 1;
var cWindowWidth = 2, cWindowHeight = 3;
var cScrollWidth = 4, cScrollHeight = 5;
var cClientLeft = 6, cClientTop = 7;


function RemoveFocus() {
  this.blur();
  return true;
}


function InitializeLinks() {
  var vLinklist = document.getElementsByTagName('A');
  for(i=0; i<vLinklist.length; i++) {
    if (vLinklist[i].onfocus == null) vLinklist[i].onfocus = RemoveFocus;
  }
}


function InitializeDoc() {
  InitializeLinks();
}


//Szövegmezők ellenőrzése
//vFieldName  = a mező megnevezése
//vFieldValue = a mező értéke, amit vizsgálni kell
//vRequired   = ha a mezőt kötelező kitölteni, akkor true, egyébként false legyen
function IsValidText(vFieldName, vFieldValue, vRequired) {
  var vText = new String(vFieldValue);
  var vErrorMessage = '';
  if (vText != '') {
    var vInvalidChars = new String('\\|{}<>~ˇ^˘°˛`˙´˝¨¸÷×đĐłŁß¤');
    for (var i = 0; i < vInvalidChars.length; i++) {
      if (vText.indexOf(vInvalidChars.charAt(i)) > -1) {
        vErrorMessage += '- '+vFieldName+' mezőben nem használható a '+vInvalidChars.charAt(i)+' karakter \n';
      }
    }
  } else {
    if (vRequired) vErrorMessage += '- üres '+vFieldName+' mező \n';
  }
  return vErrorMessage;
}


//E-mail cím ellenőrzése
//vFieldName  = a mező megnevezése
//vFieldValue = a mező értéke, amit vizsgálni kell
//vRequired   = ha a mezőt kötelező kitölteni, akkor true, egyébként false legyen
function IsValidEmail(vFieldName, vFieldValue, vRequired) {
  var vText = new String(vFieldValue);
  var vErrorMessage = '';
  if (vText != '') {
    var vAtPos = vText.indexOf('@');
    var vInvalidChars = new String(',;§+!/():?"\\|*#&=$%[]{}<>\'~ˇ^˘°˛`˙´˝¨¸÷×đĐłŁß¤');
    for (var i = 0; i < vInvalidChars.length; i++) {
      if (vText.indexOf(vInvalidChars.charAt(i)) > -1) {
        vErrorMessage += '- '+vFieldName+' mezőben nem használható a '+vInvalidChars.charAt(i)+' karakter \n';
      }
    }
    if (vErrorMessage == '') {
      if (vAtPos == -1) {
        vErrorMessage += '- '+vFieldName+' mezőben lévő címből hiányzik az @ karakter \n';
      }
    }
    if (vErrorMessage == '') {
      if (vAtPos == 0) {
        vErrorMessage += '- '+vFieldName+' mezőben lévő címben nem lehet első az @ karakter \n';
      }
    }
    if (vErrorMessage == '') {
      if (vAtPos == (vText.length-1)) {
        vErrorMessage += '- '+vFieldName+' mezőben lévő címben nem lehet utolsó az @ karakter \n';
      }
    }
    if (vErrorMessage == '') {
      if (vText.substr(vAtPos+1).indexOf('@') > -1) {
        vErrorMessage += '- '+vFieldName+' mezőben lévő címben több mint egy @ karakter van \n';
      }
    }
    if (vErrorMessage == '') {
      if (vText.indexOf(' ') > -1) {
        vErrorMessage += '- '+vFieldName+' mezőben nem használható a szóköz karakter \n';
      }
    }
    if (vErrorMessage == '') {
      if (vText.charAt(0) == '.') {
        vErrorMessage += '- '+vFieldName+' mezőben lévő címben nem lehet első a pont karakter \n';
      }
    }
    if (vErrorMessage == '') {
      if (vText.charAt(vAtPos-1) == '.') {
        vErrorMessage += '- '+vFieldName+' mezőben lévő címben nem lehet a pont rögtön az @ karakter előtt \n';
      }
    }
    if (vErrorMessage == '') {
      if (vText.substr(vAtPos).indexOf('.') == -1) {
        vErrorMessage += '- '+vFieldName+' mezőben lévő cím második feléből (domain) hiányzik a pont karakter \n';
      }
    }
    if (vErrorMessage == '') {
      if (vText.charAt(vAtPos+1) == '.') {
        vErrorMessage += '- '+vFieldName+' mezőben lévő címben nem lehet a pont rögtön az @ karakter után \n';
      }
    }
    if (vErrorMessage == '') {
      if (vText.charAt(vText.length-1) == '.') {
        vErrorMessage += '- '+vFieldName+' mezőben lévő címben nem lehet utolsó a pont karakter \n';
      }
    }
    if (vErrorMessage == '') {
      for (var i = 0; i < vText.length; i++) {
        if (vText.charAt(i) == '.') {
          if ((vText.charAt(i-1) == '.') || (vText.charAt(i+1) == '.')) {
            vErrorMessage += '- '+vFieldName+' mezőben lévő címben nem lehet két pont egymás mellett \n';
            break;
          }
        }
      }
    }
  } else {
    if (vRequired) vErrorMessage += '- üres '+vFieldName+' mező \n';
  }
  return vErrorMessage;
}


//Objektum (HTML elem) pozíciók lekérdezése
//Alkalmazási példa:
//  var vLablec = document.getElementById('lablecbox');
//  var X = findElemPosX(vLablec);
//  var Y = findElemPosY(vLablec);
function findElemPosX(vElem) {
  var vCooX = 0;
  if (vElem.offsetParent) {
    while (1) {
      vCooX += vElem.offsetLeft;
      if (!vElem.offsetParent) break;
      vElem = vElem.offsetParent;
    }
  } else if (vElem.x) {
    vCooX += vElem.x;
  }
  return vCooX;
}
function findElemPosY(vElem) {
  var vCooY = 0;
  if (vElem.offsetParent) {
    while (1) {
      vCooY += vElem.offsetTop;
      if (!vElem.offsetParent) break;
      vElem = vElem.offsetParent;
    }
  } else if (vElem.y) {
    vCooY += vElem.y;
  }
  return vCooY;
}


//DIV áttetszőre állítása
//Paraméterek:
//  vDivID: DIV ID-je
//  vOpacity: áttetszőség mértéke %
//Alkalmazási példa:
//  wsSetOpacity('popuppanel',60);
function wsSetOpacity(vDivID, vOpacity) {
  if (vOpacity < 0) vOpacity = 0;
  if (vOpacity > 100) vOpacity = 100;
  var vValue = vOpacity/100;
  var vDoc = document.getElementById(vDivID);
  if (typeof(vDoc.style.filter) == 'string') {
    vDoc.style.filter = 'alpha(opacity:' + vOpacity + ')';
  }
  if (typeof(vDoc.style.KHTMLOpacity) == 'string') {
    vDoc.style.KHTMLOpacity = vValue;
  }
  if (typeof(vDoc.style.MozOpacity) == 'string') {
    vDoc.style.MozOpacity = vValue;
  }
  if (typeof(vDoc.style.opacity) == 'string') {
    vDoc.style.opacity = vValue;
  }
}


//Dokumentum méret adatait egy tömbben adja vissza
//Tömbindexek nevei:
//  cClientWidth = 0, cClientHeight = 1, cWindowWidth = 2, cWindowHeight = 3,
//  cScrollWidth = 4, cScrollHeight = 5, cClientLeft = 6, cClientTop = 7
//Alkalmazási példa:
//  var vPageSize = wsGetPageSize();
//  ...
//  a = vPageSize[cClientWidth];
function wsGetPageSize() {
  //dokumentum gördíthető mérete
	var vScrollWidth, vScrollHeight;
	if (window.innerWidth && window.scrollMaxX) {
		vScrollWidth = window.innerWidth + window.scrollMaxX;
		vScrollHeight = window.innerHeight + window.scrollMaxY;
	} else if (document.body.scrollHeight > document.body.offsetHeight) {
		vScrollWidth = document.body.scrollWidth;
		vScrollHeight = document.body.scrollHeight;
	} else {
		vScrollWidth = document.body.offsetWidth;
		vScrollHeight = document.body.offsetHeight;
	}
  //ablak kliensterületének szélessége és magassága
	var vWindowWidth = 0, vWindowHeight = 0;
  if (window.innerWidth) {
    vWindowWidth = window.innerWidth;
    vWindowHeight = window.innerHeight;
  } else if (document.documentElement && document.documentElement.clientWidth) {
    vWindowWidth = document.documentElement.clientWidth;
    vWindowHeight = document.documentElement.clientHeight;
  } else if (document.body && document.body.clientWidth) {
    vWindowWidth = document.body.clientWidth;
    vWindowHeight = document.body.clientHeight;
  }
  //dokumentum teljes szélessége és magassága (Firefox esetén a gördítősávok mögötti rész is)
	if (vScrollHeight < vWindowHeight) {
		vClientHeight = vWindowHeight;
	} else {
		vClientHeight = vScrollHeight;
	}
	if (vScrollWidth < vWindowWidth) {
		vClientWidth = vWindowWidth;
	} else {
		vClientWidth = vScrollWidth;
	}
  //látható kliensterületének bal felső sarkának pozíciója (left-top of client area) 
  var vClientLeft = 0, vClientTop = 0;
  if (typeof(window.pageYOffset) == 'number') {
    vClientTop = window.pageYOffset;
    vClientLeft = window.pageXOffset;
  } else if (document.body && (document.body.scrollLeft || document.body.scrollTop)) {
    vClientTop = document.body.scrollTop;
    vClientLeft = document.body.scrollLeft;
  } else if (document.documentElement && (document.documentElement.scrollLeft || document.documentElement.scrollTop)) {
    vClientTop = document.documentElement.scrollTop;
    vClientLeft = document.documentElement.scrollLeft;
  }
  //a méreteket tömbben adja vissza
	var arrayPageSize = new Array(vClientWidth,vClientHeight,vWindowWidth,vWindowHeight,vScrollWidth,vScrollHeight,vClientLeft,vClientTop);
	return arrayPageSize;
}


//Hint ablak láthatóvá tétele
function VisibleHintPanel() {
  if (document.getElementById) {
    if (vHintTrans) {
      wsSetOpacity('hintpanel',vHintOpacity);
      document.getElementById('hintpanel').style.visibility = 'visible';
      if (vHintOpacity < 100) {
        vHintOpacity += 10;
        vHintShowTimeout = setTimeout('VisibleHintPanel()',20);
      }
    } else {
      document.getElementById('hintpanel').style.visibility = 'visible';
    }
  }
}
//Hint ablak elrejtése
function HideHintPanel() {
  if (document.getElementById) {
    if (vHintTrans) {
      if (vHintOpacity > 10) vHintOpacity -= 10;
      wsSetOpacity('hintpanel',vHintOpacity);
      if (vHintOpacity > 10) {
        vHintShowTimeout = setTimeout('HideHintPanel()',20);
      } else {
        document.getElementById('hintpanel').style.visibility = 'hidden';
      }
    } else {
      document.getElementById('hintpanel').style.visibility = 'hidden';
    }
  }
}
//Hint ablak megjelenítése
//hintObj: a hívó elem
//hintTrans: 'true' esetén áttetszés animáció a hint panel megjelenítése és elrejtése során
//hintDelay: hint panel megjelenítésének késleltetése (ms)
//panelMoveX: panel eltolása vízszintesen (pixel)
//panelMoveY: panel eltolása függőlegesen (pixel)
//panelPos: panel pozíciója a hívó elem bal széléhez képest: 'left', 'right'
//panelWidth: panel szélessége (pixel)
//hintText: megjelenítendő tartalom (html kód) (ha üres, akkor marad az eredeti)
function ShowHintPanel(hintObj, hintTrans, hintDelay, panelMoveX, panelMoveY, panelPos, panelWidth, hintText) {
  vHintTrans = hintTrans;
  if (document.getElementById) {
    var vPageSize = wsGetPageSize();
    var vHintPanel = document.getElementById('hintpanel');
    var vHeight;
    var vPosX = 0;
    var vPosY = 0;
    vHintCanClose = false;
    clearTimeout(vHintCloseTimeout);
    clearTimeout(vHintShowTimeout);
    if (document.getElementById('hintpanel').style.visibility == 'visible') {
      if (hintText != '') {
        if (vHintTrans) {
          vHintOpacity = 10;
          wsSetOpacity('hintpanel',vHintOpacity);
        }
      } else {
        VisibleHintPanel();
        return;
      }
    }
    vHintPanel.style.width = panelWidth + 'px';
    if (hintText != '') document.getElementById('hinttext').innerHTML = hintText;
    vHeight = vHintPanel.offsetHeight;
    if (panelPos == 'right') {
      vPosX = findElemPosX(hintObj)+panelMoveX;
    } else {
      vPosX = findElemPosX(hintObj)-panelWidth-2+panelMoveX;
    }
    vPosY = findElemPosY(hintObj)-vHeight-5+panelMoveY;
    if (vPosX < vPageSize[cClientLeft]) {
      vPosX = vPageSize[cClientLeft];
    }
    if ((vPosX+panelWidth) > (vPageSize[cClientLeft]+vPageSize[cWindowWidth]-28)) {
      vPosX = vPageSize[cClientLeft]+vPageSize[cWindowWidth]-28-panelWidth;
    }
    if (vPosY < vPageSize[cClientTop]) {
      vPosY = vPageSize[cClientTop];
    }
    if ((vPosY+vHeight) >= (vPageSize[cClientTop]+vPageSize[cWindowHeight])) {
      vPosY = vPageSize[cClientTop]+vPageSize[cWindowHeight]-vHeight;
    }
    vHintPanel.style.left = vPosX + 'px';
    vHintPanel.style.top = vPosY + 'px';
    vHintOpacity = 10;
    if (document.getElementById('hintpanel').style.visibility == 'visible') {
      VisibleHintPanel();
    } else {
      vHintShowTimeout = setTimeout('VisibleHintPanel()',hintDelay);
    }
  }
}
//Hint ablak bezárása
function CloseHintBox(vHardClose) {
  clearTimeout(vHintCloseTimeout);
  if (vHintCanClose || vHardClose) {
    clearTimeout(vHintShowTimeout);
    HideHintPanel();
  }
}
function CloseHintPanel(vHardClose) {
  if (document.getElementById) {
    if (vHardClose) {
      CloseHintBox(true);
    } else {
      vHintCanClose = true;
      vHintCloseTimeout = setTimeout('CloseHintBox(false)',200);
    }
  }
}

