jQuery.fn.exists = function(){
	return jQuery(this).length>0;
};

jQuery.maskall = function() {
	if($('div#mark_all').exists()){ $('#mark_all').show().addClass('show').removeClass('hidden'); }
	else { $("<div/>").attr('id','mark_all').addClass('show').removeClass('hidden').click(function(){$.msghide();}).appendTo('body'); }
};

jQuery.maskhide = function() {
	if($('div#mark_all').exists()){ $('div#mark_all').hide().addClass('hidden').removeClass('show'); }
};

jQuery.getdata = function($query) {
	$pathurl = '?' + $query;
	$.ajax({
		url: $pathurl, 
		type: "get",
		dataType: "json",
		error: function(){
			$.msgshow({"type":'SYSTEM',"title":'System error',"cont":'Error loading Json document'});
			$('body').css('cursor','default');
		},
		success: function(info){
			// do something with json
			for(i=0;i<info.mode.length;i++){
				eval(info.mode[i].action+"(info.mode[i]);");
			}
			$('body').css('cursor','default');
		}
	});
};

jQuery.sendform = function() {
	$('body').css('cursor','wait');
	$('#loading').fadeIn();
	$.maskall();

	$('form#myForm').ajaxSubmit({
		dataType: 'json',
		error: function(){
			$.msgshow({"type":'SYSTEM',"title":'System error',"cont":'Error loading Json document'});
			$('body').css('cursor','default');
		},
		success: function(info){
			$.maskhide(); // clear the mask
			$('body').css('cursor','default');
			$('#loading').fadeOut();

			// do something with json
			for(i=0;i<info.mode.length;i++){
				eval(info.mode[i].action+"(info.mode[i]);");
			}
		}
	});
	return false;
};

jQuery.msgshow = function(dataset) {
	var str = '<div id="msg_overall"><div id="msg_title"><div class="caption">'+dataset.title+'</div></div><div id="msg_content"><div id="msg_con"><div id="msg_con_left">'+dataset.type+'</div><div id="msg_con_right">'+dataset.cont+'</div></div><div id="msg_footer"></div></div></div>';

	if($('div#frame_id').exists()) { $('div#frame_id').remove(); }
	// Create new element typeof DIV
	$.maskall();
	$("<div/>").attr("id", "frame_id").addClass('hidden').removeClass('show').appendTo('form#myForm');
	$('div#frame_id').html(str);
	$('#frame_id').fadeIn('slow',function(){$(this).show().addClass('show').removeClass('hidden');});
	
	if(dataset.btn_disp) {
		var btn_str = '<input type="button" value="Cancel" onclick="$.msghide()" class="submit" /> <input type="button" onclick="'+(dataset.funct)+'" value="Ok" class="submit" />'
		$('#msg_footer').html(btn_str);
	} else {
		var funct_declare = ((dataset.funct) ? dataset.funct : '$.msghide()');
		$('#msg_footer').html('<input type="button" value="Ok" onclick="' + funct_declare + '" class="submit" />');
	}
};

jQuery.msghide = function() {
	if($('div#frame_id').exists() && $('div#frame_id').hasClass('show')) {
		$.maskhide();
		$('div#frame_id').fadeOut().addClass('hidden').removeClass('show');
	}
};

jQuery.pagination = function(page) {
	if($('#page').exists())	{
		$('#page').val(page);
	} else {
		$("<input/>").attr("id", "frame_id").attr('type', 'hidden').attr('id', 'page').attr('name', 'page').attr('value', page).appendTo('form#myForm');
	}
}

jQuery.addField = function(fieldname, fieldvalue) {
	if($('#' + fieldname).exists())	{
		$('#' + fieldname).val(fieldvalue);
	} else {
		$("<input/>").attr('type', 'hidden').attr('id', fieldname).attr('name', fieldname).attr('value', fieldvalue).appendTo('form#myForm');
	}
}

