function trim(str, chars) {
	return ltrim(rtrim(str, chars), chars);
}

function ltrim(str, chars) {
	chars = chars || "\\s";
	return str.replace(new RegExp("^[" + chars + "]+", "g"), "");
}

function rtrim(str, chars) {
	chars = chars || "\\s";
	return str.replace(new RegExp("[" + chars + "]+$", "g"), "");
}

function character_limiter(text, noc) {
	if(text.length <= noc) {
		return text;
	} else {
		return (text.substr(0,noc)+"...");
	}
}

function playSound(el, surl) {
	$(el).html("<embed src='"+surl+"' hidden=true autostart=true loop=false>");
}

function sayWord(emd) {
	var thissound= eval("document."+emd);
	try {
		thissound.Play();
	}
	catch (e) {
		thissound.DoPlay();
	}
}

function lookup(baseURL, txtWord) {
	$(txtWord).focus();
	var word = trim($(txtWord).val());
    word = word.replace(/[^a-zA-Z 0-9]+/g,'');
	word = word.replace(new RegExp("[ ]+", "g"), "_");


	if(word == "")
		alert("Type a word then click on 'Look'!");
	else
		location.href=baseURL+escape(word);
	return false;
}

function checkUser() {
	var pHtml = $("#members_area").html();
	var indicator = '<span class="status"><img src="http://www.vocabsmith.com/resources/image/spinner.gif"/></span>';
	$("#members_area").html(indicator);
	$.ajax({
		type: "POST",
		url: "http://www.vocabsmith.com/api/isloggedin/voc",
		error: function(request, status, error) {
			$("#members_area").html(pHtml);
		},
		success: function(data) {
			$("#members_area").html(data);
		}
	});
}

function showLogoutDialog(redirect) {
	var indicator = '<div align="center" style="margin:10px;"><img src="http://www.vocabsmith.com/resources/image/indicator.gif"/></div>';
	$.popup.show("Lexiology Vocab - Logout", '<div id="dialog_login">'+indicator+'</div>', {main_class: "popupDiv"});
	$.ajax({
			url: "http://www.vocabsmith.com/auth/logout",
			success: function(data) {
				$.popup.hide();
				$("#messages").html("You are logged out!");
				$("#messages").floatingmsgbox({type: "success", close_button: true, auto_close: true, timeout: 2000});
				if(redirect) {
					location.href = redirect;
				} else {
					$("#members_area").html(data);
					$("#mydecks_form").val("");
				}
			}
	});
}

function showLoginDialog() {
	var indicator = '<div align="center" style="margin:10px;"><img src="http://www.vocabsmith.com/resources/image/indicator.gif"/></div>';
	$.popup.show("Lexiology Vocab - Login", '<div id="dialog_login">'+indicator+'</div>', {main_class: "popupDiv"});
	$.ajax({
			url: "http://www.vocabsmith.com/auth/login",
			error: function(request, status, error) {
				loginResponse(request.status, request.responseText);
			}
	});
}

function requestLogin(postData) {
	$("#dialog_login").html('<div align="center" style="margin:10px;"><img src="http://www.vocabsmith.com//resources/image/indicator.gif"/></div>');

	$.ajax({
		type: "POST",
		url: "http://www.vocabsmith.com/auth/login",
		data: postData,
		error: function(request, status, error) {
			loginResponse(request.status, request.responseText);
		},
		success: function(data) {
			loginResponse(200, data);
		}
	});
	return false;
}

function loginResponse(status, data) {
	if(status == 503) {
		$.popup.hide();
		$("#messages").html(data);
		$("#messages").floatingmsgbox({type: "failure", close_button: true});
	} else if(status == 504){
		$.popup.hide();
		$("#messages").html("You are already logged in!");
		$("#messages").floatingmsgbox({type: "info", close_button: true});
		$("#members_area").html(data);
	} else if(status == 401) {
		$("#dialog_login").html(data);
	} else {
		$.popup.hide();
		$("#messages").html("You are logged in! Tighten your seat belt while we take you to your Dashboard.");
		$("#messages").floatingmsgbox({type: "success", close_button: true, auto_close: true, timeout: 2000});
		location.href = data;
	}
}

