var srv_root = "http://www.indianastrologysoftware.com/widget/wpanchang/";
/* var srv_root = "http://192.168.0.216/php/test";*/
var cssFile = "av.tools.widget.big.css";

var $ = function(id){ return new DomElm(id)};

var DomElm = function(id){ this.instance = document.getElementById(id); };
DomElm.prototype.setHTML = function(h){ this.instance.innerHTML = h; };
DomElm.prototype.clear = function(){ this.setHTML("");};
var ecode = 0;

/*
	validClients holds the list of registered clients for the widget
	whenever a new client comes please add that client in the list 
	with the unique key for the client's domain
*/
var validClients = {
						/* clickastro.com */
						//"4a3910877dd6ebf4ab8ed254705bb10a" : { initScreen:'basic',width:150,height:254,chartStyle:1,region:'MAL',language:'ENG',key:'4a3910877dd6ebf4ab8ed254705bb10a',link:'Malayalam Astrology Software',target1:'http://www.indianastrologysoftware.com/astrology-pack/malayalam-astrology-software.php',target2:'http://www.indianastrologysoftware.com/astrology-pack/astrology-software.php'},
						"4a3910877dd6ebf4ab8ed254705bb10a" : { initScreen:'basic',width:260,height:310,chartStyle:3,region:'SAK',language:'ENG',key:'4a3910877dd6ebf4ab8ed254705bb10a',link:'Astrology Software',target1:'http://www.indianastrologysoftware.com/',target2:'http://www.indianastrologysoftware.com/'},
						/*mathrubhumi.com*/
						"192d9edf077c148bf1c4854c46ed3fa5" : { initScreen:'basic',width:150,height:254,chartStyle:1,region:'MAL',language:'ENG',key:'192d9edf077c148bf1c4854c46ed3fa5',link:'Malayalam Astrology Software',target1:'http://www.indianastrologysoftware.com/astrology-pack/malayalam-astrology-software.php',target2:'http://www.indianastrologysoftware.com/astrology-pack/astrology-software.php'},
						/*hinduwebsite.com*/
						"92ae03d253bfbc0a1ef6076cc781e5d3" : { initScreen:'basic',width:150,height:254,chartStyle:3,region:'SAK',language:'ENG',key:'92ae03d253bfbc0a1ef6076cc781e5d3',link:'Astrology Software',target1:'http://www.indianastrologysoftware.com',target2:'http://www.indianastrologysoftware.com'},
						/*indianastrologysoftware.com*/
						"98124e5a80f31c36fc5a06b783339eab" : { initScreen:'basic',width:260,height:310,chartStyle:1,region:'SAK',language:'ENG',key:'98124e5a80f31c36fc5a06b783339eab',link:'Astrology Software',target1:'http://www.indianastrologysoftware.com',target2:'http://www.indianastrologysoftware.com'},
						/*astrosapna.com*/
						"11e926f59f0e130a5e978903ea526641" : { initScreen:'basic',width:150,height:254,chartStyle:3,region:'SAK',language:'ENG',key:'11e926f59f0e130a5e978903ea526641',link:'Astrology Software',target1:'http://www.indianastrologysoftware.com',target2:'http://www.indianastrologysoftware.com'},
						/*soothsayers-india.com*/
						"7071b8fd1d1cee8b7a3e54c775abe5be" : { initScreen:'basic',width:150,height:254,chartStyle:3,region:'SAK',language:'ENG',key:'7071b8fd1d1cee8b7a3e54c775abe5be',link:'Astrology Software',target1:'http://www.indianastrologysoftware.com',target2:'http://www.indianastrologysoftware.com'},
						/* local */
						"32c488f953ab1c4e5536fd76172a615a" : { initScreen:'basic',width:150,height:310,chartStyle:1,region:'MAL',language:'ENG',key:'32c488f953ab1c4e5536fd76172a615a',link:'Malayalam Astrology Software',target1:'http://www.indianastrologysoftware.com/astrology-pack/malayalam-astrology-software.php',target2:'http://www.indianastrologysoftware.com/astrology-pack/astrology-software.php'},
						 /*http://www.deorastones.com/*/
						   "f31b168753b4959a92ba71a73613b984" : { initScreen:'basic',width:260,height:310,chartStyle:3,region:'SAK',language:'ENG',key:'f31b168753b4959a92ba71a73613b984',link:'Astrology Software',target1:'http://www.indianastrologysoftware.com/',target2:'http://www.indianastrologysoftware.com/'},

					  "3d10f5a4dcf4364185d72c399c0125bd" : { initScreen:'basic',width:260,height:310,chartStyle:3,region:'SAK',language:'ENG',key:'3d10f5a4dcf4364185d72c399c0125bd',link:'Astrology Software',target1:'http://www.indianastrologysoftware.com/',target2:'http://www.indianastrologysoftware.com/'}/* http://www.kheranicharaja.com/*/,

						  "94911d6017b0ea61cbe2511efb1cc985" : { initScreen:'basic',width:260,height:310,chartStyle:3,region:'SAK',language:'ENG',key:'94911d6017b0ea61cbe2511efb1cc985',link:'Astrology Software',target1:'http://www.indianastrologysoftware.com/',target2:'http://www.indianastrologysoftware.com/'}/* www.onlygems.in*/ ,
							  /*******************************************************/
						  "961c179a5ed97500d6a14762afd5dd6c" : { initScreen:'basic',width:260,height:310,chartStyle:3,region:'SAK',language:'ENG',key:'961c179a5ed97500d6a14762afd5dd6c',link:'Astrology Software',target1:'http://www.indianastrologysoftware.com/astrology-pack/astrology-software.php',target2:'http://www.indianastrologysoftware.com/astrology-pack/astrology-software.php'},/* www.himalayanacademy.com/resources/panchangam/*/
						  "ad5cdc6a3fe5820b92e28a6b3f5f7e3f" : { initScreen:'basic',width:260,height:310,chartStyle:3,region:'SAK',language:'ENG',key:'ad5cdc6a3fe5820b92e28a6b3f5f7e3f',link:'Astrology Software',target1:'http://www.indianastrologysoftware.com/personal-astrology/kundli-software.php',target2:'http://www.indianastrologysoftware.com/personal-astrology/kundli-software.php'},/* http://www.saaksharpost.com*/
						  "755970c41fdd7f0ff582f82dad9b09f3" : { initScreen:'basic',width:260,height:310,chartStyle:3,region:'SAK',language:'ENG',key:'755970c41fdd7f0ff582f82dad9b09f3',link:'Astrology Software',target1:'http://www.indianastrologysoftware.com/personal-astrology/kundli-software.php',target2:'http://www.indianastrologysoftware.com/personal-astrology/kundli-software.php'},/* http://hrishikeshpanchang.com*/
						  "af0f8b6085f1da057d2bf44896074cde" : { initScreen:'basic',width:260,height:310,chartStyle:1,region:'SAK',language:'ENG',key:'af0f8b6085f1da057d2bf44896074cde',link:'Astrology Software',target1:'http://www.indianastrologysoftware.com/personal-astrology/kundli-software.php',target2:'http://www.indianastrologysoftware.com/personal-astrology/kundli-software.php'},/* www.vedicgyansagar.blogspot.com*/
						  /**********************************************************/
						  "a97ca55d3915b8d96ce7ac92e9a09ad6" : { initScreen:'basic',width:260,height:310,chartStyle:1,region:'SAK',language:'ENG',key:'a97ca55d3915b8d96ce7ac92e9a09ad6',link:'Astrology Software',target1:'http://www.indianastrologysoftware.com/',target2:'http://www.indianastrologysoftware.com/'},/* https://www.trsiyengar.com*/
						  "e2911dcfa998247fff150072d7c050be" : { initScreen:'basic',width:260,height:310,chartStyle:3,region:'SAK',language:'ENG',key:'e2911dcfa998247fff150072d7c050be',link:'Astrology Software',target1:'http://www.indianastrologysoftware.com/personal-astrology/kundli-software.php',target2:'http://www.indianastrologysoftware.com/personal-astrology/kundli-software.php'},/* www.aapkikismat.com*/
						  /********************************/
						 "874fd6950fdaf237702047884ae37662" : { initScreen:'basic',width:260,height:310,chartStyle:1,region:'SAK',language:'ENG',key:'874fd6950fdaf237702047884ae37662',link:'Astrology Software',target1:'http://www.indianastrologysoftware.com/',target2:'http://www.indianastrologysoftware.com/'},/* http://skepho.weebly.com*/
						 
						"f32ff4b0040160ab9e5eebf036d399cc" : { initScreen:'basic',width:260,height:310,chartStyle:3,region:'SAK',language:'ENG',key:'f32ff4b0040160ab9e5eebf036d399cc',link:'Astrology Software',target1:'http://www.indianastrologysoftware.com/',target2:'http://www.indianastrologysoftware.com/'},/* www.djcorpindia.com*/

						"2774f3897af2e4c7aa59b9a108f8be63" : { initScreen:'basic',width:260,height:310,chartStyle:3,region:'SAK',language:'ENG',key:'2774f3897af2e4c7aa59b9a108f8be63',link:'Astrology Software',target1:'http://www.indianastrologysoftware.com/',target2:'http://www.indianastrologysoftware.com/'},/* http://www.maharajgroup.co.za/ayurveda.htm*/
						"71fa40d78fc6f507e4014d41930fe2d1" : { initScreen:'basic',width:260,height:310,chartStyle:1,region:'SAK',language:'ENG',key:'71fa40d78fc6f507e4014d41930fe2d1',link:'Astrology Software',target1:'http://www.indianastrologysoftware.com/personal-astrology/kundli-software.php',target2:'http://www.indianastrologysoftware.com/personal-astrology/kundli-software.php'},/* http://www.shreevedicjyotish.com/*/

						  "385b3c553974a5925f2c2291bb35f5e4" : { initScreen:'basic',width:260,height:310,chartStyle:1,region:'SAK',language:'ENG',key:'385b3c553974a5925f2c2291bb35f5e4',link:'Astrology Software',target1:'http://www.indianastrologysoftware.com/',target2:'http://www.indianastrologysoftware.com/'},/* http://www.hinduismnet.com/*/
"c32b0303a455d76dfeffc98381eb5f4b" : { initScreen:'basic',width:260,height:310,chartStyle:1,region:'SAK',language:'ENG',key:'c32b0303a455d76dfeffc98381eb5f4b',link:'Astrology Software',target1:'http://www.indianastrologysoftware.com/',target2:'http://www.indianastrologysoftware.com/'}/* http://www.indian-heritage.org/*/
						

					};


