//functions.js
var Agent_locStr,Agent_loadListener,Box_openBoxes=[],Box_closedBoxes;

function findObj(n,d){ 
 var p,i,x; if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) { 
 d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);} 
 if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n]; 
 for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=findObj(n,d.layers[i].document); 
 if(!x && d.getElementById) x=d.getElementById(n); return x; 
}
function submitForm(frm){
	if(typeof(frm)=='string') frm = findObj(frm);
	frm.submit();
}
function fldSetValue(fld,value){
	if(typeof(fld)=='string') fld = findObj(fld);
	if(!fld) return;
	fld.value = value;
}
function fldSetFocus(fld){
	if(typeof(fld)=='string') fld = findObj(fld);
	if(!fld) return;
	try{fld.focus();}catch(e){ }
	return true;
}
function GMap_init(mapContainer,glat,glong,zoom){
	if(typeof(mapContainer)=='string') mapContainer = xGetElementById(mapContainer);
    if(!mapContainer){ alert('GMap_init(): An error occurred when starting the GMap. Unable to find mapContainer object.'); return; };
    zoom = 17-((typeof(zoom)!='undefined'&&zoom!=null)?zoom:12);
    if(typeof(GMap)!='undefined'){
    	mapContainer.innerHTML = '';
    	var opts={ mapTypes:[G_HYBRID_MAP] };
		var gmap = new GMap2(mapContainer,opts);
		gmap.addControl(new GSmallMapControl());
		if(glat&&glong){
			var gloc = new GLatLng(glat,glong);
			gmap.setCenter(gloc, zoom);
		}
		return gmap;
	}else{
		mapContainer.innerHTML = 'Unable to load location map. Unfortunately the service is unavailable.';
		return false;
	}
	xAddEventListener(window,'unload',GUnload);
}
function s_serializeToString(obj){
 var objType = typeof(obj);
 objType = objType.toString();
 if(objType.substring(0,1)=='o'){
  var len = (typeof(obj.length)!='undefined') ? obj.length : 0;
  var str = 'a:'+len+':{';
  for(var i = 0;i < len;i++){
   str+='i:'+i+';';
   str+=s_serializeToString(obj[i]);
  }
  str+= '}';
  return str;
 }else if(objType.substring(0,1)=='s'){
  return 's:'+obj.length+':"'+escape(obj)+'";';
 }else{
  window.status = 's_serializeToString: unable to serialize object of type \''+objType+'\'.';
  return false;
 }
}

function s_deserializeFromString(str){
 var objType = str.substring(0,1),obj = null;
 str=str.substring(2);
 if(objType=='a'){
  obj = new Array();
  var len = parseInt(str.substring(0,str.indexOf(':'))),sPos = str.indexOf('{'),ePos = 0,arKey,arD = 0;
  ePos = str.indexOf('}'); 
  //FIXME still doesn't handle nested arrays, 
  //should be able to find last bracket } instead 
  //of first from left
  str=str.substring(sPos+1,(ePos-sPos)+2);
  var parts = str.split(';');
  for(var i=0;i<parts.length-1;i+=2){ arKey=parseInt(parts[i].substring(2)); obj[arKey]=s_deserializeFromString(parts[i+1]); }
  return obj;
 }else if(objType=='s'){
  obj = new String();
  var len=parseInt(str.substring(0,str.indexOf(':'))); 
  var sPos=str.indexOf('"');
  obj=str.substring(sPos+1,len+3);
  return unescape(obj);
 }else{
  window.status = 's_deserializeFromString: unable to deserialize string \''+str+'\'. Unknown format.';
  return false;
 }
}

function s_cookieCreate(name,value,_d,_a,_b){
 var _a=_a||'/',_b=_b||window.location.host,_d=_d||365;
 var d=new Date();d.setTime(d.getTime()+(_d*24*60*60*1000));var c=name+"="+escape(s_serializeToString(value))+"; expires="+d.toGMTString()+"; path="+_a+"; domain="+_b;document.cookie=c;
}

