function initPage(start)
{
	
	adjustPageHeight();
	readCookies();
	initRootList();
	initSuraMenu();
	initJuzMenu();
	initAyaMenu(document.getElementById('suraMenu').value*1,1);
	initRootMenu(rootChar);
	showMenuTab(searchTab,searchMode);
	initMenuCollapse();
	if(start.page)
		showPage(start.page);
		else if(start.juz)
			showJuz(start.juz);
		else
			showAya(start.sura||currSura,start.aya||start.sura>0||currAya);
		if(localSearch)
			loadMainText(mainType);
}

function unload()
{
	saveCookies();
	mainText=quranText=transText=null;
}

function readCookies()
{
	
	for(var i in cookieData)
	{
		var w=Cookies.get(cookieData[i].name);
		if(w==null)
			w=cookieData[i].val;
		if(w=='true'||w=='false')
			w=(w=='true');
		window[cookieData[i].name]=w;
	}
	cookiesReady=true;
}

function saveCookies()
{
	if(!cookiesReady)
		return;
	
	for(var i in cookieData)
	{
		Cookies.set(cookieData[i].name,window[cookieData[i].name],30);
	}
}

function update(name,val)
{
	window[name]=val;
	Cookies.set(name,val,30);
}

function adjustVariables()
{currType=currType||1;fontSize=fontSize||16;currRecite=getItem(reciteList,currRecite,'id',defRecite).id;}
function initTexts()
{
	quranText=[];
	for(var i in quranTypes)
	{
		quranText[quranTypes[i].id]=[];
	}
}
function loadMainText(type)
{
	var ajax=new AJAX({timeout:300});
	var args={type:quranTypeName(type),download:0};
	queryType=type;ajax.request(root+'php/download.php',args,handleResponse);
}

function getItem(theArray,value,id,def)
{id=id||'id';var res=null;for(var i=0;i<theArray.length;i++)
if(theArray[i][id]==value)
res=theArray[i];if(!res)
res=def?getItem(theArray,def,id):theArray[0];return res;}

function initSuraMenu(sura,nameType)
{

	var items=[];
	nameType=nameType||'name';
	for(var i=1;i<=Quran.numSuras;i++)
	{
		//alert(Quran.getSuraName(i,nameType))
		items.push({text:i+': '+Quran.getSuraName(i,nameType),value:i});
	}
	initMenu('suraMenu',items,window[cookieData[1].name]);
}

function initAyaMenu(sura,aya)
{var numAyas=Quran.suraProps(sura).ayas;if(document.getElementById('ayaMenu').childNodes.length==numAyas)
return;var items=[];for(var i=1;i<=numAyas;i++)
items.push({text:i,value:i});
initMenu('ayaMenu',items,window[cookieData[1].name]);}

function initJuzMenu()
{var items=[];for(var i=1;i<=Quran.numJuzs;i++)
items.push({text:'جزء  '+i,value:i});initMenu('juzMenu',items);}

function initTransMenu()
{var items=[];for(var i=0;i<transList.length;i++){var langID=transList[i].lang;var lang=getItem(langList,langID).lang;transList[i].fname=langID+'.'+transList[i].id;items.push({text:lang+':  '+transList[i].name,value:transList[i].fname});}
initMenu('transMenu',items,currTrans);}

function initReciteMenu()
{var items=[];for(var i=0;i<reciteList.length;i++)
items.push({text:reciteList[i].name+' ('+reciteList[i].quality+' kbps)',value:reciteList[i].id});initMenu('reciteMenu',items,currRecite);}
function getItems(theArray,textLabel,valueLabel)
{var items=[];for(var i=0;i<theArray.length;i++)
items[i]={text:theArray[i][textLabel],value:theArray[i][valueLabel]||i};return items;}

function initMenu(menuID,items,defVal)
{
	var menu=document.getElementById(menuID);
	var newMenu=document.createElement('select');
	var attr=['id','className','class','onchange'];
	for(var i in attr)
		{
			newMenu[attr[i]]=menu[attr[i]];
			newMenu.setAttribute(attr[i],menu.getAttribute(attr[i]));
		}
	for(var i=0;i<items.length;i++)
	{
		var text=items[i].text;
		var option=document.createElement('option');
		option.text=option.innerHTML=text;
		option.value=items[i].value;
		newMenu.appendChild(option);
		if(defVal&&defVal==items[i].value)
		{
			newMenu.selectedIndex=i;
		}
	}
		menu.parentNode.replaceChild(newMenu,menu);}

function initMenu0(menuID,items,defVal)
{var menu=document.getElementById(menuID);removeAllChild(menu);for(var i=0;i<items.length;i++)
{var text=items[i].text;var option=document.createElement('option');option.text=option.innerHTML=text;option.value=items[i].value;menu.appendChild(option);if(defVal&&defVal==items[i].value)
menu.selectedIndex=i;}}

