﻿/* *****************************************
   asspScript - General javascript functions
	 for the alienSubSpace project 
	         
        A.Siklosi, Alien Consulting LLC.
	         2011.01.18.

Missing:  

 
  Objects:
  --------
   asspUtils	general utilities

   asspAjax	ajax calls, tracking, retrieval

   asspForm	form related function, field repetance,json group creation,valuation and errorprocessing, autocatch functions
   asspFormExtra

   asspLogin	normal and federated login/logout/register

   asspPopup	different types of popup solutions

   asspGeo
	map and geocoding functions 

   asspB2C	
ebusiness utilities
   asspCart     basic cart functions

   asspDisplay
	display helpers

   asspSearch	search utils  

   asspDB	local storage

   asspAccessibility
 
  ***************************************** */


// -- Compatibility --

function getHTMLVar(name,objectFieldName){return asspUtils.getHtmlTag(name,objectFieldName);}
function setHTMLVar(name,value){return asspUtils.setHtmlTag(name,value);}

// -------------------


var cBoxy=null;
var asspUtils=
 { e:
    function(p)
	{
	},
   addEvent:
    function(elm, evType, fn, useCapture)   //eg. addEvent(window, "load", function);
	{ if (elm.addEventListener){
		 elm.addEventListener(evType, fn, useCapture);
		 return true;
		}
		else if (elm.attachEvent){
		 var r = elm.attachEvent("on"+evType, fn);
		 return r;
		}
		else { alert("Please upgrade your browser to use full functionality on this page");}
	},

   removeEvent:
    function(elm, evType, fn, useCapture)   //eg. removeEvent(window, "load", function);
	{ if (elm.addEventListener){
		 elm.removeEventListener(evType, fn, useCapture);
		 return true;
		}
		else if (elm.attachEvent){
		 var r = elm.detachEvent("on"+evType, fn);
		 return r;
		}
		else { alert("Please upgrade your browser to use full functionality on this page");}
	},

   removeDOMelement:
    function(o)
	{ if(typeof o =="string"){o=document.getElementById(o);}
	  if(o!=null){o.parentNode.removeChild(o); o=null;}
	},

   removeAllChildren:
    function(o)
	{ if(typeof o =="string"){o=document.getElementById(o);}
	  if(o!=null)
	     if (o.hasChildNodes())
		{ var len = o.childNodes.length;
		  for( var i=len - 1; i > -1; i-- )
			{ var tmpNode=o.childNodes[i];
			  //this.removeAllChildren(tmpNode);  //recursion
			  o.removeChild(tmpNode);
			  tmpNode=null;
			}
		}
	},

   swapClass:
    function(o,cn0,cn1)
	{ if(typeof o =="string"){o=document.getElementById(o);}
	  if(!o)return;
	  var cn=o.className;
	  if(cn)
		{ var ca=cn.split(" ");
		  var was=false;
		  for(var i=0;i<ca.length;i++)
			{if(ca[i]==cn0){ca[i]=cn1;o.className=ca.join(" ");return;}
			  else if(ca[i]==cn1){ca[i]=cn0;o.className=ca.join(" ");return;}
			}
		}
	},
 
   toggleClass:
    function(o,cne)
	{ if(typeof o =="string"){o=document.getElementById(o);}
	  if(!o)return;
	  var cn=o.className;
	  if(cn)
		{ var ca=cn.split(" ");
		  var was=false;
		  for(var i=0;i<ca.length;i++)
			{if(ca[i]==cne){ca[i]="";was=true;}
			}
		  if(was){o.className=ca.join(" ");}
		      else {o.className=cn+" "+cne;}
		}
		else{ o.className=cne;}
	},

   addClass:
    function(o,cne)
	{ if(typeof o =="string"){o=document.getElementById(o);}
	  if(!o)return;
	  var cn=o.className;
	  if(cn)
		{if (cn.indexOf(cne)<0)
			{ o.className=cn+((cn.length>0)?" ":"")+cne;}
		}
		else{ o.className=cne;}
	},

   removeClass:
    function(o,cne)
	{ if(typeof o =="string"){o=document.getElementById(o);}
	  if(!o)return;
	  var cn=o.className;
	  if(cn)
		{ var ca=cn.split(" ");
		  for(var i=0;i<ca.length;i++)
			{if(ca[i]==cne){ca[i]="";o.className=ca.join(" ");return;}
			}
		}
	},

   getHtmlTag:
    function(tagName,objectFieldName,parentElement)
      { if(!parentElement){parentElement=document;}
        var element;
	if(typeof tagName==="object"){element=tagName;}//direct element
	  else {element = parentElement.getElementById(tagName);
		if (element==null){var a1=parentElement.getElementsByName(tagName);if (a1==null){return a1;} if(a1.length<1){return null;} element=a1[0];}
		}
	var res= "";
 	if (!objectFieldName){objectFieldName="value";}
			else{if(objectFieldName==""){objectFieldName="value";}}
	if(element.type)
	switch(element.type){
		case "checkbox": if(element.checked)res=element.value;break;
		case "radio":var a1=parentElement.getElementsByName(tagName);for(var ii=0;ii<a1.length;ii++){if(a1[ii].checked)res=a1[ii].value;};break;
		case "select-one":var si=element.selectedIndex;res=(si>-1)?element.options[si][objectFieldName]:null;break;
		case "select-multiple":for(var jj=0;jj<element.options.length;jj++){if(element.options[jj].selected)res+=element.options[jj][objectFieldName]+",";};
					break;
		default:res=element.value;break;}
	else{res=element.innerHTML;}
	return res;
       },


   setHtmlTag:
    function(tagName,Value,fillValue,parentElement)   // fillValue fills the select or multiple select
      { //if (Value==null){return false;}
	if(!parentElement){parentElement=document;}
        var element;
	if(typeof tagName==="object"){element=tagName;}
		else{ element = parentElement.getElementById(tagName);
		      if (element==null){var a1=parentElement.getElementsByName(tagName); if (a1==null){return false;} if(a1.length<1){return false;} element=a1[0];}
		    }
	var ii=0;
	if(element.type)
	switch(element.type){
		case "checkbox": if(element.value==Value){element.checked=true;};break;
		case "radio":var a1=parentElement.getElementsByName(tagName);for(ii=0;ii<a1.length;ii++) {if(a1[ii].value==Value){a1[ii].checked=true;}}break;
		case "select-one":if(fillValue!=null){this.fillUpSelect(element,fillValue);};for(ii=0;ii<element.options.length;ii++){if(element.options[ii].value==Value){element.selectedIndex=ii;}}break;
		case "select-multiple": if(fillValue!=null){this.fillUpSelect(element,fillValue);};
					Value=","+Value+",";
					for(ii=0;ii<element.options.length;ii++)
					   { element.options[ii].selected=((Value.indexOf(","+element.options[ii].value+",")>-1)&&(element.options[ii].value.length>0));
					   }
					break;
		default:element.value=Value;break;}
	else{element.innerHTML=Value;}
	return true;
      },

   fillUpSelect: // [{value: ,text: },{..}]
    function(element,values)
      { element.options.length=0;
	for (var v=0;v<values.length;v++) //(var v in values)
	 { element.options[v]=new Option(values[v].text,values[v].value);
	 }
      },

   catchClickElements:
    function(parentElement,elementType)   //BUTTON/A
      {var elements = parentElement.getElementsByTagName(elementType);
	   for (var i=0;i<elements.length;i++)
	    { var attrRel=elements[i].getAttribute("alt");
	      if(attrRel!=null)
			if (attrRel.indexOf("attp:")==0)
			 { var newTarget=attrRel.substring(5);
 			   $(elements[i]).click(function(e){e.preventDefault();eval(newTarget); });
			 }
	    }
       },


   TranslateByAlt:  //actually by alt and for
    function(parentElement,dictionary)
       { var eList=["LABEL","SPAN","SELECT","INPUT"];
        for(var j=0;j<eList.length;j++) 
         {
	   var elements = document.getElementsByTagName(eList[j]);
	   for (var i=0;i<elements.length;i++)
	    { var attrRel=elements[i].getAttribute("alt");
	      if (attrRel==null){attrRel=elements[i].getAttribute("for");}
	      if(attrRel!=null)
		if(!elements[i].type)
		  { var tmpIH=elements[i].innerHTML; var lastChar=tmpIH.substring(tmpIH.length-1,tmpIH.length);
		    if(".,;:?!".indexOf(lastChar)<0){lastChar="";}
			var trans1=dictionary[attrRel];

		    if(trans1) elements[i].innerHTML=trans1+lastChar;
		  }
		else
		{
		 if("select-one,select-multiple".indexOf(elements[i].type)>-1)
			{for(var oi=0;oi<elements[i].options.length;oi++)
				{ var attrRel2= elements[i].options[oi].getAttribute("alt");
				  var tmpIH=elements[i].options[oi].text; var lastChar=tmpIH.substring(tmpIH.length-1,tmpIH.length);
				  if(".,;:?!".indexOf(lastChar)<0){lastChar="";}
				  var trans1=dictionary[attrRel2];
				  if(trans1) elements[i].options[oi].text=trans1+lastChar;
				}
			}
			else {elements[i].value=dictionary[attrRel];}
		}
	    }
	  }
       },


  stringify:
   function stringify(obj)
	{var t = typeof (obj);
         if (t != "object" || obj === null) // simple data type
	 	{if (t == "string") obj = '"' + obj + '"';
		 return String(obj);
		}
		else  // recurse array or object
		{ var n, v, json = [], arr =  (obj && (obj.constructor.toString().indexOf("Array")>-1));
		  //(obj && obj.constructor == Array);
		  for (n in obj)
			{ v = obj[n];
			  t = typeof(v);
			  if (obj.hasOwnProperty(n)&&(t!=="xfunction"))
				{ if (t == "string"){ v = this.escapeToJsonQ(v,false);}
					else if (t == "object" && v !== null) v = this.stringify(v);
				  json.push((arr ? "" : '"' + n + '":') +String(v));
				}
			}
		 return (arr ? "[" : "{") + String(json) + (arr ? "]" : "}");
		}
	},

  escapeToJsonQ:
   function(inString)
	{ if((inString==null)||(inString.length<1)){return "\"\"";}
	  if("[{".indexOf(inString.substring(0,1))>-1){return inString;}
	  inString=inString.replace(/\\/g,"\\\\");
	  inString=inString.replace(/\"/g,"\\\"");
	  inString=inString.replace(/\n/g,"\\n");
	  inString=inString.replace(/\r/g,"\\r");
	  inString=inString.replace(/\t/g,"\\t");
	  inString=inString.replace(/\f/g,"\\f");
	  inString=inString.replace(/\//g,"\\/");
	  return "\""+inString+"\"";
	},



  escapeToJson:
   function(inString)
	{ if(inString==null){return "";}
	  inString=inString.replace(/\\/g,"\\\\");
	  inString=inString.replace(/\"/g,"\\\"");
	  inString=inString.replace(/\n/g,"\\n");
	  inString=inString.replace(/\r/g,"\\r");
	  inString=inString.replace(/\t/g,"\\t");
	  inString=inString.replace(/\f/g,"\\f");
	  inString=inString.replace(/\//g,"\\/");
	  return inString;
	},

  getSessionId:
   function()
	{ var cookieNames=["JSESSIONID","PHPSESSID","ASP.NET_SessionId"];
	  for(var i=0;i<cookieNames.length;i++)
		{ var sessId=this.getCookie(cookieNames[i]);
		  if (sessId!=null){break;}
		}
	  return sessId;
	},


  getCookie:
   function(name)
	{ var a_all_cookies = document.cookie.split( ';' );
	  var a_temp_cookie = '';
	  var cookie_name = '';
	  var cookie_value = '';
	  var b_cookie_found = false;   // set boolean t/f default f
	  for ( i = 0; i < a_all_cookies.length; i++ )
		{ a_temp_cookie = a_all_cookies[i].split( '=' ); // now we'll split apart each name=value pair
		  cookie_name = a_temp_cookie[0].replace(/^\s+|\s+$/g, '');  // and trim left/right whitespace while we're at it
		  if ( cookie_name == name )
			{ b_cookie_found = true;  // we need to handle case where cookie has no value but exists (no = sign, that is):
			  if ( a_temp_cookie.length > 1 )
			     { cookie_value = unescape( a_temp_cookie[1].replace(/^\s+|\s+$/g, '') );}
			  // note that in cases where cookie is initialized but no value, null is returned
			  return cookie_value;
			  break;
			}
		   a_temp_cookie = null;
		   cookie_name = '';
		}
	if ( !b_cookie_found ){return null;}
       },




  setCookie:
   function(name,value,expires, path, domain, secure )
	{ if ( expires )
		{ expires = expires * 1000 * 60 * 60 * 24;
		  var today = new Date();
		  today.setTime( today.getTime() );
		  var expires_date = new Date( today.getTime() + (expires) );
		}
	  document.cookie = name + "=" +escape( value ) + ( ( expires ) ? ";expires=" + expires_date.toGMTString() : "" ) + ( ( path ) ? ";path=" + path : "" ) + ( ( domain ) ? ";domain=" + domain : "" ) + ( ( secure ) ? ";secure" : "" );
	},

  delCookie:
   function(name,path,domain)
	{ if (asspUtils.getCookie(name)){document.cookie = name + "=" +( ( path ) ? ";path=" + path : "") +( ( domain ) ? ";domain=" + domain : "" ) + ";expires=Thu, 01-Jan-1970 00:00:01 GMT";}
	},
	

  animateHtmlTag:
   function(tagId,animType,duration,func)
	{
	  if(animType=="fi")
		{ $("#"+tagId).css("display","block").hide().fadeIn(duration,function(){if(func){eval(func)}});
		}
		else{$("#"+tagId).fadeOut(duration,function(){if(func){eval(func)}});}
	  return false;  
	},

  convNum:  //converts numbers to given decimal format
   function(xnum,decplace)
	{ if(decplace==0){return Math.round(xnum);}
	  var kit=Math.pow(10,decplace);xnum=Math.round(xnum*kit);xnum=xnum/kit;var res=""+xnum;
	  var inn=res.indexOf(".");
	  if (inn<0){inn=res.length; res+=".0000000000";} else {res+="0000000000";}
	  res=res.substring(0,inn+decplace+1);return res;
	},

  formNum: //forms a number to a given length padded with leading 0
    function(num,lng)
	{ var o=String(num);
	  if (o.length<lng){o="0000000000".substring(0,lng-o.length)+o;}
	  return o;
	},

  ltrim:
   function(xval)
	{ var il=xval.length;if (il>0){var cc=0;while((cc<il)&&(xval.charAt(cc)==" ")){cc++;}if (cc>0){xval=xval.substring(cc,xval.length);}}return xval;
	},

  rtrim:
   function(xval)
	{ var il=xval.length;if (il>0){il--;var cc=il;while((cc>-1)&&(xval.charAt(cc)==" ")){cc--;}if (cc>-1){xval=xval.substring(0,cc+1);}else{xval="";}}return xval;
	},

  trim:
   function(xval)
	{return ltrim(rtrim(xval));
	},

  concatObjects:
   function(object0,object1)
	{ var outObject=object0;
	  for(var k in object1)
		{outObject[k]=object1[k];
		}
	  return outObject;
	},

  object2Json:
   function(o,excl)
	{ var out="";
	  if(!excl){excl={};}
	  for(var k in o)
	     if(excl[k]==null)
		{ out+=",\""+k+"\":\""+asspUtils.escapeToJson(o[k])+"\"";
		}
	  return "{"+out.substring(1)+"}";
	},

  getElementsByClassName:
    function(node,searchClass,tag)
	{if (document.getElementsByClassName) //browser support
	   { return node.getElementsByClassName(searchClass);
	   }
	 else
	   {var classElements = new Array();
	    var els = node.getElementsByTagName(tag);
	    var elsLen = els.length;
	    //var pattern = new RegExp("\b"+searchClass+"\b");  //RegExp("(^|\\s)" + searchClass + "(\\s|$)");
	    for (i = 0, j = 0; i < elsLen; i++)
	     //if ( pattern.test(els[i].className) )
		if(els[i].className.indexOf(searchClass)>-1)
		 { classElements[j] = els[i];
		   j++;
    		 }
 	    return classElements;
	   }
	},

  ox64encode:   //to:  Base64.encodeUrl
   function(inS)
	{return ( Base64.encode(inS).replace(/[+]/g,"_").replace(/[/]/g,"|").replace(/[=]/g,"-"));
	},

  ox64decode:
   function(inS)
	{ return ( Base64.decode(inS.replace(/[_]/g,"+").replace(/[|]/g,"/").replace(/[-]/g,"=")));
	}


 }






var asspAjax=
 { post:
    function(targ,data,func)
	{
	},

   ajaxTracker:   //tracking ajax calls with window hash
    function()
	{ var chash=document.location.hash;
	  
	},

   ajaxCallStore: // stores ajaxcall params in jsonformat, key is window hash, or autonumbers
	{},

   storeAjaxCall:
    function(hash,calledUrl,callback,params)
	{
	},

   retrieveAjaxCall:
    function(hash)
	{
	},

  ajaxCall:
   function(targetId,url,form)
	{  // if jquery is present or not  ifyes, call with it. 
	   var as = new sack();
	   as.requestFile = url+"&ssm=1&domid="+targetId; //&simm=1
	   as.method = "get";
 	   as.execute= true;
	   as.onLoading = function(){document.getElementById(targetId).innerHTML="loading";}
		  // starters[i].onLoaded = whenLoaded; 
		  // ajax666.onInteractive = whenInteractive;
 	   as.runAJAX(); 
	},

  dAjax:
   function(JsonPar,domid,completeFS)
	{ var ajax666 = new sack();
	  ajax666.setVar("ssm", "1");
	  ajax666.setVar("domid",domid);
	  for(i=0;i<JsonPar.length;i++) 
	    {if (JsonPar[i]["v"]){ajax666.setVar(JsonPar[i]["f"],JsonPar[i]["v"]);}
		else{ajax666.setVar(JsonPar[i]["f"],asspUtils.getHtmlTag(JsonPar[i]["n"])); }  // nparameter a valtozo neve, ahol az ertek talalhato
	    }
	  ajax666.requestFile = "aSSP.al";
	  ajax666.method = "post";
	  ajax666.execute= true;  //refill ajaxarea through onFragment 
  //ajax666.element = ajaxarea; ajax666.onLoading = whenLoading; ajax666.onLoaded = whenLoaded;  ajax666.onInteractive = whenInteractive;
	  if(completeFS) ajax666.onCompletion = function(){eval(completeFS);};
	  ajax666.runAJAX(); 
	}
 }







var asspLogin=
{ loginStore:{},

  openFederatedLogin:
    function(serviceProvider,cid)
	{ var url="/oauth.al?service="+serviceProvider+((cid!=null)?"&cid=1":"");
	  var opener = popupManager.createPopupOpener( { 'shouldEncodeUrls' : true});// 'onCloseHandler' : aspLogin.openCallback
	  opener.popup(450,500,url);
	},

  openCallback:
    function()
	{alert("Federated login callback...");
	},

  openAjaxSocialLogin:
    function(serviceProvider,callBack)
	{ var url="/oauth.al?service="+serviceProvider;
	  if (callBack!=null){ url+="&callback="+callBack;  // eg. "asspLogin.ajaxLogged";
			     }
	  var opener = popupManager.createPopupOpener( { 'shouldEncodeUrls' : true});// 'onCloseHandler' : aspLogin.openCallback
	  opener.popup(450,500,url);
	},

  ajaxLogged:  //logstat: 0-refused,1-ok,2-not enough
    function(logstat)
	{alert("Federated login callback: ajaxLogged:"+String(logstat));
	},

  /*   This functionis called whenever login required
	if login successfull it will call the supporter callBackFunction withcallBackData
   */
  callForLogin:
    function(paramO)
	{ 
	},


  logout:
   function(loType,newrl)
	{ var dataO={"op":"lo"};
	  if(loType!=null){dataO["_logout"]=loType;}
	  $.post("aSSP.al",dataO, function(data)
					{  if(newrl!=null)
						if(typeof newrl==="string"){document.location.href=newrl;}
							else {newrl();}   //function
					});
	},

  login:
   function(loType,newrl)
	{ var dataO={"op":"lo"};
	  if(loType!=null){dataO["_logout"]=loType;}
	  $.post("aSSP.al",dataO, function(data)
					{  if(newrl!=null)
						if(typeof newrl==="string"){document.location.href=newrl;}
							else {newrl();}   //function
					});
	}

 }







var asspForm=
 {
  collectFormData:
   function (formId,fieldList,jsonFieldList,dataO,setcss)
		{ // alert("collectFormData:"+fieldList+"//"+jsonFieldList);
		  var jsonStore={};
		  var formContainer=document.getElementById(formId);
                  if(dataO==null){dataO=new Object();}
		  if(jsonFieldList!=null)
		   { var jflist=jsonFieldList.split(",");
		     for(var j=0;j<jflist.length;j++)
			{ var jfTag=jflist[j].split(":");
			  var jelements = document.getElementById((jfTag[1])?jfTag[1]:jfTag[0]);
			  var jFieldNames=jelements.getAttribute("alt");
			  jsonStore[jfTag[0]]=this.createJSONfromGroup(jfTag[1],jFieldNames,setcss);
			  asspUtils.setHtmlTag(jfTag[0],jsonStore[jfTag[0]]);
			}
		   }
		  var invertFieldListO={};
		  var flist=fieldList.split(",");  //fieldList=   maki:majom
		  for(var i=0;i<flist.length;i++)
			{ var fTag=flist[i].split(":");
			  if(fTag.length==1){dataO[fTag[0]]=this.getMultiDatafield(fTag[0],jsonStore[fTag[0]]); invertFieldListO[fTag[0]]=fTag[0];}  // dataO[fTag[0]]=$("#"+fTag[0]).val();
					else{dataO[fTag[1]]=this.getMultiDatafield(fTag[0],jsonStore[fTag[0]]); invertFieldListO[fTag[1]]=fTag[0];}  //field name transform
			  if(setcss!=null){$("#"+fTag[0]).css("background-color","");$("#"+fTag[0]+"_error").css("display","");}
			}
		dataO["invertFieldListO"]=invertFieldListO;
		return dataO;
		},  

	getMultiDatafield:
	function(fTag,jsstore)
		{ if(jsstore!=null){return jsstore;}
		  var fTagSublist=fTag.split("+");
		  if(fTagSublist.length==1){return this.checkCKEField(fTagSublist[0]);}
		  var res="";
		  for (var i=0;i<fTagSublist.length;i++)
			{ if(fTagSublist[i].length>1){res+=this.checkCKEField(fTagSublist[i]);}
						else {res+=fTagSublist[i];}
			}
		  return res;
		},

	checkCKEField:
	function(fTag)
		{ var ob=document.getElementById(fTag);
		  if(ob==null){return "";}
		  var attr=ob.getAttribute("alt");
                  if(attr!=null)
			if(attr="cke") {return $("#"+fTag).val();} //ckeditor
		  return asspUtils.getHtmlTag(fTag);
		},

	setFormData: 
	function (formId,setFieldList)  //sets json and other datas
		{ // var jsonFieldList=$("#jsonFieldList");    // $("#"+formId+" #jsonFieldList");
		  var jsonFieldList=asspUtils.getHtmlTag("jsonFieldList");
		  if(jsonFieldList!=null)
		  	{ var jsA=jsonFieldList.split(",");
			  for(var i=0;i<jsA.length;i++)
				{var jsAtag=jsA[i].split(":");
				 this.createGroupfromJSON(jsAtag[1],jsAtag[0]+"Template",asspUtils.getHtmlTag(jsAtag[0]));
				}
			}
		  var inputs = $("#"+formId+" :input");
		  var values = {};
		  for (var i in inputs)
			{ //alert("name:"+inputs[i].name);
			  if(inputs[i].getAttribute("alt")!=null){alert(inputs[i].getAttribute("alt"));}
			  values[inputs[i].name]=asspUtils.getHtmlTag(inputs[i]);
			}
		  // $inputs.each(function() {values[this.name] = $(this).val();})
		  var setFieldsJson=asspUtils.getHtmlTag("alienSet");
		  if(setFieldsJson!=null)
			{ eval("JSN="+setFieldsJson);
			  for (var j in JSN){asspUtils.setHtmlTag(j,JSN[j]);}
			}
	//var c=0; for (var j in values){if(c<10){alert(j+"="+String(values[j]))};c++;}	    
		},

	// fills the given template from an ajax call
	fillFormFromUrl:
	function(o)
		{ var dataO=o;
		  //for (var k in dataO) {alert(k+"="+dataO[k]);}
		  $.post(dataO["url"],dataO,
			function(data)
				{ //var fieldList=asspUtils.getHtmlTag("fieldList"+WIDcode); //element["fieldList"+WIDcode].value;
	  			  //var jsonFieldList=asspUtils.getHtmlTag("jsonFieldList"+WIDcode);
				  //var js0=JSN[0]; 
				  var JSonMap=null; //{};
				  //for (var k in js0) {JSonMap[k]=k;}
				  asspForm.fillFormData(o["formId"],data,JSonMap);
				}
				);
		},

      /*

	*/

	fillFormData: 
	function (formId,JSonData,JSonMap)  //sets json and other datas from a json object see.pure
		{ if(JSonMap==null){JSonMap={};}
		  if(typeof JSonData ==="string"){eval("JSonData="+JSonData);}
		  for (var ko in JSonData)
			{ //alert(ko+"  "+String(typeof JSonData[ko]));
			  //var k=((JSonMap==null)?ko:JSonMap[ko]);
			  var k= JSonMap[ko];
			  if(k==null){k=ko;}
			  if(typeof JSonData[ko]==="object") //subjson
				{ var fieldObj=document.getElementById(k+"Container");
				  if(fieldObj!=null) // json container
				 	{ var fieldNames=null;  //fieldObj.getAttribute("alt");
					  this.createGroupfromJSON(k+"Container",k+"Template",JSonData[ko]);
					  // (containerId,templateId,JSONVal,fieldNames)
					}
					else  //fields
					{ if (document.getElementById(k)){asspUtils.setHtmlTag(k,String(JSonData[ko]));}
						else {this.fillFormData(formId,JSonData[ko],JSonMap);}
					}
				}
			   else { 
				  if(JSonData[ko].substring(0,1)=="[") //string encoded json array
					{ //var fieldObj=document.getElementById(k+"Container");
					  var fieldNames=null; //fieldObj.getAttribute("alt");
					  if(!this.createGroupfromJSON(k+"Container",k+"Template",JSonData[ko]))
						{asspUtils.setHtmlTag(k,JSonData[ko]);}
					}
				    else {asspUtils.setHtmlTag(k,JSonData[ko]);}
				}
			   this.formTagSpecial(k);
			} 
		},

	formTagSpecial:   //cke or swfupl type fileds 
	function (tagId)
		{ var kElement=document.getElementById(tagId);
 		  var kAttribute=null;
		  if (kElement!=null){kAttribute=kElement.getAttribute("alt");}
		  if (kAttribute!=null)
			   {if(kAttribute=="cke")
				{ asspFormExtra.createEDITOR(kElement.getAttribute("id"));
				}
			     else if(kAttribute.substring(0,6)=="swfupl")
				{ var uplElems=kAttribute.split(":");
				  asspFormExtra.addUploaderControll2(uplElems[1],uplElems[2],uplElems[3],uplElems[4],uplElems[5]);
				}
			    }
		},

	//catch bele
	saveAlienForm:
	function (containerId,serverService,fieldList,jsonFieldList,dataO,okACT,preACT,errACT) //year+'.'+month+'.'+day+'.':birthday  to Solve
		{ if(preACT){eval(preACT);}
		  var formContainer=document.getElementById(containerId);
		  dataO=this.collectFormData(containerId,fieldList,jsonFieldList,dataO,"0");
		  var invertFieldListO=dataO["invertFieldListO"];
		  dataO["invertFieldListO"]="";
		   // dataO["debug"]="1";
		  //for(var k in dataO){alert(k+"="+dataO[k]);}
		  $.post(serverService,dataO,
			function(data){ var JSON=null;
					if(typeof data==="object"){JSON=data;}
					  else if((data.substring(0,1)=="{")||(data.substring(0,1)=="["))
						{ try{eval("JSON="+data);
						     }catch(err){$("#"+containerId).html("alienSubSpace malformed json data: "+String(err)+" <br/><font size='1'>"+data+"</font>");}
						}
				 // alert(data);
					if(JSON!=null)
					  { var retVal=asspForm.processJsonAnswer(JSON,containerId,invertFieldListO);
					    //alert(retVal);
					    eval(okACT);
					  }
				         else if (data=="OK")
							{ /*alert("returns OK, can close this thing "+String(okACT));*/ 
							  eval(okACT);
							}
						    else{ $("#"+containerId).html(data);   //change template for the returned innerHTML	  
							}
					});
		},
	
    saveParam:
    function(paramGName,paramsToSave)
	{ if(typeof asspForm.paramStore==="undefined"){asspForm.paramStore=new Object();}
	  var retValue=(asspForm.paramStore[paramGName]!=null)?asspForm.paramStore[paramGName]:"";
	  asspForm.paramStore[paramGName]=paramsToSave;
	  return retValue;
	},
    getParam:
    function(paramGName)
	{ if(typeof asspForm.paramStore==="undefined"){return null;}
	  return ((asspForm.paramStore[paramGName]!=null)?asspForm.paramStore[paramGName]:null);
	},
    removeParam:
    function(paramGName)
	{ if(typeof asspForm.paramStore==="undefined"){return;}
	  asspForm.paramStore[paramGName]=null;
	},

    loginBoxy:
    function(boxyLayer,loginParName,username,password)  //"loginBoxy"
	{ var strO= asspForm.getParam(loginParName);
	  var templateID=strO["templateid"];
	  var serverService=strO["service"];
	  var dataO=strO["dataO"];
	  var boxyO=strO["boxyO"];
	  dataO["ASSP_LogName"]=username;
	  dataO["ASSP_Password"]=password;
	  var t=asspUtils.getHtmlTag(templateID);
	  if (dataO["profile"]==null)dataO["profile"]="0";
 	  $.post(serverService,dataO,
			function(JSonData){
				if (JSonData["LOG"]!=null) //log required
					{ 
					  dataO["ASSP_LogName"]=null; dataO["ASSP_Password"]=null; 
					  asspForm.saveParam("loginBoxy",{service:serverService,templateid:templateID,dataO:dataO,boxyO:boxyO});
					  boxyO["title"]="LOGIN REQUIRED";
					  new Boxy(TEMPLATE.login("loginBoxy"),boxyO);
					}
				    else
					{ var e0=Boxy.get(boxyLayer);
					  if (e0!=null){e0.hide();}
					  for(k in JSonData[0]){t=t.replace(eval("/\\[#"+k+"\\]/g"),JSonData[0][k]);}
					  new Boxy(t,boxyO);
					}
				});

	},


    fillBoxy:
    function(templateID,serverService,dataO,boxyO)
	{ var t=asspUtils.getHtmlTag(templateID);
	  if (dataO["profile"]==null)dataO["profile"]="0";
	  // for(k in dataO){alert(k+"="+dataO[k]);}
 	  $.post(serverService,dataO,
			function(JSonData){
				if (JSonData["LOG"]!=null) //log required
					{ 
					  asspForm.saveParam("loginBoxy",{service:serverService,templateid:templateID,dataO:dataO,boxyO:boxyO});
					  boxyO["title"]="LOGIN REQUIRED";
					  if(dataO["ASSP_LogName"]!=null){alert("try second: bad pw");}
					  new Boxy(TEMPLATE.login("loginBoxy"),boxyO);
					}
				    else
					{
					for(k in JSonData[0]){t=t.replace(eval("/\\[#"+k+"\\]/g"),JSonData[0][k]);}
					new Boxy(t,boxyO);
					}
				});
	},

    saveBoxy:
    function(templateID,serverService,dataO,boxyO)
	{  var t=asspUtils.getHtmlTag(templateID);
	  if (dataO["profile"]==null)dataO["profile"]="0";
 	  $.post(serverService,dataO,
			function(JSonData){
				if (JSonData["LOG"]!=null) //log required
					{alert("Log required"+String(JSonData));
					}
				    else
					{alert(String(JSonData));
					for(k in JSonData[0])
						{t=t.replace(eval("/\\[#"+k+"\\]/g"),JSonData[0][k]);
						}
					new Boxy(t,boxyO);
					}
				});

	},
	
    closeFormTest:function(id1,id2){alert("closeFormTest: id1="+String(id1)+"   id2="+String(id2));},
  
    catchAllalienForms:    //must catch onSaveOk and onError events: onSaveOk: "closeForm(formid)" 
    function(parentElement,okAction,WIDcode)
      { var elements = parentElement.getElementsByTagName("FORM");
	for (var i=0;i<elements.length;i++)
	    { var attrRel=elements[i].getAttribute("alt");
	      if(attrRel!=null)
			if (attrRel=="alienFORM")
			 { asspForm.catchAlienFormById(elements[i].getAttribute("id"),okAction,WIDcode);
			   // elements[i].removeAttribute("alt");
			 }
	    }
       },

    catchAlienFormById:    // catch an alienform by formtag id
    function(formId,okAction,WIDcode,preAction,errAction)
	{ if(WIDcode==null){WIDcode="";}
	  var element=document.getElementById(formId);
	   // alert("xx: "+element["fieldList"+WIDcode].value)
	  var action=element.getAttribute("action");
	  var fieldList=asspUtils.getHtmlTag("fieldList"+WIDcode); //element["fieldList"+WIDcode].value;
	  var jsonFieldList=asspUtils.getHtmlTag("jsonFieldList"+WIDcode);// was xjsonFieldList
	  // if(element["jsonFieldList"+WIDcode]!=null){jsonFieldList=element["jsonFieldList"+WIDcode].value;}

	  var containerId=element.parentNode.getAttribute("id");
	  if(okAction==null){okAction="asspForm.closeFormTest('p1','"+formId+"')";}
	  $(element).submit(function(e){ asspForm.saveAlienForm(containerId,action,fieldList,jsonFieldList,null,okAction,preAction,errAction);
					 e.preventDefault(); });
	},

   

	   
    processJsonAnswer:    //_genKey
    function(data,containerId,invertFieldListO,genKeyName)
      {if(data["OK"]!=null)
	  { if(data["OK"]==1)
		{ if(genKeyName!=null)
			{ if(data[genKeyName]!=null){return data[genKeyName];}else{return "";}
			}
			else {return "";}
		}
	    if(data["OK"]=="html") //change
		{ if (data["HTML"]){ $("#"+containerId).html(data["HTML"]);}
		}
	  }
	else if(data["REDIRECT"]!=null){window.location.href=data["REDIRECT"];}

	else if(data["ERROR"]!=null) {asspForm.processErrorMessage(data["ERROR"],containerId,invertFieldListO);}
		 else {alert("HTML Content Data arrived")
			if (data["HTML"]){ $("#"+containerId).html(data["HTML"]);}
			// if (data["CSS"]){ alert(data["CSS"]); if (data["JS"]){ alert(data["JS"]);}
		      }
       },  
	 
    processErrorMessage:
    function(data,containerId,invertFieldListO)
      { var errorHTML="<div class='errorMsg'>";
	   for(var i=0;i<data.length;i++)
		 for(k in data[i])
			{ var invFieldName=invertFieldListO[k]; 
			  if (!invFieldName){invFieldName=k;}
				// if (typeof b==="object") //string/boolean

			  var tranV=dict_hu[data[i][k]];
			  errorHTML+=k+": "+((tranV)?tranV:(data[i][k]))+"<br/>";
			  $("#"+invFieldName+"_error").html(((tranV)?tranV:(data[i][k])));
 			  $("#"+invFieldName).css("background-color","#ff6666");
 			  $("#"+invFieldName+"_error").css("display","inline");

			  if(typeof data[i][k]==="object") //repeating fields
				{var sdata=data[i][k];
				 for(var si=0;si<sdata.length;si++)
				   for(var sj=0;sj<sdata[si].length;sj++)
					{for (sk in sdata[si][sj])
						{ var tranV2=dict_hu[sdata[si][sj][sk]];
			   			  //errorHTML+=k+" mező értéke: "+((tranV)?tranV:(sdata[si][sk]))+"<br/>"
						 // alert(sk+"="+String(sdata[si][sj][sk])+"-->"+((tranV)?tranV:(sdata[si][sj][sk]))+":::"+document.getElementById(sk+String(si+1)).getAttribute("rel"));
						  $("#"+sk+String(si+1)).css("background-color","#ff6666");
						  $("#"+sk+"_error_"+String(si+1)).css("display","inline");
						  // $("#"+sk+String(si+1)).label=String(sdata[si][sj][sk]);
						}
					}
				}
			}
		
			//var test=""; // "<p>délkvésl</p><p>délkvésl</p><p>délkvésl</p><p>délkvésl</p><p>délkvésl</p><p>délkvésl</p><p>délkvésl</p><p>délkvésl</p><p>délkvésl</p><p>délkvésl</p><p>délkvésl</p><p>délkvésl</p><p>délkvésl</p><p>délkvésl</p><p>délkvésl</p><p>délkvésl</p><p>délkvésl</p><p>délkvésl</p><p>délkvésl</p><p>délkvésl</p><p>délkvésl</p><p>délkvésl</p>"
		    //errorHTML="<div style='height:200px;width:500px;overflow-x:auto;'>"+errorHTML+"</div>";
		    //if(cBoxy!=null){alert("close boxy");}
      		    //cBoxy=new Boxy(errorHTML,{title:"Hibás adatok",modal:false,unloadOnHide:true,clickToFront:true});
		// change background colors of errored fields
		// open up facebox window with error messages
  },


  
createJSONfromGroup: function(containerId,fieldNames,setcss)
 {var container=document.getElementById(containerId);
  var cntO = container.getAttribute("counter");
  if(cntO==null){return"";}
  var ccount=cntO*1;
  var JSTR="";
  var fldN=fieldNames.split(",");
 for(var i=1;i<=ccount;i++)
  {var fns=fldN[0].split(":"); if (fns.length<2){fns[1]=fns[0];}
   if(document.getElementById(fns[0]+String(i))!=null)
	{JSTR+="{";
	 var iJSTR="";
	 for(var j=0;j<fldN.length;j++)
	     { fns=fldN[j].split(":"); if (fns.length<2){fns[1]=fns[0];}
		var o1=	this.getMultiDatafield(fns[0]+String(i));
		//asspUtils.getHtmlTag(fns[0]+String(i));
		iJSTR+="\""+fns[1]+"\":\""+asspUtils.escapeToJson(o1)+"\",";
		if(setcss!=null){$("#"+fns[0]+String(i)).css("background-color","");$("#"+fns[0]+"_error_"+String(i)).css("display","none");}
	     }
	 if(iJSTR.length>0){iJSTR=iJSTR.substring(0,iJSTR.length-1);}
	 JSTR+=iJSTR+"},";
	}
 }
if(JSTR.length>0){JSTR="["+JSTR.substring(0,JSTR.length-1)+"]";}
return JSTR;
 },



/* returns false, if object not json */ 
createGroupfromJSON:  function(containerId,templateId,JSONVal,fieldNames)
 { var JSN;
   try{// alert("createjson:"+containerId)
     if(typeof JSONVal==="object"){JSN=JSONVal;}
	else if (JSONVal.length>0){eval("JSN="+JSONVal);}else{return false;}

     var container=document.getElementById(containerId);
     if(container==null)  //nincs container valószínűleg változóról van szó
	{var trans=",";
	 for(var i=0;i<JSONVal.length;i++){trans+=String(JSONVal[i]["value"])+",";}
	 asspUtils.setHtmlTag(containerId.substring(0,containerId.length-9),trans); 
	}
      else //van külön container
        { if (fieldNames==null) {fieldNames=container.getAttribute("alt");}
	  //alert("createjson:"+String(fieldNames));
	  if (!document.getElementById(templateId)) //handle 
		{ this.processJSONInternalTemplate(container,JSN,fieldNames);}
 	   else
		{ this.processJSONExternalTemplate(container,templateId,JSN,fieldNames);}
   	}
    }catch(a){return false;}
   return true;
 },

processJSONExternalTemplate:  function(container,templateId,JSN,fieldNames)
 { var counter = container.getAttribute("counter");
   if(counter==null){counter=0;}
   counter++; 
   var FN=fieldNames.split(",");
   var containerId=container.getAttribute("id");
   for(var ai=0;ai<JSN.length;ai++)
	{ asspForm.addRepeatedField(containerId,templateId);
	  for(var i=0;i<FN.length;i++)
		{ var fi=FN[i].split(":");
		  var content=JSN[ai][(fi.length==1)?fi[0]:fi[1]];
		  asspUtils.setHtmlTag(fi[0]+String(ai+counter),(content!=null)?content:"");
		  this.formTagSpecial(fi[0]+String(ai+counter));
		 }
	}
 },

processJSONInternalTemplate:  function(container,JSN,fieldNames)
 { var content=container.innerHTML;
   var out="";
   var FN=fieldNames.split(",");
   for(var ai=0;ai<JSN.length;ai++)
	{ var tmpS=content;
          for(var i=0;i<FN.length;i++)
		{tmpS=tmpS.replace(eval("/"+FN[i]+"/g"), JSN[ai][FN[i]]);
		}
	  out+=tmpS;
	}
   container.innerHTML=out;
 },

addRepeatedField: function(containerId,template,postTask)
{ var container = document.getElementById(containerId);
 var counter=container.getAttribute("counter");
 if(counter==null){counter=0;}
 counter++;
 container.setAttribute("counter",counter);
 // alert(String(container.getAttribute("counter"))+"//t:"+template+"||"+String(document.getElementById(template)));
 var templateHTML = document.getElementById(template).innerHTML;
 var itemDiv = document.createElement("div");
 itemDiv.setAttribute("id", template + counter + "_div");
 itemDiv.setAttribute("containerId",containerId);
 itemDiv.className = "repeatedField";
 itemDiv.innerHTML = templateHTML.replace(/COUNTER/g, counter);
 container.appendChild(itemDiv);
 if(typeof postTask!="undefined")
	{ postTask = postTask.replace(/COUNTER/g, counter);
	  eval(postTask);
	}
 return counter;
},

deleteRepeatedField: function(self)
{if(confirm("Biztos benne?"))
{ var elem=self.parentNode;
 // while ((elem.nodeName!="DIV")&&(elem.nodeName!="BODY")){elem=elem.parentNode;}
 while (elem.getAttribute("containerId")==null){elem=elem.parentNode;}
 var container = document.getElementById(elem.getAttribute("containerId"));
 if(container)container.removeChild(elem);	
}
 },

 }





var asspFormExtra={ 
 createEDITOR:       // creates CKEditor instances
    function(fieldId,HGH,TLB)
	{ var tbar=[['Maximize','Undo'],['Bold','Italic','Underline','Strike','Subscript','Superscript'],['PasteText','PasteFromWord','Source']];
	  if(TLB==null){TLB=tbar;}
	  if(HGH==null){HGH=(document.getElementById(fieldId)).style.height;}
	  $("#"+fieldId).ckeditor(this.callbackCKE,{
                filebrowserBrowseUrl :'/ckeditor/filemanager/browser/default/browser.html?tdomain=abdb.econservation.eu&Connector=/FCKConnector.al&subDirPath=user',
                filebrowserImageBrowseUrl : '/ckeditor/filemanager/browser/default/browser.html?Type=Media&tdomain=abdb.econservation.eu&Connector=/FCKConnector.al&subDirPath=user',
                filebrowserFlashBrowseUrl : '/ckeditor/filemanager/browser/default/browser.html?Type=Flash&tdomain=abdb.econservation.eu&Connector=/FCKConnector.al&subDirPath=user',
		filebrowserUploadUrl  :'/FCKUploader.al?Type=File&tdomain=abdb.econservation.eu&subDirPath=user',
		filebrowserImageUploadUrl : '/FCKUploader.al?Type=Image&tdomain=abdb.econservation.eu&subDirPath=user',
		filebrowserFlashUploadUrl : '/FCKUploader.al?Type=Flash&tdomain=abdb.econservation.eu&subDirPath=user',
		height:HGH, language:'en',baseHref:'http://abdb.econservation.eu',toolbar:TLB
		});
	},

 destroyEDITORs:	// destroys named CKEDITOR instances
    function(instNames)
	{ var iNames=instNames.split(",");
	  for (var i=0;i<iNames.length;i++)
		{ CKEDITOR.instances[iNames[i]].destroy();
		}
	},
 cleanEDITORs:	// destroys named CKEDITOR instances
    function(instNames)
	{ var iNames=instNames.split(",");
	  for (var i=0;i<iNames.length;i++)
		{ // CKEDITOR.instances[iNames[i]].val("");
		  $("#"+iNames[i]).val("");
		}
	},
 callbackCKE: //test
	function(){;},

 addUploaderControll2:
    function(container,log,button,filenamestore,wid,filetypes,options)
{ if (filetypes==null){filetypes="*.*";}
  if (options==null){options={};}
  // *.jpg;*.png;*.gif;*.tif"
 var sessionid=asspUtils.getSessionId(); // ("session_"+wid);
 if(sessionid!=null){sessionid=";jsessionid="+sessionid;}
 var iniO={	upload_url : "/alienUPLOAD.al"+sessionid,
		flash_url  : "/swfupload/swfupload.swf",
		flash9_url : "/swfupload/swfupload_fp9.swf",
	file_post_name : "Filedata",
	post_params : {"profile" : "0"},
	use_query_string : false,
	requeue_on_error : false,

		file_size_limit : "100000000",
		file_types : filetypes,
		file_types_description : "Image files",

	file_upload_limit : 1,
	file_queue_limit : 2,
		button_image_url : '/swfupload/buttons/SmallSpyGlassWithTransperancy_17x18.png',
		button_width : 17,
		button_height : 18,
		button_placeholder : $('#'+button)[0],
		debug: false
	}
       for (var k in options){iniO[k]=options[k];}
	$('#'+container).swfupload(iniO)
		.bind('fileQueued', function(event, file){
			var listitem='<li id="'+file.id+'" >'+
				'File: <em>'+file.name+'</em> ('+Math.round(file.size/1024)+' KB) <span class="progressvalue" ></span>'+
				'<span style="float:right;"><span class="status" >Pending</span>'+
				'<span class="cancel" >&nbsp;</span></span>'+
				'<div class="progressbar" ><div class="progress" ></div></div>'+
				'</li>';
			$('#'+log).append(listitem);
			$('li#'+file.id+' .cancel').bind('click', function(){
				var swfu = $.swfupload.getInstance('#'+container);
				swfu.cancelUpload(file.id);
				$('li#'+file.id).slideUp('fast');
			});
			// start the upload since it's queued
			$(this).swfupload('startUpload');
		})
		.bind('fileQueueError', function(event, file, errorCode, message){
			if(errorCode=="-100"){alert("Queue limit exceeded!");}
			if (file){alert('Size of the file '+file.name+' is greater than limit');}

		})
		.bind('fileDialogComplete', function(event, numFilesSelected, numFilesQueued){
			// $('#queuestatus'+cnt).text('Files Selected: '+numFilesSelected+' / Queued Files: '+numFilesQueued);
		})
		.bind('uploadStart', function(event, file){
			$('#'+log+'  li#'+file.id).find('span.status').text('Uploading...');
			$('#'+log+'  li#'+file.id).find('span.progressvalue').text('0%');
			$('#'+log+'  li#'+file.id).find('span.cancel').hide();
		})
		.bind('uploadProgress', function(event, file, bytesLoaded){
			//Show Progress
			var percentage=Math.round((bytesLoaded/file.size)*100);
			$('#'+log+'  li#'+file.id).find('div.progress').css('width', percentage+'%');
			$('#'+log+'  li#'+file.id).find('span.progressvalue').text(percentage+'%');
		})
		.bind('uploadSuccess', function(event, file, serverData){
			var item=$('#'+log+'  li#'+file.id);
			item.find('div.progress').css('width', '100%');
			item.find('span.progressvalue').text('100%');
			var pathtofile='<a href="uploads/'+file.name+'" target="_blank" >view &raquo;</a>';
			item.addClass('success').find('span.status').html('Done!!! | '+pathtofile);

		})
		.bind('uploadComplete', function(event, file){
			asspUtils.setHtmlTag(filenamestore,file.name);
			// upload has completed, try the next one in the queue
			$(this).swfupload('startUpload');
			if(options["onComplete"]){eval(options["onComplete"]);}
		})
	
//});	
}
}







/* ----------------------
    eBusiness functions

    - putToCart
    - recalculate
    - sendorder

   ---------------------- */
var asspB2C=
 { currencyDec:  //b2b decimal places for currencies default 2.
	{"HUF":0,"EUR":2,"USD":2,"GBP":2
	}, 

   getCurrencyDec:
     function(currName)
	{ var dp=this.currencyDec[currName.toUpperCase()];
	  return (dp!=null)?dp:2;
	}



 }





/* ********************
	ACCESSIBILITY
  Set Global font size
  Change active stylesheet
  
  must: addEvent(window, "load", function(){AC_setActiveStyleSheet('basic');});


 **********************  */

var asspAccessibility=
{
toggle: function()
 { var acs=this.getActiveStyleSheet();  var AC="off";
   if (acs=="acss"){this.setActiveStyleSheet("basic");}else{this.setActiveStyleSheet("acss");AC="on";}
   asspUtils.setCookie("access_ck","acss:"+AC);
 },
setFontSize: function(DS)
{var a= document.getElementsByTagName("body");var FS=a[0].style.fontSize;if (FS==''){FS="85%";}
 var FSV=1*FS.substring(0,FS.length-1);
 if (!isNaN(FSV))
  {if (DS=="+"){FSV+=(FSV<300)?25:0;}
     else {if(DS=="-"){FSV-=(FSV>25)?25:0;}else{FSV=DS;}} 
     document.body.style.fontSize="5em"; //String(FSV)+"%";
    //document.body.style.zoom=String(FSV)+"%";
    // store in cookie
  }
},
setActiveStyleSheet: function(title)
{var a= document.getElementsByTagName("link");  // it's a must to define here
 for(var i=0;i<a.length; i++) {if(a[i].getAttribute("rel").indexOf("style") != -1 && a[i].getAttribute("title"))
   {a[i].disabled = true;
      a[i].disabled = (a[i].getAttribute("title") != title);}}
},
getActiveStyleSheet: function()
{ var a= document.getElementsByTagName("link");  // it's a must to define here
 for(var i=0;i<a.length; i++) {
    if(a[i].getAttribute("rel").indexOf("style") != -1 && !a[i].disabled) return a[i].getAttribute("title");
  }
},
setOpenState:function()
 {var ck=asspUtils.getCookie("access_ck");
  if (ck)
   {if(ck.indexOf("acss:on")>-1){ACCESSIBILITY.setActiveStyleSheet("acss");}
    // font size
   }
 }
} //AC_setActiveStyleSheet('basic');
asspUtils.addEvent(window, "load", asspAccessibility.setOpenState);








var asspGeo=
{
  Earth_rad_mi: 3956.5,
  Earth_rad_km: 6367.4,
  oneDegree_mi:  69,
  oneDegree_km: 111,
  PI180: Math.PI/180,

  distance: function(olat,olon,dlat,dlon,unit)
	{ var EarthRadius=this.Earth_rad_km;
	  if(unit=="mi"){var EarthRadius=this.Earth_rad_mi;}
	  olat=Number(olat); olon=Number(olon); dlat=Number(dlat); dlon=Number(dlon);
	  return EarthRadius* 2 * Math.asin ( Math.sqrt ( Math.pow(Math.sin((olat - dlat)*this.PI180 / 2),2) +
		Math.cos(olat * this.PI180) * Math.cos(dlat *this.PI180)*Math.pow(Math.sin((olon - dlon)*this.PI180/ 2), 2)) ); 
	},

  boundingbox: function(olat,olon,dist,unit)
	{ var oneDegree=this.oneDegree_km;
	  if(unit=="mi"){oneDegree=this.oneDegree_mi;}
 	  olat=Number(olat); olon=Number(olon);
	  var lonSubCalc=dst/Math.abs(Math.cos(olat*this.PI180)*oneDegree);
	  var latSubCalc=dst/oneDegree;
	  var lat1 = olat-latSubCalc;
	  var lon1 = olon-lonSubCalc;
	  var lat2 = olat+latSubCalc;
	  var lon2 = olon+lonSubCalc;

	  return {lat1:lat1,lon1:lon1,lat2:lat2,lon2:lon2};

	},

  batchCalculate: function(olat,olon,dlat,dlon,unit)  //in km dist plus bounding box in one round
	{ 
	},


  getGeoLoc: // try different thing inp: t=IP only IP based, t=b=byBrowser
    function(o)
	{ if(o.t) if(o.t=="b"){asspGeo.getGeoLocByBrowser(o);return;}
	  asspGeo.getGeoLocByIp(o);
	},

  getGeoLocByIp: // {t:"IP",f:settlement,country,timezone,lat,lon"}
    function(o)
	{ var dataO={op:"qg",hsm:"1",wrap:""};
	  if (o.f)
		{ var outParNames="";
		  for(var k in o.f){outParNames+=","+o.f[k];}
		  dataO["outParNames"]=outParNames.substring(1);
		}
 	  $.post("/aSSP.al",dataO, function(data){
	     if(data!=null)  //object type
		{if(data["error"]==null){if(o.callBack){eval(o.callBack);}} else{;}
		}
	  });
	},

  setIPGeoLoc:
   function(o,data)
	{ alert("setIPGeoLoc");
	  var so=o.f
	  if(so) for (var k in so){asspUtils.setHtmlTag(k,data[so[k]]);}
	},

  // adr: adressstring, geotype:G/B google/Bing, popup,
  geoCodeAdress:
   function(o)
	{ if(o.geoType!="B")//google
		{ var aGM=new asspGoogleMap();
		  aGM.init();
		  aGM.GeoCodeIt(o.adr,o.popupid,o.latId,o.longId);
		  //memory leak??
		}

	}

}


var asspBingMap=
{
}



var asspGoogleMap=
function()
 {var GMObj;
  var gdir; var geocoder; var ajaxMon; var latTarget; var lonTarget; var altTarget; var postScript;
  var geoJSON;
  var baseDOC; var callBack;var finFN;
 }
asspGoogleMap.prototype ={
init: function(baseDOC,callBack,finFN)
{ GMObj=this;
 if (baseDOC){this.baseDOC=baseDOC;}else{this.baseDOC=document;}
 if (callBack){this.callBack=callBack;}else{this.callBack="GMObj.GEO2CNF";}
 if (finFN){this.finFN=finFN;}else{this.finFN="GMObj.GEO2FIN";}
 GMObj.geocoder = new google.maps.Geocoder(); // gm v3.1
},
GeoCodeIt: function(address,ajaxMon,latTarget,lonTarget,altTarget)
{if (GMObj.geocoder)
	{GMObj.ajaxMon=ajaxMon;GMObj.latTarget=latTarget;GMObj.lonTarget=lonTarget;GMObj.altTarget=altTarget;
	 GMObj.geocoder.geocode( { 'address': address}, GMObj.GeoCoded);
	}
},
GeoCoded: function(results, status)
{if(status!=google.maps.GeocoderStatus.OK){alert("Geocode was not successful for the following reason: " + status);/*closeform*/}
else
{GMObj.geoJSON=results;
if(GMObj.geoJSON.length>0)
 {var str1="<div id='sss' class='inp' style='display:block;border:#000 1px solid;padding:5px;height:auto;width:100%'>";
  for (var i=0;i<GMObj.geoJSON.length;i++)
   {str1+="<input type='radio' name='pln' id='pln' value='"+i+"' onclick='javascript:"+GMObj.callBack+"("+i+")' /> "+GMObj.geoJSON[i].formatted_address+"<br/>";}
    str1+="<div align='right' style='border-top:#000 1px solid;padding:3px;width:300px'><input type='button' value='close' class='btn' onclick='javascript:"+GMObj.finFN+"()'/></div></div>" 
    var e = GMObj.baseDOC.getElementById(GMObj.ajaxMon);e.innerHTML = str1;
 }
}
},
GEO2CNF: function(poz)
{GMObj.latTarget.value=GMObj.geoJSON[poz].geometry.location.lat();
 GMObj.lonTarget.value=GMObj.geoJSON[poz].geometry.location.lng();
},
GEO2FIN: function(){var e = document.getElementById(GMObj.ajaxMon);e.innerHTML ="";},

handleErrors: function()  // general errorhandler
{if (gdir.getStatus().code == G_GEO_UNKNOWN_ADDRESS) alert("No corresponding geographic location could be found for one of the specified addresses. This may be due to the fact that the address is relatively new, or it may be incorrect.\nError code: " + gdir.getStatus().code);
   else if (gdir.getStatus().code == G_GEO_SERVER_ERROR)  alert("A geocoding or directions request could not be successfully processed, yet the exact reason for the failure is not known.\n Error code: " + gdir.getStatus().code);
   else if (gdir.getStatus().code == G_GEO_MISSING_QUERY) alert("The HTTP q parameter was either missing or had no value. For geocoder requests, this means that an empty address was specified as input. For directions requests, this means that no query was specified in the input.\n Error code: " + gdir.getStatus().code);
   else if (gdir.getStatus().code == G_GEO_BAD_KEY) alert("The given key is either invalid or does not match the domain for which it was given. \n Error code: " + gdir.getStatus().code);
   else if (gdir.getStatus().code == G_GEO_BAD_REQUEST) alert("A directions request could not be successfully parsed.\n Error code: " + gdir.getStatus().code);
   else alert("An unknown error occurred.");
}
}






var TEMPLATE=
{
 login: function(loginParName)
 	{ return "<center>LOGIN REQUIRED</center><br/><br/><p align='justify'>Username:<input type='text' name='alfusername' id='assp_username' /><br/>"+
		"Password :<input type='password' name='alfpassword' id='assp_password' /><hr/><input type='button' value='LOGIN' onclick='javascript:asspUtils.loginBoxy(this,\""+loginParName+"\",asspUtils.getHtmlTag(\"assp_username\"),asspUtils.getHtmlTag(\"assp_password\"))'></p>";
	}

}










/* *********************
   advanced search abdb. 
   need templates & def.
   ********************* */

var asspSQL=
{  
  changeFLD:
    function(fieldN,opersN,valsN,CNTR)
	{var ss=asspUtils.getHtmlTag(fieldN);
	 var otype= hDef[ss].optype; 
	 var vtype= hDef[ss].valtype;
	 var oldVAL=asspUtils.getHtmlTag("op_"+CNTR);
	 var tmX=asspUtils.getHtmlTag("optype"+otype);
	 tmX=tmX.replace(eval("/optype"+otype+"X/g"), "op_"+CNTR);
	 asspUtils.setHtmlTag(opersN,tmX);asspUtils.setHtmlTag("op_"+CNTR,oldVAL);
	 oldVAL=asspUtils.getHtmlTag("val_"+CNTR);
	 tmX=asspUtils.getHtmlTag("valtype"+vtype);tmX=tmX.replace(eval("/valtype"+vtype+"X/g"),"val_"+CNTR);asspUtils.setHtmlTag(valsN,tmX);
	 asspUtils.setHtmlTag("val_"+CNTR,oldVAL);
	},

  decodeSQL:
    function(typeN,TSEQ)
	{ var CNS="abcdefghijklmnopqrstuvwzxyABCDEFGHIJKLMNOPQRSTUVWZXY_0123456789.";
	  TSEQ=ox64decode(TSEQ);
	  for(var o in hDef){
	     if(hDef[o].dbseq!=null)
		 {var x1=hDef[o].dbseq;var px=x1.indexOf("[TAG]");var x1a=x1.substring(0,px);
		  var tmpR=TSEQ.split(x1a);
		  if(tmpR.length>1){TSEQ=tmpR.join("and");}
		 }
	    }
	 var ME=TSEQ.split("and");
	 for (var j=1;j<ME.length;j++)  // 1-tol indul, mert az elso tetel ures a kezdeti and miatt
	   {var ME2=ME[j].split(")or(");
	    var MES=ME2[0];
	    var pzf0=1;
	    var pzf=1;// (-vel kezdodik
	    if(ME2.length>1){MES=ME2[1];pzf0=0;pzf=0;}
	    while((pzf<MES.length)&&(CNS.indexOf(MES.charAt(pzf))>-1)){pzf++;}
	    var FLN=MES.substring(pzf0,pzf);
	    if(ME2.length>1){FLN="fulltext";}  //present of or indicates fulltext
	    var pza=MES.indexOf("'",pzf);  // mindent '-olnunk kell emiatt
	    var OPN=MES.substring(pzf,pza);
	    var pzb=MES.lastIndexOf("'");
	    var VAL=MES.substring(pza+1,pzb);
	    VAL=VAL.replace(/''/g,"'");
	    var DCD="[f]"+OPN+"'"+((VAL.charAt(0)=="%")?"%":"")+"[v]"+((VAL.charAt(VAL.length-1)=="%")?"%":"")+"'";
	    VAL=VAL.substring((VAL.charAt(0)=="%")?1:0,(VAL.charAt(VAL.length-1)=="%")?(VAL.length-1):VAL.length);
	    var cj=asspForm.addRepeatedField('qTemplate', 'q');
	    setHTMLVar("dbfield_"+cj,hDef2[FLN]);
	    changeFLD("dbfield_"+cj,'opers_'+cj,'vals_'+cj,cj);
	    setHTMLVar("op_"+cj,DCD);
	    setHTMLVar("val_"+cj,VAL);
	   }
	},

  codeSQL:
    function(typeN)
	{var mxn=counters[typeN];
	var FIN="";
	for (var i=1;i<=mxn;i++)
	{var FLN=asspUtils.getHtmlTag("dbfield_"+i,null);
	if(FLN!=null) //process
	 {var tmA=(hDef[FLN].dbfield).split(",");
	  var tFLN="";
	  for (var i2=0;i2<tmA.length;i2++)
	   { var OPN=asspUtils.getHtmlTag("op_"+i); var VAL=trim(asspUtils.getHtmlTag("val_"+i)); OPN=OPN.replace("[f]",tmA[i2]); //hDef[FLN].dbfield  
	     VAL=VAL.replace(/'/g,"''");
	     tFLN+=((i2>0)?"or(":"(")+OPN.replace("[v]",VAL)+")";
	   }
	  var DBS=hDef[FLN].dbseq;
	 if(DBS!=null){FIN=FIN+DBS.replace("[TAG]",tFLN);}
	   else {if (tmA.length>1){FIN=FIN+"and("+tFLN+")";}else{FIN=FIN+"and"+tFLN;}}
	 }
	}
	return ox64encode(FIN);
	},

  decodeFLD:
   function(fldN)
	{ var pz=fldN.indexOf(".");
	  return((pz>-1)?fldN.substring(pz+1,fldN.length):fldN);
	},


  fillUpSelect:
   function(SelID)
	{ var sO=document.getElementById(SelID);
	  sO.options.length=0;
	  var ci=0;
	  for (var j in hDef)
	    {   sO.options[ci]=new Option(hDef[j].label,j);
		hDef2[hDef[j].dbfield]=j;
		ci++;
	    }
	},

  setupFRM:
   function(boxID,rpp,list)
	{fillUpSelect("dbfield_COUNTER");
	 setHTMLVar("rpp"+boxID,rpp);
	 setHTMLVar("list"+boxID,list);
	 var b64c=asspUtils.getHtmlTag("b64sql"+boxID);
//alert("b64c:"+String(b64c)+"//"+String(b64c.length));
	 if(b64c.length>1){decodeSQL("q",b64c);}else{asspForm.addRepeatedField('qContainer','qTemplate');}
	}

} //  end of asspSQL






/* ********************
    asspDisplay object
    
   ********************  */

var asspDisplay=
 {
  constants:
	{ "darkCover":"__darkDivZero",
	  "darkCoverStyle":"position:fixed;top:0px;left:0px;padding-right:0px;padding-bottom:0px;background-color:#000000;opacity:0.5;-moz-opacity:0.5; filter:alpha(opacity=0.5);z-index:33;width:100%;height:100%;",
	  "popupCode":'<div class="popupContainer" style="height:100%;display:block;position:relative;"><div class="topMarks"><span onclick="javascript:asspDisplay.togglePopupBox(this)">X</span></div><div id="%CONTENT%" class="popupContent"></div></div>'
	},

  popupStatus:{},

  darkScreen:
    function(toDo)
	{  var darkCover = window.document.getElementById(this.constants['darkCover']);
	   if (!darkCover)
		 {  darkCover = window.document.createElement('div');
		    darkCover['id'] = window.popupManager.constants['darkCover'];
		    darkCover.setAttribute('style', this.constants['darkCoverStyle']);
		    window.document.body.appendChild(darkCover);
		 }

	   if (!toDo) 
		{ darkCover.style.visibility = ((cState!="visible")?"visible":"hidden");
		  var cState=darkCover.style.visibility;
		}
		else{ darkCover.style.visibility = ((toDo=="1")?"visible":"hidden");}
	},

  /*  params: pID: popup ID usually DIV,width,height,content,contenturl

  */
  togglePopupBox:
     function(paramO)
	{
	 if (paramO.parentNode!=null)
		{ var pID=paramO.parentNode.parentNode.parentNode["id"];
		}
		else
		{ var pID=paramO["id"];
		}
	  var pB=document.getElementById(pID);
	  if(pB==null) //creates
		{   pB = window.document.createElement('div');
		    pB['id'] = paramO["id"];
		    pB['className'] ="popupOuter";
		    var c1=this.constants["popupCode"].replace(/%CONTENT%/g,"c_"+pID);
		    pB.innerHTML=c1;
		    pB.style.display="none";
		    window.document.body.appendChild(pB);
		}

	  if (this.popupStatus[pID]==null)  // non-visible
		 { paramO["pID"]=pID;
		   paramO["pB"]=pB;
		   var content=paramO["content"];
		   if (content){ this.showPopupBox(paramO,content);}
		   else if(paramO["contenturl"]) { $.post(paramO["contenturl"],{}, function(content){asspDisplay.showPopupBox(paramO,content);});}
		 }
		 else { var closeBack=this.popupStatus[pID];
			this.popupStatus[pID]=null;
			if (closeBack!="1"){asspUtils.animateHtmlTag(pID,"fo",450,closeBack);}
		  	 else{asspUtils.animateHtmlTag(pID,"fo",450);}
		      }
	},


  showPopupBox:
   function(paramO,content)
	{ var pID=paramO["pID"];
	  var pB=paramO["pB"];
	  var o1=document.getElementById("c_"+pID); //popupcontent
	  if(o1) o1.innerHTML=content;
 	  var wh=$(window).height();
	  var hgh=paramO["height"];
	  if(hgh!=null)
		 { if(parseInt(hgh)<0){hgh=wh-hgh;}
		 else {if(parseFloat(hgh)<=1){hgh=wh*hgh;}}
		 pB.style.height=hgh+"px";
		 }
	  var whr=0.75;
	  if(wh!=null)
		 { whr=parseInt(wh);
		   if(whr<=1){whr=$(window).width()*whr;}
		 }
		else
		 { whr=$(window).width()*0.75;}

	  pB.style.width=String(whr)+"px";
	  pB.style.left=String(($(window).width()-whr)/2)+"px";


	  this.popupStatus[pID]=(paramO["closeback"])?paramO["closeback"]:"1";
 	  // asspUtils.animateHtmlTag(pID,"fi",450,paramO["callback"]); rosszul néz ki
	  if (paramO["callback"]){eval(paramO["callback"]);}
	  asspUtils.animateHtmlTag(pID,"fi",450);
	  if (paramO["autoclose"]){setTimeout("asspDisplay.togglePopupBox({id:\""+pID+"\"})",paramO["autoclose"]);}

	},

  toggleShowHide:
   function(o,stype) 
	{ if(typeof o=="string"){var rr=o;}else{var rr=o.getAttribute("alt");}
	  var o2=document.getElementById(rr);
	  if (stype==null){stype="block";}
	  if (o2) o2.style.display=(o2.style.display=="none")?stype:"none"; 
	},



/*


<div id="popup0" class="popupOuter"> 
<div class="popupContainer" style="height:100%;display:block;">
  <div style="position:absolute;right:10px;top:2px;z-index:61;"><a href="javascript:artPeco.togglePopup('popup0')"><b>X</b></a>
  </div>
  <div id="noteplace" class="popupContent" style="position:relative;xwidth:100%;height:100%;display:block;"></div>  
</div>
 
</div>


creaSeq: [{"type":"div","id":"popup","style":"","classname":"popupouter","children":
		{ {"type":"div","id":"","style":"height:100%;display:block;","classname":"popupContainer","children":
			{{"type":"div","id":"","style":"position:absolute;right:10px;top:2px;z-index:61;","classname":"popupContainer"},
		
			}
		  }
		}

	},]

*/


};

/* ********************
    asspCart object
    
   ********************  */

var asspCart=
 {
  cartVars: {},

  setVariables: function(cartId,varObject)
	{ this.cartVars[cartId]=varObject; 
	},
   
  putToCart: function(itemtable,itemid,pricetag,itemquantity,minquantity,cartId)
	{ if (!cartId){cartId="b2ccart";}
	  if (!pricetag){pricetag="1";}
	  var dataO={op:"qc",sop:"a",hsm:"1",wrap:"",itemtable:itemtable,itemid:itemid,itemquantity:itemquantity,pricetag:pricetag};
 	  $.post("/aSSP.al",dataO, function(data){
	   if(typeof data==="object")
		{ if(data!=null)
			{ if(data["error"]!=null)
				{if(data["error"]=="-1") alert("Már benne leledzik a kosárban!!");
					else alert("Készlet kifogyott.")
				}
				else{asspCart.drawCart2Wrapper(data,(cartId!=null)?asspCart.cartVars[cartId]:null); //refresh storing cookie as well
				     }
			}
		}
		else if (data=="OK"){alert("returns OK, can close this thing");}else{alert(data);}
	   });
	},

  updateCart: function(itemtable,itemid,pricetag,itemquantity,minquantity,cartId)
	{if (!pricetag){pricetag="1";}
	 var dataO={op:"qc",sop:"u",hsm:"1",wrap:"",itemtable:itemtable,itemid:itemid,itemquantity:itemquantity,pricetag:pricetag};
 	  $.post("/aSSP.al",dataO, function(data){
	   if(typeof data==="object")
		{ if(data!=null)
			{ if(data["error"]!=null)
				{if(data["error"]=="-1") alert("Már benne leledzik a kosárban!!");
					else alert("Készlet kifogyott.")
				}
				else{asspCart.drawCart2Wrapper(data,(cartId!=null)?asspCart.cartVars[cartId]:null); //refresh storing cookie as well
				     }
			}
		}
		else if (data=="OK"){alert("returns OK, can close this thing");}else{alert(data);}
	   });
	},

   deleteItem:function(paramO)
	{ 
	/*
	  var hash=window.location.hash;
	  hash = hash.replace( /^#/, '' );
	  window.location.hash=(hash=="le")?"lf":"le";
	  */
	  var dataO=asspUtils.concatObjects(paramO,{op:"qc",sop:"d",hsm:"1",wrap:""});
	  var cartId=paramO["cartid"];
	  $.post("/aSSP.al",dataO, function(data){
	   if(typeof data==="object")
		{ alert("returned delete");if(data!=null)
			{ asspCart.drawCart2Wrapper(data,(cartId!=null)?asspCart.cartVars[cartId]:null);
			}
		}
		else if (data=="OK"){alert("returns OK, can close this thing");}else{alert(data);}
	   });

	},

   emptyCart:function(itemtable)
	{ var dataO={op:"qc",sop:"e",hsm:"1",wrap:"",itemtable:itemtable};
	  $.post("/aSSP.al",dataO, function(data){
	   if(typeof data==="object")
		{ if(data!=null)
			{ asspCart.drawCart2Wrapper(data);
			}
		}
		else if (data=="OK"){alert("returns OK, can close this thing");}else{alert(data);}
	   });
	},

   drawCart: function(cartId)
	{ var scart=null; //asspUtils.getCookie("asspCart");
	  if (asspCart.cartVars[cartId]["reDrawAlways"]==null){scart=asspUtils.getCookie("asspCart");}
	  if(!scart){asspCart.drawCARTSS(asspCart.cartVars[cartId]);return;}
	  if(scart.length<1){asspCart.drawCARTSS(asspCart.cartVars[cartId]);return;}
	  asspUtils.setHtmlTag(cartId,scart);
	},

   drawCARTSS: function(sysVars)  //ajax
	{ var dataO={op:"qc",sop:"s",hsm:"1",wrap:""};
	  $.post("/aSSP.al",dataO, function(data){
	  if(typeof data==="object"){asspCart.drawCart2Wrapper(data,sysVars);}
		else if (data=="OK"){alert("returns OK, can close this thing");}else{alert(data);}
	  });
	},

   drawCart2Wrapper: function(scart_js,sysVarPack)
	{ if (sysVarPack==null)
		{ for (var k in this.cartVars)
			{ sysVarPack=this.cartVars[k];
			  if(document.getElementById(sysVarPack["scartID"]))
				{ this.drawCartInner(scart_js,sysVarPack);}
			}
		}
		else
		{this.drawCartInner(scart_js,sysVarPack);}
	},

   drawCartInner: function(scart_js,sysVars)
	{
	 var outSTR="";
	 var fieldMap={"id2":"ID2","title":"ITEMTITLE","quant":"ITEMQUANT","me":"ME","curr":"CURR","id":"NEWID","pricetag":"PRICETAG","shopid":"SHOPID"};
	 var xClass=sysVars["className"];
	 var xEST=sysVars["extClass"];
	 var fullSum=0;
	 var fullItemNo=0;
         var subTemplateID=sysVars["subTemplateID"];
	 if (subTemplateID)
	   {var subTemplate=asspUtils.getHtmlTag(subTemplateID);
	    var p0=subTemplate.indexOf("<!--"); if (p0>-1){subTemplate=subTemplate.substring(p0+4);}
	    p0=subTemplate.lastIndexOf("-->"); if (p0>-1){subTemplate=subTemplate.substring(0,p0);}
	   }
	 var itemPlugin=sysVars["itemPlugin"];
	 var priceDecimal=sysVars["priceDecimal"];
	 var quantDecimal=sysVars["quantDecimal"];
	 if (priceDecimal==null){priceDecimal=2;}
	 if (quantDecimal==null){quantDecimal=0;}
	 var ordering=sysVars["ordering"];

	 var outSubTemplate="";
	 for(var l in scart_js)
	  { var shTitle=scart_js[l]["shopdata"]["shoptitle"];
	    var full_brutsum=0;
	    var itemNo=0;
	    var scart_jsI=scart_js[l]["items"];
	    var itemArray=[];
	    var iAc=0;
	    for (var k in scart_jsI){itemArray[iAc]=scart_jsI[k];iAc++;}
	    if(ordering) itemArray.sort( function(a, b)
				{ var A=a["datefrom"]+a["ord1"];
				  var B=b["datefrom"]+b["ord1"];
				  if(A<B){return -1;}
					else if(A>B){return 1;}
				  return 0;
				})
	   // for (var k in scart_jsI)
	    var cDate="";
	    for (var h=0;h<itemArray.length;h++)
	      {itemNo++;
	       var tmp_js=itemArray[h];   // scart_jsI[k];  //id2,id,title,
	       var cCURR=tmp_js["curr"];
	       tmp_js["quant"]=asspUtils.convNum(tmp_js["quant"],quantDecimal);
               var cDISC=0;
	       var netPriceCC=tmp_js["price"]-(tmp_js["price"]*cDISC/100);
	       var brutPrice=Math.round(netPriceCC*(100+1*tmp_js["vat"]))/100;
	       var line_brutsum =tmp_js["quant"]*brutPrice;
	       full_brutsum+=line_brutsum;
	       if(subTemplateID) 
		{ var tmpTemp=subTemplate;
		  tmpTemp=tmpTemp.replace(/%LINEBRUTSUM%/g,asspUtils.convNum(line_brutsum,priceDecimal));
		  tmpTemp=tmpTemp.replace(/%ITEMID%/g,tmp_js["id"]);

		 //hacked for yummer temporary
		  var pos=tmp_js["id2"].lastIndexOf("_");
		  if(pos>-1){tmp_js["id2"]=tmp_js["id2"].substring(0,pos);}
		  for(var fm in fieldMap)
			{tmpTemp=tmpTemp.replace(eval("/%"+fieldMap[fm]+"%/g"),tmp_js[fm]);
			}
	      	  if(ordering)
		    if(tmp_js["datefrom"]!=cDate)
			{ cDate=tmp_js["datefrom"];
			  var tmpTemplate="<span class=\"dateSpan\">"+cDate+"</span>";
			  tmpTemp=tmpTemp.replace(eval("/%datefrom%/g"),tmpTemplate);
			}
			else 
			{tmpTemp=tmpTemp.replace(eval("/%datefrom%/g"),"");
			}
		  outSubTemplate+=tmpTemp;
		}
		if(itemPlugin){eval(itemPlugin);}
 	      }
	    if (sysVars["cartSubHead"]){outSubTemplate=sysVars["cartSubHead"]+outSubTemplate;}
	    if (sysVars["cartSubFoot"]){outSubTemplate+=sysVars["cartSubFoot"];}


	    fullItemNo+=itemNo;
	    fullSum+=full_brutsum;
	    var templateID=sysVars["templateID"];
	    if(!templateID) 
		{outSTR="<table class=\""+xClass+"\" style=\""+xEST+"\" cellpadding='0' cellspacing='0' width='100%'><tr><td class='hdl'> </td><td class='hd1'><span class='hdt'>CART</span></td><td class='hdr'> </td></tr><tr><td class='mdl'> </td><td class='txt'>";
		 outSTR+=" Item: "+fullItemNo+"db<br>Total: "+asspUtils.convNum(fullSum,2)+" "+cCURR+".";
		 outSTR+="<div align=right><a href='#' onclick='javascript:asspCart.viewCart(document._rdr_x)'><font size=1>DETAILS</font></a></td><td class='mdr'> </td></tr><tr><td class='ftl'> </td><td class='ftm'> </td><td class='ftr'> </td></tr></table>";
		}
		else
		{outSTR=asspUtils.getHtmlTag(templateID);
		 if(outSubTemplate.length>0)outSTR=outSTR.replace(/%SUBTEMPLATE%/g,outSubTemplate);
		 outSTR=outSTR.replace(/%ITEMNO%/g,itemNo);
		 outSTR=outSTR.replace(/%TOTALSUM%/g,asspUtils.convNum(full_brutsum,priceDecimal));  //+" "+cCURR+"."
		}
	   }
	if(fullItemNo<1){outSTR="";}
	if (sysVars["cartHead"]){outSTR=sysVars["cartHead"]+outSTR;}
	if (sysVars["cartFoot"]){outSTR+=sysVars["cartFoot"];}
//alert(outSTR);
	asspUtils.setHtmlTag(String(sysVars["scartID"]),outSTR);
	asspUtils.setCookie("asspCart",outSTR); //store the outSTR in cookie
	},

   getCartInnerHtml:function()
	{ return asspUtils.getCookie("asspCart");
	},


   fillCustomerData:function(paramO)  //get the customers data from the server and fill the template with it.
	{ var dataO={op:"qc",sop:"c",hsm:"1",wrap:""};
	  $.post("/aSSP.al",dataO, function(data){
	  if(typeof data==="object"){ if(data["customer"]) //session customer data
					{for (var c1 in data["customer"])
					      asspUtils.setHtmlTag(c1,data["customer"][c1]);
					}
					else
					{ for (var c0 in data)
					    for (var c1 in data[c0])
					      asspUtils.setHtmlTag(c1,data[c0][c1]);
					}
				      if(paramO)
					if(paramO["callBack"])
						{ eval(paramO["callBack"]);
						} 
				       /*if(data["status"]["logged"]=="0"){return false;} // not logged
					return true;*/
				    }
		else if (data=="OK"){alert("returns OK, can close this thing");}else{alert(data);}
	  });
	},

   getShippingCost:function()  //get the customers data from the server and fill the template with it.
	{ var dataO={op:"qc",sop:"c",hsm:"1",wrap:""};
	  $.post("/aSSP.al",dataO, function(data){
	  if(typeof data==="object"){  for (var c0 in data)
					for (var c1 in data[c0])
					  asspUtils.setHtmlTag(c1,data[c0][c1]);
				       //if(data["status"]["logged"]=="0"){} // not logged
				    }
		else if (data=="OK"){alert("returns OK, can close this thing");}else{alert(data);}
	  });
	},


   checkOrder:function(paramO) //{fromfield:toField}
	{if (!paramO){paramO={};}
	 var fieldMap=paramO["fieldMap"];

	 var dataO={op:"qc",sop:"p",hsm:"1",wrap:""};
	 if(paramO["itemshopid"])
		{ dataO["itemshopid"]=paramO["itemshopid"];
		}
	 dataO=asspForm.collectFormData(paramO["formId"],paramO["fieldList"],paramO["jsonFieldList"],dataO,paramO["setcss"]);
	 //for(var k in dataO){alert(k+"="+dataO[k]);}

	  // resource from autoresource  qc.c  dataO["_rsn"]=paramO["_rsn"];
	  //dataO["_rsg"]=paramO["_rsg"];

	
	  $.post("/aSSP.al",dataO, function(data){
	  if(typeof data==="object"){if(data["error"]==null)
				      {for(var k in fieldMap)
					{ var v0=asspUtils.getHtmlTag(k);
					  if(v0!=null){ asspUtils.setHtmlTag(fieldMap[k],v0);
							dataO[k]=v0;
						      }
					}
					var div0=paramO["realTemplate"];
					var div1=paramO["checkTemplate"];
					if(div0==null){div0="cartCustomerTemplate";}
					if(div1==null){div1="D_cartCustomerTemplate";}
					var div0o=document.getElementById(div0);
					var div1o=document.getElementById(div1);
					div0o.style.display="none";
					div1o.style.display="block";

				       for (var c0 in data)
					for (var c1 in data[c0])
					  asspUtils.setHtmlTag(c1,data[c0][c1]);
					if(paramO["callBack"])
						{
						 eval(paramO["callBack"]);
						}
					}
					else //error
					{ // var o=
					  alert("Error: Please fill in the following fields");
					  //asspForm.processErrorMessage(data,containerId,invertFieldListO);
					  //
					} 
				    }
	  });
	},

   sendOrder:function(paramO)
	{ if (!paramO){paramO={};}
	  var dataO={op:"qc",sop:"o",hsm:"1",wrap:""};
	  if(paramO["itemshopid"])
		{ dataO["itemshopid"]=paramO["itemshopid"];
		}
	  $.post("/aSSP.al",dataO, function(data){
	  if(typeof data==="object"){  for (var c0 in data)
					for (var c1 in data[c0])
					  asspUtils.setHtmlTag(c1,data[c0][c1]);
					if(paramO["callBack"]){eval(paramO["callBack"]);} 
				    }
	  });
	},

   

 }


/* *********************************
    Calendar function 
 
    
   *********************************  */

var asspCalendar=
{ getCurrentDate:
   function()
	{ var date=new Date();
	  return date.getFullYear()+"."+asspUtils.formNum(date.getMonth()+1,2)+"."+asspUtils.formNum(date.getDate(),2)+".";
	}

}



/* *********************************
    non-static object for cart
 use the asspCart's static methodes
    
   *********************************  */


function asspCartDyna(selfName,selVars)
{ var selfName = selfName;
  var selfVars = selfVars;


  function updateCart(cartId)
	{ if (!cartId){cartId=selfVars["cartId"];}
	}



   this.updateCart=updateCart;
}













// -------------------------------------------------

var popupManager = {};

popupManager.constants = {
  'darkCover' : 'popupManager_darkCover_div',
  'darkCoverStyle' : 'position:absolute;top:0px;left:0px;padding-right:0px;padding-bottom:0px;background-color:#000000;opacity:0.5;-moz-opacity:0.5; filter:alpha(opacity=0.5);z-index:33;width:100%;height:100%;',
  'openidSpec' : {
     'identifier_select' : 'http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0%2Fidentifier_select',
     'namespace2' : 'http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0'
  } };

popupManager.getWindowInnerSize = function() {
  var width = 0;
  var height = 0;
  var elem = null;
  if ('innerWidth' in window)    // For non-IE
	{ width = window.innerWidth; height = window.innerHeight;
  	} else {
    // For IE,
    if (('BackCompat' === window.document.compatMode)
        && ('body' in window.document)) {
        elem = window.document.body;
    } else if ('documentElement' in window.document) {
      elem = window.document.documentElement;
    }
    if (elem !== null) { width = elem.offsetWidth; height = elem.offsetHeight;}
  }
  return [width, height];
};

// Computes the coordinates of the parent window.
// Gets the coordinates of the parent frame
popupManager.getParentCoords = function() {
  var width = 0;
  var height = 0;
  if ('screenLeft' in window) {
    // IE-compatible variants
    width = window.screenLeft;
    height = window.screenTop;
  } else if ('screenX' in window) {
    // Firefox-compatible
    width = window.screenX;
    height = window.screenY;
  }
  return [width, height];
};


popupManager.getCenteredCoords = function(width, height) {
   var parentSize = this.getWindowInnerSize();
   var parentPos = this.getParentCoords();
   var xPos = parentPos[0] + Math.max(0, Math.floor((parentSize[0] - width) / 2));
   var yPos = parentPos[1] + Math.max(0, Math.floor((parentSize[1] - height) / 2));
   return [xPos, yPos];
};


popupManager.darkenScreen = function() {
  var darkCover = window.document.getElementById(window.popupManager.constants['darkCover']);
  if (!darkCover) {
    darkCover = window.document.createElement('div');
    darkCover['id'] = window.popupManager.constants['darkCover'];
    darkCover.setAttribute('style', window.popupManager.constants['darkCoverStyle']);
    window.document.body.appendChild(darkCover);
  }
  darkCover.style.visibility = 'visible';
};


//  Returns a an object that can open a popup window customized for an OP & RP.
//  to use you call var opener = popupManager.cretePopupOpener(openidParams);
//  and then you can assign the 'onclick' handler of a button to
//  opener.popup(width, height), where width and height are the values of the popup size;
//
//  To use it, you would typically have code such as:
//  var myLoginCheckFunction = ...  some AJAXy call or page refresh operation
//  that will cause the user to see the logged-in experience in the current page.
//  var openidParams = { realm : 'openid.realm', returnToUrl : 'openid.return_to',
//  opEndpoint : 'openid.op_endpoint', onCloseHandler : myLoginCheckFunction,
//  shouldEncodeUrls : 'true' (default) or 'false', extensions : myOpenIDExtensions };
//
//  Here extensions include any OpenID extensions that you support. For instance,
//  if you support Attribute Exchange v.1.0, you can say:
//  (Example for attribute exchange request for email and name,
//  assuming that shouldEncodeUrls = 'true':)
//  var myOpenIDExtensions = {
//      'openid.ax.ns' : 'http://openid.net/srv/ax/1.0',
//      'openid.ax.type.email' : 'http://axschema.org/contact/email',
//      'openid.ax.type.name1' : 'http://axschema.org/namePerson/first',
//      'openid.ax.type.name2' : 'http://axschema.org/namePerson/last',
//      'openid.ax.required' : 'email,name1,name2' };
//  Note that the 'ui' namespace is reserved by this library for the OpenID
//  UI extension, and that the mode 'popup' is automatically applied.
//  If you wish to make use of the 'language' feature of the OpenID UI extension
//  simply add the following entry (example assumes the language requested
//  is Swiss French:
//  var my OpenIDExtensions = {
//    ... // other extension parameters
//    'openid.ui.language' : 'fr_CH',
//    ... };
popupManager.createPopupOpener = (function(openidParams) {
  var interval_ = null;
  var popupWindow_ = null;
  var that = this;
  var shouldEscape_ = ('shouldEncodeUrls' in openidParams) ? openidParams.shouldEncodeUrls : true;
  var encodeIfRequested_ = function(url) {
    return (shouldEscape_ ? encodeURIComponent(url) : url);
  };
  var identifier_ = ('identifier' in openidParams) ? encodeIfRequested_(openidParams.identifier) :
      this.constants.openidSpec.identifier_select;
  var identity_ = ('identity' in openidParams) ? encodeIfRequested_(openidParams.identity) :
      this.constants.openidSpec.identifier_select;
  var openidNs_ = ('namespace' in openidParams) ? encodeIfRequested_(openidParams.namespace) :
      this.constants.openidSpec.namespace2;
  var onOpenHandler_ = (('onOpenHandler' in openidParams) &&
      ('function' === typeof(openidParams.onOpenHandler))) ?
          openidParams.onOpenHandler : this.darkenScreen;

  var onCloseHandler_ = (('onCloseHandler' in openidParams) &&
      ('function' === typeof(openidParams.onCloseHandler))) ?
          openidParams.onCloseHandler : null;

  var returnToUrl_ = ('returnToUrl' in openidParams) ? openidParams.returnToUrl : null;
  var realm_ = ('realm' in openidParams) ? openidParams.realm : null;
  var endpoint_ = ('opEndpoint' in openidParams) ? openidParams.opEndpoint : null;
  var extensions_ = ('extensions' in openidParams) ? openidParams.extensions : null;

  // processes key value pairs, escaping any input;
  var keyValueConcat_ = function(keyValuePairs) {
    var result = "";
    for (key in keyValuePairs) {
      result += ['&', key, '=', encodeIfRequested_(keyValuePairs[key])].join('');
    }
    return result;
  };



  // Tests that the popup window has closed
  var isPopupClosed_ = function() {
    return (!popupWindow_ || popupWindow_.closed);
  };

  // Check to perform at each execution of the timed loop. It also triggers
  // the action that follows the closing of the popup
  var waitForPopupClose_ = function() {
    if (isPopupClosed_()) {
      popupWindow_ = null;
      var darkCover = window.document.getElementById(window.popupManager.constants['darkCover']);
      if (darkCover) {
        darkCover.style.visibility = 'hidden';
      }
      if (onCloseHandler_ !== null) {
        onCloseHandler_();
      }
      if ((null !== interval_)) {
        window.clearInterval(interval_);
        interval_ = null;
      }
    }
  };

  return {
    // Function that opens the window.
    popup: function(width, height,urlToOpen) {
      //var urlToOpen = buildUrlToOpen_();
      if (onOpenHandler_ !== null) { onOpenHandler_(); }
      var coordinates = that.getCenteredCoords(width, height);
      popupWindow_ = window.open(urlToOpen, "",
          "width=" + width + ",height=" + height +
          ",status=1,location=1,resizable=yes" +
          ",left=" + coordinates[0] +",top=" + coordinates[1]);
      interval_ = window.setInterval(waitForPopupClose_, 80);
      return true;
    }
  };
});






/**
*
*  Base64 encode / decode
*  http://www.webtoolkit.info/
*  http://en.wikipedia.org/wiki/Base64#URL_applications
*  +=62,/=63 ==64
**/
var Base64=
{_keyStr    : "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",
 _keyStrUrl : "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=",  //no padding remove '='
 encodeUrl: function(input)
	{ return ((Base64.encode(input)).replace(/[+]/g,"-").replace(/[/]/g,"_").replace(/[=]/g,""));
	},

 decodeUrl: function(input)
	{ // modify input
	  input=input.replace(/[-]/g,"+").replace(/[_]/g,"/");
	  input+="====".substring(0,input.length%4); //pad back
	  return Base64.encode(input);;
	},

 encode : function (input)
	{var output = "";
	 var chr1, chr2, chr3, enc1, enc2, enc3, enc4;
	 var i = 0;
  	 input = Base64._utf8_encode(input);
 	 while (i < input.length) {
 		chr1 = input.charCodeAt(i++);
		chr2 = input.charCodeAt(i++);
		chr3 = input.charCodeAt(i++);
		enc1 = chr1 >> 2;
		enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
		enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
		enc4 = chr3 & 63;
		if (isNaN(chr2)) {
			enc3 = enc4 = 64;
			} else if (isNaN(chr3)) {
			enc4 = 64;
			}
		output = output +
		this._keyStr.charAt(enc1) + this._keyStr.charAt(enc2) +
		this._keyStr.charAt(enc3) + this._keyStr.charAt(enc4);
		}
		return output;
	},
 
	// public method for decoding
 decode : function (input) 
	{var output = "";
	 var chr1, chr2, chr3;
	 var enc1, enc2, enc3, enc4;
	 var i = 0;
 	 input = input.replace(/[^A-Za-z0-9\+\/\=]/g, "");
 	 while (i < input.length) {
 		enc1 = this._keyStr.indexOf(input.charAt(i++));
		enc2 = this._keyStr.indexOf(input.charAt(i++));
		enc3 = this._keyStr.indexOf(input.charAt(i++));
		enc4 = this._keyStr.indexOf(input.charAt(i++));
		chr1 = (enc1 << 2) | (enc2 >> 4);
		chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);
		chr3 = ((enc3 & 3) << 6) | enc4;
		output = output + String.fromCharCode(chr1);
		if (enc3 != 64) {
			output = output + String.fromCharCode(chr2);
			}
			if (enc4 != 64) {
			output = output + String.fromCharCode(chr3);
			}
		}
	 output = Base64._utf8_decode(output);
 	 return output;
	},
 
 // private method for UTF-8 encoding
 _utf8_encode : function (string) {
		string = string.replace(/\r\n/g,"\n");
		var utftext = "";
 
		for (var n = 0; n < string.length; n++) {
 
			var c = string.charCodeAt(n);
 
			if (c < 128) {
				utftext += String.fromCharCode(c);
			}
			else if((c > 127) && (c < 2048)) {
				utftext += String.fromCharCode((c >> 6) | 192);
				utftext += String.fromCharCode((c & 63) | 128);
			}
			else {
				utftext += String.fromCharCode((c >> 12) | 224);
				utftext += String.fromCharCode(((c >> 6) & 63) | 128);
				utftext += String.fromCharCode((c & 63) | 128);
			}
 
		}
 
		return utftext;
	},
 
	// private method for UTF-8 decoding
 _utf8_decode : function (utftext)
	{var string = ""; var i = 0; var c = c1 = c2 = 0;
	 while ( i < utftext.length ) {
		c = utftext.charCodeAt(i);
		if (c < 128){string += String.fromCharCode(c);i++;}
		  else if((c > 191) && (c < 224)) {c2 = utftext.charCodeAt(i+1);string += String.fromCharCode(((c & 31) << 6) | (c2 & 63));i += 2;}
		  else {c2 = utftext.charCodeAt(i+1);c3 = utftext.charCodeAt(i+2);string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));i += 3;}
 		}
	 return string;
	} 
}