function s_cookieRead(name) {
 var nameEQ=name+"="; var ca=document.cookie.split(';');
 for(var i=0;i<ca.length;i++){ 
 	var c=ca[i]; while(c.charAt(0)==' ') c=c.substring(1,c.length); 
 	if(c.indexOf(nameEQ)==0){ 
 		var value=unescape(c.substring(nameEQ.length,c.length)); 
 		var ret=s_deserializeFromString(value); 
 		return ret; 
 	}
 }
 return null;
}
function writePNG(img_url,img_w,img_h,img_alt){
	if(!img_alt) img_alt = '';
	if(navigator.userAgent.indexOf('MSIE')!=-1 && navigator.userAgent.indexOf('Opera')==-1){
		document.write('<div style="display:inline;width:'+img_w+'px;height:'+img_h+'px;filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src=\''+img_url+'\',sizingMethod=\'scale\');"></div>');
	}else{
		document.write('<img src="'+img_url+'" height="'+img_h+'" width="'+img_w+'" alt="'+img_alt+'" />');
	}
}
function Form_Autofocus(){ var objs=xGetElementsByTagName('input');var l=objs.length; for(var i=0;i<l;i++){	var af=objs[i].getAttribute('autofocus');var cID=(typeof(objs[i].id)!='undefined')?objs[i].id:''; if(!af) continue; if(!cID) return; if(af.toLowerCase()=='skipvalue'){ if(typeof(af.value)!='undefined' && af.value){continue;}else{setTimeout('xGetElementById("'+cID+'").focus()',20); return; }}else if(af&&af.toLowerCase()!='false'){setTimeout('xGetElementById("'+cID+'").focus()',20);	return; }}}
function Form_CheckDateField(obj){
	if(!obj)return; if(obj.value.length==0)return; var str=org=obj.value,day,month,year,ps,sl,mns,d=new Date(); var msg='The value \''+org+'\' is not a valid date value. Please provide a date in the format dd-mm-yyyy'; str = str.toLowerCase(); str = str.replace(/_/gi,'-'); if(obj.value.length<3){alert(msg);obj.focus();return false; }
	var mn=[
		['january','february','march','april','may','june','july','august','september','october','november','december'],	//en
		['januari','februari','maart','april','mei','juni','juli','augustus','september','oktober','november','december'],	//nl
		['januar','februar','märz','april','mai','juni','juli','august','september','oktober','november','dezember'],		//de
		['janvier','fevrier','mars','avril','mai','juin','juillet','aout','septembre','octobre','novembre','décembre'],		//fr
		['jan','feb','mar','apr','may','jun','jul','aug','sep','oct','nov','dec'],		//en
		['jan','feb','maa','apr','mei','jun','jul','aug','sep','okt','nov','dec'],		//nl
		['jan','feb','mrz','apr','mai','jun','jul','aug','sep','okt','nov','dez'],		//de
		['jan','fev','mrs','avr','mai','jun','jul','aou','sep','oct','nov','déc']		//fr
	];
	var wd=['sunday','monday','tuesday','wednesday','thursday','friday','saturday']; for(var i=0;i<mn.length;i++){ for(var m=0;m<12;m++){ mns=mn[i][m];ps=str.indexOf(mns);if(ps!=-1){sl=str.length;str=str.substr(0,ps)+(m+1)+str.substr(ps+mns.length); }}}
	str=str.replace(/ /gi,'-');str=str.replace(/--/gi,'-'); var dp=str.split(/[.\/-]/gi); if(dp.length==3){day=Number_makeInt(dp[0]); month=Number_makeInt(dp[1]);year=Number_makeInt(dp[2]);}else if(dp.length==2){day=Number_makeInt(dp[0]); month=Number_makeInt(dp[1]);year=d.getFullYear();}else{day=Number_makeInt(str.substring(0,2));month=Number_makeInt(str.substring(2,4));year=str.substring(4,8);year=Number_makeInt((year&&year.length)?year:d.getFullYear());}
	if(year<100&&year>=35)year+=1900;else if(year<100)year+=2000;else if(year>d.getFullYear()+100){obj.value='';alert(msg);obj.focus();return false;}; if(!isNaN(day)&&!isNaN(month)&&!isNaN(year)&&(day>=1&&day<=31)&&(month>=1&&month<=12)&&(year>=1905)&&((month==2&&day<=29)||month!=2)){ var d=new Date();d.setDate(day);d.setMonth(month-1);d.setFullYear(year); obj.value=d.getDate()+'-'+(d.getMonth()+1)+'-'+d.getFullYear(); obj.title=wd[d.getDay()]+' '+mn[0][d.getMonth()]+' '+d.getDate()+','+year; }else{obj.value='';alert(msg);obj.focus();return false;}
}

function Msg_toggleCompact(obj,collapser){
	if(typeof(obj)=='string') obj=findObj(obj);
	if(obj.className.toLowerCase()=='txtdiv_closed'){
		obj.className='txtDiv_opened';
		collapser.className='collapseSpanOpened';
	}else{
		obj.className='txtDiv_closed';
		collapser.className='collapseSpanClosed';
	}
}