/*	
	To make Cross domain ajax possible, dynamic script adding
	is done here using a JsonScript custom class
*/

var JSONScript = function(url)
{
	/* REST request path */
    this.fullUrl = url; 
    /* Keep IE from caching requests */
    this.noCacheIE = '&noCacheIE=' + (new Date()).getTime();
    /* Get the DOM location to put the script tag */
    this.headLoc = document.getElementsByTagName("head").item(0);
    /* Generate a unique script tag id */
    this.scriptId = 'JscriptId' + JSONScript.scriptCounter++;
};
JSONScript.scriptCounter = 1;
JSONScript.prototype.buildScriptTag = function () 
{

	/* Create the script tag */
	this.scriptObj = document.createElement("script");
	
	/*  Add script object attributes */
	this.scriptObj.setAttribute("type", "text/javascript");
	this.scriptObj.setAttribute("charset", "utf-8");
	this.scriptObj.setAttribute("src", this.fullUrl + this.noCacheIE);
	this.scriptObj.setAttribute("id", this.scriptId);
};


JSONScript.prototype.removeScriptTag = function () 
{
	/*  Destroy the script tag */
	this.headLoc.removeChild(this.scriptObj);  
};

JSONScript.prototype.addScriptTag = function () 
{
    /* Create the script tag	*/
	this.buildScriptTag();
    this.headLoc.appendChild(this.scriptObj);
};

var Element = function(type,att)
{
	/*
	The Element Object creates a Dom Element
	and sets the attributes for it that we supply.
	The create() function returns the object	*/

	this.instance = document.createElement(type);
	for(i in att)
	{	if(i =='html'){ this.instance.innerHTML = att[i];}
		else if(i =='class') this.instance.className = att[i]+"";
		else this.instance.setAttribute(i,att[i]);
	}
};

Element.prototype.create = function(){ return this.instance; };

var buildCssTag = function () 
{

	/* Create the script tag */
	cssScriptObj = document.createElement("link");
	
	/*  Add script object attributes */
	cssScriptObj.setAttribute("type", "text/css");
	cssScriptObj.setAttribute("charset", "utf-8");
	cssScriptObj.setAttribute("rel", "stylesheet");
	cssScriptObj.setAttribute("href", srv_root+''+cssFile);
	cssScriptObj.setAttribute("id", 'tag'+cssFile.replace(".",""));
	document.getElementsByTagName("head").item(0).appendChild(cssScriptObj);
};

/* ----------------------------------------------------------
				Widget Area Starts Here
--------------------------------------------------------------*/

