﻿// MagiClick Javascript Framework v0.1
// some routines dropped from prototype.js ;)
// Author: Omerz
var MinDate = Date.parse("01.01.0001 00:00:00");
var EnableClientDebugging = false;
function debug(debDetails){
    if(EnableClientDebugging && $.browser.msie){
        console.log(debDetails)
    }
}

jQuery.fn.extend({
  scrollTo : function(speed, easing) {
    return this.each(function() {
      var targetOffset = $(this).offset().top;
      $('html,body').animate({scrollTop: targetOffset}, speed, easing);
    });
  }
});

$.preloadImage = function(args){
    if((typeof args) == "string"){
        var preImg = new Image();
        preImg.src = args;
    } else if((typeof args) == "object") {    
        for(var x=0;x<args.length;x++){
            var preImg = new Image();
            preImg.src = args[x];
            /*preImg.onload=function(){
                console.log("Image " + this.src + " preloaded");
            };*/
        }
    }
}

// Text evaulation routines
function EvalBool(o){
    if(o == null){
        return "<img src=\"_i/icon_2.gif\" alt=\"\"/>";
    } else {
        switch(typeof o){
            case 'string':
                if(o=="E"||o=="1")
                    return "<img src=\"_i/icon_1.gif\" alt=\"\" align=\"absmiddle\"/> Evet";
                else
                    return "<img src=\"_i/icon_2.gif\" alt=\"\" align=\"absmiddle\"/> Hayır";
            break;
            case 'number':
                if(o==1)
                    return "<img src=\"_i/icon_1.gif\" alt=\"\" align=\"absmiddle\"/>";
                else
                    return "<img src=\"_i/icon_2.gif\" alt=\"\" align=\"absmiddle\"/>";
            break;
            case 'boolean':
                if(o)
                    return "<img src=\"_i/icon_1.gif\" alt=\"\" align=\"absmiddle\"/>";
                else
                    return "<img src=\"_i/icon_2.gif\" alt=\"\" align=\"absmiddle\"/>";
            break;
        }
    }
    return null;
}

function EvalNull(o){
    if (o == null)
    {
        return "<img src=\"_i/icon_3.gif\" alt=\"\" />";
    }
    else
    {
        switch(typeof o){
            case 'number':
                if(o>0)
                    return o;
                else
                    return "<img src=\"_i/icon_3.gif\" alt=\"\" align=\"absmiddle\" />";
            break;
            case 'string':
                if(o.length==0)
                   return "<img src=\"_i/icon_3.gif\" alt=\"\" />"; 
            break;
        }
    }
    return o;
}

function EvalDate(o){
    if(o==null)
        return null;
    if(o._orient != null && o._is !=null){
        if(MinDate.equals(o)) return null;    
        return o.toString("dd.MM.yyyy HH:mm");
    } else {
        return null;
    }
}

function EvalFileExt(o){
    if(o==null)
        return null;
    var dotPos = o.lastIndexOf(".");
    if (dotPos <= 0) return null;
    dotPos++;
    var strExt = o.substring(dotPos, o.length);
    return strExt;
}

function EvalFileExtIcon(o){
    if(o==null)
        return null;
    var strExt = EvalFileExt(o);
    return "<img src=\""+ root + "/_i/icons/ico_" + strExt + ".png\" alt=\"\" align=\"absmiddle\" />";
}

function SetStateCookie(_id,_root,_state)
{
    var date = new Date();
    date.setTime(date.getTime() + (365 * 2 * 3 * 24 * 60 * 60 * 1000));
    $.cookie("state_"+_id,_state,_root,{expires:date});
}

function GetStateCookie(_id,_root)
{
    return $.cookie("state_"+_id);
}

function lookupRecord(intRecID,dataSource,equals)
{
    if(dataSource == null)
        return null;
    // lookup record in loaded records
    var x;
    for(var x=0;x<dataSource.length;x++)
    {
        if(eval("dataSource[x]." + equals + "==intRecID"))
        {
            return {record: dataSource[x],index: x};
        }
    }
}

function onlyLetter(e) {
	var InvalidChars="!#/*{[()]},;%^><\\?+:='`|é&æ~£$½¨ß";
	
	var keyCode = ($.browser.mozilla) ? e.which : event.keyCode;

	if (keyCode > 47 && keyCode<58){
	return false;}
	for (i=0;i<=InvalidChars.length-1;i++) {
		if (keyCode==InvalidChars.charCodeAt(i)) {
			return false;
		}
	}
}