//  ----  ajax sack ----
/* Simple AJAX Code-Kit (SACK) v1.6.1 */
/* ©2005 Gregory Wild-Smith */
/* www.twilightuniverse.com */
/* Software licenced under a modified X11 licence, see documentation or authors website for more details */
function sack(file) { this.xmlhttp = null; this.resetData = function() { this.method = "POST"; this.queryStringSeparator = "?"; this.argumentSeparator = "&"; this.URLString = ""; this.encodeURIString = true; this.execute = false; this.element = null; this.elementObj = null; this.requestFile = file; this.vars = new Object(); this.responseStatus = new Array(2);}; this.resetFunctions = function() { this.onLoading = function() { }; this.onLoaded = function() { }; this.onInteractive = function() { }; this.onCompletion = function() { }; this.onError = function() { }; this.onFail = function() { };}; this.reset = function() { this.resetFunctions(); this.resetData();}; this.createAJAX = function() { try { this.xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");} catch (e1) { try { this.xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");} catch (e2) { this.xmlhttp = null;}
}
if (! this.xmlhttp) { if (typeof XMLHttpRequest != "undefined") { this.xmlhttp = new XMLHttpRequest();} else { this.failed = true;}
}
}; this.setVar = function(name, value){ this.vars[name] = Array(value, false);}; this.encVar = function(name, value, returnvars) { if (true == returnvars) { return Array(encodeURIComponent(name), encodeURIComponent(value));} else { this.vars[encodeURIComponent(name)] = Array(encodeURIComponent(value), true);}
}
this.processURLString = function(string, encode) { encoded = encodeURIComponent(this.argumentSeparator); regexp = new RegExp(this.argumentSeparator + "|" + encoded); varArray = string.split(regexp); for (i = 0; i < varArray.length; i++){ urlVars = varArray[i].split("="); if (true == encode){ this.encVar(urlVars[0], urlVars[1]);} else { this.setVar(urlVars[0], urlVars[1]);}
}
}
this.createURLString = function(urlstring) { if (this.encodeURIString && this.URLString.length) { this.processURLString(this.URLString, true);}
if (urlstring) { if (this.URLString.length) { this.URLString += this.argumentSeparator + urlstring;} else { this.URLString = urlstring;}
}
this.setVar("rndval", new Date().getTime()); urlstringtemp = new Array(); for (key in this.vars) { if (false == this.vars[key][1] && true == this.encodeURIString) { encoded = this.encVar(key, this.vars[key][0], true); delete this.vars[key]; this.vars[encoded[0]] = Array(encoded[1], true); key = encoded[0];}
urlstringtemp[urlstringtemp.length] = key + "=" + this.vars[key][0];}
if (urlstring){ this.URLString += this.argumentSeparator + urlstringtemp.join(this.argumentSeparator);} else { this.URLString += urlstringtemp.join(this.argumentSeparator);}
}
this.runResponse = function() { eval(this.response);}
this.runAJAX = function(urlstring) { if (this.failed) { this.onFail();} else { this.createURLString(urlstring); if (this.element) { this.elementObj = document.getElementById(this.element);}
if (this.xmlhttp) { var self = this; if (this.method == "GET") { totalurlstring = this.requestFile + this.queryStringSeparator + this.URLString; this.xmlhttp.open(this.method, totalurlstring, true);} else { this.xmlhttp.open(this.method, this.requestFile, true); try { this.xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded")
} catch (e) { }
}
this.xmlhttp.onreadystatechange = function() { switch (self.xmlhttp.readyState) { case 1:
self.onLoading(); break; case 2:
self.onLoaded(); break; case 3:
self.onInteractive(); break; case 4:
self.response = self.xmlhttp.responseText; self.responseXML = self.xmlhttp.responseXML; self.responseStatus[0] = self.xmlhttp.status; self.responseStatus[1] = self.xmlhttp.statusText; if (self.execute) { self.runResponse();}
if (self.elementObj) { elemNodeName = self.elementObj.nodeName; elemNodeName.toLowerCase(); if (elemNodeName == "input" || elemNodeName == "select" || elemNodeName == "option" || elemNodeName == "textarea") { self.elementObj.value = self.response;} else { self.elementObj.innerHTML = self.response;}
}
if (self.responseStatus[0] == "200") { self.onCompletion();} else { self.onError();}
self.URLString = ""; break;}
}; this.xmlhttp.send(this.URLString);}
}
}; this.reset(); this.createAJAX();}


