/* some global vars: <-- very very bad...
 * syncForm: booelan value to determine if a form must be syncd
 * 
 */
var testTabValue = "not definded";
var syncForm = false;
/* test comment
 * generic function to load include template in dojo widgets
 */
function changeContent(connectId, template, parameter) {
	var id = connectId;
	var testS = /AuctionConnector/i;
	var testS1 = /content/i;
	var url = "";
	var int = template.search(testS);
	var int1 = template.search(testS1);
	var lngCode = "&lngCode="+dojo.locale;
	if (int == -1) {
		if ( int1 == -1){
			url ="/servlets/AuctionConnector?template=";
		} else {
			url ="/servlets/AuctionConnector?template=asyncListLoader&list=";
		}
	}
	  var template = template;
	  var vars = "";
	  if (parameter != null ){
	  	vars = parameter;
	  }	  
	  dijit.byId(id).setHref(url+template+vars+lngCode);
}
function urlExpand(template){
	var testS = /AuctionConnector/i;
	var testS1 = /content/i;
	var url = "";
	var int = template.search(testS);
	var int1 = template.search(testS1);
	var lngCode = "&lngCode="+dojo.locale;
	////console.debug("template: "+template+" value: "+int);
	if (int == -1) {
		if ( int1 == -1){
			url ="/servlets/AuctionConnector?template=";
		} else {
			url ="/servlets/AuctionConnector?template=asyncListLoader&list=";
		}
	}
	return url+template;
}
function ch2rfxComm(itemID, param){
  var tabC = dijit.byId('rfx_mgmTabContainer');
  var ele = tabC.selectedChildWidget;
  var id = ele.id;
  var template = "rfxComm";
  var vars = "&itemid="+itemID;
  if (typeof param != "undefined"){
  	vars = vars + param;
  }
  changeContent(id, template, vars);  
}
function getText(akey, keys, values){
	////console.debug("running get Text Achtung! diese funktion ist relativ dumm ess könne keine Sätze mit Kommas verarbeitet werden");
	////console.debug(akey);
	var re;
	var tkeys=new Array();
	var tvalues=new Array();
	tkeys = keys.split(',');
	tvalues = values.split(',');
	
	for (var i = 0; i < tkeys.length; i++){
		if ( akey == tkeys[i]){
			re = tvalues[i];
		}
	}
	return re;
}
function getStabId(id){
	var tabC = dijit.byId(id);
  var ele = tabC.selectedChildWidget;
  var id = ele.id;
  return id;
}
/*
 * only useful for the "rfx_mgmTabContainer"
 * perfect function to promming some OO in js -> Inheritance 
 */
function changeRfxMgmContent(template, parameter){
	var id = "rfx_mgmTabContainer";
	var conid = getStabId(id);
	changeContent(conid, template, parameter);
}
function changeRfxMgmContentOther(u, p){
		var url = u;
		var param = "";
		param = p;
		var lngCode = "&lngCode="+dojo.locale;
		var conid = getStabId("rfx_mgmTabContainer");
		//console.debug("going to: " +url+param);
		dijit.byId(conid).setHref(url+param);
}
/*	Entscheidungs Widget
 * braucht 3 parameter:
 * aktuell : akueller key
 * keys	: mögliche keys
 * values : values zu den keys
 * bsp.: <p dojoType="decisionTxt" akey="123" keys="123,345,678" values="tach auch, moin moin, servus die madeln"></p>
 * 
 * 
 */
dojo.declare("decisionTxt", [dijit._Widget], {
	akey:'',
	keys:'',
	values:'',
	fakey:'',
	
  postCreate: function(){
		if (this.fakey != ""){
			this.akey = eval(this.fakey); 
		}
		this.domNode.innerHTML = getText(this.akey, this.keys, this.values)
  }
}
);

function openEdit(nodeid){
  var b = 0;
  
  while (b==0){
  	var p = dojo.byId(nodeid).getAttribute("parent");
  	if (p != ""){	
	  	var parentN = dojo.byId(p);
	  	var imgNode = dojo.query('span.imgG', parentN);
	  	dojo.forEach(imgNode, function(e, i){
	  		if (dojo.hasClass(e,"closeTg")){
	  			dojo.addClass(e, "openTg");
	  		  dojo.removeClass(e, "closeTg");
	  		}
	    });
	  	
  		console.debug("id: " + nodeid+" p: "+p);
	    var siblings = dojo.query('[parent='+p+']', dojo.byId(nodeid).parentNode);
	    dojo.forEach(siblings, function(entry, i){
	      dojo.removeClass(entry, "dijitHidden");
	    });
	    nodeid = dojo.byId(nodeid).getAttribute("parent");
	    
	    if (nodeid == ""){
	      b = 1;
	    }
  	} else {
  		b = 1;
  	}
  }
}
function openNew(pid){
	if (pid != ""){
		var childs = dojo.query('[parent='+pid+']');
	   dojo.forEach(childs, function(entry, i){
	     dojo.removeClass(entry, "dijitHidden");
	     
	   });
	   var imgNode = dojo.query('span.imgG', dojo.byId(pid));
	 	dojo.forEach(imgNode, function(e, i){
	 		if (dojo.hasClass(e,"closeTg")){
	 			dojo.addClass(e, "openTg");
	 		  dojo.removeClass(e, "closeTg");
	 		}
	   });
	   openEdit(pid);
	}
}

