/****************************************************
*	Ajax.js											*
* helpers functions to be used along with ajax		*
* applications or framework							*
*													*
* coded by: Mostafa E. Saleh (msaleh83@gmail.com	*
*	Dec 26	2007 - 10:19 am							*						  
/****************************************************/

// used to clone a node
function clone(nodeId, deep)
{
	if(!deep) 	deep = true;
	var toClone = document.getElementById(nodeId);
	var clonedNode = toClone.cloneNode(deep);
	return clonedNode;
}

// it warks like the php function
function in_array(needle, haystack, strict) {
 
    var found = false, key, strict = !!strict;
 
    for (key in haystack) {
        if ((strict && haystack[key] === needle) || (!strict && haystack[key] == needle)) {
            found = true;
            break;
        }
    }
 
    return found;
}


// it warks like the php function
function is_array(mixed_var) {
 
    return (mixed_var instanceof Array);
}


function appendAfter(nodeId, newNode)
{
	var node = document.getElementById(nodeId);
	if (node.parentNode)
	{
		if (node.nextSibling)
		node.parentNode.insertBefore(newNode, node.nextSibling);
		else
		node.parentNode.appendChild(newNode);
	}
}

function appendBefore(nodeId, newNode)
{
	var node = document.getElementById(nodeId);
	if (node.parentNode)
	{
		node.parentNode.insertBefore(newNode, node);
	}
}

// this function to show or hide any element
function toggleElementDisplay(id)
{
	var el = document.getElementById(id);
	if(el.style.display != "none")	el.style.display = "none";
	else							el.style.display = "";
}

function show(id) {
	$(id).style.display = '';
}

function hide(id) {
	$(id).style.display = 'none';
}

// alias of document.getElementById(id)
function $(id) {
	return document.getElementById(id);
}

/** return innerHTML of select tag
@param: sel_id, id of select tag
@param: valarr, array of options values
@param: txtarr, array of options texts
@param: selected_val, array of values to be selected, if the list is multiple or single value to be selected 
*/
function generateList(sel_id, valarr, txtarr, selected_val) {
	var len = valarr.length;
	var opNodes = '';
	var selected = '';
	for(var i = 0; i < len; i++) {		
		if(selected_val) {
			if(selected_val.constructor.toString().indexOf("Array") != -1)	
			{
				if(selected_val.in_array(valarr[i])) selected = 'selected="selected"';
			}
			else if(selected_val == valarr[i])	selected = 'selected="selected"';
		}
		opNodes += "<option value='"+valarr[i]+"' "+selected+">"+txtarr[i]+"</option>";
		selected = '';
	}
return(opNodes);
}

function copyToClipBoard(id){
	if (window.clipboardData) {
		
		var tempval=eval("document.getElementById('"+id+"')")
		tempval.focus()
		tempval.select()
		therange=tempval.createTextRange()
		therange.execCommand("Copy")
		
	} else {
		
	}
}

function text_validator(s) {	
	r = s+'_error'
	if(document.getElementsByName(s)[0].value == "") {
	   show(r);
	   return false;
	}
	else{hide(r); return true}
}

function validateEmail(s)	
{	
	r = s+'_error'
	
	var emailStr = document.getElementsByName(s)[0].value;
	var emailReg1 = /(@.*@)|(\.\.)|(@\.)|(\.@)|(^\.)|(')|(")/; // not valid
	var emailReg2 = /^.+\@(\[?)[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,6}|[0-9]{1,3})(\]?)$/; // valid
	if (!(!emailReg1.test(emailStr) && emailReg2.test(emailStr))) {// if syntax is valid
		show(r);
		return false;
		}else{hide(r);}
	return true;
}

function increasTelawatVisits(id){

	var url = '/wonderful_telawat/increaslistens.php?id='+id;
	
	new Ajax.Request(url, {
		method: 'post'
	});
}

function increasQuranTopicsVisits(id){

	var url = '/quran_topics/increaslistens.php?id='+id;
	
	new Ajax.Request(url, {
		method: 'post'
	});
}