function onlyNumber(e) {
	var keyCode = ($.browser.mozilla) ? e.which : event.keyCode;
	if ((keyCode<48 || keyCode>57)&&keyCode!=8&&keyCode!=0) {
	return false;}
}

function onlyTelNumber(sender) {
    
    if(sender.value!="" && !isTelNumberValid(sender.value))
    {
        alert("Girdiğiniz Telefon Numarası hatalıdır. Lütfen kontrol ediniz");
        sender.value="";
        return false;
    }
}

function isTelNumberValid(value)
{
    var exp = new RegExp(/^([0-9]{3}\s{0,1}[0-9]{2}\s{0,1}[0-9]{2})$/);
    var match = exp.exec(value);
    return (match!=null);
}

function onlyEmail(e) {
	var InvalidChars=" !#/*{[()]},;%^><\\?+:='`|şŞĞğÜüÇçİıÖö";

	kCode=InvalidChars.charAt(5);

	var keyCode = ($.browser.mozilla) ? e.which : event.keyCode;

	if (keyCode>127) {
		return false;
	}
	for (i=0;i<=InvalidChars.length-1;i++) {
		if (keyCode==InvalidChars.charCodeAt(i)) {
			return false;
		}
	}
	return true;
}



function delete_comma(str) {
    while (str.indexOf(".") > 0) { str = str.replace(".", ""); }
    if (str.length < 2 && str[0] == 0) {
        str = 0;
    }
    return str;
}

function reOrganizeNumbers(input) {
    try {
        var tmpVal = "";
        var index = 0;
        var inputVal = input.toString();
        var dot_pos = inputVal.indexOf(",");
        if (dot_pos > 0)
            inputVal = inputVal.substr(0, dot_pos);

        inputVal = delete_comma(inputVal);
        var len = Math.floor(((inputVal.length - 1) / 3));
        var begin = inputVal.length - len * 3;

        tmpVal = inputVal.substr(0, begin);
        var i = 0;
        for (i = 0; i < len; i++) {
            tmpVal = tmpVal + ".";
            var start_pos = i * 3 + begin;
            var tmp = inputVal.substr(start_pos, 3);
            tmpVal = tmpVal + tmp;
        }
        inputVal = tmpVal;
        return inputVal;
    }
    catch (e) {
        return 0;
    }
}




function setLoading(strTarget)
{
    var targetObj = $(strTarget);
    if(targetObj.css("display") == "none")
        return;
    if(targetObj.length<=0)
        return;
   
    var strHtmlLoading = $("#ajaxLoader").html();
    var strLoaderID = targetObj[0].id + "_loader";
    var strLoaderPrgID = targetObj[0].id + "_loader_prg";
    var strContentID = targetObj[0].id + "_content";
    
    // if loader not removed or already created?
    if($("#" + strLoaderID).length>0)
        return;
    
    strHtmlLoading = strHtmlLoading.replace(/id_replacement/i,strLoaderID);
    strHtmlLoading = strHtmlLoading.replace(/id_replacement_prg/i,strLoaderPrgID);
    
    
    // append loader data top of the target object.
    targetObj.before(strHtmlLoading);
    //targetObj.parent().prepend(strHtmlLoading);
    
    var objLoader = $("#" + strLoaderID);
    objLoader.width(targetObj.width());
    if(targetObj.height()>100){
        objLoader.height(targetObj.height());
        
        $("#" + strLoaderPrgID).css("margin-top",(targetObj.height() / 2) - $("#" + strLoaderPrgID).height() );
    }
    objLoader.show();          
}

function resetLoading(strTarget)
{
    var targetObj = $(strTarget);
    if(targetObj.length<=0)
        return;
    var objLoader = $("#" + targetObj[0].id + "_loader");
    if(objLoader.length<=0)
        return;
    
    objLoader.remove();
}