dojo.declare("Simple", [dijit._Widget], {
	t1:'',
	t2:''
  
}
);
/*
dojo.declare("Simple", [dijit._Widget], {
		t1:'',
		t2:'',
	  postCreate: function(){
			this.domNode.innerHTML = "Simple Widget" + this.t1 +"/"+ this.t2
				
	  }
  }
);

*/
/**
 * generic async post 
 */
function pxhrpost(form, url, id){
	//console.debug("running function pxhrpost");
	//console.debug("running pxhrpost vars: "+form.name+" , "+url+" , "+id)
	dojo.xhrPost({
	    url: url,
	    form: form,
	    handle: function(data, args){
	      if (typeof data == "error") {
	        //console.warn("error!", args);
	      }
	      else {
	        dojo.byId("throbber").style.display = "none";
	        dijit.byId(id).attr('content',data);
	      }
	    }
	  });
}

/**
 * generic async post url only
 */
function sendAsyncUrlPostData(u, pD, id){
  dojo.xhrPost({
    url: u,
    postData: pD,
    handle: function(data, args){
      if (typeof data == "error") {
      //console.warn("error!", args);
      }
      else {
        dojo.byId("throbber").style.display = "none";
        dijit.byId(id).attr('content', data);
      }
    }
  });
}

function sendAsyncForm(form, id){
	//console.debug("running sendAsyncForm ");
	var url;
  var attrs = new Array;
  if(!dojo.isObject(form)){
  	form = eval("document."+form);
  }
  attrs = form.attributes;
  for (var i = 0; i < attrs.length; i++){
        var name = attrs[i].name;
        var value = attrs[i].value; 
      if( name == "action"){
          url = value;
      }
  }
  
  dojo.byId("throbber").style.display="block";  
	//console.debug("sending form "+form.name+" to: "+url+" attach to id: "+id);
  pxhrpost(form, url, id);
}
function sFormRfxMgm(form){
	var id = "rfx_mgmTabContainer";
	var conid = getStabId(id);
	sendAsyncForm(form, conid);
}
/*
 * 
 */
var tabid;
var content;
var vars;
var run = false;
var counter = 0;
function deepJumpHelper(itemid){
	//console.debug("running deepJumpHelper");
	var extra = "&itemid="+itemid;
	changeRfxMgmContentOther('/servlets/DymRFQConnector', '?action=insert_new_rfq_item&template=rfq_create_browser_header&dojoWay=yes'+extra);
}
function helperHelper(){
	
}
function deepJumpHelperGeneral(stab, tabContent, tabContentParams, templateParams){
	//	deepJumpHelperGeneral("rfx_mgmt_open", "/servlets/AuctionConnector?template=rfx_tx_detail", "&lngCode=de&itemid=105135&txp=11208&dojoWay=yes")
	if (typeof templateParams == "undefined") {
		templateParams = "";
	}
	if (typeof tabContentParams == "undefined") {
		tabContentParams = "";
	}	
	var lngCode = "&lngCode="+dojo.locale;
	var template = "/servlets/AuctionConnector?template=rfx_mgmt_overview"+lngCode;
	
	location.href = template+templateParams;
	var id = "rfx_mgmTabContainer";
	var rfxTabContaikner = dijit.byId(id);
	dijit.byId(stab).setHref(tabContent+tabContentParams);
	rfxTabContaikner.selectChild(stab);
}

/*
 * springe in einen tab container 
 */