var jObj = null; var cback = 'parseOutput';
var avWidget = null;
var options = { initScreen:'',width:0,height:0,chartStyle:0,region:'null',language:'null',key:'',link:'',target1:'',target2:''};
var wInput = null;
var astroData = null;
var curDate = new Date();
var ld = loading();
var sInput = {type:"Country",country:"",state:"",place:"",data:"",curIndex:0,curSCity:''};

var targetElementId = null;

var inpSearch = '<div name="frm" onsubmit="return false;"><input type="text" class="prf_tbox pt11 fa" '+
				'onblur="doSearch(this)" id="tbsearch" name="tbsearch" value="**VL**" onclick="refreshSbox(this)" />'+
				'<input type="image"  src="'+srv_root+'images/dbullet_grey.gif" width="10" height="9" class="pl3 cp" '+
				'onclick=""/></div>';

var resTpl =	'<div class="pt11 fa">'+
				'<div class="blk b">**PLC**</div>'+
				'<div class="shim2px cb">&nbsp;</div>'+
				'<div class="w60 fl">Longitude : </div><div class="w60 fl">**LNG**</div>'+
				'<div class="w60 fl">Latitude : </div><div class="w60 fl">**LAT**</div>'+
				'<div class="w60 fl">Time Zone : </div><div class="w60 fl">**TZN**</div>'+
				'<div class="shim2px cb">&nbsp;</div>'+
				'<div class="cb">Time Correction : </div>'+
				'</div>';


var selTimeCorr = function()
{				
	aTc = [" Standard Time", "Summer Time (Daylight Saving Time)"," Double Summer Time", " War Time"];
	sel =		new Element('select',{id:"selTimeCorr",html:'','class':'prf_sel pt11 fa'}).create();
	for(var c=0;c<aTc.length;c++)
	{
		el = new Element('option',{'value':c+'',html:aTc[c]}).create();
		sel.appendChild(el);
	}
	return sel;
};

var refreshSbox = function(el)
{
	if(el.value.indexOf("Country") == 0 || el.value.indexOf("State") == 0 || el.value.indexOf("City") == 0)
	{
		sInput.type = el.value.replace(" ","");
		el.value="";
	}
};
var refreshRegion = function(src)
{
	options.region = src.value;
	src.parentNode.innerHTML = "Loading..";
	loadWidget('basic',true);
};
var selRegion = function()
{
	reg = ["Sakavarsha","Malayalam","Tamil","Telugu"];
	sel =		new Element('select',{id:"selRegion",html:'','class':'prf_sel pt11 fa', onchange:'refreshRegion(this);'}).create();
	s = false;
	for(var c=0;c<reg.length;c++)
	{
		if(astroData.header.regional.year_caption == reg[c]) s = true; else s = false;
		el = new Element('option',{'value':reg[c].substring(0,3).toUpperCase(),html:reg[c]}).create();
		if(s) el.setAttribute("selected","selected");
		sel.appendChild(el);
	}
	return sel;
};
var strSelRegion = function()
{
	dv = new Element('div',{html:''}).create();
	dv.appendChild(selRegion());
	return dv.innerHTML;
};

var doSearch = function(el)
{
	if(el.value.length == 0) return (el.value = sInput.type);
	
	if(sInput.type == "Finish"){ sInput.curSCity = sInput.place;}
	$('src_result').setHTML("<h3><cenetr>Loading..</center></h3>");
	try
	{
		lsrv =  ""+srv_root+"location.search.php?callBk=loadPlace&type="+sInput.type+"&value="+el.value+''+
				'&country='+sInput.country+'&state='+sInput.state+'&city='+((sInput.type != "Finish")?sInput.place :sInput.curSCity)+'&index='+sInput.curIndex;
		jObj = new JSONScript(lsrv); 
		jObj.addScriptTag();
	}
	catch(err)
	{
		error(err.description);
	}
};
var getNotFoundScreen = function()
{
	return	'<div><b>'+sInput.type+'</b> you searched is not found in the database!<br>'+
			'<a href="javascript:prepareSearch();">Search again</a></div>';
};
var getErrFoundScreen = function()
{
	return	'<div><b>Error :</b>The place you searched returns some invalid data!<br>'+
			'<a href="javascript:loadWidget(\'prfnc\',false);">Search again</a></div>';
};
var loadPlace = function(type,json)
{
	$('src_result').clear();
	if(json.list == '') return $('src_result').setHTML(getNotFoundScreen());
	if(type != "Display")
	{
		$('src_result').instance.appendChild(new Element("div",{'class':'b',html:'Select your '+sInput.type}).create());
		sInput.type = type;
		list = json.list.split(',');
		h = '';
		for(i=0;i<list.length;i++)		h += '<div class="cp src_link" title="'+list[i]+'" onclick="setPlace(\''+list[i]+'\','+i+')">&nbsp;&nbsp;'+Trimm(list[i],20)+'</div>';
		$('src_result').instance.appendChild(new Element("div",{'class':'',html:h}).create());
	}
	else
	{
		tpl = resTpl;
		sInput.data = json.list;
		var res = json.list.split('-');
		if(res[0].length < 3)
		{ $('src_result').instance.innerHTML = getErrFoundScreen(); return; }
		tpl = tpl.replace("**PLC**",sInput.place+' of '+sInput.state+' in '+sInput.country);
		tpl = tpl.replace("**LNG**",res[0]);
		tpl = tpl.replace("**LAT**",res[1]);
		tpl = tpl.replace("**TZN**",res[2]);
		$('src_result').instance.innerHTML += tpl;
		$('src_result').instance.appendChild(selTimeCorr());
		$('src_result').instance.appendChild(new Element('div',{html:'&nbsp;','class':'shim4px w60'}).create());
		btn = new Element('div',{align:'',html:'Save','class':'ml5 cp bttn tac b'}).create();
		btn.onclick = function(){changePlace()};
		$('src_result').instance.appendChild(btn);
	}
};
var setPlace = function(inp,idx)
{
	sInput.curIndex = idx;
	if(sInput.type == "State") sInput.country = inp;
	else if(sInput.type == "City") sInput.state = inp;
	else sInput.place = inp;
	prepareSearch();
};
var prepareSearch = function()
{
	if(sInput.type != "Finish")
	$("src_result").instance.innerHTML =	inpSearch.replace("**VL**",sInput.type);
	else
	{
		doSearch({value:sInput.place});
	}
	if(sInput.type == "Country")
	$("src_result").instance.innerHTML +=	'<div class="shim4px"></div>'+
											'<div class="ml5 pt11">Type atleast three '+
				'starting letters of the country you want to Search. <br> Then the result will be loaded "Here"</div>';
	if(sInput.type == "State")
	$("src_result").instance.innerHTML +=	'<div class="shim4px"></div>'+
											'<div class="ml5 pt11">Please Search for a state/province in <b>'+sInput.country+'</b></div>';
	if(sInput.type == "City")
	$("src_result").instance.innerHTML +=	'<div class="shim4px"></div>'+
											'<div class="ml5 pt11">Please Search for a place/city in <b>'+sInput.country+' > '+sInput.state+'</b></div>';
};

