// select options functions
//---------------------------------------------------------------------------------------------
function clear_select_options(obj) {
	while (obj.options.length > 0) {
		obj.options[0] = null;
	}
}
function insert_select_options(obj,arr_texts,arr_values) {
	for (i=0; i<arr_texts.length; i++) {
		obj.options[i] = new Option(arr_texts[i],arr_values[i],false,false);
	}
}
function parse_ajax_to_options(str) {
	var pairs = str.split('>');
	var pair,option_arr1=new Array(),option_arr2=new Array();
	//option_arr1[0]='';option_arr2[0]='';
	for (var i=0;i<pairs.length-1; i++) {
		pair = pairs[i].split('<');
		option_arr1[option_arr1.length]=pair[1];
		option_arr2[option_arr2.length]=pair[0];
	}
	return [option_arr1,option_arr2];
}




// autocomplete functions:
// ------------------------------------------------------------------------------------------------

function autocomplete_move(e,target) {
	keynum = (window.event)?e.keyCode:(e.which?e.which:0);
	if (target.style.display=='block') {
		if (keynum==40) {target.focus();}
		else if (keynum==38) {target.focus();}
	}
	return true;
}
function autocomplete_update_t_f (e,input_obj,sel) {
	keynum = (window.event)?e.keyCode:(e.which?e.which:0);
	if (keynum==13 || keynum==27) {input_obj.focus();sel.style.display='none';return false;}
	if (!(keynum>=33 && keynum<=40)) {
		input_obj.focus();
		sel.style.display="none";
	}
	return true;
}
function autocomplete_load(table,min_chars,value_holder) {
	if (input_obj.value.length>=min_chars) {
		ajaxFunction('ajax.php?tbl='+table+'&ac='+input_obj.value,'autocomplete_display',value_holder);
	}
	return true;
}
function autocomplete_display(str,input_obj) {
	var input_obj = eval('value_holder');
	clear_select_options(input_obj);
	if (str=='') {
		input_obj.style.display="none";
	} else {
		var option_arr = parse_ajax_to_options(str);
		insert_select_options(input_obj,option_arr[0],option_arr[1]);
		if (option_arr[0].length==1 && option_arr[0][0]==ac_obj.value) {
			input_obj.selectedIndex=0;
			input_obj.value=option_arr[0][0];
			input_obj.style.display="none";
		} else {
			input_obj.size=option_arr[0].length<10?option_arr[0].length+1:10;
			input_obj.style.display="block";
		}
	}
}





// ajax functions:
//--------------------------------------------------------------------
function ajaxFunction(url,function_name) {
	return ajaxFunction(url,function_name,'');
}
function ajaxFunction(url,function_name,params) {
	var ajaxRequest;  // The variable that makes Ajax possible!
	try{
		// Opera 8.0+, Firefox, Safari
		ajaxRequest = new XMLHttpRequest();
	} catch (e){
		// Internet Explorer Browsers
		try{
			ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			try{
				ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e){
				// Something went wrong
				alert("Your browser broke!");
				return false;
			}
		}
	}
	// Create a function that will receive data sent from the server
	ajaxRequest.onreadystatechange = function(){
		if(ajaxRequest.readyState == 4){
			eval(function_name+'(ajaxRequest.responseText' + (params==''?'':','+params) + ')');
		}
	}
	ajaxRequest.open("GET", url, true);
	ajaxRequest.send(null); 
}
function ajaxFunctionForm(frm,url,function_name) {
	var ajaxRequest;  // The variable that makes Ajax possible!
	try{
		// Opera 8.0+, Firefox, Safari
		ajaxRequest = new XMLHttpRequest();
	} catch (e){
		// Internet Explorer Browsers
		try{
			ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			try{
				ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e){
				// Something went wrong
				alert("Your browser broke!");
				return false;
			}
		}
	}
	// Create a function that will receive data sent from the server
	ajaxRequest.onreadystatechange = function(){
		if(ajaxRequest.readyState == 4){
			eval(function_name+'(ajaxRequest.responseText)');
		}
	}
	var info_array = [];
	var input_array = frm.getElementsByTagName('input');
	for (var i = 0; i < input_array.length; i++) { 
		if ( input_array[i].getAttribute('type')== "checkbox") {
			if (input_array[i].checked) info_array[info_array.length]=input_array[i].getAttribute('name')+'='+(input_array[i].checked?input_array[i].value:'');
		} else {
			info_array[info_array.length]=input_array[i].getAttribute('name')+'='+input_array[i].value;
			//if (input_array[i].getAttribute('name').substring(0,5)=='item_') {
		}
	}
	var input_array = frm.getElementsByTagName('select');
	for (var i = 0; i < input_array.length; i++) { 
		info_array[info_array.length]=input_array[i].getAttribute('name')+'='+input_array[i].value;
	}
	var infoToSend = info_array.join('&');
	ajaxRequest.open("GET", url+'&'+infoToSend, true);
	ajaxRequest.send(); 
	/*
	var infoToSend = encodeURI(info_array.join('&'));
	ajaxRequest.open("POST", url, true);
	alert(url+'&'+infoToSend);
	alert(infoToSend.length);
	ajaxRequest.setRequestHeader("Content-type", "application/x-www-form-urlencoded; charset=windows-1255");
	ajaxRequest.setRequestHeader("Content-length", infoToSend.length);
	ajaxRequest.setRequestHeader("Connection", "close");
	ajaxRequest.send(infoToSend);
	*/
}



