// 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) {
	if (!params) 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.split('"').join('\\"')+'"') + ')');
		}
	}
	ajaxRequest.open("GET", url, true);
	ajaxRequest.send(null);
	return ajaxRequest;
}
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;
}


// auto complete functions:
//--------------------------------------------------------------------
var last_autocomplete_request=false;
function autocomplete_receive(str,input_name) {
	
	var input_obj = $("#"+input_name+"_ac");
	//document.getElementById('block_div').style.display='block';

	// parse input
	var pairs = str.split('</option>');
	var pair,option_arr=new Array();
	for (var i=0;i<pairs.length-1; i++) {
		
		pair = pairs[i].split('<option>').join('').split('</value>').join('').split('</name>').join('').split('<name>').join('').split('\\\'').join('\'').split('<value>');
		option_arr[option_arr.length]=[pair[0],pair[1]];
	}
	
	if (option_arr.length==0) {
		// no matching values exist - dont allow save
		$("#"+input_name).val('');
	}
	
	var holder = $("#"+input_name+"_ac").parent().children("div:first").children("div:first").children("div:first");
	holder.css('width',input_obj.width()+'px');
	holder.css('display',option_arr.length>0?'block':'none');
	holder.children().remove();

	for (var i=0;i<option_arr.length; i++) {

		holder.append($('<div class="pointer" style="background-color:'+(i==0?'#eeeeee':'#ffffff')+';color:#000000;white-space:nowrap;padding:3px 0px 3px 0px;border-bottom:1px solid #eeeeee;width:'+input_obj.width()+';"><div style="padding:0px 3px 0px 3px;white-space:nowrap;" rel="'+option_arr[i][1]+'" onmousedown="autocomplete_click($(this),\''+input_name+'\')">'+option_arr[i][0]+'</div></div>'));
		
	}
	if (option_arr.length>0) {
		holder.parent().parent().parent().children('input:first').val(option_arr[0][1]);
		holder.parent().parent().parent().children('input:first').attr('rel',remove_tags(option_arr[0][0]));
	}
}

function autocomplete_move(e,input_name) {
	
	var input_obj = $("#"+input_name+"_ac");
	
	keynum = (window.event)?e.keyCode:(e.which?e.which:0);

	var holder = $("#"+input_name+"_ac").parent().children("div:first").children("div:first").children("div:first");
	var total_height=0;

	if (holder.children().length>0 && (keynum==40 || keynum==38)) {
		for (var i=0; i<holder.children().length;i++) {
			total_height+=holder.find(':nth-child('+(i+1)+')').height();
			if (holder.find(':nth-child('+(i+1)+')').css('background-color')=='#eeeeee' || holder.find(':nth-child('+(i+1)+')').css('backgroundColor')=='rgb(238, 238, 238)') {
				var selected=i;
				break;
			}
		}
		if (keynum==40) {
			selected++;
			if (selected>holder.children().length-1) selected = holder.children().length-1;
		} else if (keynum==38) {
			selected--;
			if (selected<0) selected = 0;
		}

		// calculate automatic scrolling up and down:
		total_height=0;
		for (var i=0; i<selected;i++) {
			total_height+=holder.find(':nth-child('+(i+1)+')').height();
		}
		
		//debug(total_height+'---'+selected);
		if (total_height<holder.parent().scrollTop) {
			holder.parent().scrollTop=total_height;
		} else if (total_height>holder.parent().scrollTop+200) {
			holder.parent().scrollTop=total_height-200;
		}

		for (var i=0; i<holder.children().length;i++) {
			holder.children(':nth-child('+(i+1)+')').css('background-color',(i==selected?'#eeeeee':'#ffffff'));
			holder.children(':nth-child('+(i+1)+')').css('color',(i==selected?'#000000':'#000000'));
		}
		input_obj.value=remove_tags(holder.find(':nth-child('+(selected+1)+')').find(":first").html());
		holder.parent().parent().parent().children('input:first').val(holder.find(':nth-child('+(selected+1)+')').find(":first").attr('rel'));
		holder.parent().parent().parent().children('input:first').attr('rel',holder.find(':nth-child('+(selected+1)+')').find(":first").html());
	}
	return true;
}

function remove_tags(str) {
	return str.split('<B>').join('').split('</B>').join('').split('<b>').join('').split('</b>').join('');
}

function autocomplete_click(div,input_name) {
	
	event.cancelBubble=true;

	//var id=div.attr('rel');
	$("#"+input_name).val(div.attr('rel'));
	
	var input_obj=$("#"+input_name+"_ac");
	
	input_obj.val(remove_tags(div.html()));
	$('#'+input_name).attr('rel',$('#'+input_name+'_ac').val());
	
	input_obj.focus();
	
	var holder = $("#"+input_name+"_ac").parent().children("div:first").children("div:first").children("div:first");
	holder.css('display','none');
	
}

function autocomplete_onblur(input_name) {
	//document.getElementById('block_div').style.display='none';
	input_obj = $('#'+input_name);
	var holder = $('#'+input_name+'_ac').parent().children("div:first").children("div:first").children("div:first");
	
	// restore value from 'rel' of main input
	$('#'+input_name+'_ac').val($('#'+input_name).attr('rel'));
	
	holder.children().remove();
	holder.css('display','none');
}

/*
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 is_ip(str)
{
   	return /\b(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b/.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;
	}
}