jQuery.passwordStrength = function(password,username,minlength) {
    var score = 0, shortPass = 0, verybadPass = 1, badPass = 2, goodPass = 3, strongPass = 4;
    
    //password < 4
    if (password.length < minlength ) { return shortPass }

    //password == username
    if (password.toLowerCase()==username.toLowerCase()) return shortPass;

    //password length
    score += password.length * 4
    score += ( $.checkRepetition(1,password).length - password.length ) * 1
    score += ( $.checkRepetition(2,password).length - password.length ) * 1
    score += ( $.checkRepetition(3,password).length - password.length ) * 1
    score += ( $.checkRepetition(4,password).length - password.length ) * 1

    //password has 3 numbers
    if (password.match(/(.*[0-9].*[0-9].*[0-9])/))  score += 5

    //password has 2 sybols
    if (password.match(/(.*[!,@,#,$,%,^,&,*,?,_,~].*[!,@,#,$,%,^,&,*,?,_,~])/)) score += 5

    //password has Upper and Lower chars
    if (password.match(/([a-z].*[A-Z])|([A-Z].*[a-z])/))  score += 10

    //password has number and chars
    if (password.match(/([a-zA-Z])/) && password.match(/([0-9])/))  score += 12
    //
    //password has number and symbol
    if (password.match(/([!,@,#,$,%,^,&,*,?,_,~])/) && password.match(/([0-9])/))  score += 13

    //password has char and symbol
    if (password.match(/([!,@,#,$,%,^,&,*,?,_,~])/) && password.match(/([a-zA-Z])/))  score += 13

    //password is just a numbers or chars
    if (password.match(/^\w+$/) || password.match(/^\d+$/) )  score -= 10

    //verifing 0 < score < 100
    if (score < 0) score = 0;
    if (score > 100)  score = 100;
    if (score < 34) return verybadPass;
    if (score < 68) return badPass;
    if (score < 85) return goodPass;
    return strongPass;
}

jQuery.checkRepetition = function(pLen,str) {
    res = ""
    for ( i=0; i<str.length ; i++ ) {
        repeated=true
        for (j=0;j < pLen && (j+i+pLen) < str.length;j++)
            repeated=repeated && (str.charAt(j+i)==str.charAt(j+i+pLen))
        if (j<pLen) repeated=false
        if (repeated) {
            i+=pLen-1
            repeated=false
        } else {
            res+=str.charAt(i)
        }
    }
    return res;
}


jQuery.ui_drawmeter = function(password, username, leng) {
	var strength = $.passwordStrength(password,username,leng);
	var strlength = $('#ps_meter').width();
	$('#meter').width( (strlength * strength / 4 ) + 'px');
	$('#passStrength').val(strength);
}

/* facebook usage */
auth_fb=function(){
	var viewer  = FB.Facebook.apiClient.fql_query('SELECT name, pic_square_with_logo ,profile_url FROM user WHERE uid='+FB.Facebook.apiClient.get_session().uid,
		function(results) {
			/*load_data(
				results[0].name,
				results[0].pic_square_with_logo,
				results[0].profile_url,
				'FB.Connect.logoutAndRedirect("./index.html");return false;'
			);
			*/
		}
	);
}

function load_data(name, image, url, logout) {
	/*
	var actionLinks = [{ "text": "Step with us", "href": "http://www.goplayplay/"}];
	var attachment = {'media': [{'type':'image',
			'src':'http://profile.ak.fbcdn.net/v22942/1932/83/n100000515718641_4634.jpg',
			'href':'http://cscs.goplayplay.com/login.php',
			'title': 'hahhdsf f fksjfkf fsjf f ' },
			{'type':'image',
			'src':'http://profile.ak.fbcdn.net/v22942/1932/83/n100000515718641_4634.jpg',
			'href':'http://cscs.goplayplay.com/login.php',
			'title': 'hahhdsf f fksjfkf fsjf f ' },],
			'caption':'{*actor*} rated the lolcat 5 stars',
			'description': 'dskfjskfj sfs fs fsjf  testing'};
	//FB.Connect.streamPublish('is playing game @@ testing purpose', attachment, actionLinks, null, null, null, true );
	$('#userbox').html( "<a href='"+url+"'>"
                + "<img alt='"+name+"' src='"+image+"' /></a>"
                + "<div id='ubname'><a href='"+url+"'>" + name + " logged in with Facebook Connect</a></div> "
                + "<a href='./index.html' id='logout' onclick='" + logout + "'>logout</a>" ).show();
	FB.Connect.showShareDialog('http://cscs.goplayplay.com/main.php');
	*/
}

function isValidEmail(str) {
	var filter = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
	if(!filter.test(str)) {
		return false;
	} else {
		return true;
	}
}

function findPosX(obj) {
	var curleft = 0;
	if(obj.offsetParent)
	    while(1) 
	    {
	      curleft += obj.offsetLeft;
	      if(!obj.offsetParent)
	        break;
	      obj = obj.offsetParent;
	    }
	else if(obj.x)
	    curleft += obj.x;
	return curleft;
}

function findPosY(obj) {
	var curtop = 0;
	if(obj.offsetParent)
	    while(1)
	    {
	      curtop += obj.offsetTop;
	      if(!obj.offsetParent)
	        break;
	      obj = obj.offsetParent;
	    }
	else if(obj.y)
	    curtop += obj.y;
	return curtop;
}

function strtoupper(id,value,len) {
	if(value.length > len) return false;
	$('#'+id).val(value.toUpperCase());
}

function strtolower(id,value,len) {
	if(value.length > len) return false;
	$('#'+id).val(value.toLowerCase());
}

/* embed the object */
function flashshow(add,w,h,id,bg){
	var vars = 'mainSect=nav_' + document.body.id;
	var flashStr=
	"<object classid='clsid:d27cdb6e-ae6d-11cf-96b8-444553540000' codebase='http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0' width='"+w+"' height='"+h+"' id='"+id+"' align='middle'>"+
	"<param name='allowScriptAccess' value='always' />"+
	"<param name='movie' value='"+add+"' />"+
	"<param name='FlashVars' value='"+vars+"' />"+
	"<param name='menu' value='false' />"+
	"<param name='quality' value='high' />"+
	"<param name='bgcolor' value='"+bg+"' />"+
	"<param name='wmode' value='transparent' />"+
	"<embed src='"+add+"' FlashVars='"+vars+"' menu='false' quality='high' wmode='transparent' bgcolor='"+bg+"' width='"+w+"' height='"+h+"' id='"+id+"' align='middle' allowScriptAccess='always' type='application/x-shockwave-flash' pluginspage='http://www.macromedia.com/go/getflashplayer' />"+
	"</object>";
	document.write(flashStr);
}

function CreateBookmarkLink(title, url) {
	if (window.sidebar) { // Mozilla Firefox Bookmark
		window.sidebar.addPanel(title, url,"");
	} else if( window.external ) { // IE Favorite
		window.external.AddFavorite( url, title); }
	else if(window.opera && window.print) { // Opera Hotlist
		return true; 
	}
}

function resizeMe(obj) { 
	docHeight = obj.document.body.scrollHeight;
	obj.style.height = docHeight + 'px'
}

function showTimer($id) {
	var months = new Array('Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec');
	var year = newDate.getFullYear();
	var month = newDate.getMonth()+1;
	var date = newDate.getDate();
	var hour = newDate.getHours();
	var mins = newDate.getMinutes();
	var sec = newDate.getSeconds();
	var ampm = 'AM';
	if(hour > 12){ ampm = 'PM'; hour = hour - 12;}
	if(hour <= 9){ hour = '0' + hour; }
	if(mins <= 9){ mins = '0' + mins; }
	if(sec <= 9){ sec = '0' + sec; }
	$($id).html(months[month-1] + ' ' + date + ', ' + year + ' ' + hour + ':' + mins + ':' + sec + ' ' + ampm);
	newDate.setSeconds(sec+1);
	window.setTimeout("showTimer('"+$id+"')", 1000);
}

function show_list(source, act, page){
  if(parseInt(page) > 0) { $.pagination(page); }
  $('#source').val(source);
  $('#act').val(act);
  $.sendform();
  $('html, body').animate({scrollTop:'220px'}, 'slow');
  return false;
}