function showTabList()
{var text='';for(var i=0;i<tabList.length;i++)
text+='<li'+(tabList[i].visible==false?' style="display:none;"':'')
+'><a href="javascript:showTab(\''+tabList[i].id+'\');"'
+(tabList[i].id==currTab?' class="selected"':'')+'>'
+tabList[i].name+'</a></li>';document.getElementById('tab-strip').innerHTML=text;}
function showTab(tabID)
{if(currTab!='search')
lastTab=currTab;currTab=tabID;showTabList();document.getElementById('searchDiv').style.display=(currTab=='search')?'block':'none';document.getElementById('quranDiv').style.display=(currTab!='search')?'block':'none';document.getElementById('quranText').style.display=(currTab=='quran')?'block':'none';document.getElementById('transText').style.display=(currTab!='quran')?'block':'none';if(currTab!='search')
redraw();}
function showMenuTab(tabList,tabID)
{
	
	for(var i in tabList)
		{
			document.getElementById(tabList[i].name+'-tab').style.display='none';
			
			//document.getElementById(tabList[i].name+'-tab').style.display='none';
			//alert(tabList[i].name+'-selector')
			//removeClassName(tabList[i].name+'-selector','selected');
		}
		var name=getItem(tabList,tabID).name;
		document.getElementById(name+'-tab').style.display='block';
		addClassName(name+'-selector','selected');
		searchMode=tabID;
}

function displayAya(sura,aya,highlight)
{
	update('currSura',sura);
	update('currAya',aya);
	highlightAya=highlight;
	var page=Quran.getAyaPage(sura,aya);
	var juz=Quran.getAyaJuz(sura,aya);
	document.getElementById('pageNum').value=page;
	document.getElementById('juzMenu').selectedIndex=juz-1;
	initAyaMenu(sura,aya);
	
	if(isOldBrowser)
		document.getElementById('suraMenu').selectedIndex=sura-1;
	else
		initSuraMenu(sura,getCurrTextDir()=='ltr'?'tname':'name');
	document.getElementById('ayaMenu').selectedIndex=aya-1;
	
	retrievePage();
//	if(currSura+':'+currAya!=loadedAya&&audioEnabled)
//		loadAudio();
	
}

function redraw()
{currType=document.getElementById('typeMenu').value;showSigns=document.getElementById('showSigns').checked;showSmallAlef=document.getElementById('showSmallAlef').checked;showFont(true);displayAya(currSura,currAya,highlightAya);}
function showAya(sura,aya)
{
sura=sura||document.getElementById('suraMenu').value*1;
aya=aya||document.getElementById('ayaMenu').value*1;
sura=Quran.fixSuraNum(sura);
aya=Quran.fixAyaNum(sura,aya);
displayAya(sura,aya);

}
function showSura(sura)
{
	sura=sura||document.getElementById('suraMenu').value*1;
	sura=Quran.fixSuraNum(sura);
	displayAya(sura,1);}

function showPage(page)
{

	page=page||document.getElementById('pageNum').value*1;
	page=Quran.fixPageNum(page);
	displayAya(Quran.pageProps(page).sura,Quran.pageProps(page).aya);
}

function showJuz(juz)
{juz=juz||document.getElementById('juzMenu').value*1;juz=Quran.fixJuzNum(juz);displayAya(Quran.juzProps(juz).sura,Quran.juzProps(juz).aya);}
function changePage(num)
{
	num=getArrowOffset(num)||num;
	var page=document.getElementById('pageNum').value*1+num;
	showPage(page);}

function navigateAya(suraD,ayaD)
{var sura=Quran.fixSuraNum(currSura+suraD);var aya=(suraD==0)?Quran.fixAyaNum(sura,currAya+ayaD):1;document.getElementById('navAya').value=sura+':'+aya;displayAya(sura,aya);}
function getCurrDir(tab)
{tab=tab||currTab;return{quran:'rtl',search:'ltr'}[tab]||getTransDir();}
function getCurrTextDir()
{var tab=(currTab=='search')?lastTab:currTab;return{quran:'rtl',search:'ltr'}[tab]||getTransDir();}
function getTransDir()
{var lang=getItem(transList,currTrans,'fname').lang;return(arrayContains(rtlLangs,lang))?'rtl':'ltr';}

function retrievePage()
{
	var page=document.getElementById('pageNum').value*1;
	var startAya=Quran.getPageStart(page);
	var endAya=Quran.getPageStart(page+1);
	getData(startAya,endAya);

	//showPageText(page);
//	if(quranText[startAya] == null || transText[startAya]==null )
//	{
		
//		var args={type:quranTypeName(currType),typeNum:currType,transType:currTrans,currFont:currFont,pageNum:page,startAya:startAya,endAya:endAya};
//		var ajax=new AJAX();
//		ajax.request(root+'php/get-aya.php',args,procPageResp);
//		showLoadingImage(true);
//	}
//	else
//		showPageText(page);

}

