var srv_root = "http://www.indianastrologysoftware.com/widget/wpanchang/";
/* var srv_root = "http://192.168.0.216/php/test";*/
var cssFile = "av.tools.widget.mat.css";

//var $ = function(id){ return new DomElm(id)};

var dl = 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("");};

/*
	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 = {
						/*astrovisiononline.com*/
						"50a3281569abfa264920037f898598a6" : {initScreen:'basic',width:150,height:254,chartStyle:1,region:'MAL',language:'ENG',key:'50a3281569abfa264920037f898598a6',link:'Astrology Software',target1:'http://www.indianastrologysoftware.com',target2:'http://www.indianastrologysoftware.com'},
						/* 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:150,height:254,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 */
						"32c488f953ab1c4e5536fd76172a61a" : { 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'},
						 /*zymic*/
						 "def83201c7c0653c8afc1d655d25e775" : { initScreen:'basic',width:150,height:300,chartStyle:3,region:'SAK',language:'ENG',key:'def83201c7c0653c8afc1d655d25e775',link:'Astrology Software',target1:'http://www.indianastrologysoftware.com/',target2:'http://www.indianastrologysoftware.com/'},
						 /*local test*/
						 "c7ae445f1b642fec446727eac2e55ea9" : { initScreen:'basic',width:150,height:300,chartStyle:2,region:'MAL',language:'ENG',key:'c7ae445f1b642fec446727eac2e55ea9',link:'Indian Astrology Software',target1:'http://www.clickastro.com/',target2:'http://www.clickastro.com/'},
						 /*zymic 2*/
						 "9c1e17163a0edaf5009dd4ecd27d39a4" : { initScreen:'basic',width:150,height:300,chartStyle:3,region:'SAK',language:'ENG',key:'9c1e17163a0edaf5009dd4ecd27d39a4',link:'Astrology Software',target1:'http://www.clickastro.com/',target2:'http://www.clickastro.com/'},
						  "92ae03d253bfbc0a1ef6076cc781e5d3" : { initScreen:'basic',width:150,height:300,chartStyle:3,region:'SAK',language:'ENG',key:'92ae03d253bfbc0a1ef6076cc781e5d3',link:'Astrology Software',target1:'http://www.indianastrologysoftware.com/',target2:'http://www.indianastrologysoftware.com/'}  
/*http://www.hinduwebsite.com/*/ ,
						"11e926f59f0e130a5e978903ea526641" : { initScreen:'basic',width:150,height:300,chartStyle:3,region:'SAK',language:'ENG',key:'11e926f59f0e130a5e978903ea526641',link:'Kundli Software',target1:'http://www.indianastrologysoftware.com/personal-astrology/kundli-software.php',target2:'http://www.indianastrologysoftware.com/personal-astrology/kundli-software.php'}  
/*http://www.astrosapna.com/link-partner.php*/ ,
						"018a2a9d4cf2ff91b79f47549b0294aa" : { initScreen:'basic',width:150,height:300,chartStyle:1,region:'TAM',language:'ENG',key:'018a2a9d4cf2ff91b79f47549b0294aa',link:'Tamil Astrology Software',target1:'http://www.indianastrologysoftware.com/astrology-pack/tamil-astrology-software.php',target2:'http://www.indianastrologysoftware.com/astrology-pack/tamil-astrology-software.php'}  
/*http://www.koodal.com/horoscope/*/ ,
						"7071b8fd1d1cee8b7a3e54c775abe5be" : { initScreen:'basic',width:150,height:300,chartStyle:3,region:'SAK',language:'ENG',key:'7071b8fd1d1cee8b7a3e54c775abe5be',link:'Astrology Software',target1:'http://www.indianastrologysoftware.com/',target2:'http://www.indianastrologysoftware.com/'}  
/*http://www.soothsayers-india.com/*/ ,
						"a28850913de079e08b83065b1d99c8f1" : { initScreen:'basic',width:150,height:300,chartStyle:3,region:'SAK',language:'ENG',key:'a28850913de079e08b83065b1d99c8f1',link:'Astrology Software',target1:'http://www.indianastrologysoftware.com/',target2:'http://www.indianastrologysoftware.com/'}  
/*http://www.24dunia.com/*/ ,
						"8770799c1ceca8a4ac854bb24a797ccc" : { initScreen:'basic',width:150,height:300,chartStyle:1,region:'SAK',language:'ENG',key:'8770799c1ceca8a4ac854bb24a797ccc',link:'Malayalam Astrology Software',target1:'http://www.indianastrologysoftware.com/astrology-pack/malayalam-astrology-software.php',target2:'http://www.indianastrologysoftware.com/astrology-pack/malayalam-astrology-software.php'}  
/*www.kerala.com*/ ,
						"3249a4ee378c20760fd67000a51f9a3a" : { initScreen:'basic',width:150,height:300,chartStyle:2,region:'SAK',language:'ENG',key:'3249a4ee378c20760fd67000a51f9a3a',link:'Panchang',target1:'http://www.indianastrologysoftware.com/astrology-pack/panchangam-software.php',target2:'http://www.indianastrologysoftware.com/astrology-pack/panchangam-software.php'}  
/*www.hindu-festivals.com/*/ ,
						"cbcc5e82b2114bfb05eb21ef41b39727" : { initScreen:'basic',width:150,height:300,chartStyle:3,region:'SAK',language:'ENG',key:'cbcc5e82b2114bfb05eb21ef41b39727',link:'Astrology Software',target1:'http://www.indianastrologysoftware.com/astrology-pack/astrology-software.php',target2:'http://www.indianastrologysoftware.com/astrology-pack/astrology-software.php'}  
/*http://www.hindujagruti.org/external-links/*/ ,
						"34558c2b04edd5eabb42800249389f3f" : { initScreen:'basic',width:150,height:300,chartStyle:1,region:'SAK',language:'ENG',key:'34558c2b04edd5eabb42800249389f3f',link:'Malayalam Astrology Software',target1:'http://www.indianastrologysoftware.com/astrology-pack/malayalam-astrology-software.php',target2:'http://www.indianastrologysoftware.com/astrology-pack/malayalam-astrology-software.php'}  
/*www.123kerala.com*/ ,
						"0f3c0348579778ca535667aa0efc9ea1" : { initScreen:'basic',width:150,height:300,chartStyle:1,region:'SAK',language:'ENG',key:'0f3c0348579778ca535667aa0efc9ea1',link:'Astrology Software',target1:'http://www.indianastrologysoftware.com/',target2:'http://www.indianastrologysoftware.com/'}  
/*www.srikumar.com/*/ ,
						"b0ae44959399685f30e976ff2d137f25" : { initScreen:'basic',width:150,height:300,chartStyle:1,region:'SAK',language:'ENG',key:'b0ae44959399685f30e976ff2d137f25',link:'Telugu Astrology Software',target1:'http://www.indianastrologysoftware.com/astrology-pack/telugu-astrology-software.php',target2:'http://www.indianastrologysoftware.com/astrology-pack/telugu-astrology-software.php'}  
/*http://andhrapradesh.com/*/ ,
						"e829a770e69b62238b02c20a1bc9bf3e" : { initScreen:'basic',width:150,height:300,chartStyle:3,region:'SAK',language:'ENG',key:'e829a770e69b62238b02c20a1bc9bf3e',link:'Gujarati Astrology Software',target1:'http://www.indianastrologysoftware.com/personal-astrology/gujarati-kundli-software.php',target2:'http://www.indianastrologysoftware.com/personal-astrology/gujarati-kundli-software.php'}  
/*http://www.baroda.com/*/ ,
						"b9d7c14b03bd4a6ed5b1c3ceee95360c" : { initScreen:'basic',width:150,height:300,chartStyle:3,region:'SAK',language:'ENG',key:'b9d7c14b03bd4a6ed5b1c3ceee95360c',link:'Gujarati Astrology Software',target1:'http://www.indianastrologysoftware.com/personal-astrology/gujarati-kundli-software.php',target2:'http://www.indianastrologysoftware.com/personal-astrology/gujarati-kundli-software.php'}  
/*http://www.ahmedabad.com/*/ ,
						"7a59ba1fc1e6470992d904f04d097950" : { initScreen:'basic',width:150,height:300,chartStyle:1,region:'SAK',language:'ENG',key:'7a59ba1fc1e6470992d904f04d097950',link:'Kannada Astrology Software',target1:'http://www.indianastrologysoftware.com/astrology-pack/kannada-astrology-software.php',target2:'http://www.indianastrologysoftware.com/astrology-pack/kannada-astrology-software.php'}  
/*http://www.kannada.com/*/ ,
"40d8e2e77f336aaa8dffa160aa4082f6" : { initScreen:'basic',width:150,height:300,chartStyle:1,region:'SAK',language:'ENG',key:'40d8e2e77f336aaa8dffa160aa4082f6',link:'Kannada Astrology Software',target1:'http://www.indianastrologysoftware.com/astrology-pack/kannada-astrology-software.php',target2:'http://www.indianastrologysoftware.com/astrology-pack/kannada-astrology-software.php'}  
/*http://www.bangalorebest.com/*/ ,
"a03b8faa13b82c03f0ebdebc1d358dd5" : { initScreen:'basic',width:150,height:300,chartStyle:1,region:'SAK',language:'ENG',key:'a03b8faa13b82c03f0ebdebc1d358dd5',link:'Panchangam',target1:'http://www.indianastrologysoftware.com/astrology-pack/panchangam-software.php',target2:'http://www.indianastrologysoftware.com/astrology-pack/panchangam-software.php'}  
/*chennaionline.com/*/ ,
"e6d3fbe594ee0fa16dd88d754b955d0b" : { initScreen:'basic',width:150,height:300,chartStyle:3,region:'SAK',language:'ENG',key:'e6d3fbe594ee0fa16dd88d754b955d0b',link:'Panchang',target1:'http://www.indianastrologysoftware.com/astrology-pack/panchangam-software.php',target2:'http://www.indianastrologysoftware.com/astrology-pack/panchangam-software.php'}  
/*http://www.hindunet.org/hindu_calendar/*/ ,
"3bc66b1e535df2cf0cc19fa0f38a2112" : { initScreen:'basic',width:150,height:300,chartStyle:1,region:'MAL',language:'ENG',key:'3bc66b1e535df2cf0cc19fa0f38a2112',link:'Astrology Software',target1:'http://www.indianastrologysoftware.com/',target2:'http://www.indianastrologysoftware.com/'}  
/*http://www.kairaly.net/*/ ,
"9e6f2bcb95204b1c9d11947aca7403a2" : { initScreen:'basic',width:150,height:300,chartStyle:1,region:'SAK',language:'ENG',key:'9e6f2bcb95204b1c9d11947aca7403a2',link:'Panchangam',target1:'http://www.indianastrologysoftware.com/astrology-pack/panchangam-software.php',target2:'http://www.indianastrologysoftware.com/astrology-pack/panchangam-software.php'}  
/*http://hosuronline.com/*/ ,
"924ff9141e6a11a0120a48d93bb10fbd" : { initScreen:'basic',width:150,height:300,chartStyle:1,region:'SAK',language:'ENG',key:'924ff9141e6a11a0120a48d93bb10fbd',link:'Panchangam',target1:'http://www.indianastrologysoftware.com/astrology-pack/panchangam-software.php',target2:'http://www.indianastrologysoftware.com/astrology-pack/panchangam-software.php'}  
/*http://www.anytimechennai.com/*/ ,
"3604e1b3b779c22ae82999097157782f" : { initScreen:'basic',width:150,height:300,chartStyle:1,region:'SAK',language:'ENG',key:'3604e1b3b779c22ae82999097157782f',link:'Panchangam',target1:'http://www.indianastrologysoftware.com/astrology-pack/panchangam-software.php',target2:'http://www.indianastrologysoftware.com/astrology-pack/panchangam-software.php'}  
/*http://www.coimbatorepages.com/*/ ,
"4c806a73c9e787f797e68e08b9175f5b" : { initScreen:'basic',width:150,height:300,chartStyle:1,region:'SAK',language:'ENG',key:'4c806a73c9e787f797e68e08b9175f5b',link:'Panchangam',target1:'http://www.indianastrologysoftware.com/astrology-pack/panchangam-software.php',target2:'http://www.indianastrologysoftware.com/astrology-pack/panchangam-software.php'}  
/*http://www.coimbatorecity.com/*/ ,
"7117451721637cf893fa84d0119c3ae3" : { initScreen:'basic',width:150,height:300,chartStyle:1,region:'SAK',language:'ENG',key:'7117451721637cf893fa84d0119c3ae3',link:'Astrology Software',target1:'http://www.indianastrologysoftware.com/',target2:'http://www.indianastrologysoftware.com/'}  
/*http://www.sringeri.net/*/ ,
"2b79311899c668d89ff4e9ea842ce40c" : { initScreen:'basic',width:150,height:300,chartStyle:1,region:'SAK',language:'ENG',key:'2b79311899c668d89ff4e9ea842ce40c',link:'Astrology Software',target1:'http://www.indianastrologysoftware.com/',target2:'http://www.indianastrologysoftware.com/'}  
/*http://india.worldviewer.com/*/ ,
"75cb63cbb82005ea2146b66ce7bdf1f1" : { initScreen:'basic',width:150,height:300,chartStyle:3,region:'SAK',language:'ENG',key:'75cb63cbb82005ea2146b66ce7bdf1f1',link:'Astrology Software',target1:'http://www.indianastrologysoftware.com/',target2:'http://www.indianastrologysoftware.com/'}  
/*http://www.astrojyoti.com/*/ ,
"552befe5a8e36d29367934b255d64f0e" : { initScreen:'basic',width:150,height:300,chartStyle:3,region:'SAK',language:'ENG',key:'552befe5a8e36d29367934b255d64f0e',link:'Astrology Software',target1:'http://www.indianastrologysoftware.com/',target2:'http://www.indianastrologysoftware.com/'}  
/*http://www.riiti.com/*/ ,
"3e9e884eb451f7f01b1aeef0ba7eff5a" : { initScreen:'basic',width:150,height:300,chartStyle:1,region:'SAK',language:'ENG',key:'3e9e884eb451f7f01b1aeef0ba7eff5a',link:'Astrology Software',target1:'http://www.indianastrologysoftware.com/',target2:'http://www.indianastrologysoftware.com/'}  
/*http://www.illuminatetoday.com/*/ ,
"cc7b549fb20924c545d226018b16a9a2" : { initScreen:'basic',width:150,height:300,chartStyle:3,region:'SAK',language:'ENG',key:'cc7b549fb20924c545d226018b16a9a2',link:'Astrology Software',target1:'http://www.indianastrologysoftware.com/',target2:'http://www.indianastrologysoftware.com/'}  
/*http://www.vedicscholar.com/index.html*/ ,
"32e9bdd34dabea60667028cc665c0f37" : { initScreen:'basic',width:150,height:300,chartStyle:1,region:'SAK',language:'ENG',key:'32e9bdd34dabea60667028cc665c0f37',link:'Astrology Software',target1:'http://www.indianastrologysoftware.com/',target2:'http://www.indianastrologysoftware.com/'}  
/*http://www.kamakoti.org/*/ ,
"4b98dada2e580ee44affe8e94b14c0c7" : { initScreen:'basic',width:150,height:300,chartStyle:1,region:'SAK',language:'ENG',key:'4b98dada2e580ee44affe8e94b14c0c7',link:'Astrology Software',target1:'http://www.indianastrologysoftware.com/',target2:'http://www.indianastrologysoftware.com/'}  
/*http://www.sriramanamaharshi.org/*/ ,
"3f9a8ffc50405e7c697955c62ba87dd2" : { initScreen:'basic',width:150,height:300,chartStyle:3,region:'SAK',language:'ENG',key:'3f9a8ffc50405e7c697955c62ba87dd2',link:'Astrology Software',target1:'http://www.indianastrologysoftware.com/',target2:'http://www.indianastrologysoftware.com/'}  
/*http://www.siddhayoga.org/centerslist*/ ,
"2f44c43489f6d10641252c4f1faa9acd" : { initScreen:'basic',width:150,height:300,chartStyle:1,region:'SAK',language:'ENG',key:'2f44c43489f6d10641252c4f1faa9acd',link:'Astrology Software',target1:'http://www.indianastrologysoftware.com/',target2:'http://www.indianastrologysoftware.com/'}  
/*http://www.astroica.com/*/ ,
"cc81f93fea3dbabd2abcb8b7f07ee591" : { initScreen:'basic',width:150,height:300,chartStyle:3,region:'SAK',language:'ENG',key:'cc81f93fea3dbabd2abcb8b7f07ee591',link:'Astrology Software',target1:'http://www.indianastrologysoftware.com/',target2:'http://www.indianastrologysoftware.com/'}  
/*http://www.mypanchang.com/*/ ,
"fcd86cfc5ba4e2b1c477d1a1277e5c29" : { initScreen:'basic',width:150,height:300,chartStyle:3,region:'SAK',language:'ENG',key:'fcd86cfc5ba4e2b1c477d1a1277e5c29',link:'Astrology Software',target1:'http://www.indianastrologysoftware.com/',target2:'http://www.indianastrologysoftware.com/'}  
/*http://www.cyberastro.com*/ ,
"2ae5d959dbca54a3e39206386538effc" : { initScreen:'basic',width:150,height:300,chartStyle:3,region:'SAK',language:'ENG',key:'2ae5d959dbca54a3e39206386538effc',link:'Astrology Software',target1:'http://www.indianastrologysoftware.com/',target2:'http://www.indianastrologysoftware.com/'}  
/*http://www.rudraksham.com/*/ ,
"4e46857b87e773c78fa3ce1b43d71e55" : { initScreen:'basic',width:150,height:300,chartStyle:3,region:'SAK',language:'ENG',key:'4e46857b87e773c78fa3ce1b43d71e55',link:'Astrology Software',target1:'http://www.indianastrologysoftware.com/',target2:'http://www.indianastrologysoftware.com/'}  
/*http://www.askganesha.com/*/ ,
"e60700c341afd4bd2a991ea576bca4a0" : { initScreen:'basic',width:150,height:300,chartStyle:3,region:'SAK',language:'ENG',key:'e60700c341afd4bd2a991ea576bca4a0',link:'Astrology Software',target1:'http://www.indianastrologysoftware.com/',target2:'http://www.indianastrologysoftware.com/'}  
/*http://www.surfindia.com/astrology/*/ ,
"34bcd99422f3f8eb01c4b35116882701" : { initScreen:'basic',width:150,height:300,chartStyle:3,region:'SAK',language:'ENG',key:'34bcd99422f3f8eb01c4b35116882701',link:'Astrology Software',target1:'http://www.indianastrologysoftware.com/',target2:'http://www.indianastrologysoftware.com/'}  
/*http://www.pravasitoday.com/nri-helpline/astrology*/ ,
"455f32eddc576453746622e183901f06" : { initScreen:'basic',width:150,height:300,chartStyle:3,region:'SAK',language:'ENG',key:'455f32eddc576453746622e183901f06',link:'Astrology Software',target1:'http://www.indianastrologysoftware.com/',target2:'http://www.indianastrologysoftware.com/'}  
/*http://www.india4u.com/horoscope/horoscope.asp*/ ,
"e29dfeb788c5a3842e22c83c8afc2040" : { initScreen:'basic',width:150,height:300,chartStyle:3,region:'SAK',language:'ENG',key:'e29dfeb788c5a3842e22c83c8afc2040',link:'Astrology Software',target1:'http://www.indianastrologysoftware.com/',target2:'http://www.indianastrologysoftware.com/'}  
/*http://www.sriraghavendramutt.org*/ ,
"bef7296b9e09d645817a811d0c18eb2b" : { initScreen:'basic',width:150,height:300,chartStyle:3,region:'SAK',language:'ENG',key:'bef7296b9e09d645817a811d0c18eb2b',link:'Astrology Software',target1:'http://www.indianastrologysoftware.com/',target2:'http://www.indianastrologysoftware.com/'}  
/*http://hindupad.com*/ ,
"4e4c55672e9d0b1819f14de62308dcf6" : { initScreen:'basic',width:150,height:300,chartStyle:3,region:'SAK',language:'ENG',key:'4e4c55672e9d0b1819f14de62308dcf6',link:'Astrology Software',target1:'http://www.indianastrologysoftware.com/',target2:'http://www.indianastrologysoftware.com/'}  
/*http://www.eastwestdirectory.com/Astro/daily_summary.php*/,
							 /*zym 3*/
						 "7846b41820422dac4fc39a57475fbea5" : { initScreen:'basic',width:150,height:300,chartStyle:2,region:'SAK',language:'ENG',key:'7846b41820422dac4fc39a57475fbea5',link:'Astrology Software',target1:'http://www.indianastrologysoftware.com/astrology-software-widget.php',target2:'http://www.indianastrologysoftware.com/astrology-software-widget.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/'},
							/* http://deepiar.page.tl*/
							"54e602f393415fd00a447bd753ae7bf2" : { initScreen:'basic',width:150,height:300,chartStyle:1,region:'SAK',language:'ENG',key:'54e602f393415fd00a447bd753ae7bf2',link:'Astrology Software',target1:'http://www.indianastrologysoftware.com/',target2:'http://www.indianastrologysoftware.com/'},

							"6248d1797f0b90141d904548bece5485" : { initScreen:'basic',width:150,height:300,chartStyle:1,region:'TAM',language:'ENG',key:'6248d1797f0b90141d904548bece5485',link:'Tamil Astrology Software',target1:'http://www.indianastrologysoftware.com/astrology-pack/tamil-astrology-software.php',target2:'http://www.indianastrologysoftware.com/astrology-pack/tamil-astrology-software.php'},/* http://www.chennaibest.com/*/
							
							"d1fb348eeab502635b7c66cf9d6e4437" : { initScreen:'basic',width:150,height:300,chartStyle:1,region:'TEL',language:'ENG',key:'d1fb348eeab502635b7c66cf9d6e4437',link:'Telugu Astrology Software',target1:'http://www.indianastrologysoftware.com/astrology-pack/telugu-astrology-software.php',target2:'http://www.indianastrologysoftware.com/astrology-pack/telugu-astrology-software.php'},/* http://www.hyderabadbest.com/*/
							"22102a74b5e7bcb2bc3250c6b756f4a3" : { initScreen:'basic',width:150,height:300,chartStyle:2,region:'SAK',language:'ENG',key:'22102a74b5e7bcb2bc3250c6b756f4a3',link:'Astrology Software',target1:'http://www.indianastrologysoftware.com/',target2:'http://www.indianastrologysoftware.com/'}/* http://moneymarkets.net.in*/	 ,
							"8580e6a49c066fac4b053cf9bf8f0759" : { initScreen:'basic',width:150,height:300,chartStyle:3,region:'SAK',language:'ENG',key:'8580e6a49c066fac4b053cf9bf8f0759',link:'Astrology Software',target1:'http://www.indianastrologysoftware.com/',target2:'http://www.indianastrologysoftware.com/'}/* http://www.adiitya.com/*/,
							"e33642264df5853f60933e346e0240d7" : { initScreen:'basic',width:150,height:300,chartStyle:1,region:'TEL',language:'ENG',key:'e33642264df5853f60933e346e0240d7',link:'Astrology Software',target1:'http://www.indianastrologysoftware.com/',target2:'http://www.indianastrologysoftware.com/'},/* http://www.paderu.at.ua*/
							"148f25fd2075f4089b39deaad9228e42" : { initScreen:'basic',width:150,height:300,chartStyle:1,region:'SAK',language:'ENG',key:'148f25fd2075f4089b39deaad9228e42',link:'Astrology Software',target1:'http://www.indianastrologysoftware.com/',target2:'http://www.indianastrologysoftware.com/'}/* www.srbm.co.za*/	,
						"ad5535ce146255560a225eb42f56dba3" : { initScreen:'basic',width:150,height:300,chartStyle:3,region:'SAK',language:'ENG',key:'ad5535ce146255560a225eb42f56dba3',link:'Astrology Software',target1:'http://www.indianastrologysoftware.com/',target2:'http://www.indianastrologysoftware.com/'}/* http://www.tinyinfonet.com*/	 ,
							"7f8883fba4961c51aba8b0ceffdeb992" : { initScreen:'basic',width:150,height:300,chartStyle:1,region:'SAK',language:'ENG',key:'7f8883fba4961c51aba8b0ceffdeb992',link:'Tamil Astrology Software',target1:'http://www.indianastrologysoftware.com/astrology-pack/tamil-astrology-software.php',target2:'http://www.indianastrologysoftware.com/astrology-pack/tamil-astrology-software.php'}/* http://yogicpsychology-research.blogspot.com/*/,
								"89770d9c105cf3b1724e56a960284f2e" : { initScreen:'basic',width:150,height:300,chartStyle:2,region:'SAK',language:'ENG',key:'89770d9c105cf3b1724e56a960284f2e',link:'Astrology Software',target1:'http://www.indianastrologysoftware.com/astrology-pack/astrology-software.php',target2:'http://www.indianastrologysoftware.com/astrology-pack/astrology-software.php'}/* http://www.vedicpatra.com*/


					};


