var FABRICATION_STANDARD = 1;
var SCHUTZUMSCHLAG = 3; 
var HARDCOVER = 2;


function fixPngTransparency(obj){
        if(document.body.filters){
                pattern=/.png/gi;
                filterFix="progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+obj.src+"',sizingMethod='scale');";
                if(obj.src.search(pattern)!=-1){
                        obj.style.width=obj.offsetWidth+"px";
                        obj.style.height=obj.offsetHeight+"px";
                        obj.style.filter=filterFix;
                        // obj.src="blank.gif";
                        obj.src="./media/blank.gif";
                }
        }
}

function redirect(url, txt) {
    document.location.href = url;
}

function PublicHoliday(date,title)
{
	this.date = date;
	this.title = title;
}

function isWorkDay(date)
{
	return date.getDay() != 0 && date.getDay() != 6;
}

function isPublicHoliday(date, publicHolidays)
{
	for(i=0; i<publicHolidays.length; i++)
	{
		if(publicHolidays[i].date.getYear() == date.getYear() && 
				publicHolidays[i].date.getMonth() == date.getMonth() && 
				publicHolidays[i].date.getDate() == date.getDate())
		{	
			return true;
		}
	}		
	return false;
}
function getPublicHolidays(year)
{
	var publicHolidays = new Array();
	
	// Fixe Daten:
	publicHolidays[0] = new PublicHoliday(new Date(year,1-1,1),"Neujahr (Feiertag)");
	publicHolidays[1] = new PublicHoliday(new Date(year,1-1,6),"Heilige Drei Könige (*1)");
	publicHolidays[2] = new PublicHoliday(new Date(year,5-1,1),"Maifeiertag (Feiertag)");
	publicHolidays[3] = new PublicHoliday(new Date(year,8-1,15),"Mariä Himmelfahrt (*5)");
	publicHolidays[4] = new PublicHoliday(new Date(year,10-1,3),"Tag der Deutschen Einheit");
	publicHolidays[5] = new PublicHoliday(new Date(year,10-1,31),"Reformationstag (*6)");
	publicHolidays[6] = new PublicHoliday(new Date(year,11-1,1),"Allerheiligen (*7)");
	publicHolidays[7] = new PublicHoliday(new Date(year,12-1,31),"Silvester");

	// Ostern:
	dOstern = calculateEasterDate(year);
	publicHolidays[8] = new PublicHoliday(new Date(dOstern.getTime() - 86400000 * 2), "Karfreitag (Feiertag)(*2)");
	publicHolidays[9] = new PublicHoliday(new Date(dOstern.getTime() - 86400000 * 1), "Ostersamstag");
	publicHolidays[10] = new PublicHoliday(dOstern, "Ostersonntag (Sonntag)");
	publicHolidays[11] = new PublicHoliday(new Date(dOstern.getTime() + 86400000 * 1), "Ostermontag");

	// Pfingsten:
	publicHolidays[12] = new PublicHoliday(new Date(dOstern.getTime() + 86400000 * 49), "Pfingstsonntag (Sonntag)");
	publicHolidays[13] = new PublicHoliday(new Date(dOstern.getTime() + 86400000 * 50), "Pfingstmontag (Feiertag)");
	
	publicHolidays[14] = new PublicHoliday(new Date(year,12-1,24), "Heiligabend");
	publicHolidays[15] = new PublicHoliday(new Date(year,12-1,25), "1. Weihnachtsfeiertag (Feiertag)");
	publicHolidays[16] = new PublicHoliday(new Date(year,12-1,26), "2. Weihnachtsfeiertag (Feiertag)");

	// Diverse
	publicHolidays[17] = new PublicHoliday(new Date(dOstern.getTime() + 86400000 * 39), "Himmelfahrt (Feiertag)");
	publicHolidays[18] = new PublicHoliday(new Date(dOstern.getTime() + 86400000 * 60), "Frohnleichnam (*3)");

	firstAdvent = getFirstAdvent(year);

	publicHolidays[19] = new PublicHoliday(new Date(firstAdvent.getTime() - 86400000 * 11), "Buß- und Bettag");
	
	return publicHolidays;
}

function getFirstAdvent(year)
{
	firstAdvent = new Date(year,11-1,26);
	while(0!=firstAdvent.getDay())
	{
		firstAdvent.setDate(firstAdvent.getDate()+1); // add 1 day
	}
	return firstAdvent;
}