function procPageResp(response)
{showLoadingImage(false);if(response==null)
{showError();return;}
var temp=response.split('|');var temp2=temp[0].split(':');var quranType=temp2[0]*1;var page=temp2[1]*1;var ayaList=temp[1].split('\n');var trans=temp[2].split('\n');var line=Quran.getPageStart(page);for(i=0;i<ayaList.length-1;i++)
{quranText[quranType][line]=ayaList[i];transText[line]=trans[i];line++;}
showPageText(page);}
function showPageText(page)
{

scrollToAya();
var suraNames=[];var prevSura=0;var list=Quran.getPageItems(page);var text='';for(i=0;i<list.length;i++)
{var sura=list[i].sura;var aya=list[i].aya;if(sura!=prevSura&&aya>0){suraNames.push(Quran.getSuraName(sura));prevSura=sura;}
var index=Quran.getAyaStart(sura,aya);
var ayaText=quranText[currType][index];
var className='aya';var args={showSigns:showSigns,showSmallAlef:showSmallAlef,font:currFont,type:currType};if(aya==1){text+='<div class="suraHeaderFrame"><div class="suraHeaderText">'
+((getCurrDir()=='rtl')?'سورة '+Quran.getSuraName(sura):Quran.getSuraName(sura,'tname'))+'</div></div>';if(sura!=1&&sura!=9){ayaText=ayaText.replace(/^(([^ ]+ ){4})/,'document.getElementById1|').split('|');text+='<div class="besm">'+(currTab=='trans'?'بسم الله الرحمن الرحيم':TextTools.fixText(ayaText[0],args))+'</div>\n';ayaText=ayaText[1];}}
if(currSura==sura&&currAya==aya){if(highlightAya)
ayaText=TextTools.highlight(highlightPattern,ayaText);className=highlightAya?'ayaHighlight':'ayaSelected';}
ayaText=TextTools.fixText(ayaText,args);ayaTrans=transText[index];if(currTab=='trans'){ayaText=ayaTrans;var thisAya='<span class="ayaText">'+ayaText+'</span> ';thisAya+='<span class="ayaNumber" onclick="displayAya('+sura+', '+aya+');">';thisAya+='('+(getTransDir()=='ltr'?aya:TextTools.arabicNumber(aya))+')</span>';text+='<span id="t-'+sura+'-'+aya+'" class="'+className+'">'+thisAya+'</span> \n';}
else{var tipCommand=showHoverTrans?'onmouseover':'onclick';tipCommand+=getTooltipCommand(ayaTrans);var thisAya='<span class="ayaText" '+tipCommand+' >'+ayaText+'</span> ';thisAya+='<span class="ayaNumber" onclick="displayAya('+sura+', '+aya+');">';thisAya+='﴿'+TextTools.arabicNumber(aya)+'﴾</span>';text+='<span id="'+sura+'-'+aya+'" class="'+className+'">'+thisAya+'</span> \n';}}
if(currTab=='trans'){document.getElementById('transText').innerHTML=text;document.getElementById('transText').style.direction=getTransDir();document.getElementById('transText').style.fontFamily=transFont;document.getElementById('transText').style.fontSize=transFontSize*1.5+'pt';}
else
document.getElementById('quranText').innerHTML=text;var currJuz=Quran.getAyaJuz(currSura,currAya);document.getElementById('suraName').innerHTML=(getCurrDir()=='rtl')?'سورة '+Quran.getSuraName(currSura):Quran.getSuraName(currSura,'tname');document.getElementById('juzName').innerHTML=(getCurrDir()=='rtl')?'الجزء '+TextTools.arabicNumberName(currJuz):'Juz '+currJuz;document.getElementById('pageNumber').innerHTML=document.getElementById('pageNumber2').innerHTML=(getCurrDir()=='rtl')?TextTools.arabicNumber(page):page;if(currTab=='search')
showTab(lastTab);scrollToAya();
document.getElementById('pageNumber2').innerHTML = "11";
}
function getTooltipCommand(text,title,specs)
{
	if(showHoverTrans==2)
		return'';
	var width=Math.min(text.length*7,300);
	var spec=', WIDTH, '+width+', ABOVE, true';
	spec+=!showHoverTrans?', FOLLOWMOUSE, false':'';
	spec+=title?', TITLE, \''+title+'\'':'';spec+=", FONTFACE, '"+transFont+"'";
	spec+=", FONTSIZE, '"+(1.2*transFontSize)+"pt'";
	spec+=specs?', '+specs:'';
	text=text.strip();
	text=text.escapeHTML();
	text=text.replace(/'/g,"\\'");text=text.replace(/"/g,'&quot;');
	text=text.replace(/\u200C/g,isIE?'&zwnj;':' ');
	var klass='tooltipL';
	if(getTransDir()=='rtl')
		klass='tooltipR';
	text='&lt;div class=&quot;'+klass+'&quot;&gt;'+text+'&lt;/div&gt;';
	var command='="Tip(\''+text+'\' '+spec+')"';return command;
	
}
function setTrans()
{update('currTrans',document.getElementById('transMenu').value);transText=[];getItem(tabList,'search').visible=false;showTabList();if(currTab=='search')
showTab(lastTab);setTransFontDefs();redraw();}
function setTransFontDefs()
{var lang=getItem(transList,currTrans,'fname').lang;transFont=getItem(transFontList,lang).font;transFontSize=fontWidth(baseFont,2)/fontWidth(transFont,2)*10;}