var changePlace = function()
{
	sInput.data += '-'+ $('selTimeCorr').instance.selectedIndex;
	try
	{	
		$('src_result').setHTML("<h3><cenetr>Saving..</center></h3>");
		lsrv =  ""+srv_root+"location.search.php?callBk=loadWidgetEx&type=SET"+"&data="+sInput.data+''+
				'&country='+sInput.country+'&state='+sInput.state+'&city='+sInput.place;
		jObj = new JSONScript(lsrv); 
		jObj.addScriptTag();
	}
	catch(err)
	{
		error(err.description);
	}
};



function setOptions(opt)
{
	if(opt != null)	for(i in options){options[i] = (typeof(opt[i])=="undefined") ? options[i] : opt[i];	}
	$(targetElementId).instance.style.width = '148px';
	$(targetElementId).instance.style.height = '308px';
};
          
function getDateString(date)
{
	return date.getFullYear()+'-'+(date.getMonth()+1)+'-'+date.getDate();
};
          
function getTimeString(date,type)
{
	hour = date.getHours();
	if(type == 12 && hour > 12) hour = hour - 12;
	return hour+':'+date.getMinutes();
};

function viewChart(url)
{
	var fl = null;
	if($('floatimage').instance == null)
	{
		fl	= new Element('input',{id:'floatimage',type:'image',src:url,'class':'floatimage'}).create();
		$(targetElementId).instance.appendChild(fl);
	}
	else fl = $('floatimage').instance;
	mleft = pMouse.x; mleft = (mleft > 300)? mleft - 220 : mleft;
	mtop = pMouse.y; mtop = (mtop > 300)? mtop - 220 : mtop;
	ofs = (pMouse.x > 300)? -20 : 20;

	fl.style.left =  mleft+ofs+ 'px';
	fl.style.top = mtop+ofs+ 'px';
	fl.style.display = "block";

};
function hideChart()
{
	if($('floatimage').instance != null ) $('floatimage').instance.style.display = "none";
};

function getPlaceData()
{
	try
	{
		lsrv = ""+srv_root+"location.wsrv.db.v1.php?callBk=parsePlace&key="+options.key;
		jObj = new JSONScript(lsrv); 
		jObj.addScriptTag();
	}
	catch(err)
	{
		error(err.description);
	}
};
          
function parsePlace(jsonData) 
{     
	wInput = { date:getDateString(curDate),time:getTimeString(curDate,24),place:jsonData};
	ipJ = '{ date:"'+wInput.date+'",time:"'+wInput.time+'",place:{name:"'+wInput.place.cityName+'",longitude:"'+wInput.place.longitude+'",latitude:"'+wInput.place.latitude+'",timezone:"'+wInput.place.timeZone+'",timecorrection:"'+wInput.place.timeCorrection+'"},language:\''+options.language+'\',region:\''+options.region+'\'}';
	jObj.removeScriptTag();  
	try
	{
		wsrv  = ''+srv_root+'av.tools.widget.php?callBack='+cback+'&json=true&ipJ='+ipJ; 
		jObj = new JSONScript(wsrv); 
		jObj.addScriptTag();
	}
	catch(err)
	{
		error(err.description);
	}
	

} ; 

/*
	function to prepare input data and request
	webservice to return the astrology data
*/
function wProcess()
{
	if(!validateRequest()) return new Widget().unauthorisedAccess();
	getPlaceData();
};
          
/*
	This function is called at the integration
	end. The target element's id and the widget 
	size, initial screen will be passed as options
*/
var avWidgetAstroCalendar = function(trgId)
{
	targetElementId = trgId;
	buildCssTag();
	if(!validateRequest())
	{
		try
		{
			lsrv = ""+srv_root+"location.wsrv.db.v1.php?callBk=validateClient&req=crypt";
			jObj = new JSONScript(lsrv); 
			jObj.addScriptTag();
		}
		catch(err)
		{
			error(err.description);
		}
	}
	else
	{
		ipJ = wProcess();
	}
};

var validateClient = function(key)
{
	/*setOptions(validClients[key]);
	jObj.removeScriptTag(); 
	ipJ = wProcess();*/
	jsonopt = eval('(' + key + ')');
	setOptions(jsonopt);
	//setOptions(key);
	jObj.removeScriptTag(); 
	ipJ = wProcess();
	
};

var validateRequest = function()
{
	var bld= $('avx_widget_148_bkl').instance;
	var anc = $('avx_widget_148_back_link').instance;
	if(options.initScreen == '' || options.chartStyle == 0 || options.region == 'null' || options.key == '') return false;
	else if(window.opera) return true;
	else if(bld != null)
	{	
		aurl = anc.getAttribute("href").replace(new RegExp("/","g"),"");
		url1 = options.target1.replace(new RegExp("/","g"),"");
		url2 = options.target2.replace(new RegExp("/","g"),"");
		
		if(bld.style.display != "block") return false;
		if(anc.style.display != "block") return false;
		
		if(bld.className.replace(new RegExp(" ","g"),"") != "fapt10" ) return false; 
		if(anc.className.replace(new RegExp(" ","g"),"") != "back_link") return false;
		if(aurl != url1 && aurl != url2) return false;
		if(anc.innerHTML.indexOf(options.link) < 0)
		{
		//document.write('Please use a proper back link');	
		ecode = 301;
		return false; 
		}
		return true;
	}
	else return false;

	return true;
};

/*
	Call back function. This function will be 
	called at the webservice end with the JSON
	output. This function parses the output &
	presents it at the client.
*/
function parseOutput(jsonData) 
{     
	astroData = jsonData.data;
	avWidget = new Widget().prepareCalendar(false);
	jObj.removeScriptTag(); 
}

/*-----------------------------------------------
		Widget Declaration
  -----------------------------------------------
		class		: Widget
		methods		: setOptions
					: prepareCalendar
					: showBasicScreen
					: showChartScreen
					: showSignificanceScreen
					: showPanchangaScreen
					: showCalendarScreen
  ----------------------------------------------*/
