// gloabl

// Firebug workrout für ie foo ;)
if (! window.console || !console.firebug) {
	var names = ["log", "debug", "info", "warn", "error", "assert", "dir", "dirxml",
	"group", "groupEnd", "time", "timeEnd", "count", "trace", "profile", "profileEnd"];

	window.console = {};
	for (var i = 0; i < names.length; ++i)
		window.console[names[i]] = function() {}
}



var sid_str = null;
function set_sid(str) { 
	sid_str = str;
}

function get_sid(str) { 
	return 'sid=' + sid_str;
}


// 

function sprintf(fstring) { 
	var pad = function(str,ch,len)
     { var ps='';
       for(var i=0; i<Math.abs(len); i++) ps+=ch;
       return len>0?str+ps:ps+str;
     }
   var processFlags = function(flags,width,rs,arg)
     { var pn = function(flags,arg,rs)
         { if(arg>=0)
             { if(flags.indexOf(' ')>=0) rs = ' ' + rs;
               else if(flags.indexOf('+')>=0) rs = '+' + rs;
             }
           else
               rs = '-' + rs;
           return rs;
         }
       var iWidth = parseInt(width,10);
       if(width.charAt(0) == '0')
         { var ec=0;
           if(flags.indexOf(' ')>=0 || flags.indexOf('+')>=0) ec++;
           if(rs.length<(iWidth-ec)) rs = pad(rs,'0',rs.length-(iWidth-ec));
           return pn(flags,arg,rs);
         }
       rs = pn(flags,arg,rs);
       if(rs.length<iWidth)
         { if(flags.indexOf('-')<0) rs = pad(rs,' ',rs.length-iWidth);
           else rs = pad(rs,' ',iWidth - rs.length);
         }    
       return rs;
     }
   var converters = new Array();
   converters['c'] = function(flags,width,precision,arg)
     { if(typeof(arg) == 'number') return String.fromCharCode(arg);
       if(typeof(arg) == 'string') return arg.charAt(0);
       return '';
     }
   converters['d'] = function(flags,width,precision,arg)
     { return converters['i'](flags,width,precision,arg); 
     }
   converters['u'] = function(flags,width,precision,arg)
     { return converters['i'](flags,width,precision,Math.abs(arg)); 
     }
   converters['i'] =  function(flags,width,precision,arg)
     { var iPrecision=parseInt(precision);
       var rs = ((Math.abs(arg)).toString().split('.'))[0];
       if(rs.length<iPrecision) rs=pad(rs,' ',iPrecision - rs.length);
       return processFlags(flags,width,rs,arg); 
     }
   converters['E'] = function(flags,width,precision,arg) 
     { return (converters['e'](flags,width,precision,arg)).toUpperCase();
     }
   converters['e'] =  function(flags,width,precision,arg)
     { iPrecision = parseInt(precision);
       if(isNaN(iPrecision)) iPrecision = 6;
       rs = (Math.abs(arg)).toExponential(iPrecision);
       if(rs.indexOf('.')<0 && flags.indexOf('#')>=0) rs = rs.replace(/^(.*)(e.*)$/,'$1.$2');
       return processFlags(flags,width,rs,arg);        
     }
   converters['f'] = function(flags,width,precision,arg)
     { iPrecision = parseInt(precision);
       if(isNaN(iPrecision)) iPrecision = 6;
       rs = (Math.abs(arg)).toFixed(iPrecision);
       if(rs.indexOf('.')<0 && flags.indexOf('#')>=0) rs = rs + '.';
       return processFlags(flags,width,rs,arg);
     }
   converters['G'] = function(flags,width,precision,arg)
     { return (converters['g'](flags,width,precision,arg)).toUpperCase();
     }
   converters['g'] = function(flags,width,precision,arg)
     { iPrecision = parseInt(precision);
       absArg = Math.abs(arg);
       rse = absArg.toExponential();
       rsf = absArg.toFixed(6);
       if(!isNaN(iPrecision))
         { rsep = absArg.toExponential(iPrecision);
           rse = rsep.length < rse.length ? rsep : rse;
           rsfp = absArg.toFixed(iPrecision);
           rsf = rsfp.length < rsf.length ? rsfp : rsf;
         }
       if(rse.indexOf('.')<0 && flags.indexOf('#')>=0) rse = rse.replace(/^(.*)(e.*)$/,'$1.$2');
       if(rsf.indexOf('.')<0 && flags.indexOf('#')>=0) rsf = rsf + '.';
       rs = rse.length<rsf.length ? rse : rsf;
       return processFlags(flags,width,rs,arg);        
     }  
   converters['o'] = function(flags,width,precision,arg)
     { var iPrecision=parseInt(precision);
       var rs = Math.round(Math.abs(arg)).toString(8);
       if(rs.length<iPrecision) rs=pad(rs,' ',iPrecision - rs.length);
       if(flags.indexOf('#')>=0) rs='0'+rs;
       return processFlags(flags,width,rs,arg); 
     }
   converters['X'] = function(flags,width,precision,arg)
     { return (converters['x'](flags,width,precision,arg)).toUpperCase();
     }
   converters['x'] = function(flags,width,precision,arg)
     { var iPrecision=parseInt(precision);
       arg = Math.abs(arg);
       var rs = Math.round(arg).toString(16);
       if(rs.length<iPrecision) rs=pad(rs,' ',iPrecision - rs.length);
       if(flags.indexOf('#')>=0) rs='0x'+rs;
       return processFlags(flags,width,rs,arg); 
     }
   converters['s'] = function(flags,width,precision,arg)
     { var iPrecision=parseInt(precision);
       var rs = arg;
       if(rs.length > iPrecision) rs = rs.substring(0,iPrecision);
       return processFlags(flags,width,rs,0);
     }
   farr = fstring.split('%');
   retstr = farr[0];
   fpRE = /^([-+ #]*)(\d*)\.?(\d*)([cdieEfFgGosuxX])(.*)$/;
   for(var i=1; i<farr.length; i++)
     { fps=fpRE.exec(farr[i]);
       if(!fps) continue;
       if(arguments[i]!=null) retstr+=converters[fps[4]](fps[1],fps[2],fps[3],arguments[i]);
       retstr += fps[5];
     }
   return retstr;
}

function validSLD(domain) {
	var strReg = "[\\._\\*\\#\\@,\\:\\!\\^\\$\\+\\~\\/\\\\\\s]";
	var regex = new RegExp(strReg);
	domain = domain.replace(/^\s+/, "");
	domain = domain.replace(/\s+$/, "");
	if (regex.test(domain)) {
		return false; // fehler - tld hat unguelige zeichen
	} else {
		return true;
	}
} 

function validEmail(email) {
	var strReg = "^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$";
	var regex = new RegExp(strReg);
	return(regex.test(email));
} 

function validPhone(nummer) {
	var strReg = "^\\+\\d\\d+(( \\d+)+|\\d+)$";
	var regex = new RegExp(strReg);
	return(regex.test(nummer));
} 

function validStdName(str) {
	var strReg = "^[a-zA-Z0-9\\&\\,\\.\\+\\- ]+$";
	var regex = new RegExp(strReg);
	return(regex.test(str));
}

function validPlz(plz, land) {

	if (land == "DE" || land == "de" ) {
  		var strReg = "^[0-9][0-9][0-9][0-9][0-9]$";
	} else {
		var strReg = "^[0-9][0-9][0-9][0-9]";
	}
  
	var regex = new RegExp(strReg);
	return(regex.test(plz));
} 

function showErrorBox( errorText ) {

	errBox = document.getElementById('err-box');
	if (errorText == "") {
		errBox.style.display = 'none';

	} else {
		errBox.style.display = 'block';
		errText = document.getElementById('err-text');
		
		var i = 10;
		while ( i-- > 0 && errText.childNodes.length > 0) {
			var Knoten = errText.firstChild;
  			verschwunden = errText.removeChild(Knoten);
		}

		var Zeilen = errorText.split("\n");
		for( z = 0; z < Zeilen.length; z++ ) {
			
			var nodeErrText = document.createTextNode(Zeilen[z]);
			var nodeErr = document.createElement("div");
			nodeErr.appendChild(nodeErrText);
			errText.appendChild(nodeErr);
		}
	}
}
	
function validTabFeld( field, type, extend, errbox ) {

	//  a = typeof(errbox) != 'undefined' ? a : 42;
	
	var errorText = "";
	//var field = document.getElementById(fieldId);
	
	if (typeof(field) != 'undefined') {

		if (field.value.length < 1 )
		    errorText = "Unzeireichende Eingabe. \n";
		
		parent = field.parentNode.parentNode;
		
		switch (type) {
		
		case "sld":
			if (field.value.length < 4 )
			    errorText = "Second Level Domain Name zu kurz. Mindestens 3 Zeichen.\n";
			else
				if (!validSLD(field.value))
		    		errorText = "Second Level Domain Name ungueligt. Nur Kleinbuchstaben verwenden. Beispiel ( Richtig: spepp-maier Falsch: sepp-maier.de)\n";
		    break;
		
		case "email":
			if (!validEmail(field.value))
	    		errorText = "Falsche E-Mail-Adresse. \n";
		    break;

		case "phone":
			if (!validPhone(field.value))
	    		errorText = "Format der Telefonnummer falsch. Beispiel: +49 123 4567890. \n";
		    break;
		
		case "fax":
			if (!validPhone(field.value))
	    		errorText = "Format der Faxnummer falsch. Beispiel: +49 123 4567890. \n";
		    break;
		
		case "country":
			if (field.value.length < 2 )
				errorText = "Laendercode sollte min. zwei Buchstaben sein.\n";
		    break;		
						
		case "plz":
			if (!validPlz(field.value, extend.value))
	    		errorText = "Postleitzahl Falsch. \n";
		    break;		
	
		case "stdStr":
			if (!validStdName(field.value))
	    		errorText = "Eingabe enhaelt ungueltige Zeichen. Es sind keine Umlaute oder Sonderzeichen erlaubt. \n";
		    break;
		case "stdStr2":
			if (field.value.length != 0 ) {
				if (!validStdName(field.value))
	    			errorText = "Eingabe enhaelt ungueltige Zeichen. Es sind keine Umlaute oder Sonderzeichen erlaubt. \n";
			} else {
				errorText = "";
			}
		    break;
				
		default:
			errorText = "Nicht definierte validierung. October Labs Support verstaendigen.\n";
		    break;		
			
		}
		
		if (typeof(parent) != 'undefined') {
			if (errorText != "" ) {
				parent.className = "table-enlight";
			} else {
				parent.className = "";
			}
		}
	}
	//alert(type + " | " + field.value + " err: "+ errorText + " extend : " + extend);

	if (errorText == "") {
		var tmpText = field.value;
		tmpText = tmpText.replace(/^\s+/, "");
		tmpText = tmpText.replace(/\s+$/, "");
		field.value = tmpText;
	}
	
	
	if ( typeof(errbox) != 'undefined' && errbox == "hideErrorBox") {
		// don't show erreor use gobal box by other 
	} else {
		showErrorBox(errorText);
	}
	 
	return errorText;
}

// alle kindknoten entfernen
function removeAllChilds(node) {
	if (node) {
		while (node.hasChildNodes()) {
			 var delNode = node.firstChild;
			 node.removeChild(delNode);
		}
	}
}
		

function addEventHandler(oTarget, sEventType, fnHandler) {
	if (oTarget.addEventListener) {
	oTarget.addEventListener(sEventType, fnHandler, false);
	} else if (oTarget.attachEvent) {
	oTarget.attachEvent("on" + sEventType, fnHandler);
	} else {
	oTarget["on" + sEventType] = fnHandler;
	}
};


function addAtt (dom, name, setValue) {
	var newAttr = document.createAttribute(name);
	newAttr.nodeValue = setValue;
	if (dom) {
		dom.setAttributeNode(newAttr);
	} else {
		dojo.debug("addAtt " + dom + " set " +  name  + " val: " + setValue); 
	}
}
//                     <div,h1>
function addText (dom, type, setValue) {
	var newText = document.createTextNode(setValue);
	var newNode = document.createElement(type);
	newNode.appendChild(newText);
	dom.appendChild(newNode);
}

function getXmlValue (xml, field) {

	var setValue ='';		
	if (xml.getElementsByTagName(field)[0].firstChild) {
		setValue = xml.getElementsByTagName(field)[0].firstChild.nodeValue; 
	}
	return setValue;
}
//                     <div,h1>
function addXmlText (dom, xml, type, field) {
	addText (dom, type, getXmlValue(xml, field));
}