function showTranslation()
{
	update('showHoverTrans',document.getElementById('showHoverTrans').checked);
	//redraw();
}

function startSearch()
{
	//#fragment-4;
	//document.getElementById('quranFrame').className ="" ;
	//document.getElementById('searchFrame').className ="ui-tabs-selected" ;
	//document.getElementById('searchFrame').style.display ="inline" ;
	//alert(document.getElementById('searchFrame').style.display)

	
	if(localSearch&&!mainTextIsReady)
		{
			alert('Text is loading...\n\nPlease search again after a few seconds.');return;
		}
	var search=document.getElementById('searchText').value;
	if(search.strip()=='')
	{
		alert('Search string is empty.');
		return;
	}
	
//	document.getElementById('pageOffset').value=1;
//	document.getElementById('searchPattern').innerHTML=search;
	
	searchText=search;
	search=search.replace(/\-/g,'!');


	searchPattern=TextTools.enrichPattern(search);
	highlightPattern=searchPattern.replace(/[+!]/g,'|');
	highlightPattern=highlightPattern.replace(/^[|]+/g,'');
	
	searchResults=null;
	try
	{
		new RegExp(highlightPattern,'g');
	}
	catch(e)
	{
		alert('Search expression is invalid.');
		searchResults={results:[],totalMatch:0};searchPattern='';}
	
	if(!searchResults)
	{
		//alert(mainText+"##"+searchPattern)
		//searchResults=TextTools.search(mainText,searchPattern);
		prepareResults();
	}
}

function prepareResults()
{
	if(!searchPattern)
		return;
	//var pageOffset=1*document.getElementById('pageOffset').value;
	if(!localSearch)
	{
		//var results=getResultsItems(pageOffset);
		alert(searchResults.results);
		displaySearchPage(results,searchResults.results.length,searchResults.totalMatch);
		
	}
	else
	{
		//var args={transType:currTrans,pattern:encodeURIComponent(searchPattern),searchText:encodeURIComponent(searchText),pageOffset:pageOffset,resultsPerPage:resultsPerPage};
		var args={transType:currTrans,pattern:encodeURIComponent(searchPattern),searchText:encodeURIComponent(searchText),resultsPerPage:resultsPerPage};
		
//		var ajax=new AJAX();
//		ajax.request(root+'php/search.php',args,procSerachQuery);
		
		showLoadingImage(true);
	}
}
function procSerachQuery(response)
{if(response==null||/Fatal error/.test(response))
{showError();return;}
var result=response.split('|');var count=result[0].split(':');var numAyaMatch=count[0];var totalMatch=count[1];var resutls=result[1].split('\n');var res=[];for(var i=0;i<resutls.length-1;i++){var item=resutls[i];item=item.split(':');res.push({index:item[0],text:item[1],trans:item[2].replace(/↕/g,':')});}

displaySearchPage(res,numAyaMatch,totalMatch);showLoadingImage(false);}


function getResultsItems(pageOffset)
{var results=searchResults.results;var start=(Math.max(0,pageOffset-1))*resultsPerPage;var end=Math.min(start+resultsPerPage,results.length);var res=[];for(var i=start;i<end;i++)
res.push({index:results[i],text:mainText[results[i]]});return res;}
function displaySearchPage(results,numAyaMatch,totalMatch)
{

	if(results.length==0)
	document.getElementById('pageOffset').value=0;
	var div=composeSearchPage(results,document.getElementById('pageOffset').value);
	removeAllChild(document.getElementById('searchResults'));
	document.getElementById('searchResults').appendChild(div);
	document.getElementById('searchFrame').scrollTop=0;document.getElementById('totalPages').innerHTML=Math.ceil(numAyaMatch/resultsPerPage);
	document.getElementById('searchStat').innerHTML=totalMatch+' results in '+numAyaMatch+' ayas';
	setResultsFont();
	getItem(tabList,'search').visible=true;
	showTab('search');
	searchDiv
}
function composeSearchPage(results,pageOffset,hpatterh)
{
	
	var mainDiv=document.createElement('div');
	var args={showSigns:false,showSmallAlef:showSmallAlef,ignoreInternalSigns:true,font:'default',type:mainType};
	for(var i=0;i<results.length;i++)
	{
		var line=' '+results[i].text+' ';
		line=TextTools.highlight(results[i].pattern , line);
		word = results[i].pattern;
		word=TextTools.enrichPattern(word);
		highlightPattern=word.replace(/[+!]/g,'|');
		highlightPattern=highlightPattern.replace(/^[|]+/g,'');
		line = TextTools.highlight(highlightPattern,line)
		var item=Quran.getLineCoords(results[i].index);
		item.sura = results[i].soreh;
		item.aya = results[i].ayeh;
		results[i].trans = "tarjome"; 
		var spec=Quran.getSuraName(item.sura)+': '+TextTools.arabicNumber(item.aya);
		var link='goToAya('+item.sura+', '+item.aya+')';
		var rowClass='row-'+i%2;
		var div=document.createElement('div');
		div.className='result';
		var transTip='onmouseover'+getTooltipCommand(results[i].trans,'&nbsp;'+item.sura+':'+item.aya);
		div.innerHTML='<div class="'+rowClass+'" onclick="'+link+'">'+'<span class="number">'+TextTools.arabicNumber((pageOffset-1)*resultsPerPage+i+1)+'. </span>'+line+'<span class="spec" '+transTip+'> ﴿'+spec+'﴾</span></div>';
		mainDiv.appendChild(div);
	}
	return mainDiv;
}