function showRegisterDialog() {
	var indicator = '<div align="center" style="margin:10px;"><img src="http://www.vocabsmith.com/resources/image/indicator.gif"/></div>';
	$.popup.show("Lexiology Vocab - Register", '<div id="dialog_register">'+indicator+'</div>', {main_class: "popupDiv"});
	$.ajax({
			url: "http://www.vocabsmith.com/auth/register",
			error: function(request, status, error) {
				if(request.status != 500) {
					$.popup.hide();
					$("#messages").html(request.responseText);
				} else {
					$("#dialog_register").html(request.responseText);
				}
			}
	});
}

function requestRegister(postData) {
	$("#dialog_register").html('<div align="center" style="margin:10px;"><img src="http://www.vocabsmith.com//resources/image/indicator.gif"/></div>');

	$.ajax({
		type: "POST",
		url: "http://www.vocabsmith.com/auth/register",
		data: postData,
		error: function(request, status, error) {
			$("#dialog_register").html(request.responseText);
		},
		success: function(data) {
			$.popup.hide();
			$("#messages").html(data);
			$("#messages").floatingmsgbox({type: "success", close_button: true, auto_close: true, timeout: 2000});
		}
	});
	return false;
}

function showForgotPasswordDialog() {
	var indicator = '<div align="center" style="margin:10px;"><img src="http://www.vocabsmith.com//resources/image/indicator.gif"/></div>';
	$.popup.show("Lexiology Vocab - Forgot Password", '<div id="dialog_forgot_password">'+indicator+'</div>', {main_class: "popupDiv"});
	$.ajax({
			url: "http://www.vocabsmith.com/auth/forgot_password",
			error: function(request, status, error) {
				$("#dialog_forgot_password").html(request.responseText);
			}
	});
}

function showMyDeckStat(deck_id, deck_name) {
	var indicator = '<div align="center" style="margin:10px;"><img src="http://www.vocabsmith.com/resources/image/indicator.gif"/></div>';
	if(deck_id && deck_name) {
		$.popup.show("Statistics for deck - "+deck_name, '<div id="dialog_deckstat">'+indicator+'</div>', {main_class: "popupStatDiv"});
		$.ajax({
			type: "GET",
			url: "http://www.vocabsmith.com/chart/mydecks/"+deck_id,
			error: function(request, status, error) {
				$.popup.hide();
				$("#messages").html(request.responseText);
				$("#messages").floatingmsgbox({type: "failure", close_button: true});
			},
			success: function(data) {
				$("#dialog_deckstat").html('<div align="center" style="margin:10px;">'+data+'</div>');
			}
		});
	} else {
		$.popup.show("Statistics for your frequently used decks", '<div id="dialog_deckstat">'+indicator+'</div>', {main_class: "popupStatDiv"});
		$.ajax({
			type: "GET",
			url: "http://www.vocabsmith.com/chart/alldecks",
			error: function(request, status, error) {
				$.popup.hide();
				$("#messages").html(request.responseText);
				$("#messages").floatingmsgbox({type: "failure", close_button: true});
			},
			success: function(data) {
				$("#dialog_deckstat").html('<div align="center" style="margin:10px;">'+data+'</div>');
			}
		});
	}
}

function showContactDialog() {
	var indicator = '<div align="center" style="margin:10px;"><img src="http://www.vocabsmith.com/resources/image/indicator.gif"/></div>';
	$.popup.show("Lexiology Vocab - Contact", '<div id="dialog_contact">'+indicator+'</div>', {main_class: "popupDiv"});
	$.ajax({
			url: "http://www.vocabsmith.com/site/contact",
			error: function(request, status, error) {
				if(request.status != 500) {
					$.popup.hide();
					$("#messages").html(request.responseText);
				} else {
					$("#dialog_contact").html(request.responseText);
				}
			}
	});
}

function requestContact(postData) {
	$("#dialog_contact").html('<div align="center" style="margin:10px;"><img src="http://www.vocabsmith.com//resources/image/indicator.gif"/></div>');

	$.ajax({
		type: "POST",
		url: "http://www.vocabsmith.com/site/contact",
		data: postData,
		error: function(request, status, error) {
			$("#dialog_contact").html(request.responseText);
		},
		success: function(data) {
			$.popup.hide();
			$("#messages").html(data);
			$("#messages").floatingmsgbox({type: "success", close_button: true, auto_close: true, timeout: 4000});
		}
	});
	return false;
}