var chDate = function(d)
{
	if(d==NaN || d==0) return;
	curDate.setDate(d);
	avWidget = avWidget.prepareCalendar(true);
};
var prevDay = function()
{
	d = curDate.getDate()-1;
	curDate.setDate(d);
	avWidget = avWidget.prepareCalendar(true);
};
var nextDay = function()
{
	d = curDate.getDate()+1;
	curDate.setDate(d);
	avWidget = avWidget.prepareCalendar(true);
};
var loadChart = function(cs)
{
	options.chartStyle = cs;
	avWidget.showChartScreen();
};
var loadWidget = function(screen,doRef)
{
	options.initScreen = screen; 
	avWidget = avWidget.prepareCalendar(doRef);
};
var loadWidgetEx = function()
{
	options.initScreen = 'basic';
	avWidget = avWidget.prepareCalendar(true);
};
var Widget = function()
{
	this.targetId = targetElementId;
	this.jsonData = astroData;
};

function loading()
{
	return new Element('div',{'class':'avw_loading'}).create();
};

Widget.prototype.prepareCalendar = function(doRefresh)
{
	if(doRefresh)
	{ 
		return new avWidgetAstroCalendar(this.targetId);
	}
	switch(options.initScreen)
	{
		case 'basic': this.showBasicScreen(); break;
		case 'chart': this.showChartScreen(); break;
		case 'astro': this.showAstroScreen(); break;
		case 'signf': this.showSignificanceScreen(); break;
		case 'panch': this.showPanchangaScreen(); break;
		case 'clndr': this.showCalendarScreen(); break;
		case 'prfnc': this.showPreference(); break;
		case 'rgion': this.showRegionSet(); break;
		default		: this.showBasicScreen(this.trgId); break;
	}
	return this;
};
Widget.prototype.unauthorisedAccess = function()
{
	$(this.targetId).instance.childNodes[0].innerHTML ="";
	frame = new Element('div',{id:'av_widget_148','class':'',html:''}).create();
	frame.appendChild(this.uAAccess());
	$(this.targetId+'_content').instance.appendChild(frame);
};
Widget.prototype.showBasicScreen = function()
{
	$(this.targetId+'_content').clear();
	frame = new Element('div',{id:'av_widget_148','class':'',html:''}).create();
	frame.appendChild(this.header());
	frame.appendChild(this.shim1px());
	frame.appendChild(this.astroCal(false));
	frame.appendChild(this.shim1px());
	frame.appendChild(this.linkChart());
	frame.appendChild(this.shim1px());
	frame.appendChild(this.linkPanchang());
	frame.appendChild(this.shim1px());
	frame.appendChild(this.linkSpeciality());
	frame.appendChild(this.shim1px());
	frame.appendChild(this.linkAstroDay());
	frame.appendChild(this.shim1px());
	$(this.targetId+'_content').instance.appendChild(frame);
};
Widget.prototype.showPanchangaScreen = function()
{
	$(this.targetId+'_content').clear();
	frame = new Element('div',{id:'av_widget_148','class':'',html:''}).create();
	frame.appendChild(this.header());
	frame.appendChild(this.shim1px());
	frame.appendChild(this.panchanga());
	frame.appendChild(this.shim1px());
	frame.appendChild(this.linkChart());
	frame.appendChild(this.shim1px());
	frame.appendChild(this.linkSpeciality());
	frame.appendChild(this.shim1px());
	frame.appendChild(this.linkAstroDay());
	frame.appendChild(this.shim1px());
	frame.appendChild(this.linkMain());
	frame.appendChild(this.shim1px());
	$(this.targetId+'_content').instance.appendChild(frame);
};
Widget.prototype.showChartScreen = function()
{
	$(this.targetId+'_content').clear();
	frame = new Element('div',{id:'av_widget_148','class':'',html:''}).create();
	frame.appendChild(this.header());
	frame.appendChild(this.shim1px());
	frame.appendChild(this.chart());
	frame.appendChild(this.shim1px());
	frame.appendChild(this.linkDualChart(options.chartStyle));
	frame.appendChild(this.shim1px());
	frame.appendChild(this.linkPanchang());
	frame.appendChild(this.shim1px());
	frame.appendChild(this.linkSpeciality());
	frame.appendChild(this.shim1px());
	frame.appendChild(this.linkAstroDay());
	frame.appendChild(this.shim1px());
	$(this.targetId+'_content').instance.appendChild(frame);
};
Widget.prototype.showSignificanceScreen = function()
{
	$(this.targetId+'_content').clear();
	frame = new Element('div',{id:'av_widget_148','class':'',html:''}).create();
	frame.appendChild(this.header());
	frame.appendChild(this.shim1px());
	frame.appendChild(this.significance());
	frame.appendChild(this.shim1px());
	frame.appendChild(this.linkChart());
	frame.appendChild(this.shim1px());
	frame.appendChild(this.linkPanchang());
	frame.appendChild(this.shim1px());
	frame.appendChild(this.linkAstroDay());
	frame.appendChild(this.shim1px());
	frame.appendChild(this.linkMain());
	frame.appendChild(this.shim1px());
	$(this.targetId+'_content').instance.appendChild(frame);
};
Widget.prototype.showAstroScreen = function()
{
	$(this.targetId+'_content').clear();
	frame = new Element('div',{id:'av_widget_148','class':'',html:''}).create();
	frame.appendChild(this.header());
	frame.appendChild(this.shim1px());
	frame.appendChild(this.astroday());
	frame.appendChild(this.shim1px());
	frame.appendChild(this.linkChart());
	frame.appendChild(this.shim1px());
	frame.appendChild(this.linkPanchang());
	frame.appendChild(this.shim1px());
	frame.appendChild(this.linkSpeciality());
	frame.appendChild(this.shim1px());
	frame.appendChild(this.linkMain());
	frame.appendChild(this.shim1px());
	$(this.targetId+'_content').instance.appendChild(frame);
};
Widget.prototype.showCalendarScreen = function()
{
	$(this.targetId+'_content').clear();
	var acal = createCalendarFor(getDateString(curDate));
	var y = '';
	for(j=0;j<7;j++)
	{
		d = dtpl.replace("**DT**",wlist[j].substring(0,1));
		d = d.replace("**CL**","wcaption fl "+((j==0)?"red":"blk")+" fa pt12 b");
		d = d.replace("**IP**",'0');
		y += d;
	}
	y += '<br class="cb"/>';
	for(i=0;i<5;i++)
	{
		for(j=0;j<7;j++)
		{
			d = (acal[i][j] == 0)? dtpl.replace("**DT**","") : dtpl.replace("**DT**",lpad(acal[i][j]+''));
			d = d.replace("**CL**",((acal[i][j] == 0)?"wcaption":"caldate cp")+" fl "+((acal[i][j] == curDate.getDate())?" bgrey " :"") +
				((j==0)?"red":"blk")+" "+((inArray(acal[i][j],astroData.special_days_of_month.list))?"block":"")
				+" fa pt12 b");
			d = d.replace("**IP**",acal[i][j]);
			y += d;
		}
		y += '<br class="cb"/>';
	}
	$(this.targetId).instance.childNodes[0].innerHTML ="";
	frame = new Element('div',{id:'av_widget_148','class':'',html:''}).create();
	frame.appendChild(this.header());
	frame.appendChild(this.shim1px());
	frame.appendChild(this.lcalendar(y));
	frame.appendChild(this.shim1px());
	frame.appendChild(this.linkChart());
	frame.appendChild(this.shim1px());
	frame.appendChild(this.linkPanchang());
	frame.appendChild(this.shim1px());
	frame.appendChild(this.linkSpeciality());
	frame.appendChild(this.shim1px());
	frame.appendChild(this.linkMain());
	frame.appendChild(this.shim1px());
	$(this.targetId+'_content').instance.appendChild(frame);

};
Widget.prototype.showPreference = function()
{
	$(this.targetId+'_content').clear();
	frame = new Element('div',{id:'av_widget_148','class':'',html:''}).create();
	frame.appendChild(this.header());
	frame.appendChild(this.shim1px());
	frame.appendChild(this.preference());
	frame.appendChild(this.shim1px());
	frame.appendChild(this.linkMain());
	frame.appendChild(this.shim1px());
	$(this.targetId+'_content').instance.appendChild(frame);
};
Widget.prototype.showRegionSet = function()
{
	$(this.targetId+'_content').clear();
	frame = new Element('div',{id:'av_widget_148','class':'',html:''}).create();
	frame.appendChild(this.header());
	frame.appendChild(this.shim1px());
	frame.appendChild(this.astroCal(true));
	frame.appendChild(this.shim1px());
	frame.appendChild(this.linkChart());
	frame.appendChild(this.shim1px());
	frame.appendChild(this.linkPanchang());
	frame.appendChild(this.shim1px());
	frame.appendChild(this.linkSpeciality());
	frame.appendChild(this.shim1px());
	frame.appendChild(this.linkAstroDay());
	frame.appendChild(this.shim1px());
	$(this.targetId+'_content').instance.appendChild(frame);
};
Widget.prototype.getCurChart = function()
{
	var lcs = ['','southindian','eastindian','northantique'];
	var cs =	'&sun='+astroData.chart.sun+
				'&moo='+astroData.chart.moon+
				'&mer='+astroData.chart.mercury+
				'&ven='+astroData.chart.venus+
				'&mar='+astroData.chart.mars+
				'&jup='+astroData.chart.jupiter+
				'&sat='+astroData.chart.saturn+
				'&rah='+astroData.chart.rahu+
				'&ket='+astroData.chart.ketu+
				'&gul='+astroData.chart.gulikan+
				'&lag='+astroData.chart.lagnam+
				'&style='+lcs[options.chartStyle]+'&rf='+
				new Date().getTime();
		
	
	url = 'http://207.210.83.114/SMexe/WebStarChart.dll?width=220&height=220'+cs;
	return url;
};
Widget.prototype.uAAccess = function()
{
	var tpl =	'<div class="uaaceess blk"><div class="pt16 b warning">(!)Warning</div>'+
				'<div>&nbsp;</div>'+
				'<div class="red b pt16">Access Denied </div><br>'+
				''+
				'We think you are trying to access this widget from a domain '+
				'which is not registered with us. Or Your browser will not support this script. Code :' + ecode + '</div>';
	return new Element('div',{'class':'',html:tpl}).create();
};
Widget.prototype.header = function()
{
	var tpl =	'<div class="header"><div class="ddmmyy">'+
            	'	<div class="dateday fl">'+
                '		<div class="date fa">'+
				'    		<div class="date_p fl"><img src="'+srv_root+'images/p_left.gif" width="4" height="5" class="padt10 cp" onclick="prevDay()"/></div>'+
                '			<div class="date_dd fl ac b">'+lpad(curDate.getDate()+'')+'</div>'+
                '			<div class="date_n fr"><img src="'+srv_root+'images/n_right.gif" width="4" height="5" class="padt10 cp" onclick="nextDay()"/></div>'+
                '   	</div>'+
                '  		<div class="day ac b fa">'+wlist[curDate.getDay()].substring(0,3)+'</div>'+
                '	</div>'+
                '	<div class="month fl">'+
                '		<div class="month_p  ac"><img src="'+srv_root+'images/empty.gif" width="5" height="4" class="padt4" /></div>'+
                '		<div class="month_mm ac b fa" onclick="loadWidget(\'clndr\',false)"><span class=" cp"> <u>'+mlist[curDate.getMonth()].substring(0,3)+'</u></span></div>'+
                '		<div class="month_n ac"><img src="'+srv_root+'images/empty.gif" width="5" height="4" /></div>'+
                '	</div>'+
                '	<div class="year fr b ac fa">'+curDate.getFullYear()+'</div>'+
                    
       			'</div>'+
                '<div class="place ac fa grey pt10 cp" onclick="loadWidget(\'prfnc\',false)">Place : <span class="b red pt12" >'+Trimm(wInput.place.cityName,15)+'</span></div>'+
				'</div>';
	return new Element('div',{id:'',html:tpl}).create();

};