/*	
	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="mbprf_tbox mbpt11 mbfa" '+
				'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="mbpl3 mbcp" '+
				'onclick=""/></div>';

var resTpl =	'<div class="mbpt11 mbfa">'+
				'<div class="mbblk mbb">**PLC**</div>'+
				'<div class="mbshim2px mbcb">&nbsp;</div>'+
				'<div class="mbw60 mbfl">Longitude : </div><div class="mbw60 mbfl">**LNG**</div>'+
				'<div class="mbw60 mbfl">Latitude : </div><div class="mbw60 mbfl">**LAT**</div>'+
				'<div class="mbw60 mbfl">Time Zone : </div><div class="mbw60 mbfl">**TZN**</div>'+
				'<div class="mbshim2px mbcb">&nbsp;</div>'+
				'<div class="mbcb">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':'mbprf_sel mbpt11 mbfa'}).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':'mbprf_sel mbpt11 mbfa', 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;}
	dl('src_result').setHTML("<h3><cenetr>Loading..</center></h3>");
	try
	{
		lsrv =  ""+srv_root+"location.search.mat.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)
	{
		//alert('1:' + err.description );
		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)
{
	dl('src_result').clear();
	if(json.list == '') return dl('src_result').setHTML(getNotFoundScreen());
	if(type != "Display")
	{
		dl('src_result').instance.appendChild(new Element("div",{'class':'mbb',html:'Select your '+sInput.type}).create());
		sInput.type = type;
		list = json.list.split(',');
		h = '';
		for(i=0;i<list.length;i++)		h += '<div class="mbcp mbsrc_link" title="'+list[i]+'" onclick="setPlace(\''+list[i]+'\','+i+')">&nbsp;&nbsp;'+Trimm(list[i],20)+'</div>';
		dl('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)
		{ dl('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]);
		dl('src_result').instance.innerHTML += tpl;
		dl('src_result').instance.appendChild(selTimeCorr());
		dl('src_result').instance.appendChild(new Element('div',{html:'&nbsp;','class':'mbshim4px mbw60'}).create());
		btn = new Element('div',{align:'',html:'Save','class':'mbml5 mbcp mbbttn mbtac mbb'}).create();
		btn.onclick = function(){changePlace()};
		dl('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")
	dl("src_result").instance.innerHTML =	inpSearch.replace("**VL**",sInput.type);
	else
	{
		doSearch({value:sInput.place});
	}
	if(sInput.type == "Country")
	dl("src_result").instance.innerHTML +=	'<div class="mbshim4px"></div>'+
											'<div class="mbml5 mbpt11">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")
	dl("src_result").instance.innerHTML +=	'<div class="mbshim4px"></div>'+
											'<div class="mbml5 mbpt11">Please Search for a state/province in <b>'+sInput.country+'</b></div>';
	if(sInput.type == "City")
	dl("src_result").instance.innerHTML +=	'<div class="mbshim4px"></div>'+
											'<div class="mbml5 mbpt11">Please Search for a place/city in <b>'+sInput.country+' > '+sInput.state+'</b></div>';
};

var changePlace = function()
{
	sInput.data += '-'+ dl('selTimeCorr').instance.selectedIndex;
	try
	{	
		dl('src_result').setHTML("<h3><cenetr>Saving..</center></h3>");
		lsrv =  ""+srv_root+"location.search.mat.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)
	{
		//alert('2:' + err.description );
		error(err.description);
	}
};

function setOptions(opt)
{
	if(opt != null)	for(i in options){options[i] = (typeof(opt[i])=="undefined") ? options[i] : opt[i];	}
	dl(targetElementId).instance.style.width = '148px';
	dl(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(dl('floatimage').instance == null)
	{
		fl	= new Element('input',{id:'floatimage',type:'image',src:url,'class':'mbfloatimage'}).create();
		dl(targetElementId).instance.appendChild(fl);
	}
	else fl = dl('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(dl('floatimage').instance != null ) dl('floatimage').instance.style.display = "none";
};

function getPlaceData()
{
	//alert('placedata');
	try
	{
		lsrv = ""+srv_root+"location.wsrv.mat.php?callBk=parsePlace&key="+options.key;
		jObj = new JSONScript(lsrv); 
		jObj.addScriptTag();
	}
	catch(err)
	{
		//alert('3:' + err.description );
		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.mat.php?callBack='+cback+'&json=true&ipJ='+ipJ; 
		jObj = new JSONScript(wsrv); 
		jObj.addScriptTag();
	}
	catch(err)
	{
		//alert('4:' + err.description );
		error(err.description);
	}
	

} ; 

/*
	function to prepare input data and request
	webservice to return the astrology data
*/
function wProcess()
{
	if(!validateRequest())
	{
		//alert('oops!');
		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.mat.php?callBk=validateClient&req=crypt";
			jObj = new JSONScript(lsrv); 
			jObj.addScriptTag();
		}
		catch(err)
		{
			//alert('5:' + err.description );
			error(err.description);
		}
	}
	else
	{
		ipJ = wProcess();
	}
};