function composeSearchPaternPage(results,pageOffset,cat)
{
	
	var mainDiv=document.createElement('div');
	var args={showSigns:false,showSmallAlef:showSmallAlef,ignoreInternalSigns:true,font:'default',type:mainType};
	for(var i=0;i<results.length;i++)
	{
		//alert(results[i].places)
		
		var line=' '+results[i].text+' ';
		//line=TextTools.highlight(results[i].pattern , line);
		word = results[i].pattern;
		word=TextTools.enrichPattern(word);
		highlightPattern=word.replace(/[+!]/g,'|');
		highlightPattern=highlightPattern.replace(/^[|]+/g,'');
		line = TextTools.highlight(highlightPattern,line)
		String.prototype.trim = function () {
		    return this.replace(/^\s*/, "").replace(/\s*$/, "");
		}
		
		var s = new String(line);
		line=line.replace('۞' ,'' );
		line=line.replace(' ۖ' ,'' );
		line=line.replace(' ۗ','');
		line=line.replace('ۚ ','');
		line=line.replace(' ۚ','')
		line=line.replace(' ۚ','')

		line=line.replace(' ۖ' ,'' );

		line=line.replace(' ۗ','');

		line=line.replace('ۚ','');
		//line=line.replace('','')
		//line=line.replace('','')
		line=line.trim();
		
		var col_array=line.split(" ");
		var part_num=0;
		
	//	alert(col_array[2])
		
		while (part_num < col_array.length)
		 {
			if(part_num == results[i].places)
			{
					col_array[part_num] = '<span class=highlight>'+col_array[part_num]+'</span>'
					//col_array[part_num]=col_array[part_num].replace('&gt;','')
			}
			part_num+=1;
		 }
		line =col_array.join(" ");
		line=TextTools.fixText(line,args);
		var item=Quran.getLineCoords(results[i].index);
		item.sura = results[i].soreh;
		item.aya = results[i].ayeh;
		results[i].trans = "tarjome"; 
		var spec=Quran.getSuraName(item.sura)+': '+TextTools.arabicNumber(item.aya);
		var link='goToAya('+item.sura+', '+item.aya+')';
		var rowClass='row-'+i%2;
		var div=document.createElement('div');
		div.className='result';
		var transTip='onmouseover'+getTooltipCommand(results[i].trans,'&nbsp;'+item.sura+':'+item.aya);
		div.innerHTML='<div class="'+rowClass+'" onclick="'+link+'">'+'<span class="number">'+TextTools.arabicNumber((pageOffset-1)*resultsPerPage+i+1)+'. </span>'+line+'<span class="spec" '+transTip+'> ﴿'+spec+'﴾</span></div>';
		mainDiv.appendChild(div);
	}
	return mainDiv;
}

function composeSearchPaternPage_org(results,pageOffset,hpatterh)
{

	var mainDiv=document.createElement('div');
	var args={showSigns:false,showSmallAlef:showSmallAlef,ignoreInternalSigns:true,font:'default',type:mainType};
	for(var i=0;i<results.length;i++)
	{
		var line=' '+results[i].text+' ';
		line=TextTools.highlight(results[i].pattern , line);
		word = results[i].pattern;
		word=TextTools.enrichPattern(word);
		highlightPattern=word.replace(/[+!]/g,'|');
		highlightPattern=highlightPattern.replace(/^[|]+/g,'');
	
		line = TextTools.highlight(highlightPattern,line)
		
		line=TextTools.fixText(line,args);
		var item=Quran.getLineCoords(results[i].index);
		item.sura = results[i].soreh;
		item.aya = results[i].ayeh;
		results[i].trans = "tarjome"; 
		var spec=Quran.getSuraName(item.sura)+': '+TextTools.arabicNumber(item.aya);
		var link='goToAya('+item.sura+', '+item.aya+')';
		var rowClass='row-'+i%2;
		var div=document.createElement('div');
		div.className='result';
		var transTip='onmouseover'+getTooltipCommand(results[i].trans,'&nbsp;'+item.sura+':'+item.aya);
		div.innerHTML='<div class="'+rowClass+'" onclick="'+link+'">'+'<span class="number">'+TextTools.arabicNumber((pageOffset-1)*resultsPerPage+i+1)+'. </span>'+line+'<span class="spec" '+transTip+'> ﴿'+spec+'﴾</span></div>';
		mainDiv.appendChild(div);
	}
	return mainDiv;
}