Widget.prototype.significance = function()
{
	var tpl =   '<div class="resultbox">'+
                '<div class="resultbox_head ac fa pt12 b">'+astroData.significance_of_the_day.caption+'</div>'+
                '<div class="special_text pt11">'+
                '<span class="pt12 b red">'+astroData.significance_of_the_day.value+'</span>'+
				'<div class="shim1px">&nbsp;</div>'+
				astroData.significance_of_the_day.description +
                '</div>';
	return new Element('div',{'class':'',html:tpl}).create();
};

Widget.prototype.preference = function()
{
	sInput = {type:"Country",country:"",state:"",place:"",data:"",curIndex:0,curSCity:''};
	var tpl =   '<div class="resultbox_prf">'+
                '<div class="resultbox_head ac fa pt12 b">Change Location</div>'+
				'<div class="blk">&nbsp;</div>'+
                '<div class="pt11 ml5 src_result" id="src_result">'+
                '<span class="pt12 b blk tal">'+inpSearch.replace("**VL**",sInput.type)+'</span>'+
				'<div class="shim4px">&nbsp;</div>'+
				'Type atleast three '+
				'starting letters of the country you want to Search. <br> Then the result will be loaded "Here"</div>'+
				'<div class="shim1px">&nbsp;</div>'+
                '</div>';
	return new Element('div',{'class':'',html:tpl}).create();
};

