//===================================
// mimicking an old C function; jQuery's Equalto just dont work :( !!
//===================================
function strcmp(element1, element2) {
     var string1 = document.getElementById(element1).value; 
     var string2 = document.getElementById(element2).value;
     alert(string2 );
     if (string1 == string2)
        return 1;
     else
        return 0;
}


//===============================================================
//called inline when <body></body> loads
//===============================================================
function init(e, sms_length){


}

//===============================================================
// check prefixes : DEPRECATED in favour of jquery validation methods
//===============================================================

function valid_prefix(username) {
    
    var pattern = /^(\+?(25470|25471|25472)|070|071|072|70|71|72)[0-9]{0,7}$/gi;
    var prefix  = /^(\+?254|0|)7(1|2|)/gi;
    var digitsOnly = /^[+0-9]+$/g;
    
    if(username.length > 6) {
        if (username.match(prefix)) {
            if (username.match(pattern))
                return 1;
            else
                return 0;
        } else {
            alert('prefix error')
            return 0;
        }
    } else {
        if (username.match(digitsOnly)) 
            return 1;
        else
            if (username.length == 0)
                return 1
            else
                return 0;
    }
}

//===============================================================
// error `alert` on invalid prefix: DEPRECATED in favour of jquery validation methods
//===============================================================

function check_length(element, required_length) {
    if (element.value.length <= required_length) {
        element.style.border="2px solid #b22" ;
    } else {
        element.style.border="1px solid #888" ;      
    }
}

//===============================================================
// error `alert` on invalid prefix: DEPRECATED in favour of jquery validation methods
//===============================================================

function invalid_prefix_alert(element, msg) {
    if (document.getElementById('error-msg')) {
        var oldDiv = document.getElementById('error-msg')
        element.parentNode.removeChild(oldDiv);    
    }

    var newDiv = document.createElement('div');
    newDiv.id = "error-msg";
    newDiv.className = 'alert-msg';
    newDiv.innerHTML = msg;
    element.parentNode.appendChild(newDiv);
    element.style.border='1px solid #411'
}

//===============================================================
// error `alert` on invalid prefix: DEPRECATED in favour of jquery validation methods
//===============================================================

function valid_prefix_style(element) {
    if (document.getElementById('error-msg')) {
        var oldDiv = document.getElementById('error-msg')
        element.parentNode.removeChild(oldDiv);    
    }
    element.style.border='1px solid #76b375';
}


//===============================================================
// called when focus shifts from valid prefix: DEPRECATED in favour of jquery validation methods
//===============================================================
function onvalid_prefix_reset(element, prefixes) {
   if (valid_prefix(element.value, prefixes)) 
        if (document.getElementById('error-msg')) {
        var oldDiv = document.getElementById('error-msg');
        oldDiv.innerHTML = '';
        element.parentNode.removeChild(oldDiv); 
        element.style.border='1px solid #76b375';   
    }    
}

//===============================================================
// count remaining SMS characters
//===============================================================
function count_chars (e, sms_length) {

    if (sms_length) {
        var form = document.getElementById("post-update");
        var writeToDiv = document.getElementById("chars-left") ;
        var currElement = getEventElement (e);
        var double_word_xters = null;
        var sms = "";
        var pattern = /[\n\^{}\[~\]\|€]/gi;

        for ( var i = 0 ; i < form.elements.length ; i++ ) {
            if ( ! in_excludedFields(form[i])){		
                sms += ((form[i].value != null) ? form[i].value : "");
            }
        }

        double_word_xters = ((sms.match(pattern)) ? sms.match(pattern) : null);
            
        totalCharacters = sms.length + ((double_word_xters != null) ? double_word_xters.length : null);
        writeToDiv.innerHTML = (sms_length - totalCharacters );//write "remaining characters" out

        if (totalCharacters > (sms_length-20)) 
            document.getElementById("chars-left").className = "too-many-chars";
        else if (totalCharacters > (sms_length-40)) 
            document.getElementById("chars-left").className = "many-chars";
        else
            document.getElementById("chars-left").className = "chars-left";
         
        if (totalCharacters > sms_length) {
            if (currElement.value)
                currElement.value = currElement.value.substr(0, currElement.value.length-8);
            count_chars(e, sms_length);
        }   	
    }
}
//===============================================================
// exclude a field's value from being counted
//===============================================================
function in_excludedFields(field) {

	var excludedFields = new Array( "submit")
	var moreExclusionCriteria  = (field.type == "checkbox");//append more field exclusion criteria with an OR ` || `
	
	if (in_array( field.name, excludedFields ) || moreExclusionCriteria)
		return 1;
	else
		return 0;
	}
//===============================================================
//check if value exists inside an array
//===============================================================
function in_array(val, the_array){
	for ( var j = 0 ; j < the_array.length ; j++ ) {
		if ( (the_array[j] == val)) {
			return 1;
			}
		}
	return 0;
	}
//===============================================================
//check for duplicate value inside another form input field
//===============================================================
function in_form(element, form){
	for ( var j = 0 ; j < form.elements.length ; j++ ) {
        if (form[j].id != element.id) {
            if ( (form[j].value == element.value) ) {
                return 1;
                }
        }
		}
	return 0;
	}    
//===============================================================
//cross browser event listener
//===============================================================
function addEventSimple(obj,evt,fn) {
	if (obj.addEventListener)
		obj.addEventListener(evt,fn,true);
	else if (obj.attachEvent)
		obj.attachEvent('on'+evt,fn);
	}
//===============================================================
//cross browser event removal
//===============================================================
function removeEventSimple(obj,evt,fn) {
	if (obj.removeEventListener)
		obj.removeEventListener(evt,fn,true);
	else if (obj.detachEvent)
		obj.detachEvent('on'+evt,fn);
	}