function goToAya(sura,aya)
{
	displayAya(sura,aya,true);
	
}
function showSearchPage(offset)
{var newOffset=1*document.getElementById('pageOffset').value+offset;newOffset=Math.max(newOffset,1);newOffset=Math.min(newOffset,document.getElementById('totalPages').innerHTML);document.getElementById('pageOffset').value=newOffset;prepareResults();}
function setResultsFont()
{var defFonts={imlaaei:{fontFamily:'Traditional Arabic, Scheherazade',scale:1.3},uthmani:{fontFamily:'Times New Roman, Scheherazade',scale:1.15}}
var textType=(mainType<10)?'imlaaei':'uthmani';document.getElementById('searchResults').style.fontFamily=defFonts[textType].fontFamily;document.getElementById('searchResults').style.fontSize=defFonts[textType].scale+'em';}
function setFontSize(num)
{var size=document.getElementById('fontSize').value*1+num;document.getElementById('fontSize').value=size;showFont();}
function setCustomFont()
{customFont=document.getElementById('customFont').value;showFont();}
function showFont(no_redraw)
{var defFonts={imlaaei:{name:'Traditional Arabic',alt:'Scheherazade'},uthmani:{name:'me_quran',alt:'Scheherazade'}}
update('fontID',document.getElementById('fontMenu').value);var fontSet=getItem(fontList,fontID);if(fontID==1)
fontSet=defFonts[(currType<10)?'imlaaei':'uthmani'];update('customFont',document.getElementById('customFont').value);document.getElementById('customFontRow').style.display=(fontID==99)?'block':'none';if(fontID==99)
fontSet={name:customFont,alt:fontSet.alt};if(fontExists(fontSet.name))
currFont=fontSet.name;else if(fontExists(fontSet.alt))
currFont=fontSet.alt;else currFont=baseFont;currScale=fontWidth(baseFont)/fontWidth(currFont)*1.1;update('textJustify',document.getElementById('textJustify').checked);var justify=textJustify?'justify':'right';update('fontSize',document.getElementById('fontSize').value*1);var obj=document.getElementById('quranText');obj.style.fontFamily=currFont;obj.style.textAlign=justify;obj.style.fontSize=currScale+'em';document.getElementById('quranDiv').style.fontSize=(fontSize+3)+'px';if(!no_redraw)
redraw();}
function fontWidth(fontName,text)
{text=text||'ربنا إنك جامع الناس ليوم لا ريب فيه إن الله لا يخلف الميعاد';if(text==2)text='In the name of Allah, بسم الله الرحمن الرحيم';var tester=document.createElement('div');tester.className='checkFont';tester.style.fontFamily=fontName;tester.innerHTML=text;document.body.appendChild(tester);var width=getDimensions(tester).width;document.body.removeChild(tester);return width;}
function fontExists(fontName)
{var fontFamily=fontName+', '+baseFont;return fontWidth(baseFont)*fontWidth(baseFont,2)!=fontWidth(fontFamily)*fontWidth(fontFamily,2);}
function $(element)
{if(typeof element=="string")
element=document.getElementById(element);return element;}
Object.extend=function(destination,source)
{for(var property in source)
destination[property]=source[property];return destination;};Function.prototype.bind=function(obj)
{var method=this,temp=function(){return method.apply(obj,arguments);};return temp;}
String.prototype.strip=function()
{return this.replace(/^\s+/,'').replace(/\s+document.getElementById/,'');}
String.prototype.escapeHTML=function(){var div=document.createElement('div');var text=document.createTextNode(this);div.appendChild(text);return div.innerHTML;}
function hasClassName(element,className)
{if(!(element=document.getElementById(element)))return;var elementClassName=element.className;return(elementClassName.length>0&&(elementClassName==className||new RegExp("(^|\\s)"+className+"(\\s|document.getElementById)").test(elementClassName)));}
function addClassName(element,className)
{if(!(element=document.getElementById(element)))return;if(!hasClassName(element,className))
element.className+=(element.className?' ':'')+className;return element;}
function removeClassName(element,className)
{
	
	if(!(element=document.getElementById(element)))return;
	alert(document.getElementById("search-quran-selector").selected)
	element.className=element.className.replace(new RegExp("(^|\\s+)"+className+"(\\s+|document.getElementById)"),' ').strip();
	return element;
}
function getDimensions(element)
{element=document.getElementById(element);var display=document.getElementById(element).style.display;if(display!='none'&&display!=null)
return{width:element.offsetWidth,height:element.offsetHeight};var els=element.style;var originalVisibility=els.visibility;var originalPosition=els.position;var originalDisplay=els.display;els.visibility='hidden';els.position='absolute';els.display='block';var originalWidth=element.clientWidth;var originalHeight=element.clientHeight;els.display=originalDisplay;els.position=originalPosition;els.visibility=originalVisibility;return{width:originalWidth,height:originalHeight};}
function getWinDims()
{var myWidth=0,myHeight=0;if(typeof(window.innerWidth)=='number'){myWidth=window.innerWidth;myHeight=window.innerHeight;}else if(document.documentElement&&(document.documentElement.clientWidth||document.documentElement.clientHeight)){myWidth=document.documentElement.clientWidth;myHeight=document.documentElement.clientHeight;}else if(document.body&&(document.body.clientWidth||document.body.clientHeight)){myWidth=document.body.clientWidth;myHeight=document.body.clientHeight;}
return{width:myWidth,height:myHeight};}
function adjustPageHeight()
{
	var pageHeight=getWinDims().height;
	var height=(pageHeight-90)+'px';
//	document.getElementById('left-content').style.minHeight=height;

}

