// vim: set filetype=php


flashex = YAHOO.namespace("flashex");

function setClass(elementId, className) {
    e = document.getElementById(elementId);
    e.className = className;
}


/**
 * called from data lists to verify cards are selected
 * remove when phl is gone
 */
function checkForCards(elem, msg) {
    ok = 0;
    for (i = 0; i < elem.form.length; i++) {
        if (elem.form.elements[i].checked) {
            ok = 1;
            continue;
        }
    }
    if (ok == 0) {
       alert(msg);
       return;
    } else {
       elem.form.cmd.value = elem.value.toLowerCase();
       elem.form.submit();
    }
}

// this function was needed for passing already clean data into the js Option() construct.
function unescapeHtmlEntities(str) {
    
    var re1 = new RegExp('&quot;', 'g');
    var newstr = str.replace(re1, '"');
    var re2 = new RegExp('&lt;', 'g');
    newstr = newstr.replace(re2, '<');
    var re3 = new RegExp('&gt;', 'g');
    return newstr.replace(re3, '>');

}

function focusElement(formName, elemName) {
    var elem = document.forms[formName].elements[elemName];
    elem.focus();
    elem.select();
}

function isEmpty(elem) {
    // skipTimeout was added later.  If it exists skip the timeout
	var str = elem.value;
    var re = /\S+/;
    if(!str.match(re)) {
         
        setTimeout("focusElement('" + elem.form.name + "', '" + elem.name + "')", 0);
        return true;
    } else {
        return false;
    }
}

/*
 * This function parses comma-separated name=value argument pairs from
 * the query string of the URL. It stores the name=value pairs in 
 * properties of an object and returns that object.
 */
function getArgs() {
    var args = new Object();
    var query = location.search.substring(1);  // Get query string.
    var pairs = query.split(",");              // Break at comma.
    for(var i = 0; i < pairs.length; i++) {
	var pos = pairs[i].indexOf('=');       // Look for "name=value".
	if (pos == -1) continue;               // If not found, skip.
	var argname = pairs[i].substring(0,pos);  // Extract the name.
	var value = pairs[i].substring(pos+1); // Extract the value.
	args[argname] = unescape(value);          // Store as a property.
    }
    return args;                               // Return the object.
}

function checkEmail(str) {

    var at="@";
    var dot=".";
    var lat=str.indexOf(at);
    var lstr=str.length;
    var ldot=str.indexOf(dot);
    if (str.indexOf(at)==-1){
        return false;
    }

    if (str.indexOf(at)==-1 || str.indexOf(at)==0 || str.indexOf(at)==lstr){
        return false;
    }

    if (str.indexOf(dot)==-1 || str.indexOf(dot)==0 || str.indexOf(dot)==lstr){
        return false;
    }

    if (str.indexOf(at,(lat+1))!=-1){
        return false;
    }

    if (str.substring(lat-1,lat)==dot || str.substring(lat+1,lat+2)==dot){
        return false;
    }

    if (str.indexOf(dot,(lat+2))==-1){
        return false;
    }

    if (str.indexOf(" ")!=-1){
        return false;
    }

    return true;
}

/* toggle all checkboxes in a checkbox form */
function mass(form) {
    var i=0;
    var value=0;

    var new_val = (form.toggle_all.checked) ? 1 : 0;

    for(i=0; i < form.elements.length; i++) {
        if (/^checkbox.*$/.test(form.elements[i].name)) {
            form.elements[i].checked = new_val;
        }
    }
}

/* Test a form to make sure at least one checkbox is checked */
function getCheckedItems(form) {
    

    var rv = Array();
    for(i=0; i < form.elements.length; i++) {
        if (/^checkbox.*$/.test(form.elements[i].name)) {
            if (form.elements[i].checked) {
                rv[rv.length] = form.elements[i].value;
            }
        }
    }
        return rv;
}

function jsrsResults(returnString) {
  alert(returnString);
}

/*
 * this is the validation routine for the "list" pages.  can be deleted after
 * all the activity form stuff has been migrated to the yui list 2009-01-08 
 */
function validateActionBarForm(form, error_message, del_confirm) {

    var handleSuccess = function(o){ //{{{
        
          if(o.responseText !== undefined){ 
              //alert(o.responseText)
            var response = YAHOO.lang.JSON.parse(o.responseText);
            if(response['error']){ 
                alert(response['error']);
            } else {
                // this should go away with updates to pages that use the old actionbarform
                alert('Flashcards have been added to your clipboard');
            }
              
        } 
    } //}}}
    var handleFailure = function(o){ //{{{
        if(o.responseText !== undefined){ 
            alert(o.responseText)
            //div.innerHTML = '<div class="warning topBuffer">' + '<?cs var:Strings.Error ?> ' + o.responseText + '</div>'
        } 
    } //}}}
     
    var callback = 
    { 
      success:handleSuccess, 
      failure: handleFailure
    };


    var vals = getCheckedItems(form); 

    if (vals.length == 0) {
        alert(error_message);
        return false;
    }
    af = document.getElementById('activity_form');
    af.elements['cards'].value = vals.join(',');
    switch (form.elements['activity'].value) {
        case '1':
            var postData = "cards=" + vals.join(',')
            var c = YAHOO.util.Connect;
            //c.setForm('activity_form')
            var request = c.asyncRequest('POST', '/cmd/copyToClipboard', callback, postData); 
            return false;
        case '2':
            performActivity('/study');
            break;
        case '3':
            performActivity('/print');
            break;
        case '4':
            performActivity('/export');
            break;
        case '5':
            document.forms.activity_form.method='get';
            performActivity('/memory');
            break;
        case '6':
            //this shouldn't work 2005-08-10
            document.forms.activity_form.method='get';
            performActivity('/move');
            break;
        case '7':
            document.forms.activity_form.method='get';
            performActivity('/cardfiles');
            break;
        case '8':
        case '11':
        case '12':
            return true;
        case '9':
            if (confirm(del_confirm)){
                return true;
            }
            break;
        case '10':
            if (confirm(del_confirm)){
                return true;
            }
            break;
    }
    return false;

}

function domGet(elem) { return YAHOO.util.Dom.get(elem); }