function calculateEasterDate(year)
{	
	var a0, b0, c0, d0, e0, f0, nMaerz, nApril;
	var dDatum;

	a0 = Math.floor(((((year/19)-(Math.floor(year/19)))*19)*100+0.5)/100);
	b0 = Math.floor(((((year/4)-(Math.floor(year/4)))*4)*100+0.5)/100);
	c0 = Math.floor(((((year/7)-(Math.floor(year/7)))*7)*100+0.5)/100);
	d0 = Math.floor(((((((19*a0)+24)/30)-(Math.floor(((19*a0)+24)/30)))*30)*100+0.5)/100);
	f0 = ((2*b0)+(4*c0)+(6*d0)+5)/7;
	e0 = Math.floor(((((f0)-(Math.floor(f0)))*7)*100+0.5)/100);
	nMaerz = 22 + d0 + e0;
	nApril = d0 + e0 - 9;

	if (nApril == 26)
	{
		dDatum = new Date(year,4-1,19);
		return dDatum; // 19. April
	}
	if (nApril == 25)
	{
	   	if (d0 == 28)
		{
			if (a0 > 10)
			{
				dDatum = new Date(year,4-1,18);
				return dDatum; // 18. April
				}
			}
	}
	if (nMaerz > 31)
	{
		dDatum = new Date(year,4-1,nApril);
	   return dDatum; // nApril. April
	}
	dDatum = new Date(year,3-1,nMaerz);
	return dDatum; // nMaerz. Mai
}


function uploadfile() {

        var o=document.getElementById('uploadedfile');
        var fileAndPath = o.value;
        var lastPathDelimiter = fileAndPath.lastIndexOf("\\");
        var fileNameOnly = fileAndPath.substring(lastPathDelimiter+1);
        if(fileNameOnly.substr(fileNameOnly.length-3,3).toLowerCase()=='pdf'){
                window.document.uploader.submit();
        }else{
                alert('Select pdf file only!');
                return;
        }
}

function getCalendarDate(date)
{
   var months = new Array(13);
   months[0]  = "Januar";
   months[1]  = "Februar";
   months[2]  = "März";
   months[3]  = "April";
   months[4]  = "Mai";
   months[5]  = "Juni";
   months[6]  = "Juli";
   months[7]  = "August";
   months[8]  = "September";
   months[9]  = "Oktober";
   months[10] = "November";
   months[11] = "Dezember";
   
   var monthnumber = date.getMonth();
   var monthname   = months[monthnumber];
   var monthday    = date.getDate();
   var year        = date.getYear();
   if(year < 2000) { year = year + 1900; }
   var dateString = monthday +
                    '. ' +
                    monthname +
                    ' ' +
                    year;
   return dateString;
} // function getCalendarDate()


function checknum(e){

        var unicode=e.charCode? e.charCode : e.keyCode;
        // if (unicode!=8||unicode!=9)
        if (unicode<8||unicode>9 && unicode!=46)
            {
            // if the key isn't the backspace key or tab key (which we should
			// allow)
            if (unicode<48||unicode>57) // if not a number
            return false; // disable key press
        }
     // if(input.value.indexOf('.')==-1)
		// document.getElementById('fldprice').value=input.value+'.00';

}

function checkNumeric(number)
{
	var strValidChars = "0123456789.-";
	var strChar;

	if (number.length == 0) return false;

	// test strString consists of valid characters listed above
	for (i = 0; i < number.length; i++)
	{
		
		strChar = number.charAt(i);
	    if (strValidChars.indexOf(strChar) == -1)
	    {
	    	return false;
	    }
	}
	return true;
}
function isInteger(s) {
	return (s.toString().search(/^-?[0-9]+$/) == 0);
	}


function testDecimal(e)
{
	var unicode=e.charCode? e.charCode : e.keyCode;
	
	if (unicode<8||unicode>9 && unicode!=46  && unicode != 44 && unicode != 39 && unicode != 37)
            {
            // if the key isn't the backspace key or tab key (which we should
			// allow)
            if (unicode<48||unicode>57) // if not a number
            return false; // disable key press
        }
	return true;
}
function checkDecimal(number)
{
	number = number.replace(/,/,".");
	if(isInteger(number))
		return true;
	
	var re = new RegExp("^-?\\d+\\.?\\d+?$");
	return re.test(number);
}


function LTrim( value ) {
var re = /\s*((\S+\s*)*)/;
return value.replace(re, "$1");
}
function RTrim( value ) {
var re = /((\s*\S+)*)\s*/;
return value.replace(re, "$1");
}
function trim( value ) {
return LTrim(RTrim(value));
}


function checkForInjectionCharacters(str)
{
	var msg = "Das Zeichen ';' ist nicht erlaubt";
	if(str.indexOf(";")!=-1)
	{
		alert(msg);
		return true;
	}
	return false;
}