function toggleMultipleRows(objID,listener,nv){
 var nv=nv||'';
 if(typeof(objID)!='string'){ var obj=objID; objID=(typeof(obj.id)!='undefined')?obj.id:'';}else{var obj=findObj(objID);}
 if(obj&&typeof(obj.length)!='undefined'&&obj.length>1){ var md='';
  for(i=0;i<obj.length;i++){
  	if(!obj[i])return;
   if(obj[i].style.display==nv){
    obj[i].style.display='none';md='none';
   }else{
    obj[i].style.display=nv;md=nv;
   }
  }
  if(listener&&typeof(listener)=='function') listener(objID,md);
 }else if(obj&&obj.style){
  if(obj.style.display==nv){
   obj.style.display='none';
   if(listener&&typeof(listener)=='function') listener(objID,'none');
  }else{
   obj.style.display=nv;
   if(listener&&typeof(listener)=='function') listener(objID,nv);
  }
 }
}


/* BoxData */
function in_array(item,arr){
 for(k in arr){
  if(arr[k]==item) return true;
 }
 return false;
}
function Box_removeOpen(objID){
	var na=[],l=(typeof(Box_openBoxes.length)!='undefined')?Box_openBoxes.length:0,nl=0;
	for(var i=0;i<l;i++){ if(Box_openBoxes[i]!=objID){ na[nl]=Box_openBoxes[i]; nl++; }}
	Box_openBoxes=na;
}
function Box_addOpen(objID){
 var l=(typeof(Box_openBoxes.length)!='undefined')?Box_openBoxes.length:0;
 if(!in_array(objID,Box_openBoxes)) Box_openBoxes[l]=objID;
}
function Box_processOpen(){
 Box_openBoxes=s_cookieRead('Box_openBoxes');
 if(!Box_openBoxes) Box_openBoxes=[];
 var l=(typeof(Box_openBoxes.length)!='undefined')?Box_openBoxes.length:0;
 for(var i=0;i<l;i++){
 var cid=Box_openBoxes[i];
 if(cid) toggleMultipleRows(cid);
 }
}
function Box_displayListener(objID,dsp){
	if(dsp=='block'){
		Box_addOpen(objID);
	}else{
		Box_removeOpen(objID);
	}
}
function Box_saveOpen(){
	if(typeof(Box_openBoxes)!='undefined'){
		s_cookieCreate('Box_openBoxes',Box_openBoxes,365);
	}
}

function Display_calcStringWidth(str,fontID){
	if(typeof(wArr)!='undefined'&&typeof(wArr[fontID])!='undefined'){ var w=0,cc=0,cw=0;for(var i=0;i<str.length;i++){cc=str.charCodeAt(i);cw=(typeof(wArr[fontID][cc])!='undefined')?wArr[fontID][cc]:wArr[fontID][48];w+=cw;} return w; }
	return false;
}
function Display_makeStringMax(str,fontID,maxW){
	if(typeof(wArr)!='undefined'&&typeof(wArr[fontID])!='undefined'){
		var w=0,nStr='',dW=wArr[fontID][46]*3,cc=0,cw=0,fbs='.,# &*!?';
		if(!str)return '';if(!str.length)return '';
		for(var i=0;i<str.length;i++){cc=str.charCodeAt(i);cw=(typeof(wArr[fontID][cc])!='undefined')?wArr[fontID][cc]:wArr[fontID][48];w+=cw;
			if(w+dW>maxW){ while(fbs.indexOf(nStr.charAt(nStr.length-1))!=-1)nStr=nStr.substring(0,nStr.length-1); return nStr+'...'; }else nStr+=str.charAt(i);
		} return nStr;
	}
	return str;
}
function Display_calcSingleRowItems(){
	var elts=xGetElementsByClassName('singleRow');
	if(!elts)return;
	for(var i=0;i<elts.length;i++){
		var t=elts[i],p=elts[i];
		while(t.nodeType!=3&&t.firstChild)t=t.firstChild;
		var ff=(xGetComputedStyle(p,'font-family'));ff=ff?ff:xGetComputedStyle(document.body,'font-family');ff=ff.split(',')[0];ff.replace(' ','');
		var fs=(xGetComputedStyle(p,'font-size'));fs=fs?fs:xGetComputedStyle(document.body,'font-size');
		var fw=(xGetComputedStyle(p,'font-weight'));fw=parseInt(fw)?parseInt(fw):parseInt(xGetComputedStyle(document.body,'font-weight'));fw=(fw==700?'bold':'normal');
		if(xGetElementsByTagName('strong',p))fw='bold';if(xGetElementsByTagName('b',p))fw='bold';
		var k=ff+'-'+fw+'-'+fs;k=k.toLowerCase();
		var pw=xGetComputedStyle(p,'width');pw=((pw=='auto'||!pw)?'':parseInt(pw));
		var ms=document.createElement('span');
		p.style.display='block';ms.id='sri_ms_'+i;ms.style.width='1px';	ms.style.height='1px';p.appendChild(ms);
		if(!pw)pw=(xPageX('sri_ms_'+i)-xPageX(p))-10;
		p.title=t.data; var nd=Display_makeStringMax(t.data,k,pw-12);
		var ndw=Display_calcStringWidth(nd,k);
		t.data=nd;p.style.display='inline';	p.style.whiteSpace='nowrap'; p.style.width=(pw)+'px'; p.style.overflow='hidden';
	}
}
function Display_resizeImageButtons(){
	var e=xGetElementsByClassName('img',document,'button'),w=0,ei;
	if(!e)return;
	for(var i=0;i<e.length;i++){
		ei=e[i].firstChild;
		if(ei.tagName.toLowerCase()!='img')continue;
		w=xWidth(ei);if(w)xWidth(e[i],w);
	}	
}