var validateClient = function(key)
{
	setOptions(validClients[key]);
	jObj.removeScriptTag(); 
	ipJ = wProcess();
	
};
var validateRequest = function()
{
	//alert(options.key);
	var bld= dl('avx_widget_148_bkl').instance;
	var anc = dl('avx_widget_148_back_link').instance;
	//if(options.initScreen == '' || options.chartStyle == 0 || options.region == 'null' || options.key == '') return false;
	if(window.opera) return true;
	else if(bld != null)
	{	
		
		if(options.initScreen == '' || options.chartStyle == 0 || options.region == 'null' || options.key == '')
		{
			aurl = anc.getAttribute("href").replace(new RegExp("/","g"),"");
			url1 = "http://www.indianastrologysoftware.com".replace(new RegExp("/","g"),"");
			url2 = "http://www.indianastrologysoftware.com".replace(new RegExp("/","g"),"");
			anctext = "Astrology Software";
			
		}
		else
		{
			aurl = anc.getAttribute("href").replace(new RegExp("/","g"),"");
			url1 = options.target1.replace(new RegExp("/","g"),"");
			url2 = options.target2.replace(new RegExp("/","g"),"");
			anctext = options.link;
		}
		
		//alert('1');
		if(bld.style.display != "block") return false;
		//alert('2');
		if(anc.style.display != "block") return false;
		//alert('3');
		
		if(bld.className.replace(new RegExp(" ","g"),"") != "fapt10" ) return false; 
		//alert('4');
		if(anc.className.replace(new RegExp(" ","g"),"") != "back_link") return false;
		//alert('5:' + aurl + ':' + url1 + ':' + aurl + ':' + url2 );
		if(aurl != url1 && aurl != url2) return false;
		//alert('6');
		if(anc.innerHTML.indexOf(anctext) < 0) return false; 
		//alert('7');
		return true;
	}
	else return false;

	return true;
};