function encrypt(str)
{
	// remove critival injection characters
	str = str.replace(/"/g,"&quot;");
	str = str.replace(/&/g,"(1~.)");
	str = str.replace(/;/g,"(2~.)");
	str = str.replace(/'/g,"(3~.)");
	
	str = str.replace(/%123/g,"(4~.)");
	str = str.replace(/%124/g,"(5~.)");
	str = str.replace(/%125/g,"(6~.)");
	str = str.replace(/%126/g,"(7~.)");
	return str;
}

function decrypt(str)
{
	str = str.replace(/\(3~.\)/g,"'");
	str = str.replace(/\(2~.\)/g,";");
	str = str.replace(/\(1~.\)/g,"&");
	
	str = str.replace(/(4~.)/g,"%123");
	str = str.replace(/(5~.)/g,"%124");
	str = str.replace(/(6~.)/g,"%125");
	str = str.replace(/(7~.)/g,"%126");
	
	return str;
}


function in_array(value,arr)
{
	for(var z=0;z<arr.length;z++)
		if(arr[z] == value)
			return true;
	return false;
}

function get(obj) {
      var getstr = "?";
      for (i=0; i<obj.elements.length; i++) {
         if (trim(obj.elements[i].type) == "text") {
             getstr += obj.elements[i].name + "=" + encrypt(obj.elements[i].value) + "&";
         }

         if (trim(obj.elements[i].type) == "select-one") {
             getstr += obj.elements[i].name + "=" + encrypt(obj.elements[i].options[obj.elements[i].selectedIndex].value) + "&";
         }
         if (trim(obj.elements[i].type) == "password") {
             getstr += obj.elements[i].name + "=" + encrypt(obj.elements[i].value) + "&";
         }
         if (trim(obj.elements[i].type) == "checkbox") {
             getstr += obj.elements[i].name + "=" + encrypt(obj.elements[i].checked ? "1" : "0") + "&";
         }
         if (trim(obj.elements[i].type) == "file") {
             getstr += obj.elements[i].name + "=" + encrypt(obj.elements[i].value) + "&";
         }
      }
      return getstr;
   }

function gettext(obj){
 var getstr = "?";
      for (i=0; i<obj.elements.length; i++) {
         if (trim(obj.elements[i].type) == "text") {
             getstr += obj.elements[i].name + "=" + encrypt(obj.elements[i].value) + "&";
         }
         if (trim(obj.elements[i].type) == "select-one") {
             getstr += obj.elements[i].name + "=" + encrypt(obj.elements[i].options[obj.elements[i].selectedIndex].value) + "&";
         }
         if (trim(obj.elements[i].type) == "password") {
             getstr += obj.elements[i].name + "=" + encrypt(obj.elements[i].value) + "&";
         }
         if (trim(obj.elements[i].type) == "file") {
             getstr += obj.elements[i].name + "=" + encrypt(obj.elements[i].value) + "&";
         }
         if (trim(obj.elements[i].type) == "checkbox" && obj.elements[i].checked) {
             getstr += obj.elements[i].name + "= on" + "&";
         }
         if (trim(obj.elements[i].type) == "radio" && obj.elements[i].checked) {
             getstr += obj.elements[i].name + "=" + encrypt(obj.elements[i].value) + "&";
         }
		 if (trim(obj.elements[i].type) == "hidden") {
             getstr += obj.elements[i].name + "=" + encrypt(obj.elements[i].value) + "&";
         }

      }
      return getstr;
}

function strrev(str) {
   if (!str) return '';
   var revstr='';
   for (i = str.length-1; i>=0; i--)
       revstr+=str.charAt(i);
   return revstr;
}

function echeck(str) {
	var emailPattern = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/; 
	return emailPattern.test(str); 
}




// table sort


  function xx(){
          alert('xx');
  }
  function sortTable(id, col, rev) {
                switch(col)
                {
                case 0:
                  document.getElementById('col').value="1";
                  break;
                case 1:
                  document.getElementById('col').value="2";
                  break;
                case 2:
                  document.getElementById('col').value="3";
                  break;
                case 3:
                  document.getElementById('col').value="4";
                  break;
                case 4:
                  document.getElementById('col').value="5";
                  break;

                default:
                   document.getElementById('col').value="0";
                }

                if(document.getElementById('desc_'+document.getElementById('col').value).value=="ASC"){
                  document.getElementById('desc_'+document.getElementById('col').value).value="DESC";
                }else{
                  document.getElementById('desc_'+document.getElementById('col').value).value="ASC";
                }

        return false;
  }
  
  function removeAllChildNodes(node) 
{
	if (node && node.hasChildNodes && node.removeChild) 
		while (node.hasChildNodes()) 
			node.removeChild(node.firstChild);	
} // removeAllChildNodes()