function jumpIntoRfxTab (tabid, content, vars) {
	//console.debug("running jumpIntoRfxTab function");
	var lngCode = "&lngCode="+dojo.locale;
	location.href='/servlets/AuctionConnector?template=rfx_mgmt_overview'+lngCode+'&testp=yes'+vars;
}
function getForm(){
	var formname
	dojo.xhrGet({
		 url: "/servlets/TmpSessionVarsConnector?crud=read",
		 handleAs: "text",
		 load: function(data) {
			var values = eval("["+data+"]");
			console.debug("values: "+values+" length: "+values.length);
			
			for (var i = 0; i < values.length; i++){
				var pair = values[i];
				var sss = pair.split(";");
				if (sss[0] == "formname"){
					formname= sss[1];
					values.splice(i,1);
					console.debug(formname);
				}
			}
			
			
			for (var ii = 0; ii < values.length; ii++){
				var pair = values[ii];
				var sss = pair.split(";");
				if (eval("document."+formname+"."+sss[0])){
					var ele = eval("document."+formname+"."+sss[0]);
				} else {
					//console.debug("error");
				}
				ele.value = sss[1];
				console.debug("set name/value:"+ele+"/"+sss[1]);
				if (ele.type == radio ) {
					if (ele.value == 1) {
						ele.checked=true;
					}
				}
			}
		}
	})
}
function setForm(form){
	//console.debug("save "+form.name+"to backend");
	dojo.create(
			"input",
	    { type: "hidden", name:"crud", value:"create" },
	    form 
	);
	dojo.create(
			"input",
	    { type: "hidden", name:"formname", value:form.name },
	    form 
	);
	dojo.xhrPost({
	    url: "/servlets/TmpSessionVarsConnector",
	    form: form,
	    handle: function(data, args){
	      if (typeof data == "error") {
	        //console.warn("error!", args);
	      }
	      else {
	      	//console.debug("saved Form");
	      }
	    }
	  });
}
function loadGetToId(uri, id){
	dojo.byId("throbber").style.display="block";  
	dojo.xhrPost({
		url: uri,
		handleAs: "text",
		load: function(data) {
			dojo.byId("throbber").style.display = "none";
			//console.debug("set id: "+id);
			//console.debug(data);
			dijit.byId(id).attr('content',data);
		}
	});
}
function loadGetToIdNoThrobber(uri, id){
	dojo.xhrPost({
		url: uri,
		handleAs: "text",
		load: function(data) {
			//console.debug("set id: "+id);
			//console.debug(data);
			dijit.byId(id).attr('content',data);
		}
	});
}
function sendFormRfxMgm(form){
	var id = dijit.byId('rfx_mgmTabContainer').selectedChildWidget.id;
	sendAsyncForm(form,id);
}

function aktivateTabs(containerID){
	dojo.query(".deaktivatimg").forEach(function (ele, i){
		dojo.destroy(ele);
	});
	//console.debug("test1");
	var tabC = dijit.byId(containerID) ;
	var allTabs = tabC.getChildren();
	var pre = "dijit_layout__TabButton_";
	dojo.forEach(allTabs, function(entry, i){
		var index = tabC.getIndexOfChild(entry);
		var tabB = dijit.byId(pre+index);
		var tabBN = tabB.domNode;
		tabBN.setAttribute("style","");
		dijit.byId("dijit_layout__TabButton_5").setAttribute("style","float:right;margin-right:18px;");
	});
}

function enableRFXBottuns() {
	aktivateTabs('rfx_mgmTabContainer');
}
function deAktivateTabs(containerID){
	var tabC = dijit.byId(containerID) ;
	var tabS = tabC.selectedChildWidget;
	var pre = "dijit_layout__TabButton_";
	var indexS = tabC.getIndexOfChild(tabS);
	var allTabs = tabC.getChildren();
	var nonSelectedTabs = new Array();
	
	dojo.forEach(allTabs, function(entry, i){
		if (entry != tabS){
	  		nonSelectedTabs.push(entry);
	  }
	});
	dojo.forEach(nonSelectedTabs, function(entry, i){
		var index = tabC.getIndexOfChild(entry);
		var tabB = dijit.byId(pre+index);
		var tabBN = tabB.domNode;
		var h = tabBN.offsetHeight;
		var w = tabBN.offsetWidth;
		var topb = tabBN.offsetTop;
		var leftb = tabBN.offsetLeft;
		//console.debug("height: "+h+" width: "+w+" top: "+topb+" left: "+leftb);
		if (dojo.isIE > 0){
			tabB.setAttribute("style","cursor:not-allowed; filter: alpha(opacity = 50);");
		} else {
			tabB.setAttribute("style","cursor:not-allowed; opacity:0.5;");
		}
		var parent = tabBN.parentNode.parentNode;
		var node = dojo.create(
				"img",
				{ src: "/images/private/disabled.gif", style: {cursor:"not-allowed", position: "absolute", top: topb+"px", left: leftb+"px", zIndex: "999", width: w+"px", height: h+"px"}}, 
				parent
		);
		/* set "class" via dojo.attr workaround for ie (class is a reserved word)*/
    dojo.attr(node, "class", "deaktivatimg");
	});
}

function disableRFXBottuns() {
	//console.debug("running disableRFXBottuns");
	var tabC = dijit.byId('rfx_mgmTabContainer') ;
	deAktivateTabs(tabC);
}