/*var validateRequest = function()
{
	//alert(options.key);
	var bld= dl('avx_widget_148_bkl').instance;
	var anc = dl('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"),"");
		//alert('1');
		if(bld.style.display != "block") return false;
		//alert('2');
		if(anc.style.display != "block") return false;
		//alert('3');
		
		if(bld.className.replace(new RegExp(" ","g"),"") != "fapt10" ) return false; 
		//alert('4');
		if(anc.className.replace(new RegExp(" ","g"),"") != "back_link") return false;
		//alert('5:' + aurl + ':' + url1 + ':' + aurl + ':' + url2 );
		if(aurl != url1 && aurl != url2) return false;
		//alert('6');
		if(anc.innerHTML.indexOf(options.link) < 0) return false; 
		//alert('7');
		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':'mbavw_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()
{
	dl(this.targetId).instance.childNodes[0].innerHTML ="";
	frame = new Element('div',{id:'av_widget_148','class':'',html:''}).create();
	frame.appendChild(this.uAAccess());
	dl(this.targetId+'_content').instance.appendChild(frame);
};
Widget.prototype.showBasicScreen = function()
{
	dl(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());
	dl(this.targetId+'_content').instance.appendChild(frame);
};
Widget.prototype.showPanchangaScreen = function()
{
	dl(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());
	dl(this.targetId+'_content').instance.appendChild(frame);
};
Widget.prototype.showChartScreen = function()
{
	dl(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());
	dl(this.targetId+'_content').instance.appendChild(frame);
};
Widget.prototype.showSignificanceScreen = function()
{
	dl(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());
	dl(this.targetId+'_content').instance.appendChild(frame);
};
Widget.prototype.showAstroScreen = function()
{
	dl(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());
	dl(this.targetId+'_content').instance.appendChild(frame);
};
Widget.prototype.showCalendarScreen = function()
{
	dl(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**","mbwcaption mbfl "+((j==0)?"mbred":"mbblk")+" mbfa mbpt12 mbb");
		d = d.replace("**IP**",'0');
		y += d;
	}
	y += '<br class="mbcb"/>';
	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)?"mbwcaption":"mbcaldate mbcp")+" mbfl "+((acal[i][j] == curDate.getDate())?" bgrey " :"") +
				((j==0)?"mbred":"mbblk")+" "+((inArray(acal[i][j],astroData.special_days_of_month.list))?"mbblock":"")
				+" mbfa mbpt12 mbb");
			d = d.replace("**IP**",acal[i][j]);
			y += d;
		}
		y += '<br class="mbcb"/>';
	}
	dl(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());
	dl(this.targetId+'_content').instance.appendChild(frame);

};
Widget.prototype.showPreference = function()
{
	dl(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());
	dl(this.targetId+'_content').instance.appendChild(frame);
};
Widget.prototype.showRegionSet = function()
{
	dl(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());
	dl(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+
				'&language=mal'+
				'&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="mbuaaceess mbblk"><div class="mbpt16 mbb warning">(!)Warning</div>'+
				'<div>&nbsp;</div>'+
				'<div class="mbred mbb mbpt16">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</div>';
	return new Element('div',{'class':'',html:tpl}).create();
};
Widget.prototype.header = function()
{
	var tpl =	'<div class="mbheader"><div class="mbddmmyy">'+
            	'	<div class="mbdateday mbfl">'+
                '		<div class="mbdate mbfa">'+
				'    		<div class="mbdate_p mbfl"><img src="'+srv_root+'images/p_left.gif" width="4" height="5" class="mbpadt10 mbcp" onclick="prevDay()"/></div>'+
                '			<div class="mbdate_dd mbfl mbac mbb">'+lpad(curDate.getDate()+'')+'</div>'+
                '			<div class="mbdate_n mbfr"><img src="'+srv_root+'images/n_right.gif" width="4" height="5" class="mbpadt10 mbcp" onclick="nextDay()"/></div>'+
                '   	</div>'+
                '  		<div class="mbday mbac mbb mbfa">'+wlist[curDate.getDay()].substring(0,3)+'</div>'+
                '	</div>'+
                '	<div class="mbmonth mbfl">'+
                '		<div class="mbmonth_p  mbac"><img src="'+srv_root+'images/empty.gif" width="5" height="4" class="mbpadt4" /></div>'+
                '		<div class="mbmonth_mm mbac mbb mbfa" onclick="loadWidget(\'clndr\',false)"><span class="mbcp"> <u>'+mlist[curDate.getMonth()].substring(0,3)+'</u></span></div>'+
                '		<div class="mbmonth_n mbac"><img src="'+srv_root+'images/empty.gif" width="5" height="4" /></div>'+
                '	</div>'+
                '	<div class="mbyear mbfr mbb mbac mbfa">'+curDate.getFullYear()+'</div>'+
                    
       			'</div>'+
                '<div class="mbplace mbac mbfa mbgrey mbpt10 mbcp" onclick="loadWidget(\'prfnc\',false)">Place : <span class="mbb mbred mbpt12" >'+Trimm(wInput.place.cityName,15)+'</span></div>'+
				'</div>';
	return new Element('div',{id:'',html:tpl}).create();

};

Widget.prototype.significance = function()
{
	var tpl =   '<div class="mbresultbox">'+
                '<div class="mbresultbox_head ac fa pt12 b">'+astroData.significance_of_the_day.caption+'</div>'+
                '<div class="mbspecial_text pt11">'+
                '<span class="pt12 b red">'+astroData.significance_of_the_day.value+'</span>'+
				'<div class="mbshim1px">&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="mbresultbox_prf">'+
                '<div class="mbresultbox_head mbac mbfa mbpt12 mbb">Change Location</div>'+
				'<div class="mbblk">&nbsp;</div>'+
                '<div class="mbpt11 mbml5 mbsrc_result" id="src_result">'+
                '<span class="mbpt12 mbb mbblk mbtal">'+inpSearch.replace("**VL**",sInput.type)+'</span>'+
				'<div class="mbshim4px">&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="mbshim1px">&nbsp;</div>'+
                '</div>';
	return new Element('div',{'class':'',html:tpl}).create();
};

Widget.prototype.chart = function()
{
	var tpl =	'<div class="mbresultbox">'+
			    '     <div class="mbresultbox_head mbac mbfa mbpt12 mbb">Instant Astro Chart</div>'+
				'<div class="mbshim1px">&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="mbfloatimage" />'+
				'</div>';
	return new Element('div',{'class':'',html:tpl}).create();
};

Widget.prototype.panchanga = function()
{
	var tpl = '<div class="mbresultbox">'+
              '  <div class="mbresultbox_head mbac mbfa mbpt12 mbb">Today\'s Panchangam</div>'+
              '   <div class="mbcalnstar_star">'+
              '  	<div class="mbcalnstar_sname mbpl3 mbfa mbpt12 mbb">'+astroData.panchangam.star.caption+' : <span class="mbpt12 mbb mbred">'+astroData.panchangam.star.value+'</span></div>'+
              '      <div class="mbcalnstar_head mbpt11 mbac mbfa mbgrey">('+astroData.panchangam.star.duration+')</div>'+
              '  </div>'+
              '  <div class="mbshim1px">&nbsp;</div>'+
              '  <div class="mbcalnstar_star">'+
              '  	<div class="mbcalnstar_sname mbpl3 mbfa mbpt12 mbb">'+astroData.panchangam.thithi.caption+' : <span class="mbpt12 mbb mbred">'+astroData.panchangam.thithi.value+'</span></div>'+
              '      <div class="mbcalnstar_head mbpt11 mbac mbfa mbgrey">('+astroData.panchangam.thithi.duration+')</div>'+
              '  </div>'+
              '  <div class="mbshim1px">&nbsp;</div>'+
              '  <div class="mbcalnstar_sname mbpl3 mbfa mbpt12 mbb">'+astroData.panchangam.karana.caption+' : <span class="mbpt12 mbb mbred">'+astroData.panchangam.karana.value+'</span></div>'+
              '  <div class="mbshim1px">&nbsp;</div>'+
              '  <div class="mbcalnstar_sname mbpl3 mbfa mbpt12 mbb">'+astroData.panchangam.nithyayogam.caption+' : <span class="mbpt12 mbb mbred">'+astroData.panchangam.nithyayogam.value+'</span></div>'+
              '</div';
	return new Element('div',{'class':'',html:tpl}).create();
};

Widget.prototype.lcalendar = function(obCal)
{
	var tpl =	'<div class="mbresultbox">'+
			    '     <div class="mbresultbox_head mbac mbfa mbpt12 mbb">Calendar</div>'+
				'<div class="mbshim1px">&nbsp;</div>'+
				'<div align="center" class="mbpl3">'+obCal+'</div>'+
				'</div>';
	return new Element('div',{'class':'',html:tpl}).create();
};

Widget.prototype.astroday = function()
{
	var tpl = '<div class="mbresultbox">'+  
              '  <div class="mbresultbox_head mbac mbfa mbpt12 mbb">Astroday</div>'+
              '  	<div class="mbresultbox_text mbpl3 mbfa mbpt11">'+astroData.panchangam.rahukalam.caption+':</div>'+
              '      <div class="mbcalnstar_head mbpt11 mbac mbfa "><span class="mbpt12 mbb mbred">'+astroData.panchangam.rahukalam.duration.toLowerCase()+'</span></div>'+
              '  <div class="mbshim2px">&nbsp;</div>'+
              '  	<div class="mbresultbox_text mbpl3 mbfa mbpt11">'+astroData.panchangam.yamakantakalam.caption+' : </div>'+
              '      <div class="mbcalnstar_head mbpt11 mbac mbfa "><span class="mbpt12 mbb mbred">'+astroData.panchangam.yamakantakalam.duration.toLowerCase()+'</span></div>'+
			  '		<div class="mbshim2px">&nbsp;</div>'+
              '  	<div class="mbcalnstar_sname mbpl3 mbfa mbpt11">'+astroData.panchangam.sunrise.caption+':<span class="pt12 b red">'+astroData.panchangam.sunrise.value+'</span> </div>'+
              '  <div class="mbshim2px">&nbsp;</div><div class="mbcalnstar_star">'+
              '  	<div class="mbcalnstar_sname mbpl3 mbfa mbpt11">'+astroData.panchangam.sunset.caption+' :<span class="mbpt12 mbb mbred"> '+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':'mbshim1px mbcb',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="mbcalnstar">'+
              '	<div class="mbcalnstar_2">'+
              '  	<div class="mbcalnstar_head mbpt11 mbb mbcp mbpl3 mbfa" onclick="loadWidget(\'rgion\',false);"><u>'+astroData.header.regional.year_caption+'</u>&nbsp;<img src="'+srv_root+'images/p_bot.gif" class="mbcp mbblk" onclick="loadWidget(\'rgion\',false);" width="5" height="4"/> </div>'+
              '     <div class="mbshim2px mbcb">&nbsp;</div>'+
			  '      <div class="mbcalnstar_text mbred mbpt12 mbb mbac mbfa" id="regional_result">'+reg+'</div>'+
              '  </div>'+
			  '	<div class="mbcalnstar_1">'+
              '  	<div class="mbresultbox_text mbpl3 mbfa mbpt11 mbb">'+astroData.panchangam.rahukalam.caption+':</div>'+
              '      <div class="mbcalnstar_head mbpt11 mbac mbfa "><span class="mbpt12 mbb mbred">'+astroData.panchangam.rahukalam.duration.toLowerCase()+'</span></div>'+
              '  </div>'+
              '  <div class="mbcalnstar_star">'+
              '  	<div class="mbcalnstar_sname mbpl3 mbfa mbpt12 mbb">'+astroData.panchangam.star.caption+' : <span class="mbpt12 mbb mbred">'+astroData.panchangam.star.value+'</span></div>'+
              '      <div class="mbcalnstar_head mbpt11 mbac mbfa mbgrey">('+astroData.panchangam.star.duration+')</div>'+
              '  </div>'+
              '</div>'+
			  '</div>';
	return new Element('div',{'class':'',html:tpl}).create();
};

Widget.prototype.linkChart = function()
{
	var tpl = '<div class="mblinkbox mbar mbred mbpt12 mbb mbpr4 mbfa">Instant astro chart<img src="'+srv_root+'images/dbullet_grey.gif" width="10" height="9" class="mbpl3"/></div>';
	li = new Element('div',{'class':'vcp vcb',html:tpl}).create();
	li.onclick = function(){ loadWidget('chart',false);};
	return li;
};

Widget.prototype.linkMain = function()
{
	var tpl = '<div class="mblinkbox mbar mbblk mbpt12 mbb mbpr4 mbfa">Main Screen<img src="'+srv_root+'images/dbullet_grey.gif" width="10" height="9" class="mbpl3"/></div>';
	li = new Element('div',{'class':'mbcp mbcb',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="mblinkbox mbar mbred mbpt11 mbbmb pr4 mbfa" ><div class="mbfl" onclick="loadChart('+x+')">'+la[x]+' </div> <div class="mbfr" onclick="loadChart('+y+')"> '+la[y]+'</div></div>';
	li = new Element('div',{'class':'mbcp mbcb',html:tpl}).create();
	li.onclick = function(){ loadWidget('chart',false);};
	return li;
};

Widget.prototype.linkPanchang = function()
{
	var tpl = '<div class="mblinkbox mbar mbblk mbpt12 mbb mbpr4 mbfa">Today\'s Panchagam<img src="'+srv_root+'images/dbullet_grey.gif" width="10" height="9" class="mbpl3"/></div>';
	li = new Element('div',{'class':'mbcp mbcb',html:tpl}).create();
	li.onclick = function(){ loadWidget('panch',false);};
	return li;
};

Widget.prototype.linkSpeciality = function()
{
	var tpl = '<div class="mblinkbox mbar mbblk mbpt12 mbb mbpr4 mbfa">Speciality of this day<img src="'+srv_root+'images/dbullet_grey.gif" width="10" height="9" class="mbpl3"/></div>';
	li = new Element('div',{'class':'mbcp mbcb',html:tpl}).create();
	li.onclick = function(){ loadWidget('signf',false);};
	return li;
};

Widget.prototype.linkAstroDay = function()
{
	var tpl = '<div class="mblinkbox mbar mbblk mbpt12 mbb mbpr4 mbfa">Astroday<img src="'+srv_root+'images/dbullet_grey.gif" width="10" height="9" class="mbpl3"/></div>';
	li = new Element('div',{'class':'mbcp mbcb',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)
{
	//alert(msg);
	dl(targetElementId).clear();
	var tpl ='<div id="av_widget_148" class="mbac" style="border:#000 solid 2px; height:308px;">'+
			'<div class="warning"><b>(!)Warning</b></div>'+
			'<div class="mbac" style="height:106px;"><div class="mbpt12"><br />'+
			'The server is temporarily unavailable due to <strong class="mbb mbpt14">maintenance</strong>. <br />'+
			'Please   try again later. </div>'+
			'</div>'+
			'<div class="mbcalnstar_2 mbac mbpt12 mbb mbpl3"  >'+
			'Please   try again later. '+
			'</div>'+
			'<div class="mbshim1px mbblk"></div>'+
			'<p class="mbpt14 mbred mbb">Thank you for <br />'+
			'your patience</p><div class="mbpt10">'+''+'</div>'+
			'</div>';
	frame = new Element('div',{id:'av_widget_148','class':'',html:tpl}).create();
	dl(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.dl1 );
  }
  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;
}