Widget.prototype.chart = function()
{
	var tpl =	'<div class="resultbox">'+
			    '     <div class="resultbox_head ac fa pt12 b">Instant Astro Chart</div>'+
				'<div class="shim1px">&nbsp;</div>'+
				'     <img src="'+this.getCurChart()+'" style="width:142px; height:112px; " onmousemove="viewChart(\''+this.getCurChart()+'\')" onmouseout="hideChart()" />'+
				'	<input type="image" id="floatimage" src="'+this.getCurChart()+'" border="0" class="floatimage" />'+
				'</div>';
	return new Element('div',{'class':'',html:tpl}).create();
};

Widget.prototype.panchanga = function()
{
	var tpl = '<div class="resultbox">'+
              '  <div class="resultbox_head ac fa pt12 b">Today\'s Panchangam</div>'+
              '   <div class="calnstar_star">'+
              '  	<div class="calnstar_sname pl3 fa pt12 b">'+astroData.panchangam.star.caption+' : <span class="pt12 b red">'+astroData.panchangam.star.value+'</span></div>'+
              '      <div class="calnstar_head pt11 ac fa grey">('+astroData.panchangam.star.duration+')</div>'+
              '  </div>'+
              '  <div class="shim1px">&nbsp;</div>'+
              '  <div class="calnstar_star">'+
              '  	<div class="calnstar_sname pl3 fa pt12 b">'+astroData.panchangam.thithi.caption+' : <span class="pt12 b red">'+astroData.panchangam.thithi.value+'</span></div>'+
              '      <div class="calnstar_head pt11 ac fa grey">('+astroData.panchangam.thithi.duration+')</div>'+
              '  </div>'+
              '  <div class="shim1px">&nbsp;</div>'+
              '  <div class="calnstar_sname pl3 fa pt12 b">'+astroData.panchangam.karana.caption+' : <span class="pt12 b red">'+astroData.panchangam.karana.value+'</span></div>'+
              '  <div class="shim1px">&nbsp;</div>'+
              '  <div class="calnstar_sname pl3 fa pt12 b">'+astroData.panchangam.nithyayogam.caption+' : <span class="pt12 b red">'+astroData.panchangam.nithyayogam.value+'</span></div>'+
              '</div';
	return new Element('div',{'class':'',html:tpl}).create();
};

Widget.prototype.lcalendar = function(obCal)
{
	var tpl =	'<div class="resultbox">'+
			    '     <div class="resultbox_head ac fa pt12 b">Calendar</div>'+
				'<div class="shim1px">&nbsp;</div>'+
				'<div align="center" class="pl3">'+obCal+'</div>'+
				'</div>';
	return new Element('div',{'class':'',html:tpl}).create();
};

Widget.prototype.astroday = function()
{
	var tpl = '<div class="resultbox">'+  
              '  <div class="resultbox_head ac fa pt12 b">Astroday</div>'+
              '  	<div class="resultbox_text pl3 fa pt11">'+astroData.panchangam.rahukalam.caption+':</div>'+
              '      <div class="calnstar_head pt11 ac fa "><span class="pt12 b red">'+astroData.panchangam.rahukalam.duration.toLowerCase()+'</span></div>'+
              '  <div class="shim2px">&nbsp;</div>'+
              '  	<div class="resultbox_text pl3 fa pt11">'+astroData.panchangam.yamakantakalam.caption+' : </div>'+
              '      <div class="calnstar_head pt11 ac fa "><span class="pt12 b red">'+astroData.panchangam.yamakantakalam.duration.toLowerCase()+'</span></div>'+
			  '		<div class="shim2px">&nbsp;</div>'+
              '  	<div class="calnstar_sname pl3 fa pt11">'+astroData.panchangam.sunrise.caption+':<span class="pt12 b red">'+astroData.panchangam.sunrise.value+'</span> </div>'+
              '  <div class="shim2px">&nbsp;</div><div class="calnstar_star">'+
              '  	<div class="calnstar_sname pl3 fa pt11">'+astroData.panchangam.sunset.caption+' :<span class="pt12 b red"> '+astroData.panchangam.sunset.value+'</span></div>'+
              '</div>'+
              '</div>';
	return new Element('div',{'class':'',html:tpl}).create();
};

Widget.prototype.shim1px = function()
{
	return new Element('div',{'class':'shim1px cb',html:'&nbsp;'}).create();
};

Widget.prototype.astroCal = function(isChMod)
{
	reg = lpad(astroData.header.regional.day)+' '+astroData.header.regional.month_name+'	'+astroData.header.regional.year_value;
	reg = (isChMod)?strSelRegion():reg;
	var tpl = '<div class="calnstar">'+
              '	<div class="calnstar_2">'+
              '  	<div class="calnstar_head pt11 b cp pl3 fa" onclick="loadWidget(\'rgion\',false);"><u>'+astroData.header.regional.year_caption+'</u>&nbsp;<img src="'+srv_root+'images/p_bot.gif" class="cp blk" onclick="loadWidget(\'rgion\',false);" width="5" height="4"/> </div>'+
              '     <div class="shim2px cb">&nbsp;</div>'+
			  '      <div class="calnstar_text red pt12 b ac fa" id="regional_result">'+reg+'</div>'+
              '  </div>'+
			  '	<div class="calnstar_1">'+
              '  	<div class="resultbox_text pl3 fa pt11 b">'+astroData.panchangam.rahukalam.caption+':</div>'+
              '      <div class="calnstar_head pt11 ac fa "><span class="pt12 b red">'+astroData.panchangam.rahukalam.duration.toLowerCase()+'</span></div>'+
              '  </div>'+
              '  <div class="calnstar_star">'+
              '  	<div class="calnstar_sname pl3 fa pt12 b">'+astroData.panchangam.star.caption+' : <span class="pt12 b red">'+astroData.panchangam.star.value+'</span></div>'+
              '      <div class="calnstar_head pt11 ac fa grey">('+astroData.panchangam.star.duration+')</div>'+
              '  </div>'+
              '</div>'+
			  '</div>';
	return new Element('div',{'class':'',html:tpl}).create();
};

Widget.prototype.linkChart = function()
{
	var tpl = '<div class="linkbox ac red pt12 b pr4 fa">Instant astro chart<img src="'+srv_root+'images/dbullet_grey.gif" width="10" height="9" class="pl3"/></div>';
	li = new Element('div',{'class':'cp cb',html:tpl}).create();
	li.onclick = function(){ loadWidget('chart',false);};
	return li;
};

Widget.prototype.linkMain = function()
{
	var tpl = '<div class="linkbox ac blk pt12 b pr4 fa">Main Screen<img src="'+srv_root+'images/dbullet_grey.gif" width="10" height="9" class="pl3"/></div>';
	li = new Element('div',{'class':'cp cb',html:tpl}).create();
	li.onclick = function(){ loadWidget('basic',false);};
	return li;
};