function add_tag(f,name) {
	if (f.value!='') f.value+=',';
	f.value+=name+' ';
}

function blog_rank_func(blog_id) {
	var val = document.getElementById('rank').value;
	if (val>0) {
		document.location="?b="+blog_id+"&act=rank&rank="+val;
	} else {
		alert('לא נבחר דירוג');
	}

}

function add_zero(n,digits) {
	n=''+n;
	for (var i=n.length; i<digits; i++) n='0'+n;
	return n;
}
function mytrim(str) {
	return str;	
}
function removeAllChildNodes(holder) {
	while(holder.hasChildNodes()){	holder.removeChild(holder.lastChild);}
}
function toggle_show_hide_w_indicator(obj,indicator_obj) {
	var b = (obj.css('display')=='none');
	obj.css('display', b ?'block':'none');
	indicator_obj.attr('src',ADMIN_WS_ROOT+'images/'+(b?'show_minus.gif':'show_plus.gif'))
	return b;
}
function select_all_checkbox(b,parent_element,name_prefix) {
	var arr = parent_element.getElementsByTagName('input');
	for (var i = 0; i < arr.length; i++) { 
		if ( arr[i].getAttribute('type')== "checkbox") { 
			if (!name_prefix || arr[i].getAttribute('name').substring(0,name_prefix.length)==name_prefix) {
				arr[i].checked=b;
			}
		}
	}
}
// this is an old function:
function validate_checkbox_array_old(frm,name,minimum) {
	var f = eval("frm."+name);
	var l=f.length;
	var counter=0;
	for (var i=0; i<l; i++) {
		if (f[i].checked) counter++;
	}
	return counter>=minimum;
}
// this is the new function:
function validate_checkbox_array(frm,name,minimum) {
	var counter=0;
	var checkboxes = document.getElementsByTagName('input');
	for (var i=0; i<checkboxes.length; i++) {
		if (checkboxes[i].getAttribute("type")=='checkbox' && checkboxes[i].getAttribute("name").substring(0,name.length+1)==name+'[') {
			//alert(checkboxes[i].getAttribute("name"));
			if (checkboxes[i].checked) counter++;
		}
	}
	return counter>=minimum;
}

var auto_complete_input,auto_complete_i_name,auto_complete_interval;
function auto_complete(input,i_name) {
	if (event.keyCode==13) return false;
	auto_complete_input=input;
	auto_complete_i_name=i_name;
	auto_complete_interval = setInterval(auto_complete2,50);
	return true;
}
function auto_complete2() {
	clearInterval(auto_complete_interval);
	var d = document.getElementById('auto_complete_'+auto_complete_i_name);
	var data = eval("auto_complete_"+auto_complete_i_name+"_data");
	var i_s = auto_complete_input.value;
	var l = i_s.length;
	var html="";
	for (i=0; i<data.length; i++) {
		if (data[i].substr(0,l)==i_s)
			html+="<tr><td onclick=\"auto_complete_select('"+auto_complete_i_name+"','"+data[i]+"');\" bgcolor=white onmouseover=this.style.background='#dddddd'; onmouseout=this.style.background='white';>"+data[i]+"</td></tr>";
	}
	d.innerHTML = "<table cellspacing=0 cellpadding=0>"+html+"</table>";
	d.style.visible='block';
}
function auto_complete_select(i_name,data) {
	auto_complete_input.value=data;
	var d = document.getElementById('auto_complete_'+i_name);
	d.innerHTML = "";
	d.style.visible='none';
}
function open_popup(w,h,url,name) {
    var viewimageWin = window.open( url, name,"status=0,height="+h+",width="+w+",resizable=0,scrollbars=yes")
	viewimageWin.moveTo(screen.availWidth/2-(w/2),screen.availHeight/2-(h/2));
	viewimageWin.focus();
}
function open_popup_resizable(w,h,url,name) {
    var viewimageWin = window.open( url, name,"status=0,height="+h+",width="+w+",resizable=1,scrollbars=yes")
	viewimageWin.moveTo(screen.availWidth/2-(w/2),screen.availHeight/2-(h/2));
	viewimageWin.focus();
}
function open_popup_noresize_noscroll(w,h,url,name) {
    var viewimageWin = window.open( url, name,"status=0,height="+h+",width="+w+",resizable=0,scrollbars=no")
	viewimageWin.moveTo(screen.availWidth/2-(w/2),screen.availHeight/2-(h/2));
	viewimageWin.focus();
}