﻿

/* ********************
    asspDisplay object
    
   ********************  */

var asspDisplayV2=
 {
  constants:
	{ "darkCover":"__darkDivZero",
	  "darkCoverStyle":"position:fixed;top:0px;left:0px;padding-right:0px;padding-bottom:0px;background-color:#000000;opacity:0.5;-moz-opacity:0.5; filter:alpha(opacity=0.5);z-index:33;width:100%;height:100%;",
	  "popupCode":'<div class="popupContainer" style="height:100%;display:block;position:relative;"><div class="topMarks"><span onclick="javascript:asspDisplayV2.togglePopupBox(this)">X</span></div><div id="%CONTENT%" name="content" style="overflow-y:auto;overflow-x:hidden;display:block;" class="popupContent"></div></div>'
	},

  popupStatus:{},

  darkScreen:
    function(toDo)
	{  var darkCover = window.document.getElementById(this.constants['darkCover']);
	   if (!darkCover)
		 {  darkCover = window.document.createElement('div');
		    darkCover['id'] = this.constants['darkCover'];
		    darkCover.setAttribute('style', this.constants['darkCoverStyle']);
		    window.document.body.appendChild(darkCover);
		 }
	   if (!toDo) 
		{ var cState=darkCover.style.visibility;
		  darkCover.style.visibility = ((cState!="visible")?"visible":"hidden");
		}
		else{ darkCover.style.visibility = ((toDo=="1")?"visible":"hidden");}
	},



  showPopupBox:
   function(paramO,content)
	{ var pID=paramO["pID"];
	  var pB=paramO["pB"];
	  var o1=document.getElementById("c_"+pID); //popupcontent
	  if(o1) o1.innerHTML=content;

	//alert("iH:"+String(o1.clientHeight)+"||cH:"+String(window.document.body.clientHeight));
 	  var wh=$(window).height();
	  var hgh=paramO["height"];
	  if(hgh!=null)
		 { if(parseInt(hgh)<0){hgh=wh-hgh;} else {if(parseFloat(hgh)<=1){hgh=wh*hgh;}}
		   pB.style.height=hgh+"px";
		 }
		else
		 { pB.style.height=String($(window).height()*0.75)+"px";
		 }
	  // alert("iH:"+String(o1.clientHeight)+"||cH:"+String(window.document.body.clientHeight)+"||jqH:"+String($(window).height()));
	  var whr=0.75;
	  if(wh!=null)
		 { whr=parseInt(wh);
		   if(whr<=1){whr=$(window).width()*whr;}
		 }
		else
		 { whr=$(window).width()*0.75;}
	  pB.style.width=String(whr)+"px";
	  pB.style.left=String(($(window).width()-whr)/2)+"px";
	  this.popupStatus[pID]=(paramO["closeback"])?paramO["closeback"]:"1";
	  if (paramO["callback"]){paramO["callback"](paramO,content);}
	  asspUtils.animateHtmlTag(pID,"fi",450);
	  if (paramO["autoclose"]){setTimeout("asspDisplayV2.togglePopupBox({id:\""+pID+"\"})",paramO["autoclose"]);}
	},



  /*  params: pID: popup ID usually DIV,width,height,content,contenturl

  */
  togglePopupBox:
     function(paramO)
	{
	 if (paramO.parentNode!=null)
		{ var pID=paramO.parentNode.parentNode.parentNode["id"];
		}
		else
		{ var pID=paramO["id"];
		}
	  var pB=document.getElementById(pID);
	  if(pB==null) //creates
		{   pB = window.document.createElement('div');
		    pB['id'] = paramO["id"];
		    pB['className'] ="popupOuter";
		    var c1=this.constants["popupCode"].replace(/%CONTENT%/g,"c_"+pID);
		    pB.innerHTML=c1;
		    pB.style.display="none";
		    window.document.body.appendChild(pB);
		}

	  if (this.popupStatus[pID]==null)  // non-visible
		 { paramO["pID"]=pID;
		   paramO["pB"]=pB;
		   var content=paramO["content"];
		   asspDisplayV2.darkScreen("1");
		   if (content){ this.showPopupBox(paramO,content);}
		   else if(paramO["contenturl"])
			 { $.post(paramO["contenturl"],{}, function(content){asspDisplayV2.showPopupBox(paramO,content);});
			 }
		 }
		 else { var closeBack=this.popupStatus[pID];
			this.popupStatus[pID]=null;
			asspDisplayV2.darkScreen("0");
			if (closeBack!="1"){asspUtils.animateHtmlTag(pID,"fo",450,closeBack);}
		  	   else{asspUtils.animateHtmlTag(pID,"fo",450);}
		      }
	},


  toggleShowHide:
   function(o,stype) 
	{ if(typeof o=="string"){var rr=o;}else{var rr=o.getAttribute("alt");}
	  var o2=document.getElementById(rr);
	  if (stype==null){stype="block";}
	  if (o2) o2.style.display=(o2.style.display=="none")?stype:"none"; 
	},

  destroyPopupBox:
   function(paramO)
	{ if (paramO.parentNode!=null){ var pID=paramO.parentNode.parentNode.parentNode["id"];}
		else {var pID=paramO["id"];}
	  //destroy the pID-id element
	  //delete this.popupStatus[pID];
	}

/*


<div id="popup0" class="popupOuter"> 
<div class="popupContainer" style="height:100%;display:block;">
  <div style="position:absolute;right:10px;top:2px;z-index:61;"><a href="javascript:artPeco.togglePopup('popup0')"><b>X</b></a>
  </div>
  <div id="noteplace" class="popupContent" style="position:relative;xwidth:100%;height:100%;display:block;"></div>  
</div>
 
</div>


creaSeq: [{"type":"div","id":"popup","style":"","classname":"popupouter","children":
		{ {"type":"div","id":"","style":"height:100%;display:block;","classname":"popupContainer","children":
			{{"type":"div","id":"","style":"position:absolute;right:10px;top:2px;z-index:61;","classname":"popupContainer"},
		
			}
		  }
		}

	},]

*/


};