Widget.prototype.linkDualChart = function(i)
{
	var la = ["","South Indian","East Indian","North Indian"];
	x = 2; y = 3;
	switch(i)
	{
		case 2 : x= 1; break;
		case 3 : x= 1; y=2;break;
	}
	var tpl = '<div class="linkbox ac red pt11 b pr4 fa" ><div class="fl" onclick="loadChart('+x+')">'+la[x]+' </div> <div class="fr" onclick="loadChart('+y+')"> '+la[y]+'</div></div>';
	li = new Element('div',{'class':'cp cb',html:tpl}).create();
	li.onclick = function(){ loadWidget('chart',false);};
	return li;
};

Widget.prototype.linkPanchang = function()
{
	var tpl = '<div class="linkbox ac blk pt12 b pr4 fa">Today\'s Panchagam<img src="'+srv_root+'images/dbullet_grey.gif" width="10" height="9" class="pl3"/></div>';
	li = new Element('div',{'class':'cp cb',html:tpl}).create();
	li.onclick = function(){ loadWidget('panch',false);};
	return li;
};

Widget.prototype.linkSpeciality = function()
{
	var tpl = '<div class="linkbox ac blk pt12 b pr4 fa">Speciality of this day<img src="'+srv_root+'images/dbullet_grey.gif" width="10" height="9" class="pl3"/></div>';
	li = new Element('div',{'class':'cp cb',html:tpl}).create();
	li.onclick = function(){ loadWidget('signf',false);};
	return li;
};

Widget.prototype.linkAstroDay = function()
{
	var tpl = '<div class="linkbox ac blk pt12 b pr4 fa">Astroday<img src="'+srv_root+'images/dbullet_grey.gif" width="10" height="9" class="pl3"/></div>';
	li = new Element('div',{'class':'cp cb',html:tpl}).create();
	li.onclick = function(){ loadWidget('astro',false);};
	return li;
};

/*------------------------------------------------------
			JScript Calendar
--------------------------------------------------------*/
/*  month list array*/
var mlist = ["January","February","March","April","May","June","July","August","September","October","November","December"];
var wlist = ["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];
/*	function to pad 0 to the left of a string	*/
function lpad(str){ str = str.replace(' ',''); if(str.length > 0 && str.length < 2) str = '0'+ str; return str;};

/*
	Creates a calendar array for the given month
	of the date. This array is a 7 x 5 matrix
	and the first colum is sunday then monday
	and so on.
*/
var dtpl = '<div class="sp **CL**" onclick="chDate(**IP**)">**DT**</div>';
function createCalendarFor(sDate)
{
	var dlist = [31,28,31,30,31,30,31,31,30,31,30,31];
	var date = new Date();
	var day = sDate.split('-')[2];
	var month = parseInt(sDate.split('-')[1]) - 1;
	var year = sDate.split('-')[0];
	dlist[1] = isLeapYear(year)? 29 : 28;

	date.setDate(1); date.setMonth(month); date.setFullYear(year);

	var wday = date.getDay();
	var cal = [	[0,0,0,0,0,0,0],
				[0,0,0,0,0,0,0],
				[0,0,0,0,0,0,0],
				[0,0,0,0,0,0,0],
				[0,0,0,0,0,0,0]];

	dt = 1;
	for(var x=0 ; x<5 ; x++)
	{
		for(var i=wday;i< 7;i++) 
		{
			cal[x][i] = dt;
			dt++;
			if(dt > dlist[month]){ x=6; break;}
		}
		wday = 0;
	}
	return cal;
}
function isLeapYear(datea)
{
	datea = parseInt(datea);
	return ((datea%4 == 0) ? ((datea%100 != 0) ? true :((datea%400 == 0)?true:false)) : false);
}

/*---------------------------------------------------------
		Errors
-----------------------------------------------------------*/
function error(msg)
{
	$(targetElementId).clear();
	var tpl ='<div id="av_widget_148" class="ac" style="border:#000 solid 2px; height:308px;">'+
			'<div class="warning"><b>(!)Warning</b></div>'+
			'<div class=" ac" style="height:106px;"><div class="pt12"><br />'+
			'The server is temporarily unavailable due to <strong class="b pt14">maintenance</strong>. <br />'+
			'Please   try again later. </div>'+
			'</div>'+
			'<div class="calnstar_2 ac pt12 b pl3"  >'+
			'Please   try again later. '+
			'</div>'+
			'<div class="shim1px blk"></div>'+
			'<p class="pt14 red b">Thank you for <br />'+
			'your patience</p><div class="pt10">'+''+'</div>'+
			'</div>';
	frame = new Element('div',{id:'av_widget_148','class':'',html:tpl}).create();
	$(targetElementId).instance.appendChild(frame);
}
/*		Util		*/
function getInternetExplorerVersion()
{
  var rv = -1; /* Return value assumes failure.*/
  if (navigator.appName == 'Microsoft Internet Explorer')
  {
    var ua = navigator.userAgent;
    var re  = new RegExp("MSIE ([0-9]{1,}[\.0-9]{0,})");
    if (re.exec(ua) != null)
      rv = parseFloat( RegExp.$1 );
  }
  return rv;
}
/* Detect if the browser is IE or not.
 If it is not IE, we assume that the browser is NS. */
var IE = document.all ? true : false;
/*/ If NS -- that is, !IE -- then set up for mouse capture*/
if (!IE) document.captureEvents(Event.MOUSEMOVE);

/*/ Set-up to use getMouseXY function onMouseMove*/
document.onmousemove = getMouseXY;

/*/ Temporary variables to hold mouse x-y pos.s*/
var tempX = 0;
var tempY = 0;
var pMouse = null;

/*/ Main function to retrieve mouse x-y pos.s */

function getMouseXY(e) 
{
  if (IE) 
  { /*/ grab the x-y pos.s if browser is IE*/
    tempX = event.clientX + document.body.scrollLeft;
    tempY = event.clientY + document.body.scrollTop;
  } 
  else 
  {  /*/ grab the x-y pos.s if browser is NS*/
    tempX = e.pageX;
    tempY = e.pageY;
  }  
  /*/ catch possible negative values in NS4*/
  if (tempX < 0){tempX = 0}
  if (tempY < 0){tempY = 0}  
  /*/ show the position values in the form named Show*/
  /*/ in the text fields named MouseX and MouseY*/
  pMouse = {x:tempX,y:tempY};
}
function inArray(el,arr)
{
	return false;
}
function Trimm(str,ln)
{
	return (str.length > ln) ? str.substring(0,(ln-3))+'...' : str;
}