function scrollToAya(id , part)
{
//	var obj=document.getElementById(currSura+'-'+currAya);
//	alert(currTab)
//	if(currTab=='trans')
		obj=document.getElementById(part+id);
		var pos=getPosition(obj);
		var top=getScroll().Y;
		var win=getWinDims();
			if(pos.top-top<win.height*Scroller.marginTop||pos.bottom-top>win.height*(1-Scroller.marginTop/2))
				Scroller.goTo(obj);
		
}

function getScroll()
{var scrOfX=0,scrOfY=0;if(typeof(window.pageYOffset)=='number'){scrOfY=window.pageYOffset;scrOfX=window.pageXOffset;}else if(document.body&&(document.body.scrollLeft||document.body.scrollTop)){scrOfY=document.body.scrollTop;scrOfX=document.body.scrollLeft;}else if(document.documentElement&&(document.documentElement.scrollLeft||document.documentElement.scrollTop)){scrOfY=document.documentElement.scrollTop;scrOfX=document.documentElement.scrollLeft;}
return{X:scrOfX,Y:scrOfY};}
function getPosition(obj)
{
	var curleft=curtop=0;
	var height=obj.offsetHeight;
	if(obj.offsetParent)
do{curleft+=obj.offsetLeft;curtop+=obj.offsetTop;}
while(obj=obj.offsetParent);return{left:curleft,top:curtop,bottom:curtop+height};}
var Scroller={duration:600,marginTop:1/8,method:'quadratic',startTime:0,target:0,initGap:0,task:null,goTo:function(obj)
{clearInterval(this.task);this.startTime=(new Date()).getTime();this.target=getPosition(obj).top-getWinDims().height*this.marginTop;this.initGap=this.target-getScroll().Y;setTimeout('Scroller.scrollWindow()',10);},scrollWindow:function()
{var currPos=getScroll();var now=(new Date()).getTime();if(now-this.startTime<this.duration){var newY=this.target-this.newGap(now);window.scrollTo(currPos.X,newY);if(newY==currPos.Y||currPos.Y!=getScroll().Y){clearInterval(this.task);this.task=setTimeout('Scroller.scrollWindow()',10);}}
else
window.scroll(currPos.X,this.target);},newGap:function(now)
{var portion=0;var deltaTime=(now-this.startTime)/this.duration;if(this.method=='quadratic')
portion=1-Math.pow(1-deltaTime,2);else
portion=deltaTime;return parseInt(this.initGap*(1-portion));}}
var scrollFactor=isIE?1.3:1.8;var scrollTimeout=null;function smoothScroll(obj)
{clearInterval(scrollTimeout);var destY=getPosition(obj).top-getWinDims().height/8;setTimeout('scrollWindowTo('+destY+')',20);}
function scrollWindowTo(destY)
{var pos=getScroll();var diff=destY-pos.Y;if(Math.abs(diff)>2*scrollFactor){var delta=(diff<0?-1:+1)*Math.pow(Math.abs(diff),1/scrollFactor);window.scrollTo(pos.X,pos.Y+delta);if(pos.Y!=getScroll().Y)
scrollTimeout=setTimeout('scrollWindowTo('+destY+')',10);}
else
window.scrollTo(pos.X,destY);}
function arrayContains(anArray,aValue)
{var temp='|'+anArray.join('|')+'|';if(temp.indexOf('|'+aValue+'|')==-1)
return false;else
return true;}
function removeAllChild(node)
{while(node&&node.firstChild)
node.removeChild(node.firstChild);}
function getPrevSibling(node)
{var x=node.previousSibling;while(x.nodeType!=1)
x=x.previousSibling;return x;}
function getNextSibling(node)
{var x=node.nextSibling;while(x.nodeType!=1)
x=x.nextSibling;return x;}
function setOpacity(obj,opacity)
{obj.style.opacity=opacity/100;obj.style.filter='alpha(opacity='+opacity+')';}
function selectText(obj)
{obj.select();}
function submitOnEnter(myfield,e)
{var keycode;if(window.event)keycode=window.event.keyCode;else if(e)keycode=e.which;else return true;if(keycode!=13)
return true;myfield.form.submit();return false;}
function initMenuCollapse()
{var objs=document.getElementById('left-content').getElementsByTagName('div');var list=[];for(var i=0;i<objs.length;i++)
{var cls=objs[i].className;if(cls&&cls.match('menu-content'))
list.push(objs[i]);}
for(var i in list)
{var d=list[i];d.style.overflow='hidden';d.style.display='block';var p=getPrevSibling(d);p.onclick=function(){toggleCollapse(this);};if(d.id=='audio-reload')
p.onclick=function(){toggleCollapse(this);loadAudio();};if(d.parentNode.getAttribute('isCollapsed')=='true')
toggleCollapse(p,true);}}
function toggleCollapse(obj,collapse)
{var next=getNextSibling(obj);var expand=collapse?false:(next.style.display=='none');var img=obj.getElementsByTagName('img')[0];next.style.display=expand?'block':'none';img.style.backgroundPosition=expand?'0px -12px':'0px 0px';}
function showDialog(divID,modal)
{modal=modal||true;var dialog=new jt_DialogBox(modal,{okButton:true,titleOpacity:100});var obj=document.getElementById(divID)||document.body;var width=obj.getAttribute('width')||400;var height=obj.getAttribute('height')||300;var title=obj.getAttribute('headTitle')||'Tanzil';var url=obj.getAttribute('urlAddress');var maxHeight=obj.getAttribute('height');dialog.setTitle(title);if(url)
dialog.setUrl(url,height);else
{dialog.setContent(obj.innerHTML);if(maxHeight)
dialog.setHeight(maxHeight);}
dialog.setWidth(width);dialog.moveTo((getWinDims().width-width)/2,(getWinDims().height-height-50)/2);dialog.show();}
function createDialog(modal,buttons)
{var div=document.createElement('div');for(var i=0;i<buttons.length;i++)
{var butt=document.createElement('button');var butText=document.createTextNode(buttons[i].button);butt.appendChild(butText);butt.onclick=buttons[i].handler;div.appendChild(butt);}
return new jt_DialogBox(modal,div);}
function showLoadingImage(show)
{
//	document.getElementById('loadingImage').src=show?root+'images/ajax-loader.gif':root+'images/dot.gif';
//	document.getElementById('loadingImage').title=show?'Loading...':'';
}
function showError()
{document.getElementById('loadingImage').src=root+'images/warning.png';document.getElementById('loadingImage').title='Error Loading...';}
function helpTip(id,width)
{width=width||400;document.getElementById(id).className="ContentArea helpTooltip";var title=document.getElementById(id).getAttribute('headTitle')||'';TagToTip(id,BGCOLOR,'#F3F3FF',WIDTH,width,TITLE,title,STICKY,true,CLOSEBTN,true,CENTERMOUSE,true);Drag.init(document.getElementById('WzTiTl'),document.getElementById('WzTtDiV'),0,null,0);document.getElementById('WzTiTl').style.cursor='move';}
function arrowTip(arrow)
{var num=getArrowOffset(arrow);Tip((num==+1?'Next':'Previous')+' Page',LEFT,arrow=='left',DELAY,800,FOLLOWMOUSE,false);}
function getArrowOffset(arrow)
{return{rtl:{left:+1,right:-1},ltr:{left:-1,right:+1}}[getCurrDir()][arrow];}
function preload()
{var args=preload.arguments;document.imageArray=new Array(args.length);for(var i=0;i<args.length;i++){document.imageArray[i]=new Image;document.imageArray[i].src=args[i];}}
function initRootList()
{Roots=[];var root=RootList.split(' ');for(var i=0;i<root.length;i++)
Roots.push({chr:root[i]});}
function initCharList(chr)
{rootChar=chr;var chars='آ ا ب ت ث ج ح خ د ذ ر ز س ش ص ض ط ظ ع غ ف ق ك ل م ن ه و ي';chars=chars.split(' ');var str='';for(var i=0;i<chars.length;i++){var clas=(chars[i]==chr)?'current-char':'';str+='<a class="'+clas+'" href="javascript:initRootMenu(\''+chars[i]+'\')">'+chars[i]+'</a> ';}
document.getElementById('charList').innerHTML=str;}
function initRootMenu(chr)
{initCharList(chr);var items=[];if(chr=='ا')chr='[اإأ]';if(chr=='ك')chr='[كک]';reg=new RegExp('^'+chr,'');for(var i=0;i<Roots.length;i++)
if(reg.test(Roots[i].chr))
items.push({value:(i+1)+':'+Roots[i].chr,text:Roots[i].chr});initMenu('rootMenu',items);}
function startRootSearch()
{

	var rootInfo=document.getElementById('rootMenu').value.split(':');
	var rootID=rootInfo[0];
	//document.getElementById('pageOffset').value=1;
	//document.getElementById('searchPattern').innerHTML=rootInfo[1];
	searchPattern='Root '+rootID;
	highlightPattern=searchPattern.replace(/[+!]/g,'|');
	searchResults=null;
	prepareResults();
}