function GenerateClientPager(intActivePageIndex, intRowCount,onClickEvent,PageSize,PagerWidth,context){
    var strHtml = "";
    var strIlk = "0";
    var strSon = "0";
	ReportActivePageIndex  =intActivePageIndex;
	var intPageCount = Math.ceil(intRowCount / PageSize);
	if (intPageCount > 1) {
		step = parseInt(PagerWidth / 2);
		intStart = intActivePageIndex - (step);
		intFinish = intActivePageIndex + (step);
		
		if (intActivePageIndex >= 1 && intActivePageIndex <= step + 1) {
			intStart = 1;
			intFinish = PagerWidth;
		}
		else 
			if (intActivePageIndex >= (intPageCount - step) && intActivePageIndex <= intPageCount) {
				intStart = intPageCount - PagerWidth + 1;
				intFinish = intPageCount;
			}
		
		if (intStart < 1) 
			intStart = 1;
		
		if (intFinish > intPageCount) 
			intFinish = intPageCount;


        for (i = intStart; i <= intFinish && i <= intPageCount; i++) {
            /*            if (strHtml != "")
                strHtml += " | ";
            */
            
            strIlk = ((i * 10) - 9)
            strSon = (i * 10)

            if (i == intPageCount)
                strSon=intRowCount

            if (intActivePageIndex != i)

                strHtml += "<a href=\"javascript:;\" class=\"paginate\" onclick=\"" + onClickEvent.replace(/{Index}/g, i) + "\">" + strIlk +"-"+ strSon + "</a>";
            else

                strHtml += "<a href=\"javascript:;\" class=\"paginate selected\"  onclick=\"return false;\">" + strIlk + "-" + strSon + "</a>";
        }


        if (PagerWidth < intPageCount) {
            if (!(intActivePageIndex >= 1 && intActivePageIndex <= step -1)) {
                strHtml = "<a href=\"javascript:;\" onclick=\"" + onClickEvent.replace("{Index}", intActivePageIndex - 1) + "\"><img src=\"" + root + "/_i/ok_l.gif\" /></a>" + strHtml;
                strHtml = "<a href=\"javascript:;\" onclick=\"" + onClickEvent.replace("{Index}", 1) + "\" ><img src=\"" + root + "/_i/ok_l.gif\" /><img src=\"" + root + "/_i/ok_l.gif\" /></a>" + strHtml;
            }
            if (!(intActivePageIndex >= (intPageCount - step+2) && intActivePageIndex <= intPageCount)) {
                strHtml += "<a href=\"javascript:;\" onclick=\"" + onClickEvent.replace("{Index}", intActivePageIndex + 1) + "\"><img src=\"" + root + "/_i/ok_r.gif\" /></a>";
                strHtml += "<a href=\"javascript:;\" onclick=\"" + onClickEvent.replace("{Index}", intPageCount) + "\" ><img src=\"" + root + "/_i/ok_r.gif\" /><img src=\"" + root + "/_i/ok_r.gif\" /></a>";
            }
        }
	}
	var pagerDiv =$(context);
	pagerDiv.empty();
	pagerDiv.html(strHtml);
	return strHtml;
}


$(document).ready(function(){
    if($.WebServices!=null){
        $.WebServices.onError = function(err,extraDetails){
            if(err.description=!null && err.description.indexOf("401.2 - Unauthorized")>-1)
            {
                location.href = "AccessDenied.aspx";
            } else {
                alert("Veri alınırken hata oluştu!", "Hata");
                debug("$.WebServices.onError ->");
                debug(extraDetails);
                debug(err.description);				
            }
        };
    }    
    
    if(EnableClientDebugging && $.browser.msie){
        console.log("Magic Debugging enabled!");
        window.onerror = function(msg,url,lno){
            debug("Document Error ->" + url + " at line " + lno);
            debug("Message:" + msg);
            return true;
        };
        
        $.WebServices.onBeforeCall = function(uri,soapEnv){
            debug("$.WebServices.onBeforeCall -> URI:" + uri);
            debug(soapEnv);
            return true;
        };
        
        $.WebServices.onFinally = function(xhr, textStatus){
            debug("$.WebServices.onFinally -> State:" + textStatus);
            debug(xhr.responseText);
            return true;
        };
    }
    
    
    if($("#footer").length>0){
        $("#footer").css("display","block");
        $(window).bind("resize",function(){
            if($(window).height()>($("#container").height()+$("#footer").height()))
                $("#footer").css("margin-top",$(window).height() - $("#container").height() - $("#footer").height()+ "px");
            else
                $("#footer").css("margin-top","0px");
        });
        $(window).trigger("resize");
    }
});