function Location_Goto(url){ var loc=url+((url.indexOf('?')!=-1)?'&':'?')+_sN+'='+escape(_sV); location.href=loc; }
function Location_Redirect(url,timerS){
	var t=timerS||0,tj=(t*1000)-100;tj=tj||0;
	setTimeout(Location_Goto,tj,url);
	document.write('<meta http-equiv="Refresh" content="'+t+';url='+url+'" />');
}
function Agent_getTimeData(){ var d=new Date(); return Math.round(d.getTime()/1000)+'|'+(-d.getTimezoneOffset()*60); }
function Agent_getLocationData(){ return Agent_locStr; }
function SetAutoLocateViewport(a,b,c,d,e){ Agent_locStr=escape(a)+'|'+escape(b)+'|'+escape(c); if(Agent_loadListener) Agent_loadListener(a,b); }
function ShowMessage(m){ /*window.status='Agent_getLocationData currently offline: '+m;*/ }
function Agent_loadLocationData(ll){ if(ll&&typeof(ll)=='function'){ Agent_loadListener=ll; } document.write('<sc'+'ript type="text/jav'+'asc'+'ript" src="http://local.live.com/WiFiIPService/locate.ashx?'+Math.random()+'"></sc'+'ript>'); }
function Agent_storeLocationData(cb){ var ll=Agent_locStr.split('|');ll=ll[0]+','+ll[1];s_cookieCreate('userLoc',ll,356); }
function String_colorToHexRGB(v){ var c,r=0,g=0,b=0; var reg_rgbStr = new RegExp(/\(\s*(\d+)s*,\s*(\d+)\s*,\s*(\d+)\s*\)/g); var regMatches = reg_rgbStr.exec(v); if(regMatches && regMatches.length){ r=parseInt(regMatches[1]); g=parseInt(regMatches[2]); b=parseInt(regMatches[3]); }else if(v.substring(0,1)=='#'){ c=v.substring(1); if(c.length==3){ /*HexColor shorthand #fff */ r=c.substring(0,1).toUpperCase();g=c.substring(1,2).toUpperCase();b=c.substring(2,3).toUpperCase();r=parseInt(r+r,16);g=parseInt(g+g,16);b=parseInt(b+b,16); }else if(c.length==6){ /*HexColor #ffffff*/ r=parseInt(c.substring(0,2).toUpperCase(),16);g=parseInt(c.substring(2,4).toUpperCase(),16);b=parseInt(c.substring(4,6).toUpperCase(),16); }} r=(r==NaN)?0:r;g=(g==NaN)?0:g; b=(b==NaN)?0:b;c='#'+xHex(r,2)+xHex(g,2)+xHex(b,2); return c; }
function Number_makeInt(str){ var c=0;if(str=='0') return 0; while(str.length>=2&&str.charAt(c)=='0') str=str.substring(c+1,str.length); if(str == '0') return 0; return (isNaN(parseInt(str))?0:parseInt(str)); }

xAddEventListener(window,'load',Form_Autofocus);
xAddEventListener(window,'load',Display_resizeImageButtons);
xAddEventListener(window,'load',Display_calcSingleRowItems);