function fileUpload(url, form, id){
  dojo.byId("throbber").style.display = "block";
  dojo.io.iframe.send({
    url: url,
    method: "post",
    handleAs: "html",
    form: form,
    preventCache: true,
    load: function(data, ioArgs){
      if (typeof data == "error") {
      //console.warn("error!", args);
      }
      else {
        dijit.byId(id).setContent(data.firstChild.innerHTML);
        dojo.byId("throbber").style.display = "none";
      }
    }
  });
}
function tabnav(tab, container, inhalt){
		//console.debug("running tabnav: "+tab+"/"+container+"/"+inhalt);
		var tab = dijit.byId(tab);
		var c = dijit.byId(container);
		c.selectChild(tab);
		tab.attr('href',inhalt);
		tab.refresh();
}
function isUtils(){
	console.debug("Utils js ist available");
	return true;
}
/*
 * attach tranparent gif under node: nodeToAttach and with demensions and coordinates from nodeToOverlap   
 */
function transPic(nodeToAttach,nodeToOverlap ){
		
		var h = nodeToOverlap.offsetHeight;
		var w = nodeToOverlap.offsetWidth;
		var topb = nodeToOverlap.offsetTop;
		var leftb = nodeToOverlap.offsetLeft;
		
		var coords = dojo.coords(nodeToOverlap);
		 leftb = coords.x;
		 topb = coords.y;
		
		//console.debug("height: "+h+" width: "+w+" top: "+topb+" left: "+leftb);
		var parent = nodeToAttach;
		var node = dojo.create(
				"img",
				{ src: "/images/private/disabled.gif", style: {position: "absolute", top: topb+"px", left: leftb+"px", zIndex: "995", width: w+"px", height: h+"px"}}, 
				parent
		);
		/* set "class" via dojo.attr workaround for ie (class is a reserved word)*/
    dojo.attr(node, "class", "deaktivatimg");
    return node;
}	

function hasError(str) {
	var res = false;
	var  i = str.indexOf("errorXY");
	//console.debug("e index: "+i);
	if ( i > 0) {
		res = true;
	}
	return res;
}
var form0;
function saveForm(id){
  form0 = document.getElementById(id);
  //console.debug("test");
}
function getForm(id){
  var form1 = document.getElementById(id);
  for (var i = 0; i < form0.length; i++){
    form1[i].value = form0[i].value;
  }
}
function changeUriValue(uri, name, newValue){
	
	var query = uri.substring(uri.indexOf("?") + 1, uri.length);
	var prefix = uri.substring(0, uri.indexOf("?") + 1);
	var queryObject = dojo.queryToObject(query);
	queryObject[name] = newValue;
	var newQuery = dojo.objectToQuery(queryObject);
	newQuery = prefix+newQuery;
	return newQuery;
}
/*
 * arr = group of divs, or li tags
 * function will sum up all widths concerning array objects and set the cumulated with to a target tg
 */
function setCumWidth(arr, tg, corr){
	console.debug("running setCumWidth");
    var width = 0;
    var coords;
    //console.debug("test1");
    for(var i=0; i<arr.length; i++) {
      if(dojo.byId(arr[i])){
        coords = dojo.coords(dojo.byId(arr[i]));
        width = width + coords.w;
      }
    }
    width = width + corr;
    //console.debug("test2");
    if (dojo.byId(tg)){
    	dojo.byId(tg).style.width = width+'px';
    }
  }

/*
 * switch head button design and function
 */
function sSwitch(klickele){
	
	var methodName = "sSwitch";
	//console.debug("running "+methodName+": "+klickele.getAttribute("class"));
	var select = function(ele1){
		
		if ( dojo.hasClass(ele1, "selected")){
			//console.debug("nothing to do: already selected");
		} else {
			
			dojo.addClass(ele1, "selected");
			//console.debug(" to do:  selected for:"+ele1.getAttribute("class"));
			// get Children -- the save way
			dojo.query('> div', ele1).forEach(function (kind1, index){
				dojo.removeClass(kind1, "fakea");
				dojo.removeClass(kind1, "head");
				dojo.removeClass(kind1, "addArrow");
			});
		}
	};
	
	var unselect = function(ele){
		if ( dojo.hasClass(ele, "selected")){
			dojo.removeClass(ele, "selected");
			// get Children -- the save way
			dojo.query("div", ele).forEach(function (kind, index){
				//console.debug("test: "+kind.getAttribute("class")+"index"+index);
				dojo.addClass(kind, "fakea");
				dojo.addClass(kind, "head");
				dojo.addClass(kind, "addArrow"); 
			});
			
			
		} else {
			console.debug("ele alrady unselect");
		}
	};
	
	//get parent .. tue für alle kinder select unselect
	
	var p = klickele.parentNode;
	//console.debug("parent: "+p.getAttribute("class"));
	dojo.query('> div',p ).forEach(function(kind){
		//console.debug("kind: "+kind.getAttribute("class"));
		if (dojo.hasClass(kind, "selected")){
			unselect(kind);
		} else {
			select(kind);
		}
	});
	 
};