function resizeOuterTo(w,h) {
 if (parseInt(navigator.appVersion)>3) {
   if (navigator.appName=="Netscape") {
    top.outerWidth=w;
    top.outerHeight=h;
   }
   else top.resizeTo(w,h);
 }
}
function getCheckedValue(radioObj) {
	if(!radioObj)
		return "";
	var radioLength = radioObj.length;
	if(radioLength == undefined)
		if(radioObj.checked)
			return radioObj.value;
		else
			return "";
	for(var i = 0; i < radioLength; i++) {
		if(radioObj[i].checked) {
			return radioObj[i].value;
		}
	}
	return "";
}



//user and pass can be alphnumeric at least 6 characters
function isValidUserPass(str)
{
   	return /^[a-zA-Z0-9]{4,15}$/.test(str)
	//   	return /^[\_\@\#\$\%\+\-a-zA-Z0-9]$/.test(str)
}

//is only alphnumeric
function isAlphanumeric(str)
{
   	return /^[a-zA-Z0-9]+$/.test(str)
}

//is alphnumeric or "-" 
function isAlphabetic(str)
{
   	return /^[-a-zA-Z\s]+$/.test(str)
}

//is only numeric
function isNumeric(str)
{
   	return /^[0-9]\.?[0-9]*/.test(str)
}
//is positive integer
function isPosInt(str)
{
   	return /^[0-9]+$/.test(str)
}

//is correct phone number
function isPhone(str)
{
   	return /^[\\(\\)\+\-0-9 ]+$/.test(str)
}

//is correct cellphone number
function isCellPhone(str)
{
   	return /^0[0-9]{2}-[0-9]{7}$/.test(str)
}

//is correct email
function isEmail(str)
{
	return /^.+\@.+\..+$/.test(str)
}

function isZip(str)
{
   	return /^[-a-zA-Z0-9]+$/.test(str)
	//return /^[0-9]{5,9}$/.test(str)
}

function isXalphnumeric(str)
{
   	return /^[-a-zA-Z0-9\s\\.]+$/.test(str)
}





////////////////////////////////////////////////////////////////////////////////////////////////
function isCardMatch (cardType, cardNumber)
{
	cardType = cardType.toUpperCase();
	//alert("cardType is " + cardType +"\n" + "cardNumber is " + cardNumber)
	var doesMatch = false;

	if ((cardType == "VISA") && (isVisa(cardNumber)))
		doesMatch = true;
	if ((cardType == "MASTERCARD") && (isMasterCard(cardNumber)))
		doesMatch = true;
	if ((cardType == "AMERICAN EXPRESS") && (isAmericanExpress(cardNumber))) 
		doesMatch = true;
	if ((cardType == "DISCOVER") && (isDiscover(cardNumber)))
		doesMatch = true;
	if ((cardType == "JCB") && (isJCB(cardNumber)))
		doesMatch = true;
	if ((cardType == "DINERS") && (isDinersClub(cardNumber)))
		doesMatch = true;
	if ((cardType == "CARTEBLANCHE") && (isCarteBlanche(cardNumber)))
		doesMatch = true;
	if ((cardType == "ENROUTE") && (isEnRoute(cardNumber)))
		doesMatch = true;
	return doesMatch;
}  



function isCreditCard(st) {
  	if (st.length > 19)
    	return false;
  	sum = 0; 
	mul = 1; 
	l = st.length;
  	for (i = 0; i < l; i++) {
    	digit = st.substring(l-i-1,l-i);
    	tproduct = parseInt(digit ,10)*mul;
    	if (tproduct >= 10)
      		sum += (tproduct % 10) + 1;
    	else
      		sum += tproduct;
    		if (mul == 1)
      			mul++;
    		else
      			mul--;
  	}
  	if ((sum % 10) == 0)
    	return true;
  	else
    	return false;
} 



//Sample number: 4111 1111 1111 1111 (16 digits)
function isVisa(cc)
{
  if (((cc.length == 16) || (cc.length == 13)) &&
      (cc.substring(0,1) == 4))
    return isCreditCard(cc);
  return false;
}  