//===============================================================
//which key pressed
//===============================================================
function keypressed(e){
	if (!e) var e = window.event;
	
	if ((e.charCode) && (e.keyCode==0))
		code = e.charCode
	else
		code = e.keyCode;
		
	return String.fromCharCode(code);
	}
//===============================================================
//a border-style to distinguish between an empty and a non-empty field
//===============================================================
function highlightField(field, includedFieldborder, excludedFieldborder){

	if (!in_excludedFields(field)) {
		field.className = includedFieldborder;
	} else {
		field.className = excludedFieldborder;
		}
	}

//==============================================================
//
//==============================================================
function ID(element){
	return document.getElementById(element.id);
	}
//==============================================================
//
//==============================================================
function getEventElement (e) {
	var event = e || window.event;
	if (! event.target) {
		event.target = event.srcElement
	}
	return event.target;
}

//=============================================================
// on focus on a form element clear text
// on blur return previous text
//=============================================================

function form_prefill(elementById, text) {
    if (elementById.value == '') {
        elementById.value = text;
        elementById.style.color = "#aaa";
        elementById.style.fontWeight = "bolder";

    } else {
        elementById.value = '';
    } 
}

//=============================================================
// Redirect to search if user presses enter
// on the search field.
//=============================================================
function redirectSearch(e) {
    var characterCode;
    if(e && e.which) { //NN4 specific code
        e = e;
        characterCode = e.which;
    } else {
        e = event;
        characterCode = e.keyCode; // IE specific code
    }
    if (characterCode == 13) { // Enter key is 13
        document.getElementById('search_form').submit();  
        return false;
    } else {
        return true;
    }
}

//=============================================================
// Confirm message.
// 
//=============================================================
function confirmation(messageToShow, url) {
    retval = window.confirm(messageToShow);
    if (retval) {
        window.location = url;
    }
}

//=============================================================
// Confirm change of nickname.
// 
//=============================================================
function confirmNickNameChange(nickName, createOrChange) {
    document.getElementById('create_change_nickname').value = createOrChange;
    $("#nick_name").dialog('open');
        return false;
}

//=============================================================
// Confirm deleting of group.
// 
//=============================================================
function confirmDeleteGroup(groupName, isLastGroup) {
    document.getElementById("is_last_group").value = isLastGroup;
    document.getElementById("group_name").value = groupName;
    if (document.all) {
        document.getElementById('delete_group_message').innerText = "Are you sure you want to delete " + groupName + "?";
    } else {
        document.getElementById('delete_group_message').textContent = "Are you sure you want to delete " + groupName + "?";
    }
    $("#delete_group").dialog('open');
    return false;
}

//=============================================================
// Confirm deleting of group second time.
// 
//=============================================================
function confirmDeleteGroupAgain(url) {
    groupName = document.getElementById('group_name').value;
    isLastGroup = document.getElementById('is_last_group').value;
    if (isLastGroup != '0') {
        if (document.all) {
            document.getElementById('delete_group_message_again').innerText = "This is your last group. If you delete " + groupName + " you will no longer  be able to use the semeni service again.";
            document.getElementById('delete_group_message_again_2').innerText =  "Are you sure you want to delete " + groupName + "?";
        } else {
            document.getElementById('delete_group_message_again').textContent = "This is your last group. If you delete " + groupName + " you will no longer  be able to use the semeni service again.";
            document.getElementById('delete_group_message_again_2').textContent =  "Are you sure you want to delete " + groupName + "?";
        }
        $("#delete_group").dialog('close');
        $("#delete_group_again").dialog('open');
    } else {
        window.location = url;
    }
}

//=============================================================
// Confirm deleting of a member.
// 
//=============================================================
function confirmDeleteMember(userName, userId) {
    document.getElementById('user_to_delete').value = userId;
    if (document.all) {
        document.getElementById('delete_message').innerText = "Are you sure you want to delete " + userName + "?";
    } else {
        document.getElementById('delete_message').textContent = "Are you sure you want to delete " + userName + "?";
    }
    $("#delete_member").dialog('open');
    return false;
}

//=============================================================
// Confirm replacing a member.
// 
//=============================================================
function confirmReplaceMember(userName, userId) {
    document.getElementById('user_id').value = userId;
    if (document.all) {
        document.getElementById('replace_message').innerText = "Replace " + userName + "?";
    } else {
        document.getElementById('replace_message').textContent = "Replace " + userName + "?";
    }
    $("#replace_member").dialog('open');
    return false;
}

function confirmLeaveGroup(isLastGroup, membersAreMinimum, cantLeaveGroupMsg) {
    if (membersAreMinimum) {
        if (document.all) {
            document.getElementById('cant_leave_group_msg').innerText = cantLeaveGroupMsg;
        } else {
            document.getElementById('cant_leave_group_msg').textContent = cantLeaveGroupMsg;
        }
        $("#cannot_leave_group").dialog('open');
    } else {
        document.getElementById("is_last_group_1").value = isLastGroup;
        $("#leave_group").dialog('open');
    }
    return false;
}

//=============================================================
// Confirm leaving of group second time.
// 
//=============================================================
function confirmLeaveGroupAgain(url) {
    isLastGroup = document.getElementById('is_last_group_1').value;
    if (isLastGroup != '0') {
        $('#leave_group').dialog('close');
        $("#leave_group_again").dialog('open');
    } else {
        window.location = url;
    }
}

//=============================================================
// Limit SMS text area to a specified number of characters.
// 
//=============================================================

function limitText(limitField, limitCount, maxCharacters) {
    if (limitField.value.length > maxCharacters) {
        limitField.value = limitField.value.substring(0, maxCharacters);
    } else {
        limitCount.value = maxCharacters - limitField.value.length;
    }
}