function applyAdvCorners(){

	if(is_IE())
    {
      var cSettings = {
         tl: { radius: 5 },
         tr: { radius: 5 },
         bl: { radius: 2 },
         br: { radius: 2 },
         antiAlias: true      
      }
      
       var cSettings2 = {
         tl: { radius: 5 },
         tr: { radius: 5 },
         bl: { radius: 2 },
         br: { radius: 2 },
         antiAlias: true      
      }
 
     
     $('div.adWithHeader').each(function()
      {
        curvyCorners(cSettings, this);
      
      });
      
      
      $('div.blueAdv').each(function()
      {
        curvyCorners(cSettings2, this);
      
      });
     }
     
 }
 
 function applyCornerFor(pObj){
    if(is_IE())
    {
      var cSettings = {
         tl: { radius: 0 },
         tr: { radius: 0 },
         bl: { radius: 0 },
         br: { radius: 8 },
         antiAlias: true      
      }
       curvyCorners(cSettings, pObj);
     }
 
 }
 
 function applyAlphabetCorners(){
 	if(is_IE())
    {
    	var i =0;
        var cObj;
           
          var cSettings = {
             tl: { radius: 0 },
             tr: { radius: 0 },
             bl: { radius: 0 },
             br: { radius: 8 },
             antiAlias: true      
          }
          
        for(i = 65;i<91;i++)
        {
          cObj = document.getElementById("li_"+String.fromCharCode(i)); 
          curvyCorners(cSettings, cObj);
        }
       }

}


function applyCalloutCorners(){
  if(is_IE())
    {
     var cSettings = {
          tl: { radius: 8 },
          tr: { radius: 8 },
          bl: { radius: 8 },
          br: { radius: 8 },
          antiAlias: true
        } 
        
     $('div.defCalloutContent').each(function()
      {
        curvyCorners(cSettings, this);
      
      });
      
     }
}

function applyLookupCorners(){
  if(is_IE())
    {
       var cSettings = {
          tl: { radius: 0 },
          tr: { radius: 0 },
          bl: { radius: 8 },
          br: { radius: 8 },
          antiAlias: true
        } 
        
     $('div.lookupCallout').each(function()
      {
        curvyCorners(cSettings, this);
      
      });
      
    
    }

}

function applyFAQCorners(){
  if(is_IE())
    {
     var cSettings = {
          tl: { radius: 5 },
          tr: { radius: 5 },
          bl: { radius: 5 },
          br: { radius: 5 },
          antiAlias: true
        } 
        
     $('div.qtnWrapper').each(function()
      {
        curvyCorners(cSettings, this);
      
      });
     }
}

function toggleFLIPBOX(wodType) {
   var face = $("#"+wodType+"_face").val();
    if(face == "0") {
        $("#"+wodType+"_flpBtn").html("Show Word");
        $("#"+wodType+"_face").val("1");
        $("#"+wodType+"_wod_def").show("slow");
        $("#"+wodType+"_wod_word").hide("slow");
    } else {
        $("#"+wodType+"_flpBtn").html("Show Meaning");
        $("#"+wodType+"_face").val("0");
        $("#"+wodType+"_wod_def").hide("slow");
        $("#"+wodType+"_wod_word").show("slow");
    }
}

function is_IE(){
	if(navigator.appVersion.indexOf("MSIE") != -1)
     return true;
    else
     return false;
}

var ddm_timeout         = 500;
var ddm_closetimer		= 0;
var ddmenuitem      = 0;

// open hidden layer
function mopen(id)
{	
	// cancel close timer
	mcancelclosetime();

	// close old layer
	if(ddmenuitem) ddmenuitem.style.visibility = 'hidden';

	// get new layer and show it
	ddmenuitem = document.getElementById(id);
	ddmenuitem.style.visibility = 'visible';

}
// close showed layer
function mclose()
{
	if(ddmenuitem) ddmenuitem.style.visibility = 'hidden';
}

// go close timer
function mclosetime()
{
	ddm_closetimer = window.setTimeout(mclose, ddm_timeout);
}

// cancel close timer
function mcancelclosetime()
{
	if(ddm_closetimer)
	{
		window.clearTimeout(ddm_closetimer);
		ddm_closetimer = null;
	}
}

// close layer when click-out
document.onclick = mclose; 