//Sample number: 5500 0000 0000 0004 (16 digits)
function isMasterCard(cc)
{
  firstdig = cc.substring(0,1);
  seconddig = cc.substring(1,2);
  if ((cc.length == 16) && (firstdig == 5) &&
      ((seconddig >= 1) && (seconddig <= 5)))
    return isCreditCard(cc);
  return false;

} 

function isIsraCard(cc)
{
	if (cc.length!=8 && cc.length!=9) return false;
	if (cc.length==8) cc="0"+cc;
	var sum=0;
	for (i=1; i<=9; i++) {
		sum+=i*cc.charAt(9-i);
	}
	return (sum%11==0);
} 





//Sample number: 340000000000009 (15 digits)
function isAmericanExpress(cc)
{
  firstdig = cc.substring(0,1);
  seconddig = cc.substring(1,2);
  if ((cc.length == 15) && (firstdig == 3) &&
      ((seconddig == 4) || (seconddig == 7)))
    return isCreditCard(cc);
  return false;
} 




//Sample number: 30000000000004 (14 digits)
function isDinersClub(cc)
{
  firstdig = cc.substring(0,1);
  seconddig = cc.substring(1,2);
  if ((cc.length == 14) && (firstdig == 3) &&
      ((seconddig == 0) || (seconddig == 6) || (seconddig == 8)))
    return isCreditCard(cc);
  return false;
}




function isCarteBlanche(cc)
{
  return isDinersClub(cc);
}




function isDiscover(cc)
{
  first4digs = cc.substring(0,4);
  if ((cc.length == 16) && (first4digs == "6011"))
    return isCreditCard(cc);
  return false;

} 





//Sample number: 201400000000009 (15 digits)
function isEnRoute(cc)
{
  first4digs = cc.substring(0,4);
  if ((cc.length == 15) &&
      ((first4digs == "2014") ||
       (first4digs == "2149")))
    return isCreditCard(cc);
  return false;
}




function isJCB(cc)
{
  first4digs = cc.substring(0,4);
  if ((cc.length == 16) &&
      ((first4digs == "3088") ||
       (first4digs == "3096") ||
       (first4digs == "3112") ||
       (first4digs == "3158") ||
       (first4digs == "3337") ||
       (first4digs == "3528")))
    return isCreditCard(cc);
  return false;
} // END FUNCTION isJCB()




function isAnyCard(cc)
{
	if (isIsraCard(cc)) return true;
	if (!isCreditCard(cc))
		return false;
	if (!isMasterCard(cc) && !isVisa(cc) && !isAmericanExpress(cc) && !isDinersClub(cc) &&
		!isDiscover(cc) && !isEnRoute(cc) && !isJCB(cc)) {
			return false;
	}
	return true;
} 

////////////////////////////////////////////////////////////////////////////////////////////////



function input_focus(b,f,def_text) {
	if (b) {
		if (f.value==def_text) f.value='';
	} else {
		if (f.value=='') f.value=def_text;
	}
}
function input_focus_password(b,f,text_div) {
	if (b) {
		 text_div.style.display='none';
	} else {
		text_div.style.display=(f.value=='')?'block':'none';
	}
}
function refresh() {
	location.reload();
}
function setCookie(name, value, expires, path, domain, secure) {
  var curCookie = name + "=" + escape(value) +
      ((expires) ? "; expires=" + expires.toGMTString() : "") +
      ((path) ? "; path=" + path : "") +
      ((domain) ? "; domain=" + domain : "") +
      ((secure) ? "; secure" : "");
  document.cookie = curCookie;
}
function getCookie(name) {
  var dc = document.cookie;
  var prefix = name + "=";
  var begin = dc.indexOf("; " + prefix);
  if (begin == -1) {
    begin = dc.indexOf(prefix);
    if (begin != 0) return null;
  } else
    begin += 2;
  var end = document.cookie.indexOf(";", begin);
  if (end == -1)
    end = dc.length;
  return unescape(dc.substring(begin + prefix.length, end));
}

function disableRightClick(e) {
	var message = "Right click disabled";
	
	// initialize
	if(!document.rightClickDisabled) {
		if(document.layers) {
			document.captureEvents(Event.MOUSEDOWN);
			document.onmousedown = disableRightClick;
		} else document.oncontextmenu = disableRightClick;
		return document.rightClickDisabled = true;
	}
	if (document.layers || (document.getElementById && !document.all)) {
		if (e.which==2||e.which==3) {
			//alert(message);
			return false;
		}
	} else {
		//alert(message);
		return false;
	}